io_lib-1.14.6/0000755000031500020650000000000012617161150010035 500000000000000io_lib-1.14.6/docs/0000755000031500020650000000000012617161150010765 500000000000000io_lib-1.14.6/docs/ZTR_format0000644000031500020650000017236712354177664012716 00000000000000Notes: 28th May 2008 For version 2.0 consider the following: 1) Remove defunct or useless chunk types and compression formats. 2) Rationalise inconsitent behaviour (eg endianness on zlib chunk). 3) Support split header/data formats for SRF 4) Formalise meta-data use better. 5) More pie-in-the-sky ideas? What we've described so far could easily be said to be v1.4. It's backwards compatible and fairly minor is change. If we truely want to go for version 2 then taking the chance to remove all those niggles that we've kept purely for backwards compatibility would be good. In more detail: 1) Removal of RLE and floating point chebyshev polynomials. Mark XRLE as deprecated? We may wish to add an extra option to XRLE2 to indicate the repeat count before specifying the remaining run-length. This breaks the format though. (Or add XRLE3 to allow such control?) 2) Strange things I can see are: 2.1) All chunks use big-endian data except for zlib which has a little-endian length. 2.2) The order that data is stored in differs per chunk type. For trace data we store all As, then all Cs, all Gs and finally all Ts. For confidence values we store called first followed by remaining. Both SMP4 and CNF4 essentially hold 1 piece of data per base type per base position, it's just the word size and packing order that differs. This means TSHIFT and QSHIFT compression types are tied very much to trace and quality value chunks, rather than being generic transforms. Maybe we should always have the same encoding order and some standard compression/transformations to reorder as desired. An example: All data related per call is stored in the natural order produced. (eg as utilised in CNF1, BPOS). All data related per base-type per call is stored in the order produced: A, C, G, T for the first base position, A, C, G, T for the second position, and so on. Then we have standard filters that can swap between ACGTACGTACGT... and AAA...CCC...GGG...TTT... or to ... order (which requires a BASE chunk present to encode/decode). We'd have 1, 2 and 4 byte variants of such filters. They do not need to understand the nature of the data they're manipulating, just the word size and a predetermined order to shuffle the data around in. For CNF4 a combination of {ACGT}* to {}* followed by {ACGT}* to A*C*G*T* ordering would end up with all followed by all 3 remaining non-called. Ie as it is now (which we then promptly "undo" in solexa data by using TSHIFT).a 3) I'm wondering if there's mileage here in having negative lengths to indicate constant data + variable data further on. Eg length -10 means the next 10 bytes are the start of the data for this chunk. Some stage later we'll read a 4-byte length followed by the remaining data for this chunk. Rationale: often we end up with many identical bytes at the start of a chunk. For example, we take a solexa trace (0 0 value...), run it through TSHIFT (80 0 0 0 previous data => 80 0 0 0 0 0 value ...) and then through STHUFF (77 80(eg) data), but data is the compressed stream always starting with 80 0 0 0 0 0 so typically it's always the same starting string. Tested on an SRF file I see SMP4 always starting with the same 9 bytes of data, BASE starting with the same 3 bytes and CNF4 always starting with the same 7 bytes. Hence we'd have lengths -9, -3 and -7 in the chunk headers and move that common data to the header block too. That's approx 3% of the size of our SRF file. 4) I propose *all* chunks have some standard meta-data fields available for use. These can be: 4.1) GROUP - all chunks sharing the same GROUP value are considered as being related to one another. This provides a mechanism for multiple base-call, base position and confidence value chunks while still knowing which confidence values belong to which call. It also allows for multiple SAMP chunks (instead of the SMP4 chunk) to be collated together if desired. I don't expect many ZTR files to contain calls from multiple base-callers, but it's maybe a nice extension and seems quite a simple/clean use of meta-data. 4.2) ENCODING - the default encoding for the chunk data is as described in the chunk. We may however wish to override this and, for example, store SMP4 data as 32-bit floating point values instead of 16-bit integers. This specifies that. Question: do we want this available universally everywhere? If not, we should at least use the same meta-data keyword for all occurrences. 4.3) TRANSFORM - a simple transformation description. This is essentially a mini-formula. It replaces the OFFS meta-data used in SMP4 which is simply a transform of X+value. 5) There are more generic ways to save storage by removing redundancy. Most probably they're not worth it, but I list them here for discussion still. 5.1) Use 7-bit variable sized encodings for values instead of fixed 32-bit sizes. Eg instead of storing 1000 as 0x3*0x100 + 0xe8 (00 00 03 e8) we could store it as 0x7*0x80 + 0x68 (80|07 68). The logic here being setting the top bit implies this isn't the final value and more data follows. It allows for variable sized fields so that small numbers take up fewer bytes. The same can be applied to data in SRF structs too. Realistically it saves 2 bytes per record in SRF and an unknown amount for ZTR - estimated 8 or so (3 for cnf4/base and 2 for smp4). It's only 1.5% saving though in total. 5.2) A general purpose dictionary system. Instead of attempting to move headers to one area and data somewhere else, possibly also taking common portions of data and putting that somewhere too, we could provide a dictionary system whereby we previously remove redundancy by replacing all occurrences of a particular byte pattern with a new shorter code. (We'd need an escape mechanism for when it occurs by chance.) The dictionary can then be specified in it's own chunk which is stored in the header portion. This then works for portions of chunk header (eg if the meta-data changes) rather than full headers, where the data blocks always start with the same text, or where we want to have sensible names in text fields but don't like them taking up too much space. It's maybe a bit messy though and complex to implement, plus it's unknown how big an impact having to escape accidental dictionary codes from appearing in real data. The more formal way of removing redundancy is probably better. 5.3) Lossy compression. I believe there's still room for this, although it needs careful thought. The floating point format really isn't an ideal way to do it though, so I'd much rather have an encoding system that uses N*log(signal/M+1) plus a sign bit, stored in integers. As we store data in integers the value of N combined with the maximum value for log(signal/M+1) gives us the number of bits we wish to encode to. Essentially we're storing the log value to a fixed point precision. The value of M dictates the slope of the errors we get from logging. It's hard to describe, but basically as signal gets larger our average error in storing the signal also gets larger. That's true for floating point values too as there's a fixed number of bits and they're being used to represent larger and larger values, meaning the resolution drops. I have various test code and graphs showing error profiles for logs vs fixed point vs floating point. Logs or fixed point are nearly always preferable to a floating point format for size vs accuracy. ----------------------------------------------------------------------------- CHANGE (since 1.2): SAMP and SMP4 now has meta data fields indicating the zero base-line. CLARIFICATION The specification now explicitly states that trace samples are unsigned, although the new OFFS meta-data can be used to turn these into signed values. CLARIFICATION We explicitly state that multiple TEXT chunks maybe present in the ZTR file and will be concatenated together. Also the trailing (nul) byte is now optional. CHANGE Added CSET (character set) meta-data for BASEs so ABI SOLID encoding can be used. This removes the requirement of IUPAC characters only. CHANGE Added XRLE2, QSHIFT, TSHIFT and STHUFF compression types. INCOMPATIBLE CHANGE: I propose for this version to make all meta-data adhere to a specific format rather than adhoc. It'll consist of zero or more copies of 'identifier nul value nul'. See the format below for details. The only use of meta-data in 1.2 was for SAMP (not SMP4) chunks to indicate the channel the data came from. From now on file readers will need to check the version number in the header to determine how to parse the SAMP meta-data. [Search for "FIXME" for my comments / questions to be answered. They elaborate on the summary below and provide more context.] QUESTION1: Should we adapt ZTR to not be so inefficient with regards to tiny chunks. Specifically a 5 byte chunk size, 4 byte meta-data size (normally zero anyway) and 4 byte data length is all wasteful. These combined comprise 5-10% of the total SRF size. Note that changing this would break backwards compatibility. QUESTION2: Do I need a means to specify the "default meta-data". Specifically if we have lots of SAMP chunks (for example) and every single one is stating that the zero "offset" value is 32768 then we may want a mechanism of specifying that the default OFFS value is 32768 for all subsequent SAMP chunks. One possible way to do this is to have a new chunk type which sets the default. Eg for the SAMP chunk we could define a SaMP chunk to modify the default for SAMP. This seems oddly named, but it's utilising the bit5 of the 2nd byte which so far has been reserved as zero. (In the first byte bit 5 set => private namespace and not part of the public spec.) For now I'm just ignoring this issue though. QUESTION3: I've defined new transforms named TSHIFT and QSHIFT specifically designed for adjusting the layout of CND4 and SMP4 chunk types to an order more amenable for compression by interlaced deflate. They do the job, but I'm wondering if it's better to simply redefine the input data to be a more consistent ordering so that we can define more general purpose transforms rather than one dedicated to the original trace layout and one for the quality layout. I'm ignoring this for now as it would break backwards compatibility. QUESTION4: For the OFFS meta-data in SMP4 and SAMP chunks I have a 16-bit offset to specify the zero position. Ie OFFS of 10000 means a sample of 9000 becomes -1000 after processing. Should it be a signed or unsigned 16-bit value. Signed means we could encode values ranging from 10000 to 70000 by specify OFFS as -10000. Should it be 32-bit instead? Should we have OFFI and OFFF for integer and floating point equivalents? QUESTION5: For region encoding where should the region name belong - the meta-data section or the REGION_LIST TEXT identifier? It's currently in both places. My gut instinct tells me it belongs in the meta-data for the REGION_LIST chunk itself. QUESTION6: Can we have clarification on what the region code types mean, specifically "tech read". QUESTION7: Should we add SAMP/SMP4 meta-data indicating a down-scale factor? For 454 data this could be 100, so we know value 123 is really 1.23. Note this is maybe better implemented below using fixed-point precision. QUESTION8: How do we deal with floating point values? I think the chunk meta-data should detail the format of the data block itself (as it is strictly speaking data about the data so it fits there well). A lack of meta data should imply the usual unsigned 16-bit quantities. There's two main ways to encode fractions: Floating point where we have a mantissa and an exponent. - See http://en.wikipedia.org/wiki/IEEE_floating-point_standard - large dynamic range - fixed number of significant bits - varying "resolution". Ie can represent tiny differences between two very small floating point numbers, but not between two very large floating point numbers. Fixed point where we have a fixed number of bits for the component before and after the decimal point. - See http://en.wikipedia.org/wiki/Q_%28number_format%29 - constant resolution - effectively used by SFF (specified to 2 decimal places) - easy to treat as integers so can be fast and dealt with by small embedded CPUs without FPUs. Floating point maybe appropriate as effectively it's the same as logging your signals and storing those. It offers large dynamic range so can cope with abnormally large values (at the expense of precision) while retaining lots of variation at the low end to distinguish small values. However it's CPU intensive to cope with anything other than the CPU provided 32-bit and 64-bit floating point formats. Single precision 32-bit floats in IEEE-754 have: 1 bit (31): Sign 8 bits (23-30): Exponent (bias 127, so stroring 100 => -27) 23 bits (0-22): Mantissa Effectively we store any binary value as a normalised expression: 1. * 2 Eg 1732.5: => 11011000100.1 (binary) => 1.10110001001 (binary) * 2^10 Exponent+127 => 137 => 10001001 (binary) sign exponent mantissa 0 10001001 10110001001000000000000 (17325 => 0x43ad => 0x0010001110101101 However we probably want 16-bit and 24-bit floating point types for efficiencies sake. Do we go with some fixed predefined floating point formats for 8-bit, 16-bit, 24-bit and 32-bit layouts (with 32-bit being identical to IEEE754) or do we allow for specification of the mantissa and exponent Eg FLOAT=23.8, FLOAT=17.6 or FLOAT=5.2 in the meta-data block? FLOAT=17.6 (24-bit) gives ranges +/- 8.6*10^9 FLOAT=5.2 (8-bit) gives ranges +/- 64 (I think). Alternatively if we restrict ourselves to only using the most significant 14 bits of the mantissa then storing as standard 32-bit floats implies 1 in every 4 bytes is zero. This may provide for a very crude, but fast way to implement reduced size floating point values - ie FLOAT=15.8 (24-bit signed). For fixed point (as in SFF values) there's already a draft standard for implementation in C (ISO/IEC TR 18037:2004). One benefit of fixed point over floating point is speed of implementation. Fixed point numbers can just be dealt with as integers. Eg subtracting two fixed point 16-bit values can be done in integers using a-b and the result is the same as if we'd done all the bit twiddling and maths directly simulating a real fixed-point unit. My gut feeling is that we'd want to explicitly declare the number of bits for integral and fractional components in the meta-data block. Comments? James PS. The latest (only minor tweaks from before) ZTR draft spec follows. 1.3 draft 3 (19 Oct 2007) ZTR SPEC v1.3 ============= Header ====== The header consists of an 8 byte magic number (see below), followed by a 1-byte major version number and 1-byte minor version number. Changes in minor numbers should not cause problems for parsers. It indicates a change in chunk types (different contents), but the file format is the same. The major number is reserved for any incompatible file format changes (which hopefully should be never). /* The header */ typedef struct { unsigned char magic[8]; /* 0xae5a54520d0a1a0a (b.e.) */ unsigned char version_major; /* 1 */ unsigned char version_minor; /* 3 */ } ztr_header_t; /* The ZTR magic numbers */ #define ZTR_MAGIC "\256ZTR\r\n\032\n" #define ZTR_VERSION_MAJOR 1 #define ZTR_VERSION_MINOR 3 So the total header will consist of: Byte number 0 1 2 3 4 5 6 7 8 9 +--+--+--+--+--+--+--+--+--+--+ Hex values |ae 5a 54 52 0d 0a 1a 0a|01 03| +--+--+--+--+--+--+--+--+--+--+ Chunk format ============ The basic structure of a ZTR file is (header,chunk*) - ie header followed by zero or more chunks. Each chunk consists of a type, some meta-data and some data, along with the lengths of both the meta-data and data. Byte number 0 1 2 3 4 5 6 7 8 9 +--+--+--+--+----+----+----+---+--+ - +--+--+--+--+--+-- - --+ Hex values | type |meta-data length | meta-data |data length| data .. | +--+--+--+--+----+----+----+---+--+ - +--+--+--+--+--+-- - --+ FIXME: For very short reads this is a large overhead. We have 8 bytes of length information (of which typically only 1-2 are non-zero) and 4 bytes for type (which typically only has one of 4-5 values). This means about 10 bytes wasted per chunk, or maybe 5-10% of the total file size. Changing this would be a radical departure from ZTR; is it justified given the savings? (est. 4.8% for 74bp reads, 8.4% for 27bp reads). One idea if to consider a ZTR file (the non "block" components at least) to be a series of huffman codes, by default all 8-bit long and matching their ASCII codes. Then a dedicated chunk could be used to adjust these default codes. It's therefore backwards compatible, but is that also overkill? (NB, this looks like it'd save 6% on the overall file size.) Ie in C: typedef struct { uint4 type; /* chunk type (b.e.) */ uint4 mdlength; /* length of meta-data field (b.e.) */ char *mdata; /* meta data */ uint4 dlength; /* length of data field (b.e.) */ char *data; /* a format byte and the data itself */ } ztr_chunk_t; All 2 and 4-byte integer values are stored in big endian format. The meta-data is uncompressed (and so it does not start with a format byte). From version 1.3 onwards meta-data is defined to be in key value pairs adhering to the same structure defined in the TEXT chunk ("key\0value\0"). Exceptions are made for this only for purposes of backwards compatibility in the SAMP chunk type. The contents of the meta-data is chunk specific, and many chunk types will have no meta-data. In this case the meta-data length field will be zero and this will be followed immediately by the data-length field. Ie all meta-data adheres to the following structure: Meta-data: (version 1.3 onwards only) +- - -+--+- - -+--+- -+- - -+--+- - -+--+ Hex values | ident | 0| value | 0| - | ident | 0| value | 0| +- - -+--+- - -+--+- -+- - -+--+- - -+--+ FIXME: Can we have specify the meta-data once per ZTR file and omit it in subsequent chunks? Eg a blank chunk with meta-data only in the header. Chunks in the body then specify meta-data length as 0xFFFFFFFF as an indicator meaning "use the last meta-data defined for this chunk type". Useful when split in two, as in SRF? Note that this means both ident and values must not themselves contain the zero byte (a nul character), hence we generally store ident-value pairs in ASCII string forms. The data length ("dlength") is the length in bytes of the entire 'data' block, including the format information held within it. The first byte of the data consists of a format byte. The most basic format is zero - indicating that the data is "as is"; it's the real thing. Other formats exist in order to encode various filtering and compression techniques. The information encoded in the next bytes will depend on the format byte. RAW (#0) - no formatting -------- Byte number 0 1 2 N +--+--+-- - --+ Hex values | 0| raw data | +--+--+-- - --+ Raw data has no compression or filtering. It just contains the unprocessed data. It consists of a one byte header (0) indicating raw format followed by N bytes of data. RLE (#1) - simple run-length encoding ------- Byte number 0 1 2 3 4 5 6 7 8 N +--+----+----+-----+-----+-------+--+--+--+-- - --+--+--+ Hex values | 1| Uncompressed length | guard | run length encoded data| +--+----+----+-----+-----+-------+--+--+--+-- - --+--+--+ Run length encoding replaces stretches of N identical bytes (with value V) with the guard byte G followed by N and V. All other byte values are stored as normal, except for occurrences of the guard byte, which is stored as G 0. For example with a guard value of 8: Input data: 20 9 9 9 9 9 10 9 8 7 Output data: 1 (rle format) 0 0 0 10 (original length) 8 (guard) 20 8 5 9 10 9 8 0 7 (rle data) ZLIB (#2) - see RFC 1950 --------- Byte number 0 1 2 3 4 5 6 7 N +--+----+----+-----+-----+--+--+--+-- - --+ Hex values | 2| Uncompressed length | Zlib encoded data| +--+----+----+-----+-----+--+--+--+-- - --+ This uses the zlib code to compress a data stream. The ZLIB data may itself be encoded using a variety of methods (LZ77, Huffman), but zlib will automatically determine the format itself. Often using zlib mode Z_HUFFMAN_ONLY will provide best compression when combined with other filtering techniques. XRLE (#3) - multi-byte run-length encoding --------- Byte number 0 1 2 3 4 5 N +--+------+-------+--+--+--+-- - --+--+--+ Hex values | 3| size | guard | run length encoded data| +--+------+-------+--+--+--+-- - --+--+--+ Much standard RLE, but this mechanism has a byte to specify the length of the data item we compare to check for runs. It is not restricted to spotted runs aligned on 'size' byte boundaries either. No uncompressed length is encoded here as technically this is not required (although it does make decoding a bit slower). The compressed length alone is sufficient to work out the uncompressed length after decompressing. Guard bytes in the input stream are 'escaped' by the replacing the guard byte followed by zero. Guard bytes in a parameterised run (ie X copies of Y where Y contains the guard) do not need to be 'escaped' Input data: 10 12 12 13 12 13 12 13 12 13 14 Output data: 3 (xrle format) 2 (size of blocks to compare) 12 (guard, 12 is a bad choice but illustrative) 10 12 0 12 4 12 13 14 (rle data) XRLE2 (#4) - word aligned multi-byte run-length encoding ---------- Version 1.3 onwards Byte number 0 1 RSZ multiple of RSZ +--+-----+---------+-- - - - - - - - - - ---+ Hex values | 4| RSZ | padding | run length encoded data| +--+-----+---------+-- - - - - - - - - - ---+ This achieves the same goal as XRLE, but is designed to maintain data aligned to specific 'record size' boundaries. This sometimes has benefits over XRLE in that subsequent a interlaced deflate entropy encoding may work better on record-aligned data streams. The first byte holds the format (#4) while the record size (RSZ) is held in the second byte. In order to ensure the entire block of data is aligned on 'RSZ' bounaries RSZ-2 padding bytes are written out before the data itself starts. The contents of these bytes can be anything. Unlike XRLE it also does not use an explicit guard byte. If we term a 'word' to be a block of data of size RSZ, then whenever we read a word which is identical to the last word written then we write out that word (so we have two consecutive words in the output data) followed by a counter of how many additional copies of that word are found, up to 255. This counter consists of 1 byte indicating the number of additional copies of the word followed by RSZ-1 padding bytes to maintain word alignment. While the contents of these padding bytes may be anything, it is suggested that they adhere to same value distribution as observed elsewhere in the data block in order to keep the data entropy low. (For example repeating the previous bytes from 'word' will do.) Example: Input data: taken in pairs: 1 0 2 2 2 2 3 1 3 1 3 1 2 4 2 4 2 4 2 3 Output data: 4 2 (xrle2 format, rec size 2) 1 0 ("1 0" from input) 2 2 2 2 0 2 ("2 2" x 2) 3 1 3 1 1 1 ("3 1" x 3) 2 4 2 4 1 4 ("2 4" x 3) 2 3 ("2 3") DELTA1 (#64) - 8-bit delta ------------ Byte number 0 1 2 N +--+-------------+-- - --+ Hex values |40| Delta level | data | +--+-------------+-- - --+ This technique replaces successive bytes with their differences. The level indicates how many rounds of differencing to apply, which should be between 1 and 3. For determining the first difference we compare against zero. All differences are internally performed using unsigned values with automatic an wrap-around (taking the bottom 8-bits). Hence 2-1 is 1 and 1-2 is 255. For example, with level set to 1: Input data: 10 20 10 200 190 5 Output data: 1 (delta1 format) 1 (level) 10 10 246 190 246 71 (delta data) For level set to 2: Input data: 10 20 10 200 190 5 Output data: 1 (delta1 format) 2 (level) 10 0 236 200 56 81 (delta data) DELTA2 (#65) - 16-bit delta ------------ Byte number 0 1 2 N +--+-------------+-- - --+ Hex values |41| Delta level | data | +--+-------------+-- - --+ This format is as data format 64 except that the input data is read in 2-byte values, so we take the difference between successive 16-bit numbers. For example "0x10 0x20 0x30 0x10" (4 8-bit numbers; 2 16-bit numbers) yields "0x10 0x20 0x1f 0xf0". All 16-bit input data is assumed to be aligned to the start of the buffer and is assumed to be in big-endian format. DELTA2 (#66) - 32-bit delta ------------ Byte number 0 1 2 3 4 N +--+-------------+--+--+-- - --+ Hex values |42| Delta level | 0| 0| data | +--+-------------+--+--+-- - --+ This format is as data formats 64 and 65 except that the input data is read in 4-byte values, so we take the difference between successive 32-bit numbers. Two padding bytes (2 and 3) should always be set to zero. Their purpose is to make sure that the compressed block is still aligned on a 4-byte boundary (hence making it easy to pass straight into the 32to8 filter). Data format 67-69/0x43-0x45 - reserved --------------------------- At present these are reserved for dynamic differencing where the 'level' field varies - applying the appropriate level for each section of data. Experimental at present... 16TO8 (#70) - 16 to 8 bit conversion ----------- Byte number 0 +--+-- - --+ Hex values |46| data | +--+-- - --+ This method assumes that the input data is a series of big endian 2-byte signed integer values. If the value is in the range of -127 to +127 inclusive then it is written as a single signed byte in the output stream, otherwise we write out -128 followed by the 2-byte value (in big endian format). This method works well following one of the delta techniques as most of the 16-bit values are typically then small enough to fit in one byte. Example input data: 0 10 0 5 -1 -5 0 200 -4 -32 (bytes) (As 16-bit big-endian values: 10 5 -5 200 -800) Output data: 70 (16-to-8 format) 10 5 -5 -128 0 200 -128 -4 -32 32TO8 (#71) - 32 to 8 bit conversion ----------- Byte number 0 +--+-- - --+ Hex values |47| data | +--+-- - --+ This format is similar to format 16TO8, but we are reducing 32-bit numbers (big endian) to 8-bit numbers. FOLLOW1 (#72) - "follow" predictor ------------- Byte number 0 1 FF 100 101 N +--+-- - - - --+-- - --+ Hex values |48| follow bytes | data | +--+-- - - - --+-- - --+ For each symbol we compute the most frequent symbol following it. This is stored in the "follow bytes" block (256 bytes). The first character in the data block is stored as-is. Then for each subsequent character we store the difference between the predicted character value (obtained by using follow[previous_character]) and the real value. This is a very crude, but fast, method of removing some residual non-randomness in the input data and so will reduce the data entropy. It is best to use this prior to entropy encoding (such as huffman encoding). CHEB445 (#73) - floating point 16-bit chebyshev polynomial predictor ------------- Version 1.1 only. Deprecated: replaced by format 74 in Version 1.2. WARNING: This method was experimental and have been replaced with an integer equivalent. The floating point method may give system specific results. Byte number 0 1 2 N +--+--+-- - --+ Hex values |49| 0| data | +--+--+-- - --+ This method takes big-endian 16-bit data and attempts to curve-fit it using chebyshev polynomials. The exact method employed uses the 4 preceeding values to calculate chebyshev polynomials with 5 coefficents. Of these 5 coefficients only 4 are used to predict the next value. Then we store the difference between the predicted value and the real value. This procedure is repeated throughout each 16-bit value in the data. The first four 16-bit values are stored with a simple 1-level 16-bit delta function. Reversing the predictor follows the same procedure, except now adding the differences between stored value and predicted value to get the real value. ICHEB (#74) - integer based 16-bit chebyshev polynomial predictor ----------- Version 1.2 onwards This replaces the floating point CHEB445 format in ZTR v1.1. Byte number 0 1 2 N +--+--+-- - --+ Hex values |4A| 0| data | +--+--+-- - --+ This method takes big-endian 16-bit data and attempts to curve-fit it using chebyshev polynomials. The exact method employed uses the 4 preceeding values to calculate chebyshev polynomials with 5 coefficents. Of these 5 coefficients only 4 are used to predict the next value. Then we store the difference between the predicted value and the real value. This procedure is repeated throughout each 16-bit value in the data. The first four 16-bit values are stored with a simple 1-level 16-bit delta function. Reversing the predictor follows the same procedure, except now adding the differences between stored value and predicted value to get the real value. STHUFF (#77) - Interlaced Deflate ------------ Version 1.3 onwards Byte number 0 1 2 N +--+--+-- - - - - - --+-- - - --+ Hex values |4D| C| huffman codes | data | +--+--+-- - - - - - --+-- - - --+ This compresses data using huffman encoding using the Deflate algorithm for storing the codes and data. It is analogous to using zlib with the Z_HUFFMAN_ONLY strategy and a negative window size. However it has a few tweaks for optimal compression of very small data sets. See RFC 1951 for details of Deflate. If the following text is in decrepancy with RFC 1951 then the RFC takes priority. The following is included as additional explanatory material only. Huffman compression works by replacing each character (or 'symbol') with a string of bits. Common symbols have are encoded using few bits and rare symbols need a longer string of bits. The net effect is that the overall number of bits needed to store a message is reduced. To uncompress a compressed data stream it is necessary to know which symbols are present and what their bit-strings are. For brevity this is achieved by storing only the lengths of the bit-string for each symbol and generating bit-strings from the lengths. As long as the same canonical algorithm is used in both the encoder and decoder then knowing the lengths alone is sufficient. Knowledge of this algorithm is required for uncompressing the data, so it is defined as follows: 1. Sort symbols by the length of their bit-strings, smallest first. The collating order for symbols sharing the same length is defined as ASCII values 0 to 255 inclusive followed by the EOF symbol. 2. X = 0 3. For all bit lengths 'L' from 1 to 24 inclusive: For all Symbols of bit length 'L', sorted as above: Code(Symbol) = least significant 'L' bits of X X = X + 1 End loop X = X * 2 End loop This is the same algorithm utilised in the Deflate algorithm (RFC 1951). For example compressing "abracadabra" gives: /\ 0 1 Symbol bit-length Code(X) / \ ------------------------------- a /\ a 1 0 0 / \ b 3 4 100 0 1 c 3 5 101 / \ r 3 6 110 / \ d 4 14 1110 /\ /\ EOF 4 15 1111 0 1 0 1 / \ / \ which in turn leads to 28 bits b c r /\ of output: 0 1 / \ 0100110010101110010011001111 d EOF (ab r ac ad ab r aEOF) In the data format defined above, 'C' is a code-set number. If it is zero the the huffman codes to uncompress 'data' are stored in the following bytes using the same format describe in the DFLH chunk type below, otherwise no huffman codes are stored and a predefined set of huffman codes are used being either defined in a preceeding DFLH chunk (for 128 <= 'C' <= 255) or statically defined in this document (for 1 <= 'C' <= 127). Immediately following this is the compressed bit-stream itself. The statically defined huffman code-sets are as follows. The symbols are listed below as their printable ASCII character or hash followed by a number, so A and #65 are the same symbol. We use the algorithm described above to turn these bit-lengths into actual huffman codes. C=1: CODE_DNA Length Symbols ---------------- 2 A C T 3 G 4 N 5 #0 6 EOF 13 #1 to #6 inclusive 14 #7 to #255 except where already listed above C=2: CODE_DNA_AMBIG (DNA with IUPAC ambiguity codes) Length Symbols ---------------- 2 A C T 3 G 4 N 7 #0 #45 8 B D H K M R S V W Y 11 EOF 14 #226 15 #1 to #255 except where already listed above C=3: CODE_ENGLISH (English text) Length Symbols ---------------- 3 #32 e 4 a i n o s t 5 d h l r u 6 #10 #13 #44 c f g m p w y 7 #46 b v 8 #34 I k 9 #45 A N T 10 #39 #59 #63 B C E H M S W x 11 #33 0 1 F G 15 #0 to #255 except where already listed above It is recommended that this compression format is used only for small data sizes and ZLIB is used for larger (a few K and above) data. QSHIFT (#79) - 4-byte quality reorder ------------ Version 1.3 onwards This reorders the quality signal to be 4-tuples of the quality for the called base followed by the quality of the other 3 base types in the order they appear in a,c,g,t (minus the called base). The purpose is to allow a 4-byte interlaced deflate algorithm to operate efficiently. TSHIFT (#70) - 8-byte trace reorder ------------ Version 1.3 onwards This reorders the trace signal to be 4-tuples of the 16-bit trace signals for the called base followed by the signal from the other 3 base types in the order they appear in a,c,g,t (minus the called base). The purpose is to allow a 8-byte interlaced deflate algorithm to operate efficiently. FIXME: QSHIFT and TSHIFT could be general purpose byte rearrangements without any knowledge of the data type they're holding. They need the input data to be consistently ordered and not the large differences we see between quality and trace right now. Version 1.3 onwards Chunk types =========== As described above, each chunk has a type. The format of the data contained in the chunk data field (when written in format 0) is described below. Note that no chunks are mandatory. It is valid to have no chunks at all. However some chunk types may depend on the existance of others. This will be indicated below, where applicable. Each chunk type is stored as a 4-byte value. Bit 5 of the first byte is used to indicate whether the chunk type is part of the public ZTR spec (bit 5 of first byte == 0) or is a private/custom type (bit 5 of first byte == 1). Bit 5 of the remaining 3 bytes is reserved - they must always be set to zero. Practically speaking this means that public chunk types consist entirely of upper case letters (eg TEXT) whereas private chunk types start with a lowercase letter (eg tEXT). Note that in this example TEXT and tEXT are completely independent types and they may have no more relationship with each other than (for example) TEXT and BPOS types. It is valid to have multiples of some chunks (eg text chunks), but not for others (such as base calls). The order of chunks does not matter unless explicitly specified. A chunk may have meta-data associated with it. This is data about the data chunk. For example the data chunk could be a series of 16-bit trace samples, while the meta-data could be a label attached to that trace (to distinguish trace A from traces C, G and T). Meta-data is typically very small and so it is never need be compressed in any of the public chunk types (although meta-data is specific to each chunk type and so it would be valid to have private chunks with compressed meta-data if desirable). The first byte of each chunk data when uncompressed must be zero, indicating raw format. If, having read the chunk data, this is not the case then the chunk needs decompressing or reverse filtering until the first byte is zero. There may be a few padding bytes between the format byte and the first element of real data in the chunk. This is to make file processing simpler when the chunk data consists of 16 or 32-bit words; the padding bytes ensure that the data is aligned to the appropriate word size. Any padding bytes required will be listed in the appopriate chunk definition below. The following lists the chunk types available in 32-bit big-endian format. In all cases the data is presented in the uncompressed form, starting with the raw format byte and any appropriate padding. SAMP ---- Or Meta-data: (version 1.2 and before) Byte number 0 1 2 3 +--+--+--+--+ Hex values | data name | +--+--+--+--+ Data: Byte number 0 1 2 3 4 5 6 7 N +--+--+--+--+--+--+--+--+- -+ Hex values | 0| 0| data| data| data| - | +--+--+--+--+--+--+--+--+- -+ This encodes a series of 16-bit unsigned trace samples. The first data byte is the format (raw); the second data byte is present for padding purposes only. After that comes a series of 16-bit big-endian values. Although stored as unsigned, a baseline value can be specified which is should then be subtracted from all values to generated signed data if required. By default the baseline is zero. Valid identifiers for the meta-data (version 1.3 onwards) are: Ident Value(s) --------------------------------------------------------------------- TYPE "A", "C", "G", "T", "PYNO" or "PYRW" OFFS 16-bit signed integer representing the 'zero' position, in ASCII. [ FIXME: signed or unsigned? Signed means we couldn't store data in the range from -48K to +16K. Unsigned means we couldn't store data in the range 10K to 70K. What's most useful? Or should OFFS be 32-bit instead? ] Versions prior to 1.3 specified meta-data consisted of a single 4-byte block containing a 4-byte name associated with the trace. If a type-name is shorter than 4 bytes then it should be right padded with nul characters to 4 bytes. For sequencing traces the four lanes representig A, C, G and T signals have names "A\0\0\0", "C\0\0\0", "G\0\0\0" and "T\0\0\0". PYNO and PYRW refer to normalised and raw pyrogram data (eg from 454 instruments). At present other names are not reserved, but it is recommended that (for consistency with elsewhere) you label private trace arrays with names starting in a lowercase letter (specifically, bit 5 is 1). For the purposes of backwards compatibility, readers should check the version number in the ZTR header to determine whether the old or new style meta-data formatting is in use. For sequencing traces it is expected that there will be four SAMP chunks, although the order is not specified. SMP4 ---- Meta-data: optional - see below Data: Byte number 0 1 2 3 4 5 6 7 N +--+--+--+--+--+--+--+--+- -+ Hex values | 0| 0| data| data| data| - | +--+--+--+--+--+--+--+--+- -+ As per SAMP, this encodes a series of unsigned 16-bit trace values, to be base-line corrected by the OFFS meta-data value as appropriate. The first byte is 0 (raw format). Next is a single padding byte (also 0). Then follows a series of 2-byte big-endian trace samples for the "A" trace, followed by a series of 2-byte big-endian traces samples for the "C" trace, also followed by the "G" and "T" traces (in that order). The assumption is made that there is the same number of data points for all traces and hence the length of each trace is simply the number of data elements divided by four. Experimentation has shown that this gives around 3% saving over 4 separate SAMP chunks, but it lacks in flexibility. Valid identifiers for the meta-data are: Ident Value(s) --------------------------------------------------------------------- OFFS 16-bit signed integer representing the 'zero' position TYPE The type of data-set encoded. Values can be: "PROC" - processed data for viewing, also the default when no type field is found. "SLXI" - Illumina GA raw intensities (.int.txt files) "SLXN" - Illumina GA noise intensities (.nse.txt files) BASE ---- Meta-data: optional - see below Data: Byte number 0 1 2 3 N +--+--+--+-- - --+ Hex values | 0| base calls | +--+--+--+-- - --+ The first byte is 0 (raw format). This is followed by the base calls in ASCII format (one base per byte). By default it is assumed that all base calls are stored using the IUPAC characters[1]. Valid identifiers for the meta-data are: Ident Meaning Value(s) --------------------------------------------------------------------- CSET Character-set 'I' (ASCII #73) => IUPAC ("ACGTUMRWSYKVHDBN") '0' (ASCII #49) => ABI SOLiD ("0123N") BPOS ---- Meta-data: none present Data: Byte number 0 1 2 3 4 5 6 7 +--+--+--+--+--+--+--+--+- -+--+--+--+--+ Hex values | 0| padding| data | - | data | +--+--+--+--+--+--+--+--+- -+--+--+--+--+ This chunk contains the mapping of base call (BASE) numbers to sample (SAMP) numbers; it defines the position of each base call in the trace data. The position here is defined as the numbering of the 16-bit positions held in the SAMP array, counting zero as the first value. The format is 0 (raw format) followed by three padding bytes (all 0). Next follows a series of 4-byte big-endian numbers specifying the position of each base call as an index into the sample arrays (when considered as a 2-byte array with the format header stripped off). Excluding the format and padding bytes, the number of 4-byte elements should be identical to the number of base calls. All sample numbers are counted from zero. No sample number in BPOS should be beyond the end of the SAMP arrays (although it should not be assumed that the SAMP chunks will be before this chunk). Note that the BPOS elements may not be totally in sorted order as the base calls may be shifted relative to one another due to compressions. CNF1 ---- Meta-data: optional - see below Data: Byte number 0 1 N +--+--+-- - --+--+ Hex values | 0| call confidence | +--+--+-- - --+--+ (N == number of bases in BASE chunk) Valid identifiers for the meta-data are: Ident Value(s) Meaning --------------------------------------------------------------------- SCALE PH Phred-scaled confidence values. (Default). i.e. for a call with probability p: -10*log10(1-p) LO Log-odds scaled values. ie: 10*log10(p/(1-p)) The first byte of this chunk is 0 (raw format). This is then followed by a series signed 8-bit confidence values for the called bases. Either phred or log-odds (as used by the Illumina GA) scale ranges are appropriate. CNF4 ---- Meta-data: optional - see below Data: Byte number 0 1 N 4N +--+--+-- - --+--+----- - -----+ Hex values | 0| call confidence | A/C/G/T conf | +--+--+-- - --+--+----- - -----+ (N == number of bases in BASE chunk) Valid identifiers for the meta-data are: Ident Value(s) Meaning --------------------------------------------------------------------- SCALE PH Phred-scaled confidence values. i.e. for a call with probability p: -10*log10(1-p) (NB: default, but often inappropriate.) LO Log-odds scaled values. ie: 10*log10(p/(1-p)) The first byte of this chunk is 0 (raw format). This is then followed by a series signed 8-bit confidence values for the called base. Next comes all the remaining confidence values for A, C, G and T excluding those that have already been written (ie the called base). So for a sequence AGT we would store confidences A1 G2 T3 C1 G1 T1 A2 C2 T2 A3 C3 G3. The purpose of this is to group the (likely) highest confidence value (those for the called base) at the start of the chunk followed by the remaining values. Hence if phred confidence values are written in a CNF4 chunk the first quarter of chunk will consist of phred confidence values and the last three quarters will (assuming no ambiguous base calls) consist entirely of zeros. For the purposes of storage the confidence value for a base call that is not A, C, G or T (in any case) is stored as if the base call was T. If only one confidence value exists per base then either the phred or log-odds scales work well. The first N bytes will be the called bases and the remaining 3*N will be zero (optimal for run-length-encoding), but consider using the CNF1 chunk type instead in this situation. If all 4 base types have their own confidence value then the log-odds scale will work well. In this case the phred scale is an inappropriate choice as it cannot encode both very likely and very unlikely events. Note: if this chunk exists it must exist after a BASE chunk. TEXT ---- Meta-data: none present Data: 0 +--+- - -+--+- - -+--+- -+- - -+--+- - -+--+-----+ Hex values | 0| ident | 0| value | 0| - | ident | 0| value | 0| (0) | +--+- - -+--+- - -+--+- -+- - -+--+- - -+--+-----+ This contains a series of "identifier\0value\0" pairs. The identifiers and values may be any length and may contain any data except the nul character. The nul character marks the end of the identifier or the end of the value. Multiple identifier-value pairs are allowable. Prior to version 1.3 a double nul character marked the end of the list (labeled "(0)" above), but from version 1.3 the end of the list may also be marked by the end of chunk. Identifiers starting with bit 5 clear (uppercase) are part of the public ZTR spec. Any public identifier not listed as part of this spec should be considered as reserved. Identifiers that have bit 6 set (lowercase) are for private use and no restriction is placed on these. Multiple TEXT chunks may exist within the ZTR file. If so they are considered to be concatenated together. See below for the text identifier list. CLIP ---- Meta-data: none present Data: Byte number 0 1 2 3 4 5 6 7 8 +--+--+--+--+--+--+--+--+--+ Hex values | 0| left clip | right clip| +--+--+--+--+--+--+--+--+--+ This contains suggested quality clip points. These are stored as zero (raw data) followed by a 4-byte big endian value for the left clip point and a 4-byte big endian value for the right clip point. Clip points are defined in units of base calls, starting from 0. (Q: is that correct!?) CR32 ---- Meta-data: none present Data: Byte number 0 1 2 3 4 +--+--+--+--+--+ Hex values | 0| CRC-32 | +--+--+--+--+--+ This chunk is always just 4 bytes of data containing a CRC-32 checksum, computed according to the widely used ANSI X3.66 standard. If present, the checksum will be a check of all of the data since the last CR32 chunk. This will include checking the header if this is the first CR32 chunk, and including the previous CRC32 chunk if it is not. Obviously the checksum will not include checks on this CR32 chunk. COMM ---- Meta-data: none present Data: Byte number 0 1 N +--+-- - --+ Hex values | 0| free text | +--+-- - --+ This allows arbitrary textual data to be added. It does not require a identifier-value pairing or any nul termination. DFLH ---- Meta-data: none present Data: Byte number 0 1 N +--+--+-- - - - - - - - - - - --+ Hex values | 0| C| Deflate format data ... | +--+--+-- - - - - - - - - - - --+ 'C' is the code-set number referred to within that compression method. It should be 128 onwards and is used to distinguish between multiple huffman tables. It is used in conjunction with the data compression format 77 ("Deflate"). Following this is data in the Deflate format (RFC 1951). This should consist of the header for a single block using dynamic huffman with the BFINAL (last block) flag set. In Deflate streams the end of the huffman codes and the start of the compressed data stream itself may occur part way through a byte. Therefore the last byte of the this block is bitwise ORed with the first byte of the data stream compressed referring back to this code-set number. Therefore all unused bits in the last byte of this block should be set to zero. Likewise if the data bit-stream in this block ends on an exact byte boundary then an additional blank byte must be added to ensure the ORing method above still works. DFLC ---- Meta-data: none present Data: Byte number 0 +--+---+- - - - ---+--+-- - - - - - - - - - - - --+ Hex values | 0| C |code-order |FF| Deflate dynamic codes ... | +--+---+- - - - ---+--+-- - - - - - - - - - - - --+ Multi-context Deflate compression codes defined for use by data format 78 (HUFF_MULTI). This is like the DFLH format, except it encodes multiple huffman trees instead of a single tree along with the order in which the multiple trees should be used (the "code-order"). 'C' is the code-set number referred to within that compression method. It should be 128 onwards and is used to distinguish between multiple huffman tables. The code-order is a run-length encoded series of 8-bit numbers indicating which huffman code set should be used for which byte. For each byte in the input stream the HUFF_MULTI method selects the appropriate huffman code by using indexing code-order with the input data position modulo the number of values in code-order. Following this is data in the Deflate format (RFC 1951). This should consist of the header component for a single block using dynamic huffman with the BFINAL (last block) flag set, up to and including the HDIST+1 code lengths for the distance alphabet. This will then be immediately followed by the next set of huffman codes, and so on until all index values containing within the code-order have been accounted for. In Deflate streams the end of the huffman codes and the start of the compressed data stream itself may occur part way through a byte. Therefore the last byte of the this block is bitwise ORed with the first byte of the data stream compressed referring back to this code-set number. Therefore all unused bits in the last byte of this block should be set to zero. Likewise if the data bit-stream in this block ends on an exact byte boundary then an additional blank byte must be added to ensure the ORing method above still works. For example, compression of 16-bit data is sometimes best achieved by producing one set of huffman codes for the top 8 bits and another set for the bottom 8 bits, rather than mixing these together by treating the 16-bit data as a series of 8-bit quantities. In this case our code-order would consist of just two entries; (0, 1). Alternatively we may have 4 1-byte confidence values stored per base in the order of the confidence of the base-called base type first followed by the 3 remaining confidence values. We observe that compressing byte 0, 4, 8, 12, ... as one set and bytes 1,2,3, 5,6,7, ... as another set yields higher compression ratios. In this case the code-order would consist of 4 entries; (0, 1, 1, 1). REGN ---- Meta-data: optional - see below Data: Byte number 0 1 2 3 4 5 6 7 8 +--+---+---+---+---+---+---+---+---+ Hex values | 0| 1st boundary | 2nd boundary | ... +--+---+---+---+---+---+---+---+---+ This chunk is used to break a trace down into a series of segments. We store the boundary between segments, so the list above will contain one less boundary than there are segments with the first segment implicitly starting from the first base and the last segment implictly extending to the last base. Each 4-byte unsigned value indicates a position within the sequence or trace counting from 0 as the first element and marking the first base of the next region. For example three regions of DNA may be: 0 1 2 3 4 5 6 7 8 9 10 11 12 T A C G G A T T C G A A C |<-reg. 1->| |<--reg. 2--->| |<-reg. 3->| This would give the 1st boundary as 4 and the 2nd boundary as 9. The lack of a REGN chunk implies one single region extending from the first to last base in the sequence. Valid identifiers for the meta-data are: Ident Meaning Value(s) --------------------------------------------------------------------- COORD Coordinate system 'T' = trace coordinates 'B' = base coordinations (default) NAME Region names A semicolon separated list of "name:code" pairs. Eg primer1:T;read1:P;primer2:T;read2:P [FIXME: NAME identifier here is the same as the REGION_LIST TEXT identifier. We need to decide where it belongs and pick one. If we can get a way to specify the default meta-data contents then logically speaking the best place to store this is in the meta-data along side the chunk data itself.] The NAME identifier is used to attach a meaning to the regions described in the data chunk. It consists of a semi-colon separated list of names or name:code pairs. The codes, if present are a single character from the predefined list below and are separated from the name by a colon. Code Meaning --------------------------------------- T Tech read (e.g. primer, linker) B Bio read I Inverted read D Duplicate read P Paired read FIXME: I don't like the above meanings. They don't, well, "mean" much to me! What's a tech read? Text Identifiers ================ These are for use in the TEXT segments. None are required, but if any of these identifiers are present they must confirm to the description below. Much (currently all) of this list has been taken from the NCBI Trace Archive [2] documentation. It is duplicated here as the ZTR spec is not tied to the same revision schedules as the NCBI trace archive (although it is intended that any suitable updates to the trace archive should be mirrored in this ZTR spec). The Trace Archive specifies a maximum length of values. The ZTR spec does not have length limitations, but for compatibility these sizes should still be observed. The Trace Archive also states some identifiers are mandatory; these are marked by asterisks below. These identifiers are not mandatory in the ZTR spec (but clearly they need to exist if the data is to be submitted to the NCBI). Finally, some fields are not appropriate for use in the ZTR spec, such as BASE_FILE (the name of a file containing the base calls). Such fields are included only for compatibility with the Trace Arhive. It is not expected that use of ZTR would allow for the base calls to be read from an external file instead of the ZTR BASE chunk. [ Quoted from TraceArchiveRFC v1.17 ] Identifier Size Meaning Example value(s) ---------- ----- ---------------------------- ----------------- TRACE_NAME * 250 name of the trace HBBBA1U2211 as used at the center unique within the center but not among centers. SUBMISSION_TYPE * - type of submission CENTER_NAME * 100 name of center BCM CENTER_PROJECT 200 internal project name HBBB used within the center TRACE_FILE * 200 file name of the trace ./traces/TRACE001.scf relative to the top of the volume. TRACE_FORMAT * 20 format of the tracefile SOURCE_TYPE * - source of the read INFO_FILE 200 file name of the info file INFO_FILE_FORMAT 20 BASE_FILE 200 file name of the base calls QUAL_FILE 200 file name of the base calls TRACE_DIRECTION - direction of the read TRACE_END - end of the template PRIMER 200 primer sequence PRIMER_CODE which primer was used STRATEGY - sequencing strategy TRACE_TYPE_CODE - purpose of trace PROGRAM_ID 100 creator of trace file phred-0.990722.h program-version TEMPLATE_ID 20 used for read pairing HBBBA2211 CHEMISTRY_CODE - code of the chemistry (see below) ITERATION - attempt/redo 1 (int 1 to 255) CLIP_QUALITY_LEFT left clip of the read in bp due to quality CLIP_QUALITY_RIGHT right " " " " " CLIP_VECTOR_LEFT left clip of the read in bp due to vector CLIP_VECTOR_RIGHT right " " " " " SVECTOR_CODE 40 sequencing vector used (in table) SVECTOR_ACCESSION 40 sequencing vector used (in table) CVECTOR_CODE 40 clone vector used (in table) CVECTOR_ACCESSION 40 clone vector used (in table) INSERT_SIZE - expected size of insert 2000,10000 in base pairs (bp) (int 1 to 2^32) PLATE_ID 32 plate id at the center WELL_ID well 1-384 SPECIES_CODE * - code for species SUBSPECIES_ID 40 name of the subspecies Is this the same as strain CHROMOSOME 8 name of the chromosome ChrX, Chr01, Chr09 LIBRARY_ID 30 the source library of the clone CLONE_ID 30 clone id RPCI11-1234 ACCESSION 30 NCBI accession number AC00001 PICK_GROUP_ID 30 an id to group traces picked at the same time. PREP_GROUP_ID 30 an id to group traces prepared at the same time RUN_MACHINE_ID 30 id of sequencing machine RUN_MACHINE_TYPE 30 type/model of machine RUN_LANE 30 lane or capillary of the trace RUN_DATE - date of run RUN_GROUP_ID 30 an identifier to group traces run on the same machine [ End of quote from TraceArchiveRFC ] More detailed information on the format of these values should be obtained from the Trace Archive RFC [2]. In addition to the above the following TEXT identifiers have meaning specific to the ZTR format: Identifier Meaning Example value(s) ---------- ---------------------------- ------------------------------- REGION_LIST A semi-colon separated list primer1:T;read1:P identifying regions of a trace. See the REGN chunk Region 1;Region 2;Region 3 definition for details. FIXME: Should this simply be the meta-data associated with the REGN chunk? References ========== [1] IUPAC: http://www.chem.qmw.ac.uk/iubmb/misc/naseq.html [2] http://www.ncbi.nlm.nih.gov/Traces/TraceArchiveRFC.html [3] J.Bonfield and R.Staden, "ZTR: a new format for DNA sequence trace data". Bioinformatics Vol. 18 no. 1 2002. FIXME: As an aside, not doing the final entropy encoding steps (zlib, deflate, etc) and just using bzip2 on an entire SRF archive yields a considerable saving. On tests it varied between 23% (27bp reads) and 13% (74bp reads) smaller than the Deflate compressed data. Unfortunately it pretty much removes all chance of random access in the data unless I can get a working FM-Index implementation (which is very unlikely in a short time). This makes it appropriate for transmission perhaps, but not for indexing and querying random sequences. A substantial chunk (5-9%) of this saving comes from the repeated ZTR block types (names like "BASE", "CNF4" and common components like 0x00000000 for the meta-data size). The remainder probably comes from similarities between one ZTR file and another. io_lib-1.14.6/docs/Hash_File_Format0000644000031500020650000000630212354177664014002 00000000000000A Hash File is an on-disk copy of a Hash Table keyed by filenames and with data containing a file size and position within an archive. It's designed to be a general purpose indexing tool for most archive formats or for "solid" (concatenated) file archives. Basic operations need to be performed on hash files and there are tools to do this: Listing the contents hash_list [-l] Extraction hash_extract Concatenation hash_cat The Hash File format is: Header, archive file name, file headers/footers, hash buckets, hash linked list items, footer. In more detail: Header: ".hsh" (magic numebr) x4 (1-bytes of version code, eg "1.00") x1 (HASH_FUNC_? function used) x1 (number of file headers: FH. These count from 1 to FH inclusive) x1 (number of file footers: FF. These count from 1 to FF inclusive) x1 (reserved - zero for now) x4 (4-bytes big-endian; number of hash buckets) x8 (offset to add to item positions. eg size of this index) x4 (total size of hashfile, includingf header, ..., index, footer) Archive name: x1 (length 'L', zero => no name) xL (archive filename) File headers (FH copies of): x8 (position) x4 (size) File footers (FH copies of): x8 (position) x4 (size) Buckets (multiples of) x4 (4-byte offset of linked list pos, rel. to the start of the hdr) Items (per bucket chain, not written if Bucket[?]==0) x1 (key length 'K', zero => end of chain) xK (key) x0.5 (File header to use. zero => none) top 4 bits x0.5 (File footer to use. zero => none) bottom 4 bits x8 (position) x4 (size) Index footer: ".hsh" (magic number) x8 (offset to Hash Header. >=0 = absolute, -ve = relative to end) The HashFile index may either be a separate file to the archive, in which case the "Archive name" section references the archive itself, or part of the archive itself in which case archive name is zero length. Additionally if the archive name length is non-zero but the first byte of the archive filename is zero then it is also considered to be part of the same archive. This allows for an index previously generated as a separate file to simply be appended to the archive with a minimal of binary editing (ie zeroing 1 byte). The HashFile index may also be at the start (preferred and searched for first) or the end of the file. This is the rationale behind having an index footer. It allows us to simply append a hash of a tar file to the end of the tar file itself and it'll work just fine without breaking the format of the tar file. (Tar files end with a blank block, so additional data is not read by tar.) Appending the hashfile requires an extra 2 seeks and 1 read (if opening from scratch) to fetch a file compared to prepending the hashfile. If the hash file was originally stored as a separate file from the archive but is now being merged then zero the first byte of the archive filename and either prepend or append as desired. If you prepend the hash file then note that all the absolute offsets in the Item structures will now be incorrect. A correction factor may be applied, of the size of the HashFile itself, and this is the purpose of the offset field in the header. io_lib-1.14.6/io_lib/0000755000031500020650000000000012617161150011272 500000000000000io_lib-1.14.6/io_lib/Read.h0000644000031500020650000002402712354177666012264 00000000000000/* * Copyright (c) 2003, 2005-2007, 2010, 2013 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * Author(s): James Bonfield, Simon Dear, Rodger Staden * * Copyright (c) 1995, 1997-1998, 2000-2001 MEDICAL RESEARCH COUNCIL * All rights reserved * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1 Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2 Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3 Neither the name of the MEDICAL RESEARCH COUNCIL, THE LABORATORY OF * MOLECULAR BIOLOGY nor the names of its contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * Copyright (c) Medical Research Council 1994. All rights reserved. * * Permission to use, copy, modify and distribute this software and its * documentation for any purpose is hereby granted without fee, provided that * this copyright and notice appears in all copies. * * This file was written by James Bonfield, Simon Dear, Rodger Staden, * as part of the Staden Package at the MRC Laboratory of Molecular * Biology, Hills Road, Cambridge, CB2 2QH, United Kingdom. * * MRC disclaims all warranties with regard to this software. */ #ifndef _Read_h_ #define _Read_h_ /* * Title: Read * * File: Read.h * Purpose: Read data type * Last update: June 14 1994 */ /* * This module encodes the `Read' sequence data structure. * * A `Read' contains information about bases and traces which are laid * out along a single dimension of points. The number of points in a * paricular sequence is given by `getNPoints', and these are numbered * 0..getNPoints-1. At each point there are four trace readings, one * for each base. * * The number of bases is `getNBases' which are numbered 0..N-1. * Bases are represented by `char's. Every base is located at a * particular point. * * The behaviour of these routines is undefined if given NULLRead or * an undefined sequence. */ #include "io_lib/os.h" #include "io_lib/scf.h" #include "io_lib/mFILE.h" #ifdef __cplusplus extern "C" { #endif /* *----------------------------------------------------------------------------- * Macros *----------------------------------------------------------------------------- */ #define NULLRead ((Read *)NULL) /* Trace file formats */ #define TT_ERR -1 #define TT_UNK 0 #define TT_SCF 1 #define TT_ABI 2 #define TT_ALF 3 #define TT_PLN 4 #define TT_EXP 5 #define TT_ZTR 7 #define TT_ZTR1 8 #define TT_ZTR2 9 #define TT_ZTR3 10 #define TT_BIO 11 #define TT_SFF 12 #define TT_ANY TT_UNK /* ANYTR is specifically any *trace* type and not EXP or PLN format */ #define TT_ANYTR 13 #define READ_BASES (1<<0) #define READ_SAMPLES (1<<1) #define READ_COMMENTS (1<<2) #define READ_ALL (READ_BASES | READ_SAMPLES | READ_COMMENTS) /* *----------------------------------------------------------------------------- * Structures and typedefs *----------------------------------------------------------------------------- */ typedef uint_2 TRACE; /* for trace heights */ typedef struct { int format; /* Trace file format */ char *trace_name; /* Trace file name */ int NPoints; /* No. of points of data */ int NBases; /* No. of bases */ /* Traces */ TRACE *traceA; /* Array of length `NPoints' */ TRACE *traceC; /* Array of length `NPoints' */ TRACE *traceG; /* Array of length `NPoints' */ TRACE *traceT; /* Array of length `NPoints' */ TRACE maxTraceVal; /* The maximal value in any trace */ int baseline; /* The zero offset for TRACE values */ /* Bases */ char *base; /* Array of length `NBases' */ uint_2 *basePos; /* Array of length `NBases' */ /* Cutoffs */ int leftCutoff; /* Number of unwanted bases */ int rightCutoff; /* First unwanted base at right end */ /* Miscellaneous Sequence Information */ char *info; /* misc seq info, eg comments */ /* Probability information */ char *prob_A; /* Array of length 'NBases' */ char *prob_C; /* Array of length 'NBases' */ char *prob_G; /* Array of length 'NBases' */ char *prob_T; /* Array of length 'NBases' */ /* The original input format data, or NULL if inapplicable */ int orig_trace_format; void (*orig_trace_free)(void *ptr); void *orig_trace; char *ident; /* Seq id, NULL for unknown. Malloced data. Owned and freed by io_lib. */ /* Pyrosequencing "peaks" (more like spikes). NULL if not used */ int nflows; /* Number of "flows" */ char *flow_order; /* Bases flowed across */ float *flow; /* Processed to be 1 base unit oriented */ unsigned int*flow_raw; /* Unprocessed data */ void *private_data; /* The 'private data' block and size from SCF, */ int private_size; /* NULL & 0 if not present. */ } Read; /* *----------------------------------------------------------------------------- * Function prototypes *----------------------------------------------------------------------------- */ /* ----- Main I/O routines ----- */ /* * Read a sequence from a file "fn" of format "format". If "format" is 0 * (TT_ANY), we automatically determine the correct format. * * Returns: * Read * for success * NULLRead for failure */ Read *read_reading(char *fn, int format); Read *fread_reading(FILE *fp, char *fn, int format); Read *mfread_reading(mFILE *fp, char *fn, int format); /* * Write a sequence to a file "fn" of format "format". If "format" is 0, * we choose our favourite - SCF. * * Returns: * 0 for success * -1 for failure */ int write_reading(char *fn, Read *read, int format); int fwrite_reading(FILE *fp, Read *read, int format); int mfwrite_reading(mFILE *fp, Read *read, int format); /* ----- Utility routines ----- */ /* * Allocate a new sequence, with the given sizes. * Returns: * "Read *" for success * "NULLRead" for failure */ Read *read_allocate(int num_points, int num_bases); /* * Duplicates the read structure and optionally gives it a new filename. * The following fields are not duplicated: * * int orig_trace_format; * void (*orig_trace_free)(void *ptr); * void *orig_trace; * char *ident; * * Returns: * "Read *" for success * "NULLRead" for failure */ Read* read_dup( Read* src, const char* new_name ); /* * Free memory allocated to a sequence by read_allocate(). */ void read_deallocate(Read *read); /* unix specific file deletion routine */ int remove_file(char *fn); Read *read_abi(char *fn); Read *fread_abi(FILE *fp); Read *mfread_abi(mFILE *fp); int write_abi(char *fn, Read *read); int fwrite_abi(FILE *fp, Read *read); int mfwrite_abi(mFILE *fp, Read *read); int write_alf(char *fn, Read *read); int fwrite_alf(FILE *fp, Read *read); int mfwrite_alf(mFILE *fp, Read *read); Read *read_alf(char *fn); Read *fread_alf(FILE *fp); Read *mfread_alf(mFILE *fp); int write_pln(char *fn, Read *read); int fwrite_pln(FILE *fp, Read *read); int mfwrite_pln(mFILE *fp, Read *read); Read *read_pln(char *fn); Read *fread_pln(FILE *fp); Read *mfread_pln(mFILE *fp); int read_sections(int sec); #include "io_lib/translate.h" #include "io_lib/compress.h" #ifdef __cplusplus } #endif #endif /* _Read_h_ */ io_lib-1.14.6/io_lib/scf_extras.h0000644000031500020650000001021612354177666013545 00000000000000/* * Copyright (c) 2007 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * Author(s): James Bonfield, Kathryn Beal * * Copyright (c) 1996, 1998-2002 MEDICAL RESEARCH COUNCIL * All rights reserved * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1 Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2 Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3 Neither the name of the MEDICAL RESEARCH COUNCIL, THE LABORATORY OF * MOLECULAR BIOLOGY nor the names of its contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * Copyright (c) Medical Research Council 1998. All rights reserved. * * Permission to use, copy, modify and distribute this software and its * documentation for any purpose is hereby granted without fee, provided that * this copyright and notice appears in all copies and that credit is given * where due. * * This file was written by James Bonfield, Simon Dear, Rodger Staden, * Kathryn Beal, as part of the Staden Package at the MRC Laboratory of * Molecular Biology, Hills Road, Cambridge, CB2 2QH, United Kingdom. * * MRC disclaims all warranties with regard to this software. */ #ifndef _SCFBITS_H_ #define _SCFBITS_H_ #include "io_lib/expFileIO.h" #ifdef __cplusplus extern "C" { #endif int get_read_conf(Exp_info *e, int length, int2 *opos, int1 *conf); #ifdef __cplusplus } #endif #endif /* _SCFBITS_H_ */ io_lib-1.14.6/io_lib/translate.h0000644000031500020650000001630512354177666013406 00000000000000/* * Copyright (c) 2007 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * Author(s): James Bonfield, Mark Jordan * * Copyright (c) 1995-1996, 1998, 2002-2003 MEDICAL RESEARCH COUNCIL * All rights reserved * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1 Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2 Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3 Neither the name of the MEDICAL RESEARCH COUNCIL, THE LABORATORY OF * MOLECULAR BIOLOGY nor the names of its contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * Copyright (c) Medical Research Council 1994. All rights reserved. * * Permission to use, copy, modify and distribute this software and its * documentation for any purpose is hereby granted without fee, provided that * this copyright and notice appears in all copies. * * This file was written by James Bonfield, Simon Dear, Rodger Staden, * as part of the Staden Package at the MRC Laboratory of Molecular * Biology, Hills Road, Cambridge, CB2 2QH, United Kingdom. * * MRC disclaims all warranties with regard to this software. */ #ifndef _TRANSLATE_H_ #define _TRANSLATE_H_ #include "io_lib/scf.h" #include "io_lib/Read.h" #include "io_lib/expFileIO.h" #ifdef __cplusplus extern "C" { #endif /* * Translates an Scf structure into a Read structure. * The Scf structure is left unchanged. * * Returns: * A pointer to an allocated Read structure upon success. * NULLRead upon failure. */ Read *scf2read(Scf *scf); /* * Translates a Read structure into a Scf structure. * The Read structure is left unchanged. * * Returns: * A pointer to an allocated Scf structure upon success. * NULL upon failure. */ Scf *read2scf(Read *read); /* * Translates a Read structure and an Experiment file. * The Read structure is left unchanged. * * Returns: * A pointer to an allocated Exp_info structure upon success. * NULL upon failure (FIXME: need to free memory here) */ Exp_info *read2exp(Read *read, char *EN); /* * Controls the use of the SQ and ON lines when loading an experiment file. * The default (value&1 == 1) is to load these into the Read structure. * With value&1 == 0 we load the sequence directly from the trace file * (LT line). * value&2 controls whether to use the SL/SR fields when setting the cutoff. * value&2 == 0 implies to do so, and value&2 == 2 implies to not. * * Returns: * The old value. */ int read_experiment_redirect(int value); /* * Takes an original read structure and a set of edit change arrays and * produces a new base position array incorporating all the edits. For * insertions, interpolation is used to derive a suitable sample position. * * INPUTS: * * Read *r = The original unedited read structure * int Comp = 0=Normal sequence, 1=Complemented sequence * int Ned = Length of edited arrays to follow * char *edBases = Sequence of base characters incorporating ins/del edits * uint_2 *edPos = Corresponding original base numbers, 0 indicates an * insertion. Base numbers start at 1. * * OUTPUTS: * * This array is assumed to be empty with an allocated length of Ned elements. * * uint_2* basePos = Base positions in samples */ void read_update_base_positions( Read *r, int Comp, int Ned, char *edBases, int_2 *edPos, uint_2 *basePos ); /* * Takes a set of edit change arrays and produces a new set of confidence * arrays incorporating all the edits. * * INPUTS: * * int Ned = Length of edited arrays to follow * char* edBases = Sequence of base characters incorporating ins/del edits * int1* edConf = Corresponding confidence values, 100 for insertions * * * OUTPUTS: * * These output arrays are assumed to be empty with an allocated length * of Ned elements each. The names and types are identical to the same * elements in the Read structure. * * char* prob_A = Base confidence A * char* prob_C = Base confidence C * char* prob_G = Base confidence G * char* prob_T = Base confidence T * */ void read_update_confidence_values( int Ned, char* edBases, int1* edConf, char* prob_A, char* prob_C, char* prob_G, char* prob_T ); /* * Translates an experiment file to a Read structure. * The Exp_Info structure is left unchanged. * * Returns: * A pointer to an allocated Read structure upon success. * NULLRead upon failure. */ Read *exp2read(Exp_info *e, char *fn); #ifdef __cplusplus } #endif #endif io_lib-1.14.6/io_lib/abi.h0000644000031500020650000000464712354177666012152 00000000000000/* * Copyright (c) 1994 MEDICAL RESEARCH COUNCIL * All rights reserved * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1 Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2 Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3 Neither the name of the MEDICAL RESEARCH COUNCIL, THE LABORATORY OF * MOLECULAR BIOLOGY nor the names of its contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * Copyright (c) Medical Research Council 1994. All rights reserved. * * Permission to use, copy, modify and distribute this software and its * documentation for any purpose is hereby granted without fee, provided that * this copyright and notice appears in all copies. * * This file was written by James Bonfield, Simon Dear, Rodger Staden, * as part of the Staden Package at the MRC Laboratory of Molecular * Biology, Hills Road, Cambridge, CB2 2QH, United Kingdom. * * MRC disclaims all warranties with regard to this software. */ #ifndef _seqIOABI_h #define _seqIOABI_h /* * Title: seqIOABI * * File: seqIOABI.h *Purpose: IO of ABI sequences * Last update: Mon May 28 1990 */ /* ---- Imports ---- */ #include "io_lib/Read.h" #endif /*_seqIOABI_h*/ io_lib-1.14.6/io_lib/fpoint.h0000644000031500020650000000453012354177666012705 00000000000000/* * Copyright (c) 1994 MEDICAL RESEARCH COUNCIL * All rights reserved * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1 Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2 Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3 Neither the name of the MEDICAL RESEARCH COUNCIL, THE LABORATORY OF * MOLECULAR BIOLOGY nor the names of its contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * Copyright (c) Medical Research Council 1994. All rights reserved. * * Permission to use, copy, modify and distribute this software and its * documentation for any purpose is hereby granted without fee, provided that * this copyright and notice appears in all copies. * * This file was written by James Bonfield, Simon Dear, Rodger Staden, * as part of the Staden Package at the MRC Laboratory of Molecular * Biology, Hills Road, Cambridge, CB2 2QH, United Kingdom. * * MRC disclaims all warranties with regard to this software. */ #ifndef _fpoint_h #define _fpoint_h #ifdef __cplusplus extern "C" { #endif extern float int_to_float(int in); #ifdef __cplusplus } #endif #endif /* _fpoint_h */ io_lib-1.14.6/io_lib/seqIOABI.h0000644000031500020650000002040512354177666012741 00000000000000/* * Copyright (c) 2003, 2005, 2007 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * Author(s): Simon Dear, LaDeana Hillier, James Bonfield * * Copyright (c) 1990-1995, 1998 MEDICAL RESEARCH COUNCIL * All rights reserved * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1 Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2 Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3 Neither the name of the MEDICAL RESEARCH COUNCIL, THE LABORATORY OF * MOLECULAR BIOLOGY nor the names of its contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * Copyright (c) Medical Research Council 1994. All rights reserved. * * Permission to use, copy, modify and distribute this software and its * documentation for any purpose is hereby granted without fee, provided that * this copyright and notice appears in all copies. * * This file was written by James Bonfield, Simon Dear, Rodger Staden, * as part of the Staden Package at the MRC Laboratory of Molecular * Biology, Hills Road, Cambridge, CB2 2QH, United Kingdom. * * MRC disclaims all warranties with regard to this software. */ #ifndef _seqIOABI_h_ #define _seqIOABI_h_ #include /* off_t */ #include "io_lib/os.h" #ifdef __cplusplus extern "C" { #endif /* * The ABI magic number - "ABIF" */ #define ABI_MAGIC ((int_4) ((((('A'<<8)+'B')<<8)+'I')<<8)+'F') /* * The index is located towards the end of the ABI trace file. * It's location is given by a longword at a fixed place. */ #define IndexPO ((off_t)26) #define IndexEntryLength 28 /* * Here are some labels we will be looking for, four chars packed * into an int_4 */ #define LABEL(a) ((int_4) ((((((a)[0]<<8)+(a)[1])<<8)+(a)[2])<<8)+(a)[3]) #define DataEntryLabel LABEL("DATA") #define BaseEntryLabel LABEL("PBAS") #define BasePosEntryLabel LABEL("PLOC") #define SpacingEntryLabel LABEL("SPAC") #define SignalEntryLabel LABEL("S/N%") #define FWO_Label LABEL("FWO_") #define MCHNLabel LABEL("MCHN") #define PDMFLabel LABEL("PDMF") #define SMPLLabel LABEL("SMPL") #define PPOSLabel LABEL("PPOS") #define CMNTLabel LABEL("CMNT") #define GelNameLabel LABEL("GELN") #define LANELabel LABEL("LANE") #define RUNDLabel LABEL("RUND") #define RUNTLabel LABEL("RUNT") #define MTXFLabel LABEL("MTXF") #define SPACLabel LABEL("SPAC") #define SVERLabel LABEL("SVER") #define MODLLabel LABEL("MODL") #define BaseConfLabel LABEL("PCON") /* * From the ABI results file connected to `fp' whose index starts * at byte offset `indexO', return in `val' the `lw'th long word * from the `count'th entry labelled `label'. * The result is 0 for failure, or index offset for success. */ int getABIIndexEntryLW(FILE *fp, off_t indexO, uint_4 label, uint_4 count, int lw, uint_4 *val); /* * From the ABI results file connected to `fp' whose index starts * at byte offset `indexO', return in `val' the `sw'th short word * from the `count'th entry labelled `label'. * The result is 0 for failure, or index offset for success. */ int getABIIndexEntrySW(FILE *fp, off_t indexO, uint_4 label, uint_4 count, int sw, uint_2 *val); /* * Gets the offset of the ABI index. * Returns -1 for failure, 0 for success. */ int getABIIndexOffset(FILE *fp, uint_4 *indexO); /* * Get an "ABI String". These strings are either pointed to by the index * offset, or held in the offset itself when the string is <= 4 characters. * The first byte of the string determines its length. * 'string' is a buffer 256 characters long. * * Returns -1 for failure, string length for success. */ int getABIString(FILE *fp, off_t indexO, uint_4 label, uint_4 count, char *string); /* * Get an "ABI Int_1". This is raw 1-byte integer data pointed to by the * offset, or held in the offset itself when the data is <= 4 characters. * * If indexO is 0 then we do not search for (or indeed use) label and count, * but simply assume that we are already at the correct offset and read from * here. (NB: This negates the length <= 4 check.) * * Returns -1 for failure, length desired for success (it'll only fill out * up to max_data_len elements, but it gives an indication of whether there * was more to come). */ int getABIint1(FILE *fp, off_t indexO, uint_4 label, uint_4 count, uint_1 *data, int max_data_len); /* * Get an "ABI Int_2". This is raw 2-byte integer data pointed to by the * offset, or held in the offset itself when the data is <= 4 characters. * * Returns -1 for failure, length desired for success (it'll only fill out * up to max_data_len elements, but it gives an indication of whether there * was more to come). */ int getABIint2(FILE *fp, off_t indexO, uint_4 label, uint_4 count, uint_2 *data, int max_data_len); /* * Get an "ABI Int_4". This is raw 4-byte integer data pointed to by the * offset, or held in the offset itself when the data is <= 4 characters. * * Returns -1 for failure, length desired for success (it'll only fill out * up to max_data_len elements, but it gives an indication of whether there * was more to come). */ int getABIint4(FILE *fp, off_t indexO, uint_4 label, uint_4 count, uint_4 *data, int max_data_len); int dump_labels(FILE *fp, off_t indexO); /* * Change the DATA counts for fetching traces */ void abi_set_data_counts(int f, int w, int o, int _); /* * Put the DATA counts back to their defaults. */ void abi_reset_data_counts(void); #ifdef __cplusplus } #endif #endif /* _seqIOABI_h_ */ io_lib-1.14.6/io_lib/alf.h0000644000031500020650000000466012354177666012154 00000000000000/* * Copyright (c) 1994 MEDICAL RESEARCH COUNCIL * All rights reserved * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1 Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2 Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3 Neither the name of the MEDICAL RESEARCH COUNCIL, THE LABORATORY OF * MOLECULAR BIOLOGY nor the names of its contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * Copyright (c) Medical Research Council 1994. All rights reserved. * * Permission to use, copy, modify and distribute this software and its * documentation for any purpose is hereby granted without fee, provided that * this copyright and notice appears in all copies. * * This file was written by James Bonfield, Simon Dear, Rodger Staden, * as part of the Staden Package at the MRC Laboratory of Molecular * Biology, Hills Road, Cambridge, CB2 2QH, United Kingdom. * * MRC disclaims all warranties with regard to this software. */ #ifndef _seqIOALF_h #define _seqIOALF_h /* * Title: seqIOALF * * File: seqIOALF.h * Purpose: IO of ABI sequences * Last update: Fri 9th September 1994 */ /* ---- Imports ---- */ #include "io_lib/Read.h" #endif /*_seqIOALF_h*/ io_lib-1.14.6/io_lib/expFileIO.h0000644000031500020650000002462612354177666013242 00000000000000/* * Copyright (c) 2004-2005, 2007 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * Author(s): Simon Dear, James Bonfield, Rodger Staden * * Copyright (c) 1994-1998, 2001-2002 MEDICAL RESEARCH COUNCIL * All rights reserved * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1 Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2 Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3 Neither the name of the MEDICAL RESEARCH COUNCIL, THE LABORATORY OF * MOLECULAR BIOLOGY nor the names of its contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * Copyright (c) Medical Research Council 1994. All rights reserved. * * Permission to use, copy, modify and distribute this software and its * documentation for any purpose is hereby granted without fee, provided that * this copyright and notice appears in all copies. * * This file was written by James Bonfield, Simon Dear, Rodger Staden, * as part of the Staden Package at the MRC Laboratory of Molecular * Biology, Hills Road, Cambridge, CB2 2QH, United Kingdom. * * MRC disclaims all warranties with regard to this software. */ /* * File: expFileIO.h * Version: * * Description: * * Created: * Updated: * */ #ifndef _EXPFILEIO_H_ #define _EXPFILEIO_H_ #include #include "io_lib/mFILE.h" #include "io_lib/array.h" #include "io_lib/os.h" #ifdef __cplusplus extern "C" { #endif /* * Definitions */ #define MAXIMUM_EFLT_LENGTH 4 #define MAXIMUM_EFLTS 60 #define EFLT_FILE_LINE_LENGTH 128 #define EXP_FILE_LINE_LENGTH 128 typedef Array Exp_entries; typedef struct { Array entries[MAXIMUM_EFLTS]; /* array of array of entries */ int Nentries[MAXIMUM_EFLTS]; mFILE *fp; } Exp_info; #define NULL_Exp_info ( (Exp_info *) NULL ) #define exp_Nentries(E,I) ((E)->Nentries[I]) /* get last entry for line I */ #define exp_get_entry(E,I) (arr(char *,(E)->entries[I],(E)->Nentries[I] - 1)) /* get last entry for line I */ /* * Allocate an set a new experiment file entry */ extern char *exp_set_entry(Exp_info *e, int eflt, char *str); /************************************************************* * Experiment file line types *************************************************************/ extern char eflt_feature_ids[MAXIMUM_EFLTS][MAXIMUM_EFLT_LENGTH+1]; #define EFLT_CF 0 #define EFLT_CN 1 #define EFLT_CS 2 #define EFLT_CV 3 #define EFLT_DR 4 #define EFLT_DT 5 #define EFLT_EN 6 #define EFLT_EX 7 #define EFLT_FM 8 #define EFLT_LN 9 #define EFLT_LT 10 #define EFLT_MC 11 #define EFLT_MN 12 #define EFLT_MT 13 #define EFLT_OP 14 #define EFLT_PN 15 #define EFLT_QR 16 #define EFLT_SC 17 #define EFLT_SF 18 #define EFLT_SI 19 #define EFLT_SL 20 #define EFLT_SP 21 #define EFLT_SQ 22 #define EFLT_SR 23 #define EFLT_ST 24 #define EFLT_SV 25 #define EFLT_TN 26 #define EFLT_QL 27 #define EFLT_PS 28 #define EFLT_CC 29 #define EFLT_SS 30 #define EFLT_TG 31 #define EFLT_ID 32 #define EFLT_AQ 33 #define EFLT_PR 34 #define EFLT_LI 35 #define EFLT_LE 36 #define EFLT_TC 37 #define EFLT_AC 38 #define EFLT_BC 39 #define EFLT_ON 40 #define EFLT_AV 41 #define EFLT_PC 42 #define EFLT_SE 43 #define EFLT_CL 44 #define EFLT_CR 45 #define EFLT_AP 46 #define EFLT_CH 47 #define EFLT_PD 48 #define EFLT_WT 49 #define EFLT_NT 50 #define EFLT_GD 51 #define EFLT_WL 52 #define EFLT_WR 53 #define EFLT_FT 54 #define EFLT_LG 55 /*************************************************************************************/ /* * Creates a string of 'range format' from the start and end points. * The string (of form start..end) is also returned. */ extern char *exp_create_range(char *str, int start, int end); /* * Extracts the start and end points from a range string. * Returns 0 for success and -1 for failure. */ extern int exp_extract_range(char *str, int *start, int *end); /* * Output an experiment file line */ extern int exp_print_line(mFILE *fp, Exp_info *e, int eflt, int i); /* * Output an experiment file multi-line */ extern int exp_print_mline(mFILE *fp, Exp_info *e, int eflt, int i); extern int exp_print_seq(mFILE *fp, Exp_info *e, int eflt, int i); /* * Output an experiment file multi line */ extern int exp_get_feature_index(char *e); extern void exp_destroy_info(Exp_info *e); /* * Destroy experiment file information */ extern Exp_info *exp_create_info(void); /* * Allocate space for new experiment file information */ extern Exp_info *exp_fread_info(FILE *fp); extern Exp_info *exp_mfread_info(mFILE *fp); extern Exp_info *exp_read_info(char *file); /* * Read in an experiment file and return handle */ char *opos2str(int2 *opos, int len, char *buf); int str2opos(int2 *opos, int len, char *buf); char *conf2str(int1 *conf, int len, char *buf); int str2conf(int1 *conf, int len, char *buf); extern int exp_get_int(Exp_info *e, int id, int *val); /* * Get the integer for entry id * returns: * 0 - success * 1 - no entry */ extern int exp_get_rng(Exp_info *e, int id, int *from, int *to); /* * Get the integer pair for entry id * returns: * 0 - success * 1 - no entry */ extern int exp_get_str(Exp_info *e, int id, char *s, f_implicit s_l); /* * Get the string for entry id * returns: * 0 - success * 1 - no entry */ extern int exp_put_int(Exp_info *e, int id, int *val); /* * Append the integer for entry id to the experiment file * returns: * 0 - success * 1 - no update */ extern int exp_put_rng(Exp_info *e, int id, int *from, int *to); /* * Append the integer pair for entry id to the experiment file * returns: * 0 - success * 1 - no update */ extern int exp_put_str(Exp_info *e, int id, char *s, f_implicit s_l); /* * Append the string for entry id to the experiment file * returns: * 0 - success * 1 - no update */ extern void exp_close(Exp_info *e); /* * Closes an experiment file (if open), but does not free it. */ /* * FORTRAN INTERFACE */ extern f_int expopn_(char *fn, f_implicit fn_l); /* * FORTRAN interface to exp_open_file() */ extern f_proc_ret expkil_(f_int *le); /* * FORTRAN interface to exp_destroy_info */ extern f_int expri_(f_int *le, f_int *id, f_int *val); /* * FORTRAN interface to exp_get_int */ extern f_int exprr_(f_int *le, f_int *id, f_int *from, f_int *to); /* * FORTRAN interface to exp_get_rng */ extern f_int exprsa_(f_int *le, f_int *id, char *s, f_int *max_len, f_implicit s_l); /* * FORTRAN interface to exp_get_str workalike * NOTE: for use with FORTRAN CHARACTER arrays instead CHARACTER strings */ extern f_int exprs_(f_int *le, f_int *id, char *s, f_implicit s_l); /* * FORTRAN interface to exp_get_str workalike * NOTE: for use with FORTRAN CHARACTER strings instead CHARACTER arrays */ extern f_int expwi_(f_int *le, f_int *id, f_int *val); /* * FORTRAN interface to exp_put_int */ extern f_int expwr_(f_int *le, f_int *id, f_int *from, f_int *to); /* * FORTRAN interface to exp_put_rng */ extern f_int expwsa_(f_int *le, f_int *id, char *s, f_int *max_len, f_implicit s_l); /* * FORTRAN interface to exp_put_str workalike * NOTE: for use with FORTRAN CHARACTER arrays instead CHARACTER strings */ extern f_int expws_(f_int *le, f_int *id, char *s, f_implicit s_l); /* * FORTRAN interface to exp_put_str workalike * NOTE: for use with FORTRAN CHARACTER strings instead CHARACTER arrays */ extern void exp_print_file(FILE *fp, Exp_info *e); extern void exp_print_mfile(mFILE *fp, Exp_info *e); /* * FORTRAN interface to exp_create_range() */ extern void expcr_(char *str, f_int *start, f_int *end, f_implicit str_l); /* * FORTRAN interface to exp_extract_range() */ extern f_int exper_(char *str, f_int *start, f_int *end, f_implicit str_l); #ifdef __cplusplus } #endif #endif /* _EXPFILEIO_H_ */ io_lib-1.14.6/io_lib/plain.h0000644000031500020650000001017012354177666012506 00000000000000/* * Copyright (c) 2005, 2007 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * Author(s): Simon Dear, James Bonfield * * Copyright (c) 1994, 2001 MEDICAL RESEARCH COUNCIL * All rights reserved * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1 Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2 Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3 Neither the name of the MEDICAL RESEARCH COUNCIL, THE LABORATORY OF * MOLECULAR BIOLOGY nor the names of its contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * Copyright (c) Medical Research Council 1994. All rights reserved. * * Permission to use, copy, modify and distribute this software and its * documentation for any purpose is hereby granted without fee, provided that * this copyright and notice appears in all copies. * * This file was written by James Bonfield, Simon Dear, Rodger Staden, * as part of the Staden Package at the MRC Laboratory of Molecular * Biology, Hills Road, Cambridge, CB2 2QH, United Kingdom. * * MRC disclaims all warranties with regard to this software. */ #ifndef _seqIOPlain_h #define _seqIOPlain_h /* * Title: seqIOPlain * * File: seqIOPlain.h * Purpose: IO of plain sequences * Last update: Fri 9th September 1994 */ /* ---- Imports ---- */ #include "io_lib/Read.h" #endif /*_seqIOPlain_h*/ io_lib-1.14.6/io_lib/scf.h0000644000031500020650000003311512354177666012162 00000000000000/* * Copyright (c) 2005-2007, 2013 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * Author(s): Simon Dear, James Bonfield * * Copyright (c) 1992, 1995, 1998 MEDICAL RESEARCH COUNCIL * All rights reserved * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1 Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2 Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3 Neither the name of the MEDICAL RESEARCH COUNCIL, THE LABORATORY OF * MOLECULAR BIOLOGY nor the names of its contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * Copyright (c) Medical Research Council 1994. All rights reserved. * * Permission to use, copy, modify and distribute this software and its * documentation for any purpose is hereby granted without fee, provided that * this copyright and notice appears in all copies. * * This file was written by James Bonfield, Simon Dear, Rodger Staden, * as part of the Staden Package at the MRC Laboratory of Molecular * Biology, Hills Road, Cambridge, CB2 2QH, United Kingdom. * * MRC disclaims all warranties with regard to this software. */ /* * File: scf.h * Version: 3.00 * * Description: file structure definitions for SCF file * * Created: 19 November 1992 * */ #ifndef _SCF_H_ #define _SCF_H_ #include #include #include "io_lib/mFILE.h" #include "io_lib/os.h" #ifdef __cplusplus extern "C" { #endif /* *----------------------------------------------------------------------------- * Macros *----------------------------------------------------------------------------- */ /* The SCF magic number */ #define SCF_MAGIC (((((((uint_4)'.'<<8)+(uint_4)'s')<<8)+(uint_4)'c')<<8)+(uint_4)'f') /* prior to this was a different format */ #define SCF_VERSION_OLDEST 2.00 #define SCF_VERSION_OLD 2.02 /* The current SCF format level */ #define SCF_VERSION 3.00 /* Uncertainty code sets supported */ #define CSET_DEFAULT 0 /* {A,C,G,T,-} */ #define CSET_STADEN 1 #define CSET_NC_IUB 2 /* Pharmacia A.L.F. */ #define CSET_ALF 3 /* extended NC_IUB */ #define CSET_ABI 4 /* {A,C,G,T,N} */ #define CSET_IBI 5 /* IBI/Pustell */ #define CSET_DNASTAR 6 /* DNA* */ #define CSET_DNASIS 7 #define CSET_PCGENE 8 /* IG/PC-Gene */ #define CSET_GENIE 9 /* MicroGenie */ /* define samples to delta_delta values */ #define DELTA_IT 1 /* What components to read */ #define READ_BASES (1<<0) #define READ_SAMPLES (1<<1) #define READ_COMMENTS (1<<2) #define READ_ALL (READ_BASES | READ_SAMPLES | READ_COMMENTS) /* *----------------------------------------------------------------------------- * Structures and typedefs *----------------------------------------------------------------------------- */ /* * Type definition for the Header structure */ typedef struct { uint_4 magic_number; /* SCF_MAGIC */ uint_4 samples; /* Number of elements in Samples matrix */ uint_4 samples_offset; /* Byte offset from start of file */ uint_4 bases; /* Number of bases in Bases matrix */ uint_4 bases_left_clip; /* OBSOLETE: No. bases in left clip (vector) */ uint_4 bases_right_clip; /* OBSOLETE: No. bases in right clip (qual) */ uint_4 bases_offset; /* Byte offset from start of file */ uint_4 comments_size; /* Number of bytes in Comment section */ uint_4 comments_offset; /* Byte offset from start of file */ char version[4]; /* "version.revision" */ uint_4 sample_size; /* precision of samples (in bytes) */ uint_4 code_set; /* uncertainty codes used */ uint_4 private_size; /* size of private data, 0 if none */ uint_4 private_offset; /* Byte offset from start of file */ uint_4 spare[18]; /* Unused */ } Header; /* * Header.sample_size == 1. */ typedef struct { uint_1 sample_A; /* Sample for A trace */ uint_1 sample_C; /* Sample for C trace */ uint_1 sample_G; /* Sample for G trace */ uint_1 sample_T; /* Sample for T trace */ } Samples1; /* * Header.sample_size == 2. */ typedef struct { uint_2 sample_A; /* Sample for A trace */ uint_2 sample_C; /* Sample for C trace */ uint_2 sample_G; /* Sample for G trace */ uint_2 sample_T; /* Sample for T trace */ } Samples2; /* * Type definition for the sequence data */ typedef struct { uint_4 peak_index; /* Index into Samples matrix for base position */ uint_1 prob_A; /* Probability of it being an A */ uint_1 prob_C; /* Probability of it being an C */ uint_1 prob_G; /* Probability of it being an G */ uint_1 prob_T; /* Probability of it being an T */ char base; /* Base called */ uint_1 spare[3]; /* Spare */ } Bases; /* * Type definition for the comments */ typedef char Comments; /* Zero terminated list of \n separated entries */ /* * All of the above structs in a single scf format. */ typedef struct { Header header; union Samples { Samples1 *samples1; Samples2 *samples2; } samples; Bases *bases; Comments *comments; char *private_data; } Scf; /* *----------------------------------------------------------------------------- * Function prototypes *----------------------------------------------------------------------------- */ /* * Reading SCF Files * ----------------- */ /* * Read the Header struct. * Returns: * 0 - success * -1 - failure */ int read_scf_header(mFILE *fp, Header *h); /* * Read a single 8bit sample * Returns: * 0 - success * -1 - failure */ int read_scf_sample1(mFILE *fp, Samples1 *s); /* * Read several 8bit samples * Returns: * 0 - success * -1 - failure */ int read_scf_samples1(mFILE *fp, Samples1 *s, size_t num_samples); /* * Read several 8bit samples in delta_delta format * Returns: * 0 - success * -1 - failure */ int read_scf_samples31(mFILE *fp, Samples1 *s, size_t num_samples); /* * Read a single 16bit sample * Returns: * 0 - success * -1 - failure */ int read_scf_sample2(mFILE *fp, Samples2 *s); /* * Read several 16bit samples * Returns: * 0 - success * -1 - failure */ int read_scf_samples2(mFILE *fp, Samples2 *s, size_t num_samples); /* * Read several 16bit samples in delta_delta format * Returns: * 0 - success * -1 - failure */ int read_scf_samples32(mFILE *fp, Samples2 *s, size_t num_samples); /* * Read a single Bases structure * Returns: * 0 - success * -1 - failure */ int read_scf_base(mFILE *fp, Bases *b); /* * Read several Bases structures consecutively * Returns: * 0 - success * -1 - failure */ int read_scf_bases(mFILE *fp, Bases *b, size_t num_bases); /* * Read Bases, peak_indexes and probs * Returns: * 0 - success * -1 - failure */ int read_scf_bases3(mFILE *fp, Bases *b, size_t num_bases); /* * Read the SCF Comments. * Returns: * 0 - success * -1 - failure */ int read_scf_comment(mFILE *fp, Comments *c, size_t l); /* * Reads a whole SCF file into a Scf structure. This memory for this * structure is allocated by this routine. To free this memory use * scf_deallocate(). * Returns: * Scf * - Success, the Scf structure read. * NULL - Failure. * On failure NULL is returned, otherwise the Scf struct. */ Scf *read_scf(char *fn); Scf *fread_scf(FILE *fp); Scf *mfread_scf(mFILE *fp); /* * Writing SCF Files * ----------------- */ /* * Write the Header struct. * Returns: * 0 - success * -1 - failure */ int write_scf_header(mFILE *fp, Header *h); /* * Write a single 8bit sample * Returns: * 0 - success * -1 - failure */ int write_scf_sample1(mFILE *fp, Samples1 *s); /* * Write several 8bit samples * Returns: * 0 - success * -1 - failure */ int write_scf_samples1(mFILE *fp, Samples1 *s, size_t num_samples); /* * Write several 8bit samples in delta_delta format * Returns: * 0 - success * -1 - failure */ int write_scf_samples31(mFILE *fp, Samples1 *s, size_t num_samples); /* * Write 16bit samples * Returns: * 0 - success * -1 - failure */ int write_scf_sample2(mFILE *fp, Samples2 *s); /* * Write several 16bit samples * Returns: * 0 - success * -1 - failure */ int write_scf_samples2(mFILE *fp, Samples2 *s, size_t num_samples); /* * Write several 16bit samples in delta_delta format * Returns: * 0 - success * -1 - failure */ int write_scf_samples32(mFILE *fp, Samples2 *s, size_t num_samples); /* * Write the Bases structure * Returns: * 0 - success * -1 - failure */ int write_scf_base(mFILE *fp, Bases *b); /* * Write the several Bases structures consecutively * Returns: * 0 - success * -1 - failure */ int write_scf_bases(mFILE *fp, Bases *b, size_t num_bases); /* * Write the bases, then peak indexes, then probs * Returns: * 0 - success * -1 - failure */ int write_scf_bases3(mFILE *fp, Bases *b, size_t num_bases); /* * Write the SCF Comments. * Returns: * 0 - success * -1 - failure */ int write_scf_comment(mFILE *fp, Comments *c, size_t l); /* * Writes a whole Scf structure to filename "fn". * This initialises several fields in the Header struct for you. These are: * samples_offset * bases_offset * comments_offset * magic_number * * All other fields are assumed to be correctly set. * * Returns: * 0 for success * -1 for failure */ int write_scf(Scf *scf, char *fn); int fwrite_scf(Scf *scf, FILE *fp); int mfwrite_scf(Scf *scf, mFILE *fp); /* * Request which (major) version of scf to use when writing. * Defaults to the latest. Currently suitable fields are * 2 and 3. * * Returns 0 for success, -1 for failure. */ int set_scf_version(int version); /* * Miscellaneous SCF utilities * --------------------------- */ /* * Converts an SCF version string (eg "2.00") to a float */ float scf_version_str2float(char version[]); /* * Converts an SCF version float (eg 2.00) to a string * Returns: * A statically allocated 5 character string. */ char *scf_version_float2str(float f); /* * Allocates memory for the scf elements based upon arguments passed. * Returns; * Scf * - Success. The scf structure and it's samples, bases, * and comments fields have been allocated. * NULL - Failure. */ Scf *scf_allocate(int num_samples, int sample_size, int num_bases, int comment_size, int private_size); /* * Frees memory allocated by scf_allocate. */ void scf_deallocate(Scf *scf); /* * Checks to see if the file with name "fn" is in SCF format. * Returns: * 1 - is in SCF format * 0 - is not in SCF format * -1 - failure */ int is_scf(char *fn); /* * Change sample points to delta_delta values for uint1 */ void scf_delta_samples1 ( int1 samples[], int num_samples, int job); /* * Change sample points to delta_delta values for uint2 */ void scf_delta_samples2 ( uint2 samples[], int num_samples, int job); #ifdef __cplusplus } #endif #endif /*_SCF_H_*/ io_lib-1.14.6/io_lib/sff.h0000644000031500020650000000732112354177666012165 00000000000000/* * Copyright (c) 2005, 2007 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef _SFF_H_ #define _SFF_H_ #include "io_lib/Read.h" #include "io_lib/os.h" #include "io_lib/mFILE.h" #ifdef __cplusplus extern "C" { #endif /* * This mirrors the order that the SFF header has on disc. We have one of * these only. * * The flow and key are variable length fields as defined by flow_len * and key_len. * The on-disc structure is then also padded out with zeros to the 8-byte * word boundary. */ typedef struct { uint32_t magic; char version[4]; uint64_t index_offset; uint32_t index_len; uint32_t nreads; uint16_t header_len; uint16_t key_len; uint16_t flow_len; uint8_t flowgram_format; char *flow; char *key; } sff_common_header; #define SFF_MAGIC 0x2e736666 /* ".sff" */ #define SFF_VERSION "\0\0\0\1" /* * We have one read_header per "reading" in the SFF archive. * It too is padded to an 8-byte boundary. */ typedef struct { uint16_t header_len; uint16_t name_len; uint32_t nbases; uint16_t clip_qual_left; uint16_t clip_qual_right; uint16_t clip_adapter_left; uint16_t clip_adapter_right; char *name; } sff_read_header; /* * We have one read_data section per reading, following the read_header. * It is padded to an 8-byte boundary. */ typedef struct { uint16_t *flowgram; /* x 100.0 */ uint8_t *flow_index; /* relative to last */ char *bases; uint8_t *quality; } sff_read_data; /* * Low level functions to decode SFF internals */ sff_common_header *decode_sff_common_header(unsigned char *buf); sff_common_header *read_sff_common_header(mFILE *mf); void free_sff_common_header(sff_common_header *h); sff_read_header *decode_sff_read_header(unsigned char *buf); void free_sff_read_header(sff_read_header *h); sff_read_header *read_sff_read_header(mFILE *mf); void free_sff_read_data(sff_read_data *d); sff_read_data *read_sff_read_data(mFILE *mf, int nflows, int nbases); /* * Loads the first SFF sequence from an SFF container and returns as a Read. */ Read *mfread_sff(mFILE *mf); #ifdef __cplusplus } #endif #endif /* _SFF_H_ */ io_lib-1.14.6/io_lib/array.h0000644000031500020650000000672012354177666012527 00000000000000/* * Copyright (c) 1994 MEDICAL RESEARCH COUNCIL * All rights reserved * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1 Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2 Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3 Neither the name of the MEDICAL RESEARCH COUNCIL, THE LABORATORY OF * MOLECULAR BIOLOGY nor the names of its contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * Copyright (c) Medical Research Council 1994. All rights reserved. * * Permission to use, copy, modify and distribute this software and its * documentation for any purpose is hereby granted without fee, provided that * this copyright and notice appears in all copies. * * This file was written by James Bonfield, Simon Dear, Rodger Staden, * as part of the Staden Package at the MRC Laboratory of Molecular * Biology, Hills Road, Cambridge, CB2 2QH, United Kingdom. * * MRC disclaims all warranties with regard to this software. */ /* * File: array.h * Version: * * Description: * * Created: * Updated: * */ #ifndef _ARRAY_H_ #define _ARRAY_H_ /* 12/1/99 johnt - use stddef.h not sys/types.h for size_t */ #include /* IMPORT: size_t */ #ifdef __cplusplus extern "C" { #endif typedef struct { size_t size; /* element size */ size_t dim; /* allocated number of elements */ size_t max; /* elements accessed */ void *base; /* base address of array */ } ArrayStruct, *Array; extern Array ArrayCreate(size_t size, size_t dim); extern int ArrayExtend(Array a, size_t dim); extern void *ArrayRef(Array a, size_t i); extern int ArrayDestroy(Array a); #define ArrayMax(a) ( (a)->max ) #define ArrayBase(t,a) ( (t *)((a)->base) ) /* #define arr(t,a,n) \ (*(t*)((a)->base + (a)->size*(n))) #define arrp(t,a,n) \ ((t*)((a)->base + (a)->size*(n))) */ #define arr(t,a,n) \ ((t*)((a)->base))[n] #define ARR(t,a,n) \ (*((t*)ArrayRef((a),(n)))) #define arrp(t,a,n) \ &((t*)((a)->base))[n] #define ARRP(t,a,n) \ ((t*)ArrayRef(a,n)) #define ARRAY_NO_ERROR 0 #define ARRAY_FULL -1 #define ARRAY_INVALID_ARGUMENTS -2 #define ARRAY_OUT_OF_MEMORY -3 extern int ArrayError; extern char *ArrayErrorString(int error); #ifdef __cplusplus } #endif #endif /*_ARRAY_H_*/ io_lib-1.14.6/io_lib/compress.h0000644000031500020650000001417412354177666013246 00000000000000/* * Copyright (c) 2005, 2007-2009 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * Author(s): James Bonfield * * Copyright (c) 1997 MEDICAL RESEARCH COUNCIL * All rights reserved * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1 Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2 Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3 Neither the name of the MEDICAL RESEARCH COUNCIL, THE LABORATORY OF * MOLECULAR BIOLOGY nor the names of its contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * Copyright (c) Medical Research Council 1994. All rights reserved. * * Permission to use, copy, modify and distribute this software and its * documentation for any purpose is hereby granted without fee, provided that * this copyright and notice appears in all copies. * * This file was written by James Bonfield, Simon Dear, Rodger Staden, * as part of the Staden Package at the MRC Laboratory of Molecular * Biology, Hills Road, Cambridge, CB2 2QH, United Kingdom. * * MRC disclaims all warranties with regard to this software. */ #ifndef _COMPRESS_H #define _COMPRESS_H #include #include "io_lib/mFILE.h" #ifdef __cplusplus extern "C" { #endif /* * Compress a file using the method set in the compression_used value * (set by set_compression_method and fopen_compressed). * * If compression succeeds, we rename the file back its original name. * * When compression_used is 0 no compression is done. */ int compress_file(char *file); int fcompress_file(mFILE *fp); /* * Returns a file pointer of an uncompressed copy of 'file'. * 'file' need not exist if 'file'.ext (eg file.gz) * exists and can be uncompressed. * * If ofp is non NULL then the original file pointer will also be returned * (opened for update) to allow writing back to the original file. In cases * of uncompressed data this is the same as the returned file pointer. */ mFILE *fopen_compressed(char *file, mFILE **ofp); /* * Returns a file pointer of an uncompressed copy of 'fp'. * * If ofp is non NULL then the original file pointer will also be returned * (opened for update) to allow writing back to the original file. In cases * of uncompressed data this is the same as the returned file pointer. */ mFILE *freopen_compressed(mFILE *fp, mFILE **ofp); /* * Sets the desired compression method. The below macros relate to entries * in the compression magic numbers table. */ void set_compression_method(int method); int get_compression_method(void); /* * Converts compress mode strings (eg "gzip") to numbers. */ int compress_str2int(char *mode); /* * Converts compress mode numbers to strings (eg "gzip"). */ char *compress_int2str(int mode); #define COMP_METHOD_NONE 0 #define COMP_METHOD_BZIP 1 #define COMP_METHOD_GZIP 2 #define COMP_METHOD_COMPRESS 3 #define COMP_METHOD_BZIP2 5 #define COMP_METHOD_SZIP 6 /* * In memory gzip and gunzip using zlib. In each case data is the input * data (with 'size') and the returned value is the output data along with * [cu]data_size being the returned data size. * * Both return NULL on failure */ char *memgzip(char *data, size_t size, size_t *cdata_size); char *memgunzip(char *data, size_t size, size_t *udata_size); /* * Given a filename remove a known compression extension * * Returns: None */ void remove_extension(char *file); #ifdef __cplusplus } #endif #endif /* _COMPRESS_H */ io_lib-1.14.6/io_lib/error.h0000644000031500020650000000457612354177666012551 00000000000000/* * Copyright (c) 1994 MEDICAL RESEARCH COUNCIL * All rights reserved * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1 Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2 Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3 Neither the name of the MEDICAL RESEARCH COUNCIL, THE LABORATORY OF * MOLECULAR BIOLOGY nor the names of its contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * Copyright (c) Medical Research Council 1994. All rights reserved. * * Permission to use, copy, modify and distribute this software and its * documentation for any purpose is hereby granted without fee, provided that * this copyright and notice appears in all copies. * * This file was written by James Bonfield, Simon Dear, Rodger Staden, * as part of the Staden Package at the MRC Laboratory of Molecular * Biology, Hills Road, Cambridge, CB2 2QH, United Kingdom. * * MRC disclaims all warranties with regard to this software. */ #ifndef _ERROR_H_ #define _ERROR_H_ #ifdef __cplusplus extern "C" { #endif extern void error(char *fmt, ...); extern void errout(char *fmt, ...); #ifdef __cplusplus } #endif #endif /*_GAP_ERROR_H_*/ io_lib-1.14.6/io_lib/mach-io.h0000644000031500020650000001447312354177666012732 00000000000000/* * Copyright (c) 2005, 2007 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * Author(s): James Bonfield * * Copyright (c) 1994-1995 MEDICAL RESEARCH COUNCIL * All rights reserved * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1 Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2 Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3 Neither the name of the MEDICAL RESEARCH COUNCIL, THE LABORATORY OF * MOLECULAR BIOLOGY nor the names of its contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * Copyright (c) Medical Research Council 1994. All rights reserved. * * Permission to use, copy, modify and distribute this software and its * documentation for any purpose is hereby granted without fee, provided that * this copyright and notice appears in all copies. * * This file was written by James Bonfield, Simon Dear, Rodger Staden, * as part of the Staden Package at the MRC Laboratory of Molecular * Biology, Hills Road, Cambridge, CB2 2QH, United Kingdom. * * MRC disclaims all warranties with regard to this software. */ #ifndef _mach_io_h #define _mach_io_h /* * Machine independant io * For reading and writing to big-endian and little-endian files * * Routines available: * be_write_int_1() * be_write_int_2() * be_write_int_4() * be_read_int_1() * be_read_int_2() * be_read_int_4() * le_write_int_1() * le_write_int_2() * le_write_int_4() * le_read_int_1() * le_read_int_2() * le_read_int_4() * * All routine return: * 0 - an error has occurred during io operation * 1 - value successfully read or written */ #include #include "io_lib/os.h" #include "io_lib/mFILE.h" #ifdef __cplusplus extern "C" { #endif /**********************************************************************/ /* IO for big-endian files */ /**********************************************************************/ /* * Write a big-endian int1 */ extern int be_write_int_1(mFILE *fp, uint1 *i1); /* * Write a big-endian int2 */ extern int be_write_int_2(mFILE *fp, uint2 *i2); /* * Write a big-endian int4 */ extern int be_write_int_4(mFILE *fp, uint4 *i4); /* * Write a big-endian int8 */ extern int be_write_int_8(mFILE *fp, uint8 *i8); /* * Read a big-endian int1 */ extern int be_read_int_1(mFILE *fp, uint1 *i1); /* * Read a big-endian int2 */ extern int be_read_int_2(mFILE *fp, uint2 *i2); /* * Read a big-endian int4 */ extern int be_read_int_4(mFILE *fp, uint4 *i4); /* * Read a big-endian int8 */ extern int be_read_int_8(mFILE *fp, uint8 *i8); /**********************************************************************/ /* IO for little-endian files */ /**********************************************************************/ /* * Write a little-endian int1 */ extern int le_write_int_1(mFILE *fp, uint1 *i1); /* * Write a little-endian int2 */ extern int le_write_int_2(mFILE *fp, uint2 *i2); /* * Write a little-endian int4 */ extern int le_write_int_4(mFILE *fp, uint4 *i4); /* * Write a little-endian int8 */ extern int le_write_int_8(mFILE *fp, uint8 *i8); /* * Read a little-endian int1 */ extern int le_read_int_1(mFILE *fp, uint1 *i1); /* * Read a little-endian int2 */ extern int le_read_int_2(mFILE *fp, uint2 *i2); /* * Read a little-endian int4 */ extern int le_read_int_4(mFILE *fp, uint4 *i4); /* * Read a little-endian int8 */ extern int le_read_int_8(mFILE *fp, uint8 *i8); #ifdef __cplusplus } #endif #endif /* _mach_io_h */ io_lib-1.14.6/io_lib/misc.h0000644000031500020650000001547312545536330012336 00000000000000/* * Copyright (c) 2007, 2010, 2013 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * Copyright (c) 1994-1997, 2001-2002 MEDICAL RESEARCH COUNCIL * All rights reserved * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1 Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2 Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3 Neither the name of the MEDICAL RESEARCH COUNCIL, THE LABORATORY OF * MOLECULAR BIOLOGY nor the names of its contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ #ifndef _misc_h #define _misc_h #include "io_lib/os.h" #include #include /* varargs needed for v*printf() prototypes */ #include #ifdef __cplusplus extern "C" { #endif /* * This informs gcc that crash() doesn't return, so it doesn't need to * concern itself that code paths going via crash could mean some variables * being undefined and then issuing uninitialised variable warnings. * This particularly affected convert. */ #ifdef __GNUC__ # define __NORETURN__ __attribute__ ((__noreturn__)) #else # define __NORETURN__ #endif /* * Used for printf style argument checking. We can request a function such * as vTcl_SetResult does argument checking, avoiding bugs with using * %d and passing in a 64-bit record. */ #ifdef __GNUC__ # define __PRINTF_FORMAT__(a,b) __attribute__ ((format (printf, a, b))) #else # define __PRINTF_FORMAT__(a,b) #endif /* * Stop gcc from warning about unused variables. */ #ifdef __GNUC__ # define __UNUSED__ __attribute__ ((__unused__)) #else # define __UNUSED__ #endif extern int is_directory(char * fn); extern int is_file(char * fn); extern int file_exists(char * fn); extern int compressed_file_exists(char *fname); extern int file_size(char * fn); extern FILE *open_fofn(char *files); extern char *read_fofn(FILE *fp); extern void close_fofn(FILE *fp); extern int fstrlen(char *f, int max_f); extern void f2cstr(char *f, int max_f, char *c, int max_c); extern void c2fstr(char *c, int max_c, char *f, int max_f); extern char *mystrtok(char *s, char *ct); extern char *myfind(char *file, char* searchpath, int (*found) (char *) ); extern void crash (char* format,...); extern void str_tolower (char *s); extern void str_toupper (char *s); extern char *fn_tail (char *s); extern void fn_tolower (char *s); extern void fn_toupper (char *s); extern void shell_call(char *command, char *output, int len); extern char *date_str(void); #ifdef NOSTRDUP extern char *strdup(const char *s); #endif #ifdef NOSTRSTR extern char *strstr(char *cs, char *ct); #endif #ifdef NOMEMMOVE #define memmove(d,s,l) bcopy(s,d,l) #endif extern int myusleep(unsigned int useconds); extern void errout(char *fmt, ...); extern void messout(char *fmt, ...); /* * Useful macros */ #define findfile(F,S) myfind((F),(S),file_exists) /*is_file fails for symbolic links*/ /*#define findfile(F,S) myfind((F),(S),is_file)*/ #if defined(min) #undef min #undef max #endif #define min(A,B) ( ( (A) < (B) ) ? (A) : (B) ) #define max(A,B) ( ( (A) > (B) ) ? (A) : (B) ) #define sgn(A) ( (A) ? ( ( (A) < 0 ) ? -1 : 1 ) : 0 ) #ifdef MIN #undef MIN #endif #define MIN(A,B) ( ( (A) < (B) ) ? (A) : (B) ) #ifdef MAX #undef MAX #endif #define MAX(A,B) ( ( (A) > (B) ) ? (A) : (B) ) #define SGN(A) ( (A) ? ( ( (A) < 0 ) ? -1 : 1 ) : 0 ) #define ABS(A) ( (A) < 0 ? -(A) : (A) ) /* Number of elements in array */ #define Number(A) ( sizeof(A) / sizeof((A)[0]) ) /* * Things taken from the new gap text_output.h. They'll be used globally * across all the programs in the end. */ /* * Usage: verror(priority, format, args...); * NB: don't pass more than 8K per call */ #define ERR_WARN 0 #define ERR_FATAL 1 void verror(int priority, char *name, char *fmt, ...); /* * Usage: vmessage(format, args...); * NB: don't pass more than 8K per call */ void vmessage(char *fmt, ...); /* * Adds a new header to the text output window. */ void vfuncheader(char *fmt, ...); /* * As vfuncheader, but only outputting when necessary. */ void vfuncgroup(int group, char *fmt, ...); #ifdef __cplusplus } #endif #endif /*_misc_h*/ io_lib-1.14.6/io_lib/open_trace_file.h0000644000031500020650000001351512354177666014527 00000000000000/* * Copyright (c) 2005-2007, 2013 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * Author(s): James Bonfield * * Copyright (c) 2001 MEDICAL RESEARCH COUNCIL * All rights reserved * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1 Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2 Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3 Neither the name of the MEDICAL RESEARCH COUNCIL, THE LABORATORY OF * MOLECULAR BIOLOGY nor the names of its contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ #ifndef _OPEN_TRACE_FILE_H_ #define _OPEN_TRACE_FILE_H_ #include "io_lib/mFILE.h" #ifdef __cplusplus extern "C" { #endif /* * Tokenises the search path splitting on colons (unix) or semicolons * (windows). * We also explicitly add a "./" to the end of the search path * * Returns: A new search path with items separated by nul chars. Two nul * chars in a row represent the end of the tokenised path. * Returns NULL for a failure. * * The returned data has been malloced. It is up to the caller to free this * memory. */ char *tokenise_search_path(char *searchpath); /* * Opens a trace file named 'file'. This is initially looked for as a * pathname relative to a file named "relative_to". This may (for * example) be the name of an experiment file referencing the trace * file. In this case by passing relative_to as the experiment file * filename the trace file will be picked up in the same directory as * the experiment file. Relative_to may be supplied as NULL. * * 'file' is looked for at relative_to, then the current directory, and then * all of the locations listed in 'path' (which is a colon separated list). * If 'path' is NULL it uses the RAWDATA environment variable instead. * * Returns a mFILE pointer when found. * NULL otherwise. */ mFILE *open_path_mfile(char *file, char *path, char *relative_to); /* * Returns a mFILE containing the entire contents of the url; * NULL on failure. */ mFILE *find_file_url(char *file, char *url); /* * Opens a trace file named 'file'. This is initially looked for as a * pathname relative to a file named "relative_to". This may (for * example) be the name of an experiment file referencing the trace * file. In this case by passing relative_to as the experiment file * filename the trace file will be picked up in the same directory as * the experiment file. Relative_to may be supplied as NULL. * * 'file' is looked for at relative_to, then the current directory, and then * all of the locations listed in RAWDATA (which is a colon separated list). * * Returns a mFILE pointer when found. * NULL otherwise. */ mFILE *open_trace_mfile(char *file, char *relative_to); FILE *open_trace_file(char *file, char *relative_to); mFILE *open_exp_mfile(char *file, char *relative_to); FILE *open_exp_file(char *file, char *relative_to); void iolib_set_trace_path(char *path); char *iolib_get_trace_path(void); void iolib_set_exp_path (char *path); char *iolib_get_exp_path (void); #ifdef __cplusplus } #endif #endif /* _OPEN_TRACE_FILE_H_ */ io_lib-1.14.6/io_lib/tar_format.h0000644000031500020650000000626512354177666013553 00000000000000/* MRC local changes made by James Bonfield. Derived from tar.h: */ /*- * Copyright (c) 1992 Keith Muller. * Copyright (c) 1992, 1993 * The Regents of the University of California. All rights reserved. * * This code is derived from software contributed to Berkeley by * Keith Muller of the University of California, San Diego. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 4. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * *@(#)tar.h8.2 (Berkeley) 4/18/94 * $FreeBSD$ */ #ifndef _TAR_FORMAT_H #define _TAR_FORMAT_H #ifdef __cplusplus extern "C" { #endif /* * Our own tar block defines - we cannot rely on UNIX to provide these for us * as the sun tar.h is minimal and Alliant's does not even exist. */ #define TBLOCK 512 #define NAMSIZ 100 /* Values used in typeflag field. */ #define REGTYPE '0' /* Regular File */ #define AREGTYPE '\0' /* Regular File */ #define LNKTYPE '1' /* Hard Link */ #define SYMTYPE '2' /* Symbolic Link */ #define CHRTYPE '3' /* Character Special File */ #define BLKTYPE '4' /* Block Special File */ #define DIRTYPE '5' /* Directory */ #define FIFOTYPE '6' /* FIFO */ #define CONTTYPE '7' /* Reserved */ /* * There will usually be more data than this in a tar header - but we don't * need to concern ourselves with it. */ typedef union hblock { char data[TBLOCK]; struct header { char name[NAMSIZ]; char mode[8]; char uid[8]; char gid[8]; char size[12]; char mtime[12]; char chksum[8]; char typeflag; char linkname[NAMSIZ]; char magic[6]; char version[2]; char uname[32]; char gname[32]; char devmajor[8]; char devminor[8]; char prefix[155]; } header; } tar_block; #ifdef __cplusplus } #endif #endif io_lib-1.14.6/io_lib/traceType.h0000644000031500020650000001240712354177666013350 00000000000000/* * Copyright (c) 2005, 2007 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * Author(s): James Bonfield * * Copyright (c) 1994-1996 MEDICAL RESEARCH COUNCIL * All rights reserved * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1 Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2 Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3 Neither the name of the MEDICAL RESEARCH COUNCIL, THE LABORATORY OF * MOLECULAR BIOLOGY nor the names of its contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * Copyright (c) Medical Research Council 1994. All rights reserved. * * Permission to use, copy, modify and distribute this software and its * documentation for any purpose is hereby granted without fee, provided that * this copyright and notice appears in all copies. * * This file was written by James Bonfield, Simon Dear, Rodger Staden, * as part of the Staden Package at the MRC Laboratory of Molecular * Biology, Hills Road, Cambridge, CB2 2QH, United Kingdom. * * MRC disclaims all warranties with regard to this software. */ #ifndef _traceType_h #define _traceType_h /* * Title: traceType.h * * File: traceType.h * Purpose: determining traceType of traces * Last update: Tue Jan 15 1991 * * Change log :- */ /* ---- Imports ---- */ #include /* IMPORT: fopen, fclose, fseek, ftell, fgetc */ #include #include /* IMPORT: isprint*/ #include "io_lib/Read.h" /* IMPORT: TT_xxx defines */ #include "io_lib/mFILE.h" #ifdef __cplusplus extern "C" { #endif /* * Determine the trace type for file 'fn'. * * Returns: * TT_SCF, TT_ABI, TT_ALF, or TT_PLN for success. * TT_UNK for unknown type. * TT_ERR for error. */ extern int determine_trace_type(char *fn); /* * Determine the trace type for FILE * 'fp'. * * Returns: * TT_SCF, TT_ABI, TT_ALF, or TT_PLN for success. * TT_UNK for unknown type. * TT_ERR for error. */ extern int fdetermine_trace_type(mFILE *fp); /* * Returns a statically declared string containing a 3 character * identifier for this trace type. * "ERR" represents error, and "UNK" for unknown. * Successful values are "SCF", "ABI", "ALF" and "PLN". */ extern char *trace_type_str(char *traceName); /* * Converts a trace type string to an integer. */ extern int trace_type_str2int(char *str); /* * Converts a trace type integer to a string. */ char *trace_type_int2str(int type); #ifdef __cplusplus } #endif #endif /*_traceType_h*/ io_lib-1.14.6/io_lib/xalloc.h0000644000031500020650000000500212354177666012663 00000000000000/* * Author(s): James Bonfield * * Copyright (c) 1994 MEDICAL RESEARCH COUNCIL * All rights reserved * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1 Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2 Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3 Neither the name of the MEDICAL RESEARCH COUNCIL, THE LABORATORY OF * MOLECULAR BIOLOGY nor the names of its contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * Copyright (c) Medical Research Council 1994. All rights reserved. * * Permission to use, copy, modify and distribute this software and its * documentation for any purpose is hereby granted without fee, provided that * this copyright and notice appears in all copies. * * This file was written by James Bonfield, Simon Dear, Rodger Staden, * as part of the Staden Package at the MRC Laboratory of Molecular * Biology, Hills Road, Cambridge, CB2 2QH, United Kingdom. * * MRC disclaims all warranties with regard to this software. */ #ifndef _MY_MALLOC_H_ #define _MY_MALLOC_H_ #include #ifdef __cplusplus extern "C" { #endif extern void *xmalloc(size_t size); extern void *xrealloc(void *ptr, size_t size); extern void *xcalloc(size_t num, size_t size); extern void xfree(void *ptr); #ifdef __cplusplus } #endif #endif io_lib-1.14.6/io_lib/mFILE.h0000644000031500020650000000605512500530640012260 00000000000000/* * Copyright (c) 2005-2006, 2008 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef _MFILE_H_ #define _MFILE_H_ #include #ifdef __cplusplus extern "C" { #endif typedef struct { FILE *fp; char *data; size_t alloced; int eof; int mode; /* open mode in MF_?? define bit pattern */ size_t size; size_t offset; size_t flush_pos; } mFILE; #define MF_READ 1 #define MF_WRITE 2 #define MF_APPEND 4 #define MF_BINARY 8 #define MF_TRUNC 16 #define MF_MODEX 32 #define MF_MMAP 64 mFILE *mfreopen(const char *path, const char *mode, FILE *fp); mFILE *mfopen(const char *path, const char *mode); int mfdetach(mFILE *mf); int mfclose(mFILE *mf); int mfdestroy(mFILE *mf); int mfseek(mFILE *mf, long offset, int whence); long mftell(mFILE *mf); void mrewind(mFILE *mf); void mftruncate(mFILE *mf, long offset); int mfeof(mFILE *mf); size_t mfread(void *ptr, size_t size, size_t nmemb, mFILE *mf); size_t mfwrite(void *ptr, size_t size, size_t nmemb, mFILE *mf); int mfgetc(mFILE *mf); int mungetc(int c, mFILE *mf); mFILE *mfcreate(char *data, int size); mFILE *mfcreate_from(const char *path, const char *mode_str, FILE *fp); void mfrecreate(mFILE *mf, char *data, int size); void *mfsteal(mFILE *mf, size_t *size_out); char *mfgets(char *s, int size, mFILE *mf); int mfflush(mFILE *mf); int mfprintf(mFILE *mf, char *fmt, ...); mFILE *mstdin(void); mFILE *mstdout(void); mFILE *mstderr(void); void mfascii(mFILE *mf); #ifdef __cplusplus } #endif #endif /* _MFILE_H_ */ io_lib-1.14.6/io_lib/stdio_hack.h0000644000031500020650000000642612354177666013524 00000000000000/* * Copyright (c) 2005, 2007 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef _STDIO_HACK_H_ #define _STDIO_HACK_H_ #include #include "io_lib/mFILE.h" #ifdef __cplusplus extern "C" { #endif /* * This file will define many of the stdio functions to use the * in-memory versions here. These are sufficient to allow the abi, * scf, etc reading code (but not writing) to transparently operate by * loading the entire file into memory and then doing in-memory * manipulation instead of on-disk manipulation. * * The key use for this though is to allow generation of fake FILE pointers * so that reading from tar files does not requiring writing to disk and * reading back again. */ #define FILE mFILE #define fopen mfopen #define fclose mfclose #define fseek mfseek #define ftell mftell #define rewind mrewind #ifdef feof # undef feof #endif #define feof mfeof #define fread mfread #define fwrite mfwrite #define fgetc mfgetc #define ungetc mungetc #define fgets mfgets #define fflush mfflush #define fprintf mfprintf #ifdef stdin # undef stdin # undef stdout # undef stderr #endif #define stdin mstdin() #define stdout mstdout() #define stderr mstderr() #define fread_abi mfread_abi #define fwrite_abi mfwrite_abi #define fread_alf mfread_alf #define fwrite_alf mfwrite_alf #define fread_pln mfread_pln #define fwrite_pln mfwrite_pln #define fread_scf mfread_scf #define fwrite_scf mfwrite_scf #define fread_ztr mfread_ztr #define fwrite_ztr mfwrite_ztr #define exp_fread_info exp_mfread_info #define exp_print_file exp_print_mfile #define open_trace_file open_trace_mfile #define fread_reading mfread_reading #define fwrite_reading mfwrite_reading #ifdef __cplusplus } #endif #endif /* _STDIO_HACK_H_ */ io_lib-1.14.6/io_lib/vlen.h0000644000031500020650000000677212354177666012364 00000000000000/* * Copyright (c) 2005 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * Author(s): James Bonfield * * Copyright (c) 1995 MEDICAL RESEARCH COUNCIL * All rights reserved * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1 Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2 Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3 Neither the name of the MEDICAL RESEARCH COUNCIL, THE LABORATORY OF * MOLECULAR BIOLOGY nor the names of its contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ #ifndef _VLEN_H_ #define _VLEN_H_ #ifdef __cplusplus extern "C" { #endif extern int vflen(char *fmt, va_list ap); extern int flen(char *fmt, ...); #ifdef __cplusplus } #endif #endif /* _VLEN_H_ */ io_lib-1.14.6/io_lib/hash_table.h0000644000031500020650000001542312511724156013466 00000000000000/* * Copyright (c) 2005-2010, 2013 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef _HASH_TABLE_H_ #define _HASH_TABLE_H_ #include #include #include #include #include "io_lib/pooled_alloc.h" #ifdef __cplusplus extern "C" { #endif /* The data referenced by the hash table */ typedef union { uint64_t i; float f; double d; void *p; } HashData; /* A hash item with "next" pointer to use in a linked list */ typedef struct HashItemStruct { HashData data; /* user defined data attached to this key */ char *key; /* key we hashed on */ int key_len; /* and its length */ struct HashItemStruct *next; } HashItem; /* The main hash table structure itself */ typedef struct { int options; /* HASH_FUNC & HASH_OPT macros */ uint32_t nbuckets; /* Number of hash buckets; power of 2 */ uint32_t mask; /* bit-mask equiv of nbuckets */ int nused; /* How many hash entries we're storing */ HashItem **bucket; /* The bucket "list heads" themselves */ pool_alloc_t *hi_pool; /* Pool of allocated HashItem structs */ } HashTable; /* An iterator on HashTable items */ typedef struct { int bnum; HashItem *hi; } HashIter; #define HASHFILE_MAGIC ".hsh" #define HASHFILE_VERSION100 "1.00" #define HASHFILE_VERSION "1.01" #define HASHFILE_PREPEND -1 /* File format: the hash table header */ typedef struct { char magic[4]; char vers[4]; char hfunc; unsigned char nheaders; unsigned char nfooters; unsigned char narchives; uint32_t nbuckets; int64_t offset; uint32_t size; } HashFileHeader; /* sizeof(HashFileHeader) minus terminal padding */ #define HHSIZE 28 typedef struct { char magic[4]; char offset[8]; } HashFileFooter; /* The data block attached to the hash table */ typedef struct { uint64_t pos; uint32_t size; unsigned char archive; unsigned char header; /* zero if not set */ unsigned char footer; /* zero if not set */ } HashFileItem; /* Common headers or footers to prepend to the archive contents */ typedef struct { unsigned char archive_no; uint64_t pos; uint32_t size; unsigned char *cached_data; } HashFileSection; /* * The main structure for the HashFile functions. * * We obtain an existing HashFile by opening a stored hash file or by * loading the entire thing. * New empty ones can be created using HashFileCreate. */ typedef struct { HashFileHeader hh; /* on-disk file header */ HashTable *h; /* the in-memory hash table */ int nheaders; /* number of common file headers */ HashFileSection *headers; /* on-disk common file headers struct */ int nfooters; /* number of common file footers */ HashFileSection *footers; /* on-disk common file footers struct */ int narchives; /* number of archive files, 0 if inline file */ char **archives; /* archive filenames */ FILE *hfp; /* hash FILE */ FILE **afp; /* archive FILE(s) */ int header_size; /* size of header + filename + N(head/feet) */ off_t hf_start; /* location of HashFile header in file */ } HashFile; /* Functions to to use HashTable.options */ #define HASH_FUNC_HSIEH 0 #define HASH_FUNC_TCL 1 #define HASH_FUNC_JENKINS 2 #define HASH_FUNC_JENKINS3 3 #define HASH_FUNC_MASK 7 /* Other HashTable.options values */ #define HASH_NONVOLATILE_KEYS (1<<3) #define HASH_ALLOW_DUP_KEYS (1<<4) #define HASH_DYNAMIC_SIZE (1<<5) #define HASH_OWN_KEYS (1<<6) #define HASH_POOL_ITEMS (1<<7) #define HASH_INT_KEYS (1<<8) /* Hashing prototypes */ uint32_t hash(int func, uint8_t *key, int key_len); uint64_t hash64(int func, uint8_t *key, int key_len); uint32_t HashJenkins(uint8_t *k, int length); uint32_t HashTcl(uint8_t *data, int len); uint32_t HashHsieh(uint8_t *k, int length); /* HashTable management prototypes */ HashTable *HashTableCreate(int size, int options); void HashTableDestroy(HashTable *h, int deallocate_date); int HashTableResize(HashTable *h, int newsize); HashItem *HashTableAdd(HashTable *h, char *key, int key_len, HashData data, int *added); int HashTableDel(HashTable *h, HashItem *hi, int deallocate_data); int HashTableRemove(HashTable *h, char *key, int key_len, int deallocate_data); HashItem *HashTableSearch(HashTable *h, char *key, int key_len); HashItem *HashTableNext(HashItem *hi, char *key, int key_len); HashItem *HashTableNextInt(HashItem *hi, char *key, int key_len); void HashTableStats(HashTable *h, FILE *fp); void HashTableDump(HashTable *h, FILE *fp, char *prefix); /* Iterator prototypes */ HashIter *HashTableIterCreate(void); void HashTableIterDestroy(HashIter *iter); HashItem *HashTableIterNext(HashTable *h, HashIter *iter); void HashTableIterReset(HashIter *iter); /* HashFile prototypes */ uint64_t HashFileSave(HashFile *hf, FILE *fp, int64_t offset); HashFile *HashFileLoad(FILE *fp); int HashFileQuery(HashFile *hf, uint8_t *key, int key_len, HashFileItem *item); char *HashFileExtract(HashFile *hf, char *fname, size_t *len); HashFile *HashFileCreate(int size, int options); void HashFileDestroy(HashFile *hf); HashFile *HashFileOpen(char *fname); HashFile *HashFileFopen(FILE *fp); #ifdef __cplusplus } #endif #endif /* _HASH_TABLE_H_ */ io_lib-1.14.6/io_lib/jenkins_lookup3.h0000644000031500020650000000163312354177666014524 00000000000000/* From lookup3.c, by Bob Jenkins, May 2006, Public Domain. */ #ifndef _JENKINS_LOOKUP3_H_ #define _JENKINS_LOOKUP3_H_ #include /* defines uint32_t etc */ /* * HashJenkins3: return 2 32-bit hash values * * This is identical to hashlittle(), except it returns two 32-bit hash * values instead of just one. This is good enough for hash table * lookup with 2^^64 buckets, or if you want a second hash if you're not * happy with the first, or if you want a probably-unique 64-bit ID for * the key. *pc is better mixed than *pb, so use *pc first. If you want * a 64-bit value do something like "*pc + (((uint64_t)*pb)<<32)". */ void HashJenkins3( const void *key, /* the key to hash */ size_t length, /* length of the key */ uint32_t *pc, /* IN: primary initval, OUT: primary hash */ uint32_t *pb); /* IN: secondary initval, OUT: secondary hash */ #endif io_lib-1.14.6/io_lib/os.h0000644000031500020650000002345612617160100012010 00000000000000/* * File: os.h * * Author: * MRC Laboratory of Molecular Biology * Hills Road * Cambridge CB2 2QH * United Kingdom * * Description: operating system specific type definitions * */ #ifndef _OS_H_ #define _OS_H_ #include #include #ifdef __cplusplus extern "C" { #endif /*----------------------------------------------------------------------------- * Detection of endianness. The main part of this is done in autoconf, but * for the case of MacOS FAT binaries we fall back on auto-sensing based on * processor type too. */ /* Set by autoconf */ #define SP_LITTLE_ENDIAN #define HAVE_STDIO_EXT_H #define CRAM_IO_CUSTOM_BUFFERING /* Mac FAT binaries or unknown. Auto detect based on CPU type */ #if !defined(SP_BIG_ENDIAN) && !defined(SP_LITTLE_ENDIAN) /* * x86 equivalents */ #if defined(__i386__) || defined(__i386) || defined(__amd64__) || defined(__amd64) || defined(__x86_64__) || defined(__x86_64) || defined(__i686__) || defined(__i686) # if defined(SP_BIG_ENDIAN) # undef SP_BIG_ENDIAN # endif # define SP_LITTLE_ENDIAN #endif /* * DEC Alpha */ #if defined(__alpha__) || defined(__alpha) # if defined(SP_LITTLE_ENDIAN) # undef SP_LITTLE_ENDIAN # endif # define SP_BIG_ENDIAN #endif /* * SUN Sparc */ #if defined(__sparc__) || defined(__sparc) # if defined(SP_LITTLE_ENDIAN) # undef SP_LITTLE_ENDIAN # endif # define SP_BIG_ENDIAN #endif /* * PowerPC */ #if defined(__ppc__) || defined(__ppc) # if defined(SP_LITTLE_ENDIAN) # undef SP_LITTLE_ENDIAN # endif # define SP_BIG_ENDIAN #endif /* Some catch-alls */ #if defined(__LITTLE_ENDIAN__) || defined(__LITTLEENDIAN__) # define SP_LITTLE_ENDIAN #endif #if defined(__BIG_ENDIAN__) || defined(__BIGENDIAN__) # define SP_BIG_ENDIAN #endif #if defined(SP_BIG_ENDIAN) && defined(SP_LITTLE_ENDIAN) # error Both BIG and LITTLE endian defined. Fix os.h and/or Makefile #endif #if !defined(SP_BIG_ENDIAN) && !defined(SP_LITTLE_ENDIAN) # error Neither BIG nor LITTLE endian defined. Fix os.h and/or Makefile #endif #endif /*----------------------------------------------------------------------------- * Allow for unaligned memory access. This is used in BAM code as the packed * structure has 4-byte cigar ints after the variable length name. * * Consider using AX_CHECK_ALIGNED_ACCESS_REQUIRED in autoconf. */ #if defined(__i386__) || defined(__i386) || defined(__amd64__) || defined(__amd64) || defined(__x86_64__) || defined(__x86_64) || defined(__i686__) || defined(__i686) # define ALLOW_UAC #endif /*----------------------------------------------------------------------------- * Byte swapping macros */ /* * Our new swap runs at the same speed on Ultrix, but substantially faster * (300% for swap_int4, ~50% for swap_int2) on an Alpha (due to the lack of * decent 'char' support). * * They also have the ability to swap in situ (src == dst). Newer code now * relies on this so don't change back! */ #define iswap_int8(x) \ (((x & 0x00000000000000ffLL) << 56) + \ ((x & 0x000000000000ff00LL) << 40) + \ ((x & 0x0000000000ff0000LL) << 24) + \ ((x & 0x00000000ff000000LL) << 8) + \ ((x & 0x000000ff00000000LL) >> 8) + \ ((x & 0x0000ff0000000000LL) >> 24) + \ ((x & 0x00ff000000000000LL) >> 40) + \ ((x & 0xff00000000000000LL) >> 56)) #define iswap_int4(x) \ (((x & 0x000000ff) << 24) + \ ((x & 0x0000ff00) << 8) + \ ((x & 0x00ff0000) >> 8) + \ ((x & 0xff000000) >> 24)) #define iswap_int2(x) \ (((x & 0x00ff) << 8) + \ ((x & 0xff00) >> 8)) #define swap_int8(src, dst) ((dst) = iswap_int8(src)) #define swap_int4(src, dst) ((dst) = iswap_int4(src)) #define swap_int2(src, dst) ((dst) = iswap_int2(src)) /* * Linux systems may use byteswap.h to get assembly versions of byte-swap * on intel systems. This can be as trivial as the bswap opcode, which works * out at over 2-times faster than iswap_int4 above. */ #if 0 #if defined(__linux__) # include # undef iswap_int8 # undef iswap_int4 # undef iswap_int2 # define iswap_int8 bswap_64 # define iswap_int4 bswap_32 # define iswap_int2 bswap_16 #endif #endif /* * Macros to specify that data read in is of a particular endianness. * The macros here swap to the appropriate order for the particular machine * running the macro and return the new answer. These may also be used when * writing to a file to specify that we wish to write in (eg) big endian * format. * * This leads to efficient code as most of the time these macros are * trivial. */ #ifdef SP_BIG_ENDIAN #define be_int8(x) (x) #define be_int4(x) (x) #define be_int2(x) (x) #define be_int1(x) (x) #define le_int8(x) iswap_int8((x)) #define le_int4(x) iswap_int4((x)) #define le_int2(x) iswap_int2((x)) #define le_int1(x) (x) #endif #ifdef SP_LITTLE_ENDIAN #define be_int8(x) iswap_int8((x)) #define be_int4(x) iswap_int4((x)) #define be_int2(x) iswap_int2((x)) #define be_int1(x) (x) #define le_int8(x) (x) #define le_int4(x) (x) #define le_int2(x) (x) #define le_int1(x) (x) #endif /*----------------------------------------------------------------------------- * Configuration of which io_lib sub-components we wish to support. * (These are now manditory for the stand-alone build of io_lib. Do * not change.) */ #define IOLIB_ABI #define IOLIB_SCF #define IOLIB_ALF #define IOLIB_PLN #define IOLIB_EXP #define IOLIB_SFF #define IOLIB_ZTR /*----------------------------------------------------------------------------- * definitions, incase they're not present */ #ifndef PRId64 #define __PRI64__ "l" #define PRId64 __PRI64__ "d" #define PRId32 "d" #define PRId16 "d" #define PRId8 "d" #define PRIu64 __PRI64__ "u" #define PRIu32 "u" #define PRIu16 "u" #define PRIu8 "u" #endif /*----------------------------------------------------------------------------- * Operating system specifics. * These ought to be done by autoconf, but are legacy code. */ /* * SunOS 4.x * Even though we use the ANSI gcc, we make use the the standard SunOS 4.x * libraries and include files, which are non-ansi */ #if defined(__sun__) && !defined(__svr4__) #define SEEK_SET 0 #define SEEK_CUR 1 #define SEEK_END 2 #define FOPEN_MAX 64 #define FILENAME_MAX 1024 /* Missing functions, defined in strings.c */ #define NOMEMMOVE #define NOSTRERROR #define BUGGY_SSCANF #endif /* * SunOS 5.x - gcc or Sun's cc */ #if (defined(__sun__) || defined(__sun)) && (defined(__svr4__) || defined(__SVR4)) # define IMAGEDISPLAY # define NOSTRDUP #endif /* * Microsoft Visual C++ * Windows */ #if defined(_MSC_VER) #define popen _popen #define pclose _pclose typedef int mode_t; #define ftruncate(fd,len) _chsize(fd,len) #define sysconf(x) 512 #define NOPIPE #define NOLOCKF #define NOSTRCASECMP #define NO_STRPTIME #undef HAVE_SYS_WAIT_H #endif /* * Microsoft Windows running MinGW */ #if defined(__MINGW32__) #include #define mkdir(filename,mode) mkdir((filename)) #define NOPIPE #define NOLOCKF #define NO_STRPTIME #define sysconf(x) 512 #define ftruncate(fd,len) _chsize(fd,len) #undef HAVE_SYS_WAIT_H #endif /* Generic WIN32 API issues */ #ifdef _WIN32 # ifndef HAVE_FSEEKO # if __MSVCRT_VERSION__ >= 0x800 /* if you have MSVCR80 installed then you can use these definitions: */ # define off_t __int64 # define fseeko _fseeki64 # define ftello _ftelli64 # else /* otherwise we're stuck with 32-bit file support */ # define off_t long # define fseeko fseek # define ftello ftell # endif # endif /* !HAVE_FSEEKO */ #endif /* _WIN32 */ /* * DEC Alpha's running Digital UNIX */ #if defined(__alpha) /* Nothing as yet */ #endif /* * Silicon Graphics - Irix */ #if defined(__sgi) #define NOSTRDUP #define NO_STRPTIME #endif /* * Macs (<= OS 9) - yuk! */ #if defined(MAC) #define NOSTRDUP #endif #if defined(__APPLE__) && defined(__ppc__) #define NO_STRPTIME #define NOLOCKF #endif #if defined(__APPLE__) && defined(__i386__) /* nothing untoward as yet */ #endif /*----------------------------------------------------------------------------- * Typedefs for data sizes. Note there's umpteen versions of typedefs here * due to old code being supported. The ones that should be used everywhere * are {u,}int[124]. * * C9X defines its own versions of these in inttypes.h so new code should * ideally be using the (for example) int32_t style of types. Again this * is just legacy code. */ /* * Convenience of type casting */ typedef unsigned char uc; typedef signed char sc; /* * One byte integers */ typedef unsigned char int1; typedef unsigned char uint1; /* * Two byte integers */ typedef signed short int2; typedef unsigned short uint2; /* * Four byte integers */ typedef signed int int4; typedef unsigned int uint4; typedef int64_t int8; typedef uint64_t uint8; /* * Backwards compatibility */ typedef signed char int_1; typedef unsigned char uint_1; typedef signed short int_2; typedef unsigned short uint_2; typedef signed int int_4; typedef unsigned int uint_4; /* * Some handy definitions. */ #define MAXINT8 (9223372036854775807LL) #define MAXINT4 (INT_MAX) #define MAXINT2 (SHRT_MAX) /*----------------------------------------------------------------------------- * The FORTRAN interface. */ typedef int4 f_int; typedef int4 f_implicit; typedef void f_proc_ret; /* procedure return value */ /* James Bonfield compatability mode */ typedef int4 int_f; /* f_int */ typedef int4 int_fl; /* f_implicit */ #define f_proc_return() return /* (f_proc_ret) 0 */ /* * Use when calling/defining a Fortran function from C. */ #ifdef VMS # define FORT(symbol) (symbol) #else # define FORT(symbol) (_symbol) #endif #ifdef __cplusplus } #endif /*----------------------------------------------------------------------------- * define PATH_MAX in case it is not available (for example for hurd_i386) */ #ifndef PATH_MAX # define PATH_MAX 4096 #endif #endif /*_OS_H_*/ io_lib-1.14.6/io_lib/compression.h0000644000031500020650000003576412354177666013764 00000000000000/* * Copyright (c) 2005-2007 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * Author(s): James Bonfield * * Copyright (c) 2001 MEDICAL RESEARCH COUNCIL * All rights reserved * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1 Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2 Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3 Neither the name of the MEDICAL RESEARCH COUNCIL, THE LABORATORY OF * MOLECULAR BIOLOGY nor the names of its contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ #ifndef _COMPRESSION_H_ #define _COMPRESSION_H_ #include "io_lib/os.h" #include #ifdef __cplusplus extern "C" { #endif /* * zlib_huff() * * Compresses data using huffman encoding, as implemented by zlib. * * Arguments: * uncomp Uncompressed input data * uncomp_len Length of uncomp data * comp_len Output: length of compressed data * * Returns: * Compressed data if successful * NULL if not successful */ char *zlib_huff(char *uncomp, int uncomp_len, int strategy, int *comp_len); /* * zlib_dehuff() * * Uncompresses data using huffman encoding, as implemented by zlib. * * Arguments: * comp Compressed input data * comp_len Length of comp data * uncomp_len Output: length of uncompressed data * * Returns: * Uncompressed data if successful * NULL if not successful */ char *zlib_dehuff(char *comp, int comp_len, int *uncomp_len); /* * zlib_dehuff2() * * Uncompresses data using huffman encoding, as implemented by zlib. * Similar to zlib_dehuff above, but with the following differences: * * 1) It pastes together the zlib stream from two components; comp1+comp2 * with the last byte of comp1 overlapping (ORed) with the first byte * of comp2. This allows for separation of the huffman codes from * the compressed data itself. * 2) It uses the raw Deflate format rather than Zlib's wrapping of it. * 3) It uses an EOF symbol to mark the end rather than encoding the * uncompressed size in the header * * * Arguments: * comp1 Compressed input data part 1 * comp1_len Length of comp1 data * comp2 Compressed input data part 2 * comp2_len Length of comp2 data * uncomp_len Output: length of uncompressed data * * Returns: * Uncompressed data if successful * NULL if not successful */ char *zlib_dehuff2(char *comp1, int comp1_len, char *comp2, int comp2_len, int *uncomp_len); /* * Run length encoding. * * Any run of 3 or more identical characters (up to 255 in a row) are replaced * by a 'guard' byte followed by the number of characters followed by * the character value itself. * Any single guard value in the input is escaped using 'guard 0'. * * Specifying guard as -1 will automatically pick one of the least used * characters in the input as the guard. * * Arguments: * uncomp Input data * uncomp_len Length of input data 'uncomp' * guard Guard byte - used to encode "N" copies of data * comp_len Output: length of compressed data * * Returns: * Compressed data if successful * NULL if not successful */ char *rle(char *uncomp, int uncomp_len, int guard, int *comp_len); /* * Reverses run length encoding. * * Arguments: * comp Compressed input data * comp_len Length of comp data * uncomp_len Output: length of uncompressed data * * Returns: * Uncompressed data if successful * NULL if not successful */ char *unrle(char *comp, int comp_len, int *uncomp_len); /* * Mutli-byte run length encoding. * * Any run of 3 or more identical characters (up to 255 in a row) are replaced * by a 'guard' byte followed by the number of characters followed by * the character value itself. * Any single guard value in the input is escaped using 'guard 0'. * * Specifying guard as -1 will automatically pick one of the least used * characters in the input as the guard. * * Arguments: * uncomp Input data * uncomp_len Length of input data 'uncomp' * guard Guard byte - used to encode "N" copies of data * rsz Size of blocks to compare for run checking. * comp_len Output: length of compressed data * * Returns: * Compressed data if successful * NULL if not successful */ char *xrle(char *uncomp, int uncomp_len, int guard, int rsz, int *comp_len); /* * Reverses multi-byte run length encoding. * * Arguments: * comp Compressed input data * comp_len Length of comp data * uncomp_len Output: length of uncompressed data * * Returns: * Uncompressed data if successful * NULL if not successful */ char *unxrle(char *comp, int comp_len, int *uncomp_len); /* * Mutli-byte run length encoding. * * Steps along in words of size 'rsz'. Unlike XRLE above this does run-length * encoding by writing out an additional "length" word every time 2 or more * words in a row are spotted. This removes the need for a guard byte. * * Additionally this method ensures that both input and output formats remain * aligned on words of size 'rsz'. * * Arguments: * uncomp Input data * uncomp_len Length of input data 'uncomp' * rsz Size of blocks to compare for run checking. * comp_len Output: length of compressed data * * Returns: * Compressed data if successful * NULL if not successful */ char *xrle2(char *uncomp, int uncomp_len, int rsz, int *comp_len); /* * Reverses multi-byte run length encoding (xrle_new). * * Arguments: * comp Compressed input data * comp_len Length of comp data * uncomp_len Output: length of uncompressed data * * Returns: * Uncompressed data if successful * NULL if not successful */ char *unxrle2(char *comp, int comp_len, int *uncomp_len); /* * decorrelate1() * * Produce successive deltas from a 1-byte array. * * Arguments: * uncomp Uncompressed data * uncomp_len Length of uncompressed data * level Differencing level (must be 1, 2 or 3) * comp_len Return: where to store new compressed length * * Returns: * Success: A decorrelated buffer (malloced) * Failure: NULL */ char *decorrelate1(char *uncomp, int uncomp_len, int level, int *comp_len); char *decorrelate1dyn(char *s_uncomp, int uncomp_len, int *comp_len); /* * recorrelate1() * * The reverse of decorrelate1() * * Arguments: * comp Compressed input data * comp_len Length of comp data * uncomp_len Output: length of uncompressed data * * Returns: * Success: uncompressed data * Failure: NULL */ char *recorrelate1(char *comp, int comp_len, int *uncomp_len); /* * decorrelate2() * * Produce successive deltas from a 2-byte array (big endian) * * Arguments: * uncomp Uncompressed data * uncomp_len Length of uncompressed data * level Differencing level (must be 1, 2 or 3) * comp_len Return: where to store new compressed length * * Returns: * Success: A decorrelated buffer (malloced) * Failure: NULL */ char *decorrelate2(char *uncomp, int uncomp_len, int level, int *comp_len); char *decorrelate2dyn(char *s_uncomp, int uncomp_len, int *comp_len); /* * recorrelate2() * * The reverse of decorrelate2() * * Arguments: * comp Compressed input data * comp_len Length of comp data * uncomp_len Output: length of uncompressed data * * Returns: * Success: uncompressed data * Failure: NULL */ char *recorrelate2(char *comp, int comp_len, int *uncomp_len); /* * decorrelate4() * * Produce successive deltas from a 4-byte array (big endian) * * Arguments: * uncomp Uncompressed data * uncomp_len Length of uncompressed data * level Differencing level (must be 1, 2 or 3) * comp_len Return: where to store new compressed length * * Returns: * Success: A decorrelated buffer (malloced) * Failure: NULL */ char *decorrelate4(char *uncomp, int uncomp_len, int level, int *comp_len); /* * recorrelate4() * * The reverse of decorrelate4() * * Arguments: * comp Compressed input data * comp_len Length of comp data * uncomp_len Output: length of uncompressed data * * Returns: * Success: uncompressed data * Failure: NULL */ char *recorrelate4(char *comp, int comp_len, int *uncomp_len); /* * shrink_16to8() * * Stores an array of 16-bit (big endian) array elements in an 8-bit array. * We assume that most 16-bit elements encode numbers that fit in an 8-bit * value. When not possible, we store a marker followed by the 16-bit value * stored as multiple 8-bit values. * * uncomp Uncompressed data * uncomp_len Length of uncompressed data (in bytes) * comp_len Return: where to store new compressed length * * Returns: * Success: An 8-bit array (malloced) * Failure: NULL */ char *shrink_16to8(char *uncomp, int uncomp_len, int *comp_len); /* * expand_8to16() * * The opposite of the shrink_16to8() function. * * comp Compressed input data * comp_len Length of comp data (in bytes) * uncomp_len Output: length of uncompressed data (in bytes) * * Returns: * Success: Uncompressed data (char *) * Failure: NULL */ char *expand_8to16(char *comp, int comp_len, int *uncomp_len); /* * shrink_32to8() * * Stores an array of 32-bit (big endian) array elements in an 8-bit array. * We assume that most 32-bit elements encode numbers that fit in an 8-bit * value. When not possible, we store a marker followed by the 32-bit value * stored as multiple 8-bit values. * * uncomp Uncompressed data * uncomp_len Length of uncompressed data (in bytes) * comp_len Return: where to store new compressed length * * Returns: * Success: An 8-bit array (malloced) * Failure: NULL */ char *shrink_32to8(char *uncomp, int uncomp_len, int *comp_len); /* * expand_8to32() * * The opposite of the shrink_32to8() function. * * comp Compressed input data * comp_len Length of comp data (in bytes) * uncomp_len Output: length of uncompressed data (in bytes) * * Returns: * Success: Uncompressed data (char *) * Failure: NULL */ char *expand_8to32(char *comp, int comp_len, int *uncomp_len); char *follow1(char *s_uncomp, int uncomp_len, int *comp_len); char *unfollow1(char *s_comp, int comp_len, int *uncomp_len); char *ichebcomp(char *uncomp, int uncomp_len, int *data_len); char *ichebuncomp(char *comp, int comp_len, int *uncomp_len); /* * This is a LOSSY compression. It replaces N with 10 * log2(N). */ char *log2_data(char *x_uncomp, int uncomp_len, int *comp_len); char *unlog2_data(char *x_comp, int comp_len, int *uncomp_len); /* * Implements compression using a set of static huffman codes stored using * the Deflate algorithm (and so in this respect it's similar to zlib). * * The huffman codes though can be previously stored in the ztr object * using ztr_add_hcode(). "cset" indicates which numbered stored huffman * code set is to be used, or passing zero will use inline codes (ie they * are stored in the data stream itself, just as in standard deflate). * * Arguments: * ztr ztr_t pointer; used to find stored code-sets * uncomp The uncompressed input data * uncomp_len Length of uncomp * cset Stored code-set number, zero for inline * recsz Record size - only used when cset == 0. * comp_len Output: length of compressed data * * Returns: * Compressed data stream if successful + comp_len * NULL on failure */ char *sthuff(ztr_t *ztr, char *uncomp, int uncomp_len, int cset, int recsz, int *comp_len); char *unsthuff(ztr_t *ztr, char *comp, int comp_len, int *uncomp_len); /* * Reorders quality data from its RAW format to an interleaved 4-byte * aligned format. * * Starting with sequence A1 C2 G3 the raw format is quality of called * bases followed by quality of remaining bases: * 0 (RAW format) * Q(A1) Q(C2) Q(G3) * Q(C2) Q(A2) Q(A3) * Q(G2) Q(G2) Q(C3) * Q(T2) Q(T2) Q(T3) * * We reorder it to: * ZTR_FORM_QSHIFT 0(raw) * Q(A1) Q(C1) Q(G1) Q(T1) * Q(C2) Q(A2) Q(G2) Q(T2) * Q(G3) Q(A3) Q(C3) Q(T3) * * Returns shifted data on success * NULL on failure */ char *qshift(char *qold, int qlen, int *new_len); char *unqshift(char *qold, int qlen, int *new_len); /* * Given a sequence ACTG this shifts trace data from the order: * * A1A2A3A4 C1C2C3C4 G1G2G3G4 T1T2T3T4 * * to * * A1C1G1T1 C2A2G2T2 T3A3C3G3 G4C4C4T4 * * Ie for each base it ouputs the signal for the called base first * followed by the remaining 3 signals in A,C,G,T order (minus the * called signal already output). */ char *tshift(ztr_t *ztr, char *told_c, int tlen, int *new_len); char *untshift(ztr_t *ztr, char *told_c, int tlen, int *new_len); #ifdef __cplusplus } #endif #endif /* _COMPRESSION_H_ */ io_lib-1.14.6/io_lib/ztr.h0000644000031500020650000001762112354177666012232 00000000000000/* * Copyright (c) 2005-2008 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * Author(s): James Bonfield * * Copyright (c) 2001 MEDICAL RESEARCH COUNCIL * All rights reserved * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1 Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2 Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3 Neither the name of the MEDICAL RESEARCH COUNCIL, THE LABORATORY OF * MOLECULAR BIOLOGY nor the names of its contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ #ifndef _ZTR_H #define _ZTR_H #include "io_lib/Read.h" #include "io_lib/deflate_interlaced.h" #ifdef __cplusplus extern "C" { #endif /* The header */ typedef struct { unsigned char magic[8]; /* 0xae5a54520d0a1a0a (be) */ unsigned char version_major; /* ZTR_VERSION_MAJOR */ unsigned char version_minor; /* ZTR_VERSION_MINOR */ } ztr_header_t; /* The ZTR magic numbers */ #define ZTR_MAGIC "\256ZTR\r\n\032\n" #define ZTR_VERSION_MAJOR 1 #define ZTR_VERSION_MINOR 2 /* * CHUNKS * * Chunks consist of a block length followed by the type, format and data. */ typedef struct { uint4 type; /* chunk type (be) */ uint4 mdlength; /* length of meta data field (be) */ char *mdata; /* meta data */ uint4 dlength; /* length of data field (be) */ char *data; /* a format byte and the data itself */ int ztr_owns; /* boolean: true if we can free (meta)data */ } ztr_chunk_t; /* Format types */ #define ZTR_FORM_RAW 0 #define ZTR_FORM_RLE 1 #define ZTR_FORM_ZLIB 2 #define ZTR_FORM_XRLE 3 #define ZTR_FORM_XRLE2 4 #define ZTR_FORM_DELTA1 64 #define ZTR_FORM_DELTA2 65 #define ZTR_FORM_DELTA4 66 #define ZTR_FORM_DDELTA1 67 #define ZTR_FORM_DDELTA2 68 #define ZTR_FORM_DDELTA4 69 #define ZTR_FORM_16TO8 70 #define ZTR_FORM_32TO8 71 #define ZTR_FORM_FOLLOW1 72 #define ZTR_FORM_CHEB445 73 #define ZTR_FORM_ICHEB 74 #define ZTR_FORM_LOG2 75 #define ZTR_FORM_STHUFF 77 #define ZTR_FORM_QSHIFT 79 #define ZTR_FORM_TSHIFT 80 /* Converts a C string to a big-endian 4-byte int */ #define ZTR_STR2BE(str) (((str)[0] << 24) + \ ((str)[1] << 16) + \ ((str)[2] << 8) + \ ((str)[3] << 0)) /* Converts a big-endian 4-byte int to a C string */ #define ZTR_BE2STR(i,str) (((str)[0]=((i)>>24)&0xff),\ ((str)[1]=((i)>>16)&0xff),\ ((str)[2]=((i)>> 8)&0xff),\ ((str)[3]=((i)>> 0)&0xff),\ (str)[4]='\0',str)\ #define ZTR_TYPE_HEADER 0xae5a5452 /* M-. Z T R */ #define ZTR_TYPE_SAMP 0x53414d50 #define ZTR_TYPE_SMP4 0x534d5034 #define ZTR_TYPE_BASE 0x42415345 #define ZTR_TYPE_BPOS 0x42504f53 #define ZTR_TYPE_CNF4 0x434e4634 #define ZTR_TYPE_CNF1 0x434e4631 #define ZTR_TYPE_CSID 0x43534944 #define ZTR_TYPE_TEXT 0x54455854 #define ZTR_TYPE_CLIP 0x434c4950 #define ZTR_TYPE_COMM 0x434f4d4d #define ZTR_TYPE_CR32 0x43523332 #define ZTR_TYPE_FLWO 0x464c574f #define ZTR_TYPE_FLWC 0x464c5743 #define ZTR_TYPE_HUFF 0x48554646 #define ZTR_TYPE_REGN 0x5245474e /* A text segment consists of identifier and value */ typedef struct { char *ident; /* Pointer to identifier */ char *value; /* Pointer to value */ } ztr_text_t; typedef struct { int ztr_owns; /* true is ZTR is to free the data later */ huffman_codeset_t *codes; } ztr_hcode_t; /* The main ZTR structure, which holds the entire file contents */ typedef struct { /* General bits to do with the ZTR file format */ ztr_header_t header; /* File Header */ ztr_chunk_t *chunk; /* Array of chunks */ int nchunks; /* Number of chunks */ /* Specifics to do with the standard chunk types */ ztr_text_t *text_segments; int ntext_segments; /* 'Hint' for delta of SAMP and SMP4 */ int delta_level; /* Cached huffman encoding/decoding tables for STHUFF format */ ztr_hcode_t *hcodes; int nhcodes; int hcodes_checked; } ztr_t; int ztr_read_header(mFILE *fp, ztr_header_t *h); ztr_chunk_t *ztr_read_chunk_hdr(mFILE *fp); int fwrite_ztr(FILE *fp, ztr_t *ztr); int mfwrite_ztr(mFILE *fp, ztr_t *ztr); ztr_t *fread_ztr(FILE *fp); ztr_t *mfread_ztr(mFILE *fp); Read *ztr2read(ztr_t *ztr); ztr_t *read2ztr(Read *r); int compress_ztr(ztr_t *ztr, int level); int uncompress_ztr(ztr_t *ztr); ztr_t *new_ztr(void); void delete_ztr(ztr_t *ztr); ztr_chunk_t **ztr_find_chunks(ztr_t *ztr, uint4 type, int *nchunks_p); void ztr_process_text(ztr_t *ztr); int compress_chunk(ztr_t *ztr, ztr_chunk_t *chunk, int format, int option, int option2); int uncompress_chunk(ztr_t *ztr, ztr_chunk_t *chunk); ztr_hcode_t *ztr_add_hcode(ztr_t *ztr, huffman_codeset_t *codes, int ztr_owns); int ztr_store_hcodes(ztr_t *ztr); ztr_hcode_t *ztr_find_hcode(ztr_t *ztr, int code_set); ztr_chunk_t *ztr_find_hcode_chunk(ztr_t *ztr, int code_set); char *ztr_lookup_mdata_value(ztr_t *z, ztr_chunk_t *chunk, char *key); ztr_chunk_t *ztr_new_chunk(ztr_t *ztr, uint4 type, char *data, uint4 dlength, char *mdata, uint4 mdlength); ztr_chunk_t *ztr_add_text(ztr_t *z, ztr_chunk_t *ch, const char *key, const char *value); #ifdef __cplusplus } #endif #endif /* _ZTR_H */ io_lib-1.14.6/io_lib/deflate_interlaced.h0000644000031500020650000001152712354177666015210 00000000000000/* * Copyright (c) 2007-2008 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef _DEFLATE_SIMPLE_H_ #define _DEFLATE_SIMPLE_H_ #ifdef __cplusplus extern "C" { #endif /* inlined codes */ #define CODE_INLINE 0 /* predefined codes */ #define CODE_DNA 1 /* DNA, uppercase only */ #define CODE_DNA_AMBIG 2 /* DNA, uc with ambiguity codes */ #define CODE_ENGLISH 3 /* English text */ #define NCODES_STATIC 4 /* Cheat, but we count from 0 for ease */ /* predefined elsewhere in HUFF chunks, 128 onwards */ #define CODE_USER 128 #define MAX_CODE_LEN 15 /* maximum allowed by RFC 1951 */ #ifndef ZTR_FORM_STHUFF # define ZTR_FORM_STHUFF 77 #endif /* A single symbol and it's encoding */ typedef struct { signed int symbol; /* 0-255 character, 256 = exception code, 257 = EOF */ int nbits; unsigned int code; int freq; } huffman_code_t; /* A collection of huffman_code_t along with decoding optimisations */ typedef struct { huffman_code_t *codes; int ncodes; int codes_static; huffman_code_t lookup[258]; /* Mapping of symbol character to code */ int max_code_len; } huffman_codes_t; /* Use for store_bits() and get_bits() */ typedef struct block { unsigned char *data; size_t alloc; size_t byte; int bit; } block_t; /* Tree and jump-table data structures used for fast decoding. */ typedef struct { /* Graph construction */ unsigned short c[2]; /* child node */ signed short l[2]; /* symbol to emit on transition. -1 => none */ } htree_t; typedef struct { /* Byte-wise jumping table */ unsigned short jump; unsigned char symbol[4]; unsigned char nsymbols; unsigned char top_bit; /* bit 9 of symbol[] */ } h_jump4_t; /* A collection of huffman_codes_t, for use with the multi-code codec */ typedef struct { huffman_codes_t **codes; int ncodes; int code_set; /* (128-255) The user specified number for this encoding */ /* Cached binary version of codeset, assumes last block */ block_t *blk; int bit_num; /* if 1st block, which bit will stored codes end on */ /* Cache huffman_multi_decode parameters */ h_jump4_t (*decode_J4)[16]; htree_t *decode_t; } huffman_codeset_t; block_t *block_create(unsigned char *data, size_t size); void block_destroy(block_t *blk, int keep_data); int block_resize(block_t *blk, size_t size); void store_bytes(block_t *block, unsigned char *val, int nbytes); int huffman_encode(block_t *blk, huffman_codes_t *c, int code_set, unsigned char *data, int len); block_t *huffman_decode(block_t *in, huffman_codes_t *c); int huffman_multi_encode(block_t *blk, huffman_codeset_t *cs, int code_set, unsigned char *data, int len); block_t *huffman_multi_decode(block_t *in, huffman_codeset_t *cs); huffman_codeset_t *codes2codeset(huffman_code_t *codes, int ncodes, int code_num); huffman_codeset_t *generate_code_set(int code_set, int ncodes, unsigned char *data, int len, int eof, int max_code_len, int all_codes); int store_codes(block_t *out, huffman_codeset_t *c, int last_block); huffman_codeset_t *restore_codes(block_t *block, int *bfinal); void huffman_codes_destroy(huffman_codes_t *c); void huffman_codeset_destroy(huffman_codeset_t *cs); #ifdef __cplusplus } #endif #endif /* _DEFLATE_SIMPLE_H_ */ io_lib-1.14.6/io_lib/srf.h0000644000031500020650000001554212354177666012205 00000000000000/* * Copyright (c) 2007-2009 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef _SRF_H_ #define _SRF_H_ #include "io_lib/hash_table.h" #include "io_lib/ztr.h" #include "io_lib/mFILE.h" #define SRF_MAGIC "SSRF" #define SRF_VERSION "1.3" #define SRFB_CONTAINER 'S' #define SRFB_XML 'X' #define SRFB_TRACE_HEADER 'H' #define SRFB_TRACE_BODY 'R' #define SRFB_INDEX 'I' /* Lack of index => 8 zero bytes at end of file to indicate zero length */ #define SRFB_NULL_INDEX '\0' /*--- Public structures */ /* Container header - several per file */ typedef struct { int block_type; char version[256]; char container_type; char base_caller[256]; char base_caller_version[256]; } srf_cont_hdr_t; /* Trace header - several per container */ typedef struct { int block_type; char read_prefix_type; char id_prefix[256]; uint32_t trace_hdr_size; unsigned char *trace_hdr; } srf_trace_hdr_t; /* Trace body - several per trace header */ typedef struct { int block_type; int read_id_length; char read_id[256]; unsigned char flags; uint32_t trace_size; unsigned char *trace; } srf_trace_body_t; /* XML - NCBI TraceInfo data block */ typedef struct { uint32_t xml_len; char *xml; } srf_xml_t; #define SRF_READ_FLAG_BAD_MASK (1<<0) #define SRF_READ_FLAG_WITHDRAWN_MASK (1<<1) #define SRF_READ_FLAG_USER_MASK (7<<5) /* Indexing */ typedef struct { char magic[4]; char version[4]; uint64_t size; uint32_t n_container; uint32_t n_data_block_hdr; uint64_t n_buckets; int8_t index_type; int8_t dbh_pos_stored_sep; char dbh_file[256]; char cont_file[256]; int index_hdr_sz; /* size of the above data on disk */ } srf_index_hdr_t; /* In-memory index itself */ #define SRF_INDEX_NAME_BLOCK_SIZE 10000000 typedef struct { size_t used; size_t space; char *names; } srf_name_block_t; typedef struct { char ch_file[PATH_MAX+1]; char th_file[PATH_MAX+1]; Array ch_pos; Array th_pos; Array name_blocks; int dbh_pos_stored_sep; HashTable *db_hash; } srf_index_t; /* Master SRF object */ typedef struct { FILE *fp; /* Cached copies of each of the most recent chunk types loaded */ srf_cont_hdr_t ch; srf_trace_hdr_t th; srf_trace_body_t tb; srf_xml_t xml; srf_index_hdr_t hdr; /* Private: cached data for use by srf_next_ztr */ ztr_t *ztr; mFILE *mf; long mf_pos, mf_end; } srf_t; #define SRF_INDEX_MAGIC "Ihsh" #define SRF_INDEX_VERSION "1.01" /*--- Initialisation */ srf_t *srf_create(FILE *fp); srf_t *srf_open(char *fn, char *mode); void srf_destroy(srf_t *srf, int auto_close); /*--- Base type I/O methods */ int srf_write_pstring(srf_t *srf, char *str); int srf_write_pstringb(srf_t *srf, char *str, int length); int srf_read_pstring(srf_t *srf, char *str); int srf_read_uint32(srf_t *srf, uint32_t *val); int srf_write_uint32(srf_t *srf, uint32_t val); int srf_read_uint64(srf_t *srf, uint64_t *val); int srf_write_uint64(srf_t *srf, uint64_t val); /*--- Mid level I/O - srf block */ srf_cont_hdr_t *srf_construct_cont_hdr(srf_cont_hdr_t *ch, char *bc, char *bc_version); void srf_destroy_cont_hdr(srf_cont_hdr_t *ch); int srf_read_cont_hdr(srf_t *srf, srf_cont_hdr_t *ch); int srf_write_cont_hdr(srf_t *srf, srf_cont_hdr_t *ch); int srf_read_xml(srf_t *srf, srf_xml_t *xml); int srf_write_xml(srf_t *srf, srf_xml_t *xml); srf_trace_hdr_t *srf_construct_trace_hdr(srf_trace_hdr_t *th, char *prefix, unsigned char *header, uint32_t header_sz); void srf_destroy_trace_hdr(srf_trace_hdr_t *th); int srf_read_trace_hdr(srf_t *srf, srf_trace_hdr_t *th); int srf_write_trace_hdr(srf_t *srf, srf_trace_hdr_t *th); srf_trace_body_t *srf_construct_trace_body(srf_trace_body_t *th, char *suffix, int suffix_len, unsigned char *body, uint32_t body_size, unsigned char flags); void srf_destroy_trace_body(srf_trace_body_t *th); int srf_write_trace_body(srf_t *srf, srf_trace_body_t *th); int srf_read_trace_body(srf_t *srf, srf_trace_body_t *th, int no_trace); int srf_read_index_hdr(srf_t *srf, srf_index_hdr_t *hdr, int no_seek); int srf_write_index_hdr(srf_t *srf, srf_index_hdr_t *hdr); srf_index_t *srf_index_create(char *ch_file, char *th_file, int dbh_sep); void srf_index_destroy(srf_index_t *idx); void srf_index_stats(srf_index_t *idx, FILE *fp); int srf_index_add_cont_hdr(srf_index_t *idx, uint64_t pos); int srf_index_add_trace_hdr(srf_index_t *idx, uint64_t pos); int srf_index_add_trace_body(srf_index_t *idx, char *name, uint64_t pos); int srf_index_write(srf_t *srf, srf_index_t *idx); /*--- Higher level I/O functions */ mFILE *srf_next_trace(srf_t *srf, char *name); ztr_t *srf_next_ztr_flags(srf_t *srf, char *name, int filter_mask, int *flags); ztr_t *srf_next_ztr(srf_t *srf, char *name, int filter_mask); ztr_t *partial_decode_ztr(srf_t *srf, mFILE *mf, ztr_t *z); ztr_t *ztr_dup(ztr_t *src); int srf_next_block_type(srf_t *srf); /* peek ahead */ int srf_next_block_details(srf_t *srf, uint64_t *pos, char *name); int srf_find_trace(srf_t *srf, char *trace, uint64_t *cpos, uint64_t *hpos, uint64_t *dpos); int construct_trace_name(char *fmt, unsigned char *suffix, int suffix_len, char *name, int name_len); #endif /* _SRF_H_ */ io_lib-1.14.6/io_lib/pooled_alloc.h0000644000031500020650000000420712354177666014043 00000000000000/* * Copyright (c) 2009 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef _POOLED_ALLOC_H_ #define _POOLED_ALLOC_H_ /* * Implements a pooled block allocator where all items are the same size, * but we need many of them. */ typedef struct { void *pool; size_t used; } pool_t; typedef struct { size_t dsize; size_t npools; pool_t *pools; void *free; } pool_alloc_t; pool_alloc_t *pool_create(size_t dsize); void pool_destroy(pool_alloc_t *p); void *pool_alloc(pool_alloc_t *p); void pool_free(pool_alloc_t *p, void *ptr); #endif /*_POOLED_ALLOC_H_*/ io_lib-1.14.6/io_lib/cram.h0000644000031500020650000000454512467411454012325 00000000000000/* * Copyright (c) 2013 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /*! \file * CRAM interface. * * Consider using the higher level scram_*() API for programs that wish to * be file format agnostic. * * This API should be used for CRAM specific code. The specifics of the * public API are implemented in cram_io.h, cram_encode.h and cram_decode.h * although these should not be included directly (use this file instead). */ #ifdef __cplusplus extern "C" { #endif #ifdef SAMTOOLS # include "io_lib/cram_samtools.h" #endif #ifndef _CRAM_H_ #define _CRAM_H_ #include "io_lib/sam_header.h" #include "cram_structs.h" #include "cram_io.h" #include "cram_encode.h" #include "cram_decode.h" #include "cram_stats.h" #include "cram_codecs.h" #include "cram_index.h" #endif #ifdef __cplusplus } #endif io_lib-1.14.6/io_lib/cram_structs.h0000644000031500020650000007033212616354355014113 00000000000000/* * Copyright (c) 2013 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef _CRAM_STRUCTS_H_ #define _CRAM_STRUCTS_H_ #ifdef __cplusplus extern "C" { #endif /* * Defines in-memory structs for the basic file-format objects in the * CRAM format. * * The basic file format is: * File-def SAM-hdr Container Container ... * * Container: * Service-block data-block data-block ... * * Multiple blocks in a container are grouped together as slices, * also sometimes referred to as landmarks in the spec. */ #include #include "io_lib/hash_table.h" // From io_lib aka staden-read #include "io_lib/thread_pool.h" #include "io_lib/mFILE.h" #ifdef SAMTOOLS // From within samtools/HTSlib # include "io_lib/string_alloc.h" #else // From within io_lib # include "io_lib/bam.h" // For BAM header parsing #endif #define SEQS_PER_SLICE 10000 #define BASES_PER_SLICE (SEQS_PER_SLICE*500) #define SLICE_PER_CNT 1 #define CRAM_SUBST_MATRIX "CGTNAGTNACTNACGNACGT" // TN only in Cram v1 //#define TN_external #define MAX_STAT_VAL 1024 //#define MAX_STAT_VAL 16 typedef struct { int freqs[MAX_STAT_VAL]; HashTable *h; int nsamp; // total number of values added int nvals; // total number of unique values added } cram_stats; /* NB: matches java impl, not the spec */ enum cram_encoding { E_NULL = 0, E_EXTERNAL = 1, E_GOLOMB = 2, E_HUFFMAN = 3, E_BYTE_ARRAY_LEN = 4, E_BYTE_ARRAY_STOP = 5, E_BETA = 6, E_SUBEXP = 7, E_GOLOMB_RICE = 8, E_GAMMA = 9, E_NUM_CODECS = 10, /* Number of codecs, not a real one. */ }; enum cram_external_type { E_INT = 1, E_LONG = 2, E_BYTE = 3, E_BYTE_ARRAY = 4, E_BYTE_ARRAY_BLOCK = 5, }; /* External IDs used by this implementation (only assumed during writing) */ enum cram_DS_ID { DS_CORE = 0, DS_aux = 1, // aux_blk DS_aux_OQ = 2, DS_aux_BQ = 3, DS_aux_BD = 4, DS_aux_BI = 5, DS_aux_FZ = 6, // also ZM:B DS_aux_oq = 7, // other qualities DS_aux_os = 8, // other sequences DS_aux_oz = 9, // other strings DS_ref, DS_RN, // name_blk DS_QS, // qual_blk DS_IN, // base_blk DS_SC, // soft_blk DS_BF, // start loop DS_CF, DS_AP, DS_RG, DS_MQ, DS_NS, DS_MF, DS_TS, DS_NP, DS_NF, DS_RL, DS_FN, DS_FC, DS_FP, DS_DL, DS_BA, DS_BS, DS_TL, DS_RI, DS_RS, DS_PD, DS_HC, DS_BB, DS_QQ, DS_TN, // end loop DS_RN_len, DS_SC_len, DS_BB_len, DS_QQ_len, DS_TC, // CRAM v1.0 tags DS_TM, // test DS_TV, // test DS_END, }; /* "File Definition Structure" */ typedef struct { char magic[4]; uint8_t major_version; uint8_t minor_version; char file_id[20]; // Filename or SHA1 checksum } cram_file_def; #define CRAM_MAJOR_VERS(v) ((v) >> 8) #define CRAM_MINOR_VERS(v) ((v) & 0xff) #define IS_CRAM_1_VERS(fd) (CRAM_MAJOR_VERS((fd)->version)==1) #define IS_CRAM_2_VERS(fd) (CRAM_MAJOR_VERS((fd)->version)==2) #define IS_CRAM_3_VERS(fd) (CRAM_MAJOR_VERS((fd)->version)==3) struct cram_slice; enum cram_block_method { BM_ERROR = -1, RAW = 0, GZIP = 1, // Z_FILTERED BZIP2 = 2, LZMA = 3, RANS0 = 4, RANS1 = 10, // Not externalised; stored as RANS (generic) GZIP_RLE = 11, // Z_RLE, NB: not externalised in CRAM GZIP_1 = 12, // Z_DEFAULT_STRATEGY level 1, NB: not externalised in CRAM }; enum cram_content_type { CT_ERROR = -1, FILE_HEADER = 0, COMPRESSION_HEADER = 1, MAPPED_SLICE = 2, UNMAPPED_SLICE = 3, // CRAM_1_VERS only EXTERNAL = 4, CORE = 5, }; /* Compression metrics */ typedef struct { // number of trials and time to next trial int trial; int next_trial; // aggregate sizes during trials int sz_gz_rle; int sz_gz_def; int sz_gz_1; int sz_rans0; int sz_rans1; int sz_bzip2; int sz_lzma; // resultant method from trials int method; int strat; // Revisions of method, to allow culling of continually failing ones. int gz_rle_cnt; int gz_def_cnt; int gz_1_cnt; int rans0_cnt; int rans1_cnt; int bzip2_cnt; int lzma_cnt; int revised_method; double gz_rle_extra; double gz_def_extra; double gz_1_extra; double rans0_extra; double rans1_extra; double bzip2_extra; double lzma_extra; } cram_metrics; /* Block */ typedef struct { enum cram_block_method method, orig_method; enum cram_content_type content_type; int32_t content_id; int32_t comp_size; int32_t uncomp_size; uint32_t crc32; int32_t idx; /* offset into data */ unsigned char *data; // For bit I/O size_t alloc; size_t byte; int bit; // To aid compression cram_metrics *m; // used to track aux block compression only } cram_block; struct cram_codec; /* defined in cram_codecs.h */ struct cram_map; #define CRAM_MAP_HASH 32 #define CRAM_MAP(a,b) (((a)*3+(b))&(CRAM_MAP_HASH-1)) /* Compression header block */ typedef struct { int32_t ref_seq_id; int32_t ref_seq_start; int32_t ref_seq_span; int32_t num_records; int32_t num_landmarks; int32_t *landmark; /* Flags from preservation map */ int mapped_qs_included; int unmapped_qs_included; int unmapped_placed; int qs_included; int read_names_included; int AP_delta; // indexed by ref-base and subst. code char substitution_matrix[5][4]; // TD Dictionary as a concatenated block cram_block *TD_blk; // Tag Dictionary int nTL; // number of TL entries in TD unsigned char **TL; // array of size nTL, pointer into TD_blk. HashTable *TD; // for encoding, keyed on TD entries HashTable *preservation_map; struct cram_map *rec_encoding_map[CRAM_MAP_HASH]; struct cram_map *tag_encoding_map[CRAM_MAP_HASH]; struct cram_codec *codecs[DS_END]; char *uncomp; // A single block of uncompressed data size_t uncomp_size, uncomp_alloc; unsigned int data_series; // See cram_fields enum below } cram_block_compression_hdr; typedef struct cram_map { int key; /* 0xe0 + 3 bytes */ enum cram_encoding encoding; int offset; /* Offset into a single block of memory */ int size; /* Size */ struct cram_codec *codec; struct cram_map *next; // for noddy internal hash } cram_map; typedef struct { struct cram_codec *codec; cram_block *blk; cram_metrics *m; } cram_tag_map; /* Mapped or unmapped slice header block */ typedef struct { enum cram_content_type content_type; int32_t ref_seq_id; /* if content_type == MAPPED_SLICE */ int32_t ref_seq_start; /* if content_type == MAPPED_SLICE */ int32_t ref_seq_span; /* if content_type == MAPPED_SLICE */ int32_t num_records; int32_t record_counter; int32_t num_blocks; int32_t num_content_ids; int32_t *block_content_ids; int32_t ref_base_id; /* if content_type == MAPPED_SLICE */ unsigned char md5[16]; HashTable *tags; /* hash of optional tags */ uint32_t BD_crc; /* base call digest */ uint32_t SD_crc; /* quality score digest */ } cram_block_slice_hdr; struct ref_entry; /* * Container. * * Conceptually a container is split into slices, and slices into blocks. * However on disk it's just a list of blocks and we need to query the * block types to identify the start/end points of the slices. * * OR... are landmarks the start/end points of slices? */ typedef struct { int32_t length; int32_t ref_seq_id; int32_t ref_seq_start; int32_t ref_seq_span; int32_t record_counter; int64_t num_bases; int32_t num_records; int32_t num_blocks; int32_t num_landmarks; int32_t *landmark; /* Size of container header above */ size_t offset; /* Compression header is always the first block? */ cram_block_compression_hdr *comp_hdr; cram_block *comp_hdr_block; /* For construction purposes */ int max_slice, curr_slice; // maximum number of slices int max_rec, curr_rec; // current and max recs per slice int max_c_rec, curr_c_rec; // current and max recs per container int slice_rec; // rec no. for start of this slice int curr_ref; // current ref ID. -2 for no previous int last_pos; // last record position struct cram_slice **slices, *slice; int pos_sorted; // boolean, 1=>position sorted data int max_apos; // maximum position, used if pos_sorted==0 int last_slice; // number of reads in last slice (0 for 1st) int multi_seq; // true if packing multi seqs per cont/slice int unsorted; // true is AP_delta is 0. /* Copied from fd before encoding, to allow multi-threading */ int ref_start, first_base, last_base, ref_id, ref_end; char *ref; //struct ref_entry *ref; /* For multi-threading */ bam_seq_t **bams; /* Statistics for encoding */ cram_stats *stats[DS_END]; HashTable *tags_used; // cram_tag_map[], per tag types in use. int *refs_used; // array of frequency of ref seq IDs // For experimental name delta char *last_name; uint32_t crc32; // Raw container bytes CRC uint64_t s_num_bases; // number of bases in this slice } cram_container; /* * A single cram record */ typedef struct { struct cram_slice *s; // Filled out by cram_decode only int32_t ref_id; // fixed for all recs in slice? int32_t flags; // BF int32_t cram_flags; // CF int32_t len; // RL int32_t apos; // AP int32_t rg; // RG int32_t name; // RN; idx to s->names_blk int32_t name_len; int32_t mate_line; // index to another cram_record int32_t mate_ref_id; int32_t mate_pos; // NP int32_t tlen; // TS // Auxiliary data int32_t ntags; // TC int32_t aux; // idx to s->aux_blk int32_t aux_size; // total size of packed ntags in aux_blk #ifndef TN_external int32_t TN_idx; // TN; idx to s->TN; #else int32_t tn; // idx to s->tn_blk #endif int TL; int32_t seq; // idx to s->seqs_blk int32_t qual; // idx to s->qual_blk int32_t cigar; // idx to s->cigar int32_t ncigar; int32_t aend; // alignment end int32_t mqual; // MQ int32_t feature; // idx to s->feature int32_t nfeature; // number of features int32_t mate_flags; // MF } cram_record; // Accessor macros as an analogue of the bam ones #define cram_qname(c) (&(c)->s->name_blk->data[(c)->name]) #define cram_seq(c) (&(c)->s->seqs_blk->data[(c)->seq]) #define cram_qual(c) (&(c)->s->qual_blk->data[(c)->qual]) #define cram_aux(c) (&(c)->s->aux_blk->data[(c)->aux]) #define cram_seqi(c,i) (cram_seq((c))[(i)]) #define cram_name_len(c) ((c)->name_len) #define cram_strand(c) (((c)->flags & BAM_FREVERSE) != 0) #define cram_mstrand(c) (((c)->flags & BAM_FMREVERSE) != 0) #define cram_cigar(c) (&((cr)->s->cigar)[(c)->cigar]) /* * A feature is a base difference, used for the sequence reference encoding. * (We generate these internally when writing CRAM.) */ typedef struct { union { struct { int pos; int code; int base; // substitution code } X; struct { int pos; int code; int base; // actual base & qual int qual; } B; struct { int pos; int code; int seq_idx; // index to s->seqs_blk int len; } b; struct { int pos; int code; int qual; } Q; struct { int pos; int code; int len; int seq_idx; // soft-clip multiple bases } S; struct { int pos; int code; int len; int seq_idx; // insertion multiple bases } I; struct { int pos; int code; int base; // insertion single base } i; struct { int pos; int code; int len; } D; struct { int pos; int code; int len; } N; struct { int pos; int code; int len; } P; struct { int pos; int code; int len; } H; }; } cram_feature; //// Turns [A-Z][A-Z] into an integer from 0 to 32*32 //#define ID(a) ((((a)[0]-'A')<<5)+(a)[1]-'A') /* * A slice is really just a set of blocks, but it * is the logical unit for decoding a number of * sequences. */ typedef struct cram_slice { cram_block_slice_hdr *hdr; cram_block *hdr_block; cram_block **block; cram_block **block_by_id; /* State used during encoding/decoding */ int last_apos, max_apos; /* Identifier used for auto-assigning read names */ uint64_t id; /* Array of decoded cram records */ cram_record *crecs; /* An dynamically growing buffers for data pointed * to by crecs[] array. */ uint32_t *cigar; uint32_t cigar_alloc; uint32_t ncigar; cram_feature *features; int nfeatures; int afeatures; // allocated size of features #ifndef TN_external // TN field (Tag Name) uint32_t *TN; int nTN, aTN; // used and allocated size for TN[] #else cram_block *tn_blk; int tn_id; #endif // For variable sized elements which are always external blocks. cram_block *name_blk; cram_block *seqs_blk; cram_block *qual_blk; cram_block *base_blk; cram_block *soft_blk; cram_block *aux_blk; // BAM aux block, used when going from CRAM to BAM HashTable *pair[2]; // for identifying read-pairs in this slice. char *ref; // slice of current reference int ref_start; // start position of current reference; int ref_end; // end position of current reference; int ref_id; uint32_t BD_crc; // base call digest uint32_t SD_crc; // quality score digest // For going from BAM to CRAM; an array of auxiliary blocks per type int naux_block; cram_block **aux_block; } cram_slice; /*----------------------------------------------------------------------------- * Consider moving reference handling to cram_refs.[ch] */ // from fa.fai / samtools faidx files typedef struct ref_entry { char *name; char *fn; int64_t length; int64_t offset; int bases_per_line; int line_length; int64_t count; // for shared references so we know to dealloc seq char *seq; mFILE *mf; } ref_entry; // References structure. typedef struct { string_alloc_t *pool; // String pool for holding filenames and SN vals HashTable *h_meta; // ref_entry*, index by name ref_entry **ref_id; // ref_entry*, index by ID int nref; // number of ref_entry char *fn; // current file opened FILE *fp; // and the FILE* to go with it. int count; // how many cram_fd sharing this refs struct pthread_mutex_t lock; // Mutex for multi-threaded updating ref_entry *last; // Last queried sequence int last_id; // Used in cram_ref_decr_locked to delay free } refs_t; /*----------------------------------------------------------------------------- * CRAM index * * Detect format by number of entries per line. * 5 => 1.0 (refid, start, nseq, C offset, slice) * 6 => 1.1 (refid, start, span, C offset, S offset, S size) * * Indices are stored in a nested containment list, which is trivial to set * up as the indices are on sorted data so we're appending to the nclist * in sorted order. Basically if a slice entirely fits within a previous * slice then we append to that slices list. This is done recursively. * * Lists are sorted on two dimensions: ref id + slice coords. */ typedef struct cram_index { int nslice, nalloc; // total number of slices struct cram_index *e; // array of size nslice int refid; // 1.0 1.1 int start; // 1.0 1.1 int end; // 1.1 int nseq; // 1.0 - undocumented int slice; // 1.0 landmark index, 1.1 landmark value int len; // 1.1 - size of slice in bytes int64_t offset; // 1.0 1.1 } cram_index; typedef struct { int refid; int start; int end; } cram_range; /*----------------------------------------------------------------------------- */ /* CRAM File handle */ typedef struct spare_bams { bam_seq_t **bams; struct spare_bams *next; } spare_bams; #if defined(CRAM_IO_CUSTOM_BUFFERING) typedef size_t (*cram_io_C_FILE_fread_t)(void *ptr, size_t size, size_t nmemb, void *stream); typedef size_t (*cram_io_C_FILE_fwrite_t)(void *ptr, size_t size, size_t nmemb, void *stream); typedef int (*cram_io_C_FILE_fseek_t)(void * fd, off_t offset, int whence); typedef off_t (*cram_io_C_FILE_ftell_t)(void * fd); typedef struct { void *user_data; cram_io_C_FILE_fread_t fread_callback; cram_io_C_FILE_fseek_t fseek_callback; cram_io_C_FILE_ftell_t ftell_callback; } cram_io_input_t; typedef struct { void *user_data; cram_io_C_FILE_fwrite_t fwrite_callback; cram_io_C_FILE_ftell_t ftell_callback; } cram_io_output_t; typedef cram_io_input_t * (*cram_io_allocate_read_input_t)(char const * filename, int const decompress); typedef cram_io_input_t * (*cram_io_deallocate_read_input_t)(cram_io_input_t * obj); typedef cram_io_output_t * (*cram_io_allocate_write_output_t)(char const * filename); typedef cram_io_output_t * (*cram_io_deallocate_write_output_t)(cram_io_output_t * obj); // FIXME: make cram_fd_input_buffer and cram_fd_input_buffer the same thing. // Ie cram_fd_io_buffer and internals fp_io_*. typedef struct { /* input buffer size */ size_t fp_in_buf_size; /* input buffer base pointer */ char *fp_in_buffer; /* position of buffer start in file */ uint64_t fp_in_buf_start; /* start of window pointer; same as fp_in_buffer */ char *fp_in_buf_pa; /* window current pointer */ char *fp_in_buf_pc; /* window end pointer; same as fp_in_buffer + fp_in_buf_size (no seeks) */ char *fp_in_buf_pe; } cram_fd_input_buffer; typedef struct { /* output buffer size */ size_t fp_out_buf_size; /* output buffer base pointer */ char *fp_out_buffer; /* position of buffer start in file */ uint64_t fp_out_buf_start; /* start of window pointer; same as fp_out_buffer */ char *fp_out_buf_pa; /* window current pointer */ char *fp_out_buf_pc; /* window end pointer */ char *fp_out_buf_pe; } cram_fd_output_buffer; #endif typedef struct { FILE *fp_in; #if defined(CRAM_IO_CUSTOM_BUFFERING) cram_fd_input_buffer *fp_in_buffer; cram_io_input_t *fp_in_callbacks; cram_io_allocate_read_input_t fp_in_callback_allocate_function; cram_io_deallocate_read_input_t fp_in_callback_deallocate_function; cram_fd_output_buffer *fp_out_buffer; cram_io_output_t *fp_out_callbacks; cram_io_allocate_write_output_t fp_out_callback_allocate_function; cram_io_deallocate_write_output_t fp_out_callback_deallocate_function; #endif FILE *fp_out; int mode; // 'r' or 'w' int version; cram_file_def *file_def; SAM_hdr *header; char *prefix; int record_counter; int slice_num; int err; // Most recent compression header decoded //cram_block_compression_hdr *comp_hdr; //cram_block_slice_hdr *slice_hdr; // Current container being processed. cram_container *ctr; // positions for encoding or decoding int first_base, last_base; // cached reference portion refs_t *refs; // ref meta-data structure char *ref, *ref_free; // current portion held in memory int ref_id; int ref_start; int ref_end; char *ref_fn; // reference fasta filename // compression level and metrics int level; cram_metrics *m[DS_END]; HashTable *tags_used; // cram_metrics[], per tag types in use. int next_content_id; // options int decode_md; // Whether to export MD and NM tags int verbose; int seqs_per_slice; int bases_per_slice; int slices_per_container; int embed_ref; int no_ref; int ignore_md5; int use_bz2; int use_rans; int use_lzma; int shared_ref; enum quality_binning binning; unsigned int required_fields; cram_range range; // lookup tables, stored here so we can be trivially multi-threaded unsigned int bam_flag_swap[0x1000]; // cram -> bam flags unsigned int cram_flag_swap[0x1000];// bam -> cram flags unsigned char L1[256]; // ACGT{*} ->0123{4} unsigned char L2[256]; // ACGTN{*}->01234{5} char cram_sub_matrix[32][32]; // base substituion codes int index_sz; cram_index *index; // array, sizeof index_sz off_t first_container; int eof; int last_slice; // number of recs encoded in last slice int multi_seq; int unsorted; int empty_container; // Marker for EOF block // thread pool int own_pool; t_pool *pool; t_results_queue *rqueue; pthread_mutex_t *metrics_lock; pthread_mutex_t *ref_lock; spare_bams *bl; pthread_mutex_t *bam_list_lock; void *job_pending; int ooc; // out of containers. int ignore_chksum; } cram_fd; #if defined(CRAM_IO_CUSTOM_BUFFERING) extern size_t cram_io_input_buffer_read(void *ptr, size_t size, size_t nmemb, cram_fd * fd); extern int cram_io_input_buffer_seek(cram_fd * fd, off_t offset, int whence); extern int cram_io_input_buffer_underflow(cram_fd * fd); extern char * cram_io_input_buffer_fgets(char * s, int size, cram_fd * fd); extern int cram_io_flush_output_buffer(cram_fd *fd); #endif #if defined(CRAM_IO_CUSTOM_BUFFERING) #define CRAM_IO_GETC(fd) ((fd->fp_in_buffer->fp_in_buf_pc!=fd->fp_in_buffer->fp_in_buf_pe) ? ((int)((unsigned char)(*(fd->fp_in_buffer->fp_in_buf_pc++)))) : cram_io_input_buffer_underflow(fd)) #define CRAM_IO_READ(ptr, size, nmemb, fd) cram_io_input_buffer_read(ptr,size,nmemb,fd) #define CRAM_IO_SEEK(fd, offset, whence) cram_io_input_buffer_seek(fd, offset, whence) #define CRAM_IO_TELLO(fd) (fd->fp_in_buffer->fp_in_buf_start +(fd->fp_in_buffer->fp_in_buf_pc-fd->fp_in_buffer->fp_in_buf_pa)) #define CRAM_IO_FGETS(s,size,fd) cram_io_input_buffer_fgets(s,size,fd) #define CRAM_IO_PUTC(c,fd) cram_io_output_buffer_putc(c,fd) #define CRAM_IO_WRITE(ptr, size, nmemb, fd) cram_io_output_buffer_write(ptr,size,nmemb,fd) #define CRAM_IO_FLUSH(fd) cram_io_flush_output_buffer((fd)) #else // ! CRAM_IO_CUSTOM_BUFFERING #define CRAM_IO_GETC(fd) getc(fd->fp_in) #define CRAM_IO_READ(ptr, size, nmemb, fd) fread(ptr,size,nmemb,fd->fp_in) #define CRAM_IO_TELLO(fd) ftello(fd->fp_in) #define CRAM_IO_SEEK(fd, offset, whence) fseeko(fd->fp_in,offset,whence) #define CRAM_IO_FGETS(s,size,fd) fgets(s,size,fd->fp_in) #define CRAM_IO_PUTC(c,fd) putc(c,fd->fp_out) #define CRAM_IO_WRITE(ptr, size, nmemb, fd) fwrite(ptr,size,nmemb,fd->fp_out) #define CRAM_IO_FLUSH(fd) (fd->fp_out ? fflush(fd->fp_out) : 0) #endif // end CRAM_IO_CUSTOM_BUFFERING // REQUIRED_FIELDS enum sam_fields { SAM_QNAME = 0x00000001, SAM_FLAG = 0x00000002, SAM_RNAME = 0x00000004, SAM_POS = 0x00000008, SAM_MAPQ = 0x00000010, SAM_CIGAR = 0x00000020, SAM_RNEXT = 0x00000040, SAM_PNEXT = 0x00000080, SAM_TLEN = 0x00000100, SAM_SEQ = 0x00000200, SAM_QUAL = 0x00000400, SAM_AUX = 0x00000800, SAM_RGAUX = 0x00001000, }; // Translation of required fields to cram data series enum cram_fields { CRAM_BF = 0x00000001, CRAM_AP = 0x00000002, CRAM_FP = 0x00000004, CRAM_RL = 0x00000008, CRAM_DL = 0x00000010, CRAM_NF = 0x00000020, CRAM_BA = 0x00000040, CRAM_QS = 0x00000080, CRAM_FC = 0x00000100, CRAM_FN = 0x00000200, CRAM_BS = 0x00000400, CRAM_IN = 0x00000800, CRAM_RG = 0x00001000, CRAM_MQ = 0x00002000, CRAM_TL = 0x00004000, CRAM_RN = 0x00008000, CRAM_NS = 0x00010000, CRAM_NP = 0x00020000, CRAM_TS = 0x00040000, CRAM_MF = 0x00080000, CRAM_CF = 0x00100000, CRAM_RI = 0x00200000, CRAM_RS = 0x00400000, CRAM_PD = 0x00800000, CRAM_HC = 0x01000000, CRAM_SC = 0x02000000, CRAM_BB = 0x04000000, CRAM_BB_len = 0x08000000, CRAM_QQ = 0x10000000, CRAM_QQ_len = 0x20000000, CRAM_aux= 0x40000000, CRAM_ALL= 0x7fffffff, }; // A CIGAR opcode, but not necessarily the implications of it. Eg FC/FP may // encode a base difference, but we don't need to know what it is for CIGAR. // If we have a soft-clip or insertion, we do need SC/IN though to know how // long that array is. #define CRAM_CIGAR (CRAM_FN | CRAM_FP | CRAM_FC | CRAM_DL | CRAM_IN | \ CRAM_SC | CRAM_HC | CRAM_PD | CRAM_RS | CRAM_RL | CRAM_BF) #define CRAM_SEQ (CRAM_CIGAR | CRAM_BA | CRAM_QS | CRAM_BS | \ CRAM_RL | CRAM_AP | CRAM_BB | CRAM_QQ) enum cram_option { CRAM_OPT_DECODE_MD, CRAM_OPT_PREFIX, CRAM_OPT_VERBOSITY, CRAM_OPT_SEQS_PER_SLICE, CRAM_OPT_SLICES_PER_CONTAINER, CRAM_OPT_RANGE, CRAM_OPT_VERSION, CRAM_OPT_EMBED_REF, CRAM_OPT_IGNORE_MD5, CRAM_OPT_REFERENCE, CRAM_OPT_MULTI_SEQ_PER_SLICE, CRAM_OPT_NO_REF, CRAM_OPT_USE_BZIP2, CRAM_OPT_SHARED_REF, CRAM_OPT_NTHREADS, CRAM_OPT_THREAD_POOL, CRAM_OPT_BINNING, CRAM_OPT_USE_ARITH, CRAM_OPT_USE_LZMA, CRAM_OPT_REQUIRED_FIELDS, CRAM_OPT_USE_RANS, CRAM_OPT_IGNORE_CHKSUM, CRAM_OPT_BASES_PER_SLICE, }; /* BF bitfields */ /* Corrected in 1.1. Use bam_flag_swap[bf] and BAM_* macros for 1.0 & 1.1 */ #define CRAM_FPAIRED 256 #define CRAM_FPROPER_PAIR 128 #define CRAM_FUNMAP 64 #define CRAM_FREVERSE 32 #define CRAM_FREAD1 16 #define CRAM_FREAD2 8 #define CRAM_FSECONDARY 4 #define CRAM_FQCFAIL 2 #define CRAM_FDUP 1 #define DS_aux_S "\001" #define DS_aux_OQ_S "\002" #define DS_aux_BQ_S "\003" #define DS_aux_BD_S "\004" #define DS_aux_BI_S "\005" #define DS_aux_FZ_S "\006" #define DS_aux_oq_S "\007" #define DS_aux_os_S "\010" #define DS_aux_oz_S "\011" #define CRAM_M_REVERSE 1 #define CRAM_M_UNMAP 2 /* CF bitfields */ #define CRAM_FLAG_PRESERVE_QUAL_SCORES (1<<0) #define CRAM_FLAG_DETACHED (1<<1) #define CRAM_FLAG_MATE_DOWNSTREAM (1<<2) #define CRAM_FLAG_NO_SEQ (1<<3) #ifdef __cplusplus } #endif #endif /* _CRAM_STRUCTS_H_ */ io_lib-1.14.6/io_lib/cram_io.h0000644000031500020650000004142112573326027013005 00000000000000/* * Copyright (c) 2013, 2014, 2015 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * Author: James Bonfield, Wellcome Trust Sanger Institute. 2013 */ /*! \file * Include cram.h instead. * * This is an internal part of the CRAM system and is automatically included * when you #include cram.h. * * Implements the low level CRAM I/O primitives. * This includes basic data types such as byte, int, ITF-8, * maps, bitwise I/O, etc. */ #ifndef _CRAM_IO_H_ #define _CRAM_IO_H_ #ifdef __cplusplus extern "C" { #endif #define ITF8_MACROS #include #include #include /**@{ ---------------------------------------------------------------------- * ITF8 encoding and decoding. * * Also see the itf8_get and itf8_put macros. */ /*! INTERNAL: Converts two characters into an integer for use in switch{} */ #define CRAM_KEY(a,b) (((a)<<8)|((b))) /*! Reads an integer in ITF-8 encoding from 'fd' and stores it in * *val. * * @return * Returns the number of bytes read on success; * -1 on failure */ int itf8_decode(cram_fd *fd, int32_t *val); #ifndef ITF8_MACROS /*! Reads an integer in ITF-8 encoding from 'cp' and stores it in * *val. * * @return * Returns the number of bytes read on success; * -1 on failure */ int itf8_get(char *cp, int32_t *val_p); /*! Stores a value to memory in ITF-8 format. * * @return * Returns the number of bytes required to store the number. * This is a maximum of 5 bytes. */ int itf8_put(char *cp, int32_t val); #else /* * Macro implementations of the above */ #define itf8_get(c,v) (((uc)(c)[0]<0x80)?(*(v)=(uc)(c)[0],1):(((uc)(c)[0]<0xc0)?(*(v)=(((uc)(c)[0]<<8)|(uc)(c)[1])&0x3fff,2):(((uc)(c)[0]<0xe0)?(*(v)=(((uc)(c)[0]<<16)|((uc)(c)[1]<<8)|(uc)(c)[2])&0x1fffff,3):(((uc)(c)[0]<0xf0)?(*(v)=(((uc)(c)[0]<<24)|((uc)(c)[1]<<16)|((uc)(c)[2]<<8)|(uc)(c)[3])&0x0fffffff,4):(*(v)=(((uc)(c)[0]&0x0f)<<28)|((uc)(c)[1]<<20)|((uc)(c)[2]<<12)|((uc)(c)[3]<<4)|((uc)(c)[4]&0x0f),5))))) #define itf8_put(c,v) ((!((v)&~0x7f))?((c)[0]=(v),1):(!((v)&~0x3fff))?((c)[0]=((v)>>8)|0x80,(c)[1]=(v)&0xff,2):(!((v)&~0x1fffff))?((c)[0]=((v)>>16)|0xc0,(c)[1]=((v)>>8)&0xff,(c)[2]=(v)&0xff,3):(!((v)&~0xfffffff))?((c)[0]=((v)>>24)|0xe0,(c)[1]=((v)>>16)&0xff,(c)[2]=((v)>>8)&0xff,(c)[3]=(v)&0xff,4):((c)[0]=0xf0|(((v)>>28)&0xff),(c)[1]=((v)>>20)&0xff,(c)[2]=((v)>>12)&0xff,(c)[3]=((v)>>4)&0xff,(c)[4]=(v)&0xf,5)) #define itf8_size(v) ((!((v)&~0x7f))?1:(!((v)&~0x3fff))?2:(!((v)&~0x1fffff))?3:(!((v)&~0xfffffff))?4:5) #endif int ltf8_put(char *cp, int64_t val); /* Version of itf8_get that checks it hasn't run out of input */ extern const int itf8_bytes[16]; static inline int safe_itf8_get(const char *cp, const char *endp, int32_t *val_p) { const unsigned char *up = (unsigned char *)cp; if (endp - cp < 5 && (cp >= endp || endp - cp < itf8_bytes[up[0]>>4])) return 0; if (up[0] < 0x80) { *val_p = up[0]; return 1; } else if (up[0] < 0xc0) { *val_p = ((up[0] <<8) | up[1]) & 0x3fff; return 2; } else if (up[0] < 0xe0) { *val_p = ((up[0]<<16) | (up[1]<< 8) | up[2]) & 0x1fffff; return 3; } else if (up[0] < 0xf0) { *val_p = ((up[0]<<24) | (up[1]<<16) | (up[2]<<8) | up[3]) & 0x0fffffff; return 4; } else { *val_p = ((up[0] & 0x0f)<<28) | (up[1]<<20) | (up[2]<<12) | (up[3]<<4) | (up[4] & 0x0f); return 5; } } /*! Pushes a value in ITF8 format onto the end of a block. * * This shouldn't be used for high-volume data as it is not the fastest * method. * * @return * Returns the number of bytes written */ int itf8_put_blk(cram_block *blk, int val); /**@}*/ /**@{ ---------------------------------------------------------------------- * CRAM blocks - the dynamically growable data block. We have code to * create, update, (un)compress and read/write. * * These are derived from the deflate_interlaced.c blocks, but with the * CRAM extension of content types and IDs. */ /*! Allocates a new cram_block structure with a specified content_type and * id. * * @return * Returns block pointer on success; * NULL on failure */ cram_block *cram_new_block(enum cram_content_type content_type, int content_id); /*! Reads a block from a cram file. * * @return * Returns cram_block pointer on success; * NULL on failure */ cram_block *cram_read_block(cram_fd *fd); /*! Writes a CRAM block. * * @return * Returns 0 on success; * -1 on failure */ int cram_write_block(cram_fd *fd, cram_block *b); /*! Frees a CRAM block, deallocating internal data too. */ void cram_free_block(cram_block *b); /*! Uncompresses a CRAM block, if compressed. * * @return * Returns 0 on success; * -1 on failure */ int cram_uncompress_block(cram_block *b); /*! Compresses a block. * * Compresses a block using one of two different zlib strategies. If we only * want one choice set strat2 to be -1. * * The logic here is that sometimes Z_RLE does a better job than Z_FILTERED * or Z_DEFAULT_STRATEGY on quality data. If so, we'd rather use it as it is * significantly faster. * * @return * Returns 0 on success; * -1 on failure */ int cram_compress_block(cram_fd *fd, cram_block *b, cram_metrics *metrics, int method, int level); cram_metrics *cram_new_metrics(void); char *cram_block_method2str(enum cram_block_method m); char *cram_content_type2str(enum cram_content_type t); /* * Find an external block by its content_id */ static inline cram_block *cram_get_block_by_id(cram_slice *slice, int id) { if (slice->block_by_id && id >= 0 && id < 1024) { return slice->block_by_id[id]; } else { int i; for (i = 0; i < slice->hdr->num_blocks; i++) { cram_block *b = slice->block[i]; if (b && b->content_type == EXTERNAL && b->content_id == id) return b; } } return NULL; } /* --- Accessor macros for manipulating blocks on a byte by byte basis --- */ /* Block size and data pointer. */ #define BLOCK_SIZE(b) ((b)->byte) #define BLOCK_DATA(b) ((b)->data) /* Returns the address one past the end of the block */ #define BLOCK_END(b) (&(b)->data[(b)->byte]) /* Request block to be at least 'l' bytes long */ #define BLOCK_RESIZE(b,l) \ do { \ while((b)->alloc <= (l)) { \ (b)->alloc = (b)->alloc ? (b)->alloc*1.5 : 1024; \ (b)->data = realloc((b)->data, (b)->alloc); \ } \ } while(0) /* Ensure the block can hold at least another 'l' bytes */ #define BLOCK_GROW(b,l) BLOCK_RESIZE((b), BLOCK_SIZE((b)) + (l)) /* Append string 's' of length 'l' */ #define BLOCK_APPEND(b,s,l) \ do { \ BLOCK_GROW((b),(l)); \ memcpy(BLOCK_END((b)), (s), (l)); \ BLOCK_SIZE((b)) += (l); \ } while (0) /* Append as single character 'c' */ #define BLOCK_APPEND_CHAR(b,c) \ do { \ BLOCK_GROW((b),1); \ (b)->data[(b)->byte++] = (c); \ } while (0) /* Append a single unsigned integer */ #define BLOCK_APPEND_UINT(b,i) \ do { \ unsigned char *cp; \ BLOCK_GROW((b),11); \ cp = &(b)->data[(b)->byte]; \ (b)->byte += append_uint(cp, (i)) - cp; \ } while (0) #define BLOCK_UPLEN(b) \ (b)->comp_size = (b)->uncomp_size = BLOCK_SIZE((b)) /**@}*/ /**@{ ---------------------------------------------------------------------- * Reference sequence handling */ /*! Loads a reference set from fn and stores in the cram_fd. * * @return * Returns 0 on success; * -1 on failure */ int cram_load_reference(cram_fd *fd, char *fn); /*! Generates a lookup table in refs based on the SQ headers in SAM_hdr. * * Indexes references by the order they appear in a BAM file. This may not * necessarily be the same order they appear in the fasta reference file. * * @return * Returns 0 on success; * -1 on failure */ int refs2id(refs_t *r, SAM_hdr *bfd); refs_t *refs_load_fai(refs_t *r_orig, char *fn, int is_err); char *load_ref_portion(FILE *fp, ref_entry *e, int start, int end); void refs_free(refs_t *r); /*! Returns a portion of a reference sequence from start to end inclusive. * * The returned pointer is owned by the cram_file fd and should not be freed * by the caller. It is valid only until the next cram_get_ref is called * with the same fd parameter (so is thread-safe if given multiple files). * * To return the entire reference sequence, specify start as 1 and end * as 0. * * @return * Returns reference on success; * NULL on failure */ char *cram_get_ref(cram_fd *fd, int id, int start, int end); void cram_ref_incr(refs_t *r, int id); void cram_ref_decr(refs_t *r, int id); /**@}*/ /**@{ ---------------------------------------------------------------------- * Containers */ /*! Creates a new container, specifying the maximum number of slices * and records permitted. * * @return * Returns cram_container ptr on success; * NULL on failure */ cram_container *cram_new_container(int nrec, int nslice); void cram_free_container(cram_container *c); /*! Reads a container header. * * @return * Returns cram_container on success; * NULL on failure or no container left (fd->err == 0). */ cram_container *cram_read_container(cram_fd *fd); /*! Writes a container structure. * * @return * Returns 0 on success; * -1 on failure */ int cram_write_container(cram_fd *fd, cram_container *h); /*! Flushes a container to disk. * * Flushes a completely or partially full container to disk, writing * container structure, header and blocks. This also calls the encoder * functions. * * @return * Returns 0 on success; * -1 on failure */ int cram_flush_container(cram_fd *fd, cram_container *c); int cram_flush_container_mt(cram_fd *fd, cram_container *c); /**@}*/ /**@{ ---------------------------------------------------------------------- * Compression headers; the first part of the container */ /*! Creates a new blank container compression header * * @return * Returns header ptr on success; * NULL on failure */ cram_block_compression_hdr *cram_new_compression_header(void); /*! Frees a cram_block_compression_hdr */ void cram_free_compression_header(cram_block_compression_hdr *hdr); /**@}*/ /**@{ ---------------------------------------------------------------------- * Slices and slice headers */ /*! Frees a slice header */ void cram_free_slice_header(cram_block_slice_hdr *hdr); /*! Frees a slice */ void cram_free_slice(cram_slice *s); /*! Creates a new empty slice in memory, for subsequent writing to * disk. * * @return * Returns cram_slice ptr on success; * NULL on failure */ cram_slice *cram_new_slice(enum cram_content_type type, int nrecs); /*! Loads an entire slice. * * FIXME: In 1.0 the native unit of slices within CRAM is broken * as slices contain references to objects in other slices. * To work around this while keeping the slice oriented outer loop * we read all slices and stitch them together into a fake large * slice instead. * * @return * Returns cram_slice ptr on success; * NULL on failure */ cram_slice *cram_read_slice(cram_fd *fd); /**@}*/ /**@{ ---------------------------------------------------------------------- * CRAM file definition (header) */ /*! Reads a CRAM file definition structure. * * @return * Returns file_def ptr on success; * NULL on failure */ cram_file_def *cram_read_file_def(cram_fd *fd); /*! Writes a cram_file_def structure to cram_fd. * * @return * Returns 0 on success; * -1 on failure */ int cram_write_file_def(cram_fd *fd, cram_file_def *def); /*! Frees a cram_file_def structure. */ void cram_free_file_def(cram_file_def *def); /**@}*/ /**@{ ---------------------------------------------------------------------- * SAM header I/O */ /*! Reads the SAM header from the first CRAM data block. * * Also performs minimal parsing to extract read-group * and sample information. * * @return * Returns SAM hdr ptr on success; * NULL on failure */ SAM_hdr *cram_read_SAM_hdr(cram_fd *fd); /*! Writes a CRAM SAM header. * * @return * Returns 0 on success; * -1 on failure */ int cram_write_SAM_hdr(cram_fd *fd, SAM_hdr *hdr); /**@}*/ /**@{ ---------------------------------------------------------------------- * The top-level cram opening, closing and option handling */ /*! Opens a CRAM file for read (mode "rb") or write ("wb"). * * The filename may be "-" to indicate stdin or stdout. * * @return * Returns file handle on success; * NULL on failure. */ cram_fd *cram_open(const char *filename, const char *mode); /*! Closes a CRAM file. * * @return * Returns 0 on success; * -1 on failure */ int cram_close(cram_fd *fd); /* * Flushes a CRAM file. * Useful for when writing to stdout without wishing to close the stream. * * Returns 0 on success * -1 on failure */ int cram_flush(cram_fd *fd); /* * Writes an EOF block to a CRAM file. * * Returns 0 on success * -1 on failure */ int cram_write_eof_block(cram_fd *fd); /*! Checks for end of file on a cram_fd stream. * * @return * Returns 0 if not at end of file * 1 if we hit an expected EOF (end of range or EOF block) * 2 for other EOF (end of stream without EOF block) */ int cram_eof(cram_fd *fd); /*! Sets options on the cram_fd. * * See CRAM_OPT_* definitions in cram_structs.h. * Use this immediately after opening. * * @return * Returns 0 on success; * -1 on failure */ int cram_set_option(cram_fd *fd, enum cram_option opt, ...); /*! Sets options on the cram_fd. * * See CRAM_OPT_* definitions in cram_structs.h. * Use this immediately after opening. * * @return * Returns 0 on success; * -1 on failure */ int cram_set_voption(cram_fd *fd, enum cram_option opt, va_list args); #if defined(CRAM_IO_CUSTOM_BUFFERING) /* * Opens a CRAM file for input via callbacks * * Returns file handle on success * NULL on failure. */ extern cram_fd *cram_open_by_callbacks( char const * filename, cram_io_allocate_read_input_t callback_allocate_function, cram_io_deallocate_read_input_t callback_deallocate_function, size_t const bufsize ); extern cram_fd * cram_openw_by_callbacks( char const * filename, cram_io_allocate_write_output_t callback_allocate_function, cram_io_deallocate_write_output_t callback_deallocate_function, size_t const bufsize ); extern cram_fd * cram_io_open( char const * filename, char const * mode, char const * fmode ); extern cram_fd * cram_io_open_by_callbacks( char const * filename, cram_io_allocate_read_input_t callback_allocate_function, cram_io_deallocate_read_input_t callback_deallocate_function, size_t const bufsize, int const decompress ); extern cram_fd * cram_io_openw_by_callbacks( char const * filename, cram_io_allocate_write_output_t callback_allocate_function, cram_io_deallocate_write_output_t callback_deallocate_function, size_t const bufsize ); extern cram_fd * cram_io_close(cram_fd * fd, int * fclose_result); extern cram_fd_output_buffer * cram_io_deallocate_output_buffer(cram_fd_output_buffer * buffer); extern cram_fd_output_buffer * cram_io_allocate_output_buffer(size_t const bufsize); #endif /**@}*/ #ifdef __cplusplus } #endif #endif /* _CRAM_IO_H_ */ io_lib-1.14.6/io_lib/cram_encode.h0000644000031500020650000000727112612134242013626 00000000000000/* * Copyright (c) 2013 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * Author: James Bonfield, Wellcome Trust Sanger Institute. 2013 */ /*! \file * Include cram.h instead. * * This is an internal part of the CRAM system and is automatically included * when you #include cram.h. * * Implements the encoding portion of CRAM I/O. Also see * cram_codecs.[ch] for the actual encoding functions themselves. */ #ifndef _CRAM_WRITE_H_ #define _CRAM_WRITE_H_ #ifdef __cplusplus extern "C" { #endif /* ---------------------------------------------------------------------- * CRAM sequence iterators. */ /*! Write iterator: put BAM format sequences into a CRAM file. * * We buffer up a containers worth of data at a time. * * FIXME: break this into smaller pieces. * * @return * Returns 0 on success; * -1 on failure */ int cram_put_bam_seq(cram_fd *fd, bam_seq_t *b); /* ---------------------------------------------------------------------- * Internal functions */ /*! INTERNAL: * Encodes a compression header block into a generic cram_block structure. * * @return * Returns cram_block ptr on success; * NULL on failure */ cram_block *cram_encode_compression_header(cram_fd *fd, cram_container *c, cram_block_compression_hdr *h); /*! INTERNAL: * Encodes a slice compression header. * * @return * Returns cram_block on success; * NULL on failure */ cram_block *cram_encode_slice_header(cram_fd *fd, cram_slice *s); /*! INTERNAL: * Encodes all slices in a container into blocks. * * @return * Returns 0 on success; * -1 on failure * * FIXME: separate into encode_container and write_container. Ideally * we should be able to do read_container / write_container or * decode_container / encode_container. */ int cram_encode_container(cram_fd *fd, cram_container *c); /*! INTERNAL: * * During cram_next_container or before the final flush at end of * file, we update the current slice headers and increment the slice * number to the next slice. * * See cram_next_container() and cram_close(). */ void cram_update_curr_slice(cram_container *c); #ifdef __cplusplus } #endif #endif io_lib-1.14.6/io_lib/cram_decode.h0000644000031500020650000000703412354177666013635 00000000000000/* * Copyright (c) 2013 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /*! \file * Include cram.h instead. * * This is an internal part of the CRAM system and is automatically included * when you #include cram.h. * * Implements the decoding portion of CRAM I/O. Also see * cram_codecs.[ch] for the actual encoding functions themselves. */ #ifndef _CRAM_READ_H_ #define _CRAM_READ_H_ #ifdef __cplusplus extern "C" { #endif /* ---------------------------------------------------------------------- * CRAM sequence iterators. */ /*! Read the next cram record and return it as a cram_record. * * Note that to decode cram_record the caller will need to look up some data * in the current slice, pointed to by fd->ctr->slice. This is valid until * the next call to cram_get_seq (which may invalidate it). * * @return * Returns record pointer on success (do not free); * NULL on failure */ cram_record *cram_get_seq(cram_fd *fd); /*! Read the next cram record and convert it to a bam_seq_t struct. * * @return * Returns 0 on success; * -1 on EOF or failure (check fd->err) */ int cram_get_bam_seq(cram_fd *fd, bam_seq_t **bam); /* ---------------------------------------------------------------------- * Internal functions */ /*! INTERNAL: * Decodes a CRAM block compression header. * * @return * Returns header ptr on success; * NULL on failure */ cram_block_compression_hdr *cram_decode_compression_header(cram_fd *fd, cram_block *b); /*! INTERNAL: * Decodes a CRAM (un)mapped slice header block. * * @return * Returns slice header ptr on success; * NULL on failure */ cram_block_slice_hdr *cram_decode_slice_header(cram_fd *fd, cram_block *b); /*! INTERNAL: * Decode an entire slice from container blocks. Fills out s->crecs[] array. * * @return * Returns 0 on success; * -1 on failure */ int cram_decode_slice(cram_fd *fd, cram_container *c, cram_slice *s, SAM_hdr *hdr); #ifdef __cplusplus } #endif #endif io_lib-1.14.6/io_lib/cram_codecs.h0000644000031500020650000001345512612213045013631 00000000000000/* * Copyright (c) 2013, 2014, 2015 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * Author: James Bonfield, Wellcome Trust Sanger Institute. 2013 */ #ifndef _CRAM_ENCODINGS_H_ #define _CRAM_ENCODINGS_H_ #ifdef __cplusplus extern "C" { #endif #include struct cram_codec; /* * Slow but simple huffman decoder to start with. * Read a bit at a time, keeping track of {length, value} * eg. 1 1 0 1 => {1,1}, {2,3}, {3,6}, {4,13} * * Keep track of this through the huffman code table. * For fast scanning we have an index of where the first code of length X * appears. */ typedef struct { int32_t symbol; int32_t p; // next code start value, minus index to codes[] int32_t code; int32_t len; } cram_huffman_code; typedef struct { int ncodes; cram_huffman_code *codes; } cram_huffman_decoder; #define MAX_HUFF 128 typedef struct { cram_huffman_code *codes; int nvals; int val2code[MAX_HUFF+1]; // value to code lookup for small values } cram_huffman_encoder; typedef struct { int32_t offset; int32_t nbits; } cram_beta_decoder; typedef struct { int32_t offset; } cram_gamma_decoder; typedef struct { int32_t offset; int32_t k; } cram_subexp_decoder; typedef struct { int32_t content_id; enum cram_external_type type; cram_block *b; } cram_external_decoder; typedef struct { struct cram_codec *len_codec; struct cram_codec *value_codec; } cram_byte_array_len_decoder; typedef struct { unsigned char stop; int32_t content_id; cram_block *b; } cram_byte_array_stop_decoder; typedef struct { enum cram_encoding len_encoding; enum cram_encoding val_encoding; void *len_dat; void *val_dat; struct cram_codec *len_codec; struct cram_codec *val_codec; } cram_byte_array_len_encoder; /* * A generic codec structure. */ typedef struct cram_codec { enum cram_encoding codec; cram_block *out; void (*free)(struct cram_codec *codec); int (*decode)(cram_slice *slice, struct cram_codec *codec, cram_block *in, char *out, int *out_size); int (*encode)(cram_slice *slice, struct cram_codec *codec, char *in, int in_size); int (*store)(struct cram_codec *codec, cram_block *b, char *prefix, int version); void (*reset)(struct cram_codec *codec); // used between slices in a container union { cram_huffman_decoder huffman; cram_external_decoder external; cram_beta_decoder beta; cram_gamma_decoder gamma; cram_subexp_decoder subexp; cram_byte_array_len_decoder byte_array_len; cram_byte_array_stop_decoder byte_array_stop; cram_huffman_encoder e_huffman; cram_external_decoder e_external; cram_byte_array_stop_decoder e_byte_array_stop; cram_byte_array_len_encoder e_byte_array_len; cram_beta_decoder e_beta; }; } cram_codec; char *cram_encoding2str(enum cram_encoding t); cram_codec *cram_decoder_init(enum cram_encoding codec, char *data, int size, enum cram_external_type option, int version); cram_codec *cram_encoder_init(enum cram_encoding codec, cram_stats *st, enum cram_external_type option, void *dat, int version); //int cram_decode(void *codes, char *in, int in_size, char *out, int *out_size); //void cram_decoder_free(void *codes); //#define GET_BIT_MSB(b,v) (void)(v<<=1, v|=(b->data[b->byte] >> b->bit)&1, (--b->bit == -1) && (b->bit = 7, b->byte++)) #define GET_BIT_MSB(b,v) (void)(v<<=1, v|=(b->data[b->byte] >> b->bit)&1, b->byte += (--b->bit<0), b->bit&=7) /* * Check that enough bits are left in a block to satisy a bit-based decoder. * Return 0 if there are enough * 1 if not. */ static inline int cram_not_enough_bits(cram_block *blk, int nbits) { if (nbits < 0 || blk->byte >= blk->uncomp_size || (blk->uncomp_size - blk->byte <= INT32_MAX / 8 + 1 && (blk->uncomp_size - blk->byte) * 8 + blk->bit - 7 < nbits)) { return nbits != 0 ? 1 : 0; } return 0; } /* * Returns the content_id used by this codec, also in id2 if byte_array_len. * Returns -1 for the CORE block and -2 for unneeded. * id2 is only filled out for BYTE_ARRAY_LEN which uses 2 codecs. */ int cram_codec_to_id(cram_codec *c, int *id2); #ifdef __cplusplus } #endif #endif /* _CRAM_ENCODINGS_H_ */ io_lib-1.14.6/io_lib/cram_index.h0000644000031500020650000000644512462710570013511 00000000000000/* * Copyright (c) 2013 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef _CRAM_INDEX_H_ #define _CRAM_INDEX_H_ #ifdef __cplusplus extern "C" { #endif /* * Loads a CRAM .crai index into memory. * Returns 0 for success * -1 for failure */ int cram_index_load(cram_fd *fd, char const * fn); #if defined(CRAM_IO_CUSTOM_BUFFERING) /* * Loads a CRAM .crai index into memory using callbacks. fn denotes the name of the cram file. * The suffix .crai will be appended to obtain the name of the index. * * Returns 0 for success * -1 for failure */ extern int cram_index_load_via_callbacks( cram_fd *fd, char const * fn, cram_io_allocate_read_input_t callback_allocate_function, cram_io_deallocate_read_input_t callback_deallocate_function ); #endif void cram_index_free(cram_fd *fd); /* * Searches the index for the first slice overlapping a reference ID * and position. * * Returns the cram_index pointer on sucess * NULL on failure */ cram_index *cram_index_query(cram_fd *fd, int refid, int pos, cram_index *frm); /* * Skips to a container overlapping the start coordinate listed in * cram_range. * * Returns 0 on success * -1 on failure */ int cram_seek_to_refpos(cram_fd *fd, cram_range *r); /* * Seek within a cram file. * * Returns 0 on success * -1 on failure */ int cram_seek(cram_fd *fd, off_t offset, int whence); /* * Builds an index file. * * fd is a newly opened cram file that we wish to index. * fn_base is the filename of the associated CRAM file. Internally we * add ".crai" to this to get the index filename. * * Returns 0 on success * -1 on failure */ int cram_index_build(cram_fd *fd, const char *fn_base); #ifdef __cplusplus } #endif #endif io_lib-1.14.6/io_lib/cram_stats.h0000644000031500020650000000466112354177666013553 00000000000000/* * Copyright (c) 2013 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * Author: James Bonfield, Wellcome Trust Sanger Institute. 2013 */ #ifndef _CRAM_STATS_H_ #define _CRAM_STATS_H_ #ifdef __cplusplus extern "C" { #endif #include "io_lib/hash_table.h" cram_stats *cram_stats_create(void); void cram_stats_add(cram_stats *st, int32_t val); void cram_stats_del(cram_stats *st, int32_t val); void cram_stats_dump(cram_stats *st); void cram_stats_free(cram_stats *st); /* * Computes entropy from integer frequencies for various encoding methods and * picks the best encoding. * * FIXME: we could reuse some of the code here for the actual encoding * parameters too. Eg the best 'k' for SUBEXP or the code lengths for huffman. * * Returns the best codec to use. */ enum cram_encoding cram_stats_encoding(cram_fd *fd, cram_stats *st); #ifdef __cplusplus } #endif #endif io_lib-1.14.6/io_lib/zfio.h0000644000031500020650000000410612354177666012354 00000000000000/* * Copyright (c) 2013 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef _ZFIO_H_ #define _ZFIO_H_ #include #include /* * Either a gzFile or a FILE. */ typedef struct { FILE *fp; gzFile gz; } zfp; off_t zftello(zfp *zf); int zfseeko(zfp *zf, off_t offset, int whence); char *zfgets(char *line, int size, zfp *zf); int zfputs(char *line, zfp *zf); zfp *zfopen(const char *path, const char *mode); int zfclose(zfp *zf); int zfpeek(zfp *zf); int zfeof(zfp *zf); #endif /* _ZFIO_H_ */ io_lib-1.14.6/io_lib/scram.h0000644000031500020650000001635312461421171012477 00000000000000/* * Copyright (c) 2013 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /*! \file * Generic SAM/BAM/CRAM interface. * * This file implements a higher level scram_*() API for programs that * wish to be file format agnostic. */ #ifndef _SCRAM_H_ #define _SCRAM_H_ #ifdef __cplusplus extern "C" { #endif #ifdef HAVE_CONFIG_H #include "io_lib_config.h" #endif #include "io_lib/bam.h" #include "io_lib/cram.h" /*! The primary file handle for reading and writing. */ typedef struct { int is_bam; int eof; union { bam_file_t *b; cram_fd *c; }; /* Primary Input/Output buffer */ unsigned char *buf; size_t alloc; size_t used; FILE *fp; // copy of file handle. t_pool *pool; } scram_fd; /* * An input stream in SCRAM is a large block of memory which we periodically * fread into. * * This input stream is then broken down into chunks of appropriate size * as used by the underlying format. The only tricky bit here is the first * portion (opening the underlying format) can use an unknown amount of * buffer due to the BAM header being variable length. * * Once we have this, scram_next_input() will return the next natural * chunk from the input buffer. This permits a single input buffer being * divided into multiple scram_buffers to pass to separate threads for * decoding. */ typedef struct { unsigned char *buf; size_t alloc; // allocated size of buf size_t size; // size loaded size_t usize; // size usable by the underlying format } scram_buffer_t; /*!@return * Returns 0 if not at end of file * 1 if we hit an expected EOF (end of range or EOF block) * 2 for other EOF (end of stream without EOF block) */ #define scram_eof(fd) ((fd)->eof) /*! Opens a file. * * If reading we look for the following mode parameters: * - r => Try SAM/BAM first, if fail try CRAM * - rb => BAM * - rc => CRAM * * If writing we look at the mode parameter: * - w => SAM * - wb => BAM * - wc => CRAM * * Additionally we can specify the compression level when writing * after the file type character, as 0 to 9. Eg "wb9" for maximum * compression of BAM or "wc0" for uncompressed CRAM. * * @return * Returns scram pointer on success * NULL on failure */ scram_fd *scram_open(const char *filename, const char *mode); #if defined(CRAM_IO_CUSTOM_BUFFERING) /* * Open CRAM file for reading via callbacks * * Returns scram pointer on success * NULL on failure */ scram_fd *scram_open_cram_via_callbacks( char const * filename, cram_io_allocate_read_input_t callback_allocate_function, cram_io_deallocate_read_input_t callback_deallocate_function, size_t const bufsize ); #endif /*! Closes a scram_fd handle * * @return * Returns 0 on success; * -1 on failure */ int scram_close(scram_fd *fd); /*! Returns the SAM_hdr struct. * * @return * The SAM_hdr struct on success; NULL on failure. */ SAM_hdr *scram_get_header(scram_fd *fd); /*! Sets the SAM_hdr struct. * * Note that this sets the raw pointer and does not take an internal * copy of it. If you need to do this call sam_hdr_dup() first. */ void scram_set_header(scram_fd *fd, SAM_hdr *sh); /*! Writes the SAM hdr. * * This calls the appropriate SAM, BAM or CRAM I/O function to write * out the SAM_hdr currently associated with this fd. * * @return * Returns 0 on success; * -1 on failure */ int scram_write_header(scram_fd *fd); /*! Returns the reference sequence array. * * Note: this only works for CRAM files. * * @return * Returns the refs structure on success; * NULL on failure. * * After failure, check with scram_eof(fd) to see whether an genuine * error occurred or whether we hit the end of file. */ refs_t *scram_get_refs(scram_fd *fd); /*! Sets the reference sequence array. * * Note: this only works for CRAM files. */ void scram_set_refs(scram_fd *fd, refs_t *refs); /*! * Replaces the FILE* input interface with an explicit buffer to decode * from. * * @Returns 0 on success; * -1 on failure */ int scram_input_buffer(scram_fd *fd, unsigned char *buf, size_t size); /*! Fetches the next sequence and returns it in BAM format. * * This reads a new sequence line from fd and returns it in the BAM * in-memory format, regardless of whether the input file was SAM, BAM * or CRAM. * * @param bsp bsp is a pointer to a bam_seq_t*, as our usual bam_seq_t * structure pointer may be reallocated internally by this * function. It is permitted to pass in the address of a bam_seq_t* * that points to NULL. This behaviour differs to the Samtools API due * to the bam_seq_t structure being a single contiguous block of * memory instead of in two halves; the static and variable "data" * component. * * Note: For maximum speed of CRAM I/O you may wish to use the cram * specific layer and return cram_record objects instead. * * @return * Returns 0 on success and fills out bsp; * -1 on failure */ int scram_get_seq(scram_fd *fd, bam_seq_t **bsp); /*! Deprecated: please use scram_get_seq() instead */ int scram_next_seq(scram_fd *fd, bam_seq_t **bsp); /*! Writes a BAM encoded bam_seq_t to fd. * * @return * Returns 0 on success; * -1 on failure */ int scram_put_seq(scram_fd *fd, bam_seq_t *s); /*! Sets a CRAM option on fd. * * This is only supported for CRAM files currently. * * @return * Returns 0 on success; * -1 on failure */ int scram_set_option(scram_fd *fd, enum cram_option opt, ...); /*! Returns the line number when processing a SAM file * * @return * Returns line number if input is SAM; * 0 for CRAM / BAM input. */ int scram_line(scram_fd *fd); #ifdef __cplusplus } #endif #endif /* _SCRAM_H_ */ io_lib-1.14.6/io_lib/bam.h0000644000031500020650000005726712616641262012151 00000000000000/* * Copyright (c) 2013 Genome Research Ltd. * Author(s): James Bonfield, Rob Davies * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * Author: James Bonfield, Wellcome Trust Sanger Institute. 2010-3 */ /*! \file * The primary SAM/BAM API. * * Consider using scram.h if you wish to also have support for CRAM. */ #ifndef _BAM_H_ #define _BAM_H_ #ifdef __cplusplus extern "C" { #endif #include #include #include "io_lib/os.h" #include "io_lib/hash_table.h" #include "io_lib/sam_header.h" #include "io_lib/thread_pool.h" #include "io_lib/binning.h" /* BAM header structs */ typedef struct tag_list { char *value; /* NULL => end of tags */ int key; int length; } tag_list_t; /* The main bam sequence struct */ typedef struct bam_seq_s { uint32_t alloc; /* total size of this struct + 'data' onwards */ uint32_t blk_size; /* The raw bam block follows, in same order as on the disk */ /* This is the analogue of a bam1_core_t in samtools */ int32_t ref; int32_t pos; union { struct { uint32_t name_len:8, map_qual:8, bin:16; }; uint32_t bin_packed; }; union { struct { uint32_t cigar_len:16, flag:16; }; uint32_t flag_packed; }; int32_t len; int32_t mate_ref; int32_t mate_pos; int32_t ins_size; /* Followed by arbitrary bytes of packed data */ unsigned char data; /* unknown size */ } bam_seq_t; /* Auxillary field handling */ typedef union { char *s; int i; uint64_t i64; float f; double d; struct { int n, t; unsigned char *s; } B; } bam_aux_t; /* Struct for making arrays of aux tags */ typedef struct { char tag[2]; char type; uint32_t array_len; union { char *z; uint8_t *h; char a; int32_t i; uint32_t ui; float f; double d; void *array; } value; } bam_aux_tag_t; /* * Our bam stream consists of a zlib gzFile stream and a buffer for it to * output to. This allows us to call small bam_read requests while * translating these to fewer, larger, gzread calls. The overhead is * therefore minimal. */ #define Z_BUFF_SIZE 65536 /* Max size of a zlib block */ #define BGZF_BUFF_SIZE 65400 /* Max size of a BGZF block, 65477 actual */ typedef struct { FILE *fp; int mode, binary, level; z_stream s; char vbuf[Z_BUFF_SIZE*4]; unsigned char comp[Z_BUFF_SIZE]; unsigned char *comp_p; size_t comp_sz; unsigned char uncomp[Z_BUFF_SIZE]; unsigned char *uncomp_p; size_t uncomp_sz; /* BAM specifics */ int32_t next_len; SAM_hdr *header; /* Parsed SAM header */ /* Cached bam_seq_t, to avoid excessive mallocs */ bam_seq_t *bs; int bs_size; /* Boolean to indicate if we've finished the most recent z stream */ int z_finish; /* Indicates whether gzipped, and if so with bgzf extra fields */ int gzip; int bgzf; /* Whether BAM or SAM format */ int bam; /* If true, skip auxillary field parsing while reading SAM */ int no_aux; /* line number (when in SAM mode) */ int line; /* EOF block present in BAM */ int eof_block; /* Static avoidance: used in sam_next_seq() */ unsigned char *sam_str; size_t alloc_l; /* Thread pool for encoding */ t_pool *pool; t_results_queue *equeue; /* Decoding queue */ t_results_queue *dqueue; void *job_pending; int eof; int nd_jobs, ne_jobs; /* Quality binning */ enum quality_binning binning; } bam_file_t; /* BAM flags */ #define BAM_FPAIRED 1 #define BAM_FPROPER_PAIR 2 #define BAM_FUNMAP 4 #define BAM_FMUNMAP 8 #define BAM_FREVERSE 16 #define BAM_FMREVERSE 32 #define BAM_FREAD1 64 #define BAM_FREAD2 128 #define BAM_FSECONDARY 256 #define BAM_FQCFAIL 512 #define BAM_FDUP 1024 #define BAM_FSUPPLEMENTARY 2048 #define BAM_CIGAR32 32768 /* Decoding the bam_seq_t struct */ #define bam_blk_size(b) ((b)->blk_size) #define bam_set_blk_size(b,v) ((b)->blk_size = (v)) #define bam_ref(b) ((b)->ref) #define bam_pos(b) ((b)->pos) #define bam_mate_ref(b) ((b)->mate_ref) #define bam_mate_pos(b) ((b)->mate_pos) #define bam_ins_size(b) ((b)->ins_size) #define bam_cigar_len(b) (((b)->flag & BAM_CIGAR32 ? ((b)->bin<<16) : 0) + (b)->cigar_len) #define bam_name_len(b) ((b)->name_len) #define bam_map_qual(b) ((b)->map_qual) #define bam_bin(b) ((b)->flag & BAM_CIGAR32 ? 0 : (b)->bin) #define bam_flag(b) ((b)->flag) #define bam_seq_len(b) ((b)->len) #define bam_strand(b) ((bam_flag((b)) & BAM_FREVERSE) != 0) #define bam_mstrand(b) ((bam_flag((b)) & BAM_FMREVERSE) != 0) #define bam_set_ref(b,v) ((b)->ref = (v)) #define bam_set_pos(b,v) ((b)->pos = (v)) #define bam_set_mate_ref(b,v) ((b)->mate_ref = (v)) #define bam_set_mate_pos(b,v) ((b)->mate_pos = (v)) #define bam_set_ins_size(b,v) ((b)->ins_size = (v)) #define bam_set_cigar_len(b, v) (((v)>>16) ? (((b)->flag |= BAM_CIGAR32), (b)->bin = ((v)>>16), (b)->cigar_len = (v)&0xffff) : ((b)->cigar_len = (v))) #define bam_set_name_len(b,v) ((b)->name_len = (v)) #define bam_set_map_qual(b,v) ((b)->map_qual = (v)) static inline void bam_set_bin(bam_seq_t *b, uint32_t v) { if (!(b->flag & BAM_CIGAR32)) b->bin = v; } #define bam_set_flag(b,v) ((b)->flag = (v)) #define bam_set_seq_len(b,v) ((b)->len = (v)) #define bam_name(b) ((char *)(&(b)->data)) #ifdef ALLOW_UAC #define bam_cigar(b) ((uint32_t *)(bam_name((b)) + bam_name_len((b)))) #else #define bam_cigar(b) ((uint32_t *)(bam_name((b)) + round4(bam_name_len((b))))) #endif #define bam_seq(b) (((char *)bam_cigar((b))) + 4*bam_cigar_len(b)) #define bam_qual(b) (bam_seq(b) + (int)(((b)->len+1)/2)) #define bam_aux(b) (bam_qual(b) + (b)->len) /* Rounds up to the next multiple of 4 */ #define round4(v) (((v-1)&~3)+4) /* CIGAR operations, taken from samtools bam.h */ #define BAM_CIGAR_SHIFT 4 #define BAM_CIGAR_MASK ((1 << BAM_CIGAR_SHIFT) - 1) enum cigar_op { BAM_UNKNOWN=-1, BAM_CMATCH=0, BAM_CINS=1, BAM_CDEL=2, BAM_CREF_SKIP=3, BAM_CSOFT_CLIP=4, BAM_CHARD_CLIP=5, BAM_CPAD=6, BAM_CBASE_MATCH=7, BAM_CBASE_MISMATCH=8 }; /* * Whether this cigar op marches along ref, seq or both * * Op Ref Seq * M 1 1 * I 0 1 * D 1 0 * N 1 0 * S 0 1 * H 0 0 * P 0 0 * = 1 1 * X 1 1 */ #define BAM_CONSUME_REF(op) ((0x18d>>(op))&1) #define BAM_CONSUME_SEQ(op) ((0x193>>(op))&1) /* ---------------------------------------------------------------------- * Function prototypes * We only support reading, so basically we have open, read, close along * with some utility functions for querying aux records. */ /*! Opens a SAM or BAM file. * * The mode parameter indicates the file * type (if not auto-detecting) and whether it is for reading or * writing. Use "rb" or "wb" for reading or writing BAM and "r" or * "w" or reading or writing SAM. When writing BAM, the mode may end * with a digit from 0 to 9 to indicate the compression to use with 0 * indicating uncompressed data. * * @param fn The filename to open or create. * @param mode The input/output mode, similar to fopen(). * * @return * Returns a bam_file_t pointer on success; * NULL on failure. */ bam_file_t *bam_open(const char *fn, const char *mode); bam_file_t *bam_open_block(const char *blk, size_t blk_size, SAM_hdr *sh); /*! Closes a SAM or BAM file. * * @param b The file to close. * * @return * Retrurns 0 on success; * -1 on failure. */ int bam_close(bam_file_t *b); /*! Deprecated: please use bam_get_seq() instead. */ int bam_next_seq(bam_file_t *b, bam_seq_t **bsp); /*! Reads the next sequence. * * Fills out the next bam_seq_t struct. * This function will alloc and/or grow the memory accordingly, allowing for * efficient reuse. * * @param bsp Must be non-null, but *bsp may be NULL or an existing * bam_seq_t pointer. * * @return * Returns 1 on success; * 0 on eof; * -1 on error. */ int bam_get_seq(bam_file_t *b, bam_seq_t **bsp); /*!Looks for aux field 'key' and returns the value. * The type is the first char and the value is the 2nd character onwards. * * @return * Returns the value for key; NULL if not found. */ char *bam_aux_find(bam_seq_t *b, const char *key); //!Converts an encoded integer value return by bam_aux_find to an integer. // //Analogous to the bam_aux2i functions in samtools. int32_t bam_aux_i(const uint8_t *dat); float bam_aux_f(const uint8_t *s); double bam_aux_d(const uint8_t *s); char bam_aux_A(const uint8_t *s); char *bam_aux_Z(const uint8_t *s); //int bam_aux_del(bam_seq_t *b, uint8_t *s); // not implemented yet /*! Add auxiliary tags to a bam_seq_t structure. * * Appends a tag onto the end of a bam_seq_t structure. The tag name * is supplied in the 'tag' parameter, and the data type code in 'type'. * Valid type codes are [AcCsSiIfdHZ], as described in the SAM specification. * * The array_len parameter is used for B type (i.e. array) tags. If * array_len is 0, an ordinary non-array tag is added. If it is greater * than zero, a B type tag of the apropriate data type is made. Arrays * of types H and Z are not allowed, so array_len must be zero if these types * are specified. * * data should point to the data to be added. This should be of appropriate * size for the tag type, i.e. (u)int8_t for A, C and c; (u)int16_t for S and s; * (u)int32_t for I and i; a float for f; a double for d; a NUL-terminated * string for H and Z. If array_len is greater than zero, then data should * point to an array of the given type. All data should be in the native * format for the machine - it will be converted to little-endian if necessary * by the function. * * @param b Points to the location of a bam_seq_t *. If (*b)->alloc * is too small, the bam_seq_t struct will be reallocated. * Neither b nor *b should be NULL. * @param tag The tag name (RG, NM, etc.) * @param type The tag data type. * @param array_len Array length for array tags, zero for ordinary ones. * @param data Pointer to the tag value. * * @return * Returns 0 on success; * -1 on error */ int bam_aux_add(bam_seq_t **b, const char tag[2], char type, uint32_t array_len, const void *data); /*! Add multiple auxiliary tags to a bam_seq_t structure * * bam_aux_add_vec adds one or more tags listed in the bam_aux_tag_t array * to a bam_seq_t structure. The bam_aux_tag_t struct has four elements, * the tag name (char[2]), the type code (char), the array length for B tags and * the value which is a union. * * The type code determines both the data type of the tag, and the member * of value used to access the data. If array_len is zero, data types 'H' and * 'Z' are accessed via member value.h or value.z; 'f' via value.f; 'd' via * value.d; 'A' via value.a. Signed integers should have type 'i', and are * accessed through value.i. Unsigned integers should use type 'I' and * value.ui. The actual type used to store the integer will be the smallest * that it will fit in, so signed and unsigned integers that fit in one byte * will be stored as type 'c' or 'C'. Similarly, integers that fit in two * bytes will be stored as type 's' or 'S' for unsigned. * * If array_len is non-zero, a B-type (array) tag is stored. In this case * value.array should point to the data to be stored. The type of array * is interpreted according to the requested tag type, i.e. char for 'A'; * int8_t for 'c'; uint8_t for 'C'; int16_t for 's'; uint16_t for 'S'; * int32_t for 'i'; uint32_t for 'I'; float for 'f'; double for 'd'. No * attempt is made to adjust the size of integers when storing arrays. All * data should be in the native format for the machine - it will be converted * to little-endian if necessary by the function. * * @param b Points to the location of a bam_seq_t *. If (*b)->alloc * is too small, the bam_seq_t struct will be reallocated. * Neither b nor *b should be NULL. * @param count The number of elements in the tags array * @param tags Array of bam_aux_tag_t structs, listing the tags to add. * * @return * Returns 0 on success; * -1 on error */ int bam_aux_add_vec(bam_seq_t **b, uint32_t count, bam_aux_tag_t *tags); /*! Calculate the amount of space needed to store auxiliary tags * * The tags array should be filled out as described in bam_aux_add_vec. * This function iterates through the list of items in the tags array * to work out how much space will be needed to store them. This value * can be passed to bam_construct_seq in the extra_len parameter to * ensure that enough space is allocated to store the tags. * * @param count The number of elements in the tags array * @param tags Array of bam_aux_tag_t structs, listing the tags to add. * * @return * Returns the total space required for the tags on success; * -1 on failure. */ ssize_t bam_aux_size_vec(uint32_t count, bam_aux_tag_t *tags); /*! Helper for filling in the bam_aux_tag_t struct * @param tag Pointer to bam_aux_tag_t struct * @param name Tag name * @param val Tag value */ static inline void bam_aux_tag_char(bam_aux_tag_t *tag, char *name, char val) { tag->tag[0] = name[0]; tag->tag[1] = name[1]; tag->type = 'A'; tag->array_len = 0; tag->value.a = val; } /*! Helper for filling in the bam_aux_tag_t struct * @param tag Pointer to bam_aux_tag_t struct * @param name Tag name * @param val Tag value */ static inline void bam_aux_tag_int(bam_aux_tag_t *tag, char *name, int32_t val) { tag->tag[0] = name[0]; tag->tag[1] = name[1]; tag->type = 'i'; tag->array_len = 0; tag->value.i = val; } /*! Helper for filling in the bam_aux_tag_t struct * @param tag Pointer to bam_aux_tag_t struct * @param name Tag name * @param val Tag value */ static inline void bam_aux_tag_uint(bam_aux_tag_t *tag, char *name, uint32_t val) { tag->tag[0] = name[0]; tag->tag[1] = name[1]; tag->type = 'I'; tag->array_len = 0; tag->value.ui = val; } /*! Helper for filling in the bam_aux_tag_t struct * @param tag Pointer to bam_aux_tag_t struct * @param name Tag name * @param val Tag value */ static inline void bam_aux_tag_float(bam_aux_tag_t *tag, char *name, float val) { tag->tag[0] = name[0]; tag->tag[1] = name[1]; tag->type = 'f'; tag->array_len = 0; tag->value.f = val; } /*! Helper for filling in the bam_aux_tag_t struct * @param tag Pointer to bam_aux_tag_t struct * @param name Tag name * @param val Tag value */ static inline void bam_aux_tag_double(bam_aux_tag_t *tag, char *name, double val) { tag->tag[0] = name[0]; tag->tag[1] = name[1]; tag->type = 'd'; tag->array_len = 0; tag->value.d = val; } /*! Helper for filling in the bam_aux_tag_t struct * @param tag Pointer to bam_aux_tag_t struct * @param name Tag name * @param val Tag value */ static inline void bam_aux_tag_string(bam_aux_tag_t *tag, char *name, char *str) { tag->tag[0] = name[0]; tag->tag[1] = name[1]; tag->type = 'Z'; tag->array_len = 0; tag->value.z = str; } /*! Helper for filling in the bam_aux_tag_t struct * @param tag Pointer to bam_aux_tag_t struct * @param name Tag name * @param val Tag value */ static inline void bam_aux_tag_hexstring(bam_aux_tag_t *tag, char *name, uint8_t *str) { tag->tag[0] = name[0]; tag->tag[1] = name[1]; tag->type = 'H'; tag->array_len = 0; tag->value.h = str; } /*! Helper for filling in the bam_aux_tag_t struct * @param tag Pointer to bam_aux_tag_t struct * @param name Tag name * @param val Tag value */ static inline void bam_aux_tag_array(bam_aux_tag_t *tag, char *name, char type, uint32_t array_len, void *data) { tag->tag[0] = name[0]; tag->tag[1] = name[1]; tag->type = type; tag->array_len = array_len; tag->value.array = data; } /*! Add SAM formatted aux tags to a bam_seq_t. * * Appends one or more SAM-format tags onto the end of a bam_seq_t structure. * If multiple tags are present, they should be separated by tabs, as in * a SAM file. * * @param bsp Points to the location of a bam_seq_t *. If (*bsp)->alloc * is too small, the bam_seq_t struct will be reallocated. * Neither bsp nor *bsp should be NULL. * @param sam SAM-foratted tag string. * * @return * Returns 0 on success; * -1 on error */ int bam_aux_add_from_sam(bam_seq_t **bsp, char *sam); /*! Add preformated raw aux data to the bam_seq. * * This interface is similar to the samtools bam_aux_append function. * It creates a tag with the given name and type, and then appends the * supplied data to it as the value. It is up to the caller to ensure that * the data has been formatted correctly as given in the SAM specification. * This function makes no checks on the data, but simply copies it. * * Consider using bam_aux_add instead if you have information in a more * integer or string form. * * @param b Points to the location of a bam_seq_t *. If (*b)->alloc * is too small, the bam_seq_t struct will be reallocated. * Neither b nor *b should be NULL. * @param tag The tag name (RG, NM, etc.) * @param type The tag data type. * @param len The number of bytes of data present. * @param data Pre-formatted data. * * @return * Returns 0 on success; * -1 on failure */ int bam_aux_add_data(bam_seq_t **b, const char tag[2], char type, size_t len, const uint8_t *data); /*! Add raw data to a bam structure. * * This could be useful if you wish to manually construct your own bam * entries or if you need to append an entire block of preformatting * aux data. * * @param b Points to the location of a bam_seq_t *. If (*b)->alloc * is too small, the bam_seq_t struct will be reallocated. * Neither b nor *b should be NULL. * @param len The number of bytes of data present. * @param data Pre-formatted data. * * @retrun * Returns 0 on success; * -1 on failure */ int bam_add_raw(bam_seq_t **b, size_t len, const uint8_t *data); /*! An iterator on bam_aux_t fields. * * NB: This code is not reentrant or multi-thread capable. The values * returned are valid until the next call to this function. * * @param key points to an array of 2 characters (eg "RG", "NM") * @param type points to an address of 1 character (eg 'Z', 'i') * @paran val points to an address of a bam_aux_t union. * @param iter_handle NULL to initialise the search, and then the * returned (modified) iter_handle on each subsequent call to continue * the iteration. * * @return * Returns 0 if the next value is valid, setting key, type and val; * -1 when no more found. */ int bam_aux_iter(bam_seq_t *b, char **iter_handle, char *key, char *type, bam_aux_t *val); /* Taken from samtools/bam.h */ #define bam_seqi(s, i) ((s)[(i)/2] >> 4*(1-(i)%2) & 0xf) #define bam_nt16_rev_table "=ACMGRSVTWYHKDBN" /* Output code */ /*! Writes a single bam sequence object. * * @param fp The SAM/BAM file handle. * @param b The bam_seq_t pointer * * @return * Returns 0 on success; * -1 on failure */ int bam_put_seq(bam_file_t *fp, bam_seq_t *b); /*! Constructs a bam_seq_t from separate components. * * Note: ignores auxiliary tags for now. These need to be appended * manually by the calling function. * * @param b Points to the location of a bam_seq_t *. If *b is NULL * or (*b)->alloc is too small, the bam_seq_t struct will * be reallocated. * @param extra_len Extra space to allocate for auxiliary tags * @param qname Query name * @param qname_len Query name length * @param flag BAM flags * @param rname Reference ID * @param pos Mapped position (N.B. 1-based) * @param end Last aligned base * @param mapq Mapping quality * @param ncigar Number of CIGAR elements * @param cigar CIGAR alignment information * @param mrnm Mate reference ID * @param mpos Mate position (N.B. 1-based) * @param isize Insert size * @param len Sequence length * @param seq Sequence (ASCII format) * @param qual Quality values (phred scale, 8-bit binary, no offset) * Passing in NULL to qual will cause all quality values * to be treated as absent (i.e. set to 0xff). * * @return * Returns number of bytes written to bam_seq_t on success (ie tag offset); * -1 on error. */ int bam_construct_seq(bam_seq_t **b, size_t extra_len, const char *qname, size_t qname_len, int flag, int rname, // Ref ID int pos, int end, // aligned start/end coords int mapq, uint32_t ncigar, const uint32_t *cigar, int mrnm, // Mate Ref ID int mpos, int isize, int len, const char *seq, const char *qual); /*! Duplicates a bam_seq_t structure. * * @return * Returns the new bam_seq_t pointer on success; * NULL on failure. */ bam_seq_t *bam_dup(bam_seq_t *b); /*! Writes a SAM header block. * * @return * Returns 0 for success; * -1 for failure */ int bam_write_header(bam_file_t *out); enum bam_option { BAM_OPT_THREAD_POOL, BAM_OPT_BINNING }; /*! Sets options on the bam_file_t. * * Sets options on the bam_file_t. See BAM_OPT_* definitions in bam.h. * Use this immediately after opening. * * @return * Returns 0 on success; * -1 on failure */ int bam_set_option(bam_file_t *fd, enum bam_option opt, ...); /*! Sets options on the bam_file_t. * * Sets options on the bam_file_t. See BAM_OPT_* definitions in bam.h. * Use this immediately after opening. * * @return * Returns 0 on success; * -1 on failure */ int bam_set_voption(bam_file_t *fd, enum bam_option opt, va_list args); /* * Signed and unsigned fast functions to act as equiv to sprintf(cp, "%d", i) */ #ifndef _TG_INDEX_H_ unsigned char *append_int(unsigned char *cp, int32_t i); unsigned char *append_uint(unsigned char *cp, uint32_t i); #endif #ifdef __cplusplus } #endif #endif /* _BAM_H_ */ io_lib-1.14.6/io_lib/sam_header.h0000644000031500020650000003307012576245752013475 00000000000000/* * Copyright (c) 2013 Genome Research Ltd. * Author(s): James Bonfield, Rob Davies * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * Author: James Bonfield, Wellcome Trust Sanger Institute. 2013 */ /*! \file * SAM header parsing. * * These functions can be shared between SAM, BAM and CRAM file * formats as all three internally use the same string encoding for * header fields. * * Consider using the scram() generic API and calling * scram_get_header() to obtain the format-specific pointer to the * SAM_hdr struct. */ /* * TODO. * * - Sort order (parse to struct, enum type, updating funcs) * - Removal of lines. * - Updating of lines */ #ifndef _SAM_HDR_H_ #define _SAM_HDR_H_ #ifdef __cplusplus extern "C" { #endif #ifdef HAVE_CONFIG_H #include "io_lib_config.h" #endif #include #include "io_lib/dstring.h" #include "io_lib/hash_table.h" #include "io_lib/string_alloc.h" /* * Proposed new SAM header parsing 1 @SQ ID:foo LN:100 2 @SQ ID:bar LN:200 3 @SQ ID:ram LN:300 UR:xyz 4 @RG ID:r ... 5 @RG ID:s ... Hash table for 2-char keys without dup entries. If dup lines, we form a circular linked list. Ie hash keys = {RG, SQ}. HASH("SQ")--\ | (3) <-> 1 <-> 2 <-> 3 <-> (1) HASH("RG")--\ | (5) <-> 4 <-> 5 <-> (4) Items stored in the hash values also form their own linked lists: Ie SQ->ID(foo)->LN(100) SQ->ID(bar)->LN(200) SQ->ID(ram)->LN(300)->UR(xyz) RG->ID(r) */ /*! A single key:value pair on a header line * * These form a linked list and hold strings. The strings are * allocated from a string_alloc_t pool refeenced in the master * SAM_hdr structure. Do not attempt to free, malloc or manipulate * these strings directly. */ typedef struct SAM_hdr_tag_s { struct SAM_hdr_tag_s *next; char *str; int len; } SAM_hdr_tag; /*! The parsed version of the SAM header string. * * Each header type (SQ, RG, HD, etc) points to its own SAM_hdr_type * struct via the main HashTable h in the SAM_hdr struct. * * These in turn consist of circular bi-directional linked lists (ie * rings) to hold the multiple instances of the same header type * code. For example if we have 5 \@SQ lines the primary hash table * will key on \@SQ pointing to the first SAM_hdr_type and that in turn * will be part of a ring of 5 elements. * * For each SAM_hdr_type structure we also point to a SAM_hdr_tag * structure which holds the tokenised attributes; the tab separated * key:value pairs per line. */ typedef struct SAM_hdr_item_s { struct SAM_hdr_item_s *next; // cirular struct SAM_hdr_item_s *prev; SAM_hdr_tag *tag; // first tag int order; // 0 upwards } SAM_hdr_type; /*! Parsed \@SQ lines */ typedef struct { char *name; uint32_t len; SAM_hdr_type *ty; SAM_hdr_tag *tag; } SAM_SQ; /*! Parsed \@RG lines */ typedef struct { char *name; SAM_hdr_type *ty; SAM_hdr_tag *tag; int name_len; int id; // numerical ID } SAM_RG; /*! Parsed \@PG lines */ typedef struct { char *name; SAM_hdr_type *ty; SAM_hdr_tag *tag; int name_len; int id; // numerical ID int prev_id; // -1 if none } SAM_PG; /*! Sort order parsed from @HD line */ enum sam_sort_order { ORDER_UNKNOWN =-1, ORDER_UNSORTED = 0, ORDER_NAME = 1, ORDER_COORD = 2, //ORDER_COLLATE = 3 // maybe one day! }; /*! Primary structure for header manipulation * * The initial header text is held in the text dstring_t, but is also * parsed out into SQ, RG and PG arrays. These have a HashTable * associated with each to allow lookup by ID or SN fields instead of * their numeric array indices. Additionally PG has an array to hold * the linked list start points (the last in a PP chain). * * Use the appropriate sam_hdr_* functions to edit the header, and * call sam_hdr_rebuild() any time the textual form needs to be * updated again. */ typedef struct { dstring_t *text; //!< concatenated text, indexed by SAM_hdr_tag HashTable *h; //!< 2-char IDs, values are SAM_hdr_type string_alloc_t *str_pool; //!< Pool of SAM_hdr_tag->str strings pool_alloc_t *type_pool;//!< Pool of SAM_hdr_type structs pool_alloc_t *tag_pool; //!< Pool of SAM_hdr_tag structs // @SQ lines / references int nref; //!< Number of \@SQ lines SAM_SQ *ref; //!< Array of parsed \@SQ lines HashTable *ref_hash; //!< Hash table indexed by SN: field // @RG lines / read-groups int nrg; //!< Number of \@RG lines SAM_RG *rg; //!< Array of parsed \@RG lines HashTable *rg_hash; //!< Hash table indexed by ID: field // @PG lines / programs int npg; //!< Number of \@PG lines int npg_end; //!< Number of terminating \@PG lines int npg_end_alloc; //!< Size of pg_end field SAM_PG *pg; //!< Array of parsed \@PG lines HashTable *pg_hash; //!< Hash table indexed by ID: field int *pg_end; //!< \@PG chain termination IDs // @HD data enum sam_sort_order sort_order; //!< @HD SO: field // @cond internal char ID_buf[1024]; // temporary buffer int ID_cnt; int ref_count; // number of uses of this SAM_hdr // @endcond } SAM_hdr; /*! Creates an empty SAM header, ready to be populated. * * @return * Returns a SAM_hdr struct on success (free with sam_hdr_free()) * NULL on failure */ SAM_hdr *sam_hdr_new(); /*! Tokenises a SAM header into a hash table. * * Also extracts a few bits on specific data types, such as @RG lines. * * @return * Returns a SAM_hdr struct on success (free with sam_hdr_free()); * NULL on failure */ #ifdef SAMTOOLS SAM_hdr *sam_hdr_parse_(const char *hdr, int len); #else SAM_hdr *sam_hdr_parse(const char *hdr, int len); #endif /*! Produces a duplicate copy of hdr and returns it. * @return * Returns NULL on failure */ SAM_hdr *sam_hdr_dup(SAM_hdr *hdr); /*! Increments a reference count on hdr. * * This permits multiple files to share the same header, all calling * sam_hdr_free when done, without causing errors for other open files. */ void sam_hdr_incr_ref(SAM_hdr *hdr); /*! Increments a reference count on hdr. * * This permits multiple files to share the same header, all calling * sam_hdr_free when done, without causing errors for other open files. * * If the reference count hits zero then the header is automatically * freed. This makes it a synonym for sam_hdr_free(). */ void sam_hdr_decr_ref(SAM_hdr *hdr); /*! Deallocates all storage used by a SAM_hdr struct. * * This also decrements the header reference count. If after decrementing * it is still non-zero then the header is assumed to be in use by another * caller and the free is not done. * * This is a synonym for sam_hdr_dec_ref(). */ void sam_hdr_free(SAM_hdr *hdr); /*! Returns the current length of the SAM_hdr in text form. * * Call sam_hdr_rebuild() first if editing has taken place. */ int sam_hdr_length(SAM_hdr *hdr); /*! Returns the string form of the SAM_hdr. * * Call sam_hdr_rebuild() first if editing has taken place. */ char *sam_hdr_str(SAM_hdr *hdr); /*! Appends a formatted line to an existing SAM header. * * Line is a full SAM header record, eg "@SQ\tSN:foo\tLN:100", with * optional new-line. If it contains more than 1 line then multiple lines * will be added in order. * * Input text is of maximum length len or as terminated earlier by a NUL. * Len may be 0 if unknown, in which case lines must be NUL-terminated. * * @return * Returns 0 on success; * -1 on failure */ int sam_hdr_add_lines(SAM_hdr *sh, const char *lines, int len); /*! Adds a single line to a SAM header. * * Specify type and one or more key,value pairs, ending with the NULL key. * Eg. sam_hdr_add(h, "SQ", "ID", "foo", "LN", "100", NULL). * * @return * Returns 0 on success; * -1 on failure */ int sam_hdr_add(SAM_hdr *sh, const char *type, ...); /*! Adds a single line to a SAM header. * * This is much like sam_hdr_add() but with the additional va_list * argument. This is followed by specifying type and one or more * key,value pairs, ending with the NULL key. * * Eg. sam_hdr_vadd(h, "SQ", args, "ID", "foo", "LN", "100", NULL). * * The purpose of the additional va_list parameter is to permit other * varargs functions to call this while including their own additional * parameters; an example is in sam_hdr_add_PG(). * * @return * Returns 0 on success; * -1 on failure */ int sam_hdr_vadd(SAM_hdr *sh, const char *type, va_list ap, ...); /*! * @return * Returns the first header item matching 'type'. If ID is non-NULL it checks * for the tag ID: and compares against the specified ID. * * Returns NULL if no type/ID is found */ SAM_hdr_type *sam_hdr_find(SAM_hdr *hdr, char *type, char *ID_key, char *ID_value); /*! * * As per SAM_hdr_type, but returns a complete line of formatted text * for a specific head type/ID combination. If ID is NULL then it returns * the first line of the specified type. * * The returned string is malloced and should be freed by the calling * function with free(). * * @return * Returns NULL if no type/ID is found. */ char *sam_hdr_find_line(SAM_hdr *hdr, char *type, char *ID_key, char *ID_value); /*! Looks for a specific key in a single sam header line. * * If prev is non-NULL it also fills this out with the previous tag, to * permit use in key removal. *prev is set to NULL when the tag is the first * key in the list. When a tag isn't found, prev (if non NULL) will be the last * tag in the existing list. * * @return * Returns the tag pointer on success; * NULL on failure */ SAM_hdr_tag *sam_hdr_find_key(SAM_hdr *sh, SAM_hdr_type *type, char *key, SAM_hdr_tag **prev); /*! Adds or updates tag key,value pairs in a header line. * * Eg for adding M5 tags to @SQ lines or updating sort order for the * @HD line (although use the sam_hdr_sort_order() function for * HD manipulation, which is a wrapper around this funuction). * * Specify multiple key,value pairs ending in NULL. * * @return * Returns 0 on success; * -1 on failure */ int sam_hdr_update(SAM_hdr *hdr, SAM_hdr_type *type, ...); /*! Returns the sort order from the @HD SO: field */ enum sam_sort_order sam_hdr_sort_order(SAM_hdr *hdr); /*! Reconstructs the dstring from the header hash table. * @return * Returns 0 on success; * -1 on failure */ int sam_hdr_rebuild(SAM_hdr *hdr); /*! Looks up a reference sequence by name and returns the numerical ID. * @return * Returns -1 if unknown reference. */ int sam_hdr_name2ref(SAM_hdr *hdr, char *ref); /*! Looks up a read-group by name and returns a pointer to the start of the * associated tag list. * * @return * Returns NULL on failure */ SAM_RG *sam_hdr_find_rg(SAM_hdr *hdr, char *rg); /*! Fixes any PP links in @PG headers. * * If the entries are in order then this doesn't need doing, but incase * our header is out of order this goes through the sh->pg[] array * setting the prev_id field. * * @return * Returns 0 on sucess; * -1 on failure (indicating broken PG/PP records) */ int sam_hdr_link_pg(SAM_hdr *hdr); /*! Add an @PG line. * * If we wish complete control over this use sam_hdr_add() directly. This * function uses that, but attempts to do a lot of tedious house work for * you too. * * - It will generate a suitable ID if the supplied one clashes. * - It will generate multiple @PG records if we have multiple PG chains. * * Call it as per sam_hdr_add() with a series of key,value pairs ending * in NULL. * * @return * Returns 0 on success; * -1 on failure */ int sam_hdr_add_PG(SAM_hdr *sh, const char *name, ...); /*! * A function to help with construction of CL tags in @PG records. * Takes an argc, argv pair and returns a single space-separated string. * This string should be deallocated by the calling function. * * @return * Returns malloced char * on success; * NULL on failure */ char *stringify_argv(int argc, char *argv[]); #ifdef __cplusplus } #endif #endif /* _SAM_HDR_H_ */ io_lib-1.14.6/io_lib/dstring.h0000644000031500020650000002256512354177666013070 00000000000000/* * Copyright (c) 2013 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * Author(s): James Bonfield * * Copyright (c) 2003 MEDICAL RESEARCH COUNCIL * All rights reserved * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1 Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2 Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3 Neither the name of the MEDICAL RESEARCH COUNCIL, THE LABORATORY OF * MOLECULAR BIOLOGY nor the names of its contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ #ifndef _DSTRING_H #define _DSTRING_H #ifdef __cplusplus extern "C" { #endif #include #include #include "io_lib/misc.h" /* * Implements a simple dynamic string object. * Like C, offsets start from 0. */ typedef struct { char *str; /* String ptr itself */ size_t allocated; /* Amount of memory malloced (including the nul) */ size_t length; /* Amount of memory used (excluding the nul) */ } dstring_t; #define DSTRING_STR(ds) ((ds)->str) #define DSTRING_LEN(ds) ((ds)->length) /* * Allocates a new dstring, initialising it to a default str (or NULL). * * Returns dstring_t pointer on success. * NULL on failure. */ dstring_t *dstring_create(const char *str); /* * As per dstring_create(), but using str,len as the internal data. * Ie the caller is giving this data to the dstring object. str should * be a malloced pointer. * * Returns dstring_t pointer on success. * NULL on failure. */ dstring_t *dstring_create_with(char *str, size_t len); /* Deallocates a dstring */ void dstring_destroy(dstring_t *ds); /* * Returns a C string from a dstring. If the dstring is empty this may be * NULL. */ char *dstring_str(const dstring_t *ds); /* * Force the memory allocated for a dstring to be at least length characters * long. (The allocated length will include 1 more to allow for the nul * termination.) * It's possible to shrink a string too, although shrinking a string will not * guarantee if remains nul terminated. * * Returns 0 for success * -1 for failure */ int dstring_resize(dstring_t *ds, size_t length); #define DSTRING_RESIZE(ds, len) ((ds)->allocated > (len) ? 0 : dstring_resize((ds),(len))) /* * Refreshes the cached dstring length. * Use this if you obtain a copy of the internal C string and manipulate it * in some way. */ void dstring_refresh_length(dstring_t *ds); /* * Returns the length of the dstring (excluding nul; like strlen). */ size_t dstring_length(dstring_t *ds); /* * Insertion functions. * dstring_ninsert, nappend and nprepend take a string and a length (much * like strncmp, strncpy, etc). * dstring_insert, append and prepend just take a normal C string. * dstring_dinsert inserts one dstring into another. * * All Return 0 for success * -1 for failure */ int dstring_insert(dstring_t *ds, size_t offset, const char *str); int dstring_ninsert(dstring_t *ds, size_t offset, const char *str, size_t len); int dstring_dinsert(dstring_t *ds_to, size_t offset, const dstring_t *ds_from); int dstring_vinsertf(dstring_t *ds, size_t offset, const char *fmt, va_list args); int dstring_insertf(dstring_t *ds, size_t offset, const char *fmt, ...) __PRINTF_FORMAT__(3,4); int dstring_prepend(dstring_t *ds, const char *str); int dstring_nprepend(dstring_t *ds, const char *str, size_t len); int dstring_prependf(dstring_t *ds, const char *fmt, ...) __PRINTF_FORMAT__(2,3); int dstring_append(dstring_t *ds, const char *str); int dstring_nappend(dstring_t *ds, const char *str, size_t len); int dstring_appendf(dstring_t *ds, const char *fmt, ...) __PRINTF_FORMAT__(2,3); int dstring_append_char(dstring_t *ds, char c); int dstring_append_int(dstring_t *ds, int i); int dstring_append_hex_encoded(dstring_t *ds, const char *str, const char *meta); void dstring_empty(dstring_t *ds); /* * Deletes a section from a dstring, starting at 'offset' and extending * for 'length' characters. */ void dstring_delete(dstring_t *ds, size_t offset, size_t length); /* * Replaces a section from a dstring (at offset for length bytes) with a * new (C) string. * * Returns 0 for success * -1 for failure */ int dstring_replace(dstring_t *ds, size_t offset, size_t length, const char *rep_str); /* * Replaces a section from a dstring (at offset for length bytes) with a * new dstring. * * Returns 0 for success * -1 for failure */ int dstring_dreplace(dstring_t *ds, size_t offset, size_t length, const dstring_t *rep_with); /* * Searches for the first occurance of 'search' in a dstring starting * at position offset (including looking at that position). * * Returns the new offset if found * -1 if not. */ int dstring_find(dstring_t *ds, size_t offset, const char *search); /* * A combination of dstring_find and dstring_replace. * Look for 'search' starting at a specific offset. If found replace it with * replace. * * Returns position of replaced string if found * -1 if not found or on error. */ int dstring_find_replace(dstring_t *ds, size_t offset, const char *search, const char *rep_with); /* * Look for 'search' starting at a specific offset. If found replace it with * replace. Repeat until all occurances have been replaced. * * Returns 0 for success * -1 on error */ int dstring_find_replace_all(dstring_t *ds, const char *search, const char *rep_with); /* * Converts a text string into a HTML version representing the same string. * This includes escaping any HTML meta characters and searching for URLs * within the string and replacing it with an HTML link (keeping the link as * the anchor name). * This is simply a wrapper joining dstring_escape_html and * dstring_htmlise_links. * * Returns 0 for success * -1 on error */ int dstring_to_html(dstring_t *ds); /* * Escapes HTML meta characters by replacing them with appropriate HTML * codes. * We deal with the following: * * & & * < < * > > * " " * * Returns 0 for success * -1 on error */ int dstring_escape_html(dstring_t *ds); /* * Searches for URLs in text strings and converts then to html href links. * At present we just look for http://, https://, ftp://, file:// and * mailto:// * * Returns 0 for success * -1 on error */ int dstring_htmlise_links(dstring_t *ds); /* * Appends an system error much like perror(). * 'str' is added in the form "str: error_message". * * All Return 0 for success * -1 for failure */ int dstring_perror(dstring_t *ds, const char *str); #ifdef __cplusplus } #endif #endif io_lib-1.14.6/io_lib/string_alloc.h0000644000031500020650000000456712473047576014076 00000000000000/* * Copyright (c) 2013 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef _STRING_ALLOC_H_ #define _STRING_ALLOC_H_ #ifdef __cplusplus extern "C" { #endif /* * A pooled string allocator intended to cut down on the * memory overhead of many small string allocations. * * Andrew Whitwham, September 2010. */ typedef struct { char *str; size_t used; } string_t; typedef struct { size_t max_length; size_t nstrings; string_t *strings; } string_alloc_t; string_alloc_t *string_pool_create(size_t max_length); void string_pool_destroy(string_alloc_t *a_str); char *string_alloc(string_alloc_t *a_str, size_t length); char *string_dup(string_alloc_t *a_str, char *instr); char *string_ndup(string_alloc_t *a_str, char *instr, size_t len); #ifdef __cplusplus } #endif #endif /* _STRING_ALLOC_H_ */ io_lib-1.14.6/io_lib/md5.h0000644000031500020650000000270712354177666012077 00000000000000#ifdef __cplusplus extern "C" { #endif /* * This is an OpenSSL-compatible implementation of the RSA Data Security, Inc. * MD5 Message-Digest Algorithm (RFC 1321). * * Homepage: * http://openwall.info/wiki/people/solar/software/public-domain-source-code/md5 * * Author: * Alexander Peslyak, better known as Solar Designer * * This software was written by Alexander Peslyak in 2001. No copyright is * claimed, and the software is hereby placed in the public domain. * In case this attempt to disclaim copyright and place the software in the * public domain is deemed null and void, then the software is * Copyright (c) 2001 Alexander Peslyak and it is hereby released to the * general public under the following terms: * * Redistribution and use in source and binary forms, with or without * modification, are permitted. * * There's ABSOLUTELY NO WARRANTY, express or implied. * * See md5.c for more information. */ #ifdef HAVE_OPENSSL #include #elif !defined(_MD5_H) #define _MD5_H /* Any 32-bit or wider unsigned integer data type will do */ typedef unsigned int MD5_u32plus; typedef struct { MD5_u32plus lo, hi; MD5_u32plus a, b, c, d; unsigned char buffer[64]; MD5_u32plus block[16]; } MD5_CTX; extern void MD5_Init(MD5_CTX *ctx); extern void MD5_Update(MD5_CTX *ctx, void *data, unsigned long size); extern void MD5_Final(unsigned char *result, MD5_CTX *ctx); #endif #ifdef __cplusplus } #endif io_lib-1.14.6/io_lib/thread_pool.h0000644000031500020650000001514712354177666013714 00000000000000/* * Copyright (c) 2013 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * Author: James Bonfield, Wellcome Trust Sanger Institute. 2013 * * This file implements a thread pool for multi-threading applications. * It consists of two distinct interfaces: thread pools an results queues. * * The pool of threads is given a function pointer and void* data to pass in. * This means the pool can run jobs of multiple types, albeit first come * first served with no job scheduling. * * Upon completion, the return value from the function pointer is added to * a results queue. We may have multiple queues in use for the one pool. * * An example: reading from BAM and writing to CRAM with 10 threads. We'll * have a pool of 10 threads and two results queues holding decoded BAM blocks * and encoded CRAM blocks respectively. */ #ifndef _THREAD_POOL_H_ #define _THREAD_POOL_H_ #include struct t_pool; struct t_results_queue; typedef struct t_pool_job { void *(*func)(void *arg); void *arg; struct t_pool_job *next; struct t_pool *p; struct t_results_queue *q; int serial; } t_pool_job; typedef struct t_res { struct t_res *next; int serial; // sequential number for ordering void *data; // result itself } t_pool_result; struct t_pool; typedef struct { struct t_pool *p; int idx; pthread_t tid; pthread_cond_t pending_c; long long wait_time; } t_pool_worker_t; typedef struct t_pool { int qsize; // size of queue int njobs; // pending job count int nwaiting; // how many workers waiting for new jobs int shutdown; // true if pool is being destroyed // queue of pending jobs t_pool_job *head, *tail; // threads int tsize; // maximum number of jobs t_pool_worker_t *t; // Mutexes pthread_mutex_t pool_m; // used when updating head/tail pthread_cond_t empty_c; pthread_cond_t pending_c; // not empty pthread_cond_t full_c; // array of worker IDs free int *t_stack, t_stack_top; // Debugging to check wait time long long total_time, wait_time; } t_pool; typedef struct t_results_queue { t_pool_result *result_head; t_pool_result *result_tail; int next_serial; int curr_serial; int queue_len; // number of items in queue int pending; // number of pending items (in progress or in pool list) pthread_mutex_t result_m; pthread_cond_t result_avail_c; } t_results_queue; /* * Creates a worker pool of length qsize with tsize worker threads. * * Returns pool pointer on success; * NULL on failure */ t_pool *t_pool_init(int qsize, int tsize); /* * Adds an item to the work pool. * * FIXME: Maybe return 1,0,-1 and distinguish between job dispathed vs * result returned. Ie rather than blocking on full queue we're permitted * to return early on "result available" event too. * Caller would then have a while loop around t_pool_dispatch. * Or, return -1 and set errno to E_AGAIN to indicate job not yet submitted. * * Returns 0 on success * -1 on failure */ int t_pool_dispatch(t_pool *p, t_results_queue *q, void *(*func)(void *arg), void *arg); int t_pool_dispatch2(t_pool *p, t_results_queue *q, void *(*func)(void *arg), void *arg, int nonblock); /* * Flushes the pool, but doesn't exit. This simply drains the queue and * ensures all worker threads have finished their current task. * * Returns 0 on success; * -1 on failure */ int t_pool_flush(t_pool *p); /* * Destroys a thread pool. If 'kill' is true the threads are terminated now, * otherwise they are joined into the main thread so they will finish their * current work load. * * Use t_pool_destroy(p,0) after a t_pool_flush(p) on a normal shutdown or * t_pool_destroy(p,1) to quickly exit after a fatal error. */ void t_pool_destroy(t_pool *p, int kill); /* * Pulls a result off the head of the result queue. Caller should * free it (and any internals as appropriate) after use. This doesn't * wait for a result to be present. * * Results will be returned in strict order. * * Returns t_pool_result pointer if a result is ready. * NULL if not. */ t_pool_result *t_pool_next_result(t_results_queue *q); t_pool_result *t_pool_next_result_wait(t_results_queue *q); /* * Frees a result 'r' and if free_data is true also frees * the internal r->data result too. */ void t_pool_delete_result(t_pool_result *r, int free_data); /* * Initialises a results queue. * * Results queue pointer on success; * NULL on failure */ t_results_queue *t_results_queue_init(void); /* Deallocates memory for a results queue */ void t_results_queue_destroy(t_results_queue *q); /* * Returns true if there are no items on the finished results queue and * also none still pending. */ int t_pool_results_queue_empty(t_results_queue *q); /* * Returns the number of completed jobs on the results queue. */ int t_pool_results_queue_len(t_results_queue *q); /* * Returns the number of completed jobs plus the number queued up to run. */ int t_pool_results_queue_sz(t_results_queue *q); #endif /* _THREAD_POOL_H_ */ io_lib-1.14.6/io_lib/binning.h0000644000031500020650000000403312545536330013015 00000000000000/* * Copyright (c) 2014 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * Author: James Bonfield, Wellcome Trust Sanger Institute. 2014 */ #ifndef CRAM_BINNING_H #define CRAM_BINNING_H /* See http://res.illumina.com/documents/products/whitepapers/whitepaper_datacompression.pdf */ extern unsigned int illumina_bin[256]; extern unsigned int illumina_bin_33[256]; enum quality_binning { BINNING_NONE = 0, BINNING_ILLUMINA = 1, }; #endif /* CRAM_BINNING_H */ io_lib-1.14.6/io_lib/os.h.in0000644000031500020650000002342712513677641012435 00000000000000/* * File: os.h * * Author: * MRC Laboratory of Molecular Biology * Hills Road * Cambridge CB2 2QH * United Kingdom * * Description: operating system specific type definitions * */ #ifndef _OS_H_ #define _OS_H_ #include #include #ifdef __cplusplus extern "C" { #endif /*----------------------------------------------------------------------------- * Detection of endianness. The main part of this is done in autoconf, but * for the case of MacOS FAT binaries we fall back on auto-sensing based on * processor type too. */ /* Set by autoconf */ @SET_ENDIAN@ @SET_STDIO_EXT@ @SET_CRAM_IO_CUSTOM_BUFFERING@ /* Mac FAT binaries or unknown. Auto detect based on CPU type */ #if !defined(SP_BIG_ENDIAN) && !defined(SP_LITTLE_ENDIAN) /* * x86 equivalents */ #if defined(__i386__) || defined(__i386) || defined(__amd64__) || defined(__amd64) || defined(__x86_64__) || defined(__x86_64) || defined(__i686__) || defined(__i686) # if defined(SP_BIG_ENDIAN) # undef SP_BIG_ENDIAN # endif # define SP_LITTLE_ENDIAN #endif /* * DEC Alpha */ #if defined(__alpha__) || defined(__alpha) # if defined(SP_LITTLE_ENDIAN) # undef SP_LITTLE_ENDIAN # endif # define SP_BIG_ENDIAN #endif /* * SUN Sparc */ #if defined(__sparc__) || defined(__sparc) # if defined(SP_LITTLE_ENDIAN) # undef SP_LITTLE_ENDIAN # endif # define SP_BIG_ENDIAN #endif /* * PowerPC */ #if defined(__ppc__) || defined(__ppc) # if defined(SP_LITTLE_ENDIAN) # undef SP_LITTLE_ENDIAN # endif # define SP_BIG_ENDIAN #endif /* Some catch-alls */ #if defined(__LITTLE_ENDIAN__) || defined(__LITTLEENDIAN__) # define SP_LITTLE_ENDIAN #endif #if defined(__BIG_ENDIAN__) || defined(__BIGENDIAN__) # define SP_BIG_ENDIAN #endif #if defined(SP_BIG_ENDIAN) && defined(SP_LITTLE_ENDIAN) # error Both BIG and LITTLE endian defined. Fix os.h and/or Makefile #endif #if !defined(SP_BIG_ENDIAN) && !defined(SP_LITTLE_ENDIAN) # error Neither BIG nor LITTLE endian defined. Fix os.h and/or Makefile #endif #endif /*----------------------------------------------------------------------------- * Allow for unaligned memory access. This is used in BAM code as the packed * structure has 4-byte cigar ints after the variable length name. * * Consider using AX_CHECK_ALIGNED_ACCESS_REQUIRED in autoconf. */ #if defined(__i386__) || defined(__i386) || defined(__amd64__) || defined(__amd64) || defined(__x86_64__) || defined(__x86_64) || defined(__i686__) || defined(__i686) # define ALLOW_UAC #endif /*----------------------------------------------------------------------------- * Byte swapping macros */ /* * Our new swap runs at the same speed on Ultrix, but substantially faster * (300% for swap_int4, ~50% for swap_int2) on an Alpha (due to the lack of * decent 'char' support). * * They also have the ability to swap in situ (src == dst). Newer code now * relies on this so don't change back! */ #define iswap_int8(x) \ (((x & 0x00000000000000ffLL) << 56) + \ ((x & 0x000000000000ff00LL) << 40) + \ ((x & 0x0000000000ff0000LL) << 24) + \ ((x & 0x00000000ff000000LL) << 8) + \ ((x & 0x000000ff00000000LL) >> 8) + \ ((x & 0x0000ff0000000000LL) >> 24) + \ ((x & 0x00ff000000000000LL) >> 40) + \ ((x & 0xff00000000000000LL) >> 56)) #define iswap_int4(x) \ (((x & 0x000000ff) << 24) + \ ((x & 0x0000ff00) << 8) + \ ((x & 0x00ff0000) >> 8) + \ ((x & 0xff000000) >> 24)) #define iswap_int2(x) \ (((x & 0x00ff) << 8) + \ ((x & 0xff00) >> 8)) #define swap_int8(src, dst) ((dst) = iswap_int8(src)) #define swap_int4(src, dst) ((dst) = iswap_int4(src)) #define swap_int2(src, dst) ((dst) = iswap_int2(src)) /* * Linux systems may use byteswap.h to get assembly versions of byte-swap * on intel systems. This can be as trivial as the bswap opcode, which works * out at over 2-times faster than iswap_int4 above. */ #if 0 #if defined(__linux__) # include # undef iswap_int8 # undef iswap_int4 # undef iswap_int2 # define iswap_int8 bswap_64 # define iswap_int4 bswap_32 # define iswap_int2 bswap_16 #endif #endif /* * Macros to specify that data read in is of a particular endianness. * The macros here swap to the appropriate order for the particular machine * running the macro and return the new answer. These may also be used when * writing to a file to specify that we wish to write in (eg) big endian * format. * * This leads to efficient code as most of the time these macros are * trivial. */ #ifdef SP_BIG_ENDIAN #define be_int8(x) (x) #define be_int4(x) (x) #define be_int2(x) (x) #define be_int1(x) (x) #define le_int8(x) iswap_int8((x)) #define le_int4(x) iswap_int4((x)) #define le_int2(x) iswap_int2((x)) #define le_int1(x) (x) #endif #ifdef SP_LITTLE_ENDIAN #define be_int8(x) iswap_int8((x)) #define be_int4(x) iswap_int4((x)) #define be_int2(x) iswap_int2((x)) #define be_int1(x) (x) #define le_int8(x) (x) #define le_int4(x) (x) #define le_int2(x) (x) #define le_int1(x) (x) #endif /*----------------------------------------------------------------------------- * Configuration of which io_lib sub-components we wish to support. * (These are now manditory for the stand-alone build of io_lib. Do * not change.) */ #define IOLIB_ABI #define IOLIB_SCF #define IOLIB_ALF #define IOLIB_PLN #define IOLIB_EXP #define IOLIB_SFF #define IOLIB_ZTR /*----------------------------------------------------------------------------- * definitions, incase they're not present */ #ifndef PRId64 #define __PRI64__ "l" #define PRId64 __PRI64__ "d" #define PRId32 "d" #define PRId16 "d" #define PRId8 "d" #define PRIu64 __PRI64__ "u" #define PRIu32 "u" #define PRIu16 "u" #define PRIu8 "u" #endif /*----------------------------------------------------------------------------- * Operating system specifics. * These ought to be done by autoconf, but are legacy code. */ /* * SunOS 4.x * Even though we use the ANSI gcc, we make use the the standard SunOS 4.x * libraries and include files, which are non-ansi */ #if defined(__sun__) && !defined(__svr4__) #define SEEK_SET 0 #define SEEK_CUR 1 #define SEEK_END 2 #define FOPEN_MAX 64 #define FILENAME_MAX 1024 /* Missing functions, defined in strings.c */ #define NOMEMMOVE #define NOSTRERROR #define BUGGY_SSCANF #endif /* * SunOS 5.x - gcc or Sun's cc */ #if (defined(__sun__) || defined(__sun)) && (defined(__svr4__) || defined(__SVR4)) # define IMAGEDISPLAY # define NOSTRDUP #endif /* * Microsoft Visual C++ * Windows */ #if defined(_MSC_VER) #define popen _popen #define pclose _pclose typedef int mode_t; #define ftruncate(fd,len) _chsize(fd,len) #define sysconf(x) 512 #define NOPIPE #define NOLOCKF #define NOSTRCASECMP #define NO_STRPTIME #undef HAVE_SYS_WAIT_H #endif /* * Microsoft Windows running MinGW */ #if defined(__MINGW32__) #include #define mkdir(filename,mode) mkdir((filename)) #define NOPIPE #define NOLOCKF #define NO_STRPTIME #define sysconf(x) 512 #define ftruncate(fd,len) _chsize(fd,len) #undef HAVE_SYS_WAIT_H #endif /* Generic WIN32 API issues */ #ifdef _WIN32 # ifndef HAVE_FSEEKO # if __MSVCRT_VERSION__ >= 0x800 /* if you have MSVCR80 installed then you can use these definitions: */ # define off_t __int64 # define fseeko _fseeki64 # define ftello _ftelli64 # else /* otherwise we're stuck with 32-bit file support */ # define off_t long # define fseeko fseek # define ftello ftell # endif # endif /* !HAVE_FSEEKO */ #endif /* _WIN32 */ /* * DEC Alpha's running Digital UNIX */ #if defined(__alpha) /* Nothing as yet */ #endif /* * Silicon Graphics - Irix */ #if defined(__sgi) #define NOSTRDUP #define NO_STRPTIME #endif /* * Macs (<= OS 9) - yuk! */ #if defined(MAC) #define NOSTRDUP #endif #if defined(__APPLE__) && defined(__ppc__) #define NO_STRPTIME #define NOLOCKF #endif #if defined(__APPLE__) && defined(__i386__) /* nothing untoward as yet */ #endif /*----------------------------------------------------------------------------- * Typedefs for data sizes. Note there's umpteen versions of typedefs here * due to old code being supported. The ones that should be used everywhere * are {u,}int[124]. * * C9X defines its own versions of these in inttypes.h so new code should * ideally be using the (for example) int32_t style of types. Again this * is just legacy code. */ /* * Convenience of type casting */ typedef unsigned char uc; typedef signed char sc; /* * One byte integers */ typedef unsigned char int1; typedef unsigned char uint1; /* * Two byte integers */ typedef signed short int2; typedef unsigned short uint2; /* * Four byte integers */ typedef signed int int4; typedef unsigned int uint4; typedef int64_t int8; typedef uint64_t uint8; /* * Backwards compatibility */ typedef signed char int_1; typedef unsigned char uint_1; typedef signed short int_2; typedef unsigned short uint_2; typedef signed int int_4; typedef unsigned int uint_4; /* * Some handy definitions. */ #define MAXINT8 (9223372036854775807LL) #define MAXINT4 (INT_MAX) #define MAXINT2 (SHRT_MAX) /*----------------------------------------------------------------------------- * The FORTRAN interface. */ typedef int4 f_int; typedef int4 f_implicit; typedef void f_proc_ret; /* procedure return value */ /* James Bonfield compatability mode */ typedef int4 int_f; /* f_int */ typedef int4 int_fl; /* f_implicit */ #define f_proc_return() return /* (f_proc_ret) 0 */ /* * Use when calling/defining a Fortran function from C. */ #ifdef VMS # define FORT(symbol) (symbol) #else # define FORT(symbol) (_symbol) #endif #ifdef __cplusplus } #endif /*----------------------------------------------------------------------------- * define PATH_MAX in case it is not available (for example for hurd_i386) */ #ifndef PATH_MAX # define PATH_MAX 4096 #endif #endif /*_OS_H_*/ io_lib-1.14.6/io_lib/Makefile.am0000644000031500020650000000634612545536330013265 00000000000000# Copyright (c) 2003, 2005-2007, 2009-2010, 2013 Genome Research Ltd. # Author(s): James Bonfield # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # # 1. Redistributions of source code must retain the above copyright notice, # this list of conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger # Institute nor the names of its contributors may be used to endorse # or promote products derived from this software without specific # prior written permission. # # THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS # IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED # TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A # PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH # LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # lib_LTLIBRARIES = libstaden-read.la libstaden_read_la_SOURCES = \ Read.c \ Read.h \ scf_extras.c \ scf_extras.h \ translate.c \ translate.h \ compression.c \ compression.h \ ztr.c \ ztr.h \ ztr_translate.c \ deflate_interlaced.c \ deflate_interlaced.h \ abi.h \ fpoint.c \ fpoint.h \ seqIOABI.c \ seqIOABI.h \ seqIOALF.c \ alf.h \ expFileIO.c \ expFileIO.h \ plain.h \ seqIOPlain.c \ misc_scf.c \ read_scf.c \ scf.h \ write_scf.c \ sff.c \ sff.h \ srf.c \ srf.h \ array.c \ array.h \ compress.c \ compress.h \ error.c \ error.h \ files.c \ find.c \ mach-io.c \ mach-io.h \ misc.h \ open_trace_file.c \ open_trace_file.h \ read_alloc.c \ strings.c \ tar_format.h \ traceType.c \ traceType.h \ xalloc.c \ xalloc.h \ vlen.c \ vlen.h \ hash_table.c \ hash_table.h \ jenkins_lookup3.c \ jenkins_lookup3.h \ mFILE.c \ mFILE.h \ stdio_hack.h \ pooled_alloc.c \ pooled_alloc.h \ bam.h \ bam.c \ sam_header.h \ sam_header.c \ cram.h \ rANS_static.c \ rANS_static.h \ cram_codecs.c \ cram_codecs.h \ cram_encode.c \ cram_encode.h \ cram_decode.c \ cram_decode.h \ cram_stats.c \ cram_stats.h \ cram_io.c \ cram_io.h \ cram_index.c \ cram_index.h \ cram_structs.h \ zfio.c \ zfio.h \ dstring.c \ dstring.h \ string_alloc.c \ string_alloc.h \ md5.c \ md5.h \ scram.c \ scram.h \ thread_pool.c \ thread_pool.h \ binning.h \ binning.c \ cram_bambam.c libstaden_read_la_CPPFLAGS = @LIBCURL_CPPFLAGS@ libstaden_read_la_LDFLAGS = -version-info @VERS_CURRENT@:@VERS_REVISION@:@VERS_AGE@ libstaden_read_la_LIBADD = @LIBZ@ @LIBCURL@ INCLUDES = -I${top_srcdir} io_lib-1.14.6/io_lib/Makefile.in0000644000031500020650000023226112617160066013272 00000000000000# Makefile.in generated by automake 1.11.3 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = io_lib DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(srcdir)/os.h.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/io_lib_config.h CONFIG_CLEAN_FILES = os.h CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(libdir)" LTLIBRARIES = $(lib_LTLIBRARIES) libstaden_read_la_DEPENDENCIES = am_libstaden_read_la_OBJECTS = libstaden_read_la-Read.lo \ libstaden_read_la-scf_extras.lo libstaden_read_la-translate.lo \ libstaden_read_la-compression.lo libstaden_read_la-ztr.lo \ libstaden_read_la-ztr_translate.lo \ libstaden_read_la-deflate_interlaced.lo \ libstaden_read_la-fpoint.lo libstaden_read_la-seqIOABI.lo \ libstaden_read_la-seqIOALF.lo libstaden_read_la-expFileIO.lo \ libstaden_read_la-seqIOPlain.lo libstaden_read_la-misc_scf.lo \ libstaden_read_la-read_scf.lo libstaden_read_la-write_scf.lo \ libstaden_read_la-sff.lo libstaden_read_la-srf.lo \ libstaden_read_la-array.lo libstaden_read_la-compress.lo \ libstaden_read_la-error.lo libstaden_read_la-files.lo \ libstaden_read_la-find.lo libstaden_read_la-mach-io.lo \ libstaden_read_la-open_trace_file.lo \ libstaden_read_la-read_alloc.lo libstaden_read_la-strings.lo \ libstaden_read_la-traceType.lo libstaden_read_la-xalloc.lo \ libstaden_read_la-vlen.lo libstaden_read_la-hash_table.lo \ libstaden_read_la-jenkins_lookup3.lo \ libstaden_read_la-mFILE.lo libstaden_read_la-pooled_alloc.lo \ libstaden_read_la-bam.lo libstaden_read_la-sam_header.lo \ libstaden_read_la-rANS_static.lo \ libstaden_read_la-cram_codecs.lo \ libstaden_read_la-cram_encode.lo \ libstaden_read_la-cram_decode.lo \ libstaden_read_la-cram_stats.lo libstaden_read_la-cram_io.lo \ libstaden_read_la-cram_index.lo libstaden_read_la-zfio.lo \ libstaden_read_la-dstring.lo libstaden_read_la-string_alloc.lo \ libstaden_read_la-md5.lo libstaden_read_la-scram.lo \ libstaden_read_la-thread_pool.lo libstaden_read_la-binning.lo \ libstaden_read_la-cram_bambam.lo libstaden_read_la_OBJECTS = $(am_libstaden_read_la_OBJECTS) libstaden_read_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(libstaden_read_la_LDFLAGS) $(LDFLAGS) -o $@ DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ SOURCES = $(libstaden_read_la_SOURCES) DIST_SOURCES = $(libstaden_read_la_SOURCES) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBCURL = @LIBCURL@ LIBCURL_CPPFLAGS = @LIBCURL_CPPFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBZ = @LIBZ@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ SED = @SED@ SET_CRAM_IO_CUSTOM_BUFFERING = @SET_CRAM_IO_CUSTOM_BUFFERING@ SET_ENDIAN = @SET_ENDIAN@ SET_MAKE = @SET_MAKE@ SET_STDIO_EXT = @SET_STDIO_EXT@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ VERS_AGE = @VERS_AGE@ VERS_CURRENT = @VERS_CURRENT@ VERS_REVISION = @VERS_REVISION@ _libcurl_config = @_libcurl_config@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # Copyright (c) 2003, 2005-2007, 2009-2010, 2013 Genome Research Ltd. # Author(s): James Bonfield # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # # 1. Redistributions of source code must retain the above copyright notice, # this list of conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger # Institute nor the names of its contributors may be used to endorse # or promote products derived from this software without specific # prior written permission. # # THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS # IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED # TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A # PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH # LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # lib_LTLIBRARIES = libstaden-read.la libstaden_read_la_SOURCES = \ Read.c \ Read.h \ scf_extras.c \ scf_extras.h \ translate.c \ translate.h \ compression.c \ compression.h \ ztr.c \ ztr.h \ ztr_translate.c \ deflate_interlaced.c \ deflate_interlaced.h \ abi.h \ fpoint.c \ fpoint.h \ seqIOABI.c \ seqIOABI.h \ seqIOALF.c \ alf.h \ expFileIO.c \ expFileIO.h \ plain.h \ seqIOPlain.c \ misc_scf.c \ read_scf.c \ scf.h \ write_scf.c \ sff.c \ sff.h \ srf.c \ srf.h \ array.c \ array.h \ compress.c \ compress.h \ error.c \ error.h \ files.c \ find.c \ mach-io.c \ mach-io.h \ misc.h \ open_trace_file.c \ open_trace_file.h \ read_alloc.c \ strings.c \ tar_format.h \ traceType.c \ traceType.h \ xalloc.c \ xalloc.h \ vlen.c \ vlen.h \ hash_table.c \ hash_table.h \ jenkins_lookup3.c \ jenkins_lookup3.h \ mFILE.c \ mFILE.h \ stdio_hack.h \ pooled_alloc.c \ pooled_alloc.h \ bam.h \ bam.c \ sam_header.h \ sam_header.c \ cram.h \ rANS_static.c \ rANS_static.h \ cram_codecs.c \ cram_codecs.h \ cram_encode.c \ cram_encode.h \ cram_decode.c \ cram_decode.h \ cram_stats.c \ cram_stats.h \ cram_io.c \ cram_io.h \ cram_index.c \ cram_index.h \ cram_structs.h \ zfio.c \ zfio.h \ dstring.c \ dstring.h \ string_alloc.c \ string_alloc.h \ md5.c \ md5.h \ scram.c \ scram.h \ thread_pool.c \ thread_pool.h \ binning.h \ binning.c \ cram_bambam.c libstaden_read_la_CPPFLAGS = @LIBCURL_CPPFLAGS@ libstaden_read_la_LDFLAGS = -version-info @VERS_CURRENT@:@VERS_REVISION@:@VERS_AGE@ libstaden_read_la_LIBADD = @LIBZ@ @LIBCURL@ INCLUDES = -I${top_srcdir} all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign io_lib/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign io_lib/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): os.h: $(top_builddir)/config.status $(srcdir)/os.h.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ install-libLTLIBRARIES: $(lib_LTLIBRARIES) @$(NORMAL_INSTALL) test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)" @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ } uninstall-libLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ done clean-libLTLIBRARIES: -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ test "$$dir" != "$$p" || dir=.; \ echo "rm -f \"$${dir}/so_locations\""; \ rm -f "$${dir}/so_locations"; \ done libstaden-read.la: $(libstaden_read_la_OBJECTS) $(libstaden_read_la_DEPENDENCIES) $(EXTRA_libstaden_read_la_DEPENDENCIES) $(libstaden_read_la_LINK) -rpath $(libdir) $(libstaden_read_la_OBJECTS) $(libstaden_read_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstaden_read_la-Read.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstaden_read_la-array.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstaden_read_la-bam.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstaden_read_la-binning.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstaden_read_la-compress.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstaden_read_la-compression.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstaden_read_la-cram_bambam.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstaden_read_la-cram_codecs.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstaden_read_la-cram_decode.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstaden_read_la-cram_encode.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstaden_read_la-cram_index.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstaden_read_la-cram_io.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstaden_read_la-cram_stats.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstaden_read_la-deflate_interlaced.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstaden_read_la-dstring.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstaden_read_la-error.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstaden_read_la-expFileIO.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstaden_read_la-files.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstaden_read_la-find.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstaden_read_la-fpoint.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstaden_read_la-hash_table.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstaden_read_la-jenkins_lookup3.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstaden_read_la-mFILE.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstaden_read_la-mach-io.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstaden_read_la-md5.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstaden_read_la-misc_scf.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstaden_read_la-open_trace_file.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstaden_read_la-pooled_alloc.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstaden_read_la-rANS_static.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstaden_read_la-read_alloc.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstaden_read_la-read_scf.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstaden_read_la-sam_header.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstaden_read_la-scf_extras.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstaden_read_la-scram.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstaden_read_la-seqIOABI.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstaden_read_la-seqIOALF.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstaden_read_la-seqIOPlain.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstaden_read_la-sff.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstaden_read_la-srf.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstaden_read_la-string_alloc.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstaden_read_la-strings.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstaden_read_la-thread_pool.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstaden_read_la-traceType.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstaden_read_la-translate.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstaden_read_la-vlen.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstaden_read_la-write_scf.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstaden_read_la-xalloc.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstaden_read_la-zfio.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstaden_read_la-ztr.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstaden_read_la-ztr_translate.Plo@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c $< .c.obj: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< libstaden_read_la-Read.lo: Read.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libstaden_read_la-Read.lo -MD -MP -MF $(DEPDIR)/libstaden_read_la-Read.Tpo -c -o libstaden_read_la-Read.lo `test -f 'Read.c' || echo '$(srcdir)/'`Read.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libstaden_read_la-Read.Tpo $(DEPDIR)/libstaden_read_la-Read.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='Read.c' object='libstaden_read_la-Read.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libstaden_read_la-Read.lo `test -f 'Read.c' || echo '$(srcdir)/'`Read.c libstaden_read_la-scf_extras.lo: scf_extras.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libstaden_read_la-scf_extras.lo -MD -MP -MF $(DEPDIR)/libstaden_read_la-scf_extras.Tpo -c -o libstaden_read_la-scf_extras.lo `test -f 'scf_extras.c' || echo '$(srcdir)/'`scf_extras.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libstaden_read_la-scf_extras.Tpo $(DEPDIR)/libstaden_read_la-scf_extras.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='scf_extras.c' object='libstaden_read_la-scf_extras.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libstaden_read_la-scf_extras.lo `test -f 'scf_extras.c' || echo '$(srcdir)/'`scf_extras.c libstaden_read_la-translate.lo: translate.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libstaden_read_la-translate.lo -MD -MP -MF $(DEPDIR)/libstaden_read_la-translate.Tpo -c -o libstaden_read_la-translate.lo `test -f 'translate.c' || echo '$(srcdir)/'`translate.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libstaden_read_la-translate.Tpo $(DEPDIR)/libstaden_read_la-translate.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='translate.c' object='libstaden_read_la-translate.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libstaden_read_la-translate.lo `test -f 'translate.c' || echo '$(srcdir)/'`translate.c libstaden_read_la-compression.lo: compression.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libstaden_read_la-compression.lo -MD -MP -MF $(DEPDIR)/libstaden_read_la-compression.Tpo -c -o libstaden_read_la-compression.lo `test -f 'compression.c' || echo '$(srcdir)/'`compression.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libstaden_read_la-compression.Tpo $(DEPDIR)/libstaden_read_la-compression.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='compression.c' object='libstaden_read_la-compression.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libstaden_read_la-compression.lo `test -f 'compression.c' || echo '$(srcdir)/'`compression.c libstaden_read_la-ztr.lo: ztr.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libstaden_read_la-ztr.lo -MD -MP -MF $(DEPDIR)/libstaden_read_la-ztr.Tpo -c -o libstaden_read_la-ztr.lo `test -f 'ztr.c' || echo '$(srcdir)/'`ztr.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libstaden_read_la-ztr.Tpo $(DEPDIR)/libstaden_read_la-ztr.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ztr.c' object='libstaden_read_la-ztr.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libstaden_read_la-ztr.lo `test -f 'ztr.c' || echo '$(srcdir)/'`ztr.c libstaden_read_la-ztr_translate.lo: ztr_translate.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libstaden_read_la-ztr_translate.lo -MD -MP -MF $(DEPDIR)/libstaden_read_la-ztr_translate.Tpo -c -o libstaden_read_la-ztr_translate.lo `test -f 'ztr_translate.c' || echo '$(srcdir)/'`ztr_translate.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libstaden_read_la-ztr_translate.Tpo $(DEPDIR)/libstaden_read_la-ztr_translate.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ztr_translate.c' object='libstaden_read_la-ztr_translate.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libstaden_read_la-ztr_translate.lo `test -f 'ztr_translate.c' || echo '$(srcdir)/'`ztr_translate.c libstaden_read_la-deflate_interlaced.lo: deflate_interlaced.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libstaden_read_la-deflate_interlaced.lo -MD -MP -MF $(DEPDIR)/libstaden_read_la-deflate_interlaced.Tpo -c -o libstaden_read_la-deflate_interlaced.lo `test -f 'deflate_interlaced.c' || echo '$(srcdir)/'`deflate_interlaced.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libstaden_read_la-deflate_interlaced.Tpo $(DEPDIR)/libstaden_read_la-deflate_interlaced.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='deflate_interlaced.c' object='libstaden_read_la-deflate_interlaced.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libstaden_read_la-deflate_interlaced.lo `test -f 'deflate_interlaced.c' || echo '$(srcdir)/'`deflate_interlaced.c libstaden_read_la-fpoint.lo: fpoint.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libstaden_read_la-fpoint.lo -MD -MP -MF $(DEPDIR)/libstaden_read_la-fpoint.Tpo -c -o libstaden_read_la-fpoint.lo `test -f 'fpoint.c' || echo '$(srcdir)/'`fpoint.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libstaden_read_la-fpoint.Tpo $(DEPDIR)/libstaden_read_la-fpoint.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fpoint.c' object='libstaden_read_la-fpoint.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libstaden_read_la-fpoint.lo `test -f 'fpoint.c' || echo '$(srcdir)/'`fpoint.c libstaden_read_la-seqIOABI.lo: seqIOABI.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libstaden_read_la-seqIOABI.lo -MD -MP -MF $(DEPDIR)/libstaden_read_la-seqIOABI.Tpo -c -o libstaden_read_la-seqIOABI.lo `test -f 'seqIOABI.c' || echo '$(srcdir)/'`seqIOABI.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libstaden_read_la-seqIOABI.Tpo $(DEPDIR)/libstaden_read_la-seqIOABI.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='seqIOABI.c' object='libstaden_read_la-seqIOABI.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libstaden_read_la-seqIOABI.lo `test -f 'seqIOABI.c' || echo '$(srcdir)/'`seqIOABI.c libstaden_read_la-seqIOALF.lo: seqIOALF.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libstaden_read_la-seqIOALF.lo -MD -MP -MF $(DEPDIR)/libstaden_read_la-seqIOALF.Tpo -c -o libstaden_read_la-seqIOALF.lo `test -f 'seqIOALF.c' || echo '$(srcdir)/'`seqIOALF.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libstaden_read_la-seqIOALF.Tpo $(DEPDIR)/libstaden_read_la-seqIOALF.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='seqIOALF.c' object='libstaden_read_la-seqIOALF.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libstaden_read_la-seqIOALF.lo `test -f 'seqIOALF.c' || echo '$(srcdir)/'`seqIOALF.c libstaden_read_la-expFileIO.lo: expFileIO.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libstaden_read_la-expFileIO.lo -MD -MP -MF $(DEPDIR)/libstaden_read_la-expFileIO.Tpo -c -o libstaden_read_la-expFileIO.lo `test -f 'expFileIO.c' || echo '$(srcdir)/'`expFileIO.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libstaden_read_la-expFileIO.Tpo $(DEPDIR)/libstaden_read_la-expFileIO.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='expFileIO.c' object='libstaden_read_la-expFileIO.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libstaden_read_la-expFileIO.lo `test -f 'expFileIO.c' || echo '$(srcdir)/'`expFileIO.c libstaden_read_la-seqIOPlain.lo: seqIOPlain.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libstaden_read_la-seqIOPlain.lo -MD -MP -MF $(DEPDIR)/libstaden_read_la-seqIOPlain.Tpo -c -o libstaden_read_la-seqIOPlain.lo `test -f 'seqIOPlain.c' || echo '$(srcdir)/'`seqIOPlain.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libstaden_read_la-seqIOPlain.Tpo $(DEPDIR)/libstaden_read_la-seqIOPlain.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='seqIOPlain.c' object='libstaden_read_la-seqIOPlain.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libstaden_read_la-seqIOPlain.lo `test -f 'seqIOPlain.c' || echo '$(srcdir)/'`seqIOPlain.c libstaden_read_la-misc_scf.lo: misc_scf.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libstaden_read_la-misc_scf.lo -MD -MP -MF $(DEPDIR)/libstaden_read_la-misc_scf.Tpo -c -o libstaden_read_la-misc_scf.lo `test -f 'misc_scf.c' || echo '$(srcdir)/'`misc_scf.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libstaden_read_la-misc_scf.Tpo $(DEPDIR)/libstaden_read_la-misc_scf.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='misc_scf.c' object='libstaden_read_la-misc_scf.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libstaden_read_la-misc_scf.lo `test -f 'misc_scf.c' || echo '$(srcdir)/'`misc_scf.c libstaden_read_la-read_scf.lo: read_scf.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libstaden_read_la-read_scf.lo -MD -MP -MF $(DEPDIR)/libstaden_read_la-read_scf.Tpo -c -o libstaden_read_la-read_scf.lo `test -f 'read_scf.c' || echo '$(srcdir)/'`read_scf.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libstaden_read_la-read_scf.Tpo $(DEPDIR)/libstaden_read_la-read_scf.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='read_scf.c' object='libstaden_read_la-read_scf.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libstaden_read_la-read_scf.lo `test -f 'read_scf.c' || echo '$(srcdir)/'`read_scf.c libstaden_read_la-write_scf.lo: write_scf.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libstaden_read_la-write_scf.lo -MD -MP -MF $(DEPDIR)/libstaden_read_la-write_scf.Tpo -c -o libstaden_read_la-write_scf.lo `test -f 'write_scf.c' || echo '$(srcdir)/'`write_scf.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libstaden_read_la-write_scf.Tpo $(DEPDIR)/libstaden_read_la-write_scf.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='write_scf.c' object='libstaden_read_la-write_scf.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libstaden_read_la-write_scf.lo `test -f 'write_scf.c' || echo '$(srcdir)/'`write_scf.c libstaden_read_la-sff.lo: sff.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libstaden_read_la-sff.lo -MD -MP -MF $(DEPDIR)/libstaden_read_la-sff.Tpo -c -o libstaden_read_la-sff.lo `test -f 'sff.c' || echo '$(srcdir)/'`sff.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libstaden_read_la-sff.Tpo $(DEPDIR)/libstaden_read_la-sff.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='sff.c' object='libstaden_read_la-sff.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libstaden_read_la-sff.lo `test -f 'sff.c' || echo '$(srcdir)/'`sff.c libstaden_read_la-srf.lo: srf.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libstaden_read_la-srf.lo -MD -MP -MF $(DEPDIR)/libstaden_read_la-srf.Tpo -c -o libstaden_read_la-srf.lo `test -f 'srf.c' || echo '$(srcdir)/'`srf.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libstaden_read_la-srf.Tpo $(DEPDIR)/libstaden_read_la-srf.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='srf.c' object='libstaden_read_la-srf.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libstaden_read_la-srf.lo `test -f 'srf.c' || echo '$(srcdir)/'`srf.c libstaden_read_la-array.lo: array.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libstaden_read_la-array.lo -MD -MP -MF $(DEPDIR)/libstaden_read_la-array.Tpo -c -o libstaden_read_la-array.lo `test -f 'array.c' || echo '$(srcdir)/'`array.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libstaden_read_la-array.Tpo $(DEPDIR)/libstaden_read_la-array.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='array.c' object='libstaden_read_la-array.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libstaden_read_la-array.lo `test -f 'array.c' || echo '$(srcdir)/'`array.c libstaden_read_la-compress.lo: compress.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libstaden_read_la-compress.lo -MD -MP -MF $(DEPDIR)/libstaden_read_la-compress.Tpo -c -o libstaden_read_la-compress.lo `test -f 'compress.c' || echo '$(srcdir)/'`compress.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libstaden_read_la-compress.Tpo $(DEPDIR)/libstaden_read_la-compress.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='compress.c' object='libstaden_read_la-compress.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libstaden_read_la-compress.lo `test -f 'compress.c' || echo '$(srcdir)/'`compress.c libstaden_read_la-error.lo: error.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libstaden_read_la-error.lo -MD -MP -MF $(DEPDIR)/libstaden_read_la-error.Tpo -c -o libstaden_read_la-error.lo `test -f 'error.c' || echo '$(srcdir)/'`error.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libstaden_read_la-error.Tpo $(DEPDIR)/libstaden_read_la-error.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='error.c' object='libstaden_read_la-error.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libstaden_read_la-error.lo `test -f 'error.c' || echo '$(srcdir)/'`error.c libstaden_read_la-files.lo: files.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libstaden_read_la-files.lo -MD -MP -MF $(DEPDIR)/libstaden_read_la-files.Tpo -c -o libstaden_read_la-files.lo `test -f 'files.c' || echo '$(srcdir)/'`files.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libstaden_read_la-files.Tpo $(DEPDIR)/libstaden_read_la-files.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='files.c' object='libstaden_read_la-files.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libstaden_read_la-files.lo `test -f 'files.c' || echo '$(srcdir)/'`files.c libstaden_read_la-find.lo: find.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libstaden_read_la-find.lo -MD -MP -MF $(DEPDIR)/libstaden_read_la-find.Tpo -c -o libstaden_read_la-find.lo `test -f 'find.c' || echo '$(srcdir)/'`find.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libstaden_read_la-find.Tpo $(DEPDIR)/libstaden_read_la-find.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='find.c' object='libstaden_read_la-find.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libstaden_read_la-find.lo `test -f 'find.c' || echo '$(srcdir)/'`find.c libstaden_read_la-mach-io.lo: mach-io.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libstaden_read_la-mach-io.lo -MD -MP -MF $(DEPDIR)/libstaden_read_la-mach-io.Tpo -c -o libstaden_read_la-mach-io.lo `test -f 'mach-io.c' || echo '$(srcdir)/'`mach-io.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libstaden_read_la-mach-io.Tpo $(DEPDIR)/libstaden_read_la-mach-io.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='mach-io.c' object='libstaden_read_la-mach-io.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libstaden_read_la-mach-io.lo `test -f 'mach-io.c' || echo '$(srcdir)/'`mach-io.c libstaden_read_la-open_trace_file.lo: open_trace_file.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libstaden_read_la-open_trace_file.lo -MD -MP -MF $(DEPDIR)/libstaden_read_la-open_trace_file.Tpo -c -o libstaden_read_la-open_trace_file.lo `test -f 'open_trace_file.c' || echo '$(srcdir)/'`open_trace_file.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libstaden_read_la-open_trace_file.Tpo $(DEPDIR)/libstaden_read_la-open_trace_file.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='open_trace_file.c' object='libstaden_read_la-open_trace_file.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libstaden_read_la-open_trace_file.lo `test -f 'open_trace_file.c' || echo '$(srcdir)/'`open_trace_file.c libstaden_read_la-read_alloc.lo: read_alloc.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libstaden_read_la-read_alloc.lo -MD -MP -MF $(DEPDIR)/libstaden_read_la-read_alloc.Tpo -c -o libstaden_read_la-read_alloc.lo `test -f 'read_alloc.c' || echo '$(srcdir)/'`read_alloc.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libstaden_read_la-read_alloc.Tpo $(DEPDIR)/libstaden_read_la-read_alloc.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='read_alloc.c' object='libstaden_read_la-read_alloc.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libstaden_read_la-read_alloc.lo `test -f 'read_alloc.c' || echo '$(srcdir)/'`read_alloc.c libstaden_read_la-strings.lo: strings.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libstaden_read_la-strings.lo -MD -MP -MF $(DEPDIR)/libstaden_read_la-strings.Tpo -c -o libstaden_read_la-strings.lo `test -f 'strings.c' || echo '$(srcdir)/'`strings.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libstaden_read_la-strings.Tpo $(DEPDIR)/libstaden_read_la-strings.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='strings.c' object='libstaden_read_la-strings.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libstaden_read_la-strings.lo `test -f 'strings.c' || echo '$(srcdir)/'`strings.c libstaden_read_la-traceType.lo: traceType.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libstaden_read_la-traceType.lo -MD -MP -MF $(DEPDIR)/libstaden_read_la-traceType.Tpo -c -o libstaden_read_la-traceType.lo `test -f 'traceType.c' || echo '$(srcdir)/'`traceType.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libstaden_read_la-traceType.Tpo $(DEPDIR)/libstaden_read_la-traceType.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='traceType.c' object='libstaden_read_la-traceType.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libstaden_read_la-traceType.lo `test -f 'traceType.c' || echo '$(srcdir)/'`traceType.c libstaden_read_la-xalloc.lo: xalloc.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libstaden_read_la-xalloc.lo -MD -MP -MF $(DEPDIR)/libstaden_read_la-xalloc.Tpo -c -o libstaden_read_la-xalloc.lo `test -f 'xalloc.c' || echo '$(srcdir)/'`xalloc.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libstaden_read_la-xalloc.Tpo $(DEPDIR)/libstaden_read_la-xalloc.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='xalloc.c' object='libstaden_read_la-xalloc.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libstaden_read_la-xalloc.lo `test -f 'xalloc.c' || echo '$(srcdir)/'`xalloc.c libstaden_read_la-vlen.lo: vlen.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libstaden_read_la-vlen.lo -MD -MP -MF $(DEPDIR)/libstaden_read_la-vlen.Tpo -c -o libstaden_read_la-vlen.lo `test -f 'vlen.c' || echo '$(srcdir)/'`vlen.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libstaden_read_la-vlen.Tpo $(DEPDIR)/libstaden_read_la-vlen.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='vlen.c' object='libstaden_read_la-vlen.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libstaden_read_la-vlen.lo `test -f 'vlen.c' || echo '$(srcdir)/'`vlen.c libstaden_read_la-hash_table.lo: hash_table.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libstaden_read_la-hash_table.lo -MD -MP -MF $(DEPDIR)/libstaden_read_la-hash_table.Tpo -c -o libstaden_read_la-hash_table.lo `test -f 'hash_table.c' || echo '$(srcdir)/'`hash_table.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libstaden_read_la-hash_table.Tpo $(DEPDIR)/libstaden_read_la-hash_table.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='hash_table.c' object='libstaden_read_la-hash_table.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libstaden_read_la-hash_table.lo `test -f 'hash_table.c' || echo '$(srcdir)/'`hash_table.c libstaden_read_la-jenkins_lookup3.lo: jenkins_lookup3.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libstaden_read_la-jenkins_lookup3.lo -MD -MP -MF $(DEPDIR)/libstaden_read_la-jenkins_lookup3.Tpo -c -o libstaden_read_la-jenkins_lookup3.lo `test -f 'jenkins_lookup3.c' || echo '$(srcdir)/'`jenkins_lookup3.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libstaden_read_la-jenkins_lookup3.Tpo $(DEPDIR)/libstaden_read_la-jenkins_lookup3.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='jenkins_lookup3.c' object='libstaden_read_la-jenkins_lookup3.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libstaden_read_la-jenkins_lookup3.lo `test -f 'jenkins_lookup3.c' || echo '$(srcdir)/'`jenkins_lookup3.c libstaden_read_la-mFILE.lo: mFILE.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libstaden_read_la-mFILE.lo -MD -MP -MF $(DEPDIR)/libstaden_read_la-mFILE.Tpo -c -o libstaden_read_la-mFILE.lo `test -f 'mFILE.c' || echo '$(srcdir)/'`mFILE.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libstaden_read_la-mFILE.Tpo $(DEPDIR)/libstaden_read_la-mFILE.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='mFILE.c' object='libstaden_read_la-mFILE.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libstaden_read_la-mFILE.lo `test -f 'mFILE.c' || echo '$(srcdir)/'`mFILE.c libstaden_read_la-pooled_alloc.lo: pooled_alloc.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libstaden_read_la-pooled_alloc.lo -MD -MP -MF $(DEPDIR)/libstaden_read_la-pooled_alloc.Tpo -c -o libstaden_read_la-pooled_alloc.lo `test -f 'pooled_alloc.c' || echo '$(srcdir)/'`pooled_alloc.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libstaden_read_la-pooled_alloc.Tpo $(DEPDIR)/libstaden_read_la-pooled_alloc.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='pooled_alloc.c' object='libstaden_read_la-pooled_alloc.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libstaden_read_la-pooled_alloc.lo `test -f 'pooled_alloc.c' || echo '$(srcdir)/'`pooled_alloc.c libstaden_read_la-bam.lo: bam.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libstaden_read_la-bam.lo -MD -MP -MF $(DEPDIR)/libstaden_read_la-bam.Tpo -c -o libstaden_read_la-bam.lo `test -f 'bam.c' || echo '$(srcdir)/'`bam.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libstaden_read_la-bam.Tpo $(DEPDIR)/libstaden_read_la-bam.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='bam.c' object='libstaden_read_la-bam.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libstaden_read_la-bam.lo `test -f 'bam.c' || echo '$(srcdir)/'`bam.c libstaden_read_la-sam_header.lo: sam_header.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libstaden_read_la-sam_header.lo -MD -MP -MF $(DEPDIR)/libstaden_read_la-sam_header.Tpo -c -o libstaden_read_la-sam_header.lo `test -f 'sam_header.c' || echo '$(srcdir)/'`sam_header.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libstaden_read_la-sam_header.Tpo $(DEPDIR)/libstaden_read_la-sam_header.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='sam_header.c' object='libstaden_read_la-sam_header.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libstaden_read_la-sam_header.lo `test -f 'sam_header.c' || echo '$(srcdir)/'`sam_header.c libstaden_read_la-rANS_static.lo: rANS_static.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libstaden_read_la-rANS_static.lo -MD -MP -MF $(DEPDIR)/libstaden_read_la-rANS_static.Tpo -c -o libstaden_read_la-rANS_static.lo `test -f 'rANS_static.c' || echo '$(srcdir)/'`rANS_static.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libstaden_read_la-rANS_static.Tpo $(DEPDIR)/libstaden_read_la-rANS_static.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='rANS_static.c' object='libstaden_read_la-rANS_static.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libstaden_read_la-rANS_static.lo `test -f 'rANS_static.c' || echo '$(srcdir)/'`rANS_static.c libstaden_read_la-cram_codecs.lo: cram_codecs.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libstaden_read_la-cram_codecs.lo -MD -MP -MF $(DEPDIR)/libstaden_read_la-cram_codecs.Tpo -c -o libstaden_read_la-cram_codecs.lo `test -f 'cram_codecs.c' || echo '$(srcdir)/'`cram_codecs.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libstaden_read_la-cram_codecs.Tpo $(DEPDIR)/libstaden_read_la-cram_codecs.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cram_codecs.c' object='libstaden_read_la-cram_codecs.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libstaden_read_la-cram_codecs.lo `test -f 'cram_codecs.c' || echo '$(srcdir)/'`cram_codecs.c libstaden_read_la-cram_encode.lo: cram_encode.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libstaden_read_la-cram_encode.lo -MD -MP -MF $(DEPDIR)/libstaden_read_la-cram_encode.Tpo -c -o libstaden_read_la-cram_encode.lo `test -f 'cram_encode.c' || echo '$(srcdir)/'`cram_encode.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libstaden_read_la-cram_encode.Tpo $(DEPDIR)/libstaden_read_la-cram_encode.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cram_encode.c' object='libstaden_read_la-cram_encode.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libstaden_read_la-cram_encode.lo `test -f 'cram_encode.c' || echo '$(srcdir)/'`cram_encode.c libstaden_read_la-cram_decode.lo: cram_decode.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libstaden_read_la-cram_decode.lo -MD -MP -MF $(DEPDIR)/libstaden_read_la-cram_decode.Tpo -c -o libstaden_read_la-cram_decode.lo `test -f 'cram_decode.c' || echo '$(srcdir)/'`cram_decode.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libstaden_read_la-cram_decode.Tpo $(DEPDIR)/libstaden_read_la-cram_decode.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cram_decode.c' object='libstaden_read_la-cram_decode.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libstaden_read_la-cram_decode.lo `test -f 'cram_decode.c' || echo '$(srcdir)/'`cram_decode.c libstaden_read_la-cram_stats.lo: cram_stats.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libstaden_read_la-cram_stats.lo -MD -MP -MF $(DEPDIR)/libstaden_read_la-cram_stats.Tpo -c -o libstaden_read_la-cram_stats.lo `test -f 'cram_stats.c' || echo '$(srcdir)/'`cram_stats.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libstaden_read_la-cram_stats.Tpo $(DEPDIR)/libstaden_read_la-cram_stats.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cram_stats.c' object='libstaden_read_la-cram_stats.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libstaden_read_la-cram_stats.lo `test -f 'cram_stats.c' || echo '$(srcdir)/'`cram_stats.c libstaden_read_la-cram_io.lo: cram_io.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libstaden_read_la-cram_io.lo -MD -MP -MF $(DEPDIR)/libstaden_read_la-cram_io.Tpo -c -o libstaden_read_la-cram_io.lo `test -f 'cram_io.c' || echo '$(srcdir)/'`cram_io.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libstaden_read_la-cram_io.Tpo $(DEPDIR)/libstaden_read_la-cram_io.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cram_io.c' object='libstaden_read_la-cram_io.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libstaden_read_la-cram_io.lo `test -f 'cram_io.c' || echo '$(srcdir)/'`cram_io.c libstaden_read_la-cram_index.lo: cram_index.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libstaden_read_la-cram_index.lo -MD -MP -MF $(DEPDIR)/libstaden_read_la-cram_index.Tpo -c -o libstaden_read_la-cram_index.lo `test -f 'cram_index.c' || echo '$(srcdir)/'`cram_index.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libstaden_read_la-cram_index.Tpo $(DEPDIR)/libstaden_read_la-cram_index.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cram_index.c' object='libstaden_read_la-cram_index.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libstaden_read_la-cram_index.lo `test -f 'cram_index.c' || echo '$(srcdir)/'`cram_index.c libstaden_read_la-zfio.lo: zfio.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libstaden_read_la-zfio.lo -MD -MP -MF $(DEPDIR)/libstaden_read_la-zfio.Tpo -c -o libstaden_read_la-zfio.lo `test -f 'zfio.c' || echo '$(srcdir)/'`zfio.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libstaden_read_la-zfio.Tpo $(DEPDIR)/libstaden_read_la-zfio.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zfio.c' object='libstaden_read_la-zfio.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libstaden_read_la-zfio.lo `test -f 'zfio.c' || echo '$(srcdir)/'`zfio.c libstaden_read_la-dstring.lo: dstring.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libstaden_read_la-dstring.lo -MD -MP -MF $(DEPDIR)/libstaden_read_la-dstring.Tpo -c -o libstaden_read_la-dstring.lo `test -f 'dstring.c' || echo '$(srcdir)/'`dstring.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libstaden_read_la-dstring.Tpo $(DEPDIR)/libstaden_read_la-dstring.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dstring.c' object='libstaden_read_la-dstring.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libstaden_read_la-dstring.lo `test -f 'dstring.c' || echo '$(srcdir)/'`dstring.c libstaden_read_la-string_alloc.lo: string_alloc.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libstaden_read_la-string_alloc.lo -MD -MP -MF $(DEPDIR)/libstaden_read_la-string_alloc.Tpo -c -o libstaden_read_la-string_alloc.lo `test -f 'string_alloc.c' || echo '$(srcdir)/'`string_alloc.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libstaden_read_la-string_alloc.Tpo $(DEPDIR)/libstaden_read_la-string_alloc.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='string_alloc.c' object='libstaden_read_la-string_alloc.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libstaden_read_la-string_alloc.lo `test -f 'string_alloc.c' || echo '$(srcdir)/'`string_alloc.c libstaden_read_la-md5.lo: md5.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libstaden_read_la-md5.lo -MD -MP -MF $(DEPDIR)/libstaden_read_la-md5.Tpo -c -o libstaden_read_la-md5.lo `test -f 'md5.c' || echo '$(srcdir)/'`md5.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libstaden_read_la-md5.Tpo $(DEPDIR)/libstaden_read_la-md5.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='md5.c' object='libstaden_read_la-md5.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libstaden_read_la-md5.lo `test -f 'md5.c' || echo '$(srcdir)/'`md5.c libstaden_read_la-scram.lo: scram.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libstaden_read_la-scram.lo -MD -MP -MF $(DEPDIR)/libstaden_read_la-scram.Tpo -c -o libstaden_read_la-scram.lo `test -f 'scram.c' || echo '$(srcdir)/'`scram.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libstaden_read_la-scram.Tpo $(DEPDIR)/libstaden_read_la-scram.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='scram.c' object='libstaden_read_la-scram.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libstaden_read_la-scram.lo `test -f 'scram.c' || echo '$(srcdir)/'`scram.c libstaden_read_la-thread_pool.lo: thread_pool.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libstaden_read_la-thread_pool.lo -MD -MP -MF $(DEPDIR)/libstaden_read_la-thread_pool.Tpo -c -o libstaden_read_la-thread_pool.lo `test -f 'thread_pool.c' || echo '$(srcdir)/'`thread_pool.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libstaden_read_la-thread_pool.Tpo $(DEPDIR)/libstaden_read_la-thread_pool.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thread_pool.c' object='libstaden_read_la-thread_pool.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libstaden_read_la-thread_pool.lo `test -f 'thread_pool.c' || echo '$(srcdir)/'`thread_pool.c libstaden_read_la-binning.lo: binning.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libstaden_read_la-binning.lo -MD -MP -MF $(DEPDIR)/libstaden_read_la-binning.Tpo -c -o libstaden_read_la-binning.lo `test -f 'binning.c' || echo '$(srcdir)/'`binning.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libstaden_read_la-binning.Tpo $(DEPDIR)/libstaden_read_la-binning.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='binning.c' object='libstaden_read_la-binning.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libstaden_read_la-binning.lo `test -f 'binning.c' || echo '$(srcdir)/'`binning.c libstaden_read_la-cram_bambam.lo: cram_bambam.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libstaden_read_la-cram_bambam.lo -MD -MP -MF $(DEPDIR)/libstaden_read_la-cram_bambam.Tpo -c -o libstaden_read_la-cram_bambam.lo `test -f 'cram_bambam.c' || echo '$(srcdir)/'`cram_bambam.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libstaden_read_la-cram_bambam.Tpo $(DEPDIR)/libstaden_read_la-cram_bambam.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cram_bambam.c' object='libstaden_read_la-cram_bambam.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstaden_read_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libstaden_read_la-cram_bambam.lo `test -f 'cram_bambam.c' || echo '$(srcdir)/'`cram_bambam.c mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: for dir in "$(DESTDIR)$(libdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-libLTLIBRARIES install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-libLTLIBRARIES .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libLTLIBRARIES clean-libtool ctags distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am \ install-libLTLIBRARIES install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags uninstall uninstall-am uninstall-libLTLIBRARIES # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: io_lib-1.14.6/io_lib/Read.c0000644000031500020650000003410412354177666012254 00000000000000/* * Copyright (c) 2005-2008, 2010 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * Author(s): James Bonfield, Simon Dear, Rodger Staden, * * Copyright (c) 1994-1998, 2000-2001 MEDICAL RESEARCH COUNCIL * All rights reserved * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1 Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2 Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3 Neither the name of the MEDICAL RESEARCH COUNCIL, THE LABORATORY OF * MOLECULAR BIOLOGY nor the names of its contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * Copyright (c) Medical Research Council 1994. All rights reserved. * * Permission to use, copy, modify and distribute this software and its * documentation for any purpose is hereby granted without fee, provided that * this copyright and notice appears in all copies. * * This file was written by James Bonfield, Simon Dear, Rodger Staden, * as part of the Staden Package at the MRC Laboratory of Molecular * Biology, Hills Road, Cambridge, CB2 2QH, United Kingdom. * * MRC disclaims all warranties with regard to this software. */ /* * File: Read.c * Purpose: Performs read/write IO on the Read data stucture. * Last update: 01/09/94 */ /* The Read data type is designed so that it can hold a varying degree of information about sequences, yet have a single set of calls to access the data. There are plenty of assumptions around that both the number of bases and the number of points will fit into an int_2, a short. */ /* ---- Includes ---- */ #ifdef HAVE_CONFIG_H #include "io_lib_config.h" #endif #include #include #include #include /* Only need on windows for _O_BINARY */ #include #include "io_lib/Read.h" #include "io_lib/mFILE.h" #ifdef IOLIB_ABI # include "io_lib/abi.h" #endif #ifdef IOLIB_SCF # include "io_lib/scf.h" #endif #ifdef IOLIB_ALF # include "io_lib/alf.h" #endif #ifdef IOLIB_PLN # include "io_lib/plain.h" #endif #ifdef IOLIB_ZTR # include "io_lib/ztr.h" #endif #ifdef IOLIB_SFF # include "io_lib/sff.h" #endif #ifdef IOLIB_EXP # include "io_lib/expFileIO.h" #endif #ifdef USE_BIOLIMS # include "spBiolims.h" #endif #include "io_lib/xalloc.h" #include "io_lib/translate.h" #include "io_lib/traceType.h" #include "io_lib/misc.h" #include "io_lib/open_trace_file.h" /* * Read a sequence from a file "fnin" of format "format". If "format" is 0 * (ANY_FORMAT), we automatically determine the correct format. * Returns: * Read * for success * NULLRead for failure */ Read *read_reading(char *fn, int format) { Read *read; mFILE *fp; #ifdef USE_BIOLIMS if( !strncmp(fn,BIOLIMS_TAG,strlen(BIOLIMS_TAG))){ return spReadBiolimsReading(fn); } #endif /* * If we're asking for an Experiment file, read it. * If the format is ANY then attempt EXP first following by trace. * Otherwise use the trace search mechanism. * * Note this is purely for locating files and not for forcing the file * format. It's here so that experiment files and trace files may be * given identical names but accessed through different search paths * (as is the case with the trace server). */ if (format == TT_EXP) { if (NULL == (fp = open_exp_mfile(fn, NULL))) { errout("'%s': couldn't open\n", fn); return NULL; } } else { fp = NULL; if (format == TT_ANY) fp = open_exp_mfile(fn, NULL); if (!fp && NULL == (fp = open_trace_mfile(fn, NULL))) { errout("'%s': couldn't open\n", fn); return NULL; } } read = mfread_reading(fp, fn, format); mfclose(fp); return read; } /* * Read a sequence from a FILE *fp of format "format". If "format" is 0 * (ANY_FORMAT), we automatically determine the correct format. * We still pass a filename 'fn' although this isn't used other than for * filling in the read->trace_name field. * * NB this function should NOT be used when Biolims support is required * (as biolims readings are not stored in a file) * * Returns: * Read * for success * NULLRead for failure */ Read *mfread_reading(mFILE *fp, char *fn, int format) { Read *read; mFILE *newfp; if (!fn) fn = "(unknown)"; newfp = freopen_compressed(fp, NULL); if (newfp != fp) { fp = newfp; } else { newfp = NULL; } #ifdef _WIN32 /* * jkb 16/05/00 comment below * * On windows "prog < file.abi" will work wrongly (compared to * "prog file.abi") because windows is rather stupid. It treats ascii * and binary streams differently, it considers stdin to be ascii unless * told otherwise, and it can only be told otherwise by using non-ansi * windows-specific function calls. */ if (format != TT_EXP && format != TT_PLN && fp->fp) _setmode(_fileno(fp->fp), _O_BINARY); #endif if (format == TT_ANY || format == TT_ANYTR) { format = fdetermine_trace_type(fp); mrewind(fp); } switch (format) { case TT_UNK: case TT_ERR: errout("File '%s' has unknown trace type\n", fn); read = NULLRead; break; #ifdef IOLIB_SCF case TT_SCF: { Scf *scf; scf = mfread_scf(fp); if (scf) { read = scf2read(scf); scf_deallocate(scf); } else read = NULLRead; break; } #endif #ifdef IOLIB_SFF case TT_SFF: read = mfread_sff(fp); break; #endif #ifdef IOLIB_ZTR case TT_ZTR: case TT_ZTR1: case TT_ZTR2: case TT_ZTR3: { ztr_t *ztr; if ((ztr = mfread_ztr(fp))) { uncompress_ztr(ztr); read = ztr2read(ztr); delete_ztr(ztr); } else { read = NULLRead; } break; } #endif #ifdef IOLIB_ABI case TT_ABI: read = mfread_abi(fp); break; #endif #ifdef IOLIB_ALF case TT_ALF: read = mfread_alf(fp); break; #endif #ifdef IOLIB_EXP case TT_EXP: { /* FIXME: we shouldn't redirect like this */ Exp_info *e = exp_mfread_info(fp); read = e ? exp2read(e,fn) : NULLRead; break; } #endif #ifdef IOLIB_PLN case TT_PLN: read = mfread_pln(fp); break; #endif default: errout("Unknown format %d specified to read_reading()\n", format); read = NULLRead; } if (read != NULLRead && (read->trace_name = (char *)xmalloc(strlen(fn)+1))) strcpy(read->trace_name, fn); if (newfp) mfclose(newfp); return read; } Read *fread_reading(FILE *fp, char *fn, int format) { return mfread_reading(mfreopen(fn, "rb", fp), fn, format); } /* * Write a sequence to a FILE *fp of format "format". If "format" is 0, * we choose our favourite - SCF. * * Returns: * 0 for success * -1 for failure */ int mfwrite_reading(mFILE *fp, Read *read, int format) { int r = -1; int no_compress = 0; #ifdef _WIN32 /* * jkb 09/06/00 comment below * * On windows "prog > file.scf" will work wrongly (compared to * "prog file.scf") because windows is rather stupid. It treats ascii * and binary streams differently, it considers stdout to be ascii unless * told otherwise, and it can only be told otherwise by using non-ansi * windows-specific function calls. */ if (format != TT_EXP && format != TT_PLN && fp->fp) _setmode(_fileno(fp->fp), _O_BINARY); #endif switch (format) { default: /* Defaults to ZTR type */ #ifdef IOLIB_ZTR case TT_ZTR: case TT_ZTR2: { ztr_t *ztr; ztr = read2ztr(read); compress_ztr(ztr, 2); r = mfwrite_ztr(fp, ztr); delete_ztr(ztr); no_compress = 1; break; } case TT_ZTR1: { ztr_t *ztr; ztr = read2ztr(read); compress_ztr(ztr, 1); r = mfwrite_ztr(fp, ztr); delete_ztr(ztr); break; } case TT_ZTR3: { ztr_t *ztr; ztr = read2ztr(read); compress_ztr(ztr, 3); r = mfwrite_ztr(fp, ztr); delete_ztr(ztr); no_compress = 1; break; } #endif #ifdef IOLIB_SCF case TT_SCF: { Scf *scf; scf = read2scf(read); r = mfwrite_scf(scf, fp); scf_deallocate(scf); break; } #endif #ifdef IOLIB_ABI case TT_ABI: /*return mfwrite_abi(fp, read); */ break; #endif #ifdef IOLIB_SFF case TT_SFF: /*return mfwrite_sff(fp, read); */ break; #endif #ifdef IOLIB_ALF case TT_ALF: /* return mfwrite_alf(fp, read); */ break; #endif #ifdef IOLIB_EXP case TT_EXP: { Exp_info *e = read2exp(read, read->ident ? read->ident : "unknown"); if (NULL == e) { fprintf(stderr, "Failed to create experiment file.\n"); r = -1; } else { exp_print_mfile(fp, e); exp_destroy_info(e); r = 0; } break; } #endif #ifdef IOLIB_PLN case TT_PLN: r = mfwrite_pln(fp, read); break; #endif } mftruncate(fp, -1); if (r == 0 && !no_compress) { fcompress_file(fp); } mfflush(fp); return r; } int fwrite_reading(FILE *fp, Read *read, int format) { int ret; mFILE *mf = mfreopen(NULL, "wbx", fp); if (mf) { ret = mfwrite_reading(mf, read, format); mfflush(mf); mf->fp = NULL; /* Don't want this closed here */ mfclose(mf); } else { return -1; } return ret; } /* * Write a sequence to a file "fn" of format "format". If "format" is 0, * we choose our favourite - SCF. * * Returns: * 0 for success * -1 for failure */ int write_reading(char *fn, Read *read, int format) { int ret; mFILE *fp = mfopen(fn, "wb"); if (!fp) return -1; ret = mfwrite_reading(fp, read, format); mfclose(fp); return ret; } /* * Old style stub interfaces implemented simply as redirection through * fread_reading and frwrite_reading. */ #ifdef IOLIB_ABI Read *fread_abi(FILE *fp) { return fread_reading(fp, NULL, TT_ABI); } int fwrite_abi(FILE *fp, Read *read) { return fwrite_reading(fp, read, TT_ABI); } #endif #ifdef IOLIB_ALF Read *fread_alf(FILE *fp) { return fread_reading(fp, NULL, TT_ALF); } int fwrite_alf(FILE *fp, Read *read) { return fwrite_reading(fp, read, TT_ALF); } #endif #ifdef IOLIB_PLN Read *fread_pln(FILE *fp) { return fread_reading(fp, NULL, TT_PLN); } int fwrite_pln(FILE *fp, Read *read) { return fwrite_reading(fp, read, TT_PLN); } #endif #ifdef IOLIB_ZTR ztr_t *fread_ztr(FILE *fp) { ztr_t *z; mFILE *mf; if (NULL == (mf = mfreopen(NULL, "rb", fp))) return NULL; z = mfread_ztr(mf); mfclose(mf); return z; } int fwrite_ztr(FILE *fp, ztr_t *z) { mFILE *mf; int r; if (NULL == (mf = mfreopen(NULL, "wbx", fp))) return -1; r = mfwrite_ztr(mf, z); mfflush(mf); mf->fp = NULL; /* Don't want this closed here */ mfclose(mf); return r; } #endif #ifdef IOLIB_SCF Scf *fread_scf(FILE *fp) { Scf *s; mFILE *mf; if (NULL == (mf = mfreopen(NULL, "rb", fp))) return NULL; s = mfread_scf(mf); mf->fp = NULL; /* Don't want this closed here */ mfclose(mf); return s; } int fwrite_scf(Scf *s, FILE *fp) { mFILE *mf; int r; if (NULL == (mf = mfreopen(NULL, "wbx", fp))) return -1; r = mfwrite_scf(s, mf); mfflush(mf); mf->fp = NULL; /* Don't want this closed here */ mfclose(mf); return r; } #endif #ifdef IOLIB_EXP Exp_info *exp_fread_info(FILE *fp) { Exp_info *e; mFILE *mf; if (NULL == (mf = mfreopen(NULL, "rb", fp))) return NULL; e = exp_mfread_info(mf); mf->fp = NULL; /* Don't want this closed here */ mfclose(mf); return e; } void exp_print_file(FILE *fp, Exp_info *e) { mFILE *mf; if (NULL == (mf = mfreopen(NULL, "wbx", fp))) return; exp_print_mfile(mf, e); mfflush(mf); mf->fp = NULL; /* Don't want this closed here */ mfclose(mf); } #endif io_lib-1.14.6/io_lib/scf_extras.c0000644000031500020650000002220412354177666013540 00000000000000/* * Copyright (c) 2005-2007, 2010, 2013 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * Author(s): James Bonfield, Kathryn Beal * * Copyright (c) 1996, 1998-2002 MEDICAL RESEARCH COUNCIL * All rights reserved * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1 Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2 Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3 Neither the name of the MEDICAL RESEARCH COUNCIL, THE LABORATORY OF * MOLECULAR BIOLOGY nor the names of its contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * Copyright (c) Medical Research Council 1998. All rights reserved. * * Permission to use, copy, modify and distribute this software and its * documentation for any purpose is hereby granted without fee, provided that * this copyright and notice appears in all copies and that credit is given * where due. * * This file was written by James Bonfield, Simon Dear, Rodger Staden, * Kathryn Beal, as part of the Staden Package at the MRC Laboratory of * Molecular Biology, Hills Road, Cambridge, CB2 2QH, United Kingdom. * * MRC disclaims all warranties with regard to this software. */ /* * This file contains the necessary code for reading the quality values from * an SCF file. It supports both V2 and V3 SCF formats. * It's done in an efficient manner by extracting only the relevant SCF * components. * This file is derived from the Gap4 source file scf_extras.c. */ #ifdef HAVE_CONFIG_H #include "io_lib_config.h" #endif #include #include "io_lib/stdio_hack.h" #include "io_lib/compress.h" #include "io_lib/misc.h" #include "io_lib/scf.h" #include "io_lib/expFileIO.h" #include "io_lib/traceType.h" #include "io_lib/open_trace_file.h" #include "io_lib/scf_extras.h" #include "io_lib/xalloc.h" /* * --------------------------------------------------------------------------- * Loads confidence values from the trace file and averages them. * 'opos' is optional - if not known then set to NULL. * * Returns 0 for success * -1 for failure */ int get_read_conf(Exp_info *e, int length, int2 *opos, int1 *conf) { int ttype, i; FILE *fp; uint_1 *prob_A, *prob_C, *prob_G, *prob_T; char *seq; float scf_version; int nbases = 0; /* Sanity check */ if (!(exp_Nentries(e,EFLT_LT) && exp_Nentries(e,EFLT_LN))) return -1; /* Find and load trace file */ ttype = trace_type_str2int(exp_get_entry(e, EFLT_LT)); if (ttype != TT_SCF && ttype != TT_ZTR) return -1; /* * We only support direct reading accuracy values from SCF files. * Otherwise we have to take a slower approach. */ if (ttype != TT_SCF) { Read *r; int sec = read_sections(0); read_sections(READ_BASES); if (NULL == (r = read_reading(exp_get_entry(e,EFLT_LN), TT_ANYTR))) { read_sections(sec); return -1; } prob_A = (int1 *)xmalloc(r->NBases); prob_C = (int1 *)xmalloc(r->NBases); prob_G = (int1 *)xmalloc(r->NBases); prob_T = (int1 *)xmalloc(r->NBases); seq = (char *)xmalloc(r->NBases); memcpy(prob_A, r->prob_A, r->NBases); memcpy(prob_C, r->prob_C, r->NBases); memcpy(prob_G, r->prob_G, r->NBases); memcpy(prob_T, r->prob_T, r->NBases); memcpy(seq, r->base, r->NBases); nbases = r->NBases; read_deallocate(r); read_sections(sec); } else { Header h; /* For SCF files we read directly - the above code would also do. */ if (NULL == (fp = open_trace_file(exp_get_entry(e,EFLT_LN), NULL))) return -1; /* Read the SCF header */ if (-1 == read_scf_header(fp, &h)) return -1; scf_version = scf_version_str2float(h.version); nbases = h.bases; /* Alloc memory */ prob_A = (uint_1 *)xmalloc(h.bases * sizeof(*prob_A)); prob_C = (uint_1 *)xmalloc(h.bases * sizeof(*prob_A)); prob_G = (uint_1 *)xmalloc(h.bases * sizeof(*prob_A)); prob_T = (uint_1 *)xmalloc(h.bases * sizeof(*prob_A)); seq = (char *)xmalloc(h.bases * sizeof(*seq)); if (NULL == prob_A || NULL == prob_C || NULL == prob_G || NULL == prob_T || NULL == seq) return -1; /* Load base scores */ if (scf_version >= 3.0) { /* * Version 3 base format: * num_bases * 4byte peak index * num_bases * prob_A * num_bases * prob_C * num_bases * prob_G * num_bases * prob_T * num_bases * base * num_bases * spare (x3) */ fseek(fp, (off_t)h.bases_offset + 4 * h.bases, SEEK_SET); if (h.bases != fread(prob_A, 1, h.bases, fp)) return -1; if (h.bases != fread(prob_C, 1, h.bases, fp)) return -1; if (h.bases != fread(prob_G, 1, h.bases, fp)) return -1; if (h.bases != fread(prob_T, 1, h.bases, fp)) return -1; if (h.bases != fread(seq, 1, h.bases, fp)) return -1; } else { int i; uint_1 buf[12]; /* * Version 2 base format * num_bases * base_struct, where base_struct is 12 bytes: * 0-3 peak_index * 4-7 prob_A/C/G/T * 8 base * 9- spare */ fseek(fp, (off_t)h.bases_offset, SEEK_SET); for (i = 0; (unsigned)i < h.bases; i++) { if (1 != fread(buf, 12, 1, fp)) return -1; prob_A[i] = buf[4]; prob_C[i] = buf[5]; prob_G[i] = buf[6]; prob_T[i] = buf[7]; seq[i] = buf[8]; } } fclose(fp); } /* Determine confidence values */ if (opos) { for (i=0; i #ifndef NDEBUG # define NDEBUG /* disable assertions */ #endif #include #include "io_lib/stdio_hack.h" #include "io_lib/misc.h" #include "io_lib/scf.h" #include "io_lib/Read.h" #include "io_lib/expFileIO.h" #include "io_lib/traceType.h" #include "io_lib/translate.h" #include "io_lib/open_trace_file.h" #include "io_lib/xalloc.h" #ifdef USE_BIOLIMS #include "spBiolims.h" #endif #ifdef IOLIB_SCF /* * Translates an Scf structure into a Read structure. * The Scf structure is left unchanged. * * Returns: * A pointer to an allocated Read structure upon success. * NULLRead upon failure. */ Read *scf2read(Scf *scf) { Read *read; register int i, i_end; TRACE max_val = 0; int sections = read_sections(0); int nsamples = 0; int nbases = 0; /* allocate */ if (sections & READ_SAMPLES) nsamples = scf->header.samples; if (sections & READ_BASES) nbases = scf->header.bases; read = read_allocate(nsamples, nbases); if (NULLRead == read) return NULLRead; if (sections & READ_SAMPLES) { /* copy the samples */ i_end = scf->header.samples; read->NPoints = i_end; if (scf->header.sample_size == 1) { for (i = 0; i < i_end; i++) { read->traceA[i] = scf->samples.samples1[i].sample_A; read->traceC[i] = scf->samples.samples1[i].sample_C; read->traceG[i] = scf->samples.samples1[i].sample_G; read->traceT[i] = scf->samples.samples1[i].sample_T; if (read->traceA[i] > max_val) max_val = read->traceA[i]; if (read->traceC[i] > max_val) max_val = read->traceC[i]; if (read->traceG[i] > max_val) max_val = read->traceG[i]; if (read->traceT[i] > max_val) max_val = read->traceT[i]; } } else { /* sample_size == 2 */ for (i = 0; i < i_end; i++) { read->traceA[i] = scf->samples.samples2[i].sample_A; read->traceC[i] = scf->samples.samples2[i].sample_C; read->traceG[i] = scf->samples.samples2[i].sample_G; read->traceT[i] = scf->samples.samples2[i].sample_T; if (read->traceA[i] > max_val) max_val = read->traceA[i]; if (read->traceC[i] > max_val) max_val = read->traceC[i]; if (read->traceG[i] > max_val) max_val = read->traceG[i]; if (read->traceT[i] > max_val) max_val = read->traceT[i]; } } read->maxTraceVal = max_val; } if (sections & READ_BASES) { /* copy the bases */ i_end = scf->header.bases; read->NBases = i_end; for (i = 0; i < i_end; i++) { read->basePos[i] = scf->bases[i].peak_index; read->prob_A[i] = scf->bases[i].prob_A; read->prob_C[i] = scf->bases[i].prob_C; read->prob_G[i] = scf->bases[i].prob_G; read->prob_T[i] = scf->bases[i].prob_T; read->base[i] = scf->bases[i].base; } read->base[i] = 0; } if (sections & READ_COMMENTS) { /* allocate and copy the comments */ if (scf->header.comments_size > 0 && scf->comments) { read->info = (char *)xmalloc(scf->header.comments_size+1); if (NULL == read->info) { read_deallocate(read); return NULLRead; } memcpy(read->info, scf->comments, scf->header.comments_size); read->info[scf->header.comments_size] = '\0'; } } /* other bits and pieces */ read->leftCutoff = scf->header.bases_left_clip; read->rightCutoff = read->NBases - scf->header.bases_right_clip + 1; read->format = TT_SCF; if (scf->private_data) { read->private_data = xmalloc(scf->header.private_size); memcpy(read->private_data,scf->private_data, scf->header.private_size); } return read; } /* * Translates a Read structure into a Scf structure. * The Read structure is left unchanged. * * Returns: * A pointer to an allocated Scf structure upon success. * NULL upon failure. */ Scf *read2scf(Read *read) { Scf *scf; register int i, i_end; int sample_size; /* allocate */ sample_size = read->maxTraceVal >= 0x100 ? 2 : 1; scf = scf_allocate(read->NPoints, sample_size, read->NBases, 0, 0); if (NULL == scf) return NULL; /* copy the samples */ i_end = read->NPoints; scf->header.samples = i_end; if (sample_size == 1) { scf->header.sample_size = 1; for (i = 0; i < i_end; i++) { scf->samples.samples1[i].sample_A = (uint_1)read->traceA[i]; scf->samples.samples1[i].sample_C = (uint_1)read->traceC[i]; scf->samples.samples1[i].sample_G = (uint_1)read->traceG[i]; scf->samples.samples1[i].sample_T = (uint_1)read->traceT[i]; } } else { scf->header.sample_size = 2; for (i = 0; i < i_end; i++) { scf->samples.samples2[i].sample_A = read->traceA[i]; scf->samples.samples2[i].sample_C = read->traceC[i]; scf->samples.samples2[i].sample_G = read->traceG[i]; scf->samples.samples2[i].sample_T = read->traceT[i]; } } /* copy the bases */ i_end = read->NBases; scf->header.bases = i_end; for (i = 0; i < i_end; i++) { scf->bases[i].peak_index = read->basePos ? read->basePos[i] : i; scf->bases[i].prob_A = read->prob_A ? read->prob_A[i] : 0; scf->bases[i].prob_C = read->prob_A ? read->prob_C[i] : 0; scf->bases[i].prob_G = read->prob_A ? read->prob_G[i] : 0; scf->bases[i].prob_T = read->prob_A ? read->prob_T[i] : 0; scf->bases[i].base = read->base ? read->base[i] : '-'; } /* allocate and copy the comments */ if (read->info) { scf->header.comments_size = strlen(read->info) + 1; scf->comments = (char *)xmalloc(scf->header.comments_size); if (NULL == scf->comments) { scf_deallocate(scf); return NULL; } memcpy(scf->comments, read->info, scf->header.comments_size - 1); /* just to make sure */ scf->comments[scf->header.comments_size-1] = '\0'; } /* other bits and pieces */ scf->header.bases_left_clip = read->leftCutoff; scf->header.bases_right_clip = read->NBases - read->rightCutoff + 1; scf->header.code_set = CSET_DEFAULT; memcpy(scf->header.version, scf_version_float2str(SCF_VERSION), 4); return scf; } #endif /* IOLIB_SCF */ #ifdef IOLIB_EXP #define extend(e, entry, len) \ do { \ (void)ArrayRef(e->entries[entry],e->Nentries[entry]++); \ if (NULL == (exp_get_entry(e, entry) = (char *)xmalloc(len))) \ return NULL; \ } while (0) /* * Translates a Read structure and an Experiment file. * The Read structure is left unchanged. * * Returns: * A pointer to an allocated Exp_info structure upon success. * NULL upon failure. */ Exp_info *read2exp(Read *read, char *EN) { Exp_info *e; char *t = trace_type_int2str(read->format), *p; int l = strlen(EN)+1; char *sq; int i; static char valid_bases[256]; static int valid_setup = 0; if (!valid_setup) { for (i = 0; i < 256; i++) valid_bases[i] = '-'; /* IUBC codes */ for (sq = "acgturymkswbdhvnACGTURYMKSWBDHVN"; *sq; sq++) valid_bases[(unsigned)*sq] = *sq; valid_setup = 1; } if (NULL == (e = exp_create_info())) return NULL; /* Copy original exp file if present */ if (read->orig_trace && read->orig_trace_format == TT_EXP) { int i, j, k; Exp_info *re = (Exp_info *)read->orig_trace; for (i = 0; i < MAXIMUM_EFLTS; i++) { if (EFLT_SQ == i || EFLT_QL == i || EFLT_QR == i) continue; if (0 == (k = exp_Nentries(re, i))) continue; e->Nentries[i] = k; ArrayRef(e->entries[i], e->Nentries[i]); for (j = 0; j < k; j++) { arr(char *, e->entries[i], j) = strdup(arr(char *, re->entries[i], j)); } } /* Otherwise create our EN, ID, LN and LT lines */ } else { /* Entry name and ID lines */ if ((p = strrchr(EN, '/'))) EN = p+1; extend(e, EFLT_EN, l); sprintf(exp_get_entry(e, EFLT_EN), "%s", EN); extend(e, EFLT_ID, l); sprintf(exp_get_entry(e, EFLT_ID), "%s", EN); /* Trace file & type */ if (read->trace_name) { char *cp; if ((cp = strrchr(read->trace_name, '/'))) cp++; else cp = read->trace_name; extend(e, EFLT_LN, strlen(cp)+1); strcpy(exp_get_entry(e, EFLT_LN), cp); } if (read->format != TT_ANY && read->format != TT_ANYTR) { extend(e, EFLT_LT, strlen(t)+1); strcpy(exp_get_entry(e, EFLT_LT), t); } } /* Output SQ, QL and QR lines */ /* Cutoffs */ if (read->leftCutoff) { extend(e, EFLT_QL, 15); sprintf(exp_get_entry(e, EFLT_QL), "%d", read->leftCutoff); } if (read->rightCutoff && read->rightCutoff != read->NBases+1) { extend(e, EFLT_QR, 15); sprintf(exp_get_entry(e, EFLT_QR), "%d", read->rightCutoff); } /* Bases */ extend(e, EFLT_SQ, read->NBases+1); sq = exp_get_entry(e, EFLT_SQ); for (i = 0; i < read->NBases; i++) { sq[i] = valid_bases[(unsigned)read->base[i]]; } sq[i] = 0; #ifdef USE_BIOLIMS /* * Johnt: * - Added tags below to allow for biolims update * - This is all a very big bodge to allow BioLIMS * attributes to be passed through the Read structure * to the Experiment file * - Any changes to this should also be mirrored in ../biolims/Exp.cpp */ { int1 *qa; /* quality array */ int i; char tmp[1024]; char *line; /* current line from info */ char *end; /* end of current line */ /* AV only supports a single prob value for now */ qa = (int1 *)malloc((read->NBases+1)*sizeof(int1)); /* need max 4 bytes per value - see conf2str */ extend(e,EFLT_AV,(read->NBases+1)*5); /* merge into single quality array */ for(i=0;iNBases;i++){ switch(read->base[i]){ case 'a': case 'A': qa[i] = read->prob_A[i]; break; case 'c': case 'C': qa[i] = read->prob_C[i]; break; case 'g': case 'G': qa[i] = read->prob_G[i]; break; case 't': case 'T': qa[i] = read->prob_T[i]; break; default: qa[i] = 0; } } conf2str(qa,read->NBases,exp_get_entry(e, EFLT_AV)); free(qa); /* Parse the read notes for everything else */ if( read->info) { for(line=read->info;end=strchr(line,'\n');line=end+1){ *end='\0'; /* * put back */ /* look for known tags */ if(!strncmp(line,EXP_CHEM,EXP_TAGLEN)){ /* CH */ int chem=0; extend(e, EFLT_CH, 15); if( !strcmp(CH_types[1],line+EXP_TAGLEN)) chem=1; sprintf(exp_get_entry(e, EFLT_CH), "%d",chem ); } else if(!strncmp(line,EXP_PRMR,EXP_TAGLEN)){ /* PR */ int primer=0; extend(e,EFLT_PR,15); for(primer=1;primer=nPR_types) primer=1; sprintf(exp_get_entry(e, EFLT_PR), "%d",primer); } else if(!strncmp(line,EXP_VECT,EXP_TAGLEN)){ /* SV */ extend(e,EFLT_SV,strlen(line)-EXP_TAGLEN+1); strcpy(exp_get_entry(e, EFLT_SV),line+EXP_TAGLEN); } else if(!strncmp(line,EXP_CLOV,EXP_TAGLEN)){ /* CV */ extend(e,EFLT_CV,strlen(line)-EXP_TAGLEN+1); strcpy(exp_get_entry(e, EFLT_CV),line+EXP_TAGLEN); } else if(!strncmp(line,EXP_CLON,EXP_TAGLEN)){ /* CN */ extend(e,EFLT_CN,strlen(line)-EXP_TAGLEN+1); strcpy(exp_get_entry(e, EFLT_CN),line+EXP_TAGLEN); } else if(!strncmp(line,EXP_FEAT,EXP_TAGLEN)){ /* FEAT=start stop key\r\rcomment */ /* key and comment have \n encoded as \r */ int start,stop,i; char *key; /* biolims feature key */ char *comment; /* biolims feature comment */ line+=EXP_TAGLEN; start=atoi(line); line=strchr(line,' ')+1; stop=atoi(line); key=strchr(line,' ')+1; comment=strstr(key,"\r\r"); *comment='\0'; /* * put back */ comment+=2; /* replace \r with \n in key and comment */ for(i=0;key[i];i++) if(key[i]=='\r') key[i]='\n'; for(i=0;comment[i];i++) if(comment[i]=='\r') comment[i]='\n'; /* could possibly be one of a number of EXP tags excoded as a BioLIMS feature */ if(!strncmp(key,featCLON,STADEN_FKEY_LEN)){ /* CS */ extend(e, EFLT_CS, 32); exp_create_range(exp_get_entry(e, EFLT_CS),start,stop); } else if(!strncmp(key,featVECI,STADEN_FKEY_LEN)){ /* SI */ extend(e, EFLT_SI, 32); exp_create_range(exp_get_entry(e, EFLT_SI),start,stop); } else if(!strncmp(key,featTEMP,STADEN_FKEY_LEN)){ /* TN */ extend(e, EFLT_TN, strlen(comment)+1); strcpy(exp_get_entry(e, EFLT_TN),comment); } else if(!strncmp(key,featSTRD,STADEN_FKEY_LEN)){ /* ST */ extend(e, EFLT_ST, strlen(comment)+1); strcpy(exp_get_entry(e, EFLT_ST),comment); } else if( !strncmp(key,featVECT,STADEN_FKEY_LEN)){ /* SL and SR */ extend(e,EFLT_SL,15); extend(e,EFLT_SR,15); sprintf(exp_get_entry(e, EFLT_SL),"%d",start); sprintf(exp_get_entry(e, EFLT_SR),"%d",stop); } else if( !strncmp(key,featGELR,STADEN_FKEY_LEN)){ /* TG */ char tag[5]; /* staden note tag (always 4 chars) */ char strand=*comment; /* first char of comment */ /* key has format STADEN_GELR:XXXX - where XXXX is staden note tag */ strncpy(tag,key+STADEN_FKEY_LEN+1,4); tag[4]='\0'; comment+=2; /* skip over strand */ sprintf(tmp,"%s %c %d..%d\n%s", key,strand,start,stop,comment); extend(e,EFLT_TG,strlen(tmp)+1); strcpy(exp_get_entry(e, EFLT_TG),tmp); } else if( !strncmp(key,featCONS,STADEN_FKEY_LEN)){ /* TC */ char tag[5]; /* staden note tag (always 4 chars) */ /* comment has the format Srstart-rend\ncomment S is a single character strand indicator rstart and rend are the real start and end of the tag */ char strand=*comment; /* first char of comment */ char *rangestart = comment+2; /*skip over strand*/ char *rangeend; char *emptystring=""; /* key has format STADEN_CONS:XXXX - where XXXX is staden note tag */ strncpy(tag,key+STADEN_FKEY_LEN+1,4); tag[4]='\0'; /* the REAL range might actually be outside the bases, so this is recorded in the first line of the comment. This is merged with the feature range to allow for complimenting */ comment=strchr(rangestart,'\n'); if( comment ) *(comment++)='\0'; /* *** put back */ else comment=emptystring; /* now special processing of bounds */ rangeend=strchr(rangestart,'-'); if( rangeend ){ long rstart,rend; *(rangeend++)='\0'; /* *** put back */ rstart=atol(rangestart); rend=atol(rangeend); *(rangeend-1)='-'; /* if start is the same as rstart, just need to extend the stop bounds to the real end If not there has been some complimenting happening so need to extend the start bounds, as its now backwards. */ if( start==rstart) stop=start+rend-rstart; else start=stop-rend+rstart; } else { /* don't have a range so just use the feature size */ } sprintf(tmp,"%s %c %d..%d\n%s", key,strand,start,stop,comment); extend(e,EFLT_TC,strlen(tmp)+1); strcpy(exp_get_entry(e, EFLT_TC),tmp); if( comment!=emptystring) *(comment-1)='\n'; } else { /* TG */ /* a biolims feature, encode this with tag BIOL, and the Biolims Feature key in the first line of the comment*/ sprintf(tmp,"%s = %d..%d\n%s%s\n%s",/* use strand = */ tagBIOL,start,stop,featKey,key,comment); extend(e,EFLT_TG,strlen(tmp)+1); strcpy(exp_get_entry(e, EFLT_TG),tmp); } *(comment-2)='\r'; } /* else unused value */ *end='\n'; } } } #else /* USE_BIOLIMS */ /* Confidence values */ if (read->prob_A && read->prob_C && read->prob_G && read->prob_T && read->NBases > 0) { /* We have some, but are they non zero values? */ for (i = 0; i < read->NBases; i++) { if (read->prob_A[i] || read->prob_C[i] || read->prob_G[i] || read->prob_T[i]) break; } if (i != read->NBases) { int1 *conf = (int1 *)xmalloc(read->NBases); char *cstr = (char *)xmalloc(read->NBases * 5 + 2); for (i = 0; i < read->NBases; i++) { switch (read->base[i]) { case 'a': case 'A': conf[i] = read->prob_A[i]; break; case 'c': case 'C': conf[i] = read->prob_C[i]; break; case 'g': case 'G': conf[i] = read->prob_G[i]; break; case 't': case 'T': conf[i] = read->prob_T[i]; break; default: conf[i] = (read->prob_A[i] + read->prob_C[i] + read->prob_G[i] + read->prob_T[i]) / 4; } } conf2str(conf, read->NBases, cstr); extend(e, EFLT_AV, strlen(cstr)+1); sprintf(exp_get_entry(e, EFLT_AV), "%s", cstr); xfree(conf); xfree(cstr); } } #endif /* if USE_BIOLIMS else ... */ return e; } /* * Controls the use of the SQ and ON lines when loading an experiment file. * The default (value&1 == 1) is to load these into the Read structure. * With value&1 == 0 we load the sequence directly from the trace file * (LT line). * value&2 controls whether to use the SL/SR fields when setting the cutoff. * value&2 == 0 implies to do so, and value&2 == 2 implies to not. * * The default use is to use the SQ and ON lines. Returns the old value. */ static int use_experiment_sequence = 1; int read_experiment_redirect(int value) { int old = use_experiment_sequence; use_experiment_sequence = value; return old; } /* * Translates an experiment file to a Read structure. * The Exp_info structure is left unchanged. * * Returns: * A pointer to an allocated Read structure upon success. * NULLRead upon failure. */ Read *exp2read(Exp_info *e, char *fn) { Read *r; int q, s, ttype, err = 0; char *str; int use_exp = use_experiment_sequence; FILE *fp; if (!exp_Nentries(e, EFLT_LN)) { err = 1; } else { /* Read the trace component of the experiment file */ ttype = exp_Nentries(e,EFLT_LT) ? trace_type_str2int(exp_get_entry(e, EFLT_LT)) : TT_ANYTR; if ((fp = open_trace_file(exp_get_entry(e, EFLT_LN), fn))) { if (NULLRead == (r = fread_reading(fp, NULL, ttype))) err = 1; } else { err = 1; } } if (err) { use_exp = 1; r = read_allocate(0, 1); } /* Set the left cutoff (QL / SL) */ q=-1; if (exp_Nentries(e, EFLT_QL)) q = atoi(exp_get_entry(e, EFLT_QL)); if ((use_exp&2) != 2) { s=-1; if (exp_Nentries(e, EFLT_SL)) s = atoi(exp_get_entry(e, EFLT_SL)); if (q != -1 || s != -1) r->leftCutoff = MAX(q, s); } else { r->leftCutoff = q != -1 ? q : 0; } /* Set the right cutoff (QR / SR) */ q = INT_MAX; if (exp_Nentries(e, EFLT_QR)) q = atoi(exp_get_entry(e, EFLT_QR)); if ((use_exp&2) != 2) { s = INT_MAX; if (exp_Nentries(e, EFLT_SR)) s = atoi(exp_get_entry(e, EFLT_SR)); if (q != INT_MAX || s != INT_MAX) r->rightCutoff = MIN(q, s); } else { r->rightCutoff = q != INT_MAX ? q : 0; } if (r->rightCutoff && r->rightCutoff <= r->leftCutoff) r->rightCutoff = r->leftCutoff+1; /* Bases and base positions, if desired */ if (use_exp&1) { if (exp_Nentries(e, EFLT_SQ) && (str = exp_get_entry(e, EFLT_SQ))) { int slen = strlen(str); if (NULL == (r->base = (char *)xrealloc(r->base, slen+1))) return NULLRead; if (NULL == (r->prob_A = (char *)xrealloc(r->prob_A, slen+1))) return NULLRead; if (NULL == (r->prob_C = (char *)xrealloc(r->prob_C, slen+1))) return NULLRead; if (NULL == (r->prob_G = (char *)xrealloc(r->prob_G, slen+1))) return NULLRead; if (NULL == (r->prob_T = (char *)xrealloc(r->prob_T, slen+1))) return NULLRead; if (r->basePos) { xfree(r->basePos); r->basePos = NULL; } /* Clear them */ memset(r->prob_A, 0, slen); memset(r->prob_C, 0, slen); memset(r->prob_G, 0, slen); memset(r->prob_T, 0, slen); strcpy(r->base, str); r->NBases = slen; /* Copy AV values into prob_* arrays */ if (exp_Nentries(e, EFLT_AV) && (str = exp_get_entry(e, EFLT_AV))) { int1 *conf = (int1 *)xmalloc((slen+1)*sizeof(*conf)); int i; str2conf(conf, slen, str); for (i = 0; i < slen ; i++) { switch(r->base[i]) { case 'a': case 'A': r->prob_A[i] = conf[i]; r->prob_C[i] = 0; r->prob_G[i] = 0; r->prob_T[i] = 0; break; case 'c': case 'C': r->prob_A[i] = 0; r->prob_C[i] = conf[i]; r->prob_G[i] = 0; r->prob_T[i] = 0; break; case 'g': case 'G': r->prob_A[i] = 0; r->prob_C[i] = 0; r->prob_G[i] = conf[i]; r->prob_T[i] = 0; break; case 't': case 'T': r->prob_A[i] = 0; r->prob_C[i] = 0; r->prob_G[i] = 0; r->prob_T[i] = conf[i]; break; default: r->prob_A[i] = conf[i]; r->prob_C[i] = conf[i]; r->prob_G[i] = conf[i]; r->prob_T[i] = conf[i]; break; } } xfree(conf); } else { memset(r->prob_A, 0, slen * sizeof(r->prob_A[0])); memset(r->prob_C, 0, slen * sizeof(r->prob_C[0])); memset(r->prob_G, 0, slen * sizeof(r->prob_G[0])); memset(r->prob_T, 0, slen * sizeof(r->prob_T[0])); } } r->format = TT_EXP; } r->orig_trace = e; r->orig_trace_format = TT_EXP; r->orig_trace_free = (void (*)(void *))exp_destroy_info; return r; } #endif /* IOLIB_EXP */ /* * Takes an original read structure and a set of edit change arrays and * produces a new base position array incorporating all the edits. For * insertions, interpolation is used to derive a suitable sample position. * * INPUTS: * * Read *r = The original unedited read structure * int Comp = 0=Normal sequence, 1=Complemented sequence * int Ned = Length of edited arrays to follow * char *edBases = Sequence of base characters incorporating ins/del edits * uint_2 *edPos = Corresponding original base numbers, 0 indicates an * insertion. Base numbers start at 1. * * OUTPUTS: * * This array is assumed to be empty with an allocated length of Ned elements. * * uint_2* basePos = Base positions in samples */ void read_update_base_positions( Read *r, int Comp, int Ned, char *edBases, int_2 *edPos, uint_2 *basePos ) { int i, j; int gap; int delta; int o_N; int o_NPoints; uint_2* o_basePos; int start; int end; /* Check input */ assert(r); assert(edBases); assert(edPos); assert(basePos); assert(Ned>0); if( (Ned<=0) || !r || !edBases || !edPos || !basePos ) return; /* Original sequence data */ o_N = r->NBases; o_NPoints = r->NPoints; o_basePos = r->basePos; /* Copy original base positions */ for( i=0; i0); assert(edBases); assert(edConf); assert(prob_A); assert(prob_C); assert(prob_G); assert(prob_T); if( (Ned<=0) || !edBases || !edConf || !prob_A || !prob_C || !prob_G || !prob_T ) return; /* Copy over confidence values */ for( i=0; i #include #include #include #include #include #include #include #ifndef M_PI # define M_PI 3.14159265358979323846 #endif #include "io_lib/ztr.h" #include "io_lib/os.h" #include "io_lib/compression.h" #include "io_lib/xalloc.h" #ifndef NDEBUG # define NDEBUG #endif /* * --------------------------------------------------------------------------- * ZTR_FORM_ZLIB * --------------------------------------------------------------------------- */ /* * Some comments on zlib usage. * * - Ideally for trace data, after decorrelation, we should use Z_FILTERED. * Empirical studies show that this gives the best compression ratio, but * it is slow (about the same speed as normal gzip). MUCH faster is huffman * only, and it doesn't give radically different compression ratios. * * - When compressing using Z_HUFFMAN_ONLY we used compression level * '1' as this invokes the deflate_fast() algorithm. It makes no * difference to the compression level, but it seems to be quicker still. * */ /* * zlib_huff() * * Compresses data using huffman encoding, as implemented by zlib. * * Arguments: * uncomp Uncompressed input data * uncomp_len Length of uncomp data * comp_len Output: length of compressed data * * Returns: * Compressed data if successful * NULL if not successful */ char *zlib_huff(char *uncomp, int uncomp_len, int strategy, int *comp_len) { z_stream zstr; int err; int comp_len_tmp = (int)(uncomp_len * 1.001 + 12); /* Maximum expansion size */ char *comp = (char *)xmalloc(comp_len_tmp+5); int c_len; /* Initialise zlib */ zstr.zalloc = (alloc_func)0; zstr.zfree = (free_func)0; zstr.opaque = (voidpf)0; if ((err = deflateInit2(&zstr, 1, Z_DEFLATED, 15, 8, strategy)) != Z_OK) { fprintf(stderr, "zlib errror in deflateInit2(): %d\n", err); return NULL; } /* Set up input and output buffers */ zstr.next_in = (unsigned char *)uncomp; zstr.avail_in = uncomp_len; zstr.next_out = (unsigned char *)comp+5; zstr.avail_out = comp_len_tmp; /* Do the compression */ if ((err = deflate(&zstr, Z_FINISH)) != Z_STREAM_END) { fprintf(stderr, "zlib errror in deflate(): %d\n", err); return NULL; } /* Tidy up */ deflateEnd(&zstr); c_len = zstr.total_out; /* Return */ comp[0] = ZTR_FORM_ZLIB; comp[1] = (uncomp_len >> 0) & 0xff; comp[2] = (uncomp_len >> 8) & 0xff; comp[3] = (uncomp_len >> 16) & 0xff; comp[4] = (uncomp_len >> 24) & 0xff; if (comp_len) *comp_len = c_len+5; return comp; } /* * zlib_dehuff() * * Uncompresses data using huffman encoding, as implemented by zlib. * * Arguments: * comp Compressed input data * comp_len Length of comp data * uncomp_len Output: length of uncompressed data * * Returns: * Uncompressed data if successful * NULL if not successful */ char *zlib_dehuff(char *comp, int comp_len, int *uncomp_len) { z_stream zstr; int err; char *uncomp; int ulen; /* Allocate */ ulen = ((unsigned char)comp[1] << 0) + ((unsigned char)comp[2] << 8) + ((unsigned char)comp[3] << 16) + ((unsigned char)comp[4] << 24); uncomp = (char *)xmalloc(ulen); /* Initialise zlib */ zstr.zalloc = (alloc_func)0; zstr.zfree = (free_func)0; zstr.opaque = (voidpf)0; if ((err = inflateInit(&zstr)) != Z_OK) { fprintf(stderr, "zlib errror in inflateInit(): %d\n", err); return NULL; } /* Set up input and output buffers */ zstr.next_in = (unsigned char *)comp+5; zstr.avail_in = comp_len-5; zstr.next_out = (unsigned char *)uncomp; zstr.avail_out = ulen; /* Do the decompression */ if ((err = inflate(&zstr, Z_FINISH)) != Z_STREAM_END) { fprintf(stderr, "zlib errror in deflate(): %d\n", err); return NULL; } /* Tidy up */ inflateEnd(&zstr); if (uncomp_len) *uncomp_len = ulen; return uncomp; } /* * --------------------------------------------------------------------------- * ZTR_FORM_RLE * --------------------------------------------------------------------------- */ /* * Run length encoding. * * Any run of 3 or more identical characters (up to 255 in a row) are replaced * by a 'guard' byte followed by the number of characters followed by * the character value itself. * Any single guard value in the input is escaped using 'guard 0'. * * Specifying guard as -1 will automatically pick one of the least used * characters in the input as the guard. * * Arguments: * uncomp Input data * uncomp_len Length of input data 'uncomp' * guard Guard byte - used to encode "N" copies of data * comp_len Output: length of compressed data * * Returns: * Compressed data if successful * NULL if not successful */ char *rle(char *uncomp, int uncomp_len, int guard, int *comp_len) { int i, k, c_len = 0; char *comp = xmalloc(2 * uncomp_len + 6); char *out = comp + 6; /* A guard of -1 implies to search for the least frequent symbol */ if (guard == -1) { int cnt[256]; int bestcnt = uncomp_len + 1; for (i = 0; i < 256; i++) cnt[i] = 0; for (i = 0; i < uncomp_len; i++) { cnt[(unsigned char)uncomp[i]]++; } for (i = 0; i < 256; i++) { if (cnt[i] < bestcnt) { bestcnt = cnt[i]; guard = i; } } } for (i = 0; i < uncomp_len; i=k) { /* * Detect blocks of up identical bytes up to 255 bytes long. */ for (k = i; k < uncomp_len && uncomp[i] == uncomp[k]; k++) if (k-i == 255) break; /* 1, 2 or 3 bytes are best stored "as is" */ if (k-i < 4) { do { /* * If we find 'guard' in our sequence, escape it by * outputting 'guard' . (We know that we'll never * write out zero copies of a token in our rle compression * algorithm.) */ if ((unsigned char)(uncomp[i]) == guard) { out[c_len++] = guard; out[c_len++] = 0; } else { out[c_len++] = uncomp[i]; } i++; } while (k >= i+1); } else { /* More than 3 bytes: store as ('guard', length, byte value) */ out[c_len++] = guard; out[c_len++] = k-i; out[c_len++] = uncomp[i]; } } /* Return */ comp[0] = ZTR_FORM_RLE; comp[1] = (uncomp_len >> 0) & 0xff; comp[2] = (uncomp_len >> 8) & 0xff; comp[3] = (uncomp_len >> 16) & 0xff; comp[4] = (uncomp_len >> 24) & 0xff; comp[5] = guard; if (comp_len) *comp_len = c_len+6; return comp; } /* * Reverses run length encoding. * * Arguments: * comp Compressed input data * comp_len Length of comp data * uncomp_len Output: length of uncompressed data * * Returns: * Uncompressed data if successful * NULL if not successful */ /* ARGSUSED */ char *unrle(char *comp, int comp_len, int *uncomp_len) { int in_i, out_i, i, val, count, out_len; char *uncomp; unsigned char *in = (unsigned char *)comp+6; char *out; int guard = (unsigned char)comp[5]; /* Allocate */ out_len = ((unsigned char)comp[1] << 0) + ((unsigned char)comp[2] << 8) + ((unsigned char)comp[3] << 16) + ((unsigned char)comp[4] << 24); out = uncomp = (char *)xmalloc(out_len); for (in_i = out_i = 0; out_i < out_len; in_i++) { if (in[in_i] != guard) { /* When not 'guard' it's easy - just output this token */ assert(out_i >= 0 && out_i < out_len); out[out_i++] = in[in_i]; } else { /* * Found an 'guard' token. If next token is zero, then * we were simply escaping a real 'guard' token in the input * data, otherwise output a string of bytes. */ count = in[++in_i]; if (count != 0) { val = in[++in_i]; for (i = 0; i < count; i++) { assert(out_i >= 0 && out_i < out_len); out[out_i++] = val; } } else { assert(out_i >= 0 && out_i < out_len); out[out_i++] = guard; } } } if (uncomp_len) *uncomp_len = out_len; return uncomp; } /* * --------------------------------------------------------------------------- * ZTR_FORM_XRLE * --------------------------------------------------------------------------- */ /* * Mutli-byte run length encoding. * * Any run of 3 or more identical characters (up to 255 in a row) are replaced * by a 'guard' byte followed by the number of characters followed by * the character value itself. * Any single guard value in the input is escaped using 'guard 0'. * * Specifying guard as -1 will automatically pick one of the least used * characters in the input as the guard. * * Arguments: * uncomp Input data * uncomp_len Length of input data 'uncomp' * guard Guard byte - used to encode "N" copies of data * rsz Size of blocks to compare for run checking. * comp_len Output: length of compressed data * * Returns: * Compressed data if successful * NULL if not successful */ char *xrle(char *uncomp, int uncomp_len, int guard, int rsz, int *comp_len) { char *comp = (char *)malloc(2 * uncomp_len + 3); char *out = comp; int i, j, k; /* A guard of -1 implies to search for the least frequent symbol */ if (guard == -1) { int cnt[256]; int bestcnt = uncomp_len + 1; for (i = 0; i < 256; i++) cnt[i] = 0; for (i = 0; i < uncomp_len; i++) { cnt[(unsigned char)uncomp[i]]++; } for (i = 0; i < 256; i++) { if (cnt[i] < bestcnt) { bestcnt = cnt[i]; guard = i; } } } *out++ = ZTR_FORM_XRLE; *out++ = rsz; *out++ = guard; for (i = 0; i < uncomp_len; i = k) { /* Count repeats */ k = i + rsz; while (k <= uncomp_len - rsz && !memcmp(&uncomp[i], &uncomp[k], rsz)) { k += rsz; if ((k-i)/rsz == 255) break; } if (k-i > rsz) { /* Duplicates, so RLE */ *out++ = guard; *out++ = (k-i)/rsz; for (j = 0; j < rsz; j++) *out++ = uncomp[i+j]; } else { /* No dups, store as is escaping guarding as appropriate */ if ((unsigned char)(uncomp[i]) == guard) { *out++ = guard; *out++ = 0; } else { *out++ = uncomp[i]; } k = i+1; } } *comp_len = out-comp; return comp; } /* * Reverses multi-byte run length encoding. * * Arguments: * comp Compressed input data * comp_len Length of comp data * uncomp_len Output: length of uncompressed data * * Returns: * Uncompressed data if successful * NULL if not successful */ char *unxrle(char *comp, int comp_len, int *uncomp_len) { char *uncomp; char *out; int rsz = (unsigned char)comp[1]; int guard = (unsigned char)comp[2]; unsigned char *in; int unclen = 0, cpos, len; /* Calculate uncompressed length */ for (in = (unsigned char *)comp, cpos = 3; cpos < comp_len; unclen++) { if (in[cpos++] == guard) { if ((len = in[cpos++])) { cpos += rsz; unclen += len*rsz -1; } } } *uncomp_len = unclen; /* Expand */ uncomp = out = (char *)malloc(unclen+1); for (in = (unsigned char *)comp, cpos = 3; cpos < comp_len;) { char c; if ((c = in[cpos++]) != guard) { *out++ = c; } else { int len = in[cpos++]; if (len) { int i, j; for (i = 0; i < len; i++) { for (j = 0; j < rsz; j++) { *out++ = in[cpos+j]; } } cpos += rsz; } else { *out++ = guard; } } } *out++ = 0; return uncomp; } /* * Mutli-byte run length encoding. * * Steps along in words of size 'rsz'. Unlike XRLE above this does run-length * encoding by writing out an additional "length" word every time 2 or more * words in a row are spotted. This removes the need for a guard byte. * * Additionally this method ensures that both input and output formats remain * aligned on words of size 'rsz'. * * Arguments: * uncomp Input data * uncomp_len Length of input data 'uncomp' * rsz Size of blocks to compare for run checking. * comp_len Output: length of compressed data * * Returns: * Compressed data if successful * NULL if not successful */ char *xrle2(char *uncomp, int uncomp_len, int rsz, int *comp_len) { char *comp = (char *)malloc(1.4*uncomp_len + rsz); char *last = uncomp; char *out = comp; int i, j, k, run_len = 0; *out++ = ZTR_FORM_XRLE2; *out++ = rsz; for (i = 2; i < rsz; i++) *out++ = -40; /* FIXME: how to deal with uncomp_len not being a multiple of rsz */ for (i = 0; i < uncomp_len; i += rsz) { /* FIXME: use inline #def versions of memcmp/memcpy for speed? */ memcpy(out, &uncomp[i], rsz); out += rsz; if (memcmp(last, &uncomp[i], rsz) == 0) { run_len++; } else { run_len = 1; last = &uncomp[i]; } /* NB: >= 3 is more optimal in many cases */ if (run_len >= 2) { /* Count remaining copies */ for (k = i+rsz; k < uncomp_len && run_len < 257; k += rsz) { if (memcmp(last, &uncomp[k], rsz) != 0) break; run_len++; } run_len -= 2; *out++ = run_len; for (j = 1; j < rsz; j++) { /* Padding with last reduces entropy compared to padding * with copies of run_len */ *out++ = last[j]; } i = k-rsz; last = out-rsz; run_len = 0; } } *comp_len = out-comp; return comp; } /* * Reverses multi-byte run length encoding (xrle_new). * * Arguments: * comp Compressed input data * comp_len Length of comp data * uncomp_len Output: length of uncompressed data * * Returns: * Uncompressed data if successful * NULL if not successful */ char *unxrle2(char *comp, int comp_len, int *uncomp_len) { char *out, *last; int out_len, out_alloc, rsz, i, j, run_len; out_alloc = comp_len*2; /* just an estimate */ out_len = 0; if (NULL == (out = (char *)malloc(out_alloc))) return NULL; if (*comp++ != ZTR_FORM_XRLE2) return NULL; /* Read rsz and swallow padding */ rsz = *comp++; comp_len -= 2; for (i = 2; i < rsz; i++) { comp++; comp_len--; } /* Uncompress */ run_len = 0; last = comp; for (i = 0; i < comp_len;) { while (out_len + rsz > out_alloc) { out_alloc *= 2; if (NULL == (out = (char *)realloc(out, out_alloc))) return NULL; } memcpy(&out[out_len], &comp[i], rsz); if (memcmp(&out[out_len], last, rsz) == 0) { run_len++; } else { run_len = 1; } i += rsz; out_len += rsz; /* NB: >= 3 is more optimal in many cases */ if (run_len >= 2) { /* Count remaining copies */ run_len = (unsigned char)comp[i]; i += rsz; while (out_len + run_len * rsz > out_alloc) { out_alloc *= 2; if (NULL == (out = (char *)realloc(out, out_alloc))) return NULL; } for (j = 0; j < run_len; j++) { memcpy(&out[out_len], last, rsz); out_len += rsz; } run_len = 0; } last = &comp[i-rsz]; } /* Shrink back down to avoid excessive memory usage */ out = realloc(out, out_len); *uncomp_len = out_len; return out; } /* * --------------------------------------------------------------------------- * ZTR_FORM_DELTA1 * --------------------------------------------------------------------------- */ /* * This replaces 'samples' with successive differences between samples. * These implementations support 'level's of 1, 2 and 3. * * NB: This is analogous to our SCF delta_samples1 (etc) function, except that * this function about 40% faster. * * Implementation ideas taken from Jean Thierry-Mieg's CTF code. */ /* * decorrelate1() * * Produce successive deltas from a 1-byte array. * * Arguments: * uncomp Uncompressed data * uncomp_len Length of uncompressed data * level Differencing level (must be 1, 2 or 3) * comp_len Return: where to store new compressed length * * Returns: * Success: A decorrelated buffer (malloced) * Failure: NULL */ char *decorrelate1(char *x_uncomp, int uncomp_len, int level, int *comp_len) { int i, z; int u1 = 0, u2 = 0, u3 = 0; char *comp = (char *)xmalloc(uncomp_len + 2); unsigned char *u_uncomp = (unsigned char *)x_uncomp; if (!comp) return NULL; comp+=2; switch (level) { case 1: for (i = 0; i < uncomp_len; i++) { z = u1; u1 = u_uncomp[i]; comp[i] = u_uncomp[i] - z; } break; case 2: for (i = 0; i < uncomp_len; i++) { z = 2*u1 - u2; u2 = u1; u1 = u_uncomp[i]; comp[i] = u_uncomp[i] - z; } break; case 3: for (i = 0; i < uncomp_len; i++) { z = 3*u1 - 3*u2 + u3; u3 = u2; u2 = u1; u1 = u_uncomp[i]; comp[i] = u_uncomp[i] - z; } break; default: return NULL; } comp-=2; comp[0] = ZTR_FORM_DELTA1; comp[1] = level; *comp_len = uncomp_len+2; return comp; } #define ABS(a) ((a) > 0 ? (a) : -(a)) /* ZTR_FORM_DDELTA1 - experimental */ char *decorrelate1dyn(char *x_uncomp, int uncomp_len, int *comp_len) { int i, j, z[4]; int u1 = 0, u2 = 0, u3 = 0; char *comp = (char *)xmalloc(uncomp_len + 2); unsigned char *u_uncomp = (unsigned char *)x_uncomp; int level = 3; /* default level */ int last_level = level; int best; if (!comp) return NULL; comp+=2; for (i = 0; i < uncomp_len; i++) { z[1] = u1; z[2] = 2*u1 - u2; z[3] = 3*u1 - 3*u2 + u3; comp[i] = u_uncomp[i] - z[last_level]; best = 10000; for (j = 1; j < 3; j++) { if (ABS(u_uncomp[i] - z[j]) < best) { best = ABS(u_uncomp[i] - z[j]); last_level = j; } } u3 = u2; u2 = u1; u1 = u_uncomp[i]; } comp-=2; comp[0] = ZTR_FORM_DDELTA1; comp[1] = level; *comp_len = uncomp_len+2; return comp; } /* * recorrelate1() * * The reverse of decorrelate1() * * Arguments: * comp Compressed input data * comp_len Length of comp data * uncomp_len Output: length of uncompressed data * * Returns: * Success: uncompressed data * Failure: NULL */ char *recorrelate1(char *x_comp, int comp_len, int *uncomp_len) { int i, z; int u1 = 0, u2 = 0, u3 = 0; int level = x_comp[1]; char *uncomp; uncomp = (char *)xmalloc(comp_len-2); if (!uncomp) return NULL; x_comp+=2; comp_len-=2; *uncomp_len = comp_len; switch (level) { case 1: for (i = 0; i < comp_len; i++) { z = u1; u1 = uncomp[i] = x_comp[i] + z; } break; case 2: for (i = 0; i < comp_len; i++) { z = 2*u1 - u2; u2 = u1; u1 = uncomp[i] = x_comp[i] + z; } break; case 3: for (i = 0; i < comp_len; i++) { z = 3*u1 - 3*u2 + u3; u3 = u2; u2 = u1; u1 = uncomp[i] = x_comp[i] + z; } break; } return uncomp; } /* * --------------------------------------------------------------------------- * ZTR_FORM_DELTA2 * --------------------------------------------------------------------------- */ /* * decorrelate2() * * Produce successive deltas from a 2-byte array (big endian) * * Arguments: * uncomp Uncompressed data * uncomp_len Length of uncompressed data * level Differencing level (must be 1, 2 or 3) * comp_len Return: where to store new compressed length * * Returns: * Success: A decorrelated buffer (malloced) * Failure: NULL */ char *decorrelate2(char *x_uncomp, int uncomp_len, int level, int *comp_len) { int i, z, delta; int u1 = 0, u2 = 0, u3 = 0; char *comp = (char *)xmalloc(uncomp_len + 2); unsigned char *u_uncomp = (unsigned char *)x_uncomp; if (!comp) return NULL; comp+=2; switch (level) { case 1: for (i = 0; i < uncomp_len; i+=2) { z = u1; u1 = (u_uncomp[i] << 8) + u_uncomp[i+1]; delta = u1 - z; comp[i ] = (delta >> 8) & 0xff; comp[i+1] = (delta >> 0) & 0xff; } break; case 2: for (i = 0; i < uncomp_len; i+=2) { z = 2*u1 - u2; u2 = u1; u1 = (u_uncomp[i] << 8) + u_uncomp[i+1]; delta = u1 - z; comp[i ] = (delta >> 8) & 0xff; comp[i+1] = (delta >> 0) & 0xff; } break; case 3: for (i = 0; i < uncomp_len; i+=2) { z = 3*u1 - 3*u2 + u3; u3 = u2; u2 = u1; u1 = (u_uncomp[i] << 8) + u_uncomp[i+1]; delta = u1 - z; comp[i ] = (delta >> 8) & 0xff; comp[i+1] = (delta >> 0) & 0xff; } break; default: return NULL; } comp-=2; comp[0] = ZTR_FORM_DELTA2; comp[1] = level; *comp_len = uncomp_len+2; return comp; } char *decorrelate2dyn(char *x_uncomp, int uncomp_len, int *comp_len) { int i, j, z[4]; int u1 = 0, u2 = 0, u3 = 0; char *comp = (char *)xmalloc(uncomp_len + 2); unsigned char *u_uncomp = (unsigned char *)x_uncomp; int level = 2; /* minimum level */ int last_level = level; int best; if (!comp) return NULL; comp+=2; for (i = 0; i < uncomp_len; i+=2) { z[0] = 0; z[1] = u1; z[2] = 2*u1 - u2; z[3] = 3*u1 - 3*u2 + u3; u3 = u2; u2 = u1; u1 = (u_uncomp[i]<<8) + u_uncomp[i+1]; comp[i ] = ((u1 - z[last_level]) >> 8) & 0xff; comp[i+1] = ((u1 - z[last_level]) >> 0) & 0xff; best = 10000; for (j = level; j < 4; j++) { if (ABS(u1 - z[j]) < best) { best = ABS(u1 - z[j]); last_level = j; } } } comp-=2; comp[0] = ZTR_FORM_DDELTA2; comp[1] = level; *comp_len = uncomp_len+2; return comp; } /* * recorrelate2() * * The reverse of decorrelate2() * * Arguments: * comp Compressed input data * comp_len Length of comp data * uncomp_len Output: length of uncompressed data * * Returns: * Success: uncompressed data * Failure: NULL */ char *recorrelate2(char *x_comp, int comp_len, int *uncomp_len) { int i, z; int u1 = 0, u2 = 0, u3 = 0; int level = x_comp[1]; char *uncomp; unsigned char *u_comp = (unsigned char *)x_comp; uncomp = (char *)xmalloc(comp_len-2); if (!uncomp) return NULL; u_comp+=2; comp_len-=2; *uncomp_len = comp_len; switch (level) { case 1: for (i = 0; i < comp_len; i+=2) { z = u1; u1 = ((u_comp[i] << 8) | u_comp[i+1]) + z; uncomp[i ] = (u1 >> 8) & 0xff; uncomp[i+1] = (u1 >> 0) & 0xff; } break; case 2: for (i = 0; i < comp_len; i+=2) { z = 2*u1 - u2; u2 = u1; u1 = ((u_comp[i] << 8) | u_comp[i+1]) + z; uncomp[i ] = (u1 >> 8) & 0xff; uncomp[i+1] = (u1 >> 0) & 0xff; } break; case 3: for (i = 0; i < comp_len; i+=2) { z = 3*u1 - 3*u2 + u3; u3 = u2; u2 = u1; u1 = ((u_comp[i] << 8) | u_comp[i+1]) + z; uncomp[i ] = (u1 >> 8) & 0xff; uncomp[i+1] = (u1 >> 0) & 0xff; } break; } return uncomp; } /* * --------------------------------------------------------------------------- * ZTR_FORM_DELTA4 * --------------------------------------------------------------------------- */ /* * decorrelate4() * * Produce successive deltas from a 4-byte array (big endian) * * Arguments: * uncomp Uncompressed data * uncomp_len Length of uncompressed data * level Differencing level (must be 1, 2 or 3) * comp_len Return: where to store new compressed length * * Returns: * Success: A decorrelated buffer (malloced) * Failure: NULL */ char *decorrelate4(char *x_uncomp, int uncomp_len, int level, int *comp_len) { int i, z, delta; int u1 = 0, u2 = 0, u3 = 0; char *comp = (char *)xmalloc(uncomp_len + 4); unsigned char *u_uncomp = (unsigned char *)x_uncomp; if (!comp) return NULL; comp+=4; switch (level) { case 1: for (i = 0; i < uncomp_len; i+=4) { z = u1; u1 =(u_uncomp[i ] << 24) + (u_uncomp[i+1] << 16) + (u_uncomp[i+2] << 8) + (u_uncomp[i+3] << 0); delta = u1 - z; comp[i ] = (delta >> 24) & 0xff; comp[i+1] = (delta >> 16) & 0xff; comp[i+2] = (delta >> 8) & 0xff; comp[i+3] = (delta >> 0) & 0xff; } break; case 2: for (i = 0; i < uncomp_len; i+=4) { z = 2*u1 - u2; u2 = u1; u1 =(u_uncomp[i ] << 24) + (u_uncomp[i+1] << 16) + (u_uncomp[i+2] << 8) + (u_uncomp[i+3] << 0); delta = u1 - z; comp[i ] = (delta >> 24) & 0xff; comp[i+1] = (delta >> 16) & 0xff; comp[i+2] = (delta >> 8) & 0xff; comp[i+3] = (delta >> 0) & 0xff; } break; case 3: for (i = 0; i < uncomp_len; i+=4) { z = 3*u1 - 3*u2 + u3; u3 = u2; u2 = u1; u1 =(u_uncomp[i ] << 24) + (u_uncomp[i+1] << 16) + (u_uncomp[i+2] << 8) + (u_uncomp[i+3] << 0); delta = u1 - z; comp[i ] = (delta >> 24) & 0xff; comp[i+1] = (delta >> 16) & 0xff; comp[i+2] = (delta >> 8) & 0xff; comp[i+3] = (delta >> 0) & 0xff; } break; default: return NULL; } comp-=4; comp[0] = ZTR_FORM_DELTA4; comp[1] = level; comp[2] = 0; /* dummy - to align on 4-byte boundary */ comp[3] = 0; /* dummy - to align on 4-byte boundary */ *comp_len = uncomp_len+4; return comp; } /* * recorrelate4() * * The reverse of decorrelate4() * * Arguments: * comp Compressed input data * comp_len Length of comp data * uncomp_len Output: length of uncompressed data * * Returns: * Success: uncompressed data * Failure: NULL */ char *recorrelate4(char *x_comp, int comp_len, int *uncomp_len) { int i, z; int u1 = 0, u2 = 0, u3 = 0; int level = x_comp[1]; char *uncomp; unsigned char *u_comp = (unsigned char *)x_comp; uncomp = (char *)xmalloc(comp_len-4); if (!uncomp) return NULL; u_comp+=4; comp_len-=4; *uncomp_len = comp_len; switch (level) { case 1: for (i = 0; i < comp_len; i+=4) { z = u1; u1 = z + ((u_comp[i ] << 24) | (u_comp[i+1] << 16) | (u_comp[i+2] << 8) | u_comp[i+3]); uncomp[i ] = (u1 >> 24) & 0xff; uncomp[i+1] = (u1 >> 16) & 0xff; uncomp[i+2] = (u1 >> 8) & 0xff; uncomp[i+3] = (u1 >> 0) & 0xff; } break; case 2: for (i = 0; i < comp_len; i+=4) { z = 2*u1 - u2; u2 = u1; u1 = z + ((u_comp[i ] << 24) | (u_comp[i+1] << 16) | (u_comp[i+2] << 8) | u_comp[i+3]); uncomp[i ] = (u1 >> 24) & 0xff; uncomp[i+1] = (u1 >> 16) & 0xff; uncomp[i+2] = (u1 >> 8) & 0xff; uncomp[i+3] = (u1 >> 0) & 0xff; } break; case 3: for (i = 0; i < comp_len; i+=4) { z = 3*u1 - 3*u2 + u3; u3 = u2; u2 = u1; u1 = z + ((u_comp[i ] << 24) | (u_comp[i+1] << 16) | (u_comp[i+2] << 8) | u_comp[i+3]); uncomp[i ] = (u1 >> 24) & 0xff; uncomp[i+1] = (u1 >> 16) & 0xff; uncomp[i+2] = (u1 >> 8) & 0xff; uncomp[i+3] = (u1 >> 0) & 0xff; } break; } return uncomp; } /* * --------------------------------------------------------------------------- * ZTR_FORM_16TO8 * --------------------------------------------------------------------------- */ /* * shrink_16to8() * * Stores an array of 16-bit (big endian) array elements in an 8-bit array. * We assume that most 16-bit elements encode numbers that fit in an 8-bit * value. When not possible, we store a marker followed by the 16-bit value * stored as multiple 8-bit values. * * uncomp Uncompressed data * uncomp_len Length of uncompressed data (in bytes) * comp_len Return: where to store new compressed length * * Returns: * Success: An 8-bit array (malloced) * Failure: NULL */ char *shrink_16to8(char *x_uncomp, int uncomp_len, int *comp_len) { char *comp; int i, j, i16; signed char *s_uncomp = (signed char *)x_uncomp; /* Allocation - worst case is 3 * (uncomp_len/2) + 1 */ if (NULL == (comp = (char *)xmalloc(3 * (uncomp_len/2) + 1))) return NULL; comp[0] = ZTR_FORM_16TO8; for (i = 0, j = 1; i < uncomp_len; i+=2) { i16 = (s_uncomp[i] << 8) | (unsigned char)s_uncomp[i+1]; if (i16 >= -127 && i16 <= 127) { comp[j++] = i16; } else { comp[j++] = -128; comp[j++] = s_uncomp[i]; comp[j++] = s_uncomp[i+1]; } } /* Reclaim unneeded memory */ comp = xrealloc(comp, j); *comp_len = j; return comp; } /* * expand_8to16() * * The opposite of the shrink_16to8() function. * * comp Compressed input data * comp_len Length of comp data (in bytes) * uncomp_len Output: length of uncompressed data (in bytes) * * Returns: * Success: Uncompressed data (char *) * Failure: NULL */ char *expand_8to16(char *x_comp, int comp_len, int *uncomp_len) { int i, j; char *uncomp; signed char *s_comp = (signed char *)x_comp; /* Allocation - worst case is twice comp_len */ if (NULL == (uncomp = (char *)xmalloc(comp_len*2))) return NULL; #if 0 for (i = 0, j = 1; j < comp_len; i+=2) { if (s_comp[j] != -128) { uncomp[i ] = s_comp[j] < 0 ? -1 : 0; uncomp[i+1] = s_comp[j++]; } else { j++; uncomp[i ] = s_comp[j++]; uncomp[i+1] = s_comp[j++]; } } #endif for (i = 0, j = 1; j < comp_len; i+=2) { if (s_comp[j] >= 0) { uncomp[i ] = 0; uncomp[i+1] = s_comp[j++]; } else { if (s_comp[j] != -128) { uncomp[i+1] = s_comp[j++]; uncomp[i ] = -1; } else { j++; uncomp[i ] = s_comp[j++]; uncomp[i+1] = s_comp[j++]; } } } /* Reclaim unneeded memory */ uncomp = xrealloc(uncomp, i); *uncomp_len = i; return uncomp; } /* * --------------------------------------------------------------------------- * ZTR_FORM_32TO8 * --------------------------------------------------------------------------- */ /* * shrink_32to8() * * Stores an array of 32-bit (big endian) array elements in an 8-bit array. * We assume that most 32-bit elements encode numbers that fit in an 8-bit * value. When not possible, we store a marker followed by the 32-bit value * stored as multiple 8-bit values. * * uncomp Uncompressed data * uncomp_len Length of uncompressed data (in bytes) * comp_len Return: where to store new compressed length * * Returns: * Success: An 8-bit array (malloced) * Failure: NULL */ char *shrink_32to8(char *x_uncomp, int uncomp_len, int *comp_len) { char *comp; int i, j, i32; signed char *s_uncomp = (signed char *)x_uncomp; /* Allocation - worst case is 5 * (uncomp_len/4) + 1 */ if (NULL == (comp = (char *)xmalloc(5 * (uncomp_len/4) + 1))) return NULL; comp[0] = ZTR_FORM_32TO8; for (i = 0, j = 1; i < uncomp_len; i+=4) { i32 = (s_uncomp[i] << 24) | (s_uncomp[i+1] << 16) | (s_uncomp[i+2] << 8) | (unsigned char)s_uncomp[i+3]; if (i32 >= -127 && i32 <= 127) { comp[j++] = i32; } else { comp[j++] = -128; comp[j++] = s_uncomp[i]; comp[j++] = s_uncomp[i+1]; comp[j++] = s_uncomp[i+2]; comp[j++] = s_uncomp[i+3]; } } /* Reclaim unneeded memory */ comp = xrealloc(comp, j); *comp_len = j; return comp; } /* * expand_8to32() * * The opposite of the shrink_32to8() function. * * comp Compressed input data * comp_len Length of comp data (in bytes) * uncomp_len Output: length of uncompressed data (in bytes) * * Returns: * Success: Uncompressed data (char *) * Failure: NULL */ char *expand_8to32(char *comp, int comp_len, int *uncomp_len) { int i, j; char *uncomp; signed char *s_comp = (signed char *)comp; /* Allocation - worst case is four times comp_len */ if (NULL == (uncomp = (char *)xmalloc(comp_len*4))) return NULL; for (i = 0, j = 1; j < comp_len; i+=4) { if (s_comp[j] != -128) { uncomp[i ] = s_comp[j] < 0 ? -1 : 0; uncomp[i+1] = s_comp[j] < 0 ? -1 : 0; uncomp[i+2] = s_comp[j] < 0 ? -1 : 0; uncomp[i+3] = s_comp[j++]; } else { j++; uncomp[i ] = s_comp[j++]; uncomp[i+1] = s_comp[j++]; uncomp[i+2] = s_comp[j++]; uncomp[i+3] = s_comp[j++]; } } /* Reclaim unneeded memory */ uncomp = xrealloc(uncomp, i); *uncomp_len = i; return uncomp; } /* * --------------------------------------------------------------------------- * ZTR_FORM_FOLLOW1 * --------------------------------------------------------------------------- */ static int follow_tab[256][256]; char *follow1(char *x_uncomp, int uncomp_len, int *comp_len) { char *comp = (char *)xmalloc(uncomp_len + 256 + 1); unsigned char *u_uncomp = (unsigned char *)x_uncomp; signed char *s_uncomp = ((signed char *)x_uncomp); int i, j; char next[256]; int count[256]; if (!comp) return NULL; /* Count di-freqs */ memset(follow_tab, 0, 256*256*sizeof(int)); #if 0 for (i = 0; i < uncomp_len-1; i++) follow_tab[u_uncomp[i]][u_uncomp[i+1]]++; /* Pick the most frequent next byte from the preceeding byte */ for (i = 0; i < 256; i++) { int bestval, bestind; bestval = bestind = 0; for (j = 0; j < 256; j++) { if (follow_tab[i][j] > bestval) { bestval = follow_tab[i][j]; bestind = j; } } next[i] = bestind; } #endif memset(next, 0, 256*sizeof(*next)); memset(count, 0, 256*sizeof(*count)); /* Pick the most frequent next byte from the preceeding byte */ for (i = 0; i < uncomp_len-1; ) { int cur = u_uncomp[i]; int nxt = u_uncomp[++i]; int folcnt = ++follow_tab[cur][nxt]; if (folcnt > count[cur]) { count[cur] = folcnt; next[cur] = nxt; } } j = 0; comp[j++] = ZTR_FORM_FOLLOW1; /* Output 'next' array */ for (i = 0; i < 256; i++, j++) comp[j] = next[i]; /* Output new 'uncomp' as next['uncomp'] */ comp[j++] = u_uncomp[0]; for (i = 1; i < uncomp_len; i++, j++) { comp[j] = next[u_uncomp[i-1]] - s_uncomp[i]; } *comp_len = j; return comp; } char *unfollow1(char *x_comp, int comp_len, int *uncomp_len) { unsigned char *u_uncomp; int i, j; char next[256]; unsigned char *u_comp = (unsigned char *)x_comp; signed char *s_comp = (signed char *)x_comp; u_uncomp = (unsigned char *)xmalloc(comp_len-256-1); if (!u_uncomp) return NULL; /* Load next[] array */ j = 1; for (i = 0; i < 256; i++, j++) next[i] = u_comp[j]; /* Replace comp[x] with next[comp[x-1]] - comp[x]*/ u_uncomp[0] = u_comp[j++]; comp_len -= 257; s_comp += 257; for (i = 1; i < comp_len; i++) { u_uncomp[i] = next[u_uncomp[i-1]] - s_comp[i]; } *uncomp_len = i; return (char *)u_uncomp; } /* * --------------------------------------------------------------------------- * ZTR_FORM_CHEB445 * --------------------------------------------------------------------------- */ #if 0 /* * Compresses using chebyshev polynomials to predict the next peak. * Based on around 96 modern ABI files it compresses by around 5% (varied * between 3.9 and 6.6). */ /* * For now this has been disabled in favour of the integer version below * as we cannot guarantee all systems to have the same floating point * roundings, especially with the final conversion to integer. * (Also, for some unknown reason, the integer version produces smaller * files.) */ char *cheb445comp(char *uncomp, int uncomp_len, int *data_len) { int i, k, l, z; int datap; float frac[5]; float fz[25]; signed short *d16 = (signed short *)uncomp; int nwords = uncomp_len / 2; short *dptr = d16; signed short *data = (signed short *)malloc((nwords+1)*sizeof(short)); data[0] = le_int2(ZTR_FORM_CHEB445); /* Check for boundary cases */ if (nwords <= 4) { switch (nwords) { case 4: data[4] = be_int2(be_int2(d16[3])-be_int2(d16[2])); case 3: data[3] = be_int2(be_int2(d16[2])-be_int2(d16[1])); case 2: data[2] = be_int2(be_int2(d16[1])-be_int2(d16[0])); case 1: data[1] = be_int2(d16[0]); } *data_len = nwords*2; return (char *)data; } /* First 4 values are just direct deltas */ data[1] = be_int2(d16[0]); data[2] = be_int2(be_int2(d16[1])-be_int2(d16[0])); data[3] = be_int2(be_int2(d16[2])-be_int2(d16[1])); data[4] = be_int2(be_int2(d16[3])-be_int2(d16[2])); datap = 5; /* Initialise - speeds up loop */ for (k = 0; k < 5; k++) { float kx = cos(M_PI*(k+0.5)/5)*1.5; frac[k] = (kx + 1.5) - (int)(kx + 1.5); } for (z = l = 0; l < 5; l++) { for (k = 0; k < 5; k++, z++) { fz[z] = 0.4 * cos(l * M_PI*(k+0.5)/5); } } /* Loop */ for (i = 0; i < nwords-4; i++) { float dd, y = 10/3.0; float f[5], coef[5]; signed short diff; int p; f[0] = be_int2(dptr[2])*frac[4] + be_int2(dptr[3])*frac[0]; f[1] = be_int2(dptr[2])*frac[3] + be_int2(dptr[3])*frac[1]; f[2] = be_int2(dptr[1])*frac[2] + be_int2(dptr[2])*frac[2]; f[3] = be_int2(dptr[0])*frac[1] + be_int2(dptr[1])*frac[3]; f[4] = be_int2(dptr[0])*frac[0] + be_int2(dptr[1])*frac[4]; for (z = l = 0; l < 5; l++, z+=5) coef[l] = f[0] * fz[z+0] + f[1] * fz[z+1] + f[2] * fz[z+2] + f[3] * fz[z+3] + f[4] * fz[z+4]; dd = y*coef[3]+coef[2]; p = 0.5 + 5/3.0*(y*dd-coef[3]+coef[1])-dd+coef[0]/2.0; if (p < 0) p = 0; diff = be_int2(dptr[4]) - p; data[datap++] = be_int2(diff); dptr++; } *data_len = datap*2; return (char *)data; } char *cheb445uncomp(char *comp, int comp_len, int *uncomp_len) { int i, k, l, z; float frac[5]; float fz[25]; signed short *d16 = (signed short *)comp; int nwords = comp_len / 2; signed short *data = (signed short *)xmalloc(comp_len); short *dptr = data, *dptr2 = d16; /* Check for boundary cases */ if (nwords <= 3) { switch (nwords) { case 3: data[0] = be_int2(d16[1]); data[1] = be_int2(be_int2(d16[2])+be_int2(data[0])); data[2] = be_int2(be_int2(d16[3])+be_int2(data[1])); break; case 2: data[0] = be_int2(d16[1]); data[1] = be_int2(be_int2(d16[2])+be_int2(data[0])); break; case 1: data[0] = be_int2(d16[1]); break; } *uncomp_len = (nwords-1)*2; return (char *)data; } /* First 3 values are just direct deltas */ data[0] = be_int2(d16[1]); data[1] = be_int2(be_int2(d16[2])+be_int2(data[0])); data[2] = be_int2(be_int2(d16[3])+be_int2(data[1])); data[3] = be_int2(be_int2(d16[4])+be_int2(data[2])); dptr2 += 5; /* Initialise - speeds up loop */ for (k = 0; k < 5; k++) { float kx = cos(M_PI*(k+0.5)/5)*1.5; frac[k] = (kx + 1.5) - (int)(kx + 1.5); } for (z = l = 0; l < 5; l++) { for (k = 0; k < 5; k++, z++) { fz[z] = 0.4 * cos(l * M_PI*(k+0.5)/5); } } /* Loop */ for (i = 0; i < nwords-3; i++) { float dd, y = 10/3.0; float f[5], coef[5]; signed short diff; int p; f[0] = be_int2(dptr[2])*frac[4] + be_int2(dptr[3])*frac[0]; f[1] = be_int2(dptr[2])*frac[3] + be_int2(dptr[3])*frac[1]; f[2] = be_int2(dptr[1])*frac[2] + be_int2(dptr[2])*frac[2]; f[3] = be_int2(dptr[0])*frac[1] + be_int2(dptr[1])*frac[3]; f[4] = be_int2(dptr[0])*frac[0] + be_int2(dptr[1])*frac[4]; for (z = l = 0; l < 5; l++, z+=5) coef[l] = f[0] * fz[z+0] + f[1] * fz[z+1] + f[2] * fz[z+2] + f[3] * fz[z+3] + f[4] * fz[z+4]; dd = y*coef[3]+coef[2]; p = 0.5 + 5/3.0*(y*dd-coef[3]+coef[1])-dd+coef[0]/2.0; if (p < 0) p = 0; diff = be_int2(*dptr2) + p; dptr[4] = be_int2(diff); dptr++; dptr2++; } *uncomp_len = (nwords-1)*2; return (char *)data; } #endif /* * --------------------------------------------------------------------------- * ZTR_FORM_ICHEB * --------------------------------------------------------------------------- */ /* * Integer versions of the chebyshev polynomial compressor. This uses * the polynomials to predict the next peak from the preceeding 3. * Tested on 100 ABI-3700, Megabace and Licor files it compressed by * around 7-8%. (Oddly this is slightly more than the floating point * version.) * * These require 32-bit integers and have code to make sure that arithmetic * does not overflow this. */ #define CH1 150 #define CH2 105 char *ichebcomp(char *uncomp, int uncomp_len, int *data_len) { int i, l, z; int datap; int frac[5] = {139,57,75,93,11}; int fz[20] = {42, 42, 42, 42, 42, 39, 24, 0,-24,-39, 33,-12,-42,-12, 33, 24,-39, 0, 39,-24}; int dfac; signed short *d16 = (signed short *)uncomp; int nwords = uncomp_len / 2; short *dptr = d16; signed short *data = (signed short *)malloc((nwords+1)*sizeof(short)); data[0] = le_int2(ZTR_FORM_ICHEB); /* Check for boundary cases */ if (nwords <= 4) { switch (nwords) { case 4: data[4] = be_int2(be_int2(d16[3])-be_int2(d16[2])); case 3: data[3] = be_int2(be_int2(d16[2])-be_int2(d16[1])); case 2: data[2] = be_int2(be_int2(d16[1])-be_int2(d16[0])); case 1: data[1] = be_int2(d16[0]); } *data_len = nwords*2; return (char *)data; } /* First 4 values are just direct deltas */ data[1] = be_int2(d16[0]); data[2] = be_int2(be_int2(d16[1])-be_int2(d16[0])); data[3] = be_int2(be_int2(d16[2])-be_int2(d16[1])); data[4] = be_int2(be_int2(d16[3])-be_int2(d16[2])); datap = 5; /* Loop */ for (i = 4; i < nwords; i++) { int dd, f[5]; signed int coef[4]; signed short diff; int p; /* * FIXME: As an alternative to the range checking below, if we * scale dptr[X] such that it's never higher than 2800 then * the 32-bit arithmetic will never overflow. Practically speaking, * all observed ABI and Megabace files have vales up to 1600 only. */ /* * frac[N] is always paired with frac[4-N], summing to 1.0 - or * 150 when scaled. * Hence f[0] has range 0 to 65536*150. */ f[0] = ((unsigned short)be_int2(dptr[2]))*frac[4] + ((unsigned short)be_int2(dptr[3]))*frac[0]; f[1] = ((unsigned short)be_int2(dptr[2]))*frac[3] + ((unsigned short)be_int2(dptr[3]))*frac[1]; f[2] = ((unsigned short)be_int2(dptr[1]))*frac[2] + ((unsigned short)be_int2(dptr[2]))*frac[2]; f[3] = ((unsigned short)be_int2(dptr[0]))*frac[1] + ((unsigned short)be_int2(dptr[1]))*frac[3]; f[4] = ((unsigned short)be_int2(dptr[0]))*frac[0] + ((unsigned short)be_int2(dptr[1]))*frac[4]; /* * fz[z+0..5] sums to no more than 210 (5*42) and no less than 0. * Therefore coef[l] has range 0 to 65536*150*210, which (just) * fits in 31-bits, plus 1 for the sign. */ for (z = l = 0; l < 4; l++, z+=5) coef[l] = (f[0] * fz[z+0] + f[1] * fz[z+1] + f[2] * fz[z+2] + f[3] * fz[z+3] + f[4] * fz[z+4]); /* * computing p requires at most a temporary variable of * 24.1 * coef, but coef may be a full 32-bit integer. * If coef is sufficiently close to cause an integer overflow then * we scale it down. */ { int max = 0; for (l = 0; l < 4; l++) { if (max < ABS(coef[l])) max = ABS(coef[l]); } if (max > 1<<26) { dfac = max / (1<<26) + 1; for (l = 0; l < 4; l++) coef[l] /= dfac; } else { dfac = 1; } } dd = (coef[3]/3)*10+coef[2]; p = ((((dd/3)*10-coef[3]+coef[1])/3)*5-dd+coef[0]/2)/(CH1*CH2); p *= dfac; if (p < 0) p = 0; diff = be_int2(dptr[4]) - p; data[datap++] = be_int2(diff); dptr++; } *data_len = datap*2; return (char *)data; } char *ichebuncomp(char *comp, int comp_len, int *uncomp_len) { int i, l, z; int frac[5] = {139,57,75,93,11}; int fz[20] = {42, 42, 42, 42, 42, 39, 24, 0,-24,-39, 33,-12,-42,-12, 33, 24,-39, 0, 39,-24}; signed short *d16 = (signed short *)comp; int nwords = comp_len / 2 - 1; signed short *data = (signed short *)xmalloc(comp_len); short *dptr = data, *dptr2 = d16; int dfac; /* Check for boundary cases */ if (nwords <= 4) { switch (nwords) { case 4: data[0] = be_int2(d16[1]); data[1] = be_int2(be_int2(d16[2])+be_int2(data[0])); data[2] = be_int2(be_int2(d16[3])+be_int2(data[1])); data[3] = be_int2(be_int2(d16[4])+be_int2(data[2])); break; case 3: data[0] = be_int2(d16[1]); data[1] = be_int2(be_int2(d16[2])+be_int2(data[0])); data[2] = be_int2(be_int2(d16[3])+be_int2(data[1])); break; case 2: data[0] = be_int2(d16[1]); data[1] = be_int2(be_int2(d16[2])+be_int2(data[0])); break; case 1: data[0] = be_int2(d16[1]); break; } *uncomp_len = nwords*2; return (char *)data; } /* First 4 values are just direct deltas */ data[0] = be_int2(d16[1]); data[1] = be_int2(be_int2(d16[2])+be_int2(data[0])); data[2] = be_int2(be_int2(d16[3])+be_int2(data[1])); data[3] = be_int2(be_int2(d16[4])+be_int2(data[2])); dptr2 += 5; /* Loop */ for (i = 4; i < nwords; i++) { int dd, coef[5], f[5]; signed short diff; int p; f[0] = ((unsigned short)be_int2(dptr[2]))*frac[4] + ((unsigned short)be_int2(dptr[3]))*frac[0]; f[1] = ((unsigned short)be_int2(dptr[2]))*frac[3] + ((unsigned short)be_int2(dptr[3]))*frac[1]; f[2] = ((unsigned short)be_int2(dptr[1]))*frac[2] + ((unsigned short)be_int2(dptr[2]))*frac[2]; f[3] = ((unsigned short)be_int2(dptr[0]))*frac[1] + ((unsigned short)be_int2(dptr[1]))*frac[3]; f[4] = ((unsigned short)be_int2(dptr[0]))*frac[0] + ((unsigned short)be_int2(dptr[1]))*frac[4]; for (z = l = 0; l < 4; l++, z+=5) coef[l] = f[0] * fz[z+0] + f[1] * fz[z+1] + f[2] * fz[z+2] + f[3] * fz[z+3] + f[4] * fz[z+4]; /* * computing p requires at most a temporary variable of * 24.1 * coef, but coef may be a full 32-bit integer. * If coef is sufficiently close to cause an integer overflow then * we scale it down. */ { int max = 0; for (l = 0; l < 4; l++) { if (max < ABS(coef[l])) max = ABS(coef[l]); } if (max > 1<<26) { dfac = max / (1<<26) + 1; for (l = 0; l < 4; l++) coef[l] /= dfac; } else { dfac = 1; } } dd = (coef[3]/3)*10+coef[2]; p = ((((dd/3)*10-coef[3]+coef[1])/3)*5-dd+coef[0]/2)/(CH1*CH2); p *= dfac; if (p < 0) p = 0; diff = be_int2(*dptr2) + p; dptr[4] = be_int2(diff); dptr++; dptr2++; } *uncomp_len = nwords*2; return (char *)data; } /* * --------------------------------------------------------------------------- * ZTR_FORM_LOG * --------------------------------------------------------------------------- */ /* * This is a LOSSY compression. It replaces N with 10 * log2(N). * (Just an idea, and not a great one it seems.) */ char *log2_data(char *x_uncomp, int uncomp_len, int *comp_len) { int i, u1, l1; char *comp = (char *)xmalloc(uncomp_len + 2); unsigned char *u_uncomp = (unsigned char *)x_uncomp; if (!comp) return NULL; comp+=2; for (i = 0; i < uncomp_len; i+=2) { u1 =(u_uncomp[i ] << 8) + (u_uncomp[i+1] << 0); l1 = (int)(10 * log(u1+1) / log(2)); comp[i ] = (l1 >> 8) & 0xff; comp[i+1] = (l1 >> 0) & 0xff; } comp-=2; comp[0] = ZTR_FORM_LOG2; comp[1] = 0; /* dummy - to align on 2-byte boundary */ *comp_len = uncomp_len+2; return comp; } char *unlog2_data(char *x_comp, int comp_len, int *uncomp_len) { int i, u1, l1; char *uncomp; unsigned char *u_comp = (unsigned char *)x_comp; uncomp = (char *)xmalloc(comp_len-2); if (!uncomp) return NULL; u_comp+=2; comp_len-=2; *uncomp_len = comp_len; for (i = 0; i < comp_len; i+=2) { l1 = ((u_comp[i ] << 8) | (u_comp[i+1] << 0)); u1 = (int)pow(2.0, l1/10.0)-1; uncomp[i ] = (u1 >> 8) & 0xff; uncomp[i+1] = (u1 >> 0) & 0xff; } return uncomp; } /* * --------------------------------------------------------------------------- * ZTR_FORM_STHUFF * --------------------------------------------------------------------------- */ /* * Implements compression using a set of static huffman codes stored using * the Deflate algorithm (and so in this respect it's similar to zlib). * * The huffman codes though can be previously stored in the ztr object * using ztr_add_hcode(). "cset" indicates which numbered stored huffman * code set is to be used, or passing zero will use inline codes (ie they * are stored in the data stream itself, just as in standard deflate). * * Arguments: * ztr ztr_t pointer; used to find stored code-sets * uncomp The uncompressed input data * uncomp_len Length of uncomp * cset Stored code-set number, zero for inline * recsz Record size - only used when cset == 0. * comp_len Output: length of compressed data * * Returns: * Compressed data stream if successful + comp_len * NULL on failure */ char *sthuff(ztr_t *ztr, char *uncomp, int uncomp_len, int cset, int recsz, int *comp_len) { block_t *blk = block_create(NULL, 2); unsigned char bytes[2]; huffman_codeset_t *c = NULL; unsigned char *comp = NULL; ztr_hcode_t *hc = NULL; if (cset >= CODE_USER) { if (NULL == (hc = ztr_find_hcode(ztr, cset))) return NULL; c = hc->codes; } else if (cset != CODE_INLINE) { c = generate_code_set(cset, 1, NULL, 0, 1, MAX_CODE_LEN, 0); } if (!c) { /* No cached ones found, so inline some instead */ cset = 0; c = generate_code_set(0, recsz, (unsigned char *)uncomp, uncomp_len, 1, MAX_CODE_LEN, 0); } bytes[0] = ZTR_FORM_STHUFF; bytes[1] = cset; store_bytes(blk, bytes, 2); if (hc) { if (!c->blk) { c->blk = block_create(NULL, 2); store_codes(c->blk, c, 1); } blk->bit = c->blk->bit; } else { store_codes(blk, c, 1); } /* {int i; for (i = 0; i < c->ncodes; i++) { output_code_set(stderr, c->codes[i]); }} */ /* * Unless CODE_INLINE, all we wanted to know is what bit number * to start on. The above is therefore somewhat inefficient. */ if (cset != 0) { blk->byte = 2; memset(&blk->data[2], 0, blk->alloc - 2); } if (0 == huffman_multi_encode(blk, c, cset, (unsigned char *)uncomp, uncomp_len)) { comp = blk->data; *comp_len = blk->byte + (blk->bit != 0); block_destroy(blk, 1); } if (cset == 0) huffman_codeset_destroy(c); return (char *)comp; } char *unsthuff(ztr_t *ztr, char *comp, int comp_len, int *uncomp_len) { int cset = (unsigned char)(comp[1]); huffman_codeset_t *cs = NULL, *cs_free = NULL; block_t *blk_in = block_create(NULL, comp_len), *blk_out = block_create(NULL, 1000); int bfinal = 1, bit_num = 0; char *uncomp; if (cset >= CODE_USER) { /* Scans through HUFF chunks */ ztr_hcode_t *hc = ztr_find_hcode(ztr, cset); if (!hc) return NULL; cs = hc->codes; bit_num = cs->bit_num; blk_in->bit = 0; } else if (cset > 0) { /* Create some temporary huffman_codes to stringify */ cs_free = cs = generate_code_set(cset, 1, NULL, 0, 1, MAX_CODE_LEN, 0); if (!cs) return NULL; bit_num = cs->bit_num; blk_in->bit = 0; } /* else inline codes */ /* * We need to know at what bit the huffman codes would have ended on * so we can store our huffman encoded symbols immediately following it. * For speed though this bit-number is cached. */ blk_in->data[blk_in->byte++] |= *(comp+2); store_bytes(blk_in, (unsigned char *)comp+3, comp_len-3); /* Rewind */ blk_in->byte = 0; blk_in->bit = bit_num; do { block_t *out; /* * We're either at the start of a block with codes to restore * (cset == INLINE or the 2nd onwards block) or we've already * got some codes in cs and we're at the position where huffman * encoded symbols are stored. */ if (!cs) if (NULL == (cs = cs_free = restore_codes(blk_in, &bfinal))) return NULL; /* {int i; for (i = 0; i < cs->ncodes; i++) { output_code_set(stderr, cs->codes[i]); }} */ if (NULL == (out = huffman_multi_decode(blk_in, cs))) { huffman_codeset_destroy(cs); return NULL; } /* Could optimise this for the common case of only 1 block */ store_bytes(blk_out, out->data, out->byte); block_destroy(out, 0); if (cs_free) huffman_codeset_destroy(cs_free); cs = cs_free = NULL; } while (!bfinal); *uncomp_len = blk_out->byte; uncomp = (char *)blk_out->data; block_destroy(blk_in, 0); block_destroy(blk_out, 1); return uncomp; } #ifndef NDEBUG #define SYM_EOF 256 static void output_code_set(FILE *fp, huffman_codes_t *cds) { int i, j; int nbits_in = 0, nbits_out = 0; huffman_code_t *codes = cds->codes; int ncodes = cds->ncodes; fprintf(fp, "static huffman_code_t codes_FIXME[] = {\n"); for (i = j = 0; i < ncodes; i++) { nbits_out += codes[i].nbits * codes[i].freq; nbits_in += 8*codes[i].freq; if (j == 0) fprintf(fp, " "); if (codes[i].symbol == SYM_EOF) { fprintf(fp, "{SYM_EOF,%3d}, ", codes[i].nbits); j = 10; } else { if (isalnum(codes[i].symbol)) { fprintf(fp, "{'%c',%3d}, ", codes[i].symbol, codes[i].nbits); } else { fprintf(fp, "{%3d,%3d}, ", codes[i].symbol, codes[i].nbits); } } j++; if (j >= 6) { fputc('\n', fp); j = 0; } } if (j) fputc('\n', fp); fprintf(fp, "};\n"); fprintf(fp, "/* Expected compression to %f of input */\n", (double)nbits_out/nbits_in); } #endif /* * Reorders quality data from its RAW format to an interleaved 4-byte * aligned format. * * Starting with sequence A1 C2 G3 the raw format is quality of called * bases followed by quality of remaining bases in triplets per base: * 0 (RAW format) * Q(A1) Q(C2) Q(G3) * Q(C1) Q(G1) Q(T1) * Q(A2) Q(G2) Q(T2) * Q(A3) Q(C3) Q(T3) * * We reorder it to: * ZTR_FORM_QSHIFT 0(raw) * Q(A1) Q(C1) Q(G1) Q(T1) * Q(C2) Q(A2) Q(G2) Q(T2) * Q(G3) Q(A3) Q(C3) Q(T3) * * Returns shifted data on success * NULL on failure */ char *qshift(char *qold, int qlen, int *new_len) { int i, j, k; char *qnew; int nbases; /* * Correct input is raw encoding + 4x nbases bytes */ if ((qlen-1)%4 != 0 || *qold != 0) return NULL; nbases = (qlen-1)/4; qnew = (char *)malloc((nbases+1)*4); qnew[0] = ZTR_FORM_QSHIFT; /* reorder code */ qnew[1] = -40; /* pad */ qnew[2] = -40; /* pad */ qnew[3] = qold[0]; for (i = 0, j = 4, k = nbases; i < nbases; i++, j+=4, k+=3) { qnew[j ] = qold[1+i ]; qnew[j+1] = qold[1+k ]; qnew[j+2] = qold[1+k+1]; qnew[j+3] = qold[1+k+2]; } *new_len = (nbases+1)*4; return qnew; } /* * The opposite transform from qshift() above. * * Returns unshifted data on success * NULL on failure. */ char *unqshift(char *qold, int qlen, int *new_len) { int i, j, k; char *qnew; int nbases; /* * Correct input is 4x (nbases+1) bytes */ if (qlen%4 != 0 || *qold != ZTR_FORM_QSHIFT) return NULL; nbases = qlen/4-1; qnew = (char *)malloc(nbases*4+1); qnew[0] = 0; /* raw byte */ for (i = 0, j = 4, k = nbases; i < nbases; i++, j+=4, k+=3) { qnew[1+i ] = qold[j ]; qnew[1+k ] = qold[j+1]; qnew[1+k+1] = qold[j+2]; qnew[1+k+2] = qold[j+3]; } *new_len = nbases*4+1; return qnew; } /* * Given a sequence ACTG this shifts trace data from the order: * * A1A2A3A4 C1C2C3C4 G1G2G3G4 T1T2T3T4 * * to * * A1C1G1T1 C2A2G2T2 T3A3C3G3 G4C4C4T4 * * Ie for each base it ouputs the signal for the called base first * followed by the remaining 3 signals in A,C,G,T order (minus the * called signal already output). */ /* * NCBI uses a rotation mechanism. Thus instead of converting acGt (G * called) to Gact they produce Gtac. * * Given 4 columns of data the two schemes produce value orderings as: * * Rotate: Acgt Shift: Acgt * Cgta Cagt * Gtac Gact * Tacg Tacg * * As a consequence any channel bias for a/c/g/t is better preserved * by shifting than it is by rotating as each column (except #1) are * only populated by two base types and 2 of those columns are on a * 3:1 ratio. */ /* #define ROTATE_INSTEAD */ char *tshift(ztr_t *ztr, char *told_c, int tlen, int *new_len) { int nc, i; ztr_chunk_t **base = ztr_find_chunks(ztr, ZTR_TYPE_BASE, &nc); char *bases; int nbases; unsigned short *tnew, *told; if (nc == 0) return NULL; if (*told_c != 0) return NULL; /* assume RAW format trace input */ /* Use last BASE chunk if multiple are present */ /* FIXME: ensure uncompressed first */ bases = base[nc-1]->data+1; nbases = base[nc-1]->dlength-1; if (nbases != (tlen-2)/8) { fprintf(stderr, "Mismatch in number of base calls to samples\n"); return NULL; } /* Allocate and initialise header */ told = ((unsigned short *)told_c) + 1; *new_len = (nbases*4+4) * sizeof(*tnew); tnew = (unsigned short *)malloc(*new_len); for (i = 0; i < 4; i++) { tnew[i] = 0; } ((char *)tnew)[0] = ZTR_FORM_TSHIFT; #ifdef ROTATE_INSTEAD /* Reorder */ for (i = 0; i < nbases; i++) { switch(bases[i]) { case 'T': tnew[4+i*4+0] = told[3*nbases+i]; /* TACG */ tnew[4+i*4+1] = told[0*nbases+i]; tnew[4+i*4+2] = told[1*nbases+i]; tnew[4+i*4+3] = told[2*nbases+i]; break; case 'G': tnew[4+i*4+0] = told[2*nbases+i]; /* GTAC */ tnew[4+i*4+1] = told[3*nbases+i]; tnew[4+i*4+2] = told[0*nbases+i]; tnew[4+i*4+3] = told[1*nbases+i]; break; case 'C': tnew[4+i*4+0] = told[1*nbases+i]; /* CGTA */ tnew[4+i*4+1] = told[2*nbases+i]; tnew[4+i*4+2] = told[3*nbases+i]; tnew[4+i*4+3] = told[0*nbases+i]; break; default: tnew[4+i*4+0] = told[0*nbases+i]; /* ACGT */ tnew[4+i*4+1] = told[1*nbases+i]; tnew[4+i*4+2] = told[2*nbases+i]; tnew[4+i*4+3] = told[3*nbases+i]; break; } } #else /* Reorder */ for (i = 0; i < nbases; i++) { switch(bases[i]) { case 'T': tnew[4+i*4+0] = told[3*nbases+i]; /* TACG */ tnew[4+i*4+1] = told[0*nbases+i]; tnew[4+i*4+2] = told[1*nbases+i]; tnew[4+i*4+3] = told[2*nbases+i]; break; case 'G': tnew[4+i*4+0] = told[2*nbases+i]; /* GACT */ tnew[4+i*4+1] = told[0*nbases+i]; tnew[4+i*4+2] = told[1*nbases+i]; tnew[4+i*4+3] = told[3*nbases+i]; break; case 'C': tnew[4+i*4+0] = told[1*nbases+i]; /* CAGT */ tnew[4+i*4+1] = told[0*nbases+i]; tnew[4+i*4+2] = told[2*nbases+i]; tnew[4+i*4+3] = told[3*nbases+i]; break; default: tnew[4+i*4+0] = told[0*nbases+i]; /* ACGT */ tnew[4+i*4+1] = told[1*nbases+i]; tnew[4+i*4+2] = told[2*nbases+i]; tnew[4+i*4+3] = told[3*nbases+i]; break; } } #endif xfree(base); return (char *)tnew; } char *untshift(ztr_t *ztr, char *told_c, int tlen, int *new_len) { unsigned short *tnew, *told = (unsigned short *)told_c; int nc, nbases, i; char *bases; ztr_chunk_t **base = ztr_find_chunks(ztr, ZTR_TYPE_BASE, &nc); if (nc == 0) return NULL; /* Use last BASE chunk if multiple are present */ uncompress_chunk(ztr, base[nc-1]); bases = base[nc-1]->data+1; nbases = base[nc-1]->dlength-1; *new_len = 2 + nbases*4 * sizeof(*tnew); tnew = (unsigned short *)malloc(*new_len); tnew[0] = 0; told += 4; #ifdef ROTATE_INSTEAD /* Reorder */ for (i = 0; i < nbases; i++) { switch(bases[i]) { case 'T': tnew[1+3*nbases+i] = *told++; /* TACG */ tnew[1+0*nbases+i] = *told++; tnew[1+1*nbases+i] = *told++; tnew[1+2*nbases+i] = *told++; break; case 'G': tnew[1+2*nbases+i] = *told++; /* GTAC */ tnew[1+3*nbases+i] = *told++; tnew[1+0*nbases+i] = *told++; tnew[1+1*nbases+i] = *told++; break; case 'C': tnew[1+1*nbases+i] = *told++; /* CGTA */ tnew[1+2*nbases+i] = *told++; tnew[1+3*nbases+i] = *told++; tnew[1+0*nbases+i] = *told++; break; default: tnew[1+0*nbases+i] = *told++; /* ACGT */ tnew[1+1*nbases+i] = *told++; tnew[1+2*nbases+i] = *told++; tnew[1+3*nbases+i] = *told++; break; } } #else /* Reorder */ for (i = 0; i < nbases; i++) { switch(bases[i]) { case 'T': tnew[1+3*nbases+i] = *told++; /* TACG */ tnew[1+0*nbases+i] = *told++; tnew[1+1*nbases+i] = *told++; tnew[1+2*nbases+i] = *told++; break; case 'G': tnew[1+2*nbases+i] = *told++; /* GACT */ tnew[1+0*nbases+i] = *told++; tnew[1+1*nbases+i] = *told++; tnew[1+3*nbases+i] = *told++; break; case 'C': tnew[1+1*nbases+i] = *told++; /* CAGT */ tnew[1+0*nbases+i] = *told++; tnew[1+2*nbases+i] = *told++; tnew[1+3*nbases+i] = *told++; break; default: tnew[1+0*nbases+i] = *told++; /* ACGT */ tnew[1+1*nbases+i] = *told++; tnew[1+2*nbases+i] = *told++; tnew[1+3*nbases+i] = *told++; break; } } #endif xfree(base); return (char *)tnew; } io_lib-1.14.6/io_lib/ztr.c0000644000031500020650000007372012354177666012227 00000000000000/* * Copyright (c) 2005-2010, 2013 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * Author(s): James Bonfield * * Copyright (c) 2001-2002 MEDICAL RESEARCH COUNCIL * All rights reserved * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1 Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2 Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3 Neither the name of the MEDICAL RESEARCH COUNCIL, THE LABORATORY OF * MOLECULAR BIOLOGY nor the names of its contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ #ifdef HAVE_CONFIG_H #include "io_lib_config.h" #endif #include #include #include /* #include */ #include "io_lib/ztr.h" #include "io_lib/xalloc.h" #include "io_lib/Read.h" #include "io_lib/compression.h" #include "io_lib/stdio_hack.h" #include "io_lib/deflate_interlaced.h" /* Deprecated #define - see solexa2srf for the more up to date code */ /* #define ILLUMINA_GA */ /* * --------------------------------------------------------------------------- * Trace writing functions. * These consist of several encoding functions, all with the same prototype, * and a single fwrite_ztr function to wrap it all up. * --------------------------------------------------------------------------- */ /* * ztr_write_header * * Writes a ZTR file header. * * Arguments: * fp A FILE pointer * h A pointer to the header to write * * Returns: * Success: 0 * Failure: -1 */ static int ztr_write_header(FILE *fp, ztr_header_t *h) { if (1 != fwrite(h, sizeof(*h), 1, fp)) return -1; return 0; } /* * ztr_write_chunk * * Writes a ZTR chunk including chunk header and data * * Arguments: * fp A FILE pointer * chunk A pointer to the chunk to write * * Returns: * Success: 0 * Failure: -1 */ static int ztr_write_chunk(FILE *fp, ztr_chunk_t *chunk) { int4 bei4; /* { char str[5]; fprintf(stderr, "Write chunk %.4s %08x length %d\n", ZTR_BE2STR(chunk->type, str), chunk->type, chunk->dlength); } */ /* type */ bei4 = be_int4(chunk->type); if (1 != fwrite(&bei4, 4, 1, fp)) return -1; /* metadata length */ bei4 = be_int4(chunk->mdlength); if (1 != fwrite(&bei4, 4, 1, fp)) return -1; /* metadata */ if (chunk->mdlength) if (chunk->mdlength != fwrite(chunk->mdata, 1, chunk->mdlength, fp)) return -1; /* data length */ bei4 = be_int4(chunk->dlength); if (1 != fwrite(&bei4, 4, 1, fp)) return -1; /* data */ if (chunk->dlength != fwrite(chunk->data, 1, chunk->dlength, fp)) return -1; return 0; } /* * fwrite_ztr * * Writes a ZTR file held in the ztr_t structure. * It is assumed that all the correct lengths, magic numbers, etc in the * ztr_t struct have already been initialised correctly. * * FIXME: Add a 'method' argument which encodes formats? Perhaps store this * in the ztr struct? * * Arguments: * fp A writable FILE pointer * ztr A pointer to the ztr_t struct to write. * * Returns: * Success: 0 * Failure: -1 */ int fwrite_ztr(FILE *fp, ztr_t *ztr) { int i; /* Write the header record */ if (-1 == ztr_write_header(fp, &ztr->header)) return -1; /* Write the chunks */ for (i = 0; i < ztr->nchunks; i++) { if (-1 == ztr_write_chunk(fp, &ztr->chunk[i])) return -1; #if 0 { int fd; char fname[1024]; sprintf(fname, "chunk.%d", i); fd = open(fname, O_RDWR|O_CREAT|O_TRUNC, 0666); write(fd, ztr->chunk[i].data, ztr->chunk[i].dlength); close(fd); } #endif } return 0; } /* * --------------------------------------------------------------------------- * Trace reading functions. * These consist of several decoding functions, all with the same prototype, * and a single fread_ztr function to wrap it all up. * --------------------------------------------------------------------------- */ /* * ztr_read_header * * Reads a ZTR file header. * * Arguments: * fp A FILE pointer * h Where to write the header to * * Returns: * Success: 0 * Failure: -1 */ int ztr_read_header(FILE *fp, ztr_header_t *h) { if (1 != fread(h, sizeof(*h), 1, fp)) return -1; return 0; } /* * ztr_read_chunk_hdr * * Reads a ZTR chunk header and metadata, but not the main data segment. * * Arguments: * fp A FILE pointer * * Returns: * Success: a chunk pointer (malloced) * Failure: NULL */ ztr_chunk_t *ztr_read_chunk_hdr(FILE *fp) { int4 bei4; ztr_chunk_t *chunk; if (NULL == (chunk = (ztr_chunk_t *)xmalloc(sizeof(*chunk)))) return NULL; /* type */ if (1 != fread(&bei4, 4, 1, fp)) { xfree(chunk); return NULL; } chunk->type = be_int4(bei4); /* metadata length */ if (1 != fread(&bei4, 4, 1, fp)) { xfree(chunk); return NULL; } chunk->mdlength = be_int4(bei4); /* metadata */ chunk->ztr_owns = 1; if (chunk->mdlength) { if (NULL == (chunk->mdata = (char *)xmalloc(chunk->mdlength))) { xfree(chunk); return NULL; } if (chunk->mdlength != fread(chunk->mdata, 1, chunk->mdlength, fp)) { xfree(chunk->mdata); xfree(chunk); return NULL; } } else { chunk->mdata = NULL; } /* data length */ if (1 != fread(&bei4, 4, 1, fp)) { if (chunk->mdata) xfree(chunk->mdata); xfree(chunk); return NULL; } chunk->dlength = be_int4(bei4); return chunk; } void ztr_process_text(ztr_t *ztr) { int i; ztr_chunk_t **text_chunks = NULL; int ntext_chunks = 0; ztr_text_t *zt = NULL; int nzt = 0; int nalloc = 0; if (ztr->text_segments) /* Already done */ return; text_chunks = ztr_find_chunks(ztr, ZTR_TYPE_TEXT, &ntext_chunks); if (!text_chunks) return; for (i = 0; i < ntext_chunks; i++) { char *data; uint4 length; char *ident, *value; /* Make sure it's not compressed */ uncompress_chunk(ztr, text_chunks[i]); data = text_chunks[i]->data; length = text_chunks[i]->dlength; if (!length) continue; /* Skip RAW header byte */ data++; length--; while (data - text_chunks[i]->data <= (ptrdiff_t)length && *(ident = data)) { data += strlen(ident)+1; value = data; if (value) data += strlen(value)+1; if (nzt + 1 > nalloc) { nalloc += 10; zt = (ztr_text_t *)xrealloc(zt, nalloc * sizeof(*zt)); } zt[nzt].ident = ident; zt[nzt].value = value; nzt++; } } ztr->text_segments = zt; ztr->ntext_segments = nzt; /* for (i = 0; i < ztr->ntext_segments; i++) { fprintf(stderr, "'%s' = '%s'\n", ztr->text_segments[i].ident, ztr->text_segments[i].value); } */ xfree(text_chunks); } /* * fread_ztr * * Reads a ZTR file from 'fp'. This checks for the correct magic number and * major version number, but not minor version number. * * FIXME: Add automatic uncompression? * * Arguments: * fp A readable FILE pointer * * Returns: * Success: Pointer to a ztr_t structure (malloced) * Failure: NULL */ ztr_t *fread_ztr(FILE *fp) { ztr_t *ztr; ztr_chunk_t *chunk; int sections = read_sections(0); /* Allocate */ if (NULL == (ztr = new_ztr())) return NULL; /* Read the header */ if (-1 == ztr_read_header(fp, &ztr->header)) return NULL; /* Check magic number and version */ if (memcmp(ztr->header.magic, ZTR_MAGIC, 8) != 0) return NULL; if (ztr->header.version_major != ZTR_VERSION_MAJOR) return NULL; /* Load chunks */ while ((chunk = ztr_read_chunk_hdr(fp))) { /* char str[5]; fprintf(stderr, "Read chunk %.4s %08x length %d\n", ZTR_BE2STR(chunk->type, str), chunk->type, chunk->dlength); */ switch(chunk->type) { case ZTR_TYPE_HEADER: /* End of file */ return ztr; case ZTR_TYPE_SAMP: case ZTR_TYPE_SMP4: if (! (sections & READ_SAMPLES)) { fseek(fp, chunk->dlength, SEEK_CUR); xfree(chunk); continue; } break; case ZTR_TYPE_BASE: case ZTR_TYPE_BPOS: case ZTR_TYPE_CNF4: case ZTR_TYPE_CNF1: case ZTR_TYPE_CSID: if (! (sections & READ_BASES)) { fseek(fp, chunk->dlength, SEEK_CUR); xfree(chunk); continue; } break; case ZTR_TYPE_TEXT: if (! (sections & READ_COMMENTS)) { fseek(fp, chunk->dlength, SEEK_CUR); xfree(chunk); continue; } break; case ZTR_TYPE_CLIP: case ZTR_TYPE_FLWO: case ZTR_TYPE_FLWC: break; /* default: fprintf(stderr, "Unknown chunk type '%s': skipping\n", ZTR_BE2STR(chunk->type,str)); fseek(fp, chunk->dlength, SEEK_CUR); xfree(chunk); continue; */ } chunk->ztr_owns = 1; chunk->data = (char *)xmalloc(chunk->dlength); if (chunk->dlength != fread(chunk->data, 1, chunk->dlength, fp)) { delete_ztr(ztr); return NULL; } ztr->nchunks++; ztr->chunk = (ztr_chunk_t *)xrealloc(ztr->chunk, ztr->nchunks * sizeof(ztr_chunk_t)); memcpy(&ztr->chunk[ztr->nchunks-1], chunk, sizeof(*chunk)); xfree(chunk); } return ztr; } /* * --------------------------------------------------------------------------- * Other utility functions * --------------------------------------------------------------------------- */ /* * new_ztr * * Allocates and initialises a ztr_t structure * * Returns: * ztr_t pointer on success * NULL on failure */ ztr_t *new_ztr(void) { ztr_t *ztr; /* Allocate */ if (NULL == (ztr = (ztr_t *)xmalloc(sizeof(*ztr)))) return NULL; ztr->chunk = NULL; ztr->nchunks = 0; ztr->text_segments = NULL; ztr->ntext_segments = 0; ztr->delta_level = 3; ztr->nhcodes = 0; ztr->hcodes = NULL; ztr->hcodes_checked = 0; return ztr; } void delete_ztr(ztr_t *ztr) { int i; if (!ztr) return; if (ztr->chunk) { for (i = 0; i < ztr->nchunks; i++) { if (ztr->chunk[i].data && ztr->chunk[i].ztr_owns) xfree(ztr->chunk[i].data); if (ztr->chunk[i].mdata && ztr->chunk[i].ztr_owns) xfree(ztr->chunk[i].mdata); } xfree(ztr->chunk); } if (ztr->hcodes) { for (i = 0; i < ztr->nhcodes; i++) { if (ztr->hcodes[i].codes && ztr->hcodes[i].ztr_owns) huffman_codeset_destroy(ztr->hcodes[i].codes); } free(ztr->hcodes); } if (ztr->text_segments) xfree(ztr->text_segments); xfree(ztr); } /* * ztr_find_chunks * * Searches for chunks of a specific type. * * Returns: * Array of ztr_chunk_t pointers (into the ztr struct). This is * allocated by malloc and it is the callers duty to free this. * NULL if none found. */ ztr_chunk_t **ztr_find_chunks(ztr_t *ztr, uint4 type, int *nchunks_p) { ztr_chunk_t **chunks = NULL; int nchunks = 0; int i; for (i = 0; i < ztr->nchunks; i++) { if (ztr->chunk[i].type == type) { chunks = (ztr_chunk_t **)xrealloc(chunks, (nchunks + 1) * sizeof(*chunks)); chunks[nchunks++] = &ztr->chunk[i]; } } *nchunks_p = nchunks; return chunks; } /* * Shannon showed that for storage in base 'b' with alphabet symbols 'a' having * a probability of ocurring in any context of 'Pa' we should encode * symbol 'a' to have a storage width of -logb(Pa). * * Eg. b = 26, P(e) = .22. => width .4647277. * * We use this to calculate the entropy of a signal by summing over all letters * in the signal. In this case, our storage has base 256. */ #define EBASE 256 static double entropy(unsigned char *data, int len) { double E[EBASE]; double P[EBASE]; double e; int i; for (i = 0; i < EBASE; i++) P[i] = 0; for (i = 0; i < len; i++) P[data[i]]++; for (i = 0; i < EBASE; i++) { if (P[i]) { P[i] /= len; E[i] = -(log(P[i])/log(EBASE)); } else { E[i] = 0; } } for (e = i = 0; i < len; i++) e += E[data[i]]; return e; } /* * Adds a user-defined huffman_codeset_t code-set to the available code sets * used by huffman_encode or huffman_decode. * * Note that the 'codes' memory is then "owned" by the ztr object if "ztr_owns" * is true and will be deallocated when the ztr object is destroyed. Otherwise * freeing the ztr object will not touch the passed in codes. */ ztr_hcode_t *ztr_add_hcode(ztr_t *ztr, huffman_codeset_t *codes, int ztr_owns) { if (!codes) return NULL; ztr->hcodes = realloc(ztr->hcodes, (ztr->nhcodes+1)*sizeof(*ztr->hcodes)); ztr->hcodes[ztr->nhcodes].codes = codes; ztr->hcodes[ztr->nhcodes].ztr_owns = ztr_owns; return &ztr->hcodes[ztr->nhcodes++]; } /* * Searches through the cached huffman_codeset_t tables looking for a stored * huffman code of type 'code_set'. * NB: only code_sets >= CODE_USER will be stored here. * * Returns codes on success, * NULL on failure */ ztr_hcode_t *ztr_find_hcode(ztr_t *ztr, int code_set) { int i; if (code_set < CODE_USER) return NULL; /* computed on-the-fly or use a hard-coded set */ /* Check through chunks for undecoded HUFF chunks */ if (!ztr->hcodes_checked) { for (i = 0; i < ztr->nchunks; i++) { if (ztr->chunk[i].type == ZTR_TYPE_HUFF) { block_t *blk; huffman_codeset_t *cs; uncompress_chunk(ztr, &ztr->chunk[i]); blk = block_create((unsigned char *)(ztr->chunk[i].data+2), ztr->chunk[i].dlength-2); cs = restore_codes(blk, NULL); if (!cs) { block_destroy(blk, 1); return NULL; } cs->code_set = (unsigned char)(ztr->chunk[i].data[1]); ztr_add_hcode(ztr, cs, 1); block_destroy(blk, 1); } } ztr->hcodes_checked = 1; } /* Check cached copies */ for (i = 0; i < ztr->nhcodes; i++) { if (ztr->hcodes[i].codes->code_set == code_set) return &ztr->hcodes[i]; } return NULL; } ztr_chunk_t *ztr_find_hcode_chunk(ztr_t *ztr, int code_set) { int i; if (code_set < CODE_USER) return NULL; /* computed on-the-fly or use a hard-coded set */ /* Check through chunks for undecoded HUFF chunks */ for (i = 0; i < ztr->nchunks; i++) { if (ztr->chunk[i].type == ZTR_TYPE_HUFF) { uncompress_chunk(ztr, &ztr->chunk[i]); if (ztr->chunk[i].dlength >= 2 && (unsigned char)ztr->chunk[i].data[1] == code_set) return &ztr->chunk[i]; } } return NULL; } /* * Adds a new chunk to a ztr file and returns the chunk pointer. * The data and mdata fields can be NULL and the chunk will not be * initialised. * * Returns new chunk ptr on success. * NULL on failure. */ ztr_chunk_t *ztr_new_chunk(ztr_t *ztr, uint4 type, char *data, uint4 dlength, char *mdata, uint4 mdlength) { ztr_chunk_t *chunks, *c; /* Grow the chunk array */ chunks = (ztr_chunk_t *)realloc(ztr->chunk, (ztr->nchunks+1) * sizeof(*chunks)); if (!chunks) return NULL; ztr->chunk = chunks; /* Initialise */ c = &ztr->chunk[ztr->nchunks++]; c->type = type; c->data = data; c->dlength = dlength; c->mdata = mdata; c->mdlength = mdlength; c->ztr_owns = 1; return c; } /* * Adds a key/value pair to a ztr TEXT chunk. * The 'ch' chunk may be explicitly specified in which case the text * is added to that chunk or it may be specified as NULL in which case * the key/value pair are added to the first available TEXT chunk, * possibly creating a new one if required. * * NOTE: If the key already exists in the text chunk this appends a new * copy; it does not overwrite the old one. * * Returns ztr text chunk ptr for success * NULL for failure */ ztr_chunk_t *ztr_add_text(ztr_t *z, ztr_chunk_t *ch, const char *key, const char *value) { ztr_chunk_t **text_chunks = NULL; int ntext_chunks; size_t key_len, value_len; char *cp; /* Find/create the appropriate chunk */ if (!ch) { text_chunks = ztr_find_chunks(z, ZTR_TYPE_TEXT, &ntext_chunks); if (!text_chunks) { ch = ztr_new_chunk(z, ZTR_TYPE_TEXT, NULL, 0, NULL, 0); } else { ch = text_chunks[0]; xfree(text_chunks); } } if (ch->type != ZTR_TYPE_TEXT) return NULL; /* Make sure it's not compressed */ uncompress_chunk(z, ch); /* Append key\0value\0 */ key_len = strlen(key); value_len = strlen(value); cp = ch->data; if (cp) { /* Set ch->dlength to the last non-nul byte of the previous value */ while (ch->dlength && ch->data[ch->dlength-1] == 0) ch->dlength--; } cp = realloc(ch->data, 1 + ch->dlength + key_len + value_len + 3); if (NULL == cp) return NULL; else ch->data = cp; cp = &ch->data[ch->dlength]; /* * Note this is a bit cryptic, but it works. * When appending to an existing text chunk we write a preceeding nul * to mark the end of the previous value (we rewound above specifically * for this case). * When creating a new chunk we still write a nul, but in this case it's * the RAW format byte. After the value we add an extra nul to * indicate the last entry. */ ch->dlength += 1+sprintf(cp, "%c%s%c%s%c", 0, key, 0, value, 0); return ch; } /* * Stores held ztr huffman_codes as ZTR chunks. * Returns 0 for success * -1 for failure */ int ztr_store_hcodes(ztr_t *ztr) { int i; ztr_chunk_t *chunks; int nchunks; if (ztr->nhcodes == 0) return 0; /* Extend chunks array */ nchunks = ztr->nchunks + ztr->nhcodes; chunks = (ztr_chunk_t *)realloc(ztr->chunk, nchunks * sizeof(*chunks)); if (!chunks) return -1; ztr->chunk = chunks; /* Encode */ for (i = 0; i < ztr->nhcodes; i++) { block_t *blk = block_create(NULL, 2); int j = ztr->nchunks; unsigned char bytes[2]; ztr->chunk[j].type = ZTR_TYPE_HUFF; ztr->chunk[j].mdata = 0; ztr->chunk[j].mdlength = 0; ztr->chunk[j].ztr_owns = 1; bytes[0] = 0; bytes[1] = ztr->hcodes[i].codes->code_set; store_bytes(blk, bytes, 2); /* FIXME: Now already cached in ztr_hcode_t */ if (0 == store_codes(blk, ztr->hcodes[i].codes, 1)) { /* Last byte is always merged with first of stream */ if (blk->bit == 0) { unsigned char zero = 0; store_bytes(blk, &zero, 1); } ztr->chunk[j].data = (char *)blk->data; ztr->chunk[j].dlength = blk->byte + (blk->bit != 0); block_destroy(blk, 1); ztr->nchunks++; } } return ztr->nchunks == nchunks ? 0 : -1; } /* * Given a ZTR chunk this searches through the meta-data key/value pairings * to return the corresponding value. * * Returns a pointer into the mdata on success (nul-terminated) * NULL on failure. */ char *ztr_lookup_mdata_value(ztr_t *z, ztr_chunk_t *chunk, char *key) { if (z->header.version_major > 1 || z->header.version_minor >= 2) { /* ZTR format 1.2 onwards */ char *cp = chunk->mdata; int32_t dlen = chunk->mdlength; /* * NB: we may wish to rewrite this using a dedicated state machine * instead of strlen/strcmp as this currently assumes the meta- * data is correctly formatted, which we cannot assume as the * metadata is external and outside of our control. * Passing in non-nul terminated strings could crash this code. */ while (dlen > 0) { size_t l; int found; /* key */ l = strlen(cp); found = strcmp(cp, key) == 0; cp += l+1; dlen -= l+1; /* value */ if (found) return cp; l = strlen(cp); cp += l+1; dlen -= l+1; } return NULL; } else { /* v1.1 and before only supported a few types, specifically coded * per chunk type. */ switch (chunk->type) { case ZTR_TYPE_SAMP: case ZTR_TYPE_SMP4: if (strcmp(key, "TYPE")) return chunk->mdata; break; default: break; } } return NULL; } /* * Compresses an individual chunk using a specific format. The format is one * of the 'format' fields listed in the spec; one of the ZTR_FORM_ macros. */ int compress_chunk(ztr_t *ztr, ztr_chunk_t *chunk, int format, int option, int option2) { char *new_data = NULL; int new_len; switch (format) { case ZTR_FORM_RAW: return 0; case ZTR_FORM_RLE: new_data = rle(chunk->data, chunk->dlength, option, &new_len); if (entropy((unsigned char *)new_data, new_len) >= entropy((unsigned char *)chunk->data, chunk->dlength)) { xfree(new_data); return 0; } break; case ZTR_FORM_XRLE: new_data = xrle(chunk->data, chunk->dlength, option,option2, &new_len); break; case ZTR_FORM_XRLE2: new_data = xrle2(chunk->data, chunk->dlength, option, &new_len); break; case ZTR_FORM_ZLIB: new_data = zlib_huff(chunk->data, chunk->dlength, option, &new_len); break; case ZTR_FORM_DELTA1: new_data = decorrelate1(chunk->data, chunk->dlength, option, &new_len); break; case ZTR_FORM_DDELTA1: new_data = decorrelate1dyn(chunk->data, chunk->dlength, &new_len); break; case ZTR_FORM_DELTA2: new_data = decorrelate2(chunk->data, chunk->dlength, option, &new_len); break; case ZTR_FORM_DDELTA2: new_data = decorrelate2dyn(chunk->data, chunk->dlength, &new_len); break; case ZTR_FORM_DELTA4: new_data = decorrelate4(chunk->data, chunk->dlength, option, &new_len); break; case ZTR_FORM_16TO8: new_data = shrink_16to8(chunk->data, chunk->dlength, &new_len); break; case ZTR_FORM_32TO8: new_data = shrink_32to8(chunk->data, chunk->dlength, &new_len); break; case ZTR_FORM_FOLLOW1: new_data = follow1(chunk->data, chunk->dlength, &new_len); break; case ZTR_FORM_ICHEB: new_data = ichebcomp(chunk->data, chunk->dlength, &new_len); break; case ZTR_FORM_LOG2: new_data = log2_data(chunk->data, chunk->dlength, &new_len); break; case ZTR_FORM_STHUFF: new_data = sthuff(ztr, chunk->data, chunk->dlength, option, option2, &new_len); break; case ZTR_FORM_QSHIFT: new_data = qshift(chunk->data, chunk->dlength, &new_len); break; case ZTR_FORM_TSHIFT: new_data = tshift(ztr, chunk->data, chunk->dlength, &new_len); break; } if (!new_data) { fprintf(stderr, "!!ERROR!!\n"); return -1; } /* fprintf(stderr, "Format %d => %d to %d\n", format, chunk->dlength, new_len); */ chunk->dlength = new_len; xfree(chunk->data); chunk->data = new_data; return 0; } /* * Uncompresses an individual chunk from all levels of compression. */ int uncompress_chunk(ztr_t *ztr, ztr_chunk_t *chunk) { char *new_data = NULL; int new_len; while (chunk->dlength > 0 && chunk->data[0] != ZTR_FORM_RAW) { switch (chunk->data[0]) { case ZTR_FORM_RLE: new_data = unrle(chunk->data, chunk->dlength, &new_len); break; case ZTR_FORM_XRLE: new_data = unxrle(chunk->data, chunk->dlength, &new_len); break; case ZTR_FORM_XRLE2: new_data = unxrle2(chunk->data, chunk->dlength, &new_len); break; case ZTR_FORM_ZLIB: new_data = zlib_dehuff(chunk->data, chunk->dlength, &new_len); break; case ZTR_FORM_DELTA1: new_data = recorrelate1(chunk->data, chunk->dlength, &new_len); break; case ZTR_FORM_DELTA2: new_data = recorrelate2(chunk->data, chunk->dlength, &new_len); break; case ZTR_FORM_DELTA4: new_data = recorrelate4(chunk->data, chunk->dlength, &new_len); break; case ZTR_FORM_16TO8: new_data = expand_8to16(chunk->data, chunk->dlength, &new_len); break; case ZTR_FORM_32TO8: new_data = expand_8to32(chunk->data, chunk->dlength, &new_len); break; case ZTR_FORM_FOLLOW1: new_data = unfollow1(chunk->data, chunk->dlength, &new_len); break; case ZTR_FORM_ICHEB: new_data = ichebuncomp(chunk->data, chunk->dlength, &new_len); break; case ZTR_FORM_LOG2: new_data = unlog2_data(chunk->data, chunk->dlength, &new_len); break; case ZTR_FORM_STHUFF: new_data = unsthuff(ztr, chunk->data, chunk->dlength, &new_len); break; case ZTR_FORM_QSHIFT: new_data = unqshift(chunk->data, chunk->dlength, &new_len); break; case ZTR_FORM_TSHIFT: new_data = untshift(ztr, chunk->data, chunk->dlength, &new_len); break; default: fprintf(stderr, "Unknown encoding format %d\n", chunk->data[0]); return -1; } if (!new_data) return -1; /* fprintf(stderr, "format %d => %d to %d\n", chunk->data[0], chunk->dlength, new_len); */ chunk->dlength = new_len; xfree(chunk->data); chunk->data = new_data; } return 0; } /* * Compresses a ztr (in memory). * Level is 0, 1, 2 or 3 (no compression, delta, delta + zlib, * chebyshev + zlib). */ int compress_ztr(ztr_t *ztr, int level) { int i; if (0 == level) return 0; for (i = 0; i < ztr->nchunks; i++) { /* { char str[5]; fprintf(stderr, "---- %.4s ----\n", ZTR_BE2STR(ztr->chunk[i].type,str)); } fprintf(stderr, "Uncomp length=%d\n", ztr->chunk[i].dlength); */ switch(ztr->chunk[i].type) { char *type; case ZTR_TYPE_SAMP: case ZTR_TYPE_SMP4: #ifdef ILLUMINA_GA compress_chunk(ztr, &ztr->chunk[i], ZTR_FORM_STHUFF, CODE_TRACES, 0); #else type = ztr_lookup_mdata_value(ztr, &ztr->chunk[i], "TYPE"); if (type && 0 == strcmp(type, "PYRW")) { /* Raw data is not really compressable */ } else if (type && 0 == strcmp(type, "PYNO")) { if (level > 1) { compress_chunk(ztr, &ztr->chunk[i], ZTR_FORM_16TO8, 0, 0); compress_chunk(ztr, &ztr->chunk[i], ZTR_FORM_ZLIB, Z_HUFFMAN_ONLY, 0); } } else { if (level <= 2) { /* * Experiments show that typically a double delta does * better than a single delta for 8-bit data, and the other * way around for 16-bit data */ compress_chunk(ztr, &ztr->chunk[i], ZTR_FORM_DELTA2, ztr->delta_level, 0); } else { compress_chunk(ztr, &ztr->chunk[i], ZTR_FORM_ICHEB, 0, 0); } compress_chunk(ztr, &ztr->chunk[i], ZTR_FORM_16TO8, 0, 0); if (level > 1) { compress_chunk(ztr, &ztr->chunk[i], ZTR_FORM_FOLLOW1,0, 0); /* compress_chunk(ztr, &ztr->chunk[i], ZTR_FORM_ZLIB, Z_HUFFMAN_ONLY); */ compress_chunk(ztr, &ztr->chunk[i], ZTR_FORM_RLE, 150, 0); compress_chunk(ztr, &ztr->chunk[i], ZTR_FORM_ZLIB, Z_HUFFMAN_ONLY, 0); } } #endif break; case ZTR_TYPE_BASE: #ifdef ILLUMINA_GA compress_chunk(ztr, &ztr->chunk[i], ZTR_FORM_STHUFF, CODE_DNA, 0); #else if (level > 1) { compress_chunk(ztr, &ztr->chunk[i], ZTR_FORM_ZLIB, Z_HUFFMAN_ONLY, 0); } #endif break; case ZTR_TYPE_CNF1: case ZTR_TYPE_CNF4: case ZTR_TYPE_CSID: #ifdef ILLUMINA_GA compress_chunk(ztr, &ztr->chunk[i], ZTR_FORM_RLE, 77, 0); compress_chunk(ztr, &ztr->chunk[i], ZTR_FORM_STHUFF, CODE_CONF_RLE, 0); #else compress_chunk(ztr, &ztr->chunk[i], ZTR_FORM_DELTA1, 1, 0); compress_chunk(ztr, &ztr->chunk[i], ZTR_FORM_RLE, 77, 0); if (level > 1) { compress_chunk(ztr, &ztr->chunk[i], ZTR_FORM_ZLIB, Z_HUFFMAN_ONLY, 0); } #endif break; case ZTR_TYPE_BPOS: compress_chunk(ztr, &ztr->chunk[i], ZTR_FORM_DELTA4, 1, 0); compress_chunk(ztr, &ztr->chunk[i], ZTR_FORM_32TO8, 0, 0); if (level > 1) { compress_chunk(ztr, &ztr->chunk[i], ZTR_FORM_ZLIB, Z_HUFFMAN_ONLY, 0); } break; case ZTR_TYPE_TEXT: #ifdef ILLUMINA_GA #else if (level > 1) { compress_chunk(ztr, &ztr->chunk[i], ZTR_FORM_ZLIB, Z_HUFFMAN_ONLY, 0); } #endif break; case ZTR_TYPE_FLWO: compress_chunk(ztr, &ztr->chunk[i], ZTR_FORM_XRLE, 0, 4); break; } /* fprintf(stderr, "Comp length=%d\n", ztr->chunk[i].dlength); */ } return 0; } /* * Uncompresses a ztr (in memory). */ int uncompress_ztr(ztr_t *ztr) { int i; for (i = 0; i < ztr->nchunks; i++) { /* { char str[5]; fprintf(stderr, "---- %.4s ----\n", ZTR_BE2STR(ztr->chunk[i].type,str)); } */ uncompress_chunk(ztr, &ztr->chunk[i]); } return 0; } io_lib-1.14.6/io_lib/ztr_translate.c0000644000031500020650000007310412354177666014300 00000000000000/* * Copyright (c) 2004-2005, 2007-2010, 2013 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * Author(s): James Bonfield * * Copyright (c) 2001 MEDICAL RESEARCH COUNCIL * All rights reserved * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1 Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2 Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3 Neither the name of the MEDICAL RESEARCH COUNCIL, THE LABORATORY OF * MOLECULAR BIOLOGY nor the names of its contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ #ifdef HAVE_CONFIG_H #include "io_lib_config.h" #endif #include #include #include "io_lib/ztr.h" #include "io_lib/xalloc.h" #include "io_lib/Read.h" #define DO_SMP4 /* Return the A,C,G,T samples */ static char *ztr_encode_samples_4(ztr_t *z, Read *r, int *nbytes, char **mdata, int *mdbytes) { char *bytes; int i, j, t; if (!r->NPoints) return NULL; if ((z->header.version_major > 1 || z->header.version_minor >= 2) && r->baseline) { /* 1.2 onwards */ char buf[256]; int blen; blen = sprintf(buf, "%d", r->baseline); *mdata = (char *)malloc(6+blen); *mdbytes = sprintf(*mdata, "OFFS%c%s", 0, buf) + 1; } else { *mdata = NULL; *mdbytes = 0; } bytes = (char *)xmalloc(r->NPoints * sizeof(TRACE)*4 + 2); for (i = 0, j = 2; i < r->NPoints; i++) { t = r->traceA[i]; bytes[j++] = (t >> 8) & 0xff; bytes[j++] = (t >> 0) & 0xff; } for (i = 0; i < r->NPoints; i++) { t = r->traceC[i]; bytes[j++] = (t >> 8) & 0xff; bytes[j++] = (t >> 0) & 0xff; } for (i = 0; i < r->NPoints; i++) { t = r->traceG[i]; bytes[j++] = (t >> 8) & 0xff; bytes[j++] = (t >> 0) & 0xff; } for (i = 0; i < r->NPoints; i++) { t = r->traceT[i]; bytes[j++] = (t >> 8) & 0xff; bytes[j++] = (t >> 0) & 0xff; } *nbytes = 4 * r->NPoints * sizeof(TRACE) + 2; bytes[0] = ZTR_FORM_RAW; bytes[1] = 0; return bytes; } #ifdef DO_SMP4 static void ztr_decode_samples_4(ztr_t *z, ztr_chunk_t *chunk, Read *r) { int i, j; int maxTraceVal = 0; TRACE sample; unsigned char *bytes = (unsigned char *)chunk->data; int nbytes = chunk->dlength; bytes+=2; nbytes-=2; /* Store in the Read structure */ r->NPoints = nbytes/8; if (r->traceA) xfree(r->traceA); if (r->traceC) xfree(r->traceC); if (r->traceG) xfree(r->traceG); if (r->traceT) xfree(r->traceT); r->traceA = (TRACE *)xmalloc(r->NPoints * sizeof(TRACE)); r->traceC = (TRACE *)xmalloc(r->NPoints * sizeof(TRACE)); r->traceG = (TRACE *)xmalloc(r->NPoints * sizeof(TRACE)); r->traceT = (TRACE *)xmalloc(r->NPoints * sizeof(TRACE)); for (i = j = 0; i < r->NPoints; i++, j+=2) { sample = (bytes[j] << 8) | bytes[j+1]; r->traceA[i] = sample; if (maxTraceVal < sample) maxTraceVal = sample; } for (i = 0; i < r->NPoints; i++, j+=2) { sample = (bytes[j] << 8) | bytes[j+1]; r->traceC[i] = sample; if (maxTraceVal < sample) maxTraceVal = sample; } for (i = 0; i < r->NPoints; i++, j+=2) { sample = (bytes[j] << 8) | bytes[j+1]; r->traceG[i] = sample; if (maxTraceVal < sample) maxTraceVal = sample; } for (i = 0; i < r->NPoints; i++, j+=2) { sample = (bytes[j] << 8) | bytes[j+1]; r->traceT[i] = sample; if (maxTraceVal < sample) maxTraceVal = sample; } r->maxTraceVal = maxTraceVal; } #else /* Return the [A,C,G,T] samples */ static char *ztr_encode_samples_common(ztr_t *z, char ident[4], Read *r, TRACE *data, int *nbytes, char **mdata, int *mdbytes) { char *bytes; int i, j, t; if (!r->NPoints) return NULL; if (z->header.version_major > 1 || z->header.version_minor >= 2) { /* 1.2 onwards */ char buf[256]; int blen; if (r->baseline) { blen = sprintf(buf, "%d", r->baseline); *mdata = (char *)malloc(16+blen); *mdbytes = sprintf(*mdata, "TYPE%c%.*s%cOFFS%c%s", 0, 4, ident, 0, 0, buf) + 1; } else { *mdata = (char *)malloc(10); *mdbytes = sprintf(*mdata, "TYPE%c%.*s", 0, 4, ident) + 1; } } else { *mdata = (char *)malloc(4); *mdbytes = 4; (*mdata)[0] = ident[0]; (*mdata)[1] = ident[1]; (*mdata)[2] = ident[2]; (*mdata)[3] = ident[3]; } bytes = (char *)xmalloc(r->NPoints * sizeof(TRACE) + 2); for (i = 0, j = 2; i < r->NPoints; i++) { t = data[i]; bytes[j++] = (t >> 8) & 0xff; bytes[j++] = (t >> 0) & 0xff; } *nbytes = r->NPoints * sizeof(TRACE) + 2; bytes[0] = ZTR_FORM_RAW; bytes[1] = 0; return bytes; } static char *ztr_encode_samples_A(ztr_t *z, Read *r, int *nbytes, char **mdata, int *mdbytes) { return ztr_encode_samples_common(z, "A\0\0", r, r->traceA, nbytes, mdata, mdbytes); } static char *ztr_encode_samples_C(ztr_t *z, Read *r, int *nbytes, char **mdata, int *mdbytes) { return ztr_encode_samples_common(z, "C\0\0", r, r->traceC, nbytes, mdata, mdbytes); } static char *ztr_encode_samples_G(ztr_t *z, Read *r, int *nbytes, char **mdata, int *mdbytes) { return ztr_encode_samples_common(z, "G\0\0", r, r->traceG, nbytes, mdata, mdbytes); } static char *ztr_encode_samples_T(ztr_t *z, Read *r, int *nbytes, char **mdata, int *mdbytes) { return ztr_encode_samples_common(z, "T\0\0", r, r->traceT, nbytes, mdata, mdbytes); } #endif /* ARGSUSED */ static void ztr_decode_samples(ztr_t *z, ztr_chunk_t *chunk, Read *r) { int i, j; int maxTraceVal = 0; TRACE sample; unsigned char *bytes = (unsigned char *)chunk->data; int dlen = chunk->dlength; TRACE **lane, *lanex; char *type = ztr_lookup_mdata_value(z, chunk, "TYPE"); if (!type) return; switch(type[0]) { case 'A': lane = &r->traceA; break; case 'C': lane = &r->traceC; break; case 'G': lane = &r->traceG; break; case 'T': lane = &r->traceT; break; default: return; } bytes+=2; dlen-=2; /* Store in the Read structure */ r->NPoints = dlen/2; if (*lane) xfree(*lane); lanex = *lane = (TRACE *)xmalloc(r->NPoints * sizeof(TRACE)); for (i = j = 0; i < r->NPoints; i++, j+=2) { sample = (bytes[j] << 8) | bytes[j+1]; lanex[i] = sample; if (maxTraceVal < sample) maxTraceVal = sample; } if (r->maxTraceVal < maxTraceVal) r->maxTraceVal = maxTraceVal; } /* Encode the the base calls */ static char *ztr_encode_bases(ztr_t *z, Read *r, int *nbytes, char **mdata, int *mdbytes) { char *bytes; if (!r->NBases) return NULL; *mdata = NULL; *mdbytes = 0; bytes = (char *)xmalloc(r->NBases + 1); memcpy(bytes+1, r->base, r->NBases); *nbytes = r->NBases+1; bytes[0] = ZTR_FORM_RAW; return bytes; } static void ztr_decode_bases(ztr_t *z, ztr_chunk_t *chunk, Read *r) { char *bytes = chunk->data; int nbytes = chunk->dlength; nbytes--; bytes++; r->NBases = nbytes; if (r->base) xfree(r->base); r->base = (char *)xmalloc(r->NBases+1); memcpy(r->base, bytes, r->NBases); r->base[r->NBases] = 0; /* Incase there isn't a clip chunk */ r->leftCutoff = 0; r->rightCutoff = r->NBases+1; } /* Encode the base positions as 4 byte values */ static char *ztr_encode_positions(ztr_t *z, Read *r, int *nbytes, char **mdata, int *mdbytes) { char *bytes; int i, j; if ((!r->NPoints && !r->nflows) || !r->basePos || !r->NBases) return NULL; *mdata = NULL; *mdbytes = 0; bytes = (char *)xmalloc(r->NBases * 4 + 4); for (j = 4, i = 0; i < r->NBases; i++) { /* * First 2 bytes are zero as currently r->basePos is 16-bit. * * bytes[j++] = (r->basePos[i] >> 24) & 0xff; * bytes[j++] = (r->basePos[i] >> 16) & 0xff; */ bytes[j++] = 0; bytes[j++] = 0; bytes[j++] = (r->basePos[i] >> 8) & 0xff; bytes[j++] = (r->basePos[i] >> 0) & 0xff; } bytes[0] = ZTR_FORM_RAW; bytes[1] = 0; /* Dummy */ bytes[2] = 0; /* Dummy */ bytes[3] = 0; /* Dummy */ *nbytes = j; return (char *)bytes; } static void ztr_decode_positions(ztr_t *z, ztr_chunk_t *chunk, Read *r) { int i, j; unsigned char *bytes = (unsigned char *)chunk->data; int nbytes = chunk->dlength; bytes+=4; nbytes-=4; r->NBases = nbytes/4; if (r->basePos) xfree(r->basePos); r->basePos = (uint_2 *)xmalloc(r->NBases * sizeof(*r->basePos)); for (i = j = 0; j < nbytes; i++, j += 4) { r->basePos[i] = (bytes[j+0] << 24) + (bytes[j+1] << 16) + (bytes[j+2] << 8) + (bytes[j+3] << 0); } } #if 0 /* Encode the main base confidence (called base) */ static char *ztr_encode_confidence_1(ztr_t *z, Read *r, int *nbytes, char **mdata, int *mdbytes) { char *bytes; int i; /* Check that we have any confidence values first */ if (!r->prob_A || !r->prob_C || !r->prob_G || !r->prob_T) return NULL; *mdata = NULL; *mdbytes = 0; /* Check that they're not all zero - will "normally" be quick */ for (i = 0; i < r->NBases; i++) { if (r->prob_A[i]) break; if (r->prob_C[i]) break; if (r->prob_G[i]) break; if (r->prob_T[i]) break; } if (i == r->NBases) return NULL; /* Memory allocation */ if (NULL == (bytes = xmalloc(r->NBases * sizeof(*bytes) + 1))) return NULL; /* * Encode probs for called bases. * Unknown base => average of prob_A, prob_C, prob_G and prob_T. */ bytes++; for (i = 0; i < r->NBases; i++) { switch (r->base[i]) { case 'A': case 'a': bytes[i] = r->prob_A[i]; break; case 'C': case 'c': bytes[i] = r->prob_C[i]; break; case 'G': case 'g': bytes[i] = r->prob_G[i]; break; case 'T': case 't': bytes[i] = r->prob_T[i]; break; default: bytes[i] = (r->prob_A[i] + r->prob_C[i] + r->prob_G[i] + r->prob_T[i]) / 4; break; } } bytes--; *nbytes = r->NBases + 1; bytes[0] = ZTR_FORM_RAW; return bytes; } #endif static int ztr_decode_confidence_1(ztr_t *z, ztr_chunk_t *chunk, Read *r) { char *bytes = chunk->data; int nbytes = chunk->dlength; int i; bytes++; nbytes--; /* Unpack confidence values; depends on base calls */ if (!r->base) return -1; if (r->prob_A) xfree(r->prob_A); if (r->prob_C) xfree(r->prob_C); if (r->prob_G) xfree(r->prob_G); if (r->prob_T) xfree(r->prob_T); r->prob_A = (char *)xmalloc(r->NBases * sizeof(*r->prob_A)); r->prob_C = (char *)xmalloc(r->NBases * sizeof(*r->prob_C)); r->prob_G = (char *)xmalloc(r->NBases * sizeof(*r->prob_G)); r->prob_T = (char *)xmalloc(r->NBases * sizeof(*r->prob_T)); for (i = 0; i < r->NBases; i++) { switch (r->base[i]) { case 'A': case 'a': r->prob_A[i] = bytes[i]; r->prob_C[i] = 0; r->prob_G[i] = 0; r->prob_T[i] = 0; break; case 'C': case 'c': r->prob_A[i] = 0; r->prob_C[i] = bytes[i]; r->prob_G[i] = 0; r->prob_T[i] = 0; break; case 'G': case 'g': r->prob_A[i] = 0; r->prob_C[i] = 0; r->prob_G[i] = bytes[i]; r->prob_T[i] = 0; break; case 'T': case 't': r->prob_A[i] = 0; r->prob_C[i] = 0; r->prob_G[i] = 0; r->prob_T[i] = bytes[i]; break; default: r->prob_A[i] = bytes[i]; r->prob_C[i] = bytes[i]; r->prob_G[i] = bytes[i]; r->prob_T[i] = bytes[i]; } } return 0; } /* Encode the four main base confidences */ static char *ztr_encode_confidence_4(ztr_t *z, Read *r, int *nbytes, char **mdata, int *mdbytes) { char *bytes; int i, j; /* Check that we have any confidence values first */ if (!r->prob_A || !r->prob_C || !r->prob_G || !r->prob_T) return NULL; *mdata = NULL; *mdbytes = 0; /* Check that they're not all zero - will "normally" be quick */ for (i = 0; i < r->NBases; i++) { if (r->prob_A[i]) break; if (r->prob_C[i]) break; if (r->prob_G[i]) break; if (r->prob_T[i]) break; } if (i == r->NBases) return NULL; /* Memory allocation */ if (NULL == (bytes = xmalloc(4 * r->NBases * sizeof(*bytes) + 1))) return NULL; /* * Encode probs for called bases first * Unknown base = 'T'. */ j = r->NBases; bytes++; for (i = 0; i < r->NBases; i++) { switch (r->base[i]) { case 'A': case 'a': bytes[i ] = r->prob_A[i]; bytes[j++] = r->prob_C[i]; bytes[j++] = r->prob_G[i]; bytes[j++] = r->prob_T[i]; break; case 'C': case 'c': bytes[j++] = r->prob_A[i]; bytes[i ] = r->prob_C[i]; bytes[j++] = r->prob_G[i]; bytes[j++] = r->prob_T[i]; break; case 'G': case 'g': bytes[j++] = r->prob_A[i]; bytes[j++] = r->prob_C[i]; bytes[i ] = r->prob_G[i]; bytes[j++] = r->prob_T[i]; break; default: bytes[j++] = r->prob_A[i]; bytes[j++] = r->prob_C[i]; bytes[j++] = r->prob_G[i]; bytes[i ] = r->prob_T[i]; break; } } bytes--; *nbytes = r->NBases * 4 + 1; bytes[0] = ZTR_FORM_RAW; return bytes; } static int ztr_decode_confidence_4(ztr_t *z, ztr_chunk_t *chunk, Read *r) { char *bytes = chunk->data; int nbytes = chunk->dlength; int i, j; bytes++; nbytes--; /* Unpack confidence values; depends on base calls */ if (!r->base) return -1; if (r->prob_A) xfree(r->prob_A); if (r->prob_C) xfree(r->prob_C); if (r->prob_G) xfree(r->prob_G); if (r->prob_T) xfree(r->prob_T); r->prob_A = (char *)xmalloc(r->NBases * sizeof(*r->prob_A)); r->prob_C = (char *)xmalloc(r->NBases * sizeof(*r->prob_C)); r->prob_G = (char *)xmalloc(r->NBases * sizeof(*r->prob_G)); r->prob_T = (char *)xmalloc(r->NBases * sizeof(*r->prob_T)); j = r->NBases; for (i = 0; i < r->NBases; i++) { switch (r->base[i]) { case 'A': case 'a': r->prob_A[i] = bytes[i]; r->prob_C[i] = bytes[j++]; r->prob_G[i] = bytes[j++]; r->prob_T[i] = bytes[j++]; break; case 'C': case 'c': r->prob_A[i] = bytes[j++]; r->prob_C[i] = bytes[i]; r->prob_G[i] = bytes[j++]; r->prob_T[i] = bytes[j++]; break; case 'G': case 'g': r->prob_A[i] = bytes[j++]; r->prob_C[i] = bytes[j++]; r->prob_G[i] = bytes[i]; r->prob_T[i] = bytes[j++]; break; default: r->prob_A[i] = bytes[j++]; r->prob_C[i] = bytes[j++]; r->prob_G[i] = bytes[j++]; r->prob_T[i] = bytes[i]; break; } } return 0; } /* Encode the textual comments */ static char *ztr_encode_text(ztr_t *z, Read *r, int *nbytes, char **mdata, int *mdbytes) { char *bytes; int len, alen; int ident; int i, j; if (!r->info) return NULL; *mdata = NULL; *mdbytes = 0; /* * traditional Read comments are a single char * of ident=value lines. * The length of ident=valueXident=valueX (X = newline) if the same * as ident0value0ident0value0 (0 = \0), although ztr has * a double \0 as terminator. */ len = strlen(r->info); /* Allocate */ alen = len + 3; bytes = xmalloc(alen); /* Copy */ j = 0; bytes[j++] = ZTR_FORM_RAW; ident = 1; for (i = 0; i < len; i++) { switch (r->info[i]) { case '=': if (ident) { ident = 0; bytes[j++] = 0; } else { bytes[j++] = '='; } break; case '\n': if (ident) { /* Invalid Read info, but we'll carry on anyway. */ if (j && bytes[j-1] != 0) bytes[j++] = 0; else break; } bytes[j++] = 0; ident = 1; break; default: bytes[j++] = r->info[i]; } if (j + 3 > alen) { /* This can happen if we have Read idents without values */ alen += 100; bytes = xrealloc(bytes, alen); } } if (j && bytes[j-1] != 0) bytes[j++] = 0; /* Must end in two nuls */ bytes[j++] = 0; *nbytes = j; return bytes; } static void ztr_decode_text(Read *r, ztr_t *ztr) { int i; int nbytes = 0; char *iptr; /* Find length */ for (i = 0; i < ztr->ntext_segments; i++) { if (ztr->text_segments[i].ident) nbytes += strlen(ztr->text_segments[i].ident); if (ztr->text_segments[i].value) nbytes += strlen(ztr->text_segments[i].value); nbytes += 2; } /* Allocate */ if (r->info) xfree(r->info); r->info = (char *)xmalloc(nbytes+1); /* Convert */ iptr = r->info; for (i = 0; i < ztr->ntext_segments; i++) { if (ztr->text_segments[i].ident && ztr->text_segments[i].value) { int added = sprintf(iptr, "%s=%s\n", ztr->text_segments[i].ident, ztr->text_segments[i].value); iptr += added; } } *iptr = 0; } /* Encode the clip points */ static char *ztr_encode_clips(ztr_t *z, Read *r, int *nbytes, char **mdata, int *mdbytes) { char *bytes; if (!r->NBases) return NULL; if (r->leftCutoff == 0 && r->rightCutoff > r->NBases) return NULL; *mdata = NULL; *mdbytes = 0; /* Allocate */ *nbytes = 9; bytes = xmalloc(9); /* Store */ bytes[1] = (r->leftCutoff >> 24) & 0xff; bytes[2] = (r->leftCutoff >> 16) & 0xff; bytes[3] = (r->leftCutoff >> 8) & 0xff; bytes[4] = (r->leftCutoff >> 0) & 0xff; bytes[5] = (r->rightCutoff >> 24) & 0xff; bytes[6] = (r->rightCutoff >> 16) & 0xff; bytes[7] = (r->rightCutoff >> 8) & 0xff; bytes[8] = (r->rightCutoff >> 0) & 0xff; bytes[0] = ZTR_FORM_RAW; return bytes; } /* ARGSUSED */ static void ztr_decode_clips(ztr_t *z, ztr_chunk_t *chunk, Read *r) { char *bytes = chunk->data; r->leftCutoff = (((unsigned char)bytes[1]) << 24) + (((unsigned char)bytes[2]) << 16) + (((unsigned char)bytes[3]) << 8) + (((unsigned char)bytes[4]) << 0); r->rightCutoff = (((unsigned char)bytes[5]) << 24) + (((unsigned char)bytes[6]) << 16) + (((unsigned char)bytes[7]) << 8) + (((unsigned char)bytes[8]) << 0); } /* ARGSUSED */ static char *ztr_encode_flow_order(ztr_t *z, Read *r, int *nbytes, char **mdata, int *mdbytes) { char *bytes; if (!r->flow_order || !r->nflows) return NULL; bytes = (char *)xmalloc(r->nflows+1); *nbytes = r->nflows+1; bytes[0] = ZTR_FORM_RAW; memcpy(bytes+1, r->flow_order, r->nflows); return bytes; } static void ztr_decode_flow_order(ztr_t *z, ztr_chunk_t *chunk, Read *r) { char *bytes = chunk->data; int nbytes = chunk->dlength; nbytes--; bytes++; r->nflows = nbytes; r->flow_order = (char *)xmalloc(r->nflows+1); memcpy(r->flow_order, bytes, r->nflows); r->flow_order[r->nflows] = 0; } static char *ztr_encode_flow_proc(ztr_t *z, Read *r, int *nbytes, char **mdata, int *mdbytes) { char *bytes; int i, j; float *data; if (!r->flow_order || !r->nflows) return NULL; data = r->flow; /* Meta-data */ if (z->header.version_major > 1 || z->header.version_minor >= 2) { /* 1.2 onwards */ *mdata = (char *)malloc(10); *mdbytes = 10; sprintf(*mdata, "TYPE%cPYNO", 0); } else { *mdata = (char *)malloc(4); *mdbytes = 4; (*mdata)[0] = 'P'; (*mdata)[1] = 'Y'; (*mdata)[2] = 'N'; (*mdata)[3] = 'O'; } /* floats themselves, scaled */ bytes = (char *)xmalloc(r->nflows*2+2); *nbytes = r->nflows*2+2; bytes[0] = ZTR_FORM_RAW; bytes[1] = 0; for (i = 0, j = 2; i < r->nflows; i++) { signed int t = data[i] * 100 + 0.49999; bytes[j++] = (t >> 8) & 0xff; bytes[j++] = (t >> 0) & 0xff; } return bytes; } /* ARGSUSED */ static void ztr_decode_flow_proc(ztr_t *z, ztr_chunk_t *chunk, Read *r) { int i, j; unsigned char *bytes = (unsigned char *)chunk->data; int dlen = chunk->dlength; bytes+=2; dlen-=2; /* Store in the Read structure */ r->nflows = dlen/2; r->flow = (float *)xcalloc(r->nflows, sizeof(float)); for (i = j = 0; i < r->nflows; i++, j+=2) { float sample = ((bytes[j] << 8) | bytes[j+1]) / 100.0; r->flow[i] = sample; } } static char *ztr_encode_flow_raw(ztr_t *z, Read *r, int *nbytes, char **mdata, int *mdbytes) { char *bytes; int i, j; unsigned int *data; if (!r->flow_raw || !r->nflows) return NULL; data = r->flow_raw; /* Meta-data */ if (z->header.version_major > 1 || z->header.version_minor >= 2) { /* 1.2 onwards */ *mdata = (char *)malloc(10); *mdbytes = 10; sprintf(*mdata, "TYPE%cPYRW", 0); } else { *mdata = (char *)malloc(4); *mdbytes = 4; (*mdata)[0] = 'P'; (*mdata)[1] = 'Y'; (*mdata)[2] = 'R'; (*mdata)[3] = 'W'; } /* floats themselves, scaled */ bytes = (char *)xmalloc(r->nflows*2+2); *nbytes = r->nflows*2+2; bytes[0] = ZTR_FORM_RAW; bytes[1] = 0; for (i = 0, j = 2; i < r->nflows; i++) { int t = data[i]; bytes[j++] = (t >> 8) & 0xff; bytes[j++] = (t >> 0) & 0xff; } return bytes; } /* ARGSUSED */ static void ztr_decode_flow_raw(ztr_t *z, ztr_chunk_t *chunk, Read *r) { int i, j; unsigned char *bytes = (unsigned char *)chunk->data; int dlen = chunk->dlength; bytes+=2; dlen-=2; /* Store in the Read structure */ r->nflows = dlen/2; r->flow_raw = (unsigned int *)xcalloc(r->nflows, sizeof(*r->flow_raw)); for (i = j = 0; i < r->nflows; i++, j+=2) { unsigned int sample = (bytes[j] << 8) | bytes[j+1]; r->flow_raw[i] = sample; } } /* * read2ztr * * Converts an io_lib "Read" structure to a ztr_t structure. * * Arguments: * r A pointer to the "Read" structure to convert from * * Returns: * Success: A pointer to the ztr_t struct. * Failure: NULL */ ztr_t *read2ztr(Read *r) { ztr_t *ztr; int i, j, nbytes, mdbytes; char *bytes; char *mdata; int chunk_type[] = { #ifdef DO_SMP4 ZTR_TYPE_SMP4, #else ZTR_TYPE_SAMP, ZTR_TYPE_SAMP, ZTR_TYPE_SAMP, ZTR_TYPE_SAMP, #endif ZTR_TYPE_BASE, ZTR_TYPE_BPOS, ZTR_TYPE_CNF4, ZTR_TYPE_TEXT, ZTR_TYPE_CLIP, ZTR_TYPE_FLWO, ZTR_TYPE_SAMP, ZTR_TYPE_SAMP, }; char *(*chunk_func[])(ztr_t *z, Read *r, int *nbytes, char **mdata, int *mdbytes) = { #ifdef DO_SMP4 ztr_encode_samples_4, #else ztr_encode_samples_A, ztr_encode_samples_C, ztr_encode_samples_G, ztr_encode_samples_T, #endif ztr_encode_bases, ztr_encode_positions, ztr_encode_confidence_4, ztr_encode_text, ztr_encode_clips, ztr_encode_flow_order, ztr_encode_flow_proc, ztr_encode_flow_raw, }; if (NULL == (ztr = new_ztr())) return NULL; /* Create a header record */ memcpy(ztr->header.magic, ZTR_MAGIC, 8); ztr->header.version_major = ZTR_VERSION_MAJOR; ztr->header.version_minor = ZTR_VERSION_MINOR; /* Alloc chunks (max number) */ ztr->nchunks = sizeof(chunk_type)/sizeof(*chunk_type); ztr->chunk = (ztr_chunk_t *)xmalloc(ztr->nchunks * sizeof(ztr_chunk_t)); if (NULL == ztr->chunk) return NULL; /* Create the chunks */ for (j = i = 0; i < ztr->nchunks; i++) { /* char str[5]; */ bytes = chunk_func[i](ztr, r, &nbytes, &mdata, &mdbytes); if (!bytes) continue; /* fprintf(stderr, "block %.4s length %d\n", ZTR_BE2STR(chunk_type[i], str), nbytes); */ ztr->chunk[j].type = chunk_type[i]; ztr->chunk[j].mdlength = mdbytes; ztr->chunk[j].mdata = mdata; ztr->chunk[j].dlength = nbytes; ztr->chunk[j].data = bytes; ztr->chunk[j].ztr_owns = 1; j++; } ztr->nchunks = j; /* * Experiments show that typically a double delta does * better than a single delta for 8-bit data, and the other * way around for 16-bit data */ ztr->delta_level = r->maxTraceVal < 256 ? 2 : 3; return ztr; } /* * ztr2read * * Converts an ztr_t structure to an io_lib "Read" structure. * * Arguments: * ztr A pointer to the ztr structure to convert from * * Returns: * Success: A pointer to the Read struct. * Failure: NULL */ Read *ztr2read(ztr_t *ztr) { Read *r; int i; int done_conf = 0, done_pos = 0; int sections = read_sections(0); /* Allocate */ r = read_allocate(0, 0); if (NULLRead == r) return NULLRead; /* Proces text chunks - makes conversion easier */ if (sections & READ_COMMENTS) { ztr_process_text(ztr); ztr_decode_text(r, ztr); } /* Iterate around each known chunk type turning into the Read elements */ for (i = 0; i < ztr->nchunks; i++) { switch (ztr->chunk[i].type) { case ZTR_TYPE_SMP4: if (sections & READ_SAMPLES) { char *offs = ztr_lookup_mdata_value(ztr, &ztr->chunk[i], "OFFS"); char *type = ztr_lookup_mdata_value(ztr, &ztr->chunk[i], "TYPE"); if (!type || 0 == strcmp(type, "PROC")) { //if (type && 0 == strcmp(type, "SLXI")) { uncompress_chunk(ztr, &ztr->chunk[i]); ztr_decode_samples_4(ztr, &ztr->chunk[i], r); if (offs) r->baseline = atoi(offs); } } break; case ZTR_TYPE_SAMP: if (sections & READ_SAMPLES) { char *type = ztr_lookup_mdata_value(ztr, &ztr->chunk[i], "TYPE"); char *offs = ztr_lookup_mdata_value(ztr, &ztr->chunk[i], "OFFS"); uncompress_chunk(ztr, &ztr->chunk[i]); if (type && 0 == strcmp(type, "PYRW")) ztr_decode_flow_raw(ztr, &ztr->chunk[i], r); else if (type && 0 == strcmp(type, "PYNO")) ztr_decode_flow_proc(ztr, &ztr->chunk[i], r); else if (type && (0 == strcmp(type, "A") || 0 == strcmp(type, "C") || 0 == strcmp(type, "G") || 0 == strcmp(type, "T"))) { ztr_decode_samples(ztr, &ztr->chunk[i], r); if (offs) r->baseline = atoi(offs); } } break; case ZTR_TYPE_BASE: if (sections & READ_BASES) { uncompress_chunk(ztr, &ztr->chunk[i]); ztr_decode_bases(ztr, &ztr->chunk[i], r); } break; case ZTR_TYPE_BPOS: if (sections & READ_BASES) { uncompress_chunk(ztr, &ztr->chunk[i]); ztr_decode_positions(ztr, &ztr->chunk[i], r); done_pos++; } break; case ZTR_TYPE_CNF4: if (sections & READ_BASES) { uncompress_chunk(ztr, &ztr->chunk[i]); ztr_decode_confidence_4(ztr, &ztr->chunk[i], r); done_conf++; } break; case ZTR_TYPE_CNF1: if (sections & READ_BASES) { uncompress_chunk(ztr, &ztr->chunk[i]); ztr_decode_confidence_1(ztr, &ztr->chunk[i], r); done_conf++; } break; case ZTR_TYPE_TEXT: /* Skip - already did this; see ztr_process_text */ break; case ZTR_TYPE_CLIP: if (sections & READ_BASES) { uncompress_chunk(ztr, &ztr->chunk[i]); ztr_decode_clips(ztr, &ztr->chunk[i], r); } break; case ZTR_TYPE_FLWO: if (sections & READ_SAMPLES) { uncompress_chunk(ztr, &ztr->chunk[i]); ztr_decode_flow_order(ztr, &ztr->chunk[i], r); } break; } } /* Handle the case when we have no confidence values */ if (!done_conf && r->NBases > 0) { r->prob_A = (char *)xrealloc(r->prob_A, r->NBases); r->prob_C = (char *)xrealloc(r->prob_C, r->NBases); r->prob_G = (char *)xrealloc(r->prob_G, r->NBases); r->prob_T = (char *)xrealloc(r->prob_T, r->NBases); memset(r->prob_A, 0, r->NBases); memset(r->prob_C, 0, r->NBases); memset(r->prob_G, 0, r->NBases); memset(r->prob_T, 0, r->NBases); } /* Handle the case when we have no BPOS chunk */ if (!done_pos && r->NBases > 0) { r->basePos = (uint_2 *)xrealloc(r->basePos, r->NBases * 2); for (i = 0; i < r->NBases; i++) r->basePos[i] = i; } r->format = TT_ZTR; return r; } io_lib-1.14.6/io_lib/deflate_interlaced.c0000644000031500020650000017541412354177666015211 00000000000000/* * Copyright (c) 2007-2010, 2013 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * This code implements "interlaced deflate", and is *based* on a * simplistic implementation of the Deflate algorithm. * See http://www.ietf.org/rfc/rfc1951.txt for details on the original * Deflate algorithm. * * It differs from RFC1951 in two important ways: * * 1) It only supports the huffman encoding step and does not attempt * to do any LZ-style string matching to generate distance codes. * (These generally do not improve data compression for our desired * use.) * * 2) It optionally allows interleaving of multiple huffman trees for * a single data stream. NB: when multiple codes are used this is * incompatible with RFC1951. * * It has been written here, instead of using zlib, so that we can separate * out the encoding of the huffman tree from the compression of the data * stream into separate memory sections with the intent to optimise * compression of very small blocks of data by sharing one set of frequency * tables (ie huffman tree) with multiple sets of compressed data blocks. * * James Bonfield, 2007 */ #ifdef HAVE_CONFIG_H #include "io_lib_config.h" #endif #define NDEBUG /* disable asserts for production use */ #include #include #include #include #include #include #include #include "io_lib/deflate_interlaced.h" #ifndef MIN # define MIN(a,b) ((a) < (b) ? (a) : (b)) #endif #ifndef MAX # define MAX(a,b) ((a) > (b) ? (a) : (b)) #endif /* #define TEST_MAIN */ /* * --------------------------------------------------------------------------- * Local structs & defines */ /* Used in tree construction only */ typedef struct node { int count; int sym; /* char or SYM_EOF */ struct node *parent; struct node *next; } node_t; #define SYM_EOF 256 static void output_code_set(FILE *fp, huffman_codes_t *codes); static void output_code_set2(FILE *fp, huffman_codes_t *codes); int next_symbol(block_t *in, int *htab); /* * --------------------------------------------------------------------------- * Our standard precomputed tables, for DNA, English text, etc. */ /* DNA */ /* * A 00 * C 01 * G 110 * T 10 * N 1110 * EOF 11110 * ? 11111* */ static huffman_code_t codes_dna[] = { {'A', 2}, {'C', 2}, {'T', 2}, {'G', 3}, {'N', 4}, { 0, 5}, {SYM_EOF, 6}, { 1, 13}, { 2, 13}, { 3, 13}, { 4, 13}, { 5, 13}, { 6, 13}, { 7, 14}, { 8, 14}, { 9, 14}, { 10, 14}, { 11, 14}, { 12, 14}, { 13, 14}, { 14, 14}, { 15, 14}, { 16, 14}, { 17, 14}, { 18, 14}, { 19, 14}, { 20, 14}, { 21, 14}, { 22, 14}, { 23, 14}, { 24, 14}, { 25, 14}, { 26, 14}, { 27, 14}, { 28, 14}, { 29, 14}, { 30, 14}, { 31, 14}, { 32, 14}, { 33, 14}, { 34, 14}, { 35, 14}, { 36, 14}, { 37, 14}, { 38, 14}, { 39, 14}, { 40, 14}, { 41, 14}, { 42, 14}, { 43, 14}, { 44, 14}, { 45, 14}, { 46, 14}, { 47, 14}, {'0', 14}, {'1', 14}, {'2', 14}, {'3', 14}, {'4', 14}, {'5', 14}, {'6', 14}, {'7', 14}, {'8', 14}, {'9', 14}, { 58, 14}, { 59, 14}, { 60, 14}, { 61, 14}, { 62, 14}, { 63, 14}, { 64, 14}, {'B', 14}, {'D', 14}, {'E', 14}, {'F', 14}, {'H', 14}, {'I', 14}, {'J', 14}, {'K', 14}, {'L', 14}, {'M', 14}, {'O', 14}, {'P', 14}, {'Q', 14}, {'R', 14}, {'S', 14}, {'U', 14}, {'V', 14}, {'W', 14}, {'X', 14}, {'Y', 14}, {'Z', 14}, { 91, 14}, { 92, 14}, { 93, 14}, { 94, 14}, { 95, 14}, { 96, 14}, {'a', 14}, {'b', 14}, {'c', 14}, {'d', 14}, {'e', 14}, {'f', 14}, {'g', 14}, {'h', 14}, {'i', 14}, {'j', 14}, {'k', 14}, {'l', 14}, {'m', 14}, {'n', 14}, {'o', 14}, {'p', 14}, {'q', 14}, {'r', 14}, {'s', 14}, {'t', 14}, {'u', 14}, {'v', 14}, {'w', 14}, {'x', 14}, {'y', 14}, {'z', 14}, {123, 14}, {124, 14}, {125, 14}, {126, 14}, {127, 14}, {128, 14}, {129, 14}, {130, 14}, {131, 14}, {132, 14}, {133, 14}, {134, 14}, {135, 14}, {136, 14}, {137, 14}, {138, 14}, {139, 14}, {140, 14}, {141, 14}, {142, 14}, {143, 14}, {144, 14}, {145, 14}, {146, 14}, {147, 14}, {148, 14}, {149, 14}, {150, 14}, {151, 14}, {152, 14}, {153, 14}, {154, 14}, {155, 14}, {156, 14}, {157, 14}, {158, 14}, {159, 14}, {160, 14}, {161, 14}, {162, 14}, {163, 14}, {164, 14}, {165, 14}, {166, 14}, {167, 14}, {168, 14}, {169, 14}, {170, 14}, {171, 14}, {172, 14}, {173, 14}, {174, 14}, {175, 14}, {176, 14}, {177, 14}, {178, 14}, {179, 14}, {180, 14}, {181, 14}, {182, 14}, {183, 14}, {184, 14}, {185, 14}, {186, 14}, {187, 14}, {188, 14}, {189, 14}, {190, 14}, {191, 14}, {192, 14}, {193, 14}, {194, 14}, {195, 14}, {196, 14}, {197, 14}, {198, 14}, {199, 14}, {200, 14}, {201, 14}, {202, 14}, {203, 14}, {204, 14}, {205, 14}, {206, 14}, {207, 14}, {208, 14}, {209, 14}, {210, 14}, {211, 14}, {212, 14}, {213, 14}, {214, 14}, {215, 14}, {216, 14}, {217, 14}, {218, 14}, {219, 14}, {220, 14}, {221, 14}, {222, 14}, {223, 14}, {224, 14}, {225, 14}, {226, 14}, {227, 14}, {228, 14}, {229, 14}, {230, 14}, {231, 14}, {232, 14}, {233, 14}, {234, 14}, {235, 14}, {236, 14}, {237, 14}, {238, 14}, {239, 14}, {240, 14}, {241, 14}, {242, 14}, {243, 14}, {244, 14}, {245, 14}, {246, 14}, {247, 14}, {248, 14}, {249, 14}, {250, 14}, {251, 14}, {252, 14}, {253, 14}, {254, 14}, {255, 14}, }; /* DNA with a few ambiguity codes */ static huffman_code_t codes_dna_ambig[] = { {'A', 2}, {'C', 2}, {'T', 2}, {'G', 3}, {'N', 4}, { 0, 7}, { 45, 7}, {'B', 8}, {'D', 8}, {'H', 8}, {'K', 8}, {'M', 8}, {'R', 8}, {'S', 8}, {'V', 8}, {'W', 8}, {'Y', 8}, {SYM_EOF, 11}, {226, 14}, { 1, 15}, { 2, 15}, { 3, 15}, { 4, 15}, { 5, 15}, { 6, 15}, { 7, 15}, { 8, 15}, { 9, 15}, { 10, 15}, { 11, 15}, { 12, 15}, { 13, 15}, { 14, 15}, { 15, 15}, { 16, 15}, { 17, 15}, { 18, 15}, { 19, 15}, { 20, 15}, { 21, 15}, { 22, 15}, { 23, 15}, { 24, 15}, { 25, 15}, { 26, 15}, { 27, 15}, { 28, 15}, { 29, 15}, { 30, 15}, { 31, 15}, { 32, 15}, { 33, 15}, { 34, 15}, { 35, 15}, { 36, 15}, { 37, 15}, { 38, 15}, { 39, 15}, { 40, 15}, { 41, 15}, { 42, 15}, { 43, 15}, { 44, 15}, { 46, 15}, { 47, 15}, {'0', 15}, {'1', 15}, {'2', 15}, {'3', 15}, {'4', 15}, {'5', 15}, {'6', 15}, {'7', 15}, {'8', 15}, {'9', 15}, { 58, 15}, { 59, 15}, { 60, 15}, { 61, 15}, { 62, 15}, { 63, 15}, { 64, 15}, {'E', 15}, {'F', 15}, {'I', 15}, {'J', 15}, {'L', 15}, {'O', 15}, {'P', 15}, {'Q', 15}, {'U', 15}, {'X', 15}, {'Z', 15}, { 91, 15}, { 92, 15}, { 93, 15}, { 94, 15}, { 95, 15}, { 96, 15}, {'a', 15}, {'b', 15}, {'c', 15}, {'d', 15}, {'e', 15}, {'f', 15}, {'g', 15}, {'h', 15}, {'i', 15}, {'j', 15}, {'k', 15}, {'l', 15}, {'m', 15}, {'n', 15}, {'o', 15}, {'p', 15}, {'q', 15}, {'r', 15}, {'s', 15}, {'t', 15}, {'u', 15}, {'v', 15}, {'w', 15}, {'x', 15}, {'y', 15}, {'z', 15}, {123, 15}, {124, 15}, {125, 15}, {126, 15}, {127, 15}, {128, 15}, {129, 15}, {130, 15}, {131, 15}, {132, 15}, {133, 15}, {134, 15}, {135, 15}, {136, 15}, {137, 15}, {138, 15}, {139, 15}, {140, 15}, {141, 15}, {142, 15}, {143, 15}, {144, 15}, {145, 15}, {146, 15}, {147, 15}, {148, 15}, {149, 15}, {150, 15}, {151, 15}, {152, 15}, {153, 15}, {154, 15}, {155, 15}, {156, 15}, {157, 15}, {158, 15}, {159, 15}, {160, 15}, {161, 15}, {162, 15}, {163, 15}, {164, 15}, {165, 15}, {166, 15}, {167, 15}, {168, 15}, {169, 15}, {170, 15}, {171, 15}, {172, 15}, {173, 15}, {174, 15}, {175, 15}, {176, 15}, {177, 15}, {178, 15}, {179, 15}, {180, 15}, {181, 15}, {182, 15}, {183, 15}, {184, 15}, {185, 15}, {186, 15}, {187, 15}, {188, 15}, {189, 15}, {190, 15}, {191, 15}, {192, 15}, {193, 15}, {194, 15}, {195, 15}, {196, 15}, {197, 15}, {198, 15}, {199, 15}, {200, 15}, {201, 15}, {202, 15}, {203, 15}, {204, 15}, {205, 15}, {206, 15}, {207, 15}, {208, 15}, {209, 15}, {210, 15}, {211, 15}, {212, 15}, {213, 15}, {214, 15}, {215, 15}, {216, 15}, {217, 15}, {218, 15}, {219, 15}, {220, 15}, {221, 15}, {222, 15}, {223, 15}, {224, 15}, {225, 15}, {227, 15}, {228, 15}, {229, 15}, {230, 15}, {231, 15}, {232, 15}, {233, 15}, {234, 15}, {235, 15}, {236, 15}, {237, 15}, {238, 15}, {239, 15}, {240, 15}, {241, 15}, {242, 15}, {243, 15}, {244, 15}, {245, 15}, {246, 15}, {247, 15}, {248, 15}, {249, 15}, {250, 15}, {251, 15}, {252, 15}, {253, 15}, {254, 15}, {255, 15}, }; /* English text */ static huffman_code_t codes_english[] = { { 32, 3}, {'e', 3}, {'a', 4}, {'i', 4}, {'n', 4}, {'o', 4}, {'s', 4}, {'t', 4}, {'d', 5}, {'h', 5}, {'l', 5}, {'r', 5}, {'u', 5}, { 10, 6}, { 13, 6}, { 44, 6}, {'c', 6}, {'f', 6}, {'g', 6}, {'m', 6}, {'p', 6}, {'w', 6}, {'y', 6}, { 46, 7}, {'b', 7}, {'v', 7}, { 34, 8}, {'I', 8}, {'k', 8}, { 45, 9}, {'A', 9}, {'N', 9}, {'T', 9}, { 39, 10}, { 59, 10}, { 63, 10}, {'B', 10}, {'C', 10}, {'E', 10}, {'H', 10}, {'M', 10}, {'S', 10}, {'W', 10}, {'x', 10}, { 33, 11}, {'0', 11}, {'1', 11}, {'F', 11}, {'G', 11}, { 0, 15}, { 1, 15}, { 2, 15}, { 3, 15}, { 4, 15}, { 5, 15}, { 6, 15}, { 7, 15}, { 8, 15}, { 9, 15}, { 11, 15}, { 12, 15}, { 14, 15}, { 15, 15}, { 16, 15}, { 17, 15}, { 18, 15}, { 19, 15}, { 20, 15}, { 21, 15}, { 22, 15}, { 23, 15}, { 24, 15}, { 25, 15}, { 26, 15}, { 27, 15}, { 28, 15}, { 29, 15}, { 30, 15}, { 31, 15}, { 35, 15}, { 36, 15}, { 37, 15}, { 38, 15}, { 40, 15}, { 41, 15}, { 42, 15}, { 43, 15}, { 47, 15}, {'2', 15}, {'3', 15}, {'4', 15}, {'5', 15}, {'6', 15}, {'7', 15}, {'8', 15}, {'9', 15}, { 58, 15}, { 60, 15}, { 61, 15}, { 62, 15}, { 64, 15}, {'D', 15}, {'J', 15}, {'K', 15}, {'L', 15}, {'O', 15}, {'P', 15}, {'Q', 15}, {'R', 15}, {'U', 15}, {'V', 15}, {'X', 15}, {'Y', 15}, {'Z', 15}, { 91, 15}, { 92, 15}, { 93, 15}, { 94, 15}, { 95, 15}, { 96, 15}, {'j', 15}, {'q', 15}, {'z', 15}, {123, 15}, {124, 15}, {125, 15}, {126, 15}, {127, 15}, {128, 15}, {129, 15}, {130, 15}, {131, 15}, {132, 15}, {133, 15}, {134, 15}, {135, 15}, {136, 15}, {137, 15}, {138, 15}, {139, 15}, {140, 15}, {141, 15}, {142, 15}, {143, 15}, {144, 15}, {145, 15}, {146, 15}, {147, 15}, {148, 15}, {149, 15}, {150, 15}, {151, 15}, {152, 15}, {153, 15}, {154, 15}, {155, 15}, {156, 15}, {157, 15}, {158, 15}, {159, 15}, {160, 15}, {161, 15}, {162, 15}, {163, 15}, {164, 15}, {165, 15}, {166, 15}, {167, 15}, {168, 15}, {169, 15}, {170, 15}, {171, 15}, {172, 15}, {173, 15}, {174, 15}, {175, 15}, {176, 15}, {177, 15}, {178, 15}, {179, 15}, {180, 15}, {181, 15}, {182, 15}, {183, 15}, {184, 15}, {185, 15}, {186, 15}, {187, 15}, {188, 15}, {189, 15}, {190, 15}, {191, 15}, {192, 15}, {193, 15}, {194, 15}, {195, 15}, {196, 15}, {197, 15}, {198, 15}, {199, 15}, {200, 15}, {201, 15}, {202, 15}, {203, 15}, {204, 15}, {205, 15}, {206, 15}, {207, 15}, {208, 15}, {209, 15}, {210, 15}, {211, 15}, {212, 15}, {213, 15}, {214, 15}, {215, 15}, {216, 15}, {217, 15}, {218, 15}, {219, 15}, {220, 15}, {221, 15}, {222, 15}, {223, 15}, {224, 15}, {225, 15}, {226, 15}, {227, 15}, {228, 15}, {229, 15}, {230, 15}, {231, 15}, {232, 15}, {233, 15}, {234, 15}, {235, 15}, {236, 15}, {237, 15}, {238, 15}, {239, 15}, {240, 15}, {241, 15}, {242, 15}, {243, 15}, {244, 15}, {245, 15}, {246, 15}, {247, 15}, {248, 15}, {249, 15}, {250, 15}, {251, 15}, {252, 15}, {253, 15}, {254, 15}, {255, 15}, {SYM_EOF, 15}, }; static huffman_codeset_t *static_codeset[NCODES_STATIC]; /* * --------------------------------------------------------------------------- * Block_t structure support */ /* * Allocates and returns a new block_t struct of a specified default size. * A default 'data' pointer may be passed in, in which it must have * been created using malloc(size). Otherwise if data is NULL then * size indicates the amount of memory to allocate. Size maybe zero to * defer allocation. * * Returns newly created block_t* on success * NULL on failure */ block_t *block_create(unsigned char *data, size_t size) { block_t *b = (block_t *)malloc(sizeof(*b)); if (!b) return NULL; b->data = data; b->alloc = size; b->byte = 0; b->bit = 0; if (size && !data && NULL == (b->data = calloc(size, 1))) { free(b); return NULL; } return b; } /* * Deallocates memory created by block_create(). * keep_data is a boolean which if true requests that the data held within * the block should not be deallocated as it is in use elsewhere. */ void block_destroy(block_t *blk, int keep_data) { if (!blk) return; if (!keep_data && blk->data) free(blk->data); free(blk); } /* * Ensures a block_t holds at least 'size' bytes. * Newly allocated data is initialised to zero. * * Returns 0 on success * -1 on failure, leaving block pointing to the existing data */ int block_resize(block_t *blk, size_t size) { unsigned char *newp = NULL; if (!blk) return -1; /* Grow size to next power of 2, if we're growing */ if (size > blk->alloc) { size--; size |= size >> 1; size |= size >> 2; size |= size >> 4; size |= size >> 8; size |= size >> 16; size++; } if (NULL == (newp = realloc(blk->data, size))) return -1; else blk->data = newp; if (size > blk->alloc) memset(&blk->data[blk->alloc], 0, size - blk->alloc); blk->alloc = size; return 0; } /* * --------------------------------------------------------------------------- * Tree building and code generation functions */ /* * Reverses the order of bits in the bottom nbits of val. * Returns the bit-reverse value. */ unsigned int bit_reverse(unsigned int val, int nbits) { unsigned int new = 0, i; for (i = 0; i < nbits; i++) { new = (new << 1) | (val & 1); val >>= 1; } return new; } /* * Generates canonical huffman codes given a set of symbol bit lengths. * The results are stored within the supplied huffman_codes_t struct. * * Returns 0 on success * -1 on failure */ static int canonical_codes(huffman_codes_t *c) { int i, j; unsigned int code, last_len; int clens[33]; int offs[33]; huffman_code_t ctmp[258]; signed int symtab[258]; /* Sort by bit-length, subfield symbol - much faster than qsort() */ for (i = 0; i < 258; i++) symtab[i] = -1; for (i = 0; i < c->ncodes; i++) symtab[c->codes[i].symbol] = i; for (i = 0; i <= 32; i++) offs[i] = clens[i] = 0; for (i = 0; i < c->ncodes; i++) clens[c->codes[i].nbits]++; for (i = 1; i <= 32; i++) offs[i] = offs[i-1] + clens[i-1]; for (i = 0; i < 258; i++) { if (symtab[i] != -1) ctmp[offs[c->codes[symtab[i]].nbits]++] = c->codes[symtab[i]]; } memcpy(c->codes, ctmp, c->ncodes * sizeof(huffman_code_t)); /* * Force all codes to be <= max_code_len. This is needed due to the * 15-bit length limitation of Deflate literal codes and the 7-bit * limit of the code bit-length table. */ /* Find first point of failure */ for (i = 0; i < c->ncodes; i++) { if (c->codes[i].nbits > c->max_code_len) break; } /* * From here on we shrink the length of the current code by increasing * the length of an earlier symbol, at last_code. */ if (i != c->ncodes) { int delta = 0; /* fprintf(stderr, "=== REORDERING %d ===\n", c->code_set); output_code_set(stderr, c); output_code_set2(stderr, c); */ for (; i < c->ncodes; i++) { int k, cur_len; c->codes[i].nbits -= delta; if (c->codes[i].nbits <= c->max_code_len) continue; for (j = i; j >= 0 && c->codes[j].nbits >= c->max_code_len; j--) ; if (j < 0) { fprintf(stderr, "Too many symbols to fit in bit-length requirements\n"); fprintf(stderr, "=== FAILING ===\n"); output_code_set(stderr, c); output_code_set2(stderr, c); abort(); } /* fprintf(stderr, "Changing code %d/%d to len %d\n", c->codes[i].symbol, c->codes[j].symbol, c->codes[j].nbits+1); */ cur_len = c->codes[i].nbits; c->codes[i].nbits = ++c->codes[j].nbits; /* * Shrink the next code by one, or if none at that bit-length * the next 2, and so on */ delta = 1; for (k = i+1; delta && k < c->ncodes; k++) { while (c->codes[k].nbits > cur_len) { delta *= 2; cur_len++; } c->codes[k].nbits--; delta--; } assert(delta == 0); } /* fprintf(stderr, "=== REORDERED TO %d ===\n", c->code_set); output_code_set(stderr, c); output_code_set2(stderr, c); */ /* Ordering is shot - regenerate via brute force way */ return canonical_codes(c); } /* Generate codes */ code = last_len = 0; /* stop warning */ for (i = 0; i < c->ncodes; i++) { int nbits = c->codes[i].nbits; if (i == 0) { code = 0; last_len = nbits; } else { code++; } if (nbits > last_len) { code <<= (nbits - last_len); last_len = nbits; } c->codes[i].code = bit_reverse(code, nbits); } /* Reindex so the symbol is the primary index into codes */ for (i = 0; i <= 257; i++) { c->lookup[i].nbits = 0; } for (i = 0; i < c->ncodes; i++) { c->lookup[c->codes[i].symbol] = c->codes[i]; } return 0; } static int node_compar2(const void *vp1, const void *vp2) { const node_t *n1 = *(const node_t **)vp1; const node_t *n2 = *(const node_t **)vp2; /* * The sort order is vital here. This needs to return the same collating * order on all systems so that differing qsort() functions will not * swap around symbols with the same bit lengths, hence we sort by both * fields to force a unique stable ordering. */ if (n1->count != n2->count) return n1->count - n2->count; else return n2->sym - n1->sym; } /* * Computes the huffman bit-lengths for a data set. We don't care * about the actual tree, just how deep the symbols end up. * * Huffman trees are constructed by constructing a set of nodes * initially containing the symbol and it's frequency. We then merge * the two least used nodes to produce a new node with a combined * frequency. Repeat until one root node is left. * * data/len is the input data to analyse. * * 'eof' is a boolean to indicate whether the EOF symbol should be included * in the symbols produced. * * all_codes is a boolean to indicate whether we should include symbols not * found in the input data set. (This was used to create the static lookup * tables.) * * Returns huffman_codes_t* on success * NULL on failure */ huffman_codes_t *calc_bit_lengths(unsigned char *data, int len, int eof, int max_code_len, int all_codes, int start, int skip) { int i, ncodes; node_t nodes[258+257], *head, *new = &nodes[258]; node_t *n2[258+257]; huffman_codes_t *c; int hist[256]; if (NULL == (c = (huffman_codes_t *)malloc(sizeof(*c)))) return NULL; c->codes_static = 0; c->max_code_len = max_code_len; /* Count frequencies of symbols */ memset(hist, 0, 256*sizeof(*hist)); /* Calc freqs */ for (i = start; i < len; i+=skip) { hist[data[i]]++; } /* * Initialise nodes. We build a map of ASCII character code to node * number. (By default it's a simple 1:1 mapping unless legal_chars is * defined.) */ ncodes = 0; if (eof) { nodes[ncodes].sym = SYM_EOF; nodes[ncodes].count = eof; nodes[ncodes].parent = NULL; n2[ncodes] = &nodes[ncodes]; ncodes++; } /* All 256 chars existing at a minimal level */ if (all_codes) { for (i = 0; i < 256; i++) { nodes[ncodes].sym = i; nodes[ncodes].count = hist[i]; nodes[ncodes].parent = NULL; n2[ncodes] = &nodes[ncodes]; ncodes++; } } else { /* Only include non-zero symbols */ for (i = 0; i < 256; i++) { if (hist[i] == 0) continue; nodes[ncodes].sym = i; nodes[ncodes].count = hist[i]; nodes[ncodes].parent = NULL; n2[ncodes] = &nodes[ncodes]; ncodes++; } } /* Sort by counts, smallest first and form a sorted linked list */ qsort(n2, ncodes, sizeof(*n2), node_compar2); /* Skip symbols that do not occur, unless all_codes is true */ for (i = 0; i < ncodes; i++) { n2[i]->next = i+1 < ncodes ? n2[i+1] : NULL; } /* Repeatedly merge two smallest values */ head = n2[0]; while (head && head->next) { node_t *after = head->next, *n; int sum = head->count + head->next->count; for (n = head->next->next; n; after = n, n = n->next) { if (sum < n->count) break; } /* Produce a new summation node and link it in place */ after->next = new; new->next = n; new->sym = '?'; new->count = sum; new->parent = NULL; head->parent = new; head->next->parent = new; head = head->next->next; new++; } /* Walk up tree computing the bit-lengths for our symbols */ c->ncodes = ncodes; c->codes = (huffman_code_t *)malloc(c->ncodes * sizeof(*c->codes)); if (NULL == c->codes) { free(c); return NULL; } for (i = 0; i < ncodes; i++) { int len = 0; node_t *n; for (n = n2[i]->parent; n; n = n->parent) { len++; } c->codes[i].symbol = n2[i]->sym; c->codes[i].freq = n2[i]->count; c->codes[i].nbits = len ? len : 1; /* special case, nul input */ } if (0 != canonical_codes(c)) { free(c); return NULL; } return c; } /* * A special case of the generate_code_set() function below, but for * creating predefined code sets from bit-length arrays. Useful for * code that wants to use a predetermined huffman tree. * * * Returns huffman_codes_t* on success; free using huffman_codes_destroy(). * NULL on failure. */ huffman_codeset_t *codes2codeset(huffman_code_t *codes, int ncodes, int code_num) { huffman_codeset_t *cs; huffman_codes_t *c; if (NULL == (cs = (huffman_codeset_t *)malloc(sizeof(*cs)))) return NULL; if (NULL == (c = (huffman_codes_t *)malloc(sizeof(*c)))) return NULL; cs->codes = (huffman_codes_t **)malloc(sizeof(*cs->codes)); cs->codes[0] = c; cs->ncodes = 1; cs->code_set = code_num; cs->blk = NULL; cs->bit_num = 0; cs->decode_t = NULL; cs->decode_J4 = NULL; c->codes_static = 1; c->max_code_len = MAX_CODE_LEN; c->codes = codes; c->ncodes = ncodes; cs->bit_num = 0; /* FIXME: need to know this */ canonical_codes(c); return cs; } /* * Initialises and returns a huffman_codes_t struct from a specified code_set. * If code_set is not one of the standard predefined values then the * input data is analysed using calc_bit_lengths() above to produce the * optimal set of huffman codes, otherwise we return predefined values. * * 'eof' is a boolean to indicate whether the EOF symbol should be included * in the symbols produced. * * all_codes is a boolean to indicate whether we should include symbols not * found in the input data set. (This was used to create the static lookup * tables.) * * Returns huffman_codes_t* on success; free using huffman_codes_destroy(). * NULL on failure. */ huffman_codeset_t *generate_code_set(int code_set, int ncodes, unsigned char *data, int len, int eof, int max_code_len, int all_codes) { huffman_codeset_t *cs; /* * Either INLINE or a CODE_USER+ set of codes. * => analyse the data and compute a new set of bit-lengths & codes. */ if (code_set >= 128 || code_set == CODE_INLINE) { int i; if (NULL == (cs = (huffman_codeset_t *)malloc(sizeof(*cs)))) return NULL; cs->code_set = code_set; cs->ncodes = ncodes; cs->codes = (huffman_codes_t **)malloc(cs->ncodes*sizeof(*cs->codes)); cs->blk = NULL; cs->bit_num = 0; cs->decode_t = NULL; cs->decode_J4 = NULL; for (i = 0; i < ncodes; i++) { /* * If requested, include EOF all code sets, but at a * frequency of only '1' occurrance where we predict it * not to be needed. */ if (eof && (len+i)%ncodes) eof = 1; cs->codes[i] = calc_bit_lengths(data, len, eof, max_code_len, all_codes, i, ncodes); cs->codes[i]->codes_static = 0; if (NULL == cs->codes[i]) { /* FIXME: tidy up */ return NULL; } canonical_codes(cs->codes[i]); } /* * Otherwise we use the determined codes at the top of this file, such * as codes_dna and codes_english. */ } else { if (code_set < 1 || code_set >= NCODES_STATIC) { fprintf(stderr, "Unknown huffman code set '%d'\n", code_set); return NULL; } /* If our global codeset hasn't been initialised yet, do so */ if (!static_codeset[code_set]) { huffman_codes_t *c = (huffman_codes_t *)malloc(sizeof(*c)); if (NULL == (cs = (huffman_codeset_t *)malloc(sizeof(*cs)))) return NULL; cs->codes = (huffman_codes_t **)malloc(sizeof(*cs->codes)); cs->codes[0] = c; cs->ncodes = 1; cs->code_set = code_set; cs->blk = NULL; cs->bit_num = 0; cs->decode_t = NULL; cs->decode_J4 = NULL; c->codes_static = 1; c->max_code_len = MAX_CODE_LEN; switch(code_set) { case CODE_DNA: c->codes = codes_dna; c->ncodes = sizeof(codes_dna)/sizeof(*c->codes); cs->bit_num = 5; break; case CODE_DNA_AMBIG: c->codes = codes_dna_ambig; c->ncodes = sizeof(codes_dna_ambig)/sizeof(*c->codes); cs->bit_num = 1; break; case CODE_ENGLISH: c->codes = codes_english; c->ncodes = sizeof(codes_english)/sizeof(*c->codes); cs->bit_num = 1; break; default: fprintf(stderr, "Unknown huffman code set '%d'\n", code_set); return NULL; } canonical_codes(c); static_codeset[code_set] = cs; } cs = static_codeset[code_set]; } return cs; } void huffman_codes_destroy(huffman_codes_t *c) { if (!c) return; if (!c->codes_static && c->codes) free(c->codes); free(c); } void huffman_codeset_destroy(huffman_codeset_t *cs) { int i; if (!cs) return; /* If this codeset is one of the predefined global ones we do nothing */ if (cs->ncodes == 1 && cs->codes[0]->codes_static) return; for (i = 0; i < cs->ncodes; i++) huffman_codes_destroy(cs->codes[i]); if (cs->codes) free(cs->codes); if (cs->blk) block_destroy(cs->blk, 0); if (cs->decode_t) free(cs->decode_t); if (cs->decode_J4) free(cs->decode_J4); free(cs); } /* * --------------------------------------------------------------------------- * Encoding and decoding related functions */ /* * Can store up to 24-bits worth of data encoded in an integer value * Possibly we'd want to have a less optimal store_bits function when dealing * with nbits > 24, but for now we assume the codes generated are never * that big. (Given this is only possible with 121392 or more * characters with exactly the correct frequency distribution we check * for it elsewhere.) */ static void store_bits(block_t *block, unsigned int val, int nbits) { /* fprintf(stderr, " store_bits: %02x %d\n", val, nbits); */ #if 1 { unsigned int curr = block->data[block->byte]; curr |= (val & ((1 << nbits)-1)) << block->bit; block->bit += nbits; while (block->bit >= 8) { block->data[block->byte++] = curr & 0xff; curr >>= 8; block->bit -= 8; } block->data[block->byte] = curr & 0xff; } return; #else { /* Slow, but simple */ unsigned int mask = 1; int bit = 1 << block->bit; do { if (val & mask) block->data[block->byte] |= bit; /* * Data should be zeroed anyway, so this is not needed. * * else * block->data[block->byte] &= ~bit; */ if (++block->bit == 8) { block->bit = 0; block->byte++; block->data[block->byte] = 0; bit = 1; } else { bit <<= 1; } mask <<= 1; } while(--nbits); } #endif } /* * Reads up to 24-bits worth of data and returns. Updates the block * byte and bit values to indicate the current 'read' position. * * Returns unsigned value on success (>=0) * -1 on failure */ static signed int get_bits(block_t *block, int nbits) { unsigned int val, bnum = 0; if (block->byte*8 + block->bit + nbits > block->alloc * 8) return -1; /* Fetch the partial byte of data */ val = (block->data[block->byte]) >> block->bit; bnum = 8 - block->bit; /* And additional entire bytes worth as required */ while (bnum <= nbits) { val |= block->data[++block->byte] << bnum; bnum += 8; } block->bit = (block->bit + nbits) % 8; return val & ((1 << nbits) - 1); } /* stores nbytes bytes, padding to align on the next byte boundary */ void store_bytes(block_t *block, unsigned char *val, int nbytes) { /* Align */ if (block->bit != 0) { block->byte++; block->bit = 0; } /* Resize */ block_resize(block, block->byte + nbytes + 1); /* Store */ memcpy(&block->data[block->byte], val, nbytes); block->byte += nbytes; } /* * Encodes the huffman symbol bit-lengths as a serialised block of data * suitable for storing in a ZTR "ZLBH" chunk. This uses the Deflate * storage format defined in RFC1951. * * Returns: 0 on success * -1 on failure */ int store_codes_single(block_t *out, huffman_codes_t *c) { int i; unsigned char bl_code[257]; /* bit-length codes and for codes 16-18 */ unsigned char bl_opt[257]; /* the operand to the blcode */ unsigned char sorted_codes[258]; int bl_freq[19]; /* frequency of bit-length codes produced */ int bl_count; huffman_codes_t *bl_cds = NULL; int hclen_order[] = { 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 }; int hlit, hdist, hclen, hcmap[19]; /* output_code_set (stderr, c); */ if (out->alloc < out->byte + 1000) { out->alloc = out->byte + 1000; if (NULL == (out->data = realloc(out->data, out->alloc))) return -1; } /* *----------------------------------------------------------------- * Reformat the dynamic code bit-lengths into an alphabet of 19 * "code length" symbols as defined in RFC1951. */ memset(sorted_codes, 0, 258); for (i = 0; i < c->ncodes; i++) { sorted_codes[c->codes[i].symbol] = c->codes[i].nbits; } for (i = 0; i < 19; i++) bl_freq[i] = 0; bl_count = 0; for (i = 0; i < 257; ) { int j = i+1, n; int v = sorted_codes[i]; while (j < 257 && sorted_codes[j] == v) j++; n = j-i; /* n = run-length */ /* fprintf(stderr, "value=%d, run_len=%d\n", v, n); */ if (v == 0) { /* bit-len zero => no code and uses code 17/18 for run len */ while (n > 0) { while (n >= 11) { bl_freq[18]++; bl_code[bl_count] = 18; bl_opt[bl_count] = MIN(n, 138)-11; n -= bl_opt[bl_count]+11; bl_count++; } while (n >= 3) { bl_freq[17]++; bl_code[bl_count] = 17; bl_opt[bl_count] = MIN(n, 10)-3; n -= bl_opt[bl_count]+3; bl_count++; } switch (n) { case 2: bl_code[bl_count++] = 0; bl_freq[0]++; n--; case 1: bl_code[bl_count++] = 0; bl_freq[0]++; n--; } } } else if (v <= 15) { /* non-zero code, uses code 16 for run-len */ if (n >= 4) { bl_freq[v]++; bl_code[bl_count++] = v; n--; while (n >= 3) { bl_freq[16]++; bl_code[bl_count] = 16; bl_opt[bl_count] = MIN(n, 6)-3; n -= bl_opt[bl_count]+3; bl_count++; } } switch(n) { case 3: bl_code[bl_count++] = v; bl_freq[v]++; n--; case 2: bl_code[bl_count++] = v; bl_freq[v]++; n--; case 1: bl_code[bl_count++] = v; bl_freq[v]++; n--; } } else { fprintf(stderr, "Unsupported code length: %d\n", v); } i = j; } hlit = 257; /* Add a single distance code of zero bits. This means that there * are no distance codes used at all. */ bl_code[bl_count++] = 0; bl_freq[0]++; hdist = 1; /* Produce new huffman codes for our code-length symbols. */ bl_cds = calc_bit_lengths(bl_code, bl_count, 0, 7, 0, 0, 1); /* output_code_set (stderr, bl_cds); */ /* *----------------------------------------------------------------- * Output the "code length" bit-lengths, 3 bits at a time. * * Compute how many HCLEN code length values we need, using the * predefined order in the RFC. */ for (hclen = 19; hclen > 0; hclen--) { if (bl_freq[hclen_order[hclen-1]]) break; } store_bits(out, hlit-257, 5); store_bits(out, hdist-1, 5); store_bits(out, hclen-4, 4); for (i = 0; i < 19; i++) hcmap[i] = -1; for (i = 0; i < bl_cds->ncodes; i++) hcmap[bl_cds->codes[i].symbol] = i; for (i = 0; i < hclen; i++) { if (hcmap[hclen_order[i]] >= 0) { store_bits(out, bl_cds->codes[hcmap[hclen_order[i]]].nbits, 3); } else { store_bits(out, 0, 3); } } /* *---------------------------------------------------------------- * Finally output the original bit-lengths using the code-len codes. */ for (i = 0; i < bl_count; i++) { huffman_code_t *c = &bl_cds->codes[hcmap[bl_code[i]]]; store_bits(out, c->code, c->nbits); /* fprintf(stderr, "bl_code %d (opt %d), code %d/%d\n", bl_code[i], bl_opt[i], c->code, c->nbits); */ switch(bl_code[i]) { case 18: store_bits(out, bl_opt[i], 7); break; case 17: store_bits(out, bl_opt[i], 3); break; case 16: store_bits(out, bl_opt[i], 2); break; } } huffman_codes_destroy(bl_cds); return 0; } /* * A wrapper around store_codes_single to output either a single or multiple * huffman codes to a block. * * This also creates a new block and fills out the block header appropriately. * * Returns 0 on success * -1 on failure */ int store_codes(block_t *out, huffman_codeset_t *cs, int last_block) { int i; if (out->alloc < out->byte + 1000) { out->alloc = out->byte + 1000; if (NULL == (out->data = realloc(out->data, out->alloc))) return -1; } /* Header details */ store_bits(out, last_block != 0, 1); /* last block */ if (cs->ncodes == 1) { store_bits(out, 2, 2); /* dynamic huffman */ } else { int nbits = 0; store_bits(out, 3, 2); /* multiple tree dynamic huffman */ while (1<ncodes-1) nbits++; store_bits(out, nbits-1, 4); store_bits(out, cs->ncodes-1, nbits); } for (i = 0; i < cs->ncodes; i++) { if (-1 == store_codes_single(out, cs->codes[i])) return -1; } return 0; } /* * This is the opposite of the store_codes() function. It loads generates * huffman_codes_t structs from the a serialised data stream as presented * in the above format. * * The input data is the data-string. On return the number of bytes * consumed will be returned in *len_used (if non NULL). * This is to allow stripping off of the huffman codes from a longer * array of data (ie probably followed by the STHUFF encoded chunk * itself). * * Returns: malloced huffman_codes_t structure on success. * NULL on failure. */ huffman_codes_t *restore_codes_single(block_t *block) { int hlit, hdist, hclen; int hclen_order[19] = { 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 }; int hc_bitlen[19], i; huffman_codes_t *bl_cds, *cds; int sym, sym_val, last_len; int htab[256]; hlit = get_bits(block, 5)+257; hdist = get_bits(block, 5)+1; hclen = get_bits(block, 4)+4; /* fprintf(stderr, "bfinal = %d, btype=%d\n", *bfinal, btype); fprintf(stderr, "hlit=0x%x, hdist=0x%x, hclen=0x%x\n", hlit, hdist, hclen); */ /* Read HCLEN code-lengths and construct huffman codes from them */ for (i = 0; i < hclen; i++) hc_bitlen[hclen_order[i]] = get_bits(block, 3); for (; i < 19; i++) hc_bitlen[hclen_order[i]] = 0; bl_cds = (huffman_codes_t *)malloc(sizeof(*bl_cds)); bl_cds->codes_static = 0; bl_cds->ncodes = 0; bl_cds->codes = (huffman_code_t *)malloc(19 * sizeof(*bl_cds->codes)); bl_cds->max_code_len = 7; for (i = 0; i < 19; i++) { if (hc_bitlen[i]) { bl_cds->codes[bl_cds->ncodes].symbol = i; bl_cds->codes[bl_cds->ncodes].nbits = hc_bitlen[i]; bl_cds->ncodes++; } } canonical_codes(bl_cds); /* output_code_set (stderr, bl_cds); */ /* Build a lookup table of possible codes to symbols */ for (i = 0; i < 256; i++) htab[i] = -1; for (i = 0; i < bl_cds->ncodes; i++) { htab[bit_reverse(bl_cds->codes[i].code, bl_cds->codes[i].nbits) | (1<codes[i].nbits)] = bl_cds->codes[i].symbol; } /* Now decode the next HLIT literal codes using bl_cds */ cds = (huffman_codes_t *)malloc(sizeof(*cds)); cds->codes_static = 0; cds->ncodes = 0; cds->codes = (huffman_code_t *)malloc(257 * sizeof(*cds->codes)); cds->max_code_len = 15; sym_val = last_len = 0; while ((sym = next_symbol(block, htab)) != -1) { int count; /* fprintf(stderr, "LIT Sym=%d\n", sym); */ switch(sym) { case 16: count = get_bits(block, 2) + 3; /* fprintf(stderr, " +%d\n", count); */ for (i = 0; i < count; i++) { cds->codes[cds->ncodes].symbol = sym_val++; cds->codes[cds->ncodes++].nbits = last_len; } break; case 17: count = get_bits(block, 3) + 3; /* fprintf(stderr, " +%d\n", count); */ sym_val += count; last_len = 0; break; case 18: count = get_bits(block, 7) + 11; /* fprintf(stderr, " +%d\n", count); */ sym_val += count; last_len = 0; break; case 0: sym_val++; last_len = 0; break; default: cds->codes[cds->ncodes].symbol = sym_val++; last_len = cds->codes[cds->ncodes++].nbits = sym; } if (sym_val >= hlit) break; } assert(sym != -1); assert(cds->ncodes <= 257); /* Skip HDIST codes. Hopefully only 1 of zero length */ sym_val = 0; while ((sym = next_symbol(block, htab)) != -1) { /* fprintf(stderr, "DIST Sym=%d\n", sym); */ switch(sym) { case 16: sym_val += get_bits(block, 2) + 3; break; case 17: sym_val += get_bits(block, 3) + 3; break; case 18: sym_val += get_bits(block, 7) + 11; break; default: sym_val++; } if (sym_val >= hdist) break; } assert(sym != -1); huffman_codes_destroy(bl_cds); canonical_codes(cds); /* output_code_set(stderr, cds); */ return cds; } huffman_codeset_t *restore_codes(block_t *block, int *bfinal) { int btype; huffman_codeset_t *cs; /* Header details */ if (bfinal) *bfinal = get_bits(block, 1); else get_bits(block, 1); btype = get_bits(block, 2); cs = (huffman_codeset_t *)malloc(sizeof(*cs)); cs->code_set = 0; cs->blk = NULL; cs->bit_num = 0; cs->decode_t = NULL; cs->decode_J4 = NULL; if (btype == 2) { /* Standard Deflate algorithm */ cs->ncodes = 1; cs->codes = (huffman_codes_t **)malloc(cs->ncodes*sizeof(*cs->codes)); cs->codes[0] = restore_codes_single(block); } else if (btype == 3) { /* Deflate extension - multiple codes */ int nbits, i; nbits = get_bits(block, 4) + 1; cs->ncodes = get_bits(block, nbits) + 1; cs->codes = (huffman_codes_t **)malloc(cs->ncodes*sizeof(*cs->codes)); for (i = 0; i < cs->ncodes; i++) { cs->codes[i] = restore_codes_single(block); } } else { fprintf(stderr, "restore_codes() only implemented for " "BTYPE == DYNAMIC HUFFMAN and INTERLACED HUFFMAN\n"); return NULL; } cs->bit_num = block->bit; return cs; } /* * Given a multiple sets of huffman codes and a block of data this * compresses and returns the data block. It iterates around each set * of huffman codes in a cyclic fashion encoding each byte with the * appropriate huffman codes. * * Returns: 0 on success * -1 on failure */ int huffman_multi_encode(block_t *blk, huffman_codeset_t *cs, int code_set, unsigned char *data, int len) { int i, nc; huffman_code_t *lookup; huffman_codes_t **c; if (!cs) { /* No codes known, so derive our own */ fprintf(stderr, "FIXME: use generate_code_set() to build our own codes here\n"); return -1; } else { c = cs->codes; nc = cs->ncodes; } /* * The maximum size to encode len bytes is < 9 bits per symbol * (not quite 8 due to an EOF symbol) plus the overhead of the bit-length * tree. That in turn, with alternating 8/9 bit-lengths would max out * as 258*8 + 5+5+4 + 19*3 + 258*5 bits (429 bytes), but in practice * I'm not even sure if it's possible to construct such a set of code * lengths that would compress that poor. * * This of course assumes we're using appropriate compression codes. * Given a user may give a completely inappropriate code we have to * assume every symbol is actually 15 bits instead of < 9 on average. * * We ensure blk here is large enough for the worst case scenario so we * don't incur overheads in store_bits(). */ if (blk->alloc <= 429 + 2*len + 2 + blk->byte) { blk->alloc = 429 + 2*len + 2 + blk->byte; blk->data = realloc(blk->data, blk->alloc); if (!blk->data) return -1; } /* * Splitting this special case out is worth it as it's approx 30% faster. * Also note that the nc > 1 case is faster with a separate counter and * test than using modulus (by a factor of 2). It could be sped up further * for powers of 2 using bitwise AND, but the difference is not huge. */ if (nc == 1) { lookup = c[0]->lookup; for (i = 0; i < len; i++) { assert(lookup[data[i]].nbits > 0); store_bits(blk, lookup[data[i]].code, lookup[data[i]].nbits); } } else { int count = 0; for (i = 0; i < len; i++) { lookup = c[count]->lookup; assert(lookup[data[i]].nbits > 0); store_bits(blk, lookup[data[i]].code, lookup[data[i]].nbits); if (++count == nc) count = 0; } } lookup = c[i%nc]->lookup; store_bits(blk, lookup[SYM_EOF].code, lookup[SYM_EOF].nbits); assert(blk->alloc > blk->byte); /* We probably massively overallocated, so return some of it back */ blk->data = realloc(blk->data, blk->byte+1); blk->alloc = blk->byte+1; return 0; } /* * The opposite of huffman_encode(). * Decode a huffman stream from 'block' using huffman codes 'c'. * * Returns: allocated block_t pointer on success * NULL on failure. * * Method 1 * -------- * * At any node in our tree we can precompute a lookup table so that upon * reading the next 'k' bits we know the new node we'd end up in and what * symbols to export. * Then decoding simply works in fixed sets of k bits at a time. * * We use k=4 for efficient table space (they fit neatly in cache) and ease * of decoding 4-bits at a time. k=8 is about 20% faster as reading the input * byte by byte is easy, but the setup time is substantially longer * (16x at a guess) and the lookup tables no longer fit in the L1 cache. */ block_t *huffman_decode(block_t *in, huffman_codes_t *c) { block_t *out; htree_t t[513]; /* number of internal nodes */ int i, j, n; int new_node, node_num; h_jump4_t J4[513][16]; unsigned char *cp; if (NULL == (out = block_create(NULL, 8*in->alloc+8))) { block_destroy(in, 0); return NULL; } /* Construct the tree from the codes */ new_node = 1; t[0].l[0] = t[0].l[1] = -1; t[0].c[0] = t[0].c[1] = 0; for (i = 0; i < c->ncodes; i++) { int n = 0; unsigned int v = c->codes[i].code; for (j = 0; j < c->codes[i].nbits-1; j++) { int b = v & 1; if (t[n].c[b]) { n = t[n].c[b]; } else { n = (t[n].c[b] = new_node++); t[n].c[0] = t[n].c[1] = 0; t[n].l[0] = t[n].l[1] = -1; } v >>= 1; } /* last bit */ t[n].l[v & 1] = c->codes[i].symbol; } /* Build the 16 wide lookup table per node */ for (n = 0; n < new_node; n++) { for (j = 0; j < 16; j++) { unsigned int v = j; int n2 = n; h_jump4_t *hj = &J4[n][j]; hj->nsymbols = 0; hj->top_bit = 0; for (i = 0; i < 4; i++) { int b = v & 1; if (t[n2].l[b] >= 0) { hj->symbol[hj->nsymbols++] = t[n2].l[b]; if (t[n2].l[b] == SYM_EOF) if (!hj->top_bit) hj->top_bit |= 1 << (hj->nsymbols-1); } n2 = t[n2].c[b]; v >>= 1; } hj->jump = n2; } } #if 0 /* Debug output */ for (n = 0; n < new_node; n++) { printf("Node %d, c[]={%d,%d}, l[]={%d,%d}\n", n, t[n].c[0], t[n].c[1], t[n].l[0], t[n].l[1]); for (i = 0; i < 256; i++) { printf("\t%02x %s =>%02d, ", i, print_8rev(i), J4[n][i].jump); for (k = 0; k < J4[n][i].nsymbols; k++) { if (isprint(J4[n][i].symbol[k])) printf(" '%c'", J4[n][i].symbol[k]); else printf(" %03d", J4[n][i].symbol[k]); } printf("\n"); } } #endif /* * Decoding - part 1 * We're part way through a byte, so decode bit by bit up to the next * whole byte and then we start the fast decoding section. */ cp = out->data; node_num = 0; while (in->bit != 0) { int b = get_bits(in, 1); if (t[node_num].l[b] != -1) { if (t[node_num].l[b] != SYM_EOF) { *cp++ = t[node_num].l[b]; } else { out->byte = cp - out->data; return out; } } node_num = t[node_num].c[b]; } /* * Decoding - part 2 * * We handle data nibble by nibble using the nibble to get an * h_jump4_t lookup from the J4[] table. * If top_bit is clear then we know we have no funny business (SYM_EOF) * so we use a fast decoding technique, otherwise we have to do a slower * loop with a check. */ { int last_node = 0; unsigned char *last_cp = cp; h_jump4_t *x = &J4[node_num][in->data[in->byte] & 0x0f]; int l = x->nsymbols; int b; /* * This is the tight loop, so we over-optimise here by ignoring EOF * and relying on knowing the length of the input data stream. * This allows us to ignore the 9-bit data and only operate on * the basic 0-255 symbols, glossing over the minor issue that EOF * will look like an ordinary symbol. */ for (i = in->byte; i < in->alloc; i++) { last_cp = cp; last_node = node_num; x = &J4[node_num][in->data[i] & 0x0f]; l = x->nsymbols; for (j = 0; j < l; j++) { *cp++ = x->symbol[j]; } node_num = x->jump; if (x->top_bit) break; x = &J4[node_num][(in->data[i] >> 4) & 0x0f]; l = x->nsymbols; for (j = 0; j < l; j++) { *cp++ = x->symbol[j]; } node_num = x->jump; if (x->top_bit) break; } /* * Decoding - part 3 * * The above optimisation has unfortunately added EOF to our data * along with whatever else was packed in the last byte after the * EOF symbol. So we rewind one byte and finish off decoding * the slow way - walking the tree. */ cp = last_cp; node_num = last_node; in->byte = i; in->bit = 0; while (-1 != (b = get_bits(in, 1))) { if (t[node_num].l[b] != -1) { if (t[node_num].l[b] != SYM_EOF) { *cp++ = t[node_num].l[b]; } else { out->byte = cp - out->data; return out; } } node_num = t[node_num].c[b]; } } /* We shouldn't reach here */ return NULL; } int init_decode_tables(huffman_codeset_t *cs) { int nnodes, i, j, n, nc; huffman_codes_t **c; int new_node, rec; h_jump4_t (*J4)[16] = NULL; htree_t *t; c = cs->codes; nc = cs->ncodes; /* Allocate memory for internal nodes (nsyms-1 for each code set) */ for (nnodes = i = 0; i < nc; i++) { nnodes += c[i]->ncodes-1; } if (NULL == (t = (htree_t *)malloc(nnodes * sizeof(*t)))) goto error; if (NULL == (J4 = (h_jump4_t (*)[16])malloc(nnodes * sizeof(*J4)))) goto error; /* * Construct the tree from the codes. * We have one tree for all 'nc' huffman codes with each tree pointing * to the root of the next one (or first) tree whenever we emit a * symbol. * * This then effectively means the decoding step is identical to the * single huffman code function. */ new_node = 0; for (rec = 0; rec < nc; rec++) { int root = new_node++; int next_root = rec == nc-1 ? 0 : root + c[rec]->ncodes-1; t[root].l[0] = t[root].l[1] = -1; t[root].c[0] = t[root].c[1] = next_root; for (i = 0; i < c[rec]->ncodes; i++) { int n = root; unsigned int v = c[rec]->codes[i].code; for (j = 0; j < c[rec]->codes[i].nbits-1; j++) { int b = v & 1; if (t[n].c[b] != next_root) { n = t[n].c[b]; } else { n = (t[n].c[b] = new_node++); t[n].c[0] = t[n].c[1] = next_root; t[n].l[0] = t[n].l[1] = -1; } v >>= 1; } /* last bit */ t[n].l[v & 1] = c[rec]->codes[i].symbol; } } /* for (i = 0; i < new_node; i++) { printf("t[%d] = {(%d,%d), (%d,%d)}\n", i, t[i].l[0], t[i].l[1], t[i].c[0], t[i].c[1]); } */ /* Build the 16 wide lookup table per node */ for (n = 0; n < new_node; n++) { for (j = 0; j < 16; j++) { unsigned int v = j; int n2 = n; h_jump4_t *hj = &J4[n][j]; hj->nsymbols = 0; hj->top_bit = 0; for (i = 0; i < 4; i++) { int b = v & 1; if (t[n2].l[b] >= 0) { hj->symbol[hj->nsymbols++] = t[n2].l[b]; if (t[n2].l[b] == SYM_EOF) if (!hj->top_bit) hj->top_bit |= 1 << (hj->nsymbols-1); } n2 = t[n2].c[b]; v >>= 1; } hj->jump = n2; /* printf("J4[%d][%d] = {'%.*s', %d}\n", n, j, hj->nsymbols, hj->symbol, n2); */ } } cs->decode_t = t; cs->decode_J4 = J4; return 0; error: if (t) free(t); if (J4) free(J4); cs->decode_t = NULL; cs->decode_J4 = NULL; return -1; } /* * The opposite of huffman_encode(). * Decode a huffman stream from 'block' using huffman codes 'c'. * * Returns: allocated block_t pointer on success * NULL on failure. * * Method 1 * -------- * * At any node in our tree we can precompute a lookup table so that upon * reading the next 'k' bits we know the new node we'd end up in and what * symbols to export. * Then decoding simply works in fixed sets of k bits at a time. * * We use k=4 for efficient table space (they fit neatly in cache) and ease * of decoding 4-bits at a time. k=8 is about 20% faster as reading the input * byte by byte is easy, but the setup time is substantially longer * (16x at a guess) and the lookup tables no longer fit in the L1 cache. * * NB: This version also handles multiple interleaved huffman codes as * this support doesn't really slow down the decoding process. */ block_t *huffman_multi_decode(block_t *in, huffman_codeset_t *cs) { block_t *out = NULL; int i, j; int node_num; unsigned char *cp; h_jump4_t (*J4)[16]; htree_t *t; if (!cs) return NULL; /* Ensure precomputed lookup tables exist */ if (!cs->decode_t || !cs->decode_J4) if (-1 == init_decode_tables(cs)) return NULL; t = cs->decode_t; J4 = cs->decode_J4; if (NULL == (out = block_create(NULL, 9*(in->alloc+1)))) { goto error; } /* * Decoding - part 1 * We're part way through a byte, so decode bit by bit up to the next * whole byte and then we start the fast decoding section. */ cp = out->data; node_num = 0; while (in->bit != 0) { int b = get_bits(in, 1); htree_t *t2 = &t[node_num]; if (t2->l[b] != -1) { if (t2->l[b] != SYM_EOF) { *cp++ = t2->l[b]; } else { out->byte = cp - out->data; goto success; } } node_num = t2->c[b]; } /* * Decoding - part 2 * * We now handle data nibble by nibble using the nibble to get an * h_jump4_t lookup from the J4[] table. * If top_bit is clear then we know we have no funny business (SYM_EOF) * so we use a fast decoding technique, otherwise we have to do a slower * loop with a check. */ { int last_node = node_num; unsigned char *last_cp = cp; h_jump4_t *x = &J4[node_num][in->data[in->byte] & 0x0f]; int l = x->nsymbols; int b; /* * This is the tight loop, so we over-optimise here by ignoring EOF * and relying on knowing the length of the input data stream. * This allows us to ignore the 9-bit data and only operate on * the basic 0-255 symbols, glossing over the minor issue that EOF * will look like an ordinary symbol. */ for (i = in->byte; i < in->alloc; i++) { last_cp = cp; last_node = node_num; x = &J4[node_num][in->data[i] & 0x0f]; l = x->nsymbols; /* printf("val=%d\n", in->data[i] & 0x0f); */ for (j = 0; j < l; j++) { *cp++ = x->symbol[j]; } node_num = x->jump; if (x->top_bit) break; x = &J4[node_num][(in->data[i] >> 4) & 0x0f]; l = x->nsymbols; for (j = 0; j < l; j++) { *cp++ = x->symbol[j]; } node_num = x->jump; if (x->top_bit) break; } /* * Decoding - part 3 * * The above optimisation has unfortunately added EOF to our data * along with whatever else was packed in the last byte after the * EOF symbol. So we rewind one byte and finish off decoding * the slow way - walking the tree. */ cp = last_cp; node_num = last_node; in->byte = i; in->bit = 0; while (-1 != (b = get_bits(in, 1))) { htree_t *t2 = &t[node_num]; if (t2->l[b] != -1) { if (t2->l[b] != SYM_EOF) { *cp++ = t2->l[b]; } else { out->byte = cp - out->data; goto success; } } node_num = t2->c[b]; } } success: return out; error: if (out) block_destroy(out, 0); return NULL; } #if 0 /* A simple to understand (but slow) version of the above function */ block_t *huffman_multi_decode(block_t *in, huffman_codes_t **c, int nc) { block_t *out; htree_t (*t)[513]; /* number of internal nodes */ int i, j, n, rec; int new_node, node_num; unsigned char *cp; int bC; /* byte count */ if (NULL == (t = (htree_t (*)[513])malloc(nc * sizeof(*t)))) return NULL; if (NULL == (out = block_create(NULL, 8*in->alloc+8))) { block_destroy(in, 0); free(t); return NULL; } /* Construct the tree from the codes */ for (rec = 0; rec < nc; rec++) { new_node = 1; t[rec][0].l[0] = t[rec][0].l[1] = -1; t[rec][0].c[0] = t[rec][0].c[1] = 0; for (i = 0; i < c[rec]->ncodes; i++) { int n = 0; unsigned int v = c[rec]->codes[i].code; for (j = 0; j < c[rec]->codes[i].nbits-1; j++) { int b = v & 1; if (t[rec][n].c[b]) { n = t[rec][n].c[b]; } else { n = (t[rec][n].c[b] = new_node++); t[rec][n].c[0] = t[rec][n].c[1] = 0; t[rec][n].l[0] = t[rec][n].l[1] = -1; } v >>= 1; } /* last bit */ t[rec][n].l[v & 1] = c[rec]->codes[i].symbol; } } /* * Decoding - the slow way. How to speed up multi-code decoding? */ cp = out->data; node_num = 0; bC = 0; while (in->byte < in->alloc) { htree_t *t2; int b = get_bits(in, 1); t2 = &t[bC%nc][node_num]; if (t2->l[b] != -1) { if (t2->l[b] != SYM_EOF) { *cp++ = t2->l[b]; bC++; node_num = 0; } else { out->byte = cp - out->data; free(t); return out; } } else { node_num = t2->c[b]; } } /* We shouldn't reach here */ free(t); return NULL; } #endif /* * A slow version of the above huffman_decode function. This is designed as * a piecemeal decoder for purposes of restoring the huffman codes themselves. * NB: this only works for code lengths small enough to keep inside the * htab[] dimensions - IT DOES NOT CHECK THIS. * * Returns the next symbol * -1 for failure */ int next_symbol(block_t *in, int *htab) { int b, v = 0, c = 1; while ((b = get_bits(in, 1)) != -1) { v = (v<<1) | b | (c <<= 1); if (htab[v] != -1) return htab[v]; } return -1; } /* * --------------------------------------------------------------------------- * Debug code. This turns the library into a stand-alone program for * easy debugging.x */ static void output_code_set(FILE *fp, huffman_codes_t *cds) { int i, j; int nbits_in = 0, nbits_out = 0; huffman_code_t *codes = cds->codes; int ncodes = cds->ncodes; fprintf(fp, "static huffman_code_t codes_FIXME[] = {\n"); for (i = j = 0; i < ncodes; i++) { nbits_out += codes[i].nbits * codes[i].freq; nbits_in += 8*codes[i].freq; if (j == 0) fprintf(fp, " "); if (codes[i].symbol == SYM_EOF) { fprintf(fp, "{SYM_EOF,%3d}, ", codes[i].nbits); j = 10; } else { if (isalnum(codes[i].symbol)) { fprintf(fp, "{'%c',%3d}, ", codes[i].symbol, codes[i].nbits); } else { fprintf(fp, "{%3d,%3d}, ", codes[i].symbol, codes[i].nbits); } } j++; if (j >= 6) { fputc('\n', fp); j = 0; } } if (j) fputc('\n', fp); fprintf(fp, "};\n"); fprintf(fp, "/* Expected compression to %f of input */\n", (double)nbits_out/nbits_in); } static void output_code_set2(FILE *fp, huffman_codes_t *cds) { int i; huffman_code_t *codes = cds->codes; int ncodes = cds->ncodes; fprintf(fp, "huffman_code_t = {\n"); for (i = 0; i < ncodes; i++) { fprintf(fp, "\t%d:\t%3d %c %2d %04x %d\n", i,codes[i].symbol, codes[i].symbol, codes[i].nbits, codes[i].code, codes[i].freq); } fprintf(fp, "};\n"); } /* * -------------------------------------------------------------------------- * A test main() to create an application capable of compressing and * uncompressing stdin. */ #ifdef TEST_MAIN #include /* #include */ /* * Slurps the entirety of stdin into a malloced buffer and returns a pointer * to it. * * Returns: malloced buffer on success, *lenp equal to length * NULL on failure */ static unsigned char *load(int *lenp, char *fn) { unsigned char *data = NULL; int dsize = 0; int dcurr = 0, len; int fd = 0; if (fn) { if (-1 == (fd = open(fn, O_RDONLY, 0))) { perror(fn); return NULL; } } do { if (dsize - dcurr < 8192) { dsize = dsize ? dsize * 2 : 8192; if (NULL == (data = realloc(data, dsize))) { if (fd) close(fd); return NULL; } } len = read(fd, data + dcurr, 8192); if (len > 0) dcurr += len; } while (len > 0); if (len == -1) { perror("read"); if (fd) close(fd); return NULL; } if (fd) close(fd); *lenp = dcurr; return data; } /* * Returns 0 for success * -1 for failure. */ int decode_main(unsigned char *data, int len, int code_set) { huffman_codeset_t *cs = NULL; block_t *blk_in; unsigned char *out; int err, out_len, i; int bfinal; blk_in = block_create(NULL, 1000 + len); if (code_set != 0) { cs = generate_code_set(code_set, 1, /* no. codes */ NULL, 0, /* data + size */ 1, /* eof */ MAX_CODE_LEN, 0); /* all_codes */ store_codes(blk_in, cs, 1); } if (blk_in->bit != 0) { blk_in->data[blk_in->byte] |= data[0]; memcpy(&blk_in->data[blk_in->byte+1], data+1, len-1); } else { memcpy(&blk_in->data[blk_in->byte], data, len); } /* Do the decoding */ do { block_t *out; if (!cs) cs = restore_codes(blk_in, &bfinal); out = huffman_multi_decode(blk_in, cs); write(1, out->data, out->byte); block_destroy(out, 0); huffman_codeset_destroy(cs); cs = NULL; } while (!bfinal); block_destroy(blk_in, 0); return 0; } /* * Returns 0 for success * -1 for failure. */ int encode_main(unsigned char *data, int len, int code_set, int rec_size, int blk_size, int dump_tree, int exit_after_tree) { /* Encoding */ unsigned char *d2 = data; block_t *blk; huffman_codeset_t *cs; blk = block_create(NULL, 8192); fprintf(stderr, "Input %d bytes\n", len); do { int l2 = len > blk_size ? blk_size : len; int i; if (code_set != 0) l2 = len; /* predefined code-sets have final-block bit set */ cs = generate_code_set(code_set, rec_size, d2, l2, /* Data and length */ 1, /* eof */ MAX_CODE_LEN, 0); /* all codes */ if (!cs) return -1; if (dump_tree) { for (i = 0; i < rec_size; i++) { printf("==Sub-set %d==\n", i); output_code_set(stdout, cs->codes[i]); /* output_code_set2(stdout, cs->codes[i]); */ } if (exit_after_tree) return 0; } store_codes(blk, cs, l2 == len); if (code_set != 0) { blk->data[blk->byte = 0] = 0; /* starting bit no. preseved */ } else { /* fprintf(stderr, "codes finished at %d bytes, %d bits\n", blk->byte, blk->bit); */ } if (exit_after_tree) { write(1, blk->data, blk->byte + (blk->bit != 0)); return 0; } huffman_multi_encode(blk, cs, code_set, d2, l2); huffman_codeset_destroy(cs); len -= l2; d2 += l2; } while (len > 0); write(1, blk->data, blk->byte + (blk->bit != 0)); fprintf(stderr, "Output %ld bytes\n", blk->byte + (blk->bit != 0)); block_destroy(blk, 0); return 0; } int main(int argc, char **argv) { unsigned char *data; int decode = 0; int dump_tree = 0; int exit_after_tree = 0; int code_set = CODE_INLINE; int blk_size = 0x7fff; int rec_size = 1; int c, r, len; char *fn = NULL; while ((c = getopt(argc, argv, "c:detxl:b:hr:i:")) != -1) { switch (c) { case 'b': blk_size = atoi(optarg); break; case 'c': code_set = atoi(optarg); break; case 'r': rec_size = atoi(optarg); break; case 'd': decode = 1; break; case 'e': decode = 0; break; case 't': dump_tree = 1; break; case 'x': exit_after_tree = 1; break; case 'i': fn = optarg; break; default: fprintf(stderr, "Usage: huffman_static [options] < stdin > stdout\n"); fprintf(stderr, " Decoding options\n"); fprintf(stderr, " -d\tdecode flag\n"); fprintf(stderr, " Encoding options\n"); fprintf(stderr, " -e\tencode flag\n"); fprintf(stderr, " -b size\tspecify the block-size\n"); fprintf(stderr, " -c code\tspecify code-set. 0 => inline\n"); fprintf(stderr, " -t\tpretty-print the code-set used\n"); fprintf(stderr, " -x\texit after outputting code-set\n"); exit(c != 'h'); } } data = load(&len, fn); r = decode ? decode_main(data, len, code_set) : encode_main(data, len, code_set, rec_size, blk_size, dump_tree, exit_after_tree); free(data); return r == 0 ? 0 : 1; } #endif io_lib-1.14.6/io_lib/fpoint.c0000644000031500020650000000666312354177666012711 00000000000000/* * Copyright (c) 1994 MEDICAL RESEARCH COUNCIL * All rights reserved * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1 Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2 Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3 Neither the name of the MEDICAL RESEARCH COUNCIL, THE LABORATORY OF * MOLECULAR BIOLOGY nor the names of its contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * Copyright (c) Medical Research Council 1994. All rights reserved. * * Permission to use, copy, modify and distribute this software and its * documentation for any purpose is hereby granted without fee, provided that * this copyright and notice appears in all copies. * * This file was written by James Bonfield, Simon Dear, Rodger Staden, * as part of the Staden Package at the MRC Laboratory of Molecular * Biology, Hills Road, Cambridge, CB2 2QH, United Kingdom. * * MRC disclaims all warranties with regard to this software. */ #ifdef HAVE_CONFIG_H #include "io_lib_config.h" #endif #include #include "io_lib/fpoint.h" /* extern double log ( double x ) ; extern double exp ( double x ) ; */ #define IEEE float int_to_float(int in) /* ** interpret the integer in as a ** floating point number in IEEE format */ { /* Assume `in' is stored as a float according to the ANSI IEEE 754-1985 standard. See the tables below: s = sign ( 1 bit) e = biased exponent (8 bits) f = fraction (23 bits) floating point number = (-1)^s 2^(e-127) 1.f Bits Name Content 31 Sign 1 iff number is negative 23-30 Exponent Eight-Bit exponent, biased by 127 0-22 Fraction 23-bit fraction component of normalised significant. The "one" bit is "hidden" If IEEE floating point format is supported on your machine... ensure there is a #define IEEE somewhere. */ #ifdef IEEE union { int i; float f; } cvt; cvt.i = in; return cvt.f; #else int fraction; int exponent; int sign; fraction = in & ( (1<<23)-1 ); exponent = (in >> 23) & ( (1<<8)-1 ); sign = (in >> 31); return (float) ( (sign?-1.0:1.0) * exp ( log ( (double) 2.0) * (double) (exponent - 127 - 23) ) * (double) ((1<<23)+fraction)) ; #endif } io_lib-1.14.6/io_lib/seqIOABI.c0000644000031500020650000007227412354177666012747 00000000000000/* * Copyright (c) 2003-2005, 2007, 2010, 2013 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * Author(s): Simon Dear, LaDeana Hillier, James Bonfield * * Copyright (c) 1990-2001 MEDICAL RESEARCH COUNCIL * All rights reserved * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1 Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2 Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3 Neither the name of the MEDICAL RESEARCH COUNCIL, THE LABORATORY OF * MOLECULAR BIOLOGY nor the names of its contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * Copyright (c) Medical Research Council 1994. All rights reserved. * * Permission to use, copy, modify and distribute this software and its * documentation for any purpose is hereby granted without fee, provided that * this copyright and notice appears in all copies. * * This file was written by James Bonfield, Simon Dear, Rodger Staden, * as part of the Staden Package at the MRC Laboratory of Molecular * Biology, Hills Road, Cambridge, CB2 2QH, United Kingdom. * * MRC disclaims all warranties with regard to this software. */ /* * Title: seqIOABI * * File: seqIOABI.c * Purpose: Reading (not writing) of ABI sequences * Last update: Fri Sep 02, 1994 * * Change log: * 27/11/90 SD writeSeqABI() outputs header to sequence file: * format: ;{noOfBases}{leftCutOff}{basesWritten}{type}{tracefile} * eg: ; 867 45 383ABI a09b7.s1RES * 28.11.90 SD put undesirables under STLOUIS compilation flag * 11.12.90 SD new static function tail to find file name in path name * 02.01.91 SD Merged with St.L version * 15.01.91 SD New include added (opp.h) * 30.07.91 SD Those ole FWO_ field blues * 17.09.91 LFW changed STLOUIS compilation flag to SAVE_EDITS * and AUTO_CLIP * 25.10.91 SD Machine independant I/O...removed BIGENDIAN flag * 21.07.92 LFW Added finding of primer position * 11.11.92 LFW added section to actually check that the trace it * is trying to open is an ALF file using traceType sub * 10.11.92 SD FWO_ and S/N% interpretation. Comments for information * window. * 05-Jul-93 SD Added code to check base positions are in order and adjust * them if they are not * 02.09.94 JKB Change to use Read instead of Seq library. */ /* * In the absense of any better format to store our ABI data in we use * the Read structure. Hence this module should be considered part of the * Read libary. * * This library also requires use of the mach-io code for the endian * independent machine IO. * * The ABI results file is controlled by an index found towards * the end --- this is pointed to by a longword found at `IndexPO'. * The index consists of a number of entries, each of which is * four character label followed by 6 long words. The first of these * long words holds a simple count (starting at 1) for those cases * where there are multiple entries with the same label. Entries should * be found by label (and count), rather than their index position, * because entries can be ommited or new ones added. This happens when * ABI changes the version of their software and also depending * on whether the data was analysed or unalaysed. We do, however, * make assumptions about the relative order of entries. * * Ideally we would have a separate module which provides a number * of functions to extract the data we are interested in, keeping * the ABI format well wrapped up and out of harms way. * * Note that we are relying on the endian-ness of the machine being * appropriate so we can just read long words in as integers. This * should be recoded to deal with running on different endians. */ /* ---- Imports ---- */ #ifdef HAVE_CONFIG_H #include "io_lib_config.h" #endif #include #include #include #include #include #include "io_lib/stdio_hack.h" #include "io_lib/seqIOABI.h" #include "io_lib/Read.h" #include "io_lib/abi.h" #include "io_lib/fpoint.h" /* IMPORT: int_to_float */ #include "io_lib/mach-io.h" #include "io_lib/xalloc.h" #include "io_lib/misc.h" /* ---- Constants ---- */ #define BasesPerLine 50 /* For output formatting */ #define baseIndex(B) ((B)=='C'?0:(B)=='A'?1:(B)=='G'?2:3) static int header_fudge = 0; /* DATA block numbers for traces, in order of FWO_ */ static int DataCount[4] = {9, 10, 11, 12}; int dump_labels(FILE *fp, off_t indexO) { off_t entryNum = -1; uint_4 entryLabel, entryLw1; do { entryNum++; if (fseek(fp, header_fudge+indexO+(entryNum*IndexEntryLength), 0) != 0) return 0; if (!be_read_int_4(fp, &entryLabel)) return 0; if (!be_read_int_4(fp, &entryLw1)) return 0; if (entryLabel) { unsigned char c1, c2, c3, c4; c1 = (entryLabel >> 24) & 0xff; c2 = (entryLabel >> 16) & 0xff; c3 = (entryLabel >> 8) & 0xff; c4 = (entryLabel >> 0) & 0xff; if (!isprint(c1)) break; printf("%c%c%c%c %d\n", c1, c2, c3, c4, entryLw1); } } while (entryLabel); return 0; } /* * From the ABI results file connected to `fp' whose index starts * at byte offset `indexO', return in `val' the `lw'th long word * from the `count'th entry labelled `label'. * The result is 0 for failure, or index offset for success. */ int getABIIndexEntryLW(FILE *fp, off_t indexO, uint_4 label, uint_4 count, int lw, uint_4 *val) { off_t entryNum=-1; int i; uint_4 entryLabel, entryLw1; do { entryNum++; if (fseek(fp, header_fudge+indexO+(entryNum*IndexEntryLength), 0) != 0) return 0; if (!be_read_int_4(fp, &entryLabel)) return 0; if (!be_read_int_4(fp, &entryLw1)) return 0; } while (!(entryLabel == label && entryLw1 == count)); for(i=2; i<=lw; i++) if (!be_read_int_4(fp, val)) return 0; return indexO+(entryNum*IndexEntryLength); } /* * From the ABI results file connected to `fp' whose index starts * at byte offset `indexO', return in `val' the `sw'th short word * from the `count'th entry labelled `label'. * The result is 0 for failure, or index offset for success. */ int getABIIndexEntrySW(FILE *fp, off_t indexO, uint_4 label, uint_4 count, int sw, uint_2 *val) { off_t entryNum=-1; int i; uint_4 entryLabel, entryLw1; do { entryNum++; if (fseek(fp, header_fudge+indexO+(entryNum*IndexEntryLength), 0) != 0) return 0; if (!be_read_int_4(fp, &entryLabel)) return 0; if (!be_read_int_4(fp, &entryLw1)) return 0; } while (!(entryLabel == label && entryLw1 == count)); for(i=4; i<=sw; i++) if (!be_read_int_2(fp, val)) return 0; return indexO+(entryNum*IndexEntryLength); } /* * Gets the offset of the ABI index. * Returns -1 for failure, 0 for success. */ int getABIIndexOffset(FILE *fp, uint_4 *indexO) { uint_4 magic; /* * Initialise header_fudge. * * This is usually zero, but maybe we've transfered a file in MacBinary * format in which case we'll have an extra 128 bytes to add to all * our fseeks. */ rewind(fp); be_read_int_4(fp, &magic); header_fudge = (magic == ABI_MAGIC ? 0 : 128); if ((fseek(fp, header_fudge + IndexPO, 0) != 0) || (!be_read_int_4(fp, indexO))) return -1; else return 0; } /* * Get an "ABI String". These strings are either pointed to by the index * offset, or held in the offset itself when the string is <= 4 characters. * The "type" of the index entry is either 0x12 (a pascal string in which * case the first byte of the string determines its length) or a 0x02 (a * C-style string with length coming from the abi index). * * "string" will be max 256 bytes for the pascal string, but is of unknown * (and hence potentially buggy) length for C-strings. For now we live with * it as this entire file needs rewriting from scratch anyway. * * Returns -1 for failure, string length for success. */ int getABIString(FILE *fp, off_t indexO, uint_4 label, uint_4 count, char *string) { uint_4 off; uint_4 len; uint_2 type; off = getABIIndexEntrySW(fp, indexO, label, count, 4, &type); if (!off) return -1; if ((off = getABIIndexEntryLW(fp, indexO, label, count, 4, &len))) { uint_1 len2; if (!len) return 0; /* Determine offset */ if (len <= 4) off += 20; else getABIIndexEntryLW(fp, indexO, label, count, 5, &off); /* Read length byte */ if (type == 0x12) { fseek(fp, header_fudge + off, 0); be_read_int_1(fp, &len2); } else { len2 = len; } /* Read data (max 255 bytes) */ fread(string, len2, 1, fp); string[len2] = 0; return len2; } else return -1; } static void replace_nl(char *string) { char *cp; for (cp = string; *cp; cp++) { if (*cp == '\n') *cp = ' '; } } /* * Get an "ABI Int_1". This is raw 1-byte integer data pointed to by the * offset, or held in the offset itself when the data is <= 4 characters. * * If indexO is 0 then we do not search for (or indeed use) label and count, * but simply assume that we are already at the correct offset and read from * here. (NB: This negates the length <= 4 check.) * * Returns -1 for failure, length desired for success (it'll only fill out * up to max_data_len elements, but it gives an indication of whether there * was more to come). */ int getABIint1(FILE *fp, off_t indexO, uint_4 label, uint_4 count, uint_1 *data, int max_data_len) { uint_4 off; uint_4 len, len2; if (indexO) { if (!(off = getABIIndexEntryLW(fp, indexO, label, count, 4, &len))) return -1; if (!len) return 0; /* Determine offset */ if (len <= 4) off += 20; else getABIIndexEntryLW(fp, indexO, label, count, 5, &off); len2 = MIN((uint_4)max_data_len, len); fseek(fp, header_fudge + off, 0); } else { len = len2 = max_data_len; } fread(data, len2, 1, fp); return len; } /* * Get an "ABI Int_2". This is raw 2-byte integer data pointed to by the * offset, or held in the offset itself when the data is <= 4 characters. * * Returns -1 for failure, length desired for success (it'll only fill out * up to max_data_len elements, but it gives an indication of whether there * was more to come). */ int getABIint2(FILE *fp, off_t indexO, uint_4 label, uint_4 count, uint_2 *data, int max_data_len) { int len, l2; int i; len = getABIint1(fp, indexO, label, count, (uint_1 *)data, max_data_len*2); if (-1 == len) return -1; len /= 2; l2 = MIN(len, max_data_len); for (i = 0; i < l2; i++) { data[i] = be_int2(data[i]); } return len; } /* * Get an "ABI Int_4". This is raw 4-byte integer data pointed to by the * offset, or held in the offset itself when the data is <= 4 characters. * * Returns -1 for failure, length desired for success (it'll only fill out * up to max_data_len elements, but it gives an indication of whether there * was more to come). */ int getABIint4(FILE *fp, off_t indexO, uint_4 label, uint_4 count, uint_4 *data, int max_data_len) { int len, l2; int i; len = getABIint1(fp, indexO, label, count, (uint_1 *)data, max_data_len*4); if (-1 == len) return -1; len /= 4; l2 = MIN(len, max_data_len); for (i = 0; i < l2; i++) { data[i] = be_int4(data[i]); } return len; } /* * Change the DATA counts for fetching traces */ void abi_set_data_counts(int f, int w, int o, int _) { DataCount[0] = f; DataCount[1] = w; DataCount[2] = o; DataCount[3] = _; } /* * Put the DATA counts back to their defaults. */ void abi_reset_data_counts(void) { DataCount[0] = 9; DataCount[1] = 10; DataCount[2] = 11; DataCount[3] = 12; } /* * Read the ABI format sequence from FILE *fp into a Read structure. * All printing characters (as defined by ANSII C `isprint') * are accepted, but `N's are translated to `-'s. In this respect we * are adhering (more or less) to the CSET_DEFAULT uncertainty code set. * * Returns: * Read * - Success, the Read structure read. * NULLRead - Failure. */ Read *fread_abi(FILE *fp) { Read *read = NULLRead; int i; float fspacing; /* average base spacing */ uint_4 numPoints, numBases; uint_4 signalO; int no_bases = 0; int sections = read_sections(0); uint_1 *conf; uint_4 fwo_; /* base -> lane mapping */ uint_4 indexO; /* File offset where the index is */ uint_4 baseO; /* File offset where the bases are stored */ uint_4 dataCO; /* File offset where the C trace is stored */ uint_4 dataAO; /* File offset where the A trace is stored */ uint_4 dataGO; /* File offset where the G trace is stored */ uint_4 dataTO; /* File offset where the T trace is stored */ uint_4 offset; /* Generic offset */ uint_4 offset2; /* Generic offset */ uint_4 offset3; /* Generic offset */ uint_4 offset4; /* Generic offset */ /* Get the index offset */ if (-1 == getABIIndexOffset(fp, &indexO)) goto bail_out; /* Get the number of points */ if (!getABIIndexEntryLW(fp,(off_t)indexO,DataEntryLabel,DataCount[0], 3,&numPoints)) goto bail_out; /* Get the number of bases */ if (!getABIIndexEntryLW(fp,(off_t)indexO,BaseEntryLabel,1,3,&numBases)) { no_bases = 1; numBases = 0; } /* Allocate the sequence */ if (NULLRead == (read = read_allocate(numPoints, numBases))) goto bail_out; /* Get the Filter Wheel Order (FWO_) field ... */ if (!getABIIndexEntryLW(fp,(off_t)indexO,FWO_Label,1,5,&fwo_)) { /* Guess at CAGT */ fwo_ = 0x43414754; } /* * The order of the DATA fields is determined by the field FWO_ * Juggle around with data pointers to get it right */ if (sections & READ_SAMPLES) { uint_4 *dataxO[4]; dataxO[0] = &dataCO; dataxO[1] = &dataAO; dataxO[2] = &dataGO; dataxO[3] = &dataTO; /*Get the positions of the four traces */ if (!(getABIIndexEntryLW(fp, (off_t)indexO, DataEntryLabel, DataCount[0], 5, dataxO[baseIndex((char)(fwo_>>24&255))]) && getABIIndexEntryLW(fp, (off_t)indexO, DataEntryLabel, DataCount[1], 5, dataxO[baseIndex((char)(fwo_>>16&255))]) && getABIIndexEntryLW(fp, (off_t)indexO, DataEntryLabel, DataCount[2], 5, dataxO[baseIndex((char)(fwo_>>8&255))]) && getABIIndexEntryLW(fp, (off_t)indexO, DataEntryLabel, DataCount[3], 5, dataxO[baseIndex((char)(fwo_&255))]))) { goto bail_out; } } /************************************************************* * Read the traces and bases information *************************************************************/ if (sections & READ_SAMPLES) { /* Read in the C trace */ if (fseek(fp, header_fudge + (off_t)dataCO, 0) == -1) goto bail_out; getABIint2(fp, 0, 0, 0, read->traceC, read->NPoints); /* Read in the A trace */ if (fseek(fp, header_fudge + (off_t)dataAO, 0) == -1) goto bail_out; getABIint2(fp, 0, 0, 0, read->traceA, read->NPoints); /* Read in the G trace */ if (fseek(fp, header_fudge + (off_t)dataGO, 0) == -1) goto bail_out; getABIint2(fp, 0, 0, 0, read->traceG, read->NPoints); /* Read in the T trace */ if (fseek(fp, header_fudge + (off_t)dataTO, 0) == -1) goto bail_out; getABIint2(fp, 0, 0, 0, read->traceT, read->NPoints); /* Compute highest trace peak */ for (i=0; i < read->NPoints; i++) { if (read->maxTraceVal < read->traceA[i]) read->maxTraceVal = read->traceA[i]; if (read->maxTraceVal < read->traceC[i]) read->maxTraceVal = read->traceC[i]; if (read->maxTraceVal < read->traceG[i]) read->maxTraceVal = read->traceG[i]; if (read->maxTraceVal < read->traceT[i]) read->maxTraceVal = read->traceT[i]; } } if (no_bases || !(sections & READ_BASES)) goto skip_bases; /* Read in base confidence values */ if (!(conf = (uint_1 *)xcalloc(sizeof(*conf), read->NBases))) goto bail_out; getABIint1(fp, indexO, BaseConfLabel, 1, conf, read->NBases); /* Read in the bases */ if (!(getABIIndexEntryLW(fp, (off_t)indexO, BaseEntryLabel, 1, 5, &baseO) && (fseek(fp, header_fudge + (off_t)baseO, 0) == 0) )) goto bail_out; for (i = 0; i < (read->NBases); i++) { int ch; if ((ch = fgetc(fp)) == EOF) goto bail_out; read->base[i] = (ch == 'N') ? '-' : (char)ch; switch(read->base[i]) { case 'A': case 'a': read->prob_A[i] = conf[i]; read->prob_C[i] = 0; read->prob_G[i] = 0; read->prob_T[i] = 0; break; case 'C': case 'c': read->prob_A[i] = 0; read->prob_C[i] = conf[i]; read->prob_G[i] = 0; read->prob_T[i] = 0; break; case 'G': case 'g': read->prob_A[i] = 0; read->prob_C[i] = 0; read->prob_G[i] = conf[i]; read->prob_T[i] = 0; break; case 'T': case 't': read->prob_A[i] = 0; read->prob_C[i] = 0; read->prob_G[i] = 0; read->prob_T[i] = conf[i]; break; default: read->prob_A[i] = 0; read->prob_C[i] = 0; read->prob_G[i] = 0; read->prob_T[i] = 0; break; } } read->base[i] = 0; xfree(conf); /* Read in the base positions */ if (-1 == getABIint2(fp, indexO, BasePosEntryLabel, 1, read->basePos, read->NBases)) goto bail_out; /* * Check for corrupted traces where the bases are positioned on sample * coordinates which do not exist. Witnessed on some MegaBACE files. */ if (read->basePos[read->NBases-1] > read->NPoints) { int n = read->basePos[read->NBases-1]+1; read->traceA = (TRACE *)xrealloc(read->traceA, n * sizeof(TRACE)); read->traceC = (TRACE *)xrealloc(read->traceC, n * sizeof(TRACE)); read->traceG = (TRACE *)xrealloc(read->traceG, n * sizeof(TRACE)); read->traceT = (TRACE *)xrealloc(read->traceT, n * sizeof(TRACE)); if (read->traceA == NULL || read->traceC == NULL || read->traceG == NULL || read->traceT == NULL) goto bail_out; for (i = read->NPoints; i < n; i++) { read->traceA[i] = 0; read->traceC[i] = 0; read->traceG[i] = 0; read->traceT[i] = 0; } read->NPoints = n; } skip_bases: /************************************************************* * Gather useful information - the comments field *************************************************************/ if (sections & READ_COMMENTS) { char buffer[257]; char comment[8192], line[8192]; char commstr[256], *commstrp; int clen; int_4 spacing; uint_2 i2; uint_4 i4; *comment = '\0'; /* The ABI comments */ clen = getABIString(fp, indexO, CMNTLabel, 1, commstr); if (clen != -1) { char *p; commstr[clen] = 0; commstrp = commstr; do { char line[300]; if ((p = strchr(commstrp, '\n'))) *p++ = 0; sprintf(line, "COMM=%s\n", commstrp); strcat(comment, line); } while ((commstrp = p)); } /* Get Sample Name Offset */ if (-1 != getABIString(fp, indexO, SMPLLabel, 1, buffer)) { replace_nl(buffer); sprintf(line, "NAME=%s\n", buffer); strcat(comment, line); } /* LANE */ if (-1 != getABIint2(fp, indexO, LANELabel, 1, &i2, 1)) { sprintf(line, "LANE=%d\n", i2); strcat(comment, line); } /* Get Signal Strength Offset */ if (getABIIndexEntryLW(fp, (off_t)indexO, SignalEntryLabel, 1, 5, &signalO)) { int_2 C,A,G,T; int_2 *base[4]; base[0] = &C; base[1] = &A; base[2] = &G; base[3] = &T; if (fseek(fp, header_fudge + (off_t)signalO, 0) != -1 && be_read_int_2(fp, (uint_2 *) base[baseIndex((char)(fwo_>>24&255))]) && be_read_int_2(fp, (uint_2 *) base[baseIndex((char)(fwo_>>16&255))]) && be_read_int_2(fp, (uint_2 *) base[baseIndex((char)(fwo_>>8&255))]) && be_read_int_2(fp, (uint_2 *) base[baseIndex((char)(fwo_&255))])) { sprintf(line, "SIGN=A=%d,C=%d,G=%d,T=%d\n", A, C, G, T); strcat(comment, line); } } /* Get the spacing.. it's a float but don't worry yet */ fspacing = 0; if (-1 != getABIint4(fp, indexO, SpacingEntryLabel, 1, (uint_4 *)&spacing, 1)) { fspacing = int_to_float(spacing); sprintf(line, "SPAC=%-6.2f\n", fspacing); strcat(comment, line); } /* Correction for when spacing is negative. Why does this happen? */ if (fspacing <= 0) { if (read->NBases > 1) { if (sections & READ_BASES) fspacing = (float)(read->basePos[read->NBases-1] - read->basePos[0]) / (float) (read->NBases-1); else fspacing = (float) read->NPoints / (float) read->NBases; } else { fspacing = 1; } } /* Get primer position */ if (getABIIndexEntryLW(fp, (off_t)indexO, PPOSLabel, 1, 5, (uint_4 *)&i4)) { /* ppos stores in MBShort of pointer */ sprintf(line, "PRIM=%d\n", (i4>>16)); strcat(comment, line); } /* RUND/RUNT */ if (getABIIndexEntryLW(fp, (off_t)indexO, RUNDLabel, 1, 5, &offset) && getABIIndexEntryLW(fp, (off_t)indexO, RUNDLabel, 2, 5, &offset2) && getABIIndexEntryLW(fp, (off_t)indexO, RUNTLabel, 1, 5, &offset3) && getABIIndexEntryLW(fp, (off_t)indexO, RUNTLabel, 2, 5, &offset4)) { char buffer[1025]; char buffer_s[1025]; char buffer_e[1025]; struct tm t; uint_4 rund_s, rund_e, runt_s, runt_e; rund_s = offset; rund_e = offset2; runt_s = offset3; runt_e = offset4; sprintf(buffer, "%04d%02d%02d.%02d%02d%02d - %04d%02d%02d.%02d%02d%02d", rund_s >> 16, (rund_s >> 8) & 0xff, rund_s & 0xff, runt_s >> 24, (runt_s >> 16) & 0xff, (runt_s >> 8) & 0xff, rund_e >> 16, (rund_e >> 8) & 0xff, rund_e & 0xff, runt_e >> 24, (runt_e >> 16) & 0xff, (runt_e >> 8) & 0xff); memset(&t, 0, sizeof(t)); t.tm_mday = rund_s & 0xff; t.tm_mon = ((rund_s >> 8) & 0xff) - 1; t.tm_year = (rund_s >> 16) - 1900; t.tm_hour = runt_s >> 24; t.tm_min = (runt_s >> 16) & 0xff; t.tm_sec = (runt_s >> 8) & 0xff; t.tm_isdst = -1; /* * Convert struct tm to time_t. We ignore the time_t value, but * the conversion process will update the tm_wday element of * struct tm. */ mktime(&t); strftime(buffer_s, 1024, "%a %d %b %H:%M:%S %Y", &t); t.tm_mday = rund_e & 0xff; t.tm_mon = ((rund_e >> 8) & 0xff) - 1; t.tm_year = (rund_e >> 16) - 1900; t.tm_hour = runt_e >> 24; t.tm_min = (runt_e >> 16) & 0xff; t.tm_sec = (runt_e >> 8) & 0xff; t.tm_isdst = -1; /* * Convert struct tm to time_t. We ignore the time_t value, but * the conversion process will update the tm_wday element of * struct tm. */ mktime(&t); strftime(buffer_e, 1024, "%a %d %b %H:%M:%S %Y", &t); sprintf(line, "DATE=%s to %s\nRUND=%s\n", buffer_s, buffer_e, buffer); strcat(comment, line); } /* Get Dye Primer Offset */ if (-1 != getABIString(fp, indexO, PDMFLabel, 1, buffer)) { replace_nl(buffer); sprintf(line, "DYEP=%s\n", buffer); strcat(comment, line); } /* Get Machine Name Offset */ if (-1 != getABIString(fp, indexO, MCHNLabel, 1, buffer)) { replace_nl(buffer); sprintf(line, "MACH=%s\n", buffer); strcat(comment, line); } /* Machine model */ if (-1 != getABIString(fp, indexO, MODLLabel, 1, buffer)) { replace_nl(buffer); sprintf(line, "MODL=%s\n", buffer); strcat(comment, line); } /* Matrix file */ if (-1 != getABIString(fp, indexO, MTXFLabel, 1, buffer)) { replace_nl(buffer); sprintf(line, "MTXF=%s\n", buffer); strcat(comment, line); } /* Base calling version */ if (-1 != getABIString(fp, indexO, SPACLabel, 2, buffer)) { replace_nl(buffer); sprintf(line, "BCAL=%s\n", buffer); strcat(comment, line); } /* Software versions */ if (-1 != getABIString(fp, indexO, SVERLabel, 1, buffer)) { replace_nl(buffer); sprintf(line, "VER1=%s\n", buffer); strcat(comment, line); } if (-1 != getABIString(fp, indexO, SVERLabel, 2, buffer)) { replace_nl(buffer); sprintf(line, "VER2=%s\n", buffer); strcat(comment, line); } /* Get Gel Name Offset */ if (-1 != getABIString(fp, indexO, GelNameLabel, 1, buffer)) { replace_nl(buffer); sprintf(line, "GELN=%s\n", buffer); strcat(comment, line); } /* dumplicate string and set info */ { char *s = (char *)xmalloc(strlen(comment)+1); strcpy(s,comment); read->info = s; } } /************************************************************* * Check base positions are in order *************************************************************/ #if 0 /* * Disable for now as the original ABI bug this is meant to fix shouldn't * happen any more, and this has the effect of reordering bases where there * are compressions (which is wrong to do). */ if (sections & READ_SAMPLES) { float pos; int start; for (i = 1; i < read->NBases; ) { if (read->basePos[i] < read->basePos[i-1]) { fprintf(stderr,"fread_abi(): Base positions are not in order. Fixing (%d=%d, %d=%d)\n", i-1, read->basePos[i-1], i, read->basePos[i]); /* pass 1 - find end of region */ start = i - 1; pos = (float) read->basePos[i-1] + fspacing; for(;i < read->NBases && (int)read->basePos[i] < pos;i++) { pos += fspacing; } /* calculate average base spacing */ if (i < read->NBases ) fspacing = ((float) read->basePos[i] - (float) read->basePos[start]) / (float)(i - start); /* pass 2 - adjust */ i = start + 1; pos = (float) read->basePos[i-1] + fspacing; for(;i < read->NBases && (int)read->basePos[i] < pos;i++) { read->basePos[i] = (int) pos; pos += fspacing; } } else { i++; } } } #endif /* SUCCESS */ read->format = TT_ABI; return(read); /* FAILURE */ bail_out: if (read) read_deallocate(read); return NULLRead; } /* * Read the ABI format sequence from file 'fn' into a Read structure. * All printing characters (as defined by ANSII C `isprint') * are accepted, but `N's are translated to `-'s. In this respect we * are adhering (more or less) to the CSET_DEFAULT uncertainty code set. * * Returns: * Read * - Success, the Read structure read. * NULLRead - Failure. */ Read *read_abi(char *fn) { Read *read; FILE *fp; /* Open file */ if ((fp = fopen(fn, "rb")) == NULL) return NULLRead; read = fread_abi(fp); fclose(fp); if (read && (read->trace_name = (char *)xmalloc(strlen(fn)+1))) strcpy(read->trace_name, fn); return read; } /* * Write to an ABI file - unsupported. */ /* ARGSUSED */ int write_abi(char *fn, Read *read) { fprintf(stderr, "ABI write support is unavailable\n"); return -1; } /* * Write to an ABI file - unsupported. */ /* ARGSUSED */ int fwrite_abi(FILE *fp, Read *read) { fprintf(stderr, "ABI write support is unavailable\n"); return -1; } io_lib-1.14.6/io_lib/seqIOALF.c0000644000031500020650000003616112354177666012751 00000000000000/* * Copyright (c) 2005, 2007, 2010 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * Author(s): Simon Dear, James Bonfield * * Copyright (c) 1991-1992, 1997-1998, 2001 MEDICAL RESEARCH COUNCIL * All rights reserved * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1 Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2 Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3 Neither the name of the MEDICAL RESEARCH COUNCIL, THE LABORATORY OF * MOLECULAR BIOLOGY nor the names of its contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * Copyright (c) Medical Research Council 1994. All rights reserved. * * Permission to use, copy, modify and distribute this software and its * documentation for any purpose is hereby granted without fee, provided that * this copyright and notice appears in all copies. * * This file was written by James Bonfield, Simon Dear, Rodger Staden, * as part of the Staden Package at the MRC Laboratory of Molecular * Biology, Hills Road, Cambridge, CB2 2QH, United Kingdom. * * MRC disclaims all warranties with regard to this software. */ /* * Title: seqIOALF * * File: seqIOALF.c * Purpose: IO of ALF sequences * Last update: 9th September 1994 */ /* * Change Log :- * 14.01.91 SD * when complimenting the sequence with an odd number of bases, * the middle base position was not adjusted. * 15.01.91 SD Put StLouis stuff on compilation flag * 15.01.91 SD New include file (opp.h) * 02.08.91 SD Changes the mapping of uncertainty codes so that we * now only generate A C G T and - * Previously... bug in interpreting ALF integer fields. * We now treat them as unsigned. * 17.09.91 LFW changed STLOUIS compilation flag to SAVE_EDITS * and AUTO_CLIP * 25.10.91 SD Machine independant I/O...removed BIGENDIAN flag * 25.11.91 SD There was a hard limit (of 1024) for allocation of * space for number of bases, yet program would * read in more if there were any, causing nasties to happen. * * 11.11.92 LFW added section to actually check that the trace it * is trying to open is an ALF file using traceType sub * * 10.11.92 SD SCF comments now stored in seq data structure * 09.09.94 JKB Update to use Read instead of Seq library. * 04.03.98 JKB Look for "Raw data" when "Processed data" is not found. */ /* RMD I made substantial changes to this file 12/28/90 so as to * read sequence data more freely (necessary when reading data from * multiple trace files). * The affected area is indicated by comments starting RMD, like * this one. */ /* This file was adapted by LFW from seqIOABI.c. * The ALF results file is a concatenation of many files with an * index structure at the beginning, consisting of a 512 byte * block that we ignore, followed by 128 byte blocks describing * each file. All files, including the header region, are rounded * up to a multiple of 512 bytes long. * The getIndexEntry routines identify the 128 byte index component * of interest by matching 4 chars of its ASCII label, then extract * the field of choice from that entry. * * Note that the SUN and PC are of opposite endian-ness, so that * we have to provide special routines to read words and longwords * from the results file. Luckily the floating point numbers are * written out in ASCII. */ /* ---- Imports ---- */ #ifdef HAVE_CONFIG_H #include "io_lib_config.h" #endif #include #include #include #include "io_lib/stdio_hack.h" #include "io_lib/Read.h" #include "io_lib/mach-io.h" #include "io_lib/xalloc.h" /* ---- Constants ---- */ #define BasesPerLine 50 /* For output formatting */ #define IndexEntryLength ((off_t)128) /* * Here are some labels we will be looking for, four chars packed * into a long word. */ #define EntryLabel ((uint_4) ((((('A'<<8)+'L')<<8)+'F')<<8)+' ') #define BaseEntryLabel ((uint_4) ((((('S'<<8)+'e')<<8)+'q')<<8)+'u') #define DataEntryLabel ((uint_4) ((((('P'<<8)+'r')<<8)+'o')<<8)+'c') #define RawDataEntryLabel ((uint_4) ((((('R'<<8)+'a')<<8)+'w')<<8)+' ') /* RMD make enough space for bases - hard limit */ #define BASELIMIT 4096 /* ---- Internal functions ---- */ /* * From the ALF results file connected to `fp' whose index starts * at byte offset `indexO', return in `val' the `lw'th long word * from the entry labelled `label'. * The result is 0 for failure, 1 for success. */ static int getIndexEntryLW(FILE *fp, off_t indexO, uint_4 label, int lw, uint_4 *val) { off_t entryNum=-1; int i; uint_4 entryLabel; do { entryNum++; if (fseek(fp, indexO+(entryNum*IndexEntryLength), 0) != 0) return 0; if (!be_read_int_4(fp, &entryLabel)) return 0; } while (!(entryLabel == label)); for(i=2; ibase[numBases] = ch; read->prob_A[numBases] = 0; read->prob_C[numBases] = 0; read->prob_G[numBases] = 0; read->prob_T[numBases] = 0; read->basePos[numBases] = bp; ++numBases; } } read->base[numBases] = 0; read->NBases = numBases; } /************************************************************* * Read the trace information *************************************************************/ if (sections & READ_SAMPLES) { /* * Traces are stored as 2 byte integers in records in the order of * A C G T A C G T ... */ if (fseek(fp, (off_t)(dataO+header_size), 0) != 0) goto bail_out; num_points = 0; for (i=0; i < read->NPoints; i++) { if (!le_read_int_2(fp, &(read->traceA[i]))) goto bail_out; if (read->maxTraceVal < read->traceA[i]) read->maxTraceVal = read->traceA[i]; if (!le_read_int_2(fp, &(read->traceC[i]))) goto bail_out; if (read->maxTraceVal < read->traceC[i]) read->maxTraceVal = read->traceC[i]; if (!le_read_int_2(fp, &(read->traceG[i]))) goto bail_out; if (read->maxTraceVal < read->traceG[i]) read->maxTraceVal = read->traceG[i]; if (!le_read_int_2(fp, &(read->traceT[i]))) goto bail_out; if (read->maxTraceVal < read->traceT[i]) read->maxTraceVal = read->traceT[i]; if (read->traceA[i]==0 && read->traceT[i]==0 && read->traceC[i]==0 && read->traceG[i]==0 && i > (numPoints-64)) break; num_points++; } } /* SUCCESS */ read->format = TT_ALF; return(read); /* FAILURE */ bail_out: if (read) read_deallocate(read); return NULLRead; } /* * Read the ALF format sequence with name `fn' into a Read structure. * All printing characters (as defined by ANSII C `isprint') * are accepted, but `N's are translated to `-'s. In this respect we * are adhering (more or less) to the CSET_DEFAULT uncertainty code set. * * Returns: * Read * - Success, the Read structure read. * NULLRead - Failure. */ Read *read_alf(char *fn) { FILE *fp; Read *read; /* Open file */ if ((fp = fopen(fn, "rb")) == NULL) return NULLRead; read = fread_alf(fp); fclose(fp); if (read && (read->trace_name = (char *)xmalloc(strlen(fn)+1))) strcpy(read->trace_name, fn); return read; } /* * Write to an ALF file - unsupported. */ /* ARGSUSED */ int write_alf(char *fn, Read *read) { fprintf(stderr, "ALF write support is unavailable\n"); return -1; } /* * Write to an ALF file - unsupported. */ /* ARGSUSED */ int fwrite_alf(FILE *fp, Read *read) { fprintf(stderr, "ALF write support is unavailable\n"); return -1; } io_lib-1.14.6/io_lib/expFileIO.c0000644000031500020650000007717212354177666013241 00000000000000/* * Copyright (c) 2004-2005, 2007, 2010, 2013 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * Author(s): Simon Dear, James Bonfield, Rodger Staden, John Taylor * * Copyright (c) 1994-1999, 2001-2003 MEDICAL RESEARCH COUNCIL * All rights reserved * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1 Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2 Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3 Neither the name of the MEDICAL RESEARCH COUNCIL, THE LABORATORY OF * MOLECULAR BIOLOGY nor the names of its contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * Copyright (c) Medical Research Council 1994. All rights reserved. * * Permission to use, copy, modify and distribute this software and its * documentation for any purpose is hereby granted without fee, provided that * this copyright and notice appears in all copies. * * This file was written by James Bonfield, Simon Dear, Rodger Staden, * as part of the Staden Package at the MRC Laboratory of Molecular * Biology, Hills Road, Cambridge, CB2 2QH, United Kingdom. * * MRC disclaims all warranties with regard to this software. */ /* * File: expFileIO.c * Version: * * Description: Routines for reading and writing to experiment files. * * 1. Opening experiment files * 2. Reading information from an experiment file * 3. Appending to experiment files * 4. Closing an opened experiment file * * Created: * Updated: * */ /* * Tag format: * * 0 10 * |----.----|- * TG TYPE S position..length * TG One or more comment lines starting at character position 10 * TG Each line represents a line of tag. * TG Extra indentation is simply added to the comment. * * Where S is the strand, either "+", "-", or "=" (both). * Eg: * * TG COMM = 100..110 * TG This comment contains * TG several lines. * * So the above is a COMMent tag on both strands from bases 100 to 110 * inclusive containing the annotation * "This comment contains\n several lines.\n" * * This is written using exp_put_str giving the multi line string: * "COMM = 100..110\nThis comment contains\n several lines." * * (ie the indentation is added by the experiment file format, not by the * calling routines. Similarly this indentation is stripped out again when * reading back.) */ #ifdef HAVE_CONFIG_H #include "io_lib_config.h" #endif #include #include /* IMPORT: strdup (hopefully!) */ #include /* 6/1/99 johnt - includes needed for Visual C++ */ #ifdef _MSC_VER # include # include #endif #include "io_lib/expFileIO.h" #include "io_lib/xalloc.h" #include "io_lib/misc.h" #include "io_lib/stdio_hack.h" /* Fixup for broken SunOS 4.x systems */ #ifndef FOPEN_MAX #define FOPEN_MAX 20 #endif static int exp_check_eid_read(Exp_info *e,int id); /************************************************************* * Line types for experiment file *************************************************************/ char eflt_feature_ids[MAXIMUM_EFLTS][MAXIMUM_EFLT_LENGTH+1] = { "CF", /* 0 cloning vector sequence file */ "CN", /* 1 clone name */ "CS", /* 2 cloning vector sequence present in sequence */ "CV", /* 3 cloning vector type */ "DR", /* 4 direction of read */ "DT", /* 5 date of experiment */ "EN", /* 6 experiment name */ "EX", /* 7 experimental notes */ "FM", /* 8 sequencing vector fragmentation method */ "LN", /* 9 local format trace file name */ "LT", /* 10 local format trace file type */ "MC", /* 11 machine on which experiment ran */ "MN", /* 12 machine generated trace file name */ "MT", /* 13 machine generated trace file type */ "OP", /* 14 operator */ "PN", /* 15 primer name */ "QR", /* 16 poor quality sequence present at right (3') end */ "SC", /* 17 sequencing vector cloning site */ "SF", /* 18 sequencing vector sequence file */ "SI", /* 19 sequencing vector insertion length */ "SL", /* 20 sequencing vector present at left (5') end */ "SP", /* 21 sequencing vector primer site (relative to cloning site) */ "SQ", /* 22 sequence */ "SR", /* 23 sequencing vector present at right (3') end */ "ST", /* 24 strands */ "SV", /* 25 sequencing vector type */ "TN", /* 26 template name */ "QL", /* 27 poor quality sequence present at left (5') end */ "PS", /* 28 processing status */ "CC", /* 29 comments */ "SS", /* 30 sequence to screen against */ /* added 27-May-93 */ "TG", /* 31 gel tag line */ "ID", /* 32 identifier */ /* added 24-Sep-93 */ "AQ", /* 33 average quality measure */ /* added 15-Oct-93 */ "PR", /* 34 primer type */ "LI", /* 35 subclone library (mtd) */ "LE", /* 36 subclone library entry (well) */ /* added 19-Apr-94 */ "TC", /* 37 contig tag line */ "AC", /* 38 accession number */ /* added 11-Nov-94 */ "BC", /* 39 base calling software */ "ON", /* 40 original base numbers (positions) */ "AV", /* 41 accuracy (quality) values */ "PC", /* 42 position in contig */ "SE", /* 43 sense, whether it is complemented */ /* added 5-4-95 */ "CL", /* 44 cloning vector left end*/ "CR", /* 45 cloning vector right end*/ "AP", /* 46 assembly position */ "CH", /* 47 special chemistry used (eg taq) */ "PD", /* 48 primer data - the sequence of a primer */ "WT", /* 49 wild type trace */ "NT", /* 50 note */ "GD", /* 51 Gap4 database file */ "WL", /* 52 wildtype trace left clip point */ "WR", /* 53 wildtype trace right clip point */ "FT", /* 54 EMBL format feature table */ "LG" /* 55 LiGation: an amalgamation of LI and LE */ }; /************************************************************* * Output/update lines *************************************************************/ static int exp_print_line_(FILE *fp, char *eflt, char *entry) /* * Output an experiment file line */ { return fprintf(fp, "%-5s%s\n", eflt, entry ) < 0; } int exp_print_line(FILE *fp, Exp_info *e, int eflt, int i) /* * Output an experiment file line */ { return exp_print_line_(fp, eflt_feature_ids[eflt], arr(char *,e->entries[eflt],i) ); } /* * Outputs a multi-line experiment file line. * Continuation lines are automatically added by adding 5 characters of extra * indentation at the start of each continuation. * * returns -1 for failure, 0 for success. */ int exp_print_mline(FILE *fp, Exp_info *e, int eflt, int i) { char *p, *c; p = arr(char *, e->entries[eflt], i); /* first line */ if ((c = strchr(p, '\n'))) *c = '\0'; if (-1 == exp_print_line_(fp, eflt_feature_ids[eflt], p)) return -1; while (c) { *c = '\n'; p = c+1; if ((c = strchr(p, '\n'))) { *c = '\0'; } if (-1 == fprintf(fp, "%-10s%s\n", eflt_feature_ids[eflt], p)) return -1; } return 0; } int exp_print_seq(FILE *fp, Exp_info *e, int eflt, int i) /* * Output an experiment file multi line */ { int j, l; char *seq; if (fprintf(fp,"%-5s",eflt_feature_ids[eflt])<0) return 1; l = strlen(seq = arr(char *,e->entries[eflt],i)); for(j=0;jNentries[i] = 0; new->entries[i] = ArrayCreate(sizeof(char *), 1/*one entry*/); } new->fp = NULL; } return new; } void exp_destroy_info(Exp_info *e) /* * Destroy experiment file information */ { int i; int j; if (e != NULL_Exp_info) { for (i = 0; i < MAXIMUM_EFLTS; i++) { Array a = e->entries[i]; for(j=0;jNentries[i];j++) if (arr(char *,a,j) != NULL) xfree(arr(char *,a,j)); ArrayDestroy(a); } if (e->fp != NULL) fclose(e->fp); xfree(e); } } /* * Read from file a sequence, discarding all white space til a // is * encountered */ static char *exp_read_sequence(FILE *fp) { char *seq = NULL; size_t seq_len = 0, seq_alloc; char line[EXP_FILE_LINE_LENGTH+1]; char *l; static int valid_char[256], init = 0; /* Initialise lookup tables for efficiency later on.*/ if (!init) { int i; for (i = 0; i < 256; i++) { if (i < 128 && !isspace(i) && !isdigit(i) && !iscntrl(i)) valid_char[i] = 1; else valid_char[i] = 0; } init = 1; } /* Initialise memory */ seq_alloc = EXP_FILE_LINE_LENGTH * 8; seq = (char *)xmalloc(seq_alloc); if (NULL == seq) return NULL; seq[0] = '\0'; /* Reading line by line, until we get "//" */ l = fgets(line,EXP_FILE_LINE_LENGTH,fp); while (l!= NULL && strncmp(l,"//",2)) { char *a, *b; /* make sure the seq buffer is large enough */ if (seq_len + EXP_FILE_LINE_LENGTH + 1 > seq_alloc) { seq_alloc *= 2; if (NULL == (seq = (char *)xrealloc(seq, seq_alloc))) return NULL; } /* copy to seq, stripping spaces on the fly */ for(a=line, b = &seq[seq_len]; *a; a++) if (valid_char[(unsigned char)*a]) *b++ = *a; *b = '\0'; seq_len = b-seq; l = fgets(line,EXP_FILE_LINE_LENGTH,fp); } /* Shrink the allocated string to reduce memory usage */ seq = (char *)xrealloc(seq, seq_len + 1); return seq; } /* * Converts the opos[] array into a char array. * In doing so this shrinks the data size by using a .. notation. * No check is made that buf is large enough. It is recommended that buf is * allocated to 5*len which covers the worst case (for sequences less that * 9999 bases long). * * Note that on older systems sprintf may return the first argument rather * than the number of characters written. * For this reason we have to do the counting ourselves. */ char *opos2str(int2 *opos, int len, char *buf) { int i, st, f, dir = 0; char *r = buf, *rs = buf; f = opos[st = 0]; for (i = 1; i < len; f=opos[i++]) { if (dir == 0) { if (opos[i] == f+1) dir=1; else if (opos[i] == f-1) dir=-1; } if (dir && opos[i] != f + dir) { if (st != i-1) sprintf(buf, "%d..%d ", opos[st], opos[i-1]); else sprintf(buf, "%d ", opos[st]); st = i; dir = 0; buf += strlen(buf); } else if (dir == 0) { sprintf(buf, "%d ", f); st = i; buf += strlen(buf); } if (buf - rs > 60) { *buf++ = '\n'; *buf = '\0'; rs = buf - 6; } } if (st != i-1) sprintf(buf, "%d..%d", opos[st], opos[i-1]); else sprintf(buf, "%d", opos[st]); return r; } /* * Expands from the character string .. notation to the opos[] array, up to * a maximum of len elements in opos[]. * * Returns the length of the opos array. */ int str2opos(int2 *opos, int len, char *buf) { /* int i, n1, n2, st, en, m, j = 0; */ int i, j = 0, st, en; char *cp; while (j < len && *buf) { st = strtol(buf, &cp, 10); if (buf == cp) { buf++; continue; } buf = cp; if (buf[0] == '.' && buf[1] == '.') { en = strtol(buf += 2, &cp, 10); if (buf == cp) { opos[j++] = st; buf++; continue; } buf = cp; if (en >= st) for (i = st; i <= en && j < len; i++) opos[j++] = i; else for (i = st; i >= en && j < len; i--) opos[j++] = i; } else { opos[j++] = st; } } return j; } /* * Converts the accuracy value string (AV) to the confidence array up to * a maximum of len elements in conf[]. * * The AV string is of format: * "x y z ..." where x, y and z are confidence values for the first three * called bases. Or: * "a,b,c,d e,f,g,h i,j,k,l ..." where the 4-tuples represent the four * confidence values for each base. * * Returns: number of confidence values read, or -1 for error. */ int str2conf(int1 *conf, int len, char *buf) { int ind = 0; while (*buf && ind < len) { char *new_buf; int val1; val1 = strtol(buf, &new_buf, 10); if (new_buf == buf) break; if (*new_buf == ',') { fprintf(stderr, "4-tuple system is currently unsupported\n"); return -1; } conf[ind++] = val1; buf = new_buf; } return ind; } /* * Converts the confidence array to the accuracy value string (AV). * * Note no memory overrun checks are performed on buf. It is recommended * that it is allocated to 4*len (worst case of "255 " for each base) plus. * a couple of terminating newline and null plus another byte per 15 values * to allow for the 60-char line length. * For ease, allocating to 5*len+2 is more than sufficient. * * Returns the buf argument. */ char *conf2str(int1 *conf, int len, char *buf) { int i; char *ret = buf, *rs = buf; for (i = 0; i < len; i++) { sprintf(buf, "%d ", conf[i]); buf += strlen(buf); if (buf - rs > 60) { *buf++ = '\n'; *buf = '\0'; rs = buf - 6; } } return ret; } /************************************************************* * Main C interface routines *************************************************************/ /* * Closes an experiment file (if open), but does not free it. */ void exp_close(Exp_info *e) { if (e->fp) { fclose(e->fp); e->fp = NULL; } } Exp_info *exp_read_info(char *file) /* * Read in an experiment file and return handle */ { Exp_info *e; FILE *fp; /* * open for read */ if ((fp = fopen(file,"r"))==NULL) { return NULL_Exp_info; } e = exp_fread_info(fp); fclose(fp); if (NULL_Exp_info == e) { return NULL_Exp_info; } /* * reopen for appending */ e->fp = fopen(file,"a"); return e; } /* * Read in an experiment file and return handle */ Exp_info *exp_fread_info(FILE *fp) { Exp_info *e; char line[EXP_FILE_LINE_LENGTH+1]; char *aline; int alloced_length = EXP_FILE_LINE_LENGTH+1; int apos, len; int last_entry = -1; size_t entry_len = 0; e = exp_create_info(); /* * No longer has an effect due to mFILE already being loaded. Ifdef not * triggered under mingw anyway. */ #ifdef _WIN32 /* 6/1/99 johnt - need to ensure text mode to translate \r\n to \n */ /* _setmode(fileno(fp),_O_TEXT); */ mfascii(fp); #endif /* * open for read, set this temporarily in this function. Should be NULL * when exiting as this isn't our file pointer to own, but the destroy * function does attempt to automatically close it. */ e->fp = fp; if (NULL == (aline = (char *)xmalloc(alloced_length))) return NULL; if (e != NULL_Exp_info) { int at_end = 0; for(;;) { char *c; int entry; /* Read into aline, joining and allocating as necessary */ apos = 0; do { if (fgets(line,EXP_FILE_LINE_LENGTH,e->fp) == NULL) { at_end = 1; break; } len = strlen(line); if (apos + len >= alloced_length) { alloced_length *= 2; if (NULL == (aline = (char *)xrealloc(aline, alloced_length))) { e->fp = NULL; return NULL; } } strcpy(aline+apos, line); apos += len; } while (line[len-1] != '\n'); if (at_end) break; /* * zero terminate first argument * set c to point to second argument * * FIXME: c should point to character 6 always. Indentation is * important when considering continuation lines. */ for (c=aline;*c && !isspace(*c); c++) ; if (*c) { *c++ = '\0'; for (;*c && isspace(*c); c++) ; } entry = exp_get_feature_index(aline); if (entry >= 0) { /* * Tag lines may be split over multiple lines. If we have no * tag type then we append to the existing tag. */ if (entry == last_entry && (int)(c-aline) >= 10/* continuation lines */ && (entry == EFLT_TG || entry == EFLT_TC || entry == EFLT_ON || entry == EFLT_AV || entry == EFLT_NT || entry == EFLT_FT)) { char *en; size_t l1, l2; /* * Extend our current line by the appropriate amount */ if( exp_check_eid_read(e,entry) ) return NULL; en = exp_get_entry(e,entry); l1 = entry_len; l2 = strlen(&aline[10]); if (NULL == (en = exp_get_entry(e, entry) = (char *)xrealloc(en, l1 + l2 + 1))) { e->fp = NULL; return NULL; } /* * Append the new line (without the \n char) */ en[l1] = '\n'; aline[l2+9] = '\0'; strcpy(&en[l1+1], &aline[10]); entry_len += l2; } else { /* * Increment number of entries for line type entry * This will force exp_get_entry() to return pointer to * next free element in array */ (void)ArrayRef(e->entries[entry],e->Nentries[entry]++); if (entry == EFLT_SQ) exp_get_entry(e,entry) = exp_read_sequence(e->fp); else { char *eoln = strchr(c,'\n'); int i; if (eoln!=NULL) *eoln='\0'; if (entry == EFLT_LT) for (i=3; isspace(c[i]) && i >= 0; c[i--]='\0'); exp_get_entry(e,entry) = (char *)strdup(c); entry_len = strlen(c); } } } last_entry = entry; } } e->fp = NULL; xfree(aline); return e; } static int exp_check_eid_read(Exp_info *e,int id) /* * Check these are a valid combination and that * an entry exists for read */ { return ( e == NULL || id < 0 || id >= MAXIMUM_EFLTS || e->Nentries[id] == 0 || eflt_feature_ids[id][0]=='\0' ); } static int exp_check_eid_write(Exp_info *e,int id) /* * Check these are a valid combination and that * an entry exists for write */ { return (e == NULL || id < 0 || id >= MAXIMUM_EFLTS || e->fp == NULL || eflt_feature_ids[id][0]=='\0'); } int exp_get_int(Exp_info *e, int id, int *val) /* * Get the integer for entry id * returns: * 0 - success * 1 - no entry */ { if ( exp_check_eid_read(e,id) ) return 1; *val = atoi(exp_get_entry(e,id)); return 0; } int exp_get_rng(Exp_info *e, int id, int *from, int *to) /* * Get the integer pair for entry id * returns: * 0 - success * 1 - no entry */ { if ( exp_check_eid_read(e,id) ) return 1; (void)exp_extract_range(exp_get_entry(e,id), from, to); return 0; } int exp_get_str(Exp_info *e, int id, char *s, f_implicit s_l) /* * Get the string for entry id * returns: * 0 - success * 1 - no entry */ { if ( exp_check_eid_read(e,id) ) return 1; strncpy(s,exp_get_entry(e,id),s_l); return 0; } static int exp_append_str(Exp_info *e, int id, char *s, int len) /* * Append the string to experiment file for entry id * returns: * 0 - success * 1 - no update */ { (void)ArrayRef(e->entries[id],e->Nentries[id]++); exp_get_entry(e,id) = (char *)xmalloc(len+1); strncpy(exp_get_entry(e,id), s, len); exp_get_entry(e,id)[len] = '\0'; if ( id == EFLT_SQ ) return exp_print_seq(e->fp,e,id,e->Nentries[id]-1); else if (id == EFLT_TG || id == EFLT_TC || id == EFLT_ON || id == EFLT_AV || id == EFLT_NT || id == EFLT_FT) return exp_print_mline(e->fp,e,id,e->Nentries[id]-1); else return exp_print_line(e->fp,e,id,e->Nentries[id]-1); } int exp_put_int(Exp_info *e, int id, int *val) /* * Append the integer for entry id to the experiment file * returns: * 0 - success * 1 - no update */ { char buf[EXP_FILE_LINE_LENGTH]; if ( exp_check_eid_write(e,id) ) return 1; sprintf(buf,"%d",*val); return exp_append_str(e,id,buf,strlen(buf)); } int exp_put_rng(Exp_info *e, int id, int *from, int *to) /* * Append the integer pair for entry id to the experiment file * returns: * 0 - success * 1 - no update */ { char buf[EXP_FILE_LINE_LENGTH]; if ( exp_check_eid_write(e,id) ) return 1; (void )exp_create_range(buf, *from, *to); return exp_append_str(e,id,buf,strlen(buf)); } int exp_put_str(Exp_info *e, int id, char *s, f_implicit s_l) /* * Append the string for entry id to the experiment file * returns: * 0 - success * 1 - no update */ { if ( exp_check_eid_write(e,id) ) return 1; return exp_append_str(e,id,s,s_l); } /************************************************************* * FORTRAN INTERFACE *************************************************************/ static int init_done = 0; static int NHandles = 0; static Exp_info **Handles = NULL; static int initialise(void) { int i; if (init_done) return 0; init_done++; NHandles = FOPEN_MAX; if ( (Handles = (Exp_info **)xmalloc(sizeof(Exp_info *) * NHandles)) == NULL) { NHandles = 0; return 1; } for (i=0; i NHandles); } f_int expopn_(char *fn, f_implicit fn_l) /* * FORTRAN interface to exp_open_file() */ { char cfn[1025]; int handle; if ( (handle = get_free_handle()) >= 0 ) { f2cstr(fn,fn_l,cfn,1024); Handles[handle] = exp_read_info(cfn); } return (f_int) (handle+1); } f_proc_ret expkil_(f_int *handle) /* * FORTRAN interface to exp_destroy_info */ { Exp_info *e; if ( check_handle(handle) ) f_proc_return(); e = (Exp_info *) Handles[(int)(*handle)-1]; exp_destroy_info(e); Handles[(int)(*handle)-1] = NULL; *handle = 0; f_proc_return(); } f_int expri_(f_int *handle, f_int *id, f_int *val) /* * FORTRAN interface to exp_get_int */ { Exp_info *e; if ( check_handle(handle) ) return 1; e = (Exp_info *) Handles[(int)(*handle)-1]; return exp_get_int(e, (int)*id, (int *)val); } f_int exprr_(f_int *handle, f_int *id, f_int *from, f_int *to) /* * FORTRAN interface to exp_get_rng */ { Exp_info *e; if ( check_handle(handle) ) return 1; e = (Exp_info *) Handles[(int)(*handle)-1]; return exp_get_rng(e,(int)*id,(int *)from,(int *)to); } /* ARGSUSED */ f_int exprsa_(f_int *handle, f_int *id, char *s, f_int *max_len, f_implicit s_l) /* * FORTRAN interface to exp_get_str workalike * NOTE: for use with FORTRAN CHARACTER arrays instead CHARACTER strings */ { Exp_info *e; if ( check_handle(handle) ) return 1; e = (Exp_info *) Handles[(int)(*handle)-1]; if ( exp_check_eid_read(e,*id) ) return 1; c2fstr(exp_get_entry(e,*id),(int)*max_len,s,(int)*max_len); return 0; } f_int exprs_(f_int *handle, f_int *id, char *s, f_implicit s_l) /* * FORTRAN interface to exp_get_str workalike * NOTE: for use with FORTRAN CHARACTER strings instead CHARACTER arrays */ { Exp_info *e; if ( check_handle(handle) ) return 1; e = (Exp_info *) Handles[(int)(*handle)-1]; if ( exp_check_eid_read(e,*id) ) return 1; c2fstr(exp_get_entry(e,*id),s_l,s,s_l); return 0; } f_int expwi_(f_int *handle, f_int *id, f_int *val) /* * FORTRAN interface to exp_put_int */ { Exp_info *e; if ( check_handle(handle) ) return 1; e = (Exp_info *) Handles[(int)(*handle)-1]; return exp_put_int(e, (int)*id, (int *)val); } f_int expwr_(f_int *handle, f_int *id, f_int *from, f_int *to) /* * FORTRAN interface to exp_put_rng */ { Exp_info *e; if ( check_handle(handle) ) return 1; e = (Exp_info *) Handles[(int)(*handle)-1]; return exp_put_rng(e, (int)*id, (int *)from, (int *)to); } /* ARGSUSED */ f_int expwsa_(f_int *handle, f_int *id, char *s, f_int *max_len, f_implicit s_l) /* * FORTRAN interface to exp_put_str workalike * NOTE: for use with FORTRAN CHARACTER arrays instead CHARACTER strings */ { Exp_info *e; char buf[EXP_FILE_LINE_LENGTH]; if ( check_handle(handle) ) return 1; e = (Exp_info *) Handles[(int)(*handle)-1]; if ( exp_check_eid_write(e,*id) ) return 1; /* don't allow multi-line entries to be written */ if (*id == EFLT_SQ ) return 1; f2cstr(s,(int)*max_len,buf,sizeof(buf)); return exp_append_str(e,*id,buf,strlen(buf)); } f_int expws_(f_int *handle, f_int *id, char *s, f_implicit s_l) /* * FORTRAN interface to exp_put_str workalike * NOTE: for use with FORTRAN CHARACTER strings instead CHARACTER arrays */ { char buf[EXP_FILE_LINE_LENGTH]; Exp_info *e; if ( check_handle(handle) ) return 1; e = (Exp_info *) Handles[(int)(*handle)-1]; if ( exp_check_eid_write(e,*id) ) return 1; /* don't allow multi-line entries to be written */ if (*id == EFLT_SQ ) return 1; f2cstr(s,s_l,buf,sizeof(buf)); return exp_append_str(e,*id,buf,s_l); } /* * FORTRAN interface to exp_create_range() */ void expcr_(char *str, f_int *start, f_int *end, f_implicit str_l) { exp_create_range(str, *start, *end); c2fstr(str, str_l, str, str_l); f_proc_return(); } /* * FORTRAN interface to exp_extract_range() */ /* ARGSUSED */ f_int exper_(char *str, f_int *start, f_int *end, f_implicit str_l) { return exp_extract_range(str, start, end); } /************************************************************* * Go for it! *************************************************************/ static void print_line(FILE *fp, Exp_info *e, int eflt, int all) { if (all) { int i; for(i=0;iNentries[eflt];i++) exp_print_line(fp,e,eflt,i); } else if (e->Nentries[eflt] > 0) { exp_print_line(fp,e,eflt,e->Nentries[eflt]-1); } } static void print_mline(FILE *fp, Exp_info *e, int eflt, int all) { if (all) { int i; for(i=0;iNentries[eflt];i++) exp_print_mline(fp,e,eflt,i); } else if (e->Nentries[eflt] > 0) { exp_print_mline(fp,e,eflt,e->Nentries[eflt]-1); } } static void print_seq(FILE *fp, Exp_info *e, int eflt) { if (e->Nentries[eflt] > 0) exp_print_seq(fp,e,eflt,e->Nentries[eflt]-1); } void exp_print_file(FILE *fp, Exp_info *e) { print_line(fp,e,EFLT_ID, 0); print_line(fp,e,EFLT_AC, 0); print_line(fp,e,EFLT_EN, 0); print_line(fp,e,EFLT_CC, 1); print_line(fp,e,EFLT_EX, 1); print_line(fp,e,EFLT_PS, 1); print_line(fp,e,EFLT_LN, 0); print_line(fp,e,EFLT_LT, 0); print_line(fp,e,EFLT_CF, 0); print_line(fp,e,EFLT_CV, 0); print_line(fp,e,EFLT_CS, 0); print_line(fp,e,EFLT_CL, 0); print_line(fp,e,EFLT_CR, 0); print_line(fp,e,EFLT_SF, 0); print_line(fp,e,EFLT_SV, 0); print_line(fp,e,EFLT_SI, 0); print_line(fp,e,EFLT_SC, 0); print_line(fp,e,EFLT_SP, 0); print_line(fp,e,EFLT_PD, 0); print_line(fp,e,EFLT_FM, 0); print_line(fp,e,EFLT_SL, 0); print_line(fp,e,EFLT_SR, 0); print_line(fp,e,EFLT_QL, 0); print_line(fp,e,EFLT_QR, 0); print_mline(fp,e,EFLT_TG,1); print_mline(fp,e,EFLT_TC,1); print_mline(fp,e,EFLT_NT,1); print_line(fp,e,EFLT_CN, 0); print_line(fp,e,EFLT_TN, 0); print_line(fp,e,EFLT_PN, 0); print_line(fp,e,EFLT_PR, 0); print_line(fp,e,EFLT_LI, 0); print_line(fp,e,EFLT_LE, 0); print_line(fp,e,EFLT_CH, 0); print_mline(fp,e,EFLT_ON,0); print_line(fp,e,EFLT_AQ, 0); print_mline(fp,e,EFLT_AV,0); print_line(fp,e,EFLT_DR, 0); print_line(fp,e,EFLT_SE, 0); print_line(fp,e,EFLT_PC, 0); print_line(fp,e,EFLT_AP, 0); print_line(fp,e,EFLT_ST, 0); print_line(fp,e,EFLT_DT, 0); print_line(fp,e,EFLT_MC, 0); print_line(fp,e,EFLT_MN, 0); print_line(fp,e,EFLT_MT, 0); print_line(fp,e,EFLT_OP, 1); print_line(fp,e,EFLT_BC, 0); print_line(fp,e,EFLT_SS, 0); print_line(fp,e,EFLT_WT, 0); print_line(fp,e,EFLT_WL, 0); print_line(fp,e,EFLT_WR, 0); print_mline(fp,e,EFLT_FT,1); print_seq (fp,e,EFLT_SQ); } /* * Allocate an set a new experiment file entry */ char *exp_set_entry(Exp_info *e, int eflt, char *str) { char *s; size_t l; if (NULL == ArrayRef(e->entries[eflt], e->Nentries[eflt])) return NULL; else e->Nentries[eflt]++; l = strlen(str); if (NULL == (s = exp_get_entry(e, eflt) = (char *)xmalloc(l+1))) { e->Nentries[eflt]--; return NULL; } strcpy(s, str); return s; } io_lib-1.14.6/io_lib/seqIOPlain.c0000644000031500020650000002250312354177666013405 00000000000000/* * Copyright (c) 2005, 2007, 2010, 2013 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * Author(s): Simon Dear, James Bonfield * * Copyright (c) 1991-1992, 1996-1998 MEDICAL RESEARCH COUNCIL * All rights reserved * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1 Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2 Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3 Neither the name of the MEDICAL RESEARCH COUNCIL, THE LABORATORY OF * MOLECULAR BIOLOGY nor the names of its contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * Copyright (c) Medical Research Council 1994. All rights reserved. * * Permission to use, copy, modify and distribute this software and its * documentation for any purpose is hereby granted without fee, provided that * this copyright and notice appears in all copies. * * This file was written by James Bonfield, Simon Dear, Rodger Staden, * as part of the Staden Package at the MRC Laboratory of Molecular * Biology, Hills Road, Cambridge, CB2 2QH, United Kingdom. * * MRC disclaims all warranties with regard to this software. */ /* Title: seqIOPlain File: seqIOPlain.c Purpose: IO of plain sequences Last update: Tuesday Jan 15 1991 Change log: 28.11.90 SD put undesirables under STLOUIS compilation flag 15.01.91 SD new include file (opp.h) 17.09.91 LFW changed STLOUIS compilation flag to SAVE_EDITS and AUTO_CLIP 08.09.94 JKB Plain files now also uses the ';<' and ';>' lines. 09.09.94 JKB Update to use Read instead of Seq library. 01.06.07 JKB Supports single-read fasta files; about time too! */ #define LINE_LENGTH 60 /* * This module should be regarded as part of `read' since it is * privy to the internal structure of `Read'. * * This library also requires use of the mach-io code for the endian * independent machine IO. * * Any references to the writing or reading of edited sequences, * or to the bottom strand were added by lfw */ /* ---- Imports ---- */ #ifdef HAVE_CONFIG_H #include "io_lib_config.h" #endif #include /* IMPORT: fopen, fclose, fseek, ftell, fgetc */ #include /* IMPORT: isprint */ #include #include "io_lib/misc.h" #include "io_lib/plain.h" #include "io_lib/Read.h" #include "io_lib/xalloc.h" #include "io_lib/traceType.h" #include "io_lib/stdio_hack.h" /* ---- Constants ---- */ #define BasesPerLine 50 /* For output formatting */ /* ---- Exports ---- */ /* * Read the plain format sequence from FILE *fp into a Read structure. * All printing characters (as defined by ANSII C `isprint') * are accepted, but `N's are translated to `-'s. * * Returns: * Read * - Success, the Read structure read. * NULLRead - Failure. */ Read *fread_pln(FILE *fp) { Read *read = NULLRead; off_t fileLen; int ch; char *leftc, *rightc, *leftcp, *rightcp; int first = 1; /* * Find the length of the file. * Use this as an overestimate of the length of the sequence. */ fseek(fp, (off_t) 0, 2); if ((fileLen = ftell(fp)) > INT_MAX /*Was MAXINT2*/) goto bail_out; fseek(fp, (off_t) 0, 0); /* Allocate the sequence */ if (NULLRead == (read = read_allocate(0, fileLen))) goto bail_out; if (NULL == (leftc = (char *)xmalloc(fileLen))) goto bail_out; if (NULL == (rightc = (char *)xmalloc(fileLen))) goto bail_out; leftcp = leftc; rightcp = rightc; /* Read in the bases */ read->NBases = 0; read->format = TT_PLN; while ((ch = fgetc(fp)) != EOF) { if (ch == '>') { /* Fasta format file - skip the header and load the first * fasta sequence only. We don't even attempt to worry about * multi-sequence file formats for now. */ if (!first) break; while(ch != '\n' && ch != EOF) ch = fgetc(fp); } else if (ch==';') { /* * ;< is left cutoff, * ;> is right cutoff. * Any other ';'s we can treat as a comments. */ ch = fgetc(fp); if (first == 1 && ch != '<' && ch != '>') { int d; char type[5], name[17], line[1024]; line[0] = ch; fgets(&line[1], 1022, fp); if (5 == sscanf(line, "%6d%6d%6d%4c%s", &d, &d, &d, type, name)) { char * p; if ((p = strchr(type, ' '))) *p = 0; read->format = trace_type_str2int(type); read->trace_name = (char *)xmalloc(strlen(name)+1); if (read->trace_name) strcpy(read->trace_name, name); } } else if (ch == '<') { ch = fgetc(fp); while (ch != '\n') { *leftcp++ = ch; ch = fgetc(fp); } } else if (ch == '>') { ch = fgetc(fp); while (ch != '\n') { *rightcp++ = ch; ch = fgetc(fp); } } else { while(ch != '\n' && ch != EOF) ch = fgetc(fp); } } else if (isprint(ch) && !isspace(ch)) { read->base[read->NBases++] = ((ch)=='N') ? '-' : (ch); } first = 0; } *leftcp = *rightcp = 0; read->leftCutoff = strlen(leftc); read->rightCutoff = read->leftCutoff + read->NBases + 1; memmove(&read->base[read->leftCutoff], read->base, read->NBases); memmove(read->base, leftc, read->leftCutoff); memmove(&read->base[read->leftCutoff + read->NBases], rightc, strlen(rightc)); read->NBases += read->leftCutoff + strlen(rightc); read->base[read->NBases] = 0; xfree(leftc); xfree(rightc); /* SUCCESS */ return(read); /* FAILURE */ bail_out: if (read) read_deallocate(read); return NULLRead; } /* * Read the plain format sequence with name `fn' into a Read structure. * All printing characters (as defined by ANSII C `isprint') * are accepted, but `N's are translated to `-'s. * * Returns: * Read * - Success, the Read structure read. * NULLRead - Failure. */ Read *read_pln(char *fn) { FILE *fp; Read *read; /* Open file */ if ((fp = fopen(fn, "r")) == NULL) return NULLRead; read = fread_pln(fp); fclose(fp); if (read && read->trace_name == NULL && (read->trace_name = (char *)xmalloc(strlen(fn)+1))) strcpy(read->trace_name, fn); return read; } /* * Write to a Plain file */ int fwrite_pln(FILE *fp, Read *read) { int i, err = 0; for (i = 0; i < read->NBases; i += LINE_LENGTH) if (-1 == fprintf(fp, "%.*s\n", read->NBases - i > LINE_LENGTH ? LINE_LENGTH : read->NBases - i, &read->base[i])) err = 1; return err ? -1 : 0; } int write_pln(char *fn, Read *read) { FILE *fp; if ((fp = fopen(fn,"w")) == NULL) return -1; if (fwrite_pln(fp, read)) { fclose(fp); return -1; } fclose(fp); return 0; } io_lib-1.14.6/io_lib/misc_scf.c0000644000031500020650000002301212354177666013163 00000000000000/* * Copyright (c) 2005-2007, 2010 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * Author(s): James Bonfield * * Copyright (c) 1994-1996, 1998 MEDICAL RESEARCH COUNCIL * All rights reserved * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1 Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2 Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3 Neither the name of the MEDICAL RESEARCH COUNCIL, THE LABORATORY OF * MOLECULAR BIOLOGY nor the names of its contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * Copyright (c) Medical Research Council 1994. All rights reserved. * * Permission to use, copy, modify and distribute this software and its * documentation for any purpose is hereby granted without fee, provided that * this copyright and notice appears in all copies. * * This file was written by James Bonfield, Simon Dear, Rodger Staden, * as part of the Staden Package at the MRC Laboratory of Molecular * Biology, Hills Road, Cambridge, CB2 2QH, United Kingdom. * * MRC disclaims all warranties with regard to this software. */ /* Title: misc_scf.c Purpose: misc handling of Standard Chromatogram Format sequences Last update: August 18 1994 Change log: 18 Aug 1994 Creation from bits of {read,write}scf.c and new code. */ #ifdef HAVE_CONFIG_H #include "io_lib_config.h" #endif #include #include #include "io_lib/scf.h" #include "io_lib/mach-io.h" #include "io_lib/xalloc.h" #include "io_lib/stdio_hack.h" float scf_version_str2float(char version[]) { char v[5]; strncpy(v,version,4);v[4]='\0'; if (strspn(v,"0123456789. ")!=4) return 0.0; return (float)atof(v); } char *scf_version_float2str(float f) { static char v[5]; sprintf(v, "%1.2f", f); return v; } /* * Allocates memory for the scf elements based upon arguments passed. * Returns; * Scf * - Success. The scf structure and it's samples, bases, * and comments fields have been allocated. * NULL - Failure. */ Scf *scf_allocate(int num_samples, int sample_size, int num_bases, int comment_size, int private_size) { Scf *scf; scf = (Scf *)xcalloc(1, sizeof(Scf)); if (NULL == scf) return NULL; /* bases - +1 as a safety guard for when num_bases==0 */ scf->bases = (Bases *)xcalloc(sizeof(Bases), num_bases+1); if (NULL == scf->bases) return NULL; /* samples */ scf->header.sample_size = sample_size; if (scf->header.sample_size == 1) { scf->samples.samples1 = (Samples1 *)xmalloc(num_samples * sizeof(Samples1) + 1); } else { scf->samples.samples2 = (Samples2 *)xmalloc(num_samples * sizeof(Samples2) + 1); } if (NULL == scf->samples.samples1) { xfree(scf->bases); xfree(scf); return NULL; } /* comments */ if (comment_size) { scf->comments = (Comments *)xmalloc(sizeof(Comments) * (comment_size + 1)); if (NULL == scf->comments) { xfree(scf->bases); xfree(scf->samples.samples1); xfree(scf); return NULL; } } else scf->comments = NULL; /* private data */ if (private_size) { scf->private_data = (char *)xmalloc(private_size); if (NULL == scf->private_data) { xfree(scf->bases); xfree(scf->samples.samples1); if (scf->comments) xfree(scf->comments); xfree(scf); return NULL; } } else scf->private_data = NULL; return scf; } void scf_deallocate(Scf *scf) { xfree(scf->bases); xfree(scf->samples.samples1); if (scf->comments) xfree(scf->comments); if (scf->private_data) xfree(scf->private_data); xfree(scf); } int is_scf(char *fn) /* * Check to see if file with name `fn' is in SCF format * * Returns: * 1 - is SCF format * 0 - not SCF format *-1 - failure */ { FILE *fp; uint_4 magic; int ok; if ( (fp=fopen(fn,"rb")) == NULL) { ok = -1; } else { if ( be_read_int_4(fp, &magic) != 1 ) { ok = 0; } else { ok = (magic==SCF_MAGIC); } fclose(fp); } return ok; } void scf_delta_samples1 ( int1 samples[], int num_samples, int job) { /* If job == DELTA_IT: change a series of sample points to a series of delta delta values: ie change them first: delta = current_value - previous_value then delta_delta = delta - previous_delta else do the reverse */ int i; if ( DELTA_IT == job ) { #ifdef CLEAR_BUT_SLOW int1 p_delta, p_sample; p_delta = 0; for (i=0;i 1; i--) { samples[i] = samples[i] - 2*samples[i-1] + samples[i-2]; } samples[1] = samples[1] - 2*samples[0]; #endif } else { #ifdef CLEAR_BUT_SLOW int1 p_sample; p_sample = 0; for (i=0;i 1; i--) { samples[i] = samples[i] - 2*samples[i-1] + samples[i-2]; } samples[1] = samples[1] - 2*samples[0]; #endif } else { #ifdef CLEAR_BUT_SLOW register uint_2 p_sample; p_sample = 0; for (i=0;i #include /* IMPORT: fopen, fclose, fseek, ftell, fgetc, EOF */ #include #include #include #include "io_lib/mach-io.h" #include "io_lib/xalloc.h" #include "io_lib/compress.h" #include "io_lib/Read.h" #include "io_lib/stdio_hack.h" #include "io_lib/scf.h" /* SCF structures */ /* SunOS4 has it's definitions in unistd, which we won't include for compat. */ #ifndef SEEK_SET #define SEEK_SET 0 #define SEEK_CUR 1 #define SEEK_END 2 #endif /* ---- Exported functions ---- */ int read_scf_header(FILE *fp, Header *h) { int i; if (be_read_int_4(fp,&h->magic_number)==0) return -1; if (h->magic_number != SCF_MAGIC) return -1; if (be_read_int_4(fp,&h->samples)==0) return -1; if (be_read_int_4(fp,&h->samples_offset)==0) return -1; if (be_read_int_4(fp,&h->bases)==0) return -1; if (be_read_int_4(fp,&h->bases_left_clip)==0) return -1; if (be_read_int_4(fp,&h->bases_right_clip)==0) return -1; if (be_read_int_4(fp,&h->bases_offset)==0) return -1; if (be_read_int_4(fp,&h->comments_size)==0) return -1; if (be_read_int_4(fp,&h->comments_offset)==0) return -1; if (fread(&h->version[0],sizeof(h->version),1,fp)!=1) return -1; if (be_read_int_4(fp,&h->sample_size)==0) return -1; if (be_read_int_4(fp,&h->code_set)==0) return -1; if (be_read_int_4(fp,&h->private_size)==0) return -1; if (be_read_int_4(fp,&h->private_offset)==0) return -1; for (i=0;i<18;i++) if (be_read_int_4(fp,&h->spare[i])==0) return -1; return 0; } int read_scf_sample1(FILE *fp, Samples1 *s) { uint_1 buf[4]; if (4 != fread(buf, 1, 4, fp)) return -1; s->sample_A = buf[0]; s->sample_C = buf[1]; s->sample_G = buf[2]; s->sample_T = buf[3]; /* if (1 != fread(s, 4, 1, fp)) return -1; */ return 0; } int read_scf_sample2(FILE *fp, Samples2 *s) { uint_2 buf[4]; if (4 != fread(buf, 2, 4, fp)) return -1; s->sample_A = be_int2(buf[0]); s->sample_C = be_int2(buf[1]); s->sample_G = be_int2(buf[2]); s->sample_T = be_int2(buf[3]); return 0; } int read_scf_samples1(FILE *fp, Samples1 *s, size_t num_samples) { size_t i; for (i = 0; i < num_samples; i++) { if (-1 == read_scf_sample1(fp, &(s[i]))) return -1; } return 0; } int read_scf_samples2(FILE *fp, Samples2 *s, size_t num_samples) { size_t i; for (i = 0; i < num_samples; i++) { if (-1 == read_scf_sample2(fp, &(s[i]))) return -1; } return 0; } int read_scf_samples32(FILE *fp, Samples2 *s, size_t num_samples) { size_t i; uint2 *samples_out; /* version to read delta delta data in 2 bytes */ if ( ! (samples_out = (uint2 *)xmalloc((num_samples+1) * sizeof(uint2)))) { return -1; } if (num_samples != fread(samples_out, 2, num_samples, fp)) return -1; #ifdef SP_LITTLE_ENDIAN for (i = 0; i < num_samples; i++) { samples_out[i] = be_int2(samples_out[i]); } #endif scf_delta_samples2 ( samples_out, num_samples, 0); for (i = 0; i < num_samples; i++) { (&s[i])->sample_A = samples_out[i]; } if (num_samples != fread(samples_out, 2, num_samples, fp)) return -1; #ifdef SP_LITTLE_ENDIAN for (i = 0; i < num_samples; i++) { samples_out[i] = be_int2(samples_out[i]); } #endif scf_delta_samples2 ( samples_out, num_samples, 0); for (i = 0; i < num_samples; i++) { (&s[i])->sample_C = samples_out[i]; } if (num_samples != fread(samples_out, 2, num_samples, fp)) return -1; #ifdef SP_LITTLE_ENDIAN for (i = 0; i < num_samples; i++) { samples_out[i] = be_int2(samples_out[i]); } #endif scf_delta_samples2 ( samples_out, num_samples, 0); for (i = 0; i < num_samples; i++) { (&s[i])->sample_G = samples_out[i]; } if (num_samples != fread(samples_out, 2, num_samples, fp)) return -1; #ifdef SP_LITTLE_ENDIAN for (i = 0; i < num_samples; i++) { samples_out[i] = be_int2(samples_out[i]); } #endif scf_delta_samples2 ( samples_out, num_samples, 0); for (i = 0; i < num_samples; i++) { (&s[i])->sample_T = samples_out[i]; } xfree(samples_out); return 0; } int read_scf_samples31(FILE *fp, Samples1 *s, size_t num_samples) { size_t i; int1 *samples_out; /* version to read delta delta data in 1 byte */ if ( ! (samples_out = (int1 *)xmalloc((num_samples+1) * sizeof(int1)))) { return -1; } if (num_samples != fread(samples_out, 1, num_samples, fp)) return -1; scf_delta_samples1 ( samples_out, num_samples, 0); for (i = 0; i < num_samples; i++) { (&s[i])->sample_A = samples_out[i]; } if (num_samples != fread(samples_out, 1, num_samples, fp)) return -1; scf_delta_samples1 ( samples_out, num_samples, 0); for (i = 0; i < num_samples; i++) { (&s[i])->sample_C = samples_out[i]; } if (num_samples != fread(samples_out, 1, num_samples, fp)) return -1; scf_delta_samples1 ( samples_out, num_samples, 0); for (i = 0; i < num_samples; i++) { (&s[i])->sample_G = samples_out[i]; } if (num_samples != fread(samples_out, 1, num_samples, fp)) return -1; scf_delta_samples1 ( samples_out, num_samples, 0); for (i = 0; i < num_samples; i++) { (&s[i])->sample_T = samples_out[i]; } xfree(samples_out); return 0; } int read_scf_base(FILE *fp, Bases *b) { union { uint_1 u1[12]; uint_4 u4[3]; } buf; if (1 != fread(buf.u1, 12, 1, fp)) return -1; b->peak_index = be_int4(buf.u4[0]); b->prob_A = buf.u1[4]; b->prob_C = buf.u1[5]; b->prob_G = buf.u1[6]; b->prob_T = buf.u1[7]; b->base = buf.u1[8]; b->spare[0] = buf.u1[9]; b->spare[1] = buf.u1[10]; b->spare[2] = buf.u1[11]; return 0; } int read_scf_bases(FILE *fp, Bases *b, size_t num_bases) { size_t i; for (i = 0; i < num_bases; i++) { if (-1 == read_scf_base(fp, &(b[i]))) return -1; } return 0; } int read_scf_bases3(FILE *fp, Bases *b, size_t num_bases) { size_t i; uint_4 *buf4; uint_1 *buf1; if (NULL == (buf4 = (uint_4 *)xmalloc(1 + 4 * num_bases))) return -1; if (NULL == (buf1 = (uint_1 *)xmalloc(1 + 8 * num_bases))) { xfree(buf4); return -1; } if (num_bases != fread(buf4, 4, num_bases, fp)) return -1; for (i=0; i < num_bases; i++) (&b[i])->peak_index = be_int4(buf4[i]); if (8 * num_bases != fread(buf1, 1, 8 * num_bases, fp)) return -1; for (i=0; i < num_bases; i++) { (&b[i])->prob_A = buf1[i]; (&b[i])->prob_C = buf1[i+num_bases]; (&b[i])->prob_G = buf1[i+2*num_bases]; (&b[i])->prob_T = buf1[i+3*num_bases]; (&b[i])->base = buf1[i+4*num_bases]; (&b[i])->spare[0] = buf1[i+5*num_bases]; (&b[i])->spare[1] = buf1[i+6*num_bases]; (&b[i])->spare[2] = buf1[i+7*num_bases]; } xfree(buf4); xfree(buf1); return 0; } int read_scf_comment(FILE *fp, Comments *c, size_t s) { if (fread(c, 1, s, fp) != s) return -1; return 0; } /* * Read the SCF format sequence from FILE *fp into a 'scf' structure. * A NULL result indicates failure. */ Scf *fread_scf(FILE *fp) { Scf *scf; Header h; int err; float scf_version; int sections = read_sections(0); /* Read header */ if (read_scf_header(fp, &h) == -1) { return NULL; } /* Allocate memory */ if (NULL == (scf = scf_allocate(h.samples, h.sample_size, h.bases, h.comments_size, h.private_size))) return NULL; /* fake things for older style SCF -- SD */ if (h.sample_size != 1 && h.sample_size != 2) h.sample_size = 1; scf_version = scf_version_str2float(h.version); memcpy(&scf->header, &h, sizeof(Header)); if (sections & READ_SAMPLES) { /* Read samples */ if (fseek(fp, (off_t)h.samples_offset, 0 /* SEEK_SET */) != 0) { scf_deallocate(scf); return NULL; } if ( 2.9 > scf_version ) { if (h.sample_size == 1) { err= read_scf_samples1(fp, scf->samples.samples1, h.samples); } else { err= read_scf_samples2(fp, scf->samples.samples2, h.samples); } } else { if (h.sample_size == 1) { err= read_scf_samples31(fp, scf->samples.samples1, h.samples); } else { err= read_scf_samples32(fp, scf->samples.samples2, h.samples); } } if (-1 == err) { scf_deallocate(scf); return NULL; } } if (sections & READ_BASES) { /* Read bases */ if (fseek(fp, (off_t)h.bases_offset, 0 /* SEEK_SET */) != 0) { scf_deallocate(scf); return NULL; } if ( 2.9 > scf_version ) { if (-1 == read_scf_bases(fp, scf->bases, h.bases)) { scf_deallocate(scf); return NULL; } } else { if (-1 == read_scf_bases3(fp, scf->bases, h.bases)) { scf_deallocate(scf); return NULL; } } } if (sections & READ_COMMENTS) { /* Read comments */ if (scf->comments) { if (fseek(fp,(off_t)(h.comments_offset), 0) != 0 || -1 == read_scf_comment(fp, scf->comments, h.comments_size)) { /* * Was: "scf_deallocate(scf); return NULL;". * We now simply clear the comments and gracefully continue. */ fprintf(stderr, "Warning: SCF file had invalid comment field\n"); xfree(scf->comments); scf->comments = NULL; } else { scf->comments[h.comments_size] = '\0'; } } } /* Read private data */ if (h.private_size) { if (-1 == fseek(fp, (off_t)(h.private_offset), 0) || h.private_size != fread(scf->private_data, 1, h.private_size, fp)){ scf_deallocate(scf); return NULL; } } return scf; } /* * Read the SCF format sequence with name `fn' into a 'scf' structure. * A NULL result indicates failure. */ Scf *read_scf(char *fn) { Scf *scf; FILE *fp; /* Open fn for reading in binary mode */ if (NULL == (fp = fopen_compressed(fn, NULL))) return NULL; scf = fread_scf(fp); fclose(fp); return scf; } io_lib-1.14.6/io_lib/write_scf.c0000644000031500020650000003511312354177666013367 00000000000000/* * Copyright (c) 2005-2007, 2010, 2013 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * Author(s): Simon Dear, LaDeana Hillier, James Bonfield, Rodger Staden, * * Copyright (c) 1992-1996, 1998, 2001 MEDICAL RESEARCH COUNCIL * All rights reserved * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1 Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2 Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3 Neither the name of the MEDICAL RESEARCH COUNCIL, THE LABORATORY OF * MOLECULAR BIOLOGY nor the names of its contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * Copyright (c) Medical Research Council 1994. All rights reserved. * * Permission to use, copy, modify and distribute this software and its * documentation for any purpose is hereby granted without fee, provided that * this copyright and notice appears in all copies. * * This file was written by James Bonfield, Simon Dear, Rodger Staden, * as part of the Staden Package at the MRC Laboratory of Molecular * Biology, Hills Road, Cambridge, CB2 2QH, United Kingdom. * * MRC disclaims all warranties with regard to this software. */ /* Title: write_scf.c Purpose: Output of Standard Chromatogram Format sequences Last update: August 18 1994 Change log: 4 Feb 1992, Now draft proposal version 2 23 Nov 92, SCF 2.0 + LaDeana's changes 11 Aug 93, Version 2.01 containing confidence values 18 Aug 1994 Renamed from writeSCF.c; now purely SCF IO (no Seq structs) Oct 95 major rewrite to make files more easily compressed. gzip now gets files to around 40% of original Version raised to 3.00 * We store in order: * Header * Samples * Bases * Comments * Private Two main types of change: 1: write data in lane order instead of all lanes together eg write Sample values for A, then Sample values for C, etc. 2: where appropriate write delta delta values instead of complete ones. ie write the differences in the differences between successive values */ static int scf_version = 3; /* ---- Imports ---- */ #ifdef HAVE_CONFIG_H #include "io_lib_config.h" #endif #include #include /* IMPORT: fopen, fclose, fseek, ftell, fgetc, EOF */ #include #include "io_lib/scf.h" /* IMPORT: scf structures */ #include "io_lib/mach-io.h" /* IMPORT: be_write_int_1, be_write_int_2, be_write_int_4 */ #include "io_lib/xalloc.h" #include "io_lib/stdio_hack.h" /* ---- Exports ---- */ int write_scf_header(FILE *fp, Header *h) { int i; if (be_write_int_4(fp,&h->magic_number)==0) return -1; if (be_write_int_4(fp,&h->samples)==0) return -1; if (be_write_int_4(fp,&h->samples_offset)==0) return -1; if (be_write_int_4(fp,&h->bases)==0) return -1; if (be_write_int_4(fp,&h->bases_left_clip)==0) return -1; if (be_write_int_4(fp,&h->bases_right_clip)==0) return -1; if (be_write_int_4(fp,&h->bases_offset)==0) return -1; if (be_write_int_4(fp,&h->comments_size)==0) return -1; if (be_write_int_4(fp,&h->comments_offset)==0) return -1; if (fwrite(h->version,sizeof(h->version),1,fp)!=1) return -1; if (be_write_int_4(fp,&h->sample_size)==0) return -1; if (be_write_int_4(fp,&h->code_set)==0) return -1; if (be_write_int_4(fp,&h->private_size)==0) return -1; if (be_write_int_4(fp,&h->private_offset)==0) return -1; for (i=0;i<18;i++) if (be_write_int_4(fp,&h->spare[i])==0) return -1; return 0; } int write_scf_sample1(FILE *fp, Samples1 *s) { uint_1 buf[4]; buf[0] = s->sample_A; buf[1] = s->sample_C; buf[2] = s->sample_G; buf[3] = s->sample_T; if (4 != fwrite(buf, 1, 4, fp)) return -1; return 0; } int write_scf_sample2(FILE *fp, Samples2 *s) { uint_2 buf[4]; buf[0] = be_int2(s->sample_A); buf[1] = be_int2(s->sample_C); buf[2] = be_int2(s->sample_G); buf[3] = be_int2(s->sample_T); if (4 != fwrite(buf, 2, 4, fp)) return -1; return 0; } int write_scf_samples1(FILE *fp, Samples1 *s, size_t num_samples) { size_t i; for (i = 0; i < num_samples; i++) { if (-1 == write_scf_sample1(fp, &(s[i]))) return -1; } return 0; } int write_scf_samples2(FILE *fp, Samples2 *s, size_t num_samples) { size_t i; for (i = 0; i < num_samples; i++) { if (-1 == write_scf_sample2(fp, &(s[i]))) return -1; } return 0; } int write_scf_samples31(FILE *fp, Samples1 *s, size_t num_samples) { size_t i; int1 *samples_out; if (!num_samples) return 0; if ( ! (samples_out = (int1 *)xmalloc(num_samples * sizeof(int1)))) { return -1; } for (i = 0; i < num_samples; i++) { samples_out[i] = (&s[i])->sample_A; } scf_delta_samples1 ( samples_out, num_samples, 1); if (num_samples != fwrite(samples_out, 1, num_samples, fp)) { xfree(samples_out); return -1; } for (i = 0; i < num_samples; i++) { samples_out[i] = (&s[i])->sample_C; } scf_delta_samples1 ( samples_out, num_samples, 1); if (num_samples != fwrite(samples_out, 1, num_samples, fp)) { xfree(samples_out); return -1; } for (i = 0; i < num_samples; i++) { samples_out[i] = (&s[i])->sample_G; } scf_delta_samples1 ( samples_out, num_samples, 1); if (num_samples != fwrite(samples_out, 1, num_samples, fp)) { xfree(samples_out); return -1; } for (i = 0; i < num_samples; i++) { samples_out[i] = (&s[i])->sample_T; } scf_delta_samples1 ( samples_out, num_samples, 1); if (num_samples != fwrite(samples_out, 1, num_samples, fp)) { xfree(samples_out); return -1; } xfree(samples_out); return 0; } int write_scf_samples32(FILE *fp, Samples2 *s, size_t num_samples) { size_t i; uint2 *samples_out; if (!num_samples) return 0; if ( ! (samples_out = (uint2 *)xmalloc(num_samples * sizeof(uint2)))) { return -1; } for (i = 0; i < num_samples; i++) { samples_out[i] = (&s[i])->sample_A; } scf_delta_samples2 ( samples_out, num_samples, 1); #ifdef SP_LITTLE_ENDIAN for (i = 0; i < num_samples; i++) { samples_out[i] = be_int2(samples_out[i]); } #endif if (num_samples != fwrite(samples_out, 2, num_samples, fp)) return -1; for (i = 0; i < num_samples; i++) { samples_out[i] = (&s[i])->sample_C; } scf_delta_samples2 ( samples_out, num_samples, 1); #ifdef SP_LITTLE_ENDIAN for (i = 0; i < num_samples; i++) { samples_out[i] = be_int2(samples_out[i]); } #endif if (num_samples != fwrite(samples_out, 2, num_samples, fp)) return -1; for (i = 0; i < num_samples; i++) { samples_out[i] = (&s[i])->sample_G; } scf_delta_samples2 ( samples_out, num_samples, 1); #ifdef SP_LITTLE_ENDIAN for (i = 0; i < num_samples; i++) { samples_out[i] = be_int2(samples_out[i]); } #endif if (num_samples != fwrite(samples_out, 2, num_samples, fp)) return -1; for (i = 0; i < num_samples; i++) { samples_out[i] = (&s[i])->sample_T; } scf_delta_samples2 ( samples_out, num_samples, 1); #ifdef SP_LITTLE_ENDIAN for (i = 0; i < num_samples; i++) { samples_out[i] = be_int2(samples_out[i]); } #endif if (num_samples != fwrite(samples_out, 2, num_samples, fp)) return -1; xfree(samples_out); return 0; } int write_scf_base(FILE *fp, Bases *b) { union { uint_1 u1[12]; uint_4 u4[3]; } buf; buf.u4[0] = be_int4(b->peak_index); buf.u1[4] = b->prob_A; buf.u1[5] = b->prob_C; buf.u1[6] = b->prob_G; buf.u1[7] = b->prob_T; buf.u1[8] = b->base; buf.u1[9] = b->spare[0]; buf.u1[10] = b->spare[1]; buf.u1[11] = b->spare[2]; if (12 != fwrite(buf.u1, 1, 12, fp)) return -1; return 0; } int write_scf_bases(FILE *fp, Bases *b, size_t num_bases) { size_t i; for (i = 0; i < num_bases; i++) { if (-1 == write_scf_base(fp, &(b[i]))) return -1; } return 0; } int write_scf_bases3(FILE *fp, Bases *b, size_t num_bases) { size_t i; uint_4 *buf4; uint_1 *buf1; if (NULL == (buf4 = (uint_4 *)xmalloc(1 + 4 * num_bases))) return -1; if (NULL == (buf1 = (uint_1 *)xmalloc(1 + 8 * num_bases))) { xfree(buf4); return -1; } for (i = 0; i < num_bases; i++) { buf4[i] = be_int4((&b[i])->peak_index); } fwrite(buf4, 4, num_bases, fp); for (i=0; i < num_bases; i++) { buf1[i ] = (&b[i])->prob_A; buf1[i+ num_bases] = (&b[i])->prob_C; buf1[i+2*num_bases] = (&b[i])->prob_G; buf1[i+3*num_bases] = (&b[i])->prob_T; buf1[i+4*num_bases] = (&b[i])->base; buf1[i+5*num_bases] = (&b[i])->spare[0]; buf1[i+6*num_bases] = (&b[i])->spare[1]; buf1[i+7*num_bases] = (&b[i])->spare[2]; } if (8 * num_bases != (fwrite(buf1, 1, 8 * num_bases, fp))) { xfree(buf1); xfree(buf4); return -1; } xfree(buf1); xfree(buf4); return 0; } int write_scf_comment(FILE *fp, Comments *c, size_t s) { if (fwrite(c, 1, s, fp) != s) return -1; return 0; } /* * Request which (major) version of scf to use when writing. * Defaults to the latest. Currently suitable fields are * 2 and 3. * * Returns 0 for success, -1 for failure. */ int set_scf_version(int version) { if (version != 2 && version != 3) return -1; scf_version = version; return 0; } /* * Write Seq out as a .scf file to the 'fp' FILE * */ int fwrite_scf(Scf *scf, FILE *fp) { uint_4 size; int err; /* * Init header offsets. * * We store in order: * Header * Samples * Bases * Comments * Private */ scf->header.samples_offset = (uint_4)sizeof(Header); size = scf->header.samples * (scf->header.sample_size == 1 ? sizeof(Samples1) : sizeof(Samples2)); scf->header.bases_offset = (uint_4)(scf->header.samples_offset + size); size = scf->header.bases * sizeof(Bases); scf->header.comments_offset = (uint_4)(scf->header.bases_offset + size); size = scf->header.comments_size; scf->header.private_offset = (uint_4)(scf->header.comments_offset + size); /* Init a few other things, such as the magic number */ scf->header.magic_number = SCF_MAGIC; if (scf_version == 3) { memcpy(scf->header.version, scf_version_float2str(SCF_VERSION), 4); } else { memcpy(scf->header.version, scf_version_float2str(SCF_VERSION_OLD), 4); } /* Write header */ if (write_scf_header(fp, &scf->header) == -1) return -1; if (scf_version == 3) { /* Write Samples */ if (scf->header.sample_size == 1) err = write_scf_samples31(fp, scf->samples.samples1, scf->header.samples); else err = write_scf_samples32(fp, scf->samples.samples2, scf->header.samples); if (-1 == err) return -1; /* Write Bases */ if (-1 == write_scf_bases3(fp, scf->bases, scf->header.bases)) return -1; } else { /* Write Samples */ if (scf->header.sample_size == 1) err = write_scf_samples1(fp, scf->samples.samples1, scf->header.samples); else err = write_scf_samples2(fp, scf->samples.samples2, scf->header.samples); if (-1 == err) return -1; /* Write Bases */ if (-1 == write_scf_bases(fp, scf->bases, scf->header.bases)) return -1; } /* Write Comments */ if (-1 == write_scf_comment(fp, scf->comments, scf->header.comments_size)) return -1; /* Write private data */ if (scf->header.private_size) { if (scf->header.private_size != fwrite(scf->private_data, 1, scf->header.private_size, fp)) return -1; } return 0; } /* * Write Seq out as a .scf file to file 'fn'. */ int write_scf(Scf *scf, char *fn) { FILE *fp; /* Open for for write in binary mode */ if ((fp = fopen(fn,"wb")) == NULL) return -1; if (fwrite_scf(scf, fp)) { fclose(fp); return -1; } fclose(fp); return 0; } io_lib-1.14.6/io_lib/sff.c0000644000031500020650000003076012354177666012163 00000000000000/* * Copyright (c) 2005, 2007-2010 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * Portions of this code have been derived from 454 Life Sciences Corporation's * getsff.c code (specifically the WriteSFFFile function. * It bears the following copyright notice: * * ------------------------------------------------------------ * Copyright (c)[2001-2005] 454 Life Sciences Corporation. All Rights Reserved. * * 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 LICENSOR 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. * * Permission to use, copy, modify and distribute this software and its * documentation for any purpose is hereby granted without fee, provided * that this copyright and notice appears in all copies. * ------------------------------------------------------------ * * The remainder is Copyright Genome Research Limited (GRL) and is covered * by a BSD style license as described elsewhere in this source tree. */ #ifdef HAVE_CONFIG_H #include "io_lib_config.h" #endif #include #include #include #include "io_lib/Read.h" #include "io_lib/xalloc.h" #include "io_lib/sff.h" #include "io_lib/misc.h" /* -------------------------------------------------------------------------*/ /* General purpose decoding and mFILE reading functions */ /* * Unpacks the 31-byte fixed size part of the SFF common header. * It allocates memory for this and for the flow order and key, but does * not read the flow & key information (as this may not be in buf). * It also checks that the MAGIC and VERSION match as expected. * * Returns sff_common_header* on success * NULL on failure */ sff_common_header *decode_sff_common_header(unsigned char *buf) { sff_common_header *h; if (NULL == (h = (sff_common_header *)xcalloc(1, sizeof(*h)))) return NULL; h->magic = be_int4(*(uint32_t *)(buf+0)); memcpy(h->version, buf+4, 4); h->index_offset = be_int8(*(uint64_t *)(buf+8)); h->index_len = be_int4(*(uint32_t *)(buf+16)); h->nreads = be_int4(*(uint32_t *)(buf+20)); h->header_len = be_int2(*(uint16_t *)(buf+24)); h->key_len = be_int2(*(uint16_t *)(buf+26)); h->flow_len = be_int2(*(uint16_t *)(buf+28)); h->flowgram_format = be_int1(*(uint8_t *)(buf+30)); if (h->magic != SFF_MAGIC || memcmp(h->version, SFF_VERSION, 4)) { xfree(h); return NULL; } if (NULL == (h->flow = (char *)xmalloc(h->flow_len))) return free_sff_common_header(h), NULL; if (NULL == (h->key = (char *)xmalloc(h->key_len))) return free_sff_common_header(h), NULL; return h; } /* * Encodes the data in 'h' to the file SFF representation. Buf should be * allocated to be 31 + h->flow_len + h->key_len + 8. * * Returns: the written length of buf */ int encode_sff_common_header(sff_common_header *h, unsigned char *buf) { int end; *(uint32_t *)(buf+0) = be_int4(h->magic); memcpy(buf+4, h->version, 4); *(uint64_t *)(buf+8) = be_int8(h->index_offset); *(uint32_t *)(buf+16) = be_int4(h->index_len); *(uint32_t *)(buf+20) = be_int4(h->nreads); *(uint16_t *)(buf+24) = be_int2(h->header_len); *(uint16_t *)(buf+26) = be_int2(h->key_len); *(uint16_t *)(buf+28) = be_int2(h->flow_len); *(uint8_t *)(buf+30) = be_int1(h->flowgram_format); memcpy(buf+31, h->flow, h->flow_len); memcpy(buf+31+h->flow_len, h->key, h->key_len); end = 31+h->flow_len+h->key_len; memcpy(buf+end, "\0\0\0\0\0\0\0\0", ((end+7)&~7)-end); return (end+7)&~7; } /* * Reads a common header (including variable length components) from an mFILE. * * Returns the a pointer to the header on success * NULL on failure */ sff_common_header *read_sff_common_header(mFILE *mf) { sff_common_header *h; unsigned char chdr[31]; if (31 != mfread(chdr, 1, 31, mf)) return NULL; h = decode_sff_common_header(chdr); if (h->flow_len != mfread(h->flow, 1, h->flow_len, mf)) return free_sff_common_header(h), NULL; if (h->key_len != mfread(h->key , 1, h->key_len, mf)) return free_sff_common_header(h), NULL; /* Pad to 8 chars */ mfseek(mf, (mftell(mf) + 7)& ~7, SEEK_SET); return h; } /* * Deallocates memory used by an SFF common header. */ void free_sff_common_header(sff_common_header *h) { if (!h) return; if (h->flow) xfree(h->flow); if (h->key) xfree(h->key); xfree(h); } /* * Unpacks the 16-byte fixed size part of the SFF read header. * It allocates memory for this and for the base calls, but does not * unpack these. * * Returns sff_read_header* on success * NULL on failure */ sff_read_header *decode_sff_read_header(unsigned char *buf) { sff_read_header *h; if (NULL == (h = (sff_read_header *)xcalloc(1, sizeof(*h)))) return NULL; h->header_len = be_int2(*(uint16_t *)(buf+0)); h->name_len = be_int2(*(uint16_t *)(buf+2)); h->nbases = be_int4(*(uint32_t *)(buf+4)); h->clip_qual_left = be_int2(*(uint16_t *)(buf+8)); h->clip_qual_right = be_int2(*(uint16_t *)(buf+10)); h->clip_adapter_left = be_int2(*(uint16_t *)(buf+12)); h->clip_adapter_right = be_int2(*(uint16_t *)(buf+14)); if (NULL == (h->name = (char *)xmalloc(h->name_len))) return free_sff_read_header(h), NULL; return h; } /* * Encodes the data in 'h' to the file SFF representation. Buf should be * allocated to be 16 + h->name_len + 8. * * Returns: the written length of buf */ int encode_sff_read_header(sff_read_header *h, unsigned char *buf) { int end; *(uint16_t *)(buf+0) = be_int2(h->header_len); *(uint16_t *)(buf+2) = be_int2(h->name_len); *(uint32_t *)(buf+4) = be_int4(h->nbases); *(uint16_t *)(buf+8) = be_int2(h->clip_qual_left); *(uint16_t *)(buf+10) = be_int2(h->clip_qual_right); *(uint16_t *)(buf+12) = be_int2(h->clip_adapter_left); *(uint16_t *)(buf+14) = be_int2(h->clip_adapter_right); memcpy(buf+16, h->name, h->name_len); end = 16+h->name_len; memcpy(buf+end, "\0\0\0\0\0\0\0\0", ((end+7)&~7)-end); return (end+7)&~7; } /* * Reads a read header (including variable length components) from an mFILE. * * Returns the a pointer to the header on success * NULL on failure */ sff_read_header *read_sff_read_header(mFILE *mf) { sff_read_header *h; unsigned char rhdr[16]; if (16 != mfread(rhdr, 1, 16, mf)) return NULL; h = decode_sff_read_header(rhdr); if (h->name_len != mfread(h->name, 1, h->name_len, mf)) return free_sff_read_header(h), NULL; /* Pad to 8 chars */ mfseek(mf, (mftell(mf) + 7)& ~7, SEEK_SET); return h; } /* * Deallocates memory used by an SFF read header */ void free_sff_read_header(sff_read_header *h) { if (!h) return; if (h->name) xfree(h->name); free(h); } /* * Reads a read data block from an mFILE given a count of the number of * flows and basecalls (from the common header and read headers). * * Returns the a pointer to sff_read_data on success * NULL on failure */ sff_read_data *read_sff_read_data(mFILE *mf, int nflows, int nbases) { sff_read_data *d; int i; if (NULL == (d = (sff_read_data *)xcalloc(1, sizeof(*d)))) return NULL; if (NULL == (d->flowgram = (uint16_t *)xcalloc(nflows, 2))) return free_sff_read_data(d), NULL; if (nflows != mfread(d->flowgram, 2, nflows, mf)) return free_sff_read_data(d), NULL; for (i = 0; i < nflows; i++) d->flowgram[i] = be_int2(d->flowgram[i]); if (NULL == (d->flow_index = (uint8_t *)xmalloc(nbases))) return free_sff_read_data(d), NULL; if (nbases != mfread(d->flow_index, 1, nbases, mf)) return free_sff_read_data(d), NULL; if (NULL == (d->bases = (char *)xmalloc(nbases))) return free_sff_read_data(d), NULL; if (nbases != mfread(d->bases, 1, nbases, mf)) return free_sff_read_data(d), NULL; if (NULL == (d->quality = (uint8_t *)xmalloc(nbases))) return free_sff_read_data(d), NULL; if (nbases != mfread(d->quality, 1, nbases, mf)) return free_sff_read_data(d), NULL; /* Pad to 8 chars */ mfseek(mf, (mftell(mf) + 7)& ~7, SEEK_SET); return d; } /* * Deallocates memory used by an SFF read data block */ void free_sff_read_data(sff_read_data *d) { if (!d) return; if (d->flowgram) xfree(d->flowgram); if (d->flow_index) xfree(d->flow_index); if (d->bases) xfree(d->bases); if (d->quality) xfree(d->quality); xfree(d); } /* -------------------------------------------------------------------------*/ /* * Reads an SFF file from an mFILE and decodes it to a Read struct. * * Returns Read* on success * NULL on failure */ Read *mfread_sff(mFILE *mf) { int i, bpos; Read *r; sff_common_header *ch; sff_read_header *rh; sff_read_data *rd; /* Load the SFF contents */ if (NULL == (ch = read_sff_common_header(mf))) return NULL; if (NULL == (rh = read_sff_read_header(mf))) { free_sff_common_header(ch); return NULL; } if (NULL == (rd = read_sff_read_data(mf, ch->flow_len, rh->nbases))) { free_sff_common_header(ch); free_sff_read_header(rh); return NULL; } /* Convert to Read struct */ r = read_allocate(0,0); if (r->basePos) free(r->basePos); if (r->base) free(r->base); if (r->prob_A) free(r->prob_A); if (r->prob_C) free(r->prob_C); if (r->prob_G) free(r->prob_G); if (r->prob_T) free(r->prob_T); r->nflows = ch->flow_len; r->flow_order = ch->flow; ch->flow = NULL; r->flow_raw = NULL; r->flow = (float *)malloc(r->nflows * sizeof(float)); for (i = 0; i < r->nflows; i++) { r->flow[i] = rd->flowgram[i] / 100.0; } r->NBases = rh->nbases; r->basePos = (uint_2 *)calloc(r->NBases, 2); r->base = rd->bases; rd->bases = NULL; r->prob_A = (char *)calloc(r->NBases, 1); r->prob_C = (char *)calloc(r->NBases, 1); r->prob_G = (char *)calloc(r->NBases, 1); r->prob_T = (char *)calloc(r->NBases, 1); bpos = 0; for (i=0; i < r->NBases; i++) { r->prob_A[i] = 0; r->prob_C[i] = 0; r->prob_G[i] = 0; r->prob_T[i] = 0; switch (r->base[i]) { case 'A': case 'a': r->prob_A[i] = rd->quality[i]; break; case 'C': case 'c': r->prob_C[i] = rd->quality[i]; break; case 'G': case 'g': r->prob_G[i] = rd->quality[i]; break; case 'T': case 't': r->prob_T[i] = rd->quality[i]; break; } bpos += rd->flow_index[i]; r->basePos[i] = bpos; } r->leftCutoff = MAX(rh->clip_qual_left, rh->clip_adapter_left); r->rightCutoff = MIN(rh->clip_qual_right ? rh->clip_qual_right : r->NBases+1, rh->clip_adapter_right ? rh->clip_adapter_right : r->NBases+1); free_sff_common_header(ch); free_sff_read_header(rh); free_sff_read_data(rd); return r; } io_lib-1.14.6/io_lib/srf.c0000644000031500020650000014517612545536330012174 00000000000000/* * Copyright (c) 2007-2009, 2013 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifdef HAVE_CONFIG_H #include "io_lib_config.h" #endif #include #include #include #include "io_lib/Read.h" #include "io_lib/misc.h" #include "io_lib/ztr.h" #include "io_lib/hash_table.h" #include "io_lib/xalloc.h" #include "io_lib/srf.h" /* * --------------------------------------------------------------------------- * Object creation / destruction. */ /* * Allocates and returns an srf_t structure. * fp is the file point associated with this SRF file. Pass as NULL if unknown * at this stage. * * Returns malloced memory on success * NULL on failure */ srf_t *srf_create(FILE *fp) { srf_t *srf = (srf_t *)calloc(1, sizeof(*srf)); if (srf) srf->fp = fp; return srf; } /* * Opens an SRF archive for reading or writing as defined by 'mode'. Mode is * passed directly on to fopen() and so uses the same flags. * * Returns a srf_t struct pointer on success. * NULL on failure */ srf_t *srf_open(char *fn, char *mode) { FILE *fp; char bmode[11]; size_t l, i; /* Enforce binary mode for windows */ if ((l = strlen(mode)) < 9) { int binary = 0; for (i = 0; i < l; i++) { if ('b' == (bmode[i] = mode[i])) binary=1; } if (!binary) bmode[i++] = 'b'; bmode[i] = 0; mode = bmode; } return (fp = fopen(fn, mode)) ? srf_create(fp) : NULL; } /* * Deallocates an srf_t struct. If auto_close is true then it also closes * any associated FILE pointer. */ void srf_destroy(srf_t *srf, int auto_close) { if (!srf) return; if (auto_close && srf->fp) { if (-1 == fclose(srf->fp)) perror("fclose(srf->fp)"); } if(srf->th.trace_hdr) free(srf->th.trace_hdr); if (srf->mf) mfdestroy(srf->mf); if (srf->ztr) delete_ztr(srf->ztr); free(srf); } /* * --------------------------------------------------------------------------- * Base data type I/O. */ /* * Writes a null-terminated C string in pascal-string form. * Returns the number of bytes written or * -1 for failure. */ int srf_write_pstring(srf_t *srf, char *str) { size_t l = str ? strlen(str) : 0; if (l > 255) return -1; if (l) return fprintf(srf->fp, "%c%s", (int)l, str); else return fprintf(srf->fp, "%c", (int)l); } /* * As per srf_write_pstring but 'str' may hold binary data including nul * chars, hence we pass over length as a separate paremeter. */ int srf_write_pstringb(srf_t *srf, char *str, int length) { if (length > 255 || length < 0) return -1; if (length) return fprintf(srf->fp, "%c%s", (int)length, str); else return fprintf(srf->fp, "%c", (int)length); } /* * Reads a pascal-style string from the srf file. * 'str' passed in needs to be at least 256 bytes long. The string read * will be stored there and nul terminated. * * Returns the length of the string read (minus nul char), * -1 for failure */ int srf_read_pstring(srf_t *srf, char *str) { int len; if (EOF == (len = fgetc(srf->fp))) return -1; if (len != fread(str, 1, len, srf->fp)) return -1; str[len] = '\0'; return len; } /* * Read/write unsigned 32-bit and 64-bit values in big-endian format * (ie the same as ZTR and SCF endian uses). * Functions all return 0 for success, -1 for failure. */ int srf_read_uint32(srf_t *srf, uint32_t *val) { unsigned char d[4]; if (1 != fread(d, 4, 1, srf->fp)) return -1; *val = (d[0] << 24) | (d[1] << 16) | (d[2] << 8) | (d[3] << 0); return 0; } int srf_write_uint32(srf_t *srf, uint32_t val) { unsigned char d[4]; d[0] = (val >> 24) & 0xff; d[1] = (val >> 16) & 0xff; d[2] = (val >> 8) & 0xff; d[3] = (val >> 0) & 0xff; return fwrite(d, 4, 1, srf->fp) ? 0 : -1; } int srf_read_uint64(srf_t *srf, uint64_t *val) { unsigned char d[8]; if (1 != fread(d, 8, 1, srf->fp)) return -1; *val = ((uint64_t)d[0] << 56) | ((uint64_t)d[1] << 48) | ((uint64_t)d[2] << 40) | ((uint64_t)d[3] << 32) | ((uint64_t)d[4] << 24) | ((uint64_t)d[5] << 16) | ((uint64_t)d[6] << 8) | ((uint64_t)d[7] << 0); return 0; } int srf_write_uint64(srf_t *srf, uint64_t val) { unsigned char d[8]; d[0] = (val >> 56) & 0xff; d[1] = (val >> 48) & 0xff; d[2] = (val >> 40) & 0xff; d[3] = (val >> 32) & 0xff; d[4] = (val >> 24) & 0xff; d[5] = (val >> 16) & 0xff; d[6] = (val >> 8) & 0xff; d[7] = (val >> 0) & 0xff; return fwrite(d, 8, 1, srf->fp) ? 0 : -1; } /* * --------------------------------------------------------------------------- * Mid level I/O - srf block type handling */ /* * Allocates and initialises a container header structure. An existing * srf_cont_hdr_t may be passed in to avoid allocation of a new object. * * Returns: allocated cont_header on success, to be freed using * srf_destroy_cont_hdr() (if allocated here), * NULL on failure. */ srf_cont_hdr_t *srf_construct_cont_hdr(srf_cont_hdr_t *ch, char *bc, char *bc_version) { if (!ch) { if (NULL == (ch = (srf_cont_hdr_t *)calloc(1, sizeof(*ch)))) return NULL; } ch->block_type = SRFB_CONTAINER; strcpy(ch->version, SRF_VERSION); ch->container_type = 'Z'; strncpy(ch->base_caller, bc, 255); strncpy(ch->base_caller_version, bc_version, 255); return ch; } /* * Deallocates an srf_cont_hdr_t constructed by srf_construct_cont_hdr(). */ void srf_destroy_cont_hdr(srf_cont_hdr_t *ch) { if (ch) free(ch); } /* * Reads a container header and stores the result in 'ch'. * Returns 0 for success * -1 for failure */ int srf_read_cont_hdr(srf_t *srf, srf_cont_hdr_t *ch) { char magic[3]; uint32_t sz; if (!ch) return -1; /* Check block type */ if (EOF == (ch->block_type = fgetc(srf->fp))) return -1; if (ch->block_type != SRFB_CONTAINER) return -1; /* Check magic number && version */ if (3 != fread(magic, 1, 3, srf->fp)) return -1; if (0 != srf_read_uint32(srf, &sz)) return -1; if (srf_read_pstring(srf, ch->version) < 0) return -1; if (strncmp(magic, "SRF", 3) || strcmp(ch->version, SRF_VERSION)) return -1; /* Containter type, base caller bits */ if (EOF == (ch->container_type = fgetc(srf->fp)) || srf_read_pstring(srf, ch->base_caller) < 0|| srf_read_pstring(srf, ch->base_caller_version) < 0) return -1; return 0; } /* * Writes a container header to disk. * * 4 Block type + magic number ("SSRF") * 1+n: pString for version number ("1.0") * 1: "Z" => container type is ZTR * 1+n: pString for base-caller ("eg Bustard") * 1+n: pString for base-caller version (eg "1.8.28") * 4: uint32 distance from start of header to first data block. * 4: uint32 distance from start of block to index block (0). FIXME * * Returns 0 for success * -1 for failure */ int srf_write_cont_hdr(srf_t *srf, srf_cont_hdr_t *ch) { uint32_t sz = 0; if (!ch) return -1; /* Magic number && version */ if (4 != fwrite(SRF_MAGIC, 1, 4, srf->fp)) return -1; /* Header size */ sz = 9 + (ch->version ? strlen(ch->version) : 0) + 1 + (ch->base_caller ? strlen(ch->base_caller) : 0) + 1 + (ch->base_caller_version ? strlen(ch->base_caller_version) : 0) + 1; if (0 != srf_write_uint32(srf, sz)) return -1; if (srf_write_pstring(srf, ch->version) < 0) return -1; /* Containter type, base caller bits */ if (EOF == fputc(ch->container_type, srf->fp)) return -1; if (srf_write_pstring(srf, ch->base_caller) < 0) return -1; if (srf_write_pstring(srf, ch->base_caller_version) < 0) return -1; return ferror(srf->fp) ? -1 : 0; } /* * Reads an XML TraceInfo block * Returns 0 for success * -1 for failure */ int srf_read_xml(srf_t *srf, srf_xml_t *xml) { int block_type; if (EOF == (block_type = fgetc(srf->fp))) return -1; if (block_type != SRFB_XML) return -1; if (0 != srf_read_uint32(srf, &xml->xml_len)) return -1; xml->xml_len -= 5; if (NULL == (xml->xml = (char *)realloc(xml->xml, xml->xml_len+1))) return -1; if (xml->xml_len != fread(xml->xml, 1, xml->xml_len, srf->fp)) return -1; xml->xml[xml->xml_len] = 0; return 0; } /* * Writes an XML TraceInfo block * Returns 0 for success * -1 for failure */ int srf_write_xml(srf_t *srf, srf_xml_t *xml) { if (!srf->fp) return -1; if (EOF == fputc(SRFB_XML, srf->fp)) return -1; if (-1 == srf_write_uint32(srf, xml->xml_len+5)) return -1; if (xml->xml_len != fwrite(xml->xml, 1, xml->xml_len, srf->fp)) return -1; return ferror(srf->fp) ? -1 : 0; } /* * Initialises a srf_trace_header_t and inserts some passed in values. * If the supplied th is NULL then a new structure is allocated. * * Returns a pointer to the dh passed in (or allocated if NULL) on success * NULL on failure */ srf_trace_hdr_t *srf_construct_trace_hdr(srf_trace_hdr_t *th, char *prefix, unsigned char *header, uint32_t header_sz) { if (!th) { if (NULL == (th = (srf_trace_hdr_t *)calloc(1, sizeof(*th)))) return NULL; } th->block_type = SRFB_TRACE_HEADER; strncpy(th->id_prefix, prefix, 255); th->trace_hdr_size = header_sz; th->trace_hdr = header; th->read_prefix_type = 'E'; return th; } /* * Deallocates a srf_trace_hdr_t if allocated by * srf_construct_trace_hdr(). * Do not use this if you passed in a static srf_trace_hdr to the construct * function. */ void srf_destroy_trace_hdr(srf_trace_hdr_t *th) { if (th) { if (th->trace_hdr) free(th->trace_hdr); free(th); } } /* * Reads a data header and stores the result in 'th'. * Returns 0 for success * -1 for failure */ int srf_read_trace_hdr(srf_t *srf, srf_trace_hdr_t *th) { int z; /* Check block type */ if (EOF == (th->block_type = fgetc(srf->fp))) return -1; if (th->block_type != SRFB_TRACE_HEADER) return -1; if (0 != srf_read_uint32(srf, &th->trace_hdr_size)) return -1; th->trace_hdr_size -= 1 + 4 + 1; /* Read-id prefix */ if (EOF == (th->read_prefix_type = fgetc(srf->fp))) return -1; if ((z = srf_read_pstring(srf, th->id_prefix)) < 0) return -1; th->trace_hdr_size -= z+1; /* The data header itself */ if (th->trace_hdr) free(th->trace_hdr); if (th->trace_hdr_size) { if (NULL == (th->trace_hdr = malloc(th->trace_hdr_size))) return -1; if (th->trace_hdr_size != fread(th->trace_hdr, 1, th->trace_hdr_size, srf->fp)) { free(th->trace_hdr); th->trace_hdr = NULL; return -1; } } else { th->trace_hdr = NULL; } return 0; } /* * Writes a srf_trace_hdr_t structure to disk. * Returns 0 for sucess * -1 for failure */ int srf_write_trace_hdr(srf_t *srf, srf_trace_hdr_t *th) { uint32_t sz; if (!srf->fp) return -1; if (EOF == fputc(th->block_type, srf->fp)) return -1; /* Size */ sz = 1 + 4 + 1 + (th->id_prefix ? strlen(th->id_prefix) : 0) + 1 + th->trace_hdr_size; if (-1 == srf_write_uint32(srf, sz)) return -1; /* Prefix */ if (EOF == fputc(th->read_prefix_type, srf->fp)) return -1; if (-1 == srf_write_pstring(srf, th->id_prefix)) return -1; /* The ztr header blob itself... */ if (th->trace_hdr_size != fwrite(th->trace_hdr, 1, th->trace_hdr_size, srf->fp)) return -1; return ferror(srf->fp) ? -1 : 0; } srf_trace_body_t *srf_construct_trace_body(srf_trace_body_t *tb, char *suffix, int suffix_len, unsigned char *body, uint32_t body_size, unsigned char flags) { if (!tb) { if (NULL == (tb = (srf_trace_body_t *)calloc(1, sizeof(*tb)))) return NULL; } tb->block_type = SRFB_TRACE_BODY; if (suffix_len == -1) { suffix_len = strlen(suffix); if (suffix_len > 255) suffix_len = 255; } memcpy(tb->read_id, suffix, suffix_len); tb->read_id[suffix_len] = 0; tb->read_id_length = suffix_len; tb->trace = body; tb->trace_size = body_size; tb->flags = flags; return tb; } void srf_destroy_trace_body(srf_trace_body_t *tb) { if (tb) free(tb); } /* * Writes a new trace body. * * Returns: 0 on success * -1 on failure */ int srf_write_trace_body(srf_t *srf, srf_trace_body_t *tb) { uint32_t sz; if (!srf->fp) return -1; if (EOF == fputc(tb->block_type, srf->fp)) return -1; /* Size */ sz = 6 + tb->read_id_length+1 + tb->trace_size; if (0 != srf_write_uint32(srf, sz)) return -1; /* Flags and name */ if (EOF == (fputc(tb->flags, srf->fp))) return -1; if (-1 == srf_write_pstringb(srf, tb->read_id, tb->read_id_length)) return -1; /* Tbe ztr footer blob itself... */ if (tb->trace_size != fwrite(tb->trace, 1, tb->trace_size, srf->fp)) return -1; return ferror(srf->fp) ? -1 : 0; } /* * Reads a trace header + trace 'blob' and stores the result in 'th' * If no_trace is true then it skips loading the trace data itself. * * Returns 0 for success * -1 for failure */ int srf_read_trace_body(srf_t *srf, srf_trace_body_t *tb, int no_trace) { int z; /* Check block type */ if (EOF == (tb->block_type = fgetc(srf->fp))) return -1; if (tb->block_type != SRFB_TRACE_BODY) return -1; /* Size */ if (0 != srf_read_uint32(srf, &tb->trace_size)) return -1; tb->trace_size -= 6; /* Flags */ if (EOF == (z = fgetc(srf->fp))) return -1; tb->flags = z; /* Read-id suffix */ if ((z = srf_read_pstring(srf, tb->read_id)) < 0) return -1; tb->read_id_length = z; tb->trace_size -= z+1; /* The trace data itself */ if (!no_trace) { if (tb->trace_size) { if (NULL == (tb->trace = malloc(tb->trace_size))) return -1; if (tb->trace_size != fread(tb->trace, 1, tb->trace_size, srf->fp)) { free(tb->trace); tb->trace = NULL; return -1; } } else { tb->trace = NULL; } } else { /* Skip */ fseeko(srf->fp, tb->trace_size, SEEK_CUR); tb->trace = NULL; } return 0; } /* * Reads a SRF index header. See srf_write_index_hdr for the format. * If no_seek is true it reads the header starting at the current file * offset, otherwise it seeks to the end of the file and reads that * header instead. * * Returns 0 on success and fills out *hdr * -1 on failure */ int srf_read_index_hdr(srf_t *srf, srf_index_hdr_t *hdr, int no_seek) { int sz, z; /* Load footer */ if (!no_seek) { if (0 != fseeko(srf->fp, -16, SEEK_END)) return -1; if (4 != fread(hdr->magic, 1, 4, srf->fp)) return -1; if (4 != fread(hdr->version, 1, 4, srf->fp)) return -1; if (0 != srf_read_uint64(srf, &hdr->size)) return -1; /* Check for validity */ if (memcmp(hdr->magic, SRF_INDEX_MAGIC, 4) || memcmp(hdr->version, SRF_INDEX_VERSION, 4)) return -1; /* Seek to index header and re-read */ if (0 != fseeko(srf->fp, -hdr->size, SEEK_END)) return -1; } if (4 != fread(hdr->magic, 1, 4, srf->fp)) return -1; if (4 != fread(hdr->version, 1, 4, srf->fp)) return -1; if (0 != srf_read_uint64(srf, &hdr->size)) return -1; /* Check once more */ if (memcmp(hdr->magic, SRF_INDEX_MAGIC, 4) || memcmp(hdr->version, SRF_INDEX_VERSION, 4)) return -1; /* And finally the remainder of the index header details */ if (EOF == (hdr->index_type = fgetc(srf->fp))) return -1; if (EOF == (hdr->dbh_pos_stored_sep = fgetc(srf->fp))) return -1; if (0 != srf_read_uint32(srf, &hdr->n_container)) return -1; if (0 != srf_read_uint32(srf, &hdr->n_data_block_hdr)) return -1; if (0 != srf_read_uint64(srf, &hdr->n_buckets)) return -1; sz = 34; /* fixed size of the above records */ if ((z = srf_read_pstring(srf, hdr->dbh_file)) < 0) return -1; sz += z+1; if ((z = srf_read_pstring(srf, hdr->cont_file)) < 0) return -1; sz += z+1; hdr->index_hdr_sz = sz; return 0; } /* * Writes a SRF index header. * * Header: * x4 magic number, starting with 'I'. * x4 version code (eg "1.00") * x8 index size * x1 index type ('E' normally) * x1 dbh_pos_stored_sep (indicates if the item list contains the * "data block header" index number). * x4 number of containers * x4 number of DBHs * x8 number of hash buckets * * x* dbhFile p-string (NULL if held within the same file) * x* contFile p-string (NULL if held within the same file) * * Returns 0 on success * -1 on failure */ int srf_write_index_hdr(srf_t *srf, srf_index_hdr_t *hdr) { if (4 != fwrite(hdr->magic, 1, 4, srf->fp)) return -1; if (4 != fwrite(hdr->version, 1, 4, srf->fp)) return -1; if (0 != srf_write_uint64(srf, hdr->size)) return -1; if (EOF == fputc(hdr->index_type, srf->fp)) return -1; if (EOF == fputc(hdr->dbh_pos_stored_sep, srf->fp)) return -1; if (0 != srf_write_uint32(srf, hdr->n_container)) return -1; if (0 != srf_write_uint32(srf, hdr->n_data_block_hdr)) return -1; if (0 != srf_write_uint64(srf, hdr->n_buckets)) return -1; if (-1 == srf_write_pstring(srf, hdr->dbh_file)) return -1; if (-1 == srf_write_pstring(srf, hdr->cont_file)) return -1; return ferror(srf->fp) ? -1 : 0; } /* Position in index - internal struct used for code below only */ typedef struct { uint64_t pos; uint32_t dbh; } pos_dbh; /* * This allocates and initialises an srf_index_t struct filling out the * fields to default values or the supplied parameters. It does not * actually write anything to disc itself. * * Note: non-NULL values for ch_file and th_file are not implemented yet. * * ch_file is the container header file. If specified as non-NULL it is the * name of the file storing the container and DB records (trace bodies). * NULL implies all the data is in the same file. * * th_file is the filename where we store the DBH records (trace headers). * NULL implies all the data is in the same file. * * dbh_sep is a boolean value used to indicate whether we store the * location of DBH+DB per trace or just the DB record. The latter uses less * space and is most generally used, but the former is required if DBH and DB * are split apart into two files (ch_file and th_file). * * Returns srf_index_t pointer on success. * NULL on failure */ srf_index_t *srf_index_create(char *ch_file, char *th_file, int dbh_sep) { srf_index_t *idx = (srf_index_t *)malloc(sizeof(srf_index_t)); if (!idx) return NULL; if (ch_file) { strncpy(idx->ch_file, ch_file, PATH_MAX); idx->ch_file[PATH_MAX] = 0; } else { idx->ch_file[0] = 0; } if (th_file) { strncpy(idx->th_file, th_file, PATH_MAX); idx->th_file[PATH_MAX] = 0; } else { idx->th_file[0] = 0; } idx->dbh_pos_stored_sep = dbh_sep; /* Create the arrays and hash table */ if (!(idx->ch_pos = ArrayCreate(sizeof(uint64_t), 0))) return NULL; if (!(idx->th_pos = ArrayCreate(sizeof(uint64_t), 0))) return NULL; if (!(idx->name_blocks = ArrayCreate(sizeof(srf_name_block_t), 0))) return NULL; if (!(idx->db_hash = HashTableCreate(0, HASH_DYNAMIC_SIZE | HASH_FUNC_JENKINS3 | HASH_NONVOLATILE_KEYS | HASH_POOL_ITEMS))) return NULL; return idx; } /* * Deallocates memory used by an srf_index_t structure. */ void srf_index_destroy(srf_index_t *idx) { size_t i; if (!idx) return; if (idx->db_hash) HashTableDestroy(idx->db_hash, 0); if (idx->ch_pos) ArrayDestroy(idx->ch_pos); if (idx->th_pos) ArrayDestroy(idx->th_pos); if (idx->name_blocks) { for (i = 0; i < ArrayMax(idx->name_blocks); i++) { if (NULL != arr(srf_name_block_t, idx->name_blocks, i).names) free(arr(srf_name_block_t, idx->name_blocks, i).names); } ArrayDestroy(idx->name_blocks); } free(idx); } /* * Dumps out some statistics on the index to fp, or stderr if fp * is NULL. */ void srf_index_stats(srf_index_t *idx, FILE *fp) { HashTableStats(idx->db_hash, fp ? fp : stderr); } /* * Adds a container header (CH block) to the srf index. * * Returns 0 on success * -1 on failure */ int srf_index_add_cont_hdr(srf_index_t *idx, uint64_t pos) { uint64_t *ip = ARRP(uint64_t, idx->ch_pos, ArrayMax(idx->ch_pos)); return ip ? (*ip = pos, 0) : -1; } /* * Adds a trace header (DBH block) to the srf index. * * Returns 0 on success * -1 on failure */ int srf_index_add_trace_hdr(srf_index_t *idx, uint64_t pos) { uint64_t *ip = ARRP(uint64_t, idx->th_pos, ArrayMax(idx->th_pos)); return ip ? (*ip = pos, 0) : -1; } /* * Adds a trace body (DB block) to the srf index. * * Returns 0 on success * -1 on failure */ int srf_index_add_trace_body(srf_index_t *idx, char *name, uint64_t pos) { HashData hd; pos_dbh *pdbh; srf_name_block_t *blockp; char *name_copy; size_t name_len; int new; if (idx->dbh_pos_stored_sep) { if (NULL == (pdbh = (pos_dbh *)malloc(sizeof(*pdbh)))) return -1; pdbh->pos = pos; pdbh->dbh = ArrayMax(idx->th_pos); hd.p = pdbh; } else { hd.i = pos; } name_len = strlen(name) + 1; /* Include NULL */ /* Allocate more space for names if needed */ if (ArrayMax(idx->name_blocks) == 0 || arr(srf_name_block_t, idx->name_blocks, ArrayMax(idx->name_blocks) - 1).space <= name_len) { blockp = ARRP(srf_name_block_t, idx->name_blocks, ArrayMax(idx->name_blocks)); if (NULL == blockp) return -1; blockp->used = 0; blockp->space = (name_len < SRF_INDEX_NAME_BLOCK_SIZE ? SRF_INDEX_NAME_BLOCK_SIZE : name_len); blockp->names = xmalloc(blockp->space); if (NULL == blockp->names) { ArrayMax(idx->name_blocks)--; return -1; } } blockp = ARRP(srf_name_block_t, idx->name_blocks, ArrayMax(idx->name_blocks) - 1); name_copy = blockp->names + blockp->used; memcpy(name_copy, name, name_len); blockp->used += name_len; blockp->space -= name_len; if (NULL == HashTableAdd(idx->db_hash, name_copy, name_len - 1, hd, &new)){ return -1; } if (0 == new) { fprintf(stderr, "duplicate read name %s\n", name); return -1; } return 0; } /* * Writes the HashTable structures to 'fp'. * This is a specialisation of the HashTable where the HashData is a * position,size tuple. * * Header: * x4 magic number, starting with 'I'. * x4 version code (eg "1.00") * x8 index size (should be x4 as we assume bucket locs are x4?) * * x1 index type ('E' normally) * x1 dbh_pos_stored_sep (indicates if the item list contains the * "data block header" index number). * * x4 number of containers * x4 number of DBHs * x8 number of hash buckets * * x* dbhFile p-string (NULL if held within the same file) * x* contFile p-string (NULL if held within the same file) * * Containers: (1 entry per container) * x8 file position of container header * * Data Block Headers: (1 entry per DBH) * x8 file position of container header * * Buckets: (1 entry per bucket) * x8 8-byte offset of linked list pos, rel. to the start of the hdr * * Items: (1 per trace) * x1 name disambiguation hash, top-most bit set => last item in list * x8 data position * (x4) (dbh_index - optional; present if dbh_pos_stored_sep is 1) * * Footer: * x4 magic number * x4 version * x8 index size * * Returns: the number of bytes written on success * -1 for error */ int srf_index_write(srf_t *srf, srf_index_t *idx) { unsigned int i, j; srf_index_hdr_t hdr; uint64_t *bucket_pos; int item_sz; HashTable *h = idx->db_hash; /* Option: whether to store dbh positions directly in the index */ hdr.dbh_pos_stored_sep = idx->dbh_pos_stored_sep; /* Compute index size and bucket offsets */ hdr.size = 34 + 1 + (idx->ch_file ? strlen(idx->ch_file) : 0) + 1 + (idx->th_file ? strlen(idx->th_file) : 0); hdr.size += 8*(ArrayMax(idx->ch_pos) + ArrayMax(idx->th_pos) + h->nbuckets); if (NULL == (bucket_pos = (uint64_t *)calloc(h->nbuckets, sizeof(*bucket_pos)))) return -1; for (i = 0; i < h->nbuckets; i++) { HashItem *hi; if (!(hi = h->bucket[i])) continue; bucket_pos[i] = hdr.size; item_sz = 1 + 8 + (hdr.dbh_pos_stored_sep ? 4 : 0); for (; hi; hi = hi->next) hdr.size += item_sz; } hdr.size += 16; /* footer */ /* Construct and write out the index header */ memcpy(hdr.magic, SRF_INDEX_MAGIC, 4); memcpy(hdr.version, SRF_INDEX_VERSION, 4); hdr.index_type = 'E'; hdr.n_container = ArrayMax(idx->ch_pos); hdr.n_data_block_hdr = ArrayMax(idx->th_pos); hdr.n_buckets = h->nbuckets; if (idx->th_file) strncpy(hdr.dbh_file, idx->th_file, 255); else hdr.dbh_file[0] = 0; if (idx->ch_file) strncpy(hdr.cont_file, idx->ch_file, 255); else hdr.cont_file[0] = 0; if (0 != srf_write_index_hdr(srf, &hdr)) return -1; /* Write the container and data block header arrays */ j = ArrayMax(idx->ch_pos); for (i = 0; i < j; i++) { if (0 != srf_write_uint64(srf, arr(uint64_t, idx->ch_pos, i))) return -1; } j = ArrayMax(idx->th_pos); for (i = 0; i < j; i++) { if (0 != srf_write_uint64(srf, arr(uint64_t, idx->th_pos, i))) return -1; } /* Write out buckets */ for (i = 0; i < h->nbuckets; i++) { if (0 != srf_write_uint64(srf, bucket_pos[i])) return -1; } /* Write out the trace locations themselves */ for (i = 0; i < h->nbuckets; i++) { HashItem *hi; /* fprintf(stderr, "Bucket %d offset %lld vs %lld\n", i, ftell(srf->fp), bucket_pos[i]); */ if (!(hi = h->bucket[i])) continue; for (; hi; hi = hi->next) { uint64_t pos; uint32_t dbh = 0; uint32_t h7; if (hdr.dbh_pos_stored_sep) { pos_dbh *pdbh = (pos_dbh *)hi->data.p; pos = pdbh->pos; dbh = pdbh->dbh; } else { pos = hi->data.i; } /* Rehash key in 7 bits; */ h7 = hash64(h->options & HASH_FUNC_MASK, (uint8_t *)hi->key, hi->key_len) >> 57; if (!hi->next) h7 |= 0x80; /* fprintf(stderr, "\t%.*s => %x @ %lld\n", hi->key_len, hi->key, h7, pos); */ if (fputc(h7, srf->fp) < 0) return -1; if (0 != srf_write_uint64(srf, pos)) return -1; if (hdr.dbh_pos_stored_sep) if (0 != srf_write_uint32(srf, dbh)) return -1; } } /* Footer */ if (4 != fwrite(hdr.magic, 1, 4, srf->fp)) return -1; if (4 != fwrite(hdr.version, 1, 4, srf->fp)) return -1; if (0 != srf_write_uint64(srf, hdr.size)) return -1; free(bucket_pos); return 0; } /* * --------------------------------------------------------------------------- * Trace name codec details. */ /* * Reads up to 32-bits worth of data and returns. Updates the block * byte and bit values to indicate the current 'read' position. * * Returns unsigned value on success (>=0) * -1 on failure */ static uint32_t get_hi_bits(block_t *block, int nbits) { unsigned int val, bnum = 0; if (block->byte*8 + block->bit + nbits > block->alloc * 8) return -1; /* Fetch the partial byte of data */ val = (block->data[block->byte]) & ((1<<(8-block->bit))-1); bnum = 8 - block->bit; if (bnum >= nbits) { val >>= bnum-nbits; val &= (1<bit += nbits; return val; } /* And additional entire bytes worth as required */ while (bnum+8 <= nbits && bnum+8 < 32) { val <<= 8; val |= block->data[++block->byte]; bnum += 8; } /* The remaining partial byte */ val <<= nbits-bnum; val |= (block->data[++block->byte] >> (8-(nbits-bnum))) & ((1<<(nbits-bnum))-1); block->bit = nbits-bnum; return val; } /* * Stores up to 32-bits of data in a block */ static void set_hi_bits(block_t *block, uint32_t val, int nbits) { unsigned int curr = block->data[block->byte]; /* Pack first partial byte */ if (nbits > 8-block->bit) { curr |= val >> (nbits -= 8-block->bit); block->data[block->byte] = curr; block->data[++block->byte] = 0; block->bit = 0; } else { curr |= val << (8-block->bit - nbits); block->data[block->byte] = curr; if ((block->bit += nbits) == 8) { block->bit = 0; block->data[++block->byte] = 0; } return; } /* Handle whole bytes worth */ while (nbits > 8) { block->data[block->byte++] = (val >> (nbits-=8)) & 0xff; } /* And finally any remaining bits left */ block->data[block->byte] = (val & ((1<bit = nbits; } /* * Formats are specified embedded in 'fmt' using a percent-rule, much * like printf(). * * Both fmt and suffix are C-style nul terminated strings. * * The format consists of: * * '%' * * Field-width is a numerical value indicating the number of characters we * wish to print. It is optional as without specifying this we emit as * many characters as are needed to describe the data. If specified the * output is padded to be at least field-width in size. The padding character * may vary on the otuput format, but will typically be '0'. * * Bits-used consists of '.' (a full stop) followed by a numerical value * indicating the number of bits to read from the suffix, starting from * bit 0 or the next free bit following a previous format. If not specified * generally all bits are used (8 * suffix_len) unless otherwise indicated * below. * * Format-code may be one of: * 'd' decimal values (0-9) * 'o' octal values (0-7) * 'x' hexidecimal values, lowercase * 'X' hexidecimal values, uppercase * 'j' base-36 encoding, lowercase * 'J' base-36 encoding, uppercase (454) * 'c' a single character (default bits used = 8) * 's' string (all bits used, treated as ascii) * '%' a literal percent character (no bits used). * * Returns the number of bytes written to 'name' on success * -1 on failure */ #define emit(c) \ if (out_pos < name_len-1) { \ name[out_pos++] = (c); \ } else { \ block_destroy(blk, 1);\ return name_len; \ } int construct_trace_name(char *fmt, unsigned char *suffix, int suffix_len, char *name, int name_len) { block_t *blk = block_create(suffix, suffix_len); int out_pos = 0; int percent = 0; /* Default nul-terminate for abort cases */ name[name_len-1] = '\0'; for(; *fmt; fmt++) { switch(*fmt) { /* A format specifier */ case '%': { int width = 0; int bits = 0; uint32_t val; fmt++; percent++; /* Width specifier */ if (0 == (width = strtol(fmt, &fmt, 10))) width = 1; /* minimum width */ /* Bit size specifier */ if ('.' == *fmt) { fmt++; bits = strtol(fmt, &fmt, 10); } /* The format code */ switch (*fmt) { int i; case '%': for (i = 0; i < width; i++) { emit('%'); } break; case 'o': case 'd': case 'x': case 'X': case 'j': case 'J': { /* One of the integer encoding formats */ char *digits = "0123456789abcdef"; int d = 0, tmp_ind = 0; char tmp[1024]; switch(*fmt) { case 'o': d=8; break; case 'd': d=10; break; case 'x': d=16; break; case 'X': d=16; digits = "0123456789ABCDEF"; break; case 'j': d=36; digits = "abcdefghijklmnopqrstuvwxyz0123456789"; break; case 'J': /* Used by 454 */ d=36; digits = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; break; } while (bits > 0) { int32_t sv; int nb = bits > 32 ? 32 : bits; if (-1 == (sv = get_hi_bits(blk, nb))) return -1; val = sv; do { tmp[tmp_ind++] = digits[val % d]; val /= d; } while (val != 0); bits -= nb; } /* Pad to requested size */ for (i = width; i > tmp_ind; i--) emit(*digits); /* Output the formatted value itself */ do { emit(tmp[--tmp_ind]); } while (tmp_ind != 0); break; } case 'c': /* A single n-bit character */ if (!bits) bits = 8; if (-1 == (val = get_hi_bits(blk, bits))) return -1; emit(val); break; case 's': { /* A string, to the end of suffix, of n-bit characters */ if (!bits) bits = 8; /* Reading n-bits at a time to produce a string */ while (-1 != (val = get_hi_bits(blk, bits))) emit(val); break; } default: fprintf(stderr, "Unknown arg: %c\n", *fmt); } } case '\0': break; default: emit(*fmt); } } /* * No percent rule found implies the name is a simple string * concatenation of prefix and suffix */ if (!percent) { int i; /* A strncpy would be more efficient here */ for (i = 0; suffix[i]; i++) { emit(suffix[i]); } } emit('\0'); block_destroy(blk, 1); return out_pos; } /* * The opposite of above. * Given a format and a set of arguments packs the values into the * supplied 'suffix' string. This should be 256 characters long and the * first byte will consist of the real length. * * Returns 0 on success * -1 on failuare */ int pack_trace_suffix(unsigned char *suffix, char *fmt, ...) { block_t *blk = block_create(NULL, 256); va_list args; va_start(args, fmt); for(; *fmt; fmt++) { switch(*fmt) { /* A format specifier */ case '%': { int width __UNUSED__; int bits = 0; signed int val; fmt++; /* Width specifier - ignore this */ width = strtol(fmt, &fmt, 10); /* Bit size specifier */ if ('.' == *fmt) { fmt++; bits = strtol(fmt, &fmt, 10); } /* The format code */ switch (*fmt) { case '%': /* A literal percent */ break; case 'o': case 'd': case 'x': case 'X': case 'j': case 'J': /* A numeric value - it doesn't matter what format it * is specified as, just how many bits. */ val = (uint32_t)va_arg(args, int); set_hi_bits(blk, val, bits); break; case 'c': if (!bits) bits = 8; val = (unsigned char)va_arg(args, int); set_hi_bits(blk, val, bits); break; case 's': { char *s = (char *)va_arg(args, char *); if (!bits) bits = 8; for (; *s; s++) { set_hi_bits(blk, *s, bits); } break; } default: fprintf(stderr, "Unknown arg: %c\n", *fmt); } } } } if (blk->byte >= 256) return -1; *suffix = blk->byte + (blk->bit > 0); memcpy(suffix+1, blk->data, *suffix); return 0; } /* * --------------------------------------------------------------------------- * Higher level I/O functions */ /* * Fetches the next trace from an SRF container as a "memory-FILE". * Name, if defined (which should be a buffer of at least 512 bytes long) * will be filled out to contain the read name. * * Returns mFILE containing trace on success * NULL on failure. */ mFILE *srf_next_trace(srf_t *srf, char *name) { do { int type; switch(type = srf_next_block_type(srf)) { case -1: /* EOF */ return NULL; case SRFB_NULL_INDEX: { /* * Maybe the last 8 bytes of a the file (or previously was * last 8 bytes prior to concatenating SRF files together). * If so it's the index length and should always be 8 zeros. */ uint64_t ilen; if (1 != fread(&ilen, 8, 1, srf->fp)) return NULL; if (ilen != 0) return NULL; break; } case SRFB_CONTAINER: if (0 != srf_read_cont_hdr(srf, &srf->ch)) return NULL; break; case SRFB_XML: if (0 != srf_read_xml(srf, &srf->xml)) return NULL; break; case SRFB_TRACE_HEADER: if (0 != srf_read_trace_hdr(srf, &srf->th)) return NULL; break; case SRFB_TRACE_BODY: { mFILE *mf = mfcreate(NULL, 0); srf_trace_body_t tb; tb.trace = NULL; if (!mf || 0 != srf_read_trace_body(srf, &tb, 0)) return NULL; if (name) { if (-1 == construct_trace_name(srf->th.id_prefix, (unsigned char *)tb.read_id, tb.read_id_length, name, 512)) { return NULL; } } if (srf->th.trace_hdr_size) mfwrite(srf->th.trace_hdr, 1, srf->th.trace_hdr_size, mf); if (tb.trace_size) mfwrite(tb.trace, 1, tb.trace_size, mf); if (tb.trace) free(tb.trace); mrewind(mf); return mf; } case SRFB_INDEX: { off_t pos = ftell(srf->fp); srf_read_index_hdr(srf, &srf->hdr, 1); /* Skip the index body */ fseeko(srf->fp, pos + srf->hdr.size, SEEK_SET); break; } default: fprintf(stderr, "Block of unknown type '%c'. Aborting\n", type); return NULL; } } while (1); return NULL; } /* * Decodes a partial ZTR file consisting of data in 'mf'. * Note that mf may contain a partial chunk, so we need to be careful on * error checking. * * If a ztr object is passed in (in 'z') then we assume we've already * loaded the ZTR header and get straight down to decoding the remaining * chunks. Otherwise we also decode the header. * * If no chunk is visible at all then we'll return NULL and rewind mf. * Otherwise we'll leave the file pointer at the start of the next * partial chunk (or EOF if none) and return the ztr_t pointer. */ ztr_t *partial_decode_ztr(srf_t *srf, mFILE *mf, ztr_t *z) { ztr_t *ztr; ztr_chunk_t *chunk; long pos = 0; if (z) { /* Use existing ZTR object => already loaded header */ ztr = z; } else { /* Allocate or use existing ztr */ if (NULL == (ztr = new_ztr())) return NULL; /* Read the header */ if (-1 == ztr_read_header(mf, &ztr->header)) { if (!z) delete_ztr(ztr); mrewind(mf); return NULL; } /* Check magic number and version */ if (memcmp(ztr->header.magic, ZTR_MAGIC, 8) != 0) { if (!z) delete_ztr(ztr); mrewind(mf); return NULL; } if (ztr->header.version_major != ZTR_VERSION_MAJOR) { if (!z) delete_ztr(ztr); mrewind(mf); return NULL; } } /* Load chunks */ pos = mftell(mf); while ((chunk = ztr_read_chunk_hdr(mf))) { chunk->data = (char *)xmalloc(chunk->dlength); if (chunk->dlength != mfread(chunk->data, 1, chunk->dlength, mf)) break; ztr->nchunks++; ztr->chunk = (ztr_chunk_t *)xrealloc(ztr->chunk, ztr->nchunks * sizeof(ztr_chunk_t)); memcpy(&ztr->chunk[ztr->nchunks-1], chunk, sizeof(*chunk)); xfree(chunk); pos = mftell(mf); } /* * At this stage we're 'pos' into the mFILE mf with any remainder being * a partial block. */ if (0 == ztr->nchunks) { if (!z) delete_ztr(ztr); mrewind(mf); return NULL; } /* Ensure we exit at the start of a ztr CHUNK */ mfseek(mf, pos, SEEK_SET); /* If this is the header part, ensure we uncompress and init. data */ if (!z) { /* Force caching of huffman code_sets */ ztr_find_hcode(ztr, CODE_USER); /* And uncompress the rest */ uncompress_ztr(ztr); } return ztr; } /* * Creates a copy of ztr_t 'src' and returns it. The newly returned ztr_t * will consist of shared components where src and dest overlap, but freeing * dest will know what's appropriate to free and what is not. */ ztr_t *ztr_dup(ztr_t *src) { ztr_t *dest = new_ztr(); int i; if (!dest) return NULL; /* Basics */ *dest = *src; /* Mirror chunks */ dest->chunk = (ztr_chunk_t *)malloc(src->nchunks * sizeof(ztr_chunk_t)); for (i = 0; i < src->nchunks; i++) { dest->chunk[i] = src->chunk[i]; dest->chunk[i].ztr_owns = 0; /* src owns the data/meta_data */ } /* Mirror text_segments; no overlap here */ dest->text_segments = (ztr_text_t *)malloc(src->ntext_segments * sizeof(ztr_text_t)); for (i = 0; i < src->ntext_segments; i++) { dest->text_segments[i] = src->text_segments[i]; } /* huffman hcodes */ dest->hcodes = (ztr_hcode_t *)malloc(src->nhcodes * sizeof(ztr_hcode_t)); for (i = 0; i < src->nhcodes; i++) { dest->hcodes[i] = src->hcodes[i]; dest->hcodes[i].ztr_owns = 0; } return dest; } /* * Fetches the next trace from an SRF container as a ZTR object. * This is more efficient than srf_next_trace() if we are serially * reading through many traces as we decode ZTR data less often and can * cache data from one trace to the next. * * Name, if defined (which should be a buffer of at least 512 bytes long) * will be filled out to contain the read name. * * filter_mask should consist of zero or more SRF_READ_FLAG_* bits. * Reads with one or more flags matching these bits will be skipped over. * * flags, if non-NULL, is filled out on exit to contain the SRF flags * from the Data Block structure. * * Returns ztr_t * on success * NULL on failure. */ ztr_t *srf_next_ztr_flags(srf_t *srf, char *name, int filter_mask, int *flags) { do { int type; switch(type = srf_next_block_type(srf)) { case -1: /* EOF */ return NULL; case SRFB_NULL_INDEX: { /* * Maybe the last 8 bytes of a the file (or previously was * last 8 bytes prior to concatenating SRF files together). * If so it's the index length and should always be 8 zeros. */ uint64_t ilen; if (1 != fread(&ilen, 8, 1, srf->fp)) return NULL; if (ilen != 0) return NULL; break; } case SRFB_CONTAINER: if (0 != srf_read_cont_hdr(srf, &srf->ch)) return NULL; break; case SRFB_XML: if (0 != srf_read_xml(srf, &srf->xml)) return NULL; break; case SRFB_TRACE_HEADER: if (0 != srf_read_trace_hdr(srf, &srf->th)) return NULL; /* Decode ZTR chunks in the header */ if (srf->mf) mfdestroy(srf->mf); srf->mf = mfcreate(NULL, 0); if (srf->th.trace_hdr_size) mfwrite(srf->th.trace_hdr, 1, srf->th.trace_hdr_size, srf->mf); if (srf->ztr) delete_ztr(srf->ztr); mrewind(srf->mf); if (NULL != (srf->ztr = partial_decode_ztr(srf, srf->mf, NULL))) { srf->mf_pos = mftell(srf->mf); } else { /* Maybe not enough to decode or no headerBlob. */ /* So delay until decoding the body. */ srf->mf_pos = 0; } mfseek(srf->mf, 0, SEEK_END); srf->mf_end = mftell(srf->mf); break; case SRFB_TRACE_BODY: { srf_trace_body_t tb; ztr_t *ztr_tmp; if (!srf->mf || 0 != srf_read_trace_body(srf, &tb, 0)) return NULL; if (name) { if (-1 == construct_trace_name(srf->th.id_prefix, (unsigned char *)tb.read_id, tb.read_id_length, name, 512)) { return NULL; } } mfseek(srf->mf, srf->mf_end, SEEK_SET); if (tb.trace_size) { mfwrite(tb.trace, 1, tb.trace_size, srf->mf); free(tb.trace); tb.trace = NULL; } mftruncate(srf->mf, mftell(srf->mf)); mfseek(srf->mf, srf->mf_pos, SEEK_SET); if (tb.flags & filter_mask) { break; /* Filtered, so skip it */ } else { if (flags) *flags = tb.flags; if (srf->ztr) ztr_tmp = ztr_dup(srf->ztr); /* inefficient, but simple */ else ztr_tmp = NULL; return partial_decode_ztr(srf, srf->mf, ztr_tmp); } } case SRFB_INDEX: { off_t pos = ftell(srf->fp); srf_read_index_hdr(srf, &srf->hdr, 1); /* Skip the index body */ fseeko(srf->fp, pos + srf->hdr.size, SEEK_SET); break; } default: fprintf(stderr, "Block of unknown type '%c'. Aborting\n", type); return NULL; } } while (1); return NULL; } ztr_t *srf_next_ztr(srf_t *srf, char *name, int filter_mask) { return srf_next_ztr_flags(srf, name, filter_mask, NULL); } /* * Returns the type of the next block. * -1 for none (EOF) */ int srf_next_block_type(srf_t *srf) { int c = fgetc(srf->fp); if (c == EOF) return -1; ungetc(c, srf->fp); return c; } /* * Reads the next SRF block from an archive and returns the block type. * If the block is a trace it'll return the full trace name too (maximum * 512 bytes). * * Returns block type on success, writing to pos and name as appropriate * -1 on EOF * -2 on failure */ int srf_next_block_details(srf_t *srf, uint64_t *pos, char *name) { int type; *pos = ftell(srf->fp); switch(type = srf_next_block_type(srf)) { case -1: /* EOF */ return -1; case SRFB_NULL_INDEX: { /* * Maybe the last 8 bytes of a the file (or previously was * last 8 bytes prior to concatenating SRF files together). * If so it's the index length and should always be 8 zeros. */ uint64_t ilen; if (1 != fread(&ilen, 8, 1, srf->fp)) return -2; if (ilen != 0) return -2; break; } case SRFB_CONTAINER: if (0 != srf_read_cont_hdr(srf, &srf->ch)) return -2; break; case SRFB_TRACE_HEADER: if (0 != srf_read_trace_hdr(srf, &srf->th)) return -2; break; case SRFB_TRACE_BODY: /* Inefficient, but it'll do for testing purposes */ if (0 != srf_read_trace_body(srf, &srf->tb, 1)) return -2; if (name) { if (-1 == construct_trace_name(srf->th.id_prefix, (unsigned char *)srf->tb.read_id, srf->tb.read_id_length, name, 512)) { return -2; } } break; case SRFB_INDEX: srf_read_index_hdr(srf, &srf->hdr, 1); /* Skip the index body */ fseeko(srf->fp, *pos + srf->hdr.size, SEEK_SET); break; default: fprintf(stderr, "Block of unknown type '%c'. Aborting\n", type); return -2; } return type; } /* * Searches through 'nitems' 8-byte values stored in 'srf' at file offset * 'start' onwards for the closest value <= 'query'. * * Returns 0 on success, setting *res * -1 on failure */ static int binary_scan(srf_t *srf, int nitems, uint64_t start, uint64_t query, uint64_t *res) { int min = 0; int max = nitems; int guess, i; uint64_t pos = 0, best = 0; if (nitems <= 0) return -1; /* Binary search on disk for approx location */ while (max - min > 100) { guess = (max - min) / 2 + min; if (guess == max) guess = max-1; if (-1 == fseeko(srf->fp, guess * 8 + start, SEEK_SET)) return -1; if (0 != srf_read_uint64(srf, &pos)) return -1; if (pos > query) { max = guess; } else { min = guess; } } /* Within a small distance => linear scan now to avoid needless disk IO */ if (-1 == fseeko(srf->fp, min * 8 + start, SEEK_SET)) return -1; for (i = min; i < max; i++) { if (0 != srf_read_uint64(srf, &pos)) return -1; if (pos > query) { break; } else { best = pos; } } assert(best <= query); *res = best; return 0; } /* * Searches in an SRF index for a trace of a given name. * If found it sets the file offsets for the container (cpos), data block * header (hpos) and data block (dpos). * * On a test with 2 containers and 12 headers this averaged at 6.1 reads per * trace fetch and 8.0 seeks. * * Returns 0 on success * -1 on failure (eg no index) * -2 on trace not found in index. */ int srf_find_trace(srf_t *srf, char *tname, uint64_t *cpos, uint64_t *hpos, uint64_t *dpos) { srf_index_hdr_t hdr; uint64_t hval, bnum; uint64_t bucket_pos; off_t ipos, skip; int item_sz = 8; /* Check for valid index */ if (0 != srf_read_index_hdr(srf, &hdr, 0)) { return -1; } ipos = ftello(srf->fp); skip = hdr.n_container * 8 + hdr.n_data_block_hdr * 8; if (hdr.dbh_pos_stored_sep) item_sz += 4; /* Hash and load the bucket */ hval = hash64(HASH_FUNC_JENKINS3, (unsigned char *)tname, strlen(tname)); bnum = hval & (hdr.n_buckets - 1); if (-1 == fseeko(srf->fp, ipos + skip + bnum * 8, SEEK_SET)) return -1; if (0 != srf_read_uint64(srf, &bucket_pos)) return -1; if (!bucket_pos) return -2; /* Secondary hash is the top 7-bits */ hval >>= 57; /* Jump to the item list */ if (-1 == fseeko(srf->fp, ipos-hdr.index_hdr_sz + bucket_pos, SEEK_SET)) return -1; for (;;) { char name[1024]; int h = fgetc(srf->fp); off_t saved_pos; uint64_t dbh_ind = 0; if ((h & 0x7f) != hval) { if (h & 0x80) return -2; /* end of list and not found */ /* * fseeko(srf->fp, 8, SEEK_CUR); * Use fread instead as it's likely already cached and linux * fseeko involves a real system call (lseek). */ if (item_sz != fread(dpos, 1, item_sz, srf->fp)) return -1; continue; } /* Potential hit - investigate to see if it's the real one: */ /* Seek to dpos and get trace id suffix. Compare to see if valid */ if (0 != srf_read_uint64(srf, dpos)) return -1; if (hdr.dbh_pos_stored_sep) { if (0 != srf_read_uint64(srf, &dbh_ind)) return -1; } saved_pos = ftello(srf->fp); if (-1 == fseeko(srf->fp, (off_t)*dpos, SEEK_SET)) return -1; if (0 != srf_read_trace_body(srf, &srf->tb, 0)) return -1; /* Identify the matching hpos (trace header) for this trace body */ if (hdr.dbh_pos_stored_sep) { /* Hack for now - binary scan through 1 object */ if (0 != binary_scan(srf, 1, ipos + hdr.n_container * 8 + dbh_ind * 8, *dpos, hpos)) return -1; } else { if (0 != binary_scan(srf, hdr.n_data_block_hdr, ipos + hdr.n_container * 8, *dpos, hpos)) return -1; } /* Check the trace name matches */ if (-1 == fseeko(srf->fp, *hpos, SEEK_SET)) return -1; if (0 != srf_read_trace_hdr(srf, &srf->th)) return -1; if (-1 == construct_trace_name(srf->th.id_prefix, (unsigned char *)srf->tb.read_id, srf->tb.read_id_length, name, 1024)) return -1; if (strcmp(name, tname)) { /* Not found, continue with next item in list */ if (h & 0x80) return -2; if (-1 == fseeko(srf->fp, saved_pos, SEEK_SET)) return -1; continue; } /* Matches, so fetch the container data and return out trace */ if (0 != binary_scan(srf, hdr.n_container, ipos, *dpos, cpos)) return -1; /* FIXME: what to do with base-caller and cpos */ break; } return 0; } io_lib-1.14.6/io_lib/array.c0000644000031500020650000001042712354177666012521 00000000000000/* * Copyright (c) 1994 MEDICAL RESEARCH COUNCIL * All rights reserved * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1 Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2 Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3 Neither the name of the MEDICAL RESEARCH COUNCIL, THE LABORATORY OF * MOLECULAR BIOLOGY nor the names of its contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * Copyright (c) Medical Research Council 1994. All rights reserved. * * Permission to use, copy, modify and distribute this software and its * documentation for any purpose is hereby granted without fee, provided that * this copyright and notice appears in all copies. * * This file was written by James Bonfield, Simon Dear, Rodger Staden, * as part of the Staden Package at the MRC Laboratory of Molecular * Biology, Hills Road, Cambridge, CB2 2QH, United Kingdom. * * MRC disclaims all warranties with regard to this software. */ /* * File: array.c * Version: * * Description: * * Created: * Updated: * */ #ifdef HAVE_CONFIG_H #include "io_lib_config.h" #endif #include #include #include "io_lib/array.h" #include "io_lib/xalloc.h" /* * For error reporting */ int ArrayError = 0; char *ArrayErrorString(int err) { switch(err) { case ARRAY_NO_ERROR: return "No error"; case ARRAY_FULL: return "Array full"; case ARRAY_INVALID_ARGUMENTS: return "Invalid arguments"; case ARRAY_OUT_OF_MEMORY: return "Out of memory"; default: return "Unknown error"; } } Array ArrayCreate(size_t size, size_t dim) /* * create a new array */ { Array a; if ( (a = (Array) xmalloc(sizeof(ArrayStruct)) ) == NULL ) { ArrayError = ARRAY_OUT_OF_MEMORY; } else { a->size = size; a->dim = dim?dim:1; a->max = 0; if ( (a->base = (void *)xmalloc(a->size * a->dim)) == NULL ) { ArrayError = ARRAY_OUT_OF_MEMORY; xfree(a); a = NULL; } } return a; } int ArrayExtend(Array a, size_t dim) /* * extend array */ { void *newbase; size_t old_dim; if (a == NULL) return ArrayError = ARRAY_INVALID_ARGUMENTS; if (dim < a->dim) return ArrayError = ARRAY_NO_ERROR; old_dim = a->dim; while (dim >= a->dim) { a->dim = a->dim * 1.2 + 1; } if ( (newbase = (void *)xrealloc(a->base, a->size * a->dim)) == NULL ) { a->dim = old_dim; return ArrayError = ARRAY_OUT_OF_MEMORY; } else { a->base = newbase; } return ArrayError = ARRAY_NO_ERROR; } void *ArrayRef(Array a, size_t i) { if (a==NULL) { ArrayError = ARRAY_INVALID_ARGUMENTS; return NULL; } if (i >= a->max) { if (i >= a->dim) { if (ArrayExtend(a,i+1)) { /* ArrayExtend sets ArrayError */ return NULL; } } a->max = i+1; } return (void *) arrp(char,a,i*a->size); } int ArrayDestroy(Array a) /* * destroy array */ { if (a==NULL) return ArrayError = ARRAY_INVALID_ARGUMENTS; if (a->base != NULL) xfree(a->base); a->base= NULL; xfree(a); return ArrayError = ARRAY_NO_ERROR; } io_lib-1.14.6/io_lib/compress.c0000644000031500020650000004352212354177666013240 00000000000000/* * Copyright (c) 2003, 2005, 2007-2010 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * Author(s): James Bonfield, John Taylor * * Copyright (c) 1997-2001 MEDICAL RESEARCH COUNCIL * All rights reserved * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1 Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2 Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3 Neither the name of the MEDICAL RESEARCH COUNCIL, THE LABORATORY OF * MOLECULAR BIOLOGY nor the names of its contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * Copyright (c) Medical Research Council 1994. All rights reserved. * * Permission to use, copy, modify and distribute this software and its * documentation for any purpose is hereby granted without fee, provided that * this copyright and notice appears in all copies. * * This file was written by James Bonfield, Simon Dear, Rodger Staden, * as part of the Staden Package at the MRC Laboratory of Molecular * Biology, Hills Road, Cambridge, CB2 2QH, United Kingdom. * * MRC disclaims all warranties with regard to this software. */ /* * Handles compression and decompression. * Two functions are available. One compresses files, and the other opens * (read only) a compressed file and returns a FILE pointer. * Neither of these two are likely to work under Windows or MacOS. */ #ifdef HAVE_CONFIG_H #include "io_lib_config.h" #endif #include #include #include #include #include #ifdef HAVE_SYS_WAIT_H # include # define DO_PIPE2 #endif #include #include #include #include #include "io_lib/os.h" /* for ftruncate() under WINNT */ #include "io_lib/compress.h" #ifdef HAVE_ZLIB #include /* ------------------------------------------------------------------------- */ /* GZIP reading and writing code via ZLIB. */ #define BS 8192 #define MAX_WBITS 15 #define FTEXT (1<<0) #define FHCRC (1<<1) #define FEXTRA (1<<2) #define FNAME (1<<3) #define FCOMMENT (1<<4) /* Given a gzip file this returns the size of the gzip header */ static int gzheadersize(unsigned char *data) { int offset = 10; int flags = data[3]; if (flags & FEXTRA) offset += 2 + data[offset] + data[offset+1]*256; if (flags & FNAME) while (data[offset++]); if (flags & FCOMMENT) while (data[offset++]); if (flags & FHCRC) offset += 2; return offset; } char *memgunzip(char *data, size_t size, size_t *udata_size) { int gzheader; z_stream s; char *udata = NULL; int udata_alloc = 0; int udata_pos = 0; /* Compute gzip header size */ gzheader = gzheadersize((unsigned char *)data); /* Initialise zlib stream starting after the header */ s.zalloc = (alloc_func)0; s.zfree = (free_func)0; s.opaque = (voidpf)0; s.next_in = (unsigned char *)data + gzheader; s.avail_in = size - gzheader; inflateInit2(&s, -MAX_WBITS); /* Decode to 'udata' array */ for (;;) { int err; if (udata_alloc - udata_pos < 1) { udata_alloc = udata_alloc ? udata_alloc * 2 : 256; udata = realloc(udata, udata_alloc); } s.next_out = (unsigned char *)&udata[udata_pos]; s.avail_out = udata_alloc - udata_pos; err = inflate(&s, Z_NO_FLUSH); udata_pos = udata_alloc - s.avail_out; if (err) { if (err == Z_STREAM_END) { break; } else { inflateEnd(&s); return NULL; } } } inflateEnd(&s); *udata_size = udata_pos; return udata; } char *memgzip(char *data, size_t size, size_t *cdata_size) { z_stream s; char *cdata = NULL; int cdata_alloc = 0; int cdata_pos = 0; int err; uint32_t i32; /* Create a minimal gzip header */ cdata = malloc(cdata_alloc = size*1.02+10+8); memcpy(cdata, "\037\213\010\000\000\000\000\000\000\377", 10); cdata_pos = 10; /* Initialise zlib stream starting after the header */ s.zalloc = (alloc_func)0; s.zfree = (free_func)0; s.opaque = (voidpf)0; s.next_in = (unsigned char *)data; s.avail_in = size; err = deflateInit2(&s, Z_DEFAULT_COMPRESSION, Z_DEFLATED, -MAX_WBITS, 9 /* DEF_MEM_LEVEL */, Z_DEFAULT_STRATEGY); /* Encode to 'cdata' array */ for (;s.avail_in;) { s.next_out = (unsigned char *)&cdata[cdata_pos]; s.avail_out = cdata_alloc - cdata_pos; if (cdata_alloc - cdata_pos <= 0) { fprintf(stderr, "Gzip produced larger output than expected. Abort\n"); return NULL; } err = deflate(&s, Z_NO_FLUSH); cdata_pos = cdata_alloc - s.avail_out; if (err != Z_OK) break; } deflate(&s, Z_FINISH); cdata_pos = 10 + s.total_out; i32 = crc32(0L, (unsigned char *)data, size); cdata[cdata_pos++] = (int)(i32 & 0xff); i32 >>= 8; cdata[cdata_pos++] = (int)(i32 & 0xff); i32 >>= 8; cdata[cdata_pos++] = (int)(i32 & 0xff); i32 >>= 8; cdata[cdata_pos++] = (int)(i32 & 0xff); i32 >>= 8; i32 = size; cdata[cdata_pos++] = (int)(i32 & 0xff); i32 >>= 8; cdata[cdata_pos++] = (int)(i32 & 0xff); i32 >>= 8; cdata[cdata_pos++] = (int)(i32 & 0xff); i32 >>= 8; cdata[cdata_pos++] = (int)(i32 & 0xff); i32 >>= 8; deflateEnd(&s); *cdata_size = cdata_pos; return cdata; } #endif #ifdef DO_PIPE2 /* ------------------------------------------------------------------------- */ /* pipe_into - for piping via compression and decompression tools */ /* * This pipes 'input' data of length 'size' into a unix 'command'. * The output is then returned as an allocated block of memory. It is the * caller's responsibility to free this data. * * Returns malloc()ed data on success * NULL on failure */ #define PIPEBS 8192 static char *pipe_into(const char *command, char *input, size_t insize, size_t *outsize) { char *output = NULL; int output_alloc = 0; int output_used = 0; int fdp[2][2]; fd_set rdfds, wrfds; int n = 0; pid_t pid; char buf[PIPEBS]; int len, status; int eof_rd = 0, eof_wr = 0; /* * Make the connections: * * fdp[0] is stdin for the child * fdp[1] is stdout for the child * fdp[x][0] is the read end, and fdp[x][1] is the write end. * Hence: * fdp[0][1] (parent's output) -> (child's stdin) fdp[0][0] * fdp[1][1] (child's stdout) -> (parent's input) fdp[1][0] */ if (-1 == pipe(fdp[0])) return NULL; if (-1 == pipe(fdp[1])) { close(fdp[0][0]); close(fdp[0][1]); return NULL; } if (n < fdp[1][0] + 1) n = fdp[1][0] + 1; if (n < fdp[0][1] + 1) n = fdp[0][1] + 1; switch(pid = fork()) { case 0: /* child */ dup2(fdp[0][0], 0); dup2(fdp[1][1], 1); close(fdp[0][1]); close(fdp[1][0]); execlp("sh", "sh", "-c", command, NULL); exit(1); default: /* parent */ close(fdp[0][0]); close(fdp[1][1]); break; case -1: /* error */ return NULL; } /* * Set both parent ends to be non blocking. Deadlock can not be * completely avoided in a double pipe, so if something's going to * break we want to make sure it'll be the child, not the parent. */ (void)fcntl(fdp[0][1], F_SETFL, O_NONBLOCK); (void)fcntl(fdp[1][0], F_SETFL, O_NONBLOCK); do { struct timeval tv; int r; FD_ZERO(&rdfds); FD_ZERO(&wrfds); if (!eof_wr) FD_SET(fdp[0][1], &wrfds); if (!eof_rd) FD_SET(fdp[1][0], &rdfds); tv.tv_sec = 1; tv.tv_usec = 0; if (-1 == (r = select(n, &rdfds, &wrfds, NULL, &tv))) /* Handle EINTR etc... */ break; if (r) { if (FD_ISSET(fdp[1][0], &rdfds)) { len = read(fdp[1][0], buf, PIPEBS); if (len > 0) { while (output_used + len > output_alloc) { output_alloc = output_alloc ? output_alloc*2 : PIPEBS; output = realloc(output, output_alloc); } memcpy(&output[output_used], buf, len); output_used += len; } else { close(fdp[1][0]); eof_rd = 1; } } if (FD_ISSET(fdp[0][1], &wrfds)) { len = write(fdp[0][1], input, insize>PIPEBS ? PIPEBS : insize); if (len > 0) { input += len; insize -= len; if (insize == 0) { close(fdp[0][1]); eof_wr = 1; } } } } } while(!eof_rd || !eof_wr); close(fdp[0][1]); /* should be closed already, but being doubly- */ close(fdp[1][0]); /* sure in case of error */ waitpid(pid, &status, 0); *outsize = output_used; return output; } #endif /* DO_PIPE2 */ /* ------------------------------------------------------------------------- */ /* The main external routines for io_lib */ /* * This contains the last used compression method. */ static int compression_used = 0; typedef struct { unsigned char magic[3]; int magicl; char *compress; char *uncompress; char *extension; } Magics; /* * The list of magic numbers. The attempted order for compression is the * order of entries in this file. * * NB: bzip gives very good (better than gzip) results, is sometimes faster for * compression, but unfortunately much slower (4x?) for decompression. Most * people won't have it anyway. * * szip is definitely the best in compression ratios, and is faster than bzip. * However it's still slower than gzip. For comparable ratios, but much faster, * see the ztr format. */ static Magics magics[] = { {{'B', 'Z', '0'}, 3, "bzip", "bzip -d", ".bz"}, {{'\037', 0213, '\0'}, 2, "gzip", "gzip -d", ".gz"}, {{'\037', 0235, '\0'}, 2, "compress", "uncompress",".Z"}, {{'B', 'Z', 'h'}, 3, "bzip2", "bzip2 -d", ".bz2"}, {{'S', 'Z', '\n'}, 3, "szip", "szip -d", ".sz"}, }; void set_compression_method(int method) { compression_used = method; } int get_compression_method(void) { return compression_used; } /* * Converts compress mode strings (eg "gzip") to numbers. */ int compress_str2int(char *mode) { if (strcmp(mode, "bzip") == 0) return COMP_METHOD_BZIP; else if (strcmp(mode, "bzip2") == 0) return COMP_METHOD_BZIP2; else if (strcmp(mode, "gzip") == 0) return COMP_METHOD_GZIP; else if (strcmp(mode, "compress") == 0) return COMP_METHOD_COMPRESS; else if (strcmp(mode, "szip") == 0) return COMP_METHOD_SZIP; else return 0; } /* * Converts compress mode numbers to strings (eg "gzip"). */ char *compress_int2str(int mode) { switch (mode) { case COMP_METHOD_BZIP: return "bzip"; case COMP_METHOD_GZIP: return "gzip"; case COMP_METHOD_BZIP2: return "bzip2"; case COMP_METHOD_COMPRESS: return "compress"; case COMP_METHOD_SZIP: return "szip"; } return "none"; } /* * Compress a file using the method set in the compression_used value * (set by set_compression_method and fopen_compressed). * * If compression succeeds, we rename the file back its original name. * * When compression_used is 0 no compression is done. */ int compress_file(char *file) { char fname[2048]; mFILE *mf; FILE *fp; /* Do nothing unless requested */ if (compression_used == 0) return 0; mf = mfopen(file, "r"); fcompress_file(mf); sprintf(fname, "%s%s", file, magics[compression_used-1].extension); if (NULL == (fp = fopen(fname, "wb"))) return -1; fwrite(mf->data, 1, mf->size, fp); fclose(fp); mfclose(mf); return 0; } /* * Compress an mFILE using the method set in the compression_used value * (set by set_compression_method and fopen_compressed). This is done * in-memory by using a pipe to and from the compression program, or zlib * if we want to use gzip. * * When compression_used is 0 no compression is done. */ int fcompress_file(mFILE *fp) { size_t size; char *data; /* Do nothing unless requested */ if (compression_used == 0) return 0; #ifdef HAVE_ZLIB /* * If zlib is used then we use it to implement gzip internally, thus * saving starting up a separate process. This is substantially faster. */ if (compression_used == 2) { data = memgzip(fp->data, fp->size, &size); } else #endif { #ifdef DO_PIPE2 /* * We have to pipe the data via an external tool, avoiding temporary * files for speed. */ data = pipe_into(magics[compression_used-1].compress, fp->data, fp->size, &size); #else return -1; #endif } mfrecreate(fp, data, size); mfseek(fp, size, SEEK_SET); return 0; } /* * Returns a file pointer of an uncompressed copy of 'file'. * 'file' need not exist if 'file'.ext (eg file.gz) * exists and can be uncompressed. * * NO LONGER SUPPORTED:- * If ofp is non NULL then the original file pointer will also be returned * (opened for update) to allow writing back to the original file. In cases * of uncompressed data this is the same as the returned file pointer. */ mFILE *fopen_compressed(char *file, mFILE **ofp) { int num_magics = sizeof(magics) / sizeof(*magics); int i; char fext[1024]; if (ofp) { fprintf(stderr, "ofp not supported in fopen_compressed() yet\n"); *ofp = NULL; } /* * Try opening the file and reading the magic number. * If this doesn't work, then don't worry - the filename may be * the original name which has been renamed due to compression. * (eg file.gz). */ for (i = -1; i < num_magics; i++) { mFILE *fp, *newfp; if (i == -1) { if (NULL == (fp = mfopen(file, "rb"))) continue; } else { sprintf(fext, "%s%s", file, magics[i].extension); if (NULL == (fp = mfopen(fext, "rb"))) continue; } newfp = freopen_compressed(fp, NULL); if (fp != newfp) /* Was compressed, so free compressed copy & return uncompressed */ mfclose(fp); if (newfp) { return newfp; } } return NULL; } /* * Returns a file pointer of an uncompressed copy of 'fp'. * This may be the input fp or it may be a new fp. * The input fp is not modified and is left open. Therefore it is left up * to the caller to close the input fp and to check whether the returned fp * differs, and if so to close that too. */ mFILE *freopen_compressed(mFILE *fp, mFILE **ofp) { int num_magics = sizeof(magics) / sizeof(*magics); unsigned char mg[3]; int i; char *udata; size_t usize; if (ofp) { fprintf(stderr, "ofp not supported in fopen_compressed() yet\n"); *ofp = NULL; } /* Test that it's compressed with full magic number */ mfread(mg, 1, 3, fp); mrewind(fp); for (i = 0; i < num_magics; i++) { if (0 == memcmp(mg, magics[i].magic, magics[i].magicl)) break; } if (i == num_magics) { compression_used = 0; return fp; } #ifdef HAVE_ZLIB if (i == 1) { udata = memgunzip(fp->data, fp->size, &usize); } else #endif { #ifdef DO_PIPE2 udata = pipe_into(magics[i].uncompress, fp->data, fp->size, &usize); #else return NULL; #endif } compression_used = i+1; return mfcreate(udata, usize); } /* * Given a filename remove a known compression extension * * Returns: None */ void remove_extension(char *file) { int num_magics = sizeof(magics) / sizeof(*magics); int i; for (i=0;i #include #include /* * Usage: * * errout(format, args...); */ void errout(char *fmt, ...) { va_list args; va_start(args, fmt); vfprintf(stderr, fmt, args); va_end(args); } /* * memmove() does not exist on SunOS 4.x, despite being an ANSI library call. * * void *memmove(void *to, const void *from, size_t len) { * bcopy(from, to, len); * return to; * } */ io_lib-1.14.6/io_lib/files.c0000644000031500020650000002010012354177666012472 00000000000000/* * Copyright (c) 2007, 2010 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * Author(s): James Bonfield * * Copyright (c) 1996, 1997, 2000 MEDICAL RESEARCH COUNCIL * All rights reserved * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1 Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2 Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3 Neither the name of the MEDICAL RESEARCH COUNCIL, THE LABORATORY OF * MOLECULAR BIOLOGY nor the names of its contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * Copyright (c) Medical Research Council 1994. All rights reserved. * * Permission to use, copy, modify and distribute this software and its * documentation for any purpose is hereby granted without fee, provided that * this copyright and notice appears in all copies. * * This file was written by James Bonfield, Simon Dear, Rodger Staden, * as part of the Staden Package at the MRC Laboratory of Molecular * Biology, Hills Road, Cambridge, CB2 2QH, United Kingdom. * * MRC disclaims all warranties with regard to this software. */ #ifdef HAVE_CONFIG_H #include "io_lib_config.h" #endif #include "io_lib/misc.h" #include #include /* Alliant's Concentrix is hugely deficient */ /* Define things we require in this program */ /* Methinks S_IFMT and S_IFDIR aren't defined in POSIX */ #ifndef S_ISDIR #define S_ISDIR(m) (((m)&S_IFMT) == S_IFDIR) #endif /*!S_ISDIR*/ #ifndef S_ISREG #define S_ISREG(m) (((m)&S_IFMT) == S_IFREG) #endif /*!S_ISREG*/ int is_directory(char * fn) { struct stat buf; if ( stat(fn,&buf) ) return 0; return S_ISDIR(buf.st_mode); } int is_file(char * fn) { struct stat buf; if ( stat(fn,&buf) ) return 0; return S_ISREG(buf.st_mode); } int file_exists(char * fn) { struct stat buf; return ( stat(fn,&buf) == 0); } int compressed_file_exists(char *fname) { struct stat buf; char fn[2048]; if (stat(fname, &buf) == 0) return 1; sprintf(fn, "%s.gz", fname); if (stat(fn, &buf) == 0) return 1; sprintf(fn, "%s.bz", fname); if (stat(fn, &buf) == 0) return 1; sprintf(fn, "%s.bz2", fname); if (stat(fn, &buf) == 0) return 1; sprintf(fn, "%s.Z", fname); if (stat(fn, &buf) == 0) return 1; sprintf(fn, "%s.z", fname); if (stat(fn, &buf) == 0) return 1; return 0; } int file_size(char * fn) { struct stat buf; if ( stat(fn,&buf) != 0) return 0; return buf.st_size; } /* * --------------------------------------------------------------------------- * File of filename management */ FILE *open_fofn(char *files) { return fopen(files, "r"); } char *read_fofn(FILE *fp) { char line[256]; static char name[256]; while (fgets(line, 254, fp)) { if (1 == sscanf(line, "%s", name)) return name; } return NULL; } void close_fofn(FILE *fp) { fclose(fp); } /* * --------------------------------------------------------------------------- * Temporary file handling. */ #ifdef _WIN32 /* * On UNIX systems we use tmpfile(). * * On windows this is broken because it always attempts to create files in * the root directory of the current drive, and fails if the user does not * have write permission. * * We can't wrap up mkstemp() either as that doesn't exist under windows. * Instead we roll our own tmpfile() using the native windows API. */ #include #include #include #include #include #define _POSIX_ /* needed to get PATH_MAX */ #include static void display_win_error(char *msg) { LPVOID lpMsgBuf; FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, GetLastError(), 0, /* Default language */ (LPTSTR)&lpMsgBuf, /* Got to love void* to str casts! */ 0, NULL); fprintf(stderr, "%s: error #%d, %s", msg, GetLastError(), lpMsgBuf); LocalFree(lpMsgBuf); } /* * Creates a temporary file and returns a FILE pointer to it. * The file will be automatically deleted when it is closed or the * applicaton exits. * * Returns NULL on failure. */ FILE *tmpfile(void) { DWORD ret; char tmp_path[PATH_MAX], shrt_path[PATH_MAX]; int fd; FILE *fp; /* The Windows Way: get the temp directory and a file within it */ ret = GetTempPath(PATH_MAX, tmp_path); if (ret == 0 || ret > PATH_MAX) { display_win_error("GetTempPath()"); return NULL; } if (0 == GetTempFileName(tmp_path, "fubar", 0, shrt_path)) { display_win_error("GetTempFileName()"); return NULL; } /* * O_TRUNC incase anyone has managed to inject data in the newly created * file already via race-conditions. * * O_EXCL to (in theory) stop anyone else opening it and to die if someone * beat us to it - although this appears to not actually work on Windows. * * O_TEMPORARY so that the file is removed on close. */ if (-1 == (fd = _open(shrt_path, O_RDWR | O_TRUNC | O_EXCL | O_BINARY | O_TEMPORARY, 0600))) { perror(shrt_path); } /* Replace fd with FILE*. No need to close fd */ if (NULL == (fp = _fdopen(fd, "r+b"))) { perror(shrt_path); } return fp; } #endif /* _WIN32 */ io_lib-1.14.6/io_lib/find.c0000644000031500020650000001350212354177666012320 00000000000000/* * Copyright (c) 2007, 2010 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * Author(s): James Bonfield, John Taylor * * Copyright (c) 1996, 1999-2000 MEDICAL RESEARCH COUNCIL * All rights reserved * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1 Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2 Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3 Neither the name of the MEDICAL RESEARCH COUNCIL, THE LABORATORY OF * MOLECULAR BIOLOGY nor the names of its contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * Copyright (c) Medical Research Council 1994. All rights reserved. * * Permission to use, copy, modify and distribute this software and its * documentation for any purpose is hereby granted without fee, provided that * this copyright and notice appears in all copies. * * This file was written by James Bonfield, Simon Dear, Rodger Staden, * as part of the Staden Package at the MRC Laboratory of Molecular * Biology, Hills Road, Cambridge, CB2 2QH, United Kingdom. * * MRC disclaims all warranties with regard to this software. */ #ifdef HAVE_CONFIG_H #include "io_lib_config.h" #endif #include "io_lib/misc.h" #include #include #include /* 19/3/99 johnt - added Corba support */ #ifdef USE_CORBA #include "stcorba.h" #endif #ifdef USE_BIOLIMS #include "spBiolims.h" #endif char *myfind(char *file, char* searchpath, int (*found) (char *) ) { static char wholePath[1024]; char *path; char *f; f = NULL; if (found(file)) { strcpy(wholePath,file); f = wholePath; } else if (searchpath != NULL) { char *paths; char *next; paths = (char *) malloc(strlen(searchpath)+1); strcpy(paths,searchpath); path = paths; next = strchr(path,':'); while( next && (*(next+1) == ':' )){ /* 26/03/99 johnt - allow : to be entered into path by using :: */ memmove(next,next+1,strlen(next+1)+1); /* shuffle up data [including \0]*/ next = strchr(next+1,':'); } if(next) *next = '\0'; while (path!= NULL) { #ifdef USE_CORBA /* 19/03/99 johnt - if it is a corba path - look there */ if( !strncmp( CORBATAG,path,strlen(CORBATAG))){ if(corba_found(wholePath,path+strlen(CORBATAG),file)){ f = wholePath; break; } } else #endif #ifdef USE_BIOLIMS if( !strncmp( BIOLIMS_TAG,path,strlen(BIOLIMS_TAG))){ if(biolims_found(wholePath,path+strlen(BIOLIMS_TAG),file)){ f = wholePath; break; } } else #endif { (void) strcpy(wholePath,path); (void) strcat(wholePath,"/"); (void) strcat(wholePath,file); if (found(wholePath)) { f = wholePath; break; } } path = next; if( path ){ path++; next = strchr(path,':'); while( next && (*(next+1) == ':' )){ /* 26/03/99 johnt - allow : to be entered into path by using :: */ memmove(next,next+1,strlen(next+1)+1); /* shuffle up data */ next = strchr(next+1,':'); } if(next) *next='\0'; } } free(paths); } return f; } io_lib-1.14.6/io_lib/mach-io.c0000644000031500020650000001740412354177666012722 00000000000000/* * Copyright (c) 2005, 2007, 2010 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * Author(s): James Bonfield, Simon Dear * * Copyright (c) 1992, 1995 MEDICAL RESEARCH COUNCIL * All rights reserved * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1 Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2 Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3 Neither the name of the MEDICAL RESEARCH COUNCIL, THE LABORATORY OF * MOLECULAR BIOLOGY nor the names of its contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * Copyright (c) Medical Research Council 1994. All rights reserved. * * Permission to use, copy, modify and distribute this software and its * documentation for any purpose is hereby granted without fee, provided that * this copyright and notice appears in all copies. * * This file was written by James Bonfield, Simon Dear, Rodger Staden, * as part of the Staden Package at the MRC Laboratory of Molecular * Biology, Hills Road, Cambridge, CB2 2QH, United Kingdom. * * MRC disclaims all warranties with regard to this software. */ /* * Machine independant io: * For reading and writing to big-endian and little-endian files * * Routines available: * be_write_int_1() * be_write_int_2() * be_write_int_4() * be_write_int_8() * be_read_int_1() * be_read_int_2() * be_read_int_4() * be_read_int_8() * le_write_int_1() * le_write_int_2() * le_write_int_4() * le_write_int_8() * le_read_int_1() * le_read_int_2() * le_read_int_4() * le_read_int_8() * * All routine return: * 0 - an error has occurred during io operation * 1 - value suggessfully read or written */ #ifdef HAVE_CONFIG_H #include "io_lib_config.h" #endif #include #include "io_lib/stdio_hack.h" #include "io_lib/mach-io.h" /**********************************************************************/ /* IO for big-endian files */ /**********************************************************************/ /* * Write a big-endian int1 */ int be_write_int_1(FILE *fp, uint1 *i1) { if (fwrite(i1, sizeof(uint1), 1, fp) != 1) return (0); return (1); } /* * Write a big-endian int2 */ int be_write_int_2(FILE *fp, uint2 *i2) { uint2 i = be_int2(*i2); if (fwrite(&i, 2, 1, fp) != 1) return (0); return (1); } /* * Write a big-endian int4 */ int be_write_int_4(FILE *fp, uint4 *i4) { uint4 i = be_int4(*i4); if (fwrite(&i, 4, 1, fp) != 1) return (0); return (1); } /* * Write a big-endian int8 */ int be_write_int_8(FILE *fp, uint8 *i8) { uint8 i = be_int8(*i8); if (fwrite(&i, 8, 1, fp) != 1) return (0); return (1); } /* * Read a big-endian int1 */ int be_read_int_1(FILE *fp, uint1 *i1) { if (fread(i1, sizeof(uint1), 1, fp) != 1) return (0); return (1); } /* * Read a big-endian int2 */ int be_read_int_2(FILE *fp, uint2 *i2) { uint2 i; if (fread(&i, 2, 1, fp) != 1) return (0); *i2 = be_int2(i); return (1); } /* * Read a big-endian int4 */ int be_read_int_4(FILE *fp, uint4 *i4) { uint4 i; if (fread(&i, 4, 1, fp) != 1) return (0); *i4 = be_int4(i); return (1); } /* * Read a big-endian int8 */ int be_read_int_8(FILE *fp, uint8 *i8) { uint8 i; if (fread(&i, 8, 1, fp) != 1) return (0); *i8 = be_int8(i); return (1); } /**********************************************************************/ /* IO for little-endian files */ /**********************************************************************/ /* * Write a little-endian int1 */ int le_write_int_1(FILE *fp, uint1 *i1) { if (fwrite(i1, sizeof(uint1), 1, fp) != 1) return (0); return (1); } /* * Write a little-endian int2 */ int le_write_int_2(FILE *fp, uint2 *i2) { uint2 i = le_int2(*i2); if (fwrite(&i, 2, 1, fp) != 1) return (0); return (1); } /* * Write a little-endian int4 */ int le_write_int_4(FILE *fp, uint4 *i4) { uint4 i = le_int4(*i4); if (fwrite(&i, 4, 1, fp) != 1) return (0); return (1); } /* * Write a little-endian int8 */ int le_write_int_8(FILE *fp, uint8 *i8) { uint8 i = le_int8(*i8); if (fwrite(&i, 8, 1, fp) != 1) return (0); return (1); } /* * Read a little-endian int1 */ int le_read_int_1(FILE *fp, uint1 *i1) { if (fread(i1, sizeof(uint1), 1, fp) != 1) return (0); return (1); } /* * Read a little-endian int2 */ int le_read_int_2(FILE *fp, uint2 *i2) { uint2 i; if (fread(&i, 2, 1, fp) != 1) return (0); *i2 = le_int2(i); return (1); } /* * Read a little-endian int4 */ int le_read_int_4(FILE *fp, uint4 *i4) { uint4 i; if (fread(&i, 4, 1, fp) != 1) return (0); *i4 = le_int4(i); return (1); } /* * Read a little-endian int8 */ int le_read_int_8(FILE *fp, uint8 *i8) { uint8 i; if (fread(&i, 8, 1, fp) != 1) return (0); *i8 = le_int8(i); return (1); } io_lib-1.14.6/io_lib/open_trace_file.c0000644000031500020650000010773512500530640014504 00000000000000/* * Copyright (c) 2003-2008, 2013 Genome Research Ltd. * Author(s): James Bonfield, Andrew Whitwham * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * Author(s): James Bonfield * * Copyright (c) 2001 MEDICAL RESEARCH COUNCIL * All rights reserved * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1 Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2 Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3 Neither the name of the MEDICAL RESEARCH COUNCIL, THE LABORATORY OF * MOLECULAR BIOLOGY nor the names of its contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ #ifdef HAVE_CONFIG_H # include "io_lib_config.h" #endif #if !(defined(_MSC_VER) || defined(__MINGW32__)) # define TRACE_ARCHIVE # ifndef HAVE_LIBCURL # define USE_WGET # endif #endif #include #include #include #include #include #include #include "io_lib/os.h" #include "io_lib/xalloc.h" #ifdef TRACE_ARCHIVE # include # include # include # include # include #endif #ifdef USE_WGET # include #endif #ifndef PATH_MAX # define PATH_MAX 1024 #endif #ifdef HAVE_LIBCURL # include #endif #include "io_lib/open_trace_file.h" #include "io_lib/misc.h" #include "io_lib/tar_format.h" #include "io_lib/hash_table.h" #ifndef SAMTOOLS # include "io_lib/compress.h" # include "io_lib/sff.h" # include "io_lib/srf.h" #endif /* * Supported compression extensions. See the magics array in compress.c for * the full structure. */ static char *magics[] = {"", ".bz", ".gz", ".Z", ".z", ".bz2", ".sz"}; /* * Tokenises the search path splitting on colons (unix) or semicolons * (windows). * We also explicitly add a "./" to the end of the search path * * Returns: A new search path with items separated by nul chars. Two nul * chars in a row represent the end of the tokenised path. * Returns NULL for a failure. * * The returned data has been malloced. It is up to the caller to free this * memory. */ char *tokenise_search_path(char *searchpath) { char *newsearch; unsigned int i, j; size_t len; #ifdef _WIN32 char path_sep = ';'; #else char path_sep = ':'; #endif if (!searchpath) searchpath=""; newsearch = (char *)malloc((len = strlen(searchpath))+5); if (!newsearch) return NULL; for (i = 0, j = 0; i < len; i++) { /* "::" => ":". Used for escaping colons in http://foo */ if (i < len-1 && searchpath[i] == ':' && searchpath[i+1] == ':') { newsearch[j++] = ':'; i++; continue; } /* Handle http:// and ftp:// too without :: */ if (path_sep == ':') { if ((i == 0 || (i > 0 && searchpath[i-1] == ':')) && (!strncmp(&searchpath[i], "http:", 5) || !strncmp(&searchpath[i], "ftp:", 4) || !strncmp(&searchpath[i], "|http:", 6) || !strncmp(&searchpath[i], "|ftp:", 5) || !strncmp(&searchpath[i], "URL=http:", 9) || !strncmp(&searchpath[i], "URL=ftp:", 8))) { do { newsearch[j++] = searchpath[i]; } while (i 100) return NULL; /* Search the .index file */ sprintf(path, "%s.index", tarname); if (file_exists(path)) { FILE *fpind = fopen(path, "r"); char *cp; int tmp_off; int found = 0; if (fpind) { while (fgets(path, PATH_MAX+100, fpind)) { if ((cp = strchr(path, '\n'))) *cp = 0; tmp_off = strtol(path, &cp, 10); while (isspace(*cp)) cp++; if (strncmp(cp, file, name_len) == 0) { int i; for (i = 0; i < num_magics; i++) { if (strcmp(&cp[name_len], magics[i]) == 0) { offset = tmp_off; found = 1; break; } } if (found) break; } } fclose(fpind); /* Not in index */ if (!found) return NULL; } } if (NULL == (fp = fopen(tarname, "rb"))) return NULL; /* * Search through the tar file (starting from index position) looking * for our filename. If there was no index then we start from position 0. */ fseek(fp, offset, SEEK_SET); while(fread(&blk, sizeof(blk), 1, fp) == 1) { if (!blk.header.name[0]) break; size = strtol(blk.header.size, NULL, 8); /* start with the same name... */ if (strncmp(blk.header.name, file, name_len) == 0) { char *data; int i; /* ... but does it end with a known compression extension? */ for (i = 0; i < num_magics; i++) { if (strcmp(&blk.header.name[name_len], magics[i]) == 0) { break; } } /* ... apparently not? continue then */ if (i == num_magics) continue; /* Found it - copy out the data to an mFILE */ if (NULL == (data = (char *)malloc(size))) return NULL; if (size != fread(data, 1, size, fp)) { free(data); return NULL; } return mfcreate(data, size); } fseek(fp, TBLOCK*((size+TBLOCK-1)/TBLOCK), SEEK_CUR); } fclose(fp); return NULL; } /* * Reads a hash file to look for a filename. The hash file contains the * (relative) pathname for the file it is an index for along with the * positions and sizes of each file contained within it. The file format * of the archive itself is irrelevant provided that the data is not * internally compressed in some manner specific to that archive. * * Return mFILE pointer if found * NULL if not */ static mFILE *find_file_hash(char *file, char *hashfile) { size_t size; static HashFile *hf = NULL; static char hf_name[1024]; char *data; /* Cache an open HashFile for fast accesing */ if (strcmp(hashfile, hf_name) != 0) { if (hf) HashFileDestroy(hf); hf = HashFileOpen(hashfile); if (!hf) return NULL; strcpy(hf_name, hashfile); } /* Search */ if (NULL == (data = HashFileExtract(hf, file, &size))) return NULL; /* Found, so copy the contents to a fake FILE pointer */ return mfcreate(data, size); } #ifndef SAMTOOLS /* * Extracts a single trace from an SRF file. * * Return mFILE pointer if found * NULL if not */ static mFILE *find_file_srf(char *tname, char *srffile) { srf_t *srf; uint64_t cpos, hpos, dpos; mFILE *mf = NULL; char *cp; if (NULL == (srf = srf_open(srffile, "r"))) return NULL; if (NULL != (cp = strrchr(tname, '/'))) tname = cp+1; if (0 == srf_find_trace(srf, tname, &cpos, &hpos, &dpos)) { char *data = malloc(srf->th.trace_hdr_size + srf->tb.trace_size); if (!data) { srf_destroy(srf, 1); return NULL; } memcpy(data, srf->th.trace_hdr, srf->th.trace_hdr_size); memcpy(data + srf->th.trace_hdr_size, srf->tb.trace, srf->tb.trace_size); mf = mfcreate(data, srf->th.trace_hdr_size + srf->tb.trace_size); } srf_destroy(srf, 1); return mf; } #endif #ifdef TRACE_ARCHIVE /* * Searches for file in the ensembl trace archive pointed to by arcname. * If it finds it, it copies it out and returns a file pointer to the * temporary file, otherwise we return NULL. * * Arcname has the form address:port, eg "titan/22100" * * Returns mFILE pointer if found * NULL if not. */ #define RDBUFSZ 8192 static mFILE *find_file_archive(char *file, char *arcname) { char server[1024], *cp; int port; struct hostent *host; struct sockaddr_in saddr; int s = 0; char msg[1024]; ssize_t msg_len; char buf[RDBUFSZ]; mFILE *fpout; int block_count; /* Split arc name into server and port */ if (!(cp = strchr(arcname, '/'))) return NULL; strncpy(server, arcname, 1023); server[MIN(1023,cp-arcname)] = 0; port = atoi(cp+1); /* Make and connect socket */ if (NULL == (host = gethostbyname(server))) { perror("gethostbyname()"); return NULL; } saddr.sin_port = htons(port); saddr.sin_family = host->h_addrtype; memcpy(&saddr.sin_addr,host->h_addr_list[0], host->h_length); if ((s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) == -1) { perror("socket()"); return NULL; } if (connect(s, (struct sockaddr *)&saddr, sizeof(saddr)) == -1) { perror("connect()"); return NULL; } /* The minimal message to send down is "--scf tracename" */ sprintf(msg, "--scf %.*s\n", 1000, file); msg_len = strlen(msg); if (send(s, msg, msg_len, 0) != msg_len) { /* * partial request sent, but requests are short so if this * happens it's unlikely we'll cure it by sending multiple * fragments. */ /* close(s); */ return NULL; } /* * Create a fake FILE (mFILE) and write to it. */ fpout = mfcreate(NULL, 0); /* * Read the data back, in multiple blocks if necessary and write it * to our temporary file. We use a blocking read with a low timeout to * prevent locking up the application indefinitely. */ { struct timeval tv = {0, 10000}; setsockopt(s, SOL_SOCKET, SO_RCVTIMEO, (char *)&tv, sizeof(tv)); } errno = 0; block_count = 200; while ((msg_len = read(s, buf, RDBUFSZ)) > 0 || (errno == EWOULDBLOCK && --block_count)) { errno = 0; if (msg_len > 0) mfwrite(buf, 1, msg_len, fpout); } close(s); if (!block_count) { mfclose(fpout); return NULL; } mrewind(fpout); return fpout; } #endif #ifndef SAMTOOLS #ifdef USE_WGET /* NB: non-reentrant due to reuse of handle */ mFILE *find_file_url(char *file, char *url) { char buf[8192], *cp; mFILE *fp; int pid; int maxlen = 8190 - strlen(file); char *fname = tempnam(NULL, NULL); int status; /* Expand %s for the trace name */ for (cp = buf; *url && cp - buf < maxlen; url++) { if (*url == '%' && *(url+1) == 's') { url++; cp += strlen(strcpy(cp, file)); } else { *cp++ = *url; } } *cp++ = 0; /* Execute wget */ if ((pid = fork())) { waitpid(pid, &status, 0); } else { execlp("wget", "wget", "-q", "-O", fname, buf, NULL); } /* Return a filepointer to the result (if it exists) */ fp = (!status && file_size(fname) != 0) ? mfopen(fname, "rb") : NULL; remove(fname); free(fname); return fp; } #endif #define STATIC_CURL #ifdef HAVE_LIBCURL mFILE *find_file_url(char *file, char *url) { char buf[8192], *cp; mFILE *mf = NULL, *headers = NULL; int maxlen = 8190 - strlen(file); #ifdef STATIC_CURL static CURL *handle = NULL; static int curl_init = 0; #else CURL *handle = NULL; static int curl_init = 0; #endif char errbuf[CURL_ERROR_SIZE]; *errbuf = 0; #ifdef STATIC_CURL if (!curl_init) { if (curl_global_init(CURL_GLOBAL_ALL)) return NULL; if (NULL == (handle = curl_easy_init())) goto error; curl_init = 1; } #else if (!curl_init) { if (curl_global_init(CURL_GLOBAL_ALL)) return NULL; curl_init = 1; } if (NULL == (handle = curl_easy_init())) goto error; #endif /* Expand %s for the trace name */ for (cp = buf; *url && cp - buf < maxlen; url++) { if (*url == '%' && *(url+1) == 's') { url++; cp += strlen(strcpy(cp, file)); } else { *cp++ = *url; } } *cp++ = 0; /* Setup the curl */ if (NULL == (mf = mfcreate(NULL, 0)) || NULL == (headers = mfcreate(NULL, 0))) return NULL; if (0 != curl_easy_setopt(handle, CURLOPT_URL, buf)) goto error; if (0 != curl_easy_setopt(handle, CURLOPT_CONNECTTIMEOUT, 60L)) goto error; if (0 != curl_easy_setopt(handle, CURLOPT_WRITEFUNCTION, (curl_write_callback)mfwrite)) goto error; if (0 != curl_easy_setopt(handle, CURLOPT_WRITEDATA, mf)) goto error; if (0 != curl_easy_setopt(handle, CURLOPT_HEADERFUNCTION, (curl_write_callback)mfwrite)) goto error; if (0 != curl_easy_setopt(handle, CURLOPT_WRITEHEADER, headers)) goto error; if (0 != curl_easy_setopt(handle, CURLOPT_ERRORBUFFER, errbuf)) goto error; /* Fetch! */ if (0 != curl_easy_perform(handle)) goto error; /* Report errors is approproate. 404 is silent as it may have just been * a search via RAWDATA path, everything else is worth reporting. */ { float version; int response; char nul = 0; mfwrite(&nul, 1, 1, headers); if (2 == sscanf(headers->data, "HTTP/%f %d", &version, &response)) { if (response != 200) { if (response != 404) fprintf(stderr, "%.*s\n", (int)headers->size, headers->data); goto error; } } } if (mftell(mf) == 0) goto error; mfdestroy(headers); #ifndef STATIC_CURL curl_easy_cleanup(handle); #endif mrewind(mf); return mf; error: #ifndef STATIC_CURL if (handle) curl_easy_cleanup(handle); #endif if (mf) mfdestroy(mf); if (headers) mfdestroy(headers); if (*errbuf) fprintf(stderr, "CURL ERROR: %s\n", errbuf); return NULL; } #endif #if !defined(USE_WGET) && !defined(HAVE_LIBCURL) mFILE *find_file_url(char *file, char *url) { return NULL; } #endif /* * Takes an SFF file in 'data' and edits the header to ensure * that it has no index listed and only claims to contain a single entry. * This isn't strictly necessary for the sff/sff.c reading code, but it is * the 'Right Thing' to do. * * Returns an mFILE on success or NULL on failure. */ static mFILE *sff_single(char *data, size_t size) { *(uint64_t *)(data+8) = be_int8(0); /* index offset */ *(uint32_t *)(data+16) = be_int4(0); /* index size */ *(uint32_t *)(data+20) = be_int4(1); /* number of reads */ return mfcreate(data, size); } /* Hash (.hsh) format index searching for SFF files */ static mFILE *sff_hash_query(char *sff, char *entry, FILE *fp) { static HashFile *hf = NULL; static char sff_copy[1024]; char *data; size_t size; /* Cache an open HashFile for fast accessing */ if (strcmp(sff, sff_copy) != 0) { if (hf) { hf->afp = NULL; hf->hfp = NULL; /* will be closed by our parent */ HashFileDestroy(hf); } fseek(fp, -4, SEEK_CUR); if (NULL == (hf = HashFileFopen(fp))) return NULL; strcpy(sff_copy, sff); } data = HashFileExtract(hf, entry, &size); return data ? sff_single(data, size) : NULL; } /* * getuint4_255 * * A function to convert a 4-byte TVF/SFF value into an integer, where * the bytes are base 255 numbers. This is used to store the index offsets. */ static unsigned int getuint4_255(unsigned char *b) { return ((unsigned int) b[0]) * 255 * 255 * 255 + ((unsigned int) b[1]) * 255 * 255 + ((unsigned int) b[2]) * 255 + ((unsigned int) b[3]); } /* * 454 sorted format (.srt) index searching for SFF files. * Uses a binary search. * This function and getuint4_255 above are taken with permission * from 454's getsff.c with the following licence: * * Copyright (c)[2001-2005] 454 Life Sciences Corporation. All Rights Reserved. * * 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 LICENSOR 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. * * Permission to use, copy, modify and distribute this software and its * documentation for any purpose is hereby granted without fee, provided * that this copyright and notice appears in all copies. */ static mFILE *sff_sorted_query(char *sff, char *accno, FILE *fp, uint32_t index_length) { static unsigned char *index; static char sff_copy[1024]; unsigned char *us; uint32_t start, end; uint32_t offset = 0; char *data = NULL; static char chdr[1024]; static int chdrlen = 0, nflows = 0; union { char c1[1024]; uint16_t c2[512]; uint32_t c4[256]; } rhdr; int rhdrlen; int nbases, dlen; int bytes_per_flow = 2; /* Cache index if we're querying the same SFF file */ if (strcmp(sff_copy, sff) != 0) { if (index) xfree(index); if (NULL == (index = (unsigned char *)xmalloc(index_length))) return NULL; if (index_length != fread(index, 1, index_length, fp)) { xfree(index); return NULL; } strcpy(sff_copy, sff); /* Read the common header too - minimal decoding necessary */ fseek(fp, 0, SEEK_SET); if (31 != fread(chdr, 1, 31, fp)) return NULL; chdrlen = be_int2(*(uint16_t *)(chdr+24)); nflows = be_int2(*(uint16_t *)(chdr+28)); if (chdrlen-31 != fread(chdr+31, 1, chdrlen-31, fp)) return NULL; } /* * Perform a binary search of the index, stopping when the search * region becomes relatively small. This assumes that no accession * number is near 200 characters. */ start = 0; end = index_length; while (end - start > 200) { uint32_t mid; int val; mid = (start + end) / 2; /* * From the byte midpoint, scan backwards to the beginning of the * index record that covers that byte midpoint. */ while (mid > start && index[mid-1] != 255) { mid--; } val = strcmp(accno, (char *)(index+mid)); if (val == 0) { break; } else if (val < 0) { end = mid; } else { start = mid; } } /* * Scan through the small search region, looking for the accno. */ while (start < end) { if (strcmp(accno, (char *)(index+start)) == 0) { /* * If the accno is found, skip the accno characters, * then get the record offset. */ for (us=index+start; *us; us++,start++) ; us++; start++; offset = getuint4_255(us); if (us[4] != 255) { return NULL; } /* * The original getsff.c here computed the record size by * looking at the next index item and comparing it's offset to * this one, or the end of file position if this is the last * item. This has two problems: * 1: It means the index itself cannot be added to the end of * the file. * 2: It means that we cannot simply add an index to a SFF * file without also reordering all of the items within it. * * We solve this by reading the read header to work out the * object size instead. */ break; } /* * Skip to the beginning of the next index element. */ while (start < end && index[start] != 255) { start++; } start++; } /* * Now offset indicates the position of the SFF entry. Read and decode * header to get data length. Then read this too. */ fseek(fp, offset, SEEK_SET); if (16 != fread(rhdr.c1, 1, 16, fp)) return NULL; rhdrlen = be_int2(rhdr.c2[0]); nbases = be_int4(rhdr.c4[1]); if (rhdrlen-16 != fread(rhdr.c1+16, 1, rhdrlen-16, fp)) return NULL; dlen = (nflows * bytes_per_flow + nbases * 3 + 7) & ~7; /* Built up the fake SFF entry */ if (NULL == (data = (char *)xmalloc(chdrlen + rhdrlen + dlen))) return NULL; memcpy(data, chdr, chdrlen); memcpy(data + chdrlen, rhdr.c1, rhdrlen); if (dlen != fread(data + chdrlen + rhdrlen, 1, dlen, fp)) { xfree(data); return NULL; } /* Convert to mFILE */ return sff_single(data, chdrlen + rhdrlen + dlen); } /* * This returns an mFILE containing an SFF entry. * * This does the minimal decoding necessary to skip through the SFF * container to find an entry. In this respect it is a semi-duplication * of sff/sff.[ch], but implemented for efficiency. * * Having found an entry it packs the common header, the read specific * header and the read data into a single block of memory and returns this * as an mFILE. In essence it produces a single-read SFF archive. This * is then decoded by the normal sff parsing code representing a small * amount of redundancy, but one which is swamped by the I/O time. */ static mFILE *find_file_sff(char *entry, char *sff) { static FILE *fp = NULL; static char sff_copy[1024]; union { char c1[65536]; uint16_t c2[32768]; uint32_t c4[16384]; uint64_t c8[8192]; } chdr, rhdr; /* generous, but worst case */ uint32_t nflows, chdrlen, rhdrlen = 0, dlen = 0, magic; uint64_t file_pos; static uint64_t index_offset = 0; static uint32_t index_length = 0; static char index_format[8]; uint32_t nreads, i; size_t entry_len = strlen(entry); int bytes_per_flow = 2; char *fake_file; /* * Check cached information so rapid queries to the same archive are * fast. * ASSUMPTION: we won't externally replace the sff file with another of * the same name. */ if (strcmp(sff, sff_copy) == 0) { if (memcmp(index_format, ".hsh1.00", 8) == 0) { return sff_hash_query(sff, entry, fp); } else if (memcmp(index_format, ".srt1.00", 8) == 0 || memcmp(index_format, ".mft1.00", 8) == 0) { return sff_sorted_query(sff, entry, fp, index_length-8); } } if (fp) fclose(fp); strcpy(sff_copy, sff); *index_format = 0; /* Read the common header */ if (NULL == (fp = fopen(sff, "rb"))) return NULL; if (31 != fread(chdr.c1, 1, 31, fp)) return NULL; /* Check magic & vers: TODO */ magic = be_int4(chdr.c4[0]); if (magic != SFF_MAGIC) return NULL; if (memcmp(chdr.c1+4, SFF_VERSION, 4) != 0) return NULL; /* If we have an index, use it, otherwise search linearly */ index_offset = be_int8(chdr.c8[1]); index_length = be_int4(chdr.c4[4]); if (index_length != 0) { long orig_pos = ftell(fp); fseek(fp, index_offset, SEEK_SET); if (8 != fread(index_format, 1, 8, fp)) return NULL; if (memcmp(index_format, ".hsh1.00", 8) == 0) { /* HASH index v1.00 */ return sff_hash_query(sff, entry, fp); } else if (memcmp(index_format, ".srt1.00", 8) == 0 || memcmp(index_format, ".mft1.00", 8) == 0) { /* 454 sorted v1.00 */ return sff_sorted_query(sff, entry, fp, index_length-8); } else { /* Unknown index: revert back to a slow linear scan */ fseek(fp, orig_pos, SEEK_SET); } } nreads = be_int4(chdr.c4[5]); chdrlen = be_int2(chdr.c2[12]); //nkey = be_int2(chdr.c2[13]); nflows = be_int2(chdr.c2[14]); /* Read the remainder of the header */ if (chdrlen-31 != fread(chdr.c1+31, 1, chdrlen-31, fp)) return NULL; file_pos = chdrlen; /* Loop until we find the correct entry */ for (i = 0; i < nreads; i++) { uint16_t name_len; uint32_t nbases; /* Index could be between common header and first read - skip */ if (file_pos == index_offset) { fseek(fp, index_length, SEEK_CUR); file_pos += index_length; } /* Read 16 bytes to get name length */ if (16 != fread(rhdr.c1, 1, 16, fp)) return NULL; rhdrlen = be_int2(rhdr.c2[0]); name_len = be_int2(rhdr.c2[1]); nbases = be_int4(rhdr.c4[1]); /* Read the rest of the header */ if (rhdrlen-16 != fread(rhdr.c1+16, 1, rhdrlen-16, fp)) return NULL; file_pos += rhdrlen; dlen = (nflows * bytes_per_flow + nbases * 3 + 7) & ~7; if (name_len == entry_len && 0 == memcmp(rhdr.c1+16, entry, entry_len)) break; /* This is not the read you are looking for... */ fseek(fp, dlen, SEEK_CUR); } if (i == nreads) { /* Not found */ return NULL; } /* * Although we've decoded some bits already, we take the more modular * approach of packing the sections together and passing the entire * data structure off as a single-read SFF file to be decoded fully * by the sff reading code. */ if (NULL == (fake_file = (char *)xmalloc(chdrlen + rhdrlen + dlen))) return NULL; memcpy(fake_file, chdr.c1, chdrlen); memcpy(fake_file+chdrlen, rhdr.c1, rhdrlen); if (dlen != fread(fake_file+chdrlen+rhdrlen, 1, dlen, fp)) { xfree(fake_file); return NULL; } /* Convert to an mFILE and return */ return sff_single(fake_file, chdrlen+rhdrlen+dlen); } #endif /* * Searches for file in the directory 'dirname'. If it finds it, it opens * it. This also searches for compressed versions of the file in dirname * too. * * Returns mFILE pointer if found * NULL if not */ static mFILE *find_file_dir(char *file, char *dirname) { char path[PATH_MAX+1], path2[PATH_MAX+1]; size_t len = strlen(dirname); char *cp; if (dirname[len-1] == '/') len--; /* Special case for "./" or absolute filenames */ if (*file == '/' || (len==1 && *dirname == '.')) { sprintf(path, "%s", file); } else { /* Handle %[0-9]*s expansions, if required */ char *path_end = path; *path = 0; while ((cp = strchr(dirname, '%'))) { char *endp; long l = strtol(cp+1, &endp, 10); if (*endp != 's') { strncpy(path_end, dirname, (endp+1)-dirname); path_end += (endp+1)-dirname; dirname = endp+1; continue; } strncpy(path_end, dirname, cp-dirname); path_end += cp-dirname; if (l) { strncpy(path_end, file, l); path_end += MIN(strlen(file), l); file += MIN(strlen(file), l); } else { strcpy(path_end, file); path_end += strlen(file); file += strlen(file); } len -= (endp+1) - dirname; dirname = endp+1; } strncpy(path_end, dirname, len); path_end += MIN(strlen(dirname), len); *path_end = 0; if (*file) { *path_end++ = '/'; strcpy(path_end, file); } //fprintf(stderr, "*PATH=\"%s\"\n", path); } if (is_file(path)) { return mfopen(path, "rbm"); } /* * Given a pathname /a/b/c if a/b is a file and not a directory then * we'd get an ENOTDIR error. Instead we assume that a/b is an archive * and we attempt to work out what type by reading the first and last * bits of the file. */ if ((cp = strrchr(file, '/'))) { strcpy(path2, path); /* path contains / too as it's from file */ *strrchr(path2, '/') = 0; if (is_file(path2)) { /* Open the archive to test for magic numbers */ char magic[8]; FILE *fp; enum archive_type_t { NONE, HASH, TAR, SFF, SRF } type = NONE; if (NULL == (fp = fopen(path2, "rb"))) return NULL; memcpy(magic, "\0\0\0\0\0\0", 4); if (4 != fread(magic, 1, 4, fp)) return NULL; /* .hsh or .sff at start */ if (memcmp(magic, ".hsh", 4) == 0) type = HASH; else if (memcmp(magic, ".sff", 4) == 0) type = SFF; /* Or .hsh or Ihsh at the end */ if (NONE == type) { fseek(fp, -16, SEEK_END); if (8 != fread(magic, 1, 8, fp)) return NULL; if (memcmp(magic+4, ".hsh", 4) == 0) type = HASH; else if (memcmp(magic, "Ihsh", 4) == 0) type = SRF; } /* or ustar 257 bytes in to indicate un-hashed tar */ if (NONE == type) { fseek(fp, 257, SEEK_SET); if (5 != fread(magic, 1, 5, fp)) return NULL; if (memcmp(magic, "ustar", 5) == 0) type = TAR; } fclose(fp); switch (type) { case HASH: return find_file_hash(cp+1, path2); case TAR: return find_file_tar(cp+1, path2, 0); #ifndef SAMTOOLS case SFF: return find_file_sff(cp+1, path2); case SRF: return find_file_srf(cp+1, path2); #endif default: case NONE: break; } return NULL; } } return NULL; } /* * ------------------------------------------------------------------------ * Public functions below. */ /* * Opens a trace file named 'file'. This is initially looked for as a * pathname relative to a file named "relative_to". This may (for * example) be the name of an experiment file referencing the trace * file. In this case by passing relative_to as the experiment file * filename the trace file will be picked up in the same directory as * the experiment file. Relative_to may be supplied as NULL. * * 'file' is looked for at relative_to, then the current directory, and then * all of the locations listed in 'path' (which is a colon separated list). * If 'path' is NULL it uses the RAWDATA environment variable instead. * * Returns a mFILE pointer when found. * NULL otherwise. */ mFILE *open_path_mfile(char *file, char *path, char *relative_to) { char *newsearch; char *ele; mFILE *fp; /* Use path first */ if (!path) path = getenv("RAWDATA"); if (NULL == (newsearch = tokenise_search_path(path))) return NULL; /* * Step through the search path testing out each component. * We now look through each path element treating some prefixes as * special, otherwise we treat the element as a directory. */ for (ele = newsearch; *ele; ele += strlen(ele)+1) { int i; char *suffix[6] = {"", ".gz", ".bz2", ".sz", ".Z", ".bz2"}; for (i = 0; i < 6; i++) { char file2[1024]; char *ele2; /* * '|' prefixing a path component indicates that we do not * wish to perform the compression extension searching in that * location. */ if (*ele == '|') { ele2 = ele+1; } else { ele2 = ele; } sprintf(file2, "%s%s", file, suffix[i]); if (0 == strncmp(ele2, "TAR=", 4)) { if ((fp = find_file_tar(file2, ele2+4, 0))) { free(newsearch); return fp; } } else if (0 == strncmp(ele2, "HASH=", 5)) { if ((fp = find_file_hash(file2, ele2+5))) { free(newsearch); return fp; } #ifdef TRACE_ARCHIVE } else if (0 == strncmp(ele2, "ARC=", 4)) { if ((fp = find_file_archive(file2, ele2+4))) { free(newsearch); return fp; } #endif #ifndef SAMTOOLS #if defined(USE_WGET) || defined(HAVE_LIBCURL) } else if (0 == strncmp(ele2, "URL=", 4)) { if ((fp = find_file_url(file2, ele2+4))) { free(newsearch); return fp; } } else if (!strncmp(ele2, "http:", 5) || !strncmp(ele2, "ftp:", 4)) { /* ftp/http compression best done via other means */ if (i == 0 && (fp = find_file_url(file2, ele2))) { free(newsearch); return fp; } #endif } else if (0 == strncmp(ele2, "SFF=", 4)) { if ((fp = find_file_sff(file2, ele2+4))) { free(newsearch); return fp; } } else if (0 == strncmp(ele2, "SRF=", 4)) { if ((fp = find_file_srf(file2, ele2+4))) { free(newsearch); return fp; } #endif } else { if ((fp = find_file_dir(file2, ele2))) { free(newsearch); return fp; } } if (*ele == '|') break; } } free(newsearch); /* Look in the same location as the incoming 'relative_to' filename */ if (relative_to) { char *cp; char relative_path[PATH_MAX+1]; strcpy(relative_path, relative_to); if ((cp = strrchr(relative_path, '/'))) *cp = 0; if ((fp = find_file_dir(file, relative_path))) return fp; } return NULL; } FILE *open_path_file(char *file, char *path, char *relative_to) { mFILE *mf = open_path_mfile(file, path, relative_to); FILE *fp; if (!mf) return NULL; if (mf->fp) return mf->fp; /* Secure temporary file generation */ if (NULL == (fp = tmpfile())) return NULL; /* Copy the data */ fwrite(mf->data, 1, mf->size, fp); rewind(fp); mfclose(mf); return fp; } static char *exp_path = NULL; static char *trace_path = NULL; void iolib_set_trace_path(char *path) { trace_path = path; } char *iolib_get_trace_path(void) { return trace_path; } void iolib_set_exp_path (char *path) { exp_path = path; } char *iolib_get_exp_path (void) { return exp_path; } /* * Trace file functions: uses TRACE_PATH environment variable. */ mFILE *open_trace_mfile(char *file, char *rel_to) { return open_path_mfile(file, trace_path ? trace_path : getenv("TRACE_PATH"), rel_to); } FILE *open_trace_file(char *file, char *rel_to) { return open_path_file(file, trace_path ? trace_path : getenv("TRACE_PATH"), rel_to); } /* * Trace file functions: uses EXP_PATH environment variable. */ mFILE *open_exp_mfile(char *file, char *relative_to) { return open_path_mfile(file, exp_path ? exp_path : getenv("EXP_PATH"), relative_to); } FILE *open_exp_file(char *file, char *relative_to) { return open_path_file(file, exp_path ? exp_path : getenv("EXP_PATH"), relative_to); } io_lib-1.14.6/io_lib/read_alloc.c0000644000031500020650000002376112354177666013475 00000000000000/* * Copyright (c) 2005-2007, 2010, 2013 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * Author(s): James Bonfield, Simon Dear, Rodger Staden, * * Copyright (c) 1994, 1997, 2001-2002 MEDICAL RESEARCH COUNCIL * All rights reserved * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1 Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2 Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3 Neither the name of the MEDICAL RESEARCH COUNCIL, THE LABORATORY OF * MOLECULAR BIOLOGY nor the names of its contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * Copyright (c) Medical Research Council 1994. All rights reserved. * * Permission to use, copy, modify and distribute this software and its * documentation for any purpose is hereby granted without fee, provided that * this copyright and notice appears in all copies. * * This file was written by James Bonfield, Simon Dear, Rodger Staden, * as part of the Staden Package at the MRC Laboratory of Molecular * Biology, Hills Road, Cambridge, CB2 2QH, United Kingdom. * * MRC disclaims all warranties with regard to this software. */ /* * File: read_alloc.c * Purpose: Performs the allocation/freeing of Read structures * Last update: 01/09/94 */ /* The Read data type is designed so that it can hold a varying degree of information about sequences, yet have a single set of calls to access the data. There are plenty of assumptions around that both the number of bases and the number of points will fit into an int_2, a short. */ /* ---- Includes ---- */ #ifdef HAVE_CONFIG_H #include "io_lib_config.h" #endif #include #include #include #include #include "io_lib/misc.h" #include "io_lib/Read.h" #include "io_lib/xalloc.h" /* * Allocate a new sequence, with the given sizes. * Returns: * "Read *" for success * "NULLRead" for failure */ Read *read_allocate(int num_points, int num_bases) { Read *seq = NULLRead; int sections = read_sections(0); /* Allocate the body of the sequence */ if ((seq = (Read *)xmalloc(sizeof(Read))) == NULL) return(NULLRead); seq->NPoints = num_points; seq->NBases = num_bases; /* * Initialise the body, all pointers are set to NULL so we can * happily call `read_deallocate()`. */ seq->leftCutoff = 0; seq->rightCutoff = 0; seq->maxTraceVal = 0; seq->baseline = 0; seq->traceC = NULL; seq->traceA = NULL; seq->traceG = NULL; seq->traceT = NULL; seq->base = NULL; seq->basePos = NULL; seq->info = NULL; seq->format = TT_ANY; seq->trace_name = NULL; seq->prob_A = NULL; seq->prob_C = NULL; seq->prob_G = NULL; seq->prob_T = NULL; seq->orig_trace_format = TT_ANY; seq->orig_trace = NULL; seq->orig_trace_free = NULL; seq->ident = NULL; /* Allocate space for the bases - 1 extra for the ->base field so * that we can treat it as a NULL terminated string. */ if (sections & READ_BASES && (((seq->base = (char *)xcalloc(num_bases+1,1)) == NULL) || ((seq->basePos = (uint_2 *)xcalloc(num_bases+1,2)) == NULL) || ((seq->prob_A = (char *)xcalloc(num_bases+1,1)) == NULL) || ((seq->prob_C = (char *)xcalloc(num_bases+1,1)) == NULL) || ((seq->prob_G = (char *)xcalloc(num_bases+1,1)) == NULL) || ((seq->prob_T = (char *)xcalloc(num_bases+1,1)) == NULL)) ) { read_deallocate(seq); return NULLRead; } if (sections & READ_SAMPLES && (((seq->traceC =(TRACE *)xcalloc(num_points+1, 2)) == NULL)|| ((seq->traceA =(TRACE *)xcalloc(num_points+1, 2)) == NULL)|| ((seq->traceG =(TRACE *)xcalloc(num_points+1, 2)) == NULL)|| ((seq->traceT =(TRACE *)xcalloc(num_points+1, 2)) == NULL)) ) { read_deallocate(seq); return NULLRead; } seq->nflows = 0; seq->flow_order = NULL; seq->flow = NULL; seq->flow_raw = NULL; seq->private_data = NULL; seq->private_size = 0; return seq; } /* * Free memory allocated to a sequence by read_allocate(). */ void read_deallocate(Read *read) { if (read == NULLRead) return; if (read->traceC != NULL) xfree(read->traceC); if (read->traceA != NULL) xfree(read->traceA); if (read->traceG != NULL) xfree(read->traceG); if (read->traceT != NULL) xfree(read->traceT); if (read->base != NULL) xfree(read->base); if (read->basePos != NULL) xfree(read->basePos); if (read->info != NULL) xfree(read->info); if (read->prob_A != NULL) xfree(read->prob_A); if (read->prob_C != NULL) xfree(read->prob_C); if (read->prob_G != NULL) xfree(read->prob_G); if (read->prob_T != NULL) xfree(read->prob_T); if (read->trace_name != NULL) xfree(read->trace_name); if (read->orig_trace != NULL) { if (read->orig_trace_free) read->orig_trace_free(read->orig_trace); else xfree(read->orig_trace); } if (read->ident != NULL) xfree(read->ident); if (read->flow_order) xfree(read->flow_order); if (read->flow) xfree(read->flow); if (read->flow_raw) xfree(read->flow_raw); if (read->private_data) xfree(read->private_data); xfree(read); } /* * Duplicates the read structure and optionally gives it a new filename. * The following fields are not duplicated: * * int orig_trace_format; * void (*orig_trace_free)(void *ptr); * void *orig_trace; * char *ident; * * Returns: * "Read *" for success * "NULLRead" for failure */ Read* read_dup( Read* src, const char* new_name ) { int n; Read* dst; assert(src); /* Allocate storage and initialise */ dst = read_allocate( src->NPoints, src->NBases ); if( dst == NULLRead ) return 0; dst->info = 0; dst->trace_name = 0; /* Copy over possibly new name */ if( new_name ) n = strlen(new_name); else if( src->trace_name ) n = strlen(src->trace_name); else n = 0; if( n > 0 ) { dst->trace_name = (char*) xmalloc(n+1); if( !dst->trace_name ) goto error; if(new_name) strcpy( dst->trace_name, new_name ); else strcpy( dst->trace_name, src->trace_name ); } /* Copy over info */ if( src->info ) { dst->info = strdup(src->info); } /* Copy single fields */ dst->format = src->format; dst->maxTraceVal = src->maxTraceVal; dst->leftCutoff = src->leftCutoff; dst->rightCutoff = src->rightCutoff; dst->baseline = src->baseline; /* Copy NPoints fields if they exist */ if( src->traceA ) { for( n=0; nNPoints; n++ ) { dst->traceA[n] = src->traceA[n]; dst->traceC[n] = src->traceC[n]; dst->traceG[n] = src->traceG[n]; dst->traceT[n] = src->traceT[n]; } } /* Copy NBases fields if they exist */ if( src->base && src->base[0] ) { for( n=0; nNBases; n++ ) { dst->base[n] = src->base[n]; dst->basePos[n] = src->basePos[n]; if( src->prob_A ) { dst->prob_A[n] = src->prob_A[n]; dst->prob_C[n] = src->prob_C[n]; dst->prob_G[n] = src->prob_G[n]; dst->prob_T[n] = src->prob_T[n]; } } } /* Success */ return dst; error: /* Failure */ read_deallocate(dst); return NULLRead; } io_lib-1.14.6/io_lib/strings.c0000644000031500020650000001537112354177666013077 00000000000000/* * Copyright (c) 2007, 2010 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * Author(s): James Bonfield, Simon Dear, Rodger Staden, * * Copyright (c) 1994, 1996-1997, 2001 MEDICAL RESEARCH COUNCIL * All rights reserved * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1 Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2 Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3 Neither the name of the MEDICAL RESEARCH COUNCIL, THE LABORATORY OF * MOLECULAR BIOLOGY nor the names of its contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * Copyright (c) Medical Research Council 1994. All rights reserved. * * Permission to use, copy, modify and distribute this software and its * documentation for any purpose is hereby granted without fee, provided that * this copyright and notice appears in all copies. * * This file was written by James Bonfield, Simon Dear, Rodger Staden, * as part of the Staden Package at the MRC Laboratory of Molecular * Biology, Hills Road, Cambridge, CB2 2QH, United Kingdom. * * MRC disclaims all warranties with regard to this software. */ #ifdef HAVE_CONFIG_H #include "io_lib_config.h" #endif #include "io_lib/misc.h" #include #include #include #include int fstrlen(char *f, int max_f) { for (; max_f > 0 && (isspace(f[max_f-1]) || f[max_f-1]=='\0'); max_f--); return max_f; } void f2cstr(char *f, int max_f, char *c, int max_c) { int i; i = min(fstrlen(f,max_f),max_c); strncpy(c,f,i); c[i]='\0'; } void c2fstr(char *c, int max_c, char *f, int max_f) { int i; i = min((int)strlen(c),max_f); strncpy(f,c,i); for( ; i=0; i--) newstr[i] = str[i]; return newstr; } #endif #ifdef NOSTRCASECMP int strcasecmp(const char *s1, const char *s2) { while (tolower(*s1) == tolower(*s2)) { /* If at the end of the string, then they're equal */ if (0 == *s1) return 0; s1++; s2++; } /* One ended before the other, so return 1 or -1 */ return (*(unsigned char *)s1) < (*(unsigned char *)s2) ? -1 : 1; } #endif io_lib-1.14.6/io_lib/traceType.c0000644000031500020650000002223712354177666013345 00000000000000/* * Copyright (c) 2005-2007, 2010 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * Author(s): James Bonfield * * Copyright (c) 1994-1998, 2000-2001 MEDICAL RESEARCH COUNCIL * All rights reserved * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1 Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2 Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3 Neither the name of the MEDICAL RESEARCH COUNCIL, THE LABORATORY OF * MOLECULAR BIOLOGY nor the names of its contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * Copyright (c) Medical Research Council 1994. All rights reserved. * * Permission to use, copy, modify and distribute this software and its * documentation for any purpose is hereby granted without fee, provided that * this copyright and notice appears in all copies. * * This file was written by James Bonfield, Simon Dear, Rodger Staden, * as part of the Staden Package at the MRC Laboratory of Molecular * Biology, Hills Road, Cambridge, CB2 2QH, United Kingdom. * * MRC disclaims all warranties with regard to this software. */ /* Title: traceType File: traceType.c Purpose: determining trace format Last update: 01/09/94 Change log : Update for use with the Read library. */ /* ---- Imports ---- */ #ifdef HAVE_CONFIG_H #include "io_lib_config.h" #endif #include #include #include #include "io_lib/stdio_hack.h" #include "io_lib/traceType.h" #include "io_lib/Read.h" #include "io_lib/open_trace_file.h" #ifdef USE_BIOLIMS #include "spBiolims.h" #endif #ifndef isascii #define isascii(c) ((c) >= 0 && (c) <= 0x7f) #endif /* ---- Privates ---- */ static struct { int type; int offset; char *string; } magics[] = { { TT_SCF, 0, ".scf" } , { TT_ZTR, 0, "\256ZTR\r\n\032\n" } , { TT_ABI, 0, "ABIF" } , { TT_ABI, 128, "ABIF" } , { TT_ALF, 518, "ALF " } , { TT_SCF, 0, "\234\330\300\000" }, /* Amersham variant */ { TT_SFF, 0, ".sff" } , { TT_EXP, 0, "ID " } , { TT_ALF, 0, "ALF " } , /* Added by newer alfsplit programs */ { TT_ALF, 0, "\021G\021G" } , /* Pharmacia's alfsplit equiv */ { TT_ALF, 1546,"X-axis" } /* Good guestimation if all else fails */ }; #define Number(A) ( sizeof(A) / sizeof((A)[0]) ) /* ---- exported ---- */ /* unix specific file deletion routine */ int remove_file(char *fn) { return unlink(fn); } /* * Determine the trace type for FILE * 'fp'. * * NB - This function should NOT be used when biolims support is required * (as biolims doesn't use files !) * * Returns: * TT_SCF, TT_ZTR, TT_ABI, TT_ALF, or TT_PLN for success. * TT_UNK for unknown type. * TT_ERR for error. */ int fdetermine_trace_type(FILE *fp) { unsigned int i; size_t len; char buf[512]; int ps; int acgt; int c; /* check magics */ for (i = 0 ; i < Number(magics) ; i++) { if (fseek(fp,magics[i].offset,0) == 0) { len = strlen(magics[i].string); if (fread(buf,1,len,fp)==len) { if (strncmp(buf,magics[i].string,len)==0) { return magics[i].type; } } } } fseek(fp, 0, 0); /* determine if this is a text file */ len = 0; ps = 0; acgt = 0; for (i = 0; i < 512; i++) { if ( ( c = fgetc(fp) ) == EOF ) break; switch(c) { case 'a': case 'c': case 'g': case 't': case 'A': case 'C': case 'G': case 'T': /*YUK! need the next line?*/ case 'n': case 'N': case '-': acgt++; default: len++; if ( (isprint(c) && isascii(c)) || isspace(c) ) ps++; } } fseek(fp, 0, 0); /*YUK! 75% of characters printable means text*/ if ( 100 * (size_t)ps > 75 * len ) { /*YUK! 75% of printables ACGTN means plain*/ if (100 * acgt > 75 * ps) { return TT_PLN; } } /* YUK! short files are not traces? */ if (len<512) { return TT_UNK; } return TT_UNK; } /* * Determine the trace type for file 'fn'. * * Returns: * TT_SCF, TT_ZTR, TT_ABI, TT_ALF, TT_BIO, or TT_PLN for success. * TT_UNK for unknown type. * TT_ERR for error. */ int determine_trace_type(char *fn) { FILE *fp; int r; #ifdef USE_BIOLIMS if(IS_BIOLIMS_PATH(fn)) return TT_BIO; #endif if ( (fp = open_trace_file(fn, NULL)) == NULL ) return TT_ERR; r = fdetermine_trace_type(fp); fclose(fp); return r; } /* * Converts a trace type string to an integer. */ int trace_type_str2int(char *str) { if (strcmp(str, "SCF") == 0 || strcmp(str, "scf") == 0) return TT_SCF; else if (strcmp(str, "SFF") == 0 || strcmp(str, "sff") == 0) return TT_SFF; /* 454 */ else if (strcmp(str, "ZTR") == 0 || strcmp(str, "ztr") == 0) return TT_ZTR; else if (strcmp(str, "ZTR1") == 0 || strcmp(str, "ztr1") == 0) return TT_ZTR1; else if (strcmp(str, "ZTR2") == 0 || strcmp(str, "ztr2") == 0) return TT_ZTR2; else if (strcmp(str, "ZTR3") == 0 || strcmp(str, "ztr3") == 0) return TT_ZTR3; else if (strcmp(str, "ABI") == 0 || strcmp(str, "abi") == 0) return TT_ABI; else if (strcmp(str, "ALF") == 0 || strcmp(str, "alf") == 0) return TT_ALF; else if (strcmp(str, "PLN") == 0 || strcmp(str, "pln") == 0) return TT_PLN; else if (strcmp(str, "EXP") == 0 || strcmp(str, "exp") == 0) return TT_EXP; else if (strcmp(str, "BIO") == 0 || strcmp(str, "bio") == 0) return TT_BIO; else if (strcmp(str, "ANYTR") == 0 || strcmp(str, "anytr") == 0) return TT_ANYTR; else return TT_UNK; } /* * Converts a trace type integer to a string. */ char *trace_type_int2str(int type) { char *t; switch(type) { case TT_SCF: t = "SCF"; break; case TT_SFF: t = "SFF"; break; /* 454 */ case TT_ZTR: t = "ZTR";break; case TT_ZTR1: t = "ZTR1";break; case TT_ZTR2: t = "ZTR2";break; case TT_ZTR3: t = "ZTR3";break; case TT_ABI: t = "ABI"; break; case TT_ALF: t = "ALF"; break; case TT_PLN: t = "PLN"; break; case TT_EXP: t = "EXP"; break; case TT_BIO: t = "BIO"; break; case TT_ANYTR: t="ANYTR"; break; default: case TT_UNK: t = "UNK"; break; } return t; } /* * Returns a statically declared string containing a 3 character * identifier for the trace type of this file. * "ERR" represents error, and "UNK" for unknown. * Successful values are "SCF", "ABI", "ALF", "PLN", "ZTR" and "BIO". */ char *trace_type_str(char *traceName) { int t; if ((t = determine_trace_type(traceName)) == TT_ERR) return "ERR"; else return trace_type_int2str(t); } io_lib-1.14.6/io_lib/xalloc.c0000644000031500020650000001211112354177666012655 00000000000000/* * Copyright (c) 2007, 2010 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * Author(s): James Bonfield * * Copyright (c) 1994-1996, 1999, 2001 MEDICAL RESEARCH COUNCIL * All rights reserved * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1 Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2 Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3 Neither the name of the MEDICAL RESEARCH COUNCIL, THE LABORATORY OF * MOLECULAR BIOLOGY nor the names of its contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * Copyright (c) Medical Research Council 1994. All rights reserved. * * Permission to use, copy, modify and distribute this software and its * documentation for any purpose is hereby granted without fee, provided that * this copyright and notice appears in all copies. * * This file was written by James Bonfield, Simon Dear, Rodger Staden, * as part of the Staden Package at the MRC Laboratory of Molecular * Biology, Hills Road, Cambridge, CB2 2QH, United Kingdom. * * MRC disclaims all warranties with regard to this software. */ /* * Our own memory alloc routines that output error messages as appropriate * for us. Could also be done as macros, but hopefully there are no tight * using malloc many times so efficiency shouldn't be a problem. * * This also allows for dropping in a debugging malloc as we're intercepting * all alloc & free commands. */ #ifdef HAVE_CONFIG_H #include "io_lib_config.h" #endif #include #include #include #include "io_lib/error.h" void *xmalloc(size_t size) { void *c = malloc(size); if (NULL == c) { errout("Not enough memory.\n"); return NULL; } return c; } void *xrealloc(void *ptr, size_t size) { void *c; /* * realloc _should_ allocate memory for us when ptr is NULL. * Unfortunately this is not the case with the non-ANSI conformant * C library provided with SunOS4.1 */ if (ptr) c = realloc(ptr, size); else c = malloc(size); if (NULL == c) { errout("Not enough memory.\n"); return NULL; } return c; } void *xcalloc(size_t num, size_t size) { void *c = calloc(num, size); if (NULL == c) { errout("Not enough memory.\n"); return NULL; } return c; } void xfree(void *ptr) { free(ptr); } io_lib-1.14.6/io_lib/vlen.c0000644000031500020650000003026212545536330012333 00000000000000/* * Copyright (c) 2005, 2007, 2009-2013 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * Author(s): James Bonfield * * Copyright (c) 1995-1996 MEDICAL RESEARCH COUNCIL * All rights reserved * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1 Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2 Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3 Neither the name of the MEDICAL RESEARCH COUNCIL, THE LABORATORY OF * MOLECULAR BIOLOGY nor the names of its contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ #ifdef HAVE_CONFIG_H #include "io_lib_config.h" #endif #include #include #include #include #include #include "io_lib/vlen.h" #include "io_lib/os.h" #include "io_lib/misc.h" #ifndef MAX #define MAX(a,b) ((a)>(b)?(a):(b)) #endif #ifndef ABS #define ABS(a) ((a)>0?(a):-(a)) #endif /* #define DEBUG_printf(a,n) printf(a,n) */ #define DEBUG_printf(a,n) /* * vlen: 27/10/95 written by James Bonfield, jkb@mrc-lmb.cam.ac.uk * * Given sprintf style of arguments this routine returns the maximum * size of buffer needed to allocate to use with sprintf. It errs on * the side of caution by being simplistic in its approach: we assume * all numbers are of maximum length. * * Handles the usual type conversions (%[%diuaxXcfeEgGpns]), but not * the 'wide' character conversions (%C and %S). * Precision is handled in the correct formats, including %*.* * notations. * Additionally, some of the more dubious (but probably illegal) cases * are supported (eg "%10%" will expand to " %" on many * systems). * * We also assume that the largest integer and larger pointer are 64 * bits, which at least covers the machines we'll need it for. */ int flen(char *fmt, ...) { va_list args; va_start(args, fmt); return vflen(fmt, args); } int vflen(char *fmt, va_list ap) { int len = 0; char *cp, c; long long l; int i __UNUSED__; double d; /* * This code modifies 'ap', but we do not know if va_list is a structure * or a pointer to an array so we do not know if it is a local variable * or not. * C99 gets around this by defining va_copy() to make copies of ap, but * this does not exist on all systems. * For now, I just assume that when va_list is a pointer the system also * provides a va_copy macro to work around this problem. The only system * I have seen needing this so far was Linux on AMD64. */ #if defined(HAVE_VA_COPY) va_list ap_local; va_copy(ap_local, ap); # define ap ap_local #endif for(cp = fmt; *cp; cp++) { switch(*cp) { /* A format specifier */ case '%': { char *endp; long conv_len1=0, conv_len2=0, conv_len=0; signed int arg_size; /* Firstly, strip the modifier flags (+-#0 and [space]) */ for(; (c=*++cp);) { if ('#' == c) len+=2; /* Worst case of "0x" */ else if ('-' == c || '+' == c || ' ' == c) len++; else break; } /* Width specifier */ l = strtol(cp, &endp, 10); if (endp != cp) { cp = endp; conv_len = conv_len1 = l; } else if (*cp == '*') { conv_len = conv_len1 = (int)va_arg(ap, int); cp++; } /* Precision specifier */ if ('.' == *cp) { cp++; conv_len2 = strtol(cp, &endp, 10); if (endp != cp) { cp = endp; } else if (*cp == '*') { conv_len2 = (int)va_arg(ap, int); cp++; } conv_len = MAX(conv_len1, conv_len2); } /* Short/long identifier */ if ('h' == *cp) { arg_size = -1; /* short */ cp++; } else if ('l' == *cp) { arg_size = 1; /* long */ cp++; if ('l' == *cp) { arg_size = 2; /* long long */ cp++; } } else { arg_size = 0; /* int */ } /* The actual type */ switch (*cp) { case '%': /* * Not real ANSI I suspect, but we'll allow for the * completely daft "%10%" example. */ len += MAX(conv_len1, 1); break; case 'd': case 'i': case 'u': case 'a': case 'x': case 'X': /* Remember: char and short are sent as int on the stack */ if (arg_size == -1) l = (long)va_arg(ap, int); else if (arg_size == 1) l = va_arg(ap, long); else if (arg_size == 2) l = va_arg(ap, long long); else l = (long)va_arg(ap, int); DEBUG_printf("%d", l); /* * No number can be more than 24 characters so we'll take * the max of conv_len and 24 (23 is len(2^64) in octal). * All that work above and we then go and estimate ;-), * but it's needed incase someone does %500d. */ len += MAX(conv_len, 23); break; case 'c': i = va_arg(ap, int); DEBUG_printf("%c", i); /* * Note that %10c and %.10c act differently. * Besides, I think precision is not really allowed for %c. */ len += MAX(conv_len1, 1); break; case 'f': d = va_arg(ap, double); DEBUG_printf("%f", d); /* * Maybe "Inf" or "NaN", but we'll not worry about that. * Again, err on side of caution and take max of conv_len * and max length of a double. The worst case I can * think of is 317 characters (-1[308 zeros].000000) * without using precision codes. That's horrid. I * cheat and either use 317 or 15 depending on how * large the number is as I reckon 99% of floats * aren't that long. */ l = (ABS(d) > 1000000) ? 317 : 15; l = MAX(l, conv_len1 + 2); if (conv_len2) l += conv_len2 - 6; len += l; break; case 'e': case 'E': case 'g': case 'G': d = va_arg(ap, double); DEBUG_printf("%g", d); /* * Maybe "Inf" or "NaN", but we'll not worry about that * Again, err on side of caution and take max of conv_len * and max length of a double (which defaults to only * '-' + 6 + '.' + 'E[+-]xxx' == 13. */ len += MAX(conv_len, 13); break; case 'p': l = (long)va_arg(ap, void *); /* * Max pointer is 64bits == 16 chars (on alpha), * == 20 with + "0x". */ DEBUG_printf("%p", (void *)l); len += MAX(conv_len, 20); break; case 'n': /* produces no output */ break; case 's': { char *s = (char *)va_arg(ap, char *); DEBUG_printf("%s", s); if (!conv_len2) { len += MAX(conv_len, (int)strlen(s)); } else { len += conv_len; } break; } default: /* wchar_t types of 'C' and 'S' aren't supported */ DEBUG_printf("Arg is %c\n", *cp); } } case '\0': break; default: DEBUG_printf("%c", *cp); len++; } } va_end(ap); return len+1; /* one for the null character */ } #if 0 int main() { int l; char buf[10000]; sprintf(buf, "d: %d\n", 500); l = flen("d: %d\n", 500); printf("%d %d\n\n", strlen(buf), l); sprintf(buf, ""); l = flen(""); printf("%d %d\n\n", strlen(buf), l); sprintf(buf, "%s\n","test"); l = flen("%s\n", "test"); printf("%d %d\n\n", strlen(buf), l); sprintf(buf, "%c\n", 'a'); l = flen("%c\n", 'a'); printf("%d %d\n\n", strlen(buf), l); sprintf(buf, "%31.30f\n", -9999.99); l = flen("%31.30f\n", -9999.99); printf("%d %d\n\n", strlen(buf), l); sprintf(buf, "%f\n", -1e308); l = flen("%f\n", -1e308); printf("%d %d\n\n", strlen(buf), l); sprintf(buf, "%.9f\n", -1e308); l = flen("%.9f\n", -1e308); printf("%d %d\n\n", strlen(buf), l); sprintf(buf, "%10.20f\n", -1.999222333); l = flen("%10.20f\n", -1.999222333); printf("%d %d\n\n", strlen(buf), l); sprintf(buf, "%#g\n", -3.14159265358e-222); l = flen("%#g\n", -3.1415927e-222); printf("%d %d\n\n", strlen(buf), l); sprintf(buf, "%e\n", -123456789123456789.1); l = flen("%e\n", -123456789123456789.1); printf("%d %d\n\n", strlen(buf), l); sprintf(buf, "%c %f %d %s %c %g %ld %s\n", 'a', 3.1, 9, "one", 'b', 4.2, 9, "two"); l = flen("%c %f %d %s %c %g %ld %s\n", 'a', 3.1, 9, "one", 'b', 4.2, 9, "two"); printf("%d %d\n\n", strlen(buf), l); sprintf(buf, "%*.*e %*c\n", 10, 5, 9.0, 20, 'x'); l = flen("%*.*e %*c\n", 10, 5, 9.0, 20, 'x'); printf("%d %d\n\n", strlen(buf), l); sprintf(buf, "%10c\n", 'z'); l = flen("%10c\n", 'z'); printf("%d %d\n\n", strlen(buf), l); sprintf(buf, "%.10c\n", 'z'); l = flen("%.10c\n", 'z'); printf("%d %d\n\n", strlen(buf), l); sprintf(buf, "%10d\n", 'z'); l = flen("%10d\n", 'z'); printf("%d %d\n\n", strlen(buf), l); sprintf(buf, "%.10d\n", 'z'); l = flen("%.10d\n", 'z'); printf("%d %d\n\n", strlen(buf), l); sprintf(buf, "%10%\n"); l = flen("%10%\n"); printf("%d %d\n\n", strlen(buf), l); sprintf(buf, "%.10%\n"); l = flen("%.10%\n"); printf("%d %d\n\n", strlen(buf), l); sprintf(buf, "%s\n", "0123456789"); l = flen("%s\n", "0123456789"); printf("%d %d\n\n", strlen(buf), l); sprintf(buf, "%5s\n", "0123456789"); l = flen("%5s\n", "0123456789"); printf("%d %d\n\n", strlen(buf), l); sprintf(buf, "%50s\n", "0123456789"); l = flen("%50s\n", "0123456789"); printf("%d %d\n\n", strlen(buf), l); sprintf(buf, "%.5s\n", "0123456789"); l = flen("%.5s\n", "0123456789"); printf("%d %d\n\n", strlen(buf), l); sprintf(buf, "%.50s\n", "0123456789"); l = flen("%.50s\n", "0123456789"); printf("%d %d\n\n", strlen(buf), l); sprintf(buf, "%5.50s\n", "0123456789"); l = flen("%5.50s\n", "0123456789"); printf("%d %d\n\n", strlen(buf), l); sprintf(buf, "%50.5s\n", "0123456789"); l = flen("%50.5s\n", "0123456789"); printf("%d %d\n\n", strlen(buf), l); return 0; } #endif io_lib-1.14.6/io_lib/hash_table.c0000644000031500020650000013047312354177666013501 00000000000000/* * Copyright (c) 2005-2011, 2013 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifdef HAVE_CONFIG_H #include "io_lib_config.h" #endif #include #include #include #include "io_lib/os.h" #include "io_lib/hash_table.h" #include "io_lib/jenkins_lookup3.h" /* ========================================================================= * TCL's hash function. Basically hash*9 + char. * ========================================================================= */ uint32_t HashTcl(uint8_t *data, int len) { uint32_t hash = 0; int i; for (i = 0; i < len; i++) { hash += (hash<<3) + data[i]; } return hash; } /* ========================================================================= * Paul Hsieh's hash function * http://www.azillionmonkeys.com/qed/hash.html * ========================================================================= */ #undef get16bits #if (defined(__GNUC__) && defined(__i386__)) || defined(__WATCOMC__) \ || defined(_MSC_VER) || defined (__BORLANDC__) || defined (__TURBOC__) #define get16bits(d) (*((const uint16_t *) (d))) #endif #if !defined (get16bits) #define get16bits(d) ((((const uint8_t *)(d))[1] << 8UL)\ +((const uint8_t *)(d))[0]) #endif uint32_t HashHsieh(uint8_t *data, int len) { uint32_t hash = 0, tmp; int rem; if (len <= 0 || data == NULL) return 0; rem = len & 3; len >>= 2; /* Main loop */ for (;len > 0; len--) { hash += get16bits (data); tmp = (get16bits (data+2) << 11) ^ hash; hash = (hash << 16) ^ tmp; data += 2*sizeof (uint16_t); hash += hash >> 11; } /* Handle end cases */ switch (rem) { case 3: hash += get16bits (data); hash ^= hash << 16; hash ^= data[sizeof (uint16_t)] << 18; hash += hash >> 11; break; case 2: hash += get16bits (data); hash ^= hash << 11; hash += hash >> 17; break; case 1: hash += *data; hash ^= hash << 10; hash += hash >> 1; } /* Force "avalanching" of final 127 bits */ hash ^= hash << 3; hash += hash >> 5; hash ^= hash << 2; hash += hash >> 15; hash ^= hash << 10; return hash; } /* ========================================================================= * Bob Jenkins' hash function * http://burtleburtle.net/bob/hash/doobs.html * * See jenkins_lookup3.c for a new version of this that has good hash * characteristics for a full 64-bit hash value. * ========================================================================= */ #define hashsize(n) ((uint32_t)1<<(n)) #define hashmask(n) (hashsize(n)-1) /* -------------------------------------------------------------------- mix -- mix 3 32-bit values reversibly. For every delta with one or two bits set, and the deltas of all three high bits or all three low bits, whether the original value of a,b,c is almost all zero or is uniformly distributed, * If mix() is run forward or backward, at least 32 bits in a,b,c have at least 1/4 probability of changing. * If mix() is run forward, every bit of c will change between 1/3 and 2/3 of the time. (Well, 22/100 and 78/100 for some 2-bit deltas.) mix() was built out of 36 single-cycle latency instructions in a structure that could supported 2x parallelism, like so: a -= b; a -= c; x = (c>>13); b -= c; a ^= x; b -= a; x = (a<<8); c -= a; b ^= x; c -= b; x = (b>>13); ... Unfortunately, superscalar Pentiums and Sparcs can't take advantage of that parallelism. They've also turned some of those single-cycle latency instructions into multi-cycle latency instructions. Still, this is the fastest good hash I could find. There were about 2^^68 to choose from. I only looked at a billion or so. -------------------------------------------------------------------- */ #define mix(a,b,c) \ { \ a -= b; a -= c; a ^= (c>>13); \ b -= c; b -= a; b ^= (a<<8); \ c -= a; c -= b; c ^= (b>>13); \ a -= b; a -= c; a ^= (c>>12); \ b -= c; b -= a; b ^= (a<<16); \ c -= a; c -= b; c ^= (b>>5); \ a -= b; a -= c; a ^= (c>>3); \ b -= c; b -= a; b ^= (a<<10); \ c -= a; c -= b; c ^= (b>>15); \ } /* -------------------------------------------------------------------- hash() -- hash a variable-length key into a 32-bit value k : the key (the unaligned variable-length array of bytes) len : the length of the key, counting by bytes initval : can be any 4-byte value Returns a 32-bit value. Every bit of the key affects every bit of the return value. Every 1-bit and 2-bit delta achieves avalanche. About 6*len+35 instructions. The best hash table sizes are powers of 2. There is no need to do mod a prime (mod is sooo slow!). If you need less than 32 bits, use a bitmask. For example, if you need only 10 bits, do h = (h & hashmask(10)); In which case, the hash table should have hashsize(10) elements. If you are hashing n strings (uint8_t **)k, do it like this: for (i=0, h=0; i= 12) { a += (k[0] +((uint32_t)k[1]<<8) +((uint32_t)k[2]<<16) +((uint32_t)k[3]<<24)); b += (k[4] +((uint32_t)k[5]<<8) +((uint32_t)k[6]<<16) +((uint32_t)k[7]<<24)); c += (k[8] +((uint32_t)k[9]<<8) +((uint32_t)k[10]<<16)+((uint32_t)k[11]<<24)); mix(a,b,c); k += 12; len -= 12; } /*------------------------------------- handle the last 11 bytes */ c += length; switch(len) /* all the case statements fall through */ { case 11: c+=((uint32_t)k[10]<<24); case 10: c+=((uint32_t)k[9]<<16); case 9 : c+=((uint32_t)k[8]<<8); /* the first byte of c is reserved for the length */ case 8 : b+=((uint32_t)k[7]<<24); case 7 : b+=((uint32_t)k[6]<<16); case 6 : b+=((uint32_t)k[5]<<8); case 5 : b+=k[4]; case 4 : a+=((uint32_t)k[3]<<24); case 3 : a+=((uint32_t)k[2]<<16); case 2 : a+=((uint32_t)k[1]<<8); case 1 : a+=k[0]; /* case 0: nothing left to add */ } mix(a,b,c); /*-------------------------------------------- report the result */ return c; } /* * An interface to the above hash functions. * Returns: * A 32-bit hash key, suitable for masking down to smaller bit sizes */ uint32_t hash(int func, uint8_t *key, int key_len) { switch (func) { case HASH_FUNC_HSIEH: return HashHsieh(key, key_len); case HASH_FUNC_TCL: return HashTcl(key, key_len); case HASH_FUNC_JENKINS: return HashJenkins(key, key_len); case HASH_FUNC_JENKINS3: { uint32_t pc = 0, pb = 0; HashJenkins3(key, key_len, &pc, &pb); return pc; } } return 0; } /* * As per hash() above but returns a 64-bit key. For 32-bit hash functions * this is simply a duplication of the 32-bit value. */ uint64_t hash64(int func, uint8_t *key, int key_len) { uint32_t pc = 0, pb = 0; switch (func) { case HASH_FUNC_HSIEH: pb = pc = HashHsieh(key, key_len); break; case HASH_FUNC_TCL: pb = pc = HashTcl(key, key_len); break; case HASH_FUNC_JENKINS: pb = pc = HashJenkins(key, key_len); break; case HASH_FUNC_JENKINS3: HashJenkins3(key, key_len, &pc, &pb); break; } return pc + (((uint64_t)pb)<<32); } /* ========================================================================= * Hash Table handling code * ========================================================================= */ /* Multiplicative factors indicating when to grow or shrink the hash table */ #define HASH_TABLE_RESIZE 3 /* * Creates a HashItem for use with HashTable h. * * Returns: * A pointer to new HashItem on success * NULL on failure. */ static HashItem *HashItemCreate(HashTable *h) { HashItem *hi; hi = (h->options & HASH_POOL_ITEMS ? pool_alloc(h->hi_pool) : malloc(sizeof(*hi))); if (NULL == hi) return NULL; hi->data.p = NULL; hi->data.i = 0; hi->next = NULL; hi->key = NULL; hi->key_len = 0; h->nused++; return hi; } /* * Deallocates a HashItem created via HashItemCreate. * * This function will not remove the item from the HashTable so be sure to * call HashTableDel() first if appropriate. */ static void HashItemDestroy(HashTable *h, HashItem *hi, int deallocate_data) { if (!hi) return; if (!(h->options & HASH_NONVOLATILE_KEYS) || (h->options & HASH_OWN_KEYS)) if (hi->key) free(hi->key); if (deallocate_data && hi->data.p) free(hi->data.p); if (h->options & HASH_POOL_ITEMS) { pool_free(h->hi_pool, hi); } else { free(hi); } h->nused--; } /* * Creates a new HashTable object. Size will be rounded up to the next * power of 2. It is a starting point and hash tables may be grown or shrunk * as needed (if HASH_DYNAMIC_SIZE is used). * * If HASH_POOL_ITEMS is used, HashItems will be allocated in blocks to reduce * malloc overhead in the case where a large number of items is required. * HashItems allocated this way will be put on a free list when destroyed; the * memory will only be reclaimed when the entire hash table is destroyed. * * Options are as defined in the header file (see HASH_* macros). * * Returns: * A pointer to a HashTable on success * NULL on failure */ HashTable *HashTableCreate(int size, int options) { HashTable *h; int i, bits; uint32_t mask; if (!(h = (HashTable *)malloc(sizeof(*h)))) return NULL; if (options & HASH_POOL_ITEMS) { h->hi_pool = pool_create(sizeof(HashItem)); if (NULL == h->hi_pool) { free(h); return NULL; } } else { h->hi_pool = NULL; } if (size < 4) size = 4; /* an inconsequential minimum size */ /* Round the requested size to the next power of 2 */ bits = 0; size--; while (size) { size /= 2; bits++; } size = 1<nbuckets = size; h->mask = mask; h->options = options; h->nused = 0; h->bucket = (HashItem **)malloc(sizeof(*h->bucket) * size); if (NULL == h->bucket) { HashTableDestroy(h, 0); return NULL; } for (i = 0; i < size; i++) { h->bucket[i] = NULL; } return h; } /* * Deallocates a HashTable object (created by HashTableCreate). * * The deallocate_data parameter is a boolean to indicate whether the * data attached to the hash table should also be free()d. DO NOT USE * this if the HashData attached was not a pointer allocated using * malloc(). */ void HashTableDestroy(HashTable *h, int deallocate_data) { int i; if (!h) return; if (h->bucket) { for (i = 0; i < h->nbuckets; i++) { HashItem *hi = h->bucket[i], *next = NULL; for (hi = h->bucket[i]; hi; hi = next) { next = hi->next; HashItemDestroy(h, hi, deallocate_data); } } free(h->bucket); } if (h->hi_pool) pool_destroy(h->hi_pool); free(h); } /* * Resizes a HashTable to have 'newsize' buckets. * This is called automatically when adding or removing items so that the * hash table keeps at a sensible scale. * * FIXME: Halving the size of the hash table is simply a matter of coaelescing * every other bucket. Instead we currently rehash (which is slower). * Doubling the size of the hash table currently requires rehashing, but this * too could be optimised by storing the full 32-bit hash of the key along * with the key itself. This then means that it's just a matter of seeing what * the next significant bit is. It's a memory vs speed tradeoff though and * re-hashing is pretty quick. * * Returns 0 for success * -1 for failure */ int HashTableResize(HashTable *h, int newsize) { HashTable *h2; int i; /* fprintf(stderr, "Resizing to %d\n", newsize); */ /* Create a new hash table and rehash everything into it */ h2 = HashTableCreate(newsize, h->options); for (i = 0; i < h->nbuckets; i++) { HashItem *hi, *next; for (hi = h->bucket[i]; hi; hi = next) { uint64_t hv = h2->options & HASH_INT_KEYS ? hash64(h2->options & HASH_FUNC_MASK, (uint8_t *)&hi->key, hi->key_len) & h2->mask : hash64(h2->options & HASH_FUNC_MASK, (uint8_t *)hi->key, hi->key_len) & h2->mask; next = hi->next; hi->next = h2->bucket[hv]; h2->bucket[hv] = hi; } } /* Swap the links over & free */ free(h->bucket); h->bucket = h2->bucket; h->nbuckets = h2->nbuckets; h->mask = h2->mask; if (h2->hi_pool) pool_destroy(h2->hi_pool); free(h2); return 0; } /* * Adds a HashData item to HashTable h with a specific key. Key can be binary * data, but if key_len is passed as zero then strlen() will be used to * determine the key length. * * The "new" pointer may be passed as NULL. When not NULL it is filled out * as a boolean to indicate whether the key is already in this hash table. * * The HASH_ALLOW_DUP_KEYS option (specified when using HashTableCreate) * will allow duplicate keys to be stored, and hence *new is also zero. * By default duplicate keys are disallowed. * * Keys are considered to be volatile memory (ie temporary storage) and so the * hash table takes separate copies of them. To avoid this use the * HASH_NONVOLATILE_KEYS option. * * If the HASH_OWN_KEYS option was specified when creating the table then * keys will be considered to be owned by the hash table. In this case * the key will be freed when the table is destroyed regardless of * whether the HASH_NONVOLATILE_KEYS option was used to allocate its * own private copy. * * Returns: * The HashItem created (or matching if a duplicate) on success * NULL on failure */ HashItem *HashTableAdd(HashTable *h, char *key, int key_len, HashData data, int *new) { uint64_t hv; HashItem *hi; if (!key_len) key_len = strlen(key); hv = h->options & HASH_INT_KEYS ? hash64(h->options & HASH_FUNC_MASK, (uint8_t *)&key, key_len) & h->mask : hash64(h->options & HASH_FUNC_MASK, (uint8_t *)key, key_len) & h->mask; /* Already exists? */ if (!(h->options & HASH_ALLOW_DUP_KEYS)) { for (hi = h->bucket[hv]; hi; hi = hi->next) { if (h->options & HASH_INT_KEYS) { if ((int)(size_t)hi->key == (int)(size_t)key) { if (new) *new = 0; return hi; } } else { if (key_len == hi->key_len && key[0] == hi->key[0] && memcmp(key, hi->key, key_len) == 0) { if (new) *new = 0; return hi; } } } } /* No, so create a new one and link it in */ if (NULL == (hi = HashItemCreate(h))) return NULL; if (h->options & HASH_NONVOLATILE_KEYS) hi->key = key; else { hi->key = (char *)malloc(key_len+1); memcpy(hi->key, key, key_len); hi->key[key_len] = 0; /* null terminate incase others print keys */ } hi->key_len = key_len; hi->data = data; hi->next = h->bucket[hv]; h->bucket[hv] = hi; if ((h->options & HASH_DYNAMIC_SIZE) && h->nused > HASH_TABLE_RESIZE * h->nbuckets) HashTableResize(h, h->nbuckets*4); if (new) *new = 1; return hi; } /* * Removes a specified HashItem from the HashTable. (To perform this it needs * to rehash based on the hash key as hash_item only has a next pointer and * not a previous pointer.) * * The HashItem itself is also destroyed (by an internal call to * HashItemDestroy). The deallocate_data parameter controls whether the data * associated with the HashItem should also be free()d. * * See also the HashTableRemove() function to remove by key instead of * HashItem. * * Returns 0 on success * -1 on failure (eg HashItem not in the HashTable); */ int HashTableDel(HashTable *h, HashItem *hi, int deallocate_data) { uint64_t hv; HashItem *next, *last; hv = h->options & HASH_INT_KEYS ? hash64(h->options & HASH_FUNC_MASK, (uint8_t *)&hi->key, hi->key_len) & h->mask : hash64(h->options & HASH_FUNC_MASK, (uint8_t *)hi->key, hi->key_len) & h->mask; for (last = NULL, next = h->bucket[hv]; next; last = next, next = next->next) { if (next == hi) { /* Link last to next->next */ if (last) last->next = next->next; else h->bucket[hv] = next->next; HashItemDestroy(h, hi, deallocate_data); return 0; } } return -1; } /* * Searches the HashTable for the data registered with 'key' and removes * these items from the HashTable. In essence this is a combination of * HashTableSearch and HashTableDel functions. * * If HASH_ALLOW_DUP_KEYS is used this will remove all items matching 'key', * otherwise just a single item will be removed. * * If 'deallocate_data' is true the data associated with the HashItem will * be free()d. * * Returns * 0 on success (at least one item found) * -1 on failure (no items found). */ int HashTableRemove(HashTable *h, char *key, int key_len, int deallocate_data) { uint64_t hv; HashItem *last, *next, *hi; int retval = -1; if (!key_len) key_len = strlen(key); hv = h->options & HASH_INT_KEYS ? hash64(h->options & HASH_FUNC_MASK, (uint8_t *)&key, key_len) & h->mask : hash64(h->options & HASH_FUNC_MASK, (uint8_t *)key, key_len) & h->mask; last = NULL; next = h->bucket[hv]; while (next) { hi = next; if (((h->options & HASH_INT_KEYS) ? ((int)(size_t)key == (int)(size_t)hi->key) : (key_len == hi->key_len && memcmp(key, hi->key, key_len) == 0))) { /* An item to remove, adjust links and destroy */ if (last) last->next = hi->next; else h->bucket[hv] = hi->next; next = hi->next; HashItemDestroy(h, hi, deallocate_data); retval = 0; if (!(h->options & HASH_ALLOW_DUP_KEYS)) break; } else { /* We only update last when it's something we haven't destroyed */ last = hi; next = hi->next; } } return retval; } /* * Searches the HashTable for the data registered with 'key'. * If HASH_ALLOW_DUP_KEYS is used this will just be the first one found. * You will then need to use HashTableNext to iterate through the matches. * * Returns * HashItem if found * NULL if not found */ HashItem *HashTableSearch(HashTable *h, char *key, int key_len) { uint64_t hv; HashItem *hi; if (!key_len) key_len = strlen(key); if (h->options & HASH_INT_KEYS) { hv = hash64(h->options & HASH_FUNC_MASK, (uint8_t *)&key, key_len)& h->mask; for (hi = h->bucket[hv]; hi; hi = hi->next) { if ((int)(size_t)key == (int)(size_t)hi->key) return hi; } } else { hv = hash64(h->options & HASH_FUNC_MASK, (uint8_t *)key, key_len) & h->mask; for (hi = h->bucket[hv]; hi; hi = hi->next) { if (key_len == hi->key_len && memcmp(key, hi->key, key_len) == 0) return hi; } } return NULL; } /* * Find the next HashItem (starting from 'hi') to also match this key. * This is only valid when the HASH_ALLOW_DUP_KEYS is in use and * we're not using HASH_INT_KEYS. * * Returns * HashItem if found * NULL if not found */ HashItem *HashTableNext(HashItem *hi, char *key, int key_len) { if (!hi) return NULL; for (hi = hi->next; hi; hi = hi->next) { if (key_len == hi->key_len && memcmp(key, hi->key, key_len) == 0) return hi; } return NULL; } HashItem *HashTableNextInt(HashItem *hi, char *key, int key_len) { if (!hi) return NULL; for (hi = hi->next; hi; hi = hi->next) { if (key_len == hi->key_len && memcmp(&key, &hi->key, key_len) == 0) return hi; } return NULL; } /* * Dumps a textual represenation of the hash table to stdout. */ void HashTableDump(HashTable *h, FILE *fp, char *prefix) { int i; for (i = 0; i < h->nbuckets; i++) { HashItem *hi; for (hi = h->bucket[i]; hi; hi = hi->next) { if (h->options & HASH_INT_KEYS) { fprintf(fp, "%s%d => %"PRId64" (0x%"PRIx64")\n", prefix ? prefix : "", (int)(size_t)hi->key, hi->data.i, hi->data.i); } else { fprintf(fp, "%s%.*s => %"PRId64" (0x%"PRIx64")\n", prefix ? prefix : "", hi->key_len, hi->key, hi->data.i, hi->data.i); } } } } /* * Produces some simple statistics on the hash table population. */ void HashTableStats(HashTable *h, FILE *fp) { int i; double avg = (double)h->nused / h->nbuckets; double var = 0; int maxlen = 0; int filled = 0; int clen[51]; for (i = 0; i <= 50; i++) clen[i] = 0; for (i = 0; i < h->nbuckets; i++) { int len = 0; HashItem *hi; for (hi = h->bucket[i]; hi; hi = hi->next) { len++; } if (len > 0) { filled++; if (len > maxlen) maxlen = len; } clen[len <= 50 ? len : 50]++; var += (len-avg) * (len-avg); } var /= h->nbuckets; /* sd = sqrt(var); */ fprintf(fp, "Nbuckets = %d\n", h->nbuckets); fprintf(fp, "Nused = %d\n", h->nused); fprintf(fp, "Avg chain = %f\n", avg); fprintf(fp, "Chain var.= %f\n", var); fprintf(fp, "%%age full = %f\n", (100.0*filled)/h->nbuckets); fprintf(fp, "max len = %d\n", maxlen); for (i = 0; i <= maxlen; i++) { fprintf(fp, "Chain %2d = %d\n", i, clen[i]); } } /* * -------------------------------------------------------------------- * Below we have a specialisation of the HashTable code where the data * attached to the hash table is a position,size pair. This allows for the * hash table to encode positions and sizes of items within a file archive. * -------------------------------------------------------------------- */ /* * Writes the HashTable structures to 'fp'. * This is a specialisation of the HashTable where the HashData is a * position,size tuple. * * This consists of the following format: * Header: * ".hsh" (magic numebr) * x4 (1-bytes of version code, eg "1.00") * x1 (HASH_FUNC_? function used) * x1 (number of file headers: FH. These count from 1 to FH inclusive) * x1 (number of file footers: FF. These count from 1 to FF inclusive) * x1 (number of archives indexed: NA) * x4 (4-bytes big-endian; number of hash buckets) * x8 (offset to add to item positions. eg size of this index) * x4 (4-bytes big-endian; number of bytes in hash file, inc. header) * Archive name: (NH copies of, or just 1 zero byte if none) * x1 (length, zero => no name, eg when same file as hash index) * ? (archive filename) * File headers (FH copies of): * x1 (archive no.) * x7 (position) * x4 (size) * File footers (FH copies of): * x1 (archive no.) * x7 (position) * x4 (size) * Buckets (multiples of) * x4 (4-byte offset of linked list pos, rel. to the start of the hdr) * Items (per bucket chain, not written if Bucket[?]==0) * x1 (key length, zero => end of chain) * ? (key) * x0.5 (File header to use. zero => none) top 4 bits * x0.5 (File footer to use. zero => none) bottom 4 bits * x8 (position) * x4 (size) * ... arbitrary gap (but likely none) * Index footer: * ".hsh" (magic number) * x8 (offset to Hash Header. +ve = absolute, -ve = relative to end) * * It is designed such that on-disk querying of the hash table can be done * purely by forward seeks. (This is generally faster due to pre-fetching of * the subsequent blocks by many disk controllers.) * * Returns: the number of bytes written on success * -1 for error */ uint64_t HashFileSave(HashFile *hf, FILE *fp, int64_t offset) { int i; HashItem *hi; uint32_t *bucket_pos; uint64_t hfsize = 0, be_hfsize; HashTable *h = hf->h; HashFileFooter foot; /* Compute the coordinates of the hash items */ hfsize = HHSIZE; /* header */ hfsize += h->nbuckets * 4; /* buckets */ for (i = 0; i < hf->nheaders; i++) /* headers */ hfsize += 12; for (i = 0; i < hf->nfooters; i++) /* footers */ hfsize += 12; if (hf->narchives) { for (i = 0; i < hf->narchives; i++) hfsize += strlen(hf->archives[i])+1; /* archive filename */ } else { hfsize++; } bucket_pos = (uint32_t *)calloc(h->nbuckets, sizeof(uint32_t)); for (i = 0; i < h->nbuckets; i++) { bucket_pos[i] = hfsize; if (!(hi = h->bucket[i])) continue; for (; hi; hi = hi->next) { hfsize += 1 + 1 + hi->key_len + 8 + 4; /* keys, pos, size */ } hfsize++; /* list-end marker */ } hfsize += sizeof(foot); /* Write the header: */ memcpy(hf->hh.magic, HASHFILE_MAGIC, 4); if (hf->narchives > 1) memcpy(hf->hh.vers, HASHFILE_VERSION, 4); else memcpy(hf->hh.vers, HASHFILE_VERSION100, 4); hf->hh.hfunc = h->options & HASH_FUNC_MASK; hf->hh.nheaders = hf->nheaders; hf->hh.nfooters = hf->nfooters; hf->hh.narchives = hf->narchives == 1 ? 0 : hf->narchives; hf->hh.nbuckets = be_int4(h->nbuckets); hf->hh.offset = offset == HASHFILE_PREPEND ? be_int8(hfsize) /* archive will be appended to this file */ : be_int8(offset); hf->hh.size = be_int4(hfsize); fwrite(&hf->hh, HHSIZE, 1, fp); /* Write the archive filename, if known */ if (hf->narchives) { for (i = 0; i < hf->narchives; i++) { fputc(strlen(hf->archives[i]), fp); fputs(hf->archives[i], fp); } } else { /* Compatibility with v1.00 file format */ fputc(0, fp); } /* Write out the headers and footers */ for (i = 0; i < hf->nheaders; i++) { HashFileSection hs; hs.pos = be_int8(hf->headers[i].pos); *(char *)&hs.pos = hf->headers[i].archive_no; fwrite(&hs.pos, 8, 1, fp); hs.size = be_int4(hf->headers[i].size); fwrite(&hs.size, 4, 1, fp); } for (i = 0; i < hf->nfooters; i++) { HashFileSection hs; hs.pos = be_int8(hf->footers[i].pos); *(char *)&hs.pos = hf->footers[i].archive_no; fwrite(&hs.pos, 8, 1, fp); hs.size = be_int4(hf->footers[i].size); fwrite(&hs.size, 4, 1, fp); } /* Write out hash buckets */ for (i = 0; i < h->nbuckets; i++) { uint32_t zero = 0; uint32_t be32; if (!(hi = h->bucket[i])) { fwrite(&zero, 4, 1, fp); continue; } be32 = be_int4(bucket_pos[i]); fwrite(&be32, 4, 1, fp); } free(bucket_pos); /* * Write the hash_item linked lists. The first item is the * hash key length. We append a zero to the end of the list so we * can check this key length to determine the end of this hash * item list. */ for (i = 0; i < h->nbuckets; i++) { if (!(hi = h->bucket[i])) continue; for (; hi; hi = hi->next) { uint64_t be64; uint32_t be32; HashFileItem *hfi = (HashFileItem *)hi->data.p; unsigned char headfoot = 0; fprintf(fp, "%c%.*s", hi->key_len, hi->key_len, hi->key); headfoot = (((hfi->header) & 0xf) << 4) | ((hfi->footer) & 0xf); fwrite(&headfoot, 1, 1, fp); be64 = be_int8(hfi->pos); *(char *)&be64 = hfi->archive; fwrite(&be64, 8, 1, fp); be32 = be_int4(hfi->size); fwrite(&be32, 4, 1, fp); } fputc(0, fp); } /* Finally write the footer referencing back to the header start */ memcpy(foot.magic, HASHFILE_MAGIC, 4); be_hfsize = be_int8(-hfsize); memcpy(foot.offset, &be_hfsize, 8); fwrite(&foot, sizeof(foot), 1, fp); return hfsize; } #if 0 /* * Reads an entire HashTable from fp. * * Returns: * A filled out HashTable pointer on success * NULL on failure */ HashFile *HashFileLoad_old(FILE *fp) { int i; HashTable *h; HashItem *hi; HashFile *hf; uint32_t *bucket_pos; unsigned char *htable; int htable_pos; int fnamelen; if (NULL == (hf = (HashFile *)calloc(1, sizeof(HashFile)))) return NULL; if (NULL == (htable = (unsigned char *)malloc(HHSIZE))) return NULL; /* Read and create the hash table header */ if (HHSIZE != fread(htable, 1, HHSIZE, fp)) return NULL; memcpy(&hf->hh, htable, HHSIZE); hf->hh.nbuckets = be_int4(hf->hh.nbuckets); hf->hh.offset = be_int8(hf->hh.offset); hf->hh.size = be_int4(hf->hh.size); hf->h = h = HashTableCreate(hf->hh.nbuckets, hf->hh.hfunc); bucket_pos = (uint32_t *)calloc(h->nbuckets, sizeof(uint32_t)); /* Load the archive filename */ if (hf->narchives) { hf->archives = (char **)malloc(hf->narchives * sizeof(char *)); } else { hf->archives = NULL; } if (hf->narchives) { for (i = 0; i < hf->narchives; i++) { fnamelen = fgetc(fp); hf->archives[i] = malloc(fnamelen+1); fread(hf->archives[i], 1, fnamelen, fp); hf->archives[i][fnamelen] = 0; } } else { /* Consume 0 byte for v1.00 format */ fgetc(fp); } /* Load the rest of the hash table to memory */ htable_pos = HHSIZE + fnamelen + 1; if (NULL == (htable = (unsigned char *)realloc(htable, hf->hh.size))) return NULL; if (hf->hh.size-htable_pos != fread(&htable[htable_pos], 1, hf->hh.size-htable_pos, fp)) return NULL; /* Read the header / footer items */ for (i = 0; i < hf->hh.nheaders; i++) htable_pos += 8; /* skip them for now */ for (i = 0; i < hf->hh.nfooters; i++) htable_pos += 8; /* skip them for now */ /* Identify the "bucket pos". Detemines which buckets have data */ for (i = 0; i < h->nbuckets; i++) { memcpy(&bucket_pos[i], &htable[htable_pos], 4); bucket_pos[i] = be_int4(bucket_pos[i]); htable_pos += 4; } /* Read the hash table items */ for (i = 0; i < h->nbuckets; i++) { if (!bucket_pos[i]) continue; for (;;) { int c; unsigned char uc; char key[256]; uint64_t pos; uint32_t size; HashFileItem *hfi; c = htable[htable_pos++]; if (c == EOF || !c) break; /* key */ memcpy(key, &htable[htable_pos], c); htable_pos += c; /* header/footer */ uc = htable[htable_pos++]; hfi = (HashFileItem *)malloc(sizeof(*hfi)); hfi->header = (uc >> 4) & 0xf; hfi->footer = uc & 0xf; /* pos */ memcpy(&pos, &htable[htable_pos], 8); htable_pos += 8; hfi->pos = be_int8(pos) + hf->hh.offset; /* size */ memcpy(&size, &htable[htable_pos], 4); htable_pos += 4; hfi->size = be_int4(size); /* Add to the hash table */ hi = HashItemCreate(h); hi->next = h->bucket[i]; h->bucket[i] = hi; hi->key_len = c; hi->key = (char *)malloc(c+1); memcpy(hi->key, key, c); hi->key[c] = 0; /* For debugging convenience only */ hi->data.p = hfi; } } fprintf(stderr, "done\n"); fflush(stderr); free(bucket_pos); return hf; } #endif /* * Opens a stored hash table file. It also internally keeps an open file to * hash and the archive files. * * Returns the HashFile pointer on success * NULL on failure */ HashFile *HashFileFopen(FILE *fp) { HashFile *hf = HashFileCreate(0, 0); int archive_len; int i, fnamelen; /* Set the stdio buffer to be small to avoid massive I/O wastage */ /* Read the header */ hf->hfp = fp; hf->hf_start = ftello(hf->hfp); if (HHSIZE != fread(&hf->hh, 1, HHSIZE, hf->hfp)) { HashFileDestroy(hf); return NULL; } if (memcmp(HASHFILE_MAGIC, &hf->hh, 4) != 0) { HashFileFooter foot; int64_t offset; /* Invalid magic number, try other end of file! */ fseeko(hf->hfp, -(off_t)sizeof(HashFileFooter), SEEK_END); if (sizeof(foot) != fread(&foot, 1, sizeof(foot), hf->hfp)) { HashFileDestroy(hf); return NULL; } if (memcmp(HASHFILE_MAGIC, &foot.magic, 4) != 0) { HashFileDestroy(hf); return NULL; } memcpy(&offset, foot.offset, 8); offset = be_int8(offset); fseeko(hf->hfp, offset, SEEK_CUR); hf->hf_start = ftello(hf->hfp); if (HHSIZE != fread(&hf->hh, 1, HHSIZE, hf->hfp)) { HashFileDestroy(hf); return NULL; } } if (memcmp(hf->hh.vers, HASHFILE_VERSION, 4) != 0 && memcmp(hf->hh.vers, HASHFILE_VERSION100, 4) != 0) { /* incorrect version */ HashFileDestroy(hf); return NULL; } hf->hh.nbuckets = be_int4(hf->hh.nbuckets); hf->hh.offset = be_int8(hf->hh.offset); hf->hh.size = be_int4(hf->hh.size); /* Load the archive filename(s) */ hf->narchives = hf->hh.narchives; /* Old archives had narchives fixed as zero, so check again */ if (!hf->narchives) { int n = fgetc(fp); if (!n) { archive_len = 1; } else { ungetc(n, fp); hf->narchives = 1; } } if (hf->narchives) { hf->archives = (char **)malloc(hf->narchives * sizeof(char *)); hf->afp = calloc(hf->narchives, sizeof(FILE *)); } else { hf->archives = NULL; hf->afp = &hf->hfp; } if (hf->narchives) { archive_len = 0; for (i = 0; i < hf->narchives; i++) { fnamelen = fgetc(fp); hf->archives[i] = malloc(fnamelen+1); if (fnamelen != fread(hf->archives[i], 1, fnamelen, fp)) return NULL; hf->archives[i][fnamelen] = 0; archive_len += fnamelen+1; } } hf->header_size = HHSIZE + archive_len + 12 * (hf->hh.nheaders + hf->hh.nfooters); hf->nheaders = hf->hh.nheaders; hf->nfooters = hf->hh.nfooters; /* Load the header and footer locations */ hf->headers = hf->nheaders ? (HashFileSection *)malloc(hf->nheaders * sizeof(HashFileSection)) : NULL; for (i = 0; i < hf->nheaders; i++) { if (1 != fread(&hf->headers[i].pos, 8, 1, hf->hfp)) return NULL; if (1 != fread(&hf->headers[i].size, 4, 1, hf->hfp)) return NULL; hf->headers[i].archive_no = *(char *)&hf->headers[i].pos; *(char *)&hf->headers[i].pos = 0; hf->headers[i].pos = be_int8(hf->headers[i].pos) + hf->hh.offset; hf->headers[i].size = be_int4(hf->headers[i].size); hf->headers[i].cached_data = NULL; } hf->footers = hf->nfooters ? (HashFileSection *)malloc(hf->nfooters * sizeof(HashFileSection)) : NULL; for (i = 0; i < hf->nfooters; i++) { if (1 != fread(&hf->footers[i].pos, 8, 1, hf->hfp)) return NULL; if (1 != fread(&hf->footers[i].size, 4, 1, hf->hfp)) return NULL; hf->footers[i].archive_no = *(char *)&hf->footers[i].pos; *(char *)&hf->footers[i].pos = 0; hf->footers[i].pos = be_int8(hf->footers[i].pos) + hf->hh.offset; hf->footers[i].size = be_int4(hf->footers[i].size); hf->footers[i].cached_data = NULL; } return hf; } HashFile *HashFileOpen(char *fname) { FILE *fp; HashFile *hf; /* Open the hash and read the header */ if (NULL == (fp = fopen(fname, "rb"))) return NULL; if (!(hf = HashFileFopen(fp))) return NULL; /* Open the main archive too? Usually deferred */ if (hf->narchives) { int i; hf->afp = malloc(hf->narchives * sizeof(FILE *)); if (hf->afp == NULL) return NULL; /* Delay opening the main archive until required */ for (i = 0; i < hf->narchives; i++) { hf->afp[i] = NULL; } #if 0 if (NULL == (hf->afp[i] = fopen(hf->archives[i], "rb"))) { /* Possibly done via a relative pathname (optimal infact) */ char *cp; char aname[1024]; if (NULL == (cp = strrchr(fname, '/'))) { HashFileDestroy(hf); return NULL; } sprintf(aname, "%.*s%s", (int)(cp-fname+1), fname, hf->archives[i]); if (NULL == (hf->afp[i] = fopen(aname, "rb"))) { return NULL; } } #endif } else { hf->afp = &hf->hfp; } return hf; } HashFile *HashFileLoad(FILE *fp) { HashFile *hf; char *htable; off_t htable_pos; int i; HashItem *hi; HashTable *h; uint32_t *bucket_pos; uint32_t hsize; /* Open the hash table */ fseeko(fp, 0, SEEK_SET); if (NULL == (hf = HashFileFopen(fp))) return NULL; HashTableDestroy(hf->h, 1); h = hf->h = HashTableCreate(hf->hh.nbuckets, hf->hh.hfunc); bucket_pos = (uint32_t *)calloc(h->nbuckets, sizeof(uint32_t)); /* Also load in the entire thing to memory */ htable = (char *)malloc(hf->hh.size); fseeko(fp, hf->hf_start, SEEK_SET); hsize = fread(htable, 1, hf->hh.size, fp); if (hf->hh.size != hsize) { free(htable); return NULL; } /* * HashFileOpen has already decoded the headers up to and including the * individual file header/footer sections, but not the buckets and item * lists, so we start from there. */ htable_pos = hf->header_size; /* Identify the "bucket pos". Detemines which buckets have data */ for (i = 0; i < h->nbuckets; i++) { memcpy(&bucket_pos[i], &htable[htable_pos], 4); bucket_pos[i] = be_int4(bucket_pos[i]); htable_pos += 4; } /* Read the hash table items */ for (i = 0; i < h->nbuckets; i++) { if (!bucket_pos[i]) continue; for (;;) { int c; unsigned char uc; char key[256]; uint64_t pos; uint32_t size; HashFileItem *hfi; c = htable[htable_pos++]; if (c == EOF || !c) break; /* key */ memcpy(key, &htable[htable_pos], c); htable_pos += c; /* header/footer */ uc = htable[htable_pos++]; hfi = (HashFileItem *)malloc(sizeof(*hfi)); hfi->header = (uc >> 4) & 0xf; hfi->footer = uc & 0xf; /* archive no. + pos */ memcpy(&pos, &htable[htable_pos], 8); htable_pos += 8; hfi->archive = *(char *)&pos; *(char *)&pos = 0; hfi->pos = be_int8(pos) + hf->hh.offset; /* size */ memcpy(&size, &htable[htable_pos], 4); htable_pos += 4; hfi->size = be_int4(size); /* Add to the hash table */ hi = HashItemCreate(h); hi->next = h->bucket[i]; h->bucket[i] = hi; hi->key_len = c; hi->key = (char *)malloc(c+1); memcpy(hi->key, key, c); hi->key[c] = 0; /* For debugging convenience only */ hi->data.p = hfi; } } fflush(stderr); free(bucket_pos); free(htable); return hf; } /* * Searches the named HashFile for a specific key. * When found it returns the position and size of the object in pos and size. * * Returns * 0 on success (pos & size updated) * -1 on failure */ int HashFileQuery(HashFile *hf, uint8_t *key, int key_len, HashFileItem *item) { uint64_t hval; uint32_t pos; int klen; int cur_offset = 0; /* Hash 'key' to compute the bucket number */ hval = hash64(hf->hh.hfunc, key, key_len) & (hf->hh.nbuckets-1); /* Read the bucket to find the first linked list item location */ if (-1 == fseeko(hf->hfp, hf->hf_start + 4*hval + hf->header_size,SEEK_SET)) return -1; if (4 != fread(&pos, 1, 4, hf->hfp)) return -1; pos = be_int4(pos); cur_offset = 4*hval + 4 + hf->header_size; if (0 == pos) /* No bucket pos => key not present */ return -1; /* Jump to the HashItems list and look through for key */ if (-1 == fseeko(hf->hfp, pos - cur_offset, SEEK_CUR)) return -1; for (klen = fgetc(hf->hfp); klen; klen = fgetc(hf->hfp)) { char k[256]; unsigned char headfoot; uint64_t pos; uint32_t size; if (1 != fread(k, klen, 1, hf->hfp)) return -1; if (1 != fread(&headfoot, 1, 1, hf->hfp)) return -1; item->header = (headfoot >> 4) & 0xf; item->footer = headfoot & 0xf; if (1 != fread(&pos, 8, 1, hf->hfp)) return -1; item->archive = *(char *)&pos; *(char *)&pos = 0; pos = be_int8(pos) + hf->hh.offset; if (1 != fread(&size, 4, 1, hf->hfp)) return -1; size = be_int4(size); if (klen == key_len && 0 == memcmp(key, k, key_len)) { item->pos = pos; item->size = size; return 0; } } return -1; } HashFile *HashFileCreate(int size, int options) { HashFile *hf; if (NULL == (hf = (HashFile *)calloc(1, sizeof(*hf)))) return NULL; if (NULL == (hf->h = HashTableCreate(size, options))) return NULL; return hf; } void HashFileDestroy(HashFile *hf) { if (!hf) return; if (hf->h) HashTableDestroy(hf->h, 1); if (hf->narchives) { int i; for (i = 0; i < hf->narchives; i++) if (hf->archives[i]) free(hf->archives[i]); free(hf->archives); } if (hf->headers) { int i; for (i = 0; i < hf->nheaders; i++) { if (hf->headers[i].cached_data) free(hf->headers[i].cached_data); } free(hf->headers); } if (hf->footers) { int i; for (i = 0; i < hf->nfooters; i++) { if (hf->footers[i].cached_data) free(hf->footers[i].cached_data); } free(hf->footers); } if (hf->afp) { int i; for (i = 0; i < hf->narchives; i++) if (hf->afp[i] && hf->afp[i] != hf->hfp) fclose(hf->afp[i]); if (hf->afp != &hf->hfp) free(hf->afp); } if (hf->hfp) fclose(hf->hfp); free(hf); } /* * Opens a specific archive number. * Returns 0 on success, * -1 on failure */ static int HashFileOpenArchive(HashFile *hf, int archive_no) { if (hf->narchives && archive_no > hf->narchives) return -1; if (hf->afp[archive_no]) return 0; if (NULL == (hf->afp[archive_no] = fopen(hf->archives[archive_no], "rb"))) return -1; return 0; } /* * Extracts the contents for a file out of the HashFile. */ char *HashFileExtract(HashFile *hf, char *fname, size_t *len) { HashFileItem hfi; size_t sz, pos; char *data; HashFileSection *head = NULL, *foot = NULL; /* Find out if and where the item is in the archive */ if (-1 == HashFileQuery(hf, (uint8_t *)fname, strlen(fname), &hfi)) return NULL; /* Work out the size including header/footer and allocate */ sz = hfi.size; if (hfi.header) { head = &hf->headers[hfi.header-1]; sz += head->size; } if (hfi.footer) { foot = &hf->footers[hfi.footer-1]; sz += foot->size; } *len = sz; if (NULL == (data = (char *)malloc(sz+1))) return NULL; data[sz] = 0; /* Header */ pos = 0; if (head) { HashFileOpenArchive(hf, head->archive_no); if (!hf->afp[head->archive_no]) return NULL; fseeko(hf->afp[head->archive_no], head->pos, SEEK_SET); if (1 != fread(&data[pos], head->size, 1, hf->afp[head->archive_no])) return NULL; pos += head->size; } /* Main file */ HashFileOpenArchive(hf, hfi.archive); if (!hf->afp[hfi.archive]) return NULL; fseeko(hf->afp[hfi.archive], hfi.pos, SEEK_SET); if (1 != fread(&data[pos], hfi.size, 1, hf->afp[hfi.archive])) return NULL; pos += hfi.size; /* Footer */ if (foot) { HashFileOpenArchive(hf, foot->archive_no); if (!hf->afp[foot->archive_no]) return NULL; fseeko(hf->afp[foot->archive_no], foot->pos, SEEK_SET); if (1 != fread(&data[pos], foot->size, 1, hf->afp[foot->archive_no])) return NULL; pos += foot->size; } return data; } /* * Iterates through members of a hash table returning items sequentially. * * Returns the next HashItem on success * NULL on failure. */ HashItem *HashTableIterNext(HashTable *h, HashIter *iter) { do { if (iter->hi == NULL) { if (++iter->bnum >= h->nbuckets) break; iter->hi = h->bucket[iter->bnum]; } else { iter->hi = iter->hi->next; } } while (!iter->hi); return iter->hi; } void HashTableIterReset(HashIter *iter) { if (iter) { iter->bnum = -1; iter->hi = NULL; } } HashIter *HashTableIterCreate(void) { HashIter *iter = (HashIter *)malloc(sizeof(*iter)); HashTableIterReset(iter); return iter; } void HashTableIterDestroy(HashIter *iter) { if (iter) free(iter); } io_lib-1.14.6/io_lib/jenkins_lookup3.c0000644000031500020650000010327312354177666014522 00000000000000/* ------------------------------------------------------------------------------- lookup3.c, by Bob Jenkins, May 2006, Public Domain. These are functions for producing 32-bit hashes for hash table lookup. hashword(), hashlittle(), hashlittle2(), hashbig(), mix(), and final() are externally useful functions. Routines to test the hash are included if SELF_TEST is defined. You can use this free for any purpose. It's in the public domain. It has no warranty. You probably want to use hashlittle(). hashlittle() and hashbig() hash byte arrays. hashlittle() is is faster than hashbig() on little-endian machines. Intel and AMD are little-endian machines. On second thought, you probably want hashlittle2(), which is identical to hashlittle() except it returns two 32-bit hashes for the price of one. You could implement hashbig2() if you wanted but I haven't bothered here. If you want to find a hash of, say, exactly 7 integers, do a = i1; b = i2; c = i3; mix(a,b,c); a += i4; b += i5; c += i6; mix(a,b,c); a += i7; final(a,b,c); then use c as the hash value. If you have a variable length array of 4-byte integers to hash, use hashword(). If you have a byte array (like a character string), use hashlittle(). If you have several byte arrays, or a mix of things, see the comments above hashlittle(). Why is this so big? I read 12 bytes at a time into 3 4-byte integers, then mix those integers. This is fast (you can do a lot more thorough mixing with 12*3 instructions on 3 integers than you can with 3 instructions on 1 byte), but shoehorning those bytes into integers efficiently is messy. ------------------------------------------------------------------------------- */ /* #define SELF_TEST 1 */ #ifdef HAVE_CONFIG_H #include "io_lib_config.h" #endif #include /* defines printf for tests */ #include /* defines time_t for timings in the test */ #include /* defines uint32_t etc */ #include /* attempt to define endianness */ #ifdef linux # include /* attempt to define endianness */ #endif #include "io_lib/jenkins_lookup3.h" /* * My best guess at if you are big-endian or little-endian. This may * need adjustment. */ #if (defined(__BYTE_ORDER) && defined(__LITTLE_ENDIAN) && \ __BYTE_ORDER == __LITTLE_ENDIAN) || \ (defined(i386) || defined(__i386__) || defined(__i486__) || \ defined(__i586__) || defined(__i686__) || defined(vax) || defined(MIPSEL)) # define HASH_LITTLE_ENDIAN 1 # define HASH_BIG_ENDIAN 0 #elif (defined(__BYTE_ORDER) && defined(__BIG_ENDIAN) && \ __BYTE_ORDER == __BIG_ENDIAN) || \ (defined(sparc) || defined(POWERPC) || defined(mc68000) || defined(sel)) # define HASH_LITTLE_ENDIAN 0 # define HASH_BIG_ENDIAN 1 #else # define HASH_LITTLE_ENDIAN 0 # define HASH_BIG_ENDIAN 0 #endif #define hashsize(n) ((uint32_t)1<<(n)) #define hashmask(n) (hashsize(n)-1) #define rot(x,k) (((x)<<(k)) | ((x)>>(32-(k)))) /* ------------------------------------------------------------------------------- mix -- mix 3 32-bit values reversibly. This is reversible, so any information in (a,b,c) before mix() is still in (a,b,c) after mix(). If four pairs of (a,b,c) inputs are run through mix(), or through mix() in reverse, there are at least 32 bits of the output that are sometimes the same for one pair and different for another pair. This was tested for: * pairs that differed by one bit, by two bits, in any combination of top bits of (a,b,c), or in any combination of bottom bits of (a,b,c). * "differ" is defined as +, -, ^, or ~^. For + and -, I transformed the output delta to a Gray code (a^(a>>1)) so a string of 1's (as is commonly produced by subtraction) look like a single 1-bit difference. * the base values were pseudorandom, all zero but one bit set, or all zero plus a counter that starts at zero. Some k values for my "a-=c; a^=rot(c,k); c+=b;" arrangement that satisfy this are 4 6 8 16 19 4 9 15 3 18 27 15 14 9 3 7 17 3 Well, "9 15 3 18 27 15" didn't quite get 32 bits diffing for "differ" defined as + with a one-bit base and a two-bit delta. I used http://burtleburtle.net/bob/hash/avalanche.html to choose the operations, constants, and arrangements of the variables. This does not achieve avalanche. There are input bits of (a,b,c) that fail to affect some output bits of (a,b,c), especially of a. The most thoroughly mixed value is c, but it doesn't really even achieve avalanche in c. This allows some parallelism. Read-after-writes are good at doubling the number of bits affected, so the goal of mixing pulls in the opposite direction as the goal of parallelism. I did what I could. Rotates seem to cost as much as shifts on every machine I could lay my hands on, and rotates are much kinder to the top and bottom bits, so I used rotates. ------------------------------------------------------------------------------- */ #define mix(a,b,c) \ { \ a -= c; a ^= rot(c, 4); c += b; \ b -= a; b ^= rot(a, 6); a += c; \ c -= b; c ^= rot(b, 8); b += a; \ a -= c; a ^= rot(c,16); c += b; \ b -= a; b ^= rot(a,19); a += c; \ c -= b; c ^= rot(b, 4); b += a; \ } /* ------------------------------------------------------------------------------- final -- final mixing of 3 32-bit values (a,b,c) into c Pairs of (a,b,c) values differing in only a few bits will usually produce values of c that look totally different. This was tested for * pairs that differed by one bit, by two bits, in any combination of top bits of (a,b,c), or in any combination of bottom bits of (a,b,c). * "differ" is defined as +, -, ^, or ~^. For + and -, I transformed the output delta to a Gray code (a^(a>>1)) so a string of 1's (as is commonly produced by subtraction) look like a single 1-bit difference. * the base values were pseudorandom, all zero but one bit set, or all zero plus a counter that starts at zero. These constants passed: 14 11 25 16 4 14 24 12 14 25 16 4 14 24 and these came close: 4 8 15 26 3 22 24 10 8 15 26 3 22 24 11 8 15 26 3 22 24 ------------------------------------------------------------------------------- */ #define final(a,b,c) \ { \ c ^= b; c -= rot(b,14); \ a ^= c; a -= rot(c,11); \ b ^= a; b -= rot(a,25); \ c ^= b; c -= rot(b,16); \ a ^= c; a -= rot(c,4); \ b ^= a; b -= rot(a,14); \ c ^= b; c -= rot(b,24); \ } /* -------------------------------------------------------------------- This works on all machines. To be useful, it requires -- that the key be an array of uint32_t's, and -- that the length be the number of uint32_t's in the key The function hashword() is identical to hashlittle() on little-endian machines, and identical to hashbig() on big-endian machines, except that the length has to be measured in uint32_ts rather than in bytes. hashlittle() is more complicated than hashword() only because hashlittle() has to dance around fitting the key bytes into registers. -------------------------------------------------------------------- */ #ifdef SELF_TEST static uint32_t hashword( const uint32_t *k, /* the key, an array of uint32_t values */ size_t length, /* the length of the key, in uint32_ts */ uint32_t initval) /* the previous hash, or an arbitrary value */ { uint32_t a,b,c; /* Set up the internal state */ a = b = c = 0xdeadbeef + (((uint32_t)length)<<2) + initval; /*------------------------------------------------- handle most of the key */ while (length > 3) { a += k[0]; b += k[1]; c += k[2]; mix(a,b,c); length -= 3; k += 3; } /*------------------------------------------- handle the last 3 uint32_t's */ switch(length) /* all the case statements fall through */ { case 3 : c+=k[2]; case 2 : b+=k[1]; case 1 : a+=k[0]; final(a,b,c); case 0: /* case 0: nothing left to add */ break; } /*------------------------------------------------------ report the result */ return c; } /* -------------------------------------------------------------------- hashword2() -- same as hashword(), but take two seeds and return two 32-bit values. pc and pb must both be nonnull, and *pc and *pb must both be initialized with seeds. If you pass in (*pb)==0, the output (*pc) will be the same as the return value from hashword(). -------------------------------------------------------------------- */ static void hashword2 ( const uint32_t *k, /* the key, an array of uint32_t values */ size_t length, /* the length of the key, in uint32_ts */ uint32_t *pc, /* IN: seed OUT: primary hash value */ uint32_t *pb) /* IN: more seed OUT: secondary hash value */ { uint32_t a,b,c; /* Set up the internal state */ a = b = c = 0xdeadbeef + ((uint32_t)(length<<2)) + *pc; c += *pb; /*------------------------------------------------- handle most of the key */ while (length > 3) { a += k[0]; b += k[1]; c += k[2]; mix(a,b,c); length -= 3; k += 3; } /*------------------------------------------- handle the last 3 uint32_t's */ switch(length) /* all the case statements fall through */ { case 3 : c+=k[2]; case 2 : b+=k[1]; case 1 : a+=k[0]; final(a,b,c); case 0: /* case 0: nothing left to add */ break; } /*------------------------------------------------------ report the result */ *pc=c; *pb=b; } /* ------------------------------------------------------------------------------- hashlittle() -- hash a variable-length key into a 32-bit value k : the key (the unaligned variable-length array of bytes) length : the length of the key, counting by bytes initval : can be any 4-byte value Returns a 32-bit value. Every bit of the key affects every bit of the return value. Two keys differing by one or two bits will have totally different hash values. The best hash table sizes are powers of 2. There is no need to do mod a prime (mod is sooo slow!). If you need less than 32 bits, use a bitmask. For example, if you need only 10 bits, do h = (h & hashmask(10)); In which case, the hash table should have hashsize(10) elements. If you are hashing n strings (uint8_t **)k, do it like this: for (i=0, h=0; i 12) { a += k[0]; b += k[1]; c += k[2]; mix(a,b,c); length -= 12; k += 3; } /*----------------------------- handle the last (probably partial) block */ /* * "k[2]&0xffffff" actually reads beyond the end of the string, but * then masks off the part it's not allowed to read. Because the * string is aligned, the masked-off tail is in the same word as the * rest of the string. Every machine with memory protection I've seen * does it on word boundaries, so is OK with this. But VALGRIND will * still catch it and complain. The masking trick does make the hash * noticably faster for short strings (like English words). */ #ifndef VALGRIND switch(length) { case 12: c+=k[2]; b+=k[1]; a+=k[0]; break; case 11: c+=k[2]&0xffffff; b+=k[1]; a+=k[0]; break; case 10: c+=k[2]&0xffff; b+=k[1]; a+=k[0]; break; case 9 : c+=k[2]&0xff; b+=k[1]; a+=k[0]; break; case 8 : b+=k[1]; a+=k[0]; break; case 7 : b+=k[1]&0xffffff; a+=k[0]; break; case 6 : b+=k[1]&0xffff; a+=k[0]; break; case 5 : b+=k[1]&0xff; a+=k[0]; break; case 4 : a+=k[0]; break; case 3 : a+=k[0]&0xffffff; break; case 2 : a+=k[0]&0xffff; break; case 1 : a+=k[0]&0xff; break; case 0 : return c; /* zero length strings require no mixing */ } #else /* make valgrind happy */ k8 = (const uint8_t *)k; switch(length) { case 12: c+=k[2]; b+=k[1]; a+=k[0]; break; case 11: c+=((uint32_t)k8[10])<<16; /* fall through */ case 10: c+=((uint32_t)k8[9])<<8; /* fall through */ case 9 : c+=k8[8]; /* fall through */ case 8 : b+=k[1]; a+=k[0]; break; case 7 : b+=((uint32_t)k8[6])<<16; /* fall through */ case 6 : b+=((uint32_t)k8[5])<<8; /* fall through */ case 5 : b+=k8[4]; /* fall through */ case 4 : a+=k[0]; break; case 3 : a+=((uint32_t)k8[2])<<16; /* fall through */ case 2 : a+=((uint32_t)k8[1])<<8; /* fall through */ case 1 : a+=k8[0]; break; case 0 : return c; } #endif /* !valgrind */ } else if (HASH_LITTLE_ENDIAN && ((u.i & 0x1) == 0)) { const uint16_t *k = (const uint16_t *)key; /* read 16-bit chunks */ const uint8_t *k8; /*--------------- all but last block: aligned reads and different mixing */ while (length > 12) { a += k[0] + (((uint32_t)k[1])<<16); b += k[2] + (((uint32_t)k[3])<<16); c += k[4] + (((uint32_t)k[5])<<16); mix(a,b,c); length -= 12; k += 6; } /*----------------------------- handle the last (probably partial) block */ k8 = (const uint8_t *)k; switch(length) { case 12: c+=k[4]+(((uint32_t)k[5])<<16); b+=k[2]+(((uint32_t)k[3])<<16); a+=k[0]+(((uint32_t)k[1])<<16); break; case 11: c+=((uint32_t)k8[10])<<16; /* fall through */ case 10: c+=k[4]; b+=k[2]+(((uint32_t)k[3])<<16); a+=k[0]+(((uint32_t)k[1])<<16); break; case 9 : c+=k8[8]; /* fall through */ case 8 : b+=k[2]+(((uint32_t)k[3])<<16); a+=k[0]+(((uint32_t)k[1])<<16); break; case 7 : b+=((uint32_t)k8[6])<<16; /* fall through */ case 6 : b+=k[2]; a+=k[0]+(((uint32_t)k[1])<<16); break; case 5 : b+=k8[4]; /* fall through */ case 4 : a+=k[0]+(((uint32_t)k[1])<<16); break; case 3 : a+=((uint32_t)k8[2])<<16; /* fall through */ case 2 : a+=k[0]; break; case 1 : a+=k8[0]; break; case 0 : return c; /* zero length requires no mixing */ } } else { /* need to read the key one byte at a time */ const uint8_t *k = (const uint8_t *)key; /*--------------- all but the last block: affect some 32 bits of (a,b,c) */ while (length > 12) { a += k[0]; a += ((uint32_t)k[1])<<8; a += ((uint32_t)k[2])<<16; a += ((uint32_t)k[3])<<24; b += k[4]; b += ((uint32_t)k[5])<<8; b += ((uint32_t)k[6])<<16; b += ((uint32_t)k[7])<<24; c += k[8]; c += ((uint32_t)k[9])<<8; c += ((uint32_t)k[10])<<16; c += ((uint32_t)k[11])<<24; mix(a,b,c); length -= 12; k += 12; } /*-------------------------------- last block: affect all 32 bits of (c) */ switch(length) /* all the case statements fall through */ { case 12: c+=((uint32_t)k[11])<<24; case 11: c+=((uint32_t)k[10])<<16; case 10: c+=((uint32_t)k[9])<<8; case 9 : c+=k[8]; case 8 : b+=((uint32_t)k[7])<<24; case 7 : b+=((uint32_t)k[6])<<16; case 6 : b+=((uint32_t)k[5])<<8; case 5 : b+=k[4]; case 4 : a+=((uint32_t)k[3])<<24; case 3 : a+=((uint32_t)k[2])<<16; case 2 : a+=((uint32_t)k[1])<<8; case 1 : a+=k[0]; break; case 0 : return c; } } final(a,b,c); return c; } #endif /* * hashlittle2: return 2 32-bit hash values * * This is identical to hashlittle(), except it returns two 32-bit hash * values instead of just one. This is good enough for hash table * lookup with 2^^64 buckets, or if you want a second hash if you're not * happy with the first, or if you want a probably-unique 64-bit ID for * the key. *pc is better mixed than *pb, so use *pc first. If you want * a 64-bit value do something like "*pc + (((uint64_t)*pb)<<32)". */ void HashJenkins3( const void *key, /* the key to hash */ size_t length, /* length of the key */ uint32_t *pc, /* IN: primary initval, OUT: primary hash */ uint32_t *pb) /* IN: secondary initval, OUT: secondary hash */ { uint32_t a,b,c; /* internal state */ union { const void *ptr; size_t i; } u; /* needed for Mac Powerbook G4 */ /* Set up the internal state */ a = b = c = 0xdeadbeef + ((uint32_t)length) + *pc; c += *pb; u.ptr = key; if (HASH_LITTLE_ENDIAN && ((u.i & 0x3) == 0)) { const uint32_t *k = (const uint32_t *)key; /* read 32-bit chunks */ #ifdef VALGRIND const uint8_t *k8; #endif /*------ all but last block: aligned reads and affect 32 bits of (a,b,c) */ while (length > 12) { a += k[0]; b += k[1]; c += k[2]; mix(a,b,c); length -= 12; k += 3; } /*----------------------------- handle the last (probably partial) block */ /* * "k[2]&0xffffff" actually reads beyond the end of the string, but * then masks off the part it's not allowed to read. Because the * string is aligned, the masked-off tail is in the same word as the * rest of the string. Every machine with memory protection I've seen * does it on word boundaries, so is OK with this. But VALGRIND will * still catch it and complain. The masking trick does make the hash * noticably faster for short strings (like English words). */ #ifndef VALGRIND switch(length) { case 12: c+=k[2]; b+=k[1]; a+=k[0]; break; case 11: c+=k[2]&0xffffff; b+=k[1]; a+=k[0]; break; case 10: c+=k[2]&0xffff; b+=k[1]; a+=k[0]; break; case 9 : c+=k[2]&0xff; b+=k[1]; a+=k[0]; break; case 8 : b+=k[1]; a+=k[0]; break; case 7 : b+=k[1]&0xffffff; a+=k[0]; break; case 6 : b+=k[1]&0xffff; a+=k[0]; break; case 5 : b+=k[1]&0xff; a+=k[0]; break; case 4 : a+=k[0]; break; case 3 : a+=k[0]&0xffffff; break; case 2 : a+=k[0]&0xffff; break; case 1 : a+=k[0]&0xff; break; case 0 : *pc=c; *pb=b; return; /* zero length strings require no mixing */ } #else /* make valgrind happy */ k8 = (const uint8_t *)k; switch(length) { case 12: c+=k[2]; b+=k[1]; a+=k[0]; break; case 11: c+=((uint32_t)k8[10])<<16; /* fall through */ case 10: c+=((uint32_t)k8[9])<<8; /* fall through */ case 9 : c+=k8[8]; /* fall through */ case 8 : b+=k[1]; a+=k[0]; break; case 7 : b+=((uint32_t)k8[6])<<16; /* fall through */ case 6 : b+=((uint32_t)k8[5])<<8; /* fall through */ case 5 : b+=k8[4]; /* fall through */ case 4 : a+=k[0]; break; case 3 : a+=((uint32_t)k8[2])<<16; /* fall through */ case 2 : a+=((uint32_t)k8[1])<<8; /* fall through */ case 1 : a+=k8[0]; break; case 0 : *pc=c; *pb=b; return; /* zero length strings require no mixing */ } #endif /* !valgrind */ } else if (HASH_LITTLE_ENDIAN && ((u.i & 0x1) == 0)) { const uint16_t *k = (const uint16_t *)key; /* read 16-bit chunks */ const uint8_t *k8; /*--------------- all but last block: aligned reads and different mixing */ while (length > 12) { a += k[0] + (((uint32_t)k[1])<<16); b += k[2] + (((uint32_t)k[3])<<16); c += k[4] + (((uint32_t)k[5])<<16); mix(a,b,c); length -= 12; k += 6; } /*----------------------------- handle the last (probably partial) block */ k8 = (const uint8_t *)k; switch(length) { case 12: c+=k[4]+(((uint32_t)k[5])<<16); b+=k[2]+(((uint32_t)k[3])<<16); a+=k[0]+(((uint32_t)k[1])<<16); break; case 11: c+=((uint32_t)k8[10])<<16; /* fall through */ case 10: c+=k[4]; b+=k[2]+(((uint32_t)k[3])<<16); a+=k[0]+(((uint32_t)k[1])<<16); break; case 9 : c+=k8[8]; /* fall through */ case 8 : b+=k[2]+(((uint32_t)k[3])<<16); a+=k[0]+(((uint32_t)k[1])<<16); break; case 7 : b+=((uint32_t)k8[6])<<16; /* fall through */ case 6 : b+=k[2]; a+=k[0]+(((uint32_t)k[1])<<16); break; case 5 : b+=k8[4]; /* fall through */ case 4 : a+=k[0]+(((uint32_t)k[1])<<16); break; case 3 : a+=((uint32_t)k8[2])<<16; /* fall through */ case 2 : a+=k[0]; break; case 1 : a+=k8[0]; break; case 0 : *pc=c; *pb=b; return; /* zero length strings require no mixing */ } } else { /* need to read the key one byte at a time */ const uint8_t *k = (const uint8_t *)key; /*--------------- all but the last block: affect some 32 bits of (a,b,c) */ while (length > 12) { a += k[0]; a += ((uint32_t)k[1])<<8; a += ((uint32_t)k[2])<<16; a += ((uint32_t)k[3])<<24; b += k[4]; b += ((uint32_t)k[5])<<8; b += ((uint32_t)k[6])<<16; b += ((uint32_t)k[7])<<24; c += k[8]; c += ((uint32_t)k[9])<<8; c += ((uint32_t)k[10])<<16; c += ((uint32_t)k[11])<<24; mix(a,b,c); length -= 12; k += 12; } /*-------------------------------- last block: affect all 32 bits of (c) */ switch(length) /* all the case statements fall through */ { case 12: c+=((uint32_t)k[11])<<24; case 11: c+=((uint32_t)k[10])<<16; case 10: c+=((uint32_t)k[9])<<8; case 9 : c+=k[8]; case 8 : b+=((uint32_t)k[7])<<24; case 7 : b+=((uint32_t)k[6])<<16; case 6 : b+=((uint32_t)k[5])<<8; case 5 : b+=k[4]; case 4 : a+=((uint32_t)k[3])<<24; case 3 : a+=((uint32_t)k[2])<<16; case 2 : a+=((uint32_t)k[1])<<8; case 1 : a+=k[0]; break; case 0 : *pc=c; *pb=b; return; /* zero length strings require no mixing */ } } final(a,b,c); *pc=c; *pb=b; } #ifdef SELF_TEST /* * hashbig(): * This is the same as hashword() on big-endian machines. It is different * from hashlittle() on all machines. hashbig() takes advantage of * big-endian byte ordering. */ static uint32_t hashbig( const void *key, size_t length, uint32_t initval) { uint32_t a,b,c; union { const void *ptr; size_t i; } u; /* to cast key to (size_t) happily */ /* Set up the internal state */ a = b = c = 0xdeadbeef + ((uint32_t)length) + initval; u.ptr = key; if (HASH_BIG_ENDIAN && ((u.i & 0x3) == 0)) { const uint32_t *k = (const uint32_t *)key; /* read 32-bit chunks */ #ifdef VALGRIND const uint8_t *k8; #endif /*------ all but last block: aligned reads and affect 32 bits of (a,b,c) */ while (length > 12) { a += k[0]; b += k[1]; c += k[2]; mix(a,b,c); length -= 12; k += 3; } /*----------------------------- handle the last (probably partial) block */ /* * "k[2]<<8" actually reads beyond the end of the string, but * then shifts out the part it's not allowed to read. Because the * string is aligned, the illegal read is in the same word as the * rest of the string. Every machine with memory protection I've seen * does it on word boundaries, so is OK with this. But VALGRIND will * still catch it and complain. The masking trick does make the hash * noticably faster for short strings (like English words). */ #ifndef VALGRIND switch(length) { case 12: c+=k[2]; b+=k[1]; a+=k[0]; break; case 11: c+=k[2]&0xffffff00; b+=k[1]; a+=k[0]; break; case 10: c+=k[2]&0xffff0000; b+=k[1]; a+=k[0]; break; case 9 : c+=k[2]&0xff000000; b+=k[1]; a+=k[0]; break; case 8 : b+=k[1]; a+=k[0]; break; case 7 : b+=k[1]&0xffffff00; a+=k[0]; break; case 6 : b+=k[1]&0xffff0000; a+=k[0]; break; case 5 : b+=k[1]&0xff000000; a+=k[0]; break; case 4 : a+=k[0]; break; case 3 : a+=k[0]&0xffffff00; break; case 2 : a+=k[0]&0xffff0000; break; case 1 : a+=k[0]&0xff000000; break; case 0 : return c; /* zero length strings require no mixing */ } #else /* make valgrind happy */ k8 = (const uint8_t *)k; switch(length) /* all the case statements fall through */ { case 12: c+=k[2]; b+=k[1]; a+=k[0]; break; case 11: c+=((uint32_t)k8[10])<<8; /* fall through */ case 10: c+=((uint32_t)k8[9])<<16; /* fall through */ case 9 : c+=((uint32_t)k8[8])<<24; /* fall through */ case 8 : b+=k[1]; a+=k[0]; break; case 7 : b+=((uint32_t)k8[6])<<8; /* fall through */ case 6 : b+=((uint32_t)k8[5])<<16; /* fall through */ case 5 : b+=((uint32_t)k8[4])<<24; /* fall through */ case 4 : a+=k[0]; break; case 3 : a+=((uint32_t)k8[2])<<8; /* fall through */ case 2 : a+=((uint32_t)k8[1])<<16; /* fall through */ case 1 : a+=((uint32_t)k8[0])<<24; break; case 0 : return c; } #endif /* !VALGRIND */ } else { /* need to read the key one byte at a time */ const uint8_t *k = (const uint8_t *)key; /*--------------- all but the last block: affect some 32 bits of (a,b,c) */ while (length > 12) { a += ((uint32_t)k[0])<<24; a += ((uint32_t)k[1])<<16; a += ((uint32_t)k[2])<<8; a += ((uint32_t)k[3]); b += ((uint32_t)k[4])<<24; b += ((uint32_t)k[5])<<16; b += ((uint32_t)k[6])<<8; b += ((uint32_t)k[7]); c += ((uint32_t)k[8])<<24; c += ((uint32_t)k[9])<<16; c += ((uint32_t)k[10])<<8; c += ((uint32_t)k[11]); mix(a,b,c); length -= 12; k += 12; } /*-------------------------------- last block: affect all 32 bits of (c) */ switch(length) /* all the case statements fall through */ { case 12: c+=k[11]; case 11: c+=((uint32_t)k[10])<<8; case 10: c+=((uint32_t)k[9])<<16; case 9 : c+=((uint32_t)k[8])<<24; case 8 : b+=k[7]; case 7 : b+=((uint32_t)k[6])<<8; case 6 : b+=((uint32_t)k[5])<<16; case 5 : b+=((uint32_t)k[4])<<24; case 4 : a+=k[3]; case 3 : a+=((uint32_t)k[2])<<8; case 2 : a+=((uint32_t)k[1])<<16; case 1 : a+=((uint32_t)k[0])<<24; break; case 0 : return c; } } final(a,b,c); return c; } /* used for timings */ void driver1() { uint8_t buf[256]; uint32_t i; uint32_t h=0; time_t a,z; time(&a); for (i=0; i<256; ++i) buf[i] = 'x'; for (i=0; i<1; ++i) { h = hashlittle(&buf[0],1,h); } time(&z); if (z-a > 0) printf("time %d %.8x\n", z-a, h); } /* check that every input bit changes every output bit half the time */ #define HASHSTATE 1 #define HASHLEN 1 #define MAXPAIR 60 #define MAXLEN 70 void driver2() { uint8_t qa[MAXLEN+1], qb[MAXLEN+2], *a = &qa[0], *b = &qb[1]; uint32_t c[HASHSTATE], d[HASHSTATE], i=0, j=0, k, l, m=0, z; uint32_t e[HASHSTATE],f[HASHSTATE],g[HASHSTATE],h[HASHSTATE]; uint32_t x[HASHSTATE],y[HASHSTATE]; uint32_t hlen; printf("No more than %d trials should ever be needed \n",MAXPAIR/2); for (hlen=0; hlen < MAXLEN; ++hlen) { z=0; for (i=0; i>(8-j)); c[0] = hashlittle(a, hlen, m); b[i] ^= ((k+1)<>(8-j)); d[0] = hashlittle(b, hlen, m); /* check every bit is 1, 0, set, and not set at least once */ for (l=0; lz) z=k; if (k==MAXPAIR) { printf("Some bit didn't change: "); printf("%.8x %.8x %.8x %.8x %.8x %.8x ", e[0],f[0],g[0],h[0],x[0],y[0]); printf("i %d j %d m %d len %d\n", i, j, m, hlen); } if (z==MAXPAIR) goto done; } } } done: if (z < MAXPAIR) { printf("Mix success %2d bytes %2d initvals ",i,m); printf("required %d trials\n", z/2); } } printf("\n"); } /* Check for reading beyond the end of the buffer and alignment problems */ void driver3() { uint8_t buf[MAXLEN+20], *b; uint32_t len; uint8_t q[] = "This is the time for all good men to come to the aid of their country..."; uint32_t h; uint8_t qq[] = "xThis is the time for all good men to come to the aid of their country..."; uint32_t i; uint8_t qqq[] = "xxThis is the time for all good men to come to the aid of their country..."; uint32_t j; uint8_t qqqq[] = "xxxThis is the time for all good men to come to the aid of their country..."; uint32_t ref,x,y; uint8_t *p; printf("Endianness. These lines should all be the same (for values filled in):\n"); printf("%.8x %.8x %.8x\n", hashword((const uint32_t *)q, (sizeof(q)-1)/4, 13), hashword((const uint32_t *)q, (sizeof(q)-5)/4, 13), hashword((const uint32_t *)q, (sizeof(q)-9)/4, 13)); p = q; printf("%.8x %.8x %.8x %.8x %.8x %.8x %.8x %.8x %.8x %.8x %.8x %.8x\n", hashlittle(p, sizeof(q)-1, 13), hashlittle(p, sizeof(q)-2, 13), hashlittle(p, sizeof(q)-3, 13), hashlittle(p, sizeof(q)-4, 13), hashlittle(p, sizeof(q)-5, 13), hashlittle(p, sizeof(q)-6, 13), hashlittle(p, sizeof(q)-7, 13), hashlittle(p, sizeof(q)-8, 13), hashlittle(p, sizeof(q)-9, 13), hashlittle(p, sizeof(q)-10, 13), hashlittle(p, sizeof(q)-11, 13), hashlittle(p, sizeof(q)-12, 13)); p = &qq[1]; printf("%.8x %.8x %.8x %.8x %.8x %.8x %.8x %.8x %.8x %.8x %.8x %.8x\n", hashlittle(p, sizeof(q)-1, 13), hashlittle(p, sizeof(q)-2, 13), hashlittle(p, sizeof(q)-3, 13), hashlittle(p, sizeof(q)-4, 13), hashlittle(p, sizeof(q)-5, 13), hashlittle(p, sizeof(q)-6, 13), hashlittle(p, sizeof(q)-7, 13), hashlittle(p, sizeof(q)-8, 13), hashlittle(p, sizeof(q)-9, 13), hashlittle(p, sizeof(q)-10, 13), hashlittle(p, sizeof(q)-11, 13), hashlittle(p, sizeof(q)-12, 13)); p = &qqq[2]; printf("%.8x %.8x %.8x %.8x %.8x %.8x %.8x %.8x %.8x %.8x %.8x %.8x\n", hashlittle(p, sizeof(q)-1, 13), hashlittle(p, sizeof(q)-2, 13), hashlittle(p, sizeof(q)-3, 13), hashlittle(p, sizeof(q)-4, 13), hashlittle(p, sizeof(q)-5, 13), hashlittle(p, sizeof(q)-6, 13), hashlittle(p, sizeof(q)-7, 13), hashlittle(p, sizeof(q)-8, 13), hashlittle(p, sizeof(q)-9, 13), hashlittle(p, sizeof(q)-10, 13), hashlittle(p, sizeof(q)-11, 13), hashlittle(p, sizeof(q)-12, 13)); p = &qqqq[3]; printf("%.8x %.8x %.8x %.8x %.8x %.8x %.8x %.8x %.8x %.8x %.8x %.8x\n", hashlittle(p, sizeof(q)-1, 13), hashlittle(p, sizeof(q)-2, 13), hashlittle(p, sizeof(q)-3, 13), hashlittle(p, sizeof(q)-4, 13), hashlittle(p, sizeof(q)-5, 13), hashlittle(p, sizeof(q)-6, 13), hashlittle(p, sizeof(q)-7, 13), hashlittle(p, sizeof(q)-8, 13), hashlittle(p, sizeof(q)-9, 13), hashlittle(p, sizeof(q)-10, 13), hashlittle(p, sizeof(q)-11, 13), hashlittle(p, sizeof(q)-12, 13)); printf("\n"); /* check that hashlittle2 and hashlittle produce the same results */ i=47; j=0; hashlittle2(q, sizeof(q), &i, &j); if (hashlittle(q, sizeof(q), 47) != i) printf("hashlittle2 and hashlittle mismatch\n"); /* check that hashword2 and hashword produce the same results */ len = 0xdeadbeef; i=47, j=0; hashword2(&len, 1, &i, &j); if (hashword(&len, 1, 47) != i) printf("hashword2 and hashword mismatch %x %x\n", i, hashword(&len, 1, 47)); /* check hashlittle doesn't read before or after the ends of the string */ for (h=0, b=buf+1; h<8; ++h, ++b) { for (i=0; i #include #include #include #include #include #include #include #include #include "io_lib/os.h" #include "io_lib/mFILE.h" #include "io_lib/vlen.h" #ifdef HAVE_MMAP #include #endif /* * This file contains memory-based versions of the most commonly used * (by io_lib) stdio functions. * * Actual file IO takes place either on opening or closing an mFILE. * * Coupled to this are a bunch of rather scary macros which can be obtained * by including stdio_hack.h. It is recommended though that you use mFILE.h * instead and replace fopen with mfopen (etc). This is more or less * mandatory if you wish to use both FILE and mFILE structs in a single file. */ static mFILE *m_channel[3]; /* stdin, stdout and stderr fakes */ /* * Reads the entirety of fp into memory. If 'fn' exists it is the filename * associated with fp. This will be used for more optimal reading (via a * stat to identify the size and a single read). Otherwise we use successive * reads until EOF. * * Returns a malloced buffer on success of length *size * NULL on failure */ static char *mfload(FILE *fp, const char *fn, size_t *size, int binary) { struct stat sb; char *data = NULL; size_t allocated = 0, used = 0; int bufsize = 8192; #ifdef _WIN32 if (binary) _setmode(_fileno(fp), _O_BINARY); else _setmode(_fileno(fp), _O_TEXT); #endif if (fn && -1 != stat(fn, &sb)) { data = malloc(allocated = sb.st_size); bufsize = sb.st_size; } else { fn = NULL; } do { size_t len; if (used + bufsize > allocated) { allocated += bufsize; data = realloc(data, allocated); } len = fread(data + used, 1, allocated - used, fp); if (len > 0) used += len; } while (!feof(fp) && (fn == NULL || used < sb.st_size)); *size = used; return data; } #ifdef HAVE_MMAP /* * mmaps in the file, but only for reading currently. * * Returns 0 on success * -1 on failure */ int mfmmap(mFILE *mf, FILE *fp, const char *fn) { struct stat sb; if (stat(fn, &sb) != 0) return -1; mf->size = sb.st_size; mf->data = mmap(NULL, mf->size, PROT_READ, MAP_SHARED, fileno(fp), 0); if (!mf->data) return -1; mf->alloced = 0; return 0; } #endif /* * Creates and returns m_channel[0]. * We initialise this on the first attempted read, which then slurps in * all of stdin until EOF is met. */ mFILE *mstdin(void) { if (m_channel[0]) return m_channel[0]; m_channel[0] = mfcreate(NULL, 0); if (NULL == m_channel[0]) return NULL; m_channel[0]->fp = stdin; return m_channel[0]; } static void init_mstdin(void) { static int done_stdin = 0; if (done_stdin) return; m_channel[0]->data = mfload(stdin, NULL, &m_channel[0]->size, 1); m_channel[0]->mode = MF_READ; done_stdin = 1; } /* * Creates and returns m_channel[1]. This is the fake for stdout. It starts as * an empty buffer which is physically written out only when mfflush or * mfclose are called. */ mFILE *mstdout(void) { if (m_channel[1]) return m_channel[1]; m_channel[1] = mfcreate(NULL, 0); if (NULL == m_channel[1]) return NULL; m_channel[1]->fp = stdout; m_channel[1]->mode = MF_WRITE; return m_channel[1]; } /* * Stderr as an mFILE. * The code handles stderr by returning m_channel[2], but also checking * for stderr in fprintf (the common usage of it) to auto-flush. */ mFILE *mstderr(void) { if (m_channel[2]) return m_channel[2]; m_channel[2] = mfcreate(NULL, 0); if (NULL == m_channel[2]) return NULL; m_channel[2]->fp = stderr; m_channel[2]->mode = MF_WRITE; return m_channel[2]; } /* * For creating existing mFILE pointers directly from memory buffers. */ mFILE *mfcreate(char *data, int size) { mFILE *mf = (mFILE *)malloc(sizeof(*mf)); if (NULL == mf) return NULL; mf->fp = NULL; mf->data = data; mf->alloced = size; mf->size = size; mf->eof = 0; mf->offset = 0; mf->flush_pos = 0; mf->mode = MF_READ | MF_WRITE; return mf; } /* * Recreate an existing mFILE to house new data/size. * It also rewinds the file. */ void mfrecreate(mFILE *mf, char *data, int size) { if (mf->data) free(mf->data); mf->data = data; mf->size = size; mf->alloced = size; mf->eof = 0; mf->offset = 0; mf->flush_pos = 0; } /* * Creates a new mFILE to contain the contents of the FILE pointer. * This mFILE is purely for in-memory operations and has no links to the * original FILE* it came from. It also doesn't close the FILE pointer. * Consider using mfreopen() is you need different behaviour. * * Returns mFILE * on success * NULL on failure. */ mFILE *mfcreate_from(const char *path, const char *mode_str, FILE *fp) { mFILE *mf; /* Open using mfreopen() */ if (NULL == (mf = mfreopen(path, mode_str, fp))) return NULL; /* Disassociate from the input stream */ mf->fp = NULL; return mf; } /* * Converts a FILE * to an mFILE *. * Use this for wrapper functions to turn external prototypes requring * FILE * as an argument into internal code using mFILE *. */ mFILE *mfreopen(const char *path, const char *mode_str, FILE *fp) { mFILE *mf; int r = 0, w = 0, a = 0, b = 0, x = 0, mode = 0; /* Parse mode: * r = read file contents (if truncated => don't read) * w = write on close * a = position at end of buffer * x = position at same location as the original fp, don't seek on flush * + = for update (read and write) * m = mmap (read only) */ if (strchr(mode_str, 'r')) r = 1, mode |= MF_READ; if (strchr(mode_str, 'w')) w = 1, mode |= MF_WRITE | MF_TRUNC; if (strchr(mode_str, 'a')) w = a = 1, mode |= MF_WRITE | MF_APPEND; if (strchr(mode_str, 'b')) b = 1, mode |= MF_BINARY; if (strchr(mode_str, 'x')) x = 1; if (strchr(mode_str, '+')) { w = 1, mode |= MF_READ | MF_WRITE; if (a) r = 1; } #ifdef HAVE_MMAP if (strchr(mode_str, 'm')) if (!w) mode |= MF_MMAP; #endif if (r) { mf = mfcreate(NULL, 0); if (NULL == mf) return NULL; if (!(mode & MF_TRUNC)) { #ifdef HAVE_MMAP if (mode & MF_MMAP) { if (mfmmap(mf, fp, path) == -1) { mf->data = NULL; mode &= ~MF_MMAP; } } #endif if (!mf->data) { mf->data = mfload(fp, path, &mf->size, b); mf->alloced = mf->size; if (!a) fseek(fp, 0, SEEK_SET); } } } else if (w) { /* Write - initialise the data structures */ mf = mfcreate(NULL, 0); if (NULL == mf) return NULL; } else { fprintf(stderr, "Must specify either r, w or a for mode\n"); return NULL; } mf->fp = fp; mf->mode = mode; if (x) { mf->mode |= MF_MODEX; } if (a) { mf->flush_pos = mf->size; fseek(fp, 0, SEEK_END); } return mf; } /* * Opens a file. If we have read access (r or a+) then it loads the entire * file into memory. If We have write access then the pathname is stored. * We do not actually write until an mfclose, which then checks this pathname. */ mFILE *mfopen(const char *path, const char *mode) { FILE *fp; if (NULL == (fp = fopen(path, mode))) return NULL; return mfreopen(path, mode, fp); } /* * Closes an mFILE. If the filename is known (implying write access) then this * also writes the data to disk. * * Stdout is handled by calling mfflush which writes to stdout if appropriate. */ int mfclose(mFILE *mf) { if (!mf) return -1; mfflush(mf); #ifdef HAVE_MMAP if ((mf->mode & MF_MMAP) && mf->data) { /* Mmaped */ munmap(mf->data, mf->size); mf->data = NULL; } #endif if (mf->fp) fclose(mf->fp); mfdestroy(mf); return 0; } /* * Closes the file pointer contained within the mFILE without destroying * the in-memory data. * * Attempting to do this on an mmaped buffer is an error. */ int mfdetach(mFILE *mf) { if (!mf) return -1; mfflush(mf); if (mf->mode & MF_MMAP) return -1; if (mf->fp) { fclose(mf->fp); mf->fp = NULL; } return 0; } /* * Destroys an mFILE structure but does not flush or close it */ int mfdestroy(mFILE *mf) { if (!mf) return -1; if (mf->data) free(mf->data); free(mf); return 0; } /* * Steals that data out of an mFILE. The mFILE itself will be closed. * It is up to the caller to free the stolen buffer. If size_out is * not NULL, mf->size will be stored in it. * This is more-or-less the opposite of mfcreate(). * * Note, we cannot steal the allocated buffer from an mmaped mFILE. */ void *mfsteal(mFILE *mf, size_t *size_out) { void *data; if (!mf) return NULL; data = mf->data; if (NULL != size_out) *size_out = mf->size; if (mfdetach(mf) != 0) return NULL; mf->data = NULL; mfdestroy(mf); return data; } /* * Seek/tell functions. Nothing more than updating and reporting an * in-memory index. NB we can seek on stdin or stdout even provided we * haven't been flushing. */ int mfseek(mFILE *mf, long offset, int whence) { switch (whence) { case SEEK_SET: mf->offset = offset; break; case SEEK_CUR: mf->offset += offset; break; case SEEK_END: mf->offset = mf->size + offset; break; default: errno = EINVAL; return -1; } mf->eof = 0; return 0; } long mftell(mFILE *mf) { return mf->offset; } void mrewind(mFILE *mf) { mf->offset = 0; mf->eof = 0; } /* * mftruncate is not directly a translation of ftruncate as the latter * takes a file descriptor instead of a FILE *. It performs the analogous * role though. * * If offset is -1 then the file is truncated to be the current file * offset. */ void mftruncate(mFILE *mf, long offset) { mf->size = offset != -1 ? offset : mf->offset; if (mf->offset > mf->size) mf->offset = mf->size; } int mfeof(mFILE *mf) { return mf->eof; } /* * mFILE read/write functions. Basically these turn fread/fwrite syntax * into memcpy statements, with appropriate memory handling for writing. */ size_t mfread(void *ptr, size_t size, size_t nmemb, mFILE *mf) { size_t len; char *cptr = (char *)ptr; if (mf == m_channel[0]) init_mstdin(); if (mf->size <= mf->offset) return 0; len = size * nmemb <= mf->size - mf->offset ? size * nmemb : mf->size - mf->offset; if (!size) return 0; memcpy(cptr, &mf->data[mf->offset], len); mf->offset += len; if (len != size * nmemb) { mf->eof = 1; } return len / size; } size_t mfwrite(void *ptr, size_t size, size_t nmemb, mFILE *mf) { if (!(mf->mode & MF_WRITE)) return 0; /* Append mode => forced all writes to end of file */ if (mf->mode & MF_APPEND) mf->offset = mf->size; /* Make sure we have enough room */ while (size * nmemb + mf->offset > mf->alloced) { size_t new_alloced = mf->alloced ? mf->alloced * 2 : 1024; void * new_data = realloc(mf->data, new_alloced); if (NULL == new_data) return 0; mf->alloced = new_alloced; mf->data = new_data; } /* Record where we need to reflush from */ if (mf->offset < mf->flush_pos) mf->flush_pos = mf->offset; /* Copy the data over */ memcpy(&mf->data[mf->offset], ptr, size * nmemb); mf->offset += size * nmemb; if (mf->size < mf->offset) mf->size = mf->offset; return nmemb; } int mfgetc(mFILE *mf) { if (mf == m_channel[0]) init_mstdin(); if (mf->offset < mf->size) { return (unsigned char)mf->data[mf->offset++]; } mf->eof = 1; return -1; } int mungetc(int c, mFILE *mf) { if (mf->offset > 0) { mf->data[--mf->offset] = c; return c; } mf->eof = 1; return -1; } char *mfgets(char *s, int size, mFILE *mf) { int i; if (mf == m_channel[0]) init_mstdin(); *s = 0; for (i = 0; i < size-1;) { if (mf->offset < mf->size) { s[i] = mf->data[mf->offset++]; if (s[i++] == '\n') break; } else { mf->eof = 1; break; } } s[i] = 0; return i ? s : NULL; } /* * Flushes an mFILE. If this is a real open of a file in write mode then * mFILE->fp will be set. We then write out any new data in mFILE since the * last flush. We cannot tell what may have been modified as we don't keep * track of that, so we typically rewrite out the entire file contents between * the last flush_pos and the end of file. * * For stderr/stdout we also reset the offsets so we cannot modify things * we've already output. */ int mfflush(mFILE *mf) { if (!mf->fp) return 0; /* FIXME: only do this when opened in write mode */ if (mf == m_channel[1] || mf == m_channel[2]) { if (mf->flush_pos < mf->size) { size_t bytes = mf->size - mf->flush_pos; if (fwrite(mf->data + mf->flush_pos, 1, bytes, mf->fp) < bytes) return -1; if (0 != fflush(mf->fp)) return -1; } /* Stdout & stderr are non-seekable streams so throw away the data */ mf->offset = mf->size = mf->flush_pos = 0; } /* only flush when opened in write mode */ if (mf->mode & MF_WRITE) { if (mf->flush_pos < mf->size) { size_t bytes = mf->size - mf->flush_pos; if (!(mf->mode & MF_MODEX)) { fseek(mf->fp, mf->flush_pos, SEEK_SET); } if (fwrite(mf->data + mf->flush_pos, 1, bytes, mf->fp) < bytes) return -1; if (0 != fflush(mf->fp)) return -1; } if (ftell(mf->fp) != -1 && ftruncate(fileno(mf->fp), ftell(mf->fp)) == -1) return -1; mf->flush_pos = mf->size; } return 0; } /* * A wrapper around vsprintf() to write to an mFILE. This also uses vflen() to * estimate how many additional bytes of storage will be required for the * vsprintf to work. */ int mfprintf(mFILE *mf, char *fmt, ...) { int ret; size_t est_length; va_list args; va_start(args, fmt); est_length = vflen(fmt, args); va_end(args); while (est_length + mf->offset > mf->alloced) { size_t new_alloced = mf->alloced ? mf->alloced * 2 : 1024; void * new_data = realloc(mf->data, new_alloced); if (NULL == new_data) return -1; mf->alloced = new_alloced; mf->data = new_data; } va_start(args, fmt); ret = vsprintf(&mf->data[mf->offset], fmt, args); va_end(args); if (ret > 0) { mf->offset += ret; if (mf->size < mf->offset) mf->size = mf->offset; } if (mf->fp == stderr) { /* Auto-flush for stderr */ if (0 != mfflush(mf)) return -1; } return ret; } /* * Converts an mFILE from binary to ascii mode by replacing all * cr-nl with nl. * * Primarily used on windows when we've uncompressed a binary file which * happens to be a text file (eg Experiment File). Previously we would have * seeked back to the start and used _setmode(fileno(fp), _O_TEXT). * * Side effect: resets offset and flush_pos back to the start. */ void mfascii(mFILE *mf) { size_t p1, p2; for (p1 = p2 = 1; p1 < mf->size; p1++, p2++) { if (mf->data[p1] == '\n' && mf->data[p1-1] == '\r') { p2--; /* delete the \r */ } mf->data[p2] = mf->data[p1]; } mf->size = p2; mf->offset = mf->flush_pos = 0; } io_lib-1.14.6/io_lib/pooled_alloc.c0000644000031500020650000001026212354177666014034 00000000000000/* * Copyright (c) 2009-2010, 2013 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifdef HAVE_CONFIG_H #include "io_lib_config.h" #endif #include #include #include #include "io_lib/pooled_alloc.h" //#define TEST_MAIN #define PSIZE 1024*1024 pool_alloc_t *pool_create(size_t dsize) { pool_alloc_t *p; if (NULL == (p = (pool_alloc_t *)malloc(sizeof(*p)))) return NULL; /* Minimum size is a pointer, for free list */ dsize = (dsize + sizeof(void *) - 1) & ~(sizeof(void *)-1); if (dsize < sizeof(void *)) dsize = sizeof(void *); p->dsize = dsize; p->npools = 0; p->pools = NULL; p->free = NULL; return p; } static pool_t *new_pool(pool_alloc_t *p) { size_t n = PSIZE / p->dsize; pool_t *pool; pool = realloc(p->pools, (p->npools + 1) * sizeof(*p->pools)); if (NULL == pool) return NULL; p->pools = pool; pool = &p->pools[p->npools]; pool->pool = malloc(n * p->dsize); if (NULL == pool->pool) return NULL; pool->used = 0; p->npools++; return pool; } void pool_destroy(pool_alloc_t *p) { size_t i; for (i = 0; i < p->npools; i++) { free(p->pools[i].pool); } free(p->pools); free(p); } void *pool_alloc(pool_alloc_t *p) { pool_t *pool; void *ret; /* Look on free list */ if (NULL != p->free) { ret = p->free; p->free = *((void **)p->free); return ret; } /* Look for space in the last pool */ if (p->npools) { pool = &p->pools[p->npools - 1]; if (pool->used + p->dsize < PSIZE) { ret = ((char *) pool->pool) + pool->used; pool->used += p->dsize; return ret; } } /* Need a new pool */ pool = new_pool(p); if (NULL == pool) return NULL; pool->used = p->dsize; return pool->pool; } void pool_free(pool_alloc_t *p, void *ptr) { *(void **)ptr = p->free; p->free = ptr; } #ifdef TEST_MAIN typedef struct { int x, y, z; } xyz; #define NP 10000 int main(void) { int i; xyz *item; xyz **items; pool_alloc_t *p = pool_create(sizeof(xyz)); items = (xyz **)malloc(NP * sizeof(*items)); for (i = 0; i < NP; i++) { item = pool_alloc(p); item->x = i; item->y = i+1; item->z = i+2; items[i] = item; } for (i = 0; i < NP; i++) { item = items[i]; if (i % 3) pool_free(p, item); } for (i = 0; i < NP; i++) { item = pool_alloc(p); item->x = 1000000+i; item->y = 1000000+i+1; item->z = 1000000+i+2; } for (i = 0; i < NP; i++) { item = items[i]; printf("%d\t%d\t%d\t%d\n", i, item->x, item->y, item->z); pool_free(p, item); } return 0; } #endif io_lib-1.14.6/io_lib/bam.c0000644000031500020650000026072112616637700012135 00000000000000/* * Copyright (c) 2013 Genome Research Ltd. * Author(s): James Bonfield, Rob Davies * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * Author: James Bonfield, Wellcome Trust Sanger Institute. 2010-3 */ #ifdef HAVE_CONFIG_H #include "io_lib_config.h" #endif #include #include #include #include #include #include #include #include #include #include #include #include #include "io_lib/bam.h" #include "io_lib/os.h" #include "io_lib/thread_pool.h" #define USE_MT #ifdef USE_MT # define BGZF_WRITE bgzf_write_mt # define BGZF_FLUSH bgzf_flush_mt #else # define BGZF_WRITE bgzf_write # define BGZF_FLUSH bgzf_flush #endif #ifndef MIN # define MIN(a,b) ((a)<(b)?(a):(b)) #endif #define EOF_BLOCK "\037\213\010\4\0\0\0\0\0\377\6\0\102\103\2\0\033\0\3\0\0\0\0\0\0\0\0\0" /* Macros to store integers of various sizes in little endian byte order. * The value is put in the location pointed to by ucp, which should be * an unsigned char pointer. ucp is incremented by the size of the * stored value. */ #define STORE_UINT16(ucp, val) \ *(ucp)++ = ((uint16_t) val) & 0xff; \ *(ucp)++ = ((uint16_t) val >> 8) & 0xff; #define STORE_UINT32(ucp, val) \ *(ucp)++ = ((uint32_t) (val)) & 0xff; \ *(ucp)++ = ((uint32_t) (val) >> 8) & 0xff; \ *(ucp)++ = ((uint32_t) (val) >> 16) & 0xff; \ *(ucp)++ = ((uint32_t) (val) >> 24) & 0xff; #define STORE_UINT64(ucp, val) \ *(ucp)++ = ((uint64_t) (val)) & 0xff; \ *(ucp)++ = ((uint64_t) (val) >> 8) & 0xff; \ *(ucp)++ = ((uint64_t) (val) >> 16) & 0xff; \ *(ucp)++ = ((uint64_t) (val) >> 24) & 0xff; \ *(ucp)++ = ((uint64_t) (val) >> 32) & 0xff; \ *(ucp)++ = ((uint64_t) (val) >> 40) & 0xff; \ *(ucp)++ = ((uint64_t) (val) >> 48) & 0xff; \ *(ucp)++ = ((uint64_t) (val) >> 56) & 0xff; static int bam_more_input(bam_file_t *b); static int bam_uncompress_input(bam_file_t *b); static int reg2bin(int start, int end); static int bgzf_write(bam_file_t *bf, int level, const void *buf, size_t count); static int bgzf_write_mt(bam_file_t *bf, int level, const void *buf, size_t count); #ifdef USE_MT static int bgzf_flush_mt(bam_file_t *bf); #else static int bgzf_flush(bam_file_t *bf); #endif /* * Reads len bytes from fp into data. * * Returns the number of bytes read. * 0 for eof. * -1 for failure. */ static int bam_read(bam_file_t *b, void *data, size_t len) { int nb = 0, n; unsigned char *cdata = data; while (len) { /* Consume any available uncompressed output */ if (b->uncomp_sz) { size_t l = MIN(b->uncomp_sz, len); memcpy(cdata, b->uncomp_p, l); b->uncomp_p += l; b->uncomp_sz -= l; cdata += l; len -= l; nb += l; if (!len) return nb; } if (!b->gzip) { /* Already uncompressed, so easy to deal with */ if (!b->comp_sz) if (-1 == bam_more_input(b)) return nb ? nb : 0; b->uncomp_p = b->comp_p; b->uncomp_sz = b->comp_sz; b->comp_sz = 0; continue; } /* in=compressed out=uncompressed, but used as input (sorry!) */ n = bam_uncompress_input(b); if (n == -1) return -1; if (n == 0) return nb; } return nb; } /* * Reads a line of text of unknown length. * 'str' is both input and output. If *str == NULL then memory is allocated * for the line. If *str != NULL then it is expected to point to an existing * block of memory that we can write into and realloc as required. * * Similarly *len is both input and output. It is expected to hold the * current allocated size of *str. It is modified if we realloc it. * * Lines have the \n removed and will be null terminated. * * Returns actual line length used (note note the same as *len) on success * -1 on failure */ static int bam_get_line(bam_file_t *b, unsigned char **str, size_t *len) { unsigned char *buf = *str; int used_l = 0; size_t alloc_l = *len; int next_condition, r = 0; while (b->uncomp_sz || (r=bam_uncompress_input(b)) > 0) { int tmp; unsigned char *from = b->uncomp_p; unsigned char *to = &buf[used_l]; /* * Next condition is the number of loop iterations before something * has to be done - either getting more uncompressed output or * resizing the buffer. We don't care which, but it allows us to * have just one check per loop instead of two. Once out of the loop * we can then afford to determine which case is and deal with it. */ tmp = next_condition = MIN(b->uncomp_sz, alloc_l-used_l); /* * Consume 32 or 64 bits at a time, looking for \n in any byte. * On 64-bit OS this function becomes 3x faster. */ #ifdef ALLOW_UAC #if SIZEOF_LONG == 8 && ULONG_MAX != 0xffffffff #define hasless(x,n) (((x)-0x0101010101010101UL*(n))&~(x)&0x8080808080808080UL) #define haszero(x) (((x)-0x0101010101010101UL)&~(x)&0x8080808080808080UL) { uint64_t *fromi = (uint64_t *)from; uint64_t *toi = (uint64_t *)to; while (next_condition >= 8) { uint64_t w = *fromi ^ 0x0a0a0a0a0a0a0a0aUL; if (haszero(w)) break; *toi++ = *fromi++; next_condition -= 8; } } #else #define hasless(x,n) (((x)-0x01010101UL*(n))&~(x)&0x80808080UL) #define haszero(x) (((x)-0x01010101UL)&~(x)&0x80808080UL) { uint32_t *fromi = (uint32_t *)from; uint32_t *toi = (uint32_t *)to; while (next_condition >= 4) { uint32_t w = *fromi ^ 0x0a0a0a0aUL; if (haszero(w)) break; *toi++ = *fromi++; next_condition -= 4; } } #endif from += tmp-next_condition; to += tmp-next_condition; #endif while (next_condition-- > 0) { /* these 3 lines are 50% of SAM cpu */ if (*from != '\n') { *to++ = *from++; } else { if (to > buf && to[-1] == '\r') *--to = 0; // handle \r\n too b->uncomp_p = from; used_l = to-buf; b->uncomp_p++; buf[used_l] = 0; b->uncomp_sz -= (tmp - next_condition); return used_l; } } used_l = to-buf; b->uncomp_p = from; b->uncomp_sz -= tmp; if (used_l >= alloc_l) { alloc_l = alloc_l ? alloc_l * 2 : 1024; // +8 to cope with the 64-bit copy function in the // COPY_CPF_TO_CPTM macro. if (NULL == (buf = realloc(buf, alloc_l+8))) return -1; *str = buf; *len = alloc_l; } } if (r == -1) return -1; if (b->uncomp_sz) return -1; b->eof_block = 1; // expected eof return 0; } static int load_bam_header(bam_file_t *b) { char magic[4], *header; int i; int32_t header_len, nref; if (4 != bam_read(b, magic, 4)) return -1; if (memcmp(magic, "BAM\x01",4) != 0) return -1; if (4 != bam_read(b, &header_len, 4)) return -1; header_len = le_int4(header_len); if (!(header = malloc(header_len+1))) return -1; *header = 0; if (header_len != bam_read(b, header, header_len)) return -1; if (!(b->header = sam_hdr_parse(header, header_len))) return -1; free(header); /* Load the reference data and check it matches the parsed header */ if (4 != bam_read(b, &nref, 4)) return -1; nref = le_int4(nref); if (b->header->nref != nref && b->header->nref) { fprintf(stderr, "Error: @RG lines are at odds with " "binary encoded reference data\n"); return -1; } for (i = 0; i < nref; i++) { uint32_t nlen, len; char name_a[1024], *name; if (4 != bam_read(b, &nlen, 4)) return -1; nlen = le_int4(nlen); name = (nlen < 1023 ? name_a : (nlen < UINT32_MAX ? malloc(nlen + 1) : NULL)); if (!name) return -1; if (nlen != bam_read(b, name, nlen)) return -1; name[nlen] = 0; if (4 != bam_read(b, &len, 4)) return -1; len = le_int4(len); if (i < b->header->nref && b->header->ref[i].name) { if (strcmp(b->header->ref[i].name, name)) { fprintf(stderr, "Error: @SQ lines are at odds with " "binary encoded reference data\n"); return -1; } if (b->header->ref[i].len != len) { fprintf(stderr, "Error: @SQ lines are at odds with " "binary encoded reference data\n"); return -1; } } else { char len_c[100]; sprintf(len_c, "%d", len); if (sam_hdr_add(b->header, "SQ", "SN", name, "LN", len_c, NULL)<0) return -1; } if (name != name_a) free(name); } b->line = 0; // FIXME return 0; } static int load_sam_header(bam_file_t *b) { unsigned char *str = NULL; size_t alloc = 0, len; dstring_t *header = dstring_create(NULL);; int r = 0; while ((b->uncomp_sz > 0 || (r=bam_uncompress_input(b)) > 0) && *b->uncomp_p == '@') { b->line++; if ((len = bam_get_line(b, &str, &alloc)) == -1) return -1; if (-1 == dstring_nappend(header, (char *)str, len)) return -1; if (-1 == dstring_append_char(header, '\n')) return -1; } if (r == -1) return -1; b->line = 0; // FIXME if (!(b->header = sam_hdr_parse((char *)dstring_str(header), dstring_length(header)))) return -1; dstring_destroy(header); free(str); return 0; } /* -------------------------------------------------------------------------- * */ #ifndef O_BINARY # define O_BINARY 0 #endif static void bam_file_init(bam_file_t *b) { b->comp_p = b->comp; b->comp_sz = 0; b->uncomp_p = b->uncomp; b->uncomp_sz = 0; b->next_len = -1; b->bs = NULL; b->bs_size = 0; b->z_finish = 1; b->bgzf = 0; b->no_aux = 0; b->line = 0; b->binary = 0; b->level = Z_DEFAULT_COMPRESSION; b->sam_str = NULL; b->pool = NULL; b->equeue = NULL; b->dqueue = NULL; b->job_pending = NULL; b->eof = 0; b->nd_jobs = 0; b->ne_jobs = 0; } /*! Opens a SAM or BAM file. * * The mode parameter indicates the file * type (if not auto-detecting) and whether it is for reading or * writing. Use "rb" or "wb" for reading or writing BAM and "r" or * "w" or reading or writing SAM. When writing BAM, the mode may end * with a digit from 0 to 9 to indicate the compression to use with 0 * indicating uncompressed data. * * @param fn The filename to open or create. * @param mode The input/output mode, similar to fopen(). * * @return * Returns a bam_file_t pointer on success; * NULL on failure. */ bam_file_t *bam_open(const char *fn, const char *mode) { bam_file_t *b = calloc(1, sizeof *b); if (!b) return NULL; bam_file_init(b); /* Creation */ if (*mode == 'w') { b->mode = O_WRONLY | O_TRUNC | O_CREAT; if (mode[1] == 'b') { b->mode |= O_BINARY; b->binary = 1; } if (mode[2] >= '0' && mode[2] <= '9') b->level = mode[2] - '0'; if (strcmp(fn, "-") == 0) { b->fp = stdout; /* Stdout */ } else { if (NULL == (b->fp = fopen(fn, "wb"))) goto error; } setvbuf(b->fp, b->vbuf, _IOFBF, 4*Z_BUFF_SIZE); return b; } if (*mode != 'r') return NULL; if (strcmp(mode, "rb") == 0) { b->mode = O_RDONLY | O_BINARY; } else { b->mode = O_RDONLY; } if (strcmp(fn, "-") == 0) { b->fp = stdin; } else { if (NULL == (b->fp = fopen(fn, "rb"))) goto error; } setvbuf(b->fp, b->vbuf, _IOFBF, 4*Z_BUFF_SIZE); /* Load first block so we can check */ bam_more_input(b); if (b->comp_sz >= 2 && b->comp_p[0] == 31 && b->comp_p[1] == 139) b->gzip = 1; else b->gzip = 0; if (b->gzip) { /* Set up zlib */ b->s.zalloc = NULL; b->s.zfree = NULL; b->s.opaque = NULL; inflateInit2(&b->s, -15); } if (-1 == bam_uncompress_input(b)) return NULL; /* Auto-correct open file type if we detect a BAM */ if (b->uncomp_sz >= 4 && strncmp("BAM\001", (char *)b->uncomp_p, 4) == 0) { b->mode |= O_BINARY; b->binary = 1; mode = "rb"; } else { b->mode &= ~O_BINARY; mode = "r"; } /* Load header */ if (strcmp(mode, "rb") == 0) { if (-1 == load_bam_header(b)) goto error; b->bam = 1; } else { if (-1 == load_sam_header(b)) goto error; b->bam = 0; } return b; error: if (b) { if (b->header) free(b->header); free(b); } return NULL; } bam_file_t *bam_open_block(const char *blk, size_t blk_size, SAM_hdr *sh) { bam_file_t *b = calloc(1, sizeof *b); if (!b) return NULL; bam_file_init(b); b->fp = NULL; // forces bam_more_input() to fail b->bam = 1; b->gzip = 0; b->comp_sz = 0; b->uncomp_p = (unsigned char *) blk; b->uncomp_sz = blk_size; b->header = sh; sam_hdr_incr_ref(sh); return b; } int bam_close(bam_file_t *b) { int r = 0; if (!b) return 0; if (b->mode & O_WRONLY) { if (b->binary) { if (BGZF_WRITE(b, b->level, b->uncomp, b->uncomp_p - b->uncomp)) { fprintf(stderr, "Write failed in bam_close()\n"); } BGZF_FLUSH(b); /* Output a blank BGZF block too to mark EOF */ if (28 != fwrite(EOF_BLOCK, 1, 28, b->fp)) { fprintf(stderr, "Write failed in bam_close()\n"); } } else { BGZF_FLUSH(b); if (b->uncomp_p - b->uncomp != fwrite(b->uncomp, 1, b->uncomp_p - b->uncomp, b->fp)) { fprintf(stderr, "Write failed in bam_close()\n"); } } } if (b->bs) free(b->bs); if (b->header) sam_hdr_free(b->header); if (b->gzip) inflateEnd(&b->s); if (b->sam_str) free(b->sam_str); if (b->fp) r = fclose(b->fp); if (b->pool) { /* Should be no BAM jobs left in the pool, but if we abort on * and error and close early then we need to drain the pool of * jobs before destroying the results queue they are about to * append to. * * Consider adding a t_pool_terminate function or similar to * abort in-flight jobs connected to this specific results queue. */ //fprintf(stderr, "BAM: Draining pool\n"); t_pool_flush(b->pool); } //fprintf(stderr, "BAM: destroying equeue %p, dqueue %p\n", // b->equeue, b->dqueue); if (b->equeue) t_results_queue_destroy(b->equeue); if (b->dqueue) t_results_queue_destroy(b->dqueue); free(b); return r; } /* * Loads more data into the input (compressed) buffer. * * Returns 0 on success * -1 on failure. */ static int bam_more_input(bam_file_t *b) { size_t l; if (!b->fp) return -1; if (b->comp != b->comp_p) { memmove(b->comp, b->comp_p, b->comp_sz); b->comp_p = b->comp; } l = fread(&b->comp[b->comp_sz], 1, Z_BUFF_SIZE - b->comp_sz, b->fp); if (l <= 0) return -1; b->comp_sz += l; return 0; } typedef struct { unsigned char comp[Z_BUFF_SIZE]; unsigned char uncomp[Z_BUFF_SIZE]; size_t comp_sz, uncomp_sz; } bgzf_decode_job; static bgzf_decode_job *last_job = NULL; /* * Uncompresses a single zlib buffer. */ void *bgzf_decode_thread(void *arg) { bgzf_decode_job *j = (bgzf_decode_job *)arg; int err; z_stream s; s.avail_in = j->comp_sz; s.next_in = j->comp; s.avail_out = Z_BUFF_SIZE; s.next_out = j->uncomp; s.total_out = 0; s.zalloc = NULL; s.zfree = NULL; s.opaque = NULL; inflateInit2(&s, -15); err = inflate(&s, Z_FINISH); inflateEnd(&s); if (err != Z_STREAM_END) { fprintf(stderr, "Inflate returned error code %d\n", err); return NULL; } j->uncomp_sz = s.total_out; return j; } /* * Converts compressed input to the uncompressed output buffer * * Returns number of additional output bytes on success * 0 on eof * -1 on failure. */ static int bam_uncompress_input(bam_file_t *b) { int err = Z_OK; unsigned char *bgzf; int xlen, bsize; bgzf_decode_job *j; assert(b->uncomp_sz == 0); if (!b->gzip) { /* Already uncompressed, so easy to deal with */ if (!b->comp_sz) if (-1 == bam_more_input(b)) return 0; b->uncomp_p = b->comp_p; b->uncomp_sz = b->comp_sz; b->comp_sz = 0; return b->uncomp_sz; } if (b->pool) { t_pool_result *res; /* Multi-threaded decoding. Assume BGZF for now */ //while (b->nd_jobs < b->pool->qsize) { while (t_pool_results_queue_sz(b->dqueue) < b->pool->qsize) { bgzf_decode_job *j; int nonblock; if (b->job_pending) { j = b->job_pending; } else { if (!(j = malloc(sizeof(*j)))) return -1; empty_block_1: if (b->comp_sz < 28 && !b->eof) { if (-1 == bam_more_input(b)) { b->eof = 1; if (b->comp_sz < 28) { b->eof = 2; free(j); break; } } } else if (b->comp_sz == 0 && b->eof) { b->eof = 2; free(j); break; } if (!b->eof) { if (memcmp(b->comp_p, EOF_BLOCK, 28) == 0) { b->eof_block = 1; b->comp_p += 28; b->comp_sz -= 28; goto empty_block_1; } else { b->eof_block = 0; } } bgzf = b->comp_p; b->comp_p += 10; b->comp_sz -= 10; if (bgzf[0] != 31 || bgzf[1] != 139) { fprintf(stderr, "Zlib magic number failure\n"); free(j); return -1; /* magic number failure */ } if ((bgzf[3] & 4) == 4) { /* has extra fields, eg BGZF */ xlen = bgzf[10] + bgzf[11]*256; b->comp_p += 2; b->comp_sz -= 2; } else { fprintf(stderr, "Not BGZF\n"); free(j); return -1; } if (xlen != 6) { fprintf(stderr, "XLEN != 6\n"); free(j); return -1; } b->comp_p += 6; b->comp_sz -= 6; if (bgzf[12] != 'B' || bgzf[13] != 'C' || bgzf[14] != 2 || bgzf[15] != 0) { fprintf(stderr, "BGZF XLEN block incorrect\n"); free(j); return -1; } bsize = bgzf[16] + bgzf[17]*256; bsize -= 6+19; if (b->comp_sz < bsize + 8) { do { if (bam_more_input(b) == -1) { fprintf(stderr, "EOF - truncated block\n"); free(j); return -1; /* Truncated */ } } while (b->comp_sz < bsize + 8); } memcpy(j->comp, b->comp_p, bsize); j->comp_sz = bsize+1; b->comp_p += bsize + 8; // crc & isize b->comp_sz -= bsize + 8; // crc & isize } //nonblock = b->nd_jobs ? 1 : 0; nonblock = t_pool_results_queue_len(b->dqueue) ? 1 : 0; if (-1 == t_pool_dispatch2(b->pool, b->dqueue, bgzf_decode_thread, j, nonblock)) { /* Would block */ b->job_pending = j; break; } else { b->job_pending = NULL; b->nd_jobs++; } } if (b->eof == 2 && t_pool_results_queue_empty(b->dqueue)) return 0; res = t_pool_next_result_wait(b->dqueue); if (!res || !res->data) { fprintf(stderr, "t_pool_next_result failure\n"); return -1; } b->nd_jobs--; /* make a start on the next job as we know there is room now */ if (b->job_pending) { if (0 == t_pool_dispatch2(b->pool, b->dqueue, bgzf_decode_thread, b->job_pending, 1)) { b->job_pending = NULL; b->nd_jobs++; } } j = (bgzf_decode_job *)res->data; #if 0 memcpy(b->uncomp, j->uncomp, j->uncomp_sz); b->uncomp_p = b->uncomp; #else if (last_job) free(last_job); last_job = j; b->uncomp_p = j->uncomp; #endif b->uncomp_sz = j->uncomp_sz; t_pool_delete_result(res, 0); } else { /* Single threaded version, or non-bgzf format data */ /* Uncompress another BGZF block */ /* BGZF header */ empty_block_2: if (b->comp_sz < 28) { if (-1 == bam_more_input(b)) return 0; if (b->comp_sz < 28) return -1; } if (memcmp(b->comp_p, EOF_BLOCK, 28) == 0) { b->eof_block = 1; b->comp_p += 28; b->comp_sz -= 28; goto empty_block_2; } else { b->eof_block = 0; } if (b->z_finish) { /* * BGZF header is gzip + extra fields. */ bgzf = b->comp_p; b->comp_p += 10; b->comp_sz -= 10; if (bgzf[0] != 31 || bgzf[1] != 139) return -1; /* magic number failure */ if ((bgzf[3] & 4) == 4) { /* has extra fields, eg BGZF */ xlen = bgzf[10] + bgzf[11]*256; b->comp_p += 2; b->comp_sz -= 2; } else { xlen = 0; } } else { /* Continuing with an existing data stream */ xlen = 0; } /* BGZF */ if (xlen == 6) { b->bgzf = 1; b->comp_p += 6; b->comp_sz -= 6; if (bgzf[12] != 'B' || bgzf[13] != 'C' || bgzf[14] != 2 || bgzf[15] != 0) return -1; bsize = bgzf[16] + bgzf[17]*256; bsize -= 6+19; /* Inflate */ if (b->comp_sz < bsize + 8) { do { if (bam_more_input(b) == -1) { fprintf(stderr, "EOF - truncated block\n"); return -1; /* Truncated */ } } while (b->comp_sz < bsize + 8); } b->s.avail_in = bsize; b->s.next_in = b->comp_p; b->s.avail_out = Z_BUFF_SIZE; b->s.next_out = b->uncomp; b->s.total_out = 0; inflateReset(&b->s); err = inflate(&b->s, Z_FINISH); if (err != Z_STREAM_END) { fprintf(stderr, "Inflate returned error code %d\n", err); return -1; } b->z_finish = 1; b->comp_p += bsize + 8; /* crc & isize */ b->comp_sz -= bsize + 8; b->uncomp_sz = b->s.total_out; b->uncomp_p = b->uncomp; } else { /* Some other gzip variant, but possibly still having xlen */ while (xlen) { int d = MIN(b->comp_sz, xlen); xlen -= d; b->comp_p += d; b->comp_sz -= d; if (b->comp_sz == 0) bam_more_input(b); if (b->comp_sz == 0) return -1; /* truncated file */ } b->s.avail_in = b->comp_sz; b->s.next_in = b->comp_p; b->s.avail_out = Z_BUFF_SIZE; b->s.next_out = b->uncomp; b->s.total_out = 0; if (b->z_finish) inflateReset(&b->s); err = inflate(&b->s, Z_BLOCK); //printf("err=%d\n", err); if (err == Z_OK || err == Z_STREAM_END || err == Z_BUF_ERROR) { b->comp_p += b->comp_sz - b->s.avail_in; b->comp_sz = b->s.avail_in; b->uncomp_sz = b->s.total_out; b->uncomp_p = b->uncomp; if (err == Z_STREAM_END) { b->z_finish = 1; /* Consume (ignore) CRC & ISIZE */ if (b->comp_sz < 8) bam_more_input(b); if (b->comp_sz < 8) return -1; /* truncated file */ b->comp_sz -= 8; b->comp_p += 8; } else { b->z_finish = 0; } } else { fprintf(stderr, "Inflate returned error code %d\n", err); return -1; } } } /* * Zero length blocks may not actually be EOF, just bizarre. We return * 0 elsewhere for the EOF case, so if we got here and b->uncomp_sz is 0 * then go around again. */ return b->uncomp_sz ? b->uncomp_sz : bam_uncompress_input(b); } #ifdef ALLOW_UAC #if SIZEOF_LONG == 8 && ULONG_MAX != 0xffffffff #define COPY_CPF_TO_CPTM(n) \ do { \ uint64_t *cpfi = (uint64_t *)cpf; \ uint64_t *cpti = (uint64_t *)cpt; \ uint64_t *orig = cpfi; \ while (!hasless(*cpfi,10)) { \ *cpti++ = *cpfi++ - (n)*0x0101010101010101UL; \ } \ cpf += (cpfi-orig)*8; cpt += (cpfi-orig)*8; \ while (*cpf > '\t') \ *cpt++ = *cpf++ - (n); \ } while (0) #define CPF_SKIP() \ do { \ uint64_t *cpfi = (uint64_t *)cpf; \ uint64_t *orig = cpfi; \ while(!hasless(*cpfi,10)) \ cpfi++; \ cpf += (cpfi-orig)*8; \ while (*cpf > '\t') \ cpf++; \ } while (0) #else #define COPY_CPF_TO_CPTM(n) \ do { \ uint32_t *cpfi = (uint32_t *)cpf; \ uint32_t *cpti = (uint32_t *)cpt; \ uint32_t *orig = cpfi; \ while (!hasless(*cpfi,10)) { \ *cpti++ = *cpfi++ - (n)*0x01010101; \ } \ cpf += (cpfi-orig)*4; cpt += (cpfi-orig)*4; \ while (*cpf > '\t') \ *cpt++ = *cpf++ - (n); \ } while (0) #define CPF_SKIP() \ do { \ uint32_t *cpfi = (uint32_t *)cpf; \ uint32_t *orig = cpfi; \ while(!hasless(*cpfi,10)) \ cpfi++; \ cpf += (cpfi-orig)*4; \ while (*cpf > '\t') \ cpf++; \ } while (0) #endif #else /* !ALLOW_UAC */ #define COPY_CPF_TO_CPTM(n) \ do { \ while (*cpf > '\t') \ *cpt++ = *cpf++ - (n); \ } while (0); #define CPF_SKIP() \ do { \ while (*cpf > '\t') \ cpf++; \ } while (0) #endif /* Custom strtol for aux tags, always base 10 */ static int64_t inline STRTOL64(const char *v, const char **rv, int b) { int64_t n = 0; int neg = 1; switch(*v) { case '-': neg=-1; break; case '+': break; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': n = *v - '0'; break; default: *rv = v; return 0; } v++; while (isdigit(*v)) n = n*10 + *v++ - '0'; *rv = v; return neg*n; } /* * Decodes the next line of SAM into a bam_seq_t struct. * * Returns 1 on success * 0 on eof * -1 on error */ static int sam_next_seq(bam_file_t *b, bam_seq_t **bsp) { int used_l, n, sign; unsigned char *cpf, *cpt, *cp; int cigar_len; bam_seq_t *bs; HashItem *hi; int start, end; SAM_hdr *sh = b->header; static const char lookup[256] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 00 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 10 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 20 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 30 */ 0, 1,14, 2,13, 0, 0, 4,11, 0, 0,12, 0, 3,15, 0, /* 40 */ 0, 0, 5, 6, 8, 0, 7, 9, 0,10, 0, 0, 0, 0, 0, 0, /* 50 */ 0, 1,14, 2,13, 0, 0, 4,11, 0, 0,12, 0, 3,15, 0, /* 60 */ 0, 0, 5, 6, 8, 0, 7, 9, 0,10, 0, 0, 0, 0, 0, 0, /* 70 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 80 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 90 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* a0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* b0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* c0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* d0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* e0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};/* f0 */ /* Fetch a single line */ if ((used_l = bam_get_line(b, &b->sam_str, &b->alloc_l)) <= 0) { return used_l; } used_l *= 4; // FIXME, what is the correct max size? /* Over sized memory, for worst case? FIXME: cigar can break this! */ if (!*bsp || used_l + sizeof(*bs) > (*bsp)->alloc) { if (!(*bsp = realloc(*bsp, used_l + sizeof(*bs)))) return -1; (*bsp)->alloc = used_l + sizeof(*bs); (*bsp)->blk_size = 0; /* compute later */ } bs = *bsp; bs->flag_packed = 0; bs->bin_packed = 0; /* Decode line */ cpf = b->sam_str; cpt = (unsigned char *)&bs->data; /* Name */ cp = cpf; //while (*cpf && *cpf != '\t') COPY_CPF_TO_CPTM(0); // while (*cpf > '\t') // *cpt++ = *cpf++; *cpt++ = 0; if (!*cpf++) return -1; if (cpf-cp > 255) { fprintf(stderr, "SAM name length >= 256 characters are invalid\n"); return -1; } bam_set_name_len(bs, cpf-cp); /* flag */ n = 0; //while (*cpf && *cpf != '\t') while (*cpf > '\t') n = n*10 + *cpf++-'0'; if (!*cpf++) return -1; bam_set_flag(bs, n); /* ref */ cp = cpf; //while (*cpf && *cpf != '\t') // CPF_SKIP(); while (*cpf > '\t') cpf++; if (*cp == '*') { /* Unmapped */ bs->ref = -1; } else { hi = HashTableSearch(b->header->ref_hash, (char *)cp, cpf-cp); if (!hi) { SAM_hdr *sh = b->header; HashData hd; fprintf(stderr, "Reference seq %.*s unknown\n", (int)(cpf-cp), cp); /* Fabricate it instead */ sh->ref = realloc(sh->ref, (sh->nref+1)*sizeof(*sh->ref)); if (!sh->ref) return -1; sh->ref[sh->nref].len = 0; /* Unknown value */ sh->ref[sh->nref].name = malloc(cpf-cp+1); if (!sh->ref[sh->nref].name) return -1; memcpy(sh->ref[sh->nref].name, cp, cpf-cp); sh->ref[sh->nref].name[cpf-cp] = 0; hd.i = sh->nref; hi = HashTableAdd(sh->ref_hash, sh->ref[sh->nref].name, 0, hd, NULL); sh->nref++; } bs->ref = hi->data.i; } if (!*cpf++) return -1; /* Pos */ n = 0; //while (*cpf && *cpf != '\t') while (*cpf > '\t') n = n*10 + *cpf++-'0'; if (!*cpf++) return -1; bs->pos = n-1; start = end = bs->pos; /* map qual */ n = 0; //while (*cpf && *cpf != '\t') while (*cpf > '\t') n = n*10 + *cpf++-'0'; if (!*cpf++) return -1; bam_set_map_qual(bs, n); /* cigar */ n = 0; cigar_len = 0; cpt = (unsigned char *)bam_cigar(bs); if (*cpf == '*') { cpf++; } else { //while (*cpf && *cpf != '\t') { while (*cpf > '\t') { if (isdigit(*cpf)) { n = n*10 + *cpf++ - '0'; } else { unsigned char op; union { unsigned char c[4]; uint32_t i; } c4i; switch (*cpf++) { case 'M': op=BAM_CMATCH; end+=n; break; case 'I': op=BAM_CINS; break; case 'D': op=BAM_CDEL; end+=n; break; case 'N': op=BAM_CREF_SKIP; end+=n; break; case 'S': op=BAM_CSOFT_CLIP; break; case 'H': op=BAM_CHARD_CLIP; break; case 'P': op=BAM_CPAD; break; case '=': op=BAM_CBASE_MATCH; end+=n; break; case 'X': op=BAM_CBASE_MISMATCH; end+=n; break; default: fprintf(stderr, "Unknown cigar opcode '%c'\n", cpf[-1]); return -1; } c4i.i = (n << 4) | op; *cpt++ = c4i.c[0]; *cpt++ = c4i.c[1]; *cpt++ = c4i.c[2]; *cpt++ = c4i.c[3]; n = 0; cigar_len++; } } } bam_set_cigar_len(bs, cigar_len); //printf("pos %d, %d..%d => bin %d\n", bs->pos, start, end, reg2bin(start, end)); bam_set_bin(bs, reg2bin(start,end)); if (!*cpf++) return -1; /* mate ref name */ cp = cpf; //while (*cpf && *cpf != '\t') // CPF_SKIP(); while (*cpf > '\t') cpf++; if (*cp == '*' && cp[1] == '\t') { bs->mate_ref = -1; } else if (*cp == '=' && cp[1] == '\t') { bs->mate_ref = bs->ref; } else { hi = HashTableSearch(sh->ref_hash, (char *)cp, cpf-cp); if (!hi) { HashData hd; fprintf(stderr, "Mate ref seq \"%.*s\" unknown\n", (int)(cpf-cp), cp); /* Fabricate it instead */ sh->ref = realloc(sh->ref, (sh->nref+1)*sizeof(*sh->ref)); if (!sh->ref) return -1; sh->ref[sh->nref].len = 0; /* Unknown value */ sh->ref[sh->nref].name = malloc(cpf-cp+1); if (!sh->ref[sh->nref].name) return -1; memcpy(sh->ref[sh->nref].name, cp, cpf-cp); sh->ref[sh->nref].name[cpf-cp] = 0; hd.i = sh->nref; hi = HashTableAdd(sh->ref_hash, sh->ref[sh->nref].name, 0, hd, NULL); sh->nref++; } bs->mate_ref = hi->data.i; } if (!*cpf++) return -1; /* mate pos */ n = 0; //while (*cpf && *cpf != '\t') while (*cpf > '\t') n = n*10 + *cpf++-'0'; if (!*cpf++) return -1; bs->mate_pos = n-1; /* insert size */ n = 0; if (*cpf == '-') { sign = -1; cpf++; } else { sign = 1; } //while (*cpf && *cpf != '\t') while (*cpf > '\t') n = n*10 + *cpf++-'0'; if (!*cpf++) return -1; bs->ins_size = n*sign; /* seq */ cp = cpf; //while (*cpf && *cpf != '\t') { if (cpf[0] == '*' && cpf[1] == '\t') { cpf++; bs->len = 0; } else { while (cpf[0] > '\t' && cpf[1] > '\t') { /* 9% of cpu time is here */ *cpt++ = (lookup[cpf[0]]<<4) | lookup[cpf[1]]; cpf+=2; } if (*cpf > '\t') *cpt++ = lookup[*cpf++]<<4; // while (*cpf > '\t') { // *cpt = lookup[*cpf]<<4; // if (*++cpf <= '\t') { // cpt++; // break; // } // *cpt++ |= lookup[*cpf]; // cpf++; // } bs->len = cpf-cp; } if (!*cpf++) return -1; /* qual */ cp = cpf; //while (*cpf && *cpf != '\t') if (cpf[0] == '*' && (cpf[1] == '\0' || cpf[1] == '\t')) { /* no qual */ memset(cpt, '\xFF', bs->len); cpt += bs->len; cpf++; } else { COPY_CPF_TO_CPTM('!'); // while (*cpf > '\t') // *cpt++ = *cpf++ - '!'; } if ((char *)cpt != (char *)(bam_aux(bs))) return -1; if (!*cpf++ || b->no_aux) goto skip_aux; /* aux */ while (*cpf) { unsigned char *key = cpf, *value; if (!(key[0] && key[1] && key[2] == ':' && key[3] && key[4] == ':')) return -1; cpf += 5; value = cpf; //CPF_SKIP(); while (*cpf > '\t') cpf++; *cpt++ = key[0]; *cpt++ = key[1]; switch(key[3]) { int64_t n; case 'A': *cpt++ = 'A'; *cpt++ = *value; break; case 'i': //n = atoi((char *)value); n = STRTOL64((char *)value, (const char **)&value, 10); if (n >= 0) { if (n < 256) { *cpt++ = 'C'; *cpt++ = n; } else if (n < 65536) { *cpt++ = 'S'; STORE_UINT16(cpt, n); } else { *cpt++ = 'I'; STORE_UINT32(cpt, n); } } else { if (n >= -128 && n < 128) { *cpt++ = 'c'; *cpt++ = n; } else if (n >= -32768 && n < 32768) { *cpt++ = 's'; STORE_UINT16(cpt, n); } else { *cpt++ = 'i'; STORE_UINT32(cpt, n); } } break; case 'f': { union { float f; int i; } u; u.f = atof((char *)value); *cpt++ = 'f'; STORE_UINT32(cpt, u.i); break; } case 'Z': *cpt++ = 'Z'; while (value != cpf) *cpt++=*value++; *cpt++ = 0; break; case 'H': *cpt++ = 'H'; while (value != cpf) *cpt++=*value++; *cpt++ = 0; break; case 'B': { char subtype = *value++; unsigned char *sz; int count = 0; if (subtype == '\0') break; *cpt++ = 'B'; *cpt++ = subtype; sz = cpt; cpt += 4; /* Fill out later */ while (*value == ',') { value++; switch (subtype) { case 'c': case 'C': *cpt++ = strtol((char *)value, (char **)&value, 10); break; case 's': case 'S': n = strtol((char *)value, (char **)&value, 10); STORE_UINT16(cpt, n); break; case 'i': case 'I': n = strtoll((char *)value, (char **)&value, 10); STORE_UINT32(cpt, n); break; case 'f': { union { float f; int i; } u; u.f = strtod((char *)value, (char **)&value); STORE_UINT32(cpt, u.i); break; } } count++; } if (value != cpf) { fprintf(stderr, "Malformed %c%c:B:... auxiliary field\n", key[0], key[1]); value = cpf; } STORE_UINT32(sz, count); break; } default: fprintf(stderr, "Unknown aux format code '%c'\n", key[3]); break; } if (*cpf == '\t') cpf++; } skip_aux: *cpt++ = 0; bs->blk_size = (unsigned char *)cpt - (unsigned char *)&bs->ref - 1; if (bs->blk_size >= bs->alloc) abort(); return 1; } /* * Fills out the next bam_seq_t struct. * bs must be non-null, but *bs may be NULL or an existing bam_seq_t pointer. * This function will alloc and/or grow the memory accordingly, allowing for * efficient reuse. * * Returns 1 on success * 0 on eof * -1 on error */ #ifdef ALLOW_UAC int bam_get_seq(bam_file_t *b, bam_seq_t **bsp) { int32_t blk_size, blk_ret; bam_seq_t *bs; uint32_t i32; b->line++; if (!b->bam) return sam_next_seq(b, bsp); if (b->next_len > 0) { blk_size = b->next_len; } else { if (4 != bam_read(b, &blk_size, 4)) return 0; blk_size = le_int4(blk_size); if (blk_size < 36) /* Minimum valid BAM record size */ return -1; } if (!*bsp || blk_size+20 > (*bsp)->alloc) { /* 20 extra is for bs->alloc to bs->cigar_len plus next_len */ if (!(bs = realloc(*bsp, blk_size+20))) return -1; *bsp = bs; (*bsp)->alloc = blk_size+20; (*bsp)->blk_size = blk_size; } bs = *bsp; if ((blk_ret = bam_read(b, &bs->ref, blk_size+4)) == 0) return 0; if (blk_size+4 != blk_ret) { if (blk_size != blk_ret) { return -1; } else { b->next_len = 0; ((char *)(&bs->ref))[blk_size] = 0; } } else { memcpy(&b->next_len, &((char *)(&bs->ref))[blk_size], 4); ((char *)(&bs->ref))[blk_size] = 0; } b->next_len = le_int4(b->next_len); bs->blk_size = blk_size; bs->ref = le_int4(bs->ref); bs->pos = le_int4(bs->pos); // order of bit-fields in struct is platform specific, so manually decode i32 = le_int4(bs->bin_packed); bs->bin = i32 >> 16; bs->map_qual = (i32 >> 8) & 0xff; bs->name_len = i32 & 0xff; i32 = le_int4(bs->flag_packed); bs->flag = i32 >> 16; bs->cigar_len = i32 & 0xffff; bs->len = le_int4(bs->len); bs->mate_ref = le_int4(bs->mate_ref); bs->mate_pos = le_int4(bs->mate_pos); bs->ins_size = le_int4(bs->ins_size); if (10 == be_int4(10)) { int i, cigar_len = bam_cigar_len(bs); uint32_t *cigar = bam_cigar(bs); for (i = 0; i < cigar_len; i++) { cigar[i] = le_int4(cigar[i]); } } return 1; } #else int bam_get_seq(bam_file_t *b, bam_seq_t **bsp) { int32_t blk_size, blk_ret; bam_seq_t *bs; uint32_t i32; b->line++; if (!b->bam) return sam_next_seq(b, bsp); if (b->next_len > 0) { blk_size = b->next_len; } else { if (4 != bam_read(b, &blk_size, 4)) return 0; blk_size = le_int4(blk_size); if (blk_size < 36) /* Minimum valid BAM record size */ return -1; } if (!*bsp || blk_size+24 > (*bsp)->alloc) { if (!(bs = realloc(*bsp, blk_size+24))) return -1; *bsp = bs; (*bsp)->alloc = blk_size+24; (*bsp)->blk_size = blk_size; } bs = *bsp; /* The fixed-sized fields */ if ((blk_ret = bam_read(b, &bs->ref, 32)) == 0) return 0; if (blk_ret != 32) return -1; bs->blk_size = blk_size; bs->ref = le_int4(bs->ref); bs->pos = le_int4(bs->pos); // order of bit-fields in struct is platform specific, so manually decode i32 = le_int4(bs->bin_packed); bs->bin = i32 >> 16; bs->map_qual = (i32 >> 8) & 0xff; bs->name_len = i32 & 0xff; i32 = le_int4(bs->flag_packed); bs->flag = i32 >> 16; bs->cigar_len = i32 & 0xffff; bs->len = le_int4(bs->len); bs->mate_ref = le_int4(bs->mate_ref); bs->mate_pos = le_int4(bs->mate_pos); bs->ins_size = le_int4(bs->ins_size); /* Name */ if (bam_read(b, &bs->data, bam_name_len(bs)) != bam_name_len(bs)) return -1; /* Pad name out to end on a word-aligned boundary */ blk_ret = blk_size - 32 - bam_name_len(bs); //bam_set_name_len(bs, round4(bam_name_len(bs))); bs->blk_size += round4(bam_name_len(bs)) - bam_name_len(bs); /* The remainder, word aligned */ blk_size = blk_ret; if ((blk_ret = bam_read(b, (char *)bam_cigar(bs), blk_size+4)) == 0 && blk_size != 0) return 0; if (blk_size+4 != blk_ret) { if (blk_size != blk_ret) { return -1; } else { b->next_len = 0; ((char *)bam_cigar(bs))[blk_size] = 0; } } else { memcpy(&b->next_len, &((char *)bam_cigar(bs))[blk_size], 4); ((char *)bam_cigar(bs))[blk_size] = 0; } b->next_len = le_int4(b->next_len); if (10 == be_int4(10)) { int i, cigar_len = bam_cigar_len(bs); uint32_t *cigar = bam_cigar(bs); for (i = 0; i < cigar_len; i++) { cigar[i] = le_int4(cigar[i]); } } return 1; } #endif /* Old name */ int bam_next_seq(bam_file_t *b, bam_seq_t **bsp) { return bam_get_seq(b, bsp); } static int8_t aux_type_size[256] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 8, 0, 4, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; /* * Looks for aux field 'key' and returns the type + value. * The type is the first char and the value is the 2nd character onwards. * * Returns NULL if not found. */ char *bam_aux_find(bam_seq_t *b, const char *key) { char *cp = bam_aux(b); while (*cp) { int sz; //printf("%c%c:%c:?\n", cp[0], cp[1], cp[2]); if (cp[0] == key[0] && cp[1] == key[1]) return cp+2; if ((sz = aux_type_size[(uint8_t) cp[2]])) { /* Fixed length fields */ cp += sz + 3; } else { switch (cp[2]) { case 'Z': case 'H': { /* Variable length, null terminated */ cp += 3; while (*cp++) ; break; } case 'B': { /* Array types */ uint32_t count; if ((sz = aux_type_size[(uint8_t) cp[3]])) { count = ((uint32_t) cp[4] + ((uint32_t) cp[5] << 8) + ((uint32_t) cp[6] << 16) + ((uint32_t) cp[7] << 24)); cp += 8 + count * sz; } else { return NULL; } } default: return NULL; } } } return NULL; } int32_t bam_aux_i(const uint8_t *dat) { switch(dat[0]) { case 'i': return (int32_t)(dat[1] + (dat[2]<<8) + (dat[3]<<16) + (dat[4]<<24)); case 'I': return (uint32_t)(dat[1] + (dat[2]<<8) + (dat[3]<<16) + (dat[4]<<24)); break; case 's': return (int16_t)(dat[1] + (dat[2]<<8)); case 'S': return (uint16_t)(dat[1] + (dat[2]<<8)); case 'c': return (int8_t)dat[1]; case 'C': return (uint8_t)dat[1]; } abort(); } float bam_aux_f(const uint8_t *dat) { assert(dat[0] == 'f'); return (float)((int32_t)((dat[1]<<0)+ (dat[2]<<8)+ (dat[3]<<16)+ (dat[4]<<24))); } double bam_aux_d(const uint8_t *dat) { assert(dat[0] == 'd'); return (double)((int64_t)((((uint64_t)dat[1])<<0)+ (((uint64_t)dat[2])<<8)+ (((uint64_t)dat[3])<<16)+ (((uint64_t)dat[4])<<24)+ (((uint64_t)dat[5])<<32)+ (((uint64_t)dat[6])<<40)+ (((uint64_t)dat[7])<<48)+ (((uint64_t)dat[8])<<54))); } char bam_aux_A(const uint8_t *dat) { assert(dat[0] == 'A'); return dat[1]; } char *bam_aux_Z(const uint8_t *dat) { assert(dat[0] == 'Z' || dat[0] == 'H'); return (char *)(dat+1); } /* * An iterator on bam aux fields. NB: This code is not reentrant or multi- * thread capable. The values returned are valid until the next call to * this function. * key: points to an array of 3 characters (eg "RGi", "NMC") * type: points to an address of 1 character (eg 'Z', 'i') for the SAM type * val: points to an address of a bam_aux_t union. * * The first two bytes of key are the real key and the next byte is the * BAM type field. Note that this may differ to the returned SAM type * field. For example key[2] == 'S' for unsigned short while *type is * set to 'i'. * * Pass in *iter_handle as NULL to initialise the search and then * pass in the modified value on each subsequent call to continue the search. * * Returns 0 if the next value is valid, setting key, type and val. * -1 when no more found. */ int bam_aux_iter_full(bam_seq_t *b, char **iter_handle, char *key, char *type, bam_aux_t *val) { char *s; if (!iter_handle || !*iter_handle) { s = (char *)bam_aux(b); } else { s = *iter_handle; } /* We null terminate our aux list for ease */ if (s[0] == 0) return -1; key[0] = s[0]; key[1] = s[1]; key[2] = s[2]; switch (s[2]) { case 'A': if (type) *type = 'A'; if (val) val->i = *(s+3); s+=4; break; case 'C': if (type) *type = 'i'; if (val) val->i = *(uint8_t *)(s+3); s+=4; break; case 'c': if (type) *type = 'i'; if (val) val->i = *(int8_t *)(s+3); s+=4; break; case 'S': if (type) *type = 'i'; if (val) val->i = (uint16_t)((((unsigned char *)s)[3]<< 0) + (((unsigned char *)s)[4]<< 8)); s+=5; break; case 's': if (type) *type = 'i'; if (val) val->i = (int16_t)((((unsigned char *)s)[3]<< 0) + (((unsigned char *)s)[4]<< 8)); s+=5; break; case 'I': if (type) *type = 'i'; if (val) val->i = (uint32_t)((((unsigned char *)s)[3]<< 0) + (((unsigned char *)s)[4]<< 8) + (((unsigned char *)s)[5]<<16) + (((unsigned char *)s)[6]<<24)); s+=7; break; case 'i': if (type) *type = 'i'; if (val) val->i = (int32_t)((((unsigned char *)s)[3]<< 0) + (((unsigned char *)s)[4]<< 8) + (((unsigned char *)s)[5]<<16) + (((unsigned char *)s)[6]<<24)); s+=7; break; case 'f': if (type) *type = 'f'; if (val) /* Assume same endianness as integer */ val->i = (int32_t)((((unsigned char *)s)[3]<< 0) + (((unsigned char *)s)[4]<< 8) + (((unsigned char *)s)[5]<<16) + (((unsigned char *)s)[6]<<24)); s+=7; break; case 'd': if (type) *type = 'd'; if (val) /* Assume same endianness as integer */ val->i64 = (uint64_t)(((uint64_t)(((unsigned char *)s)[ 3])<< 0) + ((uint64_t)(((unsigned char *)s)[ 4])<< 8) + ((uint64_t)(((unsigned char *)s)[ 5])<<16) + ((uint64_t)(((unsigned char *)s)[ 6])<<24) + ((uint64_t)(((unsigned char *)s)[ 7])<<32) + ((uint64_t)(((unsigned char *)s)[ 8])<<40) + ((uint64_t)(((unsigned char *)s)[ 9])<<48) + ((uint64_t)(((unsigned char *)s)[10])<<54)); s+=11; break; case 'Z': case 'H': if (type) *type = s[2]; s+=3; if (val) val->s = s; while (*s++); break; case 'B': { uint32_t count; if (type) *type = 'B'; count = (unsigned int)((((unsigned char *)s)[4]<< 0) + (((unsigned char *)s)[5]<< 8) + (((unsigned char *)s)[6]<<16) + (((unsigned char *)s)[7]<<24)); if (val) { val->B.n = count; val->B.t = s[3]; val->B.s = (unsigned char *)s+8; } s+=8; switch(val->B.t) { case 'c': case 'C': s += count; break; case 's': case 'S': s += 2*count; break; case 'i': case 'I': s += 4*count; break; case 'f': s += 4*count; break; default: fprintf(stderr, "Unknown sub-type '%c' for aux type 'B'\n", val->B.t); return -1; } break; } default: fprintf(stderr, "Unknown aux type '%c'\n", s[2]); return -1; } if (iter_handle) *iter_handle = s; return 0; } /* * As above, but only 2 characters of the key are returned so the * original BAM type is not visible. * * Note this can cause ambiguities if you wish to distinguish between * -1 billion and +3 billion. */ int bam_aux_iter(bam_seq_t *b, char **iter_handle, char *key, char *type, bam_aux_t *val) { char k3[3]; int r = bam_aux_iter_full(b, iter_handle, k3, type, val); key[0] = k3[0]; key[1] = k3[1]; return r; } static int reg2bin(int start, int end) { if (end>start) end--; if ((start>>14) == (end>>14)) return ((1<<15)-1)/7 + (start>>14); if ((start>>17) == (end>>17)) return ((1<<12)-1)/7 + (start>>17); if ((start>>20) == (end>>20)) return ((1<<9 )-1)/7 + (start>>20); if ((start>>23) == (end>>23)) return ((1<<6 )-1)/7 + (start>>23); if ((start>>26) == (end>>26)) return ((1<<3 )-1)/7 + (start>>26); return 0; } /* * Constructs a bam_seq_t from components. * Ignores auxiliary tags for now. * * Returns -1 on error * number of bytes written to bam_seq_t on success (ie tag offset) */ int bam_construct_seq(bam_seq_t **b, size_t extra_len, const char *qname, size_t qname_len, int flag, int rname, // Ref ID int pos, // first aligned base (1-based) int end, // last aligned base (to calculate bin) int mapq, uint32_t ncigar, const uint32_t *cigar, int mrnm, // Mate Ref ID int mpos, int isize, int len, const char *seq, const char *qual) { size_t required; char *cp; int i; uint32_t *ip; /* * cp = "=ACMGRSVTWYHKDBN"; * memset(L, 15, 256); * for (i = 0; i < 16; i++) { * L[cp[i]] = L[tolower(cp[i])] = i; * } */ static const char L[256] = { 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15, 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15, 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15, 15,15,15,15,15,15,15,15,15,15,15,15,15, 0,15,15, 15, 1,14, 2,13,15,15, 4,11,15,15,12,15, 3,15,15, 15,15, 5, 6, 8,15, 7, 9,15,10,15,15,15,15,15,15, 15, 1,14, 2,13,15,15, 4,11,15,15,12,15, 3,15,15, 15,15, 5, 6, 8,15, 7, 9,15,10,15,15,15,15,15,15, 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15, 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15, 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15, 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15, 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15, 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15, 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15, 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15 }; /* Sanity checks */ if (NULL == b) return -1; if (len < 0) return -1; /* not sure why the spec has it as an int */ if (qname_len > 0 && NULL == qname) return -1; if (ncigar > 0 && NULL == cigar) return -1; if (len > 0 && NULL == seq) return -1; /* Reallocate if needed */ required = (sizeof(**b) /* the struct itself */ #ifdef ALLOW_UAC + qname_len + 1 /* query name (unaligned) */ #else + round4(qname_len + 1) /* query name (aligned) */ #endif + 4 * ncigar /* CIGAR string */ + (len + 1) / 2 /* Sequence, 2 bases per byte */ + len /* Quality */ + extra_len + 1); /* Extra for optional tags */ if (NULL == *b || (*b)->alloc < required) { bam_seq_t *new_bam = realloc(*b, required); if (NULL == new_bam) return -1; *b = new_bam; (*b)->alloc = required; } (*b)->ref = rname; (*b)->pos = pos-1; bam_set_map_qual(*b, mapq); bam_set_name_len(*b, qname_len+1); bam_set_flag(*b, flag); bam_set_cigar_len(*b, ncigar); (*b)->len = len; (*b)->mate_ref = mrnm; (*b)->mate_pos = mpos-1; (*b)->ins_size = isize; cp = bam_name(*b); memcpy(cp, qname, qname_len); cp[qname_len] = 0; /* Cigar */ cp = (char *)bam_cigar(*b); ip = (uint32_t *)cp; for (i = 0; i < ncigar; i++) { ip[i] = cigar[i]; } cp += ncigar*4; /* Bin */ if (!((*b)->flag & BAM_CIGAR32)) { if (0 == end) { /* Calculate end from pos and cigar */ end = pos; for (i = 0; i < ncigar; i++) { if (BAM_CONSUME_REF(cigar[i] & BAM_CIGAR_MASK)) end += cigar[i] >> BAM_CIGAR_SHIFT; } } // range is [beg,end) and zero based. bam_set_bin(*b, reg2bin(pos-1,end)); } /* Seq */ for (i = 0; i < len-1; i += 2) { *cp++ = (L[(uc)seq[i]]<<4) + L[(uc)seq[i+1]]; } if (i < len) *cp++ = L[(uc)seq[i]]<<4; /* Qual */ if (qual) { memcpy(cp, qual, len); cp += len; } else { for (i = 0; i < len; i++) { *cp++ = '\xff'; } } *cp = 0; /* terminate aux list, for ease of parsing later */ /* cp now points to the auxiliary tags if required */ (*b)->blk_size = (int)(cp-(char *)&(*b)->ref); return (int)(cp-(char *)(*b)); } int bam_aux_add(bam_seq_t **b, const char tag[2], char type, uint32_t array_len, const void *data) { int tlen; size_t len; size_t used; uint8_t *cp; #ifndef SP_LITTLE_ENDIAN uint32_t i; #endif if (NULL == b || NULL == *b) return -1; /* Find size of data type and how much space is needed */ if (0 == (tlen = aux_type_size[(uint8_t) type])) { if (type == 'H' || type == 'Z') { /* Variable length types */ if (array_len != 0) return -1; /* No arrays for these allowed */ tlen = strlen((const char *) data) + 1; } else { /* unknown type */ return -1; } } len = array_len > 0 ? 8 + tlen * array_len : 3 + tlen; /* Find the end of the existing tags and ensure there is enough space */ cp = (uint8_t *)&(*b)->ref + (*b)->blk_size; used = cp - (uint8_t *)(*b); if ((*b)->alloc < used + len + 1) { /* + 1 for NUL terminator */ size_t required = used + len + 1; bam_seq_t *new_bam = realloc((*b), required); if (NULL == new_bam) return -1; *b = new_bam; (*b)->alloc = required; cp = (uint8_t *)new_bam + used; } /* Append the data */ *cp++ = tag[0]; *cp++ = tag[1]; if (array_len > 0) { /* Array type */ *cp++ = 'B'; *cp++ = type; STORE_UINT32(cp, array_len); } else { *cp++ = type; } if (array_len == 0) array_len = 1; #ifdef SP_LITTLE_ENDIAN memcpy(cp, data, array_len * tlen); cp += array_len * tlen; #else switch (type) { case 'A': case 'c': case 'C': memcpy(cp, data, array_len); cp += array_len; break; case 's': case 'S': { uint16_t *sdata = (uint16_t *) data; for (i = 0; i < array_len; i++) { STORE_UINT16(cp, sdata[i]); } break; } case 'i': case 'I': case 'f': { uint32_t *idata = (uint32_t *) data; for (i = 0; i < array_len; i++) { STORE_UINT32(cp, idata[i]); } break; } case 'd': { uint64_t *ddata = (uint64_t *) data; for (i = 0; i < array_len; i++) { STORE_UINT64(cp, ddata[i]); } break; } case 'H': case 'Z': memcpy(cp, data, tlen); cp += tlen; break; } #endif /* Put a NUL at the end for bam_aux_iter */ *cp = 0; /* Update block_size */ (*b)->blk_size = (uint32_t)(cp - (uint8_t *)&(*b)->ref); return 0; } /* Calculate space needed to store tags */ ssize_t bam_aux_size_vec(uint32_t count, bam_aux_tag_t *tags) { uint32_t i; ssize_t len = 0; int sz; if (NULL == tags) return -1; for (i = 0; i < count; i++) { switch (tags[i].type) { case 'C': case 'S': case 'I': if (tags[i].value.ui < 256) { sz = 1; } else if (tags[i].value.ui < 65536) { sz = 2; } else { sz = 4; } break; case 'c': case 's': case 'i': if (tags[i].value.i >= -128 && tags[i].value.i < 128) { sz = 1; } else if (tags[i].value.i >= -32768 && tags[i].value.i < 32768) { sz = 2; } else { sz = 4; } break; case 'A': sz = 1; break; case 'f': sz = 4; break; case 'd': sz = 8; break; case 'H': case 'Z': if (tags[i].array_len != 0) return -1; sz = strlen(tags[i].value.z) + 1; break; default: return -1; /* bad data type */ } len += tags[i].array_len == 0 ? sz + 3 : sz * tags[i].array_len + 8; } return len + 1; /* + 1 for NUL byte at end */ } int bam_aux_add_vec(bam_seq_t **b, uint32_t count, bam_aux_tag_t *tags) { ssize_t required = bam_aux_size_vec(count, tags); uint32_t i; size_t used; if (required < 0) return -1; if (NULL == b || NULL == *b) return -1; /* Find the end of the existing tags and ensure there is enough space. Do this once for the entire vector so we don't keep reallocing */ used = (uint8_t *)&(*b)->ref + (*b)->blk_size - (uint8_t *)(*b); if ((*b)->alloc < used + required) { bam_seq_t *new_bam = realloc((*b), used + required); if (NULL == new_bam) return -1; *b = new_bam; (*b)->alloc = used + required; } /* Add the tags, storing integers in the most appropriate size */ for (i = 0; i < count; i++) { if (tags[i].array_len > 0) { /* Deal with array tags */ if (bam_aux_add(b, tags[i].tag, tags[i].type, tags[i].array_len, tags[i].value.array)) return -1; continue; } /* Non-array tags, storing integers as the most appropriate size */ switch (tags[i].type) { case 'C': case 'S': case 'I': if (tags[i].value.ui < 256) { uint8_t byte = tags[i].value.ui; if (bam_aux_add(b, tags[i].tag, 'C', 0, &byte)) return -1; } else if (tags[i].value.ui < 65536) { uint16_t word = tags[i].value.ui; if (bam_aux_add(b, tags[i].tag, 'S', 0, &word)) return -1; } else { if (bam_aux_add(b, tags[i].tag, 'I', 0, &tags[i].value.ui)) { return -1; } } break; case 'c': case 's': case 'i': if (tags[i].value.i >= -128 && tags[i].value.i < 128) { int8_t byte = tags[i].value.i; if (bam_aux_add(b, tags[i].tag, 'c', 0, &byte)) return -1; } else if (tags[i].value.i >= -32768 && tags[i].value.i < 32768) { int16_t word = tags[i].value.i; if (bam_aux_add(b, tags[i].tag, 's', 0, &word)) return -1; } else { if (bam_aux_add(b, tags[i].tag, 'i', 0, &tags[i].value.i)) return -1; } break; case 'A': if (bam_aux_add(b, tags[i].tag, 'A', 0, &tags[i].value.a)) return -1; break; case 'f': case 'd': if (bam_aux_add(b, tags[i].tag, tags[i].type, 0, &tags[i].value.f)) return -1; break; case 'H': case 'Z': if (bam_aux_add(b, tags[i].tag, tags[i].type, 0, tags[i].value.z)) return -1; break; default: return -1; /* unknown type */ } } return 0; } /* Add SAM-formatted aux tags to a bam_seq_t struct. This is basically a copy of the code in sam_next_seq. Unfortunately trying to get them to use a common version slows sam_next_seq down rather a lot, even when inlined. Hence this extra copy. */ int bam_aux_add_from_sam(bam_seq_t **bsp, char *sam) { unsigned char *cpf = (unsigned char *) sam; unsigned char *cpt = (unsigned char *)&(*bsp)->ref + (*bsp)->blk_size; unsigned char *end = (unsigned char *)(*bsp) + (*bsp)->alloc; while (*cpf) { unsigned char *key = cpf, *value; size_t max_len; if (!(key[0] && key[1] && key[2] == ':' && key[3] && key[4] == ':')) return -1; cpf += 5; value = cpf; while (*cpf && *cpf != '\t') cpf++; if (aux_type_size[key[3]]) { max_len = aux_type_size[key[3]] + 3; } else if (key[3] != 'B') { max_len = cpf - value + 4; } else { /* Worst case */ max_len = (cpf - value) * 4 + 8; } /* ensure we have enough room */ if (end - cpt < max_len) { size_t used = cpt - (unsigned char *)(*bsp); bam_seq_t *new_bam = realloc(*bsp, used + max_len); if (NULL == new_bam) return -1; *bsp = new_bam; (*bsp)->alloc += used + max_len; cpt = (unsigned char *)(*bsp) + used; end = (unsigned char *)(*bsp) + (*bsp)->alloc; } *cpt++ = key[0]; *cpt++ = key[1]; switch(key[3]) { int64_t n; case 'A': *cpt++ = 'A'; *cpt++ = *value; break; case 'i': //n = atoi((char *)value); n = STRTOL64((char *)value, (const char **)&value, 10); if (n >= 0) { if (n < 256) { *cpt++ = 'C'; *cpt++ = n; } else if (n < 65536) { *cpt++ = 'S'; STORE_UINT16(cpt, n); } else { *cpt++ = 'I'; STORE_UINT32(cpt, n); } } else { if (n >= -128 && n < 128) { *cpt++ = 'c'; *cpt++ = n; } else if (n >= -32768 && n < 32768) { *cpt++ = 's'; STORE_UINT16(cpt, n); } else { *cpt++ = 'i'; STORE_UINT32(cpt, n); } } break; case 'f': { union { float f; int i; } u; u.f = atof((char *)value); *cpt++ = 'f'; STORE_UINT32(cpt, u.i); break; } case 'Z': *cpt++ = 'Z'; while (value != cpf) *cpt++=*value++; *cpt++ = 0; break; case 'H': *cpt++ = 'H'; while (value != cpf) *cpt++=*value++; *cpt++ = 0; break; case 'B': { char subtype = *value++; unsigned char *sz; int count = 0; *cpt++ = 'B'; *cpt++ = subtype; sz = cpt; cpt += 4; /* Fill out later */ while (*value == ',') { value++; switch (subtype) { case 'c': case 'C': *cpt++ = strtol((char *)value, (char **)&value, 10); break; case 's': case 'S': n = strtol((char *)value, (char **)&value, 10); STORE_UINT16(cpt, n); break; case 'i': case 'I': n = strtoll((char *)value, (char **)&value, 10); STORE_UINT32(cpt, n); break; case 'f': { union { float f; int i; } u; u.f = strtod((char *)value, (char **)&value); STORE_UINT32(cpt, u.i); break; } } count++; } if (value != cpf) { fprintf(stderr, "Malformed %c%c:B:... auxiliary field\n", key[0], key[1]); value = cpf; } STORE_UINT32(sz, count); break; } default: fprintf(stderr, "Unknown aux format code '%c'\n", key[3]); break; } if (*cpf == '\t') cpf++; } if (cpt == end) { /* Hopefully very unlikely */ size_t used = cpt - (unsigned char *)(*bsp); bam_seq_t *new_bam = realloc(*bsp, used + 1); if (NULL == new_bam) return -1; *bsp = new_bam; (*bsp)->alloc += used + 1; cpt = (unsigned char *)(*bsp) + used; } *cpt = 0; (*bsp)->blk_size = cpt - (unsigned char *)&(*bsp)->ref; return 0; } /*! Add preformated raw aux data to the bam_seq. * * Consider using bam_aux_add instead if you have information in a more * integer or string form. * * Returns 0 on success; * -1 on failure */ int bam_aux_add_data(bam_seq_t **b, const char tag[2], char type, size_t len, const uint8_t *data) { uint8_t *cp; size_t used; if (NULL == b || NULL == data) return -1; /* Find the end of the existing tags and ensure there is enough space */ cp = (uint8_t *)&(*b)->ref + (*b)->blk_size; used = cp - (uint8_t *)(*b); if ((*b)->alloc < used + len + 4) { size_t required = used + len + 4; bam_seq_t *new_bam = realloc((*b), required); if (NULL == new_bam) return -1; *b = new_bam; (*b)->alloc = required; cp = (uint8_t *) new_bam + used; } *cp++ = tag[0]; *cp++ = tag[1]; *cp++ = type; memcpy(cp, data, len); cp += len; *cp = 0; (*b)->blk_size = (uint32_t)(cp - (uint8_t *)&(*b)->ref); return 0; } /*! Add raw data to a bam structure. * * This could be useful if you wish to manually construct your own bam * entries or if you need to append an entire block of preformatting * aux data. * * Returns 0 on success; * -1 on failure */ int bam_add_raw(bam_seq_t **b, size_t len, const uint8_t *data) { uint8_t *cp; size_t used; if (NULL == b || NULL == data) return -1; /* Find the end of the existing tags and ensure there is enough space */ cp = (uint8_t *)&(*b)->ref + (*b)->blk_size; used = cp - (uint8_t *)(*b); if ((*b)->alloc < used + len + 1) { size_t required = used + len + 1; bam_seq_t *new_bam = realloc((*b), required); if (NULL == new_bam) return -1; *b = new_bam; (*b)->alloc = required; cp = (uint8_t *) new_bam + used; } memcpy(cp, data, len); cp += len; *cp = 0; (*b)->blk_size = (uint32_t)(cp - (uint8_t *)&(*b)->ref); return 0; } /*! Duplicates a bam_seq_t structure. * * @return * Returns the new bam_seq_t pointer on success; * NULL on failure. */ bam_seq_t *bam_dup(bam_seq_t *b) { bam_seq_t *d; int a = ((int)((b->alloc+15)/16))*16; if (!b) return NULL; if (!(d = malloc(a))) return NULL; memcpy(d, b, b->alloc); d->alloc = a; return d; } unsigned char *append_int(unsigned char *cp, int32_t i) { int32_t j; if (i < 0) { *cp++ = '-'; if (i == INT_MIN) { *cp++ = '2'; *cp++ = '1'; *cp++ = '4'; *cp++ = '7'; *cp++ = '4'; *cp++ = '8'; *cp++ = '3'; *cp++ = '6'; *cp++ = '4'; *cp++ = '8'; return cp; } i = -i; } else if (i == 0) { *cp++ = '0'; return cp; } //if (i < 10) goto b0; if (i < 100) goto b1; //if (i < 1000) goto b2; if (i < 10000) goto b3; //if (i < 100000) goto b4; if (i < 1000000) goto b5; //if (i < 10000000) goto b6; if (i < 100000000) goto b7; if ((j = i / 1000000000)) {*cp++ = j + '0'; i -= j*1000000000; goto x8;} if ((j = i / 100000000)) {*cp++ = j + '0'; i -= j*100000000; goto x7;} b7: if ((j = i / 10000000)) {*cp++ = j + '0'; i -= j*10000000; goto x6;} if ((j = i / 1000000)) {*cp++ = j + '0', i -= j*1000000; goto x5;} b5: if ((j = i / 100000)) {*cp++ = j + '0', i -= j*100000; goto x4;} if ((j = i / 10000)) {*cp++ = j + '0', i -= j*10000; goto x3;} b3: if ((j = i / 1000)) {*cp++ = j + '0', i -= j*1000; goto x2;} if ((j = i / 100)) {*cp++ = j + '0', i -= j*100; goto x1;} b1: if ((j = i / 10)) {*cp++ = j + '0', i -= j*10; goto x0;} if (i) *cp++ = i + '0'; return cp; x8: *cp++ = i / 100000000 + '0', i %= 100000000; x7: *cp++ = i / 10000000 + '0', i %= 10000000; x6: *cp++ = i / 1000000 + '0', i %= 1000000; x5: *cp++ = i / 100000 + '0', i %= 100000; x4: *cp++ = i / 10000 + '0', i %= 10000; x3: *cp++ = i / 1000 + '0', i %= 1000; x2: *cp++ = i / 100 + '0', i %= 100; x1: *cp++ = i / 10 + '0', i %= 10; x0: *cp++ = i + '0'; return cp; } /* * Unsigned version of above. * Only differs when the int has the top bit set (~2.15 billion and above). */ unsigned char *append_uint(unsigned char *cp, uint32_t i) { uint32_t j; if (i == 0) { *cp++ = '0'; return cp; } //if (i < 10) goto b0; if (i < 100) goto b1; //if (i < 1000) goto b2; if (i < 10000) goto b3; //if (i < 100000) goto b4; if (i < 1000000) goto b5; //if (i < 10000000) goto b6; if (i < 100000000) goto b7; if ((j = i / 1000000000)) {*cp++ = j + '0'; i -= j*1000000000; goto x8;} if ((j = i / 100000000)) {*cp++ = j + '0'; i -= j*100000000; goto x7;} b7: if ((j = i / 10000000)) {*cp++ = j + '0'; i -= j*10000000; goto x6;} if ((j = i / 1000000)) {*cp++ = j + '0', i -= j*1000000; goto x5;} b5: if ((j = i / 100000)) {*cp++ = j + '0', i -= j*100000; goto x4;} if ((j = i / 10000)) {*cp++ = j + '0', i -= j*10000; goto x3;} b3: if ((j = i / 1000)) {*cp++ = j + '0', i -= j*1000; goto x2;} if ((j = i / 100)) {*cp++ = j + '0', i -= j*100; goto x1;} b1: if ((j = i / 10)) {*cp++ = j + '0', i -= j*10; goto x0;} if (i) *cp++ = i + '0'; return cp; x8: *cp++ = i / 100000000 + '0', i %= 100000000; x7: *cp++ = i / 10000000 + '0', i %= 10000000; x6: *cp++ = i / 1000000 + '0', i %= 1000000; x5: *cp++ = i / 100000 + '0', i %= 100000; x4: *cp++ = i / 10000 + '0', i %= 10000; x3: *cp++ = i / 1000 + '0', i %= 1000; x2: *cp++ = i / 100 + '0', i %= 100; x1: *cp++ = i / 10 + '0', i %= 10; x0: *cp++ = i + '0'; return cp; } /* * This is set up so that count should never be more than BGZF_BUFF_SIZE. * This has been chosen to deliberately be small enough such that the * bgzf header/footer + worst-case expansion (deflateBound() func) of 'buf' * are <= 65536, thus ensuring BGZF BSIZE is always 16-bit. * * Returns 0 on success; * -1 on error */ static int bgzf_encode(int level, const void *buf, uint32_t in_sz, void *out, uint32_t *out_sz) { unsigned char *blk = out; z_stream s; int cdata_pos; int cdata_size; int cdata_alloc; int err; uint32_t crc; /* Initialise zlib stream */ cdata_pos = 18; cdata_alloc = Z_BUFF_SIZE; s.zalloc = Z_NULL; /* use default allocation functions */ s.zfree = Z_NULL; s.opaque = Z_NULL; s.next_in = (unsigned char *)buf; s.avail_in = in_sz; s.total_in = 0; s.next_out = blk + cdata_pos; s.avail_out = cdata_alloc; s.total_out = 0; s.data_type = Z_BINARY; /* Compress it */ err = deflateInit2(&s, level, Z_DEFLATED, -15, 8, Z_DEFAULT_STRATEGY); //err = deflateInit2(&s, level, Z_DEFLATED, -15, 8, Z_FILTERED); if (err != Z_OK) { fprintf(stderr, "zlib deflateInit2 error: %s\n", s.msg); return -1; } /* Encode to 'cdata' array */ for (;s.avail_in;) { s.next_out = blk + cdata_pos; s.avail_out = cdata_alloc - cdata_pos; if (cdata_alloc - cdata_pos <= 0) { fprintf(stderr, "Deflate produced larger output than expected. Abort\n"); return -1; } err = deflate(&s, Z_NO_FLUSH); // or Z_FINISH? cdata_pos = cdata_alloc - s.avail_out; if (err != Z_OK) { fprintf(stderr, "zlib deflate error: %s\n", s.msg); break; } } if (deflate(&s, Z_FINISH) != Z_STREAM_END) { fprintf(stderr, "zlib deflate error: %s\n", s.msg); } cdata_size = s.total_out; if (deflateEnd(&s) != Z_OK) { fprintf(stderr, "zlib deflate error: %s\n", s.msg); } assert(cdata_size <= 65536); /* Fill out gzip header */ blk[ 0] = 31; // ID1 blk[ 1] = 139; // ID2 blk[ 2] = 8; // CM (deflate) blk[ 3] = 4; // FLAGS (FEXTRA) blk[ 4] = blk[5] = blk[6] = blk[7] = 0; // MTIME blk[ 8] = 0; // XFL blk[ 9] = 255; // OS (unknown) blk[10] = 6; // XLEN blk[11] = 0; // XLEN /* Extra BGZF fields */ blk[12] = 66; // SI1 blk[13] = 67; // SI2 blk[14] = 2; // SLEN blk[15] = 0; // SLEN blk[16] = ((cdata_size + 25) >> 0) & 0xff; blk[17] = ((cdata_size + 25) >> 8) & 0xff; crc = crc32(0L, NULL, 0L); crc = crc32(crc, (unsigned char *)buf, in_sz); blk[18+cdata_size+0] = (crc >> 0) & 0xff; blk[18+cdata_size+1] = (crc >> 8) & 0xff; blk[18+cdata_size+2] = (crc >>16) & 0xff; blk[18+cdata_size+3] = (crc >>24) & 0xff; blk[18+cdata_size+4] = (in_sz >> 0) & 0xff; blk[18+cdata_size+5] = (in_sz >> 8) & 0xff; blk[18+cdata_size+6] = (in_sz >>16) & 0xff; blk[18+cdata_size+7] = (in_sz >>24) & 0xff; *out_sz = 18+cdata_size+8; return 0; } static int bgzf_write(bam_file_t *bf, int level, const void *buf, size_t count) { unsigned char blk[Z_BUFF_SIZE+4]; uint32_t len; if (0 != bgzf_encode(level, buf, count, blk, &len)) return -1; if (len != fwrite(blk, 1, len, bf->fp)) return -1; return 0; } typedef struct { int level; unsigned char in[Z_BUFF_SIZE]; unsigned char out[Z_BUFF_SIZE]; uint32_t in_sz, out_sz; } bgzf_encode_job; void *bgzf_encode_thread(void *arg) { bgzf_encode_job *j = (bgzf_encode_job *)arg; bgzf_encode(j->level, j->in, j->in_sz, j->out, &j->out_sz); return arg; } static int bgzf_write_mt(bam_file_t *bf, int level, const void *buf, size_t count) { bgzf_encode_job *j; t_pool_result *r; if (!bf->pool) return bgzf_write(bf, level, buf, count); j = malloc(sizeof(*j)); j->level = level; memcpy(j->in, buf, count); j->in_sz = count; t_pool_dispatch(bf->pool, bf->equeue, bgzf_encode_thread, j); while ((r = t_pool_next_result(bf->equeue))) { j = (bgzf_encode_job *)r->data; if (j->out_sz != fwrite(j->out, 1, j->out_sz, bf->fp)) return -1; t_pool_delete_result(r, 1); } return 0; } #ifdef USE_MT static int bgzf_flush_mt(bam_file_t *bf) { t_pool_result *r; bgzf_encode_job *j; if (!bf->pool) return 0; t_pool_flush(bf->pool); while ((r = t_pool_next_result(bf->equeue))) { j = (bgzf_encode_job *)r->data; if (j->out_sz != fwrite(j->out, 1, j->out_sz, bf->fp)) return -1; t_pool_delete_result(r, 1); } return 0; } #else static int bgzf_flush(bam_file_t *bf) { return 0; } #endif /* * Writes a single bam sequence object. * Returns 0 on success * -1 on failure */ #if defined(__GNUC__) && !(defined(__clang__) || defined(__ICC)) // On later gcc releases the ALLOW_UAC code causes the vectorizor to // use SIMD instructions on unaligned memory access. This is due to // our own abuse of char to int aliasing, but doing things the legal // way is still slower overall (5-14% depending on system and // compiler). __attribute__((optimize("no-tree-vectorize"))) #endif int bam_put_seq(bam_file_t *fp, bam_seq_t *b) { char *auxh, aux_key[3], type; bam_aux_t val; /* * Thread safe version of: * * static int init_done = 0; * static uint16_t code2base[256]; * * if (!init_done) { * int i; * char c[2]; * uint16_t s; * for (i = 0; i < 256; i++) { * c[0] = "=ACMGRSVTWYHKDBN"[i >> 4]; * c[1] = "=ACMGRSVTWYHKDBN"[i & 15]; * s = *(uint16_t *)c; * code2base[i] = s; * * //printf("%5d,%c", code2base[i],i%8==7?'\n':' '); * } * init_done = 1; * } */ #ifdef ALLOW_UAC static const uint16_t code2base[256] = { 15677, 16701, 17213, 19773, 18237, 21053, 21309, 22077, 21565, 22333, 22845, 18493, 19261, 17469, 16957, 20029, 15681, 16705, 17217, 19777, 18241, 21057, 21313, 22081, 21569, 22337, 22849, 18497, 19265, 17473, 16961, 20033, 15683, 16707, 17219, 19779, 18243, 21059, 21315, 22083, 21571, 22339, 22851, 18499, 19267, 17475, 16963, 20035, 15693, 16717, 17229, 19789, 18253, 21069, 21325, 22093, 21581, 22349, 22861, 18509, 19277, 17485, 16973, 20045, 15687, 16711, 17223, 19783, 18247, 21063, 21319, 22087, 21575, 22343, 22855, 18503, 19271, 17479, 16967, 20039, 15698, 16722, 17234, 19794, 18258, 21074, 21330, 22098, 21586, 22354, 22866, 18514, 19282, 17490, 16978, 20050, 15699, 16723, 17235, 19795, 18259, 21075, 21331, 22099, 21587, 22355, 22867, 18515, 19283, 17491, 16979, 20051, 15702, 16726, 17238, 19798, 18262, 21078, 21334, 22102, 21590, 22358, 22870, 18518, 19286, 17494, 16982, 20054, 15700, 16724, 17236, 19796, 18260, 21076, 21332, 22100, 21588, 22356, 22868, 18516, 19284, 17492, 16980, 20052, 15703, 16727, 17239, 19799, 18263, 21079, 21335, 22103, 21591, 22359, 22871, 18519, 19287, 17495, 16983, 20055, 15705, 16729, 17241, 19801, 18265, 21081, 21337, 22105, 21593, 22361, 22873, 18521, 19289, 17497, 16985, 20057, 15688, 16712, 17224, 19784, 18248, 21064, 21320, 22088, 21576, 22344, 22856, 18504, 19272, 17480, 16968, 20040, 15691, 16715, 17227, 19787, 18251, 21067, 21323, 22091, 21579, 22347, 22859, 18507, 19275, 17483, 16971, 20043, 15684, 16708, 17220, 19780, 18244, 21060, 21316, 22084, 21572, 22340, 22852, 18500, 19268, 17476, 16964, 20036, 15682, 16706, 17218, 19778, 18242, 21058, 21314, 22082, 21570, 22338, 22850, 18498, 19266, 17474, 16962, 20034, 15694, 16718, 17230, 19790, 18254, 21070, 21326, 22094, 21582, 22350, 22862, 18510, 19278, 17486, 16974, 20046 }; #endif if (!fp->binary) { /* SAM */ unsigned char *end = fp->uncomp + BGZF_BUFF_SIZE, *dat; int sz, i, n; #define BF_FLUSH() \ do { \ if (fp->uncomp_p - fp->uncomp != \ fwrite(fp->uncomp, 1, fp->uncomp_p - fp->uncomp, fp->fp)) \ return -1; \ fp->uncomp_p=fp->uncomp; \ } while(0) /* QNAME */ if (end - fp->uncomp_p < (sz = bam_name_len(b))) BF_FLUSH(); if (bam_name(b) - (char *)b + sz-1 > b->blk_size + offsetof(bam_seq_t, ref)) { fprintf(stderr, "Name length too large for bam block\n"); return -1; } memcpy(fp->uncomp_p, bam_name(b), sz-1); fp->uncomp_p += sz-1; *fp->uncomp_p++ = '\t'; /* FLAG */ if (end-fp->uncomp_p < 5) BF_FLUSH(); fp->uncomp_p = append_int(fp->uncomp_p, bam_flag(b)); *fp->uncomp_p++ = '\t'; /* RNAME */ if (b->ref < -1 || b->ref >= fp->header->nref) return -1; if (b->ref != -1) { size_t l = strlen(fp->header->ref[b->ref].name); if (end-fp->uncomp_p < l+1) BF_FLUSH(); memcpy(fp->uncomp_p, fp->header->ref[b->ref].name, l); fp->uncomp_p += l; } else { if (end-fp->uncomp_p < 2) BF_FLUSH(); *fp->uncomp_p++ = '*'; } *fp->uncomp_p++ = '\t'; /* POS */ if (b->pos < -1) return -1; if (end-fp->uncomp_p < 12) BF_FLUSH(); fp->uncomp_p = append_int(fp->uncomp_p, b->pos+1); *fp->uncomp_p++ = '\t'; /* MAPQ */ if (end-fp->uncomp_p < 5) BF_FLUSH(); fp->uncomp_p = append_int(fp->uncomp_p, bam_map_qual(b)); *fp->uncomp_p++ = '\t'; /* CIGAR */ n = bam_cigar_len(b);dat = (uc *)bam_cigar(b); if (n < 0 || dat - (uc *)b + n*4 > b->blk_size + offsetof(bam_seq_t, ref)) return -1; for (i = 0; i < n; i++, dat+=4) { uint32_t c = *(uint32_t *)dat; if (end-fp->uncomp_p < 13) BF_FLUSH(); fp->uncomp_p = append_int(fp->uncomp_p, c>>4); *fp->uncomp_p++="MIDNSHP=X"[c&15]; } if (n==0) { if (end-fp->uncomp_p < 2) BF_FLUSH(); *fp->uncomp_p++='*'; } *fp->uncomp_p++='\t'; /* NRNM */ if (b->mate_ref < -1 || b->mate_ref >= fp->header->nref) return -1; if (b->mate_ref != -1) { if (b->mate_ref == b->ref) { if (end-fp->uncomp_p < 2) BF_FLUSH(); *fp->uncomp_p++ = '='; } else { size_t l = strlen(fp->header->ref[b->mate_ref].name); if (end-fp->uncomp_p < l+1) BF_FLUSH(); memcpy(fp->uncomp_p, fp->header->ref[b->mate_ref].name, l); fp->uncomp_p += l; } } else { if (end-fp->uncomp_p < 2) BF_FLUSH(); *fp->uncomp_p++ = '*'; } *fp->uncomp_p++ = '\t'; /* MPOS */ if (end-fp->uncomp_p < 12) BF_FLUSH(); fp->uncomp_p = append_int(fp->uncomp_p, b->mate_pos+1); *fp->uncomp_p++ = '\t'; /* ISIZE */ if (end-fp->uncomp_p < 12) BF_FLUSH(); fp->uncomp_p = append_int(fp->uncomp_p, b->ins_size); *fp->uncomp_p++ = '\t'; /* SEQ */ n = (b->len+1)/2; dat = (uc *)bam_seq(b); if (dat - (uc *)b + b->len > b->blk_size + offsetof(bam_seq_t, ref)) { fprintf(stderr, "Sequence length too large for bam block\n"); return -1; } /* BAM encoding */ // while (n) { // int l = end-fp->uncomp_p < n ? end-fp->uncomp_p : n; // memcpy(fp->uncomp_p, dat, l); fp->uncomp_p += l; // n -= l; dat += l; // if (end == fp->uncomp_p) BF_FLUSH(); // } if (b->len != 0) { if (end - fp->uncomp_p < b->len + 3) BF_FLUSH(); if (end - fp->uncomp_p < b->len + 3) { /* Extra long seqs need more regular checks */ for (i = 0; i < b->len-1; i+=2) { if (end - fp->uncomp_p < 3) BF_FLUSH(); *fp->uncomp_p++ = "=ACMGRSVTWYHKDBN"[*dat >> 4]; *fp->uncomp_p++ = "=ACMGRSVTWYHKDBN"[*dat++ & 15]; } if (i < b->len) { if (end - fp->uncomp_p < 3) BF_FLUSH(); *fp->uncomp_p++ = "=ACMGRSVTWYHKDBN"[*dat >> 4]; } } else { unsigned char *cp = fp->uncomp_p; int n = b->len & ~1; for (i = 0; i < n; i+=2) { #ifdef ALLOW_UAC *(int16_t *)cp = le_int2(code2base[*dat++]); cp += 2; #else cp[0] = "=ACMGRSVTWYHKDBN"[*dat >> 4]; cp[1] = "=ACMGRSVTWYHKDBN"[*dat++ & 15]; cp += 2; #endif } if (i < b->len) { *cp++ = "=ACMGRSVTWYHKDBN"[*dat >> 4]; } fp->uncomp_p = cp; } } else { if (end - fp->uncomp_p < 2) BF_FLUSH(); *fp->uncomp_p++ = '*'; } *fp->uncomp_p++ = '\t'; /* QUAL */ n = b->len; if (b->len < 0) return -1; dat = (uc *)bam_qual(b); if (dat - (uc *)b + b->len > b->blk_size + offsetof(bam_seq_t, ref)) return -1; /* BAM encoding */ // while (n) { // int l = end-fp->uncomp_p < n ? end-fp->uncomp_p : n; // memcpy(fp->uncomp_p, dat, l); fp->uncomp_p += l; // n -= l; dat += l; // if (end == fp->uncomp_p) BF_FLUSH(); // } if (b->len != 0) { if (*dat == 0xff) { if (end - fp->uncomp_p < 2) BF_FLUSH(); *fp->uncomp_p++ = '*'; dat += b->len; } else { if (end - fp->uncomp_p < b->len + 3) BF_FLUSH(); if (end - fp->uncomp_p < b->len + 3 || fp->binning == BINNING_ILLUMINA) { /* Long seqs */ if (fp->binning == BINNING_ILLUMINA) { for (i = 0; i < b->len; i++) { if (end - fp->uncomp_p < 3) BF_FLUSH(); *fp->uncomp_p++ = illumina_bin_33[(uc)*dat++]; } } else { for (i = 0; i < b->len; i++) { if (end - fp->uncomp_p < 3) BF_FLUSH(); *fp->uncomp_p++ = *dat++ + '!'; } } } else { unsigned char *cp = fp->uncomp_p; i = 0; #ifdef ALLOW_UAC int n = b->len & ~3; for (; i < n; i+=4) { //*cp++ = *dat++ + '!'; *(uint32_t *)cp = *(uint32_t *)dat + 0x21212121; cp += 4; dat += 4; } #endif for (; i < b->len; i++) { *cp++ = *dat++ + '!'; } fp->uncomp_p = cp; } } } else { if (end - fp->uncomp_p < 2) BF_FLUSH(); *fp->uncomp_p++ = '*'; } /* Auxiliary tags */ auxh = NULL; while (0 == bam_aux_iter_full(b, &auxh, aux_key, &type, &val)) { if (end - fp->uncomp_p < 20) BF_FLUSH(); *fp->uncomp_p++ = '\t'; *fp->uncomp_p++ = aux_key[0]; *fp->uncomp_p++ = aux_key[1]; *fp->uncomp_p++ = ':'; *fp->uncomp_p++ = type; *fp->uncomp_p++ = ':'; switch(aux_key[2]) { case 'A': *fp->uncomp_p++ = val.i; break; case 'C': fp->uncomp_p = append_uint(fp->uncomp_p, (uint8_t)val.i); break; case 'c': fp->uncomp_p = append_int(fp->uncomp_p, (int8_t)val.i); break; case 'S': fp->uncomp_p = append_uint(fp->uncomp_p, (uint16_t)val.i); break; case 's': fp->uncomp_p = append_int(fp->uncomp_p, (int16_t)val.i); break; case 'I': fp->uncomp_p = append_uint(fp->uncomp_p, (uint32_t)val.i); break; case 'i': fp->uncomp_p = append_int(fp->uncomp_p, (int32_t)val.i); break; case 'f': fp->uncomp_p += sprintf((char *)fp->uncomp_p, "%g", val.f); break; case 'd': fp->uncomp_p += sprintf((char *)fp->uncomp_p, "%g", val.d); break; case 'Z': case 'H': { size_t l = strlen(val.s), l2; char *dat = val.s; do { if (end - fp->uncomp_p < l+2) BF_FLUSH(); l2 = MIN(l, end-fp->uncomp_p); memcpy(fp->uncomp_p, dat, l2); fp->uncomp_p += l2; l -= l2; dat += l2; } while (l); break; } case 'B': { uint32_t count = val.B.n, sz, j; unsigned char *s = val.B.s; *fp->uncomp_p++ = val.B.t; /* * Chew through count items 4000 at a time. * This is because 4000*14 (biggest %g output plus comma?) * is just shy of 64k, so we avoid buffer overflows. */ switch (val.B.t) { case 'C': case 'c': sz = 4; break; case 'S': case 's': sz = 6; break; default: sz = 14; break; } for (j = 0; j < count; j += 4000) { int i_start = j; int i_end = j + 4000 < count ? j + 4000 : count; if (end - fp->uncomp_p < 5+(i_end-i_start)*sz) BF_FLUSH(); switch (val.B.t) { int i; case 'C': for (i = i_start; i < i_end; i++, s++) { *fp->uncomp_p++ = ','; fp->uncomp_p = append_int(fp->uncomp_p, (uint8_t)s[0]); } break; case 'c': for (i = i_start; i < i_end; i++, s++) { *fp->uncomp_p++ = ','; fp->uncomp_p = append_int(fp->uncomp_p, (int8_t)s[0]); } break; case 'S': for (i = i_start; i < i_end; i++, s+=2) { *fp->uncomp_p++ = ','; fp->uncomp_p = append_int(fp->uncomp_p, (uint16_t)((s[0] << 0) + (s[1] << 8))); } break; case 's': for (i = i_start; i < i_end; i++, s+=2) { *fp->uncomp_p++ = ','; fp->uncomp_p = append_int(fp->uncomp_p, (int16_t)((s[0] << 0) + (s[1] << 8))); } break; case 'I': for (i = i_start; i < i_end; i++, s+=4) { *fp->uncomp_p++ = ','; fp->uncomp_p = append_uint(fp->uncomp_p, (uint32_t)((s[0] << 0) + (s[1] << 8) + (s[2] <<16) + (s[3] <<24))); } break; case 'i': for (i = i_start; i < i_end; i++, s+=4) { *fp->uncomp_p++ = ','; fp->uncomp_p = append_int(fp->uncomp_p, (int32_t)((s[0] << 0) + (s[1] << 8) + (s[2] <<16) + (s[3] <<24))); } break; case 'f': { union { float f; unsigned char c[4]; } u; for (i = i_start; i < i_end; i++, s+=4) { *fp->uncomp_p++ = ','; u.c[0] = s[0]; u.c[1] = s[1]; u.c[2] = s[2]; u.c[3] = s[3]; fp->uncomp_p += sprintf((char *)fp->uncomp_p, "%g", u.f); } break; } default: fprintf(stderr, "Unhandled sub-type of aux type B\n"); } } break; } default: fprintf(stderr, "Unhandled auxilary type '%c' in " "bam_put_seq()\n", type); } } *fp->uncomp_p++ = '\n'; } else { /* BAM */ unsigned char *end = fp->uncomp + BGZF_BUFF_SIZE, *ptr; size_t to_write; uint32_t i32; #ifndef ALLOW_UAC int name_len = bam_name_len(b); #endif #if !defined(ALLOW_UAC) || defined(SP_BIG_ENDIAN) uint32_t *cigar = bam_cigar(b); #endif #if defined(SP_BIG_ENDIAN) int i, n = bam_cigar_len(b); #endif #define CF_FLUSH() \ do { \ if (BGZF_WRITE(fp, fp->level, fp->uncomp, \ fp->uncomp_p - fp->uncomp)) \ return -1; \ fp->uncomp_p=fp->uncomp; \ } while(0) /* If big endian, byte swap inline, write it out, and byte swap back */ b->bin_packed = (b->bin << 16) | (b->map_qual << 8) | b->name_len; b->flag_packed = (b->flag << 16) | b->cigar_len; #ifdef SP_BIG_ENDIAN b->ref = le_int4(b->ref); b->pos = le_int4(b->pos); b->bin_packed = le_int4(b->bin_packed); b->flag_packed = le_int4(b->flag_packed); b->len = le_int4(b->len); b->mate_ref = le_int4(b->mate_ref); b->mate_pos = le_int4(b->mate_pos); b->ins_size = le_int4(b->ins_size); for (i = 0; i < n; i++) { cigar[i] = le_int4(cigar[i]); } #endif #ifdef ALLOW_UAC /* Room for fixed size bits + name */ if (end - fp->uncomp_p < 4) CF_FLUSH(); to_write = b->blk_size; STORE_UINT32(fp->uncomp_p, to_write); ptr = (unsigned char *)&b->ref; #else /* Room for fixed size bits + name */ if (end - fp->uncomp_p < 36+257) CF_FLUSH(); to_write = b->blk_size - (round4(name_len) - name_len); //to_write = b->blk_size; STORE_UINT32(fp->uncomp_p, to_write); ptr = (unsigned char *)&b->ref; /* Do fixed size bits + name first */ memcpy(fp->uncomp_p, ptr, 32 + name_len); fp->uncomp_p += 32 + name_len; to_write -= 32 + name_len; ptr = (unsigned char *)cigar; #endif if (fp->binning == BINNING_ILLUMINA) { int i; uc *q = (uc *)bam_qual(b); for (i = 0; i < b->len; i++) { q[i] = illumina_bin[q[i]]; } } do { size_t blk_len = MIN(to_write, end - fp->uncomp_p); memcpy(fp->uncomp_p, ptr, blk_len); fp->uncomp_p += blk_len; to_write -= blk_len; ptr += blk_len; if (to_write) { //printf("flushing %d+%d\n", // (int)(ptr-(unsigned char *)&b->ref), // (int)(fp->uncomp_p-fp->uncomp)); CF_FLUSH(); } } while(to_write > 0); #ifdef SP_BIG_ENDIAN /* Swap back again */ b->ref = le_int4(b->ref); b->pos = le_int4(b->pos); b->bin_packed = le_int4(b->bin_packed); b->flag_packed = le_int4(b->flag_packed); b->len = le_int4(b->len); b->mate_ref = le_int4(b->mate_ref); b->mate_pos = le_int4(b->mate_pos); b->ins_size = le_int4(b->ins_size); for (i = 0; i < n; i++) { cigar[i] = le_int4(cigar[i]); } #endif i32 = b->bin_packed; b->bin = i32 >> 16; b->map_qual = (i32 >> 8) & 0xff; b->name_len = i32 & 0xff; i32 = b->flag_packed; b->flag = i32 >> 16; b->cigar_len = i32 & 0xffff; } return 0; } /* * Writes a header block. * Returns 0 for success * -1 for failure */ int bam_write_header(bam_file_t *out) { char *header, *hp, *htext; size_t hdr_size; int i, htext_len; if (sam_hdr_rebuild(out->header)) return -1; htext = sam_hdr_str(out->header); htext_len = sam_hdr_length(out->header); hdr_size = 12 + htext_len+1; for (i = 0; i < out->header->nref; i++) { hdr_size += strlen(out->header->ref[i].name)+1 + 8; } if (NULL == (hp = header = malloc(hdr_size))) return -1; if (out->binary) { *hp++ = 'B'; *hp++ = 'A'; *hp++ = 'M'; *hp++ = 1; STORE_UINT32(hp, htext_len); } memcpy(hp, htext, htext_len); hp += htext_len; if (out->binary) { int i; STORE_UINT32(hp, out->header->nref); for (i = 0; i < out->header->nref; i++) { size_t l = strlen(out->header->ref[i].name)+1; STORE_UINT32(hp, l); strcpy(hp, out->header->ref[i].name); hp += l; l = out->header->ref[i].len; STORE_UINT32(hp, l); } } if (out->binary) { int len = hp-header; char *cp = header; while (len) { int sz = BGZF_BUFF_SIZE < len ? BGZF_BUFF_SIZE : len; if (BGZF_WRITE(out, out->level, cp, sz)) return -1; cp += sz; len -= sz; } } else { if (hp-header != fwrite(header, 1, hp-header, out->fp)) return -1; } free(header); return 0; } /* * Sets options on the bam_file_t. See BAM_OPT_* definitions in bam.h. * Use this immediately after opening. * * Returns 0 on success * -1 on failure */ int bam_set_option(bam_file_t *fd, enum bam_option opt, ...) { int r; va_list args; va_start(args, opt); r = bam_set_voption(fd, opt, args); va_end(args); return r; } /* * Sets options on the bam_file_t. See BAM_OPT_* definitions in bam.h. * Use this immediately after opening. * * Returns 0 on success * -1 on failure */ int bam_set_voption(bam_file_t *fd, enum bam_option opt, va_list args) { switch (opt) { case BAM_OPT_THREAD_POOL: fd->pool = va_arg(args, t_pool *); fd->equeue = t_results_queue_init(); fd->dqueue = t_results_queue_init(); break; case BAM_OPT_BINNING: fd->binning = va_arg(args, int); break; } return 0; } io_lib-1.14.6/io_lib/sam_header.c0000644000031500020650000007127412576246766013506 00000000000000/* * Copyright (c) 2013 Genome Research Ltd. * Author(s): James Bonfield, Rob Davies * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * Author: James Bonfield, Wellcome Trust Sanger Institute. 2013 */ #ifdef HAVE_CONFIG_H #include "io_lib_config.h" #endif #include #include #include "io_lib/sam_header.h" #include "io_lib/string_alloc.h" #ifdef SAMTOOLS #define sam_hdr_parse sam_hdr_parse_ #endif static void sam_hdr_error(char *msg, char *line, int len, int lno) { int j; for (j = 0; j < len && line[j] != '\n'; j++) ; fprintf(stderr, "%s at line %d: \"%.*s\"\n", msg, lno, j, line); } void sam_hdr_dump(SAM_hdr *hdr) { HashIter *iter = HashTableIterCreate(); HashItem *hi; int i; printf("===DUMP===\n"); while ((hi = HashTableIterNext(hdr->h, iter))) { SAM_hdr_type *t1, *t2; t1 = t2 = hi->data.p; printf("Type %.2s, count %d\n", hi->key, t1->prev->order+1); do { SAM_hdr_tag *tag; printf(">>>%d ", t1->order); for (tag = t1->tag; tag; tag=tag->next) { printf("\"%.2s\":\"%.*s\"\t", tag->str, tag->len-3, tag->str+3); } putchar('\n'); t1 = t1->next; } while (t1 != t2); } /* Dump out PG chains */ printf("\n@PG chains:\n"); for (i = 0; i < hdr->npg_end; i++) { int j; printf(" %d:", i); for (j = hdr->pg_end[i]; j != -1; j = hdr->pg[j].prev_id) { printf("%s%d(%.*s)", j == hdr->pg_end[i] ? " " : "->", j, hdr->pg[j].name_len, hdr->pg[j].name); } printf("\n"); } puts("===END DUMP==="); HashTableIterDestroy(iter); } /* Updates the HashTables in the SAM_hdr structure. * * Returns 0 on success; * -1 on failure */ static int sam_hdr_update_hashes(SAM_hdr *sh, const char *type, SAM_hdr_type *h_type) { /* Add to reference hash? */ if (type[0] == 'S' && type[1] == 'Q') { SAM_hdr_tag *tag; int nref = sh->nref; sh->ref = realloc(sh->ref, (sh->nref+1)*sizeof(*sh->ref)); if (!sh->ref) return -1; tag = h_type->tag; sh->ref[nref].name = NULL; sh->ref[nref].len = 0; sh->ref[nref].ty = h_type; sh->ref[nref].tag = tag; while (tag) { if (tag->str[0] == 'S' && tag->str[1] == 'N') { if (!(sh->ref[nref].name = malloc(tag->len))) return -1; strncpy(sh->ref[nref].name, tag->str+3, tag->len-3); sh->ref[nref].name[tag->len-3] = 0; } else if (tag->str[0] == 'L' && tag->str[1] == 'N') { sh->ref[nref].len = atoi(tag->str+3); } tag = tag->next; } if (sh->ref[nref].name) { HashData hd; hd.i = nref; if (!HashTableAdd(sh->ref_hash, sh->ref[nref].name, 0, hd, NULL)) return -1; } sh->nref++; } /* Add to read-group hash? */ if (type[0] == 'R' && type[1] == 'G') { SAM_hdr_tag *tag; int nrg = sh->nrg; sh->rg = realloc(sh->rg, (sh->nrg+1)*sizeof(*sh->rg)); if (!sh->rg) return -1; tag = h_type->tag; sh->rg[nrg].name = NULL; sh->rg[nrg].name_len = 0; sh->rg[nrg].ty = h_type; sh->rg[nrg].tag = tag; sh->rg[nrg].id = nrg; while (tag) { if (tag->str[0] == 'I' && tag->str[1] == 'D') { if (!(sh->rg[nrg].name = malloc(tag->len))) return -1; strncpy(sh->rg[nrg].name, tag->str+3, tag->len-3); sh->rg[nrg].name[tag->len-3] = 0; sh->rg[nrg].name_len = strlen(sh->rg[nrg].name); } tag = tag->next; } if (sh->rg[nrg].name) { HashData hd; hd.i = nrg; if (!HashTableAdd(sh->rg_hash, sh->rg[nrg].name, 0, hd, NULL)) return -1; } sh->nrg++; } /* Add to program hash? */ if (type[0] == 'P' && type[1] == 'G') { SAM_hdr_tag *tag; int npg = sh->npg; sh->pg = realloc(sh->pg, (sh->npg+1)*sizeof(*sh->pg)); if (!sh->pg) return -1; tag = h_type->tag; sh->pg[npg].name = NULL; sh->pg[npg].name_len = 0; sh->pg[npg].ty = h_type; sh->pg[npg].tag = tag; sh->pg[npg].id = npg; sh->pg[npg].prev_id = -1; while (tag) { if (tag->str[0] == 'I' && tag->str[1] == 'D') { if (!(sh->pg[npg].name = malloc(tag->len))) return -1; strncpy(sh->pg[npg].name, tag->str+3, tag->len-3); sh->pg[npg].name[tag->len-3] = 0; sh->pg[npg].name_len = strlen(sh->pg[npg].name); } else if (tag->str[0] == 'P' && tag->str[1] == 'P') { // Resolve later if needed HashItem *hi = HashTableSearch(sh->pg_hash, tag->str+3, tag->len-3); if (hi) { sh->pg[npg].prev_id = sh->pg[hi->data.i].id; /* Unmark previous entry as a PG termination */ if (sh->npg_end > 0 && sh->pg_end[sh->npg_end-1] == hi->data.i) { sh->npg_end--; } else { int i; for (i = 0; i < sh->npg_end; i++) { if (sh->pg_end[i] == hi->data.i) { memmove(&sh->pg_end[i], &sh->pg_end[i+1], (sh->npg_end-i-1)*sizeof(*sh->pg_end)); sh->npg_end--; } } } } else { sh->pg[npg].prev_id = -1; } } tag = tag->next; } if (sh->pg[npg].name) { HashData hd; hd.i = npg; if (!HashTableAdd(sh->pg_hash, sh->pg[npg].name, 0, hd, NULL)) return -1; } /* Add to npg_end[] array. Remove later if we find a PP line */ if (sh->npg_end >= sh->npg_end_alloc) { sh->npg_end_alloc = sh->npg_end_alloc ? sh->npg_end_alloc*2 : 4; sh->pg_end = realloc(sh->pg_end, sh->npg_end_alloc * sizeof(int)); if (!sh->pg_end) return -1; } sh->pg_end[sh->npg_end++] = npg; sh->npg++; } return 0; } /* * Appends a formatted line to an existing SAM header. * Line is a full SAM header record, eg "@SQ\tSN:foo\tLN:100", with * optional new-line. If it contains more than 1 line then multiple lines * will be added in order. * * Input text is of maximum length len or as terminated earlier by a NUL. * Len may be 0 if unknown, in which case lines must be NUL-terminated. * * Returns 0 on success * -1 on failure */ int sam_hdr_add_lines(SAM_hdr *sh, const char *lines, int len) { int i, lno, text_offset; HashItem *hi; HashData hd; char *hdr; if (!len) len = strlen(lines); text_offset = DSTRING_LEN(sh->text); dstring_nappend(sh->text, lines, len); hdr = DSTRING_STR(sh->text) + text_offset; for (i = 0, lno = 1; i < len && hdr[i] != '\0'; i++, lno++) { char *type; int l_start = i, new; SAM_hdr_type *h_type; SAM_hdr_tag *h_tag, *last; if (hdr[i] != '@') { int j; for (j = i; j < len && hdr[j] != '\0' && hdr[j] != '\n'; j++) ; sam_hdr_error("Header line does not start with '@'", &hdr[l_start], len - l_start, lno); return -1; } type = &hdr[i+1]; if (len - i < 3 || type[0] < 'A' || type[0] > 'z' || type[1] < 'A' || type[1] > 'z') { sam_hdr_error("Header line does not have a two character key", &hdr[l_start], len - l_start, lno); return -1; } i += 3; if (i >= len || hdr[i] == '\n') continue; // Add the header line type if (!(h_type = pool_alloc(sh->type_pool))) return -1; hd.p = h_type; if (!(hi = HashTableAdd(sh->h, type, 2, hd, &new))) return -1; // Form the ring, either with self or other lines of this type if (!new) { SAM_hdr_type *t = hi->data.p, *p; p = t->prev; assert(p->next == t); p->next = h_type; h_type->prev = p; t->prev = h_type; h_type->next = t; h_type->order = p->order+1; } else { h_type->prev = h_type->next = h_type; h_type->order = 0; } // Parse the tags on this line last = NULL; if (type[0] == 'C' && type[1] == 'O') { int j; if (hdr[i] != '\t') { sam_hdr_error("Missing tab", &hdr[l_start], len - l_start, lno); return -1; } for (j = ++i; j < len && hdr[j] != '\0' && hdr[j] != '\n'; j++) ; if (!(h_type->tag = h_tag = pool_alloc(sh->tag_pool))) return -1; h_tag->str = string_ndup(sh->str_pool, &hdr[i], j-i); h_tag->len = j-i; h_tag->next = NULL; if (!h_tag->str) return -1; i = j; } else { do { int j; if (hdr[i] != '\t') { sam_hdr_error("Missing tab", &hdr[l_start], len - l_start, lno); return -1; } for (j = ++i; j < len && hdr[j] != '\0' && hdr[j] != '\n' && hdr[j] != '\t'; j++) ; if (!(h_tag = pool_alloc(sh->tag_pool))) return -1; h_tag->str = string_ndup(sh->str_pool, &hdr[i], j-i); h_tag->len = j-i; h_tag->next = NULL; if (!h_tag->str) return -1; if (h_tag->len < 3 || h_tag->str[2] != ':') { sam_hdr_error("Malformed key:value pair", &hdr[l_start], len - l_start, lno); return -1; } if (last) last->next = h_tag; else h_type->tag = h_tag; last = h_tag; i = j; } while (i < len && hdr[i] != '\0' && hdr[i] != '\n'); } /* Update RG/SQ hashes */ if (-1 == sam_hdr_update_hashes(sh, type, h_type)) return -1; } return 0; } /* * Adds a single line to a SAM header. * Specify type and one or more key,value pairs, ending with the NULL key. * Eg. sam_hdr_add(h, "SQ", "ID", "foo", "LN", "100", NULL). * * Returns index for specific entry on success (eg 2nd SQ, 4th RG) * -1 on failure */ int sam_hdr_add(SAM_hdr *sh, const char *type, ...) { va_list args; va_start(args, type); return sam_hdr_vadd(sh, type, args, NULL); } int sam_hdr_vadd(SAM_hdr *sh, const char *type, va_list ap, ...) { va_list args; HashItem *hi; HashData hd; SAM_hdr_type *h_type; SAM_hdr_tag *h_tag, *last; int new; #if defined(HAVE_VA_COPY) va_list ap_local; #endif if (-1 == dstring_append_char(sh->text, '@')) return -1; if (-1 == dstring_nappend(sh->text, type, 2)) return -1; if (!(h_type = pool_alloc(sh->type_pool))) return -1; hd.p = h_type; if (!(hi = HashTableAdd(sh->h, (char *)type, 2, hd, &new))) return -1; // Form the ring, either with self or other lines of this type if (!new) { SAM_hdr_type *t = hi->data.p, *p; p = t->prev; assert(p->next = t); p->next = h_type; h_type->prev = p; t->prev = h_type; h_type->next = t; h_type->order = p->order + 1; } else { h_type->prev = h_type->next = h_type; h_type->order = 0; } last = NULL; // Any ... varargs va_start(args, ap); for (;;) { char *k, *v; int idx; if (!(k = (char *)va_arg(args, char *))) break; v = va_arg(args, char *); if (-1 == dstring_append_char(sh->text, '\t')) return -1; if (!(h_tag = pool_alloc(sh->tag_pool))) return -1; idx = DSTRING_LEN(sh->text); if (-1 == dstring_append(sh->text, k)) return -1; if (-1 == dstring_append_char(sh->text, ':')) return -1; if (-1 == dstring_append(sh->text, v)) return -1; h_tag->len = DSTRING_LEN(sh->text) - idx; h_tag->str = string_ndup(sh->str_pool, DSTRING_STR(sh->text) + idx, h_tag->len); h_tag->next = NULL; if (!h_tag->str) return -1; if (last) last->next = h_tag; else h_type->tag = h_tag; last = h_tag; } va_end(args); #if defined(HAVE_VA_COPY) va_copy(ap_local, ap); # define ap ap_local #endif // Plus the specified va_list params for (;;) { char *k, *v; int idx; if (!(k = (char *)va_arg(ap, char *))) break; v = va_arg(ap, char *); if (-1 == dstring_append_char(sh->text, '\t')) return -1; if (!(h_tag = pool_alloc(sh->tag_pool))) return -1; idx = DSTRING_LEN(sh->text); if (-1 == dstring_append(sh->text, k)) return -1; if (-1 == dstring_append_char(sh->text, ':')) return -1; if (-1 == dstring_append(sh->text, v)) return -1; h_tag->len = DSTRING_LEN(sh->text) - idx; h_tag->str = string_ndup(sh->str_pool, DSTRING_STR(sh->text) + idx, h_tag->len); h_tag->next = NULL; if (!h_tag->str) return -1; if (last) last->next = h_tag; else h_type->tag = h_tag; last = h_tag; } va_end(ap); if (-1 == dstring_append_char(sh->text, '\n')) return -1; if (-1 == sam_hdr_update_hashes(sh, type, h_type)) return -1; return h_type->order; } /* * Returns the first header item matching 'type'. If ID is non-NULL it checks * for the tag ID: and compares against the specified ID. * * Returns NULL if no type/ID is found */ SAM_hdr_type *sam_hdr_find(SAM_hdr *hdr, char *type, char *ID_key, char *ID_value) { HashItem *hi; SAM_hdr_type *t1, *t2; /* Special case for types we have prebuilt hashes on */ if (ID_key) { if (type[0] == 'S' && type[1] == 'Q' && ID_key[0] == 'S' && ID_key[1] == 'N') { hi = HashTableSearch(hdr->ref_hash, ID_value, strlen(ID_value)); return hi ? hdr->ref[hi->data.i].ty : NULL; } if (type[0] == 'R' && type[1] == 'G' && ID_key[0] == 'I' && ID_key[1] == 'D') { hi = HashTableSearch(hdr->rg_hash, ID_value, strlen(ID_value)); return hi ? hdr->rg[hi->data.i].ty : NULL; } if (type[0] == 'P' && type[1] == 'G' && ID_key[0] == 'I' && ID_key[1] == 'D') { hi = HashTableSearch(hdr->pg_hash, ID_value, strlen(ID_value)); return hi ? hdr->pg[hi->data.i].ty : NULL; } } if (!(hi = HashTableSearch(hdr->h, type, 2))) return NULL; if (!ID_key) return hi->data.p; t1 = t2 = hi->data.p; do { SAM_hdr_tag *tag; for (tag = t1->tag; tag; tag = tag->next) { if (tag->str[0] == ID_key[0] && tag->str[1] == ID_key[1]) { char *cp1 = tag->str+3; char *cp2 = ID_value; while (*cp1 && *cp1 == *cp2) cp1++, cp2++; if (*cp2 || *cp1) continue; return t1; } } t1 = t1->next; } while (t1 != t2); return NULL; } /* * As per SAM_hdr_type, but returns a complete line of formatted text * for a specific head type/ID combination. If ID is NULL then it returns * the first line of the specified type. * * The returned string is malloced and should be freed by the calling * function with free(). * * Returns NULL if no type/ID is found. */ char *sam_hdr_find_line(SAM_hdr *hdr, char *type, char *ID_key, char *ID_value) { SAM_hdr_type *ty = sam_hdr_find(hdr, type, ID_key, ID_value); dstring_t *ds; SAM_hdr_tag *tag; char *str = dstring_str(hdr->text); int r = 0; if (!ty) return NULL; if (NULL == (ds = dstring_create(NULL))) return NULL; // Paste together the line from the hashed copy r |= dstring_append_char(ds, '@'); r |= dstring_append(ds, type); for (tag = ty->tag; tag; tag = tag->next) { r |= dstring_append_char(ds, '\t'); r |= dstring_nappend(ds, tag->str, tag->len); } if (r) { dstring_destroy(ds); return NULL; } // Steal the dstring copy and return that. str = DSTRING_STR(ds); DSTRING_STR(ds) = NULL; dstring_destroy(ds); return str; } /* * Looks for a specific key in a single sam header line. * If prev is non-NULL it also fills this out with the previous tag, to * permit use in key removal. *prev is set to NULL when the tag is the first * key in the list. When a tag isn't found, prev (if non NULL) will be the last * tag in the existing list. * * Returns the tag pointer on success * NULL on failure */ SAM_hdr_tag *sam_hdr_find_key(SAM_hdr *sh, SAM_hdr_type *type, char *key, SAM_hdr_tag **prev) { SAM_hdr_tag *tag, *p = NULL; for (tag = type->tag; tag; p = tag, tag = tag->next) { if (tag->str[0] == key[0] && tag->str[1] == key[1]) { if (prev) *prev = p; return tag; } } if (prev) *prev = p; return NULL; } /* * Adds or updates tag key,value pairs in a header line. * Eg for adding M5 tags to @SQ lines or updating sort order for the * @HD line (although use the sam_hdr_sort_order() function for * HD manipulation, which is a wrapper around this funuction). * * Specify multiple key,value pairs ending in NULL. * * Returns 0 on success * -1 on failure */ int sam_hdr_update(SAM_hdr *hdr, SAM_hdr_type *type, ...) { va_list ap; va_start(ap, type); for (;;) { char *k, *v; int idx; SAM_hdr_tag *tag, *prev; if (!(k = (char *)va_arg(ap, char *))) break; v = va_arg(ap, char *); tag = sam_hdr_find_key(hdr, type, k, &prev); if (!tag) { if (!(tag = pool_alloc(hdr->tag_pool))) return -1; if (prev) prev->next = tag; else type->tag = tag; tag->next = NULL; } idx = DSTRING_LEN(hdr->text); if (0 != dstring_appendf(hdr->text, "%2.2s:%s", k, v)) return -1; tag->len = DSTRING_LEN(hdr->text) - idx; tag->str = string_ndup(hdr->str_pool, DSTRING_STR(hdr->text) + idx, tag->len); if (!tag->str) return -1; } va_end(ap); return 0; } /* * Returns the sort order: */ enum sam_sort_order sam_hdr_sort_order(SAM_hdr *hdr) { return hdr->sort_order; } static enum sam_sort_order sam_hdr_parse_sort_order(SAM_hdr *hdr) { HashItem *hi; enum sam_sort_order so; so = ORDER_UNKNOWN; if ((hi = HashTableSearch(hdr->h, "HD", 2))) { SAM_hdr_type *ty = hi->data.p; SAM_hdr_tag *tag; for (tag = ty->tag; tag; tag = tag->next) { if (tag->str[0] == 'S' && tag->str[1] == 'O') { if (strcmp(tag->str+3, "unsorted") == 0) so = ORDER_UNSORTED; else if (strcmp(tag->str+3, "queryname") == 0) so = ORDER_NAME; else if (strcmp(tag->str+3, "coordinate") == 0) so = ORDER_COORD; else fprintf(stderr, "Unknown sort order field: %s\n", tag->str+3); } } } return so; } /* * Reconstructs the dstring from the header hash table. * Returns 0 on success * -1 on failure */ int sam_hdr_rebuild(SAM_hdr *hdr) { /* Order: HD then others */ HashItem *hi; HashIter *iter = HashTableIterCreate(); dstring_t *ds = dstring_create(NULL); if (!iter || !ds) return -1; if ((hi = HashTableSearch(hdr->h, "HD", 2))) { SAM_hdr_type *ty = hi->data.p; SAM_hdr_tag *tag; if (-1 == dstring_append(ds, "@HD")) return -1; for (tag = ty->tag; tag; tag = tag->next) { if (-1 == dstring_append_char(ds, '\t')) return -1; if (-1 == dstring_nappend(ds, tag->str, tag->len)) return -1; } if (-1 == dstring_append_char(ds, '\n')) return -1; } while ((hi = HashTableIterNext(hdr->h, iter))) { SAM_hdr_type *t1, *t2; if (hi->key[0] == 'H' && hi->key[1] == 'D') continue; t1 = t2 = hi->data.p; do { SAM_hdr_tag *tag; if (-1 == dstring_append_char(ds, '@')) return -1; if (-1 == dstring_nappend(ds, hi->key, 2)) return -1; for (tag = t1->tag; tag; tag=tag->next) { if (-1 == dstring_append_char(ds, '\t')) return -1; if (-1 == dstring_nappend(ds, tag->str, tag->len)) return -1; } if (-1 == dstring_append_char(ds, '\n')) return -1; t1 = t1->next; } while (t1 != t2); } HashTableIterDestroy(iter); dstring_destroy(hdr->text); hdr->text = ds; return 0; } /* * Creates an empty SAM header, ready to be populated. * * Returns a SAM_hdr struct on success (free with sam_hdr_free()) * NULL on failure */ SAM_hdr *sam_hdr_new() { SAM_hdr *sh = calloc(1, sizeof(*sh)); if (!sh) return NULL; sh->h = HashTableCreate(16, HASH_FUNC_HSIEH | HASH_DYNAMIC_SIZE); if (!sh->h) goto err; sh->ID_cnt = 1; sh->ref_count = 1; sh->nref = 0; sh->ref = NULL; if (!(sh->ref_hash = HashTableCreate(16, HASH_FUNC_HSIEH | HASH_DYNAMIC_SIZE | HASH_NONVOLATILE_KEYS))) goto err; sh->nrg = 0; sh->rg = NULL; if (!(sh->rg_hash = HashTableCreate(16, HASH_FUNC_HSIEH | HASH_DYNAMIC_SIZE | HASH_NONVOLATILE_KEYS))) goto err; sh->npg = 0; sh->pg = NULL; sh->npg_end = sh->npg_end_alloc = 0; sh->pg_end = NULL; if (!(sh->pg_hash = HashTableCreate(16, HASH_FUNC_HSIEH | HASH_DYNAMIC_SIZE | HASH_NONVOLATILE_KEYS))) goto err; if (!(sh->text = dstring_create(NULL))) goto err; if (!(sh->tag_pool = pool_create(sizeof(SAM_hdr_tag)))) goto err; if (!(sh->type_pool = pool_create(sizeof(SAM_hdr_type)))) goto err; if (!(sh->str_pool = string_pool_create(8192))) goto err; return sh; err: if (sh->h) HashTableDestroy(sh->h, 0); if (sh->tag_pool) pool_destroy(sh->tag_pool); if (sh->type_pool) pool_destroy(sh->type_pool); if (sh->str_pool) string_pool_destroy(sh->str_pool); free(sh); return NULL; } /* * Tokenises a SAM header into a hash table. * Also extracts a few bits on specific data types, such as @RG lines. * * Returns a SAM_hdr struct on success (free with sam_hdr_free()) * NULL on failure */ SAM_hdr *sam_hdr_parse(const char *hdr, int len) { /* Make an empty SAM_hdr */ SAM_hdr *sh; sh = sam_hdr_new(); if (NULL == sh) return NULL; if (NULL == hdr) return sh; // empty header is permitted /* Parse the header, line by line */ if (-1 == sam_hdr_add_lines(sh, hdr, len)) { sam_hdr_free(sh); return NULL; } /* Obtain sort order */ sh->sort_order = sam_hdr_parse_sort_order(sh); //sam_hdr_dump(sh); //sam_hdr_add(sh, "RG", "ID", "foo", "SM", "bar", NULL); //sam_hdr_rebuild(sh); //printf(">>%s<<", DSTRING_STR(sh->text)); //parse_references(sh); //parse_read_groups(sh); sam_hdr_link_pg(sh); //sam_hdr_dump(sh); return sh; } /* * Produces a duplicate copy of hdr and returns it. * Returns NULL on failure */ SAM_hdr *sam_hdr_dup(SAM_hdr *hdr) { if (-1 == sam_hdr_rebuild(hdr)) return NULL; return sam_hdr_parse(sam_hdr_str(hdr), sam_hdr_length(hdr)); } /*! Increments a reference count on hdr. * * This permits multiple files to share the same header, all calling * sam_hdr_free when done, without causing errors for other open files. */ void sam_hdr_incr_ref(SAM_hdr *hdr) { hdr->ref_count++; } /*! Increments a reference count on hdr. * * This permits multiple files to share the same header, all calling * sam_hdr_free when done, without causing errors for other open files. * * If the reference count hits zero then the header is automatically * freed. This makes it a synonym for sam_hdr_free(). */ void sam_hdr_decr_ref(SAM_hdr *hdr) { sam_hdr_free(hdr); } /*! Deallocates all storage used by a SAM_hdr struct. * * This also decrements the header reference count. If after decrementing * it is still non-zero then the header is assumed to be in use by another * caller and the free is not done. * * This is a synonym for sam_hdr_dec_ref(). */ void sam_hdr_free(SAM_hdr *hdr) { if (!hdr) return; if (--hdr->ref_count > 0) return; if (hdr->text) dstring_destroy(hdr->text); if (hdr->h) HashTableDestroy(hdr->h, 0); if (hdr->ref_hash) HashTableDestroy(hdr->ref_hash, 0); if (hdr->ref) { int i; for (i = 0; i < hdr->nref; i++) if (hdr->ref[i].name) free(hdr->ref[i].name); free(hdr->ref); } if (hdr->rg_hash) HashTableDestroy(hdr->rg_hash, 0); if (hdr->rg) { int i; for (i = 0; i < hdr->nrg; i++) if (hdr->rg[i].name) free(hdr->rg[i].name); free(hdr->rg); } if (hdr->pg_hash) HashTableDestroy(hdr->pg_hash, 0); if (hdr->pg) { int i; for (i = 0; i < hdr->npg; i++) if (hdr->pg[i].name) free(hdr->pg[i].name); free(hdr->pg); } if (hdr->pg_end) free(hdr->pg_end); if (hdr->type_pool) pool_destroy(hdr->type_pool); if (hdr->tag_pool) pool_destroy(hdr->tag_pool); if (hdr->str_pool) string_pool_destroy(hdr->str_pool); free(hdr); } int sam_hdr_length(SAM_hdr *hdr) { return dstring_length(hdr->text); } char *sam_hdr_str(SAM_hdr *hdr) { return dstring_str(hdr->text); } /* * Looks up a reference sequence by name and returns the numerical ID. * Returns -1 if unknown reference. */ int sam_hdr_name2ref(SAM_hdr *hdr, char *ref) { HashItem *hi = HashTableSearch(hdr->ref_hash, ref, strlen(ref)); return hi ? hi->data.i : -1; } /* * Looks up a read-group by name and returns a pointer to the start of the * associated tag list. * * Returns NULL on failure */ SAM_RG *sam_hdr_find_rg(SAM_hdr *hdr, char *rg) { HashItem *hi = HashTableSearch(hdr->rg_hash, rg, 0); return hi ? &hdr->rg[hi->data.i] : NULL; } /* * Fixes any PP links in @PG headers. * If the entries are in order then this doesn't need doing, but incase * our header is out of order this goes through the sh->pg[] array * setting the prev_id field. * * Note we can have multiple complete chains. This code should identify the * tails of these chains as these are the entries we have to link to in * subsequent PP records. * * Returns 0 on sucess * -1 on failure (indicating broken PG/PP records) */ int sam_hdr_link_pg(SAM_hdr *hdr) { int i, j, ret = 0; hdr->npg_end_alloc = hdr->npg; hdr->pg_end = realloc(hdr->pg_end, hdr->npg * sizeof(*hdr->pg_end)); if (!hdr->pg_end) return -1; for (i = 0; i < hdr->npg; i++) hdr->pg_end[i] = i; for (i = 0; i < hdr->npg; i++) { HashItem *hi; SAM_hdr_tag *tag; for (tag = hdr->pg[i].tag; tag; tag = tag->next) { if (tag->str[0] == 'P' && tag->str[1] == 'P') break; } if (!tag) { /* Chain start points */ continue; } hi = HashTableSearch(hdr->pg_hash, tag->str+3, tag->len-3); if (!hi) { ret = -1; continue; } hdr->pg[i].prev_id = hdr->pg[hi->data.i].id; hdr->pg_end[hi->data.i] = -1; } for (i = j = 0; i < hdr->npg; i++) { if (hdr->pg_end[i] != -1) hdr->pg_end[j++] = hdr->pg_end[i]; } hdr->npg_end = j; return ret; } /* * Returns a unique ID from a base name. * * The value returned is valid until the next call to * this function. */ const char *sam_hdr_PG_ID(SAM_hdr *sh, const char *name) { if (!(HashTableSearch(sh->pg_hash, (char *)name, 0))) return name; do { sprintf(sh->ID_buf, "%.1000s.%d", name, sh->ID_cnt++); } while (HashTableSearch(sh->pg_hash, sh->ID_buf, 0)); return sh->ID_buf; } /* * Add an @PG line. * * If we wish complete control over this use sam_hdr_add() directly. This * function uses that, but attempts to do a lot of tedious house work for * you too. * * - It will generate a suitable ID if the supplied one clashes. * - It will generate multiple @PG records if we have multiple PG chains. * * Call it as per sam_hdr_add() with a series of key,value pairs ending * in NULL. * * Returns 0 on success * -1 on failure */ int sam_hdr_add_PG(SAM_hdr *sh, const char *name, ...) { va_list args; va_start(args, name); if (sh->npg_end) { /* Copy ends array to avoid us looping while modifying it */ int *end = malloc(sh->npg_end * sizeof(int)); int i, nends = sh->npg_end; if (!end) return -1; memcpy(end, sh->pg_end, nends * sizeof(*end)); for (i = 0; i < nends; i++) { if (-1 == sam_hdr_vadd(sh, "PG", args, "ID", sam_hdr_PG_ID(sh, name), "PN", name, "PP", sh->pg[end[i]].name, NULL)) { free(end); return -1; } } free(end); } else { if (-1 == sam_hdr_vadd(sh, "PG", args, "ID", sam_hdr_PG_ID(sh, name), "PN", name, NULL)) return -1; } //sam_hdr_dump(sh); return 0; } /* * A function to help with construction of CL tags in @PG records. * Takes an argc, argv pair and returns a single space-separated string. * This string should be deallocated by the calling function. * * Returns malloced char * on success * NULL on failure */ char *stringify_argv(int argc, char *argv[]) { char *str, *cp; size_t nbytes = 1; int i, j; /* Allocate */ for (i = 0; i < argc; i++) { nbytes += strlen(argv[i]) + 1; } if (!(str = malloc(nbytes))) return NULL; /* Copy */ cp = str; for (i = 0; i < argc; i++) { j = 0; while (argv[i][j]) { if (argv[i][j] == '\t') *cp++ = ' '; else *cp++ = argv[i][j]; j++; } *cp++ = ' '; } *cp++ = 0; return str; } io_lib-1.14.6/io_lib/rANS_static.c0000644000031500020650000007761512572026270013553 00000000000000/*-------------------------------------------------------------------------- */ /* rans_byte.h from https://github.com/rygorous/ryg_rans */ // Simple byte-aligned rANS encoder/decoder - public domain - Fabian 'ryg' Giesen 2014 // // Not intended to be "industrial strength"; just meant to illustrate the general // idea. #ifndef RANS_BYTE_HEADER #define RANS_BYTE_HEADER #include #ifdef assert #define RansAssert assert #else #define RansAssert(x) #endif // READ ME FIRST: // // This is designed like a typical arithmetic coder API, but there's three // twists you absolutely should be aware of before you start hacking: // // 1. You need to encode data in *reverse* - last symbol first. rANS works // like a stack: last in, first out. // 2. Likewise, the encoder outputs bytes *in reverse* - that is, you give // it a pointer to the *end* of your buffer (exclusive), and it will // slowly move towards the beginning as more bytes are emitted. // 3. Unlike basically any other entropy coder implementation you might // have used, you can interleave data from multiple independent rANS // encoders into the same bytestream without any extra signaling; // you can also just write some bytes by yourself in the middle if // you want to. This is in addition to the usual arithmetic encoder // property of being able to switch models on the fly. Writing raw // bytes can be useful when you have some data that you know is // incompressible, and is cheaper than going through the rANS encode // function. Using multiple rANS coders on the same byte stream wastes // a few bytes compared to using just one, but execution of two // independent encoders can happen in parallel on superscalar and // Out-of-Order CPUs, so this can be *much* faster in tight decoding // loops. // // This is why all the rANS functions take the write pointer as an // argument instead of just storing it in some context struct. // -------------------------------------------------------------------------- // L ('l' in the paper) is the lower bound of our normalization interval. // Between this and our byte-aligned emission, we use 31 (not 32!) bits. // This is done intentionally because exact reciprocals for 31-bit uints // fit in 32-bit uints: this permits some optimizations during encoding. #define RANS_BYTE_L (1u << 23) // lower bound of our normalization interval // State for a rANS encoder. Yep, that's all there is to it. typedef uint32_t RansState; // Initialize a rANS encoder. static inline void RansEncInit(RansState* r) { *r = RANS_BYTE_L; } #if 0 /* Curently unused */ // Renormalize the encoder. Internal function. static inline RansState RansEncRenorm(RansState x, uint8_t** pptr, uint32_t freq, uint32_t scale_bits) { uint32_t x_max = ((RANS_BYTE_L >> scale_bits) << 8) * freq; // this turns into a shift. if (x >= x_max) { uint8_t* ptr = *pptr; do { *--ptr = (uint8_t) (x & 0xff); x >>= 8; } while (x >= x_max); *pptr = ptr; } return x; } // Encodes a single symbol with range start "start" and frequency "freq". // All frequencies are assumed to sum to "1 << scale_bits", and the // resulting bytes get written to ptr (which is updated). // // NOTE: With rANS, you need to encode symbols in *reverse order*, i.e. from // beginning to end! Likewise, the output bytestream is written *backwards*: // ptr starts pointing at the end of the output buffer and keeps decrementing. static inline void RansEncPut(RansState* r, uint8_t** pptr, uint32_t start, uint32_t freq, uint32_t scale_bits) { // renormalize RansState x = RansEncRenorm(*r, pptr, freq, scale_bits); // x = C(s,x) *r = ((x / freq) << scale_bits) + (x % freq) + start; } #endif /* Currently unused */ // Flushes the rANS encoder. static inline void RansEncFlush(RansState* r, uint8_t** pptr) { uint32_t x = *r; uint8_t* ptr = *pptr; ptr -= 4; ptr[0] = (uint8_t) (x >> 0); ptr[1] = (uint8_t) (x >> 8); ptr[2] = (uint8_t) (x >> 16); ptr[3] = (uint8_t) (x >> 24); *pptr = ptr; } // Initializes a rANS decoder. // Unlike the encoder, the decoder works forwards as you'd expect. static inline void RansDecInit(RansState* r, uint8_t** pptr) { uint32_t x; uint8_t* ptr = *pptr; x = ptr[0] << 0; x |= ptr[1] << 8; x |= ptr[2] << 16; x |= ptr[3] << 24; ptr += 4; *pptr = ptr; *r = x; } // Returns the current cumulative frequency (map it to a symbol yourself!) static inline uint32_t RansDecGet(RansState* r, uint32_t scale_bits) { return *r & ((1u << scale_bits) - 1); } // Advances in the bit stream by "popping" a single symbol with range start // "start" and frequency "freq". All frequencies are assumed to sum to "1 << scale_bits", // and the resulting bytes get written to ptr (which is updated). static inline void RansDecAdvance(RansState* r, uint8_t** pptr, uint32_t start, uint32_t freq, uint32_t scale_bits) { uint32_t mask = (1u << scale_bits) - 1; // s, x = D(x) uint32_t x = *r; x = freq * (x >> scale_bits) + (x & mask) - start; // renormalize if (x < RANS_BYTE_L) { uint8_t* ptr = *pptr; do x = (x << 8) | *ptr++; while (x < RANS_BYTE_L); *pptr = ptr; } *r = x; } // -------------------------------------------------------------------------- // That's all you need for a full encoder; below here are some utility // functions with extra convenience or optimizations. // Encoder symbol description // This (admittedly odd) selection of parameters was chosen to make // RansEncPutSymbol as cheap as possible. typedef struct { uint32_t x_max; // (Exclusive) upper bound of pre-normalization interval uint32_t rcp_freq; // Fixed-point reciprocal frequency uint32_t bias; // Bias uint16_t cmpl_freq; // Complement of frequency: (1 << scale_bits) - freq uint16_t rcp_shift; // Reciprocal shift } RansEncSymbol; // Decoder symbols are straightforward. typedef struct { uint16_t start; // Start of range. uint16_t freq; // Symbol frequency. } RansDecSymbol; // Initializes an encoder symbol to start "start" and frequency "freq" static inline void RansEncSymbolInit(RansEncSymbol* s, uint32_t start, uint32_t freq, uint32_t scale_bits) { RansAssert(scale_bits <= 16); RansAssert(start <= (1u << scale_bits)); RansAssert(freq <= (1u << scale_bits) - start); // Say M := 1 << scale_bits. // // The original encoder does: // x_new = (x/freq)*M + start + (x%freq) // // The fast encoder does (schematically): // q = mul_hi(x, rcp_freq) >> rcp_shift (division) // r = x - q*freq (remainder) // x_new = q*M + bias + r (new x) // plugging in r into x_new yields: // x_new = bias + x + q*(M - freq) // =: bias + x + q*cmpl_freq (*) // // and we can just precompute cmpl_freq. Now we just need to // set up our parameters such that the original encoder and // the fast encoder agree. s->x_max = ((RANS_BYTE_L >> scale_bits) << 8) * freq; s->cmpl_freq = (uint16_t) ((1 << scale_bits) - freq); if (freq < 2) { // freq=0 symbols are never valid to encode, so it doesn't matter what // we set our values to. // // freq=1 is tricky, since the reciprocal of 1 is 1; unfortunately, // our fixed-point reciprocal approximation can only multiply by values // smaller than 1. // // So we use the "next best thing": rcp_freq=0xffffffff, rcp_shift=0. // This gives: // q = mul_hi(x, rcp_freq) >> rcp_shift // = mul_hi(x, (1<<32) - 1)) >> 0 // = floor(x - x/(2^32)) // = x - 1 if 1 <= x < 2^32 // and we know that x>0 (x=0 is never in a valid normalization interval). // // So we now need to choose the other parameters such that // x_new = x*M + start // plug it in: // x*M + start (desired result) // = bias + x + q*cmpl_freq (*) // = bias + x + (x - 1)*(M - 1) (plug in q=x-1, cmpl_freq) // = bias + 1 + (x - 1)*M // = x*M + (bias + 1 - M) // // so we have start = bias + 1 - M, or equivalently // bias = start + M - 1. s->rcp_freq = ~0u; s->rcp_shift = 0; s->bias = start + (1 << scale_bits) - 1; } else { // Alverson, "Integer Division using reciprocals" // shift=ceil(log2(freq)) uint32_t shift = 0; while (freq > (1u << shift)) shift++; s->rcp_freq = (uint32_t) (((1ull << (shift + 31)) + freq-1) / freq); s->rcp_shift = shift - 1; // With these values, 'q' is the correct quotient, so we // have bias=start. s->bias = start; } s->rcp_shift += 32; // Avoid the extra >>32 in RansEncPutSymbol } // Initialize a decoder symbol to start "start" and frequency "freq" static inline void RansDecSymbolInit(RansDecSymbol* s, uint32_t start, uint32_t freq) { RansAssert(start <= (1 << 16)); RansAssert(freq <= (1 << 16) - start); s->start = (uint16_t) start; s->freq = (uint16_t) freq; } // Encodes a given symbol. This is faster than straight RansEnc since we can do // multiplications instead of a divide. // // See RansEncSymbolInit for a description of how this works. static inline void RansEncPutSymbol(RansState* r, uint8_t** pptr, RansEncSymbol const* sym) { RansAssert(sym->x_max != 0); // can't encode symbol with freq=0 // renormalize uint32_t x = *r; uint32_t x_max = sym->x_max; if (x >= x_max) { uint8_t* ptr = *pptr; do { *--ptr = (uint8_t) (x & 0xff); x >>= 8; } while (x >= x_max); *pptr = ptr; } // x = C(s,x) // NOTE: written this way so we get a 32-bit "multiply high" when // available. If you're on a 64-bit platform with cheap multiplies // (e.g. x64), just bake the +32 into rcp_shift. //uint32_t q = (uint32_t) (((uint64_t)x * sym->rcp_freq) >> 32) >> sym->rcp_shift; // The extra >>32 has already been added to RansEncSymbolInit uint32_t q = (uint32_t) (((uint64_t)x * sym->rcp_freq) >> sym->rcp_shift); *r = x + sym->bias + q * sym->cmpl_freq; } // Equivalent to RansDecAdvance that takes a symbol. static inline void RansDecAdvanceSymbol(RansState* r, uint8_t** pptr, RansDecSymbol const* sym, uint32_t scale_bits) { RansDecAdvance(r, pptr, sym->start, sym->freq, scale_bits); } #if 0 /* Currently unused */ // Advances in the bit stream by "popping" a single symbol with range start // "start" and frequency "freq". All frequencies are assumed to sum to "1 << scale_bits". // No renormalization or output happens. static inline void RansDecAdvanceStep(RansState* r, uint32_t start, uint32_t freq, uint32_t scale_bits) { uint32_t mask = (1u << scale_bits) - 1; // s, x = D(x) uint32_t x = *r; *r = freq * (x >> scale_bits) + (x & mask) - start; } // Equivalent to RansDecAdvanceStep that takes a symbol. static inline void RansDecAdvanceSymbolStep(RansState* r, RansDecSymbol const* sym, uint32_t scale_bits) { RansDecAdvanceStep(r, sym->start, sym->freq, scale_bits); } #endif /* Currently unused */ // Renormalize. static inline void RansDecRenorm(RansState* r, uint8_t** pptr) { // renormalize uint32_t x = *r; if (x < RANS_BYTE_L) { uint8_t* ptr = *pptr; do x = (x << 8) | *ptr++; while (x < RANS_BYTE_L); *pptr = ptr; } *r = x; } #endif // RANS_BYTE_HEADER /*-------------------------------------------------------------------------- */ /* * Example wrapper to use the rans_byte.h functions included above. * * This demonstrates how to use, and unroll, an order-0 and order-1 frequency * model. */ /* * Copyright (c) 2014 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * Author: James Bonfield, Wellcome Trust Sanger Institute. 2014 */ #include #include #include #include #include #include #include #define TF_SHIFT 12 #define TOTFREQ (1<0?(a):-(a)) #ifndef BLK_SIZE # define BLK_SIZE 1024*1024 #endif // Room to allow for expanded BLK_SIZE on worst case compression. #define BLK_SIZE2 ((int)(1.05*BLK_SIZE)) /*----------------------------------------------------------------------------- * Memory to memory compression functions. * * These are original versions without any manual loop unrolling. They * are easier to understand, but can be up to 2x slower. */ unsigned char *rans_compress_O0(unsigned char *in, unsigned int in_size, unsigned int *out_size) { unsigned char *out_buf = malloc(1.05*in_size + 257*257*3 + 9); unsigned char *cp, *out_end; RansEncSymbol syms[256]; RansState rans0, rans1, rans2, rans3; uint8_t* ptr; int F[256] = {0}, i, j, tab_size, rle, x, fsum = 0; int m = 0, M = 0; uint64_t tr; if (!out_buf) return NULL; ptr = out_end = out_buf + (int)(1.05*in_size) + 257*257*3 + 9; // Compute statistics for (i = 0; i < in_size; i++) { F[in[i]]++; } tr = ((uint64_t)TOTFREQ<<31)/in_size + (1<<30)/in_size; // Normalise so T[i] == TOTFREQ for (m = M = j = 0; j < 256; j++) { if (!F[j]) continue; if (m < F[j]) m = F[j], M = j; if ((F[j] = (F[j]*tr)>>31) == 0) F[j] = 1; fsum += F[j]; } fsum++; if (fsum < TOTFREQ) F[M] += TOTFREQ-fsum; else F[M] -= fsum-TOTFREQ; //printf("F[%d]=%d\n", M, F[M]); assert(F[M]>0); // Encode statistics. cp = out_buf+9; for (x = rle = j = 0; j < 256; j++) { if (F[j]) { // j if (rle) { rle--; } else { *cp++ = j; if (!rle && j && F[j-1]) { for(rle=j+1; rle<256 && F[rle]; rle++) ; rle -= j+1; *cp++ = rle; } //fprintf(stderr, "%d: %d %d\n", j, rle, N[j]); } // F[j] if (F[j]<128) { *cp++ = F[j]; } else { *cp++ = 128 | (F[j]>>8); *cp++ = F[j]&0xff; } RansEncSymbolInit(&syms[j], x, F[j], TF_SHIFT); x += F[j]; } } *cp++ = 0; //write(1, out_buf+4, cp-(out_buf+4)); tab_size = cp-out_buf; RansEncInit(&rans0); RansEncInit(&rans1); RansEncInit(&rans2); RansEncInit(&rans3); switch (i=(in_size&3)) { case 3: RansEncPutSymbol(&rans2, &ptr, &syms[in[in_size-(i-2)]]); case 2: RansEncPutSymbol(&rans1, &ptr, &syms[in[in_size-(i-1)]]); case 1: RansEncPutSymbol(&rans0, &ptr, &syms[in[in_size-(i-0)]]); case 0: break; } for (i=(in_size &~3); i>0; i-=4) { RansEncSymbol *s3 = &syms[in[i-1]]; RansEncSymbol *s2 = &syms[in[i-2]]; RansEncSymbol *s1 = &syms[in[i-3]]; RansEncSymbol *s0 = &syms[in[i-4]]; RansEncPutSymbol(&rans3, &ptr, s3); RansEncPutSymbol(&rans2, &ptr, s2); RansEncPutSymbol(&rans1, &ptr, s1); RansEncPutSymbol(&rans0, &ptr, s0); } RansEncFlush(&rans3, &ptr); RansEncFlush(&rans2, &ptr); RansEncFlush(&rans1, &ptr); RansEncFlush(&rans0, &ptr); // Finalise block size and return it *out_size = (out_end - ptr) + tab_size; cp = out_buf; *cp++ = 0; // order *cp++ = ((*out_size-9)>> 0) & 0xff; *cp++ = ((*out_size-9)>> 8) & 0xff; *cp++ = ((*out_size-9)>>16) & 0xff; *cp++ = ((*out_size-9)>>24) & 0xff; *cp++ = (in_size>> 0) & 0xff; *cp++ = (in_size>> 8) & 0xff; *cp++ = (in_size>>16) & 0xff; *cp++ = (in_size>>24) & 0xff; memmove(out_buf + tab_size, ptr, out_end-ptr); return out_buf; } typedef struct { struct { int F; int C; } fc[256]; unsigned char *R; } ari_decoder; unsigned char *rans_uncompress_O0(unsigned char *in, unsigned int in_size, unsigned int *out_size) { /* Load in the static tables */ unsigned char *cp = in + 9; int i, j, x, out_sz, in_sz, rle; char *out_buf; ari_decoder D; RansDecSymbol syms[256]; memset(&D, 0, sizeof(D)); if (*in++ != 0) // Order-0 check return NULL; in_sz = ((in[0])<<0) | ((in[1])<<8) | ((in[2])<<16) | ((in[3])<<24); out_sz = ((in[4])<<0) | ((in[5])<<8) | ((in[6])<<16) | ((in[7])<<24); if (in_sz != in_size-9) return NULL; out_buf = malloc(out_sz); if (!out_buf) return NULL; //fprintf(stderr, "out_sz=%d\n", out_sz); // Precompute reverse lookup of frequency. rle = x = 0; j = *cp++; do { if ((D.fc[j].F = *cp++) >= 128) { D.fc[j].F &= ~128; D.fc[j].F = ((D.fc[j].F & 127) << 8) | *cp++; } D.fc[j].C = x; if (x+D.fc[j].F > TOTFREQ) return NULL; RansDecSymbolInit(&syms[j], D.fc[j].C, D.fc[j].F); /* Build reverse lookup table */ if (!D.R) D.R = (unsigned char *)malloc(TOTFREQ); memset(&D.R[x], j, D.fc[j].F); x += D.fc[j].F; if (!rle && j+1 == *cp) { j = *cp++; rle = *cp++; } else if (rle) { rle--; j++; } else { j = *cp++; } } while(j); assert(x < TOTFREQ); RansState rans0, rans1, rans2, rans3; uint8_t *ptr = cp; RansDecInit(&rans0, &ptr); RansDecInit(&rans1, &ptr); RansDecInit(&rans2, &ptr); RansDecInit(&rans3, &ptr); int out_end = (out_sz&~3); RansState R[4]; R[0] = rans0; R[1] = rans1; R[2] = rans2; R[3] = rans3; uint32_t mask = (1u << TF_SHIFT)-1; for (i=0; i < out_end; i+=4) { uint32_t m[4] = {R[0] & mask, R[1] & mask, R[2] & mask, R[3] & mask}; uint8_t c[4] = {D.R[m[0]], D.R[m[1]], D.R[m[2]], D.R[m[3]]}; out_buf[i+0] = c[0]; out_buf[i+1] = c[1]; out_buf[i+2] = c[2]; out_buf[i+3] = c[3]; // RansDecAdvanceSymbolStep(&R[0], &syms[c[0]], TF_SHIFT); // RansDecAdvanceSymbolStep(&R[1], &syms[c[1]], TF_SHIFT); // RansDecAdvanceSymbolStep(&R[2], &syms[c[2]], TF_SHIFT); // RansDecAdvanceSymbolStep(&R[3], &syms[c[3]], TF_SHIFT); R[0] = syms[c[0]].freq * (R[0]>>TF_SHIFT); R[1] = syms[c[1]].freq * (R[1]>>TF_SHIFT); R[2] = syms[c[2]].freq * (R[2]>>TF_SHIFT); R[3] = syms[c[3]].freq * (R[3]>>TF_SHIFT); R[0] += m[0] - syms[c[0]].start; R[1] += m[1] - syms[c[1]].start; R[2] += m[2] - syms[c[2]].start; R[3] += m[3] - syms[c[3]].start; RansDecRenorm(&R[0], &ptr); RansDecRenorm(&R[1], &ptr); RansDecRenorm(&R[2], &ptr); RansDecRenorm(&R[3], &ptr); } rans0 = R[0]; rans1 = R[1]; rans2 = R[2]; rans3 = R[3]; switch(out_sz&3) { unsigned char c; case 0: break; case 1: c = D.R[RansDecGet(&rans0, TF_SHIFT)]; RansDecAdvanceSymbol(&rans0, &ptr, &syms[c], TF_SHIFT); out_buf[out_end] = c; break; case 2: c = D.R[RansDecGet(&rans0, TF_SHIFT)]; RansDecAdvanceSymbol(&rans0, &ptr, &syms[c], TF_SHIFT); out_buf[out_end] = c; c = D.R[RansDecGet(&rans1, TF_SHIFT)]; RansDecAdvanceSymbol(&rans1, &ptr, &syms[c], TF_SHIFT); out_buf[out_end+1] = c; break; case 3: c = D.R[RansDecGet(&rans0, TF_SHIFT)]; RansDecAdvanceSymbol(&rans0, &ptr, &syms[c], TF_SHIFT); out_buf[out_end] = c; c = D.R[RansDecGet(&rans1, TF_SHIFT)]; RansDecAdvanceSymbol(&rans1, &ptr, &syms[c], TF_SHIFT); out_buf[out_end+1] = c; c = D.R[RansDecGet(&rans2, TF_SHIFT)]; RansDecAdvanceSymbol(&rans2, &ptr, &syms[c], TF_SHIFT); out_buf[out_end+2] = c; break; } *out_size = out_sz; if (D.R) free(D.R); return (unsigned char *)out_buf; } unsigned char *rans_compress_O1(unsigned char *in, unsigned int in_size, unsigned int *out_size) { unsigned char *out_buf = NULL, *out_end, *cp; unsigned int last_i, tab_size, rle_i, rle_j; RansEncSymbol (*syms)[256] = NULL; /* syms[256][256] */ int (*F)[256] = NULL; /* F[256][256] */ int *T = NULL; /* T[256] */ int i, j; unsigned char c; if (in_size < 4) return rans_compress_O0(in, in_size, out_size); syms = malloc(256 * sizeof(*syms)); if (!syms) goto cleanup; F = calloc(256, sizeof(*F)); if (!F) goto cleanup; T = calloc(256, sizeof(*T)); if (!T) goto cleanup; out_buf = malloc(1.05*in_size + 257*257*3 + 9); if (!out_buf) goto cleanup; out_end = out_buf + (int)(1.05*in_size) + 257*257*3 + 9; cp = out_buf+9; //for (last = 0, i=in_size-1; i>=0; i--) { // F[last][c = in[i]]++; // T[last]++; // last = c; //} for (last_i=i=0; i>2)]]++; F[0][in[2*(in_size>>2)]]++; F[0][in[3*(in_size>>2)]]++; T[0]+=3; // Normalise so T[i] == TOTFREQ for (rle_i = i = 0; i < 256; i++) { int t2, m, M; unsigned int x; if (T[i] == 0) continue; //uint64_t p = (TOTFREQ * TOTFREQ) / t; double p = ((double)TOTFREQ)/T[i]; for (t2 = m = M = j = 0; j < 256; j++) { if (!F[i][j]) continue; if (m < F[i][j]) m = F[i][j], M = j; //if ((F[i][j] = (F[i][j] * p) / TOTFREQ) == 0) if ((F[i][j] *= p) == 0) F[i][j] = 1; t2 += F[i][j]; } t2++; if (t2 < TOTFREQ) F[i][M] += TOTFREQ-t2; else F[i][M] -= t2-TOTFREQ; // Store frequency table // i if (rle_i) { rle_i--; } else { *cp++ = i; // FIXME: could use order-0 statistics to observe which alphabet // symbols are present and base RLE on that ordering instead. if (i && T[i-1]) { for(rle_i=i+1; rle_i<256 && T[rle_i]; rle_i++) ; rle_i -= i+1; *cp++ = rle_i; } } int *F_i_ = F[i]; x = 0; rle_j = 0; for (j = 0; j < 256; j++) { if (F_i_[j]) { //fprintf(stderr, "F[%d][%d]=%d, x=%d\n", i, j, F_i_[j], x); // j if (rle_j) { rle_j--; } else { *cp++ = j; if (!rle_j && j && F_i_[j-1]) { for(rle_j=j+1; rle_j<256 && F_i_[rle_j]; rle_j++) ; rle_j -= j+1; *cp++ = rle_j; } } // F_i_[j] if (F_i_[j]<128) { *cp++ = F_i_[j]; } else { *cp++ = 128 | (F_i_[j]>>8); *cp++ = F_i_[j]&0xff; } RansEncSymbolInit(&syms[i][j], x, F_i_[j], TF_SHIFT); x += F_i_[j]; } } *cp++ = 0; } *cp++ = 0; //write(1, out_buf+4, cp-(out_buf+4)); tab_size = cp - out_buf; assert(tab_size < 257*257*3); RansState rans0, rans1, rans2, rans3; RansEncInit(&rans0); RansEncInit(&rans1); RansEncInit(&rans2); RansEncInit(&rans3); uint8_t* ptr = out_end; int isz4 = in_size>>2; int i0 = 1*isz4-2; int i1 = 2*isz4-2; int i2 = 3*isz4-2; int i3 = 4*isz4-2; unsigned char l0 = in[i0+1]; unsigned char l1 = in[i1+1]; unsigned char l2 = in[i2+1]; unsigned char l3 = in[i3+1]; // Deal with the remainder l3 = in[in_size-1]; for (i3 = in_size-2; i3 > 4*isz4-2; i3--) { unsigned char c3 = in[i3]; RansEncPutSymbol(&rans3, &ptr, &syms[c3][l3]); l3 = c3; } for (; i0 >= 0; i0--, i1--, i2--, i3--) { unsigned char c0, c1, c2, c3; RansEncSymbol *s3 = &syms[c3 = in[i3]][l3]; RansEncSymbol *s2 = &syms[c2 = in[i2]][l2]; RansEncSymbol *s1 = &syms[c1 = in[i1]][l1]; RansEncSymbol *s0 = &syms[c0 = in[i0]][l0]; RansEncPutSymbol(&rans3, &ptr, s3); RansEncPutSymbol(&rans2, &ptr, s2); RansEncPutSymbol(&rans1, &ptr, s1); RansEncPutSymbol(&rans0, &ptr, s0); l0 = c0; l1 = c1; l2 = c2; l3 = c3; } RansEncPutSymbol(&rans3, &ptr, &syms[0][l3]); RansEncPutSymbol(&rans2, &ptr, &syms[0][l2]); RansEncPutSymbol(&rans1, &ptr, &syms[0][l1]); RansEncPutSymbol(&rans0, &ptr, &syms[0][l0]); RansEncFlush(&rans3, &ptr); RansEncFlush(&rans2, &ptr); RansEncFlush(&rans1, &ptr); RansEncFlush(&rans0, &ptr); *out_size = (out_end - ptr) + tab_size; cp = out_buf; *cp++ = 1; // order *cp++ = ((*out_size-9)>> 0) & 0xff; *cp++ = ((*out_size-9)>> 8) & 0xff; *cp++ = ((*out_size-9)>>16) & 0xff; *cp++ = ((*out_size-9)>>24) & 0xff; *cp++ = (in_size>> 0) & 0xff; *cp++ = (in_size>> 8) & 0xff; *cp++ = (in_size>>16) & 0xff; *cp++ = (in_size>>24) & 0xff; memmove(out_buf + tab_size, ptr, out_end-ptr); cleanup: free(syms); free(F); free(T); return out_buf; } unsigned char *rans_uncompress_O1(unsigned char *in, unsigned int in_size, unsigned int *out_size) { /* Load in the static tables */ unsigned char *cp = in + 9; int i, j = -999, x, out_sz, in_sz, rle_i, rle_j; char *out_buf = NULL; ari_decoder *D = NULL; /* D[256] */ RansDecSymbol (*syms)[256] = NULL; /* syms[256][256] */ if (*in++ != 1) // Order-1 check return NULL; in_sz = ((in[0])<<0) | ((in[1])<<8) | ((in[2])<<16) | ((in[3])<<24); out_sz = ((in[4])<<0) | ((in[5])<<8) | ((in[6])<<16) | ((in[7])<<24); if (in_sz != in_size-9) return NULL; D = calloc(256, sizeof(*D)); if (!D) goto cleanup; syms = malloc(256 * sizeof(*syms)); if (!syms) goto cleanup; //fprintf(stderr, "out_sz=%d\n", out_sz); //i = *cp++; rle_i = 0; i = *cp++; do { rle_j = x = 0; j = *cp++; do { if ((D[i].fc[j].F = *cp++) >= 128) { D[i].fc[j].F &= ~128; D[i].fc[j].F = ((D[i].fc[j].F & 127) << 8) | *cp++; } D[i].fc[j].C = x; //fprintf(stderr, "i=%d j=%d F=%d C=%d\n", i, j, D[i].fc[j].F, D[i].fc[j].C); if (!D[i].fc[j].F) D[i].fc[j].F = TOTFREQ; if (x+D[i].fc[j].F > TOTFREQ) return NULL; RansDecSymbolInit(&syms[i][j], D[i].fc[j].C, D[i].fc[j].F); /* Build reverse lookup table */ if (!D[i].R) { D[i].R = (unsigned char *)malloc(TOTFREQ); if (!D[i].R) goto cleanup; } memset(&D[i].R[x], j, D[i].fc[j].F); x += D[i].fc[j].F; assert(x <= TOTFREQ); if (!rle_j && j+1 == *cp) { j = *cp++; rle_j = *cp++; } else if (rle_j) { rle_j--; j++; } else { j = *cp++; } } while(j); if (!rle_i && i+1 == *cp) { i = *cp++; rle_i = *cp++; } else if (rle_i) { rle_i--; i++; } else { i = *cp++; } } while (i); // Precompute reverse lookup of frequency. RansState rans0, rans1, rans2, rans3; uint8_t *ptr = cp; RansDecInit(&rans0, &ptr); RansDecInit(&rans1, &ptr); RansDecInit(&rans2, &ptr); RansDecInit(&rans3, &ptr); int isz4 = out_sz>>2; int l0 = 0; int l1 = 0; int l2 = 0; int l3 = 0; int i4[] = {0*isz4, 1*isz4, 2*isz4, 3*isz4}; RansState R[4]; R[0] = rans0; R[1] = rans1; R[2] = rans2; R[3] = rans3; /* Allocate output buffer */ out_buf = malloc(out_sz); if (!out_buf) goto cleanup; for (; i4[0] < isz4; i4[0]++, i4[1]++, i4[2]++, i4[3]++) { uint32_t m[4] = {R[0] & ((1u << TF_SHIFT)-1), R[1] & ((1u << TF_SHIFT)-1), R[2] & ((1u << TF_SHIFT)-1), R[3] & ((1u << TF_SHIFT)-1)}; uint8_t c[4] = {D[l0].R[m[0]], D[l1].R[m[1]], D[l2].R[m[2]], D[l3].R[m[3]]}; out_buf[i4[0]] = c[0]; out_buf[i4[1]] = c[1]; out_buf[i4[2]] = c[2]; out_buf[i4[3]] = c[3]; //RansDecAdvanceSymbolStep(&R[0], &syms[l0][c[0]], TF_SHIFT); //RansDecAdvanceSymbolStep(&R[1], &syms[l1][c[1]], TF_SHIFT); //RansDecAdvanceSymbolStep(&R[2], &syms[l2][c[2]], TF_SHIFT); //RansDecAdvanceSymbolStep(&R[3], &syms[l3][c[3]], TF_SHIFT); R[0] = syms[l0][c[0]].freq * (R[0]>>TF_SHIFT); R[1] = syms[l1][c[1]].freq * (R[1]>>TF_SHIFT); R[2] = syms[l2][c[2]].freq * (R[2]>>TF_SHIFT); R[3] = syms[l3][c[3]].freq * (R[3]>>TF_SHIFT); R[0] += m[0] - syms[l0][c[0]].start; R[1] += m[1] - syms[l1][c[1]].start; R[2] += m[2] - syms[l2][c[2]].start; R[3] += m[3] - syms[l3][c[3]].start; RansDecRenorm(&R[0], &ptr); RansDecRenorm(&R[1], &ptr); RansDecRenorm(&R[2], &ptr); RansDecRenorm(&R[3], &ptr); l0 = c[0]; l1 = c[1]; l2 = c[2]; l3 = c[3]; } rans0 = R[0]; rans1 = R[1]; rans2 = R[2]; rans3 = R[3]; // Remainder for (; i4[3] < out_sz; i4[3]++) { unsigned char c3 = D[l3].R[RansDecGet(&rans3, TF_SHIFT)]; out_buf[i4[3]] = c3; RansDecAdvanceSymbol(&rans3, &ptr, &syms[l3][c3], TF_SHIFT); l3 = c3; } *out_size = out_sz; cleanup: if (D) { for (i = 0; i < 256; i++) if (D[i].R) free(D[i].R); free(D); } free(syms); return (unsigned char *)out_buf; } /*----------------------------------------------------------------------------- * Simple interface to the order-0 vs order-1 encoders and decoders. */ unsigned char *rans_compress(unsigned char *in, unsigned int in_size, unsigned int *out_size, int order) { return order ? rans_compress_O1(in, in_size, out_size) : rans_compress_O0(in, in_size, out_size); } unsigned char *rans_uncompress(unsigned char *in, unsigned int in_size, unsigned int *out_size) { /* Both rans_uncompress functions need to be able to read at least 9 bytes. */ if (in_size < 9) return NULL; return in[0] ? rans_uncompress_O1(in, in_size, out_size) : rans_uncompress_O0(in, in_size, out_size); } #ifdef TEST_MAIN /*----------------------------------------------------------------------------- * Main */ int main(int argc, char **argv) { int opt, order = 0; unsigned char in_buf[BLK_SIZE2+257*257*3]; int decode = 0; FILE *infp = stdin, *outfp = stdout; struct timeval tv1, tv2; size_t bytes = 0; extern char *optarg; extern int optind; while ((opt = getopt(argc, argv, "o:d")) != -1) { switch (opt) { case 'o': order = atoi(optarg); break; case 'd': decode = 1; break; } } order = order ? 1 : 0; // Only support O(0) and O(1) if (optind < argc) { if (!(infp = fopen(argv[optind], "rb"))) { perror(argv[optind]); return 1; } optind++; } if (optind < argc) { if (!(outfp = fopen(argv[optind], "wb"))) { perror(argv[optind]); return 1; } optind++; } gettimeofday(&tv1, NULL); if (decode) { // Only used in some test implementations of RC_GetFreq() //RC_init(); //RC_init2(); for (;;) { uint32_t in_size, out_size; unsigned char *out; if (4 != fread(&in_size, 1, 4, infp)) break; if (in_size != fread(in_buf, 1, in_size, infp)) { fprintf(stderr, "Truncated input\n"); exit(1); } out = rans_uncompress(in_buf, in_size, &out_size); if (!out) abort(); fwrite(out, 1, out_size, outfp); free(out); bytes += out_size; } } else { for (;;) { uint32_t in_size, out_size; unsigned char *out; in_size = fread(in_buf, 1, BLK_SIZE, infp); if (in_size <= 0) break; out = rans_compress(in_buf, in_size, &out_size, order); fwrite(&out_size, 1, 4, outfp); fwrite(out, 1, out_size, outfp); free(out); bytes += in_size; } } gettimeofday(&tv2, NULL); fprintf(stderr, "Took %ld microseconds, %5.1f MB/s\n", (long)(tv2.tv_sec - tv1.tv_sec)*1000000 + tv2.tv_usec - tv1.tv_usec, (double)bytes / ((long)(tv2.tv_sec - tv1.tv_sec)*1000000 + tv2.tv_usec - tv1.tv_usec)); return 0; } #endif io_lib-1.14.6/io_lib/rANS_static.h0000644000031500020650000000046212354177666013560 00000000000000#ifndef RANS_STATIC_H #define RANS_STATIC_H unsigned char *rans_compress(unsigned char *in, unsigned int in_size, unsigned int *out_size, int order); unsigned char *rans_uncompress(unsigned char *in, unsigned int in_size, unsigned int *out_size, int order); #endif /* RANS_STATIC_H */ io_lib-1.14.6/io_lib/cram_codecs.c0000644000031500020650000013515212617144060013630 00000000000000/* * Copyright (c) 2013, 2014, 2015 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * Author: James Bonfield, Wellcome Trust Sanger Institute. 2013 */ /* * FIXME: add checking of cram_external_type to return NULL on unsupported * {codec,type} tuples. */ #ifdef HAVE_CONFIG_H #include "io_lib_config.h" #endif #include #include #include #include #include "io_lib/cram.h" static char *codec2str(enum cram_encoding codec) { switch (codec) { case E_NULL: return "NULL"; case E_EXTERNAL: return "EXTERNAL"; case E_GOLOMB: return "GOLOMB"; case E_HUFFMAN: return "HUFFMAN"; case E_BYTE_ARRAY_LEN: return "BYTE_ARRAY_LEN"; case E_BYTE_ARRAY_STOP: return "BYTE_ARRAY_STOP"; case E_BETA: return "BETA"; case E_SUBEXP: return "SUBEXP"; case E_GOLOMB_RICE: return "GOLOMB_RICE"; case E_GAMMA: return "GAMMA"; default: return "(unknown)"; } } /* * --------------------------------------------------------------------------- * Block bit-level I/O functions. * All defined static here to promote easy inlining by the compiler. */ #if 0 /* Get a single bit, MSB first */ static signed int get_bit_MSB(cram_block *block) { unsigned int val; if (block->byte > block->alloc) return -1; val = block->data[block->byte] >> block->bit; if (--block->bit == -1) { block->bit = 7; block->byte++; //printf("(%02X)", block->data[block->byte]); } //printf("-B%d-", val&1); return val & 1; } #endif /* * Count number of successive 0 and 1 bits */ static int get_one_bits_MSB(cram_block *block) { int n = 0, b; if (block->byte >= block->uncomp_size) return -1; do { b = block->data[block->byte] >> block->bit; if (--block->bit == -1) { block->bit = 7; block->byte++; if (block->byte == block->uncomp_size && (b&1)) return -1; } n++; } while (b&1); return n-1; } static int get_zero_bits_MSB(cram_block *block) { int n = 0, b; if (block->byte >= block->uncomp_size) return -1; do { b = block->data[block->byte] >> block->bit; if (--block->bit == -1) { block->bit = 7; block->byte++; if (block->byte == block->uncomp_size && !(b&1)) return -1; } n++; } while (!(b&1)); return n-1; } #if 0 /* Stores a single bit */ static void store_bit_MSB(cram_block *block, unsigned int bit) { if (block->byte >= block->alloc) { block->alloc = block->alloc ? block->alloc*2 : 1024; block->data = realloc(block->data, block->alloc); } if (bit) block->data[block->byte] |= (1 << block->bit); if (--block->bit == -1) { block->bit = 7; block->byte++; block->data[block->byte] = 0; } } #endif #if 0 /* Rounds to the next whole byte boundary first */ static void store_bytes_MSB(cram_block *block, char *bytes, int len) { if (block->bit != 7) { block->bit = 7; block->byte++; } while (block->byte + len >= block->alloc) { block->alloc = block->alloc ? block->alloc*2 : 1024; block->data = realloc(block->data, block->alloc); } memcpy(&block->data[block->byte], bytes, len); block->byte += len; } #endif /* Local optimised copy for inlining */ static inline unsigned int get_bits_MSB(cram_block *block, int nbits) { unsigned int val = 0; int i; #if 0 // Fits within the current byte */ if (nbits <= block->bit+1) { val = (block->data[block->byte]>>(block->bit-(nbits-1))) & ((1<bit -= nbits) == -1) { block->bit = 7; block->byte++; } return val; } // partial first byte val = block->data[block->byte] & ((1<<(block->bit+1))-1); nbits -= block->bit+1; block->bit = 7; block->byte++; // whole middle bytes while (nbits >= 8) { val = (val << 8) | block->data[block->byte++]; nbits -= 8; } val <<= nbits; val |= (block->data[block->byte]>>(block->bit-(nbits-1))) & ((1<bit -= nbits; return val; #endif #if 0 /* Inefficient implementation! */ //printf("{"); for (i = 0; i < nbits; i++) //val = (val << 1) | get_bit_MSB(block); GET_BIT_MSB(block, val); #endif #if 1 /* Combination of 1st two methods */ if (nbits <= block->bit+1) { val = (block->data[block->byte]>>(block->bit-(nbits-1))) & ((1<bit -= nbits) == -1) { block->bit = 7; block->byte++; } return val; } // /* Consume as many as possible from current byte */ // val = block->data[block->byte] & ((1<<(block->bit+1))-1); // nbits -= block->bit+1; // block->bit = 7; // block->byte++; switch(nbits) { // case 15: GET_BIT_MSB(block, val); // case 14: GET_BIT_MSB(block, val); // case 13: GET_BIT_MSB(block, val); // case 12: GET_BIT_MSB(block, val); // case 11: GET_BIT_MSB(block, val); // case 10: GET_BIT_MSB(block, val); // case 9: GET_BIT_MSB(block, val); case 8: GET_BIT_MSB(block, val); case 7: GET_BIT_MSB(block, val); case 6: GET_BIT_MSB(block, val); case 5: GET_BIT_MSB(block, val); case 4: GET_BIT_MSB(block, val); case 3: GET_BIT_MSB(block, val); case 2: GET_BIT_MSB(block, val); case 1: GET_BIT_MSB(block, val); break; default: for (i = 0; i < nbits; i++) //val = (val << 1) | get_bit_MSB(block); GET_BIT_MSB(block, val); } #endif //printf("=0x%x}", val); return val; } /* * Can store up to 24-bits worth of data encoded in an integer value * Possibly we'd want to have a less optimal store_bits function when dealing * with nbits > 24, but for now we assume the codes generated are never * that big. (Given this is only possible with 121392 or more * characters with exactly the correct frequency distribution we check * for it elsewhere.) */ static int store_bits_MSB(cram_block *block, unsigned int val, int nbits) { /* fprintf(stderr, " store_bits: %02x %d\n", val, nbits); */ /* * Use slow mode until we tweak the huffman generator to never generate * codes longer than 24-bits. */ unsigned int mask; if (block->byte+4 >= block->alloc) { if (block->byte) { block->alloc *= 2; block->data = realloc(block->data, block->alloc + 4); if (!block->data) return -1; } else { block->alloc = 1024; block->data = realloc(block->data, block->alloc + 4); if (!block->data) return -1; block->data[0] = 0; // initialise first byte of buffer } } /* fits in current bit-field */ if (nbits <= block->bit+1) { block->data[block->byte] |= (val << (block->bit+1-nbits)); if ((block->bit-=nbits) == -1) { block->bit = 7; block->byte++; block->data[block->byte] = 0; } return 0; } block->data[block->byte] |= (val >> (nbits -= block->bit+1)); block->bit = 7; block->byte++; block->data[block->byte] = 0; mask = 1<<(nbits-1); do { if (val & mask) block->data[block->byte] |= (1 << block->bit); if (--block->bit == -1) { block->bit = 7; block->byte++; block->data[block->byte] = 0; } mask >>= 1; } while(--nbits); return 0; } /* * Returns the next 'size' bytes from a block, or NULL if insufficient * data left.This is just a pointer into the block data and not an * allocated object, so do not free the result. */ static char *cram_extract_block(cram_block *b, int size) { char *cp = (char *)b->data + b->idx; b->idx += size; if (b->idx > b->uncomp_size) return NULL; return cp; } /* * --------------------------------------------------------------------------- * EXTERNAL */ static void cram_external_decode_reset(cram_codec *c) { c->external.b = NULL; } int cram_external_decode_int(cram_slice *slice, cram_codec *c, cram_block *in, char *out, int *out_size) { int l; char *cp; cram_block *b; /* Find the external block */ if (!(b = c->external.b)){ b = cram_get_block_by_id(slice, c->external.content_id); c->external.b = b; } if (!b) return *out_size?-1:0; cp = (char *)b->data + b->idx; // E_INT and E_LONG are guaranteed single item queries l = safe_itf8_get(cp, (char *)b->data + b->uncomp_size, (int32_t *)out); b->idx += l; *out_size = 1; return l > 0 ? 0 : -1; } int cram_external_decode_char(cram_slice *slice, cram_codec *c, cram_block *in, char *out, int *out_size) { char *cp; cram_block *b; /* Find the external block */ if (!(b = c->external.b)){ b = cram_get_block_by_id(slice, c->external.content_id); c->external.b = b; } if (!b) return *out_size?-1:0; cp = cram_extract_block(b, *out_size); if (!cp) return -1; memcpy(out, cp, *out_size); return 0; } static int cram_external_decode_block(cram_slice *slice, cram_codec *c, cram_block *in, char *out_, int *out_size) { char *cp; cram_block *out = (cram_block *)out_; cram_block *b = NULL; /* Find the external block */ if (!(b = c->external.b)){ b = cram_get_block_by_id(slice, c->external.content_id); c->external.b = b; } if (!b) return *out_size?-1:0; cp = cram_extract_block(b, *out_size); if (!cp) return -1; BLOCK_APPEND(out, cp, *out_size); return 0; } void cram_external_decode_free(cram_codec *c) { if (c) free(c); } cram_codec *cram_external_decode_init(char *data, int size, enum cram_external_type option, int version) { cram_codec *c; char *cp = data; if (!(c = malloc(sizeof(*c)))) return NULL; c->codec = E_EXTERNAL; if (option == E_INT || option == E_LONG) c->decode = cram_external_decode_int; else if (option == E_BYTE_ARRAY || option == E_BYTE) c->decode = cram_external_decode_char; else c->decode = cram_external_decode_block; c->free = cram_external_decode_free; cp += itf8_get(cp, &c->external.content_id); if (cp - data != size) { fprintf(stderr, "Malformed external header stream\n"); free(c); return NULL; } c->external.type = option; c->external.b = NULL; c->reset = cram_external_decode_reset; return c; } int cram_external_encode_int(cram_slice *slice, cram_codec *c, char *in, int in_size) { uint32_t *i32 = (uint32_t *)in; itf8_put_blk(c->out, *i32); return 0; } int cram_external_encode_char(cram_slice *slice, cram_codec *c, char *in, int in_size) { BLOCK_APPEND(c->out, in, in_size); return 0; } void cram_external_encode_free(cram_codec *c) { if (!c) return; free(c); } int cram_external_encode_store(cram_codec *c, cram_block *b, char *prefix, int version) { char tmp[99], *tp = tmp; int len = 0; if (prefix) { size_t l = strlen(prefix); BLOCK_APPEND(b, prefix, l); len += l; } tp += itf8_put(tp, c->e_external.content_id); len += itf8_put_blk(b, c->codec); len += itf8_put_blk(b, tp-tmp); BLOCK_APPEND(b, tmp, tp-tmp); len += tp-tmp; return len; } cram_codec *cram_external_encode_init(cram_stats *st, enum cram_external_type option, void *dat, int version) { cram_codec *c; c = malloc(sizeof(*c)); if (!c) return NULL; c->codec = E_EXTERNAL; c->free = cram_external_encode_free; if (option == E_INT || option == E_LONG) c->encode = cram_external_encode_int; else if (option == E_BYTE_ARRAY || option == E_BYTE) c->encode = cram_external_encode_char; else abort(); c->store = cram_external_encode_store; c->e_external.content_id = (size_t)dat; return c; } /* * --------------------------------------------------------------------------- * BETA */ void cram_nop_decode_reset(cram_codec *c) {} int cram_beta_decode_int(cram_slice *slice, cram_codec *c, cram_block *in, char *out, int *out_size) { int32_t *out_i = (int32_t *)out; int i, n = *out_size; if (c->beta.nbits) { if (cram_not_enough_bits(in, c->beta.nbits * n)) return -1; for (i = 0; i < n; i++) out_i[i] = get_bits_MSB(in, c->beta.nbits) - c->beta.offset; } else { for (i = 0; i < n; i++) out_i[i] = -c->beta.offset; } return 0; } int cram_beta_decode_char(cram_slice *slice, cram_codec *c, cram_block *in, char *out, int *out_size) { int i, n = *out_size; if (c->beta.nbits) { if (cram_not_enough_bits(in, c->beta.nbits * n)) return -1; for (i = 0; i < n; i++) out[i] = get_bits_MSB(in, c->beta.nbits) - c->beta.offset; } else { for (i = 0; i < n; i++) out[i] = -c->beta.offset; } return 0; } void cram_beta_decode_free(cram_codec *c) { if (c) free(c); } cram_codec *cram_beta_decode_init(char *data, int size, enum cram_external_type option, int version) { cram_codec *c; char *cp = data; if (!(c = malloc(sizeof(*c)))) return NULL; c->codec = E_BETA; if (option == E_INT || option == E_LONG) c->decode = cram_beta_decode_int; else if (option == E_BYTE_ARRAY || option == E_BYTE) c->decode = cram_beta_decode_char; else { fprintf(stderr, "BYTE_ARRAYs not supported by this codec\n"); return NULL; } c->free = cram_beta_decode_free; c->beta.nbits = -1; cp += itf8_get(cp, &c->beta.offset); cp += itf8_get(cp, &c->beta.nbits); if (cp - data != size || c->beta.nbits < 0 || c->beta.nbits > 8 * sizeof(int)) { fprintf(stderr, "Malformed beta header stream\n"); free(c); return NULL; } c->reset = cram_nop_decode_reset; return c; } int cram_beta_encode_store(cram_codec *c, cram_block *b, char *prefix, int version) { int len = 0; if (prefix) { size_t l = strlen(prefix); BLOCK_APPEND(b, prefix, l); len += l; } len += itf8_put_blk(b, c->codec); len += itf8_put_blk(b, itf8_size(c->e_beta.offset) + itf8_size(c->e_beta.nbits)); // codec length len += itf8_put_blk(b, c->e_beta.offset); len += itf8_put_blk(b, c->e_beta.nbits); return len; } int cram_beta_encode_int(cram_slice *slice, cram_codec *c, char *in, int in_size) { int *syms = (int *)in; int i, r = 0; for (i = 0; i < in_size; i++) r |= store_bits_MSB(c->out, syms[i] + c->e_beta.offset, c->e_beta.nbits); return r; } int cram_beta_encode_char(cram_slice *slice, cram_codec *c, char *in, int in_size) { unsigned char *syms = (unsigned char *)in; int i, r = 0; for (i = 0; i < in_size; i++) r |= store_bits_MSB(c->out, syms[i] + c->e_beta.offset, c->e_beta.nbits); return r; } void cram_beta_encode_free(cram_codec *c) { if (c) free(c); } cram_codec *cram_beta_encode_init(cram_stats *st, enum cram_external_type option, void *dat, int version) { cram_codec *c; int min_val, max_val, len = 0; int64_t range; c = malloc(sizeof(*c)); if (!c) return NULL; c->codec = E_BETA; c->free = cram_beta_encode_free; if (option == E_INT) c->encode = cram_beta_encode_int; else c->encode = cram_beta_encode_char; c->store = cram_beta_encode_store; if (dat) { // FIXME, supply external ID separate? min_val = ((int *)dat)[0]; max_val = ((int *)dat)[1]; } else { min_val = INT_MAX; max_val = INT_MIN; int i; for (i = 0; i < MAX_STAT_VAL; i++) { if (!st->freqs[i]) continue; if (min_val > i) min_val = i; max_val = i; } if (st->h) { HashItem *hi; HashIter *iter = HashTableIterCreate(); while ((hi = HashTableIterNext(st->h, iter))) { i = (int)(size_t)hi->key; if (min_val > i) min_val = i; if (max_val < i) max_val = i; } HashTableIterDestroy(iter); } } assert(max_val >= min_val); c->e_beta.offset = -min_val; range = (int64_t) max_val - min_val; while (range) { len++; range >>= 1; } c->e_beta.nbits = len; return c; } /* * --------------------------------------------------------------------------- * SUBEXP */ int cram_subexp_decode(cram_slice *slice, cram_codec *c, cram_block *in, char *out, int *out_size) { int32_t *out_i = (int32_t *)out; int n, count; int k = c->subexp.k; for (count = 0, n = *out_size; count < n; count++) { int i = 0, tail; int val; /* Get number of 1s */ //while (get_bit_MSB(in) == 1) i++; i = get_one_bits_MSB(in); if (i < 0 || cram_not_enough_bits(in, i > 0 ? i + k - 1 : k)) return -1; /* * Val is * i > 0: 2^(k+i-1) + k+i-1 bits * i = 0: k bits */ if (i) { tail = i + k-1; val = 0; while (tail) { //val = val<<1; val |= get_bit_MSB(in); GET_BIT_MSB(in, val); tail--; } val += 1 << (i + k-1); } else { tail = k; val = 0; while (tail) { //val = val<<1; val |= get_bit_MSB(in); GET_BIT_MSB(in, val); tail--; } } out_i[count] = val - c->subexp.offset; } return 0; } void cram_subexp_decode_free(cram_codec *c) { if (c) free(c); } cram_codec *cram_subexp_decode_init(char *data, int size, enum cram_external_type option, int version) { cram_codec *c; char *cp = data; if (option == E_BYTE_ARRAY_BLOCK) { fprintf(stderr, "BYTE_ARRAYs not supported by this codec\n"); return NULL; } if (!(c = malloc(sizeof(*c)))) return NULL; c->codec = E_SUBEXP; c->decode = cram_subexp_decode; c->free = cram_subexp_decode_free; c->subexp.k = -1; cp += safe_itf8_get(cp, data + size, &c->subexp.offset); cp += safe_itf8_get(cp, data + size, &c->subexp.k); if (cp - data != size || c->subexp.k < 0) { fprintf(stderr, "Malformed subexp header stream\n"); free(c); return NULL; } c->reset = cram_nop_decode_reset; return c; } /* * --------------------------------------------------------------------------- * GAMMA */ int cram_gamma_decode(cram_slice *slice, cram_codec *c, cram_block *in, char *out, int *out_size) { int32_t *out_i = (int32_t *)out; int i, n; for (i = 0, n = *out_size; i < n; i++) { int nz = 0; int val; //while (get_bit_MSB(in) == 0) nz++; nz = get_zero_bits_MSB(in); if (cram_not_enough_bits(in, nz)) return -1; val = 1; while (nz > 0) { //val <<= 1; val |= get_bit_MSB(in); GET_BIT_MSB(in, val); nz--; } out_i[i] = val - c->gamma.offset; } return 0; } void cram_gamma_decode_free(cram_codec *c) { if (c) free(c); } cram_codec *cram_gamma_decode_init(char *data, int size, enum cram_external_type option, int version) { cram_codec *c; char *cp = data; if (option == E_BYTE_ARRAY_BLOCK) { fprintf(stderr, "BYTE_ARRAYs not supported by this codec\n"); return NULL; } if (!(c = malloc(sizeof(*c)))) return NULL; c->codec = E_GAMMA; c->decode = cram_gamma_decode; c->free = cram_gamma_decode_free; cp += itf8_get(cp, &c->gamma.offset); if (cp - data != size) { fprintf(stderr, "Malformed gamma header stream\n"); free(c); return NULL; } c->reset = cram_nop_decode_reset; return c; } /* * --------------------------------------------------------------------------- * HUFFMAN */ static int code_sort(const void *vp1, const void *vp2) { const cram_huffman_code *c1 = (const cram_huffman_code *)vp1; const cram_huffman_code *c2 = (const cram_huffman_code *)vp2; if (c1->len != c2->len) return c1->len - c2->len; else return c1->symbol - c2->symbol; } void cram_huffman_decode_free(cram_codec *c) { if (!c) return; if (c->huffman.codes) free(c->huffman.codes); free(c); } int cram_huffman_decode_null(cram_slice *slice, cram_codec *c, cram_block *in, char *out, int *out_size) { return -1; } int cram_huffman_decode_char0(cram_slice *slice, cram_codec *c, cram_block *in, char *out, int *out_size) { int i, n; /* Special case of 0 length codes */ for (i = 0, n = *out_size; i < n; i++) { out[i] = c->huffman.codes[0].symbol; } return 0; } int cram_huffman_decode_char(cram_slice *slice, cram_codec *c, cram_block *in, char *out, int *out_size) { int i, n, ncodes = c->huffman.ncodes; const cram_huffman_code * const codes = c->huffman.codes; for (i = 0, n = *out_size; i < n; i++) { int idx = 0; int val = 0, len = 0, last_len = 0; for (;;) { int dlen = codes[idx].len - last_len; if (cram_not_enough_bits(in, dlen)) return -1; //val <<= dlen; //val |= get_bits_MSB(in, dlen); //last_len = (len += dlen); last_len = (len += dlen); for (; dlen; dlen--) GET_BIT_MSB(in, val); idx = val - codes[idx].p; if (idx >= ncodes || idx < 0) return -1; if (codes[idx].code == val && codes[idx].len == len) { out[i] = codes[idx].symbol; break; } } } return 0; } int cram_huffman_decode_int0(cram_slice *slice, cram_codec *c, cram_block *in, char *out, int *out_size) { int32_t *out_i = (int32_t *)out; int i, n; const cram_huffman_code * const codes = c->huffman.codes; /* Special case of 0 length codes */ for (i = 0, n = *out_size; i < n; i++) { out_i[i] = codes[0].symbol; } return 0; } int cram_huffman_decode_int(cram_slice *slice, cram_codec *c, cram_block *in, char *out, int *out_size) { int32_t *out_i = (int32_t *)out; int i, n, ncodes = c->huffman.ncodes; const cram_huffman_code * const codes = c->huffman.codes; for (i = 0, n = *out_size; i < n; i++) { int idx = 0; int val = 0, len = 0, last_len = 0; // Now one bit at a time for remaining checks for (;;) { int dlen = codes[idx].len - last_len; if (cram_not_enough_bits(in, dlen)) return -1; //val <<= dlen; //val |= get_bits_MSB(in, dlen); //last_len = (len += dlen); last_len = (len += dlen); for (; dlen; dlen--) GET_BIT_MSB(in, val); idx = val - codes[idx].p; if (idx >= ncodes || idx < 0) return -1; if (codes[idx].code == val && codes[idx].len == len) { out_i[i] = codes[idx].symbol; break; } } } return 0; } /* * Initialises a huffman decoder from an encoding data stream. */ cram_codec *cram_huffman_decode_init(char *data, int size, enum cram_external_type option, int version) { int32_t ncodes = 0, i, j; char *cp = data, *data_end = &data[size]; cram_codec *h; cram_huffman_code *codes; int32_t val, last_len, max_len = 0; int l; if (option == E_BYTE_ARRAY_BLOCK) { fprintf(stderr, "BYTE_ARRAYs not supported by this codec\n"); return NULL; } cp += safe_itf8_get(cp, data_end, &ncodes); h = calloc(1, sizeof(*h)); if (!h) return NULL; h->codec = E_HUFFMAN; h->free = cram_huffman_decode_free; h->huffman.ncodes = ncodes; codes = h->huffman.codes = malloc(ncodes * sizeof(*codes)); if (!codes) { free(h); return NULL; } /* Read symbols and bit-lengths */ for (i = 0, l = 1; i < ncodes && l > 0; i++, cp += l) { l = safe_itf8_get(cp, data_end, &codes[i].symbol); } if (l < 1) { fprintf(stderr, "Malformed huffman header stream\n"); free(h); return NULL; } cp += safe_itf8_get(cp, data_end, &i); if (i != ncodes) { fprintf(stderr, "Malformed huffman header stream\n"); free(h); return NULL; } h->reset = cram_nop_decode_reset; if (ncodes == 0) { /* NULL huffman stream. Ensure it returns an error if anything tries to use it. */ h->decode = cram_huffman_decode_null; return h; } for (i = 0, l = 1; i < ncodes; i++, cp += l) { l = safe_itf8_get(cp, data_end, &codes[i].len); if (l < 1) break; if (max_len < codes[i].len) max_len = codes[i].len; } if (l < 1 || cp - data != size || max_len >= ncodes) { fprintf(stderr, "Malformed huffman header stream\n"); free(h); return NULL; } /* Sort by bit length and then by symbol value */ qsort(codes, ncodes, sizeof(*codes), code_sort); /* Assign canonical codes */ val = -1, last_len = 0; for (i = 0; i < ncodes; i++) { val++; if (codes[i].len > last_len) { while (codes[i].len > last_len) { val <<= 1; last_len++; } } codes[i].code = val; } /* * Compute the next starting point, offset by the i'th value. * For example if codes 10, 11, 12, 13 are 30, 31, 32, 33 then * codes[10..13].p = 30 - 10. */ last_len = 0; for (i = j = 0; i < ncodes; i++) { if (codes[i].len > last_len) { j = codes[i].code - i; last_len = codes[i].len; } codes[i].p = j; } // puts("==HUFF LEN=="); // for (i = 0; i <= last_len+1; i++) { // printf("len %d=%d prefix %d\n", i, h->huffman.lengths[i], h->huffman.prefix[i]); // } // puts("===HUFFMAN CODES==="); // for (i = 0; i < ncodes; i++) { // int j; // printf("%d: %d %d %d ", i, codes[i].symbol, codes[i].len, codes[i].code); // j = codes[i].len; // while (j) { // putchar(codes[i].code & (1 << --j) ? '1' : '0'); // } // printf(" %d\n", codes[i].code); // } if (option == E_BYTE || option == E_BYTE_ARRAY) { if (h->huffman.codes[0].len == 0) h->decode = cram_huffman_decode_char0; else h->decode = cram_huffman_decode_char; } else if (option == E_BYTE_ARRAY_BLOCK) { abort(); } else { if (h->huffman.codes[0].len == 0) h->decode = cram_huffman_decode_int0; else h->decode = cram_huffman_decode_int; } return (cram_codec *)h; } int cram_huffman_encode_char0(cram_slice *slice, cram_codec *c, char *in, int in_size) { return 0; } int cram_huffman_encode_char(cram_slice *slice, cram_codec *c, char *in, int in_size) { int i, code, len, r = 0; unsigned char *syms = (unsigned char *)in; while (in_size--) { int sym = *syms++; if (sym >= -1 && sym < MAX_HUFF) { i = c->e_huffman.val2code[sym+1]; assert(c->e_huffman.codes[i].symbol == sym); code = c->e_huffman.codes[i].code; len = c->e_huffman.codes[i].len; } else { /* Slow - use a lookup table for when sym < MAX_HUFF? */ for (i = 0; i < c->e_huffman.nvals; i++) { if (c->e_huffman.codes[i].symbol == sym) break; } if (i == c->e_huffman.nvals) return -1; code = c->e_huffman.codes[i].code; len = c->e_huffman.codes[i].len; } r |= store_bits_MSB(c->out, code, len); } return r; } int cram_huffman_encode_int0(cram_slice *slice, cram_codec *c, char *in, int in_size) { return 0; } int cram_huffman_encode_int(cram_slice *slice, cram_codec *c, char *in, int in_size) { int i, code, len, r = 0; int *syms = (int *)in; do { int sym = *syms++; if (sym >= -1 && sym < MAX_HUFF) { i = c->e_huffman.val2code[sym+1]; assert(c->e_huffman.codes[i].symbol == sym); code = c->e_huffman.codes[i].code; len = c->e_huffman.codes[i].len; } else { /* Slow - use a lookup table for when sym < MAX_HUFFMAN_SYM? */ for (i = 0; i < c->e_huffman.nvals; i++) { if (c->e_huffman.codes[i].symbol == sym) break; } if (i == c->e_huffman.nvals) return -1; code = c->e_huffman.codes[i].code; len = c->e_huffman.codes[i].len; } r |= store_bits_MSB(c->out, code, len); } while (--in_size); return r; } void cram_huffman_encode_free(cram_codec *c) { if (!c) return; if (c->e_huffman.codes) free(c->e_huffman.codes); free(c); } /* * Encodes a huffman tree. * Returns number of bytes written. */ int cram_huffman_encode_store(cram_codec *c, cram_block *b, char *prefix, int version) { int i, len = 0; cram_huffman_code *codes = c->e_huffman.codes; /* * Up to code length 127 means 2.5e+26 bytes of data required (worst * case huffman tree needs symbols with freqs matching the Fibonacci * series). So guaranteed 1 byte per code. * * Symbols themselves could be 5 bytes (eg -1 is 5 bytes in itf8). * * Therefore 6*ncodes + 5 + 5 + 1 + 5 is max memory */ char *tmp = malloc(6*c->e_huffman.nvals+16); char *tp = tmp; if (!tmp) return -1; if (prefix) { size_t l = strlen(prefix); BLOCK_APPEND(b, prefix, l); len += l; } tp += itf8_put(tp, c->e_huffman.nvals); for (i = 0; i < c->e_huffman.nvals; i++) { tp += itf8_put(tp, codes[i].symbol); } tp += itf8_put(tp, c->e_huffman.nvals); for (i = 0; i < c->e_huffman.nvals; i++) { tp += itf8_put(tp, codes[i].len); } len += itf8_put_blk(b, c->codec); len += itf8_put_blk(b, tp-tmp); BLOCK_APPEND(b, tmp, tp-tmp); len += tp-tmp; free(tmp); return len; } cram_codec *cram_huffman_encode_init(cram_stats *st, enum cram_external_type option, void *dat, int version) { int *vals = NULL, *freqs = NULL, vals_alloc = 0, *lens, code, len; int nvals, i, ntot = 0, max_val = 0, min_val = INT_MAX, k; cram_codec *c; cram_huffman_code *codes; c = malloc(sizeof(*c)); if (!c) return NULL; c->codec = E_HUFFMAN; /* Count number of unique symbols */ for (nvals = i = 0; i < MAX_STAT_VAL; i++) { if (!st->freqs[i]) continue; if (nvals >= vals_alloc) { vals_alloc = vals_alloc ? vals_alloc*2 : 1024; vals = realloc(vals, vals_alloc * sizeof(int)); freqs = realloc(freqs, vals_alloc * sizeof(int)); if (!vals || !freqs) { if (vals) free(vals); if (freqs) free(freqs); free(c); return NULL; } } vals[nvals] = i; freqs[nvals] = st->freqs[i]; assert(st->freqs[i] > 0); ntot += freqs[nvals]; if (max_val < i) max_val = i; if (min_val > i) min_val = i; nvals++; } if (st->h) { HashIter *iter= HashTableIterCreate(); HashItem *hi; while ((hi = HashTableIterNext(st->h, iter))) { if (nvals >= vals_alloc) { vals_alloc = vals_alloc ? vals_alloc*2 : 1024; vals = realloc(vals, vals_alloc * sizeof(int)); freqs = realloc(freqs, vals_alloc * sizeof(int)); if (!vals || !freqs) return NULL; } vals[nvals]=(size_t)hi->key; freqs[nvals] = hi->data.i; assert(hi->data.i > 0); ntot += freqs[nvals]; if (max_val < i) max_val = i; if (min_val > i) min_val = i; nvals++; } HashTableIterDestroy(iter); } assert(nvals > 0); freqs = realloc(freqs, 2*nvals*sizeof(*freqs)); lens = calloc(2*nvals, sizeof(*lens)); if (!lens || !freqs) return NULL; /* Inefficient, use pointers to form chain so we can insert and maintain * a sorted list? This is currently O(nvals^2) complexity. */ for (;;) { int low1 = INT_MAX, low2 = INT_MAX; int ind1 = 0, ind2 = 0; for (i = 0; i < nvals; i++) { if (freqs[i] < 0) continue; if (low1 > freqs[i]) low2 = low1, ind2 = ind1, low1 = freqs[i], ind1 = i; else if (low2 > freqs[i]) low2 = freqs[i], ind2 = i; } if (low2 == INT_MAX) break; freqs[nvals] = low1 + low2; lens[ind1] = nvals; lens[ind2] = nvals; freqs[ind1] *= -1; freqs[ind2] *= -1; nvals++; } nvals = nvals/2+1; /* Assign lengths */ for (i = 0; i < nvals; i++) { int code_len = 0; for (k = lens[i]; k; k = lens[k]) code_len++; lens[i] = code_len; freqs[i] *= -1; //fprintf(stderr, "%d / %d => %d\n", vals[i], freqs[i], lens[i]); } /* Sort, need in a struct */ if (!(codes = malloc(nvals * sizeof(*codes)))) return NULL; for (i = 0; i < nvals; i++) { codes[i].symbol = vals[i]; codes[i].len = lens[i]; } qsort(codes, nvals, sizeof(*codes), code_sort); /* * Generate canonical codes from lengths. * Sort by length. * Start with 0. * Every new code of same length is +1. * Every new code of new length is +1 then <<1 per extra length. * * /\ * a/\ * /\/\ * bcd/\ * ef * * a 1 0 * b 3 4 (0+1)<<2 * c 3 5 * d 3 6 * e 4 14 (6+1)<<1 * f 5 15 */ code = 0; len = codes[0].len; for (i = 0; i < nvals; i++) { while (len != codes[i].len) { code<<=1; len++; } codes[i].code = code++; if (codes[i].symbol >= -1 && codes[i].symbol < MAX_HUFF) c->e_huffman.val2code[codes[i].symbol+1] = i; //fprintf(stderr, "sym %d, code %d, len %d\n", // codes[i].symbol, codes[i].code, codes[i].len); } free(lens); free(vals); free(freqs); c->e_huffman.codes = codes; c->e_huffman.nvals = nvals; c->free = cram_huffman_encode_free; if (option == E_BYTE || option == E_BYTE_ARRAY) { if (c->e_huffman.codes[0].len == 0) c->encode = cram_huffman_encode_char0; else c->encode = cram_huffman_encode_char; } else { if (c->e_huffman.codes[0].len == 0) c->encode = cram_huffman_encode_int0; else c->encode = cram_huffman_encode_int; } c->store = cram_huffman_encode_store; return c; } /* * --------------------------------------------------------------------------- * BYTE_ARRAY_LEN */ int cram_byte_array_len_decode(cram_slice *slice, cram_codec *c, cram_block *in, char *out, int *out_size) { /* Fetch length */ int32_t len = 0, one = 1; int r; r = c->byte_array_len.len_codec->decode(slice, c->byte_array_len.len_codec, in, (char *)&len, &one); //printf("ByteArray Len=%d\n", len); if (!r && c->byte_array_len.value_codec && len >= 0) { r = c->byte_array_len.value_codec->decode(slice, c->byte_array_len.value_codec, in, out, &len); } else { return -1; } *out_size = len; return r; } void cram_byte_array_len_decode_free(cram_codec *c) { if (!c) return; if (c->byte_array_len.len_codec) c->byte_array_len.len_codec->free(c->byte_array_len.len_codec); if (c->byte_array_len.value_codec) c->byte_array_len.value_codec->free(c->byte_array_len.value_codec); free(c); } static void cram_byte_array_len_decode_reset(cram_codec *c) { c->byte_array_len.len_codec->reset(c->byte_array_len.len_codec); c->byte_array_len.value_codec->reset(c->byte_array_len.value_codec); } cram_codec *cram_byte_array_len_decode_init(char *data, int size, enum cram_external_type option, int version) { cram_codec *c; char *cp = data; char *endp = data + size; int32_t encoding = 0; int32_t sub_size = -1; if (!(c = malloc(sizeof(*c)))) return NULL; c->codec = E_BYTE_ARRAY_LEN; c->decode = cram_byte_array_len_decode; c->free = cram_byte_array_len_decode_free; cp += safe_itf8_get(cp, endp, &encoding); cp += safe_itf8_get(cp, endp, &sub_size); if (sub_size < 0 || endp - cp < sub_size) goto malformed; c->byte_array_len.len_codec = cram_decoder_init(encoding, cp, sub_size, E_INT, version); if (c->byte_array_len.len_codec == NULL) goto no_codec; cp += sub_size; sub_size = -1; cp += safe_itf8_get(cp, endp, &encoding); cp += safe_itf8_get(cp, endp, &sub_size); if (sub_size < 0 || endp - cp < sub_size) goto malformed; c->byte_array_len.value_codec = cram_decoder_init(encoding, cp, sub_size, option, version); if (c->byte_array_len.value_codec == NULL) goto no_codec; cp += sub_size; if (cp - data != size) goto malformed; c->reset = cram_byte_array_len_decode_reset; return c; malformed: fprintf(stderr, "Malformed byte_array_len header stream\n"); no_codec: free(c); return NULL; } int cram_byte_array_len_encode(cram_slice *slice, cram_codec *c, char *in, int in_size) { int32_t i32 = in_size; int r = 0; r |= c->e_byte_array_len.len_codec->encode(slice, c->e_byte_array_len.len_codec, (char *)&i32, 1); r |= c->e_byte_array_len.val_codec->encode(slice, c->e_byte_array_len.val_codec, in, in_size); return r; } void cram_byte_array_len_encode_free(cram_codec *c) { if (!c) return; if (c->e_byte_array_len.len_codec) c->e_byte_array_len.len_codec->free(c->e_byte_array_len.len_codec); if (c->e_byte_array_len.val_codec) c->e_byte_array_len.val_codec->free(c->e_byte_array_len.val_codec); free(c); } int cram_byte_array_len_encode_store(cram_codec *c, cram_block *b, char *prefix, int version) { int len = 0, len2, len3; cram_codec *tc; cram_block *b_len, *b_val; if (prefix) { size_t l = strlen(prefix); BLOCK_APPEND(b, prefix, l); len += l; } tc = c->e_byte_array_len.len_codec; b_len = cram_new_block(0, 0); len2 = tc->store(tc, b_len, NULL, version); tc = c->e_byte_array_len.val_codec; b_val = cram_new_block(0, 0); len3 = tc->store(tc, b_val, NULL, version); len += itf8_put_blk(b, c->codec); len += itf8_put_blk(b, len2+len3); BLOCK_APPEND(b, BLOCK_DATA(b_len), BLOCK_SIZE(b_len)); BLOCK_APPEND(b, BLOCK_DATA(b_val), BLOCK_SIZE(b_val)); cram_free_block(b_len); cram_free_block(b_val); return len + len2 + len3; } cram_codec *cram_byte_array_len_encode_init(cram_stats *st, enum cram_external_type option, void *dat, int version) { cram_codec *c; cram_byte_array_len_encoder *e = (cram_byte_array_len_encoder *)dat; c = malloc(sizeof(*c)); if (!c) return NULL; c->codec = E_BYTE_ARRAY_LEN; c->free = cram_byte_array_len_encode_free; c->encode = cram_byte_array_len_encode; c->store = cram_byte_array_len_encode_store; c->e_byte_array_len.len_codec = cram_encoder_init(e->len_encoding, st, E_INT, e->len_dat, version); c->e_byte_array_len.val_codec = cram_encoder_init(e->val_encoding, NULL, E_BYTE_ARRAY, e->val_dat, version); return c; } /* * --------------------------------------------------------------------------- * BYTE_ARRAY_STOP */ static void cram_byte_array_stop_decode_reset(cram_codec *c) { c->byte_array_stop.b = NULL; } static int cram_byte_array_stop_decode_char(cram_slice *slice, cram_codec *c, cram_block *in, char *out, int *out_size) { char *cp, ch; cram_block *b = NULL; if (!(b = c->byte_array_stop.b)){ b = cram_get_block_by_id(slice, c->byte_array_stop.content_id); c->byte_array_stop.b = b; } if (!b) return *out_size?-1:0; if (b->idx >= b->uncomp_size) return -1; cp = (char *)b->data + b->idx; while ((ch = *cp) != (char)c->byte_array_stop.stop) { if (cp - (char *)b->data >= b->uncomp_size) return -1; *out++ = ch; cp++; } *out_size = cp - (char *)(b->data + b->idx); b->idx = cp - (char *)b->data + 1; return 0; } int cram_byte_array_stop_decode_block(cram_slice *slice, cram_codec *c, cram_block *in, char *out_, int *out_size) { cram_block *b; cram_block *out = (cram_block *)out_; char *cp, *out_cp, *cp_end; char stop; if (!(b = c->byte_array_stop.b)){ b = cram_get_block_by_id(slice, c->byte_array_stop.content_id); c->byte_array_stop.b = b; } if (!b) return *out_size?-1:0; if (b->idx >= b->uncomp_size) return -1; cp = (char *)b->data + b->idx; cp_end = (char *)b->data + b->uncomp_size; out_cp = (char *)BLOCK_END(out); stop = c->byte_array_stop.stop; if (cp_end - cp < out->alloc - out->byte) { while (cp != cp_end && *cp != stop) *out_cp++ = *cp++; BLOCK_SIZE(out) = out_cp - (char *)BLOCK_DATA(out); } else { char *cp_start; for (cp_start = cp; cp != cp_end && *cp != stop; cp++) ; BLOCK_APPEND(out, cp_start, cp - cp_start); BLOCK_GROW(out, cp - cp_start); } *out_size = cp - (char *)(b->data + b->idx); b->idx = cp - (char *)b->data + 1; return 0; } void cram_byte_array_stop_decode_free(cram_codec *c) { if (!c) return; free(c); } cram_codec *cram_byte_array_stop_decode_init(char *data, int size, enum cram_external_type option, int version) { cram_codec *c; unsigned char *cp = (unsigned char *)data; if (!(c = malloc(sizeof(*c)))) return NULL; c->codec = E_BYTE_ARRAY_STOP; switch (option) { case E_BYTE_ARRAY_BLOCK: c->decode = cram_byte_array_stop_decode_block; break; case E_BYTE_ARRAY: c->decode = cram_byte_array_stop_decode_char; break; default: fprintf(stderr, "byte_array_stop codec only supports BYTE_ARRAYs.\n"); free(c); return NULL; } c->free = cram_byte_array_stop_decode_free; c->byte_array_stop.stop = *cp++; if (CRAM_MAJOR_VERS(version) == 1) { c->byte_array_stop.content_id = cp[0] + (cp[1]<<8) + (cp[2]<<16) + (cp[3]<<24); cp += 4; } else { cp += itf8_get(cp, &c->byte_array_stop.content_id); } if ((char *)cp - data != size) { fprintf(stderr, "Malformed byte_array_stop header stream\n"); free(c); return NULL; } c->byte_array_stop.b = NULL; c->reset = cram_byte_array_stop_decode_reset; return c; } int cram_byte_array_stop_encode(cram_slice *slice, cram_codec *c, char *in, int in_size) { BLOCK_APPEND(c->out, in, in_size); BLOCK_APPEND_CHAR(c->out, c->e_byte_array_stop.stop); return 0; } void cram_byte_array_stop_encode_free(cram_codec *c) { if (!c) return; free(c); } int cram_byte_array_stop_encode_store(cram_codec *c, cram_block *b, char *prefix, int version) { int len = 0; char buf[20], *cp = buf; if (prefix) { size_t l = strlen(prefix); BLOCK_APPEND(b, prefix, l); len += l; } cp += itf8_put(cp, c->codec); if (CRAM_MAJOR_VERS(version) == 1) { cp += itf8_put(cp, 5); *cp++ = c->e_byte_array_stop.stop; *cp++ = (c->e_byte_array_stop.content_id >> 0) & 0xff; *cp++ = (c->e_byte_array_stop.content_id >> 8) & 0xff; *cp++ = (c->e_byte_array_stop.content_id >> 16) & 0xff; *cp++ = (c->e_byte_array_stop.content_id >> 24) & 0xff; } else { cp += itf8_put(cp, 1 + itf8_size(c->e_byte_array_stop.content_id)); *cp++ = c->e_byte_array_stop.stop; cp += itf8_put(cp, c->e_byte_array_stop.content_id); } BLOCK_APPEND(b, buf, cp-buf); len += cp-buf; return len; } cram_codec *cram_byte_array_stop_encode_init(cram_stats *st, enum cram_external_type option, void *dat, int version) { cram_codec *c; c = malloc(sizeof(*c)); if (!c) return NULL; c->codec = E_BYTE_ARRAY_STOP; c->free = cram_byte_array_stop_encode_free; c->encode = cram_byte_array_stop_encode; c->store = cram_byte_array_stop_encode_store; c->e_byte_array_stop.stop = ((int *)dat)[0]; c->e_byte_array_stop.content_id = ((int *)dat)[1]; return c; } /* * --------------------------------------------------------------------------- */ char *cram_encoding2str(enum cram_encoding t) { switch (t) { case E_NULL: return "NULL"; case E_EXTERNAL: return "EXTERNAL"; case E_GOLOMB: return "GOLOMB"; case E_HUFFMAN: return "HUFFMAN"; case E_BYTE_ARRAY_LEN: return "BYTE_ARRAY_LEN"; case E_BYTE_ARRAY_STOP: return "BYTE_ARRAY_STOP"; case E_BETA: return "BETA"; case E_SUBEXP: return "SUBEXP"; case E_GOLOMB_RICE: return "GOLOMB_RICE"; case E_GAMMA: return "GAMMA"; case E_NUM_CODECS: default: return "?"; } } static cram_codec *(*decode_init[])(char *data, int size, enum cram_external_type option, int version) = { NULL, cram_external_decode_init, NULL, cram_huffman_decode_init, cram_byte_array_len_decode_init, cram_byte_array_stop_decode_init, cram_beta_decode_init, cram_subexp_decode_init, NULL, cram_gamma_decode_init, }; cram_codec *cram_decoder_init(enum cram_encoding codec, char *data, int size, enum cram_external_type option, int version) { if (codec >= E_NULL && codec < E_NUM_CODECS && decode_init[codec]) { return decode_init[codec](data, size, option, version); } else { fprintf(stderr, "Unimplemented codec of type %s\n", codec2str(codec)); return NULL; } } static cram_codec *(*encode_init[])(cram_stats *stx, enum cram_external_type option, void *opt, int version) = { NULL, cram_external_encode_init, NULL, cram_huffman_encode_init, cram_byte_array_len_encode_init, cram_byte_array_stop_encode_init, cram_beta_encode_init, NULL, //cram_subexp_encode_init, NULL, NULL, //cram_gamma_encode_init, }; cram_codec *cram_encoder_init(enum cram_encoding codec, cram_stats *st, enum cram_external_type option, void *dat, int version) { if (st && !st->nvals) return NULL; if (encode_init[codec]) { cram_codec *r; if ((r = encode_init[codec](st, option, dat, version))) r->out = NULL; return r; } else { fprintf(stderr, "Unimplemented codec of type %s\n", codec2str(codec)); abort(); } } /* * Returns the content_id used by this codec, also in id2 if byte_array_len. * Returns -1 for the CORE block and -2 for unneeded. * id2 is only filled out for BYTE_ARRAY_LEN which uses 2 codecs. */ int cram_codec_to_id(cram_codec *c, int *id2) { int bnum1, bnum2 = -2; switch (c->codec) { case E_HUFFMAN: bnum1 = c->huffman.ncodes == 1 ? -2 : -1; break; case E_GOLOMB: case E_BETA: case E_SUBEXP: case E_GOLOMB_RICE: case E_GAMMA: bnum1 = -1; break; case E_EXTERNAL: bnum1 = c->external.content_id; break; case E_BYTE_ARRAY_LEN: bnum1 = cram_codec_to_id(c->byte_array_len.len_codec, NULL); bnum2 = cram_codec_to_id(c->byte_array_len.value_codec, NULL); break; case E_BYTE_ARRAY_STOP: bnum1 = c->byte_array_stop.content_id; break; case E_NULL: bnum1 = -2; break; default: fprintf(stderr, "Unknown codec type %d\n", c->codec); bnum1 = -1; } if (id2) *id2 = bnum2; return bnum1; } io_lib-1.14.6/io_lib/cram_encode.c0000644000031500020650000023610612616354455013640 00000000000000/* * Copyright (c) 2013 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * Author: James Bonfield, Wellcome Trust Sanger Institute. 2013 */ #ifdef HAVE_CONFIG_H #include "io_lib_config.h" #endif #include #include #include #include #include #include #include #include #include #include #include #include "io_lib/cram.h" #include "io_lib/os.h" #include "io_lib/md5.h" #include "io_lib/binning.h" #ifdef SAMTOOLS # define bam_copy(dst, src) bam_copy1(*(dst), (src)) #else void bam_copy(bam_seq_t **bt, bam_seq_t *bf) { size_t a; if (bf->alloc > (*bt)->alloc) { a = ((int)((bf->alloc+15)/16))*16; *bt = realloc(*bt, a); memcpy(*bt, bf, bf->alloc); } else { a = (*bt)->alloc; memcpy(*bt, bf, bf->alloc); } (*bt)->alloc = a; } #endif static int process_one_read(cram_fd *fd, cram_container *c, cram_slice *s, cram_record *cr, bam_seq_t *b, int rnum); /* * Returns index of val into key. * Basically strchr(key, val)-key; */ static int sub_idx(char *key, char val) { int i; for (i = 0; *key && *key++ != val; i++); return i; } /* * Encodes a compression header block into a generic cram_block structure. * * Returns cram_block ptr on success * NULL on failure */ cram_block *cram_encode_compression_header(cram_fd *fd, cram_container *c, cram_block_compression_hdr *h) { cram_block *cb = cram_new_block(COMPRESSION_HEADER, 0); cram_block *map = cram_new_block(COMPRESSION_HEADER, 0); int mc; if (!cb || !map) return NULL; /* * This is a concatenation of several blocks of data: * header + landmarks, preservation map, read encoding map, and the tag * encoding map. * All 4 are variable sized and we need to know how large these are * before creating the compression header itself as this starts with * the total size (stored as a variable length string). */ /* FIXME: should create this when we create the container */ { HashData hd; if (!(h->preservation_map = HashTableCreate(4, HASH_NONVOLATILE_KEYS))) return NULL; hd.i = 1; HashTableAdd(h->preservation_map, "RN", 2, hd, NULL); // Technically SM was in 1.0, but wasn't in Java impl. hd.i = 0; if (!(HashTableAdd(h->preservation_map, "SM", 2, hd, NULL))) return NULL; hd.i = 0; if (!(HashTableAdd(h->preservation_map, "TD", 2, hd, NULL))) return NULL; hd.i = c->pos_sorted; // => DELTA if (!(HashTableAdd(h->preservation_map, "AP", 2, hd, NULL))) return NULL; if (fd->no_ref || fd->embed_ref) { // Reference Required == No hd.i = 0; if (!(HashTableAdd(h->preservation_map, "RR", 2, hd, NULL))) return NULL; } } /* Preservation map */ mc = 0; BLOCK_SIZE(map) = 0; if (h->preservation_map) { HashItem *hi; HashIter *iter = HashTableIterCreate(); if (!iter) return NULL; while ((hi = HashTableIterNext(h->preservation_map, iter))) { //cram_map *m = hi->data.p; BLOCK_APPEND(map, hi->key, 2); switch(CRAM_KEY(hi->key[0], hi->key[1])) { case CRAM_KEY('M','I'): BLOCK_APPEND_CHAR(map, hi->data.i); break; case CRAM_KEY('U','I'): BLOCK_APPEND_CHAR(map, hi->data.i); break; case CRAM_KEY('P','I'): BLOCK_APPEND_CHAR(map, hi->data.i); break; case CRAM_KEY('A','P'): BLOCK_APPEND_CHAR(map, hi->data.i); break; case CRAM_KEY('R','N'): BLOCK_APPEND_CHAR(map, hi->data.i); break; case CRAM_KEY('R','R'): BLOCK_APPEND_CHAR(map, hi->data.i); break; case CRAM_KEY('S','M'): { char smat[5], *mp = smat; *mp++ = (sub_idx("CGTN", h->substitution_matrix[0][0]) << 6) | (sub_idx("CGTN", h->substitution_matrix[0][1]) << 4) | (sub_idx("CGTN", h->substitution_matrix[0][2]) << 2) | (sub_idx("CGTN", h->substitution_matrix[0][3]) << 0); *mp++ = (sub_idx("AGTN", h->substitution_matrix[1][0]) << 6) | (sub_idx("AGTN", h->substitution_matrix[1][1]) << 4) | (sub_idx("AGTN", h->substitution_matrix[1][2]) << 2) | (sub_idx("AGTN", h->substitution_matrix[1][3]) << 0); *mp++ = (sub_idx("ACTN", h->substitution_matrix[2][0]) << 6) | (sub_idx("ACTN", h->substitution_matrix[2][1]) << 4) | (sub_idx("ACTN", h->substitution_matrix[2][2]) << 2) | (sub_idx("ACTN", h->substitution_matrix[2][3]) << 0); *mp++ = (sub_idx("ACGN", h->substitution_matrix[3][0]) << 6) | (sub_idx("ACGN", h->substitution_matrix[3][1]) << 4) | (sub_idx("ACGN", h->substitution_matrix[3][2]) << 2) | (sub_idx("ACGN", h->substitution_matrix[3][3]) << 0); *mp++ = (sub_idx("ACGT", h->substitution_matrix[4][0]) << 6) | (sub_idx("ACGT", h->substitution_matrix[4][1]) << 4) | (sub_idx("ACGT", h->substitution_matrix[4][2]) << 2) | (sub_idx("ACGT", h->substitution_matrix[4][3]) << 0); BLOCK_APPEND(map, smat, 5); break; } case CRAM_KEY('T','D'): { itf8_put_blk(map, BLOCK_SIZE(h->TD_blk)); BLOCK_APPEND(map, BLOCK_DATA(h->TD_blk), BLOCK_SIZE(h->TD_blk)); break; } default: fprintf(stderr, "Unknown preservation key '%.2s'\n", hi->key); break; } mc++; } HashTableIterDestroy(iter); } itf8_put_blk(cb, BLOCK_SIZE(map) + itf8_size(mc)); itf8_put_blk(cb, mc); BLOCK_APPEND(cb, BLOCK_DATA(map), BLOCK_SIZE(map)); /* rec encoding map */ mc = 0; BLOCK_SIZE(map) = 0; if (h->codecs[DS_BF]) { if (-1 == h->codecs[DS_BF]->store(h->codecs[DS_BF], map, "BF", fd->version)) return NULL; mc++; } if (h->codecs[DS_CF]) { if (-1 == h->codecs[DS_CF]->store(h->codecs[DS_CF], map, "CF", fd->version)) return NULL; mc++; } if (h->codecs[DS_RL]) { if (-1 == h->codecs[DS_RL]->store(h->codecs[DS_RL], map, "RL", fd->version)) return NULL; mc++; } if (h->codecs[DS_AP]) { if (-1 == h->codecs[DS_AP]->store(h->codecs[DS_AP], map, "AP", fd->version)) return NULL; mc++; } if (h->codecs[DS_RG]) { if (-1 == h->codecs[DS_RG]->store(h->codecs[DS_RG], map, "RG", fd->version)) return NULL; mc++; } if (h->codecs[DS_MF]) { if (-1 == h->codecs[DS_MF]->store(h->codecs[DS_MF], map, "MF", fd->version)) return NULL; mc++; } if (h->codecs[DS_NS]) { if (-1 == h->codecs[DS_NS]->store(h->codecs[DS_NS], map, "NS", fd->version)) return NULL; mc++; } if (h->codecs[DS_NP]) { if (-1 == h->codecs[DS_NP]->store(h->codecs[DS_NP], map, "NP", fd->version)) return NULL; mc++; } if (h->codecs[DS_TS]) { if (-1 == h->codecs[DS_TS]->store(h->codecs[DS_TS], map, "TS", fd->version)) return NULL; mc++; } if (h->codecs[DS_NF]) { if (-1 == h->codecs[DS_NF]->store(h->codecs[DS_NF], map, "NF", fd->version)) return NULL; mc++; } if (h->codecs[DS_TC]) { if (-1 == h->codecs[DS_TC]->store(h->codecs[DS_TC], map, "TC", fd->version)) return NULL; mc++; } if (h->codecs[DS_TN]) { if (-1 == h->codecs[DS_TN]->store(h->codecs[DS_TN], map, "TN", fd->version)) return NULL; mc++; } if (h->codecs[DS_TL]) { if (-1 == h->codecs[DS_TL]->store(h->codecs[DS_TL], map, "TL", fd->version)) return NULL; mc++; } if (h->codecs[DS_FN]) { if (-1 == h->codecs[DS_FN]->store(h->codecs[DS_FN], map, "FN", fd->version)) return NULL; mc++; } if (h->codecs[DS_FC]) { if (-1 == h->codecs[DS_FC]->store(h->codecs[DS_FC], map, "FC", fd->version)) return NULL; mc++; } if (h->codecs[DS_FP]) { if (-1 == h->codecs[DS_FP]->store(h->codecs[DS_FP], map, "FP", fd->version)) return NULL; mc++; } if (h->codecs[DS_BS]) { if (-1 == h->codecs[DS_BS]->store(h->codecs[DS_BS], map, "BS", fd->version)) return NULL; mc++; } if (h->codecs[DS_IN]) { if (-1 == h->codecs[DS_IN]->store(h->codecs[DS_IN], map, "IN", fd->version)) return NULL; mc++; } if (h->codecs[DS_DL]) { if (-1 == h->codecs[DS_DL]->store(h->codecs[DS_DL], map, "DL", fd->version)) return NULL; mc++; } if (h->codecs[DS_BA]) { if (-1 == h->codecs[DS_BA]->store(h->codecs[DS_BA], map, "BA", fd->version)) return NULL; mc++; } if (h->codecs[DS_BB]) { if (-1 == h->codecs[DS_BB]->store(h->codecs[DS_BB], map, "BB", fd->version)) return NULL; mc++; } if (h->codecs[DS_MQ]) { if (-1 == h->codecs[DS_MQ]->store(h->codecs[DS_MQ], map, "MQ", fd->version)) return NULL; mc++; } if (h->codecs[DS_RN]) { if (-1 == h->codecs[DS_RN]->store(h->codecs[DS_RN], map, "RN", fd->version)) return NULL; mc++; } if (h->codecs[DS_QS]) { if (-1 == h->codecs[DS_QS]->store(h->codecs[DS_QS], map, "QS", fd->version)) return NULL; mc++; } if (h->codecs[DS_QQ]) { if (-1 == h->codecs[DS_QQ]->store(h->codecs[DS_QQ], map, "QQ", fd->version)) return NULL; mc++; } if (h->codecs[DS_RI]) { if (-1 == h->codecs[DS_RI]->store(h->codecs[DS_RI], map, "RI", fd->version)) return NULL; mc++; } if (h->codecs[DS_SC]) { if (-1 == h->codecs[DS_SC]->store(h->codecs[DS_SC], map, "SC", fd->version)) return NULL; mc++; } if (h->codecs[DS_RS]) { if (-1 == h->codecs[DS_RS]->store(h->codecs[DS_RS], map, "RS", fd->version)) return NULL; mc++; } if (h->codecs[DS_PD]) { if (-1 == h->codecs[DS_PD]->store(h->codecs[DS_PD], map, "PD", fd->version)) return NULL; mc++; } if (h->codecs[DS_HC]) { if (-1 == h->codecs[DS_HC]->store(h->codecs[DS_HC], map, "HC", fd->version)) return NULL; mc++; } if (h->codecs[DS_TM]) { if (-1 == h->codecs[DS_TM]->store(h->codecs[DS_TM], map, "TM", fd->version)) return NULL; mc++; } if (h->codecs[DS_TV]) { if (-1 == h->codecs[DS_TV]->store(h->codecs[DS_TV], map, "TV", fd->version)) return NULL; mc++; } itf8_put_blk(cb, BLOCK_SIZE(map) + itf8_size(mc)); itf8_put_blk(cb, mc); BLOCK_APPEND(cb, BLOCK_DATA(map), BLOCK_SIZE(map)); /* tag encoding map */ #if 0 mc = 0; if (h->tag_encoding_map) { for (i = 0; i < CRAM_MAP_HASH; i++) { cram_map *m; for (m = h->tag_encoding_map[i]; m; m = m->next) { itf8_put_blk(map, m->key); if (-1 == (sz = m->codec->store(m->codec, map, NULL, fd->version))) return NULL; mc++; } } } #else mc = 0; BLOCK_SIZE(map) = 0; if (c->tags_used) { HashItem *hi; HashIter *iter = HashTableIterCreate(); if (!iter) return NULL; while ((hi = HashTableIterNext(c->tags_used, iter))) { int key = (hi->key[0]<<16)|(hi->key[1]<<8)|hi->key[2]; cram_tag_map *tm = (cram_tag_map *)hi->data.p; cram_codec *c = tm->codec; itf8_put_blk(map, key); if (-1 == c->store(c, map, NULL, fd->version)) return NULL; mc++; } HashTableIterDestroy(iter); } #endif itf8_put_blk(cb, BLOCK_SIZE(map) + itf8_size(mc)); itf8_put_blk(cb, mc); BLOCK_APPEND(cb, BLOCK_DATA(map), BLOCK_SIZE(map)); if (fd->verbose) fprintf(stderr, "Wrote compression block header in %d bytes\n", (int)BLOCK_SIZE(cb)); BLOCK_UPLEN(cb); cram_free_block(map); return cb; } /* * Encodes a slice compression header. * * Returns cram_block on success * NULL on failure */ cram_block *cram_encode_slice_header(cram_fd *fd, cram_slice *s) { char *buf; char *cp; cram_block *b = cram_new_block(MAPPED_SLICE, 0); int j; if (!b) return NULL; if (NULL == (cp = buf = malloc(22+16+5*(8+s->hdr->num_blocks)))) { cram_free_block(b); return NULL; } cp += itf8_put(cp, s->hdr->ref_seq_id); cp += itf8_put(cp, s->hdr->ref_seq_start); cp += itf8_put(cp, s->hdr->ref_seq_span); cp += itf8_put(cp, s->hdr->num_records); if (CRAM_MAJOR_VERS(fd->version) == 2) cp += itf8_put(cp, s->hdr->record_counter); else if (CRAM_MAJOR_VERS(fd->version) >= 3) cp += ltf8_put(cp, s->hdr->record_counter); cp += itf8_put(cp, s->hdr->num_blocks); cp += itf8_put(cp, s->hdr->num_content_ids); for (j = 0; j < s->hdr->num_content_ids; j++) { cp += itf8_put(cp, s->hdr->block_content_ids[j]); } if (s->hdr->content_type == MAPPED_SLICE) cp += itf8_put(cp, s->hdr->ref_base_id); memcpy(cp, s->hdr->md5, 16); cp += 16; if (CRAM_MAJOR_VERS(fd->version) >= 3) { if (s->BD_crc || s->SD_crc) { *cp++ = 'B'; *cp++ = 'D'; *cp++ = 'B'; *cp++ = 'c'; *cp++ = 4; *cp++ = 0; *cp++ = 0; *cp++ = 0; *cp++ = (s->BD_crc >> 0) & 0xff; *cp++ = (s->BD_crc >> 8) & 0xff; *cp++ = (s->BD_crc >> 16) & 0xff; *cp++ = (s->BD_crc >> 24) & 0xff; *cp++ = 'S'; *cp++ = 'D'; *cp++ = 'B'; *cp++ = 'c'; *cp++ = 4; *cp++ = 0; *cp++ = 0; *cp++ = 0; *cp++ = (s->SD_crc >> 0) & 0xff; *cp++ = (s->SD_crc >> 8) & 0xff; *cp++ = (s->SD_crc >> 16) & 0xff; *cp++ = (s->SD_crc >> 24) & 0xff; } } assert(cp-buf <= 22+16+5*(8+s->hdr->num_blocks)); b->data = (unsigned char *)buf; b->comp_size = b->uncomp_size = cp-buf; return b; } /* * Encodes a single read. * * Returns 0 on success * -1 on failure */ static int cram_encode_slice_read(cram_fd *fd, cram_container *c, cram_block_compression_hdr *h, cram_slice *s, cram_record *cr, int *last_pos) { int r = 0; int32_t i32; unsigned char uc; //fprintf(stderr, "Encode seq %d, %d/%d FN=%d, %s\n", rec, core->byte, core->bit, cr->nfeature, s->name_ds->str + cr->name); //printf("BF=0x%x\n", cr->flags); // bf = cram_flag_swap[cr->flags]; i32 = fd->cram_flag_swap[cr->flags & 0xfff]; r |= h->codecs[DS_BF]->encode(s, h->codecs[DS_BF], (char *)&i32, 1); i32 = cr->cram_flags; r |= h->codecs[DS_CF]->encode(s, h->codecs[DS_CF], (char *)&i32, 1); if (s->hdr->ref_seq_id == -2) r |= h->codecs[DS_RI]->encode(s, h->codecs[DS_RI], (char *)&cr->ref_id, 1); r |= h->codecs[DS_RL]->encode(s, h->codecs[DS_RL], (char *)&cr->len, 1); if (c->pos_sorted) { i32 = cr->apos - *last_pos; r |= h->codecs[DS_AP]->encode(s, h->codecs[DS_AP], (char *)&i32, 1); *last_pos = cr->apos; } else { i32 = cr->apos; r |= h->codecs[DS_AP]->encode(s, h->codecs[DS_AP], (char *)&i32, 1); } r |= h->codecs[DS_RG]->encode(s, h->codecs[DS_RG], (char *)&cr->rg, 1); if (c->comp_hdr->read_names_included) { // RN codec: Already stored in block[3]. } if (cr->cram_flags & CRAM_FLAG_DETACHED) { i32 = cr->mate_flags; r |= h->codecs[DS_MF]->encode(s, h->codecs[DS_MF], (char *)&i32, 1); if (!c->comp_hdr->read_names_included) { // RN codec: Already stored in block[3]. } r |= h->codecs[DS_NS]->encode(s, h->codecs[DS_NS], (char *)&cr->mate_ref_id, 1); r |= h->codecs[DS_NP]->encode(s, h->codecs[DS_NP], (char *)&cr->mate_pos, 1); r |= h->codecs[DS_TS]->encode(s, h->codecs[DS_TS], (char *)&cr->tlen, 1); } else if (cr->cram_flags & CRAM_FLAG_MATE_DOWNSTREAM) { r |= h->codecs[DS_NF]->encode(s, h->codecs[DS_NF], (char *)&cr->mate_line, 1); } /* Aux tags */ r |= h->codecs[DS_TL]->encode(s, h->codecs[DS_TL], (char *)&cr->TL, 1); // qual // QS codec : Already stored in block[2]. // features (diffs) if (!(cr->flags & BAM_FUNMAP)) { int prev_pos = 0, j; r |= h->codecs[DS_FN]->encode(s, h->codecs[DS_FN], (char *)&cr->nfeature, 1); for (j = 0; j < cr->nfeature; j++) { cram_feature *f = &s->features[cr->feature + j]; uc = f->X.code; r |= h->codecs[DS_FC]->encode(s, h->codecs[DS_FC], (char *)&uc, 1); i32 = f->X.pos - prev_pos; r |= h->codecs[DS_FP]->encode(s, h->codecs[DS_FP], (char *)&i32, 1); prev_pos = f->X.pos; switch(f->X.code) { //char *seq; case 'X': //fprintf(stderr, " FC=%c FP=%d base=%d\n", f->X.code, i32, f->X.base); uc = f->X.base; r |= h->codecs[DS_BS]->encode(s, h->codecs[DS_BS], (char *)&uc, 1); break; case 'S': // Already done // r |= h->codecs[DS_SC]->encode(s, h->codecs[DS_SC], // BLOCK_DATA(s->soft_blk) + f->S.seq_idx, // f->S.len); // if (IS_CRAM_3_VERS(fd)) { // r |= h->codecs[DS_BB]->encode(s, h->codecs[DS_BB], // BLOCK_DATA(s->seqs_blk) + f->S.seq_idx, // f->S.len); // } break; case 'I': //seq = DSTRING_STR(s->seqs_ds) + f->S.seq_idx; //r |= h->codecs[DS_IN]->encode(s, h->codecs[DS_IN], // seq, f->S.len); // if (IS_CRAM_3_VERS(fd)) { // r |= h->codecs[DS_BB]->encode(s, h->codecs[DS_BB], // BLOCK_DATA(s->seqs_blk) + f->I.seq_idx, // f->I.len); // } break; case 'i': uc = f->i.base; r |= h->codecs[DS_BA]->encode(s, h->codecs[DS_BA], (char *)&uc, 1); //seq = DSTRING_STR(s->seqs_ds) + f->S.seq_idx; //r |= h->codecs[DS_IN]->encode(s, h->codecs[DS_IN], // seq, 1); break; case 'D': i32 = f->D.len; r |= h->codecs[DS_DL]->encode(s, h->codecs[DS_DL], (char *)&i32, 1); break; case 'B': // // Used when we try to store a non ACGTN base or an N // // that aligns against a non ACGTN reference uc = f->B.base; r |= h->codecs[DS_BA]->encode(s, h->codecs[DS_BA], (char *)&uc, 1); // Already added // uc = f->B.qual; // r |= h->codecs[DS_QS]->encode(s, h->codecs[DS_QS], // (char *)&uc, 1); break; case 'b': // string of bases r |= h->codecs[DS_BB]->encode(s, h->codecs[DS_BB], (char *)BLOCK_DATA(s->seqs_blk) + f->b.seq_idx, f->b.len); break; case 'Q': // Already added // uc = f->B.qual; // r |= h->codecs[DS_QS]->encode(s, h->codecs[DS_QS], // (char *)&uc, 1); break; case 'N': i32 = f->N.len; r |= h->codecs[DS_RS]->encode(s, h->codecs[DS_RS], (char *)&i32, 1); break; case 'P': i32 = f->P.len; r |= h->codecs[DS_PD]->encode(s, h->codecs[DS_PD], (char *)&i32, 1); break; case 'H': i32 = f->H.len; r |= h->codecs[DS_HC]->encode(s, h->codecs[DS_HC], (char *)&i32, 1); break; default: fprintf(stderr, "unhandled feature code %c\n", f->X.code); return -1; } } r |= h->codecs[DS_MQ]->encode(s, h->codecs[DS_MQ], (char *)&cr->mqual, 1); } else { char *seq = (char *)BLOCK_DATA(s->seqs_blk) + cr->seq; if (cr->len) r |= h->codecs[DS_BA]->encode(s, h->codecs[DS_BA], seq, cr->len); } return r ? -1 : 0; } #if 0 static void squash_qual(cram_block *b) { size_t i, j, l; unsigned int map[256] = {0}; l = BLOCK_SIZE(b); for (i = 0; i < l; i++) map[b->data[i]]++; for (i = j = 0; i < 256; i++) if (map[i]) map[i] = j++; //fprintf(stderr, "%d symbols\n", j); assert(j <= 16); l /= 2; for (i = j = 0; j < l; j++) { assert(map[b->data[i+0]]!=255); assert(map[b->data[i+1]]!=255); unsigned char c = map[b->data[i++]] << 4; b->data[j] = c | map[b->data[i++]]; } if (j*2 < BLOCK_SIZE(b)) b->data[j++] = map[b->data[BLOCK_SIZE(b)-1]]<<4; //fprintf(stderr, "Data size %d to %d\n", (int)BLOCK_SIZE(b), (int)j); b->uncomp_size = BLOCK_SIZE(b) = j; } #endif /* * Applies various compression methods to specific blocks, depending on * known observations of how data series compress. * * Returns 0 on success * -1 on failure */ static int cram_compress_slice(cram_fd *fd, cram_container *c, cram_slice *s) { int level = fd->level, i; int method = 1< 5 && s->block[0]->uncomp_size > 500) cram_compress_block(fd, s->block[0], NULL, 1<use_bz2) method |= 1<use_rans) method |= (1<use_lzma) method |= (1<= 6) method |= 1<= 6) methodF = method; #if 0 // Squash qual. // Experimental to see what packing into nibbles first does if // the qualities have been quantised and fit. (NB: misses lookup // table in output.) squash_qual(s->block[DS_QS]); #endif /* Specific compression methods for certain block types */ if (cram_compress_block(fd, s->block[DS_IN], fd->m[DS_IN], //IN (seq) method, level)) return -1; if (fd->level == 0) { /* Do nothing */ } else if (fd->level == 1) { if (cram_compress_block(fd, s->block[DS_QS], fd->m[DS_QS], methodF, 1)) return -1; for (i = DS_aux; i <= DS_aux_oz; i++) { if (s->block[i]) if (cram_compress_block(fd, s->block[i], fd->m[i], method, 1)) return -1; } } else if (fd->level < 3) { if (cram_compress_block(fd, s->block[DS_QS], fd->m[DS_QS], method, 1)) return -1; if (cram_compress_block(fd, s->block[DS_BA], fd->m[DS_BA], method, 1)) return -1; if (s->block[DS_BB]) if (cram_compress_block(fd, s->block[DS_BB], fd->m[DS_BB], method, 1)) return -1; for (i = DS_aux; i <= DS_aux_oz; i++) { if (s->block[i]) if (cram_compress_block(fd, s->block[i], fd->m[i], method, level)) return -1; } } else { if (cram_compress_block(fd, s->block[DS_QS], fd->m[DS_QS], method, level)) return -1; if (cram_compress_block(fd, s->block[DS_BA], fd->m[DS_BA], method, level)) return -1; if (s->block[DS_BB]) if (cram_compress_block(fd, s->block[DS_BB], fd->m[DS_BB], method, level)) return -1; for (i = DS_aux; i <= DS_aux_oz; i++) { if (s->block[i]) if (cram_compress_block(fd, s->block[i], fd->m[i], method, level)) return -1; } } // NAME: best is generally xz, bzip2, zlib then rans1 // It benefits well from a little bit extra compression level. if (cram_compress_block(fd, s->block[DS_RN], fd->m[DS_RN], method & ~(1<block[DS_NS] != s->block[0]) if (cram_compress_block(fd, s->block[DS_NS], fd->m[DS_NS], method, level)) return -1; /* * Compress any auxiliary tags with their own per-tag metrics */ { int i; for (i = 0; i < s->naux_block; i++) { if (!s->aux_block[i] || s->aux_block[i] == s->block[0]) continue; if (s->aux_block[i]->method != RAW) continue; if (cram_compress_block(fd, s->aux_block[i], s->aux_block[i]->m, method, level)) return -1; } } /* * Minimal compression of any block still uncompressed, bar CORE */ { int i; for (i = 1; i < s->hdr->num_blocks && i < DS_END; i++) { if (!s->block[i] || s->block[i] == s->block[0]) continue; if (s->block[i]->method != RAW) continue; if (cram_compress_block(fd, s->block[i], fd->m[i], methodF, level)) return -1; } } return 0; } /* * Encodes a single slice from a container * * Returns 0 on success * -1 on failure */ static int cram_encode_slice(cram_fd *fd, cram_container *c, cram_block_compression_hdr *h, cram_slice *s) { int rec, r = 0, last_pos; int embed_ref; enum cram_DS_ID id; embed_ref = fd->embed_ref && s->hdr->ref_seq_id != -1 ? 1 : 0; /* * Slice external blocks: * ID 0 => base calls (insertions, soft-clip) * ID 1 => qualities * ID 2 => names * ID 3 => TS (insert size), NP (next frag) * ID 4 => tag values * ID 6 => tag IDs (TN), ifd CRAM_1_VERS * ID 7 => TD tag dictionary, if !CRAM_1_VERS */ /* Create cram slice header */ s->hdr->ref_base_id = embed_ref ? DS_ref : -1; s->hdr->record_counter = c->num_records + c->record_counter; c->num_records += s->hdr->num_records; int ntags = c->tags_used ? c->tags_used->nused : 0; s->block = calloc(DS_END + ntags, sizeof(s->block[0])); s->hdr->block_content_ids = malloc(DS_END * sizeof(int32_t)); if (!s->block || !s->hdr->block_content_ids) return -1; // Create first fixed blocks, always external. // CORE if (!(s->block[0] = cram_new_block(CORE, 0))) return -1; // Embedded reference if (embed_ref) { if (!(s->block[DS_ref] = cram_new_block(EXTERNAL, DS_ref))) return -1; s->ref_id = DS_ref; // needed? BLOCK_APPEND(s->block[DS_ref], c->ref + c->first_base - c->ref_start, c->last_base - c->first_base + 1); } /* * All the data-series blocks if appropriate. */ for (id = DS_BF; id < DS_TN; id++) { if (h->codecs[id] && (h->codecs[id]->codec == E_EXTERNAL || h->codecs[id]->codec == E_BYTE_ARRAY_STOP || h->codecs[id]->codec == E_BYTE_ARRAY_LEN)) { switch (h->codecs[id]->codec) { case E_EXTERNAL: if (!(s->block[id] = cram_new_block(EXTERNAL, id))) return -1; h->codecs[id]->external.content_id = id; break; case E_BYTE_ARRAY_STOP: if (!(s->block[id] = cram_new_block(EXTERNAL, id))) return -1; h->codecs[id]->byte_array_stop.content_id = id; break; case E_BYTE_ARRAY_LEN: { cram_codec *cc; cc = h->codecs[id]->e_byte_array_len.len_codec; if (cc->codec == E_EXTERNAL) { int eid = cc->external.content_id; if (!(s->block[eid] = cram_new_block(EXTERNAL, eid))) return -1; cc->external.content_id = eid; cc->out = s->block[eid]; } cc = h->codecs[id]->e_byte_array_len.val_codec; if (cc->codec == E_EXTERNAL) { int eid = cc->external.content_id; if (!s->block[eid]) if (!(s->block[eid] = cram_new_block(EXTERNAL, eid))) return -1; cc->external.content_id = eid; cc->out = s->block[eid]; } break; } default: break; } } else { if (!(id == DS_BB && !h->codecs[DS_BB])) s->block[id] = s->block[0]; } if (h->codecs[id]) h->codecs[id]->out = s->block[id]; } /* * Add in the external tag blocks too. */ if (c->tags_used) { int n; s->hdr->num_blocks = DS_END; for (n = 0; n < s->naux_block; n++) s->block[s->hdr->num_blocks++] = s->aux_block[n]; } /* Encode reads */ last_pos = s->hdr->ref_seq_start; for (rec = 0; rec < s->hdr->num_records; rec++) { cram_record *cr = &s->crecs[rec]; if (cram_encode_slice_read(fd, c, h, s, cr, &last_pos) == -1) return -1; } s->block[0]->uncomp_size = s->block[0]->byte + (s->block[0]->bit < 7); s->block[0]->comp_size = s->block[0]->uncomp_size; // Make sure the fixed blocks point to the correct sources s->block[DS_IN] = s->base_blk; s->base_blk = NULL; s->block[DS_QS] = s->qual_blk; s->qual_blk = NULL; s->block[DS_RN] = s->name_blk; s->name_blk = NULL; s->block[DS_SC] = s->soft_blk; s->soft_blk = NULL; // Ensure block sizes are up to date. for (id = 1; id < s->hdr->num_blocks; id++) { if (!s->block[id] || s->block[id] == s->block[0]) continue; if (s->block[id]->uncomp_size == 0) BLOCK_UPLEN(s->block[id]); } // Compress it all if (cram_compress_slice(fd, c, s) == -1) return -1; // Collapse empty blocks and create hdr_block { int i, j; s->hdr->block_content_ids = realloc(s->hdr->block_content_ids, s->hdr->num_blocks * sizeof(int32_t)); if (!s->hdr->block_content_ids) return -1; for (i = j = 1; i < s->hdr->num_blocks; i++) { if (!s->block[i] || s->block[i] == s->block[0]) continue; if (s->block[i]->uncomp_size == 0) { cram_free_block(s->block[i]); s->block[i] = NULL; continue; } s->block[j] = s->block[i]; s->hdr->block_content_ids[j-1] = s->block[i]->content_id; j++; } s->hdr->num_content_ids = j-1; s->hdr->num_blocks = j; if (!(s->hdr_block = cram_encode_slice_header(fd, s))) return -1; } return r ? -1 : 0; } /* * Encodes all slices in a container into blocks. * Returns 0 on success * -1 on failure */ int cram_encode_container(cram_fd *fd, cram_container *c) { int i, j, slice_offset; cram_block_compression_hdr *h = c->comp_hdr; cram_block *c_hdr; int multi_ref = 0; int r1, r2, sn, nref; spare_bams *spares; /* Cache references up-front if we have unsorted access patterns */ if (fd->ref_lock) pthread_mutex_lock(fd->ref_lock); nref = fd->refs->nref; if (fd->ref_lock) pthread_mutex_unlock(fd->ref_lock); if (!fd->no_ref && c->refs_used) { for (i = 0; i < nref; i++) { if (c->refs_used[i]) cram_get_ref(fd, i, 1, 0); } } /* To create M5 strings */ /* Fetch reference sequence */ if (!fd->no_ref) { bam_seq_t *b = c->bams[0]; char *ref; ref = cram_get_ref(fd, bam_ref(b), 1, 0); if (!ref && bam_ref(b) >= 0) { fprintf(stderr, "Failed to load reference #%d\n", bam_ref(b)); return -1; } if ((c->ref_id = bam_ref(b)) >= 0) { c->ref_seq_id = c->ref_id; c->ref = fd->refs->ref_id[c->ref_seq_id]->seq; c->ref_start = 1; c->ref_end = fd->refs->ref_id[c->ref_seq_id]->length; } else { c->ref_seq_id = c->ref_id; // FIXME remove one var? } } else { c->ref_id = bam_ref(c->bams[0]); cram_ref_incr(fd->refs, c->ref_id); c->ref_seq_id = c->ref_id; } /* Turn bams into cram_records and gather basic stats */ for (r1 = sn = 0; r1 < c->curr_c_rec; sn++) { cram_slice *s = c->slices[sn]; int first_base = INT_MAX, last_base = INT_MIN; assert(sn < c->curr_slice); /* FIXME: we could create our slice objects here too instead of * in cram_put_bam_seq. It's more natural here and also this is * bit is threaded so it's less work in the main thread. */ for (r2 = 0; r1 < c->curr_c_rec && r2 < s->hdr->num_records; r1++, r2++) { cram_record *cr = &s->crecs[r2]; bam_seq_t *b = c->bams[r1]; /* If multi-ref we need to cope with changing reference per seq */ if (c->multi_seq && !fd->no_ref) { if (bam_ref(b) != c->ref_seq_id && bam_ref(b) >= 0) { if (c->ref_seq_id >= 0) cram_ref_decr(fd->refs, c->ref_seq_id); if (!cram_get_ref(fd, bam_ref(b), 1, 0)) { fprintf(stderr, "Failed to load reference #%d\n", bam_ref(b)); return -1; } c->ref_seq_id = bam_ref(b); // overwritten later by -2 if (!fd->refs->ref_id[c->ref_seq_id]->seq) return -1; c->ref = fd->refs->ref_id[c->ref_seq_id]->seq; c->ref_start = 1; c->ref_end = fd->refs->ref_id[c->ref_seq_id]->length; } } if (process_one_read(fd, c, s, cr, b, r2) != 0) return -1; if (first_base > cr->apos) first_base = cr->apos; if (last_base < cr->aend) last_base = cr->aend; } if (c->multi_seq) { s->hdr->ref_seq_id = -2; s->hdr->ref_seq_start = 0; s->hdr->ref_seq_span = 0; } else { s->hdr->ref_seq_id = c->ref_id; s->hdr->ref_seq_start = first_base; s->hdr->ref_seq_span = last_base - first_base + 1; } s->hdr->num_records = r2; // Processed a slice, now stash the aux blocks so the next // slice can start aggregating them from the start again. if (c->tags_used->nused) { int ntags = c->tags_used->nused; s->aux_block = calloc(ntags, sizeof(*s->aux_block)); if (!s->aux_block) return -1; HashItem *hi; HashIter *iter = HashTableIterCreate(); if (!iter) return -1; s->naux_block = 0; while ((hi = HashTableIterNext(c->tags_used, iter))) { cram_tag_map *tm = (cram_tag_map *)hi->data.p; if (!tm->blk) continue; s->aux_block[s->naux_block++] = tm->blk; tm->blk = NULL; } assert(s->naux_block <= c->tags_used->nused); HashTableIterDestroy(iter); } } if (c->multi_seq && !fd->no_ref) { if (c->ref_seq_id >= 0) cram_ref_decr(fd->refs, c->ref_seq_id); } /* Link our bams[] array onto the spare bam list for reuse */ spares = malloc(sizeof(*spares)); if (fd->bam_list_lock) pthread_mutex_lock(fd->bam_list_lock); spares->bams = c->bams; spares->next = fd->bl; fd->bl = spares; if (fd->bam_list_lock) pthread_mutex_unlock(fd->bam_list_lock); c->bams = NULL; /* Detect if a multi-seq container */ if (fd->verbose > 1) fprintf(stderr, "RI_stats: "); cram_stats_encoding(fd, c->stats[DS_RI]); multi_ref = c->stats[DS_RI]->nvals > 1; if (multi_ref) { if (fd->verbose) fprintf(stderr, "Multi-ref container\n"); c->ref_seq_id = -2; c->ref_seq_start = 0; c->ref_seq_span = 0; } /* Compute MD5s */ for (i = 0; i < c->curr_slice; i++) { cram_slice *s = c->slices[i]; if (s->hdr->ref_seq_id >= 0 && c->multi_seq == 0 && !fd->no_ref) { MD5_CTX md5; MD5_Init(&md5); MD5_Update(&md5, c->ref + s->hdr->ref_seq_start - c->ref_start, s->hdr->ref_seq_span); MD5_Final(s->hdr->md5, &md5); } else { memset(s->hdr->md5, 0, 16); } } c->num_records = 0; c->num_blocks = 1; // cram_block_compression_hdr c->length = 0; if (fd->verbose > 1) fprintf(stderr, "BF_stats: "); h->codecs[DS_BF] = cram_encoder_init(cram_stats_encoding(fd, c->stats[DS_BF]), c->stats[DS_BF], E_INT, NULL, fd->version); if (fd->verbose > 1) fprintf(stderr, "CF_stats: "); h->codecs[DS_CF] = cram_encoder_init(cram_stats_encoding(fd, c->stats[DS_CF]), c->stats[DS_CF], E_INT, NULL, fd->version); // fprintf(stderr, "=== RN ===\n"); // h->codecs[DS_RN] = cram_encoder_init(cram_stats_encoding(fd, c->stats[DS_RN]), // c->stats[DS_RN], E_BYTE_ARRAY, NULL, // fd->version); if (fd->verbose > 1) fprintf(stderr, "AP_stats: "); if (c->pos_sorted) { h->codecs[DS_AP] = cram_encoder_init(cram_stats_encoding(fd, c->stats[DS_AP]), c->stats[DS_AP], E_INT, NULL, fd->version); } else { int p[2] = {0, c->max_apos}; h->codecs[DS_AP] = cram_encoder_init(E_BETA, NULL, E_INT, p, fd->version); } if (fd->verbose > 1) fprintf(stderr, "RG_stats: "); h->codecs[DS_RG] = cram_encoder_init(cram_stats_encoding(fd, c->stats[DS_RG]), c->stats[DS_RG], E_INT, NULL, fd->version); if (fd->verbose > 1) fprintf(stderr, "MQ_stats: "); h->codecs[DS_MQ] = cram_encoder_init(cram_stats_encoding(fd, c->stats[DS_MQ]), c->stats[DS_MQ], E_INT, NULL, fd->version); //fprintf(stderr, "=== NS ===\n"); if (fd->verbose > 1) fprintf(stderr, "NS_stats: "); h->codecs[DS_NS] = cram_encoder_init(cram_stats_encoding(fd, c->stats[DS_NS]), c->stats[DS_NS], E_INT, NULL, fd->version); if (fd->verbose > 1) fprintf(stderr, "MF_stats: "); h->codecs[DS_MF] = cram_encoder_init(cram_stats_encoding(fd, c->stats[DS_MF]), c->stats[DS_MF], E_INT, NULL, fd->version); h->codecs[DS_TS] = cram_encoder_init(cram_stats_encoding(fd, c->stats[DS_TS]), c->stats[DS_TS], E_INT, NULL, fd->version); h->codecs[DS_NP] = cram_encoder_init(cram_stats_encoding(fd, c->stats[DS_NP]), c->stats[DS_NP], E_INT, NULL, fd->version); if (fd->verbose > 1) fprintf(stderr, "NF_stats: "); h->codecs[DS_NF] = cram_encoder_init(cram_stats_encoding(fd, c->stats[DS_NF]), c->stats[DS_NF], E_INT, NULL, fd->version); if (fd->verbose > 1) fprintf(stderr, "RL_stats: "); h->codecs[DS_RL] = cram_encoder_init(cram_stats_encoding(fd, c->stats[DS_RL]), c->stats[DS_RL], E_INT, NULL, fd->version); if (fd->verbose > 1) fprintf(stderr, "FN_stats: "); h->codecs[DS_FN] = cram_encoder_init(cram_stats_encoding(fd, c->stats[DS_FN]), c->stats[DS_FN], E_INT, NULL, fd->version); if (fd->verbose > 1) fprintf(stderr, "FC_stats: "); h->codecs[DS_FC] = cram_encoder_init(cram_stats_encoding(fd, c->stats[DS_FC]), c->stats[DS_FC], E_BYTE, NULL, fd->version); if (fd->verbose > 1) fprintf(stderr, "FP_stats: "); h->codecs[DS_FP] = cram_encoder_init(cram_stats_encoding(fd, c->stats[DS_FP]), c->stats[DS_FP], E_INT, NULL, fd->version); if (fd->verbose > 1) fprintf(stderr, "DL_stats: "); h->codecs[DS_DL] = cram_encoder_init(cram_stats_encoding(fd, c->stats[DS_DL]), c->stats[DS_DL], E_INT, NULL, fd->version); if (fd->verbose > 1) fprintf(stderr, "BA_stats: "); h->codecs[DS_BA] = cram_encoder_init(cram_stats_encoding(fd, c->stats[DS_BA]), c->stats[DS_BA], E_BYTE, NULL, fd->version); if (CRAM_MAJOR_VERS(fd->version) >= 3) { cram_byte_array_len_encoder e; e.len_encoding = E_EXTERNAL; e.len_dat = (void *)DS_BB_len; //e.len_dat = (void *)DS_BB; e.val_encoding = E_EXTERNAL; e.val_dat = (void *)DS_BB; h->codecs[DS_BB] = cram_encoder_init(E_BYTE_ARRAY_LEN, NULL, E_BYTE_ARRAY, (void *)&e, fd->version); } else { h->codecs[DS_BB] = NULL; } if (fd->verbose > 1) fprintf(stderr, "BS_stats: "); h->codecs[DS_BS] = cram_encoder_init(cram_stats_encoding(fd, c->stats[DS_BS]), c->stats[DS_BS], E_BYTE, NULL, fd->version); h->codecs[DS_TC] = NULL; h->codecs[DS_TN] = NULL; if (fd->verbose > 1) fprintf(stderr, "TL_stats: "); h->codecs[DS_TL] = cram_encoder_init(cram_stats_encoding(fd, c->stats[DS_TL]), c->stats[DS_TL], E_INT, NULL, fd->version); if (fd->verbose > 1) fprintf(stderr, "RI_stats: "); h->codecs[DS_RI] = cram_encoder_init(cram_stats_encoding(fd, c->stats[DS_RI]), c->stats[DS_RI], E_INT, NULL, fd->version); if (fd->verbose > 1) fprintf(stderr, "RS_stats: "); h->codecs[DS_RS] = cram_encoder_init(cram_stats_encoding(fd, c->stats[DS_RS]), c->stats[DS_RS], E_INT, NULL, fd->version); if (fd->verbose > 1) fprintf(stderr, "PD_stats: "); h->codecs[DS_PD] = cram_encoder_init(cram_stats_encoding(fd, c->stats[DS_PD]), c->stats[DS_PD], E_INT, NULL, fd->version); if (fd->verbose > 1) fprintf(stderr, "HC_stats: "); h->codecs[DS_HC] = cram_encoder_init(cram_stats_encoding(fd, c->stats[DS_HC]), c->stats[DS_HC], E_INT, NULL, fd->version); //fprintf(stderr, "=== SC ===\n"); if (1) { int i2[2] = {0, DS_SC}; h->codecs[DS_SC] = cram_encoder_init(E_BYTE_ARRAY_STOP, NULL, E_BYTE_ARRAY, (void *)i2, fd->version); } else { // Appears to be no practical benefit to using this method, // but it may work better if we start mixing SC, IN and BB // elements into the same external block. cram_byte_array_len_encoder e; e.len_encoding = E_EXTERNAL; e.len_dat = (void *)DS_SC_len; e.val_encoding = E_EXTERNAL; e.val_dat = (void *)DS_SC; h->codecs[DS_SC] = cram_encoder_init(E_BYTE_ARRAY_LEN, NULL, E_BYTE_ARRAY, (void *)&e, fd->version); } //fprintf(stderr, "=== IN ===\n"); { int i2[2] = {0, DS_IN}; h->codecs[DS_IN] = cram_encoder_init(E_BYTE_ARRAY_STOP, NULL, E_BYTE_ARRAY, (void *)i2, fd->version); } h->codecs[DS_QS] = cram_encoder_init(E_EXTERNAL, NULL, E_BYTE, (void *)DS_QS, fd->version); { int i2[2] = {0, DS_RN}; h->codecs[DS_RN] = cram_encoder_init(E_BYTE_ARRAY_STOP, NULL, E_BYTE_ARRAY, (void *)i2, fd->version); } /* Encode slices */ for (i = 0; i < c->curr_slice; i++) { if (fd->verbose) fprintf(stderr, "Encode slice %d\n", i); if (cram_encode_slice(fd, c, h, c->slices[i]) != 0) return -1; } /* Create compression header */ { h->ref_seq_id = c->ref_seq_id; h->ref_seq_start = c->ref_seq_start; h->ref_seq_span = c->ref_seq_span; h->num_records = c->num_records; h->mapped_qs_included = 0; // fixme h->unmapped_qs_included = 0; // fixme // h->... fixme memcpy(h->substitution_matrix, CRAM_SUBST_MATRIX, 20); if (!(c_hdr = cram_encode_compression_header(fd, c, h))) return -1; } /* Compute landmarks */ /* Fill out slice landmarks */ c->num_landmarks = c->curr_slice; c->landmark = malloc(c->num_landmarks * sizeof(*c->landmark)); if (!c->landmark) return -1; /* * Slice offset starts after the first block, so we need to simulate * writing it to work out the correct offset */ { slice_offset = c_hdr->method == RAW ? c_hdr->uncomp_size : c_hdr->comp_size; slice_offset += 2 + 4*IS_CRAM_3_VERS(fd) + itf8_size(c_hdr->content_id) + itf8_size(c_hdr->comp_size) + itf8_size(c_hdr->uncomp_size); } c->ref_seq_id = c->slices[0]->hdr->ref_seq_id; c->ref_seq_start = c->slices[0]->hdr->ref_seq_start; c->ref_seq_span = c->slices[0]->hdr->ref_seq_span; for (i = 0; i < c->curr_slice; i++) { cram_slice *s = c->slices[i]; c->num_blocks += s->hdr->num_blocks + 1; // slice header c->landmark[i] = slice_offset; if (s->hdr->ref_seq_start + s->hdr->ref_seq_span > c->ref_seq_start + c->ref_seq_span) { c->ref_seq_span = s->hdr->ref_seq_start + s->hdr->ref_seq_span - c->ref_seq_start; } slice_offset += s->hdr_block->method == RAW ? s->hdr_block->uncomp_size : s->hdr_block->comp_size; slice_offset += 2 + 4*IS_CRAM_3_VERS(fd) + itf8_size(s->hdr_block->content_id) + itf8_size(s->hdr_block->comp_size) + itf8_size(s->hdr_block->uncomp_size); for (j = 0; j < s->hdr->num_blocks; j++) { slice_offset += 2 + 4*IS_CRAM_3_VERS(fd) + itf8_size(s->block[j]->content_id) + itf8_size(s->block[j]->comp_size) + itf8_size(s->block[j]->uncomp_size); slice_offset += s->block[j]->method == RAW ? s->block[j]->uncomp_size : s->block[j]->comp_size; } } c->length += slice_offset; // just past the final slice c->comp_hdr_block = c_hdr; if (c->ref_seq_id >= 0) { cram_ref_decr(fd->refs, c->ref_seq_id); } /* Cache references up-front if we have unsorted access patterns */ if (!fd->no_ref && c->refs_used) { for (i = 0; i < fd->refs->nref; i++) { if (c->refs_used[i]) cram_ref_decr(fd->refs, i); } } return 0; } /* * Adds a feature code to a read within a slice. For purposes of minimising * memory allocations and fragmentation we have one array of features for all * reads within the slice. We return the index into this array for this new * feature. * * Returns feature index on success * -1 on failure. */ static int cram_add_feature(cram_container *c, cram_slice *s, cram_record *r, cram_feature *f) { if (s->nfeatures >= s->afeatures) { s->afeatures = s->afeatures ? s->afeatures*2 : 1024; s->features = realloc(s->features, s->afeatures*sizeof(*s->features)); if (!s->features) return -1; } if (!r->nfeature++) { r->feature = s->nfeatures; cram_stats_add(c->stats[DS_FP], f->X.pos); } else { cram_stats_add(c->stats[DS_FP], f->X.pos - s->features[r->feature + r->nfeature-2].X.pos); } cram_stats_add(c->stats[DS_FC], f->X.code); s->features[s->nfeatures++] = *f; return 0; } static int cram_add_substitution(cram_fd *fd, cram_container *c, cram_slice *s, cram_record *r, int pos, char base, char qual, char ref) { cram_feature f; // seq=ACGTN vs ref=ACGT or seq=ACGT vs ref=ACGTN if (fd->L2[(uc)base]<4 || (fd->L2[(uc)base]<5 && fd->L2[(uc)ref]<4)) { f.X.pos = pos+1; f.X.code = 'X'; f.X.base = fd->cram_sub_matrix[ref&0x1f][base&0x1f]; cram_stats_add(c->stats[DS_BS], f.X.base); } else { if (fd->binning == BINNING_ILLUMINA) qual = illumina_bin[(uc)qual]; f.B.pos = pos+1; f.B.code = 'B'; f.B.base = base; f.B.qual = qual; cram_stats_add(c->stats[DS_BA], f.B.base); cram_stats_add(c->stats[DS_QS], f.B.qual); BLOCK_APPEND_CHAR(s->qual_blk, qual); } return cram_add_feature(c, s, r, &f); } static int cram_add_bases(cram_fd *fd, cram_container *c, cram_slice *s, cram_record *r, int pos, int len, char *base) { cram_feature f; f.b.pos = pos+1; f.b.code = 'b'; f.b.seq_idx = base - (char *)BLOCK_DATA(s->seqs_blk); f.b.len = len; return cram_add_feature(c, s, r, &f); } static int cram_add_base(cram_fd *fd, cram_container *c, cram_slice *s, cram_record *r, int pos, char base, char qual) { cram_feature f; if (fd->binning == BINNING_ILLUMINA) qual = illumina_bin[(uc)qual]; f.B.pos = pos+1; f.B.code = 'B'; f.B.base = base; f.B.qual = qual; cram_stats_add(c->stats[DS_BA], base); cram_stats_add(c->stats[DS_QS], qual); BLOCK_APPEND_CHAR(s->qual_blk, qual); return cram_add_feature(c, s, r, &f); } static int cram_add_quality(cram_fd *fd, cram_container *c, cram_slice *s, cram_record *r, int pos, char qual) { cram_feature f; if (fd->binning == BINNING_ILLUMINA) qual = illumina_bin[(uc)qual]; f.Q.pos = pos+1; f.Q.code = 'Q'; f.Q.qual = qual; cram_stats_add(c->stats[DS_QS], qual); BLOCK_APPEND_CHAR(s->qual_blk, qual); return cram_add_feature(c, s, r, &f); } static int cram_add_deletion(cram_container *c, cram_slice *s, cram_record *r, int pos, int len, char *base) { cram_feature f; f.D.pos = pos+1; f.D.code = 'D'; f.D.len = len; cram_stats_add(c->stats[DS_DL], len); return cram_add_feature(c, s, r, &f); } static int cram_add_softclip(cram_container *c, cram_slice *s, cram_record *r, int pos, int len, char *base, int version) { cram_feature f; f.S.pos = pos+1; f.S.code = 'S'; f.S.len = len; switch (CRAM_MAJOR_VERS(version)) { case 1: f.S.seq_idx = BLOCK_SIZE(s->base_blk); BLOCK_APPEND(s->base_blk, base, len); BLOCK_APPEND_CHAR(s->base_blk, '\0'); break; case 2: default: f.S.seq_idx = BLOCK_SIZE(s->soft_blk); if (base) { BLOCK_APPEND(s->soft_blk, base, len); } else { int i; for (i = 0; i < len; i++) BLOCK_APPEND_CHAR(s->soft_blk, 'N'); } BLOCK_APPEND_CHAR(s->soft_blk, '\0'); break; // default: // // v3.0 onwards uses BB data-series // f.S.seq_idx = BLOCK_SIZE(s->soft_blk); } return cram_add_feature(c, s, r, &f); } static int cram_add_hardclip(cram_container *c, cram_slice *s, cram_record *r, int pos, int len, char *base) { cram_feature f; f.S.pos = pos+1; f.S.code = 'H'; f.S.len = len; cram_stats_add(c->stats[DS_HC], len); return cram_add_feature(c, s, r, &f); } static int cram_add_skip(cram_container *c, cram_slice *s, cram_record *r, int pos, int len, char *base) { cram_feature f; f.S.pos = pos+1; f.S.code = 'N'; f.S.len = len; cram_stats_add(c->stats[DS_RS], len); return cram_add_feature(c, s, r, &f); } static int cram_add_pad(cram_container *c, cram_slice *s, cram_record *r, int pos, int len, char *base) { cram_feature f; f.S.pos = pos+1; f.S.code = 'P'; f.S.len = len; cram_stats_add(c->stats[DS_PD], len); return cram_add_feature(c, s, r, &f); } static int cram_add_insertion(cram_container *c, cram_slice *s, cram_record *r, int pos, int len, char *base, int version) { cram_feature f; f.I.pos = pos+1; if (len == 1) { char b = base ? *base : 'N'; f.i.code = 'i'; f.i.base = b; cram_stats_add(c->stats[DS_BA], b); } else { f.I.code = 'I'; f.I.len = len; f.S.seq_idx = BLOCK_SIZE(s->base_blk); if (base) { BLOCK_APPEND(s->base_blk, base, len); } else { int i; for (i = 0; i < len; i++) BLOCK_APPEND_CHAR(s->base_blk, 'N'); } BLOCK_APPEND_CHAR(s->base_blk, '\0'); } return cram_add_feature(c, s, r, &f); } /* * Encodes auxiliary data. Largely duplicated from above, but done so to * keep it simple and avoid a myriad of version ifs. * * Returns the read-group parsed out of the BAM aux fields on success * NULL on failure or no rg present (FIXME) */ static char *cram_encode_aux(cram_fd *fd, bam_seq_t *b, cram_container *c, cram_slice *s, cram_record *cr) { char *aux, *orig, *rg = NULL; #ifdef SAMTOOLS int aux_size = bam_get_l_aux(b); #else int aux_size = bam_blk_size(b) - ((char *)bam_aux(b) - (char *)&bam_ref(b)); #endif cram_block *td_b = c->comp_hdr->TD_blk; int TD_blk_size = BLOCK_SIZE(td_b), new; HashData hd; HashItem *hi; orig = aux = (char *)bam_aux(b); // Copy aux keys to td_b and aux values to s->aux_blk while (aux[0] != 0 && aux - orig < aux_size) { HashData hd; hd.p = 0; // RG:Z if (aux[0] == 'R' && aux[1] == 'G' && aux[2] == 'Z') { rg = &aux[3]; while (*aux++); continue; } // MD:Z if (aux[0] == 'M' && aux[1] == 'D' && aux[2] == 'Z') { if (cr->len && !fd->no_ref && !(cr->flags & BAM_FUNMAP)) { while (*aux++); continue; } } // NM:i if (aux[0] == 'N' && aux[1] == 'M') { if (cr->len && !fd->no_ref && !(cr->flags & BAM_FUNMAP)) { switch(aux[2]) { case 'A': case 'C': case 'c': aux+=4; break; case 'S': case 's': aux+=5; break; case 'I': case 'i': case 'f': aux+=7; break; default: fprintf(stderr, "Unhandled type code for NM tag\n"); return NULL; } continue; } } // Restrict to appropriate integer size char aux_f[3] = {aux[0], aux[1], aux[2]}; char aux_len = 0; switch (aux[2]) { // Could split out 'i'/'s' to look for small -ves too. case 'I': case 'i': if ((aux[4]|aux[5]|aux[6]) == 0) aux_len = 1, aux_f[2] = 'C'; else if ((aux[5]|aux[6]) == 0) aux_len = 2, aux_f[2] = 'S'; else aux_len = 4; break; case 'S': case 's': if (aux[4] == 0) aux_len = 1, aux_f[2] = 'S'; else aux_len = 2; break; case 'f': aux_len = 4; break; } BLOCK_APPEND(td_b, aux_f, 3); // Container level tags_used, for TD series // replace with fast hash too if (!(hi = HashTableAdd(c->tags_used, aux_f, 3, hd, NULL))) return NULL; int key = (aux_f[0]<<16)|(aux_f[1]<<8)|aux_f[2]; if (!hi->data.p) { HashItem *hi_global; hd.p = NULL; // Global tags_used for cram_metrics support hd.p = NULL; if (fd->metrics_lock) pthread_mutex_lock(fd->metrics_lock); if (!(hi_global = HashTableAdd(fd->tags_used, aux_f, 3, hd, NULL))) return NULL; if (!hi_global->data.p) hi_global->data.p = cram_new_metrics(); if (fd->metrics_lock) pthread_mutex_unlock(fd->metrics_lock); int i2[2] = {'\t',key}; size_t sk = key; cram_tag_map *m = calloc(1, sizeof(*m)); cram_codec *c; // Use a block content id based on the tag id. // Codec type depends on tag data type. switch(hi->key[2]) { case 'Z': case 'H': // string as byte_array_stop c = cram_encoder_init(E_BYTE_ARRAY_STOP, NULL, E_BYTE_ARRAY, (void *)i2, fd->version); break; case 'A': case 'c': case 'C': { // byte array len, 1 byte cram_byte_array_len_encoder e; cram_stats st; e.len_encoding = E_HUFFMAN; e.len_dat = NULL; memset(&st, 0, sizeof(st)); cram_stats_add(&st, 1); cram_stats_encoding(fd, &st); e.val_encoding = E_EXTERNAL; e.val_dat = (void *)sk; c = cram_encoder_init(E_BYTE_ARRAY_LEN, &st, E_BYTE_ARRAY, (void *)&e, fd->version); break; } case 's': case 'S': { // byte array len, 2 byte cram_byte_array_len_encoder e; cram_stats st; e.len_encoding = E_HUFFMAN; e.len_dat = NULL; memset(&st, 0, sizeof(st)); cram_stats_add(&st, 2); cram_stats_encoding(fd, &st); e.val_encoding = E_EXTERNAL; e.val_dat = (void *)sk; c = cram_encoder_init(E_BYTE_ARRAY_LEN, &st, E_BYTE_ARRAY, (void *)&e, fd->version); break; } case 'i': case 'I': case 'f': { // byte array len, 4 byte cram_byte_array_len_encoder e; cram_stats st; e.len_encoding = E_HUFFMAN; e.len_dat = NULL; memset(&st, 0, sizeof(st)); cram_stats_add(&st, 4); cram_stats_encoding(fd, &st); e.val_encoding = E_EXTERNAL; e.val_dat = (void *)sk; c = cram_encoder_init(E_BYTE_ARRAY_LEN, &st, E_BYTE_ARRAY, (void *)&e, fd->version); break; } case 'B': { // Byte array of variable size, but we generate our tag // byte stream at the wrong stage (during reading and not // after slice header construction). So we use // BYTE_ARRAY_LEN with the length codec being external // too. cram_byte_array_len_encoder e; e.len_encoding = E_EXTERNAL; e.len_dat = (void *)sk; // or key+128 for len? e.val_encoding = E_EXTERNAL; e.val_dat = (void *)sk; c = cram_encoder_init(E_BYTE_ARRAY_LEN, NULL, E_BYTE_ARRAY, (void *)&e, fd->version); break; } default: fprintf(stderr, "Unsupported SAM aux type '%c'\n", hi->key[2]); c = NULL; } m->codec = c; hi->data.p = m; // Link to fd-global tag metrics m->m = hi_global ? (cram_metrics *)hi_global->data.p : NULL; } cram_tag_map *tm = (cram_tag_map *)hi->data.p; cram_codec *codec = tm->codec; switch(aux[2]) { case 'A': case 'C': case 'c': if (!tm->blk) { if (!(tm->blk = cram_new_block(EXTERNAL, key))) return NULL; codec->e_byte_array_len.val_codec->out = tm->blk; } aux+=3; //codec->encode(s, codec, aux, 1); // Functionally equivalent, but less code. BLOCK_APPEND_CHAR(tm->blk, *aux); aux++; break; case 'S': case 's': if (!tm->blk) { if (!(tm->blk = cram_new_block(EXTERNAL, key))) return NULL; codec->e_byte_array_len.val_codec->out = tm->blk; } aux+=3; //codec->encode(s, codec, aux, aux_len); BLOCK_APPEND(tm->blk, aux, aux_len); aux+=2; break; case 'I': case 'i': case 'f': if (!tm->blk) { if (!(tm->blk = cram_new_block(EXTERNAL, key))) return NULL; codec->e_byte_array_len.val_codec->out = tm->blk; } aux+=3; //codec->encode(s, codec, aux, aux_len); BLOCK_APPEND(tm->blk, aux, aux_len); aux+=4; break; case 'd': if (!tm->blk) { if (!(tm->blk = cram_new_block(EXTERNAL, key))) return NULL; codec->e_byte_array_len.val_codec->out = tm->blk; } aux+=3; //*tmp++=*aux++; *tmp++=*aux++; *tmp++=*aux++; //codec->encode(s, codec, aux, 8); BLOCK_APPEND(tm->blk, aux, 8); aux+=8; break; case 'Z': case 'H': { if (!tm->blk) { if (!(tm->blk = cram_new_block(EXTERNAL, key))) return NULL; codec->out = tm->blk; } char *aux_s; aux += 3; aux_s = aux; while (*aux++); codec->encode(s, codec, aux_s, aux - aux_s); } break; case 'B': { int type = aux[3], blen; uint32_t count = (uint32_t)((((unsigned char *)aux)[4]<< 0) + (((unsigned char *)aux)[5]<< 8) + (((unsigned char *)aux)[6]<<16) + (((unsigned char *)aux)[7]<<24)); if (!tm->blk) { if (!(tm->blk = cram_new_block(EXTERNAL, key))) return NULL; codec->e_byte_array_len.len_codec->out = tm->blk; codec->e_byte_array_len.val_codec->out = tm->blk; } // skip TN field aux+=3; // We use BYTE_ARRAY_LEN with external length, so store that first switch (type) { case 'c': case 'C': blen = count; break; case 's': case 'S': blen = 2*count; break; case 'i': case 'I': case 'f': blen = 4*count; break; default: fprintf(stderr, "Unknown sub-type '%c' for aux type 'B'\n", type); return NULL; } blen += 5; // sub-type & length codec->encode(s, codec, aux, blen); aux += blen; break; } default: fprintf(stderr, "Unknown aux type '%c'\n", aux[2]); return NULL; } tm->blk->m = tm->m; } // FIXME: sort BLOCK_DATA(td_b) by char[3] triples // And and increment TD hash entry BLOCK_APPEND_CHAR(td_b, 0); hd.i = c->comp_hdr->nTL; hi = HashTableAdd(c->comp_hdr->TD, (char *)BLOCK_DATA(td_b) + TD_blk_size, BLOCK_SIZE(td_b) - TD_blk_size, hd, &new); if (!hi) return NULL; if (!new) { BLOCK_SIZE(td_b) = TD_blk_size; } else { c->comp_hdr->nTL++; } cr->TL = hi->data.i; cram_stats_add(c->stats[DS_TL], cr->TL); return rg; } /* * During cram_next_container or before the final flush at end of * file, we update the current slice headers and increment the slice * number to the next slice. * * See cram_next_container() and cram_close(). */ void cram_update_curr_slice(cram_container *c) { cram_slice *s = c->slice; if (c->multi_seq) { s->hdr->ref_seq_id = -2; s->hdr->ref_seq_start = 0; s->hdr->ref_seq_span = 0; } else { s->hdr->ref_seq_id = c->curr_ref; s->hdr->ref_seq_start = c->first_base; s->hdr->ref_seq_span = c->last_base - c->first_base + 1; } s->hdr->num_records = c->curr_rec; if (c->curr_slice == 0) { if (c->ref_seq_id != s->hdr->ref_seq_id) c->ref_seq_id = s->hdr->ref_seq_id; c->ref_seq_start = c->first_base; } c->curr_slice++; } /* * Handles creation of a new container or new slice, flushing any * existing containers when appropriate. * * Really this is next slice, which may or may not lead to a new container. * * Returns cram_container pointer on success * NULL on failure. */ static cram_container *cram_next_container(cram_fd *fd, bam_seq_t *b) { cram_container *c = fd->ctr; int i; /* First occurence */ if (c->curr_ref == -2) c->curr_ref = bam_ref(b); if (c->slice) cram_update_curr_slice(c); /* Flush container */ if (c->curr_slice == c->max_slice || (bam_ref(b) != c->curr_ref && !c->multi_seq)) { c->ref_seq_span = fd->last_base - c->ref_seq_start + 1; if (fd->verbose) fprintf(stderr, "Flush container %d/%d..%d\n", c->ref_seq_id, c->ref_seq_start, c->ref_seq_start + c->ref_seq_span -1); /* Encode slices */ if (fd->pool) { if (-1 == cram_flush_container_mt(fd, c)) return NULL; } else { if (-1 == cram_flush_container(fd, c)) return NULL; // Move to sep func, as we need cram_flush_container for // the closing phase to flush the partial container. for (i = 0; i < c->max_slice; i++) { cram_free_slice(c->slices[i]); c->slices[i] = NULL; } c->slice = NULL; c->curr_slice = 0; /* Easy approach for purposes of freeing stats */ cram_free_container(c); } c = fd->ctr = cram_new_container(fd->seqs_per_slice, fd->slices_per_container); if (!c) return NULL; c->record_counter = fd->record_counter; c->curr_ref = bam_ref(b); } c->last_pos = c->first_base = c->last_base = bam_pos(b)+1; /* New slice */ c->slice = c->slices[c->curr_slice] = cram_new_slice(MAPPED_SLICE, c->max_rec); if (!c->slice) return NULL; if (c->multi_seq) { c->slice->hdr->ref_seq_id = -2; c->slice->hdr->ref_seq_start = 0; c->slice->last_apos = 1; } else { c->slice->hdr->ref_seq_id = bam_ref(b); // wrong for unsorted data, will fix during encoding. c->slice->hdr->ref_seq_start = bam_pos(b)+1; c->slice->last_apos = bam_pos(b)+1; } c->curr_rec = 0; c->s_num_bases = 0; return c; } /* * Converts a single bam record into a cram record. * Possibly used within a thread. * * Returns 0 on success; * -1 on failure */ static int process_one_read(cram_fd *fd, cram_container *c, cram_slice *s, cram_record *cr, bam_seq_t *b, int rnum) { int i, fake_qual = -1; char *cp, *rg; char *ref, *seq, *qual; // FIXME: multi-ref containers ref = c->ref; cr->flags = bam_flag(b); cr->len = bam_seq_len(b); //fprintf(stderr, "%s => %d\n", rg ? rg : "\"\"", cr->rg); // Fields to resolve later //cr->mate_line; // index to another cram_record //cr->mate_flags; // MF //cr->ntags; // TC cr->ntags = 0; //cram_stats_add(c->stats[DS_TC], cr->ntags); rg = cram_encode_aux(fd, b, c, s, cr); //cr->aux_size = b->blk_size - ((char *)bam_aux(b) - (char *)&bam_ref(b)); //cr->aux = DSTRING_LEN(s->aux_ds); //dstring_nappend(s->aux_ds, bam_aux(b), cr->aux_size); /* Read group, identified earlier */ if (rg) { SAM_RG *brg = sam_hdr_find_rg(fd->header, rg); cr->rg = brg ? brg->id : -1; } else { cr->rg = -1; } cram_stats_add(c->stats[DS_RG], cr->rg); cr->ref_id = bam_ref(b); cram_stats_add(c->stats[DS_RI], cr->ref_id); cram_stats_add(c->stats[DS_BF], fd->cram_flag_swap[cr->flags & 0xfff]); // Non reference based encoding means storing the bases verbatim as features, which in // turn means every base also has a quality already stored. if (!fd->no_ref || CRAM_MAJOR_VERS(fd->version) >= 3) cr->cram_flags = CRAM_FLAG_PRESERVE_QUAL_SCORES; else cr->cram_flags = 0; if (cr->len <= 0 && CRAM_MAJOR_VERS(fd->version) >= 3) cr->cram_flags |= CRAM_FLAG_NO_SEQ; //cram_stats_add(c->stats[DS_CF], cr->cram_flags); c->num_bases += cr->len; cr->apos = bam_pos(b)+1; if (c->pos_sorted) { if (cr->apos < s->last_apos) { c->pos_sorted = 0; } else { cram_stats_add(c->stats[DS_AP], cr->apos - s->last_apos); s->last_apos = cr->apos; } } else { //cram_stats_add(c->stats[DS_AP], cr->apos); } c->max_apos += (cr->apos > c->max_apos) * (cr->apos - c->max_apos); cr->name = BLOCK_SIZE(s->name_blk); cr->name_len = bam_name_len(b); cram_stats_add(c->stats[DS_RN], cr->name_len); #if 1 BLOCK_APPEND(s->name_blk, bam_name(b), bam_name_len(b)); #else // Experiment with using delta encoding to last name { int l = bam_name_len(b); char *n1 = bam_name(b), *n0 = c->last_name; for (i = 0; i < l; i++) { if (n1[i] != n0[i]) break; } BLOCK_APPEND_CHAR(s->name_blk, i); BLOCK_APPEND(s->name_blk, bam_name(b)+i, bam_name_len(b)-i); c->last_name = n1; } #endif /* * This seqs_ds is largely pointless and it could reuse the same memory * over and over. * s->base_blk is what we need for encoding. */ cr->seq = BLOCK_SIZE(s->seqs_blk); cr->qual = BLOCK_SIZE(s->qual_blk); BLOCK_GROW(s->seqs_blk, cr->len+1); BLOCK_GROW(s->qual_blk, cr->len); seq = cp = (char *)BLOCK_END(s->seqs_blk); // Convert seq 2 bases at a time for speed. { #ifdef ALLOW_UAC static const uint16_t code2base[256] = { 15677, 16701, 17213, 19773, 18237, 21053, 21309, 22077, 21565, 22333, 22845, 18493, 19261, 17469, 16957, 20029, 15681, 16705, 17217, 19777, 18241, 21057, 21313, 22081, 21569, 22337, 22849, 18497, 19265, 17473, 16961, 20033, 15683, 16707, 17219, 19779, 18243, 21059, 21315, 22083, 21571, 22339, 22851, 18499, 19267, 17475, 16963, 20035, 15693, 16717, 17229, 19789, 18253, 21069, 21325, 22093, 21581, 22349, 22861, 18509, 19277, 17485, 16973, 20045, 15687, 16711, 17223, 19783, 18247, 21063, 21319, 22087, 21575, 22343, 22855, 18503, 19271, 17479, 16967, 20039, 15698, 16722, 17234, 19794, 18258, 21074, 21330, 22098, 21586, 22354, 22866, 18514, 19282, 17490, 16978, 20050, 15699, 16723, 17235, 19795, 18259, 21075, 21331, 22099, 21587, 22355, 22867, 18515, 19283, 17491, 16979, 20051, 15702, 16726, 17238, 19798, 18262, 21078, 21334, 22102, 21590, 22358, 22870, 18518, 19286, 17494, 16982, 20054, 15700, 16724, 17236, 19796, 18260, 21076, 21332, 22100, 21588, 22356, 22868, 18516, 19284, 17492, 16980, 20052, 15703, 16727, 17239, 19799, 18263, 21079, 21335, 22103, 21591, 22359, 22871, 18519, 19287, 17495, 16983, 20055, 15705, 16729, 17241, 19801, 18265, 21081, 21337, 22105, 21593, 22361, 22873, 18521, 19289, 17497, 16985, 20057, 15688, 16712, 17224, 19784, 18248, 21064, 21320, 22088, 21576, 22344, 22856, 18504, 19272, 17480, 16968, 20040, 15691, 16715, 17227, 19787, 18251, 21067, 21323, 22091, 21579, 22347, 22859, 18507, 19275, 17483, 16971, 20043, 15684, 16708, 17220, 19780, 18244, 21060, 21316, 22084, 21572, 22340, 22852, 18500, 19268, 17476, 16964, 20036, 15682, 16706, 17218, 19778, 18242, 21058, 21314, 22082, 21570, 22338, 22850, 18498, 19266, 17474, 16962, 20034, 15694, 16718, 17230, 19790, 18254, 21070, 21326, 22094, 21582, 22350, 22862, 18510, 19278, 17486, 16974, 20046 }; #endif int l2 = cr->len & ~1; unsigned char *from = (unsigned char *)bam_seq(b); cp[0] = 0; for (i = 0; i < l2; i += 2, from++) { #ifdef ALLOW_UAC *(int16_t *)&cp[i] = le_int2(code2base[*from]); #else cp[i+0] = bam_nt16_rev_table[*from >> 4]; cp[i+1] = bam_nt16_rev_table[*from & 0xf]; #endif } if (i < cr->len) cp[i] = bam_nt16_rev_table[*from >> 4]; } BLOCK_SIZE(s->seqs_blk) += cr->len; qual = cp = (char *)bam_qual(b); if (CRAM_MAJOR_VERS(fd->version) >= 3 && !fd->ignore_chksum) s->BD_crc += crc32(0L, (Bytef *) seq, cr->len); /* Copy and parse */ if (!(cr->flags & BAM_FUNMAP)) { int32_t *cig_to, *cig_from; int apos = cr->apos-1, spos = 0; cr->cigar = s->ncigar; cr->ncigar = bam_cigar_len(b); while (cr->cigar + cr->ncigar >= s->cigar_alloc) { s->cigar_alloc = s->cigar_alloc ? s->cigar_alloc*2 : 1024; s->cigar = realloc(s->cigar, s->cigar_alloc * sizeof(*s->cigar)); if (!s->cigar) return -1; } cig_to = (int32_t *)s->cigar; cig_from = (int32_t *)bam_cigar(b); cr->feature = 0; cr->nfeature = 0; for (i = 0; i < cr->ncigar; i++) { enum cigar_op cig_op = cig_from[i] & BAM_CIGAR_MASK; int cig_len = cig_from[i] >> BAM_CIGAR_SHIFT; cig_to[i] = cig_from[i]; /* Can also generate events from here for CRAM diffs */ switch (cig_op) { int l; // Don't trust = and X ops to be correct. case BAM_CMATCH: case BAM_CBASE_MATCH: case BAM_CBASE_MISMATCH: //fprintf(stderr, "\nBAM_CMATCH\nR: %.*s\nS: %.*s\n", // cig_len, &ref[apos], cig_len, &seq[spos]); l = 0; if (!fd->no_ref && cr->len) { int end = cig_len+apos < c->ref_end ? cig_len : c->ref_end - apos; char *sp = &seq[spos]; char *rp = &ref[apos]; char *qp = &qual[spos]; if (end > cr->len) { fprintf(stderr, "CIGAR and query sequence are of " "different length\n"); return -1; } for (l = 0; l < end; l++) { if (rp[l] != sp[l]) { if (!sp[l]) break; if (0 && IS_CRAM_3_VERS(fd)) { // Disabled for the time being as it doesn't // seem to gain us much. int ol=l; while (l 1) { if (cram_add_bases(fd, c, s, cr, spos+ol, l-ol, &seq[spos+ol])) return -1; l--; } else { l = ol; if (cram_add_substitution(fd, c, s, cr, spos+l, sp[l], qp[l], rp[l])) return -1; } } else { if (cram_add_substitution(fd, c, s, cr, spos+l, sp[l], qp[l], rp[l])) return -1; } } } spos += l; apos += l; } if (l < cig_len && cr->len) { if (fd->no_ref) { if (IS_CRAM_3_VERS(fd)) { if (cram_add_bases(fd, c, s, cr, spos, cig_len-l, &seq[spos])) return -1; spos += cig_len-l; } else { for (; l < cig_len && seq[spos]; l++, spos++) { if (cram_add_base(fd, c, s, cr, spos, seq[spos], qual[spos])) return -1; } } } else { /* off end of sequence or non-ref based output */ for (; l < cig_len && seq[spos]; l++, spos++) { if (cram_add_base(fd, c, s, cr, spos, seq[spos], qual[spos])) return -1; } } apos += cig_len; } else if (!cr->len) { /* Seq "*" */ apos += cig_len; spos += cig_len; } break; case BAM_CDEL: if (cram_add_deletion(c, s, cr, spos, cig_len, &seq[spos])) return -1; apos += cig_len; break; case BAM_CREF_SKIP: if (cram_add_skip(c, s, cr, spos, cig_len, &seq[spos])) return -1; apos += cig_len; break; case BAM_CINS: if (cram_add_insertion(c, s, cr, spos, cig_len, cr->len ? &seq[spos] : NULL, fd->version)) return -1; if (fd->no_ref && cr->len) { for (l = 0; l < cig_len; l++, spos++) { cram_add_quality(fd, c, s, cr, spos, qual[spos]); } } else { spos += cig_len; } break; case BAM_CSOFT_CLIP: if (cram_add_softclip(c, s, cr, spos, cig_len, cr->len ? &seq[spos] : NULL, fd->version)) return -1; if (fd->no_ref && !(cr->cram_flags & CRAM_FLAG_PRESERVE_QUAL_SCORES)) { if (cr->len) { for (l = 0; l < cig_len; l++, spos++) { cram_add_quality(fd, c, s, cr, spos, qual[spos]); } } else { for (l = 0; l < cig_len; l++, spos++) { cram_add_quality(fd, c, s, cr, spos, -1); } } } else { spos += cig_len; } break; case BAM_CHARD_CLIP: if (cram_add_hardclip(c, s, cr, spos, cig_len, &seq[spos])) return -1; break; case BAM_CPAD: if (cram_add_pad(c, s, cr, spos, cig_len, &seq[spos])) return -1; break; default: fprintf(stderr, "Unknown CIGAR op code %d\n", cig_op); return -1; } } if (cr->len && spos != cr->len) { fprintf(stderr, "CIGAR and query sequence are of different " "length\n"); return -1; } fake_qual = spos; cr->aend = fd->no_ref ? apos : MIN(apos, c->ref_end); cram_stats_add(c->stats[DS_FN], cr->nfeature); } else { // Unmapped cr->cram_flags |= CRAM_FLAG_PRESERVE_QUAL_SCORES; cr->cigar = 0; cr->ncigar = 0; cr->nfeature = 0; cr->aend = cr->apos; for (i = 0; i < cr->len; i++) cram_stats_add(c->stats[DS_BA], seq[i]); fake_qual = 0; } /* * Append to the qual block now. We do this here as * cram_add_substitution() can generate BA/QS events which need to * be in the qual block before we append the rest of the data. */ if (cr->cram_flags & CRAM_FLAG_PRESERVE_QUAL_SCORES) { /* Special case of seq "*" */ if (cr->len == 0) { cr->len = fake_qual; BLOCK_GROW(s->qual_blk, cr->len); cp = (char *)BLOCK_END(s->qual_blk); memset(cp, 255, cr->len); } else { BLOCK_GROW(s->qual_blk, cr->len); cp = (char *)BLOCK_END(s->qual_blk); char *from = &bam_qual(b)[0]; char *to = &cp[0]; if (fd->binning == BINNING_ILLUMINA) { int i; for (i = 0; i < cr->len; i++) to[i] = illumina_bin[(uc)from[i]]; } else { memcpy(to, from, cr->len); } if (CRAM_MAJOR_VERS(fd->version) >= 3 && !fd->ignore_chksum) s->SD_crc += crc32(0L, (Bytef *) to, cr->len); #if 0 // Reverse. Experimental to see the impact on file size if (cr->flags & BAM_FREVERSE) { int i, j; for (i = 0, j = cr->len-1; i < j; i++, j--) { unsigned char c; c = to[i]; to[i] = to[j]; to[j] = c; } } #endif //for (i = 0; i < cr->len; i++) cp[i] = from[i]; } BLOCK_SIZE(s->qual_blk) += cr->len; } else { if (cr->len == 0) cr->len = fake_qual >= 0 ? fake_qual : cr->aend - cr->apos + 1; } cram_stats_add(c->stats[DS_RL], cr->len); /* Now we know apos and aend both, update mate-pair information */ { int new; HashData hd; HashItem *hi; hd.i = rnum; //fprintf(stderr, "Checking %"PRId64"/%.*s\t", hd.i, // cr->name_len, DSTRING_STR(s->name_ds)+cr->name); if (cr->flags & BAM_FPAIRED) { hi = HashTableAdd(s->pair[(cr->flags & BAM_FSECONDARY) ? 1 : 0], (char *)BLOCK_DATA(s->name_blk)+cr->name, cr->name_len, hd, &new); if (!hi) return -1; } else { new = 1; } //printf("%d..%d %.*s new=%d, ins_sz=%d\n", // cr->apos, cr->aend, // cr->name_len, (char *)BLOCK_DATA(s->name_blk)+cr->name, new, bam_ins_size(b)); if (!new) { cram_record *p = &s->crecs[hi->data.i]; int aleft, aright, sign; aleft = MIN(cr->apos, p->apos); aright = MAX(cr->aend, p->aend); if (cr->apos < p->apos) { sign = 1; } else if (cr->apos > p->apos) { sign = -1; } else if (cr->flags & BAM_FREAD1) { sign = 1; } else { sign = -1; } // This vs p: tlen, matepos, flags if (bam_ins_size(b) != sign*(aright-aleft+1)) goto detached; if (MAX(bam_mate_pos(b)+1, 0) != p->apos) goto detached; if (((bam_flag(b) & BAM_FMUNMAP) != 0) != ((p->flags & BAM_FUNMAP) != 0)) goto detached; if (((bam_flag(b) & BAM_FMREVERSE) != 0) != ((p->flags & BAM_FREVERSE) != 0)) goto detached; // p vs this: tlen, matepos, flags if (p->tlen != -sign*(aright-aleft+1)) goto detached; if (p->mate_pos != cr->apos) goto detached; if (((p->flags & BAM_FMUNMAP) != 0) != ((p->mate_flags & CRAM_M_UNMAP) != 0)) goto detached; if (((p->flags & BAM_FMREVERSE) != 0) != ((p->mate_flags & CRAM_M_REVERSE) != 0)) goto detached; // Supplementary reads are just too ill defined if ((cr->flags & BAM_FSUPPLEMENTARY) || (p->flags & BAM_FSUPPLEMENTARY)) goto detached; /* * The fields below are unused when encoding this read as it is * no longer detached. In theory they may get referred to when * processing a 3rd or 4th read in this template?, so we set them * here just to be sure. * * They do not need cram_stats_add() calls those as they are * not emitted. */ cr->mate_pos = p->apos; cr->tlen = sign*(aright-aleft+1); cr->mate_flags = ((p->flags & BAM_FMUNMAP) == BAM_FMUNMAP) * CRAM_M_UNMAP + ((p->flags & BAM_FMREVERSE) == BAM_FMREVERSE) * CRAM_M_REVERSE; // Decrement statistics aggregated earlier cram_stats_del(c->stats[DS_NP], p->mate_pos); cram_stats_del(c->stats[DS_MF], p->mate_flags); cram_stats_del(c->stats[DS_TS], p->tlen); cram_stats_del(c->stats[DS_NS], p->mate_ref_id); /* Similarly we could correct the p-> values too, but these will no * longer have any code that refers back to them as the new 'p' * for this template is our current 'cr'. */ //p->mate_pos = cr->apos; //p->mate_flags = // ((cr->flags & BAM_FMUNMAP) == BAM_FMUNMAP) * CRAM_M_UNMAP + // ((cr->flags & BAM_FMREVERSE) == BAM_FMREVERSE)* CRAM_M_REVERSE; //p->tlen = p->apos - cr->aend; // Clear detached from cr flags cr->cram_flags &= ~CRAM_FLAG_DETACHED; cram_stats_add(c->stats[DS_CF], cr->cram_flags); // Clear detached from p flags and set downstream cram_stats_del(c->stats[DS_CF], p->cram_flags); p->cram_flags &= ~CRAM_FLAG_DETACHED; p->cram_flags |= CRAM_FLAG_MATE_DOWNSTREAM; cram_stats_add(c->stats[DS_CF], p->cram_flags); p->mate_line = hd.i - (hi->data.i + 1); cram_stats_add(c->stats[DS_NF], p->mate_line); hi->data.i = rnum; //HashTableDel(s->pair, hi, 0); } else { detached: //fprintf(stderr, "unpaired\n"); /* Derive mate flags from this flag */ cr->mate_flags = 0; if (bam_flag(b) & BAM_FMUNMAP) cr->mate_flags |= CRAM_M_UNMAP; if (bam_flag(b) & BAM_FMREVERSE) cr->mate_flags |= CRAM_M_REVERSE; cram_stats_add(c->stats[DS_MF], cr->mate_flags); cr->mate_pos = MAX(bam_mate_pos(b)+1, 0); cram_stats_add(c->stats[DS_NP], cr->mate_pos); cr->tlen = bam_ins_size(b); cram_stats_add(c->stats[DS_TS], cr->tlen); cr->cram_flags |= CRAM_FLAG_DETACHED; cram_stats_add(c->stats[DS_CF], cr->cram_flags); cram_stats_add(c->stats[DS_NS], bam_mate_ref(b)); } } cr->mqual = bam_map_qual(b); cram_stats_add(c->stats[DS_MQ], cr->mqual); cr->mate_ref_id = bam_mate_ref(b); if (!(bam_flag(b) & BAM_FUNMAP)) { if (c->first_base > cr->apos) c->first_base = cr->apos; if (c->last_base < cr->aend) c->last_base = cr->aend; } return 0; } /* * Write iterator: put BAM format sequences into a CRAM file. * We buffer up a containers worth of data at a time. * * Returns 0 on success * -1 on failure */ int cram_put_bam_seq(cram_fd *fd, bam_seq_t *b) { cram_container *c; if (!fd->ctr) { fd->ctr = cram_new_container(fd->seqs_per_slice, fd->slices_per_container); if (!fd->ctr) return -1; fd->ctr->record_counter = fd->record_counter; } c = fd->ctr; if (!c->slice || c->curr_rec == c->max_rec || (bam_ref(b) != c->curr_ref && c->curr_ref >= -1) || (c->s_num_bases >= fd->bases_per_slice)) { int slice_rec, curr_rec, multi_seq = fd->multi_seq == 1; int curr_ref = c->slice ? c->curr_ref : bam_ref(b); /* * Start packing slices when we routinely have under 1/4tr full. * * This option isn't available if we choose to embed references * since we can only have one per slice. */ if (fd->multi_seq == -1 && c->curr_rec < c->max_rec/4+10 && fd->last_slice && fd->last_slice < c->max_rec/4+10 && !fd->embed_ref) { if (fd->verbose && !c->multi_seq) fprintf(stderr, "Multi-ref enabled for this container\n"); multi_seq = 1; } slice_rec = c->slice_rec; curr_rec = c->curr_rec; if (c->curr_rec == c->max_rec || fd->multi_seq != 1 || !c->slice || c->s_num_bases >= fd->bases_per_slice) if (NULL == (c = cram_next_container(fd, b))) return -1; /* * Due to our processing order, some things we've already done we * cannot easily undo. So when we first notice we should be packing * multiple sequences per container we emit the small partial * container as-is and then start a fresh one in a different mode. */ if (multi_seq) { fd->multi_seq = 1; c->multi_seq = 1; c->pos_sorted = 0; // required atm for multi_seq slices if (!c->refs_used) { if (fd->ref_lock) pthread_mutex_lock(fd->ref_lock); c->refs_used = calloc(fd->refs->nref, sizeof(int)); if (fd->ref_lock) pthread_mutex_unlock(fd->ref_lock); if (!c->refs_used) return -1; } } fd->last_slice = curr_rec - slice_rec; c->slice_rec = c->curr_rec; // Have we seen this reference before? if (bam_ref(b) >= 0 && curr_ref >= 0 && bam_ref(b) != curr_ref && !fd->embed_ref && !fd->unsorted && multi_seq) { if (!c->refs_used) { if (fd->ref_lock) pthread_mutex_lock(fd->ref_lock); c->refs_used = calloc(fd->refs->nref, sizeof(int)); if (fd->ref_lock) pthread_mutex_unlock(fd->ref_lock); if (!c->refs_used) return -1; } else if (c->refs_used && c->refs_used[bam_ref(b)]) { fprintf(stderr, "Unsorted mode enabled\n"); if (fd->ref_lock) pthread_mutex_lock(fd->ref_lock); fd->unsorted = 1; if (fd->ref_lock) pthread_mutex_unlock(fd->ref_lock); fd->multi_seq = 1; } } c->curr_ref = bam_ref(b); if (c->refs_used && c->curr_ref >= 0) c->refs_used[c->curr_ref]++; } if (!c->bams) { /* First time through, allocate a set of bam pointers */ if (fd->bam_list_lock) pthread_mutex_lock(fd->bam_list_lock); if (fd->bl) { spare_bams *spare = fd->bl; c->bams = spare->bams; fd->bl = spare->next; free(spare); } else { c->bams = calloc(c->max_c_rec, sizeof(bam_seq_t *)); if (!c->bams) return -1; } if (fd->bam_list_lock) pthread_mutex_unlock(fd->bam_list_lock); } /* Copy or alloc+copy the bam record, for later encoding */ if (c->bams[c->curr_c_rec]) bam_copy(&c->bams[c->curr_c_rec], b); else c->bams[c->curr_c_rec] = bam_dup(b); c->curr_rec++; c->curr_c_rec++; c->s_num_bases += bam_seq_len(b); fd->record_counter++; return 0; } io_lib-1.14.6/io_lib/cram_decode.c0000644000031500020650000024134312617144040013611 00000000000000/* * Copyright (c) 2013, 2014, 2015 Genome Research Ltd. * Author(s): James Bonfield, Rob Davies * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * Author: James Bonfield, Wellcome Trust Sanger Institute. 2013 * * - In-memory decoding of CRAM data structures. * - Iterator for reading CRAM record by record. */ #ifdef HAVE_CONFIG_H #include "io_lib_config.h" #endif #include #include #include #include #include #include #include #include #include #include #include "io_lib/cram.h" #include "io_lib/os.h" #include "io_lib/md5.h" //Whether CIGAR has just M or uses = and X to indicate match and mismatch //#define USE_X /* ---------------------------------------------------------------------- * CRAM compression headers */ /* * Decodes the Tag Dictionary record in the preservation map * Updates the cram compression header. * * Returns number of bytes decoded on success * -1 on failure */ int cram_decode_TD(char *cp, const char *endp, cram_block_compression_hdr *h) { char *op = cp; unsigned char *dat; cram_block *b; int32_t blk_size = 0; int nTL, i, sz; if (!(b = cram_new_block(0, 0))) return -1; /* Decode */ cp += safe_itf8_get(cp, endp, &blk_size); if (!blk_size) { h->nTL = 0; h->TL = NULL; cram_free_block(b); return cp - op; } if (blk_size < 0 || endp - cp < blk_size) { cram_free_block(b); return -1; } BLOCK_APPEND(b, cp, blk_size); cp += blk_size; sz = cp - op; // Force nul termination if missing if (BLOCK_DATA(b)[BLOCK_SIZE(b)-1]) BLOCK_APPEND_CHAR(b, '\0'); /* Set up TL lookup table */ dat = BLOCK_DATA(b); // Count for (nTL = i = 0; i < BLOCK_SIZE(b); i++) { nTL++; while (dat[i]) i++; } // Copy h->nTL = nTL; if (!(h->TL = calloc(h->nTL, sizeof(unsigned char *)))) { cram_free_block(b); return -1; } for (nTL = i = 0; i < BLOCK_SIZE(b); i++) { h->TL[nTL++] = &dat[i]; while (dat[i]) i++; } h->TD_blk = b; return sz; } /* * Decodes a CRAM block compression header. * Returns header ptr on success * NULL on failure */ cram_block_compression_hdr *cram_decode_compression_header(cram_fd *fd, cram_block *b) { char *cp, *endp, *cp_copy; cram_block_compression_hdr *hdr = calloc(1, sizeof(*hdr)); int i; int32_t map_size = 0, map_count = 0; if (!hdr) return NULL; if (b->method != RAW) { if (cram_uncompress_block(b)) return NULL; } cp = (char *)b->data; endp = cp + b->uncomp_size; if (IS_CRAM_1_VERS(fd)) { cp += safe_itf8_get(cp, endp, &hdr->ref_seq_id); cp += safe_itf8_get(cp, endp, &hdr->ref_seq_start); cp += safe_itf8_get(cp, endp, &hdr->ref_seq_span); cp += safe_itf8_get(cp, endp, &hdr->num_records); cp += safe_itf8_get(cp, endp, &hdr->num_landmarks); if (!(hdr->landmark = malloc(hdr->num_landmarks * sizeof(int32_t)))) { free(hdr); return NULL; } for (i = 0; i < hdr->num_landmarks; i++) { cp += safe_itf8_get(cp, endp, &hdr->landmark[i]); } } hdr->preservation_map = HashTableCreate(4, HASH_NONVOLATILE_KEYS | HASH_FUNC_TCL); memset(hdr->rec_encoding_map, 0, CRAM_MAP_HASH * sizeof(hdr->rec_encoding_map[0])); memset(hdr->tag_encoding_map, 0, CRAM_MAP_HASH * sizeof(hdr->tag_encoding_map[0])); if (!hdr->preservation_map) { cram_free_compression_header(hdr); return NULL; } /* Initialise defaults for preservation map */ hdr->mapped_qs_included = 0; hdr->unmapped_qs_included = 0; hdr->unmapped_placed = 0; hdr->qs_included = 0; hdr->read_names_included = 0; hdr->AP_delta = 1; memcpy(hdr->substitution_matrix, "CGTNAGTNACTNACGNACGT", 20); /* Preservation map */ cp += safe_itf8_get(cp, endp, &map_size); cp_copy = cp; cp += safe_itf8_get(cp, endp, &map_count); for (i = 0; i < map_count; i++) { HashData hd; if (endp - cp < 2) { cram_free_compression_header(hdr); return NULL; } cp += 2; switch(CRAM_KEY(cp[-2],cp[-1])) { case CRAM_KEY('M','I'): hd.i = *cp++; if (!HashTableAdd(hdr->preservation_map, "MI", 2, hd, NULL)) { cram_free_compression_header(hdr); return NULL; } hdr->mapped_qs_included = hd.i; break; case CRAM_KEY('U','I'): hd.i = *cp++; if (!HashTableAdd(hdr->preservation_map, "UI", 2, hd, NULL)) { cram_free_compression_header(hdr); return NULL; } hdr->unmapped_qs_included = hd.i; break; case CRAM_KEY('P','I'): hd.i = *cp++; if (!HashTableAdd(hdr->preservation_map, "PI", 2, hd, NULL)) { cram_free_compression_header(hdr); return NULL; } hdr->unmapped_placed = hd.i; break; case CRAM_KEY('R','N'): hd.i = *cp++; if (!HashTableAdd(hdr->preservation_map, "RN", 2, hd, NULL)) { cram_free_compression_header(hdr); return NULL; } hdr->read_names_included = hd.i; break; case CRAM_KEY('A','P'): hd.i = *cp++; if (!HashTableAdd(hdr->preservation_map, "AP", 2, hd, NULL)) { cram_free_compression_header(hdr); return NULL; } hdr->AP_delta = hd.i; break; case CRAM_KEY('R','R'): hd.i = *cp++; if (!HashTableAdd(hdr->preservation_map, "RR", 2, hd, NULL)) { cram_free_compression_header(hdr); return NULL; } fd->no_ref = !hd.i; break; case CRAM_KEY('S','M'): if (endp - cp < 5) { cram_free_compression_header(hdr); return NULL; } hdr->substitution_matrix[0][(cp[0]>>6)&3] = 'C'; hdr->substitution_matrix[0][(cp[0]>>4)&3] = 'G'; hdr->substitution_matrix[0][(cp[0]>>2)&3] = 'T'; hdr->substitution_matrix[0][(cp[0]>>0)&3] = 'N'; hdr->substitution_matrix[1][(cp[1]>>6)&3] = 'A'; hdr->substitution_matrix[1][(cp[1]>>4)&3] = 'G'; hdr->substitution_matrix[1][(cp[1]>>2)&3] = 'T'; hdr->substitution_matrix[1][(cp[1]>>0)&3] = 'N'; hdr->substitution_matrix[2][(cp[2]>>6)&3] = 'A'; hdr->substitution_matrix[2][(cp[2]>>4)&3] = 'C'; hdr->substitution_matrix[2][(cp[2]>>2)&3] = 'T'; hdr->substitution_matrix[2][(cp[2]>>0)&3] = 'N'; hdr->substitution_matrix[3][(cp[3]>>6)&3] = 'A'; hdr->substitution_matrix[3][(cp[3]>>4)&3] = 'C'; hdr->substitution_matrix[3][(cp[3]>>2)&3] = 'G'; hdr->substitution_matrix[3][(cp[3]>>0)&3] = 'N'; hdr->substitution_matrix[4][(cp[4]>>6)&3] = 'A'; hdr->substitution_matrix[4][(cp[4]>>4)&3] = 'C'; hdr->substitution_matrix[4][(cp[4]>>2)&3] = 'G'; hdr->substitution_matrix[4][(cp[4]>>0)&3] = 'T'; hd.p = cp; cp += 5; if (!HashTableAdd(hdr->preservation_map, "SM", 2, hd, NULL)) { cram_free_compression_header(hdr); return NULL; } break; case CRAM_KEY('T','D'): { int sz = cram_decode_TD(cp, endp, hdr); // tag dictionary if (sz < 0) { cram_free_compression_header(hdr); return NULL; } hd.p = cp; cp += sz; if (!HashTableAdd(hdr->preservation_map, "TD", 2, hd, NULL)) { cram_free_compression_header(hdr); return NULL; } break; } default: fprintf(stderr, "Unrecognised preservation map key %c%c\n", cp[-2], cp[-1]); // guess byte; cp++; break; } } if (cp - cp_copy != map_size) { cram_free_compression_header(hdr); return NULL; } /* Record encoding map */ cp += safe_itf8_get(cp, endp, &map_size); cp_copy = cp; cp += safe_itf8_get(cp, endp, &map_count); for (i = 0; i < map_count; i++) { char *key = cp; int32_t encoding = E_NULL; int32_t size = 0; cram_map *m = malloc(sizeof(*m)); // FIXME: use pooled_alloc if (!m || endp - cp < 4) { free(m); cram_free_compression_header(hdr); return NULL; } cp += 2; cp += safe_itf8_get(cp, endp, &encoding); cp += safe_itf8_get(cp, endp, &size); // Fill out cram_map purely for cram_dump to dump out. m->key = (key[0]<<8)|key[1]; m->encoding = encoding; m->size = size; m->offset = cp - (char *)b->data; m->codec = NULL; if (m->encoding == E_NULL) continue; if (size < 0 || endp - cp < size) { free(m); cram_free_compression_header(hdr); return NULL; } //printf("%s codes for %.2s\n", cram_encoding2str(encoding), key); /* * For CRAM1.0 CF and BF are Byte and not Int. * Practically speaking it makes no difference unless we have a * 1.0 format file that stores these in EXTERNAL as only then * does Byte vs Int matter. * * Neither this C code nor Java reference implementations did this, * so we gloss over it and treat them as int. */ if (key[0] == 'B' && key[1] == 'F') { if (!(hdr->codecs[DS_BF] = cram_decoder_init(encoding, cp, size, E_INT, fd->version))) { cram_free_compression_header(hdr); return NULL; } } else if (key[0] == 'C' && key[1] == 'F') { if (!(hdr->codecs[DS_CF] = cram_decoder_init(encoding, cp, size, E_INT, fd->version))) { cram_free_compression_header(hdr); return NULL; } } else if (key[0] == 'R' && key[1] == 'I') { if (!(hdr->codecs[DS_RI] = cram_decoder_init(encoding, cp, size, E_INT, fd->version))) { cram_free_compression_header(hdr); return NULL; } } else if (key[0] == 'R' && key[1] == 'L') { if (!(hdr->codecs[DS_RL] = cram_decoder_init(encoding, cp, size, E_INT, fd->version))) { cram_free_compression_header(hdr); return NULL; } } else if (key[0] == 'A' && key[1] == 'P') { if (!(hdr->codecs[DS_AP] = cram_decoder_init(encoding, cp, size, E_INT, fd->version))) { cram_free_compression_header(hdr); return NULL; } } else if (key[0] == 'R' && key[1] == 'G') { if (!(hdr->codecs[DS_RG] = cram_decoder_init(encoding, cp, size, E_INT, fd->version))) { cram_free_compression_header(hdr); return NULL; } } else if (key[0] == 'M' && key[1] == 'F') { if (!(hdr->codecs[DS_MF] = cram_decoder_init(encoding, cp, size, E_INT, fd->version))) { cram_free_compression_header(hdr); return NULL; } } else if (key[0] == 'N' && key[1] == 'S') { if (!(hdr->codecs[DS_NS] = cram_decoder_init(encoding, cp, size, E_INT, fd->version))) { cram_free_compression_header(hdr); return NULL; } } else if (key[0] == 'N' && key[1] == 'P') { if (!(hdr->codecs[DS_NP] = cram_decoder_init(encoding, cp, size, E_INT, fd->version))) { cram_free_compression_header(hdr); return NULL; } } else if (key[0] == 'T' && key[1] == 'S') { if (!(hdr->codecs[DS_TS] = cram_decoder_init(encoding, cp, size, E_INT, fd->version))) { cram_free_compression_header(hdr); return NULL; } } else if (key[0] == 'N' && key[1] == 'F') { if (!(hdr->codecs[DS_NF] = cram_decoder_init(encoding, cp, size, E_INT, fd->version))) { cram_free_compression_header(hdr); return NULL; } } else if (key[0] == 'T' && key[1] == 'C') { if (!(hdr->codecs[DS_TC] = cram_decoder_init(encoding, cp, size, E_BYTE, fd->version))) { cram_free_compression_header(hdr); return NULL; } } else if (key[0] == 'T' && key[1] == 'N') { if (!(hdr->codecs[DS_TN] = cram_decoder_init(encoding, cp, size, E_INT, fd->version))) { cram_free_compression_header(hdr); return NULL; } } else if (key[0] == 'F' && key[1] == 'N') { if (!(hdr->codecs[DS_FN] = cram_decoder_init(encoding, cp, size, E_INT, fd->version))) { cram_free_compression_header(hdr); return NULL; } } else if (key[0] == 'F' && key[1] == 'C') { if (!(hdr->codecs[DS_FC] = cram_decoder_init(encoding, cp, size, E_BYTE, fd->version))) { cram_free_compression_header(hdr); return NULL; } } else if (key[0] == 'F' && key[1] == 'P') { if (!(hdr->codecs[DS_FP] = cram_decoder_init(encoding, cp, size, E_INT, fd->version))) { cram_free_compression_header(hdr); return NULL; } } else if (key[0] == 'B' && key[1] == 'S') { if (!(hdr->codecs[DS_BS] = cram_decoder_init(encoding, cp, size, E_BYTE, fd->version))) { cram_free_compression_header(hdr); return NULL; } } else if (key[0] == 'I' && key[1] == 'N') { if (!(hdr->codecs[DS_IN] = cram_decoder_init(encoding, cp, size, E_BYTE_ARRAY, fd->version))) { cram_free_compression_header(hdr); return NULL; } } else if (key[0] == 'S' && key[1] == 'C') { if (!(hdr->codecs[DS_SC] = cram_decoder_init(encoding, cp, size, E_BYTE_ARRAY, fd->version))) { cram_free_compression_header(hdr); return NULL; } } else if (key[0] == 'D' && key[1] == 'L') { if (!(hdr->codecs[DS_DL] = cram_decoder_init(encoding, cp, size, E_INT, fd->version))) { cram_free_compression_header(hdr); return NULL; } } else if (key[0] == 'B' && key[1] == 'A') { if (!(hdr->codecs[DS_BA] = cram_decoder_init(encoding, cp, size, E_BYTE, fd->version))) { cram_free_compression_header(hdr); return NULL; } } else if (key[0] == 'B' && key[1] == 'B') { if (!(hdr->codecs[DS_BB] = cram_decoder_init(encoding, cp, size, E_BYTE_ARRAY, fd->version))) { cram_free_compression_header(hdr); return NULL; } } else if (key[0] == 'R' && key[1] == 'S') { if (!(hdr->codecs[DS_RS] = cram_decoder_init(encoding, cp, size, E_INT, fd->version))) { cram_free_compression_header(hdr); return NULL; } } else if (key[0] == 'P' && key[1] == 'D') { if (!(hdr->codecs[DS_PD] = cram_decoder_init(encoding, cp, size, E_INT, fd->version))) { cram_free_compression_header(hdr); return NULL; } } else if (key[0] == 'H' && key[1] == 'C') { if (!(hdr->codecs[DS_HC] = cram_decoder_init(encoding, cp, size, E_INT, fd->version))) { cram_free_compression_header(hdr); return NULL; } } else if (key[0] == 'M' && key[1] == 'Q') { if (!(hdr->codecs[DS_MQ] = cram_decoder_init(encoding, cp, size, E_INT, fd->version))) { cram_free_compression_header(hdr); return NULL; } } else if (key[0] == 'R' && key[1] == 'N') { if (!(hdr->codecs[DS_RN] = cram_decoder_init(encoding, cp, size, E_BYTE_ARRAY_BLOCK, fd->version))) { cram_free_compression_header(hdr); return NULL; } } else if (key[0] == 'Q' && key[1] == 'S') { if (!(hdr->codecs[DS_QS] = cram_decoder_init(encoding, cp, size, E_BYTE, fd->version))) { cram_free_compression_header(hdr); return NULL; } } else if (key[0] == 'Q' && key[1] == 'Q') { if (!(hdr->codecs[DS_QQ] = cram_decoder_init(encoding, cp, size, E_BYTE_ARRAY, fd->version))) { cram_free_compression_header(hdr); return NULL; } } else if (key[0] == 'T' && key[1] == 'L') { if (!(hdr->codecs[DS_TL] = cram_decoder_init(encoding, cp, size, E_INT, fd->version))) { cram_free_compression_header(hdr); return NULL; } } else if (key[0] == 'T' && key[1] == 'M') { } else if (key[0] == 'T' && key[1] == 'V') { } else fprintf(stderr, "Unrecognised key: %.2s\n", key); cp += size; m->next = hdr->rec_encoding_map[CRAM_MAP(key[0], key[1])]; hdr->rec_encoding_map[CRAM_MAP(key[0], key[1])] = m; } if (cp - cp_copy != map_size) { cram_free_compression_header(hdr); return NULL; } /* Tag encoding map */ cp += safe_itf8_get(cp, endp, &map_size); cp_copy = cp; cp += safe_itf8_get(cp, endp, &map_count); for (i = 0; i < map_count; i++) { int32_t encoding = E_NULL; int32_t size = 0; cram_map *m = malloc(sizeof(*m)); // FIXME: use pooled_alloc char *key; if (!m || endp - cp < 6) { free(m); cram_free_compression_header(hdr); return NULL; } key = cp + 1; m->key = (key[0]<<16)|(key[1]<<8)|key[2]; cp += 4; // Strictly ITF8, but this suffices cp += safe_itf8_get(cp, endp, &encoding); cp += safe_itf8_get(cp, endp, &size); m->encoding = encoding; m->size = size; m->offset = cp - (char *)b->data; if (size < 0 || endp - cp < size || !(m->codec = cram_decoder_init(encoding, cp, size, E_BYTE_ARRAY_BLOCK, fd->version))) { cram_free_compression_header(hdr); free(m); return NULL; } cp += size; m->next = hdr->tag_encoding_map[CRAM_MAP(key[0],key[1])]; hdr->tag_encoding_map[CRAM_MAP(key[0],key[1])] = m; } if (cp - cp_copy != map_size) { cram_free_compression_header(hdr); return NULL; } return hdr; } /* * Note we also need to scan through the record encoding map to * see which data series share the same block, either external or * CORE. For example if we need the BF data series but MQ and CF * are also encoded in the same block then we need to add those in * as a dependency in order to correctly decode BF. * * Returns 0 on success * -1 on failure */ int cram_dependent_data_series(cram_fd *fd, cram_block_compression_hdr *hdr, cram_slice *s) { int *block_used; int core_used = 0; int i; static int i_to_id[] = { DS_BF, DS_AP, DS_FP, DS_RL, DS_DL, DS_NF, DS_BA, DS_QS, DS_FC, DS_FN, DS_BS, DS_IN, DS_RG, DS_MQ, DS_TL, DS_RN, DS_NS, DS_NP, DS_TS, DS_MF, DS_CF, DS_RI, DS_RS, DS_PD, DS_HC, DS_SC, DS_BB, DS_QQ, }; uint32_t orig_ds; /* * Set the data_series bit field based on fd->required_fields * contents. */ if (fd->required_fields && fd->required_fields != INT_MAX) { hdr->data_series = 0; if (fd->required_fields & SAM_QNAME) hdr->data_series |= CRAM_RN; if (fd->required_fields & SAM_FLAG) hdr->data_series |= CRAM_BF; if (fd->required_fields & SAM_RNAME) hdr->data_series |= CRAM_RI | CRAM_BF; if (fd->required_fields & SAM_POS) hdr->data_series |= CRAM_AP | CRAM_BF; if (fd->required_fields & SAM_MAPQ) hdr->data_series |= CRAM_MQ; if (fd->required_fields & SAM_CIGAR) hdr->data_series |= CRAM_CIGAR; if (fd->required_fields & SAM_RNEXT) hdr->data_series |= CRAM_CF | CRAM_NF | CRAM_RI | CRAM_NS |CRAM_BF; if (fd->required_fields & SAM_PNEXT) hdr->data_series |= CRAM_CF | CRAM_NF | CRAM_AP | CRAM_NP | CRAM_BF; if (fd->required_fields & SAM_TLEN) hdr->data_series |= CRAM_CF | CRAM_NF | CRAM_AP | CRAM_TS | CRAM_BF | CRAM_MF | CRAM_RI | CRAM_CIGAR; if (fd->required_fields & SAM_SEQ) hdr->data_series |= CRAM_SEQ; if (fd->required_fields & SAM_QUAL) hdr->data_series |= CRAM_SEQ; if (fd->required_fields & SAM_AUX) hdr->data_series |= CRAM_RG | CRAM_TL | CRAM_aux; if (fd->required_fields & SAM_RGAUX) hdr->data_series |= CRAM_RG | CRAM_BF; // Always uncompress CORE block if (cram_uncompress_block(s->block[0])) return -1; } else { hdr->data_series = CRAM_ALL; for (i = 0; i < s->hdr->num_blocks; i++) { if (cram_uncompress_block(s->block[i])) return -1; } return 0; } block_used = calloc(s->hdr->num_blocks+1, sizeof(int)); if (!block_used) return -1; do { /* * Also set data_series based on code prerequisites. Eg if we need * CRAM_QS then we also need to know CRAM_RL so we know how long it * is, or if we need FC/FP then we also need FN (number of features). * * It's not reciprocal though. We may be needing to decode FN * but have no need to decode FC, FP and cigar ops. */ if (hdr->data_series & CRAM_RS) hdr->data_series |= CRAM_FC|CRAM_FP; if (hdr->data_series & CRAM_PD) hdr->data_series |= CRAM_FC|CRAM_FP; if (hdr->data_series & CRAM_HC) hdr->data_series |= CRAM_FC|CRAM_FP; if (hdr->data_series & CRAM_QS) hdr->data_series |= CRAM_FC|CRAM_FP; if (hdr->data_series & CRAM_IN) hdr->data_series |= CRAM_FC|CRAM_FP; if (hdr->data_series & CRAM_SC) hdr->data_series |= CRAM_FC|CRAM_FP; if (hdr->data_series & CRAM_BS) hdr->data_series |= CRAM_FC|CRAM_FP; if (hdr->data_series & CRAM_DL) hdr->data_series |= CRAM_FC|CRAM_FP; if (hdr->data_series & CRAM_BA) hdr->data_series |= CRAM_FC|CRAM_FP; if (hdr->data_series & CRAM_BB) hdr->data_series |= CRAM_FC|CRAM_FP; if (hdr->data_series & CRAM_QQ) hdr->data_series |= CRAM_FC|CRAM_FP; // cram_decode_seq() needs seq[] array if (hdr->data_series & (CRAM_SEQ|CRAM_CIGAR)) hdr->data_series |= CRAM_RL; if (hdr->data_series & CRAM_FP) hdr->data_series |= CRAM_FC; if (hdr->data_series & CRAM_FC) hdr->data_series |= CRAM_FN; if (hdr->data_series & CRAM_aux) hdr->data_series |= CRAM_TL; if (hdr->data_series & CRAM_MF) hdr->data_series |= CRAM_CF; if (hdr->data_series & CRAM_MQ) hdr->data_series |= CRAM_BF; if (hdr->data_series & CRAM_BS) hdr->data_series |= CRAM_RI; if (hdr->data_series & (CRAM_MF |CRAM_NS |CRAM_NP |CRAM_TS |CRAM_NF)) hdr->data_series |= CRAM_CF; if (!hdr->read_names_included && hdr->data_series & CRAM_RN) hdr->data_series |= CRAM_CF | CRAM_NF; if (hdr->data_series & (CRAM_BA | CRAM_QS | CRAM_BB | CRAM_QQ)) hdr->data_series |= CRAM_BF | CRAM_CF | CRAM_RL; orig_ds = hdr->data_series; // Find which blocks are in use. for (i = 0; i < sizeof(i_to_id)/sizeof(*i_to_id); i++) { int bnum1, bnum2, j; cram_codec *c = hdr->codecs[i_to_id[i]]; if (!(hdr->data_series & (1<hdr->num_blocks; j++) { if (s->block[j]->content_type == EXTERNAL && s->block[j]->content_id == bnum1) { block_used[j] = 1; if (cram_uncompress_block(s->block[j])) { free(block_used); return -1; } } } break; } if (bnum2 == -2 || bnum1 == bnum2) break; bnum1 = bnum2; // 2nd pass } } // Tags too if ((fd->required_fields & SAM_AUX) || (hdr->data_series & CRAM_aux)) { for (i = 0; i < CRAM_MAP_HASH; i++) { int bnum1, bnum2, j; cram_map *m = hdr->tag_encoding_map[i]; while (m) { cram_codec *c = m->codec; if (!c) { m = m->next; continue; } bnum1 = cram_codec_to_id(c, &bnum2); for (;;) { switch (bnum1) { case -2: break; case -1: core_used = 1; break; default: for (j = 0; j < s->hdr->num_blocks; j++) { if (s->block[j]->content_type == EXTERNAL && s->block[j]->content_id == bnum1) { block_used[j] = 1; if (cram_uncompress_block(s->block[j])) { free(block_used); return -1; } } } break; } if (bnum2 == -2 || bnum1 == bnum2) break; bnum1 = bnum2; // 2nd pass } m = m->next; } } } // We now know which blocks are in used, so repeat and find // which other data series need to be added. for (i = 0; i < sizeof(i_to_id)/sizeof(*i_to_id); i++) { int bnum1, bnum2, j; cram_codec *c = hdr->codecs[i_to_id[i]]; if (!c) continue; bnum1 = cram_codec_to_id(c, &bnum2); for (;;) { switch (bnum1) { case -2: break; case -1: if (core_used) { //printf(" + data series %08x:\n", 1<data_series |= 1<hdr->num_blocks; j++) { if (s->block[j]->content_type == EXTERNAL && s->block[j]->content_id == bnum1) { if (block_used[j]) { //printf(" + data series %08x:\n", 1<data_series |= 1<tag_encoding_map[i]; while (m) { cram_codec *c = m->codec; if (!c) { m = m->next; continue; } bnum1 = cram_codec_to_id(c, &bnum2); for (;;) { switch (bnum1) { case -2: break; case -1: //printf(" + data series %08x:\n", CRAM_aux); hdr->data_series |= CRAM_aux; break; default: for (j = 0; j < s->hdr->num_blocks; j++) { if (s->block[j]->content_type == EXTERNAL && s->block[j]->content_id == bnum1) { if (block_used[j]) { //printf(" + data series %08x:\n", // CRAM_aux); hdr->data_series |= CRAM_aux; } } } break; } if (bnum2 == -2 || bnum1 == bnum2) break; bnum1 = bnum2; // 2nd pass } m = m->next; } } } while (orig_ds != hdr->data_series); free(block_used); return 0; } /* ---------------------------------------------------------------------- * CRAM slices */ /* * Decodes a CRAM (un)mapped slice header block. * Returns slice header ptr on success * NULL on failure */ cram_block_slice_hdr *cram_decode_slice_header(cram_fd *fd, cram_block *b) { cram_block_slice_hdr *hdr; unsigned char *cp; unsigned char *cp_end; int i; if (b->method != RAW) { /* Spec. says slice header should be RAW, but we can future-proof by trying to decode it if it isn't. */ if (cram_uncompress_block(b) < 0) return NULL; } cp = (unsigned char *)BLOCK_DATA(b); cp_end = cp + b->uncomp_size; if (b->content_type != MAPPED_SLICE && b->content_type != UNMAPPED_SLICE) return NULL; if (!(hdr = calloc(1, sizeof(*hdr)))) return NULL; hdr->content_type = b->content_type; if (b->content_type == MAPPED_SLICE) { cp += safe_itf8_get((char *)cp, (char *) cp_end, &hdr->ref_seq_id); cp += safe_itf8_get((char *)cp, (char *) cp_end, &hdr->ref_seq_start); cp += safe_itf8_get((char *)cp, (char *) cp_end, &hdr->ref_seq_span); } cp += safe_itf8_get((char *)cp, (char *) cp_end, &hdr->num_records); if (!IS_CRAM_1_VERS(fd)) cp += safe_itf8_get((char *)cp, (char *) cp_end, &hdr->record_counter); cp += safe_itf8_get((char *)cp, (char *) cp_end, &hdr->num_blocks); cp += safe_itf8_get((char *)cp, (char *) cp_end, &hdr->num_content_ids); if (hdr->num_content_ids < 1 || hdr->num_content_ids >= SIZE_MAX / sizeof(int32_t)) { /* Slice must have at least one data block, and malloc'd size shouldn't wrap. */ free(hdr); return NULL; } hdr->block_content_ids = malloc(hdr->num_content_ids * sizeof(int32_t)); if (!hdr->block_content_ids) { free(hdr); return NULL; } for (i = 0; i < hdr->num_content_ids; i++) { int l = safe_itf8_get((char *)cp, (char *) cp_end, &hdr->block_content_ids[i]); if (l <= 0) { free(hdr->block_content_ids); free(hdr); return NULL; } cp += l; } if (b->content_type == MAPPED_SLICE) { cp += safe_itf8_get((char *)cp, (char *) cp_end, &hdr->ref_base_id); } if (!IS_CRAM_1_VERS(fd)) { if (cp_end - cp < 16) { free(hdr->block_content_ids); free(hdr); return NULL; } memcpy(hdr->md5, cp, 16); cp += 16; } else { memset(hdr->md5, 0, 16); } // Decode any optional tag:type:value fields if (cp == cp_end) return hdr; hdr->tags = HashTableCreate(4, HASH_FUNC_TCL); while (cp <= cp_end) { unsigned int sub_len; unsigned char id[3]; HashData hd; if (cp_end - cp < 4) return hdr; id[0] = cp[0]; id[1] = cp[1]; id[2] = '\0'; switch (cp[2]) { case 'c': id[2] = 'i'; hd.i = (int8_t)(cp[3]); cp += 4; break; case 'C': id[2] = 'i'; hd.i = (uint8_t)(cp[3]); cp += 4; break; case 's': if (cp_end - cp < 5) break; id[2] = 'i'; hd.i = (int16_t)(cp[3] + (cp[4]<<8)); cp += 5; break; case 'S': if (cp_end - cp < 5) break; id[2] = 'i'; hd.i = (uint16_t)(cp[3] + (cp[4]<<8)); cp += 5; break; case 'i': if (cp_end - cp < 7) break; id[2] = 'i'; hd.i = (int32_t)(cp[3] + (cp[4]<<8) + (cp[5]<<16) + (cp[6]<<24)); cp += 7; break; case 'I': if (cp_end - cp < 7) break; id[2] = 'i'; hd.i = (uint32_t)(cp[3] + (cp[4]<<8) + (cp[5]<<16) + (cp[6]<<24)); cp += 7; break; case 'f': if (cp_end - cp < 7) break; id[2] = cp[2]; hd.f = bam_aux_f(cp+2); cp += 7; break; case 'A': id[2] = cp[2]; hd.i = cp[3]; cp += 4; break; case 'Z': case 'H': id[2] = cp[2]; hd.p = &cp[3]; cp += 3; while (cp < cp_end && *cp != '\0') cp++; if (cp < cp_end) { /* Skip NUL */ cp++; } else { /* Add missing NUL termination */ assert(cp == BLOCK_DATA(b) + b->uncomp_size); BLOCK_RESIZE(b, b->uncomp_size + 1); cp = cp_end = BLOCK_DATA(b) + b->uncomp_size; *cp = '\0'; } break; case 'B': // B<4-len><...> if (cp_end - cp < 8) break; hd.p = &cp[3]; sub_len = cp[4] + (cp[5]<<8) + (cp[6]<<16) + (cp[7]<<24); switch (cp[3]) { case 'c': case 'C': if (cp_end - cp < 8 + sub_len) break; id[2] = cp[2]; cp += 8 + sub_len; break; case 's': case 'S': if (cp_end - cp < 8 + 2 * sub_len) break; id[2] = cp[2]; cp += 8 + 2*sub_len; break; case 'i': case 'I': case 'f': if (cp_end - cp < 8 + 4 * sub_len) break; id[2] = cp[2]; cp += 8 + 4*sub_len; break; default: fprintf(stderr, "Unknown aux type 'B' sub-code.\n"); cp = cp_end; } break; default: fprintf(stderr, "Unknown aux type.\n"); cp = cp_end; } if (id[2] != '\0') { HashTableAdd(hdr->tags, (char *)id, 3, hd, NULL); } else { cp = cp_end; break; } if (id[0] == 'B' && id[1] == 'D' && id[2] == 'B') { unsigned char *p = hd.p; hdr->BD_crc = p[5] | (p[6]<<8) | (p[7]<<16) | (p[8]<<24); } if (id[0] == 'S' && id[1] == 'D' && id[2] == 'B') { unsigned char *p = hd.p; hdr->SD_crc = p[5] | (p[6]<<8) | (p[7]<<16) | (p[8]<<24); } } return hdr; } #if 0 /* Returns the number of bits set in val; it the highest bit used */ static int nbits(int v) { static const int MultiplyDeBruijnBitPosition[32] = { 1, 10, 2, 11, 14, 22, 3, 30, 12, 15, 17, 19, 23, 26, 4, 31, 9, 13, 21, 29, 16, 18, 25, 8, 20, 28, 24, 7, 27, 6, 5, 32 }; v |= v >> 1; // first up to set all bits 1 after the first 1 */ v |= v >> 2; v |= v >> 4; v |= v >> 8; v |= v >> 16; // DeBruijn magic to find top bit return MultiplyDeBruijnBitPosition[(uint32_t)(v * 0x07C4ACDDU) >> 27]; } #endif #if 0 static int sort_freqs(const void *vp1, const void *vp2) { const int i1 = *(const int *)vp1; const int i2 = *(const int *)vp2; return i1-i2; } #endif /* ---------------------------------------------------------------------- * Primary CRAM sequence decoder */ /* * Internal part of cram_decode_slice(). * Generates the sequence, quality and cigar components. */ static int cram_decode_seq(cram_fd *fd, cram_container *c, cram_slice *s, cram_block *blk, cram_record *cr, SAM_hdr *bfd, int cf, char *seq, char *qual, int has_MD, int has_NM) { int prev_pos = 0, f, r = 0, out_sz = 1; int seq_pos = 1; int cig_len = 0, ref_pos = cr->apos; int32_t fn, i32; enum cigar_op cig_op = BAM_CMATCH; uint32_t *cigar = s->cigar; uint32_t ncigar = s->ncigar; uint32_t cigar_alloc = s->cigar_alloc; uint32_t nm = 0; int32_t md_dist = 0; int orig_aux = 0; int decode_md = fd->decode_md && s->ref && !has_MD; int decode_nm = fd->decode_md && s->ref && !has_NM; uint32_t ds = c->comp_hdr->data_series; if (ds & CRAM_QS && !(cf & CRAM_FLAG_PRESERVE_QUAL_SCORES)) { memset(qual, 255, cr->len); } if (cr->cram_flags & CRAM_FLAG_NO_SEQ) decode_md = decode_nm = 0; if (decode_md) { orig_aux = BLOCK_SIZE(s->aux_blk); BLOCK_APPEND(s->aux_blk, "MDZ", 3); } if (ds & CRAM_FN) { if (!c->comp_hdr->codecs[DS_FN]) return -1; r |= c->comp_hdr->codecs[DS_FN]->decode(s,c->comp_hdr->codecs[DS_FN], blk, (char *)&fn, &out_sz); if (r) return r; } else { fn = 0; } ref_pos--; // count from 0 cr->cigar = ncigar; if (!(ds & (CRAM_FC | CRAM_FP))) goto skip_cigar; for (f = 0; f < fn; f++) { int32_t pos = 0; char op; if (ncigar+2 >= cigar_alloc) { cigar_alloc = cigar_alloc ? cigar_alloc*2 : 1024; s->cigar = cigar; if (!(cigar = realloc(cigar, cigar_alloc * sizeof(*cigar)))) return -1; } if (ds & CRAM_FC) { if (!c->comp_hdr->codecs[DS_FC]) return -1; r |= c->comp_hdr->codecs[DS_FC]->decode(s, c->comp_hdr->codecs[DS_FC], blk, &op, &out_sz); if (r) return r; } if (!(ds & CRAM_FP)) continue; if (!c->comp_hdr->codecs[DS_FP]) return -1; r |= c->comp_hdr->codecs[DS_FP]->decode(s, c->comp_hdr->codecs[DS_FP], blk, (char *)&pos, &out_sz); if (r) return r; pos += prev_pos; if (pos <= 0) { fprintf(stderr, "Error: feature position %d before start of read.\n", pos); return -1; } if (pos > seq_pos) { if (pos > cr->len+1) return -1; if (s->ref && cr->ref_id >= 0) { if (ref_pos + pos - seq_pos > bfd->ref[cr->ref_id].len) { static int whinged = 0; int rlen; if (!whinged) fprintf(stderr, "Ref pos outside of ref " "sequence boundary\n"); whinged = 1; rlen = bfd->ref[cr->ref_id].len - ref_pos; if (rlen > 0) { memcpy(&seq[seq_pos-1], &s->ref[ref_pos - s->ref_start +1], rlen); if ((pos - seq_pos) - rlen > 0) memset(&seq[seq_pos-1+rlen], 'N', (pos - seq_pos) - rlen); } else { memset(&seq[seq_pos-1], 'N', cr->len - seq_pos + 1); } } else { memcpy(&seq[seq_pos-1], &s->ref[ref_pos - s->ref_start +1], pos - seq_pos); } } #ifdef USE_X if (cig_len && cig_op != BAM_CBASE_MATCH) { cigar[ncigar++] = (cig_len<<4) + cig_op; cig_len = 0; } cig_op = BAM_CBASE_MATCH; #else if (cig_len && cig_op != BAM_CMATCH) { cigar[ncigar++] = (cig_len<<4) + cig_op; cig_len = 0; } cig_op = BAM_CMATCH; #endif cig_len += pos - seq_pos; ref_pos += pos - seq_pos; if (md_dist >= 0) md_dist += pos - seq_pos; seq_pos = pos; } prev_pos = pos; if (!(ds & CRAM_FC)) continue; switch(op) { case 'S': { // soft clip: IN int32_t out_sz2 = 1; int have_sc = 0; if (cig_len) { cigar[ncigar++] = (cig_len<<4) + cig_op; cig_len = 0; } switch (CRAM_MAJOR_VERS(fd->version)) { case 1: if (ds & CRAM_IN) { r |= c->comp_hdr->codecs[DS_IN] ? c->comp_hdr->codecs[DS_IN] ->decode(s, c->comp_hdr->codecs[DS_IN], blk, &seq[pos-1], &out_sz2) : (seq[pos-1] = 'N', out_sz2 = 1, 0); have_sc = 1; } break; case 2: default: if (ds & CRAM_SC) { r |= c->comp_hdr->codecs[DS_SC] ? c->comp_hdr->codecs[DS_SC] ->decode(s, c->comp_hdr->codecs[DS_SC], blk, &seq[pos-1], &out_sz2) : (seq[pos-1] = 'N', out_sz2 = 1, 0); have_sc = 1; } break; // default: // r |= c->comp_hdr->codecs[DS_BB] // ? c->comp_hdr->codecs[DS_BB] // ->decode(s, c->comp_hdr->codecs[DS_BB], // blk, &seq[pos-1], &out_sz2) // : (seq[pos-1] = 'N', out_sz2 = 1, 0); } if (have_sc) { if (r) return r; cigar[ncigar++] = (out_sz2<<4) + BAM_CSOFT_CLIP; cig_op = BAM_CSOFT_CLIP; seq_pos += out_sz2; } break; } case 'X': { // Substitution; BS unsigned char base; #ifdef USE_X if (cig_len && cig_op != BAM_CBASE_MISMATCH) { cigar[ncigar++] = (cig_len<<4) + cig_op; cig_len = 0; } if (ds & CRAM_BS) { if (!c->comp_hdr->codecs[DS_BS]) return -1; r |= c->comp_hdr->codecs[DS_BS] ->decode(s, c->comp_hdr->codecs[DS_BS], blk, (char *)&base, &out_sz); seq[pos-1] = 'N'; // FIXME look up BS=base value } cig_op = BAM_CBASE_MISMATCH; #else int ref_base; if (cig_len && cig_op != BAM_CMATCH) { cigar[ncigar++] = (cig_len<<4) + cig_op; cig_len = 0; } if (ds & CRAM_BS) { if (!c->comp_hdr->codecs[DS_BS]) return -1; r |= c->comp_hdr->codecs[DS_BS] ->decode(s, c->comp_hdr->codecs[DS_BS], blk, (char *)&base, &out_sz); if (r) return -1; if (ref_pos >= bfd->ref[cr->ref_id].len || !s->ref) { seq[pos-1] = c->comp_hdr-> substitution_matrix[fd->L1['N']][base]; if (decode_md || decode_nm) { if (md_dist >= 0 && decode_md) BLOCK_APPEND_UINT(s->aux_blk, md_dist); md_dist = -1; nm--; } } else { unsigned char ref_call = ref_pos <= s->ref_end ? (uc)s->ref[ref_pos - s->ref_start +1] : 'N'; ref_base = fd->L1[ref_call]; seq[pos-1] = c->comp_hdr-> substitution_matrix[ref_base][base]; if (decode_md) { BLOCK_APPEND_UINT(s->aux_blk, md_dist); BLOCK_APPEND_CHAR(s->aux_blk, ref_call); md_dist = 0; } } } cig_op = BAM_CMATCH; #endif nm++; cig_len++; seq_pos++; ref_pos++; break; } case 'D': { // Deletion; DL if (cig_len && cig_op != BAM_CDEL) { cigar[ncigar++] = (cig_len<<4) + cig_op; cig_len = 0; } if (ds & CRAM_DL) { if (!c->comp_hdr->codecs[DS_DL]) return -1; r |= c->comp_hdr->codecs[DS_DL] ->decode(s, c->comp_hdr->codecs[DS_DL], blk, (char *)&i32, &out_sz); if (r) return r; if (decode_md || decode_nm) { if (md_dist >= 0 && decode_md) BLOCK_APPEND_UINT(s->aux_blk, md_dist); if (ref_pos + i32 <= bfd->ref[cr->ref_id].len) { if (decode_md) { BLOCK_APPEND_CHAR(s->aux_blk, '^'); BLOCK_APPEND(s->aux_blk, &s->ref[ref_pos - s->ref_start +1], i32); md_dist = 0; } nm += i32; } else { uint32_t dlen; if (bfd->ref[cr->ref_id].len >= ref_pos) { if (decode_md) { BLOCK_APPEND_CHAR(s->aux_blk, '^'); BLOCK_APPEND(s->aux_blk, &s->ref[ref_pos - s->ref_start+1], bfd->ref[cr->ref_id].len-ref_pos); BLOCK_APPEND_UINT(s->aux_blk, 0); } dlen = i32 - (bfd->ref[cr->ref_id].len - ref_pos); nm += i32 - dlen; } else { dlen = i32; } md_dist = -1; } } cig_op = BAM_CDEL; cig_len += i32; ref_pos += i32; //printf(" %d: DL = %d (ret %d)\n", f, i32, r); } break; } case 'I': { // Insertion (several bases); IN int32_t out_sz2 = 1; if (cig_len && cig_op != BAM_CINS) { cigar[ncigar++] = (cig_len<<4) + cig_op; cig_len = 0; } if (ds & CRAM_IN) { if (!c->comp_hdr->codecs[DS_IN]) return -1; r |= c->comp_hdr->codecs[DS_IN] ->decode(s, c->comp_hdr->codecs[DS_IN], blk, &seq[pos-1], &out_sz2); if (r) return r; cig_op = BAM_CINS; cig_len += out_sz2; seq_pos += out_sz2; nm += out_sz2; //printf(" %d: IN(I) = %.*s (ret %d, out_sz %d)\n", f, out_sz2, dat, r, out_sz2); } break; } case 'i': { // Insertion (single base); BA if (cig_len && cig_op != BAM_CINS) { cigar[ncigar++] = (cig_len<<4) + cig_op; cig_len = 0; } if (ds & CRAM_BA) { if (!c->comp_hdr->codecs[DS_BA]) return -1; r |= c->comp_hdr->codecs[DS_BA] ->decode(s, c->comp_hdr->codecs[DS_BA], blk, (char *)&seq[pos-1], &out_sz); if (r) return r; //printf(" %d: BA = %c (ret %d)\n", f, seq[pos-1], r); } cig_op = BAM_CINS; cig_len++; seq_pos++; nm++; break; } case 'b': { // Several bases int32_t len = 1; if (cig_len && cig_op != BAM_CMATCH) { cigar[ncigar++] = (cig_len<<4) + cig_op; cig_len = 0; } if (ds & CRAM_BB) { if (!c->comp_hdr->codecs[DS_BB]) return -1; r |= c->comp_hdr->codecs[DS_BB] ->decode(s, c->comp_hdr->codecs[DS_BB], blk, (char *)&seq[pos-1], &len); if (r) return r; if (decode_md || decode_nm) { int x; if (md_dist >= 0 && decode_md) BLOCK_APPEND_UINT(s->aux_blk, md_dist); for (x = 0; x < len; x++) { if (x && decode_md) BLOCK_APPEND_UINT(s->aux_blk, 0); if (ref_pos+x >= bfd->ref[cr->ref_id].len || !s->ref) { md_dist = -1; break; } else { if (decode_md) { char r = s->ref[ref_pos+x-s->ref_start +1]; BLOCK_APPEND_CHAR(s->aux_blk, r); } } } nm += x; } } cig_op = BAM_CMATCH; cig_len+=len; seq_pos+=len; ref_pos+=len; //prev_pos+=len; break; } case 'q': { // Several quality values int32_t len = 1; if (cig_len && cig_op != BAM_CMATCH) { cigar[ncigar++] = (cig_len<<4) + cig_op; cig_len = 0; } if (ds & CRAM_QQ) { if (!c->comp_hdr->codecs[DS_QQ]) return -1; r |= c->comp_hdr->codecs[DS_QQ] ->decode(s, c->comp_hdr->codecs[DS_QQ], blk, (char *)&qual[pos-1], &len); if (r) return r; } cig_op = BAM_CMATCH; cig_len+=len; seq_pos+=len; ref_pos+=len; //prev_pos+=len; break; } case 'B': { // Read base; BA, QS #ifdef USE_X if (cig_len && cig_op != BAM_CBASE_MISMATCH) { cigar[ncigar++] = (cig_len<<4) + cig_op; cig_len = 0; } #else if (cig_len && cig_op != BAM_CMATCH) { cigar[ncigar++] = (cig_len<<4) + cig_op; cig_len = 0; } #endif if (ds & CRAM_BA) { if (!c->comp_hdr->codecs[DS_BA]) return -1; r |= c->comp_hdr->codecs[DS_BA] ->decode(s, c->comp_hdr->codecs[DS_BA], blk, (char *)&seq[pos-1], &out_sz); if (decode_md || decode_nm) { if (md_dist >= 0 && decode_md) BLOCK_APPEND_UINT(s->aux_blk, md_dist); if (ref_pos >= bfd->ref[cr->ref_id].len || !s->ref) { md_dist = -1; } else { if (decode_md) BLOCK_APPEND_CHAR(s->aux_blk, s->ref[ref_pos-s->ref_start +1]); nm++; md_dist = 0; } } } if (ds & CRAM_QS) { if (!c->comp_hdr->codecs[DS_QS]) return -1; r |= c->comp_hdr->codecs[DS_QS] ->decode(s, c->comp_hdr->codecs[DS_QS], blk, (char *)&qual[pos-1], &out_sz); } #ifdef USE_X cig_op = BAM_CBASE_MISMATCH; #else cig_op = BAM_CMATCH; #endif cig_len++; seq_pos++; ref_pos++; //printf(" %d: BA/QS(B) = %c/%d (ret %d)\n", f, i32, qc, r); break; } case 'Q': { // Quality score; QS if (ds & CRAM_QS) { if (!c->comp_hdr->codecs[DS_QS]) return -1; r |= c->comp_hdr->codecs[DS_QS] ->decode(s, c->comp_hdr->codecs[DS_QS], blk, (char *)&qual[pos-1], &out_sz); //printf(" %d: QS = %d (ret %d)\n", f, qc, r); } break; } case 'H': { // hard clip; HC if (cig_len && cig_op != BAM_CHARD_CLIP) { cigar[ncigar++] = (cig_len<<4) + cig_op; cig_len = 0; } if (ds & CRAM_HC) { if (!c->comp_hdr->codecs[DS_HC]) return -1; r |= c->comp_hdr->codecs[DS_HC] ->decode(s, c->comp_hdr->codecs[DS_HC], blk, (char *)&i32, &out_sz); if (r) return r; cig_op = BAM_CHARD_CLIP; cig_len += i32; } break; } case 'P': { // padding; PD if (cig_len && cig_op != BAM_CPAD) { cigar[ncigar++] = (cig_len<<4) + cig_op; cig_len = 0; } if (ds & CRAM_PD) { if (!c->comp_hdr->codecs[DS_PD]) return -1; r |= c->comp_hdr->codecs[DS_PD] ->decode(s, c->comp_hdr->codecs[DS_PD], blk, (char *)&i32, &out_sz); if (r) return r; cig_op = BAM_CPAD; cig_len += i32; nm += i32; } break; } case 'N': { // Ref skip; RS if (cig_len && cig_op != BAM_CREF_SKIP) { cigar[ncigar++] = (cig_len<<4) + cig_op; cig_len = 0; } if (ds & CRAM_RS) { if (!c->comp_hdr->codecs[DS_RS]) return -1; r |= c->comp_hdr->codecs[DS_RS] ->decode(s, c->comp_hdr->codecs[DS_RS], blk, (char *)&i32, &out_sz); if (r) return r; cig_op = BAM_CREF_SKIP; cig_len += i32; ref_pos += i32; nm += i32; } break; } default: fprintf(stderr, "Error: Unknown feature code '%c'\n", op); return -1; } } if (!(ds & CRAM_FC)) goto skip_cigar; /* An implicit match op for any unaccounted for bases */ if (ds & CRAM_FN && cr->len >= seq_pos) { if (s->ref) { if (ref_pos + cr->len - seq_pos + 1 > bfd->ref[cr->ref_id].len) { static int whinged = 0; int rlen; if (!whinged) fprintf(stderr, "Ref pos outside of ref sequence boundary\n"); whinged = 1; rlen = bfd->ref[cr->ref_id].len - ref_pos; if (rlen > 0) { memcpy(&seq[seq_pos-1], &s->ref[ref_pos - s->ref_start +1], rlen); if ((cr->len - seq_pos + 1) - rlen > 0) memset(&seq[seq_pos-1+rlen], 'N', (cr->len - seq_pos + 1) - rlen); } else { memset(&seq[seq_pos-1], 'N', cr->len - seq_pos + 1); } } else { memcpy(&seq[seq_pos-1], &s->ref[ref_pos - s->ref_start +1], cr->len - seq_pos + 1); ref_pos += cr->len - seq_pos + 1; if (md_dist >= 0) md_dist += cr->len - seq_pos + 1; } } if (ncigar+1 >= cigar_alloc) { cigar_alloc = cigar_alloc ? cigar_alloc*2 : 1024; s->cigar = cigar; if (!(cigar = realloc(cigar, cigar_alloc * sizeof(*cigar)))) return -1; } #ifdef USE_X if (cig_len && cig_op != BAM_CBASE_MATCH) { cigar[ncigar++] = (cig_len<<4) + cig_op; cig_len = 0; } cig_op = BAM_CBASE_MATCH; #else if (cig_len && cig_op != BAM_CMATCH) { cigar[ncigar++] = (cig_len<<4) + cig_op; cig_len = 0; } cig_op = BAM_CMATCH; #endif cig_len += cr->len - seq_pos+1; } skip_cigar: if ((ds & CRAM_FN) && decode_md) { if (md_dist >= 0) BLOCK_APPEND_UINT(s->aux_blk, md_dist); } if (cig_len) { if (ncigar >= cigar_alloc) { cigar_alloc = cigar_alloc ? cigar_alloc*2 : 1024; s->cigar = cigar; if (!(cigar = realloc(cigar, cigar_alloc * sizeof(*cigar)))) return -1; } cigar[ncigar++] = (cig_len<<4) + cig_op; } cr->ncigar = ncigar - cr->cigar; cr->aend = ref_pos; //printf("2: %.*s %d .. %d\n", cr->name_len, DSTRING_STR(name_ds) + cr->name, cr->apos, ref_pos); if (ds & CRAM_MQ) { if (!c->comp_hdr->codecs[DS_MQ]) return -1; r |= c->comp_hdr->codecs[DS_MQ] ->decode(s, c->comp_hdr->codecs[DS_MQ], blk, (char *)&cr->mqual, &out_sz); } else { cr->mqual = 40; } if ((ds & CRAM_QS) && (cf & CRAM_FLAG_PRESERVE_QUAL_SCORES)) { int32_t out_sz2 = cr->len; if (ds & CRAM_QS) { if (!c->comp_hdr->codecs[DS_QS]) return -1; r |= c->comp_hdr->codecs[DS_QS] ->decode(s, c->comp_hdr->codecs[DS_QS], blk, qual, &out_sz2); } } s->cigar = cigar; s->cigar_alloc = cigar_alloc; s->ncigar = ncigar; if (cr->cram_flags & CRAM_FLAG_NO_SEQ) cr->len = 0; if (decode_md) { BLOCK_APPEND_CHAR(s->aux_blk, '\0'); // null terminate MD:Z: cr->aux_size += BLOCK_SIZE(s->aux_blk) - orig_aux; } if (decode_nm) { char buf[7]; buf[0] = 'N'; buf[1] = 'M'; buf[2] = 'I'; buf[3] = (nm>> 0) & 0xff; buf[4] = (nm>> 8) & 0xff; buf[5] = (nm>>16) & 0xff; buf[6] = (nm>>24) & 0xff; BLOCK_APPEND(s->aux_blk, buf, 7); cr->aux_size += 7; } return r; } /* * Quick and simple hash lookup for cram_map arrays */ static cram_map *map_find(cram_map **map, unsigned char *key, int id) { cram_map *m; m = map[CRAM_MAP(key[0],key[1])]; while (m && m->key != id) m= m->next; return m; } //#define map_find(M,K,I) M[CRAM_MAP(K[0],K[1])];while (m && m->key != I);m= m->next static int cram_decode_aux_1_0(cram_container *c, cram_slice *s, cram_block *blk, cram_record *cr) { int i, r = 0, out_sz = 1; unsigned char ntags; if (!c->comp_hdr->codecs[DS_TC]) return -1; r |= c->comp_hdr->codecs[DS_TC]->decode(s, c->comp_hdr->codecs[DS_TC], blk, (char *)&ntags, &out_sz); cr->ntags = ntags; //printf("TC=%d\n", cr->ntags); cr->aux_size = 0; cr->aux = BLOCK_SIZE(s->aux_blk); for (i = 0; i < cr->ntags; i++) { int32_t id, out_sz = 1; unsigned char tag_data[3]; cram_map *m; //printf("Tag %d/%d\n", i+1, cr->ntags); if (!c->comp_hdr->codecs[DS_TN]) return -1; r |= c->comp_hdr->codecs[DS_TN]->decode(s, c->comp_hdr->codecs[DS_TN], blk, (char *)&id, &out_sz); if (out_sz == 3) { tag_data[0] = ((char *)&id)[0]; tag_data[1] = ((char *)&id)[1]; tag_data[2] = ((char *)&id)[2]; } else { tag_data[0] = (id>>16) & 0xff; tag_data[1] = (id>>8) & 0xff; tag_data[2] = id & 0xff; } m = map_find(c->comp_hdr->tag_encoding_map, tag_data, id); if (!m) return -1; BLOCK_APPEND(s->aux_blk, (char *)tag_data, 3); if (!m->codec) return -1; r |= m->codec->decode(s, m->codec, blk, (char *)s->aux_blk, &out_sz); cr->aux_size += out_sz + 3; } return r; } static int cram_decode_aux(cram_container *c, cram_slice *s, cram_block *blk, cram_record *cr, int *has_MD, int *has_NM) { int i, r = 0, out_sz = 1; int32_t TL = 0; unsigned char *TN; uint32_t ds = c->comp_hdr->data_series; if (!(ds & (CRAM_TL|CRAM_aux))) { cr->aux = 0; cr->aux_size = 0; return 0; } if (!c->comp_hdr->codecs[DS_TL]) return -1; r |= c->comp_hdr->codecs[DS_TL]->decode(s, c->comp_hdr->codecs[DS_TL], blk, (char *)&TL, &out_sz); if (r || TL < 0 || TL >= c->comp_hdr->nTL) return -1; TN = c->comp_hdr->TL[TL]; cr->ntags = strlen((char *)TN)/3; // optimise to remove strlen //printf("TC=%d\n", cr->ntags); cr->aux_size = 0; cr->aux = BLOCK_SIZE(s->aux_blk); if (!(ds & CRAM_aux)) return 0; for (i = 0; i < cr->ntags; i++) { int32_t id, out_sz = 1; unsigned char tag_data[3]; cram_map *m; if (TN[0] == 'M' && TN[1] == 'D' && has_MD) *has_MD = 1; if (TN[0] == 'N' && TN[1] == 'M' && has_NM) *has_NM = 1; //printf("Tag %d/%d\n", i+1, cr->ntags); tag_data[0] = *TN++; tag_data[1] = *TN++; tag_data[2] = *TN++; id = (tag_data[0]<<16) | (tag_data[1]<<8) | tag_data[2]; m = map_find(c->comp_hdr->tag_encoding_map, tag_data, id); if (!m) return -1; BLOCK_APPEND(s->aux_blk, (char *)tag_data, 3); if (!m->codec) return -1; r |= m->codec->decode(s, m->codec, blk, (char *)s->aux_blk, &out_sz); if (r) break; cr->aux_size += out_sz + 3; } return r; } /* Resolve mate pair cross-references between recs within this slice */ static int cram_decode_slice_xref(cram_slice *s, int required_fields) { int rec; if (!(required_fields & (SAM_RNEXT | SAM_PNEXT | SAM_TLEN))) { for (rec = 0; rec < s->hdr->num_records; rec++) { cram_record *cr = &s->crecs[rec]; cr->tlen = 0; cr->mate_pos = 0; cr->mate_ref_id = -1; } return 0; } for (rec = 0; rec < s->hdr->num_records; rec++) { cram_record *cr = &s->crecs[rec]; if (cr->mate_line >= 0) { if (cr->mate_line < s->hdr->num_records) { /* * On the first read, loop through computing lengths. * It's not perfect as we have one slice per reference so we * cannot detect when TLEN should be zero due to seqs that * map to multiple references. * * We also cannot set tlen correct when it spans a slice for * other reasons. This may make tlen too small. Should we * fix this by forcing TLEN to be stored verbatim in such cases? * * Or do we just admit defeat and output 0 for tlen? It's the * safe option... */ if (cr->tlen == INT_MIN) { int id1 = rec, id2 = rec; int aleft = cr->apos, aright = cr->aend; int tlen; int ref = cr->ref_id; int left_cnt = 0; do { if (aleft > s->crecs[id2].apos) aleft = s->crecs[id2].apos, left_cnt = 1; else if (aleft == s->crecs[id2].apos) left_cnt++; if (aright < s->crecs[id2].aend) aright = s->crecs[id2].aend; if (s->crecs[id2].mate_line == -1) { s->crecs[id2].mate_line = rec; break; } if (s->crecs[id2].mate_line <= id2 || s->crecs[id2].mate_line >= s->hdr->num_records) return -1; id2 = s->crecs[id2].mate_line; if (s->crecs[id2].ref_id != ref) ref = -1; } while (id2 != id1); if (ref != -1) { tlen = aright - aleft + 1; id1 = id2 = rec; /* * When we have two seqs with identical start and * end coordinates, set +/- tlen based on 1st/last * bit flags instead, as a tie breaker. */ if (s->crecs[id2].apos == aleft) { if (left_cnt == 1 || (s->crecs[id2].flags & BAM_FREAD1)) s->crecs[id2].tlen = tlen; else s->crecs[id2].tlen = -tlen; } else { s->crecs[id2].tlen = -tlen; } id2 = s->crecs[id2].mate_line; while (id2 != id1) { if (s->crecs[id2].apos == aleft) { if (left_cnt == 1 || (s->crecs[id2].flags & BAM_FREAD1)) s->crecs[id2].tlen = tlen; else s->crecs[id2].tlen = -tlen; } else { s->crecs[id2].tlen = -tlen; } id2 = s->crecs[id2].mate_line; } } else { id1 = id2 = rec; s->crecs[id2].tlen = 0; id2 = s->crecs[id2].mate_line; while (id2 != id1) { s->crecs[id2].tlen = 0; id2 = s->crecs[id2].mate_line; } } } cr->mate_pos = s->crecs[cr->mate_line].apos; cr->mate_ref_id = s->crecs[cr->mate_line].ref_id; // paired cr->flags |= BAM_FPAIRED; // set mate unmapped if needed if (s->crecs[cr->mate_line].flags & BAM_FUNMAP) { cr->flags |= BAM_FMUNMAP; cr->tlen = 0; } if (cr->flags & BAM_FUNMAP) { cr->tlen = 0; } // set mate reversed if needed if (s->crecs[cr->mate_line].flags & BAM_FREVERSE) cr->flags |= BAM_FMREVERSE; } else { fprintf(stderr, "Mate line out of bounds: %d vs [0, %d]\n", cr->mate_line, s->hdr->num_records-1); } /* FIXME: construct read names here too if needed */ } else { if (cr->mate_flags & CRAM_M_REVERSE) { cr->flags |= BAM_FPAIRED | BAM_FMREVERSE; } if (cr->mate_flags & CRAM_M_UNMAP) { cr->flags |= BAM_FMUNMAP; //cr->mate_ref_id = -1; } if (!(cr->flags & BAM_FPAIRED)) cr->mate_ref_id = -1; } if (cr->tlen == INT_MIN) cr->tlen = 0; // Just incase } return 0; } static char *md5_print(unsigned char *md5, char *out) { int i; for (i = 0; i < 16; i++) { out[i*2+0] = "0123456789abcdef"[md5[i]>>4]; out[i*2+1] = "0123456789abcdef"[md5[i]&15]; } out[32] = 0; return out; } static void reset_all_codecs(cram_block_compression_hdr *hdr) { int i; for (i = 0; i < DS_END; i++) { if (hdr->codecs[i] && hdr->codecs[i]->reset) hdr->codecs[i]->reset(hdr->codecs[i]); } for (i = 0; i < CRAM_MAP_HASH; i++) { cram_map *m; for (m = hdr->rec_encoding_map[i]; m; m = m->next) if (m->codec) m->codec->reset(m->codec); } for (i = 0; i < CRAM_MAP_HASH; i++) { cram_map *m; for (m = hdr->tag_encoding_map[i]; m; m = m->next) if (m->codec) m->codec->reset(m->codec); } } /* * Decode an entire slice from container blocks. Fills out s->crecs[] array. * Returns 0 on success * -1 on failure */ int cram_decode_slice(cram_fd *fd, cram_container *c, cram_slice *s, SAM_hdr *bfd) { cram_block *blk = s->block[0]; int32_t bf, ref_id; unsigned char cf; int out_sz, r = 0; int rec; char *seq = NULL, *qual = NULL; int unknown_rg = -1; int embed_ref; char **refs = NULL; uint32_t ds; /* Clear any cached blocks in the external / B.A.S. codecs */ reset_all_codecs(c->comp_hdr); if (cram_dependent_data_series(fd, c->comp_hdr, s) != 0) return -1; ds = c->comp_hdr->data_series; //printf("%08x\n", ds); blk->bit = 7; // MSB first /* Look for unknown RG, added as last by Java CRAM? */ if (bfd->nrg > 0 && bfd->rg[bfd->nrg-1].name != NULL && !strcmp(bfd->rg[bfd->nrg-1].name, "UNKNOWN")) unknown_rg = bfd->nrg-1; if (blk->content_type != CORE) return -1; if (s->crecs) free(s->crecs); if (!(s->crecs = malloc(s->hdr->num_records * sizeof(*s->crecs)))) return -1; ref_id = s->hdr->ref_seq_id; embed_ref = s->hdr->ref_base_id >= 0 ? 1 : 0; if (ref_id >= 0) { if (embed_ref) { cram_block *b; if (s->hdr->ref_base_id < 0) { fprintf(stderr, "No reference specified and " "no embedded reference is available.\n"); return -1; } b = cram_get_block_by_id(s, s->hdr->ref_base_id); if (!b) return -1; if (cram_uncompress_block(b) < 0) return -1; s->ref = (char *)BLOCK_DATA(b); s->ref_start = s->hdr->ref_seq_start; s->ref_end = s->hdr->ref_seq_start + s->hdr->ref_seq_span-1; } else if (!fd->no_ref) { //// Avoid Java cramtools bug by loading entire reference seq //s->ref = cram_get_ref(fd, s->hdr->ref_seq_id, 1, 0); //s->ref_start = 1; if (fd->required_fields & SAM_SEQ) s->ref = cram_get_ref(fd, s->hdr->ref_seq_id, s->hdr->ref_seq_start, s->hdr->ref_seq_start + s->hdr->ref_seq_span -1); s->ref_start = s->hdr->ref_seq_start; s->ref_end = s->hdr->ref_seq_start + s->hdr->ref_seq_span-1; /* Sanity check */ if (s->ref_start < 0) { fprintf(stderr, "Slice starts before base 1.\n"); s->ref_start = 0; } if (fd->ref_lock) pthread_mutex_lock(fd->ref_lock); pthread_mutex_lock(&fd->refs->lock); if ((fd->required_fields & SAM_SEQ) && s->ref_end > fd->refs->ref_id[ref_id]->length) { s->ref_end = fd->refs->ref_id[ref_id]->length; } pthread_mutex_unlock(&fd->refs->lock); if (fd->ref_lock) pthread_mutex_unlock(fd->ref_lock); } } if ((fd->required_fields & SAM_SEQ) && s->ref == NULL && s->hdr->ref_seq_id >= 0 && !fd->no_ref) { fprintf(stderr, "Unable to fetch reference #%d %d..%d\n", s->hdr->ref_seq_id, s->hdr->ref_seq_start, s->hdr->ref_seq_start + s->hdr->ref_seq_span-1); return -1; } if (!IS_CRAM_1_VERS(fd) && (fd->required_fields & SAM_SEQ) && s->hdr->ref_seq_id >= 0 && !fd->ignore_md5 && memcmp(s->hdr->md5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", 16)) { MD5_CTX md5; unsigned char digest[16]; if (s->ref && s->hdr->ref_seq_id >= 0) { int start, len; if (s->hdr->ref_seq_start >= s->ref_start) { start = s->hdr->ref_seq_start - s->ref_start; } else { fprintf(stderr, "Slice starts before base 1.\n"); start = 0; } if (s->hdr->ref_seq_span <= s->ref_end - s->ref_start + 1) { len = s->hdr->ref_seq_span; } else { fprintf(stderr, "Slice ends beyond reference end.\n"); len = s->ref_end - s->ref_start + 1; } MD5_Init(&md5); if (start + len > s->ref_end - s->ref_start + 1) len = s->ref_end - s->ref_start + 1 - start; if (len >= 0) MD5_Update(&md5, s->ref + start, len); MD5_Final(digest, &md5); } else if (!s->ref && s->hdr->ref_base_id >= 0) { cram_block *b = cram_get_block_by_id(s, s->hdr->ref_base_id); if (b) { MD5_Init(&md5); MD5_Update(&md5, b->data, b->uncomp_size); MD5_Final(digest, &md5); } } if ((!s->ref && s->hdr->ref_base_id < 0) || memcmp(digest, s->hdr->md5, 16) != 0) { char M[33]; fprintf(stderr, "ERROR: md5sum reference mismatch for ref " "%d pos %d..%d\n", ref_id, s->ref_start, s->ref_end); fprintf(stderr, "CRAM: %s\n", md5_print(s->hdr->md5, M)); fprintf(stderr, "Ref : %s\n", md5_print(digest, M)); return -1; } } if (ref_id == -2) { if (fd->ref_lock) pthread_mutex_lock(fd->ref_lock); pthread_mutex_lock(&fd->refs->lock); refs = calloc(fd->refs->nref, sizeof(char *)); pthread_mutex_unlock(&fd->refs->lock); if (fd->ref_lock) pthread_mutex_unlock(fd->ref_lock); if (!refs) return -1; } int last_ref_id = -9; for (rec = 0; rec < s->hdr->num_records; rec++) { cram_record *cr = &s->crecs[rec]; int has_MD, has_NM; //fprintf(stderr, "Decode seq %d, %d/%d\n", rec, blk->byte, blk->bit); cr->s = s; out_sz = 1; /* decode 1 item */ if (ds & CRAM_BF) { if (!c->comp_hdr->codecs[DS_BF]) return -1; r |= c->comp_hdr->codecs[DS_BF] ->decode(s, c->comp_hdr->codecs[DS_BF], blk, (char *)&bf, &out_sz); if (r || bf < 0 || bf >= sizeof(fd->bam_flag_swap)/sizeof(*fd->bam_flag_swap)) return -1; bf = fd->bam_flag_swap[bf]; cr->flags = bf; } else { cr->flags = bf = 0x4; // unmapped } if (ds & CRAM_CF) { if (IS_CRAM_1_VERS(fd)) { /* CF is byte in 1.0, int32 in 2.0 */ if (!c->comp_hdr->codecs[DS_CF]) return -1; r |= c->comp_hdr->codecs[DS_CF] ->decode(s, c->comp_hdr->codecs[DS_CF], blk, (char *)&cf, &out_sz); if (r) return -1; cr->cram_flags = cf; } else { if (!c->comp_hdr->codecs[DS_CF]) return -1; r |= c->comp_hdr->codecs[DS_CF] ->decode(s, c->comp_hdr->codecs[DS_CF], blk, (char *)&cr->cram_flags, &out_sz); if (r) return -1; cf = cr->cram_flags; } } if (!IS_CRAM_1_VERS(fd) && ref_id == -2) { if (ds & CRAM_RI) { if (!c->comp_hdr->codecs[DS_RI]) return -1; r |= c->comp_hdr->codecs[DS_RI] ->decode(s, c->comp_hdr->codecs[DS_RI], blk, (char *)&cr->ref_id, &out_sz); if (r) return -1; if ((fd->required_fields & (SAM_SEQ|SAM_TLEN)) && cr->ref_id >= 0 && cr->ref_id != last_ref_id) { if (!fd->no_ref) { if (!refs[cr->ref_id]) refs[cr->ref_id] = cram_get_ref(fd, cr->ref_id, 1, 0); s->ref = refs[cr->ref_id]; if (!fd->unsorted && last_ref_id >= 0 && refs[last_ref_id]) { cram_ref_decr(fd->refs, last_ref_id); refs[last_ref_id] = NULL; } } s->ref_start = 1; if (fd->ref_lock) pthread_mutex_lock(fd->ref_lock); pthread_mutex_lock(&fd->refs->lock); s->ref_end = fd->refs->ref_id[cr->ref_id]->length; pthread_mutex_unlock(&fd->refs->lock); if (fd->ref_lock) pthread_mutex_unlock(fd->ref_lock); last_ref_id = cr->ref_id; } } else { cr->ref_id = -1; } } else { cr->ref_id = ref_id; // Forced constant in CRAM 1.0 } if (cr->ref_id >= bfd->nref) { fprintf(stderr, "Requested unknown reference ID %d\n", cr->ref_id); return -1; } if (ds & CRAM_RL) { if (!c->comp_hdr->codecs[DS_RL]) return -1; r |= c->comp_hdr->codecs[DS_RL] ->decode(s, c->comp_hdr->codecs[DS_RL], blk, (char *)&cr->len, &out_sz); if (r) return r; if (cr->len < 0) { fprintf(stderr, "Read has negative length\n"); return -1; } } if (ds & CRAM_AP) { if (!c->comp_hdr->codecs[DS_AP]) return -1; r |= c->comp_hdr->codecs[DS_AP] ->decode(s, c->comp_hdr->codecs[DS_AP], blk, (char *)&cr->apos, &out_sz); if (r) return r; if (c->comp_hdr->AP_delta) cr->apos += s->last_apos; s->last_apos= cr->apos; } else { cr->apos = c->ref_seq_start; } if (ds & CRAM_RG) { if (!c->comp_hdr->codecs[DS_RG]) return -1; r |= c->comp_hdr->codecs[DS_RG] ->decode(s, c->comp_hdr->codecs[DS_RG], blk, (char *)&cr->rg, &out_sz); if (r) return r; if (cr->rg == unknown_rg) cr->rg = -1; } else { cr->rg = -1; } cr->name_len = 0; if (c->comp_hdr->read_names_included) { int32_t out_sz2 = 1; // Read directly into name cram_block cr->name = BLOCK_SIZE(s->name_blk); if (ds & CRAM_RN) { if (!c->comp_hdr->codecs[DS_RN]) return -1; r |= c->comp_hdr->codecs[DS_RN] ->decode(s, c->comp_hdr->codecs[DS_RN], blk, (char *)s->name_blk, &out_sz2); if (r) return r; cr->name_len = out_sz2; } } cr->mate_pos = 0; cr->mate_line = -1; cr->mate_ref_id = -1; if (ds & CRAM_CF && cf & CRAM_FLAG_DETACHED) { if (ds & CRAM_MF) { if (IS_CRAM_1_VERS(fd)) { /* MF is byte in 1.0, int32 in 2.0 */ unsigned char mf; if (!c->comp_hdr->codecs[DS_MF]) return -1; r |= c->comp_hdr->codecs[DS_MF] ->decode(s, c->comp_hdr->codecs[DS_MF], blk, (char *)&mf, &out_sz); if (r) return r; cr->mate_flags = mf; } else { if (!c->comp_hdr->codecs[DS_MF]) return -1; r |= c->comp_hdr->codecs[DS_MF] ->decode(s, c->comp_hdr->codecs[DS_MF], blk, (char *)&cr->mate_flags, &out_sz); if (r) return r; } } else { cr->mate_flags = 0; } if (!c->comp_hdr->read_names_included) { int32_t out_sz2 = 1; // Read directly into name cram_block cr->name = BLOCK_SIZE(s->name_blk); if (ds & CRAM_RN) { if (!c->comp_hdr->codecs[DS_RN]) return -1; r |= c->comp_hdr->codecs[DS_RN] ->decode(s, c->comp_hdr->codecs[DS_RN], blk, (char *)s->name_blk, &out_sz2); if (r) return r; cr->name_len = out_sz2; } } if (ds & CRAM_NS) { if (!c->comp_hdr->codecs[DS_NS]) return -1; r |= c->comp_hdr->codecs[DS_NS] ->decode(s, c->comp_hdr->codecs[DS_NS], blk, (char *)&cr->mate_ref_id, &out_sz); if (r) return r; } // Skip as mate_ref of "*" is legit. It doesn't mean unmapped, just unknown. // if (cr->mate_ref_id == -1 && cr->flags & 0x01) { // /* Paired, but unmapped */ // cr->flags |= BAM_FMUNMAP; // } if (ds & CRAM_NP) { if (!c->comp_hdr->codecs[DS_NP]) return -1; r |= c->comp_hdr->codecs[DS_NP] ->decode(s, c->comp_hdr->codecs[DS_NP], blk, (char *)&cr->mate_pos, &out_sz); if (r) return r; } if (ds & CRAM_TS) { if (!c->comp_hdr->codecs[DS_TS]) return -1; r |= c->comp_hdr->codecs[DS_TS] ->decode(s, c->comp_hdr->codecs[DS_TS], blk, (char *)&cr->tlen, &out_sz); if (r) return r; } else { cr->tlen = INT_MIN; } } else if (ds & CRAM_CF && cf & CRAM_FLAG_MATE_DOWNSTREAM) { if (ds & CRAM_NF) { if (!c->comp_hdr->codecs[DS_NF]) return -1; r |= c->comp_hdr->codecs[DS_NF] ->decode(s, c->comp_hdr->codecs[DS_NF], blk, (char *)&cr->mate_line, &out_sz); if (r) return r; cr->mate_line += rec + 1; //cr->name_len = sprintf(name, "%d", name_id++); //cr->name = DSTRING_LEN(name_ds); //dstring_nappend(name_ds, name, cr->name_len); cr->mate_ref_id = -1; cr->tlen = INT_MIN; cr->mate_pos = 0; } else { cr->mate_flags = 0; cr->tlen = INT_MIN; } } else { cr->mate_flags = 0; cr->tlen = INT_MIN; } /* else if (!name[0]) { //name[0] = '?'; name[1] = 0; //cr->name_len = 1; //cr->name= DSTRING_LEN(s->name_ds); //dstring_nappend(s->name_ds, "?", 1); cr->mate_ref_id = -1; cr->tlen = 0; cr->mate_pos = 0; } */ /* Auxiliary tags */ has_MD = has_NM = 0; if (IS_CRAM_1_VERS(fd)) r |= cram_decode_aux_1_0(c, s, blk, cr); else r |= cram_decode_aux(c, s, blk, cr, &has_MD, &has_NM); if (r) return r; /* Fake up dynamic string growth and appending */ if (ds & CRAM_RL) { cr->seq = BLOCK_SIZE(s->seqs_blk); BLOCK_GROW(s->seqs_blk, cr->len); seq = (char *)BLOCK_END(s->seqs_blk); BLOCK_SIZE(s->seqs_blk) += cr->len; if (!seq) return -1; cr->qual = BLOCK_SIZE(s->qual_blk); BLOCK_GROW(s->qual_blk, cr->len); qual = (char *)BLOCK_END(s->qual_blk); BLOCK_SIZE(s->qual_blk) += cr->len; if (!s->ref) memset(seq, '=', cr->len); } if (!(bf & BAM_FUNMAP)) { if ((ds & CRAM_AP) && cr->apos <= 0) { fprintf(stderr, "Read has alignment position %d but no unmapped flag\n", cr->apos); return -1; } /* Decode sequence and generate CIGAR */ if (ds & (CRAM_SEQ | CRAM_MQ)) { r |= cram_decode_seq(fd, c, s, blk, cr, bfd, cf, seq, qual, has_MD, has_NM); if (r) return r; } else { cr->cigar = 0; cr->ncigar = 0; cr->aend = cr->apos; cr->mqual = 0; } } else { int out_sz2 = cr->len; //puts("Unmapped"); cr->cigar = 0; cr->ncigar = 0; cr->aend = cr->apos; cr->mqual = 0; if (ds & CRAM_BA && cr->len) { if (!c->comp_hdr->codecs[DS_BA]) return -1; r |= c->comp_hdr->codecs[DS_BA] ->decode(s, c->comp_hdr->codecs[DS_BA], blk, (char *)seq, &out_sz2); if (r) return r; } if (ds & CRAM_CF && cf & CRAM_FLAG_PRESERVE_QUAL_SCORES) { out_sz2 = cr->len; if (ds & CRAM_QS && cr->len >= 0) { if (!c->comp_hdr->codecs[DS_QS]) return -1; r |= c->comp_hdr->codecs[DS_QS] ->decode(s, c->comp_hdr->codecs[DS_QS], blk, qual, &out_sz2); if (r) return r; } } else { if (ds & CRAM_RL) memset(qual, 255, cr->len); } } if (!fd->ignore_chksum) { if (s->hdr->BD_crc && ds & CRAM_BA && s->ref) s->BD_crc += crc32(0L, (Bytef *) seq, cr->len); if (s->hdr->SD_crc && (ds & CRAM_QS) && (cf & CRAM_FLAG_PRESERVE_QUAL_SCORES)) { s->SD_crc += crc32(0L, (Bytef *) qual, cr->len); } } } if (fd->ref_lock) pthread_mutex_lock(fd->ref_lock); if (refs) { int i; for (i = 0; i < fd->refs->nref; i++) { if (refs[i]) cram_ref_decr(fd->refs, i); } free(refs); } else if (ref_id >= 0 && s->ref != fd->ref_free && !embed_ref) { cram_ref_decr(fd->refs, ref_id); } if (fd->ref_lock) pthread_mutex_unlock(fd->ref_lock); /* Resolve mate pair cross-references between recs within this slice */ r |= cram_decode_slice_xref(s, fd->required_fields); /* Checksum */ if (CRAM_MAJOR_VERS(fd->version) >= 3) { if (ds & CRAM_BA && s->BD_crc && s->hdr->BD_crc) { if (s->BD_crc != s->hdr->BD_crc) { fprintf(stderr, "BD checksum failure: %08x vs %08x\n", (uint32_t)s->BD_crc, (uint32_t)s->hdr->BD_crc); r |= -1; } } if (ds & CRAM_QS && s->SD_crc && s->hdr->SD_crc) { if (s->SD_crc != s->hdr->SD_crc) { fprintf(stderr, "SD checksum failure: %08x vs %08x\n", (uint32_t)s->SD_crc, (uint32_t)s->hdr->SD_crc); r |= -1; } } } return r; } typedef struct { cram_fd *fd; cram_container *c; cram_slice *s; SAM_hdr *h; int exit_code; } cram_decode_job; void *cram_decode_slice_thread(void *arg) { cram_decode_job *j = (cram_decode_job *)arg; j->exit_code = cram_decode_slice(j->fd, j->c, j->s, j->h); return j; } /* * Spawn a multi-threaded version of cram_decode_slice(). */ int cram_decode_slice_mt(cram_fd *fd, cram_container *c, cram_slice *s, SAM_hdr *bfd) { cram_decode_job *j; int nonblock; if (!fd->pool) return cram_decode_slice(fd, c, s, bfd); if (!(j = malloc(sizeof(*j)))) return -1; j->fd = fd; j->c = c; j->s = s; j->h = bfd; nonblock = t_pool_results_queue_sz(fd->rqueue) ? 1 : 0; if (-1 == t_pool_dispatch2(fd->pool, fd->rqueue, cram_decode_slice_thread, j, nonblock)) { /* Would block */ fd->job_pending = j; } else { fd->job_pending = NULL; } // flush too return 0; } /* ---------------------------------------------------------------------- * CRAM sequence iterators. */ /* * Converts a cram in-memory record into a bam in-memory record. We * pass a pointer to a bam_seq_t pointer along with the a pointer to * the allocated size. These can initially be pointers to NULL and zero. * * This function will reallocate the bam buffer as required and update * (*bam)->alloc accordingly, allowing it to be used within a loop * efficiently without needing to allocate new bam objects over and * over again. * * Returns the used size of the bam record on success * -1 on failure. */ static int cram_to_bam(SAM_hdr *bfd, cram_fd *fd, cram_slice *s, cram_record *cr, int rec, bam_seq_t **bam) { int bam_idx, rg_len; char name_a[1024], *name; int name_len; char *aux, *aux_orig; char *seq, *qual; /* Assign names if not explicitly set */ if (fd->required_fields & SAM_QNAME) { if (cr->name_len) { name = (char *)BLOCK_DATA(s->name_blk) + cr->name; name_len = cr->name_len; } else { // FIXME: add prefix, container number, slice number, etc name = name_a; if (cr->mate_line >= 0 && cr->mate_line < rec) name_len = sprintf(name_a, "%s:%"PRId64":%d", fd->prefix, s->id, cr->mate_line); else name_len = sprintf(name_a, "%s:%"PRId64":%d", fd->prefix, s->id, rec); } } else { name = "?"; name_len = 1; } /* Generate BAM record */ if (cr->rg < -1 || cr->rg >= bfd->nrg) return -1; rg_len = (cr->rg != -1) ? bfd->rg[cr->rg].name_len + 4 : 0; if (fd->required_fields & (SAM_SEQ | SAM_QUAL)) { if (!BLOCK_DATA(s->seqs_blk)) return -1; seq = (char *)BLOCK_DATA(s->seqs_blk) + cr->seq; } else { seq = "*"; cr->len = 1; } if (fd->required_fields & SAM_QUAL) { if (!BLOCK_DATA(s->qual_blk)) return -1; qual = (char *)BLOCK_DATA(s->qual_blk) + cr->qual; } else { qual = NULL; } bam_idx = bam_construct_seq(bam, cr->aux_size + rg_len, name, name_len, cr->flags, cr->ref_id, cr->apos, cr->aend, cr->mqual, cr->ncigar, &s->cigar[cr->cigar], cr->mate_ref_id, cr->mate_pos, cr->tlen, cr->len, seq, qual); if (bam_idx == -1) return -1; aux = aux_orig = (char *)bam_aux(*bam); /* Auxiliary strings */ if (cr->aux_size != 0) { memcpy(aux, BLOCK_DATA(s->aux_blk) + cr->aux, cr->aux_size); aux += cr->aux_size; } /* RG:Z: */ if (cr->rg != -1) { int len = bfd->rg[cr->rg].name_len; *aux++ = 'R'; *aux++ = 'G'; *aux++ = 'Z'; memcpy(aux, bfd->rg[cr->rg].name, len); aux += len; *aux++ = 0; } #ifndef SAMTOOLS bam_set_blk_size(*bam, bam_blk_size(*bam) + (aux - aux_orig)); #endif *aux++ = 0; return bam_idx + (aux - aux_orig); } /* * Here be dragons! The multi-threading code in this is crufty beyond belief. */ static cram_slice *cram_next_slice(cram_fd *fd, cram_container **cp) { cram_container *c; cram_slice *s = NULL; if (!(c = fd->ctr)) { // Load first container. do { if (!(c = fd->ctr = cram_read_container(fd))) return NULL; } while (c->length == 0); /* * The first container may be a result of a sub-range query. * In which case it may still not be the optimal starting point * due to skipped containers/slices in the index. */ if (fd->range.refid != -2) { while (c->ref_seq_id != -2 && (c->ref_seq_id < fd->range.refid || c->ref_seq_start + c->ref_seq_span-1 < fd->range.start)) { if (0 != cram_seek(fd, c->length, SEEK_CUR)) return NULL; cram_free_container(fd->ctr); do { if (!(c = fd->ctr = cram_read_container(fd))) return NULL; } while (c->length == 0); } if (c->ref_seq_id != -2 && c->ref_seq_id != fd->range.refid) return NULL; } if (!(c->comp_hdr_block = cram_read_block(fd))) return NULL; if (c->comp_hdr_block->content_type != COMPRESSION_HEADER) return NULL; c->comp_hdr = cram_decode_compression_header(fd, c->comp_hdr_block); if (!c->comp_hdr) return NULL; if (!c->comp_hdr->AP_delta && sam_hdr_sort_order(fd->header) != ORDER_COORD) { if (fd->ref_lock) pthread_mutex_lock(fd->ref_lock); fd->unsorted = 1; if (fd->ref_lock) pthread_mutex_unlock(fd->ref_lock); } } if ((s = c->slice)) { c->slice = NULL; cram_free_slice(s); s = NULL; } if (c->curr_slice == c->max_slice) { cram_free_container(c); c = NULL; } /* Sorry this is so contorted! */ for (;;) { if (fd->job_pending) { cram_decode_job *j = (cram_decode_job *)fd->job_pending; c = j->c; s = j->s; free(fd->job_pending); fd->job_pending = NULL; } else if (!fd->ooc) { empty_container: if (!c || c->curr_slice == c->max_slice) { // new container do { if (!(c = fd->ctr = cram_read_container(fd))) { if (fd->pool) { fd->ooc = 1; break; } return NULL; } } while (c->length == 0); if (fd->ooc) break; /* Skip containers not yet spanning our range */ if (fd->range.refid != -2 && c->ref_seq_id != -2) { fd->required_fields |= SAM_POS; if (c->ref_seq_id != fd->range.refid) { fd->eof = 1; cram_free_container(c); fd->ctr = NULL; fd->ooc = 1; break; } if (c->ref_seq_start > fd->range.end) { fd->eof = 1; cram_free_container(c); fd->ctr = NULL; fd->ooc = 1; break; } if (c->ref_seq_start + c->ref_seq_span-1 < fd->range.start) { c->curr_rec = c->max_rec; c->curr_slice = c->max_slice; cram_seek(fd, c->length, SEEK_CUR); cram_free_container(c); c = NULL; continue; } } if (!(c->comp_hdr_block = cram_read_block(fd))) return NULL; if (c->comp_hdr_block->content_type != COMPRESSION_HEADER) return NULL; c->comp_hdr = cram_decode_compression_header(fd, c->comp_hdr_block); if (!c->comp_hdr) return NULL; if (!c->comp_hdr->AP_delta && sam_hdr_sort_order(fd->header) != ORDER_COORD) { if (fd->ref_lock) pthread_mutex_lock(fd->ref_lock); fd->unsorted = 1; if (fd->ref_lock) pthread_mutex_unlock(fd->ref_lock); } } if (c->num_records == 0) { cram_free_container(c); c = NULL; goto empty_container; } if (!(s = c->slice = cram_read_slice(fd))) return NULL; c->curr_slice++; c->curr_rec = 0; c->max_rec = s->hdr->num_records; s->last_apos = s->hdr->ref_seq_start; /* Skip slices not yet spanning our range */ if (fd->range.refid != -2 && s->hdr->ref_seq_id != -2) { if (s->hdr->ref_seq_id != fd->range.refid) { fd->eof = 1; cram_free_slice(s); c->slice = NULL; return NULL; } if (s->hdr->ref_seq_start > fd->range.end) { fd->eof = 1; cram_free_slice(s); c->slice = NULL; return NULL; } if (s->hdr->ref_seq_start + s->hdr->ref_seq_span-1 < fd->range.start) { cram_free_slice(s); c->slice = NULL; cram_free_container(c); c = NULL; continue; } } } /* Test decoding of 1st seq */ if (!c || !s) break; if (cram_decode_slice_mt(fd, c, s, fd->header) != 0) { // if (cram_decode_slice(fd, c, s, fd->header) != 0) { fprintf(stderr, "Failure to decode slice\n"); cram_free_slice(s); c->slice = NULL; fd->eof = -1; return NULL; } if (!fd->pool || fd->job_pending) break; // Push it a bit far, to qsize in queue rather than pending arrival, // as cram tends to be a bit bursty in decode timings. if (t_pool_results_queue_len(fd->rqueue) > fd->pool->qsize) break; } if (fd->pool) { t_pool_result *res; cram_decode_job *j; // fprintf(stderr, "Thread pool len = %d, %d\n", // t_pool_results_queue_len(fd->rqueue), // t_pool_results_queue_sz(fd->rqueue)); if (fd->ooc && t_pool_results_queue_empty(fd->rqueue)) return NULL; res = t_pool_next_result_wait(fd->rqueue); if (!res || !res->data) { fprintf(stderr, "t_pool_next_result failure\n"); fd->eof = -1; return NULL; } j = (cram_decode_job *)res->data; c = j->c; s = j->s; if (j->exit_code != 0) { fprintf(stderr, "Slice decode failure\n"); fd->eof = -1; t_pool_delete_result(res, 1); return NULL; } fd->ctr = c; t_pool_delete_result(res, 1); } *cp = c; return s; } /* * Read the next cram record and return it. * Note that to decode cram_record the caller will need to look up some data * in the current slice, pointed to by fd->ctr->slice. This is valid until * the next call to cram_get_seq (which may invalidate it). * * Returns record pointer on success (do not free) * NULL on failure */ cram_record *cram_get_seq(cram_fd *fd) { cram_container *c; cram_slice *s; for (;;) { c = fd->ctr; if (c && c->slice && c->curr_rec < c->max_rec) { s = c->slice; } else { if (!(s = cram_next_slice(fd, &c))) return NULL; continue; /* In case slice contains no records */ } if (fd->range.refid != -2) { if (s->crecs[c->curr_rec].ref_id < fd->range.refid) { c->curr_rec++; continue; } if (s->crecs[c->curr_rec].ref_id != fd->range.refid) { fd->eof = 1; cram_free_slice(s); c->slice = NULL; return NULL; } if (s->crecs[c->curr_rec].apos > fd->range.end) { fd->eof = 1; cram_free_slice(s); c->slice = NULL; return NULL; } if (s->crecs[c->curr_rec].aend < fd->range.start) { c->curr_rec++; continue; } } break; } fd->ctr = c; c->slice = s; return &s->crecs[c->curr_rec++]; } /* * Read the next cram record and convert it to a bam_seq_t struct. * * Returns 0 on success * -1 on EOF or failure (check fd->err) */ int cram_get_bam_seq(cram_fd *fd, bam_seq_t **bam) { cram_record *cr; cram_container *c; cram_slice *s; if (!(cr = cram_get_seq(fd))) return -1; c = fd->ctr; s = c->slice; return cram_to_bam(fd->header, fd, s, cr, c->curr_rec-1, bam); } io_lib-1.14.6/io_lib/cram_stats.c0000644000031500020650000003072512514204216013522 00000000000000/* * Copyright (c) 2013 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * Author: James Bonfield, Wellcome Trust Sanger Institute. 2013 */ #ifdef HAVE_CONFIG_H #include "io_lib_config.h" #endif #include #include #include #include #include #include #include #include #include #include #include "io_lib/cram.h" #include "io_lib/os.h" cram_stats *cram_stats_create(void) { return calloc(1, sizeof(cram_stats)); } void cram_stats_add(cram_stats *st, int32_t val) { st->nsamp++; if (val < MAX_STAT_VAL && val >= 0) { st->freqs[val]++; } else { HashItem *hi; if (!st->h) { st->h = HashTableCreate(2048, HASH_DYNAMIC_SIZE|HASH_NONVOLATILE_KEYS|HASH_INT_KEYS); } if ((hi = HashTableSearch(st->h, (char *)(size_t)val, 4))) { hi->data.i++; } else { HashData hd; hd.i = 1; HashTableAdd(st->h, (char *)(size_t)val, 4, hd, NULL); } } } void cram_stats_del(cram_stats *st, int32_t val) { st->nsamp--; if (val < MAX_STAT_VAL && val >= 0) { st->freqs[val]--; assert(st->freqs[val] >= 0); } else if (st->h) { HashItem *hi; if ((hi = HashTableSearch(st->h, (char *)(size_t)val, 4))) { if (--hi->data.i == 0) HashTableDel(st->h, hi, 0); } else { fprintf(stderr, "Failed to remove val %d from cram_stats\n", val); st->nsamp++; } } else { fprintf(stderr, "Failed to remove val %d from cram_stats\n", val); st->nsamp++; } } void cram_stats_dump(cram_stats *st) { int i; fprintf(stderr, "cram_stats:\n"); for (i = 0; i < MAX_STAT_VAL; i++) { if (!st->freqs[i]) continue; fprintf(stderr, "\t%d\t%d\n", i, st->freqs[i]); } if (st->h) { HashIter *iter= HashTableIterCreate(); HashItem *hi; while ((hi = HashTableIterNext(st->h, iter))) { fprintf(stderr, "\t%d\t%d\n", (int)(size_t)hi->key, (int)hi->data.i); } HashTableIterDestroy(iter); } } #if 1 /* Returns the number of bits set in val; it the highest bit used */ static int nbits(int v) { static const int MultiplyDeBruijnBitPosition[32] = { 1, 10, 2, 11, 14, 22, 3, 30, 12, 15, 17, 19, 23, 26, 4, 31, 9, 13, 21, 29, 16, 18, 25, 8, 20, 28, 24, 7, 27, 6, 5, 32 }; v |= v >> 1; // first up to set all bits 1 after the first 1 */ v |= v >> 2; v |= v >> 4; v |= v >> 8; v |= v >> 16; // DeBruijn magic to find top bit return MultiplyDeBruijnBitPosition[(uint32_t)(v * 0x07C4ACDDU) >> 27]; } #endif /* * Computes entropy from integer frequencies for various encoding methods and * picks the best encoding. * * FIXME: we could reuse some of the code here for the actual encoding * parameters too. Eg the best 'k' for SUBEXP or the code lengths for huffman. * * Returns the best codec to use. */ enum cram_encoding cram_stats_encoding(cram_fd *fd, cram_stats *st) { enum cram_encoding best_encoding = E_NULL; int best_size = INT_MAX, bits; int nvals, i, ntot = 0, max_val = 0, min_val = INT_MAX, k; int *vals = NULL, *freqs = NULL, vals_alloc = 0, *codes; //cram_stats_dump(st); /* Count number of unique symbols */ for (nvals = i = 0; i < MAX_STAT_VAL; i++) { if (!st->freqs[i]) continue; if (nvals >= vals_alloc) { vals_alloc = vals_alloc ? vals_alloc*2 : 1024; vals = realloc(vals, vals_alloc * sizeof(int)); freqs = realloc(freqs, vals_alloc * sizeof(int)); if (!vals || !freqs) { if (vals) free(vals); if (freqs) free(freqs); return E_HUFFMAN; // Cannot do much else atm } } vals[nvals] = i; freqs[nvals] = st->freqs[i]; ntot += freqs[nvals]; if (max_val < i) max_val = i; if (min_val > i) min_val = i; nvals++; } if (st->h) { HashIter *iter= HashTableIterCreate(); HashItem *hi; int i; while ((hi = HashTableIterNext(st->h, iter))) { if (nvals >= vals_alloc) { vals_alloc = vals_alloc ? vals_alloc*2 : 1024; vals = realloc(vals, vals_alloc * sizeof(int)); freqs = realloc(freqs, vals_alloc * sizeof(int)); if (!vals || !freqs) return E_HUFFMAN; // Cannot do much else atm } i = (size_t)hi->key; vals[nvals]=i; freqs[nvals] = hi->data.i; ntot += freqs[nvals]; if (max_val < i) max_val = i; if (min_val > i) min_val = i; nvals++; } HashTableIterDestroy(iter); } st->nvals = nvals; assert(ntot == st->nsamp); #ifdef RANDOMISER // RANDOMISER switch(random()%10) { case 0: return E_HUFFMAN; case 1: return E_HUFFMAN; //case 1: return E_BETA; // Java doesn't support E_BETA for BYTE vals default: return E_EXTERNAL; } #endif if (nvals <= 1) { free(vals); free(freqs); if (fd->verbose > 1) fprintf(stderr, "0 values => 0 bits\n"); return E_HUFFMAN; } if (fd->verbose > 1) fprintf(stderr, "Range = %d..%d, nvals=%d, ntot=%d\n", min_val, max_val, nvals, ntot); /* Theoretical entropy */ if (fd->verbose > 1) { double dbits = 0; for (i = 0; i < nvals; i++) { dbits += freqs[i] * log((double)freqs[i]/ntot); } dbits /= -log(2); if (fd->verbose > 1) fprintf(stderr, "Entropy = %f\n", dbits); } if (nvals > 1 && ntot > 256) { #if 0 /* * CRUDE huffman estimator. Round to closest and round up from 0 * to 1 bit. * * With and without ITF8 incase we have a few discrete values but with * large magnitude. * * Note rans0/arith0 and Z_HUFFMAN_ONLY vs internal huffman can be * compared in this way, but order-1 (eg rans1) or maybe LZ77 modes * may detect the correlation of high bytes to low bytes in multi- * byte values. So this predictor breaks down. */ double dbits = 0; // entropy + ~huffman double dbitsH = 0; double dbitsE = 0; // external entropy + ~huffman double dbitsEH = 0; int F[256] = {0}, n = 0; double e = 0; // accumulated error bits for (i = 0; i < nvals; i++) { double x; int X; unsigned int v = vals[i]; //Better encoding would cope with sign. //v = ABS(vals[i])*2+(vals[i]<0); if (!(v & ~0x7f)) { F[v] += freqs[i], n+=freqs[i]; } else if (!(v & ~0x3fff)) { F[(v>>8) |0x80] += freqs[i]; F[ v &0xff] += freqs[i], n+=2*freqs[i]; } else if (!(v & ~0x1fffff)) { F[(v>>16)|0xc0] += freqs[i]; F[(v>>8 )&0xff] += freqs[i]; F[ v &0xff] += freqs[i], n+=3*freqs[i]; } else if (!(v & ~0x0fffffff)) { F[(v>>24)|0xe0] += freqs[i]; F[(v>>16)&0xff] += freqs[i]; F[(v>>8 )&0xff] += freqs[i]; F[ v &0xff] += freqs[i], n+=4*freqs[i]; } else { F[(v>>28)|0xf0] += freqs[i]; F[(v>>20)&0xff] += freqs[i]; F[(v>>12)&0xff] += freqs[i]; F[(v>>4 )&0xff] += freqs[i]; F[ v &0x0f] += freqs[i], n+=5*freqs[i]; } x = -log((double)freqs[i]/ntot)/.69314718055994530941; X = x+0.5; if ((int)(x+((double)e/freqs[i])+.5)>X) { X++; } else if ((int)(x+((double)e/freqs[i])+.5) 1.1) { //fprintf(stderr, "=> %d < 200 ? E_HUFFMAN : E_BETA\n", nvals); free(vals); free(freqs); return nvals < 200 ? E_HUFFMAN : E_BETA; } #endif free(vals); free(freqs); return E_EXTERNAL; } /* * Avoid complex stats for now, just do heuristic of HUFFMAN for small * alphabets and BETA for anything large. */ free(vals); free(freqs); return nvals < 200 ? E_HUFFMAN : E_BETA; //return E_HUFFMAN; //return E_EXTERNAL; /* We only support huffman now anyway... */ //free(vals); free(freqs); return E_HUFFMAN; /* Beta */ bits = nbits(max_val - min_val) * ntot; if (fd->verbose > 1) fprintf(stderr, "BETA = %d\n", bits); if (best_size > bits) best_size = bits, best_encoding = E_BETA; #if 0 /* Unary */ if (min_val >= 0) { for (bits = i = 0; i < nvals; i++) bits += freqs[i]*(vals[i]+1); if (fd->verbose > 1) fprintf(stderr, "UNARY = %d\n", bits); if (best_size > bits) best_size = bits, best_encoding = E_NULL; //E_UNARY; } /* Gamma */ for (bits = i = 0; i < nvals; i++) bits += ((nbits(vals[i]-min_val+1)-1) + nbits(vals[i]-min_val+1)) * freqs[i]; if (fd->verbose > 1) fprintf(stderr, "GAMMA = %d\n", bits); if (best_size > bits) best_size = bits, best_encoding = E_GAMMA; /* Subexponential */ for (k = 0; k < 10; k++) { for (bits = i = 0; i < nvals; i++) { if (vals[i]-min_val < (1<verbose > 1) fprintf(stderr, "SUBEXP%d = %d\n", k, bits); if (best_size > bits) best_size = bits, best_encoding = E_SUBEXP; } #endif /* byte array len */ /* byte array stop */ /* External? Guesswork! */ /* Huffman */ // qsort(freqs, nvals, sizeof(freqs[0]), sort_freqs); // for (i = 0; i < nvals; i++) { // fprintf(stderr, "%d = %d\n", i, freqs[i]); // vals[i] = 0; // } /* Grow freqs to 2*freqs, to store sums */ /* Vals holds link data */ freqs = realloc(freqs, 2*nvals*sizeof(*freqs)); codes = calloc(2*nvals, sizeof(*codes)); if (!freqs || !codes) return E_HUFFMAN; // Cannot do much else atm /* Inefficient, use pointers to form chain so we can insert and maintain * a sorted list? This is currently O(nvals^2) complexity. */ for (;;) { int low1 = INT_MAX, low2 = INT_MAX; int ind1 = 0, ind2 = 0; for (i = 0; i < nvals; i++) { if (freqs[i] < 0) continue; if (low1 > freqs[i]) low2 = low1, ind2 = ind1, low1 = freqs[i], ind1 = i; else if (low2 > freqs[i]) low2 = freqs[i], ind2 = i; } if (low2 == INT_MAX) break; //fprintf(stderr, "Merge ind %d (%d), %d (%d) = %d+%d, => %d=%d\n", // ind1, vals[ind1], ind2, vals[ind2], low1, low2, // nvals, low1+low2); freqs[nvals] = low1 + low2; codes[ind1] = nvals; codes[ind2] = nvals; freqs[ind1] *= -1; freqs[ind2] *= -1; nvals++; } nvals = nvals/2+1; for (i = 0; i < nvals; i++) { int code_len = 0; for (k = codes[i]; k; k = codes[k]) code_len++; codes[i] = code_len; freqs[i] *= -1; //fprintf(stderr, "%d / %d => %d\n", vals[i], freqs[i], codes[i]); } for (bits = i = 0; i < nvals; i++) { bits += freqs[i] * codes[i]; } if (fd->verbose > 1) fprintf(stderr, "HUFFMAN = %d\n", bits); if (best_size >= bits) best_size = bits, best_encoding = E_HUFFMAN; free(codes); free(vals); free(freqs); return best_encoding; } void cram_stats_free(cram_stats *st) { if (st->h) HashTableDestroy(st->h, 0); free(st); } io_lib-1.14.6/io_lib/cram_io.c0000644000031500020650000040761312616100551012777 00000000000000/* * Copyright (c) 2013 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * Author: James Bonfield, Wellcome Trust Sanger Institute. 2013 * * CRAM I/O primitives. * * - ITF8 encoding and decoding. * - Block based I/O * - Zlib inflating and deflating (memory) * - CRAM basic data structure reading and writing * - File opening / closing * - Reference sequence handling */ /* * TODO: BLOCK_GROW, BLOCK_RESIZE, BLOCK_APPEND and itf8_put_blk all need * a way to return errors for when malloc fails. */ #ifdef HAVE_CONFIG_H #include "io_lib_config.h" #endif #include #include #include #include #include #include #ifdef HAVE_LIBBZ2 #include #endif #ifdef HAVE_LIBLZMA #include #endif #include #include #include #include #include "io_lib/cram.h" #include "io_lib/os.h" #include "io_lib/md5.h" #include "io_lib/open_trace_file.h" #include "io_lib/rANS_static.h" #if defined(HAVE_STDIO_EXT_H) #include #endif //#include "crc32c.c" //#define REF_DEBUG #ifdef REF_DEBUG #define RP(...) fprintf (stderr, __VA_ARGS__) #include #define gettid() (int)syscall(SYS_gettid) #else #define RP(...) #define gettid() 0 #endif #define TRIAL_SPAN 50 #define NTRIALS 3 /* ---------------------------------------------------------------------- * custom buffering helper routines */ #if defined(CRAM_IO_CUSTOM_BUFFERING) static size_t cram_io_C_FILE_fread(void *ptr, size_t size, size_t nmemb, void *stream) { return fread(ptr,size,nmemb,(FILE *)stream); } static size_t cram_io_C_FILE_fwrite(void *ptr, size_t size, size_t nmemb, void *stream) { return fwrite(ptr,size,nmemb,(FILE *)stream); } static int cram_io_C_FILE_fseek(void * fd, off_t offset, int whence) { return fseeko((FILE *)fd,offset,whence); } static off_t cram_io_C_FILE_ftell(void * fd) { return ftello((FILE *)fd); } /* ---------------------------------------------------------------------- * Input buffering */ /* fill empty buffer */ static void cram_io_fill_input_buffer(cram_fd * fd) { /* buffer need to be empty */ assert ( fd->fp_in_buffer->fp_in_buf_pc == fd->fp_in_buffer->fp_in_buf_pe ); /* read up to buffer size bytes */ do { /* C-IO fread */ size_t const r = (fd->fp_in_callbacks->fread_callback)(fd->fp_in_buffer->fp_in_buf_pa, 1, fd->fp_in_buffer->fp_in_buf_size, fd->fp_in_callbacks->user_data); /* move offset */ fd->fp_in_buffer->fp_in_buf_start += (fd->fp_in_buffer->fp_in_buf_pe - fd->fp_in_buffer->fp_in_buf_pa); /* set end of window */ fd->fp_in_buffer->fp_in_buf_pe = fd->fp_in_buffer->fp_in_buf_pa + r; /* set current input */ fd->fp_in_buffer->fp_in_buf_pc = fd->fp_in_buffer->fp_in_buf_pa; } while ( 0 ) ; } /* fill buffer and return next byte or EOF */ int cram_io_input_buffer_underflow(cram_fd * fd) { cram_io_fill_input_buffer(fd); if ( fd->fp_in_buffer->fp_in_buf_pc == fd->fp_in_buffer->fp_in_buf_pe ) return EOF; else return (int)((unsigned char )(*(fd->fp_in_buffer->fp_in_buf_pc++))); } /* integer minimum */ static inline size_t imin(size_t const a, size_t const b) { return (afp_in_buffer->fp_in_buf_pe - fd->fp_in_buffer->fp_in_buf_pc; /* number of bytes in buffer */ size_t tocopy = imin(toread,inbuf); /* number of bytes to be copied from buffer */ size_t blockread = 0; /* copy bytes still in buffer and update values */ memcpy(ptr,fd->fp_in_buffer->fp_in_buf_pc,tocopy); toread -= tocopy; r += tocopy; ptr += tocopy; fd->fp_in_buffer->fp_in_buf_pc += tocopy; /* read whole blocks without copying to buffer first, C-IO fread */ while ( (toread >= fd->fp_in_buffer->fp_in_buf_size) && ((blockread = ((fd->fp_in_callbacks-> fread_callback))(ptr, 1, fd->fp_in_buffer->fp_in_buf_size, fd->fp_in_callbacks->user_data))!=0) ) { toread -= blockread; r += blockread; ptr += blockread; fd->fp_in_buffer->fp_in_buf_start += blockread; } /* read rest of bytes using buffer */ while ( toread ) { /* buffer should be empty */ assert ( fd->fp_in_buffer->fp_in_buf_pc == fd->fp_in_buffer->fp_in_buf_pe ); /* fill buffer */ cram_io_fill_input_buffer(fd); /* number of bytes in buffer after filling */ inbuf = fd->fp_in_buffer->fp_in_buf_pe-fd->fp_in_buffer->fp_in_buf_pc; /* number of bytes to copy */ tocopy = imin(toread,inbuf); /* break if there is no more data */ if ( ! inbuf ) break; memcpy(ptr,fd->fp_in_buffer->fp_in_buf_pc,tocopy); toread -= tocopy; r += tocopy; ptr += tocopy; fd->fp_in_buffer->fp_in_buf_pc += tocopy; } return size ? (r / size) : r; } int cram_io_input_buffer_seek(cram_fd * fd, off_t offset, int whence) { int r = -1; if ( whence == SEEK_CUR ) { /* current absolute input position in buffer */ uint64_t const curpos = fd->fp_in_buffer->fp_in_buf_start + (fd->fp_in_buffer->fp_in_buf_pc - fd->fp_in_buffer->fp_in_buf_pa); /* absolute buffer low */ uint64_t const bufferlow = fd->fp_in_buffer->fp_in_buf_start; /* absolute buffer high */ uint64_t const bufferhigh = fd->fp_in_buffer->fp_in_buf_start + (fd->fp_in_buffer->fp_in_buf_pe - fd->fp_in_buffer->fp_in_buf_pa); /* absolute seek target position */ int64_t const abstarget = ((int64_t)curpos) + offset; /* if target is inside buffer, then just adjust the current pointer */ if ( abstarget >= bufferlow && abstarget <= bufferhigh ) { /* update current pointer */ fd->fp_in_buffer->fp_in_buf_pc += offset; assert ( fd->fp_in_buffer->fp_in_buf_pc >= fd->fp_in_buffer->fp_in_buf_pa ); assert ( fd->fp_in_buffer->fp_in_buf_pc <= fd->fp_in_buffer->fp_in_buf_pe ); /* seek successful */ return 0; } else { /* current position of underlying input stream */ int64_t const filepos = fd->fp_in_buffer->fp_in_buf_start + (fd->fp_in_buffer->fp_in_buf_pe - fd->fp_in_buffer->fp_in_buf_pa); int64_t const seekoffset = abstarget - filepos; /* perform seek */ r = fd->fp_in_callbacks->fseek_callback(fd->fp_in_callbacks->user_data, seekoffset, SEEK_CUR); /* seek successful */ if ( ! r ) { /* mark buffer as empty */ fd->fp_in_buffer->fp_in_buf_pc = fd->fp_in_buffer->fp_in_buf_pa; fd->fp_in_buffer->fp_in_buf_pe = fd->fp_in_buffer->fp_in_buf_pa; /* set new buffer start offset */ fd->fp_in_buffer->fp_in_buf_start = abstarget; return 0; } else { return -1; } } } /* mark buffer as empty */ fd->fp_in_buffer->fp_in_buf_pc = fd->fp_in_buffer->fp_in_buf_pa; fd->fp_in_buffer->fp_in_buf_pe = fd->fp_in_buffer->fp_in_buf_pa; /* perform seek, C-IO fseek */ r = fd->fp_in_callbacks->fseek_callback(fd->fp_in_callbacks->user_data, offset, whence); /* get new offset if seek was successful */ if ( !r ) /* C-IO ftell */ fd->fp_in_buffer->fp_in_buf_start = fd->fp_in_callbacks->ftell_callback(fd->fp_in_callbacks->user_data); return r; } static cram_io_input_t * cram_IO_deallocate_cram_io_input(cram_io_input_t * obj) { if ( obj ) { free(obj); obj = NULL; } return obj; } static cram_io_input_t * cram_IO_allocate_cram_io_input() { cram_io_input_t * obj = (cram_io_input_t *)malloc(sizeof(cram_io_input_t)); if ( ! obj ) { return cram_IO_deallocate_cram_io_input(obj); } obj->user_data = NULL; obj->fread_callback = NULL; obj->fseek_callback = NULL; obj->ftell_callback = NULL; return obj; } static cram_io_input_t * cram_IO_allocate_cram_io_input_from_C_FILE(FILE * file) { cram_io_input_t * obj = cram_IO_allocate_cram_io_input(); if ( ! obj ) { return cram_IO_deallocate_cram_io_input(obj); } obj->user_data = file; obj->fread_callback = cram_io_C_FILE_fread; obj->fseek_callback = cram_io_C_FILE_fseek; obj->ftell_callback = cram_io_C_FILE_ftell; return obj; } static cram_fd_input_buffer * cram_io_deallocate_input_buffer(cram_fd_input_buffer * buffer) { if ( buffer ) { if ( buffer->fp_in_buffer ) { free(buffer->fp_in_buffer); buffer->fp_in_buffer = NULL; } free(buffer); buffer = NULL; } return buffer; } static cram_fd_input_buffer * cram_io_allocate_input_buffer(size_t const bufsize) { cram_fd_input_buffer * buffer = (cram_fd_input_buffer *)malloc(sizeof(cram_fd_input_buffer)); if ( ! buffer ) return cram_io_deallocate_input_buffer(buffer); memset(buffer,0,sizeof(cram_fd_input_buffer)); buffer->fp_in_buf_size = bufsize; buffer->fp_in_buffer = (char *)malloc(buffer->fp_in_buf_size); if ( ! buffer->fp_in_buffer ) { return cram_io_deallocate_input_buffer(buffer); } buffer->fp_in_buf_pa = buffer->fp_in_buffer; buffer->fp_in_buf_pc = buffer->fp_in_buffer; buffer->fp_in_buf_pe = buffer->fp_in_buffer; return buffer; } char * cram_io_input_buffer_fgets(char * s, int size, cram_fd * fd) { int linelen = 0; while ( linelen < size-1 ) { int const c = CRAM_IO_GETC(fd); if ( c == EOF ) { break; } else { s[linelen++] = c; } if ( c == '\n' ) break; } if ( ! linelen ) return NULL; s[linelen++] = 0; return s; } /* ---------------------------------------------------------------------- * Output buffering */ /* * Flush buffer. * * Returns 0 on success, * -1 on failure. */ int cram_io_flush_output_buffer(cram_fd *fd) { size_t r; char *dat; size_t olen; size_t len; if (!fd->fp_out_buffer) return 0; dat = fd->fp_out_buffer->fp_out_buf_pa; olen = fd->fp_out_buffer->fp_out_buf_pc - dat; len = olen; /* write up to buffer size bytes */ /* C-IO fwrite */ if (len) { r = fd->fp_out_callbacks->fwrite_callback (dat, 1, len, fd->fp_out_callbacks->user_data); dat += r; len -= r; fd->fp_out_buffer->fp_out_buf_start += r; /* move offset */ if (r < olen) { /* Write failed, possible partial */ if (r > 0) { memmove(fd->fp_out_buffer->fp_out_buf_pa, dat, len); fd->fp_out_buffer->fp_out_buf_pc = fd->fp_out_buffer->fp_out_buf_pa + len; } /* Output is probably unfixable now so return error */ return -1; } } /* reset current output */ fd->fp_out_buffer->fp_out_buf_pc = fd->fp_out_buffer->fp_out_buf_pa; return 0; } /* fwrite simulation */ size_t cram_io_output_buffer_write(void *ptr, size_t size, size_t nmemb, cram_fd *fd) { size_t towrite = size * nmemb; /* number of bytes still to be written */ size_t r = 0; /* number of bytes copied to ptr */ /* number of bytes in buffer */ size_t outbuf = fd->fp_out_buffer->fp_out_buf_pe - fd->fp_out_buffer->fp_out_buf_pc; /* number of bytes to be copied from buffer */ size_t tocopy = imin(towrite, outbuf); size_t blockwrite = 0; /* place as many bytes in out_buffer as will fit */ memcpy(fd->fp_out_buffer->fp_out_buf_pc, ptr, tocopy); towrite -= tocopy; r += tocopy; ptr += tocopy; fd->fp_out_buffer->fp_out_buf_pc += tocopy; if (towrite) /* Still some left over */ if (cram_io_flush_output_buffer(fd) < 0) goto partial_write; /* Write any remaining whole blocks without buffer copy, C-IO fwrite */ while (towrite >= fd->fp_out_buffer->fp_out_buf_size) { blockwrite = fd->fp_out_callbacks->fwrite_callback (ptr, 1, fd->fp_out_buffer->fp_out_buf_size, fd->fp_out_callbacks->user_data); towrite -= blockwrite; ptr += blockwrite; r += blockwrite; fd->fp_out_buffer->fp_out_buf_start += blockwrite; if (blockwrite < fd->fp_out_buffer->fp_out_buf_size) goto partial_write; } /* Push any remaining bytes into the output buffer */ if (towrite) { /* buffer should be empty */ assert(fd->fp_out_buffer->fp_out_buf_pc == fd->fp_out_buffer->fp_out_buf_pa); /* buffer should be large enough */ assert(towrite <= fd->fp_out_buffer->fp_out_buf_size); memcpy(fd->fp_out_buffer->fp_out_buf_pc, ptr, towrite); r += towrite; fd->fp_out_buffer->fp_out_buf_pc += towrite; } partial_write: return size ? (r / size) : r; } static cram_io_output_t * cram_IO_deallocate_cram_io_output(cram_io_output_t * obj) { if ( obj ) { free(obj); obj = NULL; } return obj; } static cram_io_output_t * cram_IO_allocate_cram_io_output() { cram_io_output_t *obj = (cram_io_output_t *)malloc(sizeof(cram_io_output_t)); if ( ! obj ) { return cram_IO_deallocate_cram_io_output(obj); } obj->user_data = NULL; obj->fwrite_callback = NULL; obj->ftell_callback = NULL; return obj; } static cram_io_output_t * cram_IO_allocate_cram_io_output_from_C_FILE(FILE * file) { cram_io_output_t *obj = cram_IO_allocate_cram_io_output(); if ( ! obj ) { return cram_IO_deallocate_cram_io_output(obj); } obj->user_data = file; obj->fwrite_callback = cram_io_C_FILE_fwrite; obj->ftell_callback = cram_io_C_FILE_ftell; return obj; } cram_fd_output_buffer * cram_io_deallocate_output_buffer(cram_fd_output_buffer * buffer) { if ( buffer ) { if ( buffer->fp_out_buffer ) { free(buffer->fp_out_buffer); buffer->fp_out_buffer = NULL; } free(buffer); buffer = NULL; } return buffer; } cram_fd_output_buffer * cram_io_allocate_output_buffer(size_t const bufsize) { cram_fd_output_buffer * buffer = (cram_fd_output_buffer *)malloc(sizeof(cram_fd_output_buffer)); if ( ! buffer ) return cram_io_deallocate_output_buffer(buffer); // FIXME: is memset really needed here? I suspect pa/pc is sufficient. memset(buffer,0,sizeof(cram_fd_output_buffer)); buffer->fp_out_buf_size = bufsize; buffer->fp_out_buffer = (char *)malloc(buffer->fp_out_buf_size); if ( ! buffer->fp_out_buffer ) { return cram_io_deallocate_output_buffer(buffer); } buffer->fp_out_buf_pa = buffer->fp_out_buffer; buffer->fp_out_buf_pc = buffer->fp_out_buffer; buffer->fp_out_buf_pe = buffer->fp_out_buffer + bufsize; return buffer; } // FIXME: Currently inefficient int cram_io_output_buffer_putc(int c, cram_fd * fd) { char cc = c; if (cram_io_output_buffer_write(&cc, 1, 1, fd) == 1) return c; else return EOF; } #endif /* ---------------------------------------------------------------------- * ITF8 encoding and decoding. * * Also see the itf8_get and itf8_put macros in cram_io.h */ /* * LEGACY: consider using itf8_decode_crc. * * Reads an integer in ITF-8 encoding from 'cp' and stores it in * *val. * * Returns the number of bytes read on success * -1 on failure */ int itf8_decode(cram_fd *fd, int32_t *val_p) { static int nbytes[16] = { 0,0,0,0, 0,0,0,0, // 0000xxxx - 0111xxxx 1,1,1,1, // 1000xxxx - 1011xxxx 2,2, // 1100xxxx - 1101xxxx 3, // 1110xxxx 4, // 1111xxxx }; static int nbits[16] = { 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, // 0000xxxx - 0111xxxx 0x3f, 0x3f, 0x3f, 0x3f, // 1000xxxx - 1011xxxx 0x1f, 0x1f, // 1100xxxx - 1101xxxx 0x0f, // 1110xxxx 0x0f, // 1111xxxx }; int32_t val = CRAM_IO_GETC(fd); if (val == -1) return -1; int i = nbytes[val>>4]; val &= nbits[val>>4]; switch(i) { case 0: *val_p = val; return 1; case 1: val = (val<<8) | (unsigned char)CRAM_IO_GETC(fd); *val_p = val; return 2; case 2: val = (val<<8) | (unsigned char)CRAM_IO_GETC(fd); val = (val<<8) | (unsigned char)CRAM_IO_GETC(fd); *val_p = val; return 3; case 3: val = (val<<8) | (unsigned char)CRAM_IO_GETC(fd); val = (val<<8) | (unsigned char)CRAM_IO_GETC(fd); val = (val<<8) | (unsigned char)CRAM_IO_GETC(fd); *val_p = val; return 4; case 4: // really 3.5 more, why make it different? val = (val<<8) | (unsigned char)CRAM_IO_GETC(fd); val = (val<<8) | (unsigned char)CRAM_IO_GETC(fd); val = (val<<8) | (unsigned char)CRAM_IO_GETC(fd); val = (val<<4) | (((unsigned char)CRAM_IO_GETC(fd)) & 0x0f); *val_p = val; } return 5; } int itf8_decode_crc(cram_fd *fd, int32_t *val_p, uint32_t *crc) { static int nbytes[16] = { 0,0,0,0, 0,0,0,0, // 0000xxxx - 0111xxxx 1,1,1,1, // 1000xxxx - 1011xxxx 2,2, // 1100xxxx - 1101xxxx 3, // 1110xxxx 4, // 1111xxxx }; static int nbits[16] = { 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, // 0000xxxx - 0111xxxx 0x3f, 0x3f, 0x3f, 0x3f, // 1000xxxx - 1011xxxx 0x1f, 0x1f, // 1100xxxx - 1101xxxx 0x0f, // 1110xxxx 0x0f, // 1111xxxx }; unsigned char c[5]; int32_t val = CRAM_IO_GETC(fd); if (val == -1) return -1; c[0]=val; int i = nbytes[val>>4]; val &= nbits[val>>4]; switch(i) { case 0: *val_p = val; *crc = crc32(*crc, c, 1); return 1; case 1: val = (val<<8) | (c[1]=CRAM_IO_GETC(fd)); *val_p = val; *crc = crc32(*crc, c, 2); return 2; case 2: val = (val<<8) | (c[1]=CRAM_IO_GETC(fd)); val = (val<<8) | (c[2]=CRAM_IO_GETC(fd)); *val_p = val; *crc = crc32(*crc, c, 3); return 3; case 3: val = (val<<8) | (c[1]=CRAM_IO_GETC(fd)); val = (val<<8) | (c[2]=CRAM_IO_GETC(fd)); val = (val<<8) | (c[3]=CRAM_IO_GETC(fd)); *val_p = val; *crc = crc32(*crc, c, 4); return 4; case 4: // really 3.5 more, why make it different? val = (val<<8) | (c[1]=CRAM_IO_GETC(fd)); val = (val<<8) | (c[2]=CRAM_IO_GETC(fd)); val = (val<<8) | (c[3]=CRAM_IO_GETC(fd)); val = (val<<4) | (((c[4]=CRAM_IO_GETC(fd))) & 0x0f); *val_p = val; *crc = crc32(*crc, c, 5); } return 5; } /* * Encodes and writes a single integer in ITF-8 format. * Returns 0 on success * -1 on failure */ int itf8_encode(cram_fd *fd, int32_t val) { char buf[5]; int len = itf8_put(buf, val); return CRAM_IO_WRITE(buf, 1, len, fd) == len ? 0 : -1; } const int itf8_bytes[16] = { 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 4, 5 }; #ifndef ITF8_MACROS /* * As above, but decoding from memory */ int itf8_get(char *cp, int32_t *val_p) { unsigned char *up = (unsigned char *)cp; if (up[0] < 0x80) { *val_p = up[0]; return 1; } else if (up[0] < 0xc0) { *val_p = ((up[0] <<8) | up[1]) & 0x3fff; return 2; } else if (up[0] < 0xe0) { *val_p = ((up[0]<<16) | (up[1]<< 8) | up[2]) & 0x1fffff; return 3; } else if (up[0] < 0xf0) { *val_p = ((up[0]<<24) | (up[1]<<16) | (up[2]<<8) | up[3]) & 0x0fffffff; return 4; } else { *val_p = ((up[0] & 0x0f)<<28) | (up[1]<<20) | (up[2]<<12) | (up[3]<<4) | (up[4] & 0x0f); return 5; } } /* * Stores a value to memory in ITF-8 format. * * Returns the number of bytes required to store the number. * This is a maximum of 5 bytes. */ int itf8_put(char *cp, int32_t val) { if (!(val & ~0x00000007f)) { // 1 byte *cp = val; return 1; } else if (!(val & ~0x00003fff)) { // 2 byte *cp++ = (val >> 8 ) | 0x80; *cp = val & 0xff; return 2; } else if (!(val & ~0x01fffff)) { // 3 byte *cp++ = (val >> 16) | 0xc0; *cp++ = (val >> 8 ) & 0xff; *cp = val & 0xff; return 3; } else if (!(val & ~0x0fffffff)) { // 4 byte *cp++ = (val >> 24) | 0xe0; *cp++ = (val >> 16) & 0xff; *cp++ = (val >> 8 ) & 0xff; *cp = val & 0xff; return 4; } else { // 5 byte *cp++ = 0xf0 | ((val>>28) & 0xff); *cp++ = (val >> 20) & 0xff; *cp++ = (val >> 12) & 0xff; *cp++ = (val >> 4 ) & 0xff; *cp = val & 0x0f; return 5; } } #endif /* 64-bit itf8 variant */ int ltf8_put(char *cp, int64_t val) { if (!(val & ~((1LL<<7)-1))) { *cp = val; return 1; } else if (!(val & ~((1LL<<(6+8))-1))) { *cp++ = (val >> 8 ) | 0x80; *cp = val & 0xff; return 2; } else if (!(val & ~((1LL<<(5+2*8))-1))) { *cp++ = (val >> 16) | 0xc0; *cp++ = (val >> 8 ) & 0xff; *cp = val & 0xff; return 3; } else if (!(val & ~((1LL<<(4+3*8))-1))) { *cp++ = (val >> 24) | 0xe0; *cp++ = (val >> 16) & 0xff; *cp++ = (val >> 8 ) & 0xff; *cp = val & 0xff; return 4; } else if (!(val & ~((1LL<<(3+4*8))-1))) { *cp++ = (val >> 32) | 0xf0; *cp++ = (val >> 24) & 0xff; *cp++ = (val >> 16) & 0xff; *cp++ = (val >> 8 ) & 0xff; *cp = val & 0xff; return 5; } else if (!(val & ~((1LL<<(2+5*8))-1))) { *cp++ = (val >> 40) | 0xf8; *cp++ = (val >> 32) & 0xff; *cp++ = (val >> 24) & 0xff; *cp++ = (val >> 16) & 0xff; *cp++ = (val >> 8 ) & 0xff; *cp = val & 0xff; return 6; } else if (!(val & ~((1LL<<(1+6*8))-1))) { *cp++ = (val >> 48) | 0xfc; *cp++ = (val >> 40) & 0xff; *cp++ = (val >> 32) & 0xff; *cp++ = (val >> 24) & 0xff; *cp++ = (val >> 16) & 0xff; *cp++ = (val >> 8 ) & 0xff; *cp = val & 0xff; return 7; } else if (!(val & ~((1LL<<(7*8))-1))) { *cp++ = (val >> 56) | 0xfe; *cp++ = (val >> 48) & 0xff; *cp++ = (val >> 40) & 0xff; *cp++ = (val >> 32) & 0xff; *cp++ = (val >> 24) & 0xff; *cp++ = (val >> 16) & 0xff; *cp++ = (val >> 8 ) & 0xff; *cp = val & 0xff; return 8; } else { *cp++ = 0xff; *cp++ = (val >> 56) & 0xff; *cp++ = (val >> 48) & 0xff; *cp++ = (val >> 40) & 0xff; *cp++ = (val >> 32) & 0xff; *cp++ = (val >> 24) & 0xff; *cp++ = (val >> 16) & 0xff; *cp++ = (val >> 8 ) & 0xff; *cp = val & 0xff; return 9; } } int ltf8_get(char *cp, int64_t *val_p) { unsigned char *up = (unsigned char *)cp; if (up[0] < 0x80) { *val_p = up[0]; return 1; } else if (up[0] < 0xc0) { *val_p = (((uint64_t)up[0]<< 8) | (uint64_t)up[1]) & (((1LL<<(6+8)))-1); return 2; } else if (up[0] < 0xe0) { *val_p = (((uint64_t)up[0]<<16) | ((uint64_t)up[1]<< 8) | (uint64_t)up[2]) & ((1LL<<(5+2*8))-1); return 3; } else if (up[0] < 0xf0) { *val_p = (((uint64_t)up[0]<<24) | ((uint64_t)up[1]<<16) | ((uint64_t)up[2]<< 8) | (uint64_t)up[3]) & ((1LL<<(4+3*8))-1); return 4; } else if (up[0] < 0xf8) { *val_p = (((uint64_t)up[0]<<32) | ((uint64_t)up[1]<<24) | ((uint64_t)up[2]<<16) | ((uint64_t)up[3]<< 8) | (uint64_t)up[4]) & ((1LL<<(3+4*8))-1); return 5; } else if (up[0] < 0xfc) { *val_p = (((uint64_t)up[0]<<40) | ((uint64_t)up[1]<<32) | ((uint64_t)up[2]<<24) | ((uint64_t)up[3]<<16) | ((uint64_t)up[4]<< 8) | (uint64_t)up[5]) & ((1LL<<(2+5*8))-1); return 6; } else if (up[0] < 0xfe) { *val_p = (((uint64_t)up[0]<<48) | ((uint64_t)up[1]<<40) | ((uint64_t)up[2]<<32) | ((uint64_t)up[3]<<24) | ((uint64_t)up[4]<<16) | ((uint64_t)up[5]<< 8) | (uint64_t)up[6]) & ((1LL<<(1+6*8))-1); return 7; } else if (up[0] < 0xff) { *val_p = (((uint64_t)up[1]<<48) | ((uint64_t)up[2]<<40) | ((uint64_t)up[3]<<32) | ((uint64_t)up[4]<<24) | ((uint64_t)up[5]<<16) | ((uint64_t)up[6]<< 8) | (uint64_t)up[7]) & ((1LL<<(7*8))-1); return 8; } else { *val_p = (((uint64_t)up[1]<<56) | ((uint64_t)up[2]<<48) | ((uint64_t)up[3]<<40) | ((uint64_t)up[4]<<32) | ((uint64_t)up[5]<<24) | ((uint64_t)up[6]<<16) | ((uint64_t)up[7]<< 8) | (uint64_t)up[8]); return 9; } } /* * LEGACY: consider using ltf8_decode_crc. */ int ltf8_decode(cram_fd *fd, int64_t *val_p) { int c = CRAM_IO_GETC(fd); int64_t val = (unsigned char)c; if (c == -1) return -1; if (val < 0x80) { *val_p = val; return 1; } else if (val < 0xc0) { val = (val<<8) | (unsigned char)CRAM_IO_GETC(fd); *val_p = val & (((1LL<<(6+8)))-1); return 2; } else if (val < 0xe0) { val = (val<<8) | (unsigned char)CRAM_IO_GETC(fd); val = (val<<8) | (unsigned char)CRAM_IO_GETC(fd); *val_p = val & ((1LL<<(5+2*8))-1); return 3; } else if (val < 0xf0) { val = (val<<8) | (unsigned char)CRAM_IO_GETC(fd); val = (val<<8) | (unsigned char)CRAM_IO_GETC(fd); val = (val<<8) | (unsigned char)CRAM_IO_GETC(fd); *val_p = val & ((1LL<<(4+3*8))-1); return 4; } else if (val < 0xf8) { val = (val<<8) | (unsigned char)CRAM_IO_GETC(fd); val = (val<<8) | (unsigned char)CRAM_IO_GETC(fd); val = (val<<8) | (unsigned char)CRAM_IO_GETC(fd); val = (val<<8) | (unsigned char)CRAM_IO_GETC(fd); *val_p = val & ((1LL<<(3+4*8))-1); return 5; } else if (val < 0xfc) { val = (val<<8) | (unsigned char)CRAM_IO_GETC(fd); val = (val<<8) | (unsigned char)CRAM_IO_GETC(fd); val = (val<<8) | (unsigned char)CRAM_IO_GETC(fd); val = (val<<8) | (unsigned char)CRAM_IO_GETC(fd); val = (val<<8) | (unsigned char)CRAM_IO_GETC(fd); *val_p = val & ((1LL<<(2+5*8))-1); return 6; } else if (val < 0xfe) { val = (val<<8) | (unsigned char)CRAM_IO_GETC(fd); val = (val<<8) | (unsigned char)CRAM_IO_GETC(fd); val = (val<<8) | (unsigned char)CRAM_IO_GETC(fd); val = (val<<8) | (unsigned char)CRAM_IO_GETC(fd); val = (val<<8) | (unsigned char)CRAM_IO_GETC(fd); val = (val<<8) | (unsigned char)CRAM_IO_GETC(fd); *val_p = val & ((1LL<<(1+6*8))-1); return 7; } else if (val < 0xff) { val = (val<<8) | (unsigned char)CRAM_IO_GETC(fd); val = (val<<8) | (unsigned char)CRAM_IO_GETC(fd); val = (val<<8) | (unsigned char)CRAM_IO_GETC(fd); val = (val<<8) | (unsigned char)CRAM_IO_GETC(fd); val = (val<<8) | (unsigned char)CRAM_IO_GETC(fd); val = (val<<8) | (unsigned char)CRAM_IO_GETC(fd); val = (val<<8) | (unsigned char)CRAM_IO_GETC(fd); *val_p = val & ((1LL<<(7*8))-1); return 8; } else { val = (val<<8) | (unsigned char)CRAM_IO_GETC(fd); val = (val<<8) | (unsigned char)CRAM_IO_GETC(fd); val = (val<<8) | (unsigned char)CRAM_IO_GETC(fd); val = (val<<8) | (unsigned char)CRAM_IO_GETC(fd); val = (val<<8) | (unsigned char)CRAM_IO_GETC(fd); val = (val<<8) | (unsigned char)CRAM_IO_GETC(fd); val = (val<<8) | (unsigned char)CRAM_IO_GETC(fd); val = (val<<8) | (unsigned char)CRAM_IO_GETC(fd); *val_p = val; } return 9; } int ltf8_decode_crc(cram_fd *fd, int64_t *val_p, uint32_t *crc) { unsigned char c[9]; int64_t val = (unsigned char)CRAM_IO_GETC(fd); if (val == -1) return -1; c[0] = val; if (val < 0x80) { *val_p = val; *crc = crc32(*crc, c, 1); return 1; } else if (val < 0xc0) { val = (val<<8) | (c[1]=CRAM_IO_GETC(fd));; *val_p = val & (((1LL<<(6+8)))-1); *crc = crc32(*crc, c, 2); return 2; } else if (val < 0xe0) { val = (val<<8) | (c[1]=CRAM_IO_GETC(fd));; val = (val<<8) | (c[2]=CRAM_IO_GETC(fd));; *val_p = val & ((1LL<<(5+2*8))-1); *crc = crc32(*crc, c, 3); return 3; } else if (val < 0xf0) { val = (val<<8) | (c[1]=CRAM_IO_GETC(fd));; val = (val<<8) | (c[2]=CRAM_IO_GETC(fd));; val = (val<<8) | (c[3]=CRAM_IO_GETC(fd));; *val_p = val & ((1LL<<(4+3*8))-1); *crc = crc32(*crc, c, 4); return 4; } else if (val < 0xf8) { val = (val<<8) | (c[1]=CRAM_IO_GETC(fd));; val = (val<<8) | (c[2]=CRAM_IO_GETC(fd));; val = (val<<8) | (c[3]=CRAM_IO_GETC(fd));; val = (val<<8) | (c[4]=CRAM_IO_GETC(fd));; *val_p = val & ((1LL<<(3+4*8))-1); *crc = crc32(*crc, c, 5); return 5; } else if (val < 0xfc) { val = (val<<8) | (c[1]=CRAM_IO_GETC(fd));; val = (val<<8) | (c[2]=CRAM_IO_GETC(fd));; val = (val<<8) | (c[3]=CRAM_IO_GETC(fd));; val = (val<<8) | (c[4]=CRAM_IO_GETC(fd));; val = (val<<8) | (c[5]=CRAM_IO_GETC(fd));; *val_p = val & ((1LL<<(2+5*8))-1); *crc = crc32(*crc, c, 6); return 6; } else if (val < 0xfe) { val = (val<<8) | (c[1]=CRAM_IO_GETC(fd));; val = (val<<8) | (c[2]=CRAM_IO_GETC(fd));; val = (val<<8) | (c[3]=CRAM_IO_GETC(fd));; val = (val<<8) | (c[4]=CRAM_IO_GETC(fd));; val = (val<<8) | (c[5]=CRAM_IO_GETC(fd));; val = (val<<8) | (c[6]=CRAM_IO_GETC(fd));; *val_p = val & ((1LL<<(1+6*8))-1); *crc = crc32(*crc, c, 7); return 7; } else if (val < 0xff) { val = (val<<8) | (c[1]=CRAM_IO_GETC(fd));; val = (val<<8) | (c[2]=CRAM_IO_GETC(fd));; val = (val<<8) | (c[3]=CRAM_IO_GETC(fd));; val = (val<<8) | (c[4]=CRAM_IO_GETC(fd));; val = (val<<8) | (c[5]=CRAM_IO_GETC(fd));; val = (val<<8) | (c[6]=CRAM_IO_GETC(fd));; val = (val<<8) | (c[7]=CRAM_IO_GETC(fd));; *val_p = val & ((1LL<<(7*8))-1); *crc = crc32(*crc, c, 8); return 8; } else { val = (val<<8) | (c[1]=CRAM_IO_GETC(fd));; val = (val<<8) | (c[2]=CRAM_IO_GETC(fd));; val = (val<<8) | (c[3]=CRAM_IO_GETC(fd));; val = (val<<8) | (c[4]=CRAM_IO_GETC(fd));; val = (val<<8) | (c[5]=CRAM_IO_GETC(fd));; val = (val<<8) | (c[6]=CRAM_IO_GETC(fd));; val = (val<<8) | (c[7]=CRAM_IO_GETC(fd));; val = (val<<8) | (c[8]=CRAM_IO_GETC(fd));; *crc = crc32(*crc, c, 9); *val_p = val; } return 9; } /* * Pushes a value in ITF8 format onto the end of a block. * This shouldn't be used for high-volume data as it is not the fastest * method. * * Returns the number of bytes written */ int itf8_put_blk(cram_block *blk, int val) { char buf[5]; int sz; sz = itf8_put(buf, val); BLOCK_APPEND(blk, buf, sz); return sz; } /* * Decodes a 32-bit little endian value from fd and stores in val. * * Returns the number of bytes read on success * -1 on failure */ int int32_decode(cram_fd *fd, int32_t *val) { int32_t i; if (1 != CRAM_IO_READ(&i, 4, 1, fd)) return -1; *val = le_int4(i); return 4; } /* * Encodes a 32-bit little endian value 'val' and writes to fd. * * Returns the number of bytes written on success * -1 on failure */ int int32_encode(cram_fd *fd, int32_t val) { val = le_int4(val); if (1 != CRAM_IO_WRITE(&val, 4, 1, fd)) return -1; return 4; } /* As int32_decoded/encode, but from/to blocks instead of cram_fd */ int int32_get(cram_block *b, int32_t *val) { if (b->uncomp_size - BLOCK_SIZE(b) < 4) return -1; *val = b->data[b->byte ] | (b->data[b->byte+1] << 8) | (b->data[b->byte+2] << 16) | (b->data[b->byte+3] << 24); BLOCK_SIZE(b) += 4; return 4; } /* As int32_decoded/encode, but from/to blocks instead of cram_fd */ int int32_put(cram_block *b, int32_t val) { unsigned char cp[4]; cp[0] = ( val & 0xff); cp[1] = ((val>>8) & 0xff); cp[2] = ((val>>16) & 0xff); cp[3] = ((val>>24) & 0xff); BLOCK_APPEND(b, cp, 4); return b->data ? 0 : -1; } /* ---------------------------------------------------------------------- * zlib compression code - from Gap5's tg_iface_g.c * They're static here as they're only used within the cram_compress_block * and cram_uncompress_block functions, which are the external interface. */ static char *zlib_mem_inflate(char *cdata, size_t csize, size_t *size) { z_stream s; unsigned char *data = NULL; /* Uncompressed output */ int data_alloc = 0; int err; /* Starting point at uncompressed size, and scale after that */ data = malloc(data_alloc = csize*1.2+100); if (!data) return NULL; /* Initialise zlib stream */ s.zalloc = Z_NULL; /* use default allocation functions */ s.zfree = Z_NULL; s.opaque = Z_NULL; s.next_in = (unsigned char *)cdata; s.avail_in = csize; s.total_in = 0; s.next_out = data; s.avail_out = data_alloc; s.total_out = 0; //err = inflateInit(&s); err = inflateInit2(&s, 15 + 32); if (err != Z_OK) { fprintf(stderr, "zlib inflateInit error: %s\n", s.msg); free(data); return NULL; } /* Decode to 'data' array */ for (;s.avail_in;) { unsigned char *data_tmp; int alloc_inc; s.next_out = &data[s.total_out]; err = inflate(&s, Z_NO_FLUSH); if (err == Z_STREAM_END) break; if (err != Z_OK) { fprintf(stderr, "zlib inflate error: %s\n", s.msg); if (data) free(data); return NULL; } /* More to come, so realloc based on growth so far */ alloc_inc = (double)s.avail_in/s.total_in * s.total_out + 100; data = realloc((data_tmp = data), data_alloc += alloc_inc); if (!data) { free(data_tmp); return NULL; } s.avail_out += alloc_inc; } inflateEnd(&s); *size = s.total_out; return (char *)data; } static char *zlib_mem_deflate(char *data, size_t size, size_t *cdata_size, int level, int strat) { z_stream s; unsigned char *cdata = NULL; /* Compressed output */ int cdata_alloc = 0; int cdata_pos = 0; int err; cdata = malloc(cdata_alloc = size*1.05+100); if (!cdata) return NULL; cdata_pos = 0; /* Initialise zlib stream */ s.zalloc = Z_NULL; /* use default allocation functions */ s.zfree = Z_NULL; s.opaque = Z_NULL; s.next_in = (unsigned char *)data; s.avail_in = size; s.total_in = 0; s.next_out = cdata; s.avail_out = cdata_alloc; s.total_out = 0; s.data_type = Z_BINARY; err = deflateInit2(&s, level, Z_DEFLATED, 15|16, 9, strat); if (err != Z_OK) { fprintf(stderr, "zlib deflateInit2 error: %s\n", s.msg); return NULL; } /* Encode to 'cdata' array */ for (;s.avail_in;) { s.next_out = &cdata[cdata_pos]; s.avail_out = cdata_alloc - cdata_pos; if (cdata_alloc - cdata_pos <= 0) { fprintf(stderr, "Deflate produced larger output than expected. Abort\n"); return NULL; } err = deflate(&s, Z_NO_FLUSH); cdata_pos = cdata_alloc - s.avail_out; if (err != Z_OK) { fprintf(stderr, "zlib deflate error: %s\n", s.msg); break; } } if (deflate(&s, Z_FINISH) != Z_STREAM_END) { fprintf(stderr, "zlib deflate error: %s\n", s.msg); } *cdata_size = s.total_out; if (deflateEnd(&s) != Z_OK) { fprintf(stderr, "zlib deflate error: %s\n", s.msg); } return (char *)cdata; } #ifdef HAVE_LIBLZMA /* ------------------------------------------------------------------------ */ /* * Data compression routines using liblzma (xz) * * On a test set this shrunk the main db from 136157104 bytes to 114796168, but * caused tg_index to grow from 2m43.707s to 15m3.961s. Exporting as bfastq * went from 18.3s to 36.3s. So decompression suffers too, but not as bad * as compression times. * * For now we disable this functionality. If it's to be reenabled make sure you * improve the mem_inflate implementation as it's just a test hack at the * moment. */ static char *lzma_mem_deflate(char *data, size_t size, size_t *cdata_size, int level) { char *out; size_t out_size = lzma_stream_buffer_bound(size); *cdata_size = 0; out = malloc(out_size); /* Single call compression */ if (LZMA_OK != lzma_easy_buffer_encode(level, LZMA_CHECK_CRC32, NULL, (uint8_t *)data, size, (uint8_t *)out, cdata_size, out_size)) return NULL; return out; } static char *lzma_mem_inflate(char *cdata, size_t csize, size_t *size) { lzma_stream strm = LZMA_STREAM_INIT; size_t out_size = 0, out_pos = 0; char *out = NULL; int r; /* Initiate the decoder */ if (LZMA_OK != lzma_stream_decoder(&strm, lzma_easy_decoder_memusage(9), 0)) return NULL; /* Decode loop */ strm.avail_in = csize; strm.next_in = (uint8_t *)cdata; for (;strm.avail_in;) { if (strm.avail_in > out_size - out_pos) { out_size += strm.avail_in * 4 + 32768; out = realloc(out, out_size); } strm.avail_out = out_size - out_pos; strm.next_out = (uint8_t *)&out[out_pos]; r = lzma_code(&strm, LZMA_RUN); if (LZMA_OK != r && LZMA_STREAM_END != r) { fprintf(stderr, "r=%d\n", r); fprintf(stderr, "mem=%"PRId64"\n", (int64_t)lzma_memusage(&strm)); return NULL; } out_pos = strm.total_out; if (r == LZMA_STREAM_END) break; } /* finish up any unflushed data; necessary? */ r = lzma_code(&strm, LZMA_FINISH); if (r != LZMA_OK && r != LZMA_STREAM_END) { fprintf(stderr, "r=%d\n", r); return NULL; } out = realloc(out, strm.total_out); *size = strm.total_out; lzma_end(&strm); return out; } #endif /* ---------------------------------------------------------------------- * CRAM blocks - the dynamically growable data block. We have code to * create, update, (un)compress and read/write. * * These are derived from the deflate_interlaced.c blocks, but with the * CRAM extension of content types and IDs. */ /* * Allocates a new cram_block structure with a specified content_type and * id. * * Returns block pointer on success * NULL on failure */ cram_block *cram_new_block(enum cram_content_type content_type, int content_id) { cram_block *b = malloc(sizeof(*b)); if (!b) return NULL; b->method = b->orig_method = RAW; b->content_type = content_type; b->content_id = content_id; b->comp_size = 0; b->uncomp_size = 0; b->data = NULL; b->alloc = 0; b->byte = 0; b->bit = 7; // MSB return b; } /* * Reads a block from a cram file. * Returns cram_block pointer on success. * NULL on failure */ cram_block *cram_read_block(cram_fd *fd) { cram_block *b = malloc(sizeof(*b)); unsigned char c; uint32_t crc = 0; if (!b) return NULL; //fprintf(stderr, "Block at %d\n", (int)ftell(fd->fp)); if (-1 == (b->method = (c=CRAM_IO_GETC(fd)))) { free(b); return NULL; } crc = crc32(crc, &c, 1); if (-1 == (b->content_type = (c=CRAM_IO_GETC(fd)))) { free(b); return NULL; } crc = crc32(crc, &c, 1); if (-1 == itf8_decode_crc(fd, &b->content_id, &crc)) { free(b); return NULL; } if (-1 == itf8_decode_crc(fd, &b->comp_size, &crc)) { free(b); return NULL; } if (-1 == itf8_decode_crc(fd, &b->uncomp_size, &crc)) { free(b); return NULL; } // fprintf(stderr, " method %d, ctype %d, cid %d, csize %d, ucsize %d\n", // b->method, b->content_type, b->content_id, b->comp_size, b->uncomp_size); if (b->method == RAW) { b->alloc = b->uncomp_size; if (!(b->data = malloc(b->uncomp_size))){ free(b); return NULL; } if (b->uncomp_size != CRAM_IO_READ(b->data, 1, b->uncomp_size, fd)) { free(b->data); free(b); return NULL; } } else { b->alloc = b->comp_size; if (!(b->data = malloc(b->comp_size))) { free(b); return NULL; } if (b->comp_size != CRAM_IO_READ(b->data, 1, b->comp_size, fd)) { free(b->data); free(b); return NULL; } } if (IS_CRAM_3_VERS(fd)) { if (-1 == int32_decode(fd, (int32_t *)&b->crc32)) { free(b); return NULL; } crc = crc32(crc, b->data ? b->data : (uc *)"", b->alloc); if (crc != b->crc32) { fprintf(stderr, "Block CRC32 failure\n"); free(b->data); free(b); return NULL; } } b->orig_method = b->method; b->idx = 0; b->byte = 0; b->bit = 7; // MSB return b; } /* * Writes a CRAM block. * Returns 0 on success * -1 on failure */ int cram_write_block(cram_fd *fd, cram_block *b) { assert(b->method != RAW || (b->comp_size == b->uncomp_size)); if (CRAM_IO_PUTC(b->method, fd) == EOF) return -1; if (CRAM_IO_PUTC(b->content_type, fd) == EOF) return -1; if (itf8_encode(fd, b->content_id) == -1) return -1; if (itf8_encode(fd, b->comp_size) == -1) return -1; if (itf8_encode(fd, b->uncomp_size) == -1) return -1; if (b->method == RAW) { if (b->uncomp_size != CRAM_IO_WRITE(b->data, 1, b->uncomp_size, fd)) return -1; } else { if (b->comp_size != CRAM_IO_WRITE(b->data, 1, b->comp_size, fd)) return -1; } if (IS_CRAM_3_VERS(fd)) { unsigned char dat[100], *cp = dat;; uint32_t crc; *cp++ = b->method; *cp++ = b->content_type; cp += itf8_put(cp, b->content_id); cp += itf8_put(cp, b->comp_size); cp += itf8_put(cp, b->uncomp_size); crc = crc32(0L, dat, cp-dat); if (b->method == RAW) { b->crc32 = crc32(crc, b->data ? b->data : (uc*)"", b->uncomp_size); } else { b->crc32 = crc32(crc, b->data ? b->data : (uc*)"", b->comp_size); } if (-1 == int32_encode(fd, b->crc32)) return -1; } return 0; } /* * Frees a CRAM block, deallocating internal data too. */ void cram_free_block(cram_block *b) { if (!b) return; if (b->data) free(b->data); free(b); } /* * Uncompresses a CRAM block, if compressed. */ int cram_uncompress_block(cram_block *b) { char *uncomp; size_t uncomp_size = 0; if (b->uncomp_size == 0) { // blank block b->method = RAW; return 0; } switch (b->method) { case RAW: //b->uncomp_size = b->comp_size; return 0; case GZIP: uncomp = zlib_mem_inflate((char *)b->data, b->comp_size, &uncomp_size); if (!uncomp) return -1; if ((int)uncomp_size != b->uncomp_size) return -1; free(b->data); b->data = (unsigned char *)uncomp; b->alloc = uncomp_size; b->method = RAW; break; #ifdef HAVE_LIBBZ2 case BZIP2: { unsigned int usize = b->uncomp_size; if (!(uncomp = malloc(usize))) return -1; if (BZ_OK != BZ2_bzBuffToBuffDecompress(uncomp, &usize, (char *)b->data, b->comp_size, 0, 0)) { free(uncomp); return -1; } free(b->data); b->data = (unsigned char *)uncomp; b->alloc = usize; b->method = RAW; b->uncomp_size = usize; // Just incase it differs break; } #else case BZIP2: fprintf(stderr, "Bzip2 compression is not compiled into this " "version.\nPlease rebuild and try again.\n"); return -1; break; #endif #ifdef HAVE_LIBLZMA case LZMA: uncomp = lzma_mem_inflate((char *)b->data, b->comp_size, &uncomp_size); if (!uncomp) return -1; if ((int)uncomp_size != b->uncomp_size) return -1; free(b->data); b->data = (unsigned char *)uncomp; b->alloc = uncomp_size; b->method = RAW; break; #else case LZMA: fprintf(stderr, "Lzma compression is not compiled into this " "version.\nPlease rebuild and try again.\n"); return -1; break; #endif case RANS0: { unsigned int usize = b->uncomp_size, usize2; if (*b->data == 1) b->orig_method = RANS1; // useful in debugging uncomp = (char *)rans_uncompress(b->data, b->comp_size, &usize2, 0); if (!uncomp || usize != usize2) return -1; free(b->data); b->data = (unsigned char *)uncomp; b->alloc = usize2; b->method = RAW; b->uncomp_size = usize2; // Just incase it differs //fprintf(stderr, "Expanded %d to %d\n", b->comp_size, b->uncomp_size); break; } case RANS1: { unsigned int usize = b->uncomp_size, usize2; uncomp = (char *)rans_uncompress(b->data, b->comp_size, &usize2, 1); if (!uncomp || usize != usize2) return -1; free(b->data); b->data = (unsigned char *)uncomp; b->alloc = usize2; b->method = RAW; b->uncomp_size = usize2; // Just incase it differs //fprintf(stderr, "Expanded %d to %d\n", b->comp_size, b->uncomp_size); break; } default: return -1; } return 0; } #define EBASE 65536 //static double entropy16(unsigned short *data, int len) { // double E[EBASE]; // double P[EBASE]; // double e = 0; // int i; // // for (i = 0; i < EBASE; i++) // P[i] = 0; // // for (i = 0; i < len; i++) // P[data[i]]++; // // for (i = 0; i < EBASE; i++) { // if (P[i]) { // P[i] /= len; // E[i] = -(log(P[i])/log(EBASE)); // } else { // E[i] = 0; // } // } // // for (e = i = 0; i < len; i++) // e += E[data[i]]; // // return e * log(EBASE)/log(256); //} // //#define EBASE2 256 //static double entropy8(unsigned char *data, int len) { // int F[EBASE2]; // double e = 0; // int i; // // for (i = 0; i < EBASE2; i++) // F[i] = 0; // // for (i = 0; i < len; i++) // F[data[i]]++; // // for (i = 0; i < EBASE2; i++) { // if (F[i]) { // e += -log((double)F[i]/len) * F[i]; // } // } // // return e / log(EBASE2); //} static char *cram_compress_by_method(char *in, size_t in_size, size_t *out_size, enum cram_block_method method, int level, int strat) { switch (method) { case GZIP: return zlib_mem_deflate(in, in_size, out_size, level, strat); case BZIP2: { #ifdef HAVE_LIBBZ2 unsigned int comp_size = in_size*1.01 + 600; char *comp = malloc(comp_size); if (!comp) return NULL; if (BZ_OK != BZ2_bzBuffToBuffCompress(comp, &comp_size, in, in_size, level, 0, 30)) { free(comp); return NULL; } *out_size = comp_size; return comp; #else return NULL; #endif } case LZMA: #ifdef HAVE_LIBLZMA return lzma_mem_deflate(in, in_size, out_size, level); #else return NULL; #endif case RANS0: { unsigned int out_size_i; unsigned char *cp; cp = rans_compress((unsigned char *)in, in_size, &out_size_i, 0); *out_size = out_size_i; return (char *)cp; } case RANS1: { unsigned int out_size_i; unsigned char *cp; cp = rans_compress((unsigned char *)in, in_size, &out_size_i, 1); *out_size = out_size_i; return (char *)cp; } case RAW: break; default: return NULL; } return NULL; } /* * Compresses a block using one of two different zlib strategies. If we only * want one choice set strat2 to be -1. * * The logic here is that sometimes Z_RLE does a better job than Z_FILTERED * or Z_DEFAULT_STRATEGY on quality data. If so, we'd rather use it as it is * significantly faster. */ int cram_compress_block(cram_fd *fd, cram_block *b, cram_metrics *metrics, int method, int level) { char *comp = NULL; size_t comp_size = 0; int strat; if (b->method != RAW) { // Maybe already compressed if s->block[0] was compressed and // we have e.g. s->block[DS_BA] set to s->block[0] due to only // one base type present and hence using E_HUFFMAN on block 0. // A second explicit attempt to compress the same block then // occurs. return 0; } //fprintf(stderr, "IN: block %d, sz %d\n", b->content_id, b->uncomp_size); if (method == RAW || level == 0 || b->uncomp_size == 0) { b->method = RAW; b->comp_size = b->uncomp_size; //fprintf(stderr, "Skip block id %d\n", b->content_id); return 0; } if (metrics) { if (fd->metrics_lock) pthread_mutex_lock(fd->metrics_lock); if (metrics->trial > 0 || --metrics->next_trial <= 0) { size_t sz_best = INT_MAX; size_t sz_gz_rle = 0; size_t sz_gz_1 = 0; size_t sz_gz_def = 0; size_t sz_rans0 = 0; size_t sz_rans1 = 0; size_t sz_bzip2 = 0; size_t sz_lzma = 0; int method_best = 0; char *c_best = NULL, *c = NULL; if (metrics->revised_method) method = metrics->revised_method; else metrics->revised_method = method; if (metrics->next_trial <= 0) { metrics->next_trial = TRIAL_SPAN; metrics->trial = NTRIALS; metrics->sz_gz_rle /= 2; metrics->sz_gz_1 /= 2; metrics->sz_gz_def /= 2; metrics->sz_rans0 /= 2; metrics->sz_rans1 /= 2; metrics->sz_bzip2 /= 2; metrics->sz_lzma /= 2; } if (fd->metrics_lock) pthread_mutex_unlock(fd->metrics_lock); if (method & (1<data, b->uncomp_size, &sz_gz_rle, GZIP, 1, Z_RLE); if (sz_best > sz_gz_rle) { sz_best = sz_gz_rle; method_best = GZIP_RLE; if (c_best) free(c_best); c_best = c; } else { free(c); } //fprintf(stderr, "Block %d; %d->%d\n", b->content_id, b->uncomp_size, sz_gz_rle); } if (method & (1<data, b->uncomp_size, &sz_gz_def, GZIP, level, Z_FILTERED); if (sz_best > sz_gz_def) { sz_best = sz_gz_def; method_best = GZIP; if (c_best) free(c_best); c_best = c; } else { free(c); } //fprintf(stderr, "Block %d; %d->%d\n", b->content_id, b->uncomp_size, sz_gz_def); } // Doesn't seem to buy us much, but occasionally we get data sets where // trying to LZ match less hard is both a CPU and size win. (eg mc:i: tags) if (method & (1<data, b->uncomp_size, &sz_gz_1, GZIP, 1, Z_DEFAULT_STRATEGY); if (sz_best > sz_gz_1) { sz_best = sz_gz_1; method_best = GZIP_1; if (c_best) free(c_best); c_best = c; } else { free(c); } //fprintf(stderr, "Block %d; %d->%d\n", b->content_id, b->uncomp_size, sz_gz_def); } if (method & (1<data, b->uncomp_size, &sz_rans0, RANS0, 0, 0); if (sz_best > sz_rans0) { sz_best = sz_rans0; method_best = RANS0; if (c_best) free(c_best); c_best = c; } else { free(c); } } if (method & (1<data, b->uncomp_size, &sz_rans1, RANS1, 0, 0); if (sz_best > sz_rans1) { sz_best = sz_rans1; method_best = RANS1; if (c_best) free(c_best); c_best = c; } else { free(c); } } if (method & (1<data, b->uncomp_size, &sz_bzip2, BZIP2, level, 0); if (sz_best > sz_bzip2) { sz_best = sz_bzip2; method_best = BZIP2; if (c_best) free(c_best); c_best = c; } else { free(c); } } if (method & (1<data, b->uncomp_size, &sz_lzma, LZMA, level, 0); if (sz_best > sz_lzma) { sz_best = sz_lzma; method_best = LZMA; if (c_best) free(c_best); c_best = c; } else { free(c); } } //fprintf(stderr, "sz_best = %d\n", sz_best); free(b->data); b->data = (unsigned char *)c_best; //printf("method_best = %s\n", cram_block_method2str(method_best)); b->method = (method_best == GZIP_RLE || method_best == GZIP_1) ? GZIP : method_best; b->comp_size = sz_best; if (fd->metrics_lock) pthread_mutex_lock(fd->metrics_lock); metrics->sz_gz_rle += sz_gz_rle; metrics->sz_gz_1 += sz_gz_1; metrics->sz_gz_def += sz_gz_def; metrics->sz_rans0 += sz_rans0; metrics->sz_rans1 += sz_rans1; metrics->sz_bzip2 += sz_bzip2; metrics->sz_lzma += sz_lzma; if (--metrics->trial == 0) { int best_method = RAW; int best_sz = INT_MAX; // Scale methods by cost if (fd->level <= 3) { metrics->sz_rans1 *= 1.02; metrics->sz_gz_1 *= 1.02; metrics->sz_gz_def *= 1.04; metrics->sz_bzip2 *= 1.08; metrics->sz_lzma *= 1.10; } else if (fd->level <= 6) { metrics->sz_rans1 *= 1.01; metrics->sz_gz_1 *= 1.01; metrics->sz_gz_def *= 1.02; metrics->sz_bzip2 *= 1.03; metrics->sz_lzma *= 1.05; } if (method & (1< metrics->sz_gz_rle) best_sz = metrics->sz_gz_rle, best_method = GZIP_RLE; if (method & (1< metrics->sz_gz_1) best_sz = metrics->sz_gz_1, best_method = GZIP_1; if (method & (1< metrics->sz_gz_def) best_sz = metrics->sz_gz_def, best_method = GZIP; if (method & (1< metrics->sz_rans0) best_sz = metrics->sz_rans0, best_method = RANS0; if (method & (1< metrics->sz_rans1) best_sz = metrics->sz_rans1, best_method = RANS1; if (method & (1< metrics->sz_bzip2) best_sz = metrics->sz_bzip2, best_method = BZIP2; if (method & (1< metrics->sz_lzma) best_sz = metrics->sz_lzma, best_method = LZMA; if (best_method == GZIP_RLE) { metrics->method = GZIP; metrics->strat = Z_RLE; } else if (best_method == GZIP_1) { metrics->method = GZIP; metrics->strat = Z_DEFAULT_STRATEGY; } else { metrics->method = best_method; metrics->strat = Z_FILTERED; } // If we see at least MAXFAIL trials in a row for a specific // compression method with more than MAXDELTA aggregate // size then we drop this from the list of methods used // for this block type. #define MAXDELTA 0.20 #define MAXFAILS 4 if (best_method == GZIP_RLE) { metrics->gz_rle_cnt = 0; metrics->gz_rle_extra = 0; } else if (best_sz < metrics->sz_gz_rle) { double r = (double)metrics->sz_gz_rle / best_sz - 1; if (++metrics->gz_rle_cnt >= MAXFAILS && (metrics->gz_rle_extra += r) >= MAXDELTA) method &= ~(1<gz_1_cnt = 0; metrics->gz_1_extra = 0; } else if (best_sz < metrics->sz_gz_1) { double r = (double)metrics->sz_gz_1 / best_sz - 1; if (++metrics->gz_1_cnt >= MAXFAILS && (metrics->gz_1_extra += r) >= MAXDELTA) method &= ~(1<gz_def_cnt = 0; metrics->gz_def_extra = 0; } else if (best_sz < metrics->sz_gz_def) { double r = (double)metrics->sz_gz_def / best_sz - 1; if (++metrics->gz_def_cnt >= MAXFAILS && (metrics->gz_def_extra += r) >= MAXDELTA) method &= ~(1<rans0_cnt = 0; metrics->rans0_extra = 0; } else if (best_sz < metrics->sz_rans0) { double r = (double)metrics->sz_rans0 / best_sz - 1; if (++metrics->rans0_cnt >= MAXFAILS && (metrics->rans0_extra += r) >= MAXDELTA) method &= ~(1<rans1_cnt = 0; metrics->rans1_extra = 0; } else if (best_sz < metrics->sz_rans1) { double r = (double)metrics->sz_rans1 / best_sz - 1; if (++metrics->rans1_cnt >= MAXFAILS && (metrics->rans1_extra += r) >= MAXDELTA) method &= ~(1<bzip2_cnt = 0; metrics->bzip2_extra = 0; } else if (best_sz < metrics->sz_bzip2) { double r = (double)metrics->sz_bzip2 / best_sz - 1; if (++metrics->bzip2_cnt >= MAXFAILS && (metrics->bzip2_extra += r) >= MAXDELTA) method &= ~(1<lzma_cnt = 0; metrics->lzma_extra = 0; } else if (best_sz < metrics->sz_lzma) { double r = (double)metrics->sz_lzma / best_sz - 1; if (++metrics->lzma_cnt >= MAXFAILS && (metrics->lzma_extra += r) >= MAXDELTA) method &= ~(1<revised_method) // fprintf(stderr, "%d: method from %x to %x\n", // b->content_id, metrics->revised_method, method); metrics->revised_method = method; } if (fd->metrics_lock) pthread_mutex_unlock(fd->metrics_lock); } else { strat = metrics->strat; method = metrics->method; if (fd->metrics_lock) pthread_mutex_unlock(fd->metrics_lock); comp = cram_compress_by_method((char *)b->data, b->uncomp_size, &comp_size, method, strat==Z_FILTERED?level:1, strat); if (!comp) return -1; if (comp_size < b->uncomp_size) { free(b->data); b->data = (unsigned char *)comp; b->comp_size = comp_size; b->method = method; } else { free(comp); } } } else { // no cached metrics, so just do zlib? comp = cram_compress_by_method((char *)b->data, b->uncomp_size, &comp_size, GZIP, level, Z_FILTERED); if (!comp) { fprintf(stderr, "Compression failed!\n"); return -1; } if (comp_size < b->uncomp_size) { free(b->data); b->data = (unsigned char *)comp; b->comp_size = comp_size; b->method = GZIP; } else { free(comp); } } if (fd->verbose) fprintf(stderr, "Compressed block ID %d from %d to %d by method %s\n", b->content_id, b->uncomp_size, b->comp_size, cram_block_method2str(b->method)); if (b->method == RANS1) b->method = RANS0; // Spec just has RANS (not 0/1) with auto-sensing return 0; } cram_metrics *cram_new_metrics(void) { cram_metrics *m = calloc(1, sizeof(*m)); if (!m) return NULL; m->trial = NTRIALS-1; m->next_trial = TRIAL_SPAN; m->method = RAW; m->strat = 0; m->revised_method = 0; return m; } char *cram_block_method2str(enum cram_block_method m) { switch(m) { case RAW: return "RAW"; case GZIP: return "GZIP"; case BZIP2: return "BZIP2"; case LZMA: return "LZMA"; case RANS0: return "RANS0"; case RANS1: return "RANS1"; case GZIP_RLE: return "GZIP_RLE"; case GZIP_1: return "GZIP-1"; case BM_ERROR: break; } return "?"; } char *cram_content_type2str(enum cram_content_type t) { switch (t) { case FILE_HEADER: return "FILE_HEADER"; case COMPRESSION_HEADER: return "COMPRESSION_HEADER"; case MAPPED_SLICE: return "MAPPED_SLICE"; case UNMAPPED_SLICE: return "UNMAPPED_SLICE"; case EXTERNAL: return "EXTERNAL"; case CORE: return "CORE"; case CT_ERROR: break; } return "?"; } /* * Extra error checking on fclose to really ensure data is written. * Care needs to be taken to handle pipes vs real files. * * Returns 0 on success * -1 on failure. */ int paranoid_fclose(FILE *fp) { if (-1 == fflush(fp) && errno != EBADF) { fclose(fp); return -1; } errno = 0; #ifdef HAVE_FSYNC if (-1 == fsync(fileno(fp))) { if (errno != EINVAL) { // eg pipe fclose(fp); return -1; } } #endif return fclose(fp); } /* ---------------------------------------------------------------------- * Reference sequence handling * * These revolve around the refs_t structure, which may potentially be * shared between multiple cram_fd. * * We start with refs_create() to allocate an empty refs_t and then * populate it with @SQ line data using refs_from_header(). This is done on * cram_open(). Also at start up we can call cram_load_reference() which * is used with "scramble -r foo.fa". This replaces the fd->refs with the * new one specified. In either case refs2id() is then called which * maps ref_entry names to @SQ ids (refs_t->ref_id[]). * * Later, possibly within a thread, we will want to know the actual ref * seq itself, obtained by calling cram_get_ref(). This may use the * UR: or M5: fields or the filename specified in the original * cram_load_reference() call. * * Given the potential for multi-threaded reference usage, we have * reference counting (sorry for the confusing double use of "ref") to * track the number of callers interested in any specific reference. */ /* * Frees/unmaps a reference sequence and associated file handles. */ static void ref_entry_free_seq(ref_entry *e) { if (e->mf) mfclose(e->mf); if (e->seq && !e->mf) free(e->seq); e->seq = NULL; e->mf = NULL; } void refs_free(refs_t *r) { RP("refs_free()\n"); if (--r->count > 0) return; if (!r) return; if (r->pool) string_pool_destroy(r->pool); if (r->h_meta) { HashIter *iter = HashTableIterCreate(); HashItem *hi; while ((hi = HashTableIterNext(r->h_meta, iter))) { ref_entry *e = (ref_entry *)hi->data.p; if (!e) continue; ref_entry_free_seq(e); free(e); } HashTableIterDestroy(iter); HashTableDestroy(r->h_meta, 0); } if (r->ref_id) free(r->ref_id); if (r->fp) fclose(r->fp); pthread_mutex_destroy(&r->lock); free(r); } static refs_t *refs_create(void) { refs_t *r = calloc(1, sizeof(*r)); RP("refs_create()\n"); if (!r) return NULL; if (!(r->pool = string_pool_create(8192))) goto err; r->ref_id = NULL; // see refs2id() to populate. r->count = 1; r->last = NULL; r->last_id = -1; r->h_meta = HashTableCreate(16, HASH_DYNAMIC_SIZE | HASH_NONVOLATILE_KEYS); if (!r->h_meta) goto err; pthread_mutex_init(&r->lock, NULL); return r; err: refs_free(r); return NULL; } /* * Loads a FAI file for a reference.fasta. * "is_err" indicates whether failure to load is worthy of emitting an * error message. In some cases (eg with embedded references) we * speculatively load, just incase, and silently ignore errors. * * Returns the refs_t struct on success (maybe newly allocated); * NULL on failure */ refs_t *refs_load_fai(refs_t *r_orig, char *fn, int is_err) { struct stat sb; FILE *fp = NULL; HashData hd; char fai_fn[PATH_MAX]; char line[8192]; refs_t *r = r_orig; int id = 0, id_alloc = 0; RP("refs_load_fai %s\n", fn); if (!r) if (!(r = refs_create())) goto err; /* Open reference, for later use */ if (stat(fn, &sb) != 0) { if (is_err) perror(fn); goto err; } if (r->fp) fclose(r->fp); r->fp = NULL; if (!(r->fn = string_dup(r->pool, fn))) goto err; if (!(r->fp = fopen(fn, "r"))) { if (is_err) perror(fn); goto err; } /* Parse .fai file and load meta-data */ sprintf(fai_fn, "%.*s.fai", PATH_MAX-5, fn); if (stat(fai_fn, &sb) != 0) { if (is_err) perror(fai_fn); goto err; } if (!(fp = fopen(fai_fn, "r"))) { if (is_err) perror(fai_fn); goto err; } while (fgets(line, 8192, fp) != NULL) { ref_entry *e = malloc(sizeof(*e)); char *cp; int n; HashItem *hi; if (!e) return NULL; // id for (cp = line; *cp && !isspace(*cp); cp++) ; *cp++ = 0; e->name = string_dup(r->pool, line); // length while (*cp && isspace(*cp)) cp++; e->length = strtoll(cp, &cp, 10); // offset while (*cp && isspace(*cp)) cp++; e->offset = strtoll(cp, &cp, 10); // bases per line while (*cp && isspace(*cp)) cp++; e->bases_per_line = strtol(cp, &cp, 10); // line length while (*cp && isspace(*cp)) cp++; e->line_length = strtol(cp, &cp, 10); // filename e->fn = r->fn; e->count = 0; e->seq = NULL; e->mf = NULL; hd.p = e; if (!(hi = HashTableAdd(r->h_meta, e->name, strlen(e->name), hd, &n))){ free(e); return NULL; } if (!n) { /* Replace old one if needed. */ ref_entry *r = (ref_entry *)hi->data.p; if (r && (r->count != 0 || r->length != 0)) { /* Keep old one */ free(e); } else { if (r) free(r); hi->data.p = e; } } if (id >= id_alloc) { int x; id_alloc = id_alloc ?id_alloc*2 : 16; r->ref_id = realloc(r->ref_id, id_alloc * sizeof(*r->ref_id)); for (x = id; x < id_alloc; x++) r->ref_id[x] = NULL; } r->ref_id[id] = e; r->nref = ++id; } RP("refs_load_fai %s END (success)\n", fn); return r; err: RP("refs_load_fai %s END (fail)\n", fn); if (fp) fclose(fp); if (!r_orig) refs_free(r); return NULL; } /* * Verifies that the CRAM @SQ lines and .fai files match. */ static void sanitise_SQ_lines(cram_fd *fd) { int i; if (!fd->header) return; if (!fd->refs || !fd->refs->h_meta) return; for (i = 0; i < fd->header->nref; i++) { char *name = fd->header->ref[i].name; HashItem *hi = HashTableSearch(fd->refs->h_meta, name, 0); ref_entry *r; // We may have @SQ lines which have no known .fai, but do not // in themselves pose a problem because they are unused in the file. if (!hi) continue; if (!(r = (ref_entry *)hi->data.p)) continue; if (r->length != fd->header->ref[i].len) { assert(strcmp(r->name, fd->header->ref[i].name) == 0); // Should we also check MD5sums here to ensure the correct // reference was given? fprintf(stderr, "WARNING: Header @SQ length mismatch for " "ref %s, %d vs %d\n", r->name, fd->header->ref[i].len, (int)r->length); // Fixing the parsed @SQ header will make MD:Z: strings work // and also stop it producing N for the sequence. fd->header->ref[i].len = r->length; } } } /* * Indexes references by the order they appear in a BAM file. This may not * necessarily be the same order they appear in the fasta reference file. * * Returns 0 on success * -1 on failure */ int refs2id(refs_t *r, SAM_hdr *h) { int i; if (r->ref_id) free(r->ref_id); if (r->last) r->last = NULL; r->ref_id = calloc(h->nref, sizeof(*r->ref_id)); if (!r->ref_id) return -1; r->nref = h->nref; for (i = 0; i < h->nref; i++) { HashItem *hi; if ((hi = HashTableSearch(r->h_meta, h->ref[i].name, 0))) { r->ref_id[i] = hi->data.p; } else { fprintf(stderr, "Unable to find ref name '%s'\n", h->ref[i].name); } } return 0; } /* * Generates refs_t entries based on @SQ lines in the header. * Returns 0 on success * -1 on failure */ static int refs_from_header(refs_t *r, cram_fd *fd, SAM_hdr *h) { int i; if (!h || h->nref == 0) return 0; //fprintf(stderr, "refs_from_header for %p mode %c\n", fd, fd->mode); /* Existing refs are fine, as long as they're compatible with the hdr. */ i = r->nref; if (r->nref < h->nref) r->nref = h->nref; if (!(r->ref_id = realloc(r->ref_id, r->nref * sizeof(*r->ref_id)))) return -1; for (; i < r->nref; i++) r->ref_id[i] = NULL; /* Copy info from h->ref[i] over to r */ for (i = 0; i < h->nref; i++) { SAM_hdr_type *ty; SAM_hdr_tag *tag; HashData hd; int n; if (r->ref_id[i] && 0 == strcmp(r->ref_id[i]->name, h->ref[i].name)) continue; if (!(r->ref_id[i] = calloc(1, sizeof(ref_entry)))) return -1; if (!h->ref[i].name) return -1; r->ref_id[i]->name = string_dup(r->pool, h->ref[i].name); r->ref_id[i]->length = 0; // marker for not yet loaded /* Initialise likely filename if known */ if ((ty = sam_hdr_find(h, "SQ", "SN", h->ref[i].name))) { if ((tag = sam_hdr_find_key(h, ty, "M5", NULL))) { r->ref_id[i]->fn = string_dup(r->pool, tag->str+3); //fprintf(stderr, "Tagging @SQ %s / %s\n", r->ref_id[i]->name, r->ref_id[i]->fn); } } hd.p = r->ref_id[i]; if (!HashTableAdd(r->h_meta, r->ref_id[i]->name, strlen(r->ref_id[i]->name), hd, &n)) return -1; if (!n) return -1; } return 0; } /* * Converts a directory and a filename into an expanded path, replacing %s * in directory with the filename and %[0-9]+s with portions of the filename * Any remaining parts of filename are added to the end with /%s. */ void expand_cache_path(char *path, char *dir, char *fn) { char *cp; while ((cp = strchr(dir, '%'))) { strncpy(path, dir, cp-dir); path += cp-dir; if (*++cp == 's') { strcpy(path, fn); path += strlen(fn); fn += strlen(fn); cp++; } else if (*cp >= '0' && *cp <= '9') { char *endp; long l; l = strtol(cp, &endp, 10); l = MIN(l, strlen(fn)); if (*endp == 's') { strncpy(path, fn, l); path += l; fn += l; *path = 0; cp = endp+1; } else { *path++ = '%'; *path++ = *cp++; } } else { *path++ = '%'; *path++ = *cp++; } dir = cp; } strcpy(path, dir); path += strlen(dir); if (*fn && path[-1] != '/') *path++ = '/'; strcpy(path, fn); } /* * Make the directory containing path and any prefix directories. */ void mkdir_prefix(char *path, int mode) { char *cp = strrchr(path, '/'); if (!cp) return; *cp = 0; if (is_directory(path)) { *cp = '/'; return; } if (mkdir(path, mode) == 0) { chmod(path, mode); *cp = '/'; return; } mkdir_prefix(path, mode); mkdir(path, mode); chmod(path, mode); *cp = '/'; } /* * Queries the M5 string from the header and attempts to populate the * reference from this using the REF_PATH environment. * * Returns 0 on sucess * -1 on failure */ static int cram_populate_ref(cram_fd *fd, int id, ref_entry *r) { char *ref_path = getenv("REF_PATH"); SAM_hdr_type *ty; SAM_hdr_tag *tag; char path[PATH_MAX], path_tmp[PATH_MAX]; char *local_cache = getenv("REF_CACHE"); mFILE *mf; if (fd->verbose) fprintf(stderr, "cram_populate_ref on fd %p, id %d\n", fd, id); if (!ref_path) ref_path = "."; if (!r->name) return -1; if (!(ty = sam_hdr_find(fd->header, "SQ", "SN", r->name))) return -1; if (!(tag = sam_hdr_find_key(fd->header, ty, "M5", NULL))) goto no_M5; if (fd->verbose) fprintf(stderr, "Querying ref %s\n", tag->str+3); /* Use cache if available */ if (local_cache && *local_cache) { struct stat sb; FILE *fp; expand_cache_path(path, local_cache, tag->str+3); if (0 == stat(path, &sb) && (fp = fopen(path, "r"))) { r->length = sb.st_size; r->offset = r->line_length = r->bases_per_line = 0; r->fn = string_dup(fd->refs->pool, path); if (fd->refs->fp) fclose(fd->refs->fp); fd->refs->fp = fp; fd->refs->fn = r->fn; // Fall back to cram_get_ref() where it'll do the actual // reading of the file. return 0; } } /* Otherwise search */ if ((mf = open_path_mfile(tag->str+3, ref_path, NULL))) { size_t sz; r->seq = mfsteal(mf, &sz); if (r->seq) { r->mf = NULL; } else { // keep mf around as we couldn't detach r->seq = mf->data; r->mf = mf; } r->length = sz; } else { refs_t *refs; char *fn; no_M5: /* Failed to find in search path or M5 cache, see if @SQ UR: tag? */ if (!(tag = sam_hdr_find_key(fd->header, ty, "UR", NULL))) return -1; fn = (strncmp(tag->str+3, "file:", 5) == 0) ? tag->str+8 : tag->str+3; if (fd->refs->fp) { fclose(fd->refs->fp); fd->refs->fp = NULL; } if (!(refs = refs_load_fai(fd->refs, fn, 0))) return -1; sanitise_SQ_lines(fd); fd->refs = refs; if (fd->refs->fp) { fclose(fd->refs->fp); fd->refs->fp = NULL; } if (!fd->refs->fn) return -1; if (-1 == refs2id(fd->refs, fd->header)) return -1; if (!fd->refs->ref_id || !fd->refs->ref_id[id]) return -1; // Local copy already, so fall back to cram_get_ref(). return 0; } /* Populate the local disk cache if required */ if (local_cache && *local_cache) { FILE *fp; int i; expand_cache_path(path, local_cache, tag->str+3); if (fd->verbose) fprintf(stderr, "Path='%s'\n", path); mkdir_prefix(path, 01777); i = 0; do { sprintf(path_tmp, "%s.tmp_%d", path, /*getpid(),*/ i); i++; fp = fopen(path_tmp, "wx"); } while (fp == NULL && errno == EEXIST); if (!fp) { perror(path_tmp); // Not fatal - we have the data already so keep going. return 0; } if (r->length != fwrite(r->seq, 1, r->length, fp)) { perror(path); } if (-1 == paranoid_fclose(fp)) { unlink(path_tmp); } else { if (0 == chmod(path_tmp, 0444)) rename(path_tmp, path); else unlink(path_tmp); } } return 0; } static void cram_ref_incr_locked(refs_t *r, int id) { RP("%d INC REF %d, %d %p\n", gettid(), id, (int)(id>=0?r->ref_id[id]->count+1:-999), id>=0?r->ref_id[id]->seq:(char *)1); if (id < 0 || !r->ref_id[id] || !r->ref_id[id]->seq) return; if (r->last_id == id) r->last_id = -1; ++r->ref_id[id]->count; } void cram_ref_incr(refs_t *r, int id) { pthread_mutex_lock(&r->lock); cram_ref_incr_locked(r, id); pthread_mutex_unlock(&r->lock); } static void cram_ref_decr_locked(refs_t *r, int id) { RP("%d DEC REF %d, %d %p\n", gettid(), id, (int)(id>=0?r->ref_id[id]->count-1:-999), id>=0?r->ref_id[id]->seq:(char *)1); if (id < 0 || !r->ref_id[id] || !r->ref_id[id]->seq) { assert(id < 0 || !r->ref_id[id] || r->ref_id[id]->count >= 0); return; } if (--r->ref_id[id]->count <= 0) { assert(r->ref_id[id]->count == 0); if (r->last_id >= 0) { if (r->ref_id[r->last_id]->count <= 0 && r->ref_id[r->last_id]->seq) { RP("%d FREE REF %d (%p)\n", gettid(), r->last_id, r->ref_id[r->last_id]->seq); ref_entry_free_seq(r->ref_id[r->last_id]); r->ref_id[r->last_id]->length = 0; } } r->last_id = id; } } void cram_ref_decr(refs_t *r, int id) { pthread_mutex_lock(&r->lock); cram_ref_decr_locked(r, id); pthread_mutex_unlock(&r->lock); } /* * Used by cram_ref_load and cram_ref_get. The file handle will have * already been opened, so we can catch it. The ref_entry *e informs us * of whether this is a multi-line fasta file or a raw MD5 style file. * Either way we create a single contiguous sequence. * * Returns all or part of a reference sequence on success (malloced); * NULL on failure. */ char *load_ref_portion(FILE *fp, ref_entry *e, int start, int end) { off_t offset, len; char *seq; if (end < start) end = start; /* * Compute locations in file. This is trivial for the MD5 files, but * is still necessary for the fasta variants. */ offset = e->line_length ? e->offset + (start-1)/e->bases_per_line * e->line_length + (start-1) % e->bases_per_line : start-1; len = (e->line_length ? e->offset + (end-1)/e->bases_per_line * e->line_length + (end-1) % e->bases_per_line : end-1) - offset + 1; if (0 != fseeko(fp, offset, SEEK_SET)) { perror("fseeko() on reference file"); return NULL; } if (len == 0 || !(seq = malloc(len))) { return NULL; } if (len != fread(seq, 1, len, fp)) { perror("fread() on reference file"); free(seq); return NULL; } /* Strip white-space if required. */ if (len != end-start+1) { int i, j; char *cp = seq; char *cp_to; for (i = j = 0; i < len; i++) { if (cp[i] >= '!' && cp[i] <= '~') cp[j++] = toupper(cp[i]); } cp_to = cp+j; if (cp_to - seq != end-start+1) { fprintf(stderr, "Malformed reference file?\n"); free(seq); return NULL; } } else { int i; for (i = 0; i < len; i++) { seq[i] = toupper(seq[i]); } } return seq; } /* * Load the entire reference 'id'. * This also increments the reference count by 1. * * Returns ref_entry on success; * NULL on failure */ ref_entry *cram_ref_load(refs_t *r, int id) { ref_entry *e = r->ref_id[id]; int start = 1, end = e->length; char *seq; if (e->seq) { return e; } assert(e->count == 0); if (r->last) { #ifdef REF_DEBUG int idx = 0; for (idx = 0; idx < r->nref; idx++) if (r->last == r->ref_id[idx]) break; RP("%d cram_ref_load DECR %d => %d\n", gettid(), idx, r->last->count-1); #endif assert(r->last->count > 0); if (--r->last->count <= 0) { RP("%d FREE REF %d (%p)\n", gettid(), id, r->last->seq); if (r->last->seq) ref_entry_free_seq(r->last); } } /* Open file if it's not already the current open reference */ if (strcmp(r->fn, e->fn) || r->fp == NULL) { if (r->fp) fclose(r->fp); r->fn = e->fn; if (!(r->fp = fopen(r->fn, "r"))) { perror(r->fn); return NULL; } } RP("%d Loading ref %d (%d..%d)\n", gettid(), id, start, end); if (!(seq = load_ref_portion(r->fp, e, start, end))) { return NULL; } RP("%d Loaded ref %d (%d..%d) = %p\n", gettid(), id, start, end, seq); RP("%d INC REF %d, %d\n", gettid(), id, (int)(e->count+1)); e->seq = seq; e->mf = NULL; e->count++; /* * Also keep track of last used ref so incr/decr loops on the same * sequence don't cause load/free loops. */ RP("%d cram_ref_load INCR %d => %d\n", gettid(), id, e->count+1); r->last = e; e->count++; return e; } /* * Returns a portion of a reference sequence from start to end inclusive. * The returned pointer is owned by either the cram_file fd or by the * internal refs_t structure and should not be freed by the caller. * * The difference is whether or not this refs_t is in use by just the one * cram_fd or by multiples, or whether we have multiple threads accessing * references. In either case fd->shared will be true and we start using * reference counting to track the number of users of a specific reference * sequence. * * Otherwise the ref seq returned is allocated as part of cram_fd itself * and will be freed up on the next call to cram_get_ref or cram_close. * * To return the entire reference sequence, specify start as 1 and end * as 0. * * To cease using a reference, call cram_ref_decr(). * * Returns reference on success, * NULL on failure */ char *cram_get_ref(cram_fd *fd, int id, int start, int end) { ref_entry *r; char *seq; int ostart = start; if (id == -1) return NULL; /* FIXME: axiomatic query of r->seq being true? * Or shortcut for unsorted data where we load once and never free? */ //fd->shared_ref = 1; // hard code for now to simplify things if (fd->ref_lock) pthread_mutex_lock(fd->ref_lock); RP("%d cram_get_ref on fd %p, id %d, range %d..%d\n", gettid(), fd, id, start, end); /* * Unsorted data implies we want to fetch an entire reference at a time. * We just deal with this at the moment by claiming we're sharing * references instead, which has the same requirement. */ if (fd->unsorted) fd->shared_ref = 1; /* Sanity checking: does this ID exist? */ if (id >= fd->refs->nref) { fprintf(stderr, "No reference found for id %d\n", id); if (fd->ref_lock) pthread_mutex_unlock(fd->ref_lock); return NULL; } if (!fd->refs || !fd->refs->ref_id[id]) { fprintf(stderr, "No reference found for id %d\n", id); if (fd->ref_lock) pthread_mutex_unlock(fd->ref_lock); return NULL; } if (!(r = fd->refs->ref_id[id])) { fprintf(stderr, "No reference found for id %d\n", id); if (fd->ref_lock) pthread_mutex_unlock(fd->ref_lock); return NULL; } /* * It has an entry, but may not have been populated yet. * Any manually loaded .fai files have their lengths known. * A ref entry computed from @SQ lines (M5 or UR field) will have * r->length == 0 unless it's been loaded once and verified that we have * an on-disk filename for it. * * 19 Sep 2013: Moved the lock here as the cram_populate_ref code calls * open_path_mfile and libcurl, which isn't multi-thread safe unless I * rewrite my code to have one curl handle per thread. */ pthread_mutex_lock(&fd->refs->lock); if (r->length == 0) { if (cram_populate_ref(fd, id, r) == -1) { fprintf(stderr, "Failed to populate reference for id %d\n", id); pthread_mutex_unlock(&fd->refs->lock); if (fd->ref_lock) pthread_mutex_unlock(fd->ref_lock); return NULL; } r = fd->refs->ref_id[id]; if (fd->unsorted) cram_ref_incr_locked(fd->refs, id); } /* * We now know that we the filename containing the reference, so check * for limits. If it's over half the reference we'll load all of it in * memory as this will speed up subsequent calls. */ if (end < 1) end = r->length; if (end >= r->length) end = r->length; if (start < 1) return NULL; if (end - start >= 0.5*r->length || fd->shared_ref) { start = 1; end = r->length; } /* * Maybe we have it cached already? If so use it. * * Alternatively if we don't have the sequence but we're sharing * references and/or are asking for the entire length of it, then * load the full reference into the refs structure and return * a pointer to that one instead. */ if (fd->shared_ref || r->seq || (start == 1 && end == r->length)) { char *cp; if (id >= 0) { if (r->seq) { cram_ref_incr_locked(fd->refs, id); } else { ref_entry *e; if (!(e = cram_ref_load(fd->refs, id))) { pthread_mutex_unlock(&fd->refs->lock); if (fd->ref_lock) pthread_mutex_unlock(fd->ref_lock); return NULL; } /* unsorted data implies cache ref indefinitely, to avoid * continually loading and unloading. */ if (fd->unsorted) cram_ref_incr_locked(fd->refs, id); } fd->ref = NULL; /* We never access it directly */ fd->ref_start = 1; fd->ref_end = r->length; fd->ref_id = id; cp = fd->refs->ref_id[id]->seq + ostart-1; } else { fd->ref = NULL; cp = NULL; } RP("%d cram_get_ref returning for id %d, count %d\n", gettid(), id, (int)r->count); pthread_mutex_unlock(&fd->refs->lock); if (fd->ref_lock) pthread_mutex_unlock(fd->ref_lock); return cp; } /* * Otherwise we're not sharing, we don't have a copy of it already and * we're only asking for a small portion of it. * * In this case load up just that segment ourselves, freeing any old * small segments in the process. */ /* Unmapped ref ID */ if (id < 0) { if (fd->ref_free) { free(fd->ref_free); fd->ref_free = NULL; } fd->ref = NULL; fd->ref_id = id; pthread_mutex_unlock(&fd->refs->lock); if (fd->ref_lock) pthread_mutex_unlock(fd->ref_lock); return NULL; } /* Open file if it's not already the current open reference */ if (strcmp(fd->refs->fn, r->fn) || fd->refs->fp == NULL) { if (fd->refs->fp) fclose(fd->refs->fp); fd->refs->fn = r->fn; if (!(fd->refs->fp = fopen(fd->refs->fn, "r"))) { perror(fd->refs->fn); pthread_mutex_unlock(&fd->refs->lock); if (fd->ref_lock) pthread_mutex_unlock(fd->ref_lock); return NULL; } } if (!(fd->ref = load_ref_portion(fd->refs->fp, r, start, end))) { pthread_mutex_unlock(&fd->refs->lock); if (fd->ref_lock) pthread_mutex_unlock(fd->ref_lock); return NULL; } if (fd->ref_free) free(fd->ref_free); fd->ref_id = id; fd->ref_start = start; fd->ref_end = end; fd->ref_free = fd->ref; seq = fd->ref; pthread_mutex_unlock(&fd->refs->lock); if (fd->ref_lock) pthread_mutex_unlock(fd->ref_lock); return seq + ostart - start; } /* * If fd has been opened for reading, it may be permitted to specify 'fn' * as NULL and let the code auto-detect the reference by parsing the * SAM header @SQ lines. */ int cram_load_reference(cram_fd *fd, char *fn) { int ret = 0; if (fn) { fd->refs = refs_load_fai(fd->refs, fn, !(fd->embed_ref && fd->mode == 'r')); fn = fd->refs ? fd->refs->fn : NULL; if (!fn) ret = -1; sanitise_SQ_lines(fd); } fd->ref_fn = fn; if (!fd->refs && fd->header) { if (!(fd->refs = refs_create())) return -1; if (-1 == refs_from_header(fd->refs, fd, fd->header)) return -1; } if (-1 == refs2id(fd->refs, fd->header)) return -1; return ret; } /* ---------------------------------------------------------------------- * Containers */ /* * Creates a new container, specifying the maximum number of slices * and records permitted. * * Returns cram_container ptr on success * NULL on failure */ cram_container *cram_new_container(int nrec, int nslice) { cram_container *c = calloc(1, sizeof(*c)); enum cram_DS_ID id; if (!c) return NULL; c->curr_ref = -2; c->max_c_rec = nrec * nslice; c->curr_c_rec = 0; c->max_rec = nrec; c->record_counter = 0; c->num_bases = 0; c->s_num_bases = 0; c->max_slice = nslice; c->curr_slice = 0; c->pos_sorted = 1; c->max_apos = 0; c->multi_seq = 0; c->bams = NULL; if (!(c->slices = (cram_slice **)calloc(nslice, sizeof(cram_slice *)))) goto err; c->slice = NULL; if (!(c->comp_hdr = cram_new_compression_header())) goto err; c->comp_hdr_block = NULL; for (id = DS_RN; id < DS_TN; id++) if (!(c->stats[id] = cram_stats_create())) goto err; //c->aux_B_stats = cram_stats_create(); if (!(c->tags_used = HashTableCreate(16, HASH_DYNAMIC_SIZE))) goto err; c->refs_used = 0; c->last_name = ""; c->crc32 = 0; return c; err: if (c) { if (c->slices) free(c->slices); free(c); } return NULL; } void cram_free_container(cram_container *c) { enum cram_DS_ID id; int i; if (!c) return; if (c->refs_used) free(c->refs_used); if (c->landmark) free(c->landmark); if (c->comp_hdr) cram_free_compression_header(c->comp_hdr); if (c->comp_hdr_block) cram_free_block(c->comp_hdr_block); if (c->slices) { for (i = 0; i < c->max_slice; i++) if (c->slices[i]) cram_free_slice(c->slices[i]); free(c->slices); } for (id = DS_RN; id < DS_TN; id++) if (c->stats[id]) cram_stats_free(c->stats[id]); //if (c->aux_B_stats) cram_stats_free(c->aux_B_stats); if (c->tags_used) { HashItem *hi; HashIter *iter = HashTableIterCreate(); while (iter && (hi = HashTableIterNext(c->tags_used, iter))) { cram_tag_map *tm = (cram_tag_map *)hi->data.p; cram_codec *c = tm->codec; if (c) c->free(c); free(tm); } HashTableDestroy(c->tags_used, 0); HashTableIterDestroy(iter); } free(c); } /* * Reads a container header. * * Returns cram_container on success * NULL on failure or no container left (fd->err == 0). */ cram_container *cram_read_container(cram_fd *fd) { cram_container c2, *c; int i, s; size_t rd = 0; uint32_t crc = 0; fd->err = 0; fd->eof = 0; memset(&c2, 0, sizeof(c2)); if (IS_CRAM_1_VERS(fd)) { if ((s = itf8_decode_crc(fd, &c2.length, &crc)) == -1) { fd->eof = 1; return NULL; } else { rd+=s; } } else { uint32_t len; if ((s = int32_decode(fd, &c2.length)) == -1) { if (CRAM_MAJOR_VERS(fd->version) == 2 && CRAM_MINOR_VERS(fd->version) == 0) fd->eof = 1; // EOF blocks arrived in v2.1 else fd->eof = fd->empty_container ? 1 : 2; return NULL; } else { rd+=s; } len = le_int4(c2.length); crc = crc32(0L, (unsigned char *)&len, 4); } if ((s = itf8_decode_crc(fd, &c2.ref_seq_id, &crc)) == -1) return NULL; else rd+=s; if ((s = itf8_decode_crc(fd, &c2.ref_seq_start, &crc))== -1) return NULL; else rd+=s; if ((s = itf8_decode_crc(fd, &c2.ref_seq_span, &crc)) == -1) return NULL; else rd+=s; if ((s = itf8_decode_crc(fd, &c2.num_records, &crc)) == -1) return NULL; else rd+=s; if (IS_CRAM_1_VERS(fd)) { c2.record_counter = 0; c2.num_bases = 0; } else { if ((s = itf8_decode_crc(fd, &c2.record_counter, &crc)) == -1) return NULL; else rd += s; if ((s = ltf8_decode_crc(fd, &c2.num_bases, &crc))== -1) return NULL; else rd += s; } if ((s = itf8_decode_crc(fd, &c2.num_blocks, &crc)) == -1) return NULL; else rd+=s; if ((s = itf8_decode_crc(fd, &c2.num_landmarks, &crc))== -1) return NULL; else rd+=s; if (!(c = calloc(1, sizeof(*c)))) return NULL; *c = c2; if (!(c->landmark = malloc(c->num_landmarks * sizeof(int32_t))) && c->num_landmarks) { fd->err = errno; cram_free_container(c); return NULL; } for (i = 0; i < c->num_landmarks; i++) { if ((s = itf8_decode_crc(fd, &c->landmark[i], &crc)) == -1) { cram_free_container(c); return NULL; } else { rd += s; } } if (IS_CRAM_3_VERS(fd)) { if (-1 == int32_decode(fd, (int32_t *)&c->crc32)) return NULL; else rd+=4; if (crc != c->crc32) { fprintf(stderr, "Container header CRC32 failure\n"); cram_free_container(c); return NULL; } } c->offset = rd; c->slices = NULL; c->curr_slice = 0; c->max_slice = c->num_landmarks; c->slice_rec = 0; c->curr_rec = 0; c->max_rec = 0; if (c->ref_seq_id == -2) { c->multi_seq = 1; fd->multi_seq = 1; } fd->empty_container = (c->num_records == 0 && c->ref_seq_id == -1 && c->ref_seq_start == 0x454f46 /* EOF */) ? 1 : 0; return c; } /* * Writes a container structure. * * Returns 0 on success * -1 on failure */ int cram_write_container(cram_fd *fd, cram_container *c) { char buf_a[1024], *buf = buf_a, *cp; int i; if (55 + c->num_landmarks * 5 >= 1024) buf = malloc(55 + c->num_landmarks * 5); cp = buf; *(int32_t *)cp = le_int4(c->length); cp += 4; if (c->multi_seq) { cp += itf8_put(cp, -2); cp += itf8_put(cp, 0); cp += itf8_put(cp, 0); } else { cp += itf8_put(cp, c->ref_seq_id); cp += itf8_put(cp, c->ref_seq_start); cp += itf8_put(cp, c->ref_seq_span); } cp += itf8_put(cp, c->num_records); if (IS_CRAM_3_VERS(fd)) cp += ltf8_put(cp, c->record_counter); else cp += itf8_put(cp, c->record_counter); cp += ltf8_put(cp, c->num_bases); cp += itf8_put(cp, c->num_blocks); cp += itf8_put(cp, c->num_landmarks); for (i = 0; i < c->num_landmarks; i++) cp += itf8_put(cp, c->landmark[i]); if (IS_CRAM_3_VERS(fd)) { c->crc32 = crc32(0L, (uc *)buf, cp-buf); cp[0] = c->crc32 & 0xff; cp[1] = (c->crc32 >> 8) & 0xff; cp[2] = (c->crc32 >> 16) & 0xff; cp[3] = (c->crc32 >> 24) & 0xff; cp += 4; } if (cp-buf != CRAM_IO_WRITE(buf, 1, cp-buf, fd)) { if (buf != buf_a) free(buf); return -1; } if (buf != buf_a) free(buf); return 0; } // common component shared by cram_flush_container{,_mt} static int cram_flush_container2(cram_fd *fd, cram_container *c) { int i, j; //fprintf(stderr, "Writing container %d, sum %u\n", c->record_counter, sum); /* Write the container struct itself */ if (0 != cram_write_container(fd, c)) return -1; /* And the compression header */ if (0 != cram_write_block(fd, c->comp_hdr_block)) return -1; /* Followed by the slice blocks */ for (i = 0; i < c->curr_slice; i++) { cram_slice *s = c->slices[i]; if (0 != cram_write_block(fd, s->hdr_block)) return -1; for (j = 0; j < s->hdr->num_blocks; j++) { if (0 != cram_write_block(fd, s->block[j])) return -1; } } return CRAM_IO_FLUSH(fd) == 0 ? 0 : -1; } /* * Flushes a completely or partially full container to disk, writing * container structure, header and blocks. This also calls the encoder * functions. * * Returns 0 on success * -1 on failure */ int cram_flush_container(cram_fd *fd, cram_container *c) { /* Encode the container blocks and generate compression header */ if (0 != cram_encode_container(fd, c)) return -1; return cram_flush_container2(fd, c); } typedef struct { cram_fd *fd; cram_container *c; } cram_job; void *cram_flush_thread(void *arg) { cram_job *j = (cram_job *)arg; /* Encode the container blocks and generate compression header */ if (0 != cram_encode_container(j->fd, j->c)) { fprintf(stderr, "cram_encode_container failed\n"); return NULL; } return arg; } static int cram_flush_result(cram_fd *fd) { int i, ret = 0; t_pool_result *r; while ((r = t_pool_next_result(fd->rqueue))) { cram_job *j = (cram_job *)r->data; cram_container *c; if (!j) { t_pool_delete_result(r, 0); return -1; } fd = j->fd; c = j->c; if (0 != cram_flush_container2(fd, c)) return -1; /* Free the container */ for (i = 0; i < c->max_slice; i++) { cram_free_slice(c->slices[i]); c->slices[i] = NULL; } c->slice = NULL; c->curr_slice = 0; cram_free_container(c); ret |= CRAM_IO_FLUSH(fd) == 0 ? 0 : -1; t_pool_delete_result(r, 1); } return ret; } int cram_flush_container_mt(cram_fd *fd, cram_container *c) { cram_job *j; if (!fd->pool) return cram_flush_container(fd, c); if (!(j = malloc(sizeof(*j)))) return -1; j->fd = fd; j->c = c; t_pool_dispatch(fd->pool, fd->rqueue, cram_flush_thread, j); return cram_flush_result(fd); } /* ---------------------------------------------------------------------- * Compression headers; the first part of the container */ /* * Creates a new blank container compression header * * Returns header ptr on success * NULL on failure */ cram_block_compression_hdr *cram_new_compression_header(void) { cram_block_compression_hdr *hdr = calloc(1, sizeof(*hdr)); if (!hdr) return NULL; if (!(hdr->TD_blk = cram_new_block(CORE, 0))) { free(hdr); return NULL; } if (!(hdr->TD = HashTableCreate(16, HASH_DYNAMIC_SIZE))) { cram_free_block(hdr->TD_blk); free(hdr); return NULL; } return hdr; } void cram_free_compression_header(cram_block_compression_hdr *hdr) { int i; if (hdr->landmark) free(hdr->landmark); if (hdr->preservation_map) HashTableDestroy(hdr->preservation_map, 0); for (i = 0; i < CRAM_MAP_HASH; i++) { cram_map *m, *m2; for (m = hdr->rec_encoding_map[i]; m; m = m2) { m2 = m->next; if (m->codec) m->codec->free(m->codec); free(m); } } for (i = 0; i < CRAM_MAP_HASH; i++) { cram_map *m, *m2; for (m = hdr->tag_encoding_map[i]; m; m = m2) { m2 = m->next; if (m->codec) m->codec->free(m->codec); free(m); } } for (i = 0; i < DS_END; i++) { if (hdr->codecs[i]) hdr->codecs[i]->free(hdr->codecs[i]); } if (hdr->TL) free(hdr->TL); if (hdr->TD_blk) cram_free_block(hdr->TD_blk); if (hdr->TD) HashTableDestroy(hdr->TD, 0); free(hdr); } /* ---------------------------------------------------------------------- * Slices and slice headers */ void cram_free_slice_header(cram_block_slice_hdr *hdr) { if (!hdr) return; if (hdr->block_content_ids) free(hdr->block_content_ids); if (hdr->tags) HashTableDestroy(hdr->tags, 0); free(hdr); return; } void cram_free_slice(cram_slice *s) { if (!s) return; if (s->hdr_block) cram_free_block(s->hdr_block); if (s->block) { int i; if (s->hdr) { for (i = 0; i < s->hdr->num_blocks; i++) { cram_free_block(s->block[i]); } } free(s->block); } if (s->block_by_id) free(s->block_by_id); if (s->hdr) cram_free_slice_header(s->hdr); if (s->seqs_blk) cram_free_block(s->seqs_blk); if (s->qual_blk) cram_free_block(s->qual_blk); if (s->name_blk) cram_free_block(s->name_blk); if (s->aux_blk) cram_free_block(s->aux_blk); if (s->base_blk) cram_free_block(s->base_blk); if (s->soft_blk) cram_free_block(s->soft_blk); #ifdef TN_external if (s->tn_blk) cram_free_block(s->tn_blk); #endif if (s->cigar) free(s->cigar); if (s->crecs) free(s->crecs); if (s->features) free(s->features); #ifndef TN_external if (s->TN) free(s->TN); #endif if (s->pair[0]) HashTableDestroy(s->pair[0], 0); if (s->pair[1]) HashTableDestroy(s->pair[1], 0); if (s->aux_block) free(s->aux_block); free(s); } /* * Creates a new empty slice in memory, for subsequent writing to * disk. * * Returns cram_slice ptr on success * NULL on failure */ cram_slice *cram_new_slice(enum cram_content_type type, int nrecs) { cram_slice *s = calloc(1, sizeof(*s)); if (!s) return NULL; if (!(s->hdr = (cram_block_slice_hdr *)calloc(1, sizeof(*s->hdr)))) goto err; s->hdr->content_type = type; s->hdr_block = NULL; s->block = NULL; s->block_by_id = NULL; s->last_apos = 0; s->id = 0; if (!(s->crecs = malloc(nrecs * sizeof(cram_record)))) goto err; s->cigar = NULL; s->cigar_alloc = 0; s->ncigar = 0; if (!(s->seqs_blk = cram_new_block(EXTERNAL, 0))) goto err; if (!(s->qual_blk = cram_new_block(EXTERNAL, DS_QS))) goto err; if (!(s->name_blk = cram_new_block(EXTERNAL, DS_RN))) goto err; if (!(s->aux_blk = cram_new_block(EXTERNAL, DS_aux))) goto err; if (!(s->base_blk = cram_new_block(EXTERNAL, DS_IN))) goto err; if (!(s->soft_blk = cram_new_block(EXTERNAL, DS_SC))) goto err; s->features = NULL; s->nfeatures = s->afeatures = 0; #ifndef TN_external s->TN = NULL; s->nTN = s->aTN = 0; #endif // Volatile keys as we do realloc in dstring if (!(s->pair[0] = HashTableCreate(10000, HASH_DYNAMIC_SIZE))) goto err; if (!(s->pair[1] = HashTableCreate(10000, HASH_DYNAMIC_SIZE))) goto err; #ifdef BA_external s->BA_len = 0; #endif //memset(&s->blocks[0], 0, 1024*sizeof(s->blocks[0])); //if (!(s->blocks[ID("QS")] = cram_new_block(EXTERNAL, ID("QS")))) goto err; //if (!(s->blocks[ID("RN")] = cram_new_block(EXTERNAL, ID("RN")))) goto err; //if (!(s->blocks[ID("IN")] = cram_new_block(EXTERNAL, ID("IN")))) goto err; //if (!(s->blocks[ID("SC")] = cram_new_block(EXTERNAL, ID("SC")))) goto err; s->BD_crc = 0; s->SD_crc = 0; return s; err: if (s) cram_free_slice(s); return NULL; } /* * Loads an entire slice. * FIXME: In 1.0 the native unit of slices within CRAM is broken * as slices contain references to objects in other slices. * To work around this while keeping the slice oriented outer loop * we read all slices and stitch them together into a fake large * slice instead. * * Returns cram_slice ptr on success * NULL on failure */ cram_slice *cram_read_slice(cram_fd *fd) { cram_block *b = cram_read_block(fd); cram_slice *s = calloc(1, sizeof(*s)); int i, n, max_id, min_id; if (!b || !s) goto err; s->hdr_block = b; switch (b->content_type) { case MAPPED_SLICE: case UNMAPPED_SLICE: if (!(s->hdr = cram_decode_slice_header(fd, b))) goto err; break; default: fprintf(stderr, "Unexpected block of type %s\n", cram_content_type2str(b->content_type)); goto err; } if (s->hdr->num_blocks < 1) { fprintf(stderr, "Slice does not include any data blocks.\n"); goto err; } s->block = calloc(n = s->hdr->num_blocks, sizeof(*s->block)); if (!s->block) goto err; for (max_id = i = 0, min_id = INT_MAX; i < n; i++) { if (!(s->block[i] = cram_read_block(fd))) goto err; if (s->block[i]->content_type == EXTERNAL) { if (max_id < s->block[i]->content_id) max_id = s->block[i]->content_id; if (min_id > s->block[i]->content_id) min_id = s->block[i]->content_id; } } if (min_id >= 0 && max_id < 1024) { if (!(s->block_by_id = calloc(1024, sizeof(s->block[0])))) goto err; for (i = 0; i < n; i++) { if (s->block[i]->content_type != EXTERNAL) continue; s->block_by_id[s->block[i]->content_id] = s->block[i]; } } /* Initialise encoding/decoding tables */ s->cigar = NULL; s->cigar_alloc = 0; s->ncigar = 0; if (!(s->seqs_blk = cram_new_block(EXTERNAL, 0))) goto err; if (!(s->qual_blk = cram_new_block(EXTERNAL, DS_QS))) goto err; if (!(s->name_blk = cram_new_block(EXTERNAL, DS_RN))) goto err; if (!(s->aux_blk = cram_new_block(EXTERNAL, DS_aux))) goto err; if (!(s->base_blk = cram_new_block(EXTERNAL, DS_IN))) goto err; if (!(s->soft_blk = cram_new_block(EXTERNAL, DS_SC))) goto err; s->crecs = NULL; s->last_apos = s->hdr->ref_seq_start; s->id = fd->slice_num++; return s; err: if (b) cram_free_block(b); if (s) { s->hdr_block = NULL; cram_free_slice(s); } return NULL; } /* ---------------------------------------------------------------------- * CRAM file definition (header) */ /* * Reads a CRAM file definition structure. * Returns file_def ptr on success * NULL on failure */ cram_file_def *cram_read_file_def(cram_fd *fd) { cram_file_def *def = malloc(sizeof(*def)); if (!def) return NULL; if (26 != CRAM_IO_READ(&def->magic[0], 1, 26, fd)) { free(def); return NULL; } if (memcmp(def->magic, "CRAM", 4) != 0) { free(def); return NULL; } if (def->major_version > 3) { fprintf(stderr, "CRAM version number mismatch\n" "Expected 1.x, 2.x or 3.x, got %d.%d\n", def->major_version, def->minor_version); free(def); return NULL; } fd->first_container += 26; fd->last_slice = 0; return def; } /* * Writes a cram_file_def structure to cram_fd. * Returns 0 on success * -1 on failure */ int cram_write_file_def(cram_fd *fd, cram_file_def *def) { return (CRAM_IO_WRITE(&def->magic[0], 1, 26, fd) == 26) ? 0 : -1; } void cram_free_file_def(cram_file_def *def) { if (def) free(def); } /* ---------------------------------------------------------------------- * SAM header I/O */ /* * Reads the SAM header from the first CRAM data block. * Also performs minimal parsing to extract read-group * and sample information. * Returns SAM hdr ptr on success * NULL on failure */ SAM_hdr *cram_read_SAM_hdr(cram_fd *fd) { int32_t header_len; char *header; SAM_hdr *hdr; /* 1.1 onwards stores the header in the first block of a container */ if (IS_CRAM_1_VERS(fd)) { /* Length */ if (-1 == int32_decode(fd, &header_len)) return NULL; /* Alloc and read */ if (header_len < 0 || NULL == (header = malloc((size_t) header_len+1))) return NULL; if (header_len != CRAM_IO_READ(header, 1, header_len, fd)) return NULL; header[header_len] = '\0'; fd->first_container += 4 + header_len; } else { cram_container *c = cram_read_container(fd); cram_block *b; int i, len; if (!c) return NULL; fd->first_container += c->length + c->offset; if (c->num_blocks < 1) { cram_free_container(c); return NULL; } if (!(b = cram_read_block(fd))) { cram_free_container(c); return NULL; } if (cram_uncompress_block(b) < 0) { cram_free_container(c); return NULL; } len = b->comp_size + 2 + 4*IS_CRAM_3_VERS(fd) + itf8_size(b->content_id) + itf8_size(b->uncomp_size) + itf8_size(b->comp_size); /* Extract header from 1st block */ if (-1 == int32_get(b, &header_len) || header_len < 0 || /* Spec. says signed... why? */ b->uncomp_size - 4 < header_len) { cram_free_container(c); cram_free_block(b); return NULL; } if (NULL == (header = malloc((size_t) header_len + 1))) { cram_free_container(c); cram_free_block(b); return NULL; } memcpy(header, BLOCK_END(b), header_len); header[header_len] = '\0'; cram_free_block(b); /* Consume any remaining blocks */ for (i = 1; i < c->num_blocks; i++) { if (!(b = cram_read_block(fd))) { cram_free_container(c); return NULL; } len += b->comp_size + 2 + 4*IS_CRAM_3_VERS(fd) + itf8_size(b->content_id) + itf8_size(b->uncomp_size) + itf8_size(b->comp_size); cram_free_block(b); } if (c->length > 0 && len > 0 && c->length > len) { // Consume padding char *pads = malloc(c->length - len); if (!pads) { cram_free_container(c); return NULL; } if (c->length - len != CRAM_IO_READ(pads, 1, c->length - len, fd)) { cram_free_container(c); return NULL; } free(pads); } cram_free_container(c); } /* Parse */ #ifdef SAMTOOLS hdr = sam_hdr_parse_(header, header_len); #else hdr = sam_hdr_parse(header, header_len); #endif free(header); return hdr; } /* * Converts 'in' to a full pathname to store in out. * Out must be at least PATH_MAX bytes long. */ static void full_path(char *out, char *in) { if (*in == '/') { strncpy(out, in, PATH_MAX); out[PATH_MAX-1] = 0; } else { int len; // unable to get dir or out+in is too long if (!getcwd(out, PATH_MAX) || (len = strlen(out))+1+strlen(in) >= PATH_MAX) { strncpy(out, in, PATH_MAX); out[PATH_MAX-1] = 0; return; } sprintf(out+len, "/%.*s", PATH_MAX - len, in); // FIXME: cope with `pwd`/../../../foo.fa ? } } /* * Writes a CRAM SAM header. * Returns 0 on success * -1 on failure */ int cram_write_SAM_hdr(cram_fd *fd, SAM_hdr *hdr) { int header_len; int blank_block = (CRAM_MAJOR_VERS(fd->version) >= 3); /* Fix M5 strings */ if (fd->refs && !fd->no_ref) { int i; for (i = 0; i < hdr->nref; i++) { SAM_hdr_type *ty; char *ref; if (!(ty = sam_hdr_find(hdr, "SQ", "SN", hdr->ref[i].name))) return -1; if (!sam_hdr_find_key(hdr, ty, "M5", NULL)) { char unsigned buf[16], buf2[33]; int j, rlen; MD5_CTX md5; if (!fd->refs->ref_id || !fd->refs->ref_id[i]) return -1; rlen = fd->refs->ref_id[i]->length; MD5_Init(&md5); ref = cram_get_ref(fd, i, 1, rlen); if (NULL == ref) return -1; rlen = fd->refs->ref_id[i]->length; /* In case it just loaded */ MD5_Update(&md5, ref, rlen); MD5_Final(buf, &md5); cram_ref_decr(fd->refs, i); for (j = 0; j < 16; j++) { buf2[j*2+0] = "0123456789abcdef"[buf[j]>>4]; buf2[j*2+1] = "0123456789abcdef"[buf[j]&15]; } buf2[32] = 0; if (sam_hdr_update(hdr, ty, "M5", buf2, NULL)) return -1; } if (fd->ref_fn) { char ref_fn[PATH_MAX]; full_path(ref_fn, fd->ref_fn); if (sam_hdr_update(hdr, ty, "UR", ref_fn, NULL)) return -1; } } } if (sam_hdr_rebuild(hdr)) return -1; /* Length */ header_len = sam_hdr_length(hdr); /* Create block(s) inside a container */ cram_block *b = cram_new_block(FILE_HEADER, 0); cram_container *c = cram_new_container(0, 0); int padded_length; char *pads; if (!b || !c) { if (b) cram_free_block(b); if (c) cram_free_container(c); return -1; } int32_put(b, header_len); BLOCK_APPEND(b, sam_hdr_str(hdr), header_len); BLOCK_UPLEN(b); // Compress header block if V3.0 and above if (CRAM_MAJOR_VERS(fd->version) >= 3 && fd->level > 0) { int method = 1<use_bz2) method |= 1<use_lzma) method |= 1<level); } if (blank_block) { c->length = b->comp_size + 2 + 4*IS_CRAM_3_VERS(fd) + itf8_size(b->content_id) + itf8_size(b->uncomp_size) + itf8_size(b->comp_size); c->num_blocks = 2; c->num_landmarks = 2; if (!(c->landmark = malloc(2*sizeof(*c->landmark)))) { cram_free_block(b); cram_free_container(c); return -1; } c->landmark[0] = 0; c->landmark[1] = c->length; // Plus extra storage for uncompressed secondary blank block padded_length = MIN(c->length*.5, 10000); c->length += padded_length + 2 + 4*IS_CRAM_3_VERS(fd) + itf8_size(b->content_id) + itf8_size(padded_length)*2; } else { // Pad the block instead. c->num_blocks = 1; c->num_landmarks = 1; if (!(c->landmark = malloc(sizeof(*c->landmark)))) return -1; c->landmark[0] = 0; padded_length = MAX(c->length*1.5, 10000) - c->length; c->length = b->comp_size + padded_length + 2 + 4*IS_CRAM_3_VERS(fd) + itf8_size(b->content_id) + itf8_size(b->uncomp_size) + itf8_size(b->comp_size); if (NULL == (pads = calloc(1, padded_length))) { cram_free_block(b); cram_free_container(c); return -1; } BLOCK_APPEND(b, pads, padded_length); BLOCK_UPLEN(b); free(pads); } if (-1 == cram_write_container(fd, c)) { cram_free_block(b); cram_free_container(c); return -1; } if (-1 == cram_write_block(fd, b)) { cram_free_block(b); cram_free_container(c); return -1; } if (blank_block) { BLOCK_RESIZE(b, padded_length); memset(BLOCK_DATA(b), 0, padded_length); BLOCK_SIZE(b) = padded_length; BLOCK_UPLEN(b); b->method = RAW; if (-1 == cram_write_block(fd, b)) { cram_free_block(b); cram_free_container(c); return -1; } } cram_free_block(b); cram_free_container(c); if (-1 == refs_from_header(fd->refs, fd, fd->header)) return -1; if (-1 == refs2id(fd->refs, fd->header)) return -1; CRAM_IO_FLUSH(fd); RP("=== Finishing saving header ===\n"); return 0; } /* ---------------------------------------------------------------------- * The top-level cram opening, closing and option handling */ /* * Initialises the lookup tables. These could be global statics, but they're * clumsy to setup in a multi-threaded environment unless we generate * verbatim code and include that. */ static void cram_init_tables(cram_fd *fd) { int i; memset(fd->L1, 4, 256); fd->L1['A'] = 0; fd->L1['a'] = 0; fd->L1['C'] = 1; fd->L1['c'] = 1; fd->L1['G'] = 2; fd->L1['g'] = 2; fd->L1['T'] = 3; fd->L1['t'] = 3; memset(fd->L2, 5, 256); fd->L2['A'] = 0; fd->L2['a'] = 0; fd->L2['C'] = 1; fd->L2['c'] = 1; fd->L2['G'] = 2; fd->L2['g'] = 2; fd->L2['T'] = 3; fd->L2['t'] = 3; fd->L2['N'] = 4; fd->L2['n'] = 4; if (IS_CRAM_1_VERS(fd)) { for (i = 0; i < 0x200; i++) { int f = 0; if (i & CRAM_FPAIRED) f |= BAM_FPAIRED; if (i & CRAM_FPROPER_PAIR) f |= BAM_FPROPER_PAIR; if (i & CRAM_FUNMAP) f |= BAM_FUNMAP; if (i & CRAM_FREVERSE) f |= BAM_FREVERSE; if (i & CRAM_FREAD1) f |= BAM_FREAD1; if (i & CRAM_FREAD2) f |= BAM_FREAD2; if (i & CRAM_FSECONDARY) f |= BAM_FSECONDARY; if (i & CRAM_FQCFAIL) f |= BAM_FQCFAIL; if (i & CRAM_FDUP) f |= BAM_FDUP; fd->bam_flag_swap[i] = f; } for (i = 0; i < 0x1000; i++) { int g = 0; if (i & BAM_FPAIRED) g |= CRAM_FPAIRED; if (i & BAM_FPROPER_PAIR) g |= CRAM_FPROPER_PAIR; if (i & BAM_FUNMAP) g |= CRAM_FUNMAP; if (i & BAM_FREVERSE) g |= CRAM_FREVERSE; if (i & BAM_FREAD1) g |= CRAM_FREAD1; if (i & BAM_FREAD2) g |= CRAM_FREAD2; if (i & BAM_FSECONDARY) g |= CRAM_FSECONDARY; if (i & BAM_FQCFAIL) g |= CRAM_FQCFAIL; if (i & BAM_FDUP) g |= CRAM_FDUP; fd->cram_flag_swap[i] = g; } } else { /* NOP */ for (i = 0; i < 0x1000; i++) fd->bam_flag_swap[i] = i; for (i = 0; i < 0x1000; i++) fd->cram_flag_swap[i] = i; } memset(fd->cram_sub_matrix, 4, 32*32); for (i = 0; i < 32; i++) { fd->cram_sub_matrix[i]['A'&0x1f]=0; fd->cram_sub_matrix[i]['C'&0x1f]=1; fd->cram_sub_matrix[i]['G'&0x1f]=2; fd->cram_sub_matrix[i]['T'&0x1f]=3; fd->cram_sub_matrix[i]['N'&0x1f]=4; } for (i = 0; i < 20; i+=4) { int j; for (j = 0; j < 20; j++) { fd->cram_sub_matrix["ACGTN"[i>>2]&0x1f][j]=3; fd->cram_sub_matrix["ACGTN"[i>>2]&0x1f][j]=3; fd->cram_sub_matrix["ACGTN"[i>>2]&0x1f][j]=3; fd->cram_sub_matrix["ACGTN"[i>>2]&0x1f][j]=3; } fd->cram_sub_matrix["ACGTN"[i>>2]&0x1f][CRAM_SUBST_MATRIX[i+0]&0x1f]=0; fd->cram_sub_matrix["ACGTN"[i>>2]&0x1f][CRAM_SUBST_MATRIX[i+1]&0x1f]=1; fd->cram_sub_matrix["ACGTN"[i>>2]&0x1f][CRAM_SUBST_MATRIX[i+2]&0x1f]=2; fd->cram_sub_matrix["ACGTN"[i>>2]&0x1f][CRAM_SUBST_MATRIX[i+3]&0x1f]=3; } } // Default version numbers for CRAM static int major_version = 3; static int minor_version = 0; cram_fd * cram_io_close(cram_fd * fd, int * fclose_result) { if ( fd ) { if ( fd->fp_in ) { fclose(fd->fp_in); fd->fp_in = NULL; } if ( fd->fp_out ) { int const r = paranoid_fclose(fd->fp_out); if ( fclose_result ) *fclose_result = r; fd->fp_out = NULL; } #if defined(CRAM_IO_CUSTOM_BUFFERING) if ( fd->fp_in_callbacks ) { fd->fp_in_callbacks = fd->fp_in_callback_deallocate_function(fd->fp_in_callbacks); } if ( fd->fp_in_buffer ) { fd->fp_in_buffer = cram_io_deallocate_input_buffer(fd->fp_in_buffer); } if ( fd->fp_out_callbacks ) { fd->fp_out_callbacks = fd->fp_out_callback_deallocate_function(fd->fp_out_callbacks); } if ( fd->fp_out_buffer ) { fd->fp_out_buffer = cram_io_deallocate_output_buffer(fd->fp_out_buffer); } #endif free(fd); fd = NULL; } return fd; } #if defined(CRAM_IO_CUSTOM_BUFFERING) cram_fd * cram_io_open_by_callbacks( char const * filename, cram_io_allocate_read_input_t callback_allocate_function, cram_io_deallocate_read_input_t callback_deallocate_function, size_t const bufsize, int const decompress ) { cram_fd * fd = (cram_fd *)malloc(sizeof(cram_fd)); if ( ! fd ) return cram_io_close(fd,0); memset(fd,0,sizeof(cram_fd)); fd->fp_in_callback_allocate_function = callback_allocate_function; fd->fp_in_callback_deallocate_function = callback_deallocate_function; fd->fp_in_callbacks = fd->fp_in_callback_allocate_function(filename,decompress); if ( ! fd->fp_in_callbacks ) return cram_io_close(fd,0); fd->fp_in_buffer = cram_io_allocate_input_buffer(bufsize); if ( ! fd->fp_in_buffer ) { return cram_io_close(fd,0); } return fd; } // FIXME: make a shared interface with cram_io_open_by_callbacks above cram_fd * cram_io_openw_by_callbacks( char const * filename, cram_io_allocate_write_output_t callback_allocate_function, cram_io_deallocate_write_output_t callback_deallocate_function, size_t const bufsize ) { cram_fd * fd = (cram_fd *)malloc(sizeof(cram_fd)); if ( ! fd ) return cram_io_close(fd,0); memset(fd,0,sizeof(cram_fd)); fd->fp_out_callback_allocate_function = callback_allocate_function; fd->fp_out_callback_deallocate_function = callback_deallocate_function; fd->fp_out_callbacks = fd->fp_out_callback_allocate_function(filename); if ( ! fd->fp_out_callbacks ) return cram_io_close(fd,0); fd->fp_out_buffer = cram_io_allocate_output_buffer(bufsize); if ( ! fd->fp_out_buffer ) { return cram_io_close(fd,0); } return fd; } #endif // CRAM_IO_CUSTOM_BUFFERING cram_fd * cram_io_open( char const * filename, char const * mode, char const * fmode ) { cram_fd * fd = (cram_fd *)malloc(sizeof(cram_fd)); if ( ! fd ) return cram_io_close(fd,0); memset(fd,0,sizeof(cram_fd)); fd->fp_in_callback_allocate_function = NULL; fd->fp_in_callback_deallocate_function = cram_IO_deallocate_cram_io_input; fd->fp_out_callback_allocate_function = NULL; fd->fp_out_callback_deallocate_function = cram_IO_deallocate_cram_io_output; if ( *mode == 'r' ) { size_t bufsize = 0; int isreg = 0; if ( strcmp(filename,"-") == 0 ) { fd->fp_in = stdin; } else { fd->fp_in = fopen(filename, fmode); } if ( ! fd->fp_in ) return cram_io_close(fd,0); #if defined(CRAM_IO_CUSTOM_BUFFERING) #if defined(HAVE_STDIO_EXT_H) #if defined(HAVE_FILENO) && defined(HAVE_FSTAT) do { int const filedesc = fileno(fd->fp_in); struct stat sb; int const fdret = fstat(filedesc,&sb); isreg = (fdret == 0) && S_ISREG(sb.st_mode); } while ( 0 ); #endif /* get input buffer size */ if ( isreg ) { /* read one character to force buffer to be set up */ int const c = fgetc(fd->fp_in); /* EOF? */ if ( c != EOF ) { /* get buffer size */ int cc; bufsize = __fbufsize(fd->fp_in); /* put character back (C standard says this is guaranteed to * work for a single character) */ cc = ungetc(c,fd->fp_in); /* check result anyway */ if ( cc == EOF ) { return cram_io_close(fd,0); } } } #endif // HAVE_STDIO_EXT_H fd->fp_in_callbacks = cram_IO_allocate_cram_io_input_from_C_FILE(fd->fp_in); if ( ! fd->fp_in_callbacks ) return cram_io_close(fd,0); if ( !bufsize ) bufsize = 32*1024; do { fd->fp_in_buffer = cram_io_allocate_input_buffer(bufsize); if ( ! fd->fp_in_buffer ) { return cram_io_close(fd,0); } else { setvbuf(fd->fp_in, NULL, _IONBF, 0); } } while ( 0 ); #endif // CRAM_IO_CUSTOM_BUFFERING } else { if (filename) { if ( strcmp(filename,"-") == 0 ) { fd->fp_out = stdout; } else { fd->fp_out = fopen(filename, fmode); } if ( ! fd->fp_out ) return cram_io_close(fd,0); } else { // E.g. opening a CRAM in-memory file. fd->fp_out = NULL; } #if defined(CRAM_IO_CUSTOM_BUFFERING) fd->fp_out_callbacks = cram_IO_allocate_cram_io_output_from_C_FILE(fd->fp_out); if ( ! fd->fp_out_callbacks ) return cram_io_close(fd,0); int bufsize = 32*1024; // FIXME: use same bufsize calc as above fd->fp_out_buffer = cram_io_allocate_output_buffer(bufsize); if ( ! fd->fp_out_buffer ) { return cram_io_close(fd,0); } else if (fd->fp_out) { setvbuf(fd->fp_out, NULL, _IONBF, 0); } #endif // CRAM_IO_CUSTOM_BUFFERING } return fd; } /* * Opens a CRAM file for read (mode "rb") or write ("wb"). * The filename may be "-" to indicate stdin or stdout. * * Returns file handle on success * NULL on failure. */ cram_fd *cram_open(const char *filename, const char *mode) { int i; char *cp; char fmode[3]= { mode[0], '\0', '\0' }; cram_fd *fd = NULL; if (strlen(mode) > 1 && (mode[1] == 'b' || mode[1] == 'c')) { fmode[1] = 'b'; } fd = cram_io_open(filename,mode,fmode); if (!fd) return cram_io_close(fd,0); fd->level = 5; if (strlen(mode) > 2 && mode[2] >= '0' && mode[2] <= '9') fd->level = mode[2] - '0'; fd->mode = *mode; fd->first_container = 0; if (fd->mode == 'r') { /* Reader */ if (!(fd->file_def = cram_read_file_def(fd))) goto err; fd->version = fd->file_def->major_version * 256 + fd->file_def->minor_version; if (!(fd->header = cram_read_SAM_hdr(fd))) goto err; } else { /* Writer */ cram_file_def def; if (major_version == 1) { fprintf(stderr, "Unable to write to version 1.0\n"); goto err; } def.magic[0] = 'C'; def.magic[1] = 'R'; def.magic[2] = 'A'; def.magic[3] = 'M'; def.major_version = major_version; def.minor_version = minor_version; memset(def.file_id, 0, 20); strncpy(def.file_id, filename, 20); if (0 != cram_write_file_def(fd, &def)) goto err; fd->version = def.major_version * 256 + def.minor_version; /* SAM header written later */ } cram_init_tables(fd); fd->prefix = strdup((cp = strrchr(filename, '/')) ? cp+1 : filename); if (!fd->prefix) goto err; fd->slice_num = 0; fd->first_base = fd->last_base = -1; fd->record_counter = 0; fd->ctr = NULL; fd->refs = refs_create(); if (!fd->refs) goto err; fd->ref_id = -2; fd->ref = NULL; fd->decode_md = 0; fd->verbose = 0; fd->seqs_per_slice = SEQS_PER_SLICE; fd->bases_per_slice = BASES_PER_SLICE; fd->slices_per_container = SLICE_PER_CNT; fd->embed_ref = 0; fd->no_ref = 0; fd->ignore_md5 = 0; fd->ignore_chksum = 1; // Some disagreement in the specification of these fd->use_bz2 = 0; fd->use_rans = IS_CRAM_3_VERS(fd); fd->use_lzma = 0; fd->multi_seq = 0; fd->unsorted = 0; fd->shared_ref = 0; fd->index = NULL; fd->own_pool = 0; fd->pool = NULL; fd->rqueue = NULL; fd->job_pending = NULL; fd->ooc = 0; fd->binning = BINNING_NONE; fd->required_fields = INT_MAX; for (i = 0; i < DS_END; i++) fd->m[i] = cram_new_metrics(); if (!(fd->tags_used = HashTableCreate(16, HASH_DYNAMIC_SIZE))) goto err; fd->next_content_id = DS_END; fd->range.refid = -2; // no ref. fd->eof = 1; fd->ref_fn = NULL; fd->bl = NULL; /* Initialise dummy refs from the @SQ headers */ if (-1 == refs_from_header(fd->refs, fd, fd->header)) goto err; return fd; err: fd = cram_io_close(fd,0); return NULL; } #if defined(CRAM_IO_CUSTOM_BUFFERING) /* * Opens a CRAM file for input via callbacks * * Returns file handle on success * NULL on failure. */ cram_fd *cram_open_by_callbacks( char const * filename, cram_io_allocate_read_input_t callback_allocate_function, cram_io_deallocate_read_input_t callback_deallocate_function, size_t const bufsize ) { int i; char *cp; cram_fd *fd = NULL; fd = cram_io_open_by_callbacks(filename, callback_allocate_function, callback_deallocate_function, bufsize, 0); if (!fd) return cram_io_close(fd,0); fd->level = 5; fd->mode = 'r'; fd->first_container = 0; /* Reader */ if (!(fd->file_def = cram_read_file_def(fd))) goto err; fd->version = fd->file_def->major_version * 256 + fd->file_def->minor_version; if (!(fd->header = cram_read_SAM_hdr(fd))) goto err; cram_init_tables(fd); fd->prefix = strdup((cp = strrchr(filename, '/')) ? cp+1 : filename); if (!fd->prefix) goto err; fd->slice_num = 0; fd->first_base = fd->last_base = -1; fd->record_counter = 0; fd->ctr = NULL; fd->refs = refs_create(); if (!fd->refs) goto err; fd->ref_id = -2; fd->ref = NULL; fd->decode_md = 0; fd->verbose = 0; fd->seqs_per_slice = SEQS_PER_SLICE; fd->bases_per_slice = BASES_PER_SLICE; fd->slices_per_container = SLICE_PER_CNT; fd->embed_ref = 0; fd->no_ref = 0; fd->ignore_md5 = 0; fd->ignore_chksum = 0; fd->use_bz2 = 0; fd->use_rans = IS_CRAM_3_VERS(fd); fd->use_lzma = 0; fd->multi_seq = 0; fd->unsorted = 0; fd->shared_ref = 0; fd->index = NULL; fd->own_pool = 0; fd->pool = NULL; fd->rqueue = NULL; fd->job_pending = NULL; fd->ooc = 0; fd->binning = BINNING_NONE; fd->required_fields = INT_MAX; for (i = 0; i < DS_END; i++) fd->m[i] = cram_new_metrics(); if (!(fd->tags_used = HashTableCreate(16, HASH_DYNAMIC_SIZE))) goto err; fd->next_content_id = DS_END; fd->range.refid = -2; // no ref. fd->eof = 1; fd->ref_fn = NULL; fd->bl = NULL; /* Initialise dummy refs from the @SQ headers */ if (-1 == refs_from_header(fd->refs, fd, fd->header)) goto err; return fd; err: fd = cram_io_close(fd,0); return NULL; } /* * FIXME: make shared interface with code above. * * Opens a CRAM file for write via callbacks * * Returns file handle on success * NULL on failure. */ cram_fd *cram_openw_by_callbacks( char const * filename, cram_io_allocate_write_output_t callback_allocate_function, cram_io_deallocate_write_output_t callback_deallocate_function, size_t const bufsize ) { int i; char *cp; cram_fd *fd = NULL; fd = cram_io_openw_by_callbacks(filename, callback_allocate_function, callback_deallocate_function, bufsize); if (!fd) return cram_io_close(fd,0); fd->level = 5; fd->mode = 'w'; fd->first_container = 0; { /* Writer */ cram_file_def def; if (major_version == 1) { fprintf(stderr, "Unable to write to version 1.0\n"); goto err; } def.magic[0] = 'C'; def.magic[1] = 'R'; def.magic[2] = 'A'; def.magic[3] = 'M'; def.major_version = major_version; def.minor_version = minor_version; memset(def.file_id, 0, 20); if (filename) strncpy(def.file_id, filename, 20); if (0 != cram_write_file_def(fd, &def)) goto err; fd->version = def.major_version * 256 + def.minor_version; /* SAM header written later */ } cram_init_tables(fd); if (filename) { fd->prefix = strdup((cp = strrchr(filename, '/')) ? cp+1 : filename); if (!fd->prefix) goto err; } else { fd->prefix = strdup(""); } fd->slice_num = 0; fd->first_base = fd->last_base = -1; fd->record_counter = 0; fd->ctr = NULL; fd->refs = refs_create(); if (!fd->refs) goto err; fd->ref_id = -2; fd->ref = NULL; fd->decode_md = 0; fd->verbose = 0; fd->seqs_per_slice = SEQS_PER_SLICE; fd->bases_per_slice = BASES_PER_SLICE; fd->slices_per_container = SLICE_PER_CNT; fd->embed_ref = 0; fd->no_ref = 0; fd->ignore_md5 = 0; fd->use_bz2 = 0; fd->use_rans = IS_CRAM_3_VERS(fd); fd->use_lzma = 0; fd->multi_seq = 0; fd->unsorted = 0; fd->shared_ref = 0; fd->index = NULL; fd->own_pool = 0; fd->pool = NULL; fd->rqueue = NULL; fd->job_pending = NULL; fd->ooc = 0; fd->binning = BINNING_NONE; fd->required_fields = INT_MAX; for (i = 0; i < DS_END; i++) fd->m[i] = cram_new_metrics(); if (!(fd->tags_used = HashTableCreate(16, HASH_DYNAMIC_SIZE))) goto err; fd->next_content_id = DS_END; fd->range.refid = -2; // no ref. fd->eof = 1; fd->ref_fn = NULL; fd->bl = NULL; /* Initialise dummy refs from the @SQ headers */ if (-1 == refs_from_header(fd->refs, fd, fd->header)) goto err; return fd; err: fd = cram_io_close(fd,0); return NULL; } #endif /* * Flushes a CRAM file. * Useful for when writing to stdout without wishing to close the stream. * * Returns 0 on success * -1 on failure */ int cram_flush(cram_fd *fd) { if (!fd) return -1; if (fd->mode == 'w' && fd->ctr) { if(fd->ctr->slice) cram_update_curr_slice(fd->ctr); if (-1 == cram_flush_container_mt(fd, fd->ctr)) return -1; } return 0; } /* * Writes an EOF block to a CRAM file. * * Returns 0 on success * -1 on failure */ int cram_write_eof_block(cram_fd *fd) { if (IS_CRAM_3_VERS(fd)) { if (1 != CRAM_IO_WRITE( "\x0f\x00\x00\x00\xff\xff\xff\xff" // Cont HDR "\x0f\xe0\x45\x4f\x46\x00\x00\x00" // Cont HDR "\x00\x01\x00" // Cont HDR "\x05\xbd\xd9\x4f" // CRC32 //"\xa8\x2a\x1b\xb9" // CRC32C "\x00\x01\x00\x06\x06" // Comp.HDR blk "\x01\x00\x01\x00\x01\x00" // Comp.HDR blk "\xee\x63\x01\x4b", // CRC32 //"\xe9\x70\xd3\x86", // CRC32C 38, 1, fd)) { fd = cram_io_close(fd,0); return -1; } } else { if (1 != CRAM_IO_WRITE("\x0b\x00\x00\x00\xff\xff\xff\xff" "\x0f\xe0\x45\x4f\x46\x00\x00\x00" "\x00\x01\x00\x00\x01\x00\x06\x06" "\x01\x00\x01\x00\x01\x00", 30, 1, fd)) { fd = cram_io_close(fd,0); return -1; } } return cram_io_flush_output_buffer(fd); } /* * Closes a CRAM file. * Returns 0 on success * -1 on failure */ int cram_close(cram_fd *fd) { spare_bams *bl, *next; int i; int rclose = 0; if (!fd) { fd = cram_io_close(fd,0); return -1; } if (fd->mode == 'w' && fd->ctr) { if(fd->ctr->slice) cram_update_curr_slice(fd->ctr); if (-1 == cram_flush_container_mt(fd, fd->ctr)) { fd = cram_io_close(fd,0); return -1; } } if (fd->pool && fd->eof >= 0) { t_pool_flush(fd->pool); if (0 != cram_flush_result(fd)) { fd = cram_io_close(fd,0); return -1; } pthread_mutex_destroy(fd->metrics_lock); pthread_mutex_destroy(fd->ref_lock); pthread_mutex_destroy(fd->bam_list_lock); free(fd->metrics_lock); free(fd->ref_lock); free(fd->bam_list_lock); fd->ctr = NULL; // prevent double freeing //fprintf(stderr, "CRAM: destroy queue %p\n", fd->rqueue); t_results_queue_destroy(fd->rqueue); } if (fd->mode == 'w') { /* Write EOF block */ if (0 != cram_write_eof_block(fd)) return -1; // if (1 != fwrite("\x00\x00\x00\x00\xff\xff\xff\xff" // "\xff\xe0\x45\x4f\x46\x00\x00\x00" // "\x00\x00\x00", 19, 1, fd->fp)) // return -1; } for (bl = fd->bl; bl; bl = next) { int i, max_rec = fd->seqs_per_slice * fd->slices_per_container; next = bl->next; for (i = 0; i < max_rec; i++) { if (bl->bams[i]) free(bl->bams[i]); } free(bl->bams); free(bl); } if (fd->file_def) cram_free_file_def(fd->file_def); if (fd->header) sam_hdr_free(fd->header); free(fd->prefix); if (fd->ctr) cram_free_container(fd->ctr); if (fd->refs) refs_free(fd->refs); if (fd->ref_free) free(fd->ref_free); for (i = 0; i < DS_END; i++) if (fd->m[i]) free(fd->m[i]); if (fd->tags_used) HashTableDestroy(fd->tags_used, 1); if (fd->index) cram_index_free(fd); if (fd->own_pool && fd->pool) t_pool_destroy(fd->pool, 0); /* rclose == return value for flush and close in case of CRAM output */ fd = cram_io_close(fd, &rclose); return rclose; } /* * Returns 1 if we hit an EOF while reading. */ int cram_eof(cram_fd *fd) { return fd->eof; } /* * Sets options on the cram_fd. See CRAM_OPT_* definitions in cram_structs.h. * Use this immediately after opening. * * Returns 0 on success * -1 on failure */ int cram_set_option(cram_fd *fd, enum cram_option opt, ...) { int r; va_list args; va_start(args, opt); r = cram_set_voption(fd, opt, args); va_end(args); return r; } /* * Sets options on the cram_fd. See CRAM_OPT_* definitions in cram_structs.h. * Use this immediately after opening. * * Returns 0 on success * -1 on failure */ int cram_set_voption(cram_fd *fd, enum cram_option opt, va_list args) { refs_t *refs; switch (opt) { case CRAM_OPT_DECODE_MD: fd->decode_md = va_arg(args, int); break; case CRAM_OPT_PREFIX: if (fd->prefix) free(fd->prefix); if (!(fd->prefix = strdup(va_arg(args, char *)))) return -1; break; case CRAM_OPT_VERBOSITY: fd->verbose = va_arg(args, int); break; case CRAM_OPT_SEQS_PER_SLICE: fd->seqs_per_slice = va_arg(args, int); break; case CRAM_OPT_BASES_PER_SLICE: fd->bases_per_slice = va_arg(args, int); break; case CRAM_OPT_SLICES_PER_CONTAINER: fd->slices_per_container = va_arg(args, int); break; case CRAM_OPT_EMBED_REF: fd->embed_ref = va_arg(args, int); break; case CRAM_OPT_NO_REF: fd->no_ref = va_arg(args, int); break; case CRAM_OPT_IGNORE_MD5: fd->ignore_md5 = va_arg(args, int); break; case CRAM_OPT_IGNORE_CHKSUM: fd->ignore_chksum = va_arg(args, int); break; case CRAM_OPT_USE_BZIP2: fd->use_bz2 = va_arg(args, int); break; case CRAM_OPT_USE_ARITH: case CRAM_OPT_USE_RANS: fd->use_rans = va_arg(args, int); break; case CRAM_OPT_USE_LZMA: fd->use_lzma = va_arg(args, int); break; case CRAM_OPT_SHARED_REF: fd->shared_ref = 1; refs = va_arg(args, refs_t *); if (refs != fd->refs) { if (fd->refs) refs_free(fd->refs); fd->refs = refs; fd->refs->count++; } break; case CRAM_OPT_RANGE: fd->range = *va_arg(args, cram_range *); return cram_seek_to_refpos(fd, &fd->range); case CRAM_OPT_REFERENCE: return cram_load_reference(fd, va_arg(args, char *)); case CRAM_OPT_VERSION: { int major, minor; char *s = va_arg(args, char *); if (2 != sscanf(s, "%d.%d", &major, &minor)) { fprintf(stderr, "Malformed version string %s\n", s); return -1; } if (!((major == 1 && minor == 0) || (major == 2 && (minor == 0 || minor == 1)) || (major == 3 && minor == 0))) { fprintf(stderr, "Unknown version string; " "use 1.0, 2.0, 2.1 or 3.0\n"); return -1; } if (major == 1 && minor == 0 && fd && fd->mode != 'r') { fprintf(stderr, "Unable to write to version 1.0\n"); return -1; } major_version = major; minor_version = minor; break; } case CRAM_OPT_MULTI_SEQ_PER_SLICE: fd->multi_seq = va_arg(args, int); break; case CRAM_OPT_NTHREADS: { int nthreads = va_arg(args, int); if (nthreads > 1) { if (!(fd->pool = t_pool_init(nthreads*2, nthreads))) return -1; fd->rqueue = t_results_queue_init(); fd->metrics_lock = malloc(sizeof(pthread_mutex_t)); fd->ref_lock = malloc(sizeof(pthread_mutex_t)); fd->bam_list_lock = malloc(sizeof(pthread_mutex_t)); pthread_mutex_init(fd->metrics_lock, NULL); pthread_mutex_init(fd->ref_lock, NULL); pthread_mutex_init(fd->bam_list_lock, NULL); fd->shared_ref = 1; fd->own_pool = 1; } break; } case CRAM_OPT_THREAD_POOL: fd->pool = va_arg(args, t_pool *); if (fd->pool) { fd->rqueue = t_results_queue_init(); fd->metrics_lock = malloc(sizeof(pthread_mutex_t)); fd->ref_lock = malloc(sizeof(pthread_mutex_t)); fd->bam_list_lock = malloc(sizeof(pthread_mutex_t)); pthread_mutex_init(fd->metrics_lock, NULL); pthread_mutex_init(fd->ref_lock, NULL); pthread_mutex_init(fd->bam_list_lock, NULL); } fd->shared_ref = 1; // Needed to avoid clobbering ref between threads fd->own_pool = 0; //fd->qsize = 1; //fd->decoded = calloc(fd->qsize, sizeof(cram_container *)); //t_pool_dispatch(fd->pool, cram_decoder_thread, fd); break; case CRAM_OPT_BINNING: fd->binning = va_arg(args, int); break; case CRAM_OPT_REQUIRED_FIELDS: fd->required_fields = va_arg(args, int); break; default: fprintf(stderr, "Unknown CRAM option code %d\n", opt); return -1; } return 0; } io_lib-1.14.6/io_lib/cram_index.c0000644000031500020650000003565512547702405013513 00000000000000/* * Copyright (c) 2013 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * Author: James Bonfield, Wellcome Trust Sanger Institute. 2013 * * Support for CRAM index format: foo.cram.crai */ /* * The index is a gzipped tab-delimited text file with one line per slice. * The columns are: * 1: reference number (0 to N-1, as per BAM ref_id) * 2: reference position of 1st read in slice (1..?) * 3: number of reads in slice * 4: offset of container start (relative to end of SAM header, so 1st * container is offset 0). * 5: slice number within container (ie which landmark). * * In memory, we hold this in a nested containment list. Each list element is * a cram_index struct. Each element in turn can contain its own list of * cram_index structs. * * Any start..end range which is entirely contained within another (and * earlier as it is sorted) range will be held within it. This ensures that * the outer list will never have containments and we can safely do a * binary search to find the first range which overlaps any given coordinate. */ #ifdef HAVE_CONFIG_H #include "io_lib_config.h" #endif #include #include #include #include #include #include #include #include #include #include #include "io_lib/cram.h" #include "io_lib/os.h" #include "io_lib/zfio.h" #if 0 static void dump_index_(cram_index *e, int level) { int i, n; n = printf("%*s%d / %d .. %d, ", level*4, "", e->refid, e->start, e->end); printf("%*soffset %"PRId64"\n", MAX(0,50-n), "", e->offset); for (i = 0; i < e->nslice; i++) { dump_index_(&e->e[i], level+1); } } static void dump_index(cram_fd *fd) { int i; for (i = 0; i < fd->index_sz; i++) { dump_index_(&fd->index[i], 0); } } #endif typedef char * (*fgets_functions)(char * s, int size, void * fp); static char * zfgets_func(char * s, int size, void * fp) { return zfgets(s,size,(zfp *)fp); } #if defined(CRAM_IO_CUSTOM_BUFFERING) static char * cram_io_input_buffer_fgets_func(char * s, int size, void * fp) { return cram_io_input_buffer_fgets(s,size,fp); } #endif static int cram_index_load_private(cram_fd *fd, void * fp, fgets_functions fgets_func) { char line[1024]; cram_index *idx = NULL; cram_index **idx_stack = NULL, *ep, e; int idx_stack_alloc = 0, idx_stack_ptr = 0; fd->index = calloc((fd->index_sz = 1), sizeof(*fd->index)); if (!fd->index) return -1; idx = &fd->index[0]; idx->refid = -1; idx->start = INT_MIN; idx->end = INT_MAX; idx_stack = calloc(++idx_stack_alloc, sizeof(*idx_stack)); idx_stack[idx_stack_ptr] = idx; while (fgets_func(line, 1024, fp)) { /* 1.1 layout */ char *cp = line; errno = 0; e.refid = strtol (cp, &cp, 10); e.start = strtol (cp, &cp, 10); e.end = strtol (cp, &cp, 10); e.offset = strtoll(cp, &cp, 10); e.slice = strtol (cp, &cp, 10); e.len = strtol (cp, &cp, 10); if (errno == EINVAL || errno == ERANGE) { free(idx_stack); return -1; } e.end += e.start-1; //printf("%d/%d..%d\n", e.refid, e.start, e.end); if (e.refid < -1) { free(idx_stack); fprintf(stderr, "Malformed index file, refid %d\n", e.refid); return -1; } if (e.refid != idx->refid) { if (fd->index_sz < e.refid+2) { size_t index_end = fd->index_sz * sizeof(*fd->index); fd->index_sz = e.refid+2; fd->index = realloc(fd->index, fd->index_sz * sizeof(*fd->index)); memset(((char *)fd->index) + index_end, 0, fd->index_sz * sizeof(*fd->index) - index_end); } idx = &fd->index[e.refid+1]; idx->refid = e.refid; idx->start = INT_MIN; idx->end = INT_MAX; idx->nslice = idx->nalloc = 0; idx->e = NULL; idx_stack[(idx_stack_ptr = 0)] = idx; } while (!(e.start >= idx->start && e.end <= idx->end)) { idx = idx_stack[--idx_stack_ptr]; } // Now contains, so append if (idx->nslice+1 >= idx->nalloc) { idx->nalloc = idx->nalloc ? idx->nalloc*2 : 16; idx->e = realloc(idx->e, idx->nalloc * sizeof(*idx->e)); } e.nalloc = e.nslice = 0; e.e = NULL; *(ep = &idx->e[idx->nslice++]) = e; idx = ep; if (++idx_stack_ptr >= idx_stack_alloc) { idx_stack_alloc *= 2; idx_stack = realloc(idx_stack, idx_stack_alloc*sizeof(*idx_stack)); } idx_stack[idx_stack_ptr] = idx; } free(idx_stack); // dump_index(fd); return 0; } #if defined(CRAM_IO_CUSTOM_BUFFERING) /* * Loads a CRAM .crai index into memory. * * Returns 0 for success * -1 for failure */ int cram_index_load_via_callbacks( cram_fd *fd, char const * fn, cram_io_allocate_read_input_t callback_allocate_function, cram_io_deallocate_read_input_t callback_deallocate_function ) { cram_fd * input = NULL; int r = -1; static char const * indexsuffix = ".crai"; char * indexfn = NULL; size_t const fnsize = strlen(fn); size_t const suffixsize = strlen(indexsuffix); size_t const indexfnsize = fnsize+suffixsize+1; if ( !(indexfn = (char *)malloc(indexfnsize)) ) { r = -1; goto cleanup; } memcpy(indexfn, fn, fnsize); memcpy(indexfn+fnsize,indexsuffix,suffixsize); indexfn[fnsize+suffixsize] = 0; if ( ! (input = cram_io_open_by_callbacks(indexfn,callback_allocate_function,callback_deallocate_function,32*1024,1/* decompress */)) ) { r = -1; goto cleanup; } r = cram_index_load_private(fd,input,cram_io_input_buffer_fgets_func); cleanup: if ( input ) { cram_io_close(input,NULL); input = NULL; } if ( indexfn ) { free(indexfn); indexfn = NULL; } return r; } #endif /* * Loads a CRAM .crai index into memory. * * Returns 0 for success * -1 for failure */ int cram_index_load(cram_fd *fd, char const *fn) { zfp *fp = NULL; char fn2[PATH_MAX]; int r = -1; /* Check if already loaded */ if (fd->index) return 0; /* copy filename */ sprintf(fn2, "%s.crai", fn); /* open index file */ if (!(fp = zfopen(fn2, "r"))) { perror(fn2); return -1; } r = cram_index_load_private(fd,fp,zfgets_func); zfclose(fp); return r; } static void cram_index_free_recurse(cram_index *e) { if (e->e) { int i; for (i = 0; i < e->nslice; i++) { cram_index_free_recurse(&e->e[i]); } free(e->e); } } void cram_index_free(cram_fd *fd) { int i; if (!fd->index) return; for (i = 0; i < fd->index_sz; i++) { cram_index_free_recurse(&fd->index[i]); } free(fd->index); fd->index = NULL; } /* * Searches the index for the first slice overlapping a reference ID * and position, or one immediately preceeding it if none is found in * the index to overlap this position. (Our index may have missing * entries, but we require at least one per reference.) * * If the index finds multiple slices overlapping this position we * return the first one only. Subsequent calls should specifying * "from" as the last slice we checked to find the next one. Otherwise * set "from" to be NULL to find the first one. * * Returns the cram_index pointer on sucess * NULL on failure */ cram_index *cram_index_query(cram_fd *fd, int refid, int pos, cram_index *from) { int i, j, k; cram_index *e; if (refid+1 < 0 || refid+1 >= fd->index_sz) return NULL; i = 0, j = fd->index[refid+1].nslice-1; if (!from) from = &fd->index[refid+1]; for (k = j/2; k != i; k = (j-i)/2 + i) { if (from->e[k].refid > refid) { j = k; continue; } if (from->e[k].refid < refid) { i = k; continue; } if (from->e[k].start >= pos) { j = k; continue; } if (from->e[k].start < pos) { i = k; continue; } } /* The above found *a* bin overlapping, but not necessarily the first */ while (i > 0 && from->e[i-1].end >= pos) i--; /* We may be one bin before the optimum, so check */ while (i+1 < from->nslice && (from->e[i].refid < refid || from->e[i].end < pos)) i++; e = &from->e[i]; return e; } /* * Seek within a cram file. * * Returns 0 on success * -1 on failure */ int cram_seek(cram_fd *fd, off_t offset, int whence) { char buf[65536]; fd->ooc = 0; if (CRAM_IO_SEEK(fd, offset, whence) == 0) return 0; if (!(whence == SEEK_CUR && offset >= 0)) return -1; /* Couldn't fseek, but we're in SEEK_CUR mode so read instead */ while (offset > 0) { int len = MIN(65536, offset); if (len != CRAM_IO_READ(buf, 1, len, fd)) return -1; offset -= len; } return 0; } /* * Skips to a container overlapping the start coordinate listed in * cram_range. * * In theory we call cram_index_query multiple times, once per slice * overlapping the range. However slices may be absent from the index * which makes this problematic. Instead we find the left-most slice * and then read from then on, skipping decoding of slices and/or * whole containers when they don't overlap the specified cram_range. * * Returns 0 on success * -1 on failure */ int cram_seek_to_refpos(cram_fd *fd, cram_range *r) { cram_index *e; // Ideally use an index, so see if we have one. if ((e = cram_index_query(fd, r->refid, r->start, NULL))) { if (0 != cram_seek(fd, e->offset, SEEK_SET)) if (0 != cram_seek(fd, e->offset - fd->first_container, SEEK_CUR)) return -1; } else { fprintf(stderr, "Unknown reference ID. Missing from index?\n"); return -1; } if (fd->ctr) { cram_free_container(fd->ctr); fd->ctr = NULL; fd->ooc = 0; } return 0; } /* * A specialised form of cram_index_build (below) that deals with slices * having multiple references in this (ref_id -2). In this scenario we * decode the slice to look at the RI data series instead. * * Returns 0 on success * -1 on failure */ static int cram_index_build_multiref(cram_fd *fd, cram_container *c, cram_slice *s, zfp *fp, off_t cpos, int32_t landmark, int sz) { int i, ref = -2, ref_start = 0, ref_end; char buf[1024]; if (0 != cram_decode_slice(fd, c, s, fd->header)) return -1; ref_end = INT_MIN; for (i = 0; i < s->hdr->num_records; i++) { if (s->crecs[i].ref_id == ref) { if (ref_end < s->crecs[i].aend) ref_end = s->crecs[i].aend; continue; } if (ref != -2) { sprintf(buf, "%d\t%d\t%d\t%"PRId64"\t%d\t%d\n", ref, ref_start, ref_end - ref_start + 1, (int64_t)cpos, landmark, sz); zfputs(buf, fp); } ref = s->crecs[i].ref_id; ref_start = s->crecs[i].apos; ref_end = INT_MIN; } if (ref != -2) { sprintf(buf, "%d\t%d\t%d\t%"PRId64"\t%d\t%d\n", ref, ref_start, ref_end - ref_start + 1, (int64_t)cpos, landmark, sz); zfputs(buf, fp); } return 0; } /* * Builds an index file. * * fd is a newly opened cram file that we wish to index. * fn_base is the filename of the associated CRAM file. Internally we * add ".crai" to this to get the index filename. * * Returns 0 on success * -1 on failure */ int cram_index_build(cram_fd *fd, const char *fn_base) { cram_container *c; off_t cpos, spos, hpos; zfp *fp; char fn_idx[PATH_MAX]; int seekable; size_t len; if ((len=strlen(fn_base)) > PATH_MAX-6) return -1; if (len >= 5 && strcmp(&fn_base[len-5], ".crai") == 0) strcpy(fn_idx, fn_base); else sprintf(fn_idx, "%s.crai", fn_base); if (!(fp = zfopen(fn_idx, "wz"))) { perror(fn_idx); return -1; } cpos = CRAM_IO_TELLO(fd); if (cpos >= 0) { seekable = 1; } else { seekable = 0; cpos = fd->first_container; } while ((c = cram_read_container(fd))) { int j; if (fd->err) { perror("Cram container read"); return 1; } if (seekable) { hpos = CRAM_IO_TELLO(fd); assert(hpos == cpos + c->offset); } else { hpos = cpos + c->offset; } if (!(c->comp_hdr_block = cram_read_block(fd))) return 1; assert(c->comp_hdr_block->content_type == COMPRESSION_HEADER); c->comp_hdr = cram_decode_compression_header(fd, c->comp_hdr_block); if (!c->comp_hdr) return -1; // 2.0 format for (j = 0; j < c->num_landmarks; j++) { char buf[1024]; cram_slice *s; int sz; if (seekable) { spos = CRAM_IO_TELLO(fd); assert(spos - cpos - c->offset == c->landmark[j]); } else { spos = cpos + c->offset + c->landmark[j]; } if (!(s = cram_read_slice(fd))) { zfclose(fp); return -1; } if (seekable) { sz = (int)(CRAM_IO_TELLO(fd) - spos); } else { sz = j+1 < c->num_landmarks ? c->landmark[j+1] - c->landmark[j] : c->length - c->landmark[c->num_landmarks-1]; } if (s->hdr->ref_seq_id == -2) { cram_index_build_multiref(fd, c, s, fp, cpos, c->landmark[j], sz); } else { sprintf(buf, "%d\t%d\t%d\t%"PRId64"\t%d\t%d\n", s->hdr->ref_seq_id, s->hdr->ref_seq_start, s->hdr->ref_seq_span, (int64_t)cpos, c->landmark[j], sz); zfputs(buf, fp); } cram_free_slice(s); } if (seekable) { cpos = CRAM_IO_TELLO(fd); assert(cpos == hpos + c->length); } else { cpos = hpos + c->length; } cram_free_container(c); } if (fd->err) { zfclose(fp); return -1; } return zfclose(fp); } io_lib-1.14.6/io_lib/zfio.c0000644000031500020650000001167012354177666012353 00000000000000/* * Copyright (c) 2013 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifdef HAVE_CONFIG_H #include "io_lib_config.h" #endif #include #include #include "io_lib/os.h" #include "io_lib/zfio.h" /* ------------------------------------------------------------------------ */ /* Some wrappers around FILE * vs gzFile *, allowing for either */ /* * gzopen() works on both compressed and uncompressed data, but it has * a significant performance hit even for uncompressed data (tested as * 25s using FILE* to 46s via gzOpen and 66s via gzOpen when gzipped). * * Hence we use our own wrapper 'zfp' which is a FILE* when uncompressed * and gzFile* when compressed. This also means we could hide bzopen in * there too if desired. */ off_t zftello(zfp *zf) { return zf->fp ? ftello(zf->fp) : -1; } int zfseeko(zfp *zf, off_t offset, int whence) { return zf->fp ? fseeko(zf->fp, offset, whence) : -1; } /* * A wrapper for either fgets or gzgets depending on what has been * opened. */ char *zfgets(char *line, int size, zfp *zf) { if (zf->fp) return fgets(line, size, zf->fp); else return gzgets(zf->gz, line, size); } /* * A wrapper for either fputs or gzputs depending on what has been * opened. */ int zfputs(char *line, zfp *zf) { if (zf->fp) return fputs(line, zf->fp); else return gzputs(zf->gz, line) ? 0 : EOF; } /* * Peeks at and returns the next character without consuming it from the * input. (Ie a combination of getc and ungetc). */ int zfpeek(zfp *zf) { int c; if (zf->fp) { c = getc(zf->fp); if (c != EOF) ungetc(c, zf->fp); } else { c = gzgetc(zf->gz); if (c != EOF) gzungetc(c, zf->gz); } return c; } /* A replacement for either feof of gzeof */ int zfeof(zfp *zf) { return zf->fp ? feof(zf->fp) : gzeof(zf->gz); } /* A replacement for either fopen or gzopen */ zfp *zfopen(const char *path, const char *mode) { char path2[1024]; zfp *zf; if (!(zf = (zfp *)malloc(sizeof(*zf)))) return NULL; zf->fp = NULL; zf->gz = NULL; /* Try normal fopen */ if (mode[0] != 'z' && mode[1] != 'z' && NULL != (zf->fp = fopen(path, mode))) { unsigned char magic[2]; if (2 != fread(magic, 1, 2, zf->fp)) { free(zf); return NULL; } if (!(magic[0] == 0x1f && magic[1] == 0x8b)) { fseeko(zf->fp, 0, SEEK_SET); return zf; } fclose(zf->fp); zf->fp = NULL; } #ifdef HAVE_POPEN /* * I've no idea why, by gzgets is VERY slow, maybe because it handles * arbitrary seeks. * popen to gzip -cd is 3 times faster though. */ if (*mode == 'w') { } else { if (access(path, R_OK) == 0) { sprintf(path2, "gzip -cd < %.*s", 1000, path); if (NULL != (zf->fp = popen(path2, "r"))) return zf; } sprintf(path2, "gzip -cd < %.*s.gz", 1000, path); if (NULL != (zf->fp = popen(path2, "r"))) return zf; printf("Failed on %s\n", path); } else { sprintf(path2, "gzip > %.*s", 1000, path); if (NULL != (zf->fp = popen(path2, "w"))) return zf; } printf("Failed on %s\n", path); } #else /* Gzopen instead */ if ((zf->gz = gzopen(path, mode))) return zf; sprintf(path2, "%.*s.gz", 1020, path); if ((zf->gz = gzopen(path2, mode))) return zf; #endif perror(path); free(zf); return NULL; } int zfclose(zfp *zf) { int r = (zf->fp) ? fclose(zf->fp) : gzclose(zf->gz); free(zf); return r; } io_lib-1.14.6/io_lib/dstring.c0000644000031500020650000005326212354177666013061 00000000000000/* * Copyright (c) 2013 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * Author(s): James Bonfield * * Copyright (c) 2003 MEDICAL RESEARCH COUNCIL * All rights reserved * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1 Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2 Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3 Neither the name of the MEDICAL RESEARCH COUNCIL, THE LABORATORY OF * MOLECULAR BIOLOGY nor the names of its contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ #ifdef HAVE_CONFIG_H #include "io_lib_config.h" #endif #include #include #include #include #include #include #include #include #include "io_lib/dstring.h" #include "io_lib/vlen.h" /* * Allocates a new dstring, initialising it to a default str (or NULL). * * Returns dstring_t pointer on success. * NULL on failure. */ dstring_t *dstring_create(const char *str) { dstring_t *ds = (dstring_t *)malloc(sizeof(*ds)); if (!ds) return NULL; ds->str = NULL; ds->allocated = 0; ds->length = 0; if (str) { if (dstring_insert(ds, 0, str) == -1) { dstring_destroy(ds); return NULL; } } return ds; } /* * As per dstring_create(), but using str,len as the internal data. * Ie the caller is giving this data to the dstring object. str should * be a malloced pointer. * * Returns dstring_t pointer on success. * NULL on failure. */ dstring_t *dstring_create_with(char *str, size_t len) { dstring_t *ds = (dstring_t *)malloc(sizeof(*ds)); if (!ds) return NULL; ds->str = str; ds->allocated = ds->length = len; return ds; } /* Deallocates a dstring */ void dstring_destroy(dstring_t *ds) { if (ds) { if (ds->str) free(ds->str); free(ds); } } /* * Returns a C string from a dstring. If the dstring is empty this may be * NULL. */ char *dstring_str(const dstring_t *ds) { return ds->str; } /* * Empties a dstring without freeing the contents. Ie sets it to contain * a blank string. */ void dstring_empty(dstring_t *ds) { ds->length = 0; if (ds->str) *ds->str = 0; } /* * Force the memory allocated for a dstring to be at least length characters * long. (The allocated length will include 1 more to allow for the nul * termination.) * It's possible to shrink a string too, although shrinking a string will not * guarantee if remains nul terminated. * * Returns 0 for success * -1 for failure */ int dstring_resize(dstring_t *ds, size_t length) { char *str; if (length+1 <= ds->allocated) return 0; /* * Allocate with additional overhead so as to reduce calling this * to often. Increase to next power of 2. */ length = pow(2, ceil(log(length+1)/log(2))); /* length++;*/ str = realloc(ds->str, length); if (!str) return -1; else { ds->allocated = length; /* If this is first alloc, make sure we null terminate */ if (!ds->str) { str[0] = 0; } ds->str = str; } return 0; } /* * Uses vsprintf style formatting to produce a string which is then inserted * at a specific offset. * * Returns 0 for success * -1 for failure */ int dstring_vinsertf(dstring_t *ds, size_t offset, const char *fmt, va_list args) { size_t est_length; char buf[8192], *bufp = buf; /* * Work out the expanded length, if it's small enough use a temporary * buffer to store the sprintf output. */ est_length = vflen((char *)fmt, args); if (est_length+1 > 8192) { if (NULL == (bufp = (char *)malloc(est_length+1))) { goto error; } } /* Produce the C string, and add it to the dstring */ vsprintf(bufp, fmt, args); if (-1 == dstring_insert(ds, offset, bufp)) goto error; if (bufp != buf) free(bufp); va_end(args); return 0; error: if (bufp && bufp != buf) free(bufp); va_end(args); return -1; } /* * Uses sprintf style formatting to produce a string which is then inserted * at a specific offset. * * Returns 0 for success * -1 for failure */ __PRINTF_FORMAT__(3,4) int dstring_insertf(dstring_t *ds, size_t offset, const char *fmt, ...) { va_list args; va_start(args, fmt); return dstring_vinsertf(ds, offset, fmt, args); } /* * Inserts a string of a specified length to a dstring at a given offset. * * Returns 0 for success * -1 for failure */ int dstring_ninsert(dstring_t *ds, size_t offset, const char *str, size_t len) { if (0 != DSTRING_RESIZE(ds, ds->length + len)) return -1; memmove(&ds->str[offset+len], &ds->str[offset], ds->length + 1 - offset); memmove(&ds->str[offset], str, len); ds->length += len; return 0; } /* * Inserts a C string into a dstring at a given offset. * * Returns 0 for success * -1 for failure */ int dstring_insert(dstring_t *ds, size_t offset, const char *str) { return dstring_ninsert(ds, offset, str, strlen(str)); } /* * Adds C string to the start. * Equivalent a dstring_insert at position zero. * * Returns 0 for success * -1 for failure */ int dstring_prepend(dstring_t *ds, const char *str) { return dstring_insert(ds, 0, str); } /* * Adds string of a specified length to the start. * * Returns 0 for success * -1 for failure */ int dstring_nprepend(dstring_t *ds, const char *str, size_t len) { return dstring_ninsert(ds, 0, str, len); } /* * Uses sprintf style formatting to produce a string which is then inserted * to the start of our dstring. * * Returns 0 for success * -1 for failure */ __PRINTF_FORMAT__(2,3) int dstring_prependf(dstring_t *ds, const char *fmt, ...) { va_list args; va_start(args, fmt); return dstring_vinsertf(ds, 0, fmt, args); } /* * Adds C string to the end. * Equivalent a dstring_insert at position . * * Returns 0 for success * -1 for failure */ int dstring_append(dstring_t *ds, const char *str) { return dstring_insert(ds, ds->length, str); } /* * Adds a C string to the end, but URL encoding it with percent rules * If specified 'meta' is a list of meta-characters need escaping, otherwise * we use standard html ones ("<>&"); */ int dstring_append_hex_encoded(dstring_t *ds, const char *str, const char *meta) { unsigned char escape[256]; const unsigned char *ustr = (const unsigned char *)str; int i, j; char hex[3]; for (i = 0; i < 256; i++) { if (isprint(i)) escape[i] = 0; else escape[i] = 1; } escape['%'] = 1; if (meta) { for (i = 0; meta[i]; i++) escape[(uc)meta[i]] = 1; } else { for (i = 0; "<>&"[i]; i++) escape[(uc)"<>&"[i]] = 1; } j = 0; hex[0] = '%'; do { i = j; while (ustr[i] && !escape[ustr[i]]) i++; if (i-j) { if (0 != dstring_ninsert(ds, ds->length, &str[j], i-j)) return -1; } while (ustr[i] && escape[ustr[i]]) { hex[1] = "0123456789ABCDEF"[ustr[i] >> 4]; hex[2] = "0123456789ABCDEF"[ustr[i] & 0xf]; if (0 != dstring_ninsert(ds, ds->length, hex, 3)) return -1; i++; } j = i; } while (ustr[i]); return 0; } /* * Adds a single character to the end of the string. * * Returns 0 for success * -1 for failure */ int dstring_append_char(dstring_t *ds, char c) { return dstring_ninsert(ds, ds->length, &c, 1); } /* * Adds an integer to the end of the string, turning it to printable ascii. * * Returns 0 for success * -1 for failure */ int dstring_append_int(dstring_t *ds, int i) { char buf[50], *cp = buf; int j, k = 0; if (i == 0) { *cp++ = '0'; } else { if (i < 0) { *cp++ = '-'; i = -i; } if (i < 1000) goto b1; if (i < 100000) goto b2; if (i < 100000000) goto b3; j = i / 1000000000; if (j || k) *cp++ = j + '0', k=1, i %= 1000000000; j = i / 100000000; if (j || k) *cp++ = j + '0', k=1, i %= 100000000; b3: j = i / 10000000; if (j || k) *cp++ = j + '0', k=1, i %= 10000000; j = i / 1000000; if (j || k) *cp++ = j + '0', k=1, i %= 1000000; j = i / 100000; if (j || k) *cp++ = j + '0', k=1, i %= 100000; b2: j = i / 10000; if (j || k) *cp++ = j + '0', k=1, i %= 10000; j = i / 1000; if (j || k) *cp++ = j + '0', k=1, i %= 1000; b1: j = i / 100; if (j || k) *cp++ = j + '0', k=1, i %= 100; j = i / 10; if (j || k) *cp++ = j + '0', k=1, i %= 10; if (i || k) *cp++ = i + '0'; } return dstring_ninsert(ds, ds->length, buf, cp-buf); } /* * Adds string of a specified length to the end. * * Returns 0 for success * -1 for failure */ int dstring_nappend(dstring_t *ds, const char *str, size_t len) { if (0 != DSTRING_RESIZE(ds, ds->length + len)) return -1; memcpy(&ds->str[ds->length], str, len); ds->length += len; return 0; } /* * Uses sprintf style formatting to produce a string which is then appended * to our dstring. * * Returns 0 for success * -1 for failure */ __PRINTF_FORMAT__(2,3) int dstring_appendf(dstring_t *ds, const char *fmt, ...) { va_list args; va_start(args, fmt); return dstring_vinsertf(ds, ds->length, fmt, args); } /* * Refreshes the cached dstring length. * Use this if you obtain a copy of the internal C string and manipulate it * in some way. */ void dstring_refresh_length(dstring_t *ds) { ds->length = strlen(ds->str); } /* * Returns the length of the dstring (excluding nul; like strlen). */ size_t dstring_length(dstring_t *ds) { return ds->length; } /* * Inserts a dstring into a dstring * * Returns 0 for success * -1 for failure */ int dstring_dinsert(dstring_t *ds_to, size_t offset, const dstring_t *ds_from) { if (!ds_from || !ds_to) return -1; return dstring_insert(ds_to, offset, ds_from->str); } /* * Deletes a section from a dstring, starting at 'offset' and extending * for 'length' characters. */ void dstring_delete(dstring_t *ds, size_t offset, size_t length) { memmove(&ds->str[offset], &ds->str[offset+length], ds->length + 1 - (offset + length)); ds->length -= length; } /* * Replaces a section from a dstring (at offset for length bytes) with a * new (C) string. * * Returns 0 for success * -1 for failure */ int dstring_replace(dstring_t *ds, size_t offset, size_t length, const char *rep_str) { size_t rep_len = strlen(rep_str); /* Ensure our string is large enough */ if (rep_len > length) { if (0 != DSTRING_RESIZE(ds, ds->length + rep_len - length)) return -1; } /* Do the replace */ if (rep_len != length) { memmove(&ds->str[offset+rep_len], &ds->str[offset+length], ds->length + 1 - (offset + length)); } memmove(&ds->str[offset], rep_str, rep_len); ds->length += rep_len - length; return 0; } /* * Replaces a section from a dstring (at offset for length bytes) with a * new dstring. * * Returns 0 for success * -1 for failure */ int dstring_dreplace(dstring_t *ds, size_t offset, size_t length, const dstring_t *rep_with) { return dstring_replace(ds, offset, length, rep_with->str); } /* * Searches for the first occurance of 'search' in a dstring starting * at position offset (including looking at that position). * * Returns the new offset if found * -1 if not. */ int dstring_find(dstring_t *ds, size_t offset, const char *search) { size_t i; size_t search_len = strlen(search); /* Noddy algorithm to start with; use Boyer-Moore or something if needed */ for (i = offset; i <= ds->length; i++) { if (strncmp(&ds->str[i], search, search_len) == 0) return i; } return -1; } /* * A combination of dstring_find and dstring_replace. * Look for 'search' starting at a specific offset. If found replace it with * replace. * * Returns position of replaced string if found * -1 if not found or on error. */ int dstring_find_replace(dstring_t *ds, size_t offset, const char *search, const char *rep_with) { int pos; size_t search_len = strlen(search); /* Find */ if (-1 == (pos = dstring_find(ds, offset, search))) return -1; /* And replace */ if (0 != dstring_replace(ds, pos, search_len, rep_with)) return -1; return pos; } /* * Look for 'search' starting at a specific offset. If found replace it with * replace. Repeat until all occurances have been replaced. * * Returns 0 for success * -1 on error */ int dstring_find_replace_all(dstring_t *ds, const char *search, const char *rep_with) { /* * Most efficient mechanism is to search and replace to a separate * buffer so that we don't have problems with search being contained * within rep_with and do not have efficiency problems due to * excessive use of string shifting. */ dstring_t *new_ds = dstring_create(NULL); int found_pos, current_pos = 0; size_t search_len = strlen(search); dstring_t tmp; if (!new_ds) goto error; while (-1 != (found_pos = dstring_find(ds, current_pos, search))) { if (-1 == dstring_nappend(new_ds, &ds->str[current_pos], found_pos - current_pos)) goto error; if (-1 == dstring_append(new_ds, rep_with)) goto error; current_pos = found_pos + search_len; } if (-1 == dstring_append(new_ds, &ds->str[current_pos])) goto error; /* * Swap data structures over and free the original dstring. We can't * swap pointers as the calling function still needs 'ds' to be the * same address. */ tmp = *ds; *ds = *new_ds; *new_ds = tmp; dstring_destroy(new_ds); return 0; error: if (new_ds) dstring_destroy(new_ds); return -1; } /* * Escapes HTML meta characters by replacing them with appropriate HTML * codes. * We deal with the following: * * & & * < < * > > * " " * * Returns 0 for success * -1 on error */ int dstring_escape_html(dstring_t *ds) { if (-1 == dstring_find_replace_all(ds, "&", "&")) return -1; if (-1 == dstring_find_replace_all(ds, "<", "<")) return -1; if (-1 == dstring_find_replace_all(ds, ">", ">")) return -1; if (-1 == dstring_find_replace_all(ds, "\"", """)) return -1; return 0; } /* * Searches for URLs in text strings and converts then to html href links. * At present we just look for http://, https://, ftp://, file:// and * mailto:// * * Returns 0 for success * -1 on error */ int dstring_htmlise_links(dstring_t *ds) { char *links[] = {"http://", "https://", "ftp://", "file://", "mailto://"}; size_t nlinks = sizeof(links)/sizeof(*links); size_t i; for (i = 0; i < nlinks; i++) { int pos = 0; while (-1 != (pos = dstring_find(ds, pos, links[i]))) { size_t end, url_len; char *str = dstring_str(ds); dstring_t *url; /* Got the left end; extend to find right end */ for (end = pos+1; str[end] && !isspace(str[end]); end++) ; /* Create a new href string */ if (NULL == (url = dstring_create(NULL))) return -1; if (-1 == dstring_insertf(url, 0, "%.*s", (int)(end-pos), &str[pos], (int)(end-pos), &str[pos])) { dstring_destroy(url); return -1; } url_len = dstring_length(url); if (-1 == dstring_dreplace(ds, pos, end-pos, url)) { dstring_destroy(url); return -1; } dstring_destroy(url); pos += url_len; } } return 0; } /* * Converts a text string into a HTML version representing the same string. * This includes escaping any HTML meta characters and searching for URLs * within the string and replacing it with an HTML link (keeping the link as * the anchor name). * This is simply a wrapper joining dstring_escape_html and * dstring_htmlise_links. * * Returns 0 for success * -1 on error */ int dstring_to_html(dstring_t *ds) { if (-1 == dstring_escape_html(ds)) return -1; return dstring_htmlise_links(ds); } /* * Appends an system error much like perror(), using errno. * 'str' is added in the form "str: error_message". * * All Return 0 for success * -1 for failure */ int dstring_perror(dstring_t *ds, const char *str) { return dstring_appendf(ds, "%s: %s\n", str, strerror(errno)); } #ifdef TEST int main(void) { dstring_t *ds1 = dstring_create("foo"); dstring_t *ds2 = dstring_create(NULL); dstring_t *ds3 = dstring_create("blah"); printf("ds1='%s'\n", dstring_str(ds1)); printf("ds3='%s'\n", dstring_str(ds3)); dstring_resize(ds2, 10); printf("ret=%d, ", dstring_insert(ds1, 3, "abc")); printf("ds1='%s'\n", dstring_str(ds1)); printf("ret=%d, ", dstring_insert(ds1, 0, "xyz")); printf("ds1='%s'\n", dstring_str(ds1)); printf("ret=%d, ", dstring_dinsert(ds1, 3, ds3)); printf("ds1='%s'\n", dstring_str(ds1)); printf("ret=%d, ", dstring_replace(ds1, 3, 4, "fish")); printf("ds1='%s'\n", dstring_str(ds1)); printf("ret=%d, ", dstring_replace(ds1, 3, 4, "X")); printf("ds1='%s'\n", dstring_str(ds1)); printf("ret=%d, ", dstring_replace(ds1, 3, 1, "YZ")); printf("ds1='%s'\n", dstring_str(ds1)); printf("ret=%d, ", dstring_replace(ds1, 3, 2, "")); printf("ds1='%s'\n", dstring_str(ds1)); printf("ret=%d, ", dstring_replace(ds1, 3, 0, "blah")); printf("ds1='%s'\n", dstring_str(ds1)); printf("ret=%d\n", dstring_find(ds1, 0, "ab")); printf("ret=%d\n", dstring_find(ds1, 0, "a")); printf("ret=%d\n", dstring_find(ds1, 6, "a")); printf("ret=%d\n", dstring_find(ds1, 11, "a")); printf("ret=%d, ", dstring_replace(ds1, 3, 0, "blah")); printf("ds1='%s'\n", dstring_str(ds1)); printf("len=%ld, strlen=%ld\n", (long)dstring_length(ds1), (long)strlen(dstring_str(ds1))); printf("ret=%d, ", dstring_dreplace(ds1, 0, 10, ds3)); printf("ds1='%s'\n", dstring_str(ds1)); printf("ret=%d, ", dstring_find_replace(ds1, 0, "h", "abc")); printf("ds1='%s'\n", dstring_str(ds1)); printf("ret=%d, ", dstring_find_replace_all(ds1, "ab", "X")); printf("ds1='%s'\n", dstring_str(ds1)); printf("ret=%d, ", dstring_find_replace_all(ds1, "b", "X")); printf("ret=%d, ", dstring_find_replace_all(ds1, "l", "XX")); printf("ret=%d, ", dstring_find_replace_all(ds1, "oo", "X")); printf("ds1='%s'\n", dstring_str(ds1)); printf("ret=%d, ", dstring_find_replace_all(ds1, "XX", "XXX")); printf("ds1='%s'\n", dstring_str(ds1)); printf("ret=%d, ", dstring_find_replace_all(ds1, "X", "")); printf("ds1='%s'\n", dstring_str(ds1)); { int i; for (i = 0; i < 8; i++) { dstring_find_replace_all(ds1, "h", "hh"); dstring_find_replace_all(ds1, "hh", "xhhhx"); printf("i=%d, len=%ld\n", i, (long)strlen(dstring_str(ds1))); } } dstring_destroy(ds1); dstring_destroy(ds2); dstring_destroy(ds3); ds1 = dstring_create("xyz=\"fish\""); printf("ds1='%s'\n", dstring_str(ds1)); dstring_to_html(ds1); printf("ds1='%s'\n", dstring_str(ds1)); return 0; } #endif io_lib-1.14.6/io_lib/string_alloc.c0000644000031500020650000001025512354177666014062 00000000000000/* * Copyright (c) 2013 Genome Research Ltd. * Author(s): James Bonfield, Andrew Whitwham * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* A pooled string allocator intended to cut down on the memory overhead of many small string allocations. Andrew Whitwham, September 2010. */ #include #include #include #include "string_alloc.h" #define MIN_STR_SIZE 1024 /* creates the string pool. max_length is the initial size a single string can be. Tha max_length can grow as needed */ string_alloc_t *string_pool_create(size_t max_length) { string_alloc_t *a_str; if (NULL == (a_str = (string_alloc_t *)malloc(sizeof(*a_str)))) { return NULL; } if (max_length < MIN_STR_SIZE) max_length = MIN_STR_SIZE; a_str->nstrings = 0; a_str->max_length = max_length; a_str->strings = NULL; return a_str; } /* internal function to do the actual memory allocation */ static string_t *new_string_pool(string_alloc_t *a_str) { string_t *str; str = realloc(a_str->strings, (a_str->nstrings + 1) * sizeof(*a_str->strings)); if (NULL == str) return NULL; a_str->strings = str; str = &a_str->strings[a_str->nstrings]; str->str = malloc(a_str->max_length);; if (NULL == str->str) return NULL; str->used = 0; a_str->nstrings++; return str; } /* free allocated memory */ void string_pool_destroy(string_alloc_t *a_str) { size_t i; for (i = 0; i < a_str->nstrings; i++) { free(a_str->strings[i].str); } free(a_str->strings); free(a_str); } /* allocate space for a string */ char *string_alloc(string_alloc_t *a_str, size_t length) { string_t *str; char *ret; if (length <= 0) return NULL; // add to last string pool if we have space if (a_str->nstrings) { str = &a_str->strings[a_str->nstrings - 1]; if (str->used + length < a_str->max_length) { ret = str->str + str->used; str->used += length; return ret; } } // increase the max length if needs be if (length > a_str->max_length) a_str->max_length = length; // need a new string pool str = new_string_pool(a_str); if (NULL == str) return NULL; str->used = length; return str->str; } /* equivalent to strdup */ char *string_dup(string_alloc_t *a_str, char *instr) { return string_ndup(a_str, instr, strlen(instr)); } char *string_ndup(string_alloc_t *a_str, char *instr, size_t len) { char *str = string_alloc(a_str, len + 1); if (NULL == str) return NULL; strncpy(str, instr, len); str[len] = 0; return str; } io_lib-1.14.6/io_lib/md5.c0000644000031500020650000002041512354177666012066 00000000000000/* * This is an OpenSSL-compatible implementation of the RSA Data Security, Inc. * MD5 Message-Digest Algorithm (RFC 1321). * * Homepage: * http://openwall.info/wiki/people/solar/software/public-domain-source-code/md5 * * Author: * Alexander Peslyak, better known as Solar Designer * * This software was written by Alexander Peslyak in 2001. No copyright is * claimed, and the software is hereby placed in the public domain. * In case this attempt to disclaim copyright and place the software in the * public domain is deemed null and void, then the software is * Copyright (c) 2001 Alexander Peslyak and it is hereby released to the * general public under the following terms: * * Redistribution and use in source and binary forms, with or without * modification, are permitted. * * There's ABSOLUTELY NO WARRANTY, express or implied. * * (This is a heavily cut-down "BSD license".) * * This differs from Colin Plumb's older public domain implementation in that * no exactly 32-bit integer data type is required (any 32-bit or wider * unsigned integer data type will do), there's no compile-time endianness * configuration, and the function prototypes match OpenSSL's. No code from * Colin Plumb's implementation has been reused; this comment merely compares * the properties of the two independent implementations. * * The primary goals of this implementation are portability and ease of use. * It is meant to be fast, but not as fast as possible. Some known * optimizations are not included to reduce source code size and avoid * compile-time configuration. */ #ifndef HAVE_OPENSSL #include #include "md5.h" /* * The basic MD5 functions. * * F and G are optimized compared to their RFC 1321 definitions for * architectures that lack an AND-NOT instruction, just like in Colin Plumb's * implementation. */ #define F(x, y, z) ((z) ^ ((x) & ((y) ^ (z)))) #define G(x, y, z) ((y) ^ ((z) & ((x) ^ (y)))) #define H(x, y, z) ((x) ^ (y) ^ (z)) #define I(x, y, z) ((y) ^ ((x) | ~(z))) /* * The MD5 transformation for all four rounds. */ #define STEP(f, a, b, c, d, x, t, s) \ (a) += f((b), (c), (d)) + (x) + (t); \ (a) = (((a) << (s)) | (((a) & 0xffffffff) >> (32 - (s)))); \ (a) += (b); /* * SET reads 4 input bytes in little-endian byte order and stores them * in a properly aligned word in host byte order. * * The check for little-endian architectures that tolerate unaligned * memory accesses is just an optimization. Nothing will break if it * doesn't work. */ #if defined(__i386__) || defined(__x86_64__) || defined(__vax__) #define SET(n) \ (*(MD5_u32plus *)&ptr[(n) * 4]) #define GET(n) \ SET(n) #else #define SET(n) \ (ctx->block[(n)] = \ (MD5_u32plus)ptr[(n) * 4] | \ ((MD5_u32plus)ptr[(n) * 4 + 1] << 8) | \ ((MD5_u32plus)ptr[(n) * 4 + 2] << 16) | \ ((MD5_u32plus)ptr[(n) * 4 + 3] << 24)) #define GET(n) \ (ctx->block[(n)]) #endif /* * This processes one or more 64-byte data blocks, but does NOT update * the bit counters. There are no alignment requirements. */ static void *body(MD5_CTX *ctx, void *data, unsigned long size) { unsigned char *ptr; MD5_u32plus a, b, c, d; MD5_u32plus saved_a, saved_b, saved_c, saved_d; ptr = data; a = ctx->a; b = ctx->b; c = ctx->c; d = ctx->d; do { saved_a = a; saved_b = b; saved_c = c; saved_d = d; /* Round 1 */ STEP(F, a, b, c, d, SET(0), 0xd76aa478, 7) STEP(F, d, a, b, c, SET(1), 0xe8c7b756, 12) STEP(F, c, d, a, b, SET(2), 0x242070db, 17) STEP(F, b, c, d, a, SET(3), 0xc1bdceee, 22) STEP(F, a, b, c, d, SET(4), 0xf57c0faf, 7) STEP(F, d, a, b, c, SET(5), 0x4787c62a, 12) STEP(F, c, d, a, b, SET(6), 0xa8304613, 17) STEP(F, b, c, d, a, SET(7), 0xfd469501, 22) STEP(F, a, b, c, d, SET(8), 0x698098d8, 7) STEP(F, d, a, b, c, SET(9), 0x8b44f7af, 12) STEP(F, c, d, a, b, SET(10), 0xffff5bb1, 17) STEP(F, b, c, d, a, SET(11), 0x895cd7be, 22) STEP(F, a, b, c, d, SET(12), 0x6b901122, 7) STEP(F, d, a, b, c, SET(13), 0xfd987193, 12) STEP(F, c, d, a, b, SET(14), 0xa679438e, 17) STEP(F, b, c, d, a, SET(15), 0x49b40821, 22) /* Round 2 */ STEP(G, a, b, c, d, GET(1), 0xf61e2562, 5) STEP(G, d, a, b, c, GET(6), 0xc040b340, 9) STEP(G, c, d, a, b, GET(11), 0x265e5a51, 14) STEP(G, b, c, d, a, GET(0), 0xe9b6c7aa, 20) STEP(G, a, b, c, d, GET(5), 0xd62f105d, 5) STEP(G, d, a, b, c, GET(10), 0x02441453, 9) STEP(G, c, d, a, b, GET(15), 0xd8a1e681, 14) STEP(G, b, c, d, a, GET(4), 0xe7d3fbc8, 20) STEP(G, a, b, c, d, GET(9), 0x21e1cde6, 5) STEP(G, d, a, b, c, GET(14), 0xc33707d6, 9) STEP(G, c, d, a, b, GET(3), 0xf4d50d87, 14) STEP(G, b, c, d, a, GET(8), 0x455a14ed, 20) STEP(G, a, b, c, d, GET(13), 0xa9e3e905, 5) STEP(G, d, a, b, c, GET(2), 0xfcefa3f8, 9) STEP(G, c, d, a, b, GET(7), 0x676f02d9, 14) STEP(G, b, c, d, a, GET(12), 0x8d2a4c8a, 20) /* Round 3 */ STEP(H, a, b, c, d, GET(5), 0xfffa3942, 4) STEP(H, d, a, b, c, GET(8), 0x8771f681, 11) STEP(H, c, d, a, b, GET(11), 0x6d9d6122, 16) STEP(H, b, c, d, a, GET(14), 0xfde5380c, 23) STEP(H, a, b, c, d, GET(1), 0xa4beea44, 4) STEP(H, d, a, b, c, GET(4), 0x4bdecfa9, 11) STEP(H, c, d, a, b, GET(7), 0xf6bb4b60, 16) STEP(H, b, c, d, a, GET(10), 0xbebfbc70, 23) STEP(H, a, b, c, d, GET(13), 0x289b7ec6, 4) STEP(H, d, a, b, c, GET(0), 0xeaa127fa, 11) STEP(H, c, d, a, b, GET(3), 0xd4ef3085, 16) STEP(H, b, c, d, a, GET(6), 0x04881d05, 23) STEP(H, a, b, c, d, GET(9), 0xd9d4d039, 4) STEP(H, d, a, b, c, GET(12), 0xe6db99e5, 11) STEP(H, c, d, a, b, GET(15), 0x1fa27cf8, 16) STEP(H, b, c, d, a, GET(2), 0xc4ac5665, 23) /* Round 4 */ STEP(I, a, b, c, d, GET(0), 0xf4292244, 6) STEP(I, d, a, b, c, GET(7), 0x432aff97, 10) STEP(I, c, d, a, b, GET(14), 0xab9423a7, 15) STEP(I, b, c, d, a, GET(5), 0xfc93a039, 21) STEP(I, a, b, c, d, GET(12), 0x655b59c3, 6) STEP(I, d, a, b, c, GET(3), 0x8f0ccc92, 10) STEP(I, c, d, a, b, GET(10), 0xffeff47d, 15) STEP(I, b, c, d, a, GET(1), 0x85845dd1, 21) STEP(I, a, b, c, d, GET(8), 0x6fa87e4f, 6) STEP(I, d, a, b, c, GET(15), 0xfe2ce6e0, 10) STEP(I, c, d, a, b, GET(6), 0xa3014314, 15) STEP(I, b, c, d, a, GET(13), 0x4e0811a1, 21) STEP(I, a, b, c, d, GET(4), 0xf7537e82, 6) STEP(I, d, a, b, c, GET(11), 0xbd3af235, 10) STEP(I, c, d, a, b, GET(2), 0x2ad7d2bb, 15) STEP(I, b, c, d, a, GET(9), 0xeb86d391, 21) a += saved_a; b += saved_b; c += saved_c; d += saved_d; ptr += 64; } while (size -= 64); ctx->a = a; ctx->b = b; ctx->c = c; ctx->d = d; return ptr; } void MD5_Init(MD5_CTX *ctx) { ctx->a = 0x67452301; ctx->b = 0xefcdab89; ctx->c = 0x98badcfe; ctx->d = 0x10325476; ctx->lo = 0; ctx->hi = 0; } void MD5_Update(MD5_CTX *ctx, void *data, unsigned long size) { MD5_u32plus saved_lo; unsigned long used, free; saved_lo = ctx->lo; if ((ctx->lo = (saved_lo + size) & 0x1fffffff) < saved_lo) ctx->hi++; ctx->hi += size >> 29; used = saved_lo & 0x3f; if (used) { free = 64 - used; if (size < free) { memcpy(&ctx->buffer[used], data, size); return; } memcpy(&ctx->buffer[used], data, free); data = (unsigned char *)data + free; size -= free; body(ctx, ctx->buffer, 64); } if (size >= 64) { data = body(ctx, data, size & ~(unsigned long)0x3f); size &= 0x3f; } memcpy(ctx->buffer, data, size); } void MD5_Final(unsigned char *result, MD5_CTX *ctx) { unsigned long used, free; used = ctx->lo & 0x3f; ctx->buffer[used++] = 0x80; free = 64 - used; if (free < 8) { memset(&ctx->buffer[used], 0, free); body(ctx, ctx->buffer, 64); used = 0; free = 64; } memset(&ctx->buffer[used], 0, free - 8); ctx->lo <<= 3; ctx->buffer[56] = ctx->lo; ctx->buffer[57] = ctx->lo >> 8; ctx->buffer[58] = ctx->lo >> 16; ctx->buffer[59] = ctx->lo >> 24; ctx->buffer[60] = ctx->hi; ctx->buffer[61] = ctx->hi >> 8; ctx->buffer[62] = ctx->hi >> 16; ctx->buffer[63] = ctx->hi >> 24; body(ctx, ctx->buffer, 64); result[0] = ctx->a; result[1] = ctx->a >> 8; result[2] = ctx->a >> 16; result[3] = ctx->a >> 24; result[4] = ctx->b; result[5] = ctx->b >> 8; result[6] = ctx->b >> 16; result[7] = ctx->b >> 24; result[8] = ctx->c; result[9] = ctx->c >> 8; result[10] = ctx->c >> 16; result[11] = ctx->c >> 24; result[12] = ctx->d; result[13] = ctx->d >> 8; result[14] = ctx->d >> 16; result[15] = ctx->d >> 24; memset(ctx, 0, sizeof(*ctx)); } #endif io_lib-1.14.6/io_lib/scram.c0000644000031500020650000002346512545536330012503 00000000000000/* * Copyright (c) 2013 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * Multi-threading. Trying to multi-thread BAM input is problematic as the BGZF boundaries share no common ground with the sequence boundaries. Header and sequences may be larger than a BGZF block, and the header may also be in the same block as the sequence data. Therefore the granularity of multi-threading needs to be the compression and uncompression code. Threadable sections: 1) zlib portion bgzf_more_output? 2) decode (may merge with 1) 3) bgzf_write Similary for cram writing: 1) Building crecs 2) Encode + basic huff 3) Block compression (may merge with 2) Ie input is hard to multi-thread Output can be distributed to multiple threads and aggregated together before sending on to FILE *fp. */ /* * Author: James Bonfield, Wellcome Trust Sanger Institute. 2013 * * A wrapper around SAM, BAM and CRAM I/O to give a unified interface. */ #ifdef HAVE_CONFIG_H #include "io_lib_config.h" #endif #include #include #include "io_lib/scram.h" #define SCRAM_BUF_SIZE (1024*1024) /* * Expands the input buffer. * Returns 0 on sucess * -1 on failure */ static int scram_more_input(scram_fd *fd) { size_t avail = fd->alloc - fd->used; size_t l; l = fread(&fd->buf[fd->used], 1, avail, fd->fp); if (l <= 0) return -1; fd->used += l; return 0; } /* * Consumes a block of data from the input stream and returns a malloced * copy of it. The input buffer is then copied down (FIXME: inefficient). */ static unsigned char *scram_input_next_block(scram_fd *fd, size_t max_size, size_t *out_size) { ssize_t l = MIN(max_size, fd->used); ssize_t i; unsigned char *r = NULL; if (max_size > fd->used) { scram_more_input(fd); if (fd->used == 0) return NULL; } if (fd->b->binary) { uint32_t bsize; if (l < 19) return NULL; bsize = fd->buf[16] + 256*fd->buf[17] + 1; fprintf(stderr, "block_size=%d\n", bsize); l = MIN(bsize, l); } else { for (i = l-1; i >= 0; i--) { while (fd->buf[i] != '\n') i--; } assert(i >= 0); l = i; } if (!(r = malloc(l))) return NULL; memcpy(r, fd->buf, l); memcpy(fd->buf, &fd->buf[l], fd->used - l); fd->used -= l; if (out_size) *out_size = l; return r; } int scram_input_bam_block(scram_fd *fd) { size_t sz; unsigned char *r; if (!fd->is_bam) return -1; r = scram_input_next_block(fd, Z_BUFF_SIZE, &sz); if (!r) return -1; // if (fd->b->comp_p && fd->b->comp_p != fd->b->comp) // free(fd->b->comp_p); fd->b->comp_p = r; fd->b->comp_sz = sz; return 0; } /* * Opens filename. * If reading we initially try cram first and then bam/sam if that fails. * The exception is when reading from stdin, where bam/sam is first. * * If writing we look at the mode parameter: * w => SAM * ws => SAM * wb => BAM * wc => CRAM * * Returns scram pointer on success * NULL on failure */ scram_fd *scram_open(const char *filename, const char *mode) { char mode2[10]; scram_fd *fd = calloc(1, sizeof(*fd)); if (!fd) return NULL; fd->eof = 0; /* I/O buffer */ fd->fp = NULL; fd->buf = NULL; fd->alloc = fd->used = 0; fd->pool = NULL; if (strcmp(filename, "-") == 0 && mode[0] == 'r' && mode[1] != 'b' && mode[1] != 'c' && mode[1] != 's') { int c; /* * Crude auto-detection. * First char @ = sam, 0x1f = bam (gzip), C = cram * Headerless SAM will need explicit mode setting. */ c = fgetc(stdin); ungetc(c, stdin); if (c == '@') sprintf(mode2, "rs%.7s", mode+1), mode = mode2; else if (c == 0x1f) sprintf(mode2, "rb%.7s", mode+1), mode = mode2; else if (c == 'C') sprintf(mode2, "rc%.7s", mode+1), mode = mode2; } if (*mode == 'r') { if (mode[1] != 'b' && mode[1] != 's') { if ((fd->c = cram_open(filename, mode))) { cram_load_reference(fd->c, NULL); fd->is_bam = 0; return fd; } } if ((fd->b = bam_open(filename, mode))) { fd->is_bam = 1; return fd; } free(fd); return NULL; } /* For writing we cannot auto detect, so create the file type based * on the format in the mode string. */ if (strncmp(mode, "wc", 2) == 0) { if (!(fd->c = cram_open(filename, mode))) { free(fd); return NULL; } fd->is_bam = 0; return fd; } /* Otherwise assume bam/sam */ if (!(fd->b = bam_open(filename, mode))) { free(fd); return NULL; } fd->is_bam = 1; return fd; } #if defined(CRAM_IO_CUSTOM_BUFFERING) /* * Open CRAM file for reading via callbacks * * Returns scram pointer on success * NULL on failure */ scram_fd *scram_open_cram_via_callbacks( char const * filename, cram_io_allocate_read_input_t callback_allocate_function, cram_io_deallocate_read_input_t callback_deallocate_function, size_t const bufsize ) { scram_fd *fd = calloc(1, sizeof(*fd)); if (!fd) return NULL; fd->eof = 0; /* I/O buffer */ fd->fp = NULL; fd->buf = NULL; fd->alloc = fd->used = 0; fd->pool = NULL; if ((fd->c = cram_open_by_callbacks(filename, callback_allocate_function, callback_deallocate_function, bufsize))) { cram_load_reference(fd->c, NULL); fd->is_bam = 0; return fd; } return NULL; } #endif int scram_close(scram_fd *fd) { int r; if (fd->is_bam) { r = bam_close(fd->b); } else { r = cram_close(fd->c); } if (fd->pool) t_pool_destroy(fd->pool, 0); free(fd); return r; } SAM_hdr *scram_get_header(scram_fd *fd) { #ifdef __INTEL_COMPILER // avoids cmovne generation from icc 2015 (bug) return fd->is_bam && fd->b ? fd->b->header : fd->c->header; #else return fd->is_bam ? fd->b->header : fd->c->header; #endif } refs_t *scram_get_refs(scram_fd *fd) { return fd->is_bam ? NULL : fd->c->refs; } void scram_set_refs(scram_fd *fd, refs_t *refs) { if (fd->is_bam) return; if (fd->c->refs) refs_free(fd->c->refs); fd->c->refs = refs; if (refs) refs->count++; } void scram_set_header(scram_fd *fd, SAM_hdr *sh) { if (fd->is_bam) { fd->b->header = sh; } else { fd->c->header = sh; } sam_hdr_incr_ref(sh); } int scram_write_header(scram_fd *fd) { return fd->is_bam ? bam_write_header(fd->b) : cram_write_SAM_hdr(fd->c, fd->c->header); } int scram_get_seq(scram_fd *fd, bam_seq_t **bsp) { if (fd->is_bam) { switch (bam_get_seq(fd->b, bsp)) { case 1: return 0; case 0: // FIXME: if we ever implement range queries for BAM this will // need amendments to not claim a sub-range is invalid EOF. fd->eof = fd->b->eof_block ? 1 : 2; return -1; default: fd->eof = -1; // err return -1; } } if (-1 == cram_get_bam_seq(fd->c, bsp)) { fd->eof = cram_eof(fd->c); return -1; } return 0; } int scram_next_seq(scram_fd *fd, bam_seq_t **bsp) { return scram_get_seq(fd, bsp); } int scram_put_seq(scram_fd *fd, bam_seq_t *s) { return fd->is_bam ? bam_put_seq(fd->b, s) : cram_put_bam_seq(fd->c, s); } int scram_set_option(scram_fd *fd, enum cram_option opt, ...) { int r = 0; va_list args; va_start(args, opt); if (opt == CRAM_OPT_THREAD_POOL) { t_pool *p = va_arg(args, t_pool *); if (fd->is_bam) return bam_set_option(fd->b, BAM_OPT_THREAD_POOL, p); else return cram_set_option(fd->c, CRAM_OPT_THREAD_POOL, p); } else if (opt == CRAM_OPT_NTHREADS) { int nthreads = va_arg(args, int); if (nthreads > 1) { if (!(fd->pool = t_pool_init(nthreads*2, nthreads))) return -1; if (fd->is_bam) return bam_set_option(fd->b, BAM_OPT_THREAD_POOL, fd->pool); else return cram_set_option(fd->c, CRAM_OPT_THREAD_POOL, fd->pool); } else { fd->pool = NULL; return 0; } } else if (opt == CRAM_OPT_BINNING) { int bin = va_arg(args, int); return fd->is_bam ? bam_set_option (fd->b, BAM_OPT_BINNING, bin) : cram_set_option(fd->c, CRAM_OPT_BINNING, bin); } if (!fd->is_bam) { r = cram_set_voption(fd->c, opt, args); } va_end(args); return r; } /*! Returns the line number when processing a SAM file * * @return * Returns line number if input is SAM; * 0 for CRAM / BAM input. */ int scram_line(scram_fd *fd) { if (fd->is_bam) return fd->b->line; else return 0; } io_lib-1.14.6/io_lib/thread_pool.c0000644000031500020650000004526712545536330013702 00000000000000/* * Copyright (c) 2013 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include #include #include #include #include #include #include "io_lib/thread_pool.h" //#define DEBUG //#define DEBUG_TIME #define IN_ORDER #ifdef DEBUG static int worker_id(t_pool *p) { int i; pthread_t s = pthread_self(); for (i = 0; i < p->tsize; i++) { if (pthread_equal(s, p->t[i].tid)) return i; } return -1; } #endif /* ---------------------------------------------------------------------------- * A queue to hold results from the thread pool. * * Each thread pool may have jobs of multiple types being queued up and * interleaved, so we allow several results queue per pool. * * The jobs themselves are expected to push their results onto their * appropriate results queue. */ /* * Adds a result to the end of the result queue. * * Returns 0 on success; * -1 on failure */ static int t_pool_add_result(t_pool_job *j, void *data) { t_results_queue *q = j->q; t_pool_result *r; #ifdef DEBUG fprintf(stderr, "%d: Adding resulting to queue %p, serial %d\n", worker_id(j->p), q, j->serial); #endif /* No results queue is fine if we don't want any results back */ if (!q) return 0; if (!(r = malloc(sizeof(*r)))) return -1; r->next = NULL; r->data = data; r->serial = j->serial; pthread_mutex_lock(&q->result_m); if (q->result_tail) { q->result_tail->next = r; q->result_tail = r; } else { q->result_head = q->result_tail = r; } q->queue_len++; q->pending--; #ifdef DEBUG fprintf(stderr, "%d: Broadcasting result_avail (id %d)\n", worker_id(j->p), r->serial); #endif pthread_cond_signal(&q->result_avail_c); #ifdef DEBUG fprintf(stderr, "%d: Broadcast complete\n", worker_id(j->p)); #endif pthread_mutex_unlock(&q->result_m); return 0; } /* Core of t_pool_next_result() */ static t_pool_result *t_pool_next_result_locked(t_results_queue *q) { t_pool_result *r, *last; for (last = NULL, r = q->result_head; r; last = r, r = r->next) { if (r->serial == q->next_serial) break; } if (r) { if (q->result_head == r) q->result_head = r->next; else last->next = r->next; if (q->result_tail == r) q->result_tail = last; if (!q->result_head) q->result_tail = NULL; q->next_serial++; q->queue_len--; } return r; } /* * Pulls a result off the head of the result queue. Caller should * free it (and any internals as appropriate) after use. This doesn't * wait for a result to be present. * * Results will be returned in strict order. * * Returns t_pool_result pointer if a result is ready. * NULL if not. */ t_pool_result *t_pool_next_result(t_results_queue *q) { t_pool_result *r; #ifdef DEBUG fprintf(stderr, "Requesting next result on queue %p\n", q); #endif pthread_mutex_lock(&q->result_m); r = t_pool_next_result_locked(q); pthread_mutex_unlock(&q->result_m); #ifdef DEBUG fprintf(stderr, "(q=%p) Found %p\n", q, r); #endif return r; } t_pool_result *t_pool_next_result_wait(t_results_queue *q) { t_pool_result *r; #ifdef DEBUG fprintf(stderr, "Waiting for result %d...\n", q->next_serial); #endif pthread_mutex_lock(&q->result_m); while (!(r = t_pool_next_result_locked(q))) { /* Possible race here now avoided via _locked() call, but incase... */ struct timeval now; struct timespec timeout; gettimeofday(&now, NULL); timeout.tv_sec = now.tv_sec + 10; timeout.tv_nsec = now.tv_usec * 1000; pthread_cond_timedwait(&q->result_avail_c, &q->result_m, &timeout); } pthread_mutex_unlock(&q->result_m); return r; } /* * Returns true if there are no items on the finished results queue and * also none still pending. */ int t_pool_results_queue_empty(t_results_queue *q) { int empty; pthread_mutex_lock(&q->result_m); empty = q->queue_len == 0 && q->pending == 0; pthread_mutex_unlock(&q->result_m); return empty; } /* * Returns the number of completed jobs on the results queue. */ int t_pool_results_queue_len(t_results_queue *q) { int len; pthread_mutex_lock(&q->result_m); len = q->queue_len; pthread_mutex_unlock(&q->result_m); return len; } int t_pool_results_queue_sz(t_results_queue *q) { int len; pthread_mutex_lock(&q->result_m); len = q->queue_len + q->pending; pthread_mutex_unlock(&q->result_m); return len; } /* * Frees a result 'r' and if free_data is true also frees * the internal r->data result too. */ void t_pool_delete_result(t_pool_result *r, int free_data) { if (!r) return; if (free_data && r->data) free(r->data); free(r); } /* * Initialises a results queue. * * Results queue pointer on success; * NULL on failure */ t_results_queue *t_results_queue_init(void) { t_results_queue *q = malloc(sizeof(*q)); pthread_mutex_init(&q->result_m, NULL); pthread_cond_init(&q->result_avail_c, NULL); q->result_head = NULL; q->result_tail = NULL; q->next_serial = 0; q->curr_serial = 0; q->queue_len = 0; q->pending = 0; return q; } /* Deallocates memory for a results queue */ void t_results_queue_destroy(t_results_queue *q) { #ifdef DEBUG fprintf(stderr, "Destroying results queue %p\n", q); #endif if (!q) return; pthread_mutex_destroy(&q->result_m); pthread_cond_destroy(&q->result_avail_c); memset(q, 0xbb, sizeof(*q)); free(q); #ifdef DEBUG fprintf(stderr, "Destroyed results queue %p\n", q); #endif } /* ---------------------------------------------------------------------------- * The thread pool. */ #define TDIFF(t2,t1) ((t2.tv_sec-t1.tv_sec)*1000000 + t2.tv_usec-t1.tv_usec) /* * A worker thread. * * Each thread waits for the pool to be non-empty. * As soon as this applies, one of them succeeds in getting the lock * and then executes the job. */ static void *t_pool_worker(void *arg) { t_pool_worker_t *w = (t_pool_worker_t *)arg; t_pool *p = w->p; t_pool_job *j; #ifdef DEBUG_TIME struct timeval t1, t2, t3; #endif for (;;) { // Pop an item off the pool queue #ifdef DEBUG_TIME gettimeofday(&t1, NULL); #endif pthread_mutex_lock(&p->pool_m); #ifdef DEBUG_TIME gettimeofday(&t2, NULL); p->wait_time += TDIFF(t2,t1); w->wait_time += TDIFF(t2,t1); #endif // If there is something on the job list and a higher priority // thread waiting, let it handle this instead. // while (p->head && p->t_stack_top != -1 && p->t_stack_top < w->idx) { // pthread_mutex_unlock(&p->pool_m); // pthread_cond_signal(&p->t[p->t_stack_top].pending_c); // pthread_mutex_lock(&p->pool_m); // } while (!p->head && !p->shutdown) { p->nwaiting++; if (p->njobs == 0) pthread_cond_signal(&p->empty_c); #ifdef DEBUG_TIME gettimeofday(&t2, NULL); #endif #ifdef IN_ORDER // Push this thread to the top of the waiting stack if (p->t_stack_top == -1 || p->t_stack_top > w->idx) p->t_stack_top = w->idx; p->t_stack[w->idx] = 1; pthread_cond_wait(&w->pending_c, &p->pool_m); p->t_stack[w->idx] = 0; /* Find new t_stack_top */ { int i; p->t_stack_top = -1; for (i = 0; i < p->tsize; i++) { if (p->t_stack[i]) { p->t_stack_top = i; break; } } } #else pthread_cond_wait(&p->pending_c, &p->pool_m); #endif #ifdef DEBUG_TIME gettimeofday(&t3, NULL); p->wait_time += TDIFF(t3,t2); w->wait_time += TDIFF(t3,t2); #endif p->nwaiting--; } if (p->shutdown) { #ifdef DEBUG_TIME p->total_time += TDIFF(t3,t1); #endif #ifdef DEBUG fprintf(stderr, "%d: Shutting down\n", worker_id(p)); #endif pthread_mutex_unlock(&p->pool_m); pthread_exit(NULL); } j = p->head; if (!(p->head = j->next)) p->tail = NULL; if (p->njobs-- >= p->qsize) pthread_cond_signal(&p->full_c); if (p->njobs == 0) pthread_cond_signal(&p->empty_c); pthread_mutex_unlock(&p->pool_m); // We have job 'j' - now execute it. t_pool_add_result(j, j->func(j->arg)); #ifdef DEBUG_TIME pthread_mutex_lock(&p->pool_m); gettimeofday(&t3, NULL); p->total_time += TDIFF(t3,t1); pthread_mutex_unlock(&p->pool_m); #endif memset(j, 0xbb, sizeof(*j)); free(j); } return NULL; } /* * Creates a worker pool of length qsize with tsize worker threads. * * Returns pool pointer on success; * NULL on failure */ t_pool *t_pool_init(int qsize, int tsize) { int i; t_pool *p = malloc(sizeof(*p)); p->qsize = qsize; p->tsize = tsize; p->njobs = 0; p->nwaiting = 0; p->shutdown = 0; p->head = p->tail = NULL; p->t_stack = NULL; #ifdef DEBUG_TIME p->total_time = p->wait_time = 0; #endif p->t = malloc(tsize * sizeof(p->t[0])); pthread_mutex_init(&p->pool_m, NULL); pthread_cond_init(&p->empty_c, NULL); pthread_cond_init(&p->full_c, NULL); pthread_mutex_lock(&p->pool_m); #ifdef IN_ORDER if (!(p->t_stack = malloc(tsize * sizeof(*p->t_stack)))) return NULL; p->t_stack_top = -1; for (i = 0; i < tsize; i++) { t_pool_worker_t *w = &p->t[i]; p->t_stack[i] = 0; w->p = p; w->idx = i; w->wait_time = 0; pthread_cond_init(&w->pending_c, NULL); if (0 != pthread_create(&w->tid, NULL, t_pool_worker, w)) return NULL; } #else pthread_cond_init(&p->pending_c, NULL); for (i = 0; i < tsize; i++) { t_pool_worker_t *w = &p->t[i]; w->p = p; w->idx = i; pthread_cond_init(&w->pending_c, NULL); if (0 != pthread_create(&w->tid, NULL, t_pool_worker, w)) return NULL; } #endif pthread_mutex_unlock(&p->pool_m); return p; } /* * Adds an item to the work pool. * * FIXME: Maybe return 1,0,-1 and distinguish between job dispathed vs * result returned. Ie rather than blocking on full queue we're permitted * to return early on "result available" event too. * Caller would then have a while loop around t_pool_dispatch. * Or, return -1 and set errno to EAGAIN to indicate job not yet submitted. * * Returns 0 on success * -1 on failure */ int t_pool_dispatch(t_pool *p, t_results_queue *q, void *(*func)(void *arg), void *arg) { t_pool_job *j = malloc(sizeof(*j)); if (!j) return -1; j->func = func; j->arg = arg; j->next = NULL; j->p = p; j->q = q; if (q) { pthread_mutex_lock(&q->result_m); j->serial = q->curr_serial++; q->pending++; pthread_mutex_unlock(&q->result_m); } else { j->serial = 0; } #ifdef DEBUG fprintf(stderr, "Dispatching job %p for queue %p, serial %d\n", j, q, j->serial); #endif pthread_mutex_lock(&p->pool_m); // Check if queue is full while (p->njobs >= p->qsize) pthread_cond_wait(&p->full_c, &p->pool_m); p->njobs++; if (p->tail) { p->tail->next = j; p->tail = j; } else { p->head = p->tail = j; } // Let a worker know we have data. #ifdef IN_ORDER if (p->t_stack_top >= 0 && p->njobs > p->tsize - p->nwaiting) pthread_cond_signal(&p->t[p->t_stack_top].pending_c); #else pthread_cond_signal(&p->pending_c); #endif pthread_mutex_unlock(&p->pool_m); #ifdef DEBUG fprintf(stderr, "Dispatched (serial %d)\n", j->serial); #endif return 0; } /* * As above but optional non-block flag. * * nonblock 0 => block if input queue is full * nonblock +1 => don't block if input queue is full, but do not add task * nonblock -1 => add task regardless of whether queue is full (over-size) */ int t_pool_dispatch2(t_pool *p, t_results_queue *q, void *(*func)(void *arg), void *arg, int nonblock) { t_pool_job *j; #ifdef DEBUG fprintf(stderr, "Dispatching job for queue %p, serial %d\n", q, q->curr_serial); #endif pthread_mutex_lock(&p->pool_m); if (p->njobs >= p->qsize && nonblock == 1) { pthread_mutex_unlock(&p->pool_m); errno = EAGAIN; return -1; } if (!(j = malloc(sizeof(*j)))) return -1; j->func = func; j->arg = arg; j->next = NULL; j->p = p; j->q = q; if (q) { pthread_mutex_lock(&q->result_m); j->serial = q->curr_serial; pthread_mutex_unlock(&q->result_m); } else { j->serial = 0; } if (q) { pthread_mutex_lock(&q->result_m); q->curr_serial++; q->pending++; pthread_mutex_unlock(&q->result_m); } // Check if queue is full if (nonblock == 0) while (p->njobs >= p->qsize) pthread_cond_wait(&p->full_c, &p->pool_m); p->njobs++; // if (q->curr_serial % 100 == 0) // fprintf(stderr, "p->njobs = %d p->qsize = %d\n", p->njobs, p->qsize); if (p->tail) { p->tail->next = j; p->tail = j; } else { p->head = p->tail = j; } #ifdef DEBUG fprintf(stderr, "Dispatched (serial %d)\n", j->serial); #endif // Let a worker know we have data. #ifdef IN_ORDER // Keep incoming queue at 1 per running thread, so there is always // something waiting when they end their current task. If we go above // this signal to start more threads (if available). This has the effect // of concentrating jobs to fewer cores when we are I/O bound, which in // turn benefits systems with auto CPU frequency scaling. if (p->t_stack_top >= 0 && p->njobs > p->tsize - p->nwaiting) pthread_cond_signal(&p->t[p->t_stack_top].pending_c); #else pthread_cond_signal(&p->pending_c); #endif pthread_mutex_unlock(&p->pool_m); return 0; } /* * Flushes the pool, but doesn't exit. This simply drains the queue and * ensures all worker threads have finished their current task. * * Returns 0 on success; * -1 on failure */ int t_pool_flush(t_pool *p) { int i; #ifdef DEBUG fprintf(stderr, "Flushing pool %p\n", p); #endif // Drains the queue pthread_mutex_lock(&p->pool_m); // Wake up everything for the final sprint! for (i = 0; i < p->tsize; i++) if (p->t_stack[i]) pthread_cond_signal(&p->t[i].pending_c); while (p->njobs || p->nwaiting != p->tsize) pthread_cond_wait(&p->empty_c, &p->pool_m); pthread_mutex_unlock(&p->pool_m); #ifdef DEBUG fprintf(stderr, "Flushed complete for pool %p, njobs=%d, nwaiting=%d\n", p, p->njobs, p->nwaiting); #endif return 0; } /* * Destroys a thread pool. If 'kill' is true the threads are terminated now, * otherwise they are joined into the main thread so they will finish their * current work load. * * Use t_pool_destroy(p,0) after a t_pool_flush(p) on a normal shutdown or * t_pool_destroy(p,1) to quickly exit after a fatal error. */ void t_pool_destroy(t_pool *p, int kill) { int i; #ifdef DEBUG fprintf(stderr, "Destroying pool %p, kill=%d\n", p, kill); #endif /* Send shutdown message to worker threads */ if (!kill) { pthread_mutex_lock(&p->pool_m); p->shutdown = 1; #ifdef DEBUG fprintf(stderr, "Sending shutdown request\n"); #endif #ifdef IN_ORDER for (i = 0; i < p->tsize; i++) pthread_cond_signal(&p->t[i].pending_c); #else pthread_cond_broadcast(&p->pending_c); #endif pthread_mutex_unlock(&p->pool_m); #ifdef DEBUG fprintf(stderr, "Shutdown complete\n"); #endif for (i = 0; i < p->tsize; i++) pthread_join(p->t[i].tid, NULL); } else { for (i = 0; i < p->tsize; i++) pthread_kill(p->t[i].tid, SIGINT); } pthread_mutex_destroy(&p->pool_m); pthread_cond_destroy(&p->empty_c); pthread_cond_destroy(&p->full_c); #ifdef IN_ORDER for (i = 0; i < p->tsize; i++) pthread_cond_destroy(&p->t[i].pending_c); #else pthread_cond_destroy(&p->pending_c); #endif #ifdef DEBUG_TIME fprintf(stderr, "Total time=%f\n", p->total_time / 1000000.0); fprintf(stderr, "Wait time=%f\n", p->wait_time / 1000000.0); fprintf(stderr, "%d%% utilisation\n", (int)(100 - ((100.0 * p->wait_time) / p->total_time + 0.5))); for (i = 0; i < p->tsize; i++) fprintf(stderr, "%d: Wait time=%f\n", i, p->t[i].wait_time / 1000000.0); #endif if (p->t_stack) free(p->t_stack); free(p->t); free(p); #ifdef DEBUG fprintf(stderr, "Destroyed pool %p\n", p); #endif } /*----------------------------------------------------------------------------- * Test app. */ #ifdef TEST_MAIN #include #include void *doit(void *arg) { int i, k, x = 0; int job = *(int *)arg; int *res; printf("Worker: execute job %d\n", job); usleep(random() % 1000000); // to coerce job completion out of order if (0) { for (k = 0; k < 100; k++) { for (i = 0; i < 100000; i++) { x++; x += x * sin(i); x += x * cos(x); } } x *= 100; x += job; } else { x = job*job; } printf("Worker: job %d terminating, x=%d\n", job, x); free(arg); res = malloc(sizeof(*res)); *res = x; return res; } #define NTHREADS 8 int main(int argc, char **argv) { t_pool *p = t_pool_init(NTHREADS*2, NTHREADS); t_results_queue *q = t_results_queue_init(); int i; t_pool_result *r; // Dispatch jobs for (i = 0; i < 20; i++) { int *ip = malloc(sizeof(*ip)); *ip = i; printf("Submitting %d\n", i); t_pool_dispatch(p, q, doit, ip); // Check for results if ((r = t_pool_next_result(q))) { printf("RESULT: %d\n", *(int *)r->data); t_pool_delete_result(r, 1); } } t_pool_flush(p); while ((r = t_pool_next_result(q))) { printf("RESULT: %d\n", *(int *)r->data); t_pool_delete_result(r, 1); } t_pool_destroy(p, 0); t_results_queue_destroy(q); return 0; } #endif io_lib-1.14.6/io_lib/binning.c0000644000031500020650000001226212545536330013013 00000000000000/* * Copyright (c) 2014 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * Author: James Bonfield, Wellcome Trust Sanger Institute. 2014 */ #include /* See http://res.illumina.com/documents/products/whitepapers/whitepaper_datacompression.pdf */ unsigned int illumina_bin[256] = { 0, /* 0 reserved for N */ 1, /* Unused, but for completeness */ 6, 6, 6, 6, 6, 6, 6, 6, /* 2-9 */ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, /* 10-19 */ 22, 22, 22, 22, 22, /* 20-24 */ 27, 27, 27, 27, 27, /* 25-29 */ 33, 33, 33, 33, 33, /* 30-34 */ 37, 37, 37, 37, 37, /* 35-39 */ 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, /* 40+ */ 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, }; unsigned int illumina_bin_33[256] = { 0+33, 1+33, 6+33, 6+33, 6+33, 6+33, 6+33, 6+33, 6+33, 6+33, 15+33, 15+33, 15+33, 15+33, 15+33, 15+33, 15+33, 15+33, 15+33, 15+33, 22+33, 22+33, 22+33, 22+33, 22+33, 27+33, 27+33, 27+33, 27+33, 27+33, 33+33, 33+33, 33+33, 33+33, 33+33, 37+33, 37+33, 37+33, 37+33, 37+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, 40+33, }; io_lib-1.14.6/io_lib/cram_bambam.c0000644000031500020650000003754512616100075013613 00000000000000/* * Copyright (c) 2015 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * This code contains an interface for Biobambam and Libmaus to use * when encoding CRAM files. * * Libmaus has its own thread-pool system. We construct work packages * to be dispatched to libmaus. * * The basic model is that we have a single encoder context, created / * destroyed by cram_allocate_encoder() and cram_deallocate_encoder(). * The context can just be a cram_fd pointer. * * This context is then passed along with a block of uncompressed BAM * records to cram_enque_compression_block(), running in the top thread. * This procedure creates a work package and puts it on the work queue * passed in. * * The cram_process_work_package() function is then called per work * package, within 1 or more threads. Within this function it will * call the libmaus supplied write function and when finished will * call the libmaus supplied work-finished function. The write * function takes the place of the CRAM_IO_PUTC and CRAM_IO_WRITE * functions already defined in cram_io.c. */ #ifdef HAVE_CONFIG_H #include "io_lib_config.h" #endif #include #include #include #include #include #include "io_lib/cram.h" //----------------------------------------------------------------------------- // FIXME: move these to a public header. // Public interface typedef enum cram_data_write_block_type { cram_data_write_block_type_internal, cram_data_write_block_type_block_final, cram_data_write_block_type_file_final } cram_data_write_block_type; // Enqueue a package of work to compress a CRAM slice. typedef void (*cram_enque_compression_work_package_function_t)(void *userdata, void *workpackage); // Callback to indicate the block has been compressed typedef void (*cram_compression_work_package_finished_t)(void *userdata, size_t const inblockid, int const final); // Write function for compressed blocks, provided by libmaus. // Inblockid is the same as supplied by the dispatcher. // Outblockid increments from 0 per unique inblockid. typedef void (*cram_data_write_function_t)(void *userdata, ssize_t const inblockid, size_t const outblockid, char const *data, size_t const n, cram_data_write_block_type const blocktype); // Temporary copy from biobambam (BSD licence verbally accepted) to // help validate the interface via the compiler. extern void *cram_allocate_encoder(void *userdata, char const *sam_header, size_t const sam_headerlength, cram_data_write_function_t write_func); extern void cram_deallocate_encoder(void *context); extern int cram_enque_compression_block( void *userdata, void *context, size_t const inblockid, char const **block, size_t const *blocksize, size_t const *blockelements, size_t const numblocks, int const final, cram_enque_compression_work_package_function_t workenqueuefunction, cram_data_write_function_t writefunction, cram_compression_work_package_finished_t workfinishedfunction); extern int cram_process_work_package(void *workpackage); //----------------------------------------------------------------------------- // Internally used structures // The cram_enc_context is the primary encoder context used by // libmaus. It is allocated once and passed into all subsequent calls // by libmaus. We use it to track the total number of records so far // (for the CRAM container header) and our CRAM in-memory file // descriptor. typedef struct { cram_fd *fd; void *userdata; // supplied by caller, pass back into write_func cram_data_write_function_t write_func; size_t num_records; pthread_mutex_t context_lock; // a lock for manipulating this struct pthread_mutex_t header_lock; // a lock on fd->header } cram_enc_context; // A work package is a series of BAM blocks for conversion to CRAM typedef struct { // encoder context cram_enc_context *context; // BAM block char const **block; size_t const *blocksize; size_t num_blocks; ssize_t inblockid; size_t outblockid; int final; size_t num_records; // Libmaus callback functions void *userdata; cram_data_write_function_t write_func; cram_compression_work_package_finished_t finished_func; } cram_enc_work_package; //----------------------------------------------------------------------------- // The callbacks for making CRAM write to an in-memory data block. /* * Cram buffered I/O writer. * Has an fwrite()-like interface. It returns the number of items * (not bytes) written. As dstring_nappend either writes everything * or nothing, this will return nmemb on success and 0 on failure. */ size_t cram_mem_write_callback(void *ptr, size_t size, size_t nmemb, void *cram_io_userdata) { dstring_t *ds = (dstring_t *)cram_io_userdata; if (0 == dstring_nappend(ds, ptr, size*nmemb)) return nmemb; return 0; } static cram_io_output_t * cram_callback_allocate_func(char const *filename) { cram_io_output_t *io = malloc(sizeof(*io)); dstring_t *ds = dstring_create(NULL); if (!io) return NULL; io->user_data = ds; io->fwrite_callback = cram_mem_write_callback; //io->ftell_callback = cram_mem_tell_callback; io->ftell_callback = NULL; return io; } static cram_io_output_t * cram_callback_deallocate_func(cram_io_output_t *io) { if (io) { if (io->user_data) dstring_destroy(io->user_data); free(io); } return NULL; } //----------------------------------------------------------------------------- // The libmaus threading interface itself. /** * Allocate cram encoder and return compression context * * @param samheader SAM header text * @param samheaderlength length of SAM header in bytes * @param workenqueuefunction function which will be called to enque * compression work packages * * @return NULL on failure. **/ void *cram_allocate_encoder(void *userdata, char const *sam_header, size_t const sam_headerlength, cram_data_write_function_t write_func) { cram_fd *fd = NULL; SAM_hdr *hdr = NULL; cram_enc_context *c = malloc(sizeof(*c)); if (!c) goto err; if (!(hdr = sam_hdr_parse(sam_header, sam_headerlength))) goto err; fd = cram_openw_by_callbacks(NULL, cram_callback_allocate_func, cram_callback_deallocate_func, 1024*1024); if (!fd) goto err; //fd->inblockid = 0; //fd->outblockid = 0; fd->header = hdr; sam_hdr_incr_ref(hdr); if (cram_write_SAM_hdr(fd, hdr) != 0) goto err; cram_io_flush_output_buffer(fd); c->fd = fd; c->userdata = userdata; c->write_func = write_func; c->num_records = 0; // While the cram_fd itself does not have its own internal // multithreading, we manually create the mutexes it would use // to ensure that this cram_fd running in our own separate // threads can handle locking correctly. fd->metrics_lock = malloc(sizeof(pthread_mutex_t)); fd->ref_lock = malloc(sizeof(pthread_mutex_t)); fd->bam_list_lock = malloc(sizeof(pthread_mutex_t)); pthread_mutex_init(fd->metrics_lock, NULL); pthread_mutex_init(fd->ref_lock, NULL); pthread_mutex_init(fd->bam_list_lock, NULL); dstring_t *ds = (dstring_t *)fd->fp_out_callbacks->user_data; write_func(userdata, -1, 0, DSTRING_STR(ds), DSTRING_LEN(ds), cram_data_write_block_type_block_final); pthread_mutex_init(&c->context_lock, NULL); pthread_mutex_init(&c->header_lock, NULL); return c; err: if (c) free(c); if (fd) cram_close(fd); if (hdr) sam_hdr_free(hdr); return NULL; } void cram_deallocate_encoder(void *context) { cram_enc_context *c = (cram_enc_context *)context; cram_fd *fd; if (!c) return; fd = c->fd; pthread_mutex_destroy(&c->context_lock); pthread_mutex_destroy(&c->header_lock); pthread_mutex_destroy(fd->metrics_lock); pthread_mutex_destroy(fd->ref_lock); pthread_mutex_destroy(fd->bam_list_lock); free(fd->metrics_lock); free(fd->ref_lock); free(fd->bam_list_lock); if (fd->header) sam_hdr_free(fd->header); if (fd) cram_close(fd); free(c); } /** * Notify cram encoder there is more data to be compressed * * @param userdata pointer supplied back to callback functions * @param context compression context returned by * cram_allocate_encoder * @param inblockid running id of input block * @param block of alignments (uncompressed bam format) * @param blocksize length of block in sizeof(char) * @param final 1 if this is the last block passed, 0 otherwise * @param workenqueuefunction callback for queueing work in the thread * pool * @param workfinishedfunction callback notifying caller that * compression of this block is done * @param writefunction function called from writing compressed data * * @return 0 on success; * -1 on failure **/ int cram_enque_compression_block( void *userdata, void *context, size_t const inblockid, char const **block, size_t const *blocksize, size_t const *blockelements, size_t const numblocks, int const final, cram_enque_compression_work_package_function_t workenqueuefunction, cram_data_write_function_t writefunction, cram_compression_work_package_finished_t workfinishedfunction) { cram_enc_context *c = (cram_enc_context *)context; cram_enc_work_package *pkg = malloc(sizeof(*pkg)); size_t n, numrecs; if (!pkg) return -1; numrecs = 0; for (n = 0; n < numblocks; n++) numrecs += blockelements[n]; pthread_mutex_lock(&c->context_lock); pkg->num_records = c->num_records; c->num_records += numrecs; pthread_mutex_unlock(&c->context_lock); #if defined(IO_LIB_CRAM_BAMBAM_DEBUG) { fprintf(stderr, "Enqueue block %d, rec_start %d+%d, final %d\n", (int)inblockid, (int)pkg->num_records, (int)numrecs, final); fprintf(stderr, "blocksize[]={"); int tot; for (tot = n = 0; n < numblocks; n++) { fprintf(stderr, "%d%c", (int)blocksize[n], "},"[n < numblocks-1]); tot += blocksize[n]; } fprintf(stderr, "; // sum %d\n", tot); } #endif pkg->context = c; pkg->block = block; pkg->blocksize = blocksize; pkg->num_blocks = numblocks; pkg->inblockid = inblockid; pkg->outblockid = 0; pkg->final = final; pkg->userdata = userdata; pkg->write_func = writefunction; pkg->finished_func = workfinishedfunction; workenqueuefunction(userdata, pkg); // FIXME: should probably have // err code. return 0; } static cram_fd *cram_dup_fd(cram_fd *orig) { int bufsize = 65536; // FIXME cram_fd *fd = malloc(sizeof(*fd)); if (!fd) return NULL; memcpy(fd, orig, sizeof(*fd)); fd->ctr = NULL; fd->fp_out_buffer = cram_io_allocate_output_buffer(bufsize); fd->fp_out_callbacks = cram_callback_allocate_func(NULL); fd->fp_out = NULL; fd->slice_num = 0; return fd; } static void cram_dup_close(cram_fd *fd) { spare_bams *bl, *next; if (!fd) return; if (fd->fp_out_buffer) cram_io_deallocate_output_buffer(fd->fp_out_buffer); if (fd->fp_out_callbacks) cram_callback_deallocate_func(fd->fp_out_callbacks); for (bl = fd->bl; bl; bl = next) { int i, max_rec = fd->seqs_per_slice * fd->slices_per_container; next = bl->next; for (i = 0; i < max_rec; i++) { if (bl->bams[i]) free(bl->bams[i]); } free(bl->bams); free(bl); } if (fd->ctr) cram_free_container(fd->ctr); free(fd); } /** * Work package dispatch function for cram encoding * * @param Workpackage containing task to perform and all function * pointers necessary to communicate back to dispatcher. * * @return 0 on success; * -1 on failure **/ int cram_process_work_package(void *workpackage) { cram_enc_work_package *pkg = (cram_enc_work_package *)workpackage; cram_enc_context *c; cram_fd *fd; size_t bnum; if (!pkg) return -1; if (!(c = pkg->context)) return -1; // Each work package can be running in a separate thread, so we // need to make sure writing to CRAM isn't clobbering over shared // memory. // // The reference sequences work fine with reference counting, but // the output buffer is one per cram_fd. Therefore we create a // temporary local copy of cram_fd with pointers to share as much // as we can. // // FIXME: consider having a free-list of previously used cram_fd. pthread_mutex_lock(&c->context_lock); fd = cram_dup_fd(c->fd); pthread_mutex_unlock(&c->context_lock); fd->record_counter = pkg->num_records; // We create a fake bam_file_t containing the entire BAM block and // then use the standard bam_get_seq() API to iterate over // sequences within the BAM block. for (bnum = 0; bnum < pkg->num_blocks; bnum++) { bam_file_t *bf; bam_seq_t *bsp = NULL; pthread_mutex_lock(&c->header_lock); bf = bam_open_block(pkg->block[bnum], pkg->blocksize[bnum], fd->header); pthread_mutex_unlock(&c->header_lock); if (!bf) return -1; while (bam_get_seq(bf, &bsp)) { if (cram_put_bam_seq(fd, bsp) != 0) { fprintf(stderr, "Failed to write CRAM record\n"); pthread_mutex_lock(&c->header_lock); bam_close(bf); pthread_mutex_unlock(&c->header_lock); cram_dup_close(fd); return -1; } } pthread_mutex_lock(&c->header_lock); bam_close(bf); pthread_mutex_unlock(&c->header_lock); if (bsp) free(bsp); } cram_flush(fd); if (pkg->final) { // The final package needs the EOF block adding too. cram_write_eof_block(fd); } // Write the block dstring_t *ds = (dstring_t *)fd->fp_out_callbacks->user_data; #if defined(IO_LIB_CRAM_BAMBAM_DEBUG) fprintf(stderr, "Writing work package %d,%d " "from rec %d, length %d, final %d\n", (int)pkg->inblockid, (int)pkg->outblockid, (int)pkg->num_records, (int)DSTRING_LEN(ds), pkg->final); #endif pkg->write_func(pkg->userdata, pkg->inblockid, pkg->outblockid++, DSTRING_STR(ds), DSTRING_LEN(ds), pkg->final ? cram_data_write_block_type_file_final : cram_data_write_block_type_block_final); pkg->finished_func(pkg->userdata, pkg->inblockid, pkg->final); // Free the work package free(pkg); // FIXME: do we also need to do something to decr reference seqs? cram_dup_close(fd); return 0; } io_lib-1.14.6/README0000644000031500020650000001304212617153730010642 00000000000000 IO_LIB VERSION 1.14.6 ===================== Io_lib is a library of file reading and writing code to provide a general purpose trace file (and Experiment File) reading interface. The programmer simply calls the (eg) read_reading to create a "Read" C structure with the data loaded into memory. It has been compiled and tested on a variety of unix systems, MacOS X and MS Windows. The directories below here contain the io_lib code. These support the following file formats: SCF trace files ABI trace files ALF trace files ZTR trace files SFF trace archives SRF trace archives Experiment files Plain text files SAM/BAM sequence files CRAM sequence files These link together to form a single "libstaden-read" library supporting all the file formats via a single read_reading (or fread_reading or mfread_reading) function call and analogous write_reading functions too. See the file include/Read.h for the generic 'Read' structure. See the CHANGES or ChangeLog file for the full list of chanegs. A quick summary follows. What's new in 1.14.6 ==================== Tiny bug fix to cope with cramtools.jar generated CRAM data (zero sized huffman tables). The bug was introduced in 1.14.5. What's new in 1.14.5 ==================== CRAM now has a maximum number of bases per slice limit, specified in scramble with -b. The defaults mean that the code is now faster and less memory hungry on long reads (PacBio, ONT) but has no change with Illumina short-read data. Long read data file sizes may be impacted slightly. Various CRAM bug fixes including multi-slice containers, the biobambam interfaces and MacOS X support. What's new in 1.14.4 ==================== Bug fix release: fixed a CRAM encoding bug with compression level 6 and above where the resulting CRAM file could not be decoded. This has been in existance since 1.13.8 (and possibly 1.13.6 under rarer conditions). What's new in 1.14.3 ==================== CRAM: disabled the experimental slice checksum headers (SD and BD *slice* tags) as their behaviour is still undefined and not in the CRAM specification. These were left in in error. Also fixed a bug with decoding lzma compression level 9. What's new in 1.14.2 ==================== Minor CRAM bug fixes and a speed improvement (bug fix to 1.14.1). What's new in 1.14.1 ==================== More CRAM tweaks. The primary purpose for this release is slightly better compression ratios on some (although not all) CRAM files due to splitting auxiliary tags into their own per-tag data blocks. What's new in 1.14.0 ==================== The primary change with this release is the default CRAM version is now version 3.0. This has been extensively cross-validated with the Cramtools-3.0.jar implementation. In addition to this many bugs have been fixed and the code has been "hardened" by both visual inspection, automated fuzzing and fixing all the compiler warnings. Older comments ============== 1.13.x saw the arrival of CRAM (version 2) format. 1.14.0 introduced CRAM version 3. In 1.12.x saw various improvements to building and linking, specifically on Fedora and MacOS X plus the use of libtool to create dynamic libraries. The library name is now libstaden-read.so too, as this was already renamed within Debian. We removed illumina2srf and srf2illumina in this release too (they have their own package on SourceForge now). In 1.11.x the SRF support was added. The SRF v1.3 format specification can be found here: http://www.bcgsc.ca/pipermail/ssrformat/attachments/20071209/b0f865a0/ShortSequenceFormatDec9th_v_1_3-0001.doc The ZTR specification changes involve adding some new compression types (the general purpose XRLE2 plus some more solexa specific TSHIT and QSHIFT methods), a region chunk (REGN) to indicate the location of paired-end data stored in a single trace, improved meta-data support for SMP4/SAMP chunks including specifying the baseline (OFFS meta-data tag) and various minor tweaks. There's still a few questions in the ZTR format itself (pending feedback), but what is implemented currently is also what has been described in the docs/ZTR_format file. Finally the directory layout has been greatly simplified with the merging of all the format directories into a single "io_lib" directory and the programs utilising it remaining in the "progs" subdirectory. Building ======== Linux ----- We use the GNU autoconf build mechanism. To build: 1. ./configure "./configure --help" will give a list of the options for GNU autoconf. For modifying the compiler options or flags you may wish to redefine the CC or CFLAGS variable. Eg (in sh or bash): CC=cc CFLAGS=-g ./configure 2. make (or gmake) This will build the sources. CFLAGS may also be changed a build time using (eg): make 'CFLAGS=-g ...' 3. make install The default installation location is /usr/local/bin and /usr/local/lib. These can be changed with the --prefix option to "configure". Windows ------- Under Microsoft Windows we recommend the use of MSYS and MINGW as a build environment. These contain enough tools to build using the configure script as per Linux. Visit http://sourceforge.net/projects/mingw/files/ and download/install Automated MinGW Installer (eg MinGW-5.1.4.exe), MSYS Base System (eg MSYS-1.0.11.exe) and MSYS Supplementary Tools (eg msysDTK-1.0.1.exe). MacOS X ------- The configure script should work by default, but if you are attempting to build FAT binaries to work on both i386 and ppc targets you'll need to disable dependency tracking. Ie: CFLAGS="-arch i386 -arch ppc" LDFLAGS="-arch i386 -arch ppc" \ ../configure --disable-dependency-tracking io_lib-1.14.6/acinclude.m40000644000031500020650000004137512547702405012166 00000000000000# LIBCURL_CHECK_CONFIG ([DEFAULT-ACTION], [MINIMUM-VERSION], # [ACTION-IF-YES], [ACTION-IF-NO]) # ---------------------------------------------------------- # David Shaw > May-09-2006 # Modified by Rob to deal with curl-config linking against more libraries than # strictly necessary. # # Checks for libcurl. DEFAULT-ACTION is the string yes or no to # specify whether to default to --with-libcurl or --without-libcurl. # If not supplied, DEFAULT-ACTION is yes. MINIMUM-VERSION is the # minimum version of libcurl to accept. Pass the version as a regular # version number like 7.10.1. If not supplied, any version is # accepted. ACTION-IF-YES is a list of shell commands to run if # libcurl was successfully found and passed the various tests. # ACTION-IF-NO is a list of shell commands that are run otherwise. # Note that using --without-libcurl does run ACTION-IF-NO. # # This macro #defines HAVE_LIBCURL if a working libcurl setup is # found, and sets @LIBCURL@ and @LIBCURL_CPPFLAGS@ to the necessary # values. Other useful defines are LIBCURL_FEATURE_xxx where xxx are # the various features supported by libcurl, and LIBCURL_PROTOCOL_yyy # where yyy are the various protocols supported by libcurl. Both xxx # and yyy are capitalized. See the list of AH_TEMPLATEs at the top of # the macro for the complete list of possible defines. Shell # variables $libcurl_feature_xxx and $libcurl_protocol_yyy are also # defined to 'yes' for those features and protocols that were found. # Note that xxx and yyy keep the same capitalization as in the # curl-config list (e.g. it's "HTTP" and not "http"). # # Users may override the detected values by doing something like: # LIBCURL="-lcurl" LIBCURL_CPPFLAGS="-I/usr/myinclude" ./configure # # For the sake of sanity, this macro assumes that any libcurl that is # found is after version 7.7.2, the first version that included the # curl-config script. Note that it is very important for people # packaging binary versions of libcurl to include this script! # Without curl-config, we can only guess what protocols are available, # or use curl_version_info to figure it out at runtime. AC_DEFUN([LIBCURL_CHECK_CONFIG], [ AH_TEMPLATE([LIBCURL_FEATURE_SSL],[Defined if libcurl supports SSL]) AH_TEMPLATE([LIBCURL_FEATURE_KRB4],[Defined if libcurl supports KRB4]) AH_TEMPLATE([LIBCURL_FEATURE_IPV6],[Defined if libcurl supports IPv6]) AH_TEMPLATE([LIBCURL_FEATURE_LIBZ],[Defined if libcurl supports libz]) AH_TEMPLATE([LIBCURL_FEATURE_ASYNCHDNS],[Defined if libcurl supports AsynchDNS]) AH_TEMPLATE([LIBCURL_FEATURE_IDN],[Defined if libcurl supports IDN]) AH_TEMPLATE([LIBCURL_FEATURE_SSPI],[Defined if libcurl supports SSPI]) AH_TEMPLATE([LIBCURL_FEATURE_NTLM],[Defined if libcurl supports NTLM]) AH_TEMPLATE([LIBCURL_PROTOCOL_HTTP],[Defined if libcurl supports HTTP]) AH_TEMPLATE([LIBCURL_PROTOCOL_HTTPS],[Defined if libcurl supports HTTPS]) AH_TEMPLATE([LIBCURL_PROTOCOL_FTP],[Defined if libcurl supports FTP]) AH_TEMPLATE([LIBCURL_PROTOCOL_FTPS],[Defined if libcurl supports FTPS]) AH_TEMPLATE([LIBCURL_PROTOCOL_FILE],[Defined if libcurl supports FILE]) AH_TEMPLATE([LIBCURL_PROTOCOL_TELNET],[Defined if libcurl supports TELNET]) AH_TEMPLATE([LIBCURL_PROTOCOL_LDAP],[Defined if libcurl supports LDAP]) AH_TEMPLATE([LIBCURL_PROTOCOL_DICT],[Defined if libcurl supports DICT]) AH_TEMPLATE([LIBCURL_PROTOCOL_TFTP],[Defined if libcurl supports TFTP]) AC_ARG_WITH(libcurl, AC_HELP_STRING([--with-libcurl=DIR],[look for the curl library in DIR]), [_libcurl_with=$withval],[_libcurl_with=ifelse([$1],,[yes],[$1])]) if test "$_libcurl_with" != "no" ; then AC_PROG_AWK _libcurl_version_parse="eval $AWK '{split(\$NF,A,\".\"); X=256*256*A[[1]]+256*A[[2]]+A[[3]]; print X;}'" _libcurl_try_link=yes if test -d "$_libcurl_with" ; then LIBCURL_CPPFLAGS="-I$withval/include" _libcurl_ldflags="-L$withval/lib" AC_PATH_PROG([_libcurl_config],["$withval/bin/curl-config"]) else AC_PATH_PROG([_libcurl_config],[curl-config]) fi if test x$_libcurl_config != "x" ; then AC_CACHE_CHECK([for the version of libcurl], [libcurl_cv_lib_curl_version], [libcurl_cv_lib_curl_version=`$_libcurl_config --version | $AWK '{print $[]2}'`]) _libcurl_version=`echo $libcurl_cv_lib_curl_version | $_libcurl_version_parse` _libcurl_wanted=`echo ifelse([$2],,[0],[$2]) | $_libcurl_version_parse` if test $_libcurl_wanted -gt 0 ; then AC_CACHE_CHECK([for libcurl >= version $2], [libcurl_cv_lib_version_ok], [ if test $_libcurl_version -ge $_libcurl_wanted ; then libcurl_cv_lib_version_ok=yes else libcurl_cv_lib_version_ok=no fi ]) fi if test $_libcurl_wanted -eq 0 || test x$libcurl_cv_lib_version_ok = xyes ; then if test x"$LIBCURL_CPPFLAGS" = "x" ; then LIBCURL_CPPFLAGS=`$_libcurl_config --cflags` fi if test x"$LIBCURL" = "x" ; then # libcurl-config --libs gives a ridiculous number of libraries # check to see if we can actually link just using -lcurl LIBCURL=${LIBCURL-"$_libcurl_ldflags -lcurl"} AC_CACHE_CHECK([whether libcurl just needs -lcurl], [libcurl_cv_lib_curl_only_needs_minus_l_curl], [ _libcurl_save_cppflags=$CPPFLAGS CPPFLAGS="$LIBCURL_CPPFLAGS $CPPFLAGS" _libcurl_save_libs=$LIBS LIBS="$LIBCURL $LIBS" AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include ]],[[ /* Try and use a few common options to force a failure if we are missing symbols or can't link. */ int x; curl_easy_setopt(NULL,CURLOPT_URL,NULL); x=CURL_ERROR_SIZE; x=CURLOPT_WRITEFUNCTION; x=CURLOPT_FILE; x=CURLOPT_ERRORBUFFER; x=CURLOPT_STDERR; x=CURLOPT_VERBOSE; ]])],libcurl_cv_lib_curl_only_needs_minus_l_curl=yes,libcurl_cv_lib_curl_only_needs_minus_l_curl=no) CPPFLAGS=$_libcurl_save_cppflags LIBS=$_libcurl_save_libs unset _libcurl_save_cppflags unset _libcurl_save_libs ]) if test "x$libcurl_cv_lib_curl_only_needs_minus_l_curl" != xyes ; then LIBCURL=`$_libcurl_config --libs` fi # This is so silly, but Apple actually has a bug in their # curl-config script. Fixed in Tiger, but there are still # lots of Panther installs around. case "${host}" in powerpc-apple-darwin7*) LIBCURL=`echo $LIBCURL | sed -e 's|-arch i386||g'` ;; esac fi # All curl-config scripts support --feature _libcurl_features=`$_libcurl_config --feature` # Is it modern enough to have --protocols? (7.12.4) if test $_libcurl_version -ge 461828 ; then _libcurl_protocols=`$_libcurl_config --protocols` fi else _libcurl_try_link=no fi unset _libcurl_wanted fi if test $_libcurl_try_link = yes ; then # we didn't find curl-config, so let's see if the user-supplied # link line (or failing that, "-lcurl") is enough. LIBCURL=${LIBCURL-"$_libcurl_ldflags -lcurl"} AC_CACHE_CHECK([whether libcurl is usable], [libcurl_cv_lib_curl_usable], [ _libcurl_save_cppflags=$CPPFLAGS CPPFLAGS="$LIBCURL_CPPFLAGS $CPPFLAGS" _libcurl_save_libs=$LIBS LIBS="$LIBCURL $LIBS" AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include ]],[[ /* Try and use a few common options to force a failure if we are missing symbols or can't link. */ int x; curl_easy_setopt(NULL,CURLOPT_URL,NULL); x=CURL_ERROR_SIZE; x=CURLOPT_WRITEFUNCTION; x=CURLOPT_FILE; x=CURLOPT_ERRORBUFFER; x=CURLOPT_STDERR; x=CURLOPT_VERBOSE; ]])],libcurl_cv_lib_curl_usable=yes,libcurl_cv_lib_curl_usable=no) CPPFLAGS=$_libcurl_save_cppflags LIBS=$_libcurl_save_libs unset _libcurl_save_cppflags unset _libcurl_save_libs ]) if test $libcurl_cv_lib_curl_usable = yes ; then # Does curl_free() exist in this version of libcurl? # If not, fake it with free() _libcurl_save_cppflags=$CPPFLAGS CPPFLAGS="$CPPFLAGS $LIBCURL_CPPFLAGS" _libcurl_save_libs=$LIBS LIBS="$LIBS $LIBCURL" AC_CHECK_FUNC(curl_free,, AC_DEFINE(curl_free,free, [Define curl_free() as free() if our version of curl lacks curl_free.])) CPPFLAGS=$_libcurl_save_cppflags LIBS=$_libcurl_save_libs unset _libcurl_save_cppflags unset _libcurl_save_libs AC_DEFINE(HAVE_LIBCURL,1, [Define to 1 if you have a functional curl library.]) AC_SUBST(LIBCURL_CPPFLAGS) AC_SUBST(LIBCURL) for _libcurl_feature in $_libcurl_features ; do AC_DEFINE_UNQUOTED(AS_TR_CPP(libcurl_feature_$_libcurl_feature),[1]) eval AS_TR_SH(libcurl_feature_$_libcurl_feature)=yes done if test "x$_libcurl_protocols" = "x" ; then # We don't have --protocols, so just assume that all # protocols are available _libcurl_protocols="HTTP FTP FILE TELNET LDAP DICT" if test x$libcurl_feature_SSL = xyes ; then _libcurl_protocols="$_libcurl_protocols HTTPS" # FTPS wasn't standards-compliant until version # 7.11.0 if test $_libcurl_version -ge 461568; then _libcurl_protocols="$_libcurl_protocols FTPS" fi fi fi for _libcurl_protocol in $_libcurl_protocols ; do AC_DEFINE_UNQUOTED(AS_TR_CPP(libcurl_protocol_$_libcurl_protocol),[1]) eval AS_TR_SH(libcurl_protocol_$_libcurl_protocol)=yes done else unset LIBCURL unset LIBCURL_CPPFLAGS fi fi unset _libcurl_try_link unset _libcurl_version_parse unset _libcurl_config unset _libcurl_feature unset _libcurl_features unset _libcurl_protocol unset _libcurl_protocols unset _libcurl_version unset _libcurl_ldflags fi if test x$_libcurl_with = xno || test x$libcurl_cv_lib_curl_usable != xyes ; then # This is the IF-NO path ifelse([$4],,:,[$4]) else # This is the IF-YES path ifelse([$3],,:,[$3]) fi unset _libcurl_with ])dnl # ZLIB_CHECK_CONFIG ([DEFAULT-ACTION] [MINIMUM-VERSION], # [ACTION-IF-YES], [ACTION-IF-NO]) # AC_DEFUN([ZLIB_CHECK_CONFIG], [ AC_ARG_WITH(zlib, AC_HELP_STRING([--with-zlib=DIR],[look for zlib in DIR]), [_zlib_with=$withval],[_zlib_with="no"]) ZLIB_ROOT="" if test "$_zlib_with" != "no" then if test -f "$_zlib_with/include/zlib.h" then ZLIB_ROOT=$_zlib_with fi fi # Check if it's a working library zlib_ok=no if test "$ZLIB_ROOT" != "" then _cppflags=$CPPFLAGS CPPFLAGS="$CPPFLAGS -I${ZLIB_ROOT}/include" _ldflags=$LDFLAGS LDFLAGS="$LFDLAGS -L${ZLIB_ROOT}/lib" AC_LANG_SAVE AC_LANG_C AC_CHECK_LIB(z, inflateEnd, [AC_CHECK_HEADER(zlib.h, zlib_ok=yes, zlib_ok=no)]) AC_LANG_RESTORE if test "$zlib_ok" != "yes" then # Backout and whinge CPPFLAGS=$_cppflags LDFLAGS=$_ldflags AC_MSG_WARN("--with-zlib specified, but non functioning") fi else # Maybe it works "out of the box"? AC_CHECK_LIB(z, inflateEnd, [AC_CHECK_HEADER(zlib.h, zlib_ok=yes, zlib_ok=no)]) fi if test "$zlib_ok" = "yes" then AC_DEFINE(HAVE_ZLIB, 1, [Define to 1 if you have a functional libz.]) if test "$ZLIB_ROOT" != "" then LIBZ="-L${ZLIB_ROOT}/lib -lz" else LIBZ=-lz fi AC_SUBST(LIBZ) else AC_MSG_WARN("No functioning zlib found") fi # Not sure how many of these are needed, but it's belt-and-braces mode AH_TEMPLATE([HAVE_ZLIB], [Define if zlib is installed]) AM_CONDITIONAL(HAVE_ZLIB, test "$zlib_ok" = "yes") ]) dnl @synopsis VL_PROG_CC_WARNINGS([ANSI]) dnl dnl From http://ac-archive.sourceforge.net/ac-archive/vl_prog_cc_warnings.html dnl dnl Enables a reasonable set of warnings for the C compiler. dnl Optionally, if the first argument is nonempty, turns on flags which dnl enforce and/or enable proper ANSI C if such are known with the dnl compiler used. dnl dnl Currently this macro knows about GCC, Solaris C compiler, Digital dnl Unix C compiler, C for AIX Compiler, HP-UX C compiler, IRIX C dnl compiler, NEC SX-5 (Super-UX 10) C compiler, and Cray J90 (Unicos dnl 10.0.0.8) C compiler. dnl dnl @category C dnl @author Ville Laurikari dnl Updated by Rob Davies dnl @version 2002-04-04 dnl @license AllPermissive dnl Copying and distribution of this file, with or without modification, dnl are permitted in any medium without royalty provided the copyright notice dnl and this notice are preserved. Users of this software should generally dnl follow the principles of the MIT License including its disclaimer. dnl Original Copyright (c) Ville Laurikari 2002 dnl Modifications Copyright (c) Genome Research Limited 2015 AC_DEFUN([VL_PROG_CC_WARNINGS], [ AC_ARG_ENABLE([warnings], [AS_HELP_STRING([--disable-warnings], [turn off compiler warnings])], [], [enable_warnings=yes]) AS_IF([test "x$enable_warnings" != xno],[ AC_PROG_GREP ansi="$1" AS_IF([test "x$ansi" = "x"], [msg="for C compiler warning flags"], [msg="for C compiler warning and ANSI conformance flags"]) AC_CACHE_CHECK($msg, vl_cv_prog_cc_warnings, [ vl_cv_prog_cc_warnings="" AS_IF([test "x$CC" != "x"],[ cat > conftest.c <&1 | $GREP -i "WorkShop" > /dev/null 2>&1 && "$CC" -c -v -Xc conftest.c > /dev/null 2>&1 && test -f conftest.o],[ AS_IF([test "x$ansi" = "x"], [vl_cv_prog_cc_warnings="-v"], [vl_cv_prog_cc_warnings="-v -Xc"]) ], dnl Digital Unix C compiler ["$CC" -V 2>&1 | $GREP -i "Digital UNIX Compiler" > /dev/null 2>&1 && "$CC" -c -verbose -w0 -warnprotos -std1 conftest.c > /dev/null 2>&1 && test -f conftest.o], [ AS_IF([test "x$ansi" = "x"], [vl_cv_prog_cc_warnings="-verbose -w0 -warnprotos"], [vl_cv_prog_cc_warnings="-verbose -w0 -warnprotos -std1"]) ], dnl C for AIX Compiler ["$CC" 2>&1 | $GREP -i "C for AIX Compiler" > /dev/null 2>&1 && "$CC" -c -qlanglvl=ansi -qinfo=all conftest.c > /dev/null 2>&1 && test -f conftest.o],[ AS_IF([test "x$ansi" = "x"], [vl_cv_prog_cc_warnings="-qsrcmsg -qinfo=all:noppt:noppc:noobs:nocnd"], [vl_cv_prog_cc_warnings="-qsrcmsg -qinfo=all:noppt:noppc:noobs:nocnd -qlanglvl=ansi"]) ], dnl IRIX C compiler ["$CC" -version 2>&1 | $GREP -i "MIPSpro Compilers" > /dev/null 2>&1 && "$CC" -c -fullwarn -ansi -ansiE conftest.c > /dev/null 2>&1 && test -f conftest.o],[ AS_IF([test "x$ansi" = "x"], [vl_cv_prog_cc_warnings="-fullwarn"], [vl_cv_prog_cc_warnings="-fullwarn -ansi -ansiE"]) ], dnl HP-UX C compiler [what "$CC" 2>&1 | $GREP -i "HP C Compiler" > /dev/null 2>&1 && "$CC" -c -Aa +w1 conftest.c > /dev/null 2>&1 && test -f conftest.o],[ AS_IF([test "x$ansi" = "x"], [vl_cv_prog_cc_warnings="+w1"], [vl_cv_prog_cc_warnings="+w1 -Aa"]) ], dnl The NEC SX-5 (Super-UX 10) C compiler ["$CC" -V 2>&1 | $GREP "/SX" > /dev/null 2>&1 && "$CC" -c -pvctl[,]fullmsg -Xc conftest.c > /dev/null 2>&1 && test -f conftest.o],[ AS_IF([test "x$ansi" = "x"], [vl_cv_prog_cc_warnings="-pvctl[,]fullmsg"], [vl_cv_prog_cc_warnings="-pvctl[,]fullmsg -Xc"]) ], dnl The Cray C compiler (Unicos) ["$CC" -V 2>&1 | $GREP -i "Cray" > /dev/null 2>&1 && "$CC" -c -h msglevel 2 conftest.c > /dev/null 2>&1 && test -f conftest.o],[ AS_IF([test "x$ansi" = "x"], [vl_cv_prog_cc_warnings="-h msglevel 2"], [vl_cv_prog_cc_warnings="-h msglevel 2 -h conform"]) ]) rm -f conftest.* ]) ]) AS_IF([test "x$vl_cv_prog_cc_warnings" != "x"], [CFLAGS="$vl_cv_prog_cc_warnings $CFLAGS"]) ]) ])dnl io_lib-1.14.6/configure.in0000644000031500020650000001343012617153413012272 00000000000000dnl Process this file with autoconf to produce a configure script. AC_INIT(io_lib, 1.14.6) AC_CONFIG_HEADERS(io_lib_config.h) AM_INIT_AUTOMAKE AM_MAINTAINER_MODE # For my own benefit, here's a summary of how versioning should work. # # Library versioning, not to be confused with the release number: # Update VERS_CURRENT when an interface changes in an incompatible manner. # eg. change of struct, removing a function, changing a prototype. # Also increment this when we add new functions in a backwards compatible # manner, but update VERS_AGE too (see below). # # Update VERS_REVISION whenever VERS_CURRENT hasn't changed, but the source # code has. (Otherwise reset revision to 0). # # Update VERS_AGE if new interfaces have been added, causing VERS_CURRENT to # be incremented too. The idea is that if the previous values are # VERS_CURRENT=2, VERS_AGE=0 then after adding a new function we # get VERS_CURRENT=3, VERS_AGE=1 (ie ABI compat with vers 2 or 3). # # Also see: # http://www.gnu.org/software/libtool/manual/libtool.html#Updating-version-info # Example: We have io_lib 1.11.6 implementing ABI vers 0, rev 6, age 0. # Our library has an soname of libstaden-read.so.0 and files as follows: # (SONAME libstaden-read.so.0) # libstaden-read.so -> libstaden-read.so.0.0.6 # libstaden-read.so.0 -> libstaden-read.so.0.0.6 # libstaden-read.so.0.0.6 # # We then release io_lib 1.12.0 with modified structs, so it's incompatible. # We bump to ABI vers 1, rev 0, age 0 - giving: # (SONAME libstaden-read.so.1) # libstaden-read.so -> libstaden-read.so.1.0.0 # libstaden-read.so.1 -> libstaden-read.so.1.0.0 # libstaden-read.so.1.0.0 # # If in 1.12.1 to 1.12.5 we then perform several successive minor tweaks (bug # fix, optimisation, etc) that do not change the ABI at all, we may # end up with ABI vers 1, rev 5, age 0: # (SONAME libstaden-read.so.1) # libstaden-read.so -> libstaden-read.so.1.0.5 # libstaden-read.so.1 -> libstaden-read.so.1.0.5 # libstaden-read.so.1.0.5 # # And assume in 1.13.0 we add an extra public function. Code linked # against 1.12.x still works (aka library version 1) meaning our # soname doesn't change, but we do update ABI version: vers 2, rev 0, age 1. # (SONAME libstaden-read.so.1) # libstaden-read.so -> libstaden-read.so.1.1.0 # libstaden-read.so.1 -> libstaden-read.so.1.1.0 # libstaden-read.so.1.1.0 VERS_CURRENT=11 VERS_REVISION=5 VERS_AGE=0 AC_SUBST(VERS_CURRENT) AC_SUBST(VERS_REVISION) AC_SUBST(VERS_AGE) dnl Checks for programs. AC_PROG_CC AC_PROG_INSTALL AC_PROG_LIBTOOL # # by Marcelo Magallon # # Turn around -rpath problem with libtool 1.0c # # This define should be improbable enough to not conflict with anything. # echo host=$host # case ${host} in # *-linux-gnu | *-apple-darwin*) # AC_MSG_RESULT([Fixing libtool for -rpath problems.]) # sed < libtool > libtool-2 \ # 's/^hardcode_libdir_flag_spec.*$'/'hardcode_libdir_flag_spec=""/' # mv libtool-2 libtool # chmod 755 libtool # ;; # esac dnl Turn on C compiler warnings. VL_PROG_CC_WARNINGS dnl Check for libcurl and zlib LIBCURL_CHECK_CONFIG(,,[have_curl=yes], [have_curl=no]) ZLIB_CHECK_CONFIG(,,[have_zlib=yes], [have_zlib=no]) dnl Socket support for Solaris (et al) AC_SEARCH_LIBS([gethostbyname], [nsl]) AC_SEARCH_LIBS([socket], [socket], [], [AC_CHECK_LIB([socket], [socket], [LIBS="-lsocket -lnsl $LIBS"], [], [-lnsl])]) AC_CHECK_LIB([bz2], [BZ2_bzBuffToBuffCompress], [ LIBS="-lbz2 $LIBS" AC_DEFINE([HAVE_LIBBZ2],1,[Define to 1 if you have the libbz2 library.])]) AC_CHECK_LIB([lzma], [lzma_easy_buffer_encode], [ LIBS="-llzma $LIBS" AC_DEFINE([HAVE_LIBLZMA],1,[Define to 1 if you have the liblzma library.])]) dnl Check host endian-ness AC_C_BIGENDIAN([SET_ENDIAN="#define SP_BIG_ENDIAN"], [SET_ENDIAN="#define SP_LITTLE_ENDIAN"], [SET_ENDIAN=""], [SET_ENDIAN=""]) AC_SUBST(SET_ENDIAN) dnl Do we have the va_copy function? # # Checks whether we the ability to use va_copy(). # AC_DEFINEs HAVE_VA_COPY if you do. # AC_DEFUN([AX_FUNC_VA_COPY], [AC_LANG_PUSH(C) AC_LINK_IFELSE([AC_LANG_SOURCE( [[#include void va_test(va_list ap) { va_list ap_local; va_copy(ap_local, ap); va_end(ap_local); } int main(void) { return 0; } ]])], AC_DEFINE([HAVE_VA_COPY],1,[Define to 1 if you have the va_copy() function.]), ) AC_LANG_POP(C)]) AX_FUNC_VA_COPY dnl Checks for header files. AC_HEADER_STDC AC_HEADER_SYS_WAIT AC_CHECK_HEADERS(fcntl.h limits.h unistd.h) AC_CHECK_HEADER(zlib.h) AC_CHECK_HEADER(stdio_ext.h,[SET_STDIO_EXT="#define HAVE_STDIO_EXT_H"],[SET_STDIO_EXT=]) dnl Checks for typedefs, structures, and compiler characteristics. AC_C_BIGENDIAN AC_CHECK_SIZEOF(short,2) AC_CHECK_SIZEOF(int,4) AC_CHECK_SIZEOF(long,4) dnl AC_C_CONST AC_C_INLINE AC_TYPE_MODE_T dnl AC_TYPE_OFF_T dnl AC_TYPE_SIZE_T dnl AC_STRUCT_TM AC_ARG_ENABLE(custom-buffering, AS_HELP_STRING([--enable-custom-buffering],[enable custom buffering code for CRAM (default yes)]), [custombuffering=${enableval}],[custombuffering=yes]) SET_CRAM_IO_CUSTOM_BUFFERING= if test ${custombuffering} = "yes" ; then SET_CRAM_IO_CUSTOM_BUFFERING="#define CRAM_IO_CUSTOM_BUFFERING" fi AC_CHECK_FUNCS(fileno) AC_CHECK_FUNCS(fstat) dnl Large file support AC_SYS_LARGEFILE AC_FUNC_FSEEKO dnl Mmap is used for CRAM reference files AC_FUNC_MMAP dnl Checks for library functions. AC_SEARCH_LIBS([pthread_join], [pthread]) AC_SEARCH_LIBS(cos, m) dnl AC_FUNC_MEMCMP dnl AC_FUNC_STRFTIME dnl AC_FUNC_VPRINTF AC_CHECK_FUNCS(strdup) dnl AC_CHECK_FUNCS(mktime strspn strstr strtol) AC_CHECK_FUNCS(fsync) AC_SUBST([SET_STDIO_EXT]) AC_SUBST([SET_CRAM_IO_CUSTOM_BUFFERING]) AC_OUTPUT(Makefile io_lib/Makefile progs/Makefile tests/Makefile io_lib-config io_lib/os.h) io_lib-1.14.6/aclocal.m40000644000031500020650000124365612617160064011641 00000000000000# generated automatically by aclocal 1.11.3 -*- Autoconf -*- # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, # 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, # Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.68],, [m4_warning([this file was generated for autoconf 2.68. You have another version of autoconf. It may work, but is not guaranteed to. If you have problems, you may need to regenerate the build system entirely. To do so, use the procedure documented by the package, typically `autoreconf'.])]) # libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, # 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. m4_define([_LT_COPYING], [dnl # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, # 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is part of GNU Libtool. # # GNU Libtool is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License as # published by the Free Software Foundation; either version 2 of # the License, or (at your option) any later version. # # As a special exception to the GNU General Public License, # if you distribute this file as part of a program or library that # is built using GNU Libtool, you may include this file under the # same distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with GNU Libtool; see the file COPYING. If not, a copy # can be downloaded from http://www.gnu.org/licenses/gpl.html, or # obtained by writing to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ]) # serial 57 LT_INIT # LT_PREREQ(VERSION) # ------------------ # Complain and exit if this libtool version is less that VERSION. m4_defun([LT_PREREQ], [m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1, [m4_default([$3], [m4_fatal([Libtool version $1 or higher is required], 63)])], [$2])]) # _LT_CHECK_BUILDDIR # ------------------ # Complain if the absolute build directory name contains unusual characters m4_defun([_LT_CHECK_BUILDDIR], [case `pwd` in *\ * | *\ *) AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;; esac ]) # LT_INIT([OPTIONS]) # ------------------ AC_DEFUN([LT_INIT], [AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl AC_BEFORE([$0], [LT_LANG])dnl AC_BEFORE([$0], [LT_OUTPUT])dnl AC_BEFORE([$0], [LTDL_INIT])dnl m4_require([_LT_CHECK_BUILDDIR])dnl dnl Autoconf doesn't catch unexpanded LT_ macros by default: m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 dnl unless we require an AC_DEFUNed macro: AC_REQUIRE([LTOPTIONS_VERSION])dnl AC_REQUIRE([LTSUGAR_VERSION])dnl AC_REQUIRE([LTVERSION_VERSION])dnl AC_REQUIRE([LTOBSOLETE_VERSION])dnl m4_require([_LT_PROG_LTMAIN])dnl _LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}]) dnl Parse OPTIONS _LT_SET_OPTIONS([$0], [$1]) # This can be used to rebuild libtool when needed LIBTOOL_DEPS="$ltmain" # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' AC_SUBST(LIBTOOL)dnl _LT_SETUP # Only expand once: m4_define([LT_INIT]) ])# LT_INIT # Old names: AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT]) AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_PROG_LIBTOOL], []) dnl AC_DEFUN([AM_PROG_LIBTOOL], []) # _LT_CC_BASENAME(CC) # ------------------- # Calculate cc_basename. Skip known compiler wrappers and cross-prefix. m4_defun([_LT_CC_BASENAME], [for cc_temp in $1""; do case $cc_temp in compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` ]) # _LT_FILEUTILS_DEFAULTS # ---------------------- # It is okay to use these file commands and assume they have been set # sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'. m4_defun([_LT_FILEUTILS_DEFAULTS], [: ${CP="cp -f"} : ${MV="mv -f"} : ${RM="rm -f"} ])# _LT_FILEUTILS_DEFAULTS # _LT_SETUP # --------- m4_defun([_LT_SETUP], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl _LT_DECL([], [PATH_SEPARATOR], [1], [The PATH separator for the build system])dnl dnl _LT_DECL([], [host_alias], [0], [The host system])dnl _LT_DECL([], [host], [0])dnl _LT_DECL([], [host_os], [0])dnl dnl _LT_DECL([], [build_alias], [0], [The build system])dnl _LT_DECL([], [build], [0])dnl _LT_DECL([], [build_os], [0])dnl dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([LT_PATH_LD])dnl AC_REQUIRE([LT_PATH_NM])dnl dnl AC_REQUIRE([AC_PROG_LN_S])dnl test -z "$LN_S" && LN_S="ln -s" _LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl dnl AC_REQUIRE([LT_CMD_MAX_LEN])dnl _LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl _LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_CHECK_SHELL_FEATURES])dnl m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl m4_require([_LT_CMD_RELOAD])dnl m4_require([_LT_CHECK_MAGIC_METHOD])dnl m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl m4_require([_LT_CMD_OLD_ARCHIVE])dnl m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl m4_require([_LT_WITH_SYSROOT])dnl _LT_CONFIG_LIBTOOL_INIT([ # See if we are running on zsh, and set the options which allow our # commands through without removal of \ escapes INIT. if test -n "\${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi ]) if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi _LT_CHECK_OBJDIR m4_require([_LT_TAG_COMPILER])dnl case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Global variables: ofile=libtool can_build_shared=yes # All known linkers require a `.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a with_gnu_ld="$lt_cv_prog_gnu_ld" old_CC="$CC" old_CFLAGS="$CFLAGS" # Set sane defaults for various variables test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS test -z "$LD" && LD=ld test -z "$ac_objext" && ac_objext=o _LT_CC_BASENAME([$compiler]) # Only perform the check for file, if the check method requires it test -z "$MAGIC_CMD" && MAGIC_CMD=file case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then _LT_PATH_MAGIC fi ;; esac # Use C for the default configuration in the libtool script LT_SUPPORTED_TAG([CC]) _LT_LANG_C_CONFIG _LT_LANG_DEFAULT_CONFIG _LT_CONFIG_COMMANDS ])# _LT_SETUP # _LT_PREPARE_SED_QUOTE_VARS # -------------------------- # Define a few sed substitution that help us do robust quoting. m4_defun([_LT_PREPARE_SED_QUOTE_VARS], [# Backslashify metacharacters that are still active within # double-quoted strings. sed_quote_subst='s/\([["`$\\]]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\([["`\\]]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Sed substitution to delay expansion of an escaped single quote. delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' # Sed substitution to avoid accidental globbing in evaled expressions no_glob_subst='s/\*/\\\*/g' ]) # _LT_PROG_LTMAIN # --------------- # Note that this code is called both from `configure', and `config.status' # now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, # `config.status' has no value for ac_aux_dir unless we are using Automake, # so we pass a copy along to make sure it has a sensible value anyway. m4_defun([_LT_PROG_LTMAIN], [m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl _LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir']) ltmain="$ac_aux_dir/ltmain.sh" ])# _LT_PROG_LTMAIN # So that we can recreate a full libtool script including additional # tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS # in macros and then make a single call at the end using the `libtool' # label. # _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS]) # ---------------------------------------- # Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later. m4_define([_LT_CONFIG_LIBTOOL_INIT], [m4_ifval([$1], [m4_append([_LT_OUTPUT_LIBTOOL_INIT], [$1 ])])]) # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_INIT]) # _LT_CONFIG_LIBTOOL([COMMANDS]) # ------------------------------ # Register COMMANDS to be passed to AC_CONFIG_COMMANDS later. m4_define([_LT_CONFIG_LIBTOOL], [m4_ifval([$1], [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS], [$1 ])])]) # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS]) # _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS]) # ----------------------------------------------------- m4_defun([_LT_CONFIG_SAVE_COMMANDS], [_LT_CONFIG_LIBTOOL([$1]) _LT_CONFIG_LIBTOOL_INIT([$2]) ]) # _LT_FORMAT_COMMENT([COMMENT]) # ----------------------------- # Add leading comment marks to the start of each line, and a trailing # full-stop to the whole comment if one is not present already. m4_define([_LT_FORMAT_COMMENT], [m4_ifval([$1], [ m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])], [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.]) )]) # _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?]) # ------------------------------------------------------------------- # CONFIGNAME is the name given to the value in the libtool script. # VARNAME is the (base) name used in the configure script. # VALUE may be 0, 1 or 2 for a computed quote escaped value based on # VARNAME. Any other value will be used directly. m4_define([_LT_DECL], [lt_if_append_uniq([lt_decl_varnames], [$2], [, ], [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name], [m4_ifval([$1], [$1], [$2])]) lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3]) m4_ifval([$4], [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])]) lt_dict_add_subkey([lt_decl_dict], [$2], [tagged?], [m4_ifval([$5], [yes], [no])])]) ]) # _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION]) # -------------------------------------------------------- m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])]) # lt_decl_tag_varnames([SEPARATOR], [VARNAME1...]) # ------------------------------------------------ m4_define([lt_decl_tag_varnames], [_lt_decl_filter([tagged?], [yes], $@)]) # _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..]) # --------------------------------------------------------- m4_define([_lt_decl_filter], [m4_case([$#], [0], [m4_fatal([$0: too few arguments: $#])], [1], [m4_fatal([$0: too few arguments: $#: $1])], [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)], [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)], [lt_dict_filter([lt_decl_dict], $@)])[]dnl ]) # lt_decl_quote_varnames([SEPARATOR], [VARNAME1...]) # -------------------------------------------------- m4_define([lt_decl_quote_varnames], [_lt_decl_filter([value], [1], $@)]) # lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...]) # --------------------------------------------------- m4_define([lt_decl_dquote_varnames], [_lt_decl_filter([value], [2], $@)]) # lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...]) # --------------------------------------------------- m4_define([lt_decl_varnames_tagged], [m4_assert([$# <= 2])dnl _$0(m4_quote(m4_default([$1], [[, ]])), m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]), m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))]) m4_define([_lt_decl_varnames_tagged], [m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])]) # lt_decl_all_varnames([SEPARATOR], [VARNAME1...]) # ------------------------------------------------ m4_define([lt_decl_all_varnames], [_$0(m4_quote(m4_default([$1], [[, ]])), m4_if([$2], [], m4_quote(lt_decl_varnames), m4_quote(m4_shift($@))))[]dnl ]) m4_define([_lt_decl_all_varnames], [lt_join($@, lt_decl_varnames_tagged([$1], lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl ]) # _LT_CONFIG_STATUS_DECLARE([VARNAME]) # ------------------------------------ # Quote a variable value, and forward it to `config.status' so that its # declaration there will have the same value as in `configure'. VARNAME # must have a single quote delimited value for this to work. m4_define([_LT_CONFIG_STATUS_DECLARE], [$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`']) # _LT_CONFIG_STATUS_DECLARATIONS # ------------------------------ # We delimit libtool config variables with single quotes, so when # we write them to config.status, we have to be sure to quote all # embedded single quotes properly. In configure, this macro expands # each variable declared with _LT_DECL (and _LT_TAGDECL) into: # # ='`$ECHO "$" | $SED "$delay_single_quote_subst"`' m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], [m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames), [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])]) # _LT_LIBTOOL_TAGS # ---------------- # Output comment and list of tags supported by the script m4_defun([_LT_LIBTOOL_TAGS], [_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl available_tags="_LT_TAGS"dnl ]) # _LT_LIBTOOL_DECLARE(VARNAME, [TAG]) # ----------------------------------- # Extract the dictionary values for VARNAME (optionally with TAG) and # expand to a commented shell variable setting: # # # Some comment about what VAR is for. # visible_name=$lt_internal_name m4_define([_LT_LIBTOOL_DECLARE], [_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [description])))[]dnl m4_pushdef([_libtool_name], m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])), [0], [_libtool_name=[$]$1], [1], [_libtool_name=$lt_[]$1], [2], [_libtool_name=$lt_[]$1], [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl ]) # _LT_LIBTOOL_CONFIG_VARS # ----------------------- # Produce commented declarations of non-tagged libtool config variables # suitable for insertion in the LIBTOOL CONFIG section of the `libtool' # script. Tagged libtool config variables (even for the LIBTOOL CONFIG # section) are produced by _LT_LIBTOOL_TAG_VARS. m4_defun([_LT_LIBTOOL_CONFIG_VARS], [m4_foreach([_lt_var], m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)), [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])]) # _LT_LIBTOOL_TAG_VARS(TAG) # ------------------------- m4_define([_LT_LIBTOOL_TAG_VARS], [m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames), [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])]) # _LT_TAGVAR(VARNAME, [TAGNAME]) # ------------------------------ m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])]) # _LT_CONFIG_COMMANDS # ------------------- # Send accumulated output to $CONFIG_STATUS. Thanks to the lists of # variables for single and double quote escaping we saved from calls # to _LT_DECL, we can put quote escaped variables declarations # into `config.status', and then the shell code to quote escape them in # for loops in `config.status'. Finally, any additional code accumulated # from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. m4_defun([_LT_CONFIG_COMMANDS], [AC_PROVIDE_IFELSE([LT_OUTPUT], dnl If the libtool generation code has been placed in $CONFIG_LT, dnl instead of duplicating it all over again into config.status, dnl then we will have config.status run $CONFIG_LT later, so it dnl needs to know what name is stored there: [AC_CONFIG_COMMANDS([libtool], [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])], dnl If the libtool generation code is destined for config.status, dnl expand the accumulated commands and init code now: [AC_CONFIG_COMMANDS([libtool], [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])]) ])#_LT_CONFIG_COMMANDS # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT], [ # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH sed_quote_subst='$sed_quote_subst' double_quote_subst='$double_quote_subst' delay_variable_subst='$delay_variable_subst' _LT_CONFIG_STATUS_DECLARATIONS LTCC='$LTCC' LTCFLAGS='$LTCFLAGS' compiler='$compiler_DEFAULT' # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$[]1 _LTECHO_EOF' } # Quote evaled strings. for var in lt_decl_all_varnames([[ \ ]], lt_decl_quote_varnames); do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[[\\\\\\\`\\"\\\$]]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done # Double-quote double-evaled strings. for var in lt_decl_all_varnames([[ \ ]], lt_decl_dquote_varnames); do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[[\\\\\\\`\\"\\\$]]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done _LT_OUTPUT_LIBTOOL_INIT ]) # _LT_GENERATED_FILE_INIT(FILE, [COMMENT]) # ------------------------------------ # Generate a child script FILE with all initialization necessary to # reuse the environment learned by the parent script, and make the # file executable. If COMMENT is supplied, it is inserted after the # `#!' sequence but before initialization text begins. After this # macro, additional text can be appended to FILE to form the body of # the child script. The macro ends with non-zero status if the # file could not be fully written (such as if the disk is full). m4_ifdef([AS_INIT_GENERATED], [m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])], [m4_defun([_LT_GENERATED_FILE_INIT], [m4_require([AS_PREPARE])]dnl [m4_pushdef([AS_MESSAGE_LOG_FD])]dnl [lt_write_fail=0 cat >$1 <<_ASEOF || lt_write_fail=1 #! $SHELL # Generated by $as_me. $2 SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$1 <<\_ASEOF || lt_write_fail=1 AS_SHELL_SANITIZE _AS_PREPARE exec AS_MESSAGE_FD>&1 _ASEOF test $lt_write_fail = 0 && chmod +x $1[]dnl m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT # LT_OUTPUT # --------- # This macro allows early generation of the libtool script (before # AC_OUTPUT is called), incase it is used in configure for compilation # tests. AC_DEFUN([LT_OUTPUT], [: ${CONFIG_LT=./config.lt} AC_MSG_NOTICE([creating $CONFIG_LT]) _LT_GENERATED_FILE_INIT(["$CONFIG_LT"], [# Run this file to recreate a libtool stub with the current configuration.]) cat >>"$CONFIG_LT" <<\_LTEOF lt_cl_silent=false exec AS_MESSAGE_LOG_FD>>config.log { echo AS_BOX([Running $as_me.]) } >&AS_MESSAGE_LOG_FD lt_cl_help="\ \`$as_me' creates a local libtool stub from the current configuration, for use in further configure time tests before the real libtool is generated. Usage: $[0] [[OPTIONS]] -h, --help print this help, then exit -V, --version print version number, then exit -q, --quiet do not print progress messages -d, --debug don't remove temporary files Report bugs to ." lt_cl_version="\ m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) configured by $[0], generated by m4_PACKAGE_STRING. Copyright (C) 2011 Free Software Foundation, Inc. This config.lt script is free software; the Free Software Foundation gives unlimited permision to copy, distribute and modify it." while test $[#] != 0 do case $[1] in --version | --v* | -V ) echo "$lt_cl_version"; exit 0 ;; --help | --h* | -h ) echo "$lt_cl_help"; exit 0 ;; --debug | --d* | -d ) debug=: ;; --quiet | --q* | --silent | --s* | -q ) lt_cl_silent=: ;; -*) AC_MSG_ERROR([unrecognized option: $[1] Try \`$[0] --help' for more information.]) ;; *) AC_MSG_ERROR([unrecognized argument: $[1] Try \`$[0] --help' for more information.]) ;; esac shift done if $lt_cl_silent; then exec AS_MESSAGE_FD>/dev/null fi _LTEOF cat >>"$CONFIG_LT" <<_LTEOF _LT_OUTPUT_LIBTOOL_COMMANDS_INIT _LTEOF cat >>"$CONFIG_LT" <<\_LTEOF AC_MSG_NOTICE([creating $ofile]) _LT_OUTPUT_LIBTOOL_COMMANDS AS_EXIT(0) _LTEOF chmod +x "$CONFIG_LT" # configure is writing to config.log, but config.lt does its own redirection, # appending to config.log, which fails on DOS, as config.log is still kept # open by configure. Here we exec the FD to /dev/null, effectively closing # config.log, so it can be properly (re)opened and appended to by config.lt. lt_cl_success=: test "$silent" = yes && lt_config_lt_args="$lt_config_lt_args --quiet" exec AS_MESSAGE_LOG_FD>/dev/null $SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false exec AS_MESSAGE_LOG_FD>>config.log $lt_cl_success || AS_EXIT(1) ])# LT_OUTPUT # _LT_CONFIG(TAG) # --------------- # If TAG is the built-in tag, create an initial libtool script with a # default configuration from the untagged config vars. Otherwise add code # to config.status for appending the configuration named by TAG from the # matching tagged config vars. m4_defun([_LT_CONFIG], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl _LT_CONFIG_SAVE_COMMANDS([ m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl m4_if(_LT_TAG, [C], [ # See if we are running on zsh, and set the options which allow our # commands through without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi cfgfile="${ofile}T" trap "$RM \"$cfgfile\"; exit 1" 1 2 15 $RM "$cfgfile" cat <<_LT_EOF >> "$cfgfile" #! $SHELL # `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. # Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # NOTE: Changes made to this file will be lost: look at ltmain.sh. # _LT_COPYING _LT_LIBTOOL_TAGS # ### BEGIN LIBTOOL CONFIG _LT_LIBTOOL_CONFIG_VARS _LT_LIBTOOL_TAG_VARS # ### END LIBTOOL CONFIG _LT_EOF case $host_os in aix3*) cat <<\_LT_EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi _LT_EOF ;; esac _LT_PROG_LTMAIN # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? sed '$q' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) _LT_PROG_REPLACE_SHELLFNS mv -f "$cfgfile" "$ofile" || (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" ], [cat <<_LT_EOF >> "$ofile" dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded dnl in a comment (ie after a #). # ### BEGIN LIBTOOL TAG CONFIG: $1 _LT_LIBTOOL_TAG_VARS(_LT_TAG) # ### END LIBTOOL TAG CONFIG: $1 _LT_EOF ])dnl /m4_if ], [m4_if([$1], [], [ PACKAGE='$PACKAGE' VERSION='$VERSION' TIMESTAMP='$TIMESTAMP' RM='$RM' ofile='$ofile'], []) ])dnl /_LT_CONFIG_SAVE_COMMANDS ])# _LT_CONFIG # LT_SUPPORTED_TAG(TAG) # --------------------- # Trace this macro to discover what tags are supported by the libtool # --tag option, using: # autoconf --trace 'LT_SUPPORTED_TAG:$1' AC_DEFUN([LT_SUPPORTED_TAG], []) # C support is built-in for now m4_define([_LT_LANG_C_enabled], []) m4_define([_LT_TAGS], []) # LT_LANG(LANG) # ------------- # Enable libtool support for the given language if not already enabled. AC_DEFUN([LT_LANG], [AC_BEFORE([$0], [LT_OUTPUT])dnl m4_case([$1], [C], [_LT_LANG(C)], [C++], [_LT_LANG(CXX)], [Go], [_LT_LANG(GO)], [Java], [_LT_LANG(GCJ)], [Fortran 77], [_LT_LANG(F77)], [Fortran], [_LT_LANG(FC)], [Windows Resource], [_LT_LANG(RC)], [m4_ifdef([_LT_LANG_]$1[_CONFIG], [_LT_LANG($1)], [m4_fatal([$0: unsupported language: "$1"])])])dnl ])# LT_LANG # _LT_LANG(LANGNAME) # ------------------ m4_defun([_LT_LANG], [m4_ifdef([_LT_LANG_]$1[_enabled], [], [LT_SUPPORTED_TAG([$1])dnl m4_append([_LT_TAGS], [$1 ])dnl m4_define([_LT_LANG_]$1[_enabled], [])dnl _LT_LANG_$1_CONFIG($1)])dnl ])# _LT_LANG m4_ifndef([AC_PROG_GO], [ # NOTE: This macro has been submitted for inclusion into # # GNU Autoconf as AC_PROG_GO. When it is available in # # a released version of Autoconf we should remove this # # macro and use it instead. # m4_defun([AC_PROG_GO], [AC_LANG_PUSH(Go)dnl AC_ARG_VAR([GOC], [Go compiler command])dnl AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl _AC_ARG_VAR_LDFLAGS()dnl AC_CHECK_TOOL(GOC, gccgo) if test -z "$GOC"; then if test -n "$ac_tool_prefix"; then AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo]) fi fi if test -z "$GOC"; then AC_CHECK_PROG(GOC, gccgo, gccgo, false) fi ])#m4_defun ])#m4_ifndef # _LT_LANG_DEFAULT_CONFIG # ----------------------- m4_defun([_LT_LANG_DEFAULT_CONFIG], [AC_PROVIDE_IFELSE([AC_PROG_CXX], [LT_LANG(CXX)], [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])]) AC_PROVIDE_IFELSE([AC_PROG_F77], [LT_LANG(F77)], [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])]) AC_PROVIDE_IFELSE([AC_PROG_FC], [LT_LANG(FC)], [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])]) dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal dnl pulling things in needlessly. AC_PROVIDE_IFELSE([AC_PROG_GCJ], [LT_LANG(GCJ)], [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], [LT_LANG(GCJ)], [AC_PROVIDE_IFELSE([LT_PROG_GCJ], [LT_LANG(GCJ)], [m4_ifdef([AC_PROG_GCJ], [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])]) m4_ifdef([A][M_PROG_GCJ], [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])]) m4_ifdef([LT_PROG_GCJ], [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])]) AC_PROVIDE_IFELSE([AC_PROG_GO], [LT_LANG(GO)], [m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])]) AC_PROVIDE_IFELSE([LT_PROG_RC], [LT_LANG(RC)], [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])]) ])# _LT_LANG_DEFAULT_CONFIG # Obsolete macros: AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_CXX], []) dnl AC_DEFUN([AC_LIBTOOL_F77], []) dnl AC_DEFUN([AC_LIBTOOL_FC], []) dnl AC_DEFUN([AC_LIBTOOL_GCJ], []) dnl AC_DEFUN([AC_LIBTOOL_RC], []) # _LT_TAG_COMPILER # ---------------- m4_defun([_LT_TAG_COMPILER], [AC_REQUIRE([AC_PROG_CC])dnl _LT_DECL([LTCC], [CC], [1], [A C compiler])dnl _LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl _LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl _LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC ])# _LT_TAG_COMPILER # _LT_COMPILER_BOILERPLATE # ------------------------ # Check for compiler boilerplate output or warnings with # the simple compiler test code. m4_defun([_LT_COMPILER_BOILERPLATE], [m4_require([_LT_DECL_SED])dnl ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ])# _LT_COMPILER_BOILERPLATE # _LT_LINKER_BOILERPLATE # ---------------------- # Check for linker boilerplate output or warnings with # the simple link test code. m4_defun([_LT_LINKER_BOILERPLATE], [m4_require([_LT_DECL_SED])dnl ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* ])# _LT_LINKER_BOILERPLATE # _LT_REQUIRED_DARWIN_CHECKS # ------------------------- m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ case $host_os in rhapsody* | darwin*) AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) AC_CHECK_TOOL([LIPO], [lipo], [:]) AC_CHECK_TOOL([OTOOL], [otool], [:]) AC_CHECK_TOOL([OTOOL64], [otool64], [:]) _LT_DECL([], [DSYMUTIL], [1], [Tool to manipulate archived DWARF debug symbol files on Mac OS X]) _LT_DECL([], [NMEDIT], [1], [Tool to change global to local symbols on Mac OS X]) _LT_DECL([], [LIPO], [1], [Tool to manipulate fat objects and archives on Mac OS X]) _LT_DECL([], [OTOOL], [1], [ldd/readelf like tool for Mach-O binaries on Mac OS X]) _LT_DECL([], [OTOOL64], [1], [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4]) AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], [lt_cv_apple_cc_single_mod=no if test -z "${LT_MULTI_MODULE}"; then # By default we will add the -single_module flag. You can override # by either setting the environment variable LT_MULTI_MODULE # non-empty at configure time, or by adding -multi_module to the # link flags. rm -rf libconftest.dylib* echo "int foo(void){return 1;}" > conftest.c echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err _lt_result=$? # If there is a non-empty error log, and "single_module" # appears in it, assume the flag caused a linker warning if test -s conftest.err && $GREP single_module conftest.err; then cat conftest.err >&AS_MESSAGE_LOG_FD # Otherwise, if the output was created with a 0 exit code from # the compiler, it worked. elif test -f libconftest.dylib && test $_lt_result -eq 0; then lt_cv_apple_cc_single_mod=yes else cat conftest.err >&AS_MESSAGE_LOG_FD fi rm -rf libconftest.dylib* rm -f conftest.* fi]) AC_CACHE_CHECK([for -exported_symbols_list linker flag], [lt_cv_ld_exported_symbols_list], [lt_cv_ld_exported_symbols_list=no save_LDFLAGS=$LDFLAGS echo "_main" > conftest.sym LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], [lt_cv_ld_exported_symbols_list=yes], [lt_cv_ld_exported_symbols_list=no]) LDFLAGS="$save_LDFLAGS" ]) AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load], [lt_cv_ld_force_load=no cat > conftest.c << _LT_EOF int forced_loaded() { return 2;} _LT_EOF echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD cat > conftest.c << _LT_EOF int main() { return 0;} _LT_EOF echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err _lt_result=$? if test -s conftest.err && $GREP force_load conftest.err; then cat conftest.err >&AS_MESSAGE_LOG_FD elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then lt_cv_ld_force_load=yes else cat conftest.err >&AS_MESSAGE_LOG_FD fi rm -f conftest.err libconftest.a conftest conftest.c rm -rf conftest.dSYM ]) case $host_os in rhapsody* | darwin1.[[012]]) _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; darwin1.*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; darwin*) # darwin 5.x on # if running on 10.5 or later, the deployment target defaults # to the OS version, if on x86, and 10.4, the deployment # target defaults to 10.4. Don't you love it? case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; 10.[[012]]*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; 10.*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; esac ;; esac if test "$lt_cv_apple_cc_single_mod" = "yes"; then _lt_dar_single_mod='$single_module' fi if test "$lt_cv_ld_exported_symbols_list" = "yes"; then _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' else _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' fi if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= fi ;; esac ]) # _LT_DARWIN_LINKER_FEATURES([TAG]) # --------------------------------- # Checks for linker and compiler features on darwin m4_defun([_LT_DARWIN_LINKER_FEATURES], [ m4_require([_LT_REQUIRED_DARWIN_CHECKS]) _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported if test "$lt_cv_ld_force_load" = "yes"; then _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes], [FC], [_LT_TAGVAR(compiler_needs_object, $1)=yes]) else _LT_TAGVAR(whole_archive_flag_spec, $1)='' fi _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined" case $cc_basename in ifort*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test "$_lt_dar_can_shared" = "yes"; then output_verbose_link_cmd=func_echo_all _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" m4_if([$1], [CXX], [ if test "$lt_cv_apple_cc_single_mod" != "yes"; then _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" fi ],[]) else _LT_TAGVAR(ld_shlibs, $1)=no fi ]) # _LT_SYS_MODULE_PATH_AIX([TAGNAME]) # ---------------------------------- # Links a minimal program and checks the executable # for the system default hardcoded library path. In most cases, # this is /usr/lib:/lib, but when the MPI compilers are used # the location of the communication and MPI libs are included too. # If we don't find anything, use the default library path according # to the aix ld manual. # Store the results from the different compilers for each TAGNAME. # Allow to override them for all tags through lt_cv_aix_libpath. m4_defun([_LT_SYS_MODULE_PATH_AIX], [m4_require([_LT_DECL_SED])dnl if test "${lt_cv_aix_libpath+set}" = set; then aix_libpath=$lt_cv_aix_libpath else AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])], [AC_LINK_IFELSE([AC_LANG_PROGRAM],[ lt_aix_libpath_sed='[ /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }]' _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi],[]) if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then _LT_TAGVAR([lt_cv_aix_libpath_], [$1])="/usr/lib:/lib" fi ]) aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1]) fi ])# _LT_SYS_MODULE_PATH_AIX # _LT_SHELL_INIT(ARG) # ------------------- m4_define([_LT_SHELL_INIT], [m4_divert_text([M4SH-INIT], [$1 ])])# _LT_SHELL_INIT # _LT_PROG_ECHO_BACKSLASH # ----------------------- # Find how we can fake an echo command that does not interpret backslash. # In particular, with Autoconf 2.60 or later we add some code to the start # of the generated configure script which will find a shell with a builtin # printf (which we can use as an echo command). m4_defun([_LT_PROG_ECHO_BACKSLASH], [ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO AC_MSG_CHECKING([how to print strings]) # Test print first, because it will be a builtin if present. if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='print -r --' elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='printf %s\n' else # Use this function as a fallback that always works. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $[]1 _LTECHO_EOF' } ECHO='func_fallback_echo' fi # func_echo_all arg... # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "$*" } case "$ECHO" in printf*) AC_MSG_RESULT([printf]) ;; print*) AC_MSG_RESULT([print -r]) ;; *) AC_MSG_RESULT([cat]) ;; esac m4_ifdef([_AS_DETECT_SUGGESTED], [_AS_DETECT_SUGGESTED([ test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || ( ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO PATH=/empty FPATH=/empty; export PATH FPATH test "X`printf %s $ECHO`" = "X$ECHO" \ || test "X`print -r -- $ECHO`" = "X$ECHO" )])]) _LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) _LT_DECL([], [ECHO], [1], [An echo program that protects backslashes]) ])# _LT_PROG_ECHO_BACKSLASH # _LT_WITH_SYSROOT # ---------------- AC_DEFUN([_LT_WITH_SYSROOT], [AC_MSG_CHECKING([for sysroot]) AC_ARG_WITH([sysroot], [ --with-sysroot[=DIR] Search for dependent libraries within DIR (or the compiler's sysroot if not specified).], [], [with_sysroot=no]) dnl lt_sysroot will always be passed unquoted. We quote it here dnl in case the user passed a directory name. lt_sysroot= case ${with_sysroot} in #( yes) if test "$GCC" = yes; then lt_sysroot=`$CC --print-sysroot 2>/dev/null` fi ;; #( /*) lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` ;; #( no|'') ;; #( *) AC_MSG_RESULT([${with_sysroot}]) AC_MSG_ERROR([The sysroot must be an absolute path.]) ;; esac AC_MSG_RESULT([${lt_sysroot:-no}]) _LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl [dependent libraries, and in which our libraries should be installed.])]) # _LT_ENABLE_LOCK # --------------- m4_defun([_LT_ENABLE_LOCK], [AC_ARG_ENABLE([libtool-lock], [AS_HELP_STRING([--disable-libtool-lock], [avoid locking (might break parallel builds)])]) test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE="32" ;; *ELF-64*) HPUX_IA64_MODE="64" ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out which ABI we are using. echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then if test "$lt_cv_prog_gnu_ld" = yes; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.o` in *32-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_i386" ;; ppc64-*linux*|powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) LD="${LD-ld} -m elf_s390" ;; sparc64-*linux*) LD="${LD-ld} -m elf32_sparc" ;; esac ;; *64-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_x86_64_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; ppc*-*linux*|powerpc*-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*|s390*-*tpf*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, [AC_LANG_PUSH(C) AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) AC_LANG_POP]) if test x"$lt_cv_cc_needs_belf" != x"yes"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS="$SAVE_CFLAGS" fi ;; *-*solaris*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) case $host in i?86-*-solaris*) LD="${LD-ld} -m elf_x86_64" ;; sparc*-*-solaris*) LD="${LD-ld} -m elf64_sparc" ;; esac # GNU ld 2.21 introduced _sol2 emulations. Use them if available. if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then LD="${LD-ld}_sol2" fi ;; *) if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then LD="${LD-ld} -64" fi ;; esac ;; esac fi rm -rf conftest* ;; esac need_locks="$enable_libtool_lock" ])# _LT_ENABLE_LOCK # _LT_PROG_AR # ----------- m4_defun([_LT_PROG_AR], [AC_CHECK_TOOLS(AR, [ar], false) : ${AR=ar} : ${AR_FLAGS=cru} _LT_DECL([], [AR], [1], [The archiver]) _LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive]) AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file], [lt_cv_ar_at_file=no AC_COMPILE_IFELSE([AC_LANG_PROGRAM], [echo conftest.$ac_objext > conftest.lst lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD' AC_TRY_EVAL([lt_ar_try]) if test "$ac_status" -eq 0; then # Ensure the archiver fails upon bogus file names. rm -f conftest.$ac_objext libconftest.a AC_TRY_EVAL([lt_ar_try]) if test "$ac_status" -ne 0; then lt_cv_ar_at_file=@ fi fi rm -f conftest.* libconftest.a ]) ]) if test "x$lt_cv_ar_at_file" = xno; then archiver_list_spec= else archiver_list_spec=$lt_cv_ar_at_file fi _LT_DECL([], [archiver_list_spec], [1], [How to feed a file listing to the archiver]) ])# _LT_PROG_AR # _LT_CMD_OLD_ARCHIVE # ------------------- m4_defun([_LT_CMD_OLD_ARCHIVE], [_LT_PROG_AR AC_CHECK_TOOL(STRIP, strip, :) test -z "$STRIP" && STRIP=: _LT_DECL([], [STRIP], [1], [A symbol stripping program]) AC_CHECK_TOOL(RANLIB, ranlib, :) test -z "$RANLIB" && RANLIB=: _LT_DECL([], [RANLIB], [1], [Commands used to install an old-style archive]) # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" ;; *) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" fi case $host_os in darwin*) lock_old_archive_extraction=yes ;; *) lock_old_archive_extraction=no ;; esac _LT_DECL([], [old_postinstall_cmds], [2]) _LT_DECL([], [old_postuninstall_cmds], [2]) _LT_TAGDECL([], [old_archive_cmds], [2], [Commands used to build an old-style archive]) _LT_DECL([], [lock_old_archive_extraction], [0], [Whether to use a lock for old archive extraction]) ])# _LT_CMD_OLD_ARCHIVE # _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, # [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) # ---------------------------------------------------------------- # Check whether the given compiler option works AC_DEFUN([_LT_COMPILER_OPTION], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_SED])dnl AC_CACHE_CHECK([$1], [$2], [$2=no m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$3" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&AS_MESSAGE_LOG_FD echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then $2=yes fi fi $RM conftest* ]) if test x"[$]$2" = xyes; then m4_if([$5], , :, [$5]) else m4_if([$6], , :, [$6]) fi ])# _LT_COMPILER_OPTION # Old name: AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], []) # _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, # [ACTION-SUCCESS], [ACTION-FAILURE]) # ---------------------------------------------------- # Check whether the given linker option works AC_DEFUN([_LT_LINKER_OPTION], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_SED])dnl AC_CACHE_CHECK([$1], [$2], [$2=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $3" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&AS_MESSAGE_LOG_FD $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then $2=yes fi else $2=yes fi fi $RM -r conftest* LDFLAGS="$save_LDFLAGS" ]) if test x"[$]$2" = xyes; then m4_if([$4], , :, [$4]) else m4_if([$5], , :, [$5]) fi ])# _LT_LINKER_OPTION # Old name: AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], []) # LT_CMD_MAX_LEN #--------------- AC_DEFUN([LT_CMD_MAX_LEN], [AC_REQUIRE([AC_CANONICAL_HOST])dnl # find the maximum length of command line arguments AC_MSG_CHECKING([the maximum length of command line arguments]) AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl i=0 teststring="ABCD" case $build_os in msdosdjgpp*) # On DJGPP, this test can blow up pretty badly due to problems in libc # (any single argument exceeding 2000 bytes causes a buffer overrun # during glob expansion). Even if it were fixed, the result of this # check would be larger than it should be. lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; gnu*) # Under GNU Hurd, this test is not required because there is # no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; cygwin* | mingw* | cegcc*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, # you end up with a "frozen" computer, even though with patience # the test eventually succeeds (with a max line length of 256k). # Instead, let's just punt: use the minimum linelength reported by # all of the supported platforms: 8192 (on NT/2K/XP). lt_cv_sys_max_cmd_len=8192; ;; mint*) # On MiNT this can take a long time and run out of memory. lt_cv_sys_max_cmd_len=8192; ;; amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. lt_cv_sys_max_cmd_len=8192; ;; netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` elif test -x /usr/sbin/sysctl; then lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` else lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs fi # And add a safety zone lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ;; interix*) # We know the value 262144 and hardcode it with a safety zone (like BSD) lt_cv_sys_max_cmd_len=196608 ;; os2*) # The test takes a long time on OS/2. lt_cv_sys_max_cmd_len=8192 ;; osf*) # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not # nice to cause kernel panics so lets avoid the loop below. # First set a reasonable default. lt_cv_sys_max_cmd_len=16384 # if test -x /sbin/sysconfig; then case `/sbin/sysconfig -q proc exec_disable_arg_limit` in *1*) lt_cv_sys_max_cmd_len=-1 ;; esac fi ;; sco3.2v5*) lt_cv_sys_max_cmd_len=102400 ;; sysv5* | sco5v6* | sysv4.2uw2*) kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` if test -n "$kargmax"; then lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` else lt_cv_sys_max_cmd_len=32768 fi ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` if test -n "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else # Make teststring a little bigger before we do anything with it. # a 1K string should be a reasonable start. for i in 1 2 3 4 5 6 7 8 ; do teststring=$teststring$teststring done SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \ = "X$teststring$teststring"; } >/dev/null 2>&1 && test $i != 17 # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring done # Only check the string length outside the loop. lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` teststring= # Add a significant safety factor because C++ compilers can tack on # massive amounts of additional arguments before passing them to the # linker. It appears as though 1/2 is a usable value. lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` fi ;; esac ]) if test -n $lt_cv_sys_max_cmd_len ; then AC_MSG_RESULT($lt_cv_sys_max_cmd_len) else AC_MSG_RESULT(none) fi max_cmd_len=$lt_cv_sys_max_cmd_len _LT_DECL([], [max_cmd_len], [0], [What is the maximum length of a command?]) ])# LT_CMD_MAX_LEN # Old name: AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], []) # _LT_HEADER_DLFCN # ---------------- m4_defun([_LT_HEADER_DLFCN], [AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl ])# _LT_HEADER_DLFCN # _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, # ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) # ---------------------------------------------------------------- m4_defun([_LT_TRY_DLOPEN_SELF], [m4_require([_LT_HEADER_DLFCN])dnl if test "$cross_compiling" = yes; then : [$4] else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF [#line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* When -fvisbility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif int fnord () { return 42; } int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else { if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; }] _LT_EOF if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) $1 ;; x$lt_dlneed_uscore) $2 ;; x$lt_dlunknown|x*) $3 ;; esac else : # compilation failed $3 fi fi rm -fr conftest* ])# _LT_TRY_DLOPEN_SELF # LT_SYS_DLOPEN_SELF # ------------------ AC_DEFUN([LT_SYS_DLOPEN_SELF], [m4_require([_LT_HEADER_DLFCN])dnl if test "x$enable_dlopen" != xyes; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen="load_add_on" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32* | cegcc*) lt_cv_dlopen="LoadLibrary" lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen="dlopen" lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ lt_cv_dlopen="dyld" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ]) ;; *) AC_CHECK_FUNC([shl_load], [lt_cv_dlopen="shl_load"], [AC_CHECK_LIB([dld], [shl_load], [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"], [AC_CHECK_FUNC([dlopen], [lt_cv_dlopen="dlopen"], [AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], [AC_CHECK_LIB([svld], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], [AC_CHECK_LIB([dld], [dld_link], [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"]) ]) ]) ]) ]) ]) ;; esac if test "x$lt_cv_dlopen" != xno; then enable_dlopen=yes else enable_dlopen=no fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS="$CPPFLAGS" test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS="$LDFLAGS" wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS="$LIBS" LIBS="$lt_cv_dlopen_libs $LIBS" AC_CACHE_CHECK([whether a program can dlopen itself], lt_cv_dlopen_self, [dnl _LT_TRY_DLOPEN_SELF( lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) ]) if test "x$lt_cv_dlopen_self" = xyes; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" AC_CACHE_CHECK([whether a statically linked program can dlopen itself], lt_cv_dlopen_self_static, [dnl _LT_TRY_DLOPEN_SELF( lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) ]) fi CPPFLAGS="$save_CPPFLAGS" LDFLAGS="$save_LDFLAGS" LIBS="$save_LIBS" ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi _LT_DECL([dlopen_support], [enable_dlopen], [0], [Whether dlopen is supported]) _LT_DECL([dlopen_self], [enable_dlopen_self], [0], [Whether dlopen of programs is supported]) _LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], [Whether dlopen of statically linked programs is supported]) ])# LT_SYS_DLOPEN_SELF # Old name: AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], []) # _LT_COMPILER_C_O([TAGNAME]) # --------------------------- # Check to see if options -c and -o are simultaneously supported by compiler. # This macro does not hard code the compiler like AC_PROG_CC_C_O. m4_defun([_LT_COMPILER_C_O], [m4_require([_LT_DECL_SED])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_TAG_COMPILER])dnl AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)], [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&AS_MESSAGE_LOG_FD echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes fi fi chmod u+w . 2>&AS_MESSAGE_LOG_FD $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* ]) _LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1], [Does compiler simultaneously support -c and -o options?]) ])# _LT_COMPILER_C_O # _LT_COMPILER_FILE_LOCKS([TAGNAME]) # ---------------------------------- # Check to see if we can do hard links to lock some files if needed m4_defun([_LT_COMPILER_FILE_LOCKS], [m4_require([_LT_ENABLE_LOCK])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl _LT_COMPILER_C_O([$1]) hard_links="nottested" if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user AC_MSG_CHECKING([if we can lock with hard links]) hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no AC_MSG_RESULT([$hard_links]) if test "$hard_links" = no; then AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) need_locks=warn fi else need_locks=no fi _LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?]) ])# _LT_COMPILER_FILE_LOCKS # _LT_CHECK_OBJDIR # ---------------- m4_defun([_LT_CHECK_OBJDIR], [AC_CACHE_CHECK([for objdir], [lt_cv_objdir], [rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then lt_cv_objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. lt_cv_objdir=_libs fi rmdir .libs 2>/dev/null]) objdir=$lt_cv_objdir _LT_DECL([], [objdir], [0], [The name of the directory that contains temporary libtool files])dnl m4_pattern_allow([LT_OBJDIR])dnl AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/", [Define to the sub-directory in which libtool stores uninstalled libraries.]) ])# _LT_CHECK_OBJDIR # _LT_LINKER_HARDCODE_LIBPATH([TAGNAME]) # -------------------------------------- # Check hardcoding attributes. m4_defun([_LT_LINKER_HARDCODE_LIBPATH], [AC_MSG_CHECKING([how to hardcode library paths into programs]) _LT_TAGVAR(hardcode_action, $1)= if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || test -n "$_LT_TAGVAR(runpath_var, $1)" || test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then # We can hardcode non-existent directories. if test "$_LT_TAGVAR(hardcode_direct, $1)" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" != no && test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then # Linking always hardcodes the temporary library directory. _LT_TAGVAR(hardcode_action, $1)=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. _LT_TAGVAR(hardcode_action, $1)=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. _LT_TAGVAR(hardcode_action, $1)=unsupported fi AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) if test "$_LT_TAGVAR(hardcode_action, $1)" = relink || test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi _LT_TAGDECL([], [hardcode_action], [0], [How to hardcode a shared library path into an executable]) ])# _LT_LINKER_HARDCODE_LIBPATH # _LT_CMD_STRIPLIB # ---------------- m4_defun([_LT_CMD_STRIPLIB], [m4_require([_LT_DECL_EGREP]) striplib= old_striplib= AC_MSG_CHECKING([whether stripping libraries is possible]) if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" AC_MSG_RESULT([yes]) else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP" ; then striplib="$STRIP -x" old_striplib="$STRIP -S" AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) fi ;; *) AC_MSG_RESULT([no]) ;; esac fi _LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) _LT_DECL([], [striplib], [1]) ])# _LT_CMD_STRIPLIB # _LT_SYS_DYNAMIC_LINKER([TAG]) # ----------------------------- # PORTME Fill in your ld.so characteristics m4_defun([_LT_SYS_DYNAMIC_LINKER], [AC_REQUIRE([AC_CANONICAL_HOST])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_OBJDUMP])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_CHECK_SHELL_FEATURES])dnl AC_MSG_CHECKING([dynamic linker characteristics]) m4_if([$1], [], [ if test "$GCC" = yes; then case $host_os in darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; *) lt_awk_arg="/^libraries:/" ;; esac case $host_os in mingw* | cegcc*) lt_sed_strip_eq="s,=\([[A-Za-z]]:\),\1,g" ;; *) lt_sed_strip_eq="s,=/,/,g" ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` case $lt_search_path_spec in *\;*) # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` ;; *) lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` ;; esac # Ok, now we have the path, separated by spaces, we can step through it # and add multilib dir if necessary. lt_tmp_lt_search_path_spec= lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` for lt_sys_path in $lt_search_path_spec; do if test -d "$lt_sys_path/$lt_multi_os_dir"; then lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" else test -d "$lt_sys_path" && \ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' BEGIN {RS=" "; FS="/|\n";} { lt_foo=""; lt_count=0; for (lt_i = NF; lt_i > 0; lt_i--) { if ($lt_i != "" && $lt_i != ".") { if ($lt_i == "..") { lt_count++; } else { if (lt_count == 0) { lt_foo="/" $lt_i lt_foo; } else { lt_count--; } } } } if (lt_foo != "") { lt_freq[[lt_foo]]++; } if (lt_freq[[lt_foo]] == 1) { print lt_foo; } }'` # AWK program above erroneously prepends '/' to C:/dos/paths # for these hosts. case $host_os in mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ $SED 's,/\([[A-Za-z]]:\),\1,g'` ;; esac sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi]) library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix[[4-9]]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[[01]] | aix4.[[01]].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[[45]]*) version_type=linux # correct to gnu/linux during the next big refactor need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$cc_basename in yes,*) # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' m4_if([$1], [],[ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"]) ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' ;; esac dynamic_linker='Win32 ld.exe' ;; *,cl*) # Native MSVC libname_spec='$name' soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' library_names_spec='${libname}.dll.lib' case $build_os in mingw*) sys_lib_search_path_spec= lt_save_ifs=$IFS IFS=';' for lt_path in $LIB do IFS=$lt_save_ifs # Let DOS variable expansion print the short 8.3 style file name. lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" done IFS=$lt_save_ifs # Convert to MSYS style. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form # but this time dos style (no spaces!) so that the unix form looks # like /cygdrive/c/PROGRA~1:/cygdr... sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) sys_lib_search_path_spec="$LIB" if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # FIXME: find the short name or the path components, as spaces are # common. (e.g. "Program Files" -> "PROGRA~1") ;; esac # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes dynamic_linker='Win32 link.exe' ;; *) # Assume MSVC wrapper library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' m4_if([$1], [],[ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[[23]].*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[[01]]* | freebsdelf3.[[01]]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; haiku*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no dynamic_linker="$host_os runtime_loader" library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LIBRARY_PATH shlibpath_overrides_runpath=yes sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555, ... postinstall_cmds='chmod 555 $lib' # or fails outright, so override atomically: install_override_mode=555 ;; interix[[3-9]]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath], [lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], [lt_cv_shlibpath_overrides_runpath=yes])]) LDFLAGS=$save_LDFLAGS libdir=$save_libdir ]) shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsdelf*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='NetBSD ld.elf_so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd*) version_type=sunos sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. case $host_os in openbsd3.3 | openbsd3.3.*) need_version=yes ;; *) need_version=no ;; esac library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[[89]] | openbsd2.[[89]].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=freebsd-elf need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test "$with_gnu_ld" = yes; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; uts4*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac AC_MSG_RESULT([$dynamic_linker]) test "$dynamic_linker" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" fi if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" fi _LT_DECL([], [variables_saved_for_relink], [1], [Variables whose values should be saved in libtool wrapper scripts and restored at link time]) _LT_DECL([], [need_lib_prefix], [0], [Do we need the "lib" prefix for modules?]) _LT_DECL([], [need_version], [0], [Do we need a version for libraries?]) _LT_DECL([], [version_type], [0], [Library versioning type]) _LT_DECL([], [runpath_var], [0], [Shared library runtime path variable]) _LT_DECL([], [shlibpath_var], [0],[Shared library path variable]) _LT_DECL([], [shlibpath_overrides_runpath], [0], [Is shlibpath searched before the hard-coded library search path?]) _LT_DECL([], [libname_spec], [1], [Format of library name prefix]) _LT_DECL([], [library_names_spec], [1], [[List of archive names. First name is the real one, the rest are links. The last name is the one that the linker finds with -lNAME]]) _LT_DECL([], [soname_spec], [1], [[The coded name of the library, if different from the real name]]) _LT_DECL([], [install_override_mode], [1], [Permission mode override for installation of shared libraries]) _LT_DECL([], [postinstall_cmds], [2], [Command to use after installation of a shared archive]) _LT_DECL([], [postuninstall_cmds], [2], [Command to use after uninstallation of a shared archive]) _LT_DECL([], [finish_cmds], [2], [Commands used to finish a libtool library installation in a directory]) _LT_DECL([], [finish_eval], [1], [[As "finish_cmds", except a single script fragment to be evaled but not shown]]) _LT_DECL([], [hardcode_into_libs], [0], [Whether we should hardcode library paths into libraries]) _LT_DECL([], [sys_lib_search_path_spec], [2], [Compile-time system search path for libraries]) _LT_DECL([], [sys_lib_dlsearch_path_spec], [2], [Run-time system search path for libraries]) ])# _LT_SYS_DYNAMIC_LINKER # _LT_PATH_TOOL_PREFIX(TOOL) # -------------------------- # find a file program which can recognize shared library AC_DEFUN([_LT_PATH_TOOL_PREFIX], [m4_require([_LT_DECL_EGREP])dnl AC_MSG_CHECKING([for $1]) AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, [case $MAGIC_CMD in [[\\/*] | ?:[\\/]*]) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD="$MAGIC_CMD" lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR dnl $ac_dummy forces splitting on constant user-supplied paths. dnl POSIX.2 word splitting is done only on the output of word expansions, dnl not every word. This closes a longstanding sh security hole. ac_dummy="m4_if([$2], , $PATH, [$2])" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$1; then lt_cv_path_MAGIC_CMD="$ac_dir/$1" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS="$lt_save_ifs" MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac]) MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then AC_MSG_RESULT($MAGIC_CMD) else AC_MSG_RESULT(no) fi _LT_DECL([], [MAGIC_CMD], [0], [Used to examine libraries when file_magic_cmd begins with "file"])dnl ])# _LT_PATH_TOOL_PREFIX # Old name: AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) # _LT_PATH_MAGIC # -------------- # find a file program which can recognize a shared library m4_defun([_LT_PATH_MAGIC], [_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) else MAGIC_CMD=: fi fi ])# _LT_PATH_MAGIC # LT_PATH_LD # ---------- # find the pathname to the GNU or non-GNU linker AC_DEFUN([LT_PATH_LD], [AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_PROG_ECHO_BACKSLASH])dnl AC_ARG_WITH([gnu-ld], [AS_HELP_STRING([--with-gnu-ld], [assume the C compiler uses GNU ld @<:@default=no@:>@])], [test "$withval" = no || with_gnu_ld=yes], [with_gnu_ld=no])dnl ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. AC_MSG_CHECKING([for ld used by $CC]) case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [[\\/]]* | ?:[[\\/]]*) re_direlt='/[[^/]][[^/]]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then AC_MSG_CHECKING([for GNU ld]) else AC_MSG_CHECKING([for non-GNU ld]) fi AC_CACHE_VAL(lt_cv_path_LD, [if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &1 /dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else # Keep this pattern in sync with the one in func_win32_libid. lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' lt_cv_file_magic_cmd='$OBJDUMP -f' fi ;; cegcc*) # use the weaker test based on 'objdump'. See mingw*. lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' lt_cv_file_magic_cmd='$OBJDUMP -f' ;; darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; freebsd* | dragonfly*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; gnu*) lt_cv_deplibs_check_method=pass_all ;; haiku*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20* | hpux11*) lt_cv_file_magic_cmd=/usr/bin/file case $host_cpu in ia64*) lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'] lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac ;; interix[[3-9]]*) # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' ;; irix5* | irix6* | nonstopux*) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac lt_cv_deplibs_check_method=pass_all ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu) lt_cv_deplibs_check_method=pass_all ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; *nto* | *qnx*) lt_cv_deplibs_check_method=pass_all ;; openbsd*) if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' fi ;; osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; rdos*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.3*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; pc) lt_cv_deplibs_check_method=pass_all ;; esac ;; tpf*) lt_cv_deplibs_check_method=pass_all ;; esac ]) file_magic_glob= want_nocaseglob=no if test "$build" = "$host"; then case $host_os in mingw* | pw32*) if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then want_nocaseglob=yes else file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"` fi ;; esac fi file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown _LT_DECL([], [deplibs_check_method], [1], [Method to check whether dependent libraries are shared objects]) _LT_DECL([], [file_magic_cmd], [1], [Command to use when deplibs_check_method = "file_magic"]) _LT_DECL([], [file_magic_glob], [1], [How to find potential files when deplibs_check_method = "file_magic"]) _LT_DECL([], [want_nocaseglob], [1], [Find potential files using nocaseglob when deplibs_check_method = "file_magic"]) ])# _LT_CHECK_MAGIC_METHOD # LT_PATH_NM # ---------- # find the pathname to a BSD- or MS-compatible name lister AC_DEFUN([LT_PATH_NM], [AC_REQUIRE([AC_PROG_CC])dnl AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM, [if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM="$NM" else lt_nm_to_check="${ac_tool_prefix}nm" if test -n "$ac_tool_prefix" && test "$build" = "$host"; then lt_nm_to_check="$lt_nm_to_check nm" fi for lt_tmp_nm in $lt_nm_to_check; do lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. tmp_nm="$ac_dir/$lt_tmp_nm" if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then # Check to see if the nm accepts a BSD-compat flag. # Adding the `sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in */dev/null* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags ;; esac ;; esac fi done IFS="$lt_save_ifs" done : ${lt_cv_path_NM=no} fi]) if test "$lt_cv_path_NM" != "no"; then NM="$lt_cv_path_NM" else # Didn't find any BSD compatible name lister, look for dumpbin. if test -n "$DUMPBIN"; then : # Let the user override the test. else AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :) case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in *COFF*) DUMPBIN="$DUMPBIN -symbols" ;; *) DUMPBIN=: ;; esac fi AC_SUBST([DUMPBIN]) if test "$DUMPBIN" != ":"; then NM="$DUMPBIN" fi fi test -z "$NM" && NM=nm AC_SUBST([NM]) _LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], [lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&AS_MESSAGE_LOG_FD (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&AS_MESSAGE_LOG_FD (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD) cat conftest.out >&AS_MESSAGE_LOG_FD if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" fi rm -f conftest*]) ])# LT_PATH_NM # Old names: AU_ALIAS([AM_PROG_NM], [LT_PATH_NM]) AU_ALIAS([AC_PROG_NM], [LT_PATH_NM]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_PROG_NM], []) dnl AC_DEFUN([AC_PROG_NM], []) # _LT_CHECK_SHAREDLIB_FROM_LINKLIB # -------------------------------- # how to determine the name of the shared library # associated with a specific link library. # -- PORTME fill in with the dynamic library characteristics m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB], [m4_require([_LT_DECL_EGREP]) m4_require([_LT_DECL_OBJDUMP]) m4_require([_LT_DECL_DLLTOOL]) AC_CACHE_CHECK([how to associate runtime and link libraries], lt_cv_sharedlib_from_linklib_cmd, [lt_cv_sharedlib_from_linklib_cmd='unknown' case $host_os in cygwin* | mingw* | pw32* | cegcc*) # two different shell functions defined in ltmain.sh # decide which to use based on capabilities of $DLLTOOL case `$DLLTOOL --help 2>&1` in *--identify-strict*) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib ;; *) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback ;; esac ;; *) # fallback: assume linklib IS sharedlib lt_cv_sharedlib_from_linklib_cmd="$ECHO" ;; esac ]) sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO _LT_DECL([], [sharedlib_from_linklib_cmd], [1], [Command to associate shared and link libraries]) ])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB # _LT_PATH_MANIFEST_TOOL # ---------------------- # locate the manifest tool m4_defun([_LT_PATH_MANIFEST_TOOL], [AC_CHECK_TOOL(MANIFEST_TOOL, mt, :) test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool], [lt_cv_path_mainfest_tool=no echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out cat conftest.err >&AS_MESSAGE_LOG_FD if $GREP 'Manifest Tool' conftest.out > /dev/null; then lt_cv_path_mainfest_tool=yes fi rm -f conftest*]) if test "x$lt_cv_path_mainfest_tool" != xyes; then MANIFEST_TOOL=: fi _LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl ])# _LT_PATH_MANIFEST_TOOL # LT_LIB_M # -------- # check for math library AC_DEFUN([LT_LIB_M], [AC_REQUIRE([AC_CANONICAL_HOST])dnl LIBM= case $host in *-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*) # These system don't have libm, or don't need it ;; *-ncr-sysv4.3*) AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") ;; *) AC_CHECK_LIB(m, cos, LIBM="-lm") ;; esac AC_SUBST([LIBM]) ])# LT_LIB_M # Old name: AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_CHECK_LIBM], []) # _LT_COMPILER_NO_RTTI([TAGNAME]) # ------------------------------- m4_defun([_LT_COMPILER_NO_RTTI], [m4_require([_LT_TAG_COMPILER])dnl _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= if test "$GCC" = yes; then case $cc_basename in nvcc*) _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;; *) _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;; esac _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], lt_cv_prog_compiler_rtti_exceptions, [-fno-rtti -fno-exceptions], [], [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) fi _LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], [Compiler flag to turn off builtin functions]) ])# _LT_COMPILER_NO_RTTI # _LT_CMD_GLOBAL_SYMBOLS # ---------------------- m4_defun([_LT_CMD_GLOBAL_SYMBOLS], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([LT_PATH_NM])dnl AC_REQUIRE([LT_PATH_LD])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_TAG_COMPILER])dnl # Check for command to grab the raw symbol name followed by C symbol from nm. AC_MSG_CHECKING([command to parse $NM output from $compiler object]) AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], [ # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[[BCDEGRST]]' # Regexp to match symbols that can be accessed directly from C. sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' # Define system-specific variables. case $host_os in aix*) symcode='[[BCDT]]' ;; cygwin* | mingw* | pw32* | cegcc*) symcode='[[ABCDGISTW]]' ;; hpux*) if test "$host_cpu" = ia64; then symcode='[[ABCDEGRST]]' fi ;; irix* | nonstopux*) symcode='[[BCDEGRST]]' ;; osf*) symcode='[[BCDEGQRST]]' ;; solaris*) symcode='[[BDRT]]' ;; sco3.2v5*) symcode='[[DT]]' ;; sysv4.2uw2*) symcode='[[DT]]' ;; sysv5* | sco5v6* | unixware* | OpenUNIX*) symcode='[[ABDT]]' ;; sysv4) symcode='[[DFNSTU]]' ;; esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) symcode='[[ABCDGIRSTW]]' ;; esac # Transform an extracted symbol line into a proper C declaration. # Some systems (esp. on ia64) link data and code symbols differently, # so use this general approach. lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" # Transform an extracted symbol line into symbol name and symbol address lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p'" lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"lib\2\", (void *) \&\2},/p'" # Handle CRLF in mingw tool chain opt_cr= case $build_os in mingw*) opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # Try without a prefix underscore, then with it. for ac_symprfx in "" "_"; do # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. symxfrm="\\1 $ac_symprfx\\2 \\2" # Write the raw and C identifiers. if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Fake it for dumpbin and say T for any non-static function # and D for any global variable. # Also find C++ and __fastcall symbols from MSVC++, # which start with @ or ?. lt_cv_sys_global_symbol_pipe="$AWK ['"\ " {last_section=section; section=\$ 3};"\ " /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ " \$ 0!~/External *\|/{next};"\ " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ " {if(hide[section]) next};"\ " {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ " {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ " s[1]~/^[@?]/{print s[1], s[1]; next};"\ " s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ " ' prfx=^$ac_symprfx]" else lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" fi lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext <<_LT_EOF #ifdef __cplusplus extern "C" { #endif char nm_test_var; void nm_test_func(void); void nm_test_func(void){} #ifdef __cplusplus } #endif int main(){nm_test_var='a';nm_test_func();return(0);} _LT_EOF if AC_TRY_EVAL(ac_compile); then # Now try to grab the symbols. nlist=conftest.nm if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if $GREP ' nm_test_var$' "$nlist" >/dev/null; then if $GREP ' nm_test_func$' "$nlist" >/dev/null; then cat <<_LT_EOF > conftest.$ac_ext /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) /* DATA imports from DLLs on WIN32 con't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT@&t@_DLSYM_CONST #elif defined(__osf__) /* This system does not cope well with relocations in const data. */ # define LT@&t@_DLSYM_CONST #else # define LT@&t@_DLSYM_CONST const #endif #ifdef __cplusplus extern "C" { #endif _LT_EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' cat <<_LT_EOF >> conftest.$ac_ext /* The mapping between symbol names and symbols. */ LT@&t@_DLSYM_CONST struct { const char *name; void *address; } lt__PROGRAM__LTX_preloaded_symbols[[]] = { { "@PROGRAM@", (void *) 0 }, _LT_EOF $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext cat <<\_LT_EOF >> conftest.$ac_ext {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt__PROGRAM__LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif _LT_EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_globsym_save_LIBS=$LIBS lt_globsym_save_CFLAGS=$CFLAGS LIBS="conftstm.$ac_objext" CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then pipe_works=yes fi LIBS=$lt_globsym_save_LIBS CFLAGS=$lt_globsym_save_CFLAGS else echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD fi else echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD fi else echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD cat conftest.$ac_ext >&5 fi rm -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test "$pipe_works" = yes; then break else lt_cv_sys_global_symbol_pipe= fi done ]) if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then AC_MSG_RESULT(failed) else AC_MSG_RESULT(ok) fi # Response file support. if test "$lt_cv_nm_interface" = "MS dumpbin"; then nm_file_list_spec='@' elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then nm_file_list_spec='@' fi _LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], [Take the output of nm and produce a listing of raw symbols and C names]) _LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], [Transform the output of nm in a proper C declaration]) _LT_DECL([global_symbol_to_c_name_address], [lt_cv_sys_global_symbol_to_c_name_address], [1], [Transform the output of nm in a C name address pair]) _LT_DECL([global_symbol_to_c_name_address_lib_prefix], [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1], [Transform the output of nm in a C name address pair when lib prefix is needed]) _LT_DECL([], [nm_file_list_spec], [1], [Specify filename containing input files for $NM]) ]) # _LT_CMD_GLOBAL_SYMBOLS # _LT_COMPILER_PIC([TAGNAME]) # --------------------------- m4_defun([_LT_COMPILER_PIC], [m4_require([_LT_TAG_COMPILER])dnl _LT_TAGVAR(lt_prog_compiler_wl, $1)= _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)= m4_if([$1], [CXX], [ # C++ specific cases for pic, static, wl, etc. if test "$GXX" = yes; then _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ;; *djgpp*) # DJGPP does not support shared libraries at all _LT_TAGVAR(lt_prog_compiler_pic, $1)= ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. _LT_TAGVAR(lt_prog_compiler_static, $1)= ;; interix[[3-9]]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic fi ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac else case $host_os in aix[[4-9]]*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' fi ;; chorus*) case $cc_basename in cxch68*) # Green Hills C++ Compiler # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" ;; esac ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; dgux*) case $cc_basename in ec++*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ;; ghcx*) # Green Hills C++ Compiler _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; *) ;; esac ;; freebsd* | dragonfly*) # FreeBSD uses GNU C++ ;; hpux9* | hpux10* | hpux11*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' if test "$host_cpu" != ia64; then _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' fi ;; aCC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ;; esac ;; *) ;; esac ;; interix*) # This is c89, which is MS Visual C++ (no shared libs) # Anyone wants to do a port? ;; irix5* | irix6* | nonstopux*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' # CC pic flag -KPIC is the default. ;; *) ;; esac ;; linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in KCC*) # KAI C++ Compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; ecpc* ) # old Intel C++ for x86_64 which still supported -KPIC. _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; icpc* ) # Intel C++, used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; pgCC* | pgcpp*) # Portland Group C++ compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; cxx*) # Compaq C++ # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL 8.0, 9.0 on PPC and BlueGene _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; esac ;; esac ;; lynxos*) ;; m88k*) ;; mvs*) case $cc_basename in cxx*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' ;; *) ;; esac ;; netbsd* | netbsdelf*-gnu) ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' ;; RCC*) # Rational C++ 2.4.1 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; cxx*) # Digital/Compaq C++ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; *) ;; esac ;; psos*) ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; gcx*) # Green Hills C++ Compiler _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' ;; *) ;; esac ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; lcc*) # Lucid _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; *) ;; esac ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ;; *) ;; esac ;; vxworks*) ;; *) _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; esac fi ], [ if test "$GCC" = yes; then _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. _LT_TAGVAR(lt_prog_compiler_static, $1)= ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac ;; interix[[3-9]]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no enable_shared=no ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic fi ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac case $cc_basename in nvcc*) # Cuda Compiler Driver 2.2 _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker ' if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then _LT_TAGVAR(lt_prog_compiler_pic, $1)="-Xcompiler $_LT_TAGVAR(lt_prog_compiler_pic, $1)" fi ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' fi ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; hpux9* | hpux10* | hpux11*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # PIC (with -KPIC) is the default. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in # old Intel for x86_64 which still supported -KPIC. ecc*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; # Lahey Fortran 8.1. lf95*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' ;; nagfor*) # NAG Fortran compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; ccc*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # All Alpha code is PIC. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; xl* | bgxl* | bgf* | mpixl*) # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*) # Sun Fortran 8.3 passes all unrecognized flags to the linker _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='' ;; *Sun\ F* | *Sun*Fortran*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; *Sun\ C*) # Sun C 5.9 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ;; *Intel*\ [[CF]]*Compiler*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; *Portland\ Group*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; esac ;; esac ;; newsos6) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; osf3* | osf4* | osf5*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # All OSF/1 code is PIC. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; rdos*) _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; solaris*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' case $cc_basename in f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; *) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; esac ;; sunos4*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; unicos*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; uts4*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; *) _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; esac fi ]) case $host_os in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) _LT_TAGVAR(lt_prog_compiler_pic, $1)= ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])" ;; esac AC_CACHE_CHECK([for $compiler option to produce PIC], [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)], [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) _LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1) # # Check to make sure the PIC flag actually works. # if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works], [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)], [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [], [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in "" | " "*) ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;; esac], [_LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) fi _LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1], [Additional compiler flags for building library objects]) _LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], [How to pass a linker flag through the compiler]) # # Check to make sure the static flag actually works. # wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\" _LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1), $lt_tmp_static_flag, [], [_LT_TAGVAR(lt_prog_compiler_static, $1)=]) _LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1], [Compiler flag to prevent dynamic linking]) ])# _LT_COMPILER_PIC # _LT_LINKER_SHLIBS([TAGNAME]) # ---------------------------- # See if the linker supports building shared libraries. m4_defun([_LT_LINKER_SHLIBS], [AC_REQUIRE([LT_PATH_LD])dnl AC_REQUIRE([LT_PATH_NM])dnl m4_require([_LT_PATH_MANIFEST_TOOL])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl m4_require([_LT_TAG_COMPILER])dnl AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) m4_if([$1], [CXX], [ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] case $host_os in aix[[4-9]]*) # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm # Also, AIX nm treats weak defined symbols like other global defined # symbols, whereas GNU nm marks them as "W". if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' fi ;; pw32*) _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" ;; cygwin* | mingw* | cegcc*) case $cc_basename in cl*) _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' ;; *) _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] ;; esac ;; linux* | k*bsd*-gnu | gnu*) _LT_TAGVAR(link_all_deplibs, $1)=no ;; *) _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ;; esac ], [ runpath_var= _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_cmds, $1)= _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(compiler_needs_object, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(old_archive_from_new_cmds, $1)= _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)= _LT_TAGVAR(thread_safe_flag_spec, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list _LT_TAGVAR(include_expsyms, $1)= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. dnl Note also adjust exclude_expsyms for C++ above. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32* | cegcc*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd*) with_gnu_ld=no ;; linux* | k*bsd*-gnu | gnu*) _LT_TAGVAR(link_all_deplibs, $1)=no ;; esac _LT_TAGVAR(ld_shlibs, $1)=yes # On some targets, GNU ld is compatible enough with the native linker # that we're better off using the native interface for both. lt_use_gnu_ld_interface=no if test "$with_gnu_ld" = yes; then case $host_os in aix*) # The AIX port of GNU ld has always aspired to compatibility # with the native linker. However, as the warning in the GNU ld # block says, versions before 2.19.5* couldn't really create working # shared libraries, regardless of the interface used. case `$LD -v 2>&1` in *\ \(GNU\ Binutils\)\ 2.19.5*) ;; *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;; *\ \(GNU\ Binutils\)\ [[3-9]]*) ;; *) lt_use_gnu_ld_interface=yes ;; esac ;; *) lt_use_gnu_ld_interface=yes ;; esac fi if test "$lt_use_gnu_ld_interface" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else _LT_TAGVAR(whole_archive_flag_spec, $1)= fi supports_anon_versioning=no case `$LD -v 2>&1` in *GNU\ gold*) supports_anon_versioning=yes ;; *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[[3-9]]*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: the GNU linker, at least up to release 2.19, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to install binutils *** 2.20 or above, or modify your PATH so that a non-GNU linker is found. *** You will then need to restart the configuration process. _LT_EOF fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='' ;; m68k) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; cygwin* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; haiku*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(link_all_deplibs, $1)=yes ;; interix[[3-9]]*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no if test "$host_os" = linux-dietlibc; then case $cc_basename in diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) esac fi if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ && test "$tmp_diet" = no then tmp_addflag=' $pic_flag' tmp_sharedflag='-shared' case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group f77 and f90 compilers _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; lf95*) # Lahey Fortran 8.1 _LT_TAGVAR(whole_archive_flag_spec, $1)= tmp_sharedflag='--shared' ;; xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) tmp_sharedflag='-qmkshrobj' tmp_addflag= ;; nvcc*) # Cuda Compiler Driver 2.2 _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; esac _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test "x$supports_anon_versioning" = xyes; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi case $cc_basename in xlf* | bgf* | bgxlf* | mpixlf*) # IBM XL Fortran 10.1 on PPC cannot create shared libs itself _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' if test "x$supports_anon_versioning" = xyes; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi ;; esac else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) # For security reasons, it is highly recommended that you always # use absolute paths for naming shared libraries, and exclude the # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; sunos4*) _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then runpath_var= _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. _LT_TAGVAR(hardcode_minus_L, $1)=yes if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. _LT_TAGVAR(hardcode_direct, $1)=unsupported fi ;; aix[[4-9]]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm # Also, AIX nm treats weak defined symbols like other global # defined symbols, whereas GNU nm marks them as "W". if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. _LT_TAGVAR(archive_cmds, $1)='' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' if test "$GCC" = yes; then case $host_os in aix4.[[012]]|aix4.[[012]].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 _LT_TAGVAR(hardcode_direct, $1)=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)= fi ;; esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi _LT_TAGVAR(link_all_deplibs, $1)=no else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. _LT_TAGVAR(always_export_symbols, $1)=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. _LT_TAGVAR(allow_undefined_flag, $1)='-berok' # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' if test "$with_gnu_ld" = yes; then # We only use this code for GNU lds that support --whole-archive. _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' fi _LT_TAGVAR(archive_cmds_need_lc, $1)=yes # This is similar to how AIX traditionally builds its shared libraries. _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='' ;; m68k) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac ;; bsdi[[45]]*) _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic ;; cygwin* | mingw* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. case $cc_basename in cl*) # Native MSVC _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes _LT_TAGVAR(file_list_spec, $1)='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; else sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' # Don't use ranlib _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile="$lt_outputfile.exe" lt_tool_outputfile="$lt_tool_outputfile.exe" ;; esac~ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # Assume MSVC wrapper _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' # FIXME: Should let the user specify the lib program. _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes ;; esac ;; darwin* | rhapsody*) _LT_DARWIN_LINKER_FEATURES($1) ;; dgux*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2.*) _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; hpux9*) if test "$GCC" = yes; then _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_direct, $1)=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ;; hpux10*) if test "$GCC" = yes && test "$with_gnu_ld" = no; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test "$with_gnu_ld" = no; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes fi ;; hpux11*) if test "$GCC" = yes && test "$with_gnu_ld" = no; then case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) m4_if($1, [], [ # Older versions of the 11.00 compiler do not understand -b yet # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) _LT_LINKER_OPTION([if $CC understands -b], _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b], [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])], [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags']) ;; esac fi if test "$with_gnu_ld" = no; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: case $host_cpu in hppa*64*|ia64*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' # Try to use the -exported_symbol ld option, if it does not # work, assume that -exports_file does not work either and # implicitly export all symbols. # This should be the same for all languages, so no per-tag cache variable. AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol], [lt_cv_irix_exported_symbol], [save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" AC_LINK_IFELSE( [AC_LANG_SOURCE( [AC_LANG_CASE([C], [[int foo (void) { return 0; }]], [C++], [[int foo (void) { return 0; }]], [Fortran 77], [[ subroutine foo end]], [Fortran], [[ subroutine foo end]])])], [lt_cv_irix_exported_symbol=yes], [lt_cv_irix_exported_symbol=no]) LDFLAGS="$save_LDFLAGS"]) if test "$lt_cv_irix_exported_symbol" = yes; then _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' fi else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(inherit_rpath, $1)=yes _LT_TAGVAR(link_all_deplibs, $1)=yes ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; newsos6) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *nto* | *qnx*) ;; openbsd*) if test -f /usr/libexec/ld.so; then _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=yes if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' else case $host_os in openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' ;; esac fi else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; os2*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' else _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' # Both c and cxx compiler support -rpath directly _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_separator, $1)=: ;; solaris*) _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' if test "$GCC" = yes; then wlarc='${wl}' _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' else case `$CC -V 2>&1` in *"Compilers 5.0"*) wlarc='' _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' ;; *) wlarc='${wl}' _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ;; esac fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. GCC discards it without `$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test "$GCC" = yes; then _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' else _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' fi ;; esac _LT_TAGVAR(link_all_deplibs, $1)=yes ;; sunos4*) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; sysv4) case $host_vendor in sni) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' _LT_TAGVAR(hardcode_direct, $1)=no ;; motorola) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; sysv4.3*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes _LT_TAGVAR(ld_shlibs, $1)=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(ld_shlibs, $1)=no ;; esac if test x$host_vendor = xsni; then case $host in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym' ;; esac fi fi ]) AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no _LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld _LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl _LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl _LT_DECL([], [extract_expsyms_cmds], [2], [The commands to extract the exported symbol list from a shared archive]) # # Do we need to explicitly link libc? # case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in x|xyes) # Assume -lc should be added _LT_TAGVAR(archive_cmds_need_lc, $1)=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $_LT_TAGVAR(archive_cmds, $1) in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. AC_CACHE_CHECK([whether -lc should be explicitly linked in], [lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1), [$RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if AC_TRY_EVAL(ac_compile) 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) _LT_TAGVAR(allow_undefined_flag, $1)= if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) then lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no else lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes fi _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* ]) _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1) ;; esac fi ;; esac _LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0], [Whether or not to add -lc for building shared libraries]) _LT_TAGDECL([allow_libtool_libs_with_static_runtimes], [enable_shared_with_static_runtimes], [0], [Whether or not to disallow shared libs when runtime libs are static]) _LT_TAGDECL([], [export_dynamic_flag_spec], [1], [Compiler flag to allow reflexive dlopens]) _LT_TAGDECL([], [whole_archive_flag_spec], [1], [Compiler flag to generate shared objects directly from archives]) _LT_TAGDECL([], [compiler_needs_object], [1], [Whether the compiler copes with passing no objects directly]) _LT_TAGDECL([], [old_archive_from_new_cmds], [2], [Create an old-style archive from a shared archive]) _LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2], [Create a temporary old-style archive to link instead of a shared archive]) _LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive]) _LT_TAGDECL([], [archive_expsym_cmds], [2]) _LT_TAGDECL([], [module_cmds], [2], [Commands used to build a loadable module if different from building a shared archive.]) _LT_TAGDECL([], [module_expsym_cmds], [2]) _LT_TAGDECL([], [with_gnu_ld], [1], [Whether we are building with GNU ld or not]) _LT_TAGDECL([], [allow_undefined_flag], [1], [Flag that allows shared libraries with undefined symbols to be built]) _LT_TAGDECL([], [no_undefined_flag], [1], [Flag that enforces no undefined symbols]) _LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], [Flag to hardcode $libdir into a binary during linking. This must work even if $libdir does not exist]) _LT_TAGDECL([], [hardcode_libdir_separator], [1], [Whether we need a single "-rpath" flag with a separated argument]) _LT_TAGDECL([], [hardcode_direct], [0], [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_direct_absolute], [0], [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the resulting binary and the resulting library dependency is "absolute", i.e impossible to change by setting ${shlibpath_var} if the library is relocated]) _LT_TAGDECL([], [hardcode_minus_L], [0], [Set to "yes" if using the -LDIR flag during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_shlibpath_var], [0], [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_automatic], [0], [Set to "yes" if building a shared library automatically hardcodes DIR into the library and all subsequent libraries and executables linked against it]) _LT_TAGDECL([], [inherit_rpath], [0], [Set to yes if linker adds runtime paths of dependent libraries to runtime path list]) _LT_TAGDECL([], [link_all_deplibs], [0], [Whether libtool must link a program against all its dependency libraries]) _LT_TAGDECL([], [always_export_symbols], [0], [Set to "yes" if exported symbols are required]) _LT_TAGDECL([], [export_symbols_cmds], [2], [The commands to list exported symbols]) _LT_TAGDECL([], [exclude_expsyms], [1], [Symbols that should not be listed in the preloaded symbols]) _LT_TAGDECL([], [include_expsyms], [1], [Symbols that must always be exported]) _LT_TAGDECL([], [prelink_cmds], [2], [Commands necessary for linking programs (against libraries) with templates]) _LT_TAGDECL([], [postlink_cmds], [2], [Commands necessary for finishing linking programs]) _LT_TAGDECL([], [file_list_spec], [1], [Specify filename containing input files]) dnl FIXME: Not yet implemented dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1], dnl [Compiler flag to generate thread safe objects]) ])# _LT_LINKER_SHLIBS # _LT_LANG_C_CONFIG([TAG]) # ------------------------ # Ensure that the configuration variables for a C compiler are suitably # defined. These variables are subsequently used by _LT_CONFIG to write # the compiler configuration to `libtool'. m4_defun([_LT_LANG_C_CONFIG], [m4_require([_LT_DECL_EGREP])dnl lt_save_CC="$CC" AC_LANG_PUSH(C) # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(){return(0);}' _LT_TAG_COMPILER # Save the default compiler, since it gets overwritten when the other # tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. compiler_DEFAULT=$CC # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) LT_SYS_DLOPEN_SELF _LT_CMD_STRIPLIB # Report which library types will actually be built AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_CONFIG($1) fi AC_LANG_POP CC="$lt_save_CC" ])# _LT_LANG_C_CONFIG # _LT_LANG_CXX_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for a C++ compiler are suitably # defined. These variables are subsequently used by _LT_CONFIG to write # the compiler configuration to `libtool'. m4_defun([_LT_LANG_CXX_CONFIG], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_PATH_MANIFEST_TOOL])dnl if test -n "$CXX" && ( test "X$CXX" != "Xno" && ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || (test "X$CXX" != "Xg++"))) ; then AC_PROG_CXXCPP else _lt_caught_CXX_error=yes fi AC_LANG_PUSH(C++) _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(compiler_needs_object, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for C++ test sources. ac_ext=cpp # Object file extension for compiled C++ test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the CXX compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test "$_lt_caught_CXX_error" != yes; then # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_LD=$LD lt_save_GCC=$GCC GCC=$GXX lt_save_with_gnu_ld=$with_gnu_ld lt_save_path_LD=$lt_cv_path_LD if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx else $as_unset lt_cv_prog_gnu_ld fi if test -n "${lt_cv_path_LDCXX+set}"; then lt_cv_path_LD=$lt_cv_path_LDCXX else $as_unset lt_cv_path_LD fi test -z "${LDCXX+set}" || LD=$LDCXX CC=${CXX-"c++"} CFLAGS=$CXXFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) if test -n "$compiler"; then # We don't want -fno-exception when compiling C++ code, so set the # no_builtin_flag separately if test "$GXX" = yes; then _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' else _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= fi if test "$GXX" = yes; then # Set up default GNU C++ configuration LT_PATH_LD # Check if GNU C++ uses GNU ld as the underlying linker, since the # archiving commands below assume that GNU ld is being used. if test "$with_gnu_ld" = yes; then _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' # If archive_cmds runs LD, not CC, wlarc should be empty # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to # investigate it a little bit more. (MM) wlarc='${wl}' # ancient GNU ld didn't support --whole-archive et. al. if eval "`$CC -print-prog-name=ld` --help 2>&1" | $GREP 'no-whole-archive' > /dev/null; then _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else _LT_TAGVAR(whole_archive_flag_spec, $1)= fi else with_gnu_ld=no wlarc= # A generic and very simple default shared library creation # command for GNU C++ for the case where it uses the native # linker, instead of GNU ld. If possible, this setting should # overridden to take advantage of the native linker features on # the platform it is being used on. _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' fi # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else GXX=no with_gnu_ld=no wlarc= fi # PORTME: fill in a description of your system's C++ link characteristics AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) _LT_TAGVAR(ld_shlibs, $1)=yes case $host_os in aix3*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aix[[4-9]]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) for ld_flag in $LDFLAGS; do case $ld_flag in *-brtl*) aix_use_runtimelinking=yes break ;; esac done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. _LT_TAGVAR(archive_cmds, $1)='' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' if test "$GXX" = yes; then case $host_os in aix4.[[012]]|aix4.[[012]].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 _LT_TAGVAR(hardcode_direct, $1)=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)= fi esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to # export. _LT_TAGVAR(always_export_symbols, $1)=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. _LT_TAGVAR(allow_undefined_flag, $1)='-berok' # Determine the default libpath from the value encoded in an empty # executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' if test "$with_gnu_ld" = yes; then # We only use this code for GNU lds that support --whole-archive. _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' fi _LT_TAGVAR(archive_cmds_need_lc, $1)=yes # This is similar to how AIX traditionally builds its shared # libraries. _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; chorus*) case $cc_basename in *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; cygwin* | mingw* | pw32* | cegcc*) case $GXX,$cc_basename in ,cl* | no,cl*) # Native MSVC # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes _LT_TAGVAR(file_list_spec, $1)='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; else $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes # Don't use ranlib _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile="$lt_outputfile.exe" lt_tool_outputfile="$lt_tool_outputfile.exe" ;; esac~ func_to_tool_file "$lt_outputfile"~ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # g++ # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; darwin* | rhapsody*) _LT_DARWIN_LINKER_FEATURES($1) ;; dgux*) case $cc_basename in ec++*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; ghcx*) # Green Hills C++ Compiler # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; freebsd2.*) # C++ shared libraries reported to be fairly broken before # switch to ELF _LT_TAGVAR(ld_shlibs, $1)=no ;; freebsd-elf*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; freebsd* | dragonfly*) # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF # conventions _LT_TAGVAR(ld_shlibs, $1)=yes ;; gnu*) ;; haiku*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(link_all_deplibs, $1)=yes ;; hpux9*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default # location of the library. case $cc_basename in CC*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aCC*) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test "$GXX" = yes; then _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; hpux10*|hpux11*) if test $with_gnu_ld = no; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: case $host_cpu in hppa*64*|ia64*) ;; *) _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ;; esac fi case $host_cpu in hppa*64*|ia64*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default # location of the library. ;; esac case $cc_basename in CC*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aCC*) case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test "$GXX" = yes; then if test $with_gnu_ld = no; then case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac fi else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; interix[[3-9]]*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; irix5* | irix6*) case $cc_basename in CC*) # SGI C++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' # Archives containing C++ object files must be created using # "CC -ar", where "CC" is the IRIX C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' ;; *) if test "$GXX" = yes; then if test "$with_gnu_ld" = no; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib' fi fi _LT_TAGVAR(link_all_deplibs, $1)=yes ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(inherit_rpath, $1)=yes ;; linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; icpc* | ecpc* ) # Intel C++ with_gnu_ld=yes # version 8.0 and above of icpc choke on multiply defined symbols # if we add $predep_objects and $postdep_objects, however 7.1 and # earlier do not add the objects themselves. case `$CC -V 2>&1` in *"Version 7."*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 8.0 or newer tmp_idyn= case $host_cpu in ia64*) tmp_idyn=' -i_dynamic';; esac _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; esac _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' ;; pgCC* | pgcpp*) # Portland Group C++ compiler case `$CC -V` in *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*) _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ $RANLIB $oldlib' _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' ;; *) # Version 6 and above use weak symbols _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' ;; cxx*) # Compaq C++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' runpath_var=LD_RUN_PATH _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' ;; xl* | mpixl* | bgxl*) # IBM XL 8.0 on PPC, with GNU ld _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test "x$supports_anon_versioning" = xyes; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes # Not sure whether something based on # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 # would be better. output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' ;; esac ;; esac ;; lynxos*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; m88k*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; mvs*) case $cc_basename in cxx*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' wlarc= _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no fi # Workaround some broken pre-1.5 toolchains output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' ;; *nto* | *qnx*) _LT_TAGVAR(ld_shlibs, $1)=yes ;; openbsd2*) # C++ shared libraries are fairly broken _LT_TAGVAR(ld_shlibs, $1)=no ;; openbsd*) if test -f /usr/libexec/ld.so; then _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' fi output_verbose_link_cmd=func_echo_all else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Archives containing C++ object files must be created using # the KAI C++ compiler. case $host in osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; esac ;; RCC*) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; cxx*) case $host in osf3*) _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' ;; *) _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ echo "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~ $RM $lib.exp' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' ;; esac _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test "$GXX" = yes && test "$with_gnu_ld" = no; then _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' case $host in osf3*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; psos*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; lcc*) # Lucid # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ _LT_TAGVAR(archive_cmds_need_lc,$1)=yes _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. # Supported since Solaris 2.6 (maybe 2.5.1?) _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;; esac _LT_TAGVAR(link_all_deplibs, $1)=yes output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' ;; gcx*) # Green Hills C++ Compiler _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' # The C++ compiler must be used to create the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' ;; *) # GNU C++ compiler with Solaris linker if test "$GXX" = yes && test "$with_gnu_ld" = no; then _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' if $CC --version | $GREP -v '^2\.7' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else # g++ 2.7 appears to require `-G' NOT `-shared' on this # platform. _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' ;; esac fi ;; esac ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var='LD_RUN_PATH' case $cc_basename in CC*) _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' runpath_var='LD_RUN_PATH' case $cc_basename in CC*) _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~ '"$_LT_TAGVAR(old_archive_cmds, $1)" _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~ '"$_LT_TAGVAR(reload_cmds, $1)" ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; vxworks*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no _LT_TAGVAR(GCC, $1)="$GXX" _LT_TAGVAR(LD, $1)="$LD" ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_SYS_HIDDEN_LIBDEPS($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS LDCXX=$LD LD=$lt_save_LD GCC=$lt_save_GCC with_gnu_ld=$lt_save_with_gnu_ld lt_cv_path_LDCXX=$lt_cv_path_LD lt_cv_path_LD=$lt_save_path_LD lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld fi # test "$_lt_caught_CXX_error" != yes AC_LANG_POP ])# _LT_LANG_CXX_CONFIG # _LT_FUNC_STRIPNAME_CNF # ---------------------- # func_stripname_cnf prefix suffix name # strip PREFIX and SUFFIX off of NAME. # PREFIX and SUFFIX must not contain globbing or regex special # characters, hashes, percent signs, but SUFFIX may contain a leading # dot (in which case that matches only a dot). # # This function is identical to the (non-XSI) version of func_stripname, # except this one can be used by m4 code that may be executed by configure, # rather than the libtool script. m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl AC_REQUIRE([_LT_DECL_SED]) AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH]) func_stripname_cnf () { case ${2} in .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; esac } # func_stripname_cnf ])# _LT_FUNC_STRIPNAME_CNF # _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) # --------------------------------- # Figure out "hidden" library dependencies from verbose # compiler output when linking a shared library. # Parse the compiler output and extract the necessary # objects, libraries and library flags. m4_defun([_LT_SYS_HIDDEN_LIBDEPS], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl # Dependencies to place before and after the object being linked: _LT_TAGVAR(predep_objects, $1)= _LT_TAGVAR(postdep_objects, $1)= _LT_TAGVAR(predeps, $1)= _LT_TAGVAR(postdeps, $1)= _LT_TAGVAR(compiler_lib_search_path, $1)= dnl we can't use the lt_simple_compile_test_code here, dnl because it contains code intended for an executable, dnl not a library. It's possible we should let each dnl tag define a new lt_????_link_test_code variable, dnl but it's only used here... m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF int a; void foo (void) { a = 0; } _LT_EOF ], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF class Foo { public: Foo (void) { a = 0; } private: int a; }; _LT_EOF ], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF subroutine foo implicit none integer*4 a a=0 return end _LT_EOF ], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF subroutine foo implicit none integer a a=0 return end _LT_EOF ], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF public class foo { private int a; public void bar (void) { a = 0; } }; _LT_EOF ], [$1], [GO], [cat > conftest.$ac_ext <<_LT_EOF package foo func foo() { } _LT_EOF ]) _lt_libdeps_save_CFLAGS=$CFLAGS case "$CC $CFLAGS " in #( *\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; *\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; *\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; esac dnl Parse the compiler output and extract the necessary dnl objects, libraries and library flags. if AC_TRY_EVAL(ac_compile); then # Parse the compiler output and extract the necessary # objects, libraries and library flags. # Sentinel used to keep track of whether or not we are before # the conftest object file. pre_test_object_deps_done=no for p in `eval "$output_verbose_link_cmd"`; do case ${prev}${p} in -L* | -R* | -l*) # Some compilers place space between "-{L,R}" and the path. # Remove the space. if test $p = "-L" || test $p = "-R"; then prev=$p continue fi # Expand the sysroot to ease extracting the directories later. if test -z "$prev"; then case $p in -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; esac fi case $p in =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; esac if test "$pre_test_object_deps_done" = no; then case ${prev} in -L | -R) # Internal compiler library paths should come after those # provided the user. The postdeps already come after the # user supplied libs so there is no need to process them. if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}" else _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}" fi ;; # The "-l" case would never come before the object being # linked, so don't bother handling this case. esac else if test -z "$_LT_TAGVAR(postdeps, $1)"; then _LT_TAGVAR(postdeps, $1)="${prev}${p}" else _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}" fi fi prev= ;; *.lto.$objext) ;; # Ignore GCC LTO objects *.$objext) # This assumes that the test object file only shows up # once in the compiler output. if test "$p" = "conftest.$objext"; then pre_test_object_deps_done=yes continue fi if test "$pre_test_object_deps_done" = no; then if test -z "$_LT_TAGVAR(predep_objects, $1)"; then _LT_TAGVAR(predep_objects, $1)="$p" else _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" fi else if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then _LT_TAGVAR(postdep_objects, $1)="$p" else _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" fi fi ;; *) ;; # Ignore the rest. esac done # Clean up. rm -f a.out a.exe else echo "libtool.m4: error: problem compiling $1 test program" fi $RM -f confest.$objext CFLAGS=$_lt_libdeps_save_CFLAGS # PORTME: override above test on systems where it is broken m4_if([$1], [CXX], [case $host_os in interix[[3-9]]*) # Interix 3.5 installs completely hosed .la files for C++, so rather than # hack all around it, let's just trust "g++" to DTRT. _LT_TAGVAR(predep_objects,$1)= _LT_TAGVAR(postdep_objects,$1)= _LT_TAGVAR(postdeps,$1)= ;; linux*) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 # The more standards-conforming stlport4 library is # incompatible with the Cstd library. Avoid specifying # it if it's in CXXFLAGS. Ignore libCrun as # -library=stlport4 depends on it. case " $CXX $CXXFLAGS " in *" -library=stlport4 "*) solaris_use_stlport4=yes ;; esac if test "$solaris_use_stlport4" != yes; then _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' fi ;; esac ;; solaris*) case $cc_basename in CC* | sunCC*) # The more standards-conforming stlport4 library is # incompatible with the Cstd library. Avoid specifying # it if it's in CXXFLAGS. Ignore libCrun as # -library=stlport4 depends on it. case " $CXX $CXXFLAGS " in *" -library=stlport4 "*) solaris_use_stlport4=yes ;; esac # Adding this requires a known-good setup of shared libraries for # Sun compiler versions before 5.6, else PIC objects from an old # archive will be linked into the output, leading to subtle bugs. if test "$solaris_use_stlport4" != yes; then _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' fi ;; esac ;; esac ]) case " $_LT_TAGVAR(postdeps, $1) " in *" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; esac _LT_TAGVAR(compiler_lib_search_dirs, $1)= if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` fi _LT_TAGDECL([], [compiler_lib_search_dirs], [1], [The directories searched by this compiler when creating a shared library]) _LT_TAGDECL([], [predep_objects], [1], [Dependencies to place before and after the objects being linked to create a shared library]) _LT_TAGDECL([], [postdep_objects], [1]) _LT_TAGDECL([], [predeps], [1]) _LT_TAGDECL([], [postdeps], [1]) _LT_TAGDECL([], [compiler_lib_search_path], [1], [The library search path used internally by the compiler when linking a shared library]) ])# _LT_SYS_HIDDEN_LIBDEPS # _LT_LANG_F77_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for a Fortran 77 compiler are # suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_F77_CONFIG], [AC_LANG_PUSH(Fortran 77) if test -z "$F77" || test "X$F77" = "Xno"; then _lt_disable_F77=yes fi _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for f77 test sources. ac_ext=f # Object file extension for compiled f77 test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the F77 compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test "$_lt_disable_F77" != yes; then # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t return end " # Code to be used in simple link tests lt_simple_link_test_code="\ program t end " # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC="$CC" lt_save_GCC=$GCC lt_save_CFLAGS=$CFLAGS CC=${F77-"f77"} CFLAGS=$FFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) GCC=$G77 if test -n "$compiler"; then AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_TAGVAR(GCC, $1)="$G77" _LT_TAGVAR(LD, $1)="$LD" ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" GCC=$lt_save_GCC CC="$lt_save_CC" CFLAGS="$lt_save_CFLAGS" fi # test "$_lt_disable_F77" != yes AC_LANG_POP ])# _LT_LANG_F77_CONFIG # _LT_LANG_FC_CONFIG([TAG]) # ------------------------- # Ensure that the configuration variables for a Fortran compiler are # suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_FC_CONFIG], [AC_LANG_PUSH(Fortran) if test -z "$FC" || test "X$FC" = "Xno"; then _lt_disable_FC=yes fi _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for fc test sources. ac_ext=${ac_fc_srcext-f} # Object file extension for compiled fc test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the FC compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test "$_lt_disable_FC" != yes; then # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t return end " # Code to be used in simple link tests lt_simple_link_test_code="\ program t end " # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC="$CC" lt_save_GCC=$GCC lt_save_CFLAGS=$CFLAGS CC=${FC-"f95"} CFLAGS=$FCFLAGS compiler=$CC GCC=$ac_cv_fc_compiler_gnu _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) if test -n "$compiler"; then AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu" _LT_TAGVAR(LD, $1)="$LD" ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_SYS_HIDDEN_LIBDEPS($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS fi # test "$_lt_disable_FC" != yes AC_LANG_POP ])# _LT_LANG_FC_CONFIG # _LT_LANG_GCJ_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for the GNU Java Compiler compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_GCJ_CONFIG], [AC_REQUIRE([LT_PROG_GCJ])dnl AC_LANG_SAVE # Source file extension for Java test sources. ac_ext=java # Object file extension for compiled Java test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="class foo {}" # Code to be used in simple link tests lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC=yes CC=${GCJ-"gcj"} CFLAGS=$GCJFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_TAGVAR(LD, $1)="$LD" _LT_CC_BASENAME([$compiler]) # GCJ did not exist at the time GCC didn't implicitly link libc in. _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi AC_LANG_RESTORE GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS ])# _LT_LANG_GCJ_CONFIG # _LT_LANG_GO_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for the GNU Go compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_GO_CONFIG], [AC_REQUIRE([LT_PROG_GO])dnl AC_LANG_SAVE # Source file extension for Go test sources. ac_ext=go # Object file extension for compiled Go test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="package main; func main() { }" # Code to be used in simple link tests lt_simple_link_test_code='package main; func main() { }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC=yes CC=${GOC-"gccgo"} CFLAGS=$GOFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_TAGVAR(LD, $1)="$LD" _LT_CC_BASENAME([$compiler]) # Go did not exist at the time GCC didn't implicitly link libc in. _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi AC_LANG_RESTORE GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS ])# _LT_LANG_GO_CONFIG # _LT_LANG_RC_CONFIG([TAG]) # ------------------------- # Ensure that the configuration variables for the Windows resource compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_RC_CONFIG], [AC_REQUIRE([LT_PROG_RC])dnl AC_LANG_SAVE # Source file extension for RC test sources. ac_ext=rc # Object file extension for compiled RC test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' # Code to be used in simple link tests lt_simple_link_test_code="$lt_simple_compile_test_code" # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC="$CC" lt_save_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC= CC=${RC-"windres"} CFLAGS= compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes if test -n "$compiler"; then : _LT_CONFIG($1) fi GCC=$lt_save_GCC AC_LANG_RESTORE CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS ])# _LT_LANG_RC_CONFIG # LT_PROG_GCJ # ----------- AC_DEFUN([LT_PROG_GCJ], [m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], [AC_CHECK_TOOL(GCJ, gcj,) test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" AC_SUBST(GCJFLAGS)])])[]dnl ]) # Old name: AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_GCJ], []) # LT_PROG_GO # ---------- AC_DEFUN([LT_PROG_GO], [AC_CHECK_TOOL(GOC, gccgo,) ]) # LT_PROG_RC # ---------- AC_DEFUN([LT_PROG_RC], [AC_CHECK_TOOL(RC, windres,) ]) # Old name: AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_RC], []) # _LT_DECL_EGREP # -------------- # If we don't have a new enough Autoconf to choose the best grep # available, choose the one first in the user's PATH. m4_defun([_LT_DECL_EGREP], [AC_REQUIRE([AC_PROG_EGREP])dnl AC_REQUIRE([AC_PROG_FGREP])dnl test -z "$GREP" && GREP=grep _LT_DECL([], [GREP], [1], [A grep program that handles long lines]) _LT_DECL([], [EGREP], [1], [An ERE matcher]) _LT_DECL([], [FGREP], [1], [A literal string matcher]) dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too AC_SUBST([GREP]) ]) # _LT_DECL_OBJDUMP # -------------- # If we don't have a new enough Autoconf to choose the best objdump # available, choose the one first in the user's PATH. m4_defun([_LT_DECL_OBJDUMP], [AC_CHECK_TOOL(OBJDUMP, objdump, false) test -z "$OBJDUMP" && OBJDUMP=objdump _LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) AC_SUBST([OBJDUMP]) ]) # _LT_DECL_DLLTOOL # ---------------- # Ensure DLLTOOL variable is set. m4_defun([_LT_DECL_DLLTOOL], [AC_CHECK_TOOL(DLLTOOL, dlltool, false) test -z "$DLLTOOL" && DLLTOOL=dlltool _LT_DECL([], [DLLTOOL], [1], [DLL creation program]) AC_SUBST([DLLTOOL]) ]) # _LT_DECL_SED # ------------ # Check for a fully-functional sed program, that truncates # as few characters as possible. Prefer GNU sed if found. m4_defun([_LT_DECL_SED], [AC_PROG_SED test -z "$SED" && SED=sed Xsed="$SED -e 1s/^X//" _LT_DECL([], [SED], [1], [A sed program that does not truncate output]) _LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"], [Sed that helps us avoid accidentally triggering echo(1) options like -n]) ])# _LT_DECL_SED m4_ifndef([AC_PROG_SED], [ # NOTE: This macro has been submitted for inclusion into # # GNU Autoconf as AC_PROG_SED. When it is available in # # a released version of Autoconf we should remove this # # macro and use it instead. # m4_defun([AC_PROG_SED], [AC_MSG_CHECKING([for a sed that does not truncate output]) AC_CACHE_VAL(lt_cv_path_SED, [# Loop through the user's path and test for sed and gsed. # Then use that list of sed's as ones to test for truncation. as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for lt_ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" fi done done done IFS=$as_save_IFS lt_ac_max=0 lt_ac_count=0 # Add /usr/xpg4/bin/sed as it is typically found on Solaris # along with /bin/sed that truncates output. for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do test ! -f $lt_ac_sed && continue cat /dev/null > conftest.in lt_ac_count=0 echo $ECHO_N "0123456789$ECHO_C" >conftest.in # Check for GNU sed and select it if it is found. if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then lt_cv_path_SED=$lt_ac_sed break fi while true; do cat conftest.in conftest.in >conftest.tmp mv conftest.tmp conftest.in cp conftest.in conftest.nl echo >>conftest.nl $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break cmp -s conftest.out conftest.nl || break # 10000 chars as input seems more than enough test $lt_ac_count -gt 10 && break lt_ac_count=`expr $lt_ac_count + 1` if test $lt_ac_count -gt $lt_ac_max; then lt_ac_max=$lt_ac_count lt_cv_path_SED=$lt_ac_sed fi done done ]) SED=$lt_cv_path_SED AC_SUBST([SED]) AC_MSG_RESULT([$SED]) ])#AC_PROG_SED ])#m4_ifndef # Old name: AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_SED], []) # _LT_CHECK_SHELL_FEATURES # ------------------------ # Find out whether the shell is Bourne or XSI compatible, # or has some other useful features. m4_defun([_LT_CHECK_SHELL_FEATURES], [AC_MSG_CHECKING([whether the shell understands some XSI constructs]) # Try some XSI features xsi_shell=no ( _lt_dummy="a/b/c" test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \ = c,a/b,b/c, \ && eval 'test $(( 1 + 1 )) -eq 2 \ && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ && xsi_shell=yes AC_MSG_RESULT([$xsi_shell]) _LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell']) AC_MSG_CHECKING([whether the shell understands "+="]) lt_shell_append=no ( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \ >/dev/null 2>&1 \ && lt_shell_append=yes AC_MSG_RESULT([$lt_shell_append]) _LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append']) if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then lt_unset=unset else lt_unset=false fi _LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl # test EBCDIC or ASCII case `echo X|tr X '\101'` in A) # ASCII based system # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr lt_SP2NL='tr \040 \012' lt_NL2SP='tr \015\012 \040\040' ;; *) # EBCDIC based system lt_SP2NL='tr \100 \n' lt_NL2SP='tr \r\n \100\100' ;; esac _LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl _LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl ])# _LT_CHECK_SHELL_FEATURES # _LT_PROG_FUNCTION_REPLACE (FUNCNAME, REPLACEMENT-BODY) # ------------------------------------------------------ # In `$cfgfile', look for function FUNCNAME delimited by `^FUNCNAME ()$' and # '^} FUNCNAME ', and replace its body with REPLACEMENT-BODY. m4_defun([_LT_PROG_FUNCTION_REPLACE], [dnl { sed -e '/^$1 ()$/,/^} # $1 /c\ $1 ()\ {\ m4_bpatsubsts([$2], [$], [\\], [^\([ ]\)], [\\\1]) } # Extended-shell $1 implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: ]) # _LT_PROG_REPLACE_SHELLFNS # ------------------------- # Replace existing portable implementations of several shell functions with # equivalent extended shell implementations where those features are available.. m4_defun([_LT_PROG_REPLACE_SHELLFNS], [if test x"$xsi_shell" = xyes; then _LT_PROG_FUNCTION_REPLACE([func_dirname], [dnl case ${1} in */*) func_dirname_result="${1%/*}${2}" ;; * ) func_dirname_result="${3}" ;; esac]) _LT_PROG_FUNCTION_REPLACE([func_basename], [dnl func_basename_result="${1##*/}"]) _LT_PROG_FUNCTION_REPLACE([func_dirname_and_basename], [dnl case ${1} in */*) func_dirname_result="${1%/*}${2}" ;; * ) func_dirname_result="${3}" ;; esac func_basename_result="${1##*/}"]) _LT_PROG_FUNCTION_REPLACE([func_stripname], [dnl # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are # positional parameters, so assign one to ordinary parameter first. func_stripname_result=${3} func_stripname_result=${func_stripname_result#"${1}"} func_stripname_result=${func_stripname_result%"${2}"}]) _LT_PROG_FUNCTION_REPLACE([func_split_long_opt], [dnl func_split_long_opt_name=${1%%=*} func_split_long_opt_arg=${1#*=}]) _LT_PROG_FUNCTION_REPLACE([func_split_short_opt], [dnl func_split_short_opt_arg=${1#??} func_split_short_opt_name=${1%"$func_split_short_opt_arg"}]) _LT_PROG_FUNCTION_REPLACE([func_lo2o], [dnl case ${1} in *.lo) func_lo2o_result=${1%.lo}.${objext} ;; *) func_lo2o_result=${1} ;; esac]) _LT_PROG_FUNCTION_REPLACE([func_xform], [ func_xform_result=${1%.*}.lo]) _LT_PROG_FUNCTION_REPLACE([func_arith], [ func_arith_result=$(( $[*] ))]) _LT_PROG_FUNCTION_REPLACE([func_len], [ func_len_result=${#1}]) fi if test x"$lt_shell_append" = xyes; then _LT_PROG_FUNCTION_REPLACE([func_append], [ eval "${1}+=\\${2}"]) _LT_PROG_FUNCTION_REPLACE([func_append_quoted], [dnl func_quote_for_eval "${2}" dnl m4 expansion turns \\\\ into \\, and then the shell eval turns that into \ eval "${1}+=\\\\ \\$func_quote_for_eval_result"]) # Save a `func_append' function call where possible by direct use of '+=' sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: else # Save a `func_append' function call even when '+=' is not available sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: fi if test x"$_lt_function_replace_fail" = x":"; then AC_MSG_WARN([Unable to substitute extended shell functions in $ofile]) fi ]) # _LT_PATH_CONVERSION_FUNCTIONS # ----------------------------- # Determine which file name conversion functions should be used by # func_to_host_file (and, implicitly, by func_to_host_path). These are needed # for certain cross-compile configurations and native mingw. m4_defun([_LT_PATH_CONVERSION_FUNCTIONS], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl AC_MSG_CHECKING([how to convert $build file names to $host format]) AC_CACHE_VAL(lt_cv_to_host_file_cmd, [case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 ;; esac ;; *-*-cygwin* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_noop ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin ;; esac ;; * ) # unhandled hosts (and "normal" native builds) lt_cv_to_host_file_cmd=func_convert_file_noop ;; esac ]) to_host_file_cmd=$lt_cv_to_host_file_cmd AC_MSG_RESULT([$lt_cv_to_host_file_cmd]) _LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd], [0], [convert $build file names to $host format])dnl AC_MSG_CHECKING([how to convert $build file names to toolchain format]) AC_CACHE_VAL(lt_cv_to_tool_file_cmd, [#assume ordinary cross tools, or native build. lt_cv_to_tool_file_cmd=func_convert_file_noop case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 ;; esac ;; esac ]) to_tool_file_cmd=$lt_cv_to_tool_file_cmd AC_MSG_RESULT([$lt_cv_to_tool_file_cmd]) _LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd], [0], [convert $build files to toolchain format])dnl ])# _LT_PATH_CONVERSION_FUNCTIONS # Helper functions for option handling. -*- Autoconf -*- # # Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation, # Inc. # Written by Gary V. Vaughan, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 7 ltoptions.m4 # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) # _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME) # ------------------------------------------ m4_define([_LT_MANGLE_OPTION], [[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])]) # _LT_SET_OPTION(MACRO-NAME, OPTION-NAME) # --------------------------------------- # Set option OPTION-NAME for macro MACRO-NAME, and if there is a # matching handler defined, dispatch to it. Other OPTION-NAMEs are # saved as a flag. m4_define([_LT_SET_OPTION], [m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), _LT_MANGLE_DEFUN([$1], [$2]), [m4_warning([Unknown $1 option `$2'])])[]dnl ]) # _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET]) # ------------------------------------------------------------ # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. m4_define([_LT_IF_OPTION], [m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])]) # _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET) # ------------------------------------------------------- # Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME # are set. m4_define([_LT_UNLESS_OPTIONS], [m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option), [m4_define([$0_found])])])[]dnl m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3 ])[]dnl ]) # _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST) # ---------------------------------------- # OPTION-LIST is a space-separated list of Libtool options associated # with MACRO-NAME. If any OPTION has a matching handler declared with # LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about # the unknown option and exit. m4_defun([_LT_SET_OPTIONS], [# Set options m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), [_LT_SET_OPTION([$1], _LT_Option)]) m4_if([$1],[LT_INIT],[ dnl dnl Simply set some default values (i.e off) if boolean options were not dnl specified: _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no ]) _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no ]) dnl dnl If no reference was made to various pairs of opposing options, then dnl we run the default mode handler for the pair. For example, if neither dnl `shared' nor `disable-shared' was passed, we enable building of shared dnl archives by default: _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], [_LT_ENABLE_FAST_INSTALL]) ]) ])# _LT_SET_OPTIONS # _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME) # ----------------------------------------- m4_define([_LT_MANGLE_DEFUN], [[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])]) # LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE) # ----------------------------------------------- m4_define([LT_OPTION_DEFINE], [m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl ])# LT_OPTION_DEFINE # dlopen # ------ LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes ]) AU_DEFUN([AC_LIBTOOL_DLOPEN], [_LT_SET_OPTION([LT_INIT], [dlopen]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `dlopen' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], []) # win32-dll # --------- # Declare package support for building win32 dll's. LT_OPTION_DEFINE([LT_INIT], [win32-dll], [enable_win32_dll=yes case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) AC_CHECK_TOOL(AS, as, false) AC_CHECK_TOOL(DLLTOOL, dlltool, false) AC_CHECK_TOOL(OBJDUMP, objdump, false) ;; esac test -z "$AS" && AS=as _LT_DECL([], [AS], [1], [Assembler program])dnl test -z "$DLLTOOL" && DLLTOOL=dlltool _LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl test -z "$OBJDUMP" && OBJDUMP=objdump _LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl ])# win32-dll AU_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_REQUIRE([AC_CANONICAL_HOST])dnl _LT_SET_OPTION([LT_INIT], [win32-dll]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `win32-dll' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) # _LT_ENABLE_SHARED([DEFAULT]) # ---------------------------- # implement the --enable-shared flag, and supports the `shared' and # `disable-shared' LT_INIT options. # DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. m4_define([_LT_ENABLE_SHARED], [m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([shared], [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@], [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS="$lt_save_ifs" ;; esac], [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) _LT_DECL([build_libtool_libs], [enable_shared], [0], [Whether or not to build shared libraries]) ])# _LT_ENABLE_SHARED LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])]) # Old names: AC_DEFUN([AC_ENABLE_SHARED], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) ]) AC_DEFUN([AC_DISABLE_SHARED], [_LT_SET_OPTION([LT_INIT], [disable-shared]) ]) AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_ENABLE_SHARED], []) dnl AC_DEFUN([AM_DISABLE_SHARED], []) # _LT_ENABLE_STATIC([DEFAULT]) # ---------------------------- # implement the --enable-static flag, and support the `static' and # `disable-static' LT_INIT options. # DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. m4_define([_LT_ENABLE_STATIC], [m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([static], [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@], [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS="$lt_save_ifs" ;; esac], [enable_static=]_LT_ENABLE_STATIC_DEFAULT) _LT_DECL([build_old_libs], [enable_static], [0], [Whether or not to build static libraries]) ])# _LT_ENABLE_STATIC LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])]) # Old names: AC_DEFUN([AC_ENABLE_STATIC], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) ]) AC_DEFUN([AC_DISABLE_STATIC], [_LT_SET_OPTION([LT_INIT], [disable-static]) ]) AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_ENABLE_STATIC], []) dnl AC_DEFUN([AM_DISABLE_STATIC], []) # _LT_ENABLE_FAST_INSTALL([DEFAULT]) # ---------------------------------- # implement the --enable-fast-install flag, and support the `fast-install' # and `disable-fast-install' LT_INIT options. # DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. m4_define([_LT_ENABLE_FAST_INSTALL], [m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([fast-install], [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS="$lt_save_ifs" ;; esac], [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) _LT_DECL([fast_install], [enable_fast_install], [0], [Whether or not to optimize for fast installation])dnl ])# _LT_ENABLE_FAST_INSTALL LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])]) # Old names: AU_DEFUN([AC_ENABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `fast-install' option into LT_INIT's first parameter.]) ]) AU_DEFUN([AC_DISABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], [disable-fast-install]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `disable-fast-install' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) # _LT_WITH_PIC([MODE]) # -------------------- # implement the --with-pic flag, and support the `pic-only' and `no-pic' # LT_INIT options. # MODE is either `yes' or `no'. If omitted, it defaults to `both'. m4_define([_LT_WITH_PIC], [AC_ARG_WITH([pic], [AS_HELP_STRING([--with-pic@<:@=PKGS@:>@], [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], [lt_p=${PACKAGE-default} case $withval in yes|no) pic_mode=$withval ;; *) pic_mode=default # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for lt_pkg in $withval; do IFS="$lt_save_ifs" if test "X$lt_pkg" = "X$lt_p"; then pic_mode=yes fi done IFS="$lt_save_ifs" ;; esac], [pic_mode=default]) test -z "$pic_mode" && pic_mode=m4_default([$1], [default]) _LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl ])# _LT_WITH_PIC LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])]) LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])]) # Old name: AU_DEFUN([AC_LIBTOOL_PICMODE], [_LT_SET_OPTION([LT_INIT], [pic-only]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `pic-only' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_PICMODE], []) m4_define([_LTDL_MODE], []) LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive], [m4_define([_LTDL_MODE], [nonrecursive])]) LT_OPTION_DEFINE([LTDL_INIT], [recursive], [m4_define([_LTDL_MODE], [recursive])]) LT_OPTION_DEFINE([LTDL_INIT], [subproject], [m4_define([_LTDL_MODE], [subproject])]) m4_define([_LTDL_TYPE], []) LT_OPTION_DEFINE([LTDL_INIT], [installable], [m4_define([_LTDL_TYPE], [installable])]) LT_OPTION_DEFINE([LTDL_INIT], [convenience], [m4_define([_LTDL_TYPE], [convenience])]) # ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- # # Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. # Written by Gary V. Vaughan, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 6 ltsugar.m4 # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) # lt_join(SEP, ARG1, [ARG2...]) # ----------------------------- # Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their # associated separator. # Needed until we can rely on m4_join from Autoconf 2.62, since all earlier # versions in m4sugar had bugs. m4_define([lt_join], [m4_if([$#], [1], [], [$#], [2], [[$2]], [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])]) m4_define([_lt_join], [m4_if([$#$2], [2], [], [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])]) # lt_car(LIST) # lt_cdr(LIST) # ------------ # Manipulate m4 lists. # These macros are necessary as long as will still need to support # Autoconf-2.59 which quotes differently. m4_define([lt_car], [[$1]]) m4_define([lt_cdr], [m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], [$#], 1, [], [m4_dquote(m4_shift($@))])]) m4_define([lt_unquote], $1) # lt_append(MACRO-NAME, STRING, [SEPARATOR]) # ------------------------------------------ # Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'. # Note that neither SEPARATOR nor STRING are expanded; they are appended # to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). # No SEPARATOR is output if MACRO-NAME was previously undefined (different # than defined and empty). # # This macro is needed until we can rely on Autoconf 2.62, since earlier # versions of m4sugar mistakenly expanded SEPARATOR but not STRING. m4_define([lt_append], [m4_define([$1], m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])]) # lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...]) # ---------------------------------------------------------- # Produce a SEP delimited list of all paired combinations of elements of # PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list # has the form PREFIXmINFIXSUFFIXn. # Needed until we can rely on m4_combine added in Autoconf 2.62. m4_define([lt_combine], [m4_if(m4_eval([$# > 3]), [1], [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl [[m4_foreach([_Lt_prefix], [$2], [m4_foreach([_Lt_suffix], ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) # lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) # ----------------------------------------------------------------------- # Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited # by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. m4_define([lt_if_append_uniq], [m4_ifdef([$1], [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], [lt_append([$1], [$2], [$3])$4], [$5])], [lt_append([$1], [$2], [$3])$4])]) # lt_dict_add(DICT, KEY, VALUE) # ----------------------------- m4_define([lt_dict_add], [m4_define([$1($2)], [$3])]) # lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) # -------------------------------------------- m4_define([lt_dict_add_subkey], [m4_define([$1($2:$3)], [$4])]) # lt_dict_fetch(DICT, KEY, [SUBKEY]) # ---------------------------------- m4_define([lt_dict_fetch], [m4_ifval([$3], m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) # lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) # ----------------------------------------------------------------- m4_define([lt_if_dict_fetch], [m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], [$5], [$6])]) # lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) # -------------------------------------------------------------- m4_define([lt_dict_filter], [m4_if([$5], [], [], [lt_join(m4_quote(m4_default([$4], [[, ]])), lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl ]) # ltversion.m4 -- version numbers -*- Autoconf -*- # # Copyright (C) 2004 Free Software Foundation, Inc. # Written by Scott James Remnant, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # @configure_input@ # serial 3337 ltversion.m4 # This file is part of GNU Libtool m4_define([LT_PACKAGE_VERSION], [2.4.2]) m4_define([LT_PACKAGE_REVISION], [1.3337]) AC_DEFUN([LTVERSION_VERSION], [macro_version='2.4.2' macro_revision='1.3337' _LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) _LT_DECL(, macro_revision, 0) ]) # lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- # # Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc. # Written by Scott James Remnant, 2004. # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 5 lt~obsolete.m4 # These exist entirely to fool aclocal when bootstrapping libtool. # # In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN) # which have later been changed to m4_define as they aren't part of the # exported API, or moved to Autoconf or Automake where they belong. # # The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN # in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us # using a macro with the same name in our local m4/libtool.m4 it'll # pull the old libtool.m4 in (it doesn't see our shiny new m4_define # and doesn't know about Autoconf macros at all.) # # So we provide this file, which has a silly filename so it's always # included after everything else. This provides aclocal with the # AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything # because those macros already exist, or will be overwritten later. # We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. # # Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. # Yes, that means every name once taken will need to remain here until # we give up compatibility with versions before 1.7, at which point # we need to keep only those names which we still refer to. # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])]) m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])]) m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])]) m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])]) m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])]) m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])]) m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])]) m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])]) m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])]) m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])]) m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])]) m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])]) m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])]) m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])]) m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])]) m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])]) m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])]) m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])]) m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])]) m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])]) m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])]) m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])]) m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])]) m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])]) m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])]) m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])]) m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])]) m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])]) m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])]) m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])]) m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])]) m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])]) m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])]) m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])]) m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])]) m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])]) m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])]) m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])]) m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])]) m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])]) m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])]) m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])]) m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])]) m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])]) m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])]) m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])]) m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])]) # Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008, 2011 Free Software # Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 1 # AM_AUTOMAKE_VERSION(VERSION) # ---------------------------- # Automake X.Y traces this macro to ensure aclocal.m4 has been # generated from the m4 files accompanying Automake X.Y. # (This private macro should not be called outside this file.) AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.11' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. m4_if([$1], [1.11.3], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) # _AM_AUTOCONF_VERSION(VERSION) # ----------------------------- # aclocal traces this macro to find the Autoconf version. # This is a private macro too. Using m4_define simplifies # the logic in aclocal, which can simply ignore this definition. m4_define([_AM_AUTOCONF_VERSION], []) # AM_SET_CURRENT_AUTOMAKE_VERSION # ------------------------------- # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.11.3])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) # AM_AUX_DIR_EXPAND -*- Autoconf -*- # Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 1 # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets # $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to # `$srcdir', `$srcdir/..', or `$srcdir/../..'. # # Of course, Automake must honor this variable whenever it calls a # tool from the auxiliary directory. The problem is that $srcdir (and # therefore $ac_aux_dir as well) can be either absolute or relative, # depending on how configure is run. This is pretty annoying, since # it makes $ac_aux_dir quite unusable in subdirectories: in the top # source directory, any form will work fine, but in subdirectories a # relative path needs to be adjusted first. # # $ac_aux_dir/missing # fails when called from a subdirectory if $ac_aux_dir is relative # $top_srcdir/$ac_aux_dir/missing # fails if $ac_aux_dir is absolute, # fails when called from a subdirectory in a VPATH build with # a relative $ac_aux_dir # # The reason of the latter failure is that $top_srcdir and $ac_aux_dir # are both prefixed by $srcdir. In an in-source build this is usually # harmless because $srcdir is `.', but things will broke when you # start a VPATH build or use an absolute $srcdir. # # So we could use something similar to $top_srcdir/$ac_aux_dir/missing, # iff we strip the leading $srcdir from $ac_aux_dir. That would be: # am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` # and then we would define $MISSING as # MISSING="\${SHELL} $am_aux_dir/missing" # This will work as long as MISSING is not called from configure, because # unfortunately $(top_srcdir) has no meaning in configure. # However there are other variables, like CC, which are often used in # configure, and could therefore not use this "fixed" $ac_aux_dir. # # Another solution, used here, is to always expand $ac_aux_dir to an # absolute PATH. The drawback is that using absolute paths prevent a # configured tree to be moved without reconfiguration. AC_DEFUN([AM_AUX_DIR_EXPAND], [dnl Rely on autoconf to set up CDPATH properly. AC_PREREQ([2.50])dnl # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` ]) # AM_CONDITIONAL -*- Autoconf -*- # Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 9 # AM_CONDITIONAL(NAME, SHELL-CONDITION) # ------------------------------------- # Define a conditional. AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ(2.52)dnl ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl AC_SUBST([$1_TRUE])dnl AC_SUBST([$1_FALSE])dnl _AM_SUBST_NOTMAKE([$1_TRUE])dnl _AM_SUBST_NOTMAKE([$1_FALSE])dnl m4_define([_AM_COND_VALUE_$1], [$2])dnl if $2; then $1_TRUE= $1_FALSE='#' else $1_TRUE='#' $1_FALSE= fi AC_CONFIG_COMMANDS_PRE( [if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then AC_MSG_ERROR([[conditional "$1" was never defined. Usually this means the macro was only invoked conditionally.]]) fi])]) # Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009, # 2010, 2011 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 12 # There are a few dirty hacks below to avoid letting `AC_PROG_CC' be # written in clear, in which case automake, when reading aclocal.m4, # will think it sees a *use*, and therefore will trigger all it's # C support machinery. Also note that it means that autoscan, seeing # CC etc. in the Makefile, will ask for an AC_PROG_CC use... # _AM_DEPENDENCIES(NAME) # ---------------------- # See how the compiler implements dependency checking. # NAME is "CC", "CXX", "GCJ", or "OBJC". # We try a few techniques and use that to set a single cache variable. # # We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was # modified to invoke _AM_DEPENDENCIES(CC); we would have a circular # dependency, and given that the user is not expected to run this macro, # just rely on AC_PROG_CC. AC_DEFUN([_AM_DEPENDENCIES], [AC_REQUIRE([AM_SET_DEPDIR])dnl AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl AC_REQUIRE([AM_MAKE_INCLUDE])dnl AC_REQUIRE([AM_DEP_TRACK])dnl ifelse([$1], CC, [depcc="$CC" am_compiler_list=], [$1], CXX, [depcc="$CXX" am_compiler_list=], [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], [$1], UPC, [depcc="$UPC" am_compiler_list=], [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], [depcc="$$1" am_compiler_list=]) AC_CACHE_CHECK([dependency style of $depcc], [am_cv_$1_dependencies_compiler_type], [if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_$1_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` fi am__universal=false m4_case([$1], [CC], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac], [CXX], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac]) for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok `-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_$1_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_$1_dependencies_compiler_type=none fi ]) AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) AM_CONDITIONAL([am__fastdep$1], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) ]) # AM_SET_DEPDIR # ------------- # Choose a directory name for dependency files. # This macro is AC_REQUIREd in _AM_DEPENDENCIES AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl ]) # AM_DEP_TRACK # ------------ AC_DEFUN([AM_DEP_TRACK], [AC_ARG_ENABLE(dependency-tracking, [ --disable-dependency-tracking speeds up one-time build --enable-dependency-tracking do not reject slow dependency extractors]) if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) AC_SUBST([AMDEPBACKSLASH])dnl _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl AC_SUBST([am__nodep])dnl _AM_SUBST_NOTMAKE([am__nodep])dnl ]) # Generate code to set up dependency tracking. -*- Autoconf -*- # Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. #serial 5 # _AM_OUTPUT_DEPENDENCY_COMMANDS # ------------------------------ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [{ # Autoconf 2.62 quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named `Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`AS_DIRNAME("$mf")` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running `make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # When using ansi2knr, U may be empty or an underscore; expand it U=`sed -n 's/^U = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`AS_DIRNAME(["$file"])` AS_MKDIR_P([$dirpart/$fdir]) # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ])# _AM_OUTPUT_DEPENDENCY_COMMANDS # AM_OUTPUT_DEPENDENCY_COMMANDS # ----------------------------- # This macro should only be invoked once -- use via AC_REQUIRE. # # This code is only required when automatic dependency tracking # is enabled. FIXME. This creates each `.P' file that we will # need in order to bootstrap the dependency handling code. AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], [AC_CONFIG_COMMANDS([depfiles], [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) ]) # Do all the work for Automake. -*- Autoconf -*- # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, # 2005, 2006, 2008, 2009 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 16 # This macro actually does too much. Some checks are only needed if # your package does certain things. But this isn't really a big deal. # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) # AM_INIT_AUTOMAKE([OPTIONS]) # ----------------------------------------------- # The call with PACKAGE and VERSION arguments is the old style # call (pre autoconf-2.50), which is being phased out. PACKAGE # and VERSION should now be passed to AC_INIT and removed from # the call to AM_INIT_AUTOMAKE. # We support both call styles for the transition. After # the next Automake release, Autoconf can make the AC_INIT # arguments mandatory, and then we can depend on a new Autoconf # release and drop the old call support. AC_DEFUN([AM_INIT_AUTOMAKE], [AC_PREREQ([2.62])dnl dnl Autoconf wants to disallow AM_ names. We explicitly allow dnl the ones we care about. m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl AC_REQUIRE([AC_PROG_INSTALL])dnl if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl # test to see if srcdir already configured if test -f $srcdir/config.status; then AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi AC_SUBST([CYGPATH_W]) # Define the identity of the package. dnl Distinguish between old-style and new-style calls. m4_ifval([$2], [m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl AC_SUBST([PACKAGE], [$1])dnl AC_SUBST([VERSION], [$2])], [_AM_SET_OPTIONS([$1])dnl dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,, [m4_fatal([AC_INIT should be called with package and version arguments])])dnl AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl _AM_IF_OPTION([no-define],, [AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl # Some tools Automake needs. AC_REQUIRE([AM_SANITY_CHECK])dnl AC_REQUIRE([AC_ARG_PROGRAM])dnl AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) AM_MISSING_PROG(AUTOCONF, autoconf) AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) AM_MISSING_PROG(AUTOHEADER, autoheader) AM_MISSING_PROG(MAKEINFO, makeinfo) AC_REQUIRE([AM_PROG_INSTALL_SH])dnl AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl AC_REQUIRE([AM_PROG_MKDIR_P])dnl # We need awk for the "check" target. The system "awk" is bad on # some platforms. AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AM_SET_LEADING_DOT])dnl _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])])]) _AM_IF_OPTION([no-dependencies],, [AC_PROVIDE_IFELSE([AC_PROG_CC], [_AM_DEPENDENCIES(CC)], [define([AC_PROG_CC], defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], [_AM_DEPENDENCIES(CXX)], [define([AC_PROG_CXX], defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJC], [_AM_DEPENDENCIES(OBJC)], [define([AC_PROG_OBJC], defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl ]) _AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl dnl The `parallel-tests' driver may need to know about EXEEXT, so add the dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This macro dnl is hooked onto _AC_COMPILER_EXEEXT early, see below. AC_CONFIG_COMMANDS_PRE(dnl [m4_provide_if([_AM_COMPILER_EXEEXT], [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl ]) dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion. Do not dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further dnl mangled by Autoconf and run in a shell conditional statement. m4_define([_AC_COMPILER_EXEEXT], m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) # When config.status generates a header, we must update the stamp-h file. # This file resides in the same directory as the config header # that is generated. The stamp files are numbered to have different names. # Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the # loop where config.status creates the headers, so we can generate # our stamp files there. AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], [# Compute $1's index in $config_headers. _am_arg=$1 _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) # Copyright (C) 2001, 2003, 2005, 2008, 2011 Free Software Foundation, # Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 1 # AM_PROG_INSTALL_SH # ------------------ # Define $install_sh. AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl if test x"${install_sh}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi AC_SUBST(install_sh)]) # Copyright (C) 2003, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 2 # Check whether the underlying file-system supports filenames # with a leading dot. For instance MS-DOS doesn't. AC_DEFUN([AM_SET_LEADING_DOT], [rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null AC_SUBST([am__leading_dot])]) # Add --enable-maintainer-mode option to configure. -*- Autoconf -*- # From Jim Meyering # Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2008, # 2011 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 5 # AM_MAINTAINER_MODE([DEFAULT-MODE]) # ---------------------------------- # Control maintainer-specific portions of Makefiles. # Default is to disable them, unless `enable' is passed literally. # For symmetry, `disable' may be passed as well. Anyway, the user # can override the default with the --enable/--disable switch. AC_DEFUN([AM_MAINTAINER_MODE], [m4_case(m4_default([$1], [disable]), [enable], [m4_define([am_maintainer_other], [disable])], [disable], [m4_define([am_maintainer_other], [enable])], [m4_define([am_maintainer_other], [enable]) m4_warn([syntax], [unexpected argument to AM@&t@_MAINTAINER_MODE: $1])]) AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles]) dnl maintainer-mode's default is 'disable' unless 'enable' is passed AC_ARG_ENABLE([maintainer-mode], [ --][am_maintainer_other][-maintainer-mode am_maintainer_other make rules and dependencies not useful (and sometimes confusing) to the casual installer], [USE_MAINTAINER_MODE=$enableval], [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes])) AC_MSG_RESULT([$USE_MAINTAINER_MODE]) AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes]) MAINT=$MAINTAINER_MODE_TRUE AC_SUBST([MAINT])dnl ] ) AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE]) # Check to see how 'make' treats includes. -*- Autoconf -*- # Copyright (C) 2001, 2002, 2003, 2005, 2009 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 4 # AM_MAKE_INCLUDE() # ----------------- # Check to see how make treats includes. AC_DEFUN([AM_MAKE_INCLUDE], [am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. AC_MSG_CHECKING([for style of include used by $am_make]) am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from `make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi AC_SUBST([am__include]) AC_SUBST([am__quote]) AC_MSG_RESULT([$_am_result]) rm -f confinc confmf ]) # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- # Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 6 # AM_MISSING_PROG(NAME, PROGRAM) # ------------------------------ AC_DEFUN([AM_MISSING_PROG], [AC_REQUIRE([AM_MISSING_HAS_RUN]) $1=${$1-"${am_missing_run}$2"} AC_SUBST($1)]) # AM_MISSING_HAS_RUN # ------------------ # Define MISSING if not defined so far and test if it supports --run. # If it does, set am_missing_run to use it, otherwise, to nothing. AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([missing])dnl if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " else am_missing_run= AC_MSG_WARN([`missing' script is too old or missing]) fi ]) # Copyright (C) 2003, 2004, 2005, 2006, 2011 Free Software Foundation, # Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 1 # AM_PROG_MKDIR_P # --------------- # Check for `mkdir -p'. AC_DEFUN([AM_PROG_MKDIR_P], [AC_PREREQ([2.60])dnl AC_REQUIRE([AC_PROG_MKDIR_P])dnl dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P, dnl while keeping a definition of mkdir_p for backward compatibility. dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile. dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of dnl Makefile.ins that do not define MKDIR_P, so we do our own dnl adjustment using top_builddir (which is defined more often than dnl MKDIR_P). AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl case $mkdir_p in [[\\/$]]* | ?:[[\\/]]*) ;; */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; esac ]) # Helper functions for option handling. -*- Autoconf -*- # Copyright (C) 2001, 2002, 2003, 2005, 2008, 2010 Free Software # Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 5 # _AM_MANGLE_OPTION(NAME) # ----------------------- AC_DEFUN([_AM_MANGLE_OPTION], [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) # _AM_SET_OPTION(NAME) # -------------------- # Set option NAME. Presently that only means defining a flag for this option. AC_DEFUN([_AM_SET_OPTION], [m4_define(_AM_MANGLE_OPTION([$1]), 1)]) # _AM_SET_OPTIONS(OPTIONS) # ------------------------ # OPTIONS is a space-separated list of Automake options. AC_DEFUN([_AM_SET_OPTIONS], [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) # _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) # ------------------------------------------- # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) # Check to make sure that the build environment is sane. -*- Autoconf -*- # Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 5 # AM_SANITY_CHECK # --------------- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane]) # Just in case sleep 1 echo timestamp > conftest.file # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[[\\\"\#\$\&\'\`$am_lf]]*) AC_MSG_ERROR([unsafe absolute working directory name]);; esac case $srcdir in *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);; esac # Do `set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$[*]" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi rm -f conftest.file if test "$[*]" != "X $srcdir/configure conftest.file" \ && test "$[*]" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken alias in your environment]) fi test "$[2]" = conftest.file ) then # Ok. : else AC_MSG_ERROR([newly created file is older than distributed files! Check your system clock]) fi AC_MSG_RESULT(yes)]) # Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 1 # AM_PROG_INSTALL_STRIP # --------------------- # One issue with vendor `install' (even GNU) is that you can't # specify the program used to strip binaries. This is especially # annoying in cross-compiling environments, where the build's strip # is unlikely to handle the host's binaries. # Fortunately install-sh will honor a STRIPPROG variable, so we # always use install-sh in `make install-strip', and initialize # STRIPPROG with the value of the STRIP variable (set by the user). AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl # Installed binaries are usually stripped using `strip' when the user # run `make install-strip'. However `strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the `STRIP' environment variable to overrule this program. dnl Don't test for $cross_compiling = yes, because it might be `maybe'. if test "$cross_compiling" != no; then AC_CHECK_TOOL([STRIP], [strip], :) fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) # Copyright (C) 2006, 2008, 2010 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 3 # _AM_SUBST_NOTMAKE(VARIABLE) # --------------------------- # Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. # This macro is traced by Automake. AC_DEFUN([_AM_SUBST_NOTMAKE]) # AM_SUBST_NOTMAKE(VARIABLE) # -------------------------- # Public sister of _AM_SUBST_NOTMAKE. AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) # Check how to create a tarball. -*- Autoconf -*- # Copyright (C) 2004, 2005, 2012 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 2 # _AM_PROG_TAR(FORMAT) # -------------------- # Check how to create a tarball in format FORMAT. # FORMAT should be one of `v7', `ustar', or `pax'. # # Substitute a variable $(am__tar) that is a command # writing to stdout a FORMAT-tarball containing the directory # $tardir. # tardir=directory && $(am__tar) > result.tar # # Substitute a variable $(am__untar) that extract such # a tarball read from stdin. # $(am__untar) < result.tar AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AC_SUBST([AMTAR], ['$${TAR-tar}']) m4_if([$1], [v7], [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], [m4_case([$1], [ustar],, [pax],, [m4_fatal([Unknown tar format])]) AC_MSG_CHECKING([how to create a $1 tar archive]) # Loop over all known methods to create a tar archive until one works. _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' _am_tools=${am_cv_prog_tar_$1-$_am_tools} # Do not fold the above two line into one, because Tru64 sh and # Solaris sh will not grok spaces in the rhs of `-'. for _am_tool in $_am_tools do case $_am_tool in gnutar) for _am_tar in tar gnutar gtar; do AM_RUN_LOG([$_am_tar --version]) && break done am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' am__untar="$_am_tar -xf -" ;; plaintar) # Must skip GNU tar: if it does not support --format= it doesn't create # ustar tarball either. (tar --version) >/dev/null 2>&1 && continue am__tar='tar chf - "$$tardir"' am__tar_='tar chf - "$tardir"' am__untar='tar xf -' ;; pax) am__tar='pax -L -x $1 -w "$$tardir"' am__tar_='pax -L -x $1 -w "$tardir"' am__untar='pax -r' ;; cpio) am__tar='find "$$tardir" -print | cpio -o -H $1 -L' am__tar_='find "$tardir" -print | cpio -o -H $1 -L' am__untar='cpio -i -H $1 -d' ;; none) am__tar=false am__tar_=false am__untar=false ;; esac # If the value was cached, stop now. We just wanted to have am__tar # and am__untar set. test -n "${am_cv_prog_tar_$1}" && break # tar/untar a dummy directory, and stop if the command works rm -rf conftest.dir mkdir conftest.dir echo GrepMe > conftest.dir/file AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) rm -rf conftest.dir if test -s conftest.tar; then AM_RUN_LOG([$am__untar /dev/null 2>&1 && break fi done rm -rf conftest.dir AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) AC_MSG_RESULT([$am_cv_prog_tar_$1])]) AC_SUBST([am__tar]) AC_SUBST([am__untar]) ]) # _AM_PROG_TAR m4_include([acinclude.m4]) io_lib-1.14.6/io_lib_config.h0000644000031500020650000001277012617160100012711 00000000000000/* io_lib_config.h. Generated from io_lib_config.h.in by configure. */ /* io_lib_config.h.in. Generated from configure.in by autoheader. */ /* Define if building universal (internal helper macro) */ /* #undef AC_APPLE_UNIVERSAL_BUILD */ /* Define to 1 if you have the header file. */ #define HAVE_DLFCN_H 1 /* Define to 1 if you have the header file. */ #define HAVE_FCNTL_H 1 /* Define to 1 if you have the `fileno' function. */ #define HAVE_FILENO 1 /* Define to 1 if fseeko (and presumably ftello) exists and is declared. */ #define HAVE_FSEEKO 1 /* Define to 1 if you have the `fstat' function. */ #define HAVE_FSTAT 1 /* Define to 1 if you have the `fsync' function. */ #define HAVE_FSYNC 1 /* Define to 1 if you have the `getpagesize' function. */ #define HAVE_GETPAGESIZE 1 /* Define to 1 if you have the header file. */ #define HAVE_INTTYPES_H 1 /* Define to 1 if you have the libbz2 library. */ #define HAVE_LIBBZ2 1 /* Define to 1 if you have a functional curl library. */ #define HAVE_LIBCURL 1 /* Define to 1 if you have the liblzma library. */ #define HAVE_LIBLZMA 1 /* Define to 1 if you have the header file. */ #define HAVE_LIMITS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_MEMORY_H 1 /* Define to 1 if you have a working `mmap' system call. */ #define HAVE_MMAP 1 /* Define to 1 if you have the header file. */ #define HAVE_STDINT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STDLIB_H 1 /* Define to 1 if you have the `strdup' function. */ #define HAVE_STRDUP 1 /* Define to 1 if you have the header file. */ #define HAVE_STRINGS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STRING_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_PARAM_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_STAT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_TYPES_H 1 /* Define to 1 if you have that is POSIX.1 compatible. */ #define HAVE_SYS_WAIT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_UNISTD_H 1 /* Define to 1 if you have the va_copy() function. */ #define HAVE_VA_COPY 1 /* Define if zlib is installed */ #define HAVE_ZLIB 1 /* Defined if libcurl supports AsynchDNS */ /* #undef LIBCURL_FEATURE_ASYNCHDNS */ /* Defined if libcurl supports IDN */ #define LIBCURL_FEATURE_IDN 1 /* Defined if libcurl supports IPv6 */ #define LIBCURL_FEATURE_IPV6 1 /* Defined if libcurl supports KRB4 */ /* #undef LIBCURL_FEATURE_KRB4 */ /* Defined if libcurl supports libz */ #define LIBCURL_FEATURE_LIBZ 1 /* Defined if libcurl supports NTLM */ #define LIBCURL_FEATURE_NTLM 1 /* Defined if libcurl supports SSL */ #define LIBCURL_FEATURE_SSL 1 /* Defined if libcurl supports SSPI */ /* #undef LIBCURL_FEATURE_SSPI */ /* Defined if libcurl supports DICT */ #define LIBCURL_PROTOCOL_DICT 1 /* Defined if libcurl supports FILE */ #define LIBCURL_PROTOCOL_FILE 1 /* Defined if libcurl supports FTP */ #define LIBCURL_PROTOCOL_FTP 1 /* Defined if libcurl supports FTPS */ #define LIBCURL_PROTOCOL_FTPS 1 /* Defined if libcurl supports HTTP */ #define LIBCURL_PROTOCOL_HTTP 1 /* Defined if libcurl supports HTTPS */ #define LIBCURL_PROTOCOL_HTTPS 1 /* Defined if libcurl supports LDAP */ #define LIBCURL_PROTOCOL_LDAP 1 /* Defined if libcurl supports TELNET */ #define LIBCURL_PROTOCOL_TELNET 1 /* Defined if libcurl supports TFTP */ #define LIBCURL_PROTOCOL_TFTP 1 /* Define to the sub-directory in which libtool stores uninstalled libraries. */ #define LT_OBJDIR ".libs/" /* Name of package */ #define PACKAGE "io_lib" /* Define to the address where bug reports for this package should be sent. */ #define PACKAGE_BUGREPORT "" /* Define to the full name of this package. */ #define PACKAGE_NAME "io_lib" /* Define to the full name and version of this package. */ #define PACKAGE_STRING "io_lib 1.14.6" /* Define to the one symbol short name of this package. */ #define PACKAGE_TARNAME "io_lib" /* Define to the home page for this package. */ #define PACKAGE_URL "" /* Define to the version of this package. */ #define PACKAGE_VERSION "1.14.6" /* The size of `int', as computed by sizeof. */ #define SIZEOF_INT 4 /* The size of `long', as computed by sizeof. */ #define SIZEOF_LONG 8 /* The size of `short', as computed by sizeof. */ #define SIZEOF_SHORT 2 /* Define to 1 if you have the ANSI C header files. */ #define STDC_HEADERS 1 /* Version number of package */ #define VERSION "1.14.6" /* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most significant byte first (like Motorola and SPARC, unlike Intel). */ #if defined AC_APPLE_UNIVERSAL_BUILD # if defined __BIG_ENDIAN__ # define WORDS_BIGENDIAN 1 # endif #else # ifndef WORDS_BIGENDIAN /* # undef WORDS_BIGENDIAN */ # endif #endif /* Number of bits in a file offset, on hosts where this is settable. */ /* #undef _FILE_OFFSET_BITS */ /* Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2). */ /* #undef _LARGEFILE_SOURCE */ /* Define for large files, on AIX-style hosts. */ /* #undef _LARGE_FILES */ /* Define curl_free() as free() if our version of curl lacks curl_free. */ /* #undef curl_free */ /* Define to `__inline__' or `__inline' if that's what the C compiler calls it, or to nothing if 'inline' is not supported under any name. */ #ifndef __cplusplus /* #undef inline */ #endif /* Define to `int' if does not define. */ /* #undef mode_t */ io_lib-1.14.6/Makefile.am0000644000031500020650000000701512354177667012036 00000000000000# Copyright (c) 2003-2010, 2013 Genome Research Ltd. # Author(s): James Bonfield # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # # 1. Redistributions of source code must retain the above copyright notice, # this list of conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger # Institute nor the names of its contributors may be used to endorse # or promote products derived from this software without specific # prior written permission. # # THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS # IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED # TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A # PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH # LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # AUTOMAKE_OPTIONS = foreign no-dependencies SUBDIRS = io_lib progs tests man_MANS = \ man/man1/srf_index_hash.1 \ man/man1/srf_info.1 \ man/man1/srf_list.1 \ man/man1/srf2fasta.1 \ man/man1/srf2fastq.1 \ man/man1/scramble.1 \ man/man3/read_scf_header.3 \ man/man3/read_allocate.3 \ man/man3/ExperimentFile.3 \ man/man3/write_reading.3 \ man/man3/write_scf.3 \ man/man3/read_deallocate.3 \ man/man3/fwrite_reading.3 \ man/man3/read2scf.3 \ man/man3/scf2read.3 \ man/man3/fwrite_scf.3 \ man/man3/write_scf_header.3 \ man/man3/read_reading.3 \ man/man3/read_scf.3 \ man/man3/exp2read.3 \ man/man3/fread_reading.3 \ man/man3/read2exp.3 \ man/man3/fread_scf.3 \ man/man4/Read.4 pkginclude_HEADERS = \ io_lib/Read.h \ io_lib/scf_extras.h \ io_lib/translate.h \ io_lib/abi.h \ io_lib/fpoint.h \ io_lib/seqIOABI.h \ io_lib/alf.h \ io_lib/expFileIO.h \ io_lib/plain.h \ io_lib/scf.h \ io_lib/sff.h \ io_lib/array.h \ io_lib/compress.h \ io_lib/error.h \ io_lib/mach-io.h \ io_lib/misc.h \ io_lib/open_trace_file.h \ io_lib/tar_format.h \ io_lib/traceType.h \ io_lib/xalloc.h \ io_lib/mFILE.h \ io_lib/stdio_hack.h \ io_lib/vlen.h \ io_lib/hash_table.h \ io_lib/jenkins_lookup3.h \ io_lib/os.h \ io_lib/compression.h \ io_lib/ztr.h \ io_lib/deflate_interlaced.h \ io_lib/srf.h \ io_lib/pooled_alloc.h \ io_lib/cram.h \ io_lib/cram_structs.h \ io_lib/cram_io.h \ io_lib/cram_encode.h \ io_lib/cram_decode.h \ io_lib/cram_codecs.h \ io_lib/cram_index.h \ io_lib/cram_stats.h \ io_lib/zfio.h \ io_lib/scram.h \ io_lib/bam.h \ io_lib/sam_header.h \ io_lib/dstring.h \ io_lib/string_alloc.h \ io_lib_config.h \ io_lib/md5.h \ io_lib/thread_pool.h \ io_lib/binning.h bin_SCRIPTS = io_lib-config EXTRA_DIST = README COPYRIGHT ChangeLog CHANGES man options.mk bootstrap \ docs/ZTR_format docs/Hash_File_Format io_lib-config.in io_lib/os.h.in dist-hook: rm -rf `find $(distdir)/man -name .svn` io_lib-1.14.6/Makefile.in0000644000031500020650000011023612617160066012032 00000000000000# Makefile.in generated by automake 1.11.3 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = . DIST_COMMON = README $(am__configure_deps) $(pkginclude_HEADERS) \ $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(srcdir)/io_lib-config.in $(srcdir)/io_lib_config.h.in \ $(top_srcdir)/configure ChangeLog compile config.guess \ config.sub depcomp install-sh ltmain.sh missing ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno config.status.lineno mkinstalldirs = $(install_sh) -d CONFIG_HEADER = io_lib_config.h CONFIG_CLEAN_FILES = io_lib-config CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)" \ "$(DESTDIR)$(man3dir)" "$(DESTDIR)$(man4dir)" \ "$(DESTDIR)$(pkgincludedir)" SCRIPTS = $(bin_SCRIPTS) depcomp = am__depfiles_maybe = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-dvi-recursive install-exec-recursive \ install-html-recursive install-info-recursive \ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive man1dir = $(mandir)/man1 man3dir = $(mandir)/man3 man4dir = $(mandir)/man4 NROFF = nroff MANS = $(man_MANS) HEADERS = $(pkginclude_HEADERS) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ distdir dist dist-all distcheck ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) am__remove_distdir = \ if test -d "$(distdir)"; then \ find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ && rm -rf "$(distdir)" \ || { sleep 5 && rm -rf "$(distdir)"; }; \ else :; fi am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" DIST_ARCHIVES = $(distdir).tar.gz GZIP_ENV = --best distuninstallcheck_listfiles = find . -type f -print am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' distcleancheck_listfiles = find . -type f -print ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBCURL = @LIBCURL@ LIBCURL_CPPFLAGS = @LIBCURL_CPPFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBZ = @LIBZ@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ SED = @SED@ SET_CRAM_IO_CUSTOM_BUFFERING = @SET_CRAM_IO_CUSTOM_BUFFERING@ SET_ENDIAN = @SET_ENDIAN@ SET_MAKE = @SET_MAKE@ SET_STDIO_EXT = @SET_STDIO_EXT@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ VERS_AGE = @VERS_AGE@ VERS_CURRENT = @VERS_CURRENT@ VERS_REVISION = @VERS_REVISION@ _libcurl_config = @_libcurl_config@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # Copyright (c) 2003-2010, 2013 Genome Research Ltd. # Author(s): James Bonfield # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # # 1. Redistributions of source code must retain the above copyright notice, # this list of conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger # Institute nor the names of its contributors may be used to endorse # or promote products derived from this software without specific # prior written permission. # # THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS # IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED # TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A # PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH # LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # AUTOMAKE_OPTIONS = foreign no-dependencies SUBDIRS = io_lib progs tests man_MANS = \ man/man1/srf_index_hash.1 \ man/man1/srf_info.1 \ man/man1/srf_list.1 \ man/man1/srf2fasta.1 \ man/man1/srf2fastq.1 \ man/man1/scramble.1 \ man/man3/read_scf_header.3 \ man/man3/read_allocate.3 \ man/man3/ExperimentFile.3 \ man/man3/write_reading.3 \ man/man3/write_scf.3 \ man/man3/read_deallocate.3 \ man/man3/fwrite_reading.3 \ man/man3/read2scf.3 \ man/man3/scf2read.3 \ man/man3/fwrite_scf.3 \ man/man3/write_scf_header.3 \ man/man3/read_reading.3 \ man/man3/read_scf.3 \ man/man3/exp2read.3 \ man/man3/fread_reading.3 \ man/man3/read2exp.3 \ man/man3/fread_scf.3 \ man/man4/Read.4 pkginclude_HEADERS = \ io_lib/Read.h \ io_lib/scf_extras.h \ io_lib/translate.h \ io_lib/abi.h \ io_lib/fpoint.h \ io_lib/seqIOABI.h \ io_lib/alf.h \ io_lib/expFileIO.h \ io_lib/plain.h \ io_lib/scf.h \ io_lib/sff.h \ io_lib/array.h \ io_lib/compress.h \ io_lib/error.h \ io_lib/mach-io.h \ io_lib/misc.h \ io_lib/open_trace_file.h \ io_lib/tar_format.h \ io_lib/traceType.h \ io_lib/xalloc.h \ io_lib/mFILE.h \ io_lib/stdio_hack.h \ io_lib/vlen.h \ io_lib/hash_table.h \ io_lib/jenkins_lookup3.h \ io_lib/os.h \ io_lib/compression.h \ io_lib/ztr.h \ io_lib/deflate_interlaced.h \ io_lib/srf.h \ io_lib/pooled_alloc.h \ io_lib/cram.h \ io_lib/cram_structs.h \ io_lib/cram_io.h \ io_lib/cram_encode.h \ io_lib/cram_decode.h \ io_lib/cram_codecs.h \ io_lib/cram_index.h \ io_lib/cram_stats.h \ io_lib/zfio.h \ io_lib/scram.h \ io_lib/bam.h \ io_lib/sam_header.h \ io_lib/dstring.h \ io_lib/string_alloc.h \ io_lib_config.h \ io_lib/md5.h \ io_lib/thread_pool.h \ io_lib/binning.h bin_SCRIPTS = io_lib-config EXTRA_DIST = README COPYRIGHT ChangeLog CHANGES man options.mk bootstrap \ docs/ZTR_format docs/Hash_File_Format io_lib-config.in io_lib/os.h.in all: io_lib_config.h $(MAKE) $(AM_MAKEFLAGS) all-recursive .SUFFIXES: am--refresh: Makefile @: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \ $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ echo ' $(SHELL) ./config.status'; \ $(SHELL) ./config.status;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) $(am__cd) $(srcdir) && $(AUTOCONF) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) $(am__aclocal_m4_deps): io_lib_config.h: stamp-h1 @if test ! -f $@; then rm -f stamp-h1; else :; fi @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) stamp-h1; else :; fi stamp-h1: $(srcdir)/io_lib_config.h.in $(top_builddir)/config.status @rm -f stamp-h1 cd $(top_builddir) && $(SHELL) ./config.status io_lib_config.h $(srcdir)/io_lib_config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) rm -f stamp-h1 touch $@ distclean-hdr: -rm -f io_lib_config.h stamp-h1 io_lib-config: $(top_builddir)/config.status $(srcdir)/io_lib-config.in cd $(top_builddir) && $(SHELL) ./config.status $@ install-binSCRIPTS: $(bin_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)" @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ } \ ; done uninstall-binSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ dir='$(DESTDIR)$(bindir)'; $(am__uninstall_files_from_dir) mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs distclean-libtool: -rm -f libtool config.lt install-man1: $(man_MANS) @$(NORMAL_INSTALL) test -z "$(man1dir)" || $(MKDIR_P) "$(DESTDIR)$(man1dir)" @list=''; test -n "$(man1dir)" || exit 0; \ { for i in $$list; do echo "$$i"; done; \ l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ sed -n '/\.1[a-z]*$$/p'; \ } | while read p; do \ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; echo "$$p"; \ done | \ sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ sed 'N;N;s,\n, ,g' | { \ list=; while read file base inst; do \ if test "$$base" = "$$inst"; then list="$$list $$file"; else \ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \ fi; \ done; \ for i in $$list; do echo "$$i"; done | $(am__base_list) | \ while read files; do \ test -z "$$files" || { \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \ done; } uninstall-man1: @$(NORMAL_UNINSTALL) @list=''; test -n "$(man1dir)" || exit 0; \ files=`{ for i in $$list; do echo "$$i"; done; \ l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ sed -n '/\.1[a-z]*$$/p'; \ } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir) install-man3: $(man_MANS) @$(NORMAL_INSTALL) test -z "$(man3dir)" || $(MKDIR_P) "$(DESTDIR)$(man3dir)" @list=''; test -n "$(man3dir)" || exit 0; \ { for i in $$list; do echo "$$i"; done; \ l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ sed -n '/\.3[a-z]*$$/p'; \ } | while read p; do \ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; echo "$$p"; \ done | \ sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^3][0-9a-z]*$$,3,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ sed 'N;N;s,\n, ,g' | { \ list=; while read file base inst; do \ if test "$$base" = "$$inst"; then list="$$list $$file"; else \ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man3dir)/$$inst'"; \ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man3dir)/$$inst" || exit $$?; \ fi; \ done; \ for i in $$list; do echo "$$i"; done | $(am__base_list) | \ while read files; do \ test -z "$$files" || { \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man3dir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(man3dir)" || exit $$?; }; \ done; } uninstall-man3: @$(NORMAL_UNINSTALL) @list=''; test -n "$(man3dir)" || exit 0; \ files=`{ for i in $$list; do echo "$$i"; done; \ l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ sed -n '/\.3[a-z]*$$/p'; \ } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^3][0-9a-z]*$$,3,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ dir='$(DESTDIR)$(man3dir)'; $(am__uninstall_files_from_dir) install-man4: $(man_MANS) @$(NORMAL_INSTALL) test -z "$(man4dir)" || $(MKDIR_P) "$(DESTDIR)$(man4dir)" @list=''; test -n "$(man4dir)" || exit 0; \ { for i in $$list; do echo "$$i"; done; \ l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ sed -n '/\.4[a-z]*$$/p'; \ } | while read p; do \ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; echo "$$p"; \ done | \ sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^4][0-9a-z]*$$,4,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ sed 'N;N;s,\n, ,g' | { \ list=; while read file base inst; do \ if test "$$base" = "$$inst"; then list="$$list $$file"; else \ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man4dir)/$$inst'"; \ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man4dir)/$$inst" || exit $$?; \ fi; \ done; \ for i in $$list; do echo "$$i"; done | $(am__base_list) | \ while read files; do \ test -z "$$files" || { \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man4dir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(man4dir)" || exit $$?; }; \ done; } uninstall-man4: @$(NORMAL_UNINSTALL) @list=''; test -n "$(man4dir)" || exit 0; \ files=`{ for i in $$list; do echo "$$i"; done; \ l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ sed -n '/\.4[a-z]*$$/p'; \ } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^4][0-9a-z]*$$,4,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ dir='$(DESTDIR)$(man4dir)'; $(am__uninstall_files_from_dir) install-pkgincludeHEADERS: $(pkginclude_HEADERS) @$(NORMAL_INSTALL) test -z "$(pkgincludedir)" || $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ done uninstall-pkgincludeHEADERS: @$(NORMAL_UNINSTALL) @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" $(RECURSIVE_CLEAN_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) io_lib_config.h.in $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) io_lib_config.h.in $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) io_lib_config.h.in $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) io_lib_config.h.in $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @list='$(MANS)'; if test -n "$$list"; then \ list=`for p in $$list; do \ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \ if test -n "$$list" && \ grep 'ab help2man is required to generate this page' $$list >/dev/null; then \ echo "error: found man pages containing the \`missing help2man' replacement text:" >&2; \ grep -l 'ab help2man is required to generate this page' $$list | sed 's/^/ /' >&2; \ echo " to fix them, install help2man, remove and regenerate the man pages;" >&2; \ echo " typically \`make maintainer-clean' will remove them" >&2; \ exit 1; \ else :; fi; \ else :; fi $(am__remove_distdir) test -d "$(distdir)" || mkdir "$(distdir)" @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$(top_distdir)" distdir="$(distdir)" \ dist-hook -test -n "$(am__skip_mode_fix)" \ || find "$(distdir)" -type d ! -perm -755 \ -exec chmod u+rwx,go+rx {} \; -o \ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ || chmod -R a+r "$(distdir)" dist-gzip: distdir tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz $(am__remove_distdir) dist-bzip2: distdir tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 $(am__remove_distdir) dist-lzip: distdir tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz $(am__remove_distdir) dist-lzma: distdir tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma $(am__remove_distdir) dist-xz: distdir tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz $(am__remove_distdir) dist-tarZ: distdir tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z $(am__remove_distdir) dist-shar: distdir shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz $(am__remove_distdir) dist-zip: distdir -rm -f $(distdir).zip zip -rq $(distdir).zip $(distdir) $(am__remove_distdir) dist dist-all: distdir tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz $(am__remove_distdir) # This target untars the dist file and tries a VPATH configuration. Then # it guarantees that the distribution is self-contained by making another # tarfile. distcheck: dist case '$(DIST_ARCHIVES)' in \ *.tar.gz*) \ GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ *.tar.bz2*) \ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ *.tar.lzma*) \ lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\ *.tar.lz*) \ lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ *.tar.xz*) \ xz -dc $(distdir).tar.xz | $(am__untar) ;;\ *.tar.Z*) \ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ *.shar.gz*) \ GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\ *.zip*) \ unzip $(distdir).zip ;;\ esac chmod -R a-w $(distdir); chmod a+w $(distdir) mkdir $(distdir)/_build mkdir $(distdir)/_inst chmod a-w $(distdir) test -d $(distdir)/_build || exit 0; \ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ && am__cwd=`pwd` \ && $(am__cd) $(distdir)/_build \ && ../configure --srcdir=.. --prefix="$$dc_install_base" \ $(AM_DISTCHECK_CONFIGURE_FLAGS) \ $(DISTCHECK_CONFIGURE_FLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) dvi \ && $(MAKE) $(AM_MAKEFLAGS) check \ && $(MAKE) $(AM_MAKEFLAGS) install \ && $(MAKE) $(AM_MAKEFLAGS) installcheck \ && $(MAKE) $(AM_MAKEFLAGS) uninstall \ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ distuninstallcheck \ && chmod -R a-w "$$dc_install_base" \ && ({ \ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ } || { rm -rf "$$dc_destdir"; exit 1; }) \ && rm -rf "$$dc_destdir" \ && $(MAKE) $(AM_MAKEFLAGS) dist \ && rm -rf $(DIST_ARCHIVES) \ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ && cd "$$am__cwd" \ || exit 1 $(am__remove_distdir) @(echo "$(distdir) archives ready for distribution: "; \ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' distuninstallcheck: @test -n '$(distuninstallcheck_dir)' || { \ echo 'ERROR: trying to run $@ with an empty' \ '$$(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ $(am__cd) '$(distuninstallcheck_dir)' || { \ echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left after uninstall:" ; \ if test -n "$(DESTDIR)"; then \ echo " (check DESTDIR support)"; \ fi ; \ $(distuninstallcheck_listfiles) ; \ exit 1; } >&2 distcleancheck: distclean @if test '$(srcdir)' = . ; then \ echo "ERROR: distcleancheck can only run from a VPATH build" ; \ exit 1 ; \ fi @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left in build directory after distclean:" ; \ $(distcleancheck_listfiles) ; \ exit 1; } >&2 check-am: all-am check: check-recursive all-am: Makefile $(SCRIPTS) $(MANS) $(HEADERS) io_lib_config.h installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(man3dir)" "$(DESTDIR)$(man4dir)" "$(DESTDIR)$(pkgincludedir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -f Makefile distclean-am: clean-am distclean-generic distclean-hdr \ distclean-libtool distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-man install-pkgincludeHEADERS install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-binSCRIPTS install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-man1 install-man3 install-man4 install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-binSCRIPTS uninstall-man \ uninstall-pkgincludeHEADERS uninstall-man: uninstall-man1 uninstall-man3 uninstall-man4 .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all \ ctags-recursive install-am install-strip tags-recursive .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am am--refresh check check-am clean clean-generic \ clean-libtool ctags ctags-recursive dist dist-all dist-bzip2 \ dist-gzip dist-hook dist-lzip dist-lzma dist-shar dist-tarZ \ dist-xz dist-zip distcheck distclean distclean-generic \ distclean-hdr distclean-libtool distclean-tags distcleancheck \ distdir distuninstallcheck dvi dvi-am html html-am info \ info-am install install-am install-binSCRIPTS install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-man1 install-man3 \ install-man4 install-pdf install-pdf-am \ install-pkgincludeHEADERS install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ installdirs-am maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am tags tags-recursive uninstall uninstall-am \ uninstall-binSCRIPTS uninstall-man uninstall-man1 \ uninstall-man3 uninstall-man4 uninstall-pkgincludeHEADERS dist-hook: rm -rf `find $(distdir)/man -name .svn` # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: io_lib-1.14.6/io_lib-config.in0000755000031500020650000000153312354177667013034 00000000000000#!/bin/sh # # This program prints up a few io_lib configuration parameters. It is # designed to be used in other build environments so that programs # using io_lib can automatically generate the appropriate CFLAGS and LDFLAGS. usage() { cat << _EOF_ Usage: io_lib-config [option] where 'option' is any one of: --cflags C and preprocessor flags (eg -I/foo/include) --libs Link-line parameters, eg -L/foo/lib -lstaden-read --version List io_lib version number _EOF_ exit $1 } [ $# -eq 0 ] && usage 1 prefix=@prefix@ exec_prefix=@exec_prefix@ includedir=@includedir@ case "$1" in --cflags) echo "-I@includedir@" ;; --libs) echo "-L@libdir@ -lstaden-read @LDFLAGS@ @LIBS@ @LIBCURL@ @LIBZ@" ;; --version) echo @VERSION@ ;; --help) usage 0 ;; *) echo "Unknown option '$1'" 1>&2 exit 1 esac io_lib-1.14.6/io_lib_config.h.in0000644000031500020650000001222412617160065013322 00000000000000/* io_lib_config.h.in. Generated from configure.in by autoheader. */ /* Define if building universal (internal helper macro) */ #undef AC_APPLE_UNIVERSAL_BUILD /* Define to 1 if you have the header file. */ #undef HAVE_DLFCN_H /* Define to 1 if you have the header file. */ #undef HAVE_FCNTL_H /* Define to 1 if you have the `fileno' function. */ #undef HAVE_FILENO /* Define to 1 if fseeko (and presumably ftello) exists and is declared. */ #undef HAVE_FSEEKO /* Define to 1 if you have the `fstat' function. */ #undef HAVE_FSTAT /* Define to 1 if you have the `fsync' function. */ #undef HAVE_FSYNC /* Define to 1 if you have the `getpagesize' function. */ #undef HAVE_GETPAGESIZE /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H /* Define to 1 if you have the libbz2 library. */ #undef HAVE_LIBBZ2 /* Define to 1 if you have a functional curl library. */ #undef HAVE_LIBCURL /* Define to 1 if you have the liblzma library. */ #undef HAVE_LIBLZMA /* Define to 1 if you have the header file. */ #undef HAVE_LIMITS_H /* Define to 1 if you have the header file. */ #undef HAVE_MEMORY_H /* Define to 1 if you have a working `mmap' system call. */ #undef HAVE_MMAP /* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H /* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H /* Define to 1 if you have the `strdup' function. */ #undef HAVE_STRDUP /* Define to 1 if you have the header file. */ #undef HAVE_STRINGS_H /* Define to 1 if you have the header file. */ #undef HAVE_STRING_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_PARAM_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_STAT_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H /* Define to 1 if you have that is POSIX.1 compatible. */ #undef HAVE_SYS_WAIT_H /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H /* Define to 1 if you have the va_copy() function. */ #undef HAVE_VA_COPY /* Define if zlib is installed */ #undef HAVE_ZLIB /* Defined if libcurl supports AsynchDNS */ #undef LIBCURL_FEATURE_ASYNCHDNS /* Defined if libcurl supports IDN */ #undef LIBCURL_FEATURE_IDN /* Defined if libcurl supports IPv6 */ #undef LIBCURL_FEATURE_IPV6 /* Defined if libcurl supports KRB4 */ #undef LIBCURL_FEATURE_KRB4 /* Defined if libcurl supports libz */ #undef LIBCURL_FEATURE_LIBZ /* Defined if libcurl supports NTLM */ #undef LIBCURL_FEATURE_NTLM /* Defined if libcurl supports SSL */ #undef LIBCURL_FEATURE_SSL /* Defined if libcurl supports SSPI */ #undef LIBCURL_FEATURE_SSPI /* Defined if libcurl supports DICT */ #undef LIBCURL_PROTOCOL_DICT /* Defined if libcurl supports FILE */ #undef LIBCURL_PROTOCOL_FILE /* Defined if libcurl supports FTP */ #undef LIBCURL_PROTOCOL_FTP /* Defined if libcurl supports FTPS */ #undef LIBCURL_PROTOCOL_FTPS /* Defined if libcurl supports HTTP */ #undef LIBCURL_PROTOCOL_HTTP /* Defined if libcurl supports HTTPS */ #undef LIBCURL_PROTOCOL_HTTPS /* Defined if libcurl supports LDAP */ #undef LIBCURL_PROTOCOL_LDAP /* Defined if libcurl supports TELNET */ #undef LIBCURL_PROTOCOL_TELNET /* Defined if libcurl supports TFTP */ #undef LIBCURL_PROTOCOL_TFTP /* Define to the sub-directory in which libtool stores uninstalled libraries. */ #undef LT_OBJDIR /* Name of package */ #undef PACKAGE /* Define to the address where bug reports for this package should be sent. */ #undef PACKAGE_BUGREPORT /* Define to the full name of this package. */ #undef PACKAGE_NAME /* Define to the full name and version of this package. */ #undef PACKAGE_STRING /* Define to the one symbol short name of this package. */ #undef PACKAGE_TARNAME /* Define to the home page for this package. */ #undef PACKAGE_URL /* Define to the version of this package. */ #undef PACKAGE_VERSION /* The size of `int', as computed by sizeof. */ #undef SIZEOF_INT /* The size of `long', as computed by sizeof. */ #undef SIZEOF_LONG /* The size of `short', as computed by sizeof. */ #undef SIZEOF_SHORT /* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS /* Version number of package */ #undef VERSION /* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most significant byte first (like Motorola and SPARC, unlike Intel). */ #if defined AC_APPLE_UNIVERSAL_BUILD # if defined __BIG_ENDIAN__ # define WORDS_BIGENDIAN 1 # endif #else # ifndef WORDS_BIGENDIAN # undef WORDS_BIGENDIAN # endif #endif /* Number of bits in a file offset, on hosts where this is settable. */ #undef _FILE_OFFSET_BITS /* Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2). */ #undef _LARGEFILE_SOURCE /* Define for large files, on AIX-style hosts. */ #undef _LARGE_FILES /* Define curl_free() as free() if our version of curl lacks curl_free. */ #undef curl_free /* Define to `__inline__' or `__inline' if that's what the C compiler calls it, or to nothing if 'inline' is not supported under any name. */ #ifndef __cplusplus #undef inline #endif /* Define to `int' if does not define. */ #undef mode_t io_lib-1.14.6/configure0000755000031500020650000165647212617160067011717 00000000000000#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.68 for io_lib 1.14.6. # # # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, # 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software # Foundation, Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : else exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO PATH=/empty FPATH=/empty; export PATH FPATH test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1 test \$(( 1 + 1 )) = 2 || exit 1" if (eval "$as_required") 2>/dev/null; then : as_have_required=yes else as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir/$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : CONFIG_SHELL=$as_shell as_have_required=yes if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : break 2 fi fi done;; esac as_found=false done $as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : CONFIG_SHELL=$SHELL as_have_required=yes fi; } IFS=$as_save_IFS if test "x$CONFIG_SHELL" != x; then : # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV export CONFIG_SHELL case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec "$CONFIG_SHELL" $as_opts "$as_myself" ${1+"$@"} fi if test x$as_have_required = xno; then : $as_echo "$0: This script requires a shell more modern than all" $as_echo "$0: the shells that I found on your system." if test x${ZSH_VERSION+set} = xset ; then $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" $as_echo "$0: be upgraded to zsh 4.3.4 or later." else $as_echo "$0: Please tell bug-autoconf@gnu.org about your system, $0: including any error possibly output before this $0: message. Then install a modern shell, or manually run $0: the script under such a shell if you do have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -p'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -p' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi if test -x / >/dev/null 2>&1; then as_test_x='test -x' else if ls -dL / >/dev/null 2>&1; then as_ls_L_option=L else as_ls_L_option= fi as_test_x=' eval sh -c '\'' if test -d "$1"; then test -d "$1/."; else case $1 in #( -*)set "./$1";; esac; case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( ???[sx]*):;;*)false;;esac;fi '\'' sh ' fi as_executable_p=$as_test_x # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" SHELL=${CONFIG_SHELL-/bin/sh} test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='io_lib' PACKAGE_TARNAME='io_lib' PACKAGE_VERSION='1.14.6' PACKAGE_STRING='io_lib 1.14.6' PACKAGE_BUGREPORT='' PACKAGE_URL='' # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef STDC_HEADERS # include # include #else # ifdef HAVE_STDLIB_H # include # endif #endif #ifdef HAVE_STRING_H # if !defined STDC_HEADERS && defined HAVE_MEMORY_H # include # endif # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" ac_header_list= ac_subst_vars='am__EXEEXT_FALSE am__EXEEXT_TRUE LTLIBOBJS LIBOBJS SET_CRAM_IO_CUSTOM_BUFFERING SET_STDIO_EXT SET_ENDIAN HAVE_ZLIB_FALSE HAVE_ZLIB_TRUE LIBZ LIBCURL LIBCURL_CPPFLAGS _libcurl_config CPP OTOOL64 OTOOL LIPO NMEDIT DSYMUTIL MANIFEST_TOOL RANLIB ac_ct_AR AR DLLTOOL OBJDUMP LN_S NM ac_ct_DUMPBIN DUMPBIN LD FGREP EGREP GREP SED host_os host_vendor host_cpu host build_os build_vendor build_cpu build LIBTOOL am__fastdepCC_FALSE am__fastdepCC_TRUE CCDEPMODE am__nodep AMDEPBACKSLASH AMDEP_FALSE AMDEP_TRUE am__quote am__include DEPDIR OBJEXT EXEEXT ac_ct_CC CPPFLAGS LDFLAGS CFLAGS CC VERS_AGE VERS_REVISION VERS_CURRENT MAINT MAINTAINER_MODE_FALSE MAINTAINER_MODE_TRUE am__untar am__tar AMTAR am__leading_dot SET_MAKE AWK mkdir_p MKDIR_P INSTALL_STRIP_PROGRAM STRIP install_sh MAKEINFO AUTOHEADER AUTOMAKE AUTOCONF ACLOCAL VERSION PACKAGE CYGPATH_W am__isrc INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking enable_maintainer_mode enable_dependency_tracking enable_shared enable_static with_pic enable_fast_install with_gnu_ld with_sysroot enable_libtool_lock enable_warnings with_libcurl with_zlib enable_custom_buffering enable_largefile ' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS CPP' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe $as_echo "$as_me: WARNING: if you wanted to set the --build type, don't use --host. If a cross compiler is detected then cross compile mode will be used" >&2 elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures io_lib 1.14.6 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/io_lib] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF Program names: --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of io_lib 1.14.6:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-maintainer-mode enable make rules and dependencies not useful (and sometimes confusing) to the casual installer --disable-dependency-tracking speeds up one-time build --enable-dependency-tracking do not reject slow dependency extractors --enable-shared[=PKGS] build shared libraries [default=yes] --enable-static[=PKGS] build static libraries [default=yes] --enable-fast-install[=PKGS] optimize for fast installation [default=yes] --disable-libtool-lock avoid locking (might break parallel builds) --disable-warnings turn off compiler warnings --enable-custom-buffering enable custom buffering code for CRAM (default yes) --disable-largefile omit support for large files Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-pic[=PKGS] try to use only PIC/non-PIC objects [default=use both] --with-gnu-ld assume the C compiler uses GNU ld [default=no] --with-sysroot=DIR Search for dependent libraries within DIR (or the compiler's sysroot if not specified). --with-libcurl=DIR look for the curl library in DIR --with-zlib=DIR look for zlib in DIR Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory CPP C preprocessor Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to the package provider. _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF io_lib configure 1.14.6 generated by GNU Autoconf 2.68 Copyright (C) 2010 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## # ac_fn_c_try_compile LINENO # -------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_compile # ac_fn_c_try_link LINENO # ----------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_link # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists and can be compiled using the include files in # INCLUDES, setting the cache variable VAR accordingly. ac_fn_c_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_compile # ac_fn_c_try_cpp LINENO # ---------------------- # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_cpp # ac_fn_c_try_run LINENO # ---------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. Assumes # that executables *can* be run. ac_fn_c_try_run () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then : ac_retval=0 else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=$ac_status fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_run # ac_fn_c_check_func LINENO FUNC VAR # ---------------------------------- # Tests whether FUNC exists, setting the cache variable VAR accordingly ac_fn_c_check_func () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case declares $2. For example, HP-UX 11i declares gettimeofday. */ #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $2 (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $2 /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $2 (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$2 || defined __stub___$2 choke me #endif int main () { return $2 (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_func # ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists, giving a warning if it cannot be compiled using # the include files in INCLUDES and setting the cache variable VAR # accordingly. ac_fn_c_check_header_mongrel () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if eval \${$3+:} false; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } else # Is the header compilable? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 $as_echo_n "checking $2 usability... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_header_compiler=yes else ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 $as_echo_n "checking $2 presence... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <$2> _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : ac_header_preproc=yes else ac_header_preproc=no fi rm -f conftest.err conftest.i conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( yes:no: ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; no:yes:* ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=\$ac_header_compiler" fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_mongrel # ac_fn_c_compute_int LINENO EXPR VAR INCLUDES # -------------------------------------------- # Tries to find the compile-time value of EXPR in a program that includes # INCLUDES, setting VAR accordingly. Returns whether the value could be # computed ac_fn_c_compute_int () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if test "$cross_compiling" = yes; then # Depending upon the size, compute the lo and hi bounds. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { static int test_array [1 - 2 * !(($2) >= 0)]; test_array [0] = 0 ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_lo=0 ac_mid=0 while :; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { static int test_array [1 - 2 * !(($2) <= $ac_mid)]; test_array [0] = 0 ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_hi=$ac_mid; break else as_fn_arith $ac_mid + 1 && ac_lo=$as_val if test $ac_lo -le $ac_mid; then ac_lo= ac_hi= break fi as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { static int test_array [1 - 2 * !(($2) < 0)]; test_array [0] = 0 ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_hi=-1 ac_mid=-1 while :; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { static int test_array [1 - 2 * !(($2) >= $ac_mid)]; test_array [0] = 0 ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_lo=$ac_mid; break else as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val if test $ac_mid -le $ac_hi; then ac_lo= ac_hi= break fi as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done else ac_lo= ac_hi= fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext # Binary search between lo and hi bounds. while test "x$ac_lo" != "x$ac_hi"; do as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { static int test_array [1 - 2 * !(($2) <= $ac_mid)]; test_array [0] = 0 ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_hi=$ac_mid else as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done case $ac_lo in #(( ?*) eval "$3=\$ac_lo"; ac_retval=0 ;; '') ac_retval=1 ;; esac else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 static long int longval () { return $2; } static unsigned long int ulongval () { return $2; } #include #include int main () { FILE *f = fopen ("conftest.val", "w"); if (! f) return 1; if (($2) < 0) { long int i = longval (); if (i != ($2)) return 1; fprintf (f, "%ld", i); } else { unsigned long int i = ulongval (); if (i != ($2)) return 1; fprintf (f, "%lu", i); } /* Do not output a trailing newline, as this causes \r\n confusion on some platforms. */ return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : echo >>conftest.val; read $3 &5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=no" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { if (sizeof ($2)) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { if (sizeof (($2))) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else eval "$3=yes" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_type cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by io_lib $as_me 1.14.6, which was generated by GNU Autoconf 2.68. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. $as_echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo $as_echo "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo $as_echo "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then $as_echo "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then $as_echo "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && $as_echo "$as_me: caught signal $ac_signal" $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h $as_echo "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_URL "$PACKAGE_URL" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. ac_site_file1=NONE ac_site_file2=NONE if test -n "$CONFIG_SITE"; then # We do not want a PATH search for config.site. case $CONFIG_SITE in #(( -*) ac_site_file1=./$CONFIG_SITE;; */*) ac_site_file1=$CONFIG_SITE;; *) ac_site_file1=./$CONFIG_SITE;; esac elif test "x$prefix" != xNONE; then ac_site_file1=$prefix/share/config.site ac_site_file2=$prefix/etc/config.site else ac_site_file1=$ac_default_prefix/share/config.site ac_site_file2=$ac_default_prefix/etc/config.site fi for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 $as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 $as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi as_fn_append ac_header_list " stdlib.h" as_fn_append ac_header_list " unistd.h" as_fn_append ac_header_list " sys/param.h" # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_config_headers="$ac_config_headers io_lib_config.h" am__api_version='1.11' ac_aux_dir= for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do if test -f "$ac_dir/install-sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f "$ac_dir/install.sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f "$ac_dir/shtool"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 $as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if ${ac_cv_path_install+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in #(( ./ | .// | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 $as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 $as_echo_n "checking whether build environment is sane... " >&6; } # Just in case sleep 1 echo timestamp > conftest.file # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[\\\"\#\$\&\'\`$am_lf]*) as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; esac case $srcdir in *[\\\"\#\$\&\'\`$am_lf\ \ ]*) as_fn_error $? "unsafe srcdir value: \`$srcdir'" "$LINENO" 5;; esac # Do `set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$*" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi rm -f conftest.file if test "$*" != "X $srcdir/configure conftest.file" \ && test "$*" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". as_fn_error $? "ls -t appears to fail. Make sure there is not a broken alias in your environment" "$LINENO" 5 fi test "$2" = conftest.file ) then # Ok. : else as_fn_error $? "newly created file is older than distributed files! Check your system clock" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } test "$program_prefix" != NONE && program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s&\$&$program_suffix&;$program_transform_name" # Double any \ or $. # By default was `s,x,x', remove it if useless. ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " else am_missing_run= { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5 $as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} fi if test x"${install_sh}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi # Installed binaries are usually stripped using `strip' when the user # run `make install-strip'. However `strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the `STRIP' environment variable to overrule this program. if test "$cross_compiling" != no; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 $as_echo_n "checking for a thread-safe mkdir -p... " >&6; } if test -z "$MKDIR_P"; then if ${ac_cv_path_mkdir+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( 'mkdir (GNU coreutils) '* | \ 'mkdir (coreutils) '* | \ 'mkdir (fileutils) '4.1*) ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext break 3;; esac done done done IFS=$as_save_IFS fi test -d ./--version && rmdir ./--version if test "${ac_cv_path_mkdir+set}" = set; then MKDIR_P="$ac_cv_path_mkdir -p" else # As a last resort, use the slow shell script. Don't cache a # value for MKDIR_P within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. MKDIR_P="$ac_install_sh -d" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 $as_echo "$MKDIR_P" >&6; } mkdir_p="$MKDIR_P" case $mkdir_p in [\\/$]* | ?:[\\/]*) ;; */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; esac for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AWK+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_AWK="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 $as_echo "$AWK" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AWK" && break done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } SET_MAKE= else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." am__isrc=' -I$(srcdir)' # test to see if srcdir already configured if test -f $srcdir/config.status; then as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi # Define the identity of the package. PACKAGE='io_lib' VERSION='1.14.6' cat >>confdefs.h <<_ACEOF #define PACKAGE "$PACKAGE" _ACEOF cat >>confdefs.h <<_ACEOF #define VERSION "$VERSION" _ACEOF # Some tools Automake needs. ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} # We need awk for the "check" target. The system "awk" is bad on # some platforms. # Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AMTAR='$${TAR-tar}' am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5 $as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; } # Check whether --enable-maintainer-mode was given. if test "${enable_maintainer_mode+set}" = set; then : enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval else USE_MAINTAINER_MODE=no fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5 $as_echo "$USE_MAINTAINER_MODE" >&6; } if test $USE_MAINTAINER_MODE = yes; then MAINTAINER_MODE_TRUE= MAINTAINER_MODE_FALSE='#' else MAINTAINER_MODE_TRUE='#' MAINTAINER_MODE_FALSE= fi MAINT=$MAINTAINER_MODE_TRUE # For my own benefit, here's a summary of how versioning should work. # # Library versioning, not to be confused with the release number: # Update VERS_CURRENT when an interface changes in an incompatible manner. # eg. change of struct, removing a function, changing a prototype. # Also increment this when we add new functions in a backwards compatible # manner, but update VERS_AGE too (see below). # # Update VERS_REVISION whenever VERS_CURRENT hasn't changed, but the source # code has. (Otherwise reset revision to 0). # # Update VERS_AGE if new interfaces have been added, causing VERS_CURRENT to # be incremented too. The idea is that if the previous values are # VERS_CURRENT=2, VERS_AGE=0 then after adding a new function we # get VERS_CURRENT=3, VERS_AGE=1 (ie ABI compat with vers 2 or 3). # # Also see: # http://www.gnu.org/software/libtool/manual/libtool.html#Updating-version-info # Example: We have io_lib 1.11.6 implementing ABI vers 0, rev 6, age 0. # Our library has an soname of libstaden-read.so.0 and files as follows: # (SONAME libstaden-read.so.0) # libstaden-read.so -> libstaden-read.so.0.0.6 # libstaden-read.so.0 -> libstaden-read.so.0.0.6 # libstaden-read.so.0.0.6 # # We then release io_lib 1.12.0 with modified structs, so it's incompatible. # We bump to ABI vers 1, rev 0, age 0 - giving: # (SONAME libstaden-read.so.1) # libstaden-read.so -> libstaden-read.so.1.0.0 # libstaden-read.so.1 -> libstaden-read.so.1.0.0 # libstaden-read.so.1.0.0 # # If in 1.12.1 to 1.12.5 we then perform several successive minor tweaks (bug # fix, optimisation, etc) that do not change the ABI at all, we may # end up with ABI vers 1, rev 5, age 0: # (SONAME libstaden-read.so.1) # libstaden-read.so -> libstaden-read.so.1.0.5 # libstaden-read.so.1 -> libstaden-read.so.1.0.5 # libstaden-read.so.1.0.5 # # And assume in 1.13.0 we add an extra public function. Code linked # against 1.12.x still works (aka library version 1) meaning our # soname doesn't change, but we do update ABI version: vers 2, rev 0, age 1. # (SONAME libstaden-read.so.1) # libstaden-read.so -> libstaden-read.so.1.1.0 # libstaden-read.so.1 -> libstaden-read.so.1.1.0 # libstaden-read.so.1.1.0 VERS_CURRENT=11 VERS_REVISION=5 VERS_AGE=0 ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 $as_echo_n "checking whether the C compiler works... " >&6; } ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else ac_file='' fi if test -z "$ac_file"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 $as_echo_n "checking for C compiler default output file name... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 $as_echo "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 $as_echo_n "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 $as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 $as_echo_n "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 $as_echo "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 $as_echo_n "checking for suffix of object files... " >&6; } if ${ac_cv_objext+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 $as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if ${ac_cv_c_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if ${ac_cv_prog_cc_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes else CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 $as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if ${ac_cv_prog_cc_c89+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac if test "x$ac_cv_prog_cc_c89" != xno; then : fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 $as_echo_n "checking for style of include used by $am_make... " >&6; } am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from `make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 $as_echo "$_am_result" >&6; } rm -f confinc confmf # Check whether --enable-dependency-tracking was given. if test "${enable_dependency_tracking+set}" = set; then : enableval=$enable_dependency_tracking; fi if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi if test "x$enable_dependency_tracking" != xno; then AMDEP_TRUE= AMDEP_FALSE='#' else AMDEP_TRUE='#' AMDEP_FALSE= fi depcc="$CC" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if ${am_cv_CC_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok `-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 $as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi case `pwd` in *\ * | *\ *) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 $as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; esac macro_version='2.4.2' macro_revision='1.3337' ltmain="$ac_aux_dir/ltmain.sh" # Make sure we can run config.sub. $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 $as_echo_n "checking build system type... " >&6; } if ${ac_cv_build+:} false; then : $as_echo_n "(cached) " >&6 else ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` test "x$ac_build_alias" = x && as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 $as_echo "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' set x $ac_cv_build shift build_cpu=$1 build_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: build_os=$* IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 $as_echo_n "checking host system type... " >&6; } if ${ac_cv_host+:} false; then : $as_echo_n "(cached) " >&6 else if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 $as_echo "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' set x $ac_cv_host shift host_cpu=$1 host_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: host_os=$* IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac # Backslashify metacharacters that are still active within # double-quoted strings. sed_quote_subst='s/\(["`$\\]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\(["`\\]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Sed substitution to delay expansion of an escaped single quote. delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' # Sed substitution to avoid accidental globbing in evaled expressions no_glob_subst='s/\*/\\\*/g' ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 $as_echo_n "checking how to print strings... " >&6; } # Test print first, because it will be a builtin if present. if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='print -r --' elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='printf %s\n' else # Use this function as a fallback that always works. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $1 _LTECHO_EOF' } ECHO='func_fallback_echo' fi # func_echo_all arg... # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "" } case "$ECHO" in printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5 $as_echo "printf" >&6; } ;; print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 $as_echo "print -r" >&6; } ;; *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5 $as_echo "cat" >&6; } ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 $as_echo_n "checking for a sed that does not truncate output... " >&6; } if ${ac_cv_path_SED+:} false; then : $as_echo_n "(cached) " >&6 else ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ for ac_i in 1 2 3 4 5 6 7; do ac_script="$ac_script$as_nl$ac_script" done echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed { ac_script=; unset ac_script;} if test -z "$SED"; then ac_path_SED_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" { test -f "$ac_path_SED" && $as_test_x "$ac_path_SED"; } || continue # Check for GNU ac_path_SED and select it if it is found. # Check for GNU $ac_path_SED case `"$ac_path_SED" --version 2>&1` in *GNU*) ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo '' >> "conftest.nl" "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_SED_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_SED="$ac_path_SED" ac_path_SED_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_SED_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_SED"; then as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 fi else ac_cv_path_SED=$SED fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 $as_echo "$ac_cv_path_SED" >&6; } SED="$ac_cv_path_SED" rm -f conftest.sed test -z "$SED" && SED=sed Xsed="$SED -e 1s/^X//" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 $as_echo_n "checking for grep that handles long lines and -e... " >&6; } if ${ac_cv_path_GREP+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_GREP"; then as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_GREP=$GREP fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 $as_echo "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 $as_echo_n "checking for egrep... " >&6; } if ${ac_cv_path_EGREP+:} false; then : $as_echo_n "(cached) " >&6 else if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in egrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_EGREP=$EGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 $as_echo "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 $as_echo_n "checking for fgrep... " >&6; } if ${ac_cv_path_FGREP+:} false; then : $as_echo_n "(cached) " >&6 else if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 then ac_cv_path_FGREP="$GREP -F" else if test -z "$FGREP"; then ac_path_FGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in fgrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" { test -f "$ac_path_FGREP" && $as_test_x "$ac_path_FGREP"; } || continue # Check for GNU ac_path_FGREP and select it if it is found. # Check for GNU $ac_path_FGREP case `"$ac_path_FGREP" --version 2>&1` in *GNU*) ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'FGREP' >> "conftest.nl" "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_FGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_FGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_FGREP"; then as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_FGREP=$FGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 $as_echo "$ac_cv_path_FGREP" >&6; } FGREP="$ac_cv_path_FGREP" test -z "$GREP" && GREP=grep # Check whether --with-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then : withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no fi ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 $as_echo_n "checking for ld used by $CC... " >&6; } case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 $as_echo_n "checking for GNU ld... " >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 $as_echo_n "checking for non-GNU ld... " >&6; } fi if ${lt_cv_path_LD+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &5 $as_echo "$LD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 $as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } if ${lt_cv_prog_gnu_ld+:} false; then : $as_echo_n "(cached) " >&6 else # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &5 $as_echo "$lt_cv_prog_gnu_ld" >&6; } with_gnu_ld=$lt_cv_prog_gnu_ld { $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 $as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } if ${lt_cv_path_NM+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM="$NM" else lt_nm_to_check="${ac_tool_prefix}nm" if test -n "$ac_tool_prefix" && test "$build" = "$host"; then lt_nm_to_check="$lt_nm_to_check nm" fi for lt_tmp_nm in $lt_nm_to_check; do lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. tmp_nm="$ac_dir/$lt_tmp_nm" if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then # Check to see if the nm accepts a BSD-compat flag. # Adding the `sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in */dev/null* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags ;; esac ;; esac fi done IFS="$lt_save_ifs" done : ${lt_cv_path_NM=no} fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 $as_echo "$lt_cv_path_NM" >&6; } if test "$lt_cv_path_NM" != "no"; then NM="$lt_cv_path_NM" else # Didn't find any BSD compatible name lister, look for dumpbin. if test -n "$DUMPBIN"; then : # Let the user override the test. else if test -n "$ac_tool_prefix"; then for ac_prog in dumpbin "link -dump" do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_DUMPBIN+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$DUMPBIN"; then ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DUMPBIN=$ac_cv_prog_DUMPBIN if test -n "$DUMPBIN"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 $as_echo "$DUMPBIN" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$DUMPBIN" && break done fi if test -z "$DUMPBIN"; then ac_ct_DUMPBIN=$DUMPBIN for ac_prog in dumpbin "link -dump" do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DUMPBIN"; then ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN if test -n "$ac_ct_DUMPBIN"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 $as_echo "$ac_ct_DUMPBIN" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_DUMPBIN" && break done if test "x$ac_ct_DUMPBIN" = x; then DUMPBIN=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DUMPBIN=$ac_ct_DUMPBIN fi fi case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in *COFF*) DUMPBIN="$DUMPBIN -symbols" ;; *) DUMPBIN=: ;; esac fi if test "$DUMPBIN" != ":"; then NM="$DUMPBIN" fi fi test -z "$NM" && NM=nm { $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 $as_echo_n "checking the name lister ($NM) interface... " >&6; } if ${lt_cv_nm_interface+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&5 (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&5 (eval echo "\"\$as_me:$LINENO: output\"" >&5) cat conftest.out >&5 if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" fi rm -f conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 $as_echo "$lt_cv_nm_interface" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 $as_echo_n "checking whether ln -s works... " >&6; } LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 $as_echo "no, using $LN_S" >&6; } fi # find the maximum length of command line arguments { $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 $as_echo_n "checking the maximum length of command line arguments... " >&6; } if ${lt_cv_sys_max_cmd_len+:} false; then : $as_echo_n "(cached) " >&6 else i=0 teststring="ABCD" case $build_os in msdosdjgpp*) # On DJGPP, this test can blow up pretty badly due to problems in libc # (any single argument exceeding 2000 bytes causes a buffer overrun # during glob expansion). Even if it were fixed, the result of this # check would be larger than it should be. lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; gnu*) # Under GNU Hurd, this test is not required because there is # no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; cygwin* | mingw* | cegcc*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, # you end up with a "frozen" computer, even though with patience # the test eventually succeeds (with a max line length of 256k). # Instead, let's just punt: use the minimum linelength reported by # all of the supported platforms: 8192 (on NT/2K/XP). lt_cv_sys_max_cmd_len=8192; ;; mint*) # On MiNT this can take a long time and run out of memory. lt_cv_sys_max_cmd_len=8192; ;; amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. lt_cv_sys_max_cmd_len=8192; ;; netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` elif test -x /usr/sbin/sysctl; then lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` else lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs fi # And add a safety zone lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ;; interix*) # We know the value 262144 and hardcode it with a safety zone (like BSD) lt_cv_sys_max_cmd_len=196608 ;; os2*) # The test takes a long time on OS/2. lt_cv_sys_max_cmd_len=8192 ;; osf*) # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not # nice to cause kernel panics so lets avoid the loop below. # First set a reasonable default. lt_cv_sys_max_cmd_len=16384 # if test -x /sbin/sysconfig; then case `/sbin/sysconfig -q proc exec_disable_arg_limit` in *1*) lt_cv_sys_max_cmd_len=-1 ;; esac fi ;; sco3.2v5*) lt_cv_sys_max_cmd_len=102400 ;; sysv5* | sco5v6* | sysv4.2uw2*) kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` if test -n "$kargmax"; then lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` else lt_cv_sys_max_cmd_len=32768 fi ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` if test -n "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else # Make teststring a little bigger before we do anything with it. # a 1K string should be a reasonable start. for i in 1 2 3 4 5 6 7 8 ; do teststring=$teststring$teststring done SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \ = "X$teststring$teststring"; } >/dev/null 2>&1 && test $i != 17 # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring done # Only check the string length outside the loop. lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` teststring= # Add a significant safety factor because C++ compilers can tack on # massive amounts of additional arguments before passing them to the # linker. It appears as though 1/2 is a usable value. lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` fi ;; esac fi if test -n $lt_cv_sys_max_cmd_len ; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 $as_echo "$lt_cv_sys_max_cmd_len" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 $as_echo "none" >&6; } fi max_cmd_len=$lt_cv_sys_max_cmd_len : ${CP="cp -f"} : ${MV="mv -f"} : ${RM="rm -f"} { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5 $as_echo_n "checking whether the shell understands some XSI constructs... " >&6; } # Try some XSI features xsi_shell=no ( _lt_dummy="a/b/c" test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \ = c,a/b,b/c, \ && eval 'test $(( 1 + 1 )) -eq 2 \ && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ && xsi_shell=yes { $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5 $as_echo "$xsi_shell" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5 $as_echo_n "checking whether the shell understands \"+=\"... " >&6; } lt_shell_append=no ( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \ >/dev/null 2>&1 \ && lt_shell_append=yes { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5 $as_echo "$lt_shell_append" >&6; } if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then lt_unset=unset else lt_unset=false fi # test EBCDIC or ASCII case `echo X|tr X '\101'` in A) # ASCII based system # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr lt_SP2NL='tr \040 \012' lt_NL2SP='tr \015\012 \040\040' ;; *) # EBCDIC based system lt_SP2NL='tr \100 \n' lt_NL2SP='tr \r\n \100\100' ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 $as_echo_n "checking how to convert $build file names to $host format... " >&6; } if ${lt_cv_to_host_file_cmd+:} false; then : $as_echo_n "(cached) " >&6 else case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 ;; esac ;; *-*-cygwin* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_noop ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin ;; esac ;; * ) # unhandled hosts (and "normal" native builds) lt_cv_to_host_file_cmd=func_convert_file_noop ;; esac fi to_host_file_cmd=$lt_cv_to_host_file_cmd { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 $as_echo "$lt_cv_to_host_file_cmd" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 $as_echo_n "checking how to convert $build file names to toolchain format... " >&6; } if ${lt_cv_to_tool_file_cmd+:} false; then : $as_echo_n "(cached) " >&6 else #assume ordinary cross tools, or native build. lt_cv_to_tool_file_cmd=func_convert_file_noop case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 ;; esac ;; esac fi to_tool_file_cmd=$lt_cv_to_tool_file_cmd { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 $as_echo "$lt_cv_to_tool_file_cmd" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 $as_echo_n "checking for $LD option to reload object files... " >&6; } if ${lt_cv_ld_reload_flag+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ld_reload_flag='-r' fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 $as_echo "$lt_cv_ld_reload_flag" >&6; } reload_flag=$lt_cv_ld_reload_flag case $reload_flag in "" | " "*) ;; *) reload_flag=" $reload_flag" ;; esac reload_cmds='$LD$reload_flag -o $output$reload_objs' case $host_os in cygwin* | mingw* | pw32* | cegcc*) if test "$GCC" != yes; then reload_cmds=false fi ;; darwin*) if test "$GCC" = yes; then reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' else reload_cmds='$LD$reload_flag -o $output$reload_objs' fi ;; esac if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. set dummy ${ac_tool_prefix}objdump; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_OBJDUMP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$OBJDUMP"; then ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OBJDUMP=$ac_cv_prog_OBJDUMP if test -n "$OBJDUMP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 $as_echo "$OBJDUMP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OBJDUMP"; then ac_ct_OBJDUMP=$OBJDUMP # Extract the first word of "objdump", so it can be a program name with args. set dummy objdump; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OBJDUMP"; then ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_OBJDUMP="objdump" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP if test -n "$ac_ct_OBJDUMP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 $as_echo "$ac_ct_OBJDUMP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OBJDUMP" = x; then OBJDUMP="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OBJDUMP=$ac_ct_OBJDUMP fi else OBJDUMP="$ac_cv_prog_OBJDUMP" fi test -z "$OBJDUMP" && OBJDUMP=objdump { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 $as_echo_n "checking how to recognize dependent libraries... " >&6; } if ${lt_cv_deplibs_check_method+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_file_magic_cmd='$MAGIC_CMD' lt_cv_file_magic_test_file= lt_cv_deplibs_check_method='unknown' # Need to set the preceding variable on all platforms that support # interlibrary dependencies. # 'none' -- dependencies not supported. # `unknown' -- same as none, but documents that we really don't know. # 'pass_all' -- all dependencies passed with no checks. # 'test_compile' -- check by making test program. # 'file_magic [[regex]]' -- check by looking for files in library path # which responds to the $file_magic_cmd with a given extended regex. # If you have `file' or equivalent on your system and you're not sure # whether `pass_all' will *always* work, you probably want this one. case $host_os in aix[4-9]*) lt_cv_deplibs_check_method=pass_all ;; beos*) lt_cv_deplibs_check_method=pass_all ;; bsdi[45]*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' lt_cv_file_magic_cmd='/usr/bin/file -L' lt_cv_file_magic_test_file=/shlib/libc.so ;; cygwin*) # func_win32_libid is a shell function defined in ltmain.sh lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' ;; mingw* | pw32*) # Base MSYS/MinGW do not provide the 'file' command needed by # func_win32_libid shell function, so use a weaker test based on 'objdump', # unless we find 'file', for example because we are cross-compiling. # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin. if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else # Keep this pattern in sync with the one in func_win32_libid. lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' lt_cv_file_magic_cmd='$OBJDUMP -f' fi ;; cegcc*) # use the weaker test based on 'objdump'. See mingw*. lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' lt_cv_file_magic_cmd='$OBJDUMP -f' ;; darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; freebsd* | dragonfly*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; gnu*) lt_cv_deplibs_check_method=pass_all ;; haiku*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20* | hpux11*) lt_cv_file_magic_cmd=/usr/bin/file case $host_cpu in ia64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]' lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac ;; interix[3-9]*) # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' ;; irix5* | irix6* | nonstopux*) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac lt_cv_deplibs_check_method=pass_all ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu) lt_cv_deplibs_check_method=pass_all ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; *nto* | *qnx*) lt_cv_deplibs_check_method=pass_all ;; openbsd*) if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' fi ;; osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; rdos*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.3*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; pc) lt_cv_deplibs_check_method=pass_all ;; esac ;; tpf*) lt_cv_deplibs_check_method=pass_all ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 $as_echo "$lt_cv_deplibs_check_method" >&6; } file_magic_glob= want_nocaseglob=no if test "$build" = "$host"; then case $host_os in mingw* | pw32*) if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then want_nocaseglob=yes else file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"` fi ;; esac fi file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. set dummy ${ac_tool_prefix}dlltool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_DLLTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$DLLTOOL"; then ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DLLTOOL=$ac_cv_prog_DLLTOOL if test -n "$DLLTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 $as_echo "$DLLTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_DLLTOOL"; then ac_ct_DLLTOOL=$DLLTOOL # Extract the first word of "dlltool", so it can be a program name with args. set dummy dlltool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DLLTOOL"; then ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_DLLTOOL="dlltool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL if test -n "$ac_ct_DLLTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 $as_echo "$ac_ct_DLLTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_DLLTOOL" = x; then DLLTOOL="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DLLTOOL=$ac_ct_DLLTOOL fi else DLLTOOL="$ac_cv_prog_DLLTOOL" fi test -z "$DLLTOOL" && DLLTOOL=dlltool { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 $as_echo_n "checking how to associate runtime and link libraries... " >&6; } if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_sharedlib_from_linklib_cmd='unknown' case $host_os in cygwin* | mingw* | pw32* | cegcc*) # two different shell functions defined in ltmain.sh # decide which to use based on capabilities of $DLLTOOL case `$DLLTOOL --help 2>&1` in *--identify-strict*) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib ;; *) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback ;; esac ;; *) # fallback: assume linklib IS sharedlib lt_cv_sharedlib_from_linklib_cmd="$ECHO" ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 $as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; } sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO if test -n "$ac_tool_prefix"; then for ac_prog in ar do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AR+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AR"; then ac_cv_prog_AR="$AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_AR="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AR=$ac_cv_prog_AR if test -n "$AR"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 $as_echo "$AR" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AR" && break done fi if test -z "$AR"; then ac_ct_AR=$AR for ac_prog in ar do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_AR+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_AR"; then ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_AR="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_AR=$ac_cv_prog_ac_ct_AR if test -n "$ac_ct_AR"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 $as_echo "$ac_ct_AR" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_AR" && break done if test "x$ac_ct_AR" = x; then AR="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac AR=$ac_ct_AR fi fi : ${AR=ar} : ${AR_FLAGS=cru} { $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 $as_echo_n "checking for archiver @FILE support... " >&6; } if ${lt_cv_ar_at_file+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ar_at_file=no cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : echo conftest.$ac_objext > conftest.lst lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5' { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 (eval $lt_ar_try) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test "$ac_status" -eq 0; then # Ensure the archiver fails upon bogus file names. rm -f conftest.$ac_objext libconftest.a { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 (eval $lt_ar_try) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test "$ac_status" -ne 0; then lt_cv_ar_at_file=@ fi fi rm -f conftest.* libconftest.a fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 $as_echo "$lt_cv_ar_at_file" >&6; } if test "x$lt_cv_ar_at_file" = xno; then archiver_list_spec= else archiver_list_spec=$lt_cv_ar_at_file fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi test -z "$STRIP" && STRIP=: if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 $as_echo "$RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_RANLIB="ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 $as_echo "$ac_ct_RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then RANLIB=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac RANLIB=$ac_ct_RANLIB fi else RANLIB="$ac_cv_prog_RANLIB" fi test -z "$RANLIB" && RANLIB=: # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" ;; *) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" fi case $host_os in darwin*) lock_old_archive_extraction=yes ;; *) lock_old_archive_extraction=no ;; esac # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # Check for command to grab the raw symbol name followed by C symbol from nm. { $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 $as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } if ${lt_cv_sys_global_symbol_pipe+:} false; then : $as_echo_n "(cached) " >&6 else # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[BCDEGRST]' # Regexp to match symbols that can be accessed directly from C. sympat='\([_A-Za-z][_A-Za-z0-9]*\)' # Define system-specific variables. case $host_os in aix*) symcode='[BCDT]' ;; cygwin* | mingw* | pw32* | cegcc*) symcode='[ABCDGISTW]' ;; hpux*) if test "$host_cpu" = ia64; then symcode='[ABCDEGRST]' fi ;; irix* | nonstopux*) symcode='[BCDEGRST]' ;; osf*) symcode='[BCDEGQRST]' ;; solaris*) symcode='[BDRT]' ;; sco3.2v5*) symcode='[DT]' ;; sysv4.2uw2*) symcode='[DT]' ;; sysv5* | sco5v6* | unixware* | OpenUNIX*) symcode='[ABDT]' ;; sysv4) symcode='[DFNSTU]' ;; esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) symcode='[ABCDGIRSTW]' ;; esac # Transform an extracted symbol line into a proper C declaration. # Some systems (esp. on ia64) link data and code symbols differently, # so use this general approach. lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" # Transform an extracted symbol line into symbol name and symbol address lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'" lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'" # Handle CRLF in mingw tool chain opt_cr= case $build_os in mingw*) opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # Try without a prefix underscore, then with it. for ac_symprfx in "" "_"; do # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. symxfrm="\\1 $ac_symprfx\\2 \\2" # Write the raw and C identifiers. if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Fake it for dumpbin and say T for any non-static function # and D for any global variable. # Also find C++ and __fastcall symbols from MSVC++, # which start with @ or ?. lt_cv_sys_global_symbol_pipe="$AWK '"\ " {last_section=section; section=\$ 3};"\ " /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ " \$ 0!~/External *\|/{next};"\ " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ " {if(hide[section]) next};"\ " {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ " {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ " s[1]~/^[@?]/{print s[1], s[1]; next};"\ " s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ " ' prfx=^$ac_symprfx" else lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" fi lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext <<_LT_EOF #ifdef __cplusplus extern "C" { #endif char nm_test_var; void nm_test_func(void); void nm_test_func(void){} #ifdef __cplusplus } #endif int main(){nm_test_var='a';nm_test_func();return(0);} _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then # Now try to grab the symbols. nlist=conftest.nm if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5 (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if $GREP ' nm_test_var$' "$nlist" >/dev/null; then if $GREP ' nm_test_func$' "$nlist" >/dev/null; then cat <<_LT_EOF > conftest.$ac_ext /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) /* DATA imports from DLLs on WIN32 con't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT_DLSYM_CONST #elif defined(__osf__) /* This system does not cope well with relocations in const data. */ # define LT_DLSYM_CONST #else # define LT_DLSYM_CONST const #endif #ifdef __cplusplus extern "C" { #endif _LT_EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' cat <<_LT_EOF >> conftest.$ac_ext /* The mapping between symbol names and symbols. */ LT_DLSYM_CONST struct { const char *name; void *address; } lt__PROGRAM__LTX_preloaded_symbols[] = { { "@PROGRAM@", (void *) 0 }, _LT_EOF $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext cat <<\_LT_EOF >> conftest.$ac_ext {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt__PROGRAM__LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif _LT_EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_globsym_save_LIBS=$LIBS lt_globsym_save_CFLAGS=$CFLAGS LIBS="conftstm.$ac_objext" CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s conftest${ac_exeext}; then pipe_works=yes fi LIBS=$lt_globsym_save_LIBS CFLAGS=$lt_globsym_save_CFLAGS else echo "cannot find nm_test_func in $nlist" >&5 fi else echo "cannot find nm_test_var in $nlist" >&5 fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 fi else echo "$progname: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test "$pipe_works" = yes; then break else lt_cv_sys_global_symbol_pipe= fi done fi if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 $as_echo "failed" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 $as_echo "ok" >&6; } fi # Response file support. if test "$lt_cv_nm_interface" = "MS dumpbin"; then nm_file_list_spec='@' elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then nm_file_list_spec='@' fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 $as_echo_n "checking for sysroot... " >&6; } # Check whether --with-sysroot was given. if test "${with_sysroot+set}" = set; then : withval=$with_sysroot; else with_sysroot=no fi lt_sysroot= case ${with_sysroot} in #( yes) if test "$GCC" = yes; then lt_sysroot=`$CC --print-sysroot 2>/dev/null` fi ;; #( /*) lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` ;; #( no|'') ;; #( *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_sysroot}" >&5 $as_echo "${with_sysroot}" >&6; } as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 $as_echo "${lt_sysroot:-no}" >&6; } # Check whether --enable-libtool-lock was given. if test "${enable_libtool_lock+set}" = set; then : enableval=$enable_libtool_lock; fi test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE="32" ;; *ELF-64*) HPUX_IA64_MODE="64" ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out which ABI we are using. echo '#line '$LINENO' "configure"' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then if test "$lt_cv_prog_gnu_ld" = yes; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.o` in *32-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_i386" ;; ppc64-*linux*|powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) LD="${LD-ld} -m elf_s390" ;; sparc64-*linux*) LD="${LD-ld} -m elf32_sparc" ;; esac ;; *64-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_x86_64_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; ppc*-*linux*|powerpc*-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*|s390*-*tpf*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 $as_echo_n "checking whether the C compiler needs -belf... " >&6; } if ${lt_cv_cc_needs_belf+:} false; then : $as_echo_n "(cached) " >&6 else ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_cv_cc_needs_belf=yes else lt_cv_cc_needs_belf=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 $as_echo "$lt_cv_cc_needs_belf" >&6; } if test x"$lt_cv_cc_needs_belf" != x"yes"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS="$SAVE_CFLAGS" fi ;; *-*solaris*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) case $host in i?86-*-solaris*) LD="${LD-ld} -m elf_x86_64" ;; sparc*-*-solaris*) LD="${LD-ld} -m elf64_sparc" ;; esac # GNU ld 2.21 introduced _sol2 emulations. Use them if available. if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then LD="${LD-ld}_sol2" fi ;; *) if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then LD="${LD-ld} -64" fi ;; esac ;; esac fi rm -rf conftest* ;; esac need_locks="$enable_libtool_lock" if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. set dummy ${ac_tool_prefix}mt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_MANIFEST_TOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$MANIFEST_TOOL"; then ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL if test -n "$MANIFEST_TOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 $as_echo "$MANIFEST_TOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_MANIFEST_TOOL"; then ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL # Extract the first word of "mt", so it can be a program name with args. set dummy mt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_MANIFEST_TOOL"; then ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_MANIFEST_TOOL="mt" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL if test -n "$ac_ct_MANIFEST_TOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 $as_echo "$ac_ct_MANIFEST_TOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_MANIFEST_TOOL" = x; then MANIFEST_TOOL=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL fi else MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL" fi test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 $as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } if ${lt_cv_path_mainfest_tool+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_path_mainfest_tool=no echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5 $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out cat conftest.err >&5 if $GREP 'Manifest Tool' conftest.out > /dev/null; then lt_cv_path_mainfest_tool=yes fi rm -f conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 $as_echo "$lt_cv_path_mainfest_tool" >&6; } if test "x$lt_cv_path_mainfest_tool" != xyes; then MANIFEST_TOOL=: fi case $host_os in rhapsody* | darwin*) if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_DSYMUTIL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$DSYMUTIL"; then ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DSYMUTIL=$ac_cv_prog_DSYMUTIL if test -n "$DSYMUTIL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 $as_echo "$DSYMUTIL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_DSYMUTIL"; then ac_ct_DSYMUTIL=$DSYMUTIL # Extract the first word of "dsymutil", so it can be a program name with args. set dummy dsymutil; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DSYMUTIL"; then ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL if test -n "$ac_ct_DSYMUTIL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 $as_echo "$ac_ct_DSYMUTIL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_DSYMUTIL" = x; then DSYMUTIL=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DSYMUTIL=$ac_ct_DSYMUTIL fi else DSYMUTIL="$ac_cv_prog_DSYMUTIL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. set dummy ${ac_tool_prefix}nmedit; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_NMEDIT+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$NMEDIT"; then ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi NMEDIT=$ac_cv_prog_NMEDIT if test -n "$NMEDIT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 $as_echo "$NMEDIT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_NMEDIT"; then ac_ct_NMEDIT=$NMEDIT # Extract the first word of "nmedit", so it can be a program name with args. set dummy nmedit; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_NMEDIT"; then ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_NMEDIT="nmedit" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT if test -n "$ac_ct_NMEDIT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 $as_echo "$ac_ct_NMEDIT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_NMEDIT" = x; then NMEDIT=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac NMEDIT=$ac_ct_NMEDIT fi else NMEDIT="$ac_cv_prog_NMEDIT" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. set dummy ${ac_tool_prefix}lipo; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_LIPO+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$LIPO"; then ac_cv_prog_LIPO="$LIPO" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_LIPO="${ac_tool_prefix}lipo" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi LIPO=$ac_cv_prog_LIPO if test -n "$LIPO"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 $as_echo "$LIPO" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_LIPO"; then ac_ct_LIPO=$LIPO # Extract the first word of "lipo", so it can be a program name with args. set dummy lipo; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_LIPO+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_LIPO"; then ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_LIPO="lipo" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO if test -n "$ac_ct_LIPO"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 $as_echo "$ac_ct_LIPO" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_LIPO" = x; then LIPO=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac LIPO=$ac_ct_LIPO fi else LIPO="$ac_cv_prog_LIPO" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. set dummy ${ac_tool_prefix}otool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_OTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$OTOOL"; then ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_OTOOL="${ac_tool_prefix}otool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OTOOL=$ac_cv_prog_OTOOL if test -n "$OTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 $as_echo "$OTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OTOOL"; then ac_ct_OTOOL=$OTOOL # Extract the first word of "otool", so it can be a program name with args. set dummy otool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_OTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OTOOL"; then ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_OTOOL="otool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL if test -n "$ac_ct_OTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 $as_echo "$ac_ct_OTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OTOOL" = x; then OTOOL=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OTOOL=$ac_ct_OTOOL fi else OTOOL="$ac_cv_prog_OTOOL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. set dummy ${ac_tool_prefix}otool64; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_OTOOL64+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$OTOOL64"; then ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OTOOL64=$ac_cv_prog_OTOOL64 if test -n "$OTOOL64"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 $as_echo "$OTOOL64" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OTOOL64"; then ac_ct_OTOOL64=$OTOOL64 # Extract the first word of "otool64", so it can be a program name with args. set dummy otool64; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OTOOL64"; then ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_OTOOL64="otool64" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 if test -n "$ac_ct_OTOOL64"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 $as_echo "$ac_ct_OTOOL64" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OTOOL64" = x; then OTOOL64=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OTOOL64=$ac_ct_OTOOL64 fi else OTOOL64="$ac_cv_prog_OTOOL64" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 $as_echo_n "checking for -single_module linker flag... " >&6; } if ${lt_cv_apple_cc_single_mod+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_apple_cc_single_mod=no if test -z "${LT_MULTI_MODULE}"; then # By default we will add the -single_module flag. You can override # by either setting the environment variable LT_MULTI_MODULE # non-empty at configure time, or by adding -multi_module to the # link flags. rm -rf libconftest.dylib* echo "int foo(void){return 1;}" > conftest.c echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c" >&5 $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err _lt_result=$? # If there is a non-empty error log, and "single_module" # appears in it, assume the flag caused a linker warning if test -s conftest.err && $GREP single_module conftest.err; then cat conftest.err >&5 # Otherwise, if the output was created with a 0 exit code from # the compiler, it worked. elif test -f libconftest.dylib && test $_lt_result -eq 0; then lt_cv_apple_cc_single_mod=yes else cat conftest.err >&5 fi rm -rf libconftest.dylib* rm -f conftest.* fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 $as_echo "$lt_cv_apple_cc_single_mod" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 $as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } if ${lt_cv_ld_exported_symbols_list+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ld_exported_symbols_list=no save_LDFLAGS=$LDFLAGS echo "_main" > conftest.sym LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_cv_ld_exported_symbols_list=yes else lt_cv_ld_exported_symbols_list=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 $as_echo "$lt_cv_ld_exported_symbols_list" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 $as_echo_n "checking for -force_load linker flag... " >&6; } if ${lt_cv_ld_force_load+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ld_force_load=no cat > conftest.c << _LT_EOF int forced_loaded() { return 2;} _LT_EOF echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 echo "$AR cru libconftest.a conftest.o" >&5 $AR cru libconftest.a conftest.o 2>&5 echo "$RANLIB libconftest.a" >&5 $RANLIB libconftest.a 2>&5 cat > conftest.c << _LT_EOF int main() { return 0;} _LT_EOF echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5 $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err _lt_result=$? if test -s conftest.err && $GREP force_load conftest.err; then cat conftest.err >&5 elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then lt_cv_ld_force_load=yes else cat conftest.err >&5 fi rm -f conftest.err libconftest.a conftest conftest.c rm -rf conftest.dSYM fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 $as_echo "$lt_cv_ld_force_load" >&6; } case $host_os in rhapsody* | darwin1.[012]) _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; darwin1.*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; darwin*) # darwin 5.x on # if running on 10.5 or later, the deployment target defaults # to the OS version, if on x86, and 10.4, the deployment # target defaults to 10.4. Don't you love it? case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in 10.0,*86*-darwin8*|10.0,*-darwin[91]*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; 10.[012]*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; 10.*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; esac ;; esac if test "$lt_cv_apple_cc_single_mod" = "yes"; then _lt_dar_single_mod='$single_module' fi if test "$lt_cv_ld_exported_symbols_list" = "yes"; then _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' else _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' fi if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= fi ;; esac ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 $as_echo_n "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if ${ac_cv_prog_CPP+:} false; then : $as_echo_n "(cached) " >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 $as_echo "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if ${ac_cv_header_stdc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_stdc=yes else ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : else ac_cv_header_stdc=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then $as_echo "#define STDC_HEADERS 1" >>confdefs.h fi # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default " if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in dlfcn.h do : ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default " if test "x$ac_cv_header_dlfcn_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_DLFCN_H 1 _ACEOF fi done # Set options enable_dlopen=no enable_win32_dll=no # Check whether --enable-shared was given. if test "${enable_shared+set}" = set; then : enableval=$enable_shared; p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS="$lt_save_ifs" ;; esac else enable_shared=yes fi # Check whether --enable-static was given. if test "${enable_static+set}" = set; then : enableval=$enable_static; p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS="$lt_save_ifs" ;; esac else enable_static=yes fi # Check whether --with-pic was given. if test "${with_pic+set}" = set; then : withval=$with_pic; lt_p=${PACKAGE-default} case $withval in yes|no) pic_mode=$withval ;; *) pic_mode=default # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for lt_pkg in $withval; do IFS="$lt_save_ifs" if test "X$lt_pkg" = "X$lt_p"; then pic_mode=yes fi done IFS="$lt_save_ifs" ;; esac else pic_mode=default fi test -z "$pic_mode" && pic_mode=default # Check whether --enable-fast-install was given. if test "${enable_fast_install+set}" = set; then : enableval=$enable_fast_install; p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS="$lt_save_ifs" ;; esac else enable_fast_install=yes fi # This can be used to rebuild libtool when needed LIBTOOL_DEPS="$ltmain" # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' test -z "$LN_S" && LN_S="ln -s" if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 $as_echo_n "checking for objdir... " >&6; } if ${lt_cv_objdir+:} false; then : $as_echo_n "(cached) " >&6 else rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then lt_cv_objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. lt_cv_objdir=_libs fi rmdir .libs 2>/dev/null fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 $as_echo "$lt_cv_objdir" >&6; } objdir=$lt_cv_objdir cat >>confdefs.h <<_ACEOF #define LT_OBJDIR "$lt_cv_objdir/" _ACEOF case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Global variables: ofile=libtool can_build_shared=yes # All known linkers require a `.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a with_gnu_ld="$lt_cv_prog_gnu_ld" old_CC="$CC" old_CFLAGS="$CFLAGS" # Set sane defaults for various variables test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS test -z "$LD" && LD=ld test -z "$ac_objext" && ac_objext=o for cc_temp in $compiler""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` # Only perform the check for file, if the check method requires it test -z "$MAGIC_CMD" && MAGIC_CMD=file case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 $as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } if ${lt_cv_path_MAGIC_CMD+:} false; then : $as_echo_n "(cached) " >&6 else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD="$MAGIC_CMD" lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/${ac_tool_prefix}file; then lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS="$lt_save_ifs" MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac fi MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 $as_echo "$MAGIC_CMD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 $as_echo_n "checking for file... " >&6; } if ${lt_cv_path_MAGIC_CMD+:} false; then : $as_echo_n "(cached) " >&6 else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD="$MAGIC_CMD" lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/file; then lt_cv_path_MAGIC_CMD="$ac_dir/file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS="$lt_save_ifs" MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac fi MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 $as_echo "$MAGIC_CMD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi else MAGIC_CMD=: fi fi fi ;; esac # Use C for the default configuration in the libtool script lt_save_CC="$CC" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o objext=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(){return(0);}' # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # Save the default compiler, since it gets overwritten when the other # tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. compiler_DEFAULT=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* if test -n "$compiler"; then lt_prog_compiler_no_builtin_flag= if test "$GCC" = yes; then case $cc_basename in nvcc*) lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; *) lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 $as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_rtti_exceptions=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-fno-rtti -fno-exceptions" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_rtti_exceptions=yes fi fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 $as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" else : fi fi lt_prog_compiler_wl= lt_prog_compiler_pic= lt_prog_compiler_static= if test "$GCC" = yes; then lt_prog_compiler_wl='-Wl,' lt_prog_compiler_static='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support lt_prog_compiler_pic='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic='-DDLL_EXPORT' ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic='-fno-common' ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. lt_prog_compiler_static= ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) # +Z the default ;; *) lt_prog_compiler_pic='-fPIC' ;; esac ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. lt_prog_compiler_can_build_shared=no enable_shared=no ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic='-fPIC -shared' ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic=-Kconform_pic fi ;; *) lt_prog_compiler_pic='-fPIC' ;; esac case $cc_basename in nvcc*) # Cuda Compiler Driver 2.2 lt_prog_compiler_wl='-Xlinker ' if test -n "$lt_prog_compiler_pic"; then lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic" fi ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) lt_prog_compiler_wl='-Wl,' if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' else lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' fi ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic='-DDLL_EXPORT' ;; hpux9* | hpux10* | hpux11*) lt_prog_compiler_wl='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? lt_prog_compiler_static='${wl}-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) lt_prog_compiler_wl='-Wl,' # PIC (with -KPIC) is the default. lt_prog_compiler_static='-non_shared' ;; linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in # old Intel for x86_64 which still supported -KPIC. ecc*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-static' ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; # Lahey Fortran 8.1. lf95*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='--shared' lt_prog_compiler_static='--static' ;; nagfor*) # NAG Fortran compiler lt_prog_compiler_wl='-Wl,-Wl,,' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fpic' lt_prog_compiler_static='-Bstatic' ;; ccc*) lt_prog_compiler_wl='-Wl,' # All Alpha code is PIC. lt_prog_compiler_static='-non_shared' ;; xl* | bgxl* | bgf* | mpixl*) # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-qpic' lt_prog_compiler_static='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*) # Sun Fortran 8.3 passes all unrecognized flags to the linker lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='' ;; *Sun\ F* | *Sun*Fortran*) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Qoption ld ' ;; *Sun\ C*) # Sun C 5.9 lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Wl,' ;; *Intel*\ [CF]*Compiler*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; *Portland\ Group*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fpic' lt_prog_compiler_static='-Bstatic' ;; esac ;; esac ;; newsos6) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic='-fPIC -shared' ;; osf3* | osf4* | osf5*) lt_prog_compiler_wl='-Wl,' # All OSF/1 code is PIC. lt_prog_compiler_static='-non_shared' ;; rdos*) lt_prog_compiler_static='-non_shared' ;; solaris*) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' case $cc_basename in f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) lt_prog_compiler_wl='-Qoption ld ';; *) lt_prog_compiler_wl='-Wl,';; esac ;; sunos4*) lt_prog_compiler_wl='-Qoption ld ' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then lt_prog_compiler_pic='-Kconform_pic' lt_prog_compiler_static='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; unicos*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_can_build_shared=no ;; uts4*) lt_prog_compiler_pic='-pic' lt_prog_compiler_static='-Bstatic' ;; *) lt_prog_compiler_can_build_shared=no ;; esac fi case $host_os in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic= ;; *) lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 $as_echo_n "checking for $compiler option to produce PIC... " >&6; } if ${lt_cv_prog_compiler_pic+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic=$lt_prog_compiler_pic fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 $as_echo "$lt_cv_prog_compiler_pic" >&6; } lt_prog_compiler_pic=$lt_cv_prog_compiler_pic # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 $as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } if ${lt_cv_prog_compiler_pic_works+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_works=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic -DPIC" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works=yes fi fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 $as_echo "$lt_cv_prog_compiler_pic_works" >&6; } if test x"$lt_cv_prog_compiler_pic_works" = xyes; then case $lt_prog_compiler_pic in "" | " "*) ;; *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; esac else lt_prog_compiler_pic= lt_prog_compiler_can_build_shared=no fi fi # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 $as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } if ${lt_cv_prog_compiler_static_works+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_static_works=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works=yes fi else lt_cv_prog_compiler_static_works=yes fi fi $RM -r conftest* LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 $as_echo "$lt_cv_prog_compiler_static_works" >&6; } if test x"$lt_cv_prog_compiler_static_works" = xyes; then : else lt_prog_compiler_static= fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if ${lt_cv_prog_compiler_c_o+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 $as_echo "$lt_cv_prog_compiler_c_o" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if ${lt_cv_prog_compiler_c_o+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 $as_echo "$lt_cv_prog_compiler_c_o" >&6; } hard_links="nottested" if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 $as_echo_n "checking if we can lock with hard links... " >&6; } hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 $as_echo "$hard_links" >&6; } if test "$hard_links" = no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 $as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } runpath_var= allow_undefined_flag= always_export_symbols=no archive_cmds= archive_expsym_cmds= compiler_needs_object=no enable_shared_with_static_runtimes=no export_dynamic_flag_spec= export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' hardcode_automatic=no hardcode_direct=no hardcode_direct_absolute=no hardcode_libdir_flag_spec= hardcode_libdir_separator= hardcode_minus_L=no hardcode_shlibpath_var=unsupported inherit_rpath=no link_all_deplibs=unknown module_cmds= module_expsym_cmds= old_archive_from_new_cmds= old_archive_from_expsyms_cmds= thread_safe_flag_spec= whole_archive_flag_spec= # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list include_expsyms= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32* | cegcc*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd*) with_gnu_ld=no ;; linux* | k*bsd*-gnu | gnu*) link_all_deplibs=no ;; esac ld_shlibs=yes # On some targets, GNU ld is compatible enough with the native linker # that we're better off using the native interface for both. lt_use_gnu_ld_interface=no if test "$with_gnu_ld" = yes; then case $host_os in aix*) # The AIX port of GNU ld has always aspired to compatibility # with the native linker. However, as the warning in the GNU ld # block says, versions before 2.19.5* couldn't really create working # shared libraries, regardless of the interface used. case `$LD -v 2>&1` in *\ \(GNU\ Binutils\)\ 2.19.5*) ;; *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; *\ \(GNU\ Binutils\)\ [3-9]*) ;; *) lt_use_gnu_ld_interface=yes ;; esac ;; *) lt_use_gnu_ld_interface=yes ;; esac fi if test "$lt_use_gnu_ld_interface" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' export_dynamic_flag_spec='${wl}--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec= fi supports_anon_versioning=no case `$LD -v 2>&1` in *GNU\ gold*) supports_anon_versioning=yes ;; *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[3-9]*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: the GNU linker, at least up to release 2.19, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to install binutils *** 2.20 or above, or modify your PATH so that a non-GNU linker is found. *** You will then need to restart the configuration process. _LT_EOF fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='' ;; m68k) archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; esac ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then allow_undefined_flag=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else ld_shlibs=no fi ;; cygwin* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' export_dynamic_flag_spec='${wl}--export-all-symbols' allow_undefined_flag=unsupported always_export_symbols=no enable_shared_with_static_runtimes=yes export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else ld_shlibs=no fi ;; haiku*) archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' link_all_deplibs=yes ;; interix[3-9]*) hardcode_direct=no hardcode_shlibpath_var=no hardcode_libdir_flag_spec='${wl}-rpath,$libdir' export_dynamic_flag_spec='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no if test "$host_os" = linux-dietlibc; then case $cc_basename in diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) esac fi if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ && test "$tmp_diet" = no then tmp_addflag=' $pic_flag' tmp_sharedflag='-shared' case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group f77 and f90 compilers whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; lf95*) # Lahey Fortran 8.1 whole_archive_flag_spec= tmp_sharedflag='--shared' ;; xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) tmp_sharedflag='-qmkshrobj' tmp_addflag= ;; nvcc*) # Cuda Compiler Driver 2.2 whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' compiler_needs_object=yes ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' compiler_needs_object=yes tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; esac archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test "x$supports_anon_versioning" = xyes; then archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi case $cc_basename in xlf* | bgf* | bgxlf* | mpixlf*) # IBM XL Fortran 10.1 on PPC cannot create shared libs itself whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' if test "x$supports_anon_versioning" = xyes; then archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi ;; esac else ld_shlibs=no fi ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) # For security reasons, it is highly recommended that you always # use absolute paths for naming shared libraries, and exclude the # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac ;; sunos4*) archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= hardcode_direct=yes hardcode_shlibpath_var=no ;; *) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac if test "$ld_shlibs" = no; then runpath_var= hardcode_libdir_flag_spec= export_dynamic_flag_spec= whole_archive_flag_spec= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) allow_undefined_flag=unsupported always_export_symbols=yes archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L=yes if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct=unsupported fi ;; aix[4-9]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm # Also, AIX nm treats weak defined symbols like other global # defined symbols, whereas GNU nm marks them as "W". if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds='' hardcode_direct=yes hardcode_direct_absolute=yes hardcode_libdir_separator=':' link_all_deplibs=yes file_list_spec='${wl}-f,' if test "$GCC" = yes; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L=yes hardcode_libdir_flag_spec='-L$libdir' hardcode_libdir_separator= fi ;; esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi link_all_deplibs=no else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi export_dynamic_flag_spec='${wl}-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag='-berok' # Determine the default libpath from the value encoded in an # empty executable. if test "${lt_cv_aix_libpath+set}" = set; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath_+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_="/usr/lib:/lib" fi fi aix_libpath=$lt_cv_aix_libpath_ fi hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag="-z nodefs" archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. if test "${lt_cv_aix_libpath+set}" = set; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath_+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_="/usr/lib:/lib" fi fi aix_libpath=$lt_cv_aix_libpath_ fi hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag=' ${wl}-bernotok' allow_undefined_flag=' ${wl}-berok' if test "$with_gnu_ld" = yes; then # We only use this code for GNU lds that support --whole-archive. whole_archive_flag_spec='${wl}--whole-archive$convenience ${wl}--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec='$convenience' fi archive_cmds_need_lc=yes # This is similar to how AIX traditionally builds its shared libraries. archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='' ;; m68k) archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; esac ;; bsdi[45]*) export_dynamic_flag_spec=-rdynamic ;; cygwin* | mingw* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. case $cc_basename in cl*) # Native MSVC hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported always_export_symbols=yes file_list_spec='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; else sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, )='true' enable_shared_with_static_runtimes=yes exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' # Don't use ranlib old_postinstall_cmds='chmod 644 $oldlib' postlink_cmds='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile="$lt_outputfile.exe" lt_tool_outputfile="$lt_tool_outputfile.exe" ;; esac~ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # Assume MSVC wrapper hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_from_new_cmds='true' # FIXME: Should let the user specify the lib program. old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' enable_shared_with_static_runtimes=yes ;; esac ;; darwin* | rhapsody*) archive_cmds_need_lc=no hardcode_direct=no hardcode_automatic=yes hardcode_shlibpath_var=unsupported if test "$lt_cv_ld_force_load" = "yes"; then whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' else whole_archive_flag_spec='' fi link_all_deplibs=yes allow_undefined_flag="$_lt_dar_allow_undefined" case $cc_basename in ifort*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test "$_lt_dar_can_shared" = "yes"; then output_verbose_link_cmd=func_echo_all archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" else ld_shlibs=no fi ;; dgux*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2.*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; hpux9*) if test "$GCC" = yes; then archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' fi hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes export_dynamic_flag_spec='${wl}-E' ;; hpux10*) if test "$GCC" = yes && test "$with_gnu_ld" = no; then archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes hardcode_direct_absolute=yes export_dynamic_flag_spec='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes fi ;; hpux11*) if test "$GCC" = yes && test "$with_gnu_ld" = no; then case $host_cpu in hppa*64*) archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) # Older versions of the 11.00 compiler do not understand -b yet # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 $as_echo_n "checking if $CC understands -b... " >&6; } if ${lt_cv_prog_compiler__b+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler__b=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS -b" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler__b=yes fi else lt_cv_prog_compiler__b=yes fi fi $RM -r conftest* LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 $as_echo "$lt_cv_prog_compiler__b" >&6; } if test x"$lt_cv_prog_compiler__b" = xyes; then archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi ;; esac fi if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: case $host_cpu in hppa*64*|ia64*) hardcode_direct=no hardcode_shlibpath_var=no ;; *) hardcode_direct=yes hardcode_direct_absolute=yes export_dynamic_flag_spec='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' # Try to use the -exported_symbol ld option, if it does not # work, assume that -exports_file does not work either and # implicitly export all symbols. # This should be the same for all languages, so no per-tag cache variable. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 $as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; } if ${lt_cv_irix_exported_symbol+:} false; then : $as_echo_n "(cached) " >&6 else save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int foo (void) { return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_cv_irix_exported_symbol=yes else lt_cv_irix_exported_symbol=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 $as_echo "$lt_cv_irix_exported_symbol" >&6; } if test "$lt_cv_irix_exported_symbol" = yes; then archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' fi else archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' fi archive_cmds_need_lc='no' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: inherit_rpath=yes link_all_deplibs=yes ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; newsos6) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: hardcode_shlibpath_var=no ;; *nto* | *qnx*) ;; openbsd*) if test -f /usr/libexec/ld.so; then hardcode_direct=yes hardcode_shlibpath_var=no hardcode_direct_absolute=yes if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' hardcode_libdir_flag_spec='${wl}-rpath,$libdir' export_dynamic_flag_spec='${wl}-E' else case $host_os in openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-R$libdir' ;; *) archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ;; esac fi else ld_shlibs=no fi ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' fi archive_cmds_need_lc='no' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' # Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec='-rpath $libdir' fi archive_cmds_need_lc='no' hardcode_libdir_separator=: ;; solaris*) no_undefined_flag=' -z defs' if test "$GCC" = yes; then wlarc='${wl}' archive_cmds='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' else case `$CC -V 2>&1` in *"Compilers 5.0"*) wlarc='' archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' ;; *) wlarc='${wl}' archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ;; esac fi hardcode_libdir_flag_spec='-R$libdir' hardcode_shlibpath_var=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. GCC discards it without `$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test "$GCC" = yes; then whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' else whole_archive_flag_spec='-z allextract$convenience -z defaultextract' fi ;; esac link_all_deplibs=yes ;; sunos4*) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; sysv4) case $host_vendor in sni) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' reload_cmds='$CC -r -o $output$reload_objs' hardcode_direct=no ;; motorola) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' hardcode_shlibpath_var=no ;; sysv4.3*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no export_dynamic_flag_spec='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ld_shlibs=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) no_undefined_flag='${wl}-z,text' archive_cmds_need_lc=no hardcode_shlibpath_var=no runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. no_undefined_flag='${wl}-z,text' allow_undefined_flag='${wl}-z,nodefs' archive_cmds_need_lc=no hardcode_shlibpath_var=no hardcode_libdir_flag_spec='${wl}-R,$libdir' hardcode_libdir_separator=':' link_all_deplibs=yes export_dynamic_flag_spec='${wl}-Bexport' runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; *) ld_shlibs=no ;; esac if test x$host_vendor = xsni; then case $host in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) export_dynamic_flag_spec='${wl}-Blargedynsym' ;; esac fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 $as_echo "$ld_shlibs" >&6; } test "$ld_shlibs" = no && can_build_shared=no with_gnu_ld=$with_gnu_ld # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc" in x|xyes) # Assume -lc should be added archive_cmds_need_lc=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 $as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } if ${lt_cv_archive_cmds_need_lc+:} false; then : $as_echo_n "(cached) " >&6 else $RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl pic_flag=$lt_prog_compiler_pic compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag allow_undefined_flag= if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then lt_cv_archive_cmds_need_lc=no else lt_cv_archive_cmds_need_lc=yes fi allow_undefined_flag=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 $as_echo "$lt_cv_archive_cmds_need_lc" >&6; } archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc ;; esac fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 $as_echo_n "checking dynamic linker characteristics... " >&6; } if test "$GCC" = yes; then case $host_os in darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; *) lt_awk_arg="/^libraries:/" ;; esac case $host_os in mingw* | cegcc*) lt_sed_strip_eq="s,=\([A-Za-z]:\),\1,g" ;; *) lt_sed_strip_eq="s,=/,/,g" ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` case $lt_search_path_spec in *\;*) # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` ;; *) lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` ;; esac # Ok, now we have the path, separated by spaces, we can step through it # and add multilib dir if necessary. lt_tmp_lt_search_path_spec= lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` for lt_sys_path in $lt_search_path_spec; do if test -d "$lt_sys_path/$lt_multi_os_dir"; then lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" else test -d "$lt_sys_path" && \ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' BEGIN {RS=" "; FS="/|\n";} { lt_foo=""; lt_count=0; for (lt_i = NF; lt_i > 0; lt_i--) { if ($lt_i != "" && $lt_i != ".") { if ($lt_i == "..") { lt_count++; } else { if (lt_count == 0) { lt_foo="/" $lt_i lt_foo; } else { lt_count--; } } } } if (lt_foo != "") { lt_freq[lt_foo]++; } if (lt_freq[lt_foo] == 1) { print lt_foo; } }'` # AWK program above erroneously prepends '/' to C:/dos/paths # for these hosts. case $host_os in mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ $SED 's,/\([A-Za-z]:\),\1,g'` ;; esac sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix[4-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux # correct to gnu/linux during the next big refactor need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$cc_basename in yes,*) # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; esac dynamic_linker='Win32 ld.exe' ;; *,cl*) # Native MSVC libname_spec='$name' soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' library_names_spec='${libname}.dll.lib' case $build_os in mingw*) sys_lib_search_path_spec= lt_save_ifs=$IFS IFS=';' for lt_path in $LIB do IFS=$lt_save_ifs # Let DOS variable expansion print the short 8.3 style file name. lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" done IFS=$lt_save_ifs # Convert to MSYS style. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form # but this time dos style (no spaces!) so that the unix form looks # like /cygdrive/c/PROGRA~1:/cygdr... sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) sys_lib_search_path_spec="$LIB" if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # FIXME: find the short name or the path components, as spaces are # common. (e.g. "Program Files" -> "PROGRA~1") ;; esac # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes dynamic_linker='Win32 link.exe' ;; *) # Assume MSVC wrapper library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[23].*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; haiku*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no dynamic_linker="$host_os runtime_loader" library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LIBRARY_PATH shlibpath_overrides_runpath=yes sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555, ... postinstall_cmds='chmod 555 $lib' # or fails outright, so override atomically: install_override_mode=555 ;; interix[3-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH if ${lt_cv_shlibpath_overrides_runpath+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : lt_cv_shlibpath_overrides_runpath=yes fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS libdir=$save_libdir fi shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsdelf*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='NetBSD ld.elf_so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd*) version_type=sunos sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. case $host_os in openbsd3.3 | openbsd3.3.*) need_version=yes ;; *) need_version=no ;; esac library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[89] | openbsd2.[89].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=freebsd-elf need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test "$with_gnu_ld" = yes; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; uts4*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 $as_echo "$dynamic_linker" >&6; } test "$dynamic_linker" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" fi if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 $as_echo_n "checking how to hardcode library paths into programs... " >&6; } hardcode_action= if test -n "$hardcode_libdir_flag_spec" || test -n "$runpath_var" || test "X$hardcode_automatic" = "Xyes" ; then # We can hardcode non-existent directories. if test "$hardcode_direct" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no && test "$hardcode_minus_L" != no; then # Linking always hardcodes the temporary library directory. hardcode_action=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action=unsupported fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 $as_echo "$hardcode_action" >&6; } if test "$hardcode_action" = relink || test "$inherit_rpath" = yes; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi if test "x$enable_dlopen" != xyes; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen="load_add_on" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32* | cegcc*) lt_cv_dlopen="LoadLibrary" lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen="dlopen" lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 $as_echo_n "checking for dlopen in -ldl... " >&6; } if ${ac_cv_lib_dl_dlopen+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dl_dlopen=yes else ac_cv_lib_dl_dlopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 $as_echo "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = xyes; then : lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else lt_cv_dlopen="dyld" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes fi ;; *) ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" if test "x$ac_cv_func_shl_load" = xyes; then : lt_cv_dlopen="shl_load" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 $as_echo_n "checking for shl_load in -ldld... " >&6; } if ${ac_cv_lib_dld_shl_load+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char shl_load (); int main () { return shl_load (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dld_shl_load=yes else ac_cv_lib_dld_shl_load=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 $as_echo "$ac_cv_lib_dld_shl_load" >&6; } if test "x$ac_cv_lib_dld_shl_load" = xyes; then : lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" else ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" if test "x$ac_cv_func_dlopen" = xyes; then : lt_cv_dlopen="dlopen" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 $as_echo_n "checking for dlopen in -ldl... " >&6; } if ${ac_cv_lib_dl_dlopen+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dl_dlopen=yes else ac_cv_lib_dl_dlopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 $as_echo "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = xyes; then : lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 $as_echo_n "checking for dlopen in -lsvld... " >&6; } if ${ac_cv_lib_svld_dlopen+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsvld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_svld_dlopen=yes else ac_cv_lib_svld_dlopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 $as_echo "$ac_cv_lib_svld_dlopen" >&6; } if test "x$ac_cv_lib_svld_dlopen" = xyes; then : lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 $as_echo_n "checking for dld_link in -ldld... " >&6; } if ${ac_cv_lib_dld_dld_link+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dld_link (); int main () { return dld_link (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dld_dld_link=yes else ac_cv_lib_dld_dld_link=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 $as_echo "$ac_cv_lib_dld_dld_link" >&6; } if test "x$ac_cv_lib_dld_dld_link" = xyes; then : lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" fi fi fi fi fi fi ;; esac if test "x$lt_cv_dlopen" != xno; then enable_dlopen=yes else enable_dlopen=no fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS="$CPPFLAGS" test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS="$LDFLAGS" wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS="$LIBS" LIBS="$lt_cv_dlopen_libs $LIBS" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 $as_echo_n "checking whether a program can dlopen itself... " >&6; } if ${lt_cv_dlopen_self+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF #line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* When -fvisbility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif int fnord () { return 42; } int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else { if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; } _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; esac else : # compilation failed lt_cv_dlopen_self=no fi fi rm -fr conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 $as_echo "$lt_cv_dlopen_self" >&6; } if test "x$lt_cv_dlopen_self" = xyes; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 $as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } if ${lt_cv_dlopen_self_static+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self_static=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF #line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* When -fvisbility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif int fnord () { return 42; } int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else { if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; } _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; esac else : # compilation failed lt_cv_dlopen_self_static=no fi fi rm -fr conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 $as_echo "$lt_cv_dlopen_self_static" >&6; } fi CPPFLAGS="$save_CPPFLAGS" LDFLAGS="$save_LDFLAGS" LIBS="$save_LIBS" ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi striplib= old_striplib= { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 $as_echo_n "checking whether stripping libraries is possible... " >&6; } if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP" ; then striplib="$STRIP -x" old_striplib="$STRIP -S" { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi ;; *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } ;; esac fi # Report which library types will actually be built { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 $as_echo_n "checking if libtool supports shared libraries... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 $as_echo "$can_build_shared" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 $as_echo_n "checking whether to build shared libraries... " >&6; } test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[4-9]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 $as_echo "$enable_shared" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 $as_echo_n "checking whether to build static libraries... " >&6; } # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 $as_echo "$enable_static" >&6; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CC="$lt_save_CC" ac_config_commands="$ac_config_commands libtool" # Only expand once: # # by Marcelo Magallon # # Turn around -rpath problem with libtool 1.0c # # This define should be improbable enough to not conflict with anything. # echo host=$host # case ${host} in # *-linux-gnu | *-apple-darwin*) # AC_MSG_RESULT([Fixing libtool for -rpath problems.]) # sed < libtool > libtool-2 \ # 's/^hardcode_libdir_flag_spec.*$'/'hardcode_libdir_flag_spec=""/' # mv libtool-2 libtool # chmod 755 libtool # ;; # esac # Check whether --enable-warnings was given. if test "${enable_warnings+set}" = set; then : enableval=$enable_warnings; else enable_warnings=yes fi if test "x$enable_warnings" != xno; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 $as_echo_n "checking for grep that handles long lines and -e... " >&6; } if ${ac_cv_path_GREP+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_GREP"; then as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_GREP=$GREP fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 $as_echo "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" ansi="" if test "x$ansi" = "x"; then : msg="for C compiler warning flags" else msg="for C compiler warning and ANSI conformance flags" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking $msg" >&5 $as_echo_n "checking $msg... " >&6; } if ${vl_cv_prog_cc_warnings+:} false; then : $as_echo_n "(cached) " >&6 else vl_cv_prog_cc_warnings="" if test "x$CC" != "x"; then : cat > conftest.c <&1 | $GREP -i "WorkShop" > /dev/null 2>&1 && "$CC" -c -v -Xc conftest.c > /dev/null 2>&1 && test -f conftest.o; then : if test "x$ansi" = "x"; then : vl_cv_prog_cc_warnings="-v" else vl_cv_prog_cc_warnings="-v -Xc" fi elif "$CC" -V 2>&1 | $GREP -i "Digital UNIX Compiler" > /dev/null 2>&1 && "$CC" -c -verbose -w0 -warnprotos -std1 conftest.c > /dev/null 2>&1 && test -f conftest.o; then : if test "x$ansi" = "x"; then : vl_cv_prog_cc_warnings="-verbose -w0 -warnprotos" else vl_cv_prog_cc_warnings="-verbose -w0 -warnprotos -std1" fi elif "$CC" 2>&1 | $GREP -i "C for AIX Compiler" > /dev/null 2>&1 && "$CC" -c -qlanglvl=ansi -qinfo=all conftest.c > /dev/null 2>&1 && test -f conftest.o; then : if test "x$ansi" = "x"; then : vl_cv_prog_cc_warnings="-qsrcmsg -qinfo=all:noppt:noppc:noobs:nocnd" else vl_cv_prog_cc_warnings="-qsrcmsg -qinfo=all:noppt:noppc:noobs:nocnd -qlanglvl=ansi" fi elif "$CC" -version 2>&1 | $GREP -i "MIPSpro Compilers" > /dev/null 2>&1 && "$CC" -c -fullwarn -ansi -ansiE conftest.c > /dev/null 2>&1 && test -f conftest.o; then : if test "x$ansi" = "x"; then : vl_cv_prog_cc_warnings="-fullwarn" else vl_cv_prog_cc_warnings="-fullwarn -ansi -ansiE" fi elif what "$CC" 2>&1 | $GREP -i "HP C Compiler" > /dev/null 2>&1 && "$CC" -c -Aa +w1 conftest.c > /dev/null 2>&1 && test -f conftest.o; then : if test "x$ansi" = "x"; then : vl_cv_prog_cc_warnings="+w1" else vl_cv_prog_cc_warnings="+w1 -Aa" fi elif "$CC" -V 2>&1 | $GREP "/SX" > /dev/null 2>&1 && "$CC" -c -pvctl,fullmsg -Xc conftest.c > /dev/null 2>&1 && test -f conftest.o; then : if test "x$ansi" = "x"; then : vl_cv_prog_cc_warnings="-pvctl,fullmsg" else vl_cv_prog_cc_warnings="-pvctl,fullmsg -Xc" fi elif "$CC" -V 2>&1 | $GREP -i "Cray" > /dev/null 2>&1 && "$CC" -c -h msglevel 2 conftest.c > /dev/null 2>&1 && test -f conftest.o; then : if test "x$ansi" = "x"; then : vl_cv_prog_cc_warnings="-h msglevel 2" else vl_cv_prog_cc_warnings="-h msglevel 2 -h conform" fi fi rm -f conftest.* fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $vl_cv_prog_cc_warnings" >&5 $as_echo "$vl_cv_prog_cc_warnings" >&6; } if test "x$vl_cv_prog_cc_warnings" != "x"; then : CFLAGS="$vl_cv_prog_cc_warnings $CFLAGS" fi fi # Check whether --with-libcurl was given. if test "${with_libcurl+set}" = set; then : withval=$with_libcurl; _libcurl_with=$withval else _libcurl_with=yes fi if test "$_libcurl_with" != "no" ; then for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AWK+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_AWK="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 $as_echo "$AWK" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AWK" && break done _libcurl_version_parse="eval $AWK '{split(\$NF,A,\".\"); X=256*256*A[1]+256*A[2]+A[3]; print X;}'" _libcurl_try_link=yes if test -d "$_libcurl_with" ; then LIBCURL_CPPFLAGS="-I$withval/include" _libcurl_ldflags="-L$withval/lib" # Extract the first word of ""$withval/bin/curl-config"", so it can be a program name with args. set dummy "$withval/bin/curl-config"; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path__libcurl_config+:} false; then : $as_echo_n "(cached) " >&6 else case $_libcurl_config in [\\/]* | ?:[\\/]*) ac_cv_path__libcurl_config="$_libcurl_config" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path__libcurl_config="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi _libcurl_config=$ac_cv_path__libcurl_config if test -n "$_libcurl_config"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $_libcurl_config" >&5 $as_echo "$_libcurl_config" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi else # Extract the first word of "curl-config", so it can be a program name with args. set dummy curl-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path__libcurl_config+:} false; then : $as_echo_n "(cached) " >&6 else case $_libcurl_config in [\\/]* | ?:[\\/]*) ac_cv_path__libcurl_config="$_libcurl_config" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path__libcurl_config="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi _libcurl_config=$ac_cv_path__libcurl_config if test -n "$_libcurl_config"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $_libcurl_config" >&5 $as_echo "$_libcurl_config" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test x$_libcurl_config != "x" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the version of libcurl" >&5 $as_echo_n "checking for the version of libcurl... " >&6; } if ${libcurl_cv_lib_curl_version+:} false; then : $as_echo_n "(cached) " >&6 else libcurl_cv_lib_curl_version=`$_libcurl_config --version | $AWK '{print $2}'` fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $libcurl_cv_lib_curl_version" >&5 $as_echo "$libcurl_cv_lib_curl_version" >&6; } _libcurl_version=`echo $libcurl_cv_lib_curl_version | $_libcurl_version_parse` _libcurl_wanted=`echo 0 | $_libcurl_version_parse` if test $_libcurl_wanted -gt 0 ; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libcurl >= version " >&5 $as_echo_n "checking for libcurl >= version ... " >&6; } if ${libcurl_cv_lib_version_ok+:} false; then : $as_echo_n "(cached) " >&6 else if test $_libcurl_version -ge $_libcurl_wanted ; then libcurl_cv_lib_version_ok=yes else libcurl_cv_lib_version_ok=no fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $libcurl_cv_lib_version_ok" >&5 $as_echo "$libcurl_cv_lib_version_ok" >&6; } fi if test $_libcurl_wanted -eq 0 || test x$libcurl_cv_lib_version_ok = xyes ; then if test x"$LIBCURL_CPPFLAGS" = "x" ; then LIBCURL_CPPFLAGS=`$_libcurl_config --cflags` fi if test x"$LIBCURL" = "x" ; then # libcurl-config --libs gives a ridiculous number of libraries # check to see if we can actually link just using -lcurl LIBCURL=${LIBCURL-"$_libcurl_ldflags -lcurl"} { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether libcurl just needs -lcurl" >&5 $as_echo_n "checking whether libcurl just needs -lcurl... " >&6; } if ${libcurl_cv_lib_curl_only_needs_minus_l_curl+:} false; then : $as_echo_n "(cached) " >&6 else _libcurl_save_cppflags=$CPPFLAGS CPPFLAGS="$LIBCURL_CPPFLAGS $CPPFLAGS" _libcurl_save_libs=$LIBS LIBS="$LIBCURL $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { /* Try and use a few common options to force a failure if we are missing symbols or can't link. */ int x; curl_easy_setopt(NULL,CURLOPT_URL,NULL); x=CURL_ERROR_SIZE; x=CURLOPT_WRITEFUNCTION; x=CURLOPT_FILE; x=CURLOPT_ERRORBUFFER; x=CURLOPT_STDERR; x=CURLOPT_VERBOSE; ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : libcurl_cv_lib_curl_only_needs_minus_l_curl=yes else libcurl_cv_lib_curl_only_needs_minus_l_curl=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext CPPFLAGS=$_libcurl_save_cppflags LIBS=$_libcurl_save_libs unset _libcurl_save_cppflags unset _libcurl_save_libs fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $libcurl_cv_lib_curl_only_needs_minus_l_curl" >&5 $as_echo "$libcurl_cv_lib_curl_only_needs_minus_l_curl" >&6; } if test "x$libcurl_cv_lib_curl_only_needs_minus_l_curl" != xyes ; then LIBCURL=`$_libcurl_config --libs` fi # This is so silly, but Apple actually has a bug in their # curl-config script. Fixed in Tiger, but there are still # lots of Panther installs around. case "${host}" in powerpc-apple-darwin7*) LIBCURL=`echo $LIBCURL | sed -e 's|-arch i386||g'` ;; esac fi # All curl-config scripts support --feature _libcurl_features=`$_libcurl_config --feature` # Is it modern enough to have --protocols? (7.12.4) if test $_libcurl_version -ge 461828 ; then _libcurl_protocols=`$_libcurl_config --protocols` fi else _libcurl_try_link=no fi unset _libcurl_wanted fi if test $_libcurl_try_link = yes ; then # we didn't find curl-config, so let's see if the user-supplied # link line (or failing that, "-lcurl") is enough. LIBCURL=${LIBCURL-"$_libcurl_ldflags -lcurl"} { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether libcurl is usable" >&5 $as_echo_n "checking whether libcurl is usable... " >&6; } if ${libcurl_cv_lib_curl_usable+:} false; then : $as_echo_n "(cached) " >&6 else _libcurl_save_cppflags=$CPPFLAGS CPPFLAGS="$LIBCURL_CPPFLAGS $CPPFLAGS" _libcurl_save_libs=$LIBS LIBS="$LIBCURL $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { /* Try and use a few common options to force a failure if we are missing symbols or can't link. */ int x; curl_easy_setopt(NULL,CURLOPT_URL,NULL); x=CURL_ERROR_SIZE; x=CURLOPT_WRITEFUNCTION; x=CURLOPT_FILE; x=CURLOPT_ERRORBUFFER; x=CURLOPT_STDERR; x=CURLOPT_VERBOSE; ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : libcurl_cv_lib_curl_usable=yes else libcurl_cv_lib_curl_usable=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext CPPFLAGS=$_libcurl_save_cppflags LIBS=$_libcurl_save_libs unset _libcurl_save_cppflags unset _libcurl_save_libs fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $libcurl_cv_lib_curl_usable" >&5 $as_echo "$libcurl_cv_lib_curl_usable" >&6; } if test $libcurl_cv_lib_curl_usable = yes ; then # Does curl_free() exist in this version of libcurl? # If not, fake it with free() _libcurl_save_cppflags=$CPPFLAGS CPPFLAGS="$CPPFLAGS $LIBCURL_CPPFLAGS" _libcurl_save_libs=$LIBS LIBS="$LIBS $LIBCURL" ac_fn_c_check_func "$LINENO" "curl_free" "ac_cv_func_curl_free" if test "x$ac_cv_func_curl_free" = xyes; then : else $as_echo "#define curl_free free" >>confdefs.h fi CPPFLAGS=$_libcurl_save_cppflags LIBS=$_libcurl_save_libs unset _libcurl_save_cppflags unset _libcurl_save_libs $as_echo "#define HAVE_LIBCURL 1" >>confdefs.h for _libcurl_feature in $_libcurl_features ; do cat >>confdefs.h <<_ACEOF #define `$as_echo "libcurl_feature_$_libcurl_feature" | $as_tr_cpp` 1 _ACEOF eval `$as_echo "libcurl_feature_$_libcurl_feature" | $as_tr_sh`=yes done if test "x$_libcurl_protocols" = "x" ; then # We don't have --protocols, so just assume that all # protocols are available _libcurl_protocols="HTTP FTP FILE TELNET LDAP DICT" if test x$libcurl_feature_SSL = xyes ; then _libcurl_protocols="$_libcurl_protocols HTTPS" # FTPS wasn't standards-compliant until version # 7.11.0 if test $_libcurl_version -ge 461568; then _libcurl_protocols="$_libcurl_protocols FTPS" fi fi fi for _libcurl_protocol in $_libcurl_protocols ; do cat >>confdefs.h <<_ACEOF #define `$as_echo "libcurl_protocol_$_libcurl_protocol" | $as_tr_cpp` 1 _ACEOF eval `$as_echo "libcurl_protocol_$_libcurl_protocol" | $as_tr_sh`=yes done else unset LIBCURL unset LIBCURL_CPPFLAGS fi fi unset _libcurl_try_link unset _libcurl_version_parse unset _libcurl_config unset _libcurl_feature unset _libcurl_features unset _libcurl_protocol unset _libcurl_protocols unset _libcurl_version unset _libcurl_ldflags fi if test x$_libcurl_with = xno || test x$libcurl_cv_lib_curl_usable != xyes ; then # This is the IF-NO path have_curl=no else # This is the IF-YES path have_curl=yes fi unset _libcurl_with # Check whether --with-zlib was given. if test "${with_zlib+set}" = set; then : withval=$with_zlib; _zlib_with=$withval else _zlib_with="no" fi ZLIB_ROOT="" if test "$_zlib_with" != "no" then if test -f "$_zlib_with/include/zlib.h" then ZLIB_ROOT=$_zlib_with fi fi # Check if it's a working library zlib_ok=no if test "$ZLIB_ROOT" != "" then _cppflags=$CPPFLAGS CPPFLAGS="$CPPFLAGS -I${ZLIB_ROOT}/include" _ldflags=$LDFLAGS LDFLAGS="$LFDLAGS -L${ZLIB_ROOT}/lib" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking for inflateEnd in -lz" >&5 $as_echo_n "checking for inflateEnd in -lz... " >&6; } if ${ac_cv_lib_z_inflateEnd+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lz $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char inflateEnd (); int main () { return inflateEnd (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_z_inflateEnd=yes else ac_cv_lib_z_inflateEnd=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_z_inflateEnd" >&5 $as_echo "$ac_cv_lib_z_inflateEnd" >&6; } if test "x$ac_cv_lib_z_inflateEnd" = xyes; then : ac_fn_c_check_header_mongrel "$LINENO" "zlib.h" "ac_cv_header_zlib_h" "$ac_includes_default" if test "x$ac_cv_header_zlib_h" = xyes; then : zlib_ok=yes else zlib_ok=no fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test "$zlib_ok" != "yes" then # Backout and whinge CPPFLAGS=$_cppflags LDFLAGS=$_ldflags { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \"--with-zlib specified" >&5 $as_echo "$as_me: WARNING: \"--with-zlib specified" >&2;} fi else # Maybe it works "out of the box"? { $as_echo "$as_me:${as_lineno-$LINENO}: checking for inflateEnd in -lz" >&5 $as_echo_n "checking for inflateEnd in -lz... " >&6; } if ${ac_cv_lib_z_inflateEnd+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lz $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char inflateEnd (); int main () { return inflateEnd (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_z_inflateEnd=yes else ac_cv_lib_z_inflateEnd=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_z_inflateEnd" >&5 $as_echo "$ac_cv_lib_z_inflateEnd" >&6; } if test "x$ac_cv_lib_z_inflateEnd" = xyes; then : ac_fn_c_check_header_mongrel "$LINENO" "zlib.h" "ac_cv_header_zlib_h" "$ac_includes_default" if test "x$ac_cv_header_zlib_h" = xyes; then : zlib_ok=yes else zlib_ok=no fi fi fi if test "$zlib_ok" = "yes" then $as_echo "#define HAVE_ZLIB 1" >>confdefs.h if test "$ZLIB_ROOT" != "" then LIBZ="-L${ZLIB_ROOT}/lib -lz" else LIBZ=-lz fi else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \"No functioning zlib found\"" >&5 $as_echo "$as_me: WARNING: \"No functioning zlib found\"" >&2;} fi # Not sure how many of these are needed, but it's belt-and-braces mode if test "$zlib_ok" = "yes"; then HAVE_ZLIB_TRUE= HAVE_ZLIB_FALSE='#' else HAVE_ZLIB_TRUE='#' HAVE_ZLIB_FALSE= fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing gethostbyname" >&5 $as_echo_n "checking for library containing gethostbyname... " >&6; } if ${ac_cv_search_gethostbyname+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char gethostbyname (); int main () { return gethostbyname (); ; return 0; } _ACEOF for ac_lib in '' nsl; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_gethostbyname=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_gethostbyname+:} false; then : break fi done if ${ac_cv_search_gethostbyname+:} false; then : else ac_cv_search_gethostbyname=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_gethostbyname" >&5 $as_echo "$ac_cv_search_gethostbyname" >&6; } ac_res=$ac_cv_search_gethostbyname if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing socket" >&5 $as_echo_n "checking for library containing socket... " >&6; } if ${ac_cv_search_socket+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char socket (); int main () { return socket (); ; return 0; } _ACEOF for ac_lib in '' socket; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_socket=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_socket+:} false; then : break fi done if ${ac_cv_search_socket+:} false; then : else ac_cv_search_socket=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_socket" >&5 $as_echo "$ac_cv_search_socket" >&6; } ac_res=$ac_cv_search_socket if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for socket in -lsocket" >&5 $as_echo_n "checking for socket in -lsocket... " >&6; } if ${ac_cv_lib_socket_socket+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsocket -lnsl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char socket (); int main () { return socket (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_socket_socket=yes else ac_cv_lib_socket_socket=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_socket" >&5 $as_echo "$ac_cv_lib_socket_socket" >&6; } if test "x$ac_cv_lib_socket_socket" = xyes; then : LIBS="-lsocket -lnsl $LIBS" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for BZ2_bzBuffToBuffCompress in -lbz2" >&5 $as_echo_n "checking for BZ2_bzBuffToBuffCompress in -lbz2... " >&6; } if ${ac_cv_lib_bz2_BZ2_bzBuffToBuffCompress+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lbz2 $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char BZ2_bzBuffToBuffCompress (); int main () { return BZ2_bzBuffToBuffCompress (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_bz2_BZ2_bzBuffToBuffCompress=yes else ac_cv_lib_bz2_BZ2_bzBuffToBuffCompress=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bz2_BZ2_bzBuffToBuffCompress" >&5 $as_echo "$ac_cv_lib_bz2_BZ2_bzBuffToBuffCompress" >&6; } if test "x$ac_cv_lib_bz2_BZ2_bzBuffToBuffCompress" = xyes; then : LIBS="-lbz2 $LIBS" $as_echo "#define HAVE_LIBBZ2 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for lzma_easy_buffer_encode in -llzma" >&5 $as_echo_n "checking for lzma_easy_buffer_encode in -llzma... " >&6; } if ${ac_cv_lib_lzma_lzma_easy_buffer_encode+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-llzma $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char lzma_easy_buffer_encode (); int main () { return lzma_easy_buffer_encode (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_lzma_lzma_easy_buffer_encode=yes else ac_cv_lib_lzma_lzma_easy_buffer_encode=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_lzma_lzma_easy_buffer_encode" >&5 $as_echo "$ac_cv_lib_lzma_lzma_easy_buffer_encode" >&6; } if test "x$ac_cv_lib_lzma_lzma_easy_buffer_encode" = xyes; then : LIBS="-llzma $LIBS" $as_echo "#define HAVE_LIBLZMA 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5 $as_echo_n "checking whether byte ordering is bigendian... " >&6; } if ${ac_cv_c_bigendian+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_c_bigendian=unknown # See if we're dealing with a universal compiler. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifndef __APPLE_CC__ not a universal capable compiler #endif typedef int dummy; _ACEOF if ac_fn_c_try_compile "$LINENO"; then : # Check for potential -arch flags. It is not universal unless # there are at least two -arch flags with different values. ac_arch= ac_prev= for ac_word in $CC $CFLAGS $CPPFLAGS $LDFLAGS; do if test -n "$ac_prev"; then case $ac_word in i?86 | x86_64 | ppc | ppc64) if test -z "$ac_arch" || test "$ac_arch" = "$ac_word"; then ac_arch=$ac_word else ac_cv_c_bigendian=universal break fi ;; esac ac_prev= elif test "x$ac_word" = "x-arch"; then ac_prev=arch fi done fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_c_bigendian = unknown; then # See if sys/param.h defines the BYTE_ORDER macro. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { #if ! (defined BYTE_ORDER && defined BIG_ENDIAN \ && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \ && LITTLE_ENDIAN) bogus endian macros #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : # It does; now see whether it defined to BIG_ENDIAN or not. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { #if BYTE_ORDER != BIG_ENDIAN not big endian #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_c_bigendian=yes else ac_cv_c_bigendian=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi if test $ac_cv_c_bigendian = unknown; then # See if defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris). cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { #if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN) bogus endian macros #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : # It does; now see whether it defined to _BIG_ENDIAN or not. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { #ifndef _BIG_ENDIAN not big endian #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_c_bigendian=yes else ac_cv_c_bigendian=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi if test $ac_cv_c_bigendian = unknown; then # Compile a test program. if test "$cross_compiling" = yes; then : # Try to guess by grepping values from an object file. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ short int ascii_mm[] = { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; short int ascii_ii[] = { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; int use_ascii (int i) { return ascii_mm[i] + ascii_ii[i]; } short int ebcdic_ii[] = { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; short int ebcdic_mm[] = { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; int use_ebcdic (int i) { return ebcdic_mm[i] + ebcdic_ii[i]; } extern int foo; int main () { return use_ascii (foo) == use_ebcdic (foo); ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then ac_cv_c_bigendian=yes fi if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then if test "$ac_cv_c_bigendian" = unknown; then ac_cv_c_bigendian=no else # finding both strings is unlikely to happen, but who knows? ac_cv_c_bigendian=unknown fi fi fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default int main () { /* Are we little or big endian? From Harbison&Steele. */ union { long int l; char c[sizeof (long int)]; } u; u.l = 1; return u.c[sizeof (long int) - 1] == 1; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ac_cv_c_bigendian=no else ac_cv_c_bigendian=yes fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5 $as_echo "$ac_cv_c_bigendian" >&6; } case $ac_cv_c_bigendian in #( yes) SET_ENDIAN="#define SP_BIG_ENDIAN";; #( no) SET_ENDIAN="#define SP_LITTLE_ENDIAN" ;; #( universal) SET_ENDIAN="" ;; #( *) SET_ENDIAN="" ;; esac # # Checks whether we the ability to use va_copy(). # AC_DEFINEs HAVE_VA_COPY if you do. # ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include void va_test(va_list ap) { va_list ap_local; va_copy(ap_local, ap); va_end(ap_local); } int main(void) { return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : $as_echo "#define HAVE_VA_COPY 1" >>confdefs.h fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if ${ac_cv_header_stdc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_stdc=yes else ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : else ac_cv_header_stdc=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then $as_echo "#define STDC_HEADERS 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sys/wait.h that is POSIX.1 compatible" >&5 $as_echo_n "checking for sys/wait.h that is POSIX.1 compatible... " >&6; } if ${ac_cv_header_sys_wait_h+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #ifndef WEXITSTATUS # define WEXITSTATUS(stat_val) ((unsigned int) (stat_val) >> 8) #endif #ifndef WIFEXITED # define WIFEXITED(stat_val) (((stat_val) & 255) == 0) #endif int main () { int s; wait (&s); s = WIFEXITED (s) ? WEXITSTATUS (s) : 1; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_sys_wait_h=yes else ac_cv_header_sys_wait_h=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_sys_wait_h" >&5 $as_echo "$ac_cv_header_sys_wait_h" >&6; } if test $ac_cv_header_sys_wait_h = yes; then $as_echo "#define HAVE_SYS_WAIT_H 1" >>confdefs.h fi for ac_header in fcntl.h limits.h unistd.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done ac_fn_c_check_header_mongrel "$LINENO" "zlib.h" "ac_cv_header_zlib_h" "$ac_includes_default" if test "x$ac_cv_header_zlib_h" = xyes; then : fi ac_fn_c_check_header_mongrel "$LINENO" "stdio_ext.h" "ac_cv_header_stdio_ext_h" "$ac_includes_default" if test "x$ac_cv_header_stdio_ext_h" = xyes; then : SET_STDIO_EXT="#define HAVE_STDIO_EXT_H" else SET_STDIO_EXT= fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5 $as_echo_n "checking whether byte ordering is bigendian... " >&6; } if ${ac_cv_c_bigendian+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_c_bigendian=unknown # See if we're dealing with a universal compiler. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifndef __APPLE_CC__ not a universal capable compiler #endif typedef int dummy; _ACEOF if ac_fn_c_try_compile "$LINENO"; then : # Check for potential -arch flags. It is not universal unless # there are at least two -arch flags with different values. ac_arch= ac_prev= for ac_word in $CC $CFLAGS $CPPFLAGS $LDFLAGS; do if test -n "$ac_prev"; then case $ac_word in i?86 | x86_64 | ppc | ppc64) if test -z "$ac_arch" || test "$ac_arch" = "$ac_word"; then ac_arch=$ac_word else ac_cv_c_bigendian=universal break fi ;; esac ac_prev= elif test "x$ac_word" = "x-arch"; then ac_prev=arch fi done fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_c_bigendian = unknown; then # See if sys/param.h defines the BYTE_ORDER macro. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { #if ! (defined BYTE_ORDER && defined BIG_ENDIAN \ && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \ && LITTLE_ENDIAN) bogus endian macros #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : # It does; now see whether it defined to BIG_ENDIAN or not. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { #if BYTE_ORDER != BIG_ENDIAN not big endian #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_c_bigendian=yes else ac_cv_c_bigendian=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi if test $ac_cv_c_bigendian = unknown; then # See if defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris). cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { #if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN) bogus endian macros #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : # It does; now see whether it defined to _BIG_ENDIAN or not. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { #ifndef _BIG_ENDIAN not big endian #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_c_bigendian=yes else ac_cv_c_bigendian=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi if test $ac_cv_c_bigendian = unknown; then # Compile a test program. if test "$cross_compiling" = yes; then : # Try to guess by grepping values from an object file. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ short int ascii_mm[] = { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; short int ascii_ii[] = { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; int use_ascii (int i) { return ascii_mm[i] + ascii_ii[i]; } short int ebcdic_ii[] = { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; short int ebcdic_mm[] = { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; int use_ebcdic (int i) { return ebcdic_mm[i] + ebcdic_ii[i]; } extern int foo; int main () { return use_ascii (foo) == use_ebcdic (foo); ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then ac_cv_c_bigendian=yes fi if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then if test "$ac_cv_c_bigendian" = unknown; then ac_cv_c_bigendian=no else # finding both strings is unlikely to happen, but who knows? ac_cv_c_bigendian=unknown fi fi fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default int main () { /* Are we little or big endian? From Harbison&Steele. */ union { long int l; char c[sizeof (long int)]; } u; u.l = 1; return u.c[sizeof (long int) - 1] == 1; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ac_cv_c_bigendian=no else ac_cv_c_bigendian=yes fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5 $as_echo "$ac_cv_c_bigendian" >&6; } case $ac_cv_c_bigendian in #( yes) $as_echo "#define WORDS_BIGENDIAN 1" >>confdefs.h ;; #( no) ;; #( universal) $as_echo "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h ;; #( *) as_fn_error $? "unknown endianness presetting ac_cv_c_bigendian=no (or yes) will help" "$LINENO" 5 ;; esac # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. { $as_echo "$as_me:${as_lineno-$LINENO}: checking size of short" >&5 $as_echo_n "checking size of short... " >&6; } if ${ac_cv_sizeof_short+:} false; then : $as_echo_n "(cached) " >&6 else if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (short))" "ac_cv_sizeof_short" "$ac_includes_default"; then : else if test "$ac_cv_type_short" = yes; then { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot compute sizeof (short) See \`config.log' for more details" "$LINENO" 5; } else ac_cv_sizeof_short=0 fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_short" >&5 $as_echo "$ac_cv_sizeof_short" >&6; } cat >>confdefs.h <<_ACEOF #define SIZEOF_SHORT $ac_cv_sizeof_short _ACEOF # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. { $as_echo "$as_me:${as_lineno-$LINENO}: checking size of int" >&5 $as_echo_n "checking size of int... " >&6; } if ${ac_cv_sizeof_int+:} false; then : $as_echo_n "(cached) " >&6 else if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (int))" "ac_cv_sizeof_int" "$ac_includes_default"; then : else if test "$ac_cv_type_int" = yes; then { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot compute sizeof (int) See \`config.log' for more details" "$LINENO" 5; } else ac_cv_sizeof_int=0 fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_int" >&5 $as_echo "$ac_cv_sizeof_int" >&6; } cat >>confdefs.h <<_ACEOF #define SIZEOF_INT $ac_cv_sizeof_int _ACEOF # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. { $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long" >&5 $as_echo_n "checking size of long... " >&6; } if ${ac_cv_sizeof_long+:} false; then : $as_echo_n "(cached) " >&6 else if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long))" "ac_cv_sizeof_long" "$ac_includes_default"; then : else if test "$ac_cv_type_long" = yes; then { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot compute sizeof (long) See \`config.log' for more details" "$LINENO" 5; } else ac_cv_sizeof_long=0 fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long" >&5 $as_echo "$ac_cv_sizeof_long" >&6; } cat >>confdefs.h <<_ACEOF #define SIZEOF_LONG $ac_cv_sizeof_long _ACEOF { $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5 $as_echo_n "checking for inline... " >&6; } if ${ac_cv_c_inline+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_c_inline=no for ac_kw in inline __inline__ __inline; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifndef __cplusplus typedef int foo_t; static $ac_kw foo_t static_foo () {return 0; } $ac_kw foo_t foo () {return 0; } #endif _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_c_inline=$ac_kw fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext test "$ac_cv_c_inline" != no && break done fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5 $as_echo "$ac_cv_c_inline" >&6; } case $ac_cv_c_inline in inline | yes) ;; *) case $ac_cv_c_inline in no) ac_val=;; *) ac_val=$ac_cv_c_inline;; esac cat >>confdefs.h <<_ACEOF #ifndef __cplusplus #define inline $ac_val #endif _ACEOF ;; esac ac_fn_c_check_type "$LINENO" "mode_t" "ac_cv_type_mode_t" "$ac_includes_default" if test "x$ac_cv_type_mode_t" = xyes; then : else cat >>confdefs.h <<_ACEOF #define mode_t int _ACEOF fi # Check whether --enable-custom-buffering was given. if test "${enable_custom_buffering+set}" = set; then : enableval=$enable_custom_buffering; custombuffering=${enableval} else custombuffering=yes fi SET_CRAM_IO_CUSTOM_BUFFERING= if test ${custombuffering} = "yes" ; then SET_CRAM_IO_CUSTOM_BUFFERING="#define CRAM_IO_CUSTOM_BUFFERING" fi for ac_func in fileno do : ac_fn_c_check_func "$LINENO" "fileno" "ac_cv_func_fileno" if test "x$ac_cv_func_fileno" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_FILENO 1 _ACEOF fi done for ac_func in fstat do : ac_fn_c_check_func "$LINENO" "fstat" "ac_cv_func_fstat" if test "x$ac_cv_func_fstat" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_FSTAT 1 _ACEOF fi done # Check whether --enable-largefile was given. if test "${enable_largefile+set}" = set; then : enableval=$enable_largefile; fi if test "$enable_largefile" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5 $as_echo_n "checking for special C compiler options needed for large files... " >&6; } if ${ac_cv_sys_largefile_CC+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_sys_largefile_CC=no if test "$GCC" != yes; then ac_save_CC=$CC while :; do # IRIX 6.2 and later do not support large files by default, # so use the C compiler's -n32 option if that helps. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include /* Check that off_t can represent 2**63 - 1 correctly. We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ #define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : break fi rm -f core conftest.err conftest.$ac_objext CC="$CC -n32" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_sys_largefile_CC=' -n32'; break fi rm -f core conftest.err conftest.$ac_objext break done CC=$ac_save_CC rm -f conftest.$ac_ext fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5 $as_echo "$ac_cv_sys_largefile_CC" >&6; } if test "$ac_cv_sys_largefile_CC" != no; then CC=$CC$ac_cv_sys_largefile_CC fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5 $as_echo_n "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; } if ${ac_cv_sys_file_offset_bits+:} false; then : $as_echo_n "(cached) " >&6 else while :; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include /* Check that off_t can represent 2**63 - 1 correctly. We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ #define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_sys_file_offset_bits=no; break fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define _FILE_OFFSET_BITS 64 #include /* Check that off_t can represent 2**63 - 1 correctly. We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ #define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_sys_file_offset_bits=64; break fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_sys_file_offset_bits=unknown break done fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5 $as_echo "$ac_cv_sys_file_offset_bits" >&6; } case $ac_cv_sys_file_offset_bits in #( no | unknown) ;; *) cat >>confdefs.h <<_ACEOF #define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits _ACEOF ;; esac rm -rf conftest* if test $ac_cv_sys_file_offset_bits = unknown; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5 $as_echo_n "checking for _LARGE_FILES value needed for large files... " >&6; } if ${ac_cv_sys_large_files+:} false; then : $as_echo_n "(cached) " >&6 else while :; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include /* Check that off_t can represent 2**63 - 1 correctly. We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ #define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_sys_large_files=no; break fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define _LARGE_FILES 1 #include /* Check that off_t can represent 2**63 - 1 correctly. We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ #define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_sys_large_files=1; break fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_sys_large_files=unknown break done fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5 $as_echo "$ac_cv_sys_large_files" >&6; } case $ac_cv_sys_large_files in #( no | unknown) ;; *) cat >>confdefs.h <<_ACEOF #define _LARGE_FILES $ac_cv_sys_large_files _ACEOF ;; esac rm -rf conftest* fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGEFILE_SOURCE value needed for large files" >&5 $as_echo_n "checking for _LARGEFILE_SOURCE value needed for large files... " >&6; } if ${ac_cv_sys_largefile_source+:} false; then : $as_echo_n "(cached) " >&6 else while :; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include /* for off_t */ #include int main () { int (*fp) (FILE *, off_t, int) = fseeko; return fseeko (stdin, 0, 0) && fp (stdin, 0, 0); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_sys_largefile_source=no; break fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define _LARGEFILE_SOURCE 1 #include /* for off_t */ #include int main () { int (*fp) (FILE *, off_t, int) = fseeko; return fseeko (stdin, 0, 0) && fp (stdin, 0, 0); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_sys_largefile_source=1; break fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_cv_sys_largefile_source=unknown break done fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_source" >&5 $as_echo "$ac_cv_sys_largefile_source" >&6; } case $ac_cv_sys_largefile_source in #( no | unknown) ;; *) cat >>confdefs.h <<_ACEOF #define _LARGEFILE_SOURCE $ac_cv_sys_largefile_source _ACEOF ;; esac rm -rf conftest* # We used to try defining _XOPEN_SOURCE=500 too, to work around a bug # in glibc 2.1.3, but that breaks too many other things. # If you want fseeko and ftello with glibc, upgrade to a fixed glibc. if test $ac_cv_sys_largefile_source != unknown; then $as_echo "#define HAVE_FSEEKO 1" >>confdefs.h fi for ac_header in $ac_header_list do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default " if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_func in getpagesize do : ac_fn_c_check_func "$LINENO" "getpagesize" "ac_cv_func_getpagesize" if test "x$ac_cv_func_getpagesize" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_GETPAGESIZE 1 _ACEOF fi done { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working mmap" >&5 $as_echo_n "checking for working mmap... " >&6; } if ${ac_cv_func_mmap_fixed_mapped+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : ac_cv_func_mmap_fixed_mapped=no else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default /* malloc might have been renamed as rpl_malloc. */ #undef malloc /* Thanks to Mike Haertel and Jim Avera for this test. Here is a matrix of mmap possibilities: mmap private not fixed mmap private fixed at somewhere currently unmapped mmap private fixed at somewhere already mapped mmap shared not fixed mmap shared fixed at somewhere currently unmapped mmap shared fixed at somewhere already mapped For private mappings, we should verify that changes cannot be read() back from the file, nor mmap's back from the file at a different address. (There have been systems where private was not correctly implemented like the infamous i386 svr4.0, and systems where the VM page cache was not coherent with the file system buffer cache like early versions of FreeBSD and possibly contemporary NetBSD.) For shared mappings, we should conversely verify that changes get propagated back to all the places they're supposed to be. Grep wants private fixed already mapped. The main things grep needs to know about mmap are: * does it exist and is it safe to write into the mmap'd area * how to use it (BSD variants) */ #include #include #if !defined STDC_HEADERS && !defined HAVE_STDLIB_H char *malloc (); #endif /* This mess was copied from the GNU getpagesize.h. */ #ifndef HAVE_GETPAGESIZE # ifdef _SC_PAGESIZE # define getpagesize() sysconf(_SC_PAGESIZE) # else /* no _SC_PAGESIZE */ # ifdef HAVE_SYS_PARAM_H # include # ifdef EXEC_PAGESIZE # define getpagesize() EXEC_PAGESIZE # else /* no EXEC_PAGESIZE */ # ifdef NBPG # define getpagesize() NBPG * CLSIZE # ifndef CLSIZE # define CLSIZE 1 # endif /* no CLSIZE */ # else /* no NBPG */ # ifdef NBPC # define getpagesize() NBPC # else /* no NBPC */ # ifdef PAGESIZE # define getpagesize() PAGESIZE # endif /* PAGESIZE */ # endif /* no NBPC */ # endif /* no NBPG */ # endif /* no EXEC_PAGESIZE */ # else /* no HAVE_SYS_PARAM_H */ # define getpagesize() 8192 /* punt totally */ # endif /* no HAVE_SYS_PARAM_H */ # endif /* no _SC_PAGESIZE */ #endif /* no HAVE_GETPAGESIZE */ int main () { char *data, *data2, *data3; const char *cdata2; int i, pagesize; int fd, fd2; pagesize = getpagesize (); /* First, make a file with some known garbage in it. */ data = (char *) malloc (pagesize); if (!data) return 1; for (i = 0; i < pagesize; ++i) *(data + i) = rand (); umask (0); fd = creat ("conftest.mmap", 0600); if (fd < 0) return 2; if (write (fd, data, pagesize) != pagesize) return 3; close (fd); /* Next, check that the tail of a page is zero-filled. File must have non-zero length, otherwise we risk SIGBUS for entire page. */ fd2 = open ("conftest.txt", O_RDWR | O_CREAT | O_TRUNC, 0600); if (fd2 < 0) return 4; cdata2 = ""; if (write (fd2, cdata2, 1) != 1) return 5; data2 = (char *) mmap (0, pagesize, PROT_READ | PROT_WRITE, MAP_SHARED, fd2, 0L); if (data2 == MAP_FAILED) return 6; for (i = 0; i < pagesize; ++i) if (*(data2 + i)) return 7; close (fd2); if (munmap (data2, pagesize)) return 8; /* Next, try to mmap the file at a fixed address which already has something else allocated at it. If we can, also make sure that we see the same garbage. */ fd = open ("conftest.mmap", O_RDWR); if (fd < 0) return 9; if (data2 != mmap (data2, pagesize, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_FIXED, fd, 0L)) return 10; for (i = 0; i < pagesize; ++i) if (*(data + i) != *(data2 + i)) return 11; /* Finally, make sure that changes to the mapped area do not percolate back to the file as seen by read(). (This is a bug on some variants of i386 svr4.0.) */ for (i = 0; i < pagesize; ++i) *(data2 + i) = *(data2 + i) + 1; data3 = (char *) malloc (pagesize); if (!data3) return 12; if (read (fd, data3, pagesize) != pagesize) return 13; for (i = 0; i < pagesize; ++i) if (*(data + i) != *(data3 + i)) return 14; close (fd); return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ac_cv_func_mmap_fixed_mapped=yes else ac_cv_func_mmap_fixed_mapped=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_mmap_fixed_mapped" >&5 $as_echo "$ac_cv_func_mmap_fixed_mapped" >&6; } if test $ac_cv_func_mmap_fixed_mapped = yes; then $as_echo "#define HAVE_MMAP 1" >>confdefs.h fi rm -f conftest.mmap conftest.txt { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing pthread_join" >&5 $as_echo_n "checking for library containing pthread_join... " >&6; } if ${ac_cv_search_pthread_join+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char pthread_join (); int main () { return pthread_join (); ; return 0; } _ACEOF for ac_lib in '' pthread; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_pthread_join=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_pthread_join+:} false; then : break fi done if ${ac_cv_search_pthread_join+:} false; then : else ac_cv_search_pthread_join=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_pthread_join" >&5 $as_echo "$ac_cv_search_pthread_join" >&6; } ac_res=$ac_cv_search_pthread_join if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing cos" >&5 $as_echo_n "checking for library containing cos... " >&6; } if ${ac_cv_search_cos+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char cos (); int main () { return cos (); ; return 0; } _ACEOF for ac_lib in '' m; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_cos=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_cos+:} false; then : break fi done if ${ac_cv_search_cos+:} false; then : else ac_cv_search_cos=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_cos" >&5 $as_echo "$ac_cv_search_cos" >&6; } ac_res=$ac_cv_search_cos if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi for ac_func in strdup do : ac_fn_c_check_func "$LINENO" "strdup" "ac_cv_func_strdup" if test "x$ac_cv_func_strdup" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_STRDUP 1 _ACEOF fi done for ac_func in fsync do : ac_fn_c_check_func "$LINENO" "fsync" "ac_cv_func_fsync" if test "x$ac_cv_func_fsync" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_FSYNC 1 _ACEOF fi done ac_config_files="$ac_config_files Makefile io_lib/Makefile progs/Makefile tests/Makefile io_lib-config io_lib/os.h" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs if test -n "$EXEEXT"; then am__EXEEXT_TRUE= am__EXEEXT_FALSE='#' else am__EXEEXT_TRUE='#' am__EXEEXT_FALSE= fi if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then as_fn_error $? "conditional \"MAINTAINER_MODE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then as_fn_error $? "conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_ZLIB_TRUE}" && test -z "${HAVE_ZLIB_FALSE}"; then as_fn_error $? "conditional \"HAVE_ZLIB\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -p'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -p' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi if test -x / >/dev/null 2>&1; then as_test_x='test -x' else if ls -dL / >/dev/null 2>&1; then as_ls_L_option=L else as_ls_L_option= fi as_test_x=' eval sh -c '\'' if test -d "$1"; then test -d "$1/."; else case $1 in #( -*)set "./$1";; esac; case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( ???[sx]*):;;*)false;;esac;fi '\'' sh ' fi as_executable_p=$as_test_x # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by io_lib $as_me 1.14.6, which was generated by GNU Autoconf 2.68. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac case $ac_config_headers in *" "*) set x $ac_config_headers; shift; ac_config_headers=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" config_commands="$ac_config_commands" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Configuration commands: $config_commands Report bugs to the package provider." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ io_lib config.status 1.14.6 configured by $0, generated by GNU Autoconf 2.68, with options \\"\$ac_cs_config\\" Copyright (C) 2010 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' MKDIR_P='$MKDIR_P' AWK='$AWK' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) $as_echo "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) $as_echo "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header as_fn_error $? "ambiguous option: \`$1' Try \`$0 --help' for more information.";; --help | --hel | -h ) $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX $as_echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # # INIT-COMMANDS # AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH sed_quote_subst='$sed_quote_subst' double_quote_subst='$double_quote_subst' delay_variable_subst='$delay_variable_subst' macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`' host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`' host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`' host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`' build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`' build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`' build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`' SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`' Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`' GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`' EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`' FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`' LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`' NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`' LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`' max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`' ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`' exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`' lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`' lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`' lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`' lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`' lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`' reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`' want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`' DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`' AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`' STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`' old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`' old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`' old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`' lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`' CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`' CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`' compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`' lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`' objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`' lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`' need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`' MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`' DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`' NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`' LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`' OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`' OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`' libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`' shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`' extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`' archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`' enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`' export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`' whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`' compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`' old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`' old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`' archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`' archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`' module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`' module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`' with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`' allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`' hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`' hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`' inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`' link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`' always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`' export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`' exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`' include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`' prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`' postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`' file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`' variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`' need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`' need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`' version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`' runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`' shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`' shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`' libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`' library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`' soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`' install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`' postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`' postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`' finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' sys_lib_dlsearch_path_spec='`$ECHO "$sys_lib_dlsearch_path_spec" | $SED "$delay_single_quote_subst"`' hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' LTCC='$LTCC' LTCFLAGS='$LTCFLAGS' compiler='$compiler_DEFAULT' # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$1 _LTECHO_EOF' } # Quote evaled strings. for var in SHELL \ ECHO \ PATH_SEPARATOR \ SED \ GREP \ EGREP \ FGREP \ LD \ NM \ LN_S \ lt_SP2NL \ lt_NL2SP \ reload_flag \ OBJDUMP \ deplibs_check_method \ file_magic_cmd \ file_magic_glob \ want_nocaseglob \ DLLTOOL \ sharedlib_from_linklib_cmd \ AR \ AR_FLAGS \ archiver_list_spec \ STRIP \ RANLIB \ CC \ CFLAGS \ compiler \ lt_cv_sys_global_symbol_pipe \ lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_c_name_address \ lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ nm_file_list_spec \ lt_prog_compiler_no_builtin_flag \ lt_prog_compiler_pic \ lt_prog_compiler_wl \ lt_prog_compiler_static \ lt_cv_prog_compiler_c_o \ need_locks \ MANIFEST_TOOL \ DSYMUTIL \ NMEDIT \ LIPO \ OTOOL \ OTOOL64 \ shrext_cmds \ export_dynamic_flag_spec \ whole_archive_flag_spec \ compiler_needs_object \ with_gnu_ld \ allow_undefined_flag \ no_undefined_flag \ hardcode_libdir_flag_spec \ hardcode_libdir_separator \ exclude_expsyms \ include_expsyms \ file_list_spec \ variables_saved_for_relink \ libname_spec \ library_names_spec \ soname_spec \ install_override_mode \ finish_eval \ old_striplib \ striplib; do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[\\\\\\\`\\"\\\$]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done # Double-quote double-evaled strings. for var in reload_cmds \ old_postinstall_cmds \ old_postuninstall_cmds \ old_archive_cmds \ extract_expsyms_cmds \ old_archive_from_new_cmds \ old_archive_from_expsyms_cmds \ archive_cmds \ archive_expsym_cmds \ module_cmds \ module_expsym_cmds \ export_symbols_cmds \ prelink_cmds \ postlink_cmds \ postinstall_cmds \ postuninstall_cmds \ finish_cmds \ sys_lib_search_path_spec \ sys_lib_dlsearch_path_spec; do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[\\\\\\\`\\"\\\$]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done ac_aux_dir='$ac_aux_dir' xsi_shell='$xsi_shell' lt_shell_append='$lt_shell_append' # See if we are running on zsh, and set the options which allow our # commands through without removal of \ escapes INIT. if test -n "\${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi PACKAGE='$PACKAGE' VERSION='$VERSION' TIMESTAMP='$TIMESTAMP' RM='$RM' ofile='$ofile' _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "io_lib_config.h") CONFIG_HEADERS="$CONFIG_HEADERS io_lib_config.h" ;; "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "io_lib/Makefile") CONFIG_FILES="$CONFIG_FILES io_lib/Makefile" ;; "progs/Makefile") CONFIG_FILES="$CONFIG_FILES progs/Makefile" ;; "tests/Makefile") CONFIG_FILES="$CONFIG_FILES tests/Makefile" ;; "io_lib-config") CONFIG_FILES="$CONFIG_FILES io_lib-config" ;; "io_lib/os.h") CONFIG_FILES="$CONFIG_FILES io_lib/os.h" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with `./config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$ac_tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF # Transform confdefs.h into an awk script `defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. # Create a delimiter string that does not exist in confdefs.h, to ease # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do ac_tt=`sed -n "/$ac_delim/p" confdefs.h` if test -z "$ac_tt"; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done # For the awk script, D is an array of macro values keyed by name, # likewise P contains macro parameters if any. Preserve backslash # newline sequences. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* sed -n ' s/.\{148\}/&'"$ac_delim"'/g t rset :rset s/^[ ]*#[ ]*define[ ][ ]*/ / t def d :def s/\\$// t bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3"/p s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p d :bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3\\\\\\n"\\/p t cont s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p t cont d :cont n s/.\{148\}/&'"$ac_delim"'/g t clear :clear s/\\$// t bsnlc s/["\\]/\\&/g; s/^/"/; s/$/"/p d :bsnlc s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p b cont ' >$CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 for (key in D) D_is_set[key] = 1 FS = "" } /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { line = \$ 0 split(line, arg, " ") if (arg[1] == "#") { defundef = arg[2] mac1 = arg[3] } else { defundef = substr(arg[1], 2) mac1 = arg[2] } split(mac1, mac2, "(") #) macro = mac2[1] prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { # Preserve the white space surrounding the "#". print prefix "define", macro P[macro] D[macro] next } else { # Replace #undef with comments. This is necessary, for example, # in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. if (defundef == "undef") { print "/*", prefix defundef, macro, "*/" next } } } { print } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 fi # test -n "$CONFIG_HEADERS" eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 $as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`$as_echo "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac ac_MKDIR_P=$MKDIR_P case $MKDIR_P in [\\/$]* | ?:[\\/]* ) ;; */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t s&@MKDIR_P@&$ac_MKDIR_P&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; :H) # # CONFIG_HEADER # if test x"$ac_file" != x-; then { $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" } >"$ac_tmp/config.h" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 $as_echo "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$ac_tmp/config.h" "$ac_file" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 fi else $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ || as_fn_error $? "could not create -" "$LINENO" 5 fi # Compute "$ac_file"'s index in $config_headers. _am_arg="$ac_file" _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || $as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$_am_arg" : 'X\(//\)[^/]' \| \ X"$_am_arg" : 'X\(//\)$' \| \ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$_am_arg" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'`/stamp-h$_am_stamp_count ;; :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 $as_echo "$as_me: executing $ac_file commands" >&6;} ;; esac case $ac_file$ac_mode in "depfiles":C) test x"$AMDEP_TRUE" != x"" || { # Autoconf 2.62 quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named `Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`$as_dirname -- "$mf" || $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$mf" : 'X\(//\)[^/]' \| \ X"$mf" : 'X\(//\)$' \| \ X"$mf" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running `make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # When using ansi2knr, U may be empty or an underscore; expand it U=`sed -n 's/^U = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`$as_dirname -- "$file" || $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$file" : 'X\(//\)[^/]' \| \ X"$file" : 'X\(//\)$' \| \ X"$file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir=$dirpart/$fdir; as_fn_mkdir_p # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ;; "libtool":C) # See if we are running on zsh, and set the options which allow our # commands through without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi cfgfile="${ofile}T" trap "$RM \"$cfgfile\"; exit 1" 1 2 15 $RM "$cfgfile" cat <<_LT_EOF >> "$cfgfile" #! $SHELL # `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. # Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # NOTE: Changes made to this file will be lost: look at ltmain.sh. # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, # 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is part of GNU Libtool. # # GNU Libtool is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License as # published by the Free Software Foundation; either version 2 of # the License, or (at your option) any later version. # # As a special exception to the GNU General Public License, # if you distribute this file as part of a program or library that # is built using GNU Libtool, you may include this file under the # same distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with GNU Libtool; see the file COPYING. If not, a copy # can be downloaded from http://www.gnu.org/licenses/gpl.html, or # obtained by writing to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # The names of the tagged configurations supported by this script. available_tags="" # ### BEGIN LIBTOOL CONFIG # Which release of libtool.m4 was used? macro_version=$macro_version macro_revision=$macro_revision # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # What type of objects to build. pic_mode=$pic_mode # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # An echo program that protects backslashes. ECHO=$lt_ECHO # The PATH separator for the build system. PATH_SEPARATOR=$lt_PATH_SEPARATOR # The host system. host_alias=$host_alias host=$host host_os=$host_os # The build system. build_alias=$build_alias build=$build build_os=$build_os # A sed program that does not truncate output. SED=$lt_SED # Sed that helps us avoid accidentally triggering echo(1) options like -n. Xsed="\$SED -e 1s/^X//" # A grep program that handles long lines. GREP=$lt_GREP # An ERE matcher. EGREP=$lt_EGREP # A literal string matcher. FGREP=$lt_FGREP # A BSD- or MS-compatible name lister. NM=$lt_NM # Whether we need soft or hard links. LN_S=$lt_LN_S # What is the maximum length of a command? max_cmd_len=$max_cmd_len # Object file suffix (normally "o"). objext=$ac_objext # Executable file suffix (normally ""). exeext=$exeext # whether the shell understands "unset". lt_unset=$lt_unset # turn spaces into newlines. SP2NL=$lt_lt_SP2NL # turn newlines into spaces. NL2SP=$lt_lt_NL2SP # convert \$build file names to \$host format. to_host_file_cmd=$lt_cv_to_host_file_cmd # convert \$build files to toolchain format. to_tool_file_cmd=$lt_cv_to_tool_file_cmd # An object symbol dumper. OBJDUMP=$lt_OBJDUMP # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method = "file_magic". file_magic_cmd=$lt_file_magic_cmd # How to find potential files when deplibs_check_method = "file_magic". file_magic_glob=$lt_file_magic_glob # Find potential files using nocaseglob when deplibs_check_method = "file_magic". want_nocaseglob=$lt_want_nocaseglob # DLL creation program. DLLTOOL=$lt_DLLTOOL # Command to associate shared and link libraries. sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd # The archiver. AR=$lt_AR # Flags to create an archive. AR_FLAGS=$lt_AR_FLAGS # How to feed a file listing to the archiver. archiver_list_spec=$lt_archiver_list_spec # A symbol stripping program. STRIP=$lt_STRIP # Commands used to install an old-style archive. RANLIB=$lt_RANLIB old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Whether to use a lock for old archive extraction. lock_old_archive_extraction=$lock_old_archive_extraction # A C compiler. LTCC=$lt_CC # LTCC compiler flags. LTCFLAGS=$lt_CFLAGS # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration. global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm in a C name address pair. global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # Transform the output of nm in a C name address pair when lib prefix is needed. global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix # Specify filename containing input files for \$NM. nm_file_list_spec=$lt_nm_file_list_spec # The root where to search for dependent libraries,and in which our libraries should be installed. lt_sysroot=$lt_sysroot # The name of the directory that contains temporary libtool files. objdir=$objdir # Used to examine libraries when file_magic_cmd begins with "file". MAGIC_CMD=$MAGIC_CMD # Must we lock files when doing compilation? need_locks=$lt_need_locks # Manifest tool. MANIFEST_TOOL=$lt_MANIFEST_TOOL # Tool to manipulate archived DWARF debug symbol files on Mac OS X. DSYMUTIL=$lt_DSYMUTIL # Tool to change global to local symbols on Mac OS X. NMEDIT=$lt_NMEDIT # Tool to manipulate fat objects and archives on Mac OS X. LIPO=$lt_LIPO # ldd/readelf like tool for Mach-O binaries on Mac OS X. OTOOL=$lt_OTOOL # ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. OTOOL64=$lt_OTOOL64 # Old archive suffix (normally "a"). libext=$libext # Shared library suffix (normally ".so"). shrext_cmds=$lt_shrext_cmds # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Variables whose values should be saved in libtool wrapper scripts and # restored at link time. variables_saved_for_relink=$lt_variables_saved_for_relink # Do we need the "lib" prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Library versioning type. version_type=$version_type # Shared library runtime path variable. runpath_var=$runpath_var # Shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Permission mode override for installation of shared libraries. install_override_mode=$lt_install_override_mode # Command to use after installation of a shared archive. postinstall_cmds=$lt_postinstall_cmds # Command to use after uninstallation of a shared archive. postuninstall_cmds=$lt_postuninstall_cmds # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # As "finish_cmds", except a single script fragment to be evaled but # not shown. finish_eval=$lt_finish_eval # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Compile-time system search path for libraries. sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries. sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # The linker used to build libraries. LD=$lt_LD # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # Commands used to build an old-style archive. old_archive_cmds=$lt_old_archive_cmds # A language specific compiler. CC=$lt_compiler # Is the compiler the GNU compiler? with_gcc=$GCC # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc # Whether or not to disallow shared libs when runtime libs are static. allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec # Whether the compiler copes with passing no objects directly. compiler_needs_object=$lt_compiler_needs_object # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds # Commands used to build a shared archive. archive_cmds=$lt_archive_cmds archive_expsym_cmds=$lt_archive_expsym_cmds # Commands used to build a loadable module if different from building # a shared archive. module_cmds=$lt_module_cmds module_expsym_cmds=$lt_module_expsym_cmds # Whether we are building with GNU ld or not. with_gnu_ld=$lt_with_gnu_ld # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag # Flag that enforces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec # Whether we need a single "-rpath" flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator # Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes # DIR into the resulting binary. hardcode_direct=$hardcode_direct # Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes # DIR into the resulting binary and the resulting library dependency is # "absolute",i.e impossible to change by setting \${shlibpath_var} if the # library is relocated. hardcode_direct_absolute=$hardcode_direct_absolute # Set to "yes" if using the -LDIR flag during linking hardcodes DIR # into the resulting binary. hardcode_minus_L=$hardcode_minus_L # Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR # into the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var # Set to "yes" if building a shared library automatically hardcodes DIR # into the library and all subsequent libraries and executables linked # against it. hardcode_automatic=$hardcode_automatic # Set to yes if linker adds runtime paths of dependent libraries # to runtime path list. inherit_rpath=$inherit_rpath # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs # Set to "yes" if exported symbols are required. always_export_symbols=$always_export_symbols # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms # Symbols that must always be exported. include_expsyms=$lt_include_expsyms # Commands necessary for linking programs (against libraries) with templates. prelink_cmds=$lt_prelink_cmds # Commands necessary for finishing linking programs. postlink_cmds=$lt_postlink_cmds # Specify filename containing input files. file_list_spec=$lt_file_list_spec # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action # ### END LIBTOOL CONFIG _LT_EOF case $host_os in aix3*) cat <<\_LT_EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi _LT_EOF ;; esac ltmain="$ac_aux_dir/ltmain.sh" # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? sed '$q' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) if test x"$xsi_shell" = xyes; then sed -e '/^func_dirname ()$/,/^} # func_dirname /c\ func_dirname ()\ {\ \ case ${1} in\ \ */*) func_dirname_result="${1%/*}${2}" ;;\ \ * ) func_dirname_result="${3}" ;;\ \ esac\ } # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_basename ()$/,/^} # func_basename /c\ func_basename ()\ {\ \ func_basename_result="${1##*/}"\ } # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\ func_dirname_and_basename ()\ {\ \ case ${1} in\ \ */*) func_dirname_result="${1%/*}${2}" ;;\ \ * ) func_dirname_result="${3}" ;;\ \ esac\ \ func_basename_result="${1##*/}"\ } # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_stripname ()$/,/^} # func_stripname /c\ func_stripname ()\ {\ \ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\ \ # positional parameters, so assign one to ordinary parameter first.\ \ func_stripname_result=${3}\ \ func_stripname_result=${func_stripname_result#"${1}"}\ \ func_stripname_result=${func_stripname_result%"${2}"}\ } # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\ func_split_long_opt ()\ {\ \ func_split_long_opt_name=${1%%=*}\ \ func_split_long_opt_arg=${1#*=}\ } # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\ func_split_short_opt ()\ {\ \ func_split_short_opt_arg=${1#??}\ \ func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\ } # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\ func_lo2o ()\ {\ \ case ${1} in\ \ *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\ \ *) func_lo2o_result=${1} ;;\ \ esac\ } # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_xform ()$/,/^} # func_xform /c\ func_xform ()\ {\ func_xform_result=${1%.*}.lo\ } # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_arith ()$/,/^} # func_arith /c\ func_arith ()\ {\ func_arith_result=$(( $* ))\ } # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_len ()$/,/^} # func_len /c\ func_len ()\ {\ func_len_result=${#1}\ } # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: fi if test x"$lt_shell_append" = xyes; then sed -e '/^func_append ()$/,/^} # func_append /c\ func_append ()\ {\ eval "${1}+=\\${2}"\ } # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\ func_append_quoted ()\ {\ \ func_quote_for_eval "${2}"\ \ eval "${1}+=\\\\ \\$func_quote_for_eval_result"\ } # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: # Save a `func_append' function call where possible by direct use of '+=' sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: else # Save a `func_append' function call even when '+=' is not available sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: fi if test x"$_lt_function_replace_fail" = x":"; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5 $as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;} fi mv -f "$cfgfile" "$ofile" || (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi io_lib-1.14.6/ChangeLog0000644000031500020650000135340212617161120011534 00000000000000=============================================================================== 2015-11-06: RELEASE 1.14.6 ------------------------------------------------------------------------ r3985 | jkbonfield | 2015-11-06 17:21:53 +0000 (Fri, 06 Nov 2015) | 5 lines Changed paths: M /io_lib/trunk/CHANGES M /io_lib/trunk/ChangeLog M /io_lib/trunk/README M /io_lib/trunk/configure.in M /io_lib/trunk/tests/Makefile.am M /io_lib/trunk/tests/compare_sam.pl A /io_lib/trunk/tests/data/aux#aux_java.cram A /io_lib/trunk/tests/data/aux#aux_java.sam A /io_lib/trunk/tests/data/ce#5b_java.cram A /io_lib/trunk/tests/data/ce#5b_java.sam A /io_lib/trunk/tests/data/xx#large_aux_java.cram A /io_lib/trunk/tests/data/xx#large_aux_java.sam M /io_lib/trunk/tests/scram.test Added test for decoding a few Java Cramtools.jar built cram files, as this was a recent (undetected) decoding bug. Also updated ancillary files for 1.14.6. ------------------------------------------------------------------------ r3984 | jkbonfield | 2015-11-06 15:35:12 +0000 (Fri, 06 Nov 2015) | 5 lines Changed paths: M /io_lib/trunk/io_lib/cram_codecs.c M /io_lib/trunk/io_lib/cram_decode.c Fixed a bug in the code to reset cached block pointers (r3975), causing a crash when decoding some CRAM files. (Bah, one day after a new release!) =============================================================================== 2015-11-05: RELEASE 1.14.5 ------------------------------------------------------------------------ r3983 | jkbonfield | 2015-11-05 12:44:25 +0000 (Thu, 05 Nov 2015) | 2 lines Changed paths: M /io_lib/trunk/README Now with updated version number. ------------------------------------------------------------------------ r3982 | jkbonfield | 2015-11-05 12:43:49 +0000 (Thu, 05 Nov 2015) | 2 lines Changed paths: M /io_lib/trunk/CHANGES M /io_lib/trunk/ChangeLog M /io_lib/trunk/README M /io_lib/trunk/configure.in Updates for 1.14.5 release. ------------------------------------------------------------------------ r3981 | jkbonfield | 2015-11-05 11:55:47 +0000 (Thu, 05 Nov 2015) | 10 lines Changed paths: M /io_lib/trunk/io_lib/bam.h Horrid temporary hack to avoid exporting append_int/append_uint if it looks like we're including this file from within gap5. It's simply a way to avoid a type clash with the same function name in gap5 and io_lib, but with different signedness prototypes. Previously the current tarball of Staden Package doesn't compile cleanly against the newer tarballs of io_lib. The ideal solution is to release a fixed Staden Package too that uses the newly added io_lib function, but that comes later. ------------------------------------------------------------------------ r3980 | jkbonfield | 2015-11-04 11:35:51 +0000 (Wed, 04 Nov 2015) | 6 lines Changed paths: M /io_lib/trunk/progs/cram_size.c Cram_size now accurately determines the content_ids used by a codec, rather than just assuming it is the last byte in the codec meta-data. This means it works correctly for the newer tag ids and for cramtools.jar output. ------------------------------------------------------------------------ r3979 | jkbonfield | 2015-11-04 11:34:55 +0000 (Wed, 04 Nov 2015) | 8 lines Changed paths: M /io_lib/trunk/io_lib/cram_encode.c M /io_lib/trunk/io_lib/cram_structs.h Use a derived content_id for aux tags based on the 3 character tag code:type. (This was already the way that the java Cramtools.jar worked.) The benefit is that we no longer need to maintain a fd-global counter of unique tag types seen so far, which in turn fixes problems in the biobambam interface. ------------------------------------------------------------------------ r3978 | jkbonfield | 2015-11-03 09:48:03 +0000 (Tue, 03 Nov 2015) | 8 lines Changed paths: M /io_lib/trunk/io_lib/cram_io.c Made cram_flush call cram_update_curr_slice too so that the s->hdr field is correctly filled out. This function isn't normally called explicitly (as cram_close performs its own flush), but it is from within the biobambam work-package interface. (Fixes a bug reported by German Tischler triggered by libmaus2's testparallelbamblocksort.) ------------------------------------------------------------------------ r3977 | jkbonfield | 2015-10-28 11:11:56 +0000 (Wed, 28 Oct 2015) | 4 lines Changed paths: M /io_lib/trunk/progs/scram_flagstat.c M /io_lib/trunk/progs/scram_merge.c M /io_lib/trunk/progs/scram_test.c M /io_lib/trunk/progs/scramble.c Improved MacOS X support (getopt). Patch supplied by German Tischler. ------------------------------------------------------------------------ r3976 | jkbonfield | 2015-10-23 10:05:57 +0100 (Fri, 23 Oct 2015) | 7 lines Changed paths: M /io_lib/trunk/io_lib/cram_encode.c M /io_lib/trunk/io_lib/cram_encode.h M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/io_lib/cram_structs.h M /io_lib/trunk/progs/scramble.c Fixed bug with multiple slices per container, brought about by now having multiple aux blocks instead of predefined ones. Also added a BASES_PER_SLICE option so that long and short sequence technologies are accommodated without making excessively large (or small) slices. ------------------------------------------------------------------------ r3975 | jkbonfield | 2015-10-23 09:52:31 +0100 (Fri, 23 Oct 2015) | 6 lines Changed paths: M /io_lib/trunk/io_lib/cram_codecs.c M /io_lib/trunk/io_lib/cram_codecs.h M /io_lib/trunk/io_lib/cram_decode.c Fixed a bug where the caching of block ID to block pointer (commit r3946) broke on multi-slice containers. We now have a dedicated callback function to clear the block cache between slices. ------------------------------------------------------------------------ r3974 | jkbonfield | 2015-10-21 17:40:48 +0100 (Wed, 21 Oct 2015) | 3 lines Changed paths: M /io_lib/trunk/progs/cram_dump.c Fixed cram_dump to work on longer sequences (eg pacbio) by removing many of the fixed sized buffers. ------------------------------------------------------------------------ r3969 | jkbonfield | 2015-10-05 16:35:36 +0100 (Mon, 05 Oct 2015) | 2 lines Changed paths: M /io_lib/trunk/progs/scramble.c Removed erroneous debugging output from Scramble. =============================================================================== 2015-10-05: RELEASE 1.14.4 ------------------------------------------------------------------------ r3968 | jkbonfield | 2015-10-05 12:28:55 +0100 (Mon, 05 Oct 2015) | 2 lines Changed paths: M /io_lib/trunk/CHANGES M /io_lib/trunk/ChangeLog M /io_lib/trunk/README M /io_lib/trunk/configure.in Updates for 1.14.4 ------------------------------------------------------------------------ r3967 | jkbonfield | 2015-10-05 12:12:20 +0100 (Mon, 05 Oct 2015) | 5 lines Changed paths: M /io_lib/trunk/io_lib/cram_io.c Fixed a bug with CRAM compression level >= 6. We could attempt to compress the CORE block twice, yielding corrupted data during decode. ------------------------------------------------------------------------ r3966 | jkbonfield | 2015-10-05 12:11:48 +0100 (Mon, 05 Oct 2015) | 2 lines Changed paths: M /io_lib/trunk/progs/scramble.c Added -H to elide printing of SAM header (similar to bcftools -H). =============================================================================== 2015-09-29: RELEASE 1.14.3 ------------------------------------------------------------------------ r3965 | jkbonfield | 2015-09-29 10:24:03 +0100 (Tue, 29 Sep 2015) | 2 lines Changed paths: M /io_lib/trunk/man/man1/scramble.1 Updated scramble man page. Many updates as it's been too long. ------------------------------------------------------------------------ r3964 | jkbonfield | 2015-09-29 10:05:15 +0100 (Tue, 29 Sep 2015) | 2 lines Changed paths: M /io_lib/trunk/CHANGES M /io_lib/trunk/ChangeLog M /io_lib/trunk/README M /io_lib/trunk/configure.in The usual version number updates. Now 1.14.3 ------------------------------------------------------------------------ r3963 | jkbonfield | 2015-09-29 09:57:28 +0100 (Tue, 29 Sep 2015) | 11 lines Disable the per-slice md5 creation and checks (SD and BD slice tags). Behaviour of these have changed in a recent Java Cramtools release, indicating that we shouldn't be using these until they are formally added to the specification as they are too fluid currently. For future work, once CRAM version 3.1 exists with the tags defined we'll need to only check these tags if the CRAM version is 3.1 and above as we have generated several v3.0 CRAM files with differing BD/SD endianness. ------------------------------------------------------------------------ r3962 | jkbonfield | 2015-09-29 09:55:21 +0100 (Tue, 29 Sep 2015) | 9 lines Improved usage message. We now admit that -Z and -! exist (although -! should be used very sparingly). Updated the text to remove a zlib-only bias and clarified that -j and -Z aren't a wholesale switch of compression method, but rather adding in additional methods to select from if beneficial. ------------------------------------------------------------------------ r3961 | jkbonfield | 2015-09-25 17:42:21 +0100 (Fri, 25 Sep 2015) | 3 lines Changed paths: M /io_lib/trunk/io_lib/cram_io.c Fixed bug where the memory usage for lzma decode wasn't enough to cope with lzma -9 level of compression. ------------------------------------------------------------------------ r3960 | jkbonfield | 2015-09-25 17:41:46 +0100 (Fri, 25 Sep 2015) | 5 lines Changed paths: M /io_lib/trunk/progs/scram_merge.c Fixed -R option of scram merge (it didn't do anything before) so ranges work. Added -N to limit number of reads (useful for benchmarking). =============================================================================== 2015-09-16: RELEASE 1.14.2 ------------------------------------------------------------------------ r3958 | jkbonfield | 2015-09-16 14:31:19 +0100 (Wed, 16 Sep 2015) | 2 lines Changed paths: M /io_lib/trunk/CHANGES M /io_lib/trunk/ChangeLog M /io_lib/trunk/README M /io_lib/trunk/configure.in Updated to 1.14.2 ------------------------------------------------------------------------ r3957 | jkbonfield | 2015-09-16 12:43:00 +0100 (Wed, 16 Sep 2015) | 10 lines Changed paths: M /io_lib/trunk/io_lib/sam_header.c M /io_lib/trunk/io_lib/sam_header.h Fixes ported over from John Marshall's htslib changes. https://github.com/samtools/htslib/commit/eb4dcaeff88f6da22b82e1bc193dcd2df242d833 https://github.com/samtools/htslib/commit/04997f6de9b3f47f1f4a5d471b0fb4b517a8716e The line number is now reported correctly when reporting header errors. More importantly it now copes with nul characters on the end of the header where they are also included in the length of the header. ------------------------------------------------------------------------ r3956 | jkbonfield | 2015-09-16 11:50:57 +0100 (Wed, 16 Sep 2015) | 11 lines Changed paths: M /io_lib/trunk/io_lib/cram_encode.c M /io_lib/trunk/io_lib/cram_io.c Fixed a potential crash bug where we attempt to compress a block that previously failed to compress (the compressed size was larger then the uncompressed one) using a cram_metric structure off the end of the fixed size metrics array. Fixed, in two different places for belt and braces, a bug where the try-and-cache strategy of cram_metrics was not working for the newly split auxiliary tag blocks. This means it was slower than desired, considerably so if we mix in more (and slower) methods with scramble -j -Z. File sizes are almost identical. ------------------------------------------------------------------------ r3955 | jkbonfield | 2015-09-14 17:27:50 +0100 (Mon, 14 Sep 2015) | 6 lines Changed paths: M /io_lib/trunk/progs/Makefile.am A /io_lib/trunk/progs/cram_size.c Added cram_size tool to dump out the size of data series per compression type. This is equivalent to the final table output by cram_dump, but an order of magnitude faster as it doesn't need to uncompress anything. =============================================================================== 2015-09-10: RELEASE 1.14.1 ------------------------------------------------------------------------ r3953 | jkbonfield | 2015-09-10 09:49:51 +0100 (Thu, 10 Sep 2015) | 7 lines Changed paths: M /io_lib/trunk/CHANGES M /io_lib/trunk/ChangeLog M /io_lib/trunk/README M /io_lib/trunk/configure.in Doc & config updates for 1.14.1. Due to adding in extra fields to a few structs, I bumped the so version too as I cannot guarantee full compatibility, although I'm certain most programs will not be directly manipulating the affected structures. ------------------------------------------------------------------------ r3952 | jkbonfield | 2015-09-09 16:11:10 +0100 (Wed, 09 Sep 2015) | 11 lines Changed paths: M /io_lib/trunk/io_lib/cram_decode.c M /io_lib/trunk/io_lib/cram_io.c Fixed bugs causing scram_flagstat -t2 to crash. On error, we shouldn't do t_pool_flush and cram_flush_result as the data structures may not have been initialised in all threads (particularly one generating an error). The second issue is the error itself. This was due to additional error checking in r3916 to check unmapped reads have no alignment position. It's not a valid check when we are not decode CRAM_AP data series. ------------------------------------------------------------------------ r3951 | jkbonfield | 2015-09-09 15:29:45 +0100 (Wed, 09 Sep 2015) | 11 lines Changed paths: M /io_lib/trunk/io_lib/cram_encode.c M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/io_lib/cram_structs.h Improved zlib compression methods again. Observed that the reason why Z_DEFAULT_STRATEGY wins over Z_FILTERED for our mc:i: (mate coordinate) tag unlike all other zlib uses is not so much the strategy as the impact is has on how hard it tries. Using compression level 1 has both a better effect (it's smaller still on mc:i: block) while being considerably faster. So changed the default method back to Z_FILTERED and GZIP_FLT codec is now GZIP_1 (default strategy at level 1). ------------------------------------------------------------------------ r3950 | jkbonfield | 2015-09-09 11:29:10 +0100 (Wed, 09 Sep 2015) | 2 lines Changed paths: M /io_lib/trunk/io_lib/cram_encode.c Removed some pointless code. ------------------------------------------------------------------------ r3949 | jkbonfield | 2015-09-07 16:50:50 +0100 (Mon, 07 Sep 2015) | 11 lines Changed paths: M /io_lib/trunk/io_lib/cram_encode.c M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/io_lib/cram_io.h Minor tweaks. Use both Z_DEFAULT_STRATEGY and Z_FILTERED only on compression level 6 and above as it's 6-7% more cpu and rarely makes much difference except on specific data sets. Also noticed and fixed a cram version 2.1 vs 3.0 difference that wasn't correctly honoured - the container record counter is 64-bit, so we need to allow for this. (In practice it wouldn't make a difference until we got to > 2 billion records.) ------------------------------------------------------------------------ r3948 | jkbonfield | 2015-09-07 09:34:33 +0100 (Mon, 07 Sep 2015) | 4 lines Changed paths: M /io_lib/trunk/io_lib/cram_encode.c Made the zlib Z_DEFAULT_STRATEGY or Z_FILTERED exploration only apply at compression level 5 (the default) and above. This allows for level 4 to be similar to how it used to be on performance. ------------------------------------------------------------------------ r3947 | jkbonfield | 2015-09-03 17:06:58 +0100 (Thu, 03 Sep 2015) | 4 lines Changed paths: M /io_lib/trunk/io_lib/cram_encode.c M /io_lib/trunk/io_lib/cram_io.c Ditched all the V1.0 CRAM writing code. The reading code still exists (but I've no idea if it still runs; I've never seen such data in the wild anyway). ------------------------------------------------------------------------ r3946 | jkbonfield | 2015-09-03 16:35:52 +0100 (Thu, 03 Sep 2015) | 39 lines Changed paths: M /io_lib/trunk/io_lib/cram_codecs.c M /io_lib/trunk/io_lib/cram_codecs.h M /io_lib/trunk/io_lib/cram_encode.c M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/io_lib/cram_io.h M /io_lib/trunk/io_lib/cram_structs.h Misc updates to improve compression ratios. The major change here was to split auxiliary tags into their own blocks, but several smaller optimisations took place at the same time. - Changed the default GZIP strategy to Z_DEFAULT_STRATEGY and added a separate GZIP_FLT method, much like GZIP_RLE works. This is because I found some cases where the default strategy was far superior (and vice versa). - cram_compress_block no longer keeps blocks which grew during compression. - cram_get_block_by_id returns are now cached, removing a lot of time spend linear scanning. - Aux tags are now strictly one tag KeyKey:Type per block. This simplified all the existing code to explicitly handle OQ, FZ, BQ, etc blocks, but made other areas more complex. Specifically we now have an unknown number of blocks to deal with. This means that the cram_metrics, holding the compression method performance per block type, now has to be allocated on-the-fly for each tag code witnessed along with code to generate new block content_ids. These are new fields in the cram_fd struct (fd->tags_used and fd->next_content_id). Aux tags now auto-resize to their smallest data size. This is because we routinely see things like MQ:i:10 encoded as "i" in BAM with 3 out of 4 values being 0. I am unsure of which tool causes this to happen. - Dropped version 1 cram support in some places. TODO: go through the rest of the code dropping it too. It's dead and was never really an officially recognised format (in that the implemented code by Java nor C did not match the specification in numerous places). ------------------------------------------------------------------------ r3945 | jkbonfield | 2015-09-03 14:42:51 +0100 (Thu, 03 Sep 2015) | 2 lines Changed paths: M /io_lib/trunk/CHANGES M /io_lib/trunk/ChangeLog M /io_lib/trunk/README M /io_lib/trunk/configure.in Missing doc updates for the 1.14.0 release. ------------------------------------------------------------------------ r3944 | jkbonfield | 2015-08-28 12:17:09 +0100 (Fri, 28 Aug 2015) | 4 lines Changed paths: M /io_lib/trunk/io_lib/cram_encode.c Various experiments in quality compression. All commented out, but committed so we can resurrect them sometime if needed. ------------------------------------------------------------------------ r3943 | jkbonfield | 2015-08-19 17:44:04 +0100 (Wed, 19 Aug 2015) | 9 lines Changed paths: M /io_lib/trunk/io_lib/cram_encode.c Fixed bug with non-reference base CRAMs and indexing. When using --output-fmt cram,no_ref the reference sequence is not loaded into memory, causing the "ref_end" container field to be unset. This in turn meant that the code that clipped the container header start/end fields (pos+span) to the actual reference length, to work around buggy aligners that positiong data off the end of the reference, was itself buggy. ------------------------------------------------------------------------ r3942 | daviesrob | 2015-08-19 12:00:25 +0100 (Wed, 19 Aug 2015) | 14 lines Changed paths: M /io_lib/trunk/io_lib/rANS_static.c Change rANS O1 codecs to allocate large arrays on the heap. rans_compress_O1 needed about 1.25 Mb of stack for a couple of 256x256 arrays. This caused problems on MacOS X when running in threaded mode due to running out of per-thread stack. The default stack size for threads on MacOS X is 512 K. For details, see: https://developer.apple.com/library/mac/qa/qa1419/_index.html This changes rans_compress_O1 and rans_uncompress_O1 to use malloc and calloc to allocate the arrays instead of using the stack. See also htslib commit 4494fa66822f0fad7f9715ed6925939295f3e87a =============================================================================== 2015-07-10: RELEASE 1.14.0 ------------------------------------------------------------------------ r3941 | daviesrob | 2015-07-09 12:13:25 +0100 (Thu, 09 Jul 2015) | 16 lines Changed paths: M /io_lib/trunk/io_lib/cram_bambam.c M /io_lib/trunk/io_lib/cram_io.c Fix CRAM_IO_CUSTOM_BUFFERING error checking on write cram_io_flush_output_buffer and cram_io_output_buffer_write were trying to detect errors by looking for unsigned fwrite-like function return values < 0, which can't happen (bug spotted by clang warning). This fixes the checks to look for a return value indicating fewer items than requested were written, which is how fwrite reports errors. The error handling code is also adjusted slightly so that the cram_fd_output_buffer is as far as possible in a consistent state after a short write. cram_mem_write_callback in cram_bambam.c gets updated to correctly follow fwrite's interface. It was returning (size_t) -1 on error. Now it returns nmemb on success and 0 on error as it either writes everything or nothing. Also remove a stray while (0) from cram_io_open. ------------------------------------------------------------------------ r3940 | daviesrob | 2015-07-07 16:15:07 +0100 (Tue, 07 Jul 2015) | 11 lines Changed paths: M /io_lib/trunk/io_lib/rANS_static.c M /io_lib/trunk/progs/convert_trace.c M /io_lib/trunk/progs/srf_dump_all.c Fix some warnings from clang. #if 0 out some unused functions in rANS_static.c. Unused variable rcsid in convert_trace. Comparing unsigned value < 0 in srf_dump_all. Also prevent possible use of uninitialised variables. Not a complete fix (it should check the return value from parse_name) but failures should be more obvious in the output now. ------------------------------------------------------------------------ r3939 | daviesrob | 2015-07-07 09:53:01 +0100 (Tue, 07 Jul 2015) | 7 lines Changed paths: M /io_lib/trunk/io_lib/cram_decode.c M /io_lib/trunk/io_lib/cram_index.c M /io_lib/trunk/progs/srf_dump_all.c Fix possible use of uninitialised variables and out-of-bounds array access. Fixes to io_lib/cram_index.c and io_lib/cram_decode.c back-ported from htslib. Set num_allowed_types to a sensible value in srf_dump_all.c function get_destination_types. ------------------------------------------------------------------------ r3938 | daviesrob | 2015-07-06 11:22:48 +0100 (Mon, 06 Jul 2015) | 8 lines Changed paths: M /io_lib/trunk/acinclude.m4 Fix autoconf warning AC_LANG_CONFTEST: no AC_LANG_SOURCE call detected in body Add extra quotes around AC_LANG_PROGRAM, as suggested here: https://lists.gnu.org/archive/html/bug-autoconf/2011-04/msg00015.html The generated configure script is identical to the vesion before this change but the warnings go away. ------------------------------------------------------------------------ r3937 | jkbonfield | 2015-07-03 17:49:04 +0100 (Fri, 03 Jul 2015) | 2 lines Changed paths: M /io_lib/trunk/io_lib/scram.c Work around icc bug. ------------------------------------------------------------------------ r3936 | daviesrob | 2015-07-03 17:22:05 +0100 (Fri, 03 Jul 2015) | 4 lines Changed paths: M /io_lib/trunk/acinclude.m4 M /io_lib/trunk/configure.in Make configure enable compiler warnings by default. They can be turned off using configure --disable-warnings ------------------------------------------------------------------------ r3935 | daviesrob | 2015-07-03 10:39:46 +0100 (Fri, 03 Jul 2015) | 9 lines Changed paths: M /io_lib/trunk/io_lib/cram_decode.c Remove unnecessary comparisons added in revision 3664. Revision 3664 fixed a problem where some external blocks were not being uncompressed when they should have been. Part of this change involved comparing the block cram_content_type with values from cram_encoding, which is not valid. The real solution to the problem was elsewhere in revision 3664, so this patch removes the incorrect comparisons. They were harmless but caused a lot of compiler warnings. ------------------------------------------------------------------------ r3933 | daviesrob | 2015-07-02 16:23:06 +0100 (Thu, 02 Jul 2015) | 2 lines Changed paths: M /io_lib/trunk/io_lib/cram_decode.c Fix decoding of integer optional tags in cram slice header (missing brackets). ------------------------------------------------------------------------ r3932 | daviesrob | 2015-07-02 15:34:32 +0100 (Thu, 02 Jul 2015) | 15 lines Changed paths: M /io_lib/trunk/io_lib/Makefile.am M /io_lib/trunk/io_lib/bam.c M /io_lib/trunk/io_lib/bam.h A /io_lib/trunk/io_lib/binning.c (from /io_lib/trunk/io_lib/binning.h:3928) M /io_lib/trunk/io_lib/binning.h M /io_lib/trunk/io_lib/cram_codecs.c M /io_lib/trunk/io_lib/cram_decode.c M /io_lib/trunk/io_lib/cram_encode.c M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/io_lib/cram_io.h M /io_lib/trunk/io_lib/misc.h M /io_lib/trunk/io_lib/rANS_static.c M /io_lib/trunk/io_lib/scram.c M /io_lib/trunk/io_lib/srf.c M /io_lib/trunk/io_lib/thread_pool.c M /io_lib/trunk/io_lib/vlen.c M /io_lib/trunk/progs/cram_dump.c M /io_lib/trunk/progs/cram_index.c M /io_lib/trunk/progs/scram_pileup.c M /io_lib/trunk/progs/scram_test.c M /io_lib/trunk/progs/srf2fastq.c M /io_lib/trunk/progs/srf_dump_all.c M /io_lib/trunk/progs/srf_filter.c M /io_lib/trunk/progs/srf_list.c Fix compiler warnings from gcc -Wall Mainly unused variables, unhandled enumerated types in case statements and signed/unsigned pointers. bam_set_bin() in io_lib/bam.h becomes a static inline function. The BAM flags definitions in the same file also had to move so that BAM_CIGAR32 is defined before bam_set_bin(). The static arrays defined in binning.h get moved into a new file binning.c and linkage changed to extern. Changes to cram library functions have as far as possible been made so that they match the versions in htslib. ------------------------------------------------------------------------ r3929 | daviesrob | 2015-07-01 10:18:58 +0100 (Wed, 01 Jul 2015) | 9 lines Changed paths: M /io_lib/trunk/io_lib/cram_codecs.c M /io_lib/trunk/io_lib/cram_codecs.h Beta codec and cram_not_enough_bits tweaks. Make cram_beta_decode_int and cram_beta_decode_char take the number of items requested into account when working out if enough bits are available. Prevent possible integer wrap-around in cram_beta_encode_init. Properly deal with nbits = 0 case in cram_not_enough_bits. ------------------------------------------------------------------------ r3928 | jkbonfield | 2015-06-30 17:36:13 +0100 (Tue, 30 Jun 2015) | 7 lines Changed paths: M /io_lib/trunk/io_lib/cram_encode.c Fixed a bug in container num_blocks field when dealing with multiple slices per container. It was counting the compression header per slice rather than only once. Oddly this didn't cause any decoding issues for scramble, samtools or cramtools. ------------------------------------------------------------------------ r3927 | jkbonfield | 2015-06-23 15:13:18 +0100 (Tue, 23 Jun 2015) | 2 lines Changed paths: M /io_lib/trunk/io_lib/sam_header.c Fixed an overly assertive assert statement. (Harmless.) ------------------------------------------------------------------------ r3926 | daviesrob | 2015-06-17 13:25:32 +0100 (Wed, 17 Jun 2015) | 32 lines Changed paths: M /io_lib/trunk/io_lib/cram_codecs.c M /io_lib/trunk/io_lib/cram_io.c cram updates and bug-fixes back-ported from htslib. Make cram_subexp_decode_init use safe_itf8_get. From htslib commit 6e3f665 Set sub_size to -1 to catch cases where it doesn't get set. From htslib commit 509b772 Remove redundant code from cram_byte_array_stop_decode_init. From htslib commit e7c1102 Avoid possible integer wrap-around in cram_read_SAM_hdr Add some casts to size_t to avoid (header_len + 1) becoming negative. Put in checks for positive c->length and len so (c->length - len) always makes sense. From htslib commit 4299ea1 Fix handling of zero-bit beta codec case. Using the beta codec with nbits=0 is valid, but confuses cram_not_enough_bits() as it's possible to have no input data in this case so cram_not_enough_bits thinks it has run out. Move the calls to cram_not_enough_bits inside checks that c->beta.nbits is non-zero to avoid the problem. From htslib commit ea63c20 ------------------------------------------------------------------------ r3924 | jkbonfield | 2015-06-02 17:09:07 +0100 (Tue, 02 Jun 2015) | 6 lines Changed paths: M /io_lib/trunk/io_lib/cram_io.c Fix case of over-optimisation causing a bug. (A quick test shows it's ~1% time saving on a low depth chr20 cram.) The bug was that ref seq '*' was being converted to '\n' due to '*' & ~0x20. ------------------------------------------------------------------------ r3923 | jkbonfield | 2015-06-01 11:49:13 +0100 (Mon, 01 Jun 2015) | 2 lines Changed paths: M /io_lib/trunk/io_lib/cram_io.c Now include stdio_ext.h for __fbufsize prototype. ------------------------------------------------------------------------ r3922 | jkbonfield | 2015-06-01 11:48:27 +0100 (Mon, 01 Jun 2015) | 4 lines Changed paths: M /io_lib/trunk/io_lib/cram_io.c Changed the default CRAM output version to be 3.0. The old CRAM can still be generated from scramble by using -V2.1 ------------------------------------------------------------------------ r3920 | daviesrob | 2015-05-27 16:23:34 +0100 (Wed, 27 May 2015) | 6 lines Changed paths: M /io_lib/trunk/io_lib/cram_codecs.c Add more checks to beta codec. Add missing check for enough bits to cram_beta_decode_char(). Ensure that beta.nbits is within the valid range in cram_beta_decode_init(). ------------------------------------------------------------------------ r3919 | jkbonfield | 2015-05-27 14:54:41 +0100 (Wed, 27 May 2015) | 2 lines Changed paths: M /io_lib/trunk/io_lib/cram_io.c Fixed cram_load_reference when given NULL; it no longer returns -1. ------------------------------------------------------------------------ r3918 | jkbonfield | 2015-05-15 12:14:06 +0100 (Fri, 15 May 2015) | 15 lines Changed paths: M /io_lib/trunk/io_lib/cram_decode.c M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/io_lib/scram.c M /io_lib/trunk/progs/scramble.c Improved error handling with corrupt files. This is related to the recent htslib change, however done differently here. The calling API for scram_get_seq returns -1 for failure to read, but the caller then has to check cram_eof to determine if that is due to EOF or not. The problem is if we deliberately only decode some and not all then we're not at EOF. Rather than specifically require the caller to track all this, we now make cram_eof return -1 if an error has been detected. (In htslib this is done by making sam_read1 return -2 instead. Possibly we could do the same here as well.) ------------------------------------------------------------------------ r3917 | daviesrob | 2015-05-13 17:39:10 +0100 (Wed, 13 May 2015) | 23 lines Changed paths: M /io_lib/trunk/io_lib/cram_codecs.c M /io_lib/trunk/io_lib/cram_codecs.h Better tests for bit-based codecs running out of input. "american fuzzy lop" found a case where the checks for running out of input added in #3895 failed. This happened due to the result of in->uncomp_size - in->byte being unsigned rather than signed, so the check failed when in->byte was greater than in->uncomp_size. The checks are pulled into a new static inline cram_not_enough_bits. This has been checked with frama_c to work as long as: 0 <= blk->bit < 8 0 <= blk->uncomp_size blk->uncomp_size, blk->bit and nbits are of type int32_t blk->byte is of type size_t Instances of the old code are replaced with cram_not_enough_bits. get_one_bits_MSB gets the same checks for running out of input as are already in get_zero_bits_MSB. cram_subexp_decode_init gets a check to ensure subexp.k >= 0 and cram_subexp_decode checks for i >= 0. ------------------------------------------------------------------------ r3916 | daviesrob | 2015-05-13 16:42:50 +0100 (Wed, 13 May 2015) | 8 lines Changed paths: M /io_lib/trunk/io_lib/cram_decode.c Add more sanity checks to cram_decode_slice. Error on reads with apparantly negative length. Error on alignments with position <= 0 and no unmapped flag. Fixes problems found by "american fuzzy lop". ------------------------------------------------------------------------ r3915 | daviesrob | 2015-05-13 16:28:31 +0100 (Wed, 13 May 2015) | 10 lines Changed paths: M /io_lib/trunk/io_lib/cram_decode.c Various fixes in cram_decode_seq. Ensure read features don't start before the beginning of the read. Fix check for which data series are required when decoding soft clips. Should check for CRAM_SC and not CRAM_IN for version 2+ CRAM files. Convert abort on unknown feature code to return -1. ------------------------------------------------------------------------ r3914 | daviesrob | 2015-05-13 15:21:01 +0100 (Wed, 13 May 2015) | 8 lines Changed paths: M /io_lib/trunk/io_lib/cram_decode.c Checks for running out of data when decoding header tag:type:value fields. Add more checks for running out of input data in cram_decode_slice_header. Also fix a bug in the same code where the input pointer was not incremented enough when decoding data type 's'. Fixes problems found during "american fuzzy lop" fuzz testing. ------------------------------------------------------------------------ r3913 | daviesrob | 2015-05-13 14:31:28 +0100 (Wed, 13 May 2015) | 9 lines Changed paths: M /io_lib/trunk/io_lib/cram_decode.c Better sanity checking when reading content_ids in cram_decode_slice_header hdr->num_content_ids is passed to malloc, so ensure it has a reasonable value. Bail out of reading block_content_ids as soon as possible if it runs out of input. ------------------------------------------------------------------------ r3912 | daviesrob | 2015-05-13 14:04:41 +0100 (Wed, 13 May 2015) | 8 lines Changed paths: M /io_lib/trunk/io_lib/cram_codecs.c Re-order test for end of input in cram_byte_array_stop_decode_block Make it check that it has not reached the end of the input data before trying to dereference the pointer. Fixes bug found during "american fuzzy lop" fuzz testing. ------------------------------------------------------------------------ r3911 | daviesrob | 2015-05-13 11:35:06 +0100 (Wed, 13 May 2015) | 12 lines Changed paths: M /io_lib/trunk/io_lib/cram_codecs.c M /io_lib/trunk/io_lib/cram_decode.c M /io_lib/trunk/io_lib/cram_io.h Pull code to lookup external blocks into cram_get_block_by_id function. Add a new static inline cram_get_block_by_id to lookup external blocks. It includes checks to ensure looking up via the slice->block_by_id array doesn't go out of bounds. Change code that looked up block ids to use the new function. This fixes a fixme in cran_decode_slice, so embedded references should work for any block id, not just those below 1024. Fixes bugs found during amaerican fuzzy lop fuzz testing. ------------------------------------------------------------------------ r3910 | daviesrob | 2015-05-06 15:05:47 +0100 (Wed, 06 May 2015) | 4 lines Changed paths: M /io_lib/trunk/io_lib/cram_codecs.c Catch negative length in cram_byte_array_len_decode. Fixes bug found during "american fuzzy lop" fuzz testing. ------------------------------------------------------------------------ r3909 | daviesrob | 2015-05-06 12:36:03 +0100 (Wed, 06 May 2015) | 8 lines Changed paths: M /io_lib/trunk/io_lib/cram_decode.c Fix buffer over-runs in cram_decode_seq for sequences starting beyond the ref Incorrect handling of sequences that started beyond the end of the reference sequence could lead to memset writing past the end of the seq array. Add code to handle this case correctly. Fixes bugs found during "american fuzzy lop" fuzz testing. ------------------------------------------------------------------------ r3908 | daviesrob | 2015-05-06 12:02:07 +0100 (Wed, 06 May 2015) | 8 lines Changed paths: M /io_lib/trunk/io_lib/cram_codecs.c Make cram_byte_array_len_decode return errors from sub-codecs. If either len_codec or value_codec fail in cram_byte_array_len_decode then it will return non-zero. Fixes bugs found during "american fuzzy lop" fuzz testing. ------------------------------------------------------------------------ r3907 | daviesrob | 2015-04-30 15:25:23 +0100 (Thu, 30 Apr 2015) | 6 lines Changed paths: M /io_lib/trunk/io_lib/cram_io.c Ensure header_len >= 0 Prevents malloc(0) if header_len == -1. Bug found during "american fuzzy lop" fuzz testing. ------------------------------------------------------------------------ r3906 | daviesrob | 2015-04-30 12:42:05 +0100 (Thu, 30 Apr 2015) | 10 lines Changed paths: M /io_lib/trunk/io_lib/cram_decode.c Change assertion in cram_decode_slice_xref to if (...) return -1. Make cram_decode_slice_xref return int instead of void, and change the assertion to return -1 instead. Also add a check to catch out of bounds array access if mate_line is outside the valid range. Check the return value of cram_decode_slice_xref in cram_decode_slice. Fixes crashes found during "american fuzzy lop" fuzz testing. ------------------------------------------------------------------------ r3905 | jkbonfield | 2015-04-29 15:29:58 +0100 (Wed, 29 Apr 2015) | 2 lines Changed paths: M /io_lib/trunk/io_lib/cram_decode.c Don't create MD/NM tags on records with seq "*". ------------------------------------------------------------------------ r3904 | daviesrob | 2015-04-29 12:47:04 +0100 (Wed, 29 Apr 2015) | 11 lines Changed paths: M /io_lib/trunk/io_lib/cram_io.c Add more checks to cram_read_SAM_hdr Ensure that the block decompresses successfully. Check that header_len >= 0. The specification allows a signed value. Allocate 1 + header_len to store the header, and put a NUL after the end. This solves some problems when header_len == 0. Fixes bugs found during "american fuzzy lop" fuzz testing. ------------------------------------------------------------------------ r3903 | jkbonfield | 2015-04-29 12:45:10 +0100 (Wed, 29 Apr 2015) | 5 lines Changed paths: M /io_lib/trunk/io_lib/cram_decode.c Fixed buffer overrun in MD tag calculation. This occurred where the CRAM container/slice header is shorter than the alignments held within it. ------------------------------------------------------------------------ r3902 | daviesrob | 2015-04-29 12:30:25 +0100 (Wed, 29 Apr 2015) | 6 lines Changed paths: M /io_lib/trunk/io_lib/cram_io.c Catch slices with no data blocks. The specification says that a slice should have at least one data block. Fixes bugs found during "american fuzzy lop" fuzz testing. ------------------------------------------------------------------------ r3901 | daviesrob | 2015-04-29 12:18:33 +0100 (Wed, 29 Apr 2015) | 4 lines Changed paths: M /io_lib/trunk/io_lib/cram_decode.c Ensure last read group name is not NULL before trying to strcmp it. Fixes bug found during "american fuzzy lop" fuzz testing. ------------------------------------------------------------------------ r3900 | daviesrob | 2015-04-29 12:05:55 +0100 (Wed, 29 Apr 2015) | 16 lines Changed paths: M /io_lib/trunk/io_lib/cram_decode.c Fix various reference related bugs in cram_decode_slice When using embedded references, ensure that s->hdr->ref_base_id is in the valid range for the s->block_by_id lookup table. Also check that the block decompresses correctly. Don't try to call cram_ref_decr on embedded references. For multi-reference blocks where the RI information was missing or not decoded, use -1 (i.e. unmapped) for the reference id instead of 0. Check that the refernce id is within the range of refence ids in the SAM header. Fixes bugs found during "american fuzzy lop" fuzz testing. ------------------------------------------------------------------------ r3899 | daviesrob | 2015-04-29 10:34:39 +0100 (Wed, 29 Apr 2015) | 8 lines Changed paths: M /io_lib/trunk/io_lib/cram_decode.c Make cram_get_seq loop round straight after calling cram_next_slice. There would be an out-of-bounds array access if the next slice contained no records. This is fixed by looping around again so that it detects it has no more records and calls cram_next_slice again. Bug found during "american fuzzy lop" fuzz testing. ------------------------------------------------------------------------ r3898 | daviesrob | 2015-04-29 09:54:18 +0100 (Wed, 29 Apr 2015) | 6 lines Changed paths: M /io_lib/trunk/io_lib/cram_decode.c Don't try to add unknown aux types to the hdr->tags hash table. Prevents reading of undefined id[2]. Fixes bug found during "american fuzzy lop" fuzz testing. ------------------------------------------------------------------------ r3897 | daviesrob | 2015-04-28 18:12:07 +0100 (Tue, 28 Apr 2015) | 8 lines Changed paths: M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/io_lib/rANS_static.c rANS decoder error checking. Make rans_uncompress check that it has enough bytes for the decoder to start. Make cram_uncompress_block check for rANS decoder failures. Fixes bugs found during "american fuzzy lop" fuzz testing. ------------------------------------------------------------------------ r3896 | daviesrob | 2015-04-28 17:25:55 +0100 (Tue, 28 Apr 2015) | 7 lines Changed paths: M /io_lib/trunk/io_lib/cram_decode.c Prevent running on after decoding errors. Bail out of cram_decode_slice, cram_decode_aux and cram_decode_seq faster if errors are detected. Prevents use of uninitialized values. Fixes more bugs found during "american fuzzy lop" fuzz testing. ------------------------------------------------------------------------ r3895 | daviesrob | 2015-04-28 16:44:02 +0100 (Tue, 28 Apr 2015) | 16 lines Changed paths: M /io_lib/trunk/io_lib/cram_codecs.c M /io_lib/trunk/io_lib/cram_structs.h Add more codec sanity checks. Add, or fix, checks for running out of input to get_zero_bits_MSB, cram_gamma_decode, cram_huffman_decode_char0 and cram_huffman_decode_int. Ensure trying to decode a null (i.e. zero symbols) huffman stream returns an error. Catch attempts to use cram_byte_array_stop_decode_init on anything other than a BYTE_ARRAY or BYTE_ARRAY_BLOCK. Prevent an invalid read if cram_decoder_init is given an out of range codec number. Fixes more bugs found during "american fuzzy lop" fuzz testing. ------------------------------------------------------------------------ r3894 | daviesrob | 2015-04-28 15:34:48 +0100 (Tue, 28 Apr 2015) | 16 lines Changed paths: M /io_lib/trunk/io_lib/cram_codecs.c M /io_lib/trunk/io_lib/cram_decode.c M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/io_lib/cram_io.h Add and use safe_itf8_get() to avoid more buffer over-runs. Add new static inline safe_itf8_get, to replace the old itf8_get macro. It takes a pointer to the end of the buffer so it can test if it has run out of data. If it fails to read a complete integer it returns 0, otherwise it returns the number of inout bytes consumed, as for itf8_get. Change lots of uses of itf8_get() to safe_itf8_get(). Also add some other checks for running out of data. Make cram_decode_slice_header uncompress the slice header block if it isn't of type RAW. This goes beyond what the CRAM specification says, but there's no real reason why it can't be compressed. All this fixes several bugs found during "american fuzzy lop" fuzz testing. ------------------------------------------------------------------------ r3893 | jkbonfield | 2015-04-28 13:58:13 +0100 (Tue, 28 Apr 2015) | 4 lines Changed paths: M /io_lib/trunk/io_lib/cram_decode.c Only compute SD (score) CRC when quality scores are present. Previously it computed the CRC based on the run of \0377 bytes (as stored in BAM format), but this now matches the Java implementation. ------------------------------------------------------------------------ r3892 | daviesrob | 2015-04-28 13:55:30 +0100 (Tue, 28 Apr 2015) | 7 lines Changed paths: M /io_lib/trunk/io_lib/bam.c Prevent endless loop in bam_uncompress_input caused by zlib errors. Make it return on errors instead of repeatedly trying to decode the same piece of bad data. Bug found using the "american fuzzy lop" fuzz tester. ------------------------------------------------------------------------ r3891 | daviesrob | 2015-04-28 12:49:55 +0100 (Tue, 28 Apr 2015) | 17 lines Changed paths: M /io_lib/trunk/io_lib/bam.c Fix more potential buffer over-runs and malloc bugs. Fix buffer over-runs on invalid input files in bam_get_line, sam_next_seq and both versions of bam_get_seq. Fix malloc(0) that can occur in load_bam_header when nlen is read as UINT32_MAX and the +1 wraps it back round to zero. Also ensure that name is NUL-terminated in case something tries to strlen it later. Fix incorrect error messages in load_bam_header (@RG should be @SQ). Change an assert() in sam_next_seq to if (...) return -1; Ensure reallocs in bam_get_seq don't lose the original pointer if they fail. Bugs were found using the "american fuzzy lop" fuzz tester. ------------------------------------------------------------------------ r3890 | jkbonfield | 2015-04-28 12:24:06 +0100 (Tue, 28 Apr 2015) | 3 lines Changed paths: M /io_lib/trunk/io_lib/cram_decode.c Changed default quality value when unable to decode to 255. This then gets converted to "*" within BAM format. ------------------------------------------------------------------------ r3889 | daviesrob | 2015-04-28 12:16:12 +0100 (Tue, 28 Apr 2015) | 6 lines Changed paths: M /io_lib/trunk/io_lib/sam_header.c Add checks for running out of data to sam_hdr_add_lines. Check that enough bytes are available when looking for the key and the line terminator. This prevents a possible out-of-bounds read on broken input that ends part way through the header. ------------------------------------------------------------------------ r3888 | jkbonfield | 2015-04-27 10:08:00 +0100 (Mon, 27 Apr 2015) | 5 lines Changed paths: M /io_lib/trunk/io_lib/cram_codecs.c M /io_lib/trunk/io_lib/cram_decode.c Extra checking for attempting to use codecs in an unsupported manner - Block based decoding on codecs that I haven't implemented this mode in. (Technically they could in the spec, but we never use them for array data series.) ------------------------------------------------------------------------ r3887 | jkbonfield | 2015-04-24 10:14:12 +0100 (Fri, 24 Apr 2015) | 10 lines Changed paths: M /io_lib/trunk/io_lib/cram_decode.c Fixed a Java/C integration failure. When c1#bounds.sam is encoded by Java and decoded by C the additional bases overhanging the end of the reference are encoded using feature 'X' and an assumption that the matching reference is 'N'. (This C code uses feature BA to store the base directly instead.) Changed the code here to omit the warnings about going off the end of the reference and to treat out of bounds reference as N. ------------------------------------------------------------------------ r3886 | jkbonfield | 2015-04-23 17:34:31 +0100 (Thu, 23 Apr 2015) | 13 lines Changed paths: M /io_lib/trunk/io_lib/cram_io.c Bug fix to the CRC32 checking for Java/C integration. The block and container header CRCs check sum variable sized data. The old method was to decode the structure and then reencode to a block of memory that we can compute the CRC on. Unfortunately there is more than one valid encoding for the same numerical integer value, and even more unfortunately Java and C implementations differ. This gives rise to false CRC failures. The new code computes the CRC as it goes using the actual bytes being decoded. This isn't as quick, but the measured difference in speed is under 1%. ------------------------------------------------------------------------ r3885 | jkbonfield | 2015-04-20 09:37:44 +0100 (Mon, 20 Apr 2015) | 3 lines Changed paths: D /io_lib/trunk/io_lib/arith_static.c D /io_lib/trunk/io_lib/arith_static.h M /io_lib/trunk/io_lib/cram_io.c Corrected the r3881 change; arith_static is now properly removed and "make distcheck" works once more. ------------------------------------------------------------------------ r3884 | jkbonfield | 2015-04-20 09:34:37 +0100 (Mon, 20 Apr 2015) | 2 lines Changed paths: M /io_lib/trunk/io_lib/cram_bambam.c Removed some debugging output. Patch supplied by German Tischler. ------------------------------------------------------------------------ r3883 | jkbonfield | 2015-04-17 17:31:52 +0100 (Fri, 17 Apr 2015) | 4 lines Changed paths: M /io_lib/trunk/io_lib/cram_io.c Fixed missing return, causing undefined behaviour. Lesson to learn: edit configure to force warnings on by default! ------------------------------------------------------------------------ r3882 | jkbonfield | 2015-04-17 17:24:17 +0100 (Fri, 17 Apr 2015) | 2 lines Changed paths: M /io_lib/trunk/progs/scramble.c Improved error reporting when scram_close fails. ------------------------------------------------------------------------ r3881 | jkbonfield | 2015-04-17 14:47:14 +0100 (Fri, 17 Apr 2015) | 5 lines Changed paths: M /io_lib/trunk/io_lib/Makefile.am M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/io_lib/cram_structs.h M /io_lib/trunk/io_lib/rANS_static.c Removed the arithmetic coder. It was never official and has been replaced by the (official) rANS codec. ------------------------------------------------------------------------ r3880 | jkbonfield | 2015-04-17 14:43:59 +0100 (Fri, 17 Apr 2015) | 7 lines Changed paths: M /io_lib/trunk M /io_lib/trunk/io_lib/Makefile.am M /io_lib/trunk/io_lib/bam.c M /io_lib/trunk/io_lib/bam.h A /io_lib/trunk/io_lib/cram_bambam.c (from /io_lib/branches/cram_maus/io_lib/cram_bambam.c:3879) M /io_lib/trunk/io_lib/cram_decode.c M /io_lib/trunk/io_lib/cram_encode.c M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/io_lib/cram_io.h M /io_lib/trunk/io_lib/cram_structs.h Merged in the cram_maus branch. This includes changes to allow writing to cram in-memory buffers instead of a file descriptor as well as the new cram_bambam.c interface. This latter file is only used by libmaus for multi-threading purposes. ------------------------------------------------------------------------ r3879 | jkbonfield | 2015-04-17 14:22:39 +0100 (Fri, 17 Apr 2015) | 3 lines Changed paths: M /io_lib/trunk/io_lib/cram_io.c Fixed cram_read_SAM_hdr so that it doesn't crash when cram_read_container fails. ------------------------------------------------------------------------ r3878 | jkbonfield | 2015-04-17 14:21:48 +0100 (Fri, 17 Apr 2015) | 5 lines Changed paths: M /io_lib/trunk/io_lib/cram_encode.c M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/io_lib/cram_stats.c Replaced various asserts with return statements to indicate failures. Many asserts are still in place, but hopefully these are all things internal to the routines and not dependent on externally read data. ------------------------------------------------------------------------ r3877 | jkbonfield | 2015-04-16 10:25:56 +0100 (Thu, 16 Apr 2015) | 4 lines Changed paths: M /io_lib/trunk/io_lib/os.h.in Define PATH_MAX for systems that do not define it in limits.h. Idea taken from Debian pathmax.patch, albeit implemented elsewhere. ------------------------------------------------------------------------ r3870 | jkbonfield | 2015-04-13 09:28:00 +0100 (Mon, 13 Apr 2015) | 2 lines Changed paths: M /io_lib/trunk/tests/scram_v3.test Set execute permission. ------------------------------------------------------------------------ r3869 | jkbonfield | 2015-04-10 17:55:21 +0100 (Fri, 10 Apr 2015) | 7 lines Changed paths: M /io_lib/trunk/io_lib/cram_decode.c M /io_lib/trunk/io_lib/cram_encode.c M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/io_lib/cram_structs.h M /io_lib/trunk/progs/cram_dump.c M /io_lib/trunk/progs/scram_flagstat.c M /io_lib/trunk/progs/scramble.c Added support for BAM style key:type:value tuples after the slice header. Implemented the BD (base digest) and SD (score digest) optional slice header tags. These are used as round-trip validation to make sure the sequence and quality is not destroyed by CRAM. ------------------------------------------------------------------------ r3868 | jkbonfield | 2015-04-10 17:20:29 +0100 (Fri, 10 Apr 2015) | 2 lines Changed paths: M /io_lib/trunk/io_lib/hash_table.h Allow floating point values in the HashData union. ------------------------------------------------------------------------ r3867 | jkbonfield | 2015-04-10 17:18:29 +0100 (Fri, 10 Apr 2015) | 5 lines Changed paths: M /io_lib/trunk/tests/Makefile.am M /io_lib/trunk/tests/scram.test A /io_lib/trunk/tests/scram_v3.test Added tests for CRAM version 3.0. Made sure that scramble failing also fails the test harness, rather than just comparing outputs. ------------------------------------------------------------------------ r3866 | jkbonfield | 2015-04-09 11:25:34 +0100 (Thu, 09 Apr 2015) | 8 lines Changed paths: M /io_lib/trunk/io_lib/cram_decode.c M /io_lib/trunk/io_lib/cram_encode.c M /io_lib/trunk/io_lib/cram_structs.h M /io_lib/trunk/progs/cram_dump.c Fixes to handle zero length sequences. Fixed an assumption of CIGAR "*" implying unmapped data (it means "unavailable"). Added support for CRAM_FLAG_NO_SEQ for CRAM V3.0 so that sequence "*" is correctly produced. ------------------------------------------------------------------------ r3864 | daviesrob | 2015-04-09 09:51:03 +0100 (Thu, 09 Apr 2015) | 5 lines Changed paths: M /io_lib/trunk/io_lib/bam.c Move update of *str in bam_get_line to just after realloc Fixes a double free caused by bam_get_line returning after calling realloc but without updating *str as it reached EOF before finding a \n. ------------------------------------------------------------------------ r3852 | jkbonfield | 2015-04-01 11:22:13 +0100 (Wed, 01 Apr 2015) | 11 lines Changed paths: M /io_lib/trunk/io_lib/cram_index.c Fixed the broken "special case" in index querying. The binary search due to the comparisons may yield a value 1 bin too low when the position asked for precisely matches the start coordinate of an index bin. The intention of the special case is to correct this, but it did so without checking whether the current bin returned actually did overlap the requested range too. This therefore lead to starting to decode too late into the file, giving fewer overlapping sequences than desired. ------------------------------------------------------------------------ r3844 | jkbonfield | 2015-03-25 12:33:12 +0000 (Wed, 25 Mar 2015) | 6 lines Changed paths: M /io_lib/trunk/io_lib/cram_io.c Additional erorr checking for handling broken ref header structs. This code can be triggered in cases of trying to convert SAM to CRAM when the SAM file has no @SQ lines. This clearly still doesn't work even with this fix, but it no longer crashes. ------------------------------------------------------------------------ r3843 | jkbonfield | 2015-03-13 10:18:42 +0000 (Fri, 13 Mar 2015) | 8 lines Changed paths: M /io_lib/trunk/configure.in M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/io_lib/cram_structs.h M /io_lib/trunk/io_lib/mFILE.c M /io_lib/trunk/io_lib/mFILE.h M /io_lib/trunk/io_lib/open_trace_file.c Added mmap support for references. This can reduce the memory footprint when dealing with many processes on the same machine that are using the same reference files. It can also reduce the amount of I/O required when fetching just a small part of a cached md5 reference. ------------------------------------------------------------------------ r3842 | jkbonfield | 2015-03-10 17:38:42 +0000 (Tue, 10 Mar 2015) | 4 lines Changed paths: M /io_lib/trunk/io_lib/cram_decode.c M /io_lib/trunk/io_lib/cram_encode.c Further MD/NM fixes. It now has additional code to prevent production of multiple MD or NM tags, particularly in cases where the original data had one and not the other. ------------------------------------------------------------------------ r3841 | jkbonfield | 2015-03-10 09:43:00 +0000 (Tue, 10 Mar 2015) | 8 lines Changed paths: M /io_lib/trunk/io_lib/cram_codecs.c M /io_lib/trunk/io_lib/cram_decode.c M /io_lib/trunk/io_lib/cram_encode.c Fix for unmapped reads with "*" sequence. These were defaulting to a sequence length of -1 instead of 0 (it's unknown really), causing an attempt to extract -1 bytes. Also fixed NM and MD handling for sequence "*". In this case we cannot derive it as we have nothing to compare against, so we store any values verbatim. The same bug has been fixed for CRAM_OPT_NO_REF mode. ------------------------------------------------------------------------ r3840 | jkbonfield | 2015-03-09 16:17:55 +0000 (Mon, 09 Mar 2015) | 4 lines Changed paths: M /io_lib/trunk/io_lib/cram_decode.c Fixed hard-clips and NM:i tag. It no longer counts them. (Previously fixed in htslib but forgot to port it here. Sorry) ------------------------------------------------------------------------ r3839 | jkbonfield | 2015-03-06 16:43:14 +0000 (Fri, 06 Mar 2015) | 9 lines Changed paths: M /io_lib/trunk/io_lib/cram_decode.c M /io_lib/trunk/io_lib/cram_encode.c Protection against various CIGAR/seq issues. 1) During encoding, if the cigar string is too long or too short for the sequence then we produce an error and bail out. 2) During decoding, if the cigar string maps off the end of the sequence and our sequence was "*" then we now have better bounds checking when copying from the reference sequence. =============================================================================== 2015-03-02: RELEASE 1.13.10 ------------------------------------------------------------------------ r3834 | jkbonfield | 2015-03-03 10:09:28 +0000 (Tue, 03 Mar 2015) | 13 lines Changed paths: M /io_lib/trunk/io_lib/cram_decode.c M /io_lib/trunk/io_lib/sam_header.c M /io_lib/trunk/io_lib/sam_header.h Check for the @HD SO:sort-order field, with new parse function in sam_header.c. We now use this when setting fd->unsorted so that a packed slice with multiple references in it is not always considered unsorted. If the file claims to be sorted then it'll incr/decr refs internal to the slice as it progresses. This avoids an issue with high memory usage on very small files where all data is packed into one slice. Previously it remembered all references used as it assumed they'd be reused again very soon (unsorted mode). ------------------------------------------------------------------------ r3833 | jkbonfield | 2015-02-24 12:32:08 +0000 (Tue, 24 Feb 2015) | 3 lines Changed paths: M /io_lib/trunk/tests/data/c1#pad2.sam M /io_lib/trunk/tests/data/c1#pad3.sam M /io_lib/trunk/tests/data/ce#1.sam M /io_lib/trunk/tests/data/ce#2.sam M /io_lib/trunk/tests/data/ce#5.sam M /io_lib/trunk/tests/data/ce#5b.sam M /io_lib/trunk/tests/data/ce#large_seq.sam M /io_lib/trunk/tests/data/ce#tag_depadded.sam M /io_lib/trunk/tests/data/ce#tag_padded.sam M /io_lib/trunk/tests/data/ce#unmap1.sam M /io_lib/trunk/tests/data/ce#unmap2.sam M /io_lib/trunk/tests/data/xx#large_aux.sam M /io_lib/trunk/tests/data/xx#large_aux2.sam M /io_lib/trunk/tests/data/xx#minimal.sam M /io_lib/trunk/tests/data/xx#pair.sam M /io_lib/trunk/tests/data/xx#rg.sam M /io_lib/trunk/tests/data/xx#triplet.sam M /io_lib/trunk/tests/data/xx#unsorted.sam Modified test data so that the change applied in r3816 doesn't emit (harmless) warning messages. ------------------------------------------------------------------------ r3832 | jkbonfield | 2015-02-24 10:24:17 +0000 (Tue, 24 Feb 2015) | 2 lines Changed paths: M /io_lib/trunk/io_lib/string_alloc.h Fixed c++ guard vs double #include guard order. ------------------------------------------------------------------------ r3817 | jkbonfield | 2015-02-13 15:13:55 +0000 (Fri, 13 Feb 2015) | 4 lines Changed paths: M /io_lib/trunk/io_lib/cram_decode.c MD and NM tags now handle the cases where edits are off the end of a reference. SAM is undefined in this situation, but these should be operating in the same manner as samtools calmd. ------------------------------------------------------------------------ r3816 | jkbonfield | 2015-02-13 15:09:45 +0000 (Fri, 13 Feb 2015) | 6 lines Changed paths: M /io_lib/trunk/io_lib/cram_io.c Added a function to compare @SQ headers against the .fai file. If the @SQ lines differ in length, then use the .fai ones in preference as it is the actual .fa file which we use for performing delta encoding. This avoids reading off the end of buffers. ------------------------------------------------------------------------ r3805 | jkbonfield | 2015-01-30 14:14:33 +0000 (Fri, 30 Jan 2015) | 4 lines Changed paths: M /io_lib/trunk/io_lib/cram_index.c M /io_lib/trunk/io_lib/cram_index.h M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/io_lib/cram_io.h M /io_lib/trunk/io_lib/cram_structs.h M /io_lib/trunk/tests/cram_io_test.c Adds fgets type functionality for the custom buffering and introduces a function for loading a CRAM index via the same callback system as used for reading CRAM files. Also extended the test program. =============================================================================== 2015-01-29: RELEASE 1.13.9 ------------------------------------------------------------------------ r3802 | jkbonfield | 2015-01-29 16:34:05 +0000 (Thu, 29 Jan 2015) | 7 lines Changed paths: M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/io_lib/cram_io.h M /io_lib/trunk/io_lib/cram_structs.h Patch by German Tischler, This adds an integer argument to the callback allocation function. If set to non-zero it requests on the fly decompression (which I don't implement or use yet, but will do when submitting a patch for loading CRAM indexes via the callbacks). ------------------------------------------------------------------------ r3801 | jkbonfield | 2015-01-29 14:40:53 +0000 (Thu, 29 Jan 2015) | 2 lines Changed paths: M /io_lib/trunk/CHANGES M /io_lib/trunk/ChangeLog M /io_lib/trunk/README M /io_lib/trunk/configure.in Updates for pending 1.13.9 release. ------------------------------------------------------------------------ r3800 | jkbonfield | 2015-01-29 09:43:04 +0000 (Thu, 29 Jan 2015) | 2 lines Changed paths: M /io_lib/trunk/tests/cram_io_test.c Fixed test build on i686 platforms. ------------------------------------------------------------------------ r3799 | jkbonfield | 2015-01-28 18:04:27 +0000 (Wed, 28 Jan 2015) | 12 lines Changed paths: M /io_lib/trunk/io_lib/cram_encode.c Improved the CRAM stats array usage. Read-pair detection during encoding now has a saner view, with better commenting, of the hoops to go through to keep the cram_stats arrays up to date. A few bugs were detected here, potentially leading to suboptimal Huffman trees, by instrumenting the ->encode() calls and comparing them to cram_dump_stats() outputs. Passes tests, real world data files and struggled to find manually constructed torture cases that cause it to fail. It's still hairy and complex though! ------------------------------------------------------------------------ r3798 | jkbonfield | 2015-01-28 14:52:20 +0000 (Wed, 28 Jan 2015) | 7 lines Changed paths: M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/io_lib/cram_io.h M /io_lib/trunk/tests/Makefile.am A /io_lib/trunk/tests/cram_io.test A /io_lib/trunk/tests/cram_io_test.c Patch supplied by German Tischler. Small amendments by me. Adds a short test program for the new buffering. It only tests absolute seeks and relative seeks to the end, but it is better than nothing. Also fixes a division by zero bug occurring when the read routine was called with a size parameter of zero. ------------------------------------------------------------------------ r3797 | jkbonfield | 2015-01-26 17:02:45 +0000 (Mon, 26 Jan 2015) | 4 lines Changed paths: M /io_lib/trunk/configure.in M /io_lib/trunk/io_lib/cram_encode.c M /io_lib/trunk/io_lib/cram_io.c Correction to the CRAM_IO_CUSTOM_BUFFERING code when given a non-seekable stream (eg a pipe). It no longer calls setvbuf if it knows it would fail. ------------------------------------------------------------------------ r3796 | jkbonfield | 2015-01-26 12:04:12 +0000 (Mon, 26 Jan 2015) | 7 lines Changed paths: M /io_lib/trunk/configure.in M /io_lib/trunk/io_lib/cram_index.c M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/io_lib/cram_io.h M /io_lib/trunk/io_lib/cram_structs.h M /io_lib/trunk/io_lib/os.h.in M /io_lib/trunk/io_lib/scram.c M /io_lib/trunk/io_lib/scram.h M /io_lib/trunk/progs/cram_dump.c Patch supplied by German Tischler. Addition of a scram_open_cram_via_callbacks() interface to allow the low level I/O operations to be externally defined. This is used within Biobambam to replace stdio with custom code supporting an iRODS backend. ------------------------------------------------------------------------ r3795 | jkbonfield | 2015-01-26 10:29:43 +0000 (Mon, 26 Jan 2015) | 13 lines Changed paths: M /io_lib/trunk/io_lib/cram_encode.c Overhauled the pnext/tlen/flags for detached reads. Now when we find a second (or more) copy of a read within a slice, we do not automatically mark is as non-detached. We check whether the derived fields match those found in the file and if not we emit a "detached" read causing these fields to be written verbatim. We also do this if the data is supplementary, as the meaning of that flag is poorly defined. This is particularly useful on bwa-mem output where there is currently a disparity between bwa and io_lib on the interpretation of supplementary/primary. ------------------------------------------------------------------------ r3794 | jkbonfield | 2015-01-26 10:26:52 +0000 (Mon, 26 Jan 2015) | 3 lines Changed paths: M /io_lib/trunk/tests/compare_sam.pl Added a --all flag to keep dumping out every difference rather than terminating on the first one. ------------------------------------------------------------------------ r3793 | jkbonfield | 2015-01-26 10:26:04 +0000 (Mon, 26 Jan 2015) | 2 lines Changed paths: M /io_lib/trunk/io_lib/bam.h Added supplementary flag ------------------------------------------------------------------------ r3792 | jkbonfield | 2015-01-26 10:25:43 +0000 (Mon, 26 Jan 2015) | 3 lines Changed paths: M /io_lib/trunk/io_lib/cram_decode.c Bug fix the TLEN decoding sign. It wasn't correctly handling the case when two reads start at the same coordinate. ------------------------------------------------------------------------ r3791 | jkbonfield | 2015-01-19 11:56:18 +0000 (Mon, 19 Jan 2015) | 8 lines Changed paths: M /io_lib/trunk/io_lib/bam.c Disabled -ftree-vectorize for bam_put_seq() function under gcc. With -O3 this is enabled by default and causes the unaligned memory accesses (with ALLOW_UAC defined) to be vectorised into SIMD, yielding crashes. Under icc and clang this doesn't happen. ------------------------------------------------------------------------ r3790 | jkbonfield | 2015-01-16 17:20:36 +0000 (Fri, 16 Jan 2015) | 7 lines Changed paths: M /io_lib/trunk/io_lib/cram_index.c M /io_lib/trunk/progs/cram_index.c Made cram_index work via a pipe by specifying "-" as the input filename. To enable this it has an extra argument for the filename to write to, this is obviously mandatory for stdin unless you want "-.crai" as the index filename. ------------------------------------------------------------------------ r3789 | jkbonfield | 2015-01-16 17:08:32 +0000 (Fri, 16 Jan 2015) | 5 lines Changed paths: M /io_lib/trunk/io_lib/cram_io.c Fixed a bug where we weren't setting fd->first_container on V2.x or V3.x files. (This hasn't been used until my next commit.) =============================================================================== 2015-01-12: RELEASE 1.13.8 ------------------------------------------------------------------------ r3785 | jkbonfield | 2015-01-12 12:49:32 +0000 (Mon, 12 Jan 2015) | 2 lines Changed paths: M /io_lib/trunk/CHANGES M /io_lib/trunk/ChangeLog M /io_lib/trunk/README M /io_lib/trunk/configure.in M /io_lib/trunk/progs/scramble.c Updates to publish release 1.13.8 ------------------------------------------------------------------------ r3784 | jkbonfield | 2015-01-12 12:16:55 +0000 (Mon, 12 Jan 2015) | 6 lines Renamed the use_arith options to be use_rans, as this is strictly the correct name. (We just repurposed the old code.) Also automatically enable RANS codec when asking for version 3.0 files. ------------------------------------------------------------------------ r3783 | jkbonfield | 2015-01-08 17:03:56 +0000 (Thu, 08 Jan 2015) | 20 lines Changed paths: M /io_lib/trunk/io_lib/cram_decode.c Overhauled the cram_dependent_data_series function and associated code. Previously it contained if (hdr->data_series & CRAM_SEQ) hdr->data_series |= CRAM_CIGAR but this is too permissive as it means even something like CRAM_BF (in the CRAM_SEQ expansion) would cause all over members of CRAM_SEQ to be brought in when they are not strictly needed by the code path. Instead these have been replaced by more explicit dependencies, analysed from the source code. This has been tested by producing CRAM files with random mixing of data series and then explicitly requesting single columns vs all columns to compare the results. In doing so found and fixed a few other long standing data-series bugs too, such as a dependence on CRAM_BF for more fields that it would appear obviously necessary. ------------------------------------------------------------------------ r3782 | jkbonfield | 2015-01-08 16:58:29 +0000 (Thu, 08 Jan 2015) | 9 lines Changed paths: M /io_lib/trunk/io_lib/cram_encode.c M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/io_lib/cram_stats.c Tidied up the CRAM randomiser code. This was originally some #if 0-ed out code to mix data series together in random manners. Somewhere along the ling it broke. The new code (unused unless RANDOMISER is defined) is simpler, using solely the CORE huffman block as a means to mix data series together. This is still sufficient mixing to test the dependent_data_series functions. ------------------------------------------------------------------------ r3781 | jkbonfield | 2015-01-06 17:13:36 +0000 (Tue, 06 Jan 2015) | 5 lines Changed paths: M /io_lib/trunk/io_lib/cram_encode.c Fixed ref count leak in cram_encode_container caused by not decrementing the final sequence we ended up processing. (It has a decr/incr loop every time we switch from one seq to the next, to cope with packed chr-pos-sorted slices.) ------------------------------------------------------------------------ r3780 | jkbonfield | 2015-01-06 16:41:13 +0000 (Tue, 06 Jan 2015) | 8 lines Changed paths: M /io_lib/trunk/io_lib/cram_encode.c M /io_lib/trunk/io_lib/cram_io.c Reverted the cram_encode_container change to call cram_ref_incr and added a ref incr in cram_get_ref instead. This better fixes the issue of sharing references between containers, fixing decoding as well as encoding. Also prevented encoding from creating c->refs_used when multi_seq isn't set. ------------------------------------------------------------------------ r3779 | jkbonfield | 2015-01-06 12:03:15 +0000 (Tue, 06 Jan 2015) | 8 lines Changed paths: M /io_lib/trunk/io_lib/cram_io.c Fixed a logic error in the cram_ref_decr_locked function. It shouldn't set r->last_id to -1 ever, as with containers large enough to fit the entire reference this caused it to end up alternating between free and non-free of reference. The set of -1 in cram_ref_incr_locked was already sufficient to prevent repeated incr#1/decr#1/incr#1/decr#1 from freeing and reloading. ------------------------------------------------------------------------ r3777 | jkbonfield | 2015-01-05 14:54:27 +0000 (Mon, 05 Jan 2015) | 3 lines Changed paths: M /io_lib/trunk/io_lib/cram_encode.c Fixed a small memory leak where we didn't deallocate a cram_block that we had created but later culled due to containing zero bytes. ------------------------------------------------------------------------ r3776 | jkbonfield | 2015-01-05 14:53:56 +0000 (Mon, 05 Jan 2015) | 2 lines Changed paths: M /io_lib/trunk/io_lib/cram_codecs.c Fixed a memory leak when destroying a BYTE_ARRAY_LEN encoder. ------------------------------------------------------------------------ r3775 | jkbonfield | 2015-01-05 14:53:28 +0000 (Mon, 05 Jan 2015) | 2 lines Changed paths: M /io_lib/trunk/io_lib/rANS_static.c Fixed memory leak when trying to O1 compress a block <= 4 bytes long. ------------------------------------------------------------------------ r3774 | jkbonfield | 2015-01-05 12:22:21 +0000 (Mon, 05 Jan 2015) | 7 lines Changed paths: M /io_lib/trunk/io_lib/cram_encode.c cram_encode_container for multi-ref containers pre-caches all the references in memory, and then decrements the ref count at the end to (potentially) free them again. Unfortunately it didn't do an explicit cram_ref_incr at the start meaning it caused the refs to be repopulated for each and every container rather than honouring the fd->shared_ref variable. ------------------------------------------------------------------------ r3773 | jkbonfield | 2015-01-05 11:44:32 +0000 (Mon, 05 Jan 2015) | 3 lines Changed paths: M /io_lib/trunk/io_lib/cram_encode.c Remove pointless thrashing of reference sequence fetching when running in "-x" mode. ------------------------------------------------------------------------ r3771 | jkbonfield | 2014-12-12 17:27:38 +0000 (Fri, 12 Dec 2014) | 9 lines Changed paths: M /io_lib/trunk/io_lib/bam.c Fixed SAM parsing code to handle integer values from -2billion to +4billion, for proper BAM generation. Fixed BAM to SAM conversion to correctly track whether the bam aux item is signed or unsigned. To do this the old bam_aux_iter has been updated to become bam_aux_iter_full (the old one being a wrapper around the new). The full version also now returns the original bam format code instead of the generic sam 'i' code for all integers. ------------------------------------------------------------------------ r3770 | jkbonfield | 2014-12-12 15:09:13 +0000 (Fri, 12 Dec 2014) | 10 lines Changed paths: M /io_lib/trunk/io_lib/rANS_static.c Added in the compressed length field to the rANS codec header. Technically this isn't needed, but it adds a very small extra amount of space and it allows for the internal rANS codec to be the same format as an external block-based rANS codec, or to allow the rANS codec internally to compress very large buffers using a smaller block size. This now brings this code into line with the Java cramtools ------------------------------------------------------------------------ r3769 | jkbonfield | 2014-12-09 17:07:06 +0000 (Tue, 09 Dec 2014) | 3 lines Changed paths: M /io_lib/trunk/io_lib/cram_io.c Removed the spurious warning about lack of EOF when running on a CRAM v2.0 or v1.0 file as the EOF blocks were not generated back then. ------------------------------------------------------------------------ r3768 | jkbonfield | 2014-12-09 17:06:23 +0000 (Tue, 09 Dec 2014) | 4 lines Changed paths: M /io_lib/trunk/io_lib/cram_decode.c Avoid excessive mutex locking when processing a slice with mixed reference IDs. If the record level reference ID doesn't change from one record to the next, don't attempt to query the new reference. ------------------------------------------------------------------------ r3763 | jkbonfield | 2014-11-06 17:17:42 +0000 (Thu, 06 Nov 2014) | 8 lines Changed paths: M /io_lib/trunk/io_lib/cram_index.c Fixed a case where seeking to multiple ranges could cause a query to fail is the previous range ended precisely on a container boundary. (See https://github.com/samtools/htslib/commit/b96a302071ae05c1cf3e58a897d0e7f5d994ac58) Replaced sscanf with strtol for CRAM index parsing. This avoids avoids a subtle bug where I was using PRId64 instead of SCNd64 in my sscanf format string too. Strtol works out about 15% faster. ------------------------------------------------------------------------ r3746 | jkbonfield | 2014-10-02 11:54:00 +0100 (Thu, 02 Oct 2014) | 2 lines Changed paths: M /io_lib/trunk/io_lib/cram_structs.h Fixed memory leak, caused by duplicate creation of SC block. ------------------------------------------------------------------------ r3745 | jkbonfield | 2014-10-01 18:09:29 +0100 (Wed, 01 Oct 2014) | 2 lines Changed paths: M /io_lib/trunk/io_lib/cram_decode.c M /io_lib/trunk/io_lib/cram_index.c Fixes for handling range requests while also multi-threading. ------------------------------------------------------------------------ r3744 | jkbonfield | 2014-09-30 16:35:49 +0100 (Tue, 30 Sep 2014) | 4 lines Changed paths: M /io_lib/trunk/io_lib/cram_encode.c M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/io_lib/cram_structs.h Do not attempt to link primary and secondary alignments together when working out if the mate is downstream. This was causing SAM->CRAM->SAM errors. ------------------------------------------------------------------------ r3742 | jkbonfield | 2014-09-22 15:23:26 +0100 (Mon, 22 Sep 2014) | 2 lines Changed paths: M /io_lib/trunk/io_lib/bam.h M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/io_lib/cram_structs.h Fixed a few clang enum warnings. ------------------------------------------------------------------------ r3738 | jkbonfield | 2014-09-19 15:31:20 +0100 (Fri, 19 Sep 2014) | 4 lines Changed paths: M /io_lib/trunk/io_lib/cram_decode.c M /io_lib/trunk/io_lib/cram_structs.h Added SAM_RGAUX as an additional required field type. This is useful for when we need the RG:Z: auxiliary tag without also needing to decode all the other aux data. ------------------------------------------------------------------------ r3737 | jkbonfield | 2014-09-19 15:28:56 +0100 (Fri, 19 Sep 2014) | 5 lines Changed paths: M /io_lib/trunk/io_lib/bam.c M /io_lib/trunk/io_lib/bam.h M /io_lib/trunk/io_lib/cram_decode.c M /io_lib/trunk/io_lib/cram_io.h M /io_lib/trunk/progs/scram_pileup.c Replaced BLOCK_APPENDF with BLOCK_APPEND_UINT and use the append_int function that already exists in bam.h for faster encoding. This saves ~3/4trs of the time added by DECODE_MD option. ------------------------------------------------------------------------ r3736 | jkbonfield | 2014-09-18 14:42:15 +0100 (Thu, 18 Sep 2014) | 9 lines Changed paths: M /io_lib/trunk/io_lib/cram_decode.c Fixed generation of MD and NM tags in cram_decode_seq() when using a non-reference encoding. These cannot be stored or regenerated in such cases. (Question: should we therefore explicitly store any MD and NM tags when generating the CRAM if using non-reference encoding? Probably yes.) ------------------------------------------------------------------------ r3734 | jkbonfield | 2014-09-15 09:56:21 +0100 (Mon, 15 Sep 2014) | 10 lines Changed paths: M /io_lib/trunk/io_lib/rANS_static.c Fixed a buffer read-overrun in my latest optimisation of RansDecRenorm(). Now using the original. Tidy up the bracketting to make gcc happier (no change to compiled output). Protected against attempting to do order-1 compressio of data < 4 bytes long. The 4-way unrolling caused this to fail, but it is a pointless thing to try anyway so it now uses order-0 for that case. ------------------------------------------------------------------------ r3733 | jkbonfield | 2014-09-12 12:32:12 +0100 (Fri, 12 Sep 2014) | 2 lines Changed paths: M /io_lib/trunk/io_lib/open_trace_file.c Change of heart - also block ftp:// URLs from auto-decompression too. ------------------------------------------------------------------------ r3732 | jkbonfield | 2014-09-12 12:30:04 +0100 (Fri, 12 Sep 2014) | 13 lines Changed paths: M /io_lib/trunk/io_lib/open_trace_file.c Improvements to the search path code. 1) Elements of |http and |ftp no longer cause it to fail the : vs :: shenanigans. 2) Removed the valid variable and checks. Instead it is done with a far simpler break statement at the end of the loop to bail out if we requested it via "|ele". 3) Force http:// queries to only check once, regardless of whether it is preceeded by |. This is because data-compression is better handled by the server already. ------------------------------------------------------------------------ r3731 | jkbonfield | 2014-09-12 11:18:54 +0100 (Fri, 12 Sep 2014) | 12 lines Changed paths: M /io_lib/trunk/io_lib/bam.c M /io_lib/trunk/io_lib/bam.h Added BAM_CONSUME_REF(op) and BAM_CONSUME_SEQ(op) macros to help catch all types of cigar operations that step along the reference and/or sequence. Added uses of these in bam_construct_seq() which wasn't correctly handling the X and = cigar codes (not that we ever generate these in our own code, but someone else may be using this as a library). Finally fixed a bug in the interpretation of beg,end for the bin calculation. It was being used as [beg,end] instead of [beg,end), causing bins to change in specific locations. ------------------------------------------------------------------------ r3728 | jkbonfield | 2014-09-11 14:19:27 +0100 (Thu, 11 Sep 2014) | 7 lines Changed paths: M /io_lib/trunk/io_lib/bam.c M /io_lib/trunk/io_lib/bam.h Implements the change proposed in http://sourceforge.net/p/samtools/mailman/message/30672431/ We use the bam_seq_t->bin field to hold the top 16 bits of the cigar_len field when it is above 65535, also setting flags 0x8000 bit to indicate this repurposing of bin. ------------------------------------------------------------------------ r3720 | jkbonfield | 2014-09-05 12:15:07 +0100 (Fri, 05 Sep 2014) | 3 lines Changed paths: M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/io_lib/cram_io.h Made load_ref_portion and refs_load_fai external rather than static, as we are using them inside Gap5 now. ------------------------------------------------------------------------ r3693 | jkbonfield | 2014-07-01 17:33:39 +0100 (Tue, 01 Jul 2014) | 4 lines Changed paths: M /io_lib/trunk/io_lib/cram_io.c Fixed the compressed header. The second block is now correctly labelled as using method RAW not GZIP, and also uses \0 instead of # as the padding byte. ------------------------------------------------------------------------ r3691 | jkbonfield | 2014-06-30 11:11:01 +0100 (Mon, 30 Jun 2014) | 5 lines Changed paths: M /io_lib/trunk/io_lib/cram_encode.c M /io_lib/trunk/io_lib/cram_structs.h Added ZM:B: to the FZ:B: special block as IonTorrent uses this too. Also bug fixed the FZ:B: encoding as it was just doing string handling before which is incorrect for the B type. ------------------------------------------------------------------------ r3690 | jkbonfield | 2014-06-30 09:44:21 +0100 (Mon, 30 Jun 2014) | 8 lines Changed paths: M /io_lib/trunk/io_lib/cram_io.c Reverted r3669. While technically correct to fill out M5 fields, it is useless and blocks genuinely desired behaviour (ie how to produce a CRAM file when we have no idea what the ref seq is). I believe in v3.0 the spec will be changed to permit this behaviour. ------------------------------------------------------------------------ r3689 | jkbonfield | 2014-06-30 09:43:04 +0100 (Mon, 30 Jun 2014) | 3 lines Changed paths: M /io_lib/trunk/io_lib/cram_codecs.c Removed a duplicate piece of code, probably added in the previous fix to the block-caching issue. ------------------------------------------------------------------------ r3687 | jkbonfield | 2014-06-30 08:26:29 +0100 (Mon, 30 Jun 2014) | 8 lines Changed paths: M /io_lib/trunk/io_lib/cram_codecs.c M /io_lib/trunk/io_lib/cram_codecs.h Revert a partial change introduced in #3627. We cannot cache the cram_block pointer and use ..decode_char2() and ..decode_block2() functions to avoid looking up the block as this breaks multi-slice containers. The speed gains in doing this were marginal at best; 1% or so. ------------------------------------------------------------------------ r3686 | jkbonfield | 2014-06-30 07:52:30 +0100 (Mon, 30 Jun 2014) | 5 lines Changed paths: M /io_lib/trunk/io_lib/cram_encode.c M /io_lib/trunk/io_lib/cram_structs.h Put BD:Z and BI:Z into separate external blocks instead of merging together as on the files I've tested it seems to work better. Is this normal? I wonder what file I looked at that initially lead me to believe the opposite now. ------------------------------------------------------------------------ r3682 | jkbonfield | 2014-06-25 12:24:03 +0100 (Wed, 25 Jun 2014) | 9 lines Changed paths: M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/io_lib/cram_structs.h M /io_lib/trunk/io_lib/rANS_static.c Replaced RANS0 and RANS1 codec identifiers with a single RANS codec. Internally we still call them RANS0 and RANS1 methods so it can auto-tune to order-0 or order-1 in the statistics, but before writing out we force both to be RANS/RANS0 identifier. The rANS implementation has therefore added an extra byte (order) to the data stream. I also tweaked the efficiency of decoding a bit more so it's now faster. ------------------------------------------------------------------------ r3681 | jkbonfield | 2014-06-25 12:12:16 +0100 (Wed, 25 Jun 2014) | 9 lines Changed paths: M /io_lib/trunk/io_lib/cram_io.c Added support for compressed SAM headers. This involved removing the various #ifdefs for different types of padding and instead coding it up with a variable that changes depending on CRAM v2.1 or v3.0. (Cramtools doesn't allow for a second padding block in 2.1, although technically it could fit within the existing spec.) ------------------------------------------------------------------------ r3680 | jkbonfield | 2014-06-25 09:29:43 +0100 (Wed, 25 Jun 2014) | 3 lines Changed paths: M /io_lib/trunk/io_lib/cram_encode.c Small speed increase - only attempt to compress the CORE block when it is of sufficient size to make it worth while. ------------------------------------------------------------------------ r3678 | jkbonfield | 2014-06-20 17:37:48 +0100 (Fri, 20 Jun 2014) | 5 lines Changed paths: M /io_lib/trunk/io_lib/open_trace_file.c Improved open_trace_file (RAWDATA, REF_PATH, etc) to handle URLs without the URL= component and to also gloss over the : vs :: issue in http://server:port/foo/bar. ------------------------------------------------------------------------ r3677 | jkbonfield | 2014-06-20 17:17:19 +0100 (Fri, 20 Jun 2014) | 20 lines Changed paths: M /io_lib/trunk/io_lib/cram_codecs.c M /io_lib/trunk/io_lib/cram_codecs.h M /io_lib/trunk/io_lib/cram_decode.c M /io_lib/trunk/io_lib/cram_encode.c M /io_lib/trunk/io_lib/cram_structs.h M /io_lib/trunk/progs/cram_dump.c A mishmash of changes for CRAM v3.0 (not yet the default output format). Sorry it's munged together. The 'b' and 'q' feature types have been implemented, allowing multiple bases and qualities to be stored as a single feature. This greatly speeds up scramble -x mode (referenceless) while also reducing the file size. Added support for the BYTE_ARRAY_LEN encoder. It already existed in decoder, but it is optimal for some cases to use as encoder instead of the usual BYTE_ARRAY_STOP. Bug fix to the external decoders. If there is an attempt to decode 0 bytes then it no longer matters if the block does not exist. (This comes about when faced with silly CIGAR strings like "0S".) Changed scramble to no longer output empty blocks. Cram_dump: this now outputs the compression types used for each external block as g(gzip), b(bzip2), l(lzma), r(rANS0) and R(rANS1). ------------------------------------------------------------------------ r3675 | jkbonfield | 2014-06-12 15:30:37 +0100 (Thu, 12 Jun 2014) | 4 lines Changed paths: M /io_lib/trunk/io_lib/cram_decode.c Bug fix to cram_dependent_data_series - it needs to always decompress the CORE block. This didn't used to be compressed normally, but now can be more easily. ------------------------------------------------------------------------ r3673 | jkbonfield | 2014-06-10 17:46:48 +0100 (Tue, 10 Jun 2014) | 2 lines Changed paths: M /io_lib/trunk/io_lib/bam.c Handle \r\n in SAM files as well as \n. ------------------------------------------------------------------------ r3672 | jkbonfield | 2014-06-10 17:10:55 +0100 (Tue, 10 Jun 2014) | 5 lines Changed paths: M /io_lib/trunk/io_lib/bam.c Fixed a buffer read-overrun in COPY_CPF_TO_CPTM macro when there are no auxiliary tags and the quality string ends at just below 1024 or a higher power of two. The macro reads 8 bytes at a time, but we needed to ensure the buffer is large enough to cope. ------------------------------------------------------------------------ r3671 | jkbonfield | 2014-06-10 16:41:00 +0100 (Tue, 10 Jun 2014) | 2 lines Changed paths: M /io_lib/trunk/io_lib/thread_pool.c Removed tiny memory leak of t_stack in thread pool. ------------------------------------------------------------------------ r3670 | jkbonfield | 2014-06-10 16:31:35 +0100 (Tue, 10 Jun 2014) | 5 lines Changed paths: M /io_lib/trunk/io_lib/cram_encode.c M /io_lib/trunk/tests/scram.test Fixed the test harness to run with -e and -x scramble parameters. Bug fixed scramble -x as it was not correctly setting the RI data series for some tests. ------------------------------------------------------------------------ r3669 | jkbonfield | 2014-06-10 16:30:26 +0100 (Tue, 10 Jun 2014) | 5 lines Changed paths: M /io_lib/trunk/io_lib/cram_io.c cram_write_SAM_hdr() now generates M5 strings even when -x (no_ref) is defined. This is because although we don't need the MD5 strings when -x is present for decoding the CRAM, the presence of the M5 tag is mandatory. ------------------------------------------------------------------------ r3668 | jkbonfield | 2014-06-06 16:50:17 +0100 (Fri, 06 Jun 2014) | 4 lines Changed paths: M /io_lib/trunk/io_lib/cram_encode.c Bug fix to encoding the 'd' (double) aux data type. We've never tested this as it's not even in the SAM spec, but I added it anyway as samtools seems to include it. ------------------------------------------------------------------------ r3667 | jkbonfield | 2014-06-04 17:27:13 +0100 (Wed, 04 Jun 2014) | 5 lines Changed paths: M /io_lib/trunk/io_lib/thread_pool.c Removed uninitialised memory behaviour (worse, freeing an uninitialised pointer). This triggered crashes on SPARC/Solaris when testing in multi-threading, but bizarrely never fired on intel/linux not even under valgrind. =============================================================================== 2014-05-30: RELEASE 1.13.7 ------------------------------------------------------------------------ r3664 | jkbonfield | 2014-05-30 15:44:28 +0100 (Fri, 30 May 2014) | 6 lines Changed paths: M /io_lib/trunk/io_lib/cram_decode.c Fixed bug detected by trying to scram_flagstat on a Cramtools produced CRAM file. It wasn't correctly noticing the aux block needed decoding due to the use of E_BYTE_ARRAY_LEN/STOP codecs instead of just EXTERNAL. ------------------------------------------------------------------------ r3663 | jkbonfield | 2014-05-30 15:42:47 +0100 (Fri, 30 May 2014) | 3 lines Changed paths: M /io_lib/trunk/io_lib/cram_codecs.c Avoid an uninitialise variable access when finding HUFFMAN={0,0} codecs (reinterpreted as E_NULL). ------------------------------------------------------------------------ r3662 | jkbonfield | 2014-05-30 15:41:58 +0100 (Fri, 30 May 2014) | 3 lines Changed paths: M /io_lib/trunk/progs/cram_dump.c Fixed cram_dump to check other external encoding types (than E_EXTERNAL) when determining the keys to report. ------------------------------------------------------------------------ r3660 | jkbonfield | 2014-05-28 14:34:05 +0100 (Wed, 28 May 2014) | 10 lines Changed paths: M /io_lib/trunk/io_lib/bam.c M /io_lib/trunk/io_lib/cram_decode.c M /io_lib/trunk/io_lib/thread_pool.c M /io_lib/trunk/io_lib/thread_pool.h Modified the thread pool to use as few threads as possible. The intention is that when given, say, 16 threads but being I/O bound such that 12 cores is enough to keep up with the I/O then we have 12 threads kept busy and 4 totally idle. This is implemented by dispatching jobs on lower thread IDs in preference and maintaining a queue of pending jobs in proportion to the number of threads currently running, rather than instantly dispatching. ------------------------------------------------------------------------ r3659 | jkbonfield | 2014-05-28 14:08:26 +0100 (Wed, 28 May 2014) | 5 lines Changed paths: M /io_lib/trunk/io_lib/cram_decode.c M /io_lib/trunk/io_lib/cram_io.c Sanitised fd->empty_container so it is initialised only in one place. This also fixes a samtools issue: https://github.com/samtools/samtools/issues/146 =============================================================================== 2014-05-19: RELEASE 1.13.6 ------------------------------------------------------------------------ r3654 | jkbonfield | 2014-05-19 11:10:41 +0100 (Mon, 19 May 2014) | 2 lines Changed paths: M /io_lib/trunk/CHANGES M /io_lib/trunk/ChangeLog M /io_lib/trunk/README M /io_lib/trunk/configure.in Updated for v1.13.6 ------------------------------------------------------------------------ r3653 | jkbonfield | 2014-05-19 10:10:29 +0100 (Mon, 19 May 2014) | 7 lines Changed paths: M /io_lib/trunk/progs/scram_pileup.c Bug fix to the demo pileup tool. It had some memory corruption issues at high depth. NOTE: It still isn't perfect when dealing with insertions. This isn't a new bug, but a discovery of an existing bug during the fixing of the above problem. ------------------------------------------------------------------------ r3652 | jkbonfield | 2014-05-19 10:09:07 +0100 (Mon, 19 May 2014) | 8 lines Changed paths: M /io_lib/trunk/io_lib/cram_io.c Fixed EOF to be set to 1 (expected EOF) on first opening a file and then changed to 0 (error) before decoding each container+slice. Previously it started as 0. The effect of this is that when asking for only the header and not decoding a single read, we no longer incorrectly claim an unexpected EOF. ------------------------------------------------------------------------ r3638 | jkbonfield | 2014-04-16 09:43:58 +0100 (Wed, 16 Apr 2014) | 4 lines Changed paths: M /io_lib/trunk/io_lib/cram_decode.c Removed small memory leak in cram_dependent_data_series(), triggered when requesting only a subset of the data. (Ie scram_flagstat and cram_index in some scenarios.) ------------------------------------------------------------------------ r3637 | jkbonfield | 2014-04-16 09:41:39 +0100 (Wed, 16 Apr 2014) | 2 lines Changed paths: M /io_lib/trunk/io_lib/cram_io.c Fixed memory leak in the decoding of BZIP2 and ARITH/RANS[01] codecs. ------------------------------------------------------------------------ r3635 | jkbonfield | 2014-04-11 16:27:59 +0100 (Fri, 11 Apr 2014) | 2 lines Changed paths: M /io_lib/trunk/progs/cram_dump.c Improved printing of external blocks. ------------------------------------------------------------------------ r3634 | jkbonfield | 2014-04-11 15:15:03 +0100 (Fri, 11 Apr 2014) | 3 lines Changed paths: M /io_lib/trunk/io_lib/cram_decode.c Made cram_to_bam() honour the required_fields SAM_QNAME check. This substantially speeds up scram_flagstat by 50-130%. ------------------------------------------------------------------------ r3633 | jkbonfield | 2014-04-11 11:44:46 +0100 (Fri, 11 Apr 2014) | 3 lines Changed paths: M /io_lib/trunk/io_lib/cram_decode.c Better fix for container memory leak. Now parses valgrind in threaded and non-threaded mode. ------------------------------------------------------------------------ r3631 | jkbonfield | 2014-04-11 10:17:08 +0100 (Fri, 11 Apr 2014) | 4 lines Changed paths: M /io_lib/trunk/io_lib/cram_decode.c Revert one of the previous memory leaks as it breaks multi-threading. I need to find a more suitable way to solve this. The memory leak is back, but it's tiny; essentially leaking the last (empty) container. ------------------------------------------------------------------------ r3630 | jkbonfield | 2014-04-11 09:52:10 +0100 (Fri, 11 Apr 2014) | 2 lines Changed paths: M /io_lib/trunk/io_lib/cram_decode.c Fixed two small memory leaks. ------------------------------------------------------------------------ r3629 | jkbonfield | 2014-04-11 09:51:47 +0100 (Fri, 11 Apr 2014) | 4 lines Changed paths: M /io_lib/trunk/io_lib/cram_io.c Use calloc instead on the cram_metrics. We weren't initialising all the fields before and so had uninitialised memory accesses, potentially leading to poor choices in compression algorithm. ------------------------------------------------------------------------ r3628 | jkbonfield | 2014-04-10 17:53:03 +0100 (Thu, 10 Apr 2014) | 6 lines Changed paths: M /io_lib/trunk/progs/cram_index.c Also added CRAM_OPT_REQUIRED_FIELDS option to cram_index. Indexing sometimes requires decoding of Ref ID and start/end when a slice contains multiple refs, so specifying this speeds up indexing several fold in that scenario. ------------------------------------------------------------------------ r3627 | jkbonfield | 2014-04-10 17:47:16 +0100 (Thu, 10 Apr 2014) | 28 lines Changed paths: M /io_lib/trunk M /io_lib/trunk/configure.in M /io_lib/trunk/io_lib/bam.c M /io_lib/trunk/io_lib/cram_codecs.c M /io_lib/trunk/io_lib/cram_codecs.h M /io_lib/trunk/io_lib/cram_decode.c M /io_lib/trunk/io_lib/cram_encode.c M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/io_lib/cram_io.h M /io_lib/trunk/io_lib/cram_stats.c M /io_lib/trunk/io_lib/cram_structs.h M /io_lib/trunk/progs/Makefile.am M /io_lib/trunk/progs/cram_dump.c M /io_lib/trunk/progs/scram_flagstat.c A /io_lib/trunk/progs/scram_test.c (from /io_lib/cram_refactor/progs/scram_test.c:3626) M /io_lib/trunk/progs/scramble.c A /io_lib/trunk/tests/data/aux#special.sam (from /io_lib/cram_refactor/tests/data/aux#special.sam:3626) M /io_lib/trunk/tests/data/xx.fa M /io_lib/trunk/tests/data/xx.fa.fai Merged in the cram_refactor branch. This consists of a major overhaul of the way cram data series are managed. - The C structs are now more array based, preferring ->block[DS_XX] instead of ->XX_blk and similar. - Many more block types wil be external by default now. It auto-selects CORE vs external based on size. - Selection of compression algorithm for external blocks is more advanced. Every external block has a metrics array element. This now tracks more than 2 types of compression and it culls candidate methods if they repeatedly are unpromising. The upshot is the hard-coded selection of which method to use for which block is (mostly) removed in favour of auto detection. - CRAM now has the option to ignore certain types of fields when decoding. Combined with more external blocks this permits faster decoding for tools like scram_flagstat, potentially 2-3x faster. - Auxiliary tags now get split up into multiple external blocks based on data type. We still aggregate many together, but tag strings, integers, sequences and quality strings now get their own blocks. ------------------------------------------------------------------------ r3625 | jkbonfield | 2014-04-10 14:59:06 +0100 (Thu, 10 Apr 2014) | 7 lines Changed paths: M /io_lib/trunk/io_lib/cram_decode.c M /io_lib/trunk/io_lib/cram_index.c M /io_lib/trunk/io_lib/cram_index.h M /io_lib/trunk/progs/cram_index.c Moved the cram index creation out of cram_index program and into the cram_index.c part of io_lib library. Bug fixed both the index creation and decode range checking to handle containers/slices with ref_seq_id of -2, indicating that multiple references share the same container. ------------------------------------------------------------------------ r3623 | jkbonfield | 2014-04-08 17:54:05 +0100 (Tue, 08 Apr 2014) | 2 lines Changed paths: M /io_lib/trunk/io_lib/cram_codecs.c Fixed BETA codec so that it honours beta offset value for zero length codes. ------------------------------------------------------------------------ r3609 | jkbonfield | 2014-04-02 10:27:15 +0100 (Wed, 02 Apr 2014) | 2 lines Changed paths: M /io_lib/trunk/io_lib/bam.c Merging xx#minimal.sam bug fix accidentally applied to cram_refactor branch. ------------------------------------------------------------------------ r3604 | jkbonfield | 2014-03-27 18:08:09 +0000 (Thu, 27 Mar 2014) | 3 lines Changed paths: M /io_lib/trunk/progs/cram_dump.c Fixed calculation of bmax. It's not perfect and can be foiled by large content_id values. ------------------------------------------------------------------------ r3603 | jkbonfield | 2014-03-27 17:37:47 +0000 (Thu, 27 Mar 2014) | 6 lines Changed paths: M /io_lib/trunk/progs/cram_dump.c Yet more hackiness. The total block sizes are now broken down by content_id value and in turn by the data series that have been observed using that content_id. This makes it easier to see the size by type. ------------------------------------------------------------------------ r3602 | jkbonfield | 2014-03-27 17:36:38 +0000 (Thu, 27 Mar 2014) | 6 lines Changed paths: M /io_lib/trunk/io_lib/hash_table.c M /io_lib/trunk/io_lib/hash_table.h HashTableNext() crashes on hash tables built using HASH_INT_KEYS, and it cannot check as it takes no hash point. Instead created a HashTableNextInt() function so the caller can use the appropriate function. ------------------------------------------------------------------------ r3601 | jkbonfield | 2014-03-25 14:47:54 +0000 (Tue, 25 Mar 2014) | 6 lines Changed paths: M /io_lib/trunk/io_lib/bam.c Multi-threading bug fix: Error in bam_uncompress_input and its use of non-blocking mode. It had the conditional back to front, so could still deadlock in rare cases (as well as unnecessarily waiting in others, harming performance). ------------------------------------------------------------------------ r3599 | jkbonfield | 2014-03-17 10:01:45 +0000 (Mon, 17 Mar 2014) | 3 lines Changed paths: M /io_lib/trunk/progs/cram_dump.c Auto-detect ascii vs binary and print up the block contents in a friendlier fashion. ------------------------------------------------------------------------ r3593 | jkbonfield | 2014-03-10 11:17:49 +0000 (Mon, 10 Mar 2014) | 5 lines Changed paths: M /io_lib/trunk/io_lib/rANS_static.c Replacement of the rANS codec. This new one is better optimised, but also has a smaller encoding of the symbol frequencies and only has 4 way unrolling for the order-1 variant for simplicity (it's the same as the order-0 one). ------------------------------------------------------------------------ r3592 | jkbonfield | 2014-03-10 11:16:08 +0000 (Mon, 10 Mar 2014) | 4 lines Changed paths: M /io_lib/trunk/io_lib/bam.c Bug fix to load_bam_header(). When adding @SQ lines to a header where the text representation in BAM misses a sequence but the binary one includes it, we always errored due to incorrectly checking the return code. ------------------------------------------------------------------------ r3589 | jkbonfield | 2014-02-28 17:32:53 +0000 (Fri, 28 Feb 2014) | 9 lines Changed paths: M /io_lib/trunk/io_lib/cram_io.c Bug in the EOF block writing code. It was outputting 0xff 0xff 0xff 0xff 0xff instead of 0xff 0xff 0xff 0xff 0x0f for -1. This caused the CRC to be invalid if you checksummed the raw data instead of re-encoding it as Scramble does. Also bug fixed the scramble -V option. Changing the version number wasn't having any effect. =============================================================================== 2014-02-28: RELEASE 1.13.5 ------------------------------------------------------------------------ r3584 | jkbonfield | 2014-02-27 16:22:17 +0000 (Thu, 27 Feb 2014) | 6 lines Changed paths: M /io_lib/trunk/io_lib/cram_io.c Fixed a bug when loading in fasta files consisting of all sequence on a single line and in lowercase. The uppercasing code was only being called during the loop to strip out newlines. ------------------------------------------------------------------------ r3579 | daviesrob | 2014-02-24 11:19:26 +0000 (Mon, 24 Feb 2014) | 10 lines Changed paths: M /io_lib/trunk/io_lib/cram_io.c Fixed incorrect MD5 generation in cram_write_SAM_hdr Fixed bug where cram_write_SAM_hdr passed a length of zero to MD5_Update, with the result that the MD5 generated was always that of an empty file. It now checks the length again after trying to load the reference so the correct value is used. Also check for cram_get_ref returning NULL, and call cram_ref_decr earlier to avoid a possible memory leak if sam_hdr_update fails. =============================================================================== 2014-02-17: RELEASE 1.13.4 ------------------------------------------------------------------------ r3577 | jkbonfield | 2014-02-17 12:22:05 +0000 (Mon, 17 Feb 2014) | 2 lines Changed paths: M /io_lib/trunk/CHANGES M /io_lib/trunk/ChangeLog M /io_lib/trunk/README M /io_lib/trunk/configure.in 1.13.4 release ------------------------------------------------------------------------ r3576 | jkbonfield | 2014-02-17 11:56:36 +0000 (Mon, 17 Feb 2014) | 7 lines Changed paths: M /io_lib/trunk/io_lib/cram_io.c Reduced the number of realloc calls zlib_mem_inflate(), while hopefully not overallocating much either. Forcibly set block->alloc field when decompressing from gzip or bzip2. This cures a crash when attempting to compress CRAM with level 6 and higher. ------------------------------------------------------------------------ r3575 | jkbonfield | 2014-02-14 17:34:36 +0000 (Fri, 14 Feb 2014) | 5 lines Changed paths: M /io_lib/trunk/io_lib/cram_encode.c Bug fix to compression level -6 and above. Improved the zlib usage when the default compression method is ARITH/RANS. ------------------------------------------------------------------------ r3574 | jkbonfield | 2014-02-14 16:29:00 +0000 (Fri, 14 Feb 2014) | 3 lines Changed paths: M /io_lib/trunk/io_lib/Makefile.am M /io_lib/trunk/io_lib/arith_static.c M /io_lib/trunk/io_lib/cram_encode.c M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/io_lib/cram_structs.h A /io_lib/trunk/io_lib/rANS_static.c A /io_lib/trunk/io_lib/rANS_static.h First test implementation of the rANS encoder, to replace arithmetic coding? (See https://github.com/rygorous/ryg_rans) ------------------------------------------------------------------------ r3573 | jkbonfield | 2014-02-14 11:42:43 +0000 (Fri, 14 Feb 2014) | 3 lines Changed paths: M /io_lib/trunk/io_lib/cram_decode.c Fixed EOF check. The usual code path had the correct check, but an empty cram triggered the incorrect code. ------------------------------------------------------------------------ r3572 | jkbonfield | 2014-02-14 10:28:38 +0000 (Fri, 14 Feb 2014) | 9 lines Changed paths: M /io_lib/trunk/io_lib/cram_io.c The default CRAM version is now 2.1. Also improved version number checking so an unknown minor version number isn't fatal - as it's minor we should be able to read it without understanding the exact change and still get a useful result. Changed the over-allocation amount of the SAM header block to be MIN(length*1.5, 10000) instead of MAX(length*2, 10000). The Java code didn't allocate such vast tracks, so neither should I. ------------------------------------------------------------------------ r3571 | awhitwham | 2014-02-13 12:05:36 +0000 (Thu, 13 Feb 2014) | 2 lines Changed paths: M /io_lib/trunk/io_lib/seqIOABI.c Fixed duplicated and missing error check pointed out by dcb314. ------------------------------------------------------------------------ r3570 | jkbonfield | 2014-02-13 11:15:33 +0000 (Thu, 13 Feb 2014) | 3 lines Changed paths: M /io_lib/trunk/io_lib/cram_index.c Bug fix to index initialisation when a CRAM file has non-sequential ref IDs. ------------------------------------------------------------------------ r3569 | jkbonfield | 2014-01-30 10:25:59 +0000 (Thu, 30 Jan 2014) | 2 lines Changed paths: M /io_lib/trunk/io_lib/arith_static.c Tidy up of redundant code. ------------------------------------------------------------------------ r3568 | jkbonfield | 2014-01-29 17:41:12 +0000 (Wed, 29 Jan 2014) | 22 lines Changed paths: M /io_lib/trunk/io_lib/Makefile.am A /io_lib/trunk/io_lib/arith_static.c A /io_lib/trunk/io_lib/arith_static.h M /io_lib/trunk/io_lib/cram_encode.c M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/io_lib/cram_io.h M /io_lib/trunk/io_lib/cram_structs.h M /io_lib/trunk/progs/scramble.c Added a range coder (order 0 and 1, but only the order-1 coder is used at the moment, and probably Z_HUFFMAN_ONLY is good enough for most scenarios to replace an order-0 RC). This can be enabled using scramble -J, although note it produces non-standard CRAM files so should be considered as an experimental option. It is likely that the output format may change still, so use for testing only. Also updated how the encoding selection methods work. Scramble -j (for bzip2) no longer attempts to bzip2 everything. Instead it tests bz2 vs zlib on a few trials and selects whichever is best. This means -j and -J indicate additional codecs, but not mandate their use for everything. Best encoding so far comes from scramble -jJ therefore. There is also an interface to LZMA (xz) compression, but currently it is not enabled and has been used experimentally only. Finally, also sped up the CRAM->BAM in memory struct conversion by translating 2 sequence characters at a time. ------------------------------------------------------------------------ r3567 | jkbonfield | 2014-01-29 17:35:58 +0000 (Wed, 29 Jan 2014) | 2 lines Changed paths: M /io_lib/trunk/io_lib/binning.h Added copyright notice. ------------------------------------------------------------------------ r3566 | jkbonfield | 2014-01-29 17:35:32 +0000 (Wed, 29 Jan 2014) | 2 lines Changed paths: M /io_lib/trunk/io_lib/cram_codecs.c M /io_lib/trunk/io_lib/cram_codecs.h Minor speed increases. ------------------------------------------------------------------------ r3560 | jkbonfield | 2014-01-08 17:43:32 +0000 (Wed, 08 Jan 2014) | 3 lines Changed paths: M /io_lib/trunk/io_lib/cram_encode.c M /io_lib/trunk/io_lib/cram_io.c Bug fix to version 2 encoding. It was erroneously accounting for the 4 extra CRC32 bytes when specifying container lengths. ------------------------------------------------------------------------ r3559 | jkbonfield | 2014-01-07 17:07:32 +0000 (Tue, 07 Jan 2014) | 3 lines Changed paths: M /io_lib/trunk/Makefile.am M /io_lib/trunk/io_lib/Makefile.am M /io_lib/trunk/io_lib/bam.c M /io_lib/trunk/io_lib/bam.h A /io_lib/trunk/io_lib/binning.h M /io_lib/trunk/io_lib/cram_encode.c M /io_lib/trunk/io_lib/cram_structs.h M /io_lib/trunk/io_lib/scram.c Added Illumina binning option to BAM and SAM I/O too, also controlled via the scram_set_option function in the same manner. ------------------------------------------------------------------------ r3558 | jkbonfield | 2014-01-07 15:31:03 +0000 (Tue, 07 Jan 2014) | 3 lines Changed paths: M /io_lib/trunk/io_lib/cram_encode.c M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/io_lib/cram_structs.h M /io_lib/trunk/progs/scramble.c Added Illumina 8-way quality binning as an output option for Scramble. (CRAM only at the moment.) ------------------------------------------------------------------------ r3557 | jkbonfield | 2014-01-07 15:21:12 +0000 (Tue, 07 Jan 2014) | 2 lines Changed paths: M /io_lib/trunk/io_lib/cram_io.c Removal of compiler warnings ------------------------------------------------------------------------ r3556 | jkbonfield | 2014-01-07 15:19:56 +0000 (Tue, 07 Jan 2014) | 7 lines Changed paths: M /io_lib/trunk/io_lib/cram_codecs.c M /io_lib/trunk/io_lib/cram_decode.c M /io_lib/trunk/io_lib/cram_encode.c M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/io_lib/cram_structs.h M /io_lib/trunk/progs/cram_dump.c Updated the version checking to cope with major/minor versions easier. Added a prototype for CRC32 checking on container and block structures. This is enabled only for CRAM v3.0, but this is under discussion still so it should not be used in production. The default output format is still CRAM v2.0. ------------------------------------------------------------------------ r3555 | jkbonfield | 2014-01-06 16:44:29 +0000 (Mon, 06 Jan 2014) | 6 lines Changed paths: M /io_lib/trunk/io_lib/bam.c Set eof_block when finishing up on a SAM file. Technically it hasn't read an EOF block, but as this cannot exist in SAM we cheat and claim it does in order to avoid outputting spurious warnings about lacking the correct file termination. ------------------------------------------------------------------------ r3549 | jkbonfield | 2013-12-17 14:57:18 +0000 (Tue, 17 Dec 2013) | 9 lines Changed paths: M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/io_lib/cram_io.h M /io_lib/trunk/io_lib/scram.c M /io_lib/trunk/io_lib/scram.h M /io_lib/trunk/progs/scramble.c Bug fix to the EOF handling and also a simplification. We incorrectly reported the lack of an EOF block when checking a sub-range, where we get an expected EOF at the end of range but this isn't due to a file EOF. Simplifying this the API now uses scram_eof() returning 0 for false, 1 for expected eof and 2 for unexpected eof (no EOF block). ------------------------------------------------------------------------ r3548 | jkbonfield | 2013-12-16 17:46:10 +0000 (Mon, 16 Dec 2013) | 4 lines Changed paths: M /io_lib/trunk/io_lib/cram_io.c Bug fix to EOF block writing in multi-threaded mode. It was writing it out before flushing the final pending blocks, causing EOF block to sometimes appear slightly before the true end of file. ------------------------------------------------------------------------ r3547 | jkbonfield | 2013-12-16 17:38:30 +0000 (Mon, 16 Dec 2013) | 3 lines Changed paths: M /io_lib/trunk/io_lib/cram_decode.c Bug fix to cram_next_slice(). The new while loop checking for non-empty blocks caused a crash when multi-threading. ------------------------------------------------------------------------ r3546 | jkbonfield | 2013-12-16 16:58:27 +0000 (Mon, 16 Dec 2013) | 7 lines Changed paths: M /io_lib/trunk/io_lib/bam.c M /io_lib/trunk/io_lib/bam.h M /io_lib/trunk/io_lib/cram_decode.c M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/io_lib/cram_structs.h M /io_lib/trunk/io_lib/scram.c M /io_lib/trunk/progs/scramble.c Added an EOF block to CRAM which simply consists of a container containing no sequences and a special ref-seq-position field. In theory this is backwards compatible, but in practice was not due to bugs (in both C and Java implementations). Also added checking of the EOF blocks for BAM too. ------------------------------------------------------------------------ r3540 | daviesrob | 2013-12-13 16:56:42 +0000 (Fri, 13 Dec 2013) | 11 lines Changed paths: M /io_lib/trunk/io_lib/mFILE.c Added missing return code checks. Fixed 'x' mode of mfreopen. Added missing checks for system call return codes. Mainly malloc/realloc but also i/o calls in mfflush. Removed pointless check to see if the underlying file is seekable in mfreopen when 'x' is present in the mode string. The whole point of 'x' was to turn off a seek in mfflush, so it doesn't matter if the file is seekable or not. ------------------------------------------------------------------------ r3533 | daviesrob | 2013-12-13 12:08:20 +0000 (Fri, 13 Dec 2013) | 11 lines Changed paths: M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/io_lib/mFILE.c M /io_lib/trunk/io_lib/mFILE.h Add mfsteal to mFILE, and use it in cram_populate_ref. mfsteal returns the data stored in an mFILE. The mFILE itself is closed after the data has been detached. This can be used to replace an unnecessary allocation and copy if the entire contents of the mFILE are wanted. Update cram_populate_ref to use mfsteal. This halves the memory it uses when trying to load via REF_PATH. ------------------------------------------------------------------------ r3532 | jkbonfield | 2013-12-04 10:10:39 +0000 (Wed, 04 Dec 2013) | 3 lines Changed paths: M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/io_lib/cram_structs.h Added refs_t->last_id (note distinct from ->last) for use when reading from MD5 server. ------------------------------------------------------------------------ r3531 | jkbonfield | 2013-12-03 14:46:47 +0000 (Tue, 03 Dec 2013) | 4 lines Changed paths: M /io_lib/trunk/io_lib/cram_io.c Bug fix to the zlib strategy tuning in multi-threaded mode. It could (legitimately) drive the number of trials negative, but this meant it never left the trial phase. ------------------------------------------------------------------------ r3530 | jkbonfield | 2013-12-03 10:20:49 +0000 (Tue, 03 Dec 2013) | 4 lines Changed paths: M /io_lib/trunk/io_lib/cram_codecs.c Added an implementation of cram_external_encode(), although it's only for experimental purposes as it's not used in vanilla code (we fill out the core blocks in-situ rather than via the function pointer). ------------------------------------------------------------------------ r3529 | jkbonfield | 2013-12-03 10:13:18 +0000 (Tue, 03 Dec 2013) | 2 lines Changed paths: M /io_lib/trunk/progs/index_tar.c Fixed Debian bug #729276 - buffer overflow. ------------------------------------------------------------------------ r3528 | jkbonfield | 2013-12-02 10:20:12 +0000 (Mon, 02 Dec 2013) | 4 lines Changed paths: M /io_lib/trunk/io_lib/cram_decode.c M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/progs/cram_dump.c Fixes to cope with empty blocks. This is largely just placeholder code for handling EOF markers. ------------------------------------------------------------------------ r3509 | jkbonfield | 2013-11-08 16:38:26 +0000 (Fri, 08 Nov 2013) | 3 lines Changed paths: M /io_lib/trunk/configure.in M /io_lib/trunk/io_lib/bam.c M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/io_lib/os.h.in M /io_lib/trunk/progs/scram_flagstat.c M /io_lib/trunk/progs/scram_merge.c M /io_lib/trunk/progs/scramble.c Updates to aid building on Windows (tested using --host=x86_64-w64-mingw32 cross-compiler from linux). ------------------------------------------------------------------------ r3503 | jkbonfield | 2013-10-25 15:50:30 +0100 (Fri, 25 Oct 2013) | 4 lines Changed paths: M /io_lib/trunk/io_lib/bam.c Why do I find these things just after a new release? Fixed some buffer overruns in BAM decoding. =============================================================================== 2013-10-25: RELEASE 1.13.3 ------------------------------------------------------------------------ r3500 | jkbonfield | 2013-10-25 11:25:35 +0100 (Fri, 25 Oct 2013) | 6 lines Changed paths: M /io_lib/trunk/io_lib/cram_codecs.c M /io_lib/trunk/io_lib/cram_codecs.h M /io_lib/trunk/io_lib/cram_decode.c M /io_lib/trunk/io_lib/cram_io.c Various input sanity checks on reading CRAM, spotted by randomly "fuzzing" uncompressed CRAM files and looking for crashes. By no means is this fully complete, but it is a significant improvement to robustness. ------------------------------------------------------------------------ r3499 | jkbonfield | 2013-10-24 16:56:23 +0100 (Thu, 24 Oct 2013) | 2 lines Changed paths: M /io_lib/trunk/io_lib/cram_decode.c Another clang report; dup of before. ------------------------------------------------------------------------ r3498 | jkbonfield | 2013-10-24 16:25:20 +0100 (Thu, 24 Oct 2013) | 13 lines Changed paths: M /io_lib/trunk/io_lib/cram_codecs.c M /io_lib/trunk/io_lib/cram_decode.c M /io_lib/trunk/io_lib/cram_encode.c M /io_lib/trunk/io_lib/cram_index.c M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/io_lib/cram_stats.c M /io_lib/trunk/io_lib/mFILE.c M /io_lib/trunk/io_lib/sam_header.c M /io_lib/trunk/io_lib/zfio.c Fixed a bunch of code warnings produced by clang's static analyser. 1) Various memory leaks, all caused by returning after a malloc failure without freeing precursor allocations. 2) Fixed potential error in cram_codecs.c where an external block ID could fail to be found, resulting in dereferencing a null pointer. 3) Improved guards around block IDs to prevent negative blocks (not found by clang). 4) Removal of dead code; assignments that are no longer used. ------------------------------------------------------------------------ r3495 | jkbonfield | 2013-10-23 10:31:36 +0100 (Wed, 23 Oct 2013) | 2 lines Changed paths: M /io_lib/trunk/io_lib/cram_decode.c M /io_lib/trunk/io_lib/cram_encode.c M /io_lib/trunk/io_lib/cram_io.c A raft of multi-threading locking bugs, detected by clang -fsantize=thread ------------------------------------------------------------------------ r3494 | jkbonfield | 2013-10-18 17:00:05 +0100 (Fri, 18 Oct 2013) | 8 lines Changed paths: M /io_lib/trunk/COPYRIGHT M /io_lib/trunk/Makefile.am M /io_lib/trunk/io_lib/Makefile.am M /io_lib/trunk/io_lib/Read.c M /io_lib/trunk/io_lib/Read.h M /io_lib/trunk/io_lib/bam.c M /io_lib/trunk/io_lib/bam.h M /io_lib/trunk/io_lib/compress.c M /io_lib/trunk/io_lib/compress.h M /io_lib/trunk/io_lib/compression.c M /io_lib/trunk/io_lib/compression.h M /io_lib/trunk/io_lib/cram.h M /io_lib/trunk/io_lib/cram_codecs.c M /io_lib/trunk/io_lib/cram_codecs.h M /io_lib/trunk/io_lib/cram_decode.c M /io_lib/trunk/io_lib/cram_decode.h M /io_lib/trunk/io_lib/cram_encode.c M /io_lib/trunk/io_lib/cram_encode.h M /io_lib/trunk/io_lib/cram_index.c M /io_lib/trunk/io_lib/cram_index.h M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/io_lib/cram_io.h M /io_lib/trunk/io_lib/cram_stats.c M /io_lib/trunk/io_lib/cram_stats.h M /io_lib/trunk/io_lib/cram_structs.h M /io_lib/trunk/io_lib/deflate_interlaced.c M /io_lib/trunk/io_lib/deflate_interlaced.h M /io_lib/trunk/io_lib/dstring.c M /io_lib/trunk/io_lib/dstring.h M /io_lib/trunk/io_lib/expFileIO.c M /io_lib/trunk/io_lib/expFileIO.h M /io_lib/trunk/io_lib/files.c M /io_lib/trunk/io_lib/find.c M /io_lib/trunk/io_lib/hash_table.c M /io_lib/trunk/io_lib/hash_table.h M /io_lib/trunk/io_lib/mFILE.c M /io_lib/trunk/io_lib/mFILE.h M /io_lib/trunk/io_lib/mach-io.c M /io_lib/trunk/io_lib/mach-io.h M /io_lib/trunk/io_lib/misc.h M /io_lib/trunk/io_lib/misc_scf.c M /io_lib/trunk/io_lib/open_trace_file.c M /io_lib/trunk/io_lib/open_trace_file.h M /io_lib/trunk/io_lib/plain.h M /io_lib/trunk/io_lib/pooled_alloc.c M /io_lib/trunk/io_lib/pooled_alloc.h M /io_lib/trunk/io_lib/read_alloc.c M /io_lib/trunk/io_lib/read_scf.c M /io_lib/trunk/io_lib/sam_header.c M /io_lib/trunk/io_lib/sam_header.h M /io_lib/trunk/io_lib/scf.h M /io_lib/trunk/io_lib/scf_extras.c M /io_lib/trunk/io_lib/scf_extras.h M /io_lib/trunk/io_lib/scram.c M /io_lib/trunk/io_lib/scram.h M /io_lib/trunk/io_lib/seqIOABI.c M /io_lib/trunk/io_lib/seqIOABI.h M /io_lib/trunk/io_lib/seqIOALF.c M /io_lib/trunk/io_lib/seqIOPlain.c M /io_lib/trunk/io_lib/sff.c M /io_lib/trunk/io_lib/sff.h M /io_lib/trunk/io_lib/srf.c M /io_lib/trunk/io_lib/srf.h M /io_lib/trunk/io_lib/stdio_hack.h M /io_lib/trunk/io_lib/string_alloc.c M /io_lib/trunk/io_lib/string_alloc.h M /io_lib/trunk/io_lib/strings.c M /io_lib/trunk/io_lib/thread_pool.c M /io_lib/trunk/io_lib/thread_pool.h M /io_lib/trunk/io_lib/traceType.c M /io_lib/trunk/io_lib/traceType.h M /io_lib/trunk/io_lib/translate.c M /io_lib/trunk/io_lib/translate.h M /io_lib/trunk/io_lib/vlen.c M /io_lib/trunk/io_lib/vlen.h M /io_lib/trunk/io_lib/write_scf.c M /io_lib/trunk/io_lib/xalloc.c M /io_lib/trunk/io_lib/zfio.c M /io_lib/trunk/io_lib/zfio.h M /io_lib/trunk/io_lib/ztr.c M /io_lib/trunk/io_lib/ztr.h M /io_lib/trunk/io_lib/ztr_translate.c M /io_lib/trunk/progs/Makefile.am M /io_lib/trunk/progs/append_sff.c M /io_lib/trunk/progs/convert_trace.c M /io_lib/trunk/progs/cram_dump.c M /io_lib/trunk/progs/cram_index.c M /io_lib/trunk/progs/cram_to_sam.c M /io_lib/trunk/progs/extract_fastq.c M /io_lib/trunk/progs/extract_qual.c M /io_lib/trunk/progs/extract_seq.c M /io_lib/trunk/progs/get_comment.c M /io_lib/trunk/progs/hash_exp.c M /io_lib/trunk/progs/hash_extract.c M /io_lib/trunk/progs/hash_list.c M /io_lib/trunk/progs/hash_sff.c M /io_lib/trunk/progs/hash_tar.c M /io_lib/trunk/progs/index_tar.c M /io_lib/trunk/progs/makeSCF.c M /io_lib/trunk/progs/sam_convert.c M /io_lib/trunk/progs/sam_to_cram.c M /io_lib/trunk/progs/scf_dump.c M /io_lib/trunk/progs/scf_info.c M /io_lib/trunk/progs/scf_update.c M /io_lib/trunk/progs/scram_flagstat.c M /io_lib/trunk/progs/scram_merge.c M /io_lib/trunk/progs/scram_pileup.c M /io_lib/trunk/progs/scram_pileup.h M /io_lib/trunk/progs/scramble.c M /io_lib/trunk/progs/srf2fasta.c M /io_lib/trunk/progs/srf2fastq.c M /io_lib/trunk/progs/srf_dump_all.c M /io_lib/trunk/progs/srf_extract_hash.c M /io_lib/trunk/progs/srf_extract_linear.c M /io_lib/trunk/progs/srf_filter.c M /io_lib/trunk/progs/srf_index_hash.c M /io_lib/trunk/progs/srf_info.c M /io_lib/trunk/progs/srf_list.c M /io_lib/trunk/progs/trace_dump.c M /io_lib/trunk/progs/ztr_dump.c M /io_lib/trunk/tests/Makefile.am Added GRL copyright too due to appropriate local requirements. Sorry that occasionally it will have been automatically added for the most mundance of micro-changes (like adjustments to comments or changing #include to #include "x"). However given the licence is BSD and do-what-you-like it is compatible with the MRC one. ------------------------------------------------------------------------ r3493 | jkbonfield | 2013-10-18 12:34:51 +0100 (Fri, 18 Oct 2013) | 11 lines Changed paths: M /io_lib/trunk/Makefile.am M /io_lib/trunk/README M /io_lib/trunk/io_lib/Makefile.am M /io_lib/trunk/io_lib/Read.c M /io_lib/trunk/io_lib/Read.h M /io_lib/trunk/io_lib/compression.c D /io_lib/trunk/io_lib/ctfCompress.c M /io_lib/trunk/io_lib/os.h.in M /io_lib/trunk/io_lib/scf_extras.c D /io_lib/trunk/io_lib/seqIOCTF.c D /io_lib/trunk/io_lib/seqIOCTF.h M /io_lib/trunk/io_lib/stdio_hack.h M /io_lib/trunk/io_lib/traceType.c M /io_lib/trunk/options.mk M /io_lib/trunk/progs/extract_fastq.c M /io_lib/trunk/progs/extract_qual.c M /io_lib/trunk/progs/extract_seq.c Purged CTF from the source tree. It had no explicitly stated licence (although was implicitly assumed to be given to us under the same licence as the rest of the code, this is not technically enough). Obviously we could have got this corrected, but the code is also superfluous (I never saw a CTF file in the wild) and we remove a large number of compilation warnings too. ------------------------------------------------------------------------ r3492 | jkbonfield | 2013-10-18 12:16:37 +0100 (Fri, 18 Oct 2013) | 10 lines Changed paths: M /io_lib/trunk/COPYRIGHT M /io_lib/trunk/io_lib/Read.c M /io_lib/trunk/io_lib/Read.h M /io_lib/trunk/io_lib/abi.h M /io_lib/trunk/io_lib/alf.h M /io_lib/trunk/io_lib/array.c M /io_lib/trunk/io_lib/array.h M /io_lib/trunk/io_lib/compress.c M /io_lib/trunk/io_lib/compress.h M /io_lib/trunk/io_lib/compression.c M /io_lib/trunk/io_lib/compression.h M /io_lib/trunk/io_lib/dstring.c M /io_lib/trunk/io_lib/dstring.h M /io_lib/trunk/io_lib/error.c M /io_lib/trunk/io_lib/error.h M /io_lib/trunk/io_lib/expFileIO.c M /io_lib/trunk/io_lib/expFileIO.h M /io_lib/trunk/io_lib/files.c M /io_lib/trunk/io_lib/find.c M /io_lib/trunk/io_lib/fpoint.c M /io_lib/trunk/io_lib/fpoint.h M /io_lib/trunk/io_lib/jenkins_lookup3.h M /io_lib/trunk/io_lib/mach-io.c M /io_lib/trunk/io_lib/mach-io.h M /io_lib/trunk/io_lib/misc.h M /io_lib/trunk/io_lib/misc_scf.c M /io_lib/trunk/io_lib/open_trace_file.c M /io_lib/trunk/io_lib/open_trace_file.h M /io_lib/trunk/io_lib/plain.h M /io_lib/trunk/io_lib/read_alloc.c M /io_lib/trunk/io_lib/read_scf.c M /io_lib/trunk/io_lib/scf.h M /io_lib/trunk/io_lib/scf_extras.c M /io_lib/trunk/io_lib/scf_extras.h M /io_lib/trunk/io_lib/seqIOABI.c M /io_lib/trunk/io_lib/seqIOABI.h M /io_lib/trunk/io_lib/seqIOALF.c M /io_lib/trunk/io_lib/seqIOPlain.c M /io_lib/trunk/io_lib/strings.c M /io_lib/trunk/io_lib/tar_format.h M /io_lib/trunk/io_lib/traceType.c M /io_lib/trunk/io_lib/traceType.h M /io_lib/trunk/io_lib/translate.c M /io_lib/trunk/io_lib/translate.h M /io_lib/trunk/io_lib/vlen.c M /io_lib/trunk/io_lib/vlen.h M /io_lib/trunk/io_lib/write_scf.c M /io_lib/trunk/io_lib/xalloc.c M /io_lib/trunk/io_lib/xalloc.h M /io_lib/trunk/io_lib/ztr.c M /io_lib/trunk/io_lib/ztr.h M /io_lib/trunk/io_lib/ztr_translate.c M /io_lib/trunk/progs/convert_trace.c M /io_lib/trunk/progs/extract_fastq.c M /io_lib/trunk/progs/extract_seq.c M /io_lib/trunk/progs/get_comment.c M /io_lib/trunk/progs/index_tar.c M /io_lib/trunk/progs/makeSCF.c M /io_lib/trunk/progs/scf_dump.c M /io_lib/trunk/progs/scf_info.c M /io_lib/trunk/progs/scf_update.c M /io_lib/trunk/progs/trace_dump.c Added the 3-clause BSD copyright notices as issued by MRC-LMB when they made the entire package open source (which included this). Where possible the dates and authors are correct. They have been culled from semi-automatic analysis of the old MRC change.log file, but some files predate keeping these logs. Apologies to absent authors. (Next up, GRL/Sanger copyright notices.) ------------------------------------------------------------------------ r3489 | jkbonfield | 2013-10-15 12:53:15 +0100 (Tue, 15 Oct 2013) | 3 lines Changed paths: M /io_lib/trunk/io_lib/cram_encode.c M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/io_lib/cram_structs.h M /io_lib/trunk/tests/data/ce#5.sam Increased the bam->cram bit swap arrays to 0x1000 size to accommodate the new 0x800 bam flag. ------------------------------------------------------------------------ r3470 | jkbonfield | 2013-09-23 17:09:21 +0100 (Mon, 23 Sep 2013) | 7 lines Changed paths: M /io_lib/trunk/io_lib/cram_io.c Fixed re-calling refs2id so it clears cached r->last; the pointer becomes invalid. Also fixed debugging information to avoid assumptions on how pointer differencing works when both pointers aren't from the same allocated memory block. ------------------------------------------------------------------------ r3468 | jkbonfield | 2013-09-20 09:33:34 +0100 (Fri, 20 Sep 2013) | 5 lines Changed paths: M /io_lib/trunk/io_lib/open_trace_file.c Currently #ifdefed out, added code to distinguish between static CURL *handle and per call CURL *handles. This was an attempt to make the code handle multi-threaded I/O, but I ended up resolving this in the functions that call find_file_url() instead of in that function. ------------------------------------------------------------------------ r3467 | jkbonfield | 2013-09-19 17:44:08 +0100 (Thu, 19 Sep 2013) | 12 lines Changed paths: M /io_lib/trunk/io_lib/cram_io.c Bug fix for reference handling when fetching via MD5/http. Firstly the fd->refs->lock mutex has been moved to just before cram_populate_ref instead of just after, given that this code is not thread safe (it potentially uses open_path_url+curl in a manner which shares the curl handle between threads). Secondly certain thread orderings could cause the reference count to hit zero and then try to reaccess it again, which triggered a bug. ref->length is now reset to zero as well as ->seq=NULL as both are checked. ------------------------------------------------------------------------ r3466 | jkbonfield | 2013-09-19 13:58:26 +0100 (Thu, 19 Sep 2013) | 2 lines Changed paths: M /io_lib/trunk/progs/cram_dump.c Fixed 32-bit wraparound problem when reporting total block sizes. ------------------------------------------------------------------------ r3461 | jkbonfield | 2013-09-12 16:27:21 +0100 (Thu, 12 Sep 2013) | 10 lines Changed paths: M /io_lib/trunk/io_lib/cram_encode.c M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/io_lib/cram_structs.h Optimised the compression levels so -1, -3, and above are more distinct and use their own specific zlib parameters. Minor speed up. Various experimental code, disabled/commented out for now. This includes an API to do arithmetic compression (implementation not checked in as it's unused now) and an example of how to do string-delta encoding for read names. ------------------------------------------------------------------------ r3460 | jkbonfield | 2013-09-12 15:26:10 +0100 (Thu, 12 Sep 2013) | 3 lines Changed paths: M /io_lib/trunk/io_lib/open_trace_file.c Fixed curl timeout. We meant CONNECTTIMEOUT instead of TIMEOUT. This was causing long downloads to be terminated early. ------------------------------------------------------------------------ r3453 | jkbonfield | 2013-09-09 11:28:11 +0100 (Mon, 09 Sep 2013) | 5 lines Changed paths: M /io_lib/trunk/io_lib/ctfCompress.c See https://sourceforge.net/p/staden/bugs/101/ Adding copious extra error checks in ctfUnPackTraces() to avoid it running off the end of the 'cp' trace. ------------------------------------------------------------------------ r3452 | jkbonfield | 2013-09-09 11:26:57 +0100 (Mon, 09 Sep 2013) | 4 lines Changed paths: M /io_lib/trunk/progs/convert_trace.c See https://sourceforge.net/p/staden/bugs/101/ Fixed a crash in argument parsing when -abi_data is not given an argument. ------------------------------------------------------------------------ r3439 | jkbonfield | 2013-08-07 17:31:47 +0100 (Wed, 07 Aug 2013) | 4 lines Changed paths: A /io_lib/trunk/tests/data/c1#bounds.sam Added test case for sequences with alignments beyond references. These are handled by scramble by adding individual base features for the base calls that are beyond the reference. ------------------------------------------------------------------------ r3438 | jkbonfield | 2013-08-07 17:04:16 +0100 (Wed, 07 Aug 2013) | 2 lines Changed paths: M /io_lib/trunk/io_lib/cram_decode.c Bug fix to the last reference array bounds fix. ------------------------------------------------------------------------ r3437 | jkbonfield | 2013-08-07 16:24:54 +0100 (Wed, 07 Aug 2013) | 7 lines Changed paths: M /io_lib/trunk/io_lib/cram_decode.c Improved error reporting and detection for MD5 sums. We report where the md5 error comes from (which reference slice). We also have better detection of slices that overhang the end of the reference. Finally it no longer crashes sometimes after getting reference errors, now exiting cleanly with exit code 1. ------------------------------------------------------------------------ r3425 | jkbonfield | 2013-07-23 09:24:17 +0100 (Tue, 23 Jul 2013) | 2 lines Changed paths: M /io_lib/trunk/io_lib/deflate_interlaced.c Bug fix to unused code. ------------------------------------------------------------------------ r3421 | jkbonfield | 2013-07-09 17:45:40 +0100 (Tue, 09 Jul 2013) | 5 lines Changed paths: M /io_lib/trunk/io_lib/cram_encode.c M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/io_lib/open_trace_file.c M /io_lib/trunk/io_lib/sam_header.c M /io_lib/trunk/io_lib/sam_header.h Switched the SAMTOOLS #define to be coding against htslib instead of samtools API. htslib is the bamifier of the future! ------------------------------------------------------------------------ r3420 | jkbonfield | 2013-07-09 17:45:01 +0100 (Tue, 09 Jul 2013) | 3 lines Changed paths: M /io_lib/trunk/io_lib/bam.c Bug fix to allow blank files to be detected as SAM format, as technically this is legal (both header and sequences are optional). ------------------------------------------------------------------------ r3419 | jkbonfield | 2013-07-09 17:44:08 +0100 (Tue, 09 Jul 2013) | 7 lines Changed paths: M /io_lib/trunk/tests/compare_sam.pl A /io_lib/trunk/tests/data/xx#blank.sam A /io_lib/trunk/tests/data/xx#minimal.sam Extra test cases - The nul SAM file (no header, no seqs). - Zero length cigar ops. - Zero length sequences (with seq and qual "*") ------------------------------------------------------------------------ r3418 | jkbonfield | 2013-07-08 12:17:45 +0100 (Mon, 08 Jul 2013) | 6 lines Changed paths: M /io_lib/trunk/io_lib/cram_decode.c M /io_lib/trunk/io_lib/cram_encode.c M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/io_lib/cram_structs.h Back port from minor tweaks at github's jkbonfield/samtools. This change adds SAMTOOLS macros for bam_copy and bam_dup, and tweaks the pthreads interface to accept an NTHREADs option, allowing the cram_fd to own the pool instead of the caller. (This isn't the best solution for samtools, but pragmatic.) =============================================================================== 2013-06-25: RELEASE 1.13.2 ------------------------------------------------------------------------ r3405 | jkbonfield | 2013-06-26 16:32:26 +0100 (Wed, 26 Jun 2013) | 2 lines Changed paths: M /io_lib/trunk/ChangeLog M /io_lib/trunk/README M /io_lib/trunk/configure.in M /io_lib/trunk/progs/scramble.c M /io_lib/trunk/tests/Makefile.am M /io_lib/trunk/tests/generate_data.pl Final tweaks to make "make distcheck" work and for 1.13.2 release. ------------------------------------------------------------------------ r3403 | jkbonfield | 2013-06-25 15:20:42 +0100 (Tue, 25 Jun 2013) | 2 lines Changed paths: M /io_lib/trunk/progs/Makefile.am M /io_lib/trunk/tests/Makefile.am Bug fixes to make dist. ------------------------------------------------------------------------ r3402 | jkbonfield | 2013-06-25 14:59:57 +0100 (Tue, 25 Jun 2013) | 6 lines Changed paths: M /io_lib/trunk M /io_lib/trunk/Makefile.am M /io_lib/trunk/configure.in M /io_lib/trunk/io_lib/Makefile.am M /io_lib/trunk/io_lib/bam.c M /io_lib/trunk/io_lib/bam.h M /io_lib/trunk/io_lib/cram_decode.c M /io_lib/trunk/io_lib/cram_encode.c M /io_lib/trunk/io_lib/cram_index.c M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/io_lib/cram_io.h M /io_lib/trunk/io_lib/cram_stats.c M /io_lib/trunk/io_lib/cram_structs.h M /io_lib/trunk/io_lib/sam_header.c M /io_lib/trunk/io_lib/sam_header.h M /io_lib/trunk/io_lib/scram.c M /io_lib/trunk/io_lib/scram.h A /io_lib/trunk/io_lib/thread_pool.c (from /io_lib/branches/multi_threading/io_lib/thread_pool.c:3401) A /io_lib/trunk/io_lib/thread_pool.h (from /io_lib/branches/multi_threading/io_lib/thread_pool.h:3401) M /io_lib/trunk/progs/Makefile.am M /io_lib/trunk/progs/cram_index.c A /io_lib/trunk/progs/scram_flagstat.c (from /io_lib/branches/multi_threading/progs/scram_flagstat.c:3401) M /io_lib/trunk/progs/scram_merge.c M /io_lib/trunk/progs/scram_pileup.c M /io_lib/trunk/progs/scramble.c M /io_lib/trunk/tests/Makefile.am A /io_lib/trunk/tests/data/ce#unmap.sam (from /io_lib/branches/multi_threading/tests/data/ce#unmap.sam:3401) M /io_lib/trunk/tests/data/xx#large_aux.sam A /io_lib/trunk/tests/data/xx#unsorted.sam (from /io_lib/branches/multi_threading/tests/data/xx#unsorted.sam:3401) A /io_lib/trunk/tests/generate_data.pl (from /io_lib/branches/multi_threading/tests/generate_data.pl:3401) M /io_lib/trunk/tests/scram.test A /io_lib/trunk/tests/scram_mt.test (from /io_lib/branches/multi_threading/tests/scram_mt.test:3401) Merged in the multi_threading branch. It could do with some improved auto-conf magic and maybe the ability to compile without pthreads (I haven't tested anything under Windows or MacOS X), but I'm happy that the new code is working well under Linux. ------------------------------------------------------------------------ r3401 | jkbonfield | 2013-06-25 12:44:30 +0100 (Tue, 25 Jun 2013) | 2 lines Changed paths: M /io_lib/branches/multi_threading/Makefile.am M /io_lib/branches/multi_threading/io_lib/Makefile.am Merged via: r3402 Added thread_pool.h to the list of headers so "make install" copies it over. ------------------------------------------------------------------------ r3400 | jkbonfield | 2013-06-25 12:28:25 +0100 (Tue, 25 Jun 2013) | 3 lines Changed paths: M /io_lib/branches/multi_threading/io_lib/bam.c M /io_lib/branches/multi_threading/io_lib/cram_decode.c M /io_lib/branches/multi_threading/io_lib/cram_encode.c M /io_lib/branches/multi_threading/io_lib/cram_index.c M /io_lib/branches/multi_threading/io_lib/cram_io.c M /io_lib/branches/multi_threading/io_lib/scram.c M /io_lib/branches/multi_threading/io_lib/thread_pool.c M /io_lib/branches/multi_threading/progs/cram_index.c M /io_lib/branches/multi_threading/progs/scram_flagstat.c M /io_lib/branches/multi_threading/progs/scram_merge.c M /io_lib/branches/multi_threading/progs/scram_pileup.c Merged via: r3402 Fixed various compiler warnings - harmless things like unused variables, but fixed for tidyness sake and to make -Wall less spammy. ------------------------------------------------------------------------ r3399 | jkbonfield | 2013-06-25 11:24:24 +0100 (Tue, 25 Jun 2013) | 3 lines Changed paths: M /io_lib/branches/multi_threading/progs/Makefile.am A /io_lib/branches/multi_threading/progs/scram_flagstat.c Merged via: r3402 Added scram_flagstat command, mainly as a test harness for testing pure read speed rather than read/write handling. ------------------------------------------------------------------------ r3398 | jkbonfield | 2013-06-25 11:23:40 +0100 (Tue, 25 Jun 2013) | 2 lines Changed paths: A /io_lib/branches/multi_threading/io_lib/thread_pool.c A /io_lib/branches/multi_threading/io_lib/thread_pool.h Merged via: r3402 Added missing thread pool interface. Sorry! ------------------------------------------------------------------------ r3397 | jkbonfield | 2013-06-25 09:40:07 +0100 (Tue, 25 Jun 2013) | 6 lines Changed paths: M /io_lib/branches/multi_threading/io_lib/cram_decode.c M /io_lib/branches/multi_threading/io_lib/cram_encode.c M /io_lib/branches/multi_threading/io_lib/cram_io.c Merged via: r3402 Further improvements to the reference counting and multi-threading. While it worked before, it also leaked memory/refcounts at times. This code now seems to pass helgrind/valgrind and run successfully for 100 make check cycles. ------------------------------------------------------------------------ r3396 | jkbonfield | 2013-06-24 15:08:18 +0100 (Mon, 24 Jun 2013) | 3 lines Changed paths: M /io_lib/branches/multi_threading/io_lib/cram_encode.c Merged via: r3402 Fixed the unsorted-data detection method. It was enabling too frequently, which although harmless isn't so ideal for memory usage. ------------------------------------------------------------------------ r3395 | jkbonfield | 2013-06-24 13:57:06 +0100 (Mon, 24 Jun 2013) | 3 lines Changed paths: M /io_lib/branches/multi_threading/io_lib/cram_encode.c M /io_lib/branches/multi_threading/io_lib/cram_io.c M /io_lib/branches/multi_threading/io_lib/cram_structs.h Merged via: r3402 Removed more reference sequence issues in the multi-threading of CRAM encoding, in particular when dealing with unsorted data. ------------------------------------------------------------------------ r3394 | jkbonfield | 2013-06-24 13:56:03 +0100 (Mon, 24 Jun 2013) | 2 lines Changed paths: M /io_lib/branches/multi_threading/io_lib/bam.c Merged via: r3402 Bug fix to the COPY_CPF_TO_CPTM macro for 32-bit platforms. ------------------------------------------------------------------------ r3392 | jkbonfield | 2013-06-21 15:29:19 +0100 (Fri, 21 Jun 2013) | 8 lines Changed paths: M /io_lib/branches/multi_threading/progs/scramble.c Merged via: r3402 Fixed a cram->cram encoding race condition caused by zeroing the reference before doing close (or specifically, a flush). The scram_set_refs(out, NULL) is no longer needed anyway now as the refs struct is reference-counted and so can be freed by both in and out file handles without causing bugs. ------------------------------------------------------------------------ r3391 | jkbonfield | 2013-06-21 14:29:59 +0100 (Fri, 21 Jun 2013) | 3 lines Changed paths: M /io_lib/branches/multi_threading/io_lib/bam.c M /io_lib/branches/multi_threading/io_lib/cram_decode.c M /io_lib/branches/multi_threading/io_lib/cram_io.c M /io_lib/branches/multi_threading/io_lib/cram_structs.h Merged via: r3402 Improvements to reference handling and multi-threaded support (more race condition removal). ------------------------------------------------------------------------ r3390 | jkbonfield | 2013-06-21 14:29:21 +0100 (Fri, 21 Jun 2013) | 2 lines Changed paths: M /io_lib/branches/multi_threading/tests/scram.test Merged via: r3402 Added non-ref and embedded-ref checks. ------------------------------------------------------------------------ r3389 | jkbonfield | 2013-06-20 17:14:19 +0100 (Thu, 20 Jun 2013) | 2 lines Changed paths: M /io_lib/branches/multi_threading/io_lib/cram_io.c Merged via: r3402 Bug fixes to reference handling - improved mutex checking. ------------------------------------------------------------------------ r3388 | jkbonfield | 2013-06-20 16:29:23 +0100 (Thu, 20 Jun 2013) | 2 lines Changed paths: A /io_lib/branches/multi_threading/tests/generate_data.pl M /io_lib/branches/multi_threading/tests/scram.test Merged via: r3402 Auto-generate larger sorted and unsorted test sets. ------------------------------------------------------------------------ r3387 | jkbonfield | 2013-06-20 11:52:13 +0100 (Thu, 20 Jun 2013) | 3 lines Changed paths: M /io_lib/branches/multi_threading/tests/data/xx#large_aux.sam Merged via: r3402 Improved aux stress test now that CRAM v2.0 can handle more than 255 auxiliary tags. ------------------------------------------------------------------------ r3386 | jkbonfield | 2013-06-20 11:42:55 +0100 (Thu, 20 Jun 2013) | 3 lines Changed paths: M /io_lib/branches/multi_threading/tests/Makefile.am A /io_lib/branches/multi_threading/tests/data/ce#unmap.sam A /io_lib/branches/multi_threading/tests/data/xx#unsorted.sam A /io_lib/branches/multi_threading/tests/scram_mt.test Merged via: r3402 Added a few more test cases; multi-threading, unsorted data and unmapped SAM (with zero @SQ lines for added fun). ------------------------------------------------------------------------ r3383 | jkbonfield | 2013-06-19 15:29:14 +0100 (Wed, 19 Jun 2013) | 7 lines Changed paths: M /io_lib/branches/multi_threading/io_lib/bam.c Merged via: r3402 Speed up of sam_next_seq(). It's about 70% faster (70% more throughput, not 70% less time taken) now. This also means it's around 4x quicker than the samtools equivalent function. This is largely through processing strings one word at a time instead of byte by byte. ------------------------------------------------------------------------ r3381 | jkbonfield | 2013-06-18 16:12:19 +0100 (Tue, 18 Jun 2013) | 4 lines Changed paths: M /io_lib/branches/multi_threading/io_lib/cram_decode.c M /io_lib/branches/multi_threading/io_lib/cram_io.c M /io_lib/branches/multi_threading/io_lib/cram_structs.h Merged via: r3402 Added multi-threaded CRAM decoding. It's not efficient as I'd like yet, capping out at around 4-5 threads. ------------------------------------------------------------------------ r3380 | jkbonfield | 2013-06-17 15:02:30 +0100 (Mon, 17 Jun 2013) | 7 lines Changed paths: M /io_lib/branches/multi_threading/io_lib/cram_decode.c M /io_lib/branches/multi_threading/io_lib/cram_io.c Merged via: r3402 Fixed cram_get_ref to return the string you asked for rather than possibly a different portion, requiring accessing fd->ref_start to see precisely which bit. This paves the way for multi-threading the decoder as it removes another access to fd->ref*. ------------------------------------------------------------------------ r3379 | jkbonfield | 2013-06-17 15:01:31 +0100 (Mon, 17 Jun 2013) | 2 lines Changed paths: M /io_lib/branches/multi_threading/progs/scramble.c Merged via: r3402 Removal of debugging output ------------------------------------------------------------------------ r3378 | jkbonfield | 2013-06-17 12:27:51 +0100 (Mon, 17 Jun 2013) | 2 lines Changed paths: M /io_lib/branches/multi_threading/configure.in Merged via: r3402 Added pthread to Makefile. For now it's not optional. ------------------------------------------------------------------------ r3377 | jkbonfield | 2013-06-17 12:24:26 +0100 (Mon, 17 Jun 2013) | 5 lines Changed paths: M /io_lib/branches/multi_threading/io_lib/cram_decode.c M /io_lib/branches/multi_threading/io_lib/cram_encode.c M /io_lib/branches/multi_threading/io_lib/cram_io.c M /io_lib/branches/multi_threading/progs/scramble.c Merged via: r3402 Fixed reference counting for cram encoding - no longer storing ref seq unnecessarily on multi-ref files (eg when lots of small refs). Disabled MT mode of cram decoding, while the work is still ongoing. ------------------------------------------------------------------------ r3376 | jkbonfield | 2013-06-17 11:42:05 +0100 (Mon, 17 Jun 2013) | 6 lines Changed paths: M /io_lib/branches/multi_threading/io_lib/cram_encode.c M /io_lib/branches/multi_threading/io_lib/cram_io.c M /io_lib/branches/multi_threading/io_lib/cram_structs.h M /io_lib/branches/multi_threading/tests/scram.test Merged via: r3402 Improvements and bug-fixes to CRAM multi-threaded encoding. Known bug: multi-threaded decoding not only hasn't been implemented, but attempting to use it makes it fail. Use single thread for decoding CRAM at the moment. ------------------------------------------------------------------------ r3375 | jkbonfield | 2013-06-14 17:06:05 +0100 (Fri, 14 Jun 2013) | 7 lines Changed paths: M /io_lib/branches/multi_threading/io_lib/cram_encode.c M /io_lib/branches/multi_threading/io_lib/cram_io.c M /io_lib/branches/multi_threading/io_lib/cram_structs.h Merged via: r3402 Improvement to cram_get_ref. Containers now directly obtain copies of the reference they are working on instead of going via fd->ref, removing thread conflicts. Known bugs still: scramble -S 3 fails as we can no longer handle multiple slices per container. (Work in progress.) ------------------------------------------------------------------------ r3374 | jkbonfield | 2013-06-14 10:31:23 +0100 (Fri, 14 Jun 2013) | 7 lines Changed paths: M /io_lib/branches/multi_threading/io_lib/bam.c M /io_lib/branches/multi_threading/io_lib/cram_encode.c M /io_lib/branches/multi_threading/io_lib/cram_io.c M /io_lib/branches/multi_threading/io_lib/cram_structs.h Merged via: r3402 Major speed increase in multi-thread CRAM, by removing malloc/free calls and reusing blocks. This code still isn't ready for production use though as there are some deadlocks and illegal memory accesses lurking around that I haven't yet found. ------------------------------------------------------------------------ r3372 | jkbonfield | 2013-06-13 16:17:46 +0100 (Thu, 13 Jun 2013) | 2 lines Changed paths: M /io_lib/branches/multi_threading/io_lib/cram_io.c M /io_lib/branches/multi_threading/progs/scramble.c Merged via: r3402 Removal of debugging output ------------------------------------------------------------------------ r3369 | jkbonfield | 2013-06-13 11:32:53 +0100 (Thu, 13 Jun 2013) | 7 lines Changed paths: M /io_lib/branches/multi_threading/io_lib/bam.c M /io_lib/branches/multi_threading/io_lib/bam.h M /io_lib/branches/multi_threading/io_lib/cram_encode.c M /io_lib/branches/multi_threading/io_lib/cram_io.c M /io_lib/branches/multi_threading/io_lib/cram_io.h M /io_lib/branches/multi_threading/io_lib/cram_stats.c M /io_lib/branches/multi_threading/io_lib/cram_structs.h M /io_lib/branches/multi_threading/io_lib/scram.c M /io_lib/branches/multi_threading/progs/scramble.c Merged via: r3402 Big improvements to CRAM multi-threading, fixing many clashes and bugs. Fixed bam read multi-threading. It now checks for no pending jobs in results queue as well as no finished results. Improved reference counting for CRAM fd->refs array. ------------------------------------------------------------------------ r3368 | jkbonfield | 2013-06-12 12:26:16 +0100 (Wed, 12 Jun 2013) | 4 lines Changed paths: M /io_lib/branches/multi_threading/io_lib/sam_header.c M /io_lib/branches/multi_threading/io_lib/sam_header.h Merged via: r3402 Added reference counting to headers. This means we can avoid clumsy code in scramble.c to set header to NULL before closing (to avoid double frees). ------------------------------------------------------------------------ r3367 | jkbonfield | 2013-06-12 09:40:32 +0100 (Wed, 12 Jun 2013) | 2 lines Changed paths: M /io_lib/branches/multi_threading/io_lib/Makefile.am M /io_lib/branches/multi_threading/io_lib/bam.c M /io_lib/branches/multi_threading/io_lib/bam.h M /io_lib/branches/multi_threading/io_lib/cram_decode.c M /io_lib/branches/multi_threading/io_lib/cram_encode.c M /io_lib/branches/multi_threading/io_lib/cram_io.c M /io_lib/branches/multi_threading/io_lib/cram_structs.h M /io_lib/branches/multi_threading/io_lib/scram.c M /io_lib/branches/multi_threading/io_lib/scram.h M /io_lib/branches/multi_threading/progs/scramble.c Merged via: r3402 Initial multi-threading implementation. A work in progress. ------------------------------------------------------------------------ r3366 | jkbonfield | 2013-06-12 09:36:32 +0100 (Wed, 12 Jun 2013) | 4 lines Changed paths: A /io_lib/branches/multi_threading (from /io_lib/trunk:3365) Merged via: r3402 Work on multi-threading bam/cram reading and writing. To be merged back in once stable enough. ------------------------------------------------------------------------ r3362 | jkbonfield | 2013-05-31 11:45:13 +0100 (Fri, 31 May 2013) | 4 lines Changed paths: M /io_lib/trunk/io_lib/cram_stats.c Ifdef fix as nbits() is referred to (how it it compile!?). The code is unused though still as it's not possible to get to that path currently. ------------------------------------------------------------------------ r3357 | jkbonfield | 2013-05-30 10:13:55 +0100 (Thu, 30 May 2013) | 5 lines Changed paths: M /io_lib/trunk/io_lib/cram_codecs.c M /io_lib/trunk/io_lib/cram_decode.c M /io_lib/trunk/io_lib/cram_stats.c Changed to using BETA encoding for alphabets with more than 200 symbols. These are typically slower using HUFFMAN and on the large alphabets it's typically just as efficient to use BETA encoding (plus the overhead of writing the HUFFMAN table is significant). ------------------------------------------------------------------------ r3356 | jkbonfield | 2013-05-29 17:10:42 +0100 (Wed, 29 May 2013) | 2 lines Changed paths: M /io_lib/trunk/io_lib/cram_encode.c M /io_lib/trunk/progs/scramble.c M /io_lib/trunk/tests/data/ce#5b.sam Improved support for sequence "*" and added a test for it. ------------------------------------------------------------------------ r3355 | jkbonfield | 2013-05-29 15:24:28 +0100 (Wed, 29 May 2013) | 3 lines Changed paths: M /io_lib/trunk/tests/data/xx#rg.sam Bug fix to previous edit - @CO records must be followed by tab. (The code was correctly whinging.) ------------------------------------------------------------------------ r3354 | jkbonfield | 2013-05-29 15:20:13 +0100 (Wed, 29 May 2013) | 3 lines Changed paths: M /io_lib/trunk/io_lib/cram_decode.c M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/io_lib/cram_io.h M /io_lib/trunk/io_lib/scram.c Removed a few memory leaks and adding more rigorous freeing upon receiving errors. ------------------------------------------------------------------------ r3353 | jkbonfield | 2013-05-29 15:19:43 +0100 (Wed, 29 May 2013) | 2 lines Changed paths: M /io_lib/trunk/tests/data/ce#5.sam Added an additional test for a large deletion. ------------------------------------------------------------------------ r3352 | jkbonfield | 2013-05-29 15:17:58 +0100 (Wed, 29 May 2013) | 2 lines Changed paths: M /io_lib/trunk/io_lib/sam_header.c Fix memory overflow during adding PG lines. ------------------------------------------------------------------------ r3351 | jkbonfield | 2013-05-29 15:17:35 +0100 (Wed, 29 May 2013) | 2 lines Changed paths: M /io_lib/trunk/progs/scram_merge.c Extra tidying up on exit to free more memory. ------------------------------------------------------------------------ r3350 | jkbonfield | 2013-05-29 11:21:35 +0100 (Wed, 29 May 2013) | 5 lines Changed paths: M /io_lib/trunk/tests/compare_sam.pl M /io_lib/trunk/tests/data/ce.fa M /io_lib/trunk/tests/data/ce.fa.fai M /io_lib/trunk/tests/data/xx#large_aux2.sam M /io_lib/trunk/tests/data/xx#pair.sam Fixed the test setup somewhat. In some cases the duplicate read names are no longer duplicate, and in other cases where they are duplicated the flags have been fixed to correctly match the read-pairing stats. ------------------------------------------------------------------------ r3349 | jkbonfield | 2013-05-29 09:42:02 +0100 (Wed, 29 May 2013) | 2 lines Changed paths: M /io_lib/trunk/tests/compare_sam.pl A /io_lib/trunk/tests/data/ce#tag_depadded.sam A /io_lib/trunk/tests/data/ce#tag_padded.sam M /io_lib/trunk/tests/data/xx#rg.sam Added more checks, including Gap5/Mira tag format. ------------------------------------------------------------------------ r3346 | jkbonfield | 2013-05-24 15:03:33 +0100 (Fri, 24 May 2013) | 9 lines Changed paths: M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/io_lib/sam_header.c M /io_lib/trunk/io_lib/scram.c M /io_lib/trunk/progs/scramble.c Improved support for file type detection. Now that BAM/SAM uses stdio we use getc/ungetc to query the first character, allowing file type detection on stdin. This means we can pipe in cram without needing -I cram in scramble. Also added a "rs" and "ws" modes for explicit reading and writing of SAM, in addition to the previous "r","w" ones. ------------------------------------------------------------------------ r3345 | jkbonfield | 2013-05-24 15:01:47 +0100 (Fri, 24 May 2013) | 3 lines Changed paths: M /io_lib/trunk/io_lib/bam.c M /io_lib/trunk/io_lib/bam.h Switched BAM/SAM code to using fread/fwrite instead of read/write. This is to permit a unified I/O layer for CRAM too. ------------------------------------------------------------------------ r3344 | jkbonfield | 2013-05-24 11:37:42 +0100 (Fri, 24 May 2013) | 2 lines Changed paths: M /io_lib/trunk/configure.in Fix bug in libbz2 support, causing an error when it wasn't found. ------------------------------------------------------------------------ r3343 | jkbonfield | 2013-05-22 16:09:11 +0100 (Wed, 22 May 2013) | 9 lines Changed paths: M /io_lib/trunk/io_lib/cram_io.c Added code to set container length for the first container (SAM header). There is also code there to make room for inline editing of the SAM header via a variety of means; the one enabled at present being to pad out the header string with additional nul characters. The decoding code now also copes with extra space after the container's last block, although files of this mode aren't generated at present. ------------------------------------------------------------------------ r3339 | jkbonfield | 2013-05-22 12:03:29 +0100 (Wed, 22 May 2013) | 3 lines Changed paths: M /io_lib/trunk/io_lib/scram.c M /io_lib/trunk/io_lib/scram.h Added scram_line() to return the SAM line number. Does nothing for bam/cram. ------------------------------------------------------------------------ r3338 | jkbonfield | 2013-05-22 11:59:45 +0100 (Wed, 22 May 2013) | 2 lines Changed paths: M /io_lib/trunk/io_lib/cram_encode.c Bug fix to previous commit - was underallocating. ------------------------------------------------------------------------ r3337 | jkbonfield | 2013-05-22 11:52:41 +0100 (Wed, 22 May 2013) | 4 lines Changed paths: M /io_lib/trunk/io_lib/cram_encode.c Permit sequence "*"; used in consensus tags from gap5 / mira. It's not very efficient as we're forced to store quality, but it works. ------------------------------------------------------------------------ r3336 | jkbonfield | 2013-05-22 11:51:45 +0100 (Wed, 22 May 2013) | 2 lines Changed paths: M /io_lib/trunk/io_lib/cram_structs.h Removed defunct MAX_NAME_LEN macro. ------------------------------------------------------------------------ r3333 | jkbonfield | 2013-05-20 16:57:57 +0100 (Mon, 20 May 2013) | 2 lines Changed paths: M /io_lib/trunk/io_lib/cram_codecs.c M /io_lib/trunk/io_lib/cram_encode.c M /io_lib/trunk/io_lib/cram_io.h M /io_lib/trunk/io_lib/cram_stats.c M /io_lib/trunk/io_lib/ctfCompress.c M /io_lib/trunk/io_lib/deflate_interlaced.c M /io_lib/trunk/io_lib/hash_table.c M /io_lib/trunk/io_lib/open_trace_file.c M /io_lib/trunk/io_lib/srf.c M /io_lib/trunk/progs/cram_dump.c M /io_lib/trunk/progs/scram_merge.c Fixes to make the code (mostly) pass clang and gcc -Wall checks. ------------------------------------------------------------------------ r3331 | jkbonfield | 2013-05-16 17:08:40 +0100 (Thu, 16 May 2013) | 3 lines Changed paths: M /io_lib/trunk/io_lib/sam_header.c Fixed the header parsing to allow @CO tags which don't have a key:value pair syntax. ------------------------------------------------------------------------ r3330 | jkbonfield | 2013-05-15 15:03:57 +0100 (Wed, 15 May 2013) | 4 lines Changed paths: M /io_lib/trunk/io_lib/cram_decode.c Force array bounds checking on reference sequences before trying to compute their MD5sum. This is needed when the slice coordinates are invalid. ------------------------------------------------------------------------ r3329 | jkbonfield | 2013-05-15 15:03:28 +0100 (Wed, 15 May 2013) | 2 lines Changed paths: M /io_lib/trunk/io_lib/cram_codecs.c Cope with initialising huffman codecs with zero symbols. ------------------------------------------------------------------------ r3327 | jkbonfield | 2013-05-14 14:04:43 +0100 (Tue, 14 May 2013) | 18 lines Changed paths: M /io_lib/trunk/io_lib/cram_decode.c Improved the ambiguous TLEN case where both start and end are at the same point. Ie -----------> first -----------> last or -----------> first <----------- last It's valid at this stage to set both to be +ve as technically each is both the leftmost and rightmost. However we now disambiguate this case by the first/last bit flags instead. ------------------------------------------------------------------------ r3321 | jkbonfield | 2013-05-10 14:36:04 +0100 (Fri, 10 May 2013) | 5 lines Changed paths: M /io_lib/trunk/io_lib/bam.c M /io_lib/trunk/io_lib/bam.h Added bam_add_raw() for adding entire raw auxiliary data blocks (multiple entries). Also bug fixed bam_add_aux_data(). =============================================================================== 2013-05-03: RELEASE 1.13.1 ------------------------------------------------------------------------ r3311 | jkbonfield | 2013-05-03 12:19:24 +0100 (Fri, 03 May 2013) | 2 lines Changed paths: M /io_lib/trunk/CHANGES M /io_lib/trunk/README 1.13.1 release notes ------------------------------------------------------------------------ r3310 | jkbonfield | 2013-05-02 17:15:35 +0100 (Thu, 02 May 2013) | 4 lines Changed paths: M /io_lib/trunk/io_lib/cram_decode.c Fixes for handling name sorted data. The template length and sign (+/-) calculation assumed data was in position sorted order. This is no longer the case. ------------------------------------------------------------------------ r3309 | jkbonfield | 2013-05-02 16:53:57 +0100 (Thu, 02 May 2013) | 2 lines Changed paths: M /io_lib/trunk/progs/scramble.c Fix usage typo. ------------------------------------------------------------------------ r3308 | jkbonfield | 2013-05-02 15:02:08 +0100 (Thu, 02 May 2013) | 4 lines Changed paths: M /io_lib/trunk/io_lib/cram_encode.c The mind bogglingly daft combination of embedding references for non-position sorted data now works, albeit tragically inefficiently, rather than simply core dumping. ------------------------------------------------------------------------ r3307 | jkbonfield | 2013-05-02 12:27:39 +0100 (Thu, 02 May 2013) | 8 lines Changed paths: M /io_lib/trunk/io_lib/cram_decode.c Simplify the cram_decode_slice_xref code given we now know it's executed on each and every sequence in the slice before attempting to convert to BAM. This means we don't have to fix up mate information, only our own information. In doing so this also cures a bug with template triplets (1st, 2nd and one other) introduced during the move to cram_decode_slice_xref(). ------------------------------------------------------------------------ r3306 | jkbonfield | 2013-05-02 11:45:47 +0100 (Thu, 02 May 2013) | 3 lines Changed paths: M /io_lib/trunk/io_lib/cram_decode.c M /io_lib/trunk/io_lib/cram_encode.c Improved embedded reference and non-reference modes, adding support for RR (Reference Required) compression header hint. ------------------------------------------------------------------------ r3305 | jkbonfield | 2013-05-02 09:38:57 +0100 (Thu, 02 May 2013) | 12 lines Changed paths: M /io_lib/trunk/io_lib/cram_index.c Bug fixes to cram index handling. 1) The binary search found *a* slice containing the requested range, but it wasn't guaranteed to be the first slice. Consequentially we sometimes missed some reads. 2) Fixed a crash where repeated calls to cram_seek_to_refpos could reuse freed containers. Also improved documentation after scratching my head at the code, forgetting it was based around a nested containment list. ------------------------------------------------------------------------ r3304 | jkbonfield | 2013-05-02 09:36:51 +0100 (Thu, 02 May 2013) | 9 lines Changed paths: M /io_lib/trunk/io_lib/cram_decode.c Bug fix for range queries of unmapped reads. We now set the end coordinate to be the start coordinate instead of -1. Also moved the slice cross-reference resolving code from cram_to_bam to a sub-function called by cram_decode_slice itself. This means that we can resolve cross-references for reads partially used in a range query. (Previously a fetching back a sub-range would leave mate_flags uninitialised.) ------------------------------------------------------------------------ r3303 | jkbonfield | 2013-05-01 09:46:59 +0100 (Wed, 01 May 2013) | 3 lines Changed paths: M /io_lib/trunk/io_lib/cram_io.c Fix for cram encoding of files containing no @SQ lines (due to entirely being unmapped data). ------------------------------------------------------------------------ r3302 | jkbonfield | 2013-04-30 10:29:39 +0100 (Tue, 30 Apr 2013) | 3 lines Changed paths: M /io_lib/trunk/io_lib/bam.c M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/io_lib/cram_structs.h M /io_lib/trunk/progs/scram_merge.c Improvements to handling shared references (now via a scram_set_option type) and to scram_merge. ------------------------------------------------------------------------ r3301 | jkbonfield | 2013-04-29 14:45:13 +0100 (Mon, 29 Apr 2013) | 3 lines Changed paths: M /io_lib/trunk/io_lib/cram_encode.c Bug fix to previous commit. It solved out-of-bounds reads, but not in-bound reads! ------------------------------------------------------------------------ r3300 | jkbonfield | 2013-04-29 14:39:25 +0100 (Mon, 29 Apr 2013) | 8 lines Changed paths: M /io_lib/trunk/io_lib/cram_decode.c M /io_lib/trunk/io_lib/cram_encode.c Added a workaround for broken CIGAR strings that map bases beyond the ends of the reference (this can happen with BWA). The encoder now outputs these bases verbatim instead. Also protected against potentially malicious buffer overruns by exploiting this in the decoder; it now bounds checks the incoming slice coordinates. ------------------------------------------------------------------------ r3299 | daviesrob | 2013-04-26 15:56:58 +0100 (Fri, 26 Apr 2013) | 7 lines Changed paths: M /io_lib/trunk/io_lib/bam.c M /io_lib/trunk/io_lib/bam.h Added bam_aux_add_from_sam and STORE_UINTxx macros. bam_aux_add_from_sam adds aux tags from a SAM formatted string. STORE_UINT16, STORE_UINT32 and STORE_UINT64 store data in little-endian byte order. They are intended to make functions like sam_next_seq and bam_aux_add_from_sam a bit less bloated. ------------------------------------------------------------------------ r3298 | jkbonfield | 2013-04-26 15:50:51 +0100 (Fri, 26 Apr 2013) | 7 lines Changed paths: M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/io_lib/cram_io.h Reduced the memory overheads on malloc buffers; no need to double each time in cram_block and also the initial guess of memory used for zlib reflate was too high. CPU performance seems minimal (marginally faster infact), while reducing virtual memory usage by about 10%. ------------------------------------------------------------------------ r3297 | jkbonfield | 2013-04-25 17:34:44 +0100 (Thu, 25 Apr 2013) | 7 lines Changed paths: M /io_lib/trunk/configure.in M /io_lib/trunk/io_lib/bam.c M /io_lib/trunk/io_lib/bam.h M /io_lib/trunk/io_lib/cram_encode.c M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/io_lib/sam_header.c M /io_lib/trunk/io_lib/sam_header.h M /io_lib/trunk/io_lib/scram.h M /io_lib/trunk/progs/Makefile.am M /io_lib/trunk/progs/cram_dump.c M /io_lib/trunk/progs/cram_to_sam.c M /io_lib/trunk/progs/sam_to_cram.c M /io_lib/trunk/progs/scram_merge.c M /io_lib/trunk/progs/scramble.c Large scale rename of sam_header_*() to be sam_hdr_*(), bam_aux2*() to bam_aux_*() and bam_aux_append() to bam_aux_add_data(). This is to avoid samtools clashes with functions of the same name. Also added const to various sam_header interfaces. These need to be added in many more places still (an ongoing process). ------------------------------------------------------------------------ r3296 | jkbonfield | 2013-04-25 11:45:08 +0100 (Thu, 25 Apr 2013) | 2 lines Changed paths: M /io_lib/trunk/io_lib/cram_encode.c M /io_lib/trunk/io_lib/open_trace_file.c Removal of warnings for when the code is used as part of samtools library. ------------------------------------------------------------------------ r3295 | jkbonfield | 2013-04-25 11:40:10 +0100 (Thu, 25 Apr 2013) | 18 lines Changed paths: M /io_lib/trunk/io_lib/cram_decode.c M /io_lib/trunk/io_lib/cram_encode.c M /io_lib/trunk/io_lib/cram_index.c M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/io_lib/open_trace_file.c M /io_lib/trunk/io_lib/read_scf.c M /io_lib/trunk/io_lib/write_scf.c M /io_lib/trunk/progs/scram_merge.c M /io_lib/trunk/progs/srf_filter.c M /io_lib/trunk/tests/scram.test 1) Various gcc -Wall fixes; mostly type-punning now resolved by unions. 2) Potential bug fix to scram_merge demo program when using multiple refs. (On 32-bit systems only?) 3) Added .mft1.00 to the magic number search for 454 indexed SFF files, in addition tot he old .srt1.00 string. The two seem compatible. 4) Improved cram_to_bam() handling of aux fields. It identifies the aux location via bam_aux() now instead of assuming it's part of the same bam struct. This has no effect for io_lib, but makes the code work within Samtools. 5) "make check" now runs under a debugging environment if $VALGRIND is set in the environment. Eg VALGRIND="valgrind --db-attach=yes" make check ------------------------------------------------------------------------ r3294 | jkbonfield | 2013-04-23 17:41:47 +0100 (Tue, 23 Apr 2013) | 4 lines Changed paths: M /io_lib/trunk/io_lib/cram_encode.c M /io_lib/trunk/io_lib/cram_io.c More samtools tweaks. (Now able to do samtools view for both decoding and encoding, although it needs @SQ records to figure out reference sequences). ------------------------------------------------------------------------ r3293 | jkbonfield | 2013-04-23 17:02:36 +0100 (Tue, 23 Apr 2013) | 6 lines Changed paths: M /io_lib/trunk/io_lib/cram.h M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/io_lib/cram_structs.h M /io_lib/trunk/io_lib/dstring.c M /io_lib/trunk/io_lib/open_trace_file.c M /io_lib/trunk/io_lib/sam_header.c M /io_lib/trunk/io_lib/sam_header.h Minimal changes to cope with compiling as part of a samtools environment, via -DSAMTOOLS define. This has no bearing on usage within io_lib, but is part of a project to test a hacky integration into Samtools and/or HTSlib. ------------------------------------------------------------------------ r3292 | jkbonfield | 2013-04-23 15:17:24 +0100 (Tue, 23 Apr 2013) | 9 lines Changed paths: M /io_lib/trunk/configure.in M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/io_lib/cram_structs.h M /io_lib/trunk/progs/scramble.c Added bzip2 support, enabled using scramble -j. It was included in the CRAM 1.0 spec but removed from 2.0. I added it to investigate how well it performs. Conclusion: 5-10% space improvement, but something like twice as slow. I don't think it's worth the overhead and long-term we should go to modelling + arithmetic coding to get better time/size tradeoffs. ------------------------------------------------------------------------ r3291 | jkbonfield | 2013-04-23 14:26:14 +0100 (Tue, 23 Apr 2013) | 3 lines Changed paths: M /io_lib/trunk/io_lib/cram_decode.c Bug fix to cram_to_bam(). It now copes with unsorted data when computing the TLEN field. ------------------------------------------------------------------------ r3290 | jkbonfield | 2013-04-23 10:33:37 +0100 (Tue, 23 Apr 2013) | 3 lines Changed paths: M /io_lib/trunk/io_lib/cram_encode.c Fixed crash when encoding using more than 1 slice per container and are using referenceless mode. ------------------------------------------------------------------------ r3289 | jkbonfield | 2013-04-23 10:32:26 +0100 (Tue, 23 Apr 2013) | 6 lines Changed paths: M /io_lib/trunk/tests/compare_sam.pl Now copes with BWA bug where it produces NM, MD and CIGAR strings for unmapped data. Also added -noflag and -template-1 options to ignore flag differences and cope with out-by-one errors in template size. ------------------------------------------------------------------------ r3288 | jkbonfield | 2013-04-23 09:59:53 +0100 (Tue, 23 Apr 2013) | 4 lines Changed paths: M /io_lib/trunk/io_lib/cram_encode.c M /io_lib/trunk/io_lib/cram_io.c Revert the previous fix to cram_put_bam_seq() regarding no-ref mode and fixed it elsewhere. cram_write_SAM_hdr() now rebuilds the refs table from any new @SQ lines. ------------------------------------------------------------------------ r3287 | awhitwham | 2013-04-19 10:19:55 +0100 (Fri, 19 Apr 2013) | 2 lines Changed paths: M /io_lib/trunk/io_lib/string_alloc.c Make string_dup a special case of string_ndup. This removes the last of the old arbitrary size limits. ------------------------------------------------------------------------ r3286 | jkbonfield | 2013-04-18 18:00:49 +0100 (Thu, 18 Apr 2013) | 3 lines Changed paths: M /io_lib/trunk/io_lib/open_trace_file.c Fixed bug in % expansion in find_file_dir(). With explict /%s on the end of a path it lost the final path component. ------------------------------------------------------------------------ r3285 | jkbonfield | 2013-04-18 17:36:16 +0100 (Thu, 18 Apr 2013) | 4 lines Changed paths: M /io_lib/trunk/io_lib/cram_decode.c Changed the marker for unknown template length from -1 to INT_MIN. We accidentally found a SAM pair with template length as -1 which tripped up the code. ------------------------------------------------------------------------ r3284 | daviesrob | 2013-04-18 17:03:25 +0100 (Thu, 18 Apr 2013) | 1 line Changed paths: M /io_lib/trunk/io_lib/cram_encode.c Fixed missing check for fd->no_ref ------------------------------------------------------------------------ r3283 | daviesrob | 2013-04-18 16:28:44 +0100 (Thu, 18 Apr 2013) | 1 line Changed paths: M /io_lib/trunk/io_lib/bam.c M /io_lib/trunk/io_lib/bam.h M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/io_lib/cram_io.h M /io_lib/trunk/io_lib/scram.c M /io_lib/trunk/io_lib/scram.h Made {bam,cram,scram}_open take const chart * for filename and mode ------------------------------------------------------------------------ r3282 | daviesrob | 2013-04-18 16:21:44 +0100 (Thu, 18 Apr 2013) | 8 lines Changed paths: M /io_lib/trunk/io_lib/bam.c M /io_lib/trunk/io_lib/bam.h Improved aux tag interfaces and made bam_construct_seq calculate end. Made interfaces allowing auxiliary tags to be added to the bam structure. Minor improvements to bam_aux_find (key is now a const char *). bam_construct_seq will now calculate the alignment end position from pos and cigar if end is passed in as zero. ------------------------------------------------------------------------ r3281 | jkbonfield | 2013-04-18 16:07:55 +0100 (Thu, 18 Apr 2013) | 6 lines Changed paths: M /io_lib/trunk/io_lib/bam.h M /io_lib/trunk/io_lib/cram_decode.c M /io_lib/trunk/io_lib/cram_encode.c M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/io_lib/cram_io.h M /io_lib/trunk/progs/scram_merge.c Added more bam_*() accessor macros and code to use these in the cram construction. This helps with the port of cram to use samtools/HTSlib bam1_t struct as we can redirect it with little more than a new set of #defines. ------------------------------------------------------------------------ r3280 | jkbonfield | 2013-04-18 14:47:09 +0100 (Thu, 18 Apr 2013) | 2 lines Changed paths: M /io_lib/trunk/io_lib/cram_decode.c Fixed a rare buffer overrun in the cigar producing code. ------------------------------------------------------------------------ r3279 | jkbonfield | 2013-04-15 18:50:42 +0100 (Mon, 15 Apr 2013) | 2 lines Changed paths: M /io_lib/trunk/progs/scram_pileup.c Fixed arg checking. ------------------------------------------------------------------------ r3278 | daviesrob | 2013-04-15 16:56:14 +0100 (Mon, 15 Apr 2013) | 19 lines Changed paths: M /io_lib/trunk/io_lib/bam.c M /io_lib/trunk/io_lib/bam.h M /io_lib/trunk/io_lib/cram_decode.c Changed interface to bam_construct_seq, to make it easier to use. bam_construct_seq now takes a bam_seq_t **, so it can resize the structure if it is not big enough. It also calulates the size needed itself, so there is no need for the caller to work out how much space is needed. The caller can reserve space for auxiliary tags with the extra_len parameter, though. The start parameter has been removed, as it should always be the same as pos. Some data types have changed to more suitable choices (e.g. ncigar is now unsigned, arrays and strings have const qualifiers). Added some sanity checking to bam_construct_seq inputs. Fixed bug with handling of qual == NULL. It now sets the quality values to 0xff. Improved bam_construct_seq documentation by adding @param lines. Updated cram_to_bam to use the new bam_construct_seq interface. Fixed too-late check for b == NULL in bam_close. ------------------------------------------------------------------------ r3277 | jkbonfield | 2013-04-15 16:45:08 +0100 (Mon, 15 Apr 2013) | 5 lines Changed paths: M /io_lib/trunk/progs/Makefile.am A /io_lib/trunk/progs/scram_pileup.c A /io_lib/trunk/progs/scram_pileup.h Added a rudimentary pileup interface. The command line tool is extremely minimal at present, but I don't intend this to be a replacement for samtools pileup or mpileup. It is largely a test for the API (which still needs moving into the library part). ------------------------------------------------------------------------ r3276 | jkbonfield | 2013-04-15 15:20:16 +0100 (Mon, 15 Apr 2013) | 3 lines Changed paths: M /io_lib/trunk/io_lib/bam.c M /io_lib/trunk/io_lib/bam.h Added bam_aux2* functions to mirror the operation of Samtools API. (Warning: untested at present - a work in progress.) ------------------------------------------------------------------------ r3275 | jkbonfield | 2013-04-15 14:11:19 +0100 (Mon, 15 Apr 2013) | 3 lines Changed paths: M /io_lib/trunk/io_lib/ctfCompress.c M /io_lib/trunk/io_lib/open_trace_file.c M /io_lib/trunk/io_lib/read_alloc.c M /io_lib/trunk/io_lib/scf_extras.c M /io_lib/trunk/io_lib/srf.c M /io_lib/trunk/io_lib/translate.c M /io_lib/trunk/progs/srf_info.c Having removed include of xalloc.h from misc.h (r3273) this caused errors elsewhere (giving crashes on 64-bit platforms). Fixed. ------------------------------------------------------------------------ r3274 | daviesrob | 2013-04-15 10:19:02 +0100 (Mon, 15 Apr 2013) | 3 lines Changed paths: M /io_lib/trunk/io_lib/sam_header.c M /io_lib/trunk/io_lib/sam_header.h Added sam_header_new() to make an empty header struct. Changed sam_header_parse and sam_header_add_lines to take a const char * ------------------------------------------------------------------------ r3273 | jkbonfield | 2013-04-12 16:37:00 +0100 (Fri, 12 Apr 2013) | 2 lines Changed paths: M /io_lib/trunk/io_lib/cram_codecs.c M /io_lib/trunk/io_lib/cram_codecs.h M /io_lib/trunk/io_lib/cram_decode.c M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/io_lib/misc.h Speed increases to CRAM decoding; 5-10% faster depending on file. ------------------------------------------------------------------------ r3270 | jkbonfield | 2013-04-11 11:33:29 +0100 (Thu, 11 Apr 2013) | 3 lines Changed paths: M /io_lib/trunk/io_lib/cram_io.c I know I know, it's a goto! Minimal bug fix to handle @SQ lines with no M5 but with a UR field. ------------------------------------------------------------------------ r3269 | jkbonfield | 2013-04-10 16:57:46 +0100 (Wed, 10 Apr 2013) | 6 lines Changed paths: M /io_lib/trunk/io_lib/cram_io.c More paranoia on writing cram and refs (checking fclose more carefully after syncing). Removed some (pointless) debugging in cram_write_block(). I wonder how long those nops were there! ------------------------------------------------------------------------ r3268 | jkbonfield | 2013-04-10 16:42:40 +0100 (Wed, 10 Apr 2013) | 12 lines Changed paths: M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/io_lib/cram_structs.h M /io_lib/trunk/io_lib/open_trace_file.c Refactored the reference compression code. - REF_CACHE environment now copes with % symbols. Eg: "REF_CACHE=/tmp/.cram_cache/%2s/%2s/%s" will look for MD5s in /tmp/.cram_cache/XX/XX/XXXXXXXXXXXX. - Improved handling of -r vs UR: vs M5: strings. We permit multiple UR fastas if appropriate and the .fai are not loaded up until we require them. - Ensure -r overrides everything else. ------------------------------------------------------------------------ r3265 | jkbonfield | 2013-04-09 09:33:25 +0100 (Tue, 09 Apr 2013) | 16 lines Changed paths: M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/io_lib/open_trace_file.c M /io_lib/trunk/io_lib/open_trace_file.h Experimental caching and web accesses for reference server. Set REF_PATH to be a colon separated directory of places to check. These are accessed in the same way that TRACE_PATH / RAWDATA environ is for trace files. Set REF_CACHE to a globally writeable location you wish to write data back to, to form a local cache. For URL within REF_PATH %s is replaced by the MD5 string. Eg: export REF_PATH=/tmp/.cram_cache:URL=http:://www.ebi.ac.uk/ena/cram/md5/%s (Some of this will definitely change before the next official release is made live.) ------------------------------------------------------------------------ r3264 | jkbonfield | 2013-04-08 14:53:51 +0100 (Mon, 08 Apr 2013) | 4 lines Changed paths: M /io_lib/trunk/io_lib/cram_io.c The previous fix to creating fake fd->refs structs to permit decoding of non-reference based CRAM files caused the error checking in cram_get_ref to fail in some cases. ------------------------------------------------------------------------ r3263 | jkbonfield | 2013-04-08 14:31:55 +0100 (Mon, 08 Apr 2013) | 3 lines Changed paths: M /io_lib/trunk/io_lib/sam_header.c Bug fix to sam_header_update(). It was unlinking remaining key:value pairs when modifying an existing field; appending new ones was fine. ------------------------------------------------------------------------ r3262 | jkbonfield | 2013-04-08 13:53:14 +0100 (Mon, 08 Apr 2013) | 6 lines Changed paths: M /io_lib/trunk/io_lib/cram_decode.c M /io_lib/trunk/io_lib/cram_encode.c M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/io_lib/cram_structs.h M /io_lib/trunk/man/man1/scramble.1 M /io_lib/trunk/progs/cram_dump.c M /io_lib/trunk/progs/scramble.c Added -x option to scramble and associated library code. This generates features for every base rather than mismatching data only. Bug fix to 'Q' feature - we were missing a break statement in cram_decode.c and cram_dump.c ------------------------------------------------------------------------ r3261 | jkbonfield | 2013-04-05 17:04:04 +0100 (Fri, 05 Apr 2013) | 2 lines Changed paths: M /io_lib/trunk/io_lib/bam.c M /io_lib/trunk/io_lib/cram_codecs.c M /io_lib/trunk/io_lib/cram_decode.c M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/io_lib/sam_header.c M /io_lib/trunk/io_lib/string_alloc.c M /io_lib/trunk/tests/scram.test Removal of fixed sized buffers and potential memory overruns. ------------------------------------------------------------------------ r3260 | jkbonfield | 2013-04-05 15:10:24 +0100 (Fri, 05 Apr 2013) | 3 lines Changed paths: M /io_lib/trunk/io_lib/sam_header.c More error checking, this time of parsing SAM headers. We check the types and key:value pairs are all 2 characters long. ------------------------------------------------------------------------ r3259 | jkbonfield | 2013-04-05 14:34:03 +0100 (Fri, 05 Apr 2013) | 4 lines Changed paths: M /io_lib/trunk/io_lib/bam.c M /io_lib/trunk/io_lib/bam.h M /io_lib/trunk/io_lib/cram_codecs.c M /io_lib/trunk/io_lib/cram_codecs.h M /io_lib/trunk/io_lib/cram_decode.c M /io_lib/trunk/io_lib/cram_encode.c M /io_lib/trunk/io_lib/cram_encode.h M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/io_lib/cram_io.h M /io_lib/trunk/io_lib/cram_stats.c M /io_lib/trunk/io_lib/cram_stats.h M /io_lib/trunk/io_lib/sam_header.c M /io_lib/trunk/io_lib/sam_header.h M /io_lib/trunk/io_lib/scram.c M /io_lib/trunk/progs/scram_merge.c M /io_lib/trunk/progs/scramble.c M /io_lib/trunk/tests/scram.test Return codes, return codes, return codes! Extra paranoia and error checking. ------------------------------------------------------------------------ r3258 | jkbonfield | 2013-04-04 17:39:54 +0100 (Thu, 04 Apr 2013) | 3 lines Changed paths: M /io_lib/trunk/io_lib/bam.c Cope with BAM files containing no text header, only binary encoding of the @SQ records. ------------------------------------------------------------------------ r3257 | jkbonfield | 2013-04-04 16:56:08 +0100 (Thu, 04 Apr 2013) | 4 lines Changed paths: M /io_lib/trunk/io_lib/cram_decode.c M /io_lib/trunk/io_lib/cram_encode.c M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/io_lib/cram_structs.h Added support for unsorted data. Warning this can use a lot of memory as it will ultimately end up loading all references into memory instead of just the current one. ------------------------------------------------------------------------ r3256 | jkbonfield | 2013-04-04 16:29:18 +0100 (Thu, 04 Apr 2013) | 2 lines Changed paths: M /io_lib/trunk/io_lib/cram_codecs.c M /io_lib/trunk/io_lib/cram_codecs.h Added BETA encoding (decoding was already there). ------------------------------------------------------------------------ r3255 | jkbonfield | 2013-04-03 15:34:39 +0100 (Wed, 03 Apr 2013) | 2 lines Changed paths: M /io_lib/trunk/progs/scramble.c Added the -m option to generate NM and MD strings. ------------------------------------------------------------------------ r3254 | jkbonfield | 2013-04-03 15:34:07 +0100 (Wed, 03 Apr 2013) | 2 lines Changed paths: M /io_lib/trunk/io_lib/cram_encode.c Bug fix for reading NM bam tags encoded as shorts (s/S). ------------------------------------------------------------------------ r3253 | jkbonfield | 2013-04-03 15:15:15 +0100 (Wed, 03 Apr 2013) | 6 lines Changed paths: M /io_lib/trunk/io_lib/bam.h M /io_lib/trunk/io_lib/cram.h M /io_lib/trunk/io_lib/cram_codecs.h M /io_lib/trunk/io_lib/cram_decode.c M /io_lib/trunk/io_lib/cram_decode.h M /io_lib/trunk/io_lib/cram_encode.c M /io_lib/trunk/io_lib/cram_encode.h M /io_lib/trunk/io_lib/cram_index.h M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/io_lib/cram_io.h M /io_lib/trunk/io_lib/cram_stats.h M /io_lib/trunk/io_lib/cram_structs.h M /io_lib/trunk/io_lib/dstring.h M /io_lib/trunk/io_lib/md5.h M /io_lib/trunk/io_lib/sam_header.h M /io_lib/trunk/io_lib/scram.c M /io_lib/trunk/io_lib/scram.h M /io_lib/trunk/io_lib/string_alloc.h M /io_lib/trunk/progs/cram_dump.c M /io_lib/trunk/progs/cram_to_sam.c M /io_lib/trunk/progs/sam_to_cram.c M /io_lib/trunk/progs/scram_merge.c M /io_lib/trunk/progs/scramble.c The sam/bam/cram code can now be used by C++ compilers. - extern "C" around headers - Renamed cram_fd->SAM_hdr to be cram_fd->header to avoid type and variable with same identifier. - Renamed refs data type to be refs_t to avoid type/variable name clash. ------------------------------------------------------------------------ r3252 | jkbonfield | 2013-04-03 12:32:09 +0100 (Wed, 03 Apr 2013) | 4 lines Changed paths: M /io_lib/trunk/io_lib/cram_io.c Allow for 2% larger encoding if using the 2nd zlib encoding technique, as this is always the faster one (Z_RLE in our usage). 2% growth for 2-3x speed increase is well worth it. We may wish to tweak this further. ------------------------------------------------------------------------ r3251 | jkbonfield | 2013-04-03 12:01:12 +0100 (Wed, 03 Apr 2013) | 2 lines Changed paths: M /io_lib/trunk/progs/scramble.c Minor tidup of error messages. ------------------------------------------------------------------------ r3250 | jkbonfield | 2013-04-03 10:30:33 +0100 (Wed, 03 Apr 2013) | 3 lines Changed paths: M /io_lib/trunk/progs/Makefile.am Remove old sam/bam/cram conversion programs as they're deprecated in favour of scramble. ------------------------------------------------------------------------ r3249 | jkbonfield | 2013-04-03 09:58:10 +0100 (Wed, 03 Apr 2013) | 3 lines Changed paths: M /io_lib/trunk/io_lib/cram_decode.c Fixed bug where BAM_FMUNMAP flag wasn't being set on all sequences. Happened when CRAM_M_REVERSE is true as well. ------------------------------------------------------------------------ r3248 | jkbonfield | 2013-04-03 09:40:57 +0100 (Wed, 03 Apr 2013) | 7 lines Changed paths: M /io_lib/trunk/io_lib/cram_decode.c M /io_lib/trunk/io_lib/cram_encode.c Fixed bugs with V1.0 encoding that crap in with the 2.0 code. 1) Softclips now encode correctly again. 2) AP_Delta is assumed to be true rather than requiring the AP header value. ------------------------------------------------------------------------ r3247 | jkbonfield | 2013-04-02 17:34:32 +0100 (Tue, 02 Apr 2013) | 6 lines Changed paths: M /io_lib/trunk/io_lib/cram_decode.c M /io_lib/trunk/io_lib/cram_encode.c M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/io_lib/cram_structs.h M /io_lib/trunk/io_lib/sam_header.c M /io_lib/trunk/progs/scramble.c Added the ability to encode multiple sequences per slice and/or container. This is experimental and disabled at present. Enable using scramble -M. (This feature is a prerequisite for efficient storage of unsorted data.) ------------------------------------------------------------------------ r3246 | jkbonfield | 2013-03-28 15:57:08 +0000 (Thu, 28 Mar 2013) | 4 lines Changed paths: M /io_lib/trunk/io_lib/sam_header.c M /io_lib/trunk/io_lib/sam_header.h Major speed increase to sam_header_find() when given SQ/SN, RG/ID or PG/ID requests. It uses the prebuilt hashes instead. ------------------------------------------------------------------------ r3245 | jkbonfield | 2013-03-28 14:13:04 +0000 (Thu, 28 Mar 2013) | 5 lines Changed paths: M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/io_lib/cram_io.h M /io_lib/trunk/io_lib/cram_structs.h M /io_lib/trunk/io_lib/scram.c M /io_lib/trunk/io_lib/scram.h M /io_lib/trunk/progs/cram_to_sam.c M /io_lib/trunk/progs/sam_to_cram.c M /io_lib/trunk/progs/scram_merge.c M /io_lib/trunk/progs/scramble.c Removed the cram_opt struct and switched to a varargs calling syntax. This makes option setting far easier and more inline with things like ioctl() and fcntl(). ------------------------------------------------------------------------ r3244 | jkbonfield | 2013-03-28 12:08:28 +0000 (Thu, 28 Mar 2013) | 3 lines Changed paths: M /io_lib/trunk/io_lib/bam.c M /io_lib/trunk/io_lib/bam.h M /io_lib/trunk/io_lib/scram.c M /io_lib/trunk/io_lib/scram.h M /io_lib/trunk/progs/sam_convert.c M /io_lib/trunk/progs/sam_to_cram.c M /io_lib/trunk/progs/scram_merge.c M /io_lib/trunk/progs/scramble.c Renamed *_next_seq() to be *_get_seq() to be a better pairing with the *_put_seq() functions. ------------------------------------------------------------------------ r3243 | jkbonfield | 2013-03-28 11:55:19 +0000 (Thu, 28 Mar 2013) | 3 lines Changed paths: M /io_lib/trunk/io_lib/Read.h M /io_lib/trunk/io_lib/bam.h M /io_lib/trunk/io_lib/cram.h M /io_lib/trunk/io_lib/cram_decode.h M /io_lib/trunk/io_lib/cram_encode.h M /io_lib/trunk/io_lib/cram_io.h M /io_lib/trunk/io_lib/sam_header.h M /io_lib/trunk/io_lib/scram.h Updated the comments to be doxygen compatible. It's only a start, but something to aim for. ------------------------------------------------------------------------ r3242 | jkbonfield | 2013-03-27 12:33:14 +0000 (Wed, 27 Mar 2013) | 6 lines Changed paths: M /io_lib/trunk/io_lib/bam.c M /io_lib/trunk/io_lib/bam.h M /io_lib/trunk/io_lib/cram_decode.c M /io_lib/trunk/io_lib/cram_encode.c M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/io_lib/os.h.in M /io_lib/trunk/progs/cram_dump.c Many bug fixes for big-endian systems. Also improved the handling of systems not supporting unaligned word access. It could be improved further via autoconf, but for now it's only enabled on x86 platforms via os.h. =============================================================================== 2013-03-21: RELEASE 1.13.0 (candidate) ------------------------------------------------------------------------ r3239 | jkbonfield | 2013-03-22 15:14:28 +0000 (Fri, 22 Mar 2013) | 2 lines Changed paths: M /io_lib/trunk/ChangeLog M /io_lib/trunk/README v1.13.0 text updates r3238 | jkbonfield | 2013-03-22 15:10:23 +0000 (Fri, 22 Mar 2013) | 11 lines Changed paths: M /io_lib/trunk/Makefile.am M /io_lib/trunk/io_lib/bam.c M /io_lib/trunk/io_lib/bam.h M /io_lib/trunk/io_lib/cram_decode.c Fixed bam behaviour when ALLOW_UAC is undefined. Also (untested) fixed some big-endian issues. Need to experiment with proper systems. Changed the bam structure to have explicit flag, bin, map_qual, cigar_len and flags instead of manually bit-packing into two int32s. This is similar speed (if not slower), but was changed to allow better compatibility with samtools API. Added cram_stats.h to Makefile.am ------------------------------------------------------------------------ r3237 | jkbonfield | 2013-03-22 15:07:05 +0000 (Fri, 22 Mar 2013) | 2 lines Changed paths: M /io_lib/trunk/progs/scramble.c Fixeda crash in file extension parsing. ------------------------------------------------------------------------ r3236 | jkbonfield | 2013-03-21 17:06:11 +0000 (Thu, 21 Mar 2013) | 2 lines Changed paths: M /io_lib/trunk/CHANGES M /io_lib/trunk/ChangeLog Refreshed change logs for 1.13.0. ------------------------------------------------------------------------ r3235 | jkbonfield | 2013-03-21 17:02:04 +0000 (Thu, 21 Mar 2013) | 3 lines Changed paths: M /io_lib/trunk/io_lib/cram_decode.c Removal of temporary alternative method for decoding subst matrix. (The java code is now in agreement with C code.) ------------------------------------------------------------------------ r3234 | jkbonfield | 2013-03-21 15:21:50 +0000 (Thu, 21 Mar 2013) | 3 lines Changed paths: M /io_lib/trunk/io_lib/scram.c M /io_lib/trunk/io_lib/scram.h M /io_lib/trunk/progs/scramble.c Fix handling of -! option (ignore md5) and also added scram_eof() so we can correct distinguish errors from EOF again. ------------------------------------------------------------------------ r3233 | jkbonfield | 2013-03-21 15:21:06 +0000 (Thu, 21 Mar 2013) | 2 lines Changed paths: M /io_lib/trunk/progs/scram_merge.c Remove minor memory leak on exit ------------------------------------------------------------------------ r3232 | jkbonfield | 2013-03-21 15:02:13 +0000 (Thu, 21 Mar 2013) | 8 lines Changed paths: M /io_lib/trunk/io_lib/cram_decode.c M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/io_lib/cram_structs.h M /io_lib/trunk/progs/scramble.c Fixed decoding of the substitution matrix. There are two variants of this too due to compatibility with the Java code which uses ordering ACGNT instead of ACGTN as documented in the spec. (The correct version is the one used.) Added an undocumented option to ignore MD5 checksum errors. Useful for debugging at times, but not to be recommended. ------------------------------------------------------------------------ r3230 | jkbonfield | 2013-03-21 10:26:14 +0000 (Thu, 21 Mar 2013) | 3 lines Changed paths: M /io_lib/trunk/io_lib/sam_header.c M /io_lib/trunk/io_lib/sam_header.h M /io_lib/trunk/progs/scram_merge.c Added a sam_header_dup() function and use it in scram_merge to avoid a memory deallocation bug caused by closing in[0]. ------------------------------------------------------------------------ r3229 | jkbonfield | 2013-03-20 17:34:23 +0000 (Wed, 20 Mar 2013) | 4 lines Changed paths: M /io_lib/trunk/configure.in Commented out the rpath removal hackery. It doesn't work well anyway as the file it's modifying is only there on the second call to ./configure. ------------------------------------------------------------------------ r3228 | jkbonfield | 2013-03-20 17:33:44 +0000 (Wed, 20 Mar 2013) | 3 lines Changed paths: M /io_lib/trunk/io_lib/cram_decode.c Now honour the AP_delta container header field to request no delta of positions. ------------------------------------------------------------------------ r3227 | jkbonfield | 2013-03-20 16:38:36 +0000 (Wed, 20 Mar 2013) | 3 lines Changed paths: M /io_lib/trunk/progs/scramble.c Fix for -r ref.fa. It only appeared to work for me as it was figuring out the ref seq of my test data by using the @SQ lines UR tag. ------------------------------------------------------------------------ r3226 | jkbonfield | 2013-03-20 16:24:30 +0000 (Wed, 20 Mar 2013) | 2 lines Changed paths: A /io_lib/trunk/tests/compare_sam.pl A /io_lib/trunk/tests/data/aux#aux.sam A /io_lib/trunk/tests/data/aux.fa A /io_lib/trunk/tests/data/aux.fa.fai A /io_lib/trunk/tests/data/c1#clip.sam A /io_lib/trunk/tests/data/c1#pad1.sam A /io_lib/trunk/tests/data/c1#pad2.sam A /io_lib/trunk/tests/data/c1#pad3.sam A /io_lib/trunk/tests/data/c1.fa A /io_lib/trunk/tests/data/c1.fa.fai A /io_lib/trunk/tests/data/ce#1.sam A /io_lib/trunk/tests/data/ce#2.sam A /io_lib/trunk/tests/data/ce#5.sam A /io_lib/trunk/tests/data/ce#5b.sam A /io_lib/trunk/tests/data/ce#large_seq.sam A /io_lib/trunk/tests/data/ce#unmap1.sam A /io_lib/trunk/tests/data/ce#unmap2.sam A /io_lib/trunk/tests/data/ce.fa A /io_lib/trunk/tests/data/ce.fa.fai A /io_lib/trunk/tests/data/xx#large_aux.sam A /io_lib/trunk/tests/data/xx#large_aux2.sam A /io_lib/trunk/tests/data/xx#pair.sam A /io_lib/trunk/tests/data/xx#rg.sam A /io_lib/trunk/tests/data/xx#triplet.sam A /io_lib/trunk/tests/data/xx.fa A /io_lib/trunk/tests/data/xx.fa.fai A /io_lib/trunk/tests/scram.test Added sam/bam/cram test script and data. ------------------------------------------------------------------------ r3225 | jkbonfield | 2013-03-20 16:22:53 +0000 (Wed, 20 Mar 2013) | 2 lines Changed paths: M /io_lib/trunk/CHANGES M /io_lib/trunk/ChangeLog M /io_lib/trunk/Makefile.am M /io_lib/trunk/README M /io_lib/trunk/configure.in M /io_lib/trunk/tests/Makefile.am Updates preparing for 1.13.0 release. ------------------------------------------------------------------------ r3224 | jkbonfield | 2013-03-20 14:03:19 +0000 (Wed, 20 Mar 2013) | 7 lines Changed paths: M /io_lib/trunk/io_lib/scram.c M /io_lib/trunk/progs/Makefile.am A /io_lib/trunk/progs/scram_merge.c Added a basic merge tool. At present it has very basic header compatibility checking and uses the first file header for the merged header. TODO: proper merging, renaming of @PG lines, updating of PG:Z: aux fields. ------------------------------------------------------------------------ r3223 | jkbonfield | 2013-03-20 13:40:13 +0000 (Wed, 20 Mar 2013) | 2 lines Changed paths: M /io_lib/trunk/progs/scramble.c Fixed usage statement. ------------------------------------------------------------------------ r3222 | jkbonfield | 2013-03-20 11:58:13 +0000 (Wed, 20 Mar 2013) | 2 lines Changed paths: M /io_lib/trunk/io_lib/bam.c M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/io_lib/sam_header.c Error handling when being given broken SAM headers. ------------------------------------------------------------------------ r3221 | jkbonfield | 2013-03-20 11:05:18 +0000 (Wed, 20 Mar 2013) | 3 lines Changed paths: M /io_lib/trunk/io_lib/bam.c Removal of volatile keyword (left in by accident during tests for previous fix). ------------------------------------------------------------------------ r3220 | jkbonfield | 2013-03-20 11:04:16 +0000 (Wed, 20 Mar 2013) | 3 lines Changed paths: M /io_lib/trunk/io_lib/bam.c Avoid triggering undefined behaviour (integer overflow) in append_int() when given "-2147483648". ------------------------------------------------------------------------ r3219 | jkbonfield | 2013-03-20 09:33:26 +0000 (Wed, 20 Mar 2013) | 3 lines Changed paths: M /io_lib/trunk/io_lib/cram_decode.c Bug fix when loading MF and CF. These are now encoding instead of encoding, which caused errors when optimising the code. ------------------------------------------------------------------------ r3218 | jkbonfield | 2013-03-20 09:31:22 +0000 (Wed, 20 Mar 2013) | 2 lines Changed paths: M /io_lib/trunk/io_lib/cram_io.c Sped up loading of reference. ------------------------------------------------------------------------ r3217 | jkbonfield | 2013-03-19 14:21:28 +0000 (Tue, 19 Mar 2013) | 2 lines Changed paths: M /io_lib/trunk/io_lib/sam_header.c Improved error handling. ------------------------------------------------------------------------ r3216 | jkbonfield | 2013-03-19 14:20:54 +0000 (Tue, 19 Mar 2013) | 3 lines Changed paths: M /io_lib/trunk/io_lib/bam.c Fix overzealous error checking. We legally have b->pos as -1 for unmapped data it seems. ------------------------------------------------------------------------ r3215 | jkbonfield | 2013-03-19 12:27:07 +0000 (Tue, 19 Mar 2013) | 5 lines Changed paths: A /io_lib/trunk/man/man1/scramble.1 M /io_lib/trunk/progs/scramble.c Added -R range:start-end option for sub-queries in CRAM (sam/bam not yet supported). Added a UNIX man-page for scramble. ------------------------------------------------------------------------ r3214 | jkbonfield | 2013-03-19 12:03:18 +0000 (Tue, 19 Mar 2013) | 3 lines Changed paths: M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/progs/scramble.c Fixes to auto-detection of file format and to permit cram files to be opened with "rc" and "wc" formats (changed to rb/wb before fopen). ------------------------------------------------------------------------ r3213 | jkbonfield | 2013-03-19 10:22:54 +0000 (Tue, 19 Mar 2013) | 7 lines Changed paths: M /io_lib/trunk/io_lib/cram_decode.c M /io_lib/trunk/io_lib/cram_encode.c Bug fix when encoding with ref_id -1 (unmapped data). Our error checking for unavailable reference was triggering incorrectly. Also no longer decode RI data series for slices with only one reference as this is how the Java 2.0 code is working. I'm not sure which spec interpretation makes the most sense yet. ------------------------------------------------------------------------ r3212 | jkbonfield | 2013-03-19 10:20:57 +0000 (Tue, 19 Mar 2013) | 2 lines Changed paths: M /io_lib/trunk/io_lib/bam.c Bug fix to the error checking in BAM. ------------------------------------------------------------------------ r3211 | jkbonfield | 2013-03-19 10:20:23 +0000 (Tue, 19 Mar 2013) | 2 lines Changed paths: M /io_lib/trunk/progs/cram_dump.c Also dump out the substitution matrix. ------------------------------------------------------------------------ r3209 | jkbonfield | 2013-03-18 17:42:49 +0000 (Mon, 18 Mar 2013) | 2 lines Changed paths: M /io_lib/trunk/io_lib/bam.c Protection against reading corrupted BAM files. ------------------------------------------------------------------------ r3208 | jkbonfield | 2013-03-18 17:42:08 +0000 (Mon, 18 Mar 2013) | 6 lines Changed paths: M /io_lib/trunk/io_lib/scram.c Fix for bam_next_seq returning 1, 0 or -1 instead of 0 or -1. We need to unify the calling semantics between sam, bam and cram here. Maybe 0 vs -1 and create an scram_eof() method to distinguish between -1 being failure vs eof? ------------------------------------------------------------------------ r3207 | jkbonfield | 2013-03-18 17:16:30 +0000 (Mon, 18 Mar 2013) | 7 lines Changed paths: M /io_lib/trunk/Makefile.am M /io_lib/trunk/io_lib/Makefile.am M /io_lib/trunk/io_lib/bam.c M /io_lib/trunk/io_lib/cram_decode.c M /io_lib/trunk/io_lib/cram_encode.c M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/io_lib/cram_structs.h A /io_lib/trunk/io_lib/scram.c A /io_lib/trunk/io_lib/scram.h M /io_lib/trunk/progs/Makefile.am M /io_lib/trunk/progs/cram_to_sam.c A /io_lib/trunk/progs/scramble.c Added scram_*() functions to act as an interface to sam/bam or cram I/O functions. Used these to implement scramble (aka sCRAMble), a replacement for sam_convert, sam_to_cram and cram_to sam. It can be used as an conversion from any of sam/bam/cram to sam/bam/cram. ------------------------------------------------------------------------ r3206 | jkbonfield | 2013-03-18 11:49:09 +0000 (Mon, 18 Mar 2013) | 19 lines Changed paths: M /io_lib/trunk/io_lib/cram_decode.c M /io_lib/trunk/io_lib/cram_encode.c M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/io_lib/cram_io.h M /io_lib/trunk/io_lib/cram_stats.c M /io_lib/trunk/io_lib/cram_structs.h M /io_lib/trunk/progs/cram_to_sam.c M /io_lib/trunk/progs/sam_to_cram.c Added a -X option to use embedded references. When encoding, this stores reference portions per slice. When decoding, this specifies the lack of a reference on the command line or header is no longer an error. It also uses the embedded reference in preference to any it finds via other means. (Note it is legal to have a file where some portions have embedded references and some do not.) Removed SM from the preservation map for 1.0 output. While legal in the 1.0 spec, the Java cramtools didn't implement it so it causes compatibility issues. Also fixed some more hard coded block content IDs, replacing them with #define symbols. Finally, added some more rigorous memory allocation error checking. ------------------------------------------------------------------------ r3205 | jkbonfield | 2013-03-15 17:35:35 +0000 (Fri, 15 Mar 2013) | 6 lines Changed paths: M /io_lib/trunk/Makefile.am M /io_lib/trunk/io_lib/Makefile.am M /io_lib/trunk/io_lib/sam_header.c M /io_lib/trunk/io_lib/sam_header.h A /io_lib/trunk/io_lib/string_alloc.c A /io_lib/trunk/io_lib/string_alloc.h M /io_lib/trunk/progs/cram_to_sam.c M /io_lib/trunk/progs/sam_to_cram.c Replaced the dodgy tag->idx field with tag->str pointer. The new strings are allocated using the string_pool_t structures in string_alloc.c (from Staden/src/Misc). TODO: Update the main Staden tree to accept the new versions in io_lib. ------------------------------------------------------------------------ r3204 | jkbonfield | 2013-03-15 16:53:36 +0000 (Fri, 15 Mar 2013) | 9 lines Changed paths: M /io_lib/trunk/io_lib/cram_decode.c M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/io_lib/cram_structs.h M /io_lib/trunk/io_lib/sam_header.c M /io_lib/trunk/io_lib/sam_header.h M /io_lib/trunk/progs/cram_to_sam.c M /io_lib/trunk/progs/sam_to_cram.c Added support for reading and writing the @SQ UR field to specify the reference location. This means that "-r ref.fa" is now genuingly an optional command line argument. TODO: fix the mess of sam_header.c string handling. It should use pooled strings (Misc/string_alloc_t from Staden Pkg) instead and store actual string pointers. This will be memory and cache efficient while still giving a more natural interface. ------------------------------------------------------------------------ r3203 | jkbonfield | 2013-03-15 12:09:38 +0000 (Fri, 15 Mar 2013) | 8 lines Changed paths: M /io_lib/trunk/progs/cram_to_sam.c M /io_lib/trunk/progs/sam_to_cram.c Updated the program argument syntax. The reference is now optional and specified via -r. This will allow for future work to be fitted in easier; allowing referenceless compression (eg unsorted data we may not want to bother doing reference based encoding) and allowing for auto-detection of reference based on SAM/CRAM headers. ------------------------------------------------------------------------ r3202 | jkbonfield | 2013-03-15 10:26:29 +0000 (Fri, 15 Mar 2013) | 5 lines Changed paths: M /io_lib/trunk/io_lib/cram_decode.c M /io_lib/trunk/io_lib/cram_decode.h M /io_lib/trunk/progs/cram_to_sam.c Removed the bam_alloc component of some functions and instead use (*bam)->alloc instead. This is now the same way that the bam.c code works, making it easier to have a unified interface to sam, bam and cram. ------------------------------------------------------------------------ r3201 | jkbonfield | 2013-03-14 17:49:12 +0000 (Thu, 14 Mar 2013) | 4 lines Changed paths: M /io_lib/trunk/io_lib/cram_decode.c M /io_lib/trunk/io_lib/cram_encode.c M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/io_lib/cram_structs.h M /io_lib/trunk/io_lib/sam_header.c M /io_lib/trunk/progs/cram_dump.c M /io_lib/trunk/progs/sam_convert.c Added SC data series for encoding soft clips in V2.0 spec. These currently go to another external block than the IN (insertion) series, but it remains to be seen if this is beneficial or not. ------------------------------------------------------------------------ r3200 | jkbonfield | 2013-03-14 15:26:57 +0000 (Thu, 14 Mar 2013) | 3 lines Changed paths: M /io_lib/trunk/io_lib/cram_decode.c M /io_lib/trunk/io_lib/cram_encode.c M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/io_lib/cram_structs.h M /io_lib/trunk/progs/cram_dump.c Added support for N, P and H cigar operators, using the new RS, PD and HC data series (CRAM-2.0). ------------------------------------------------------------------------ r3199 | jkbonfield | 2013-03-13 16:19:56 +0000 (Wed, 13 Mar 2013) | 2 lines Changed paths: M /io_lib/trunk/io_lib/bam.c Remove incorrect comment. ------------------------------------------------------------------------ r3198 | jkbonfield | 2013-03-13 15:31:42 +0000 (Wed, 13 Mar 2013) | 8 lines Changed paths: M /io_lib/trunk/Makefile.am M /io_lib/trunk/io_lib/Makefile.am M /io_lib/trunk/io_lib/bam.c M /io_lib/trunk/io_lib/bam.h M /io_lib/trunk/io_lib/cram.h M /io_lib/trunk/io_lib/cram_decode.c M /io_lib/trunk/io_lib/cram_decode.h M /io_lib/trunk/io_lib/cram_encode.c M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/io_lib/cram_io.h M /io_lib/trunk/io_lib/cram_structs.h A /io_lib/trunk/io_lib/sam_header.c A /io_lib/trunk/io_lib/sam_header.h M /io_lib/trunk/progs/cram_dump.c M /io_lib/trunk/progs/cram_to_sam.c M /io_lib/trunk/progs/sam_convert.c M /io_lib/trunk/progs/sam_to_cram.c Moved the SAM header manipulation out of the BAM structure and into its own struct (SAM_hdr). This means it can then be used from within CRAM without having to add a fake zero-record BAM file into the cram structs. Also expanded this greatly with the addition of full header parsing and manipulation, including tracking of multiple @PG chains. ------------------------------------------------------------------------ r3195 | jkbonfield | 2013-03-11 16:44:34 +0000 (Mon, 11 Mar 2013) | 2 lines Changed paths: M /io_lib/trunk/io_lib/cram_io.c Fixed bug reported by Vadim Zalunin in ltf8_get(). ------------------------------------------------------------------------ r3192 | jkbonfield | 2013-03-08 15:31:51 +0000 (Fri, 08 Mar 2013) | 3 lines Changed paths: M /io_lib/trunk/io_lib/cram_decode.c Fixed a memory leak in cram_get_seq() when specifying a range to decode over. ------------------------------------------------------------------------ r3191 | jkbonfield | 2013-03-08 15:24:11 +0000 (Fri, 08 Mar 2013) | 9 lines Changed paths: M /io_lib/trunk/io_lib/bam.h M /io_lib/trunk/io_lib/cram_decode.c M /io_lib/trunk/io_lib/cram_encode.c M /io_lib/trunk/io_lib/cram_index.c M /io_lib/trunk/io_lib/cram_index.h M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/io_lib/cram_io.h M /io_lib/trunk/io_lib/cram_structs.h M /io_lib/trunk/progs/cram_index.c M /io_lib/trunk/progs/cram_to_sam.c Updated the indexing to support 1.1 format. Improved cram_to_sam -r option for specifying a sequence range. This is now parsed as name:start-end rather than numericId:start-end. Changed CF and MF codecs to read/write integers instead of bytes for 1.1. ------------------------------------------------------------------------ r3185 | jkbonfield | 2013-03-07 11:11:24 +0000 (Thu, 07 Mar 2013) | 3 lines Changed paths: M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/io_lib/cram_structs.h Fixed bug in bam->cram flag conversion for 1.1 as the maximum flag size has gone from 0x200 to 0x800. (It's now 1:1 in the new spec.) ------------------------------------------------------------------------ r3184 | jkbonfield | 2013-03-06 16:22:37 +0000 (Wed, 06 Mar 2013) | 22 lines Changed paths: M /io_lib/trunk/Makefile.am M /io_lib/trunk/io_lib/Makefile.am M /io_lib/trunk/io_lib/cram_codecs.c M /io_lib/trunk/io_lib/cram_codecs.h M /io_lib/trunk/io_lib/cram_decode.c M /io_lib/trunk/io_lib/cram_decode.h M /io_lib/trunk/io_lib/cram_encode.c M /io_lib/trunk/io_lib/cram_encode.h M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/io_lib/cram_structs.h A /io_lib/trunk/io_lib/md5.c A /io_lib/trunk/io_lib/md5.h M /io_lib/trunk/io_lib/zfio.c M /io_lib/trunk/progs/cram_dump.c M /io_lib/trunk/progs/cram_index.c M /io_lib/trunk/progs/sam_to_cram.c Updated the CRAM support to the proposed version 1.1 (or is it 2.0?). I still need to implement unsorted data and the indexing format needs fixing too, although this has been dropped from the spec for now. New features: - MD5 strings per slice so we can quickly detect reference issues when doing random access. - SAM header is now in a block in its own container. - Record count and number of bases are stored in the container header, to allow quick "cram stats" analysis (tool not written yet). - Auxiliary fields (aka tags) are stored with TL/TD instead of TN/TC; a dictionary and line within that dict. - Updates for itf8 vs int32 in various places. - BAM flags have been swapped around to matych BAM. ------------------------------------------------------------------------ r3182 | jkbonfield | 2013-03-01 17:22:56 +0000 (Fri, 01 Mar 2013) | 6 lines Changed paths: M /io_lib/trunk/io_lib/cram_encode.c M /io_lib/trunk/io_lib/zfio.c M /io_lib/trunk/io_lib/zfio.h M /io_lib/trunk/progs/Makefile.am A /io_lib/trunk/progs/cram_index.c Extended zfio.[ch] to handle writing to gzipped streams. Added a cram_index program to build indices. This probably ought to be an option during cram creation too as it's very fast (~0.4 sec vs 22 sec from the comparable Java tool). ------------------------------------------------------------------------ r3181 | jkbonfield | 2013-03-01 16:40:21 +0000 (Fri, 01 Mar 2013) | 2 lines Changed paths: M /io_lib/trunk/progs/sam_to_cram.c Error checking for reference loading. ------------------------------------------------------------------------ r3180 | jkbonfield | 2013-03-01 12:47:41 +0000 (Fri, 01 Mar 2013) | 5 lines Changed paths: M /io_lib/trunk/Makefile.am M /io_lib/trunk/io_lib/Makefile.am M /io_lib/trunk/io_lib/cram.h M /io_lib/trunk/io_lib/cram_decode.c M /io_lib/trunk/io_lib/cram_encode.c A /io_lib/trunk/io_lib/cram_index.c A /io_lib/trunk/io_lib/cram_index.h M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/io_lib/cram_io.h M /io_lib/trunk/io_lib/cram_structs.h A /io_lib/trunk/io_lib/zfio.c A /io_lib/trunk/io_lib/zfio.h M /io_lib/trunk/progs/cram_dump.c M /io_lib/trunk/progs/cram_to_sam.c Added .crai indexing (read only atm). In the process of doing this I also found and fixed several bugs in computing the slice offsets and container sizes. ------------------------------------------------------------------------ r3179 | jkbonfield | 2013-03-01 09:36:49 +0000 (Fri, 01 Mar 2013) | 4 lines Changed paths: M /io_lib/trunk/progs/cram_dump.c Updated cram_dump (still a ghastly debugging hack) to work with the change to RN and tag value codecs, which now use cram_blocks instead of char[] arrays. ------------------------------------------------------------------------ r3178 | jkbonfield | 2013-02-28 12:46:21 +0000 (Thu, 28 Feb 2013) | 7 lines Changed paths: M /io_lib/trunk/io_lib/cram_codecs.c M /io_lib/trunk/io_lib/cram_codecs.h M /io_lib/trunk/io_lib/cram_decode.c M /io_lib/trunk/io_lib/cram_encode.c M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/io_lib/cram_io.h M /io_lib/trunk/io_lib/cram_structs.h M /io_lib/trunk/progs/sam_to_cram.c Removed fixed sized buffers: - cram_encode_compression_header() now writes to cram_blocks. - codecs ->store method now write to cram_blocks. Added -s and -S options to sam_to_cram to allow the user to change the number of sequences per slice and the number of slices per container. ------------------------------------------------------------------------ r3177 | jkbonfield | 2013-02-28 10:29:27 +0000 (Thu, 28 Feb 2013) | 3 lines Changed paths: M /io_lib/trunk/io_lib/cram_codecs.c M /io_lib/trunk/io_lib/cram_decode.c M /io_lib/trunk/io_lib/cram_encode.c Removal of now-fixed FIXME comments that we forgot to remove at the time of fixing. ------------------------------------------------------------------------ r3176 | jkbonfield | 2013-02-28 09:55:05 +0000 (Thu, 28 Feb 2013) | 4 lines Changed paths: M /io_lib/trunk/io_lib/bam.c Fixed a couple BAM bugs when handling zero-length BGZF blocks. We no longer generate them by accident when the first sequence > 64k. We also no longer exit early, considering them to be EOF. ------------------------------------------------------------------------ r3175 | jkbonfield | 2013-02-27 21:35:39 +0000 (Wed, 27 Feb 2013) | 4 lines Changed paths: M /io_lib/trunk/io_lib/cram_encode.c Fixed a bug in cram_put_bam_seq() when reallocing cigar strings that caused it to do if the first SAM cigar string in a slice had over 1024 elements. ------------------------------------------------------------------------ r3174 | jkbonfield | 2013-02-27 16:11:30 +0000 (Wed, 27 Feb 2013) | 9 lines Changed paths: M /io_lib/trunk/io_lib/cram_codecs.c M /io_lib/trunk/io_lib/cram_decode.c M /io_lib/trunk/io_lib/cram_structs.h Added a E_BYTE_ARRAY_BLOCK decoder type for external codecs to export directly to blocks instead of character strings. This is only used in objects expecting variable length data - ie auxiliary tags and read names. At present it's only implemented for EXTERNAL and BYTE_ARRAY_STOP codecs (and implicitly BYTE_ARRAY_LEN if it layers on top of either of those). ------------------------------------------------------------------------ r3173 | jkbonfield | 2013-02-27 15:17:00 +0000 (Wed, 27 Feb 2013) | 3 lines Changed paths: M /io_lib/trunk/io_lib/bam.c Bug fix to allow bam_put_seq() to work on bam entries containing auxiliary Z and H coded tags with lengths > 64Kb. ------------------------------------------------------------------------ r3172 | jkbonfield | 2013-02-27 12:39:14 +0000 (Wed, 27 Feb 2013) | 3 lines Changed paths: M /io_lib/trunk/io_lib/cram_codecs.c Fixed an issue with cram_huffman_encode_char assuming symbols are signed. We cast into unsigned before comparing against the symbol table. ------------------------------------------------------------------------ r3171 | jkbonfield | 2013-02-27 12:12:56 +0000 (Wed, 27 Feb 2013) | 12 lines Changed paths: M /io_lib/trunk/Makefile.am M /io_lib/trunk/io_lib/Makefile.am M /io_lib/trunk/io_lib/cram.h A /io_lib/trunk/io_lib/cram_codecs.c (from /io_lib/trunk/io_lib/cram_encodings.c:3170) A /io_lib/trunk/io_lib/cram_codecs.h (from /io_lib/trunk/io_lib/cram_encodings.h:3168) A /io_lib/trunk/io_lib/cram_decode.c (from /io_lib/trunk/io_lib/cram_read.c:3170) A /io_lib/trunk/io_lib/cram_decode.h A /io_lib/trunk/io_lib/cram_encode.c (from /io_lib/trunk/io_lib/cram_write.c:3170) A /io_lib/trunk/io_lib/cram_encode.h D /io_lib/trunk/io_lib/cram_encodings.c D /io_lib/trunk/io_lib/cram_encodings.h M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/io_lib/cram_io.h D /io_lib/trunk/io_lib/cram_read.c M /io_lib/trunk/io_lib/cram_stats.c M /io_lib/trunk/io_lib/cram_stats.h M /io_lib/trunk/io_lib/cram_structs.h D /io_lib/trunk/io_lib/cram_write.c M /io_lib/trunk/progs/sam_to_cram.c Another major reorganisation of the cram code layout. Hopefully the final one. We now have: - cram_io.c for generic opening, closing, reading and writing. - cram_(en/de)code.c for in-memory packing and unpacking of CRAM data structures along with sequence iterators (input and output). - cram_codecs.c for the encoders: huffman, beta, gamma, external etc. ------------------------------------------------------------------------ r3170 | jkbonfield | 2013-02-26 17:46:38 +0000 (Tue, 26 Feb 2013) | 4 lines Changed paths: M /io_lib/trunk/io_lib/Makefile.am M /io_lib/trunk/io_lib/cram.h M /io_lib/trunk/io_lib/cram_encodings.c R /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/io_lib/cram_io.h A /io_lib/trunk/io_lib/cram_read.c (from /io_lib/trunk/io_lib/cram_io.c:3169) A /io_lib/trunk/io_lib/cram_stats.c A /io_lib/trunk/io_lib/cram_stats.h M /io_lib/trunk/io_lib/cram_structs.h A /io_lib/trunk/io_lib/cram_write.c M /io_lib/trunk/io_lib/dstring.c M /io_lib/trunk/io_lib/dstring.h M /io_lib/trunk/progs/cram_dump.c M /io_lib/trunk/progs/cram_to_sam.c M /io_lib/trunk/progs/sam_to_cram.c Code reorganisation. cram_io.c is now split into cram_read.c, cram_write.c and cram_stats.c. I need to shuffle around the content still and to fix the header files more. ------------------------------------------------------------------------ r3169 | jkbonfield | 2013-02-26 14:46:54 +0000 (Tue, 26 Feb 2013) | 4 lines Changed paths: M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/io_lib/cram_structs.h M /io_lib/trunk/progs/cram_dump.c Made TN_external #define output TN data to a separate block. As most reads have the same series of tags, TN in a separate block gives better compression ratios. ------------------------------------------------------------------------ r3168 | jkbonfield | 2013-02-26 10:21:44 +0000 (Tue, 26 Feb 2013) | 3 lines Changed paths: M /io_lib/trunk/io_lib/cram_io.c Add zlib level 1 compression to the CORE block. It's minimal, but sufficient and fast. ------------------------------------------------------------------------ r3167 | jkbonfield | 2013-02-25 17:31:47 +0000 (Mon, 25 Feb 2013) | 4 lines Changed paths: M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/io_lib/cram_io.h M /io_lib/trunk/io_lib/cram_structs.h M /io_lib/trunk/progs/cram_to_sam.c M /io_lib/trunk/progs/sam_to_cram.c Improved command line parsing in sam_to_cram. Moved a lot of debugging output into a verbose-mode (option -v). ------------------------------------------------------------------------ r3166 | jkbonfield | 2013-02-25 16:59:29 +0000 (Mon, 25 Feb 2013) | 2 lines Changed paths: M /io_lib/trunk/io_lib/cram_io.c Removal of spam about TM/TV tag when decoding java output. ------------------------------------------------------------------------ r3165 | jkbonfield | 2013-02-25 12:12:30 +0000 (Mon, 25 Feb 2013) | 9 lines Changed paths: M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/io_lib/cram_structs.h Fixed a memory leak in the new cram_block alternatives to dstring_t. Corrected the storage of ambiguity bases. When encoding N vs R we were using a DS value of 4 (outside the spec). We now generate 'B' code features and store the base/qual verbatim. This meant reordering things a bit, but I've verified I can decode it with this C code and with the Java code. ------------------------------------------------------------------------ r3164 | jkbonfield | 2013-02-25 12:10:41 +0000 (Mon, 25 Feb 2013) | 2 lines Changed paths: M /io_lib/trunk/progs/sam_to_cram.c Fixed error reporting when the last block fails to write (in cram_close). ------------------------------------------------------------------------ r3163 | jkbonfield | 2013-02-22 14:36:03 +0000 (Fri, 22 Feb 2013) | 8 lines Changed paths: M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/io_lib/cram_structs.h Correctly handle ambiguity codes in the reference (eg R) - we treat them as N for base codes, but compare against the upper case version when creating features so we can match against them. Also handle ambiguity codes in sequence (where they mismatch the reference). In this case they're translated to N as currently we have no way to store a substitution to anything other than ACGTN. ------------------------------------------------------------------------ r3162 | jkbonfield | 2013-02-22 12:25:10 +0000 (Fri, 22 Feb 2013) | 8 lines Changed paths: M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/io_lib/cram_structs.h Added support for encoding auxiliary tags using the B type. I experimented initially using BYTE_ARRAY_LEN with huffman length encoding, keeping a aux-B-length stats array, but decided it's easier to just use external for the length too. We may need to revisit this, but it needs the tag encoding moving from the bam loop to the actual slice encode loop. ------------------------------------------------------------------------ r3161 | jkbonfield | 2013-02-21 17:22:10 +0000 (Thu, 21 Feb 2013) | 7 lines Changed paths: M /io_lib/trunk/io_lib/cram_io.c Improvements to template length and flag calculations when dealing with reads that have more than 2 per template. This is not and can never be 100% perfect due to the nature of slices not spanning reference sequences, but it's a pretty good effort and more correct than samtools fixmate does right now. ------------------------------------------------------------------------ r3160 | jkbonfield | 2013-02-21 16:14:21 +0000 (Thu, 21 Feb 2013) | 2 lines Changed paths: M /io_lib/trunk/progs/cram_dump.c Improved output of BF field: now converted to a hex SAM code. ------------------------------------------------------------------------ r3159 | jkbonfield | 2013-02-21 12:19:14 +0000 (Thu, 21 Feb 2013) | 7 lines Changed paths: M /io_lib/trunk/io_lib/cram_io.c Inproved read pairing when faced with more than 2 sequences. We only pair reads that claim to be mapped with BAM_FPAIRED (irrespective of whether it makes sense - it conserves the bam flags better) and we also remove the pair once resolved. I'm not convinced this is correct for genuine triplets though. ------------------------------------------------------------------------ r3158 | jkbonfield | 2013-02-21 10:12:14 +0000 (Thu, 21 Feb 2013) | 4 lines Changed paths: M /io_lib/trunk/io_lib/cram_io.c Initialise cr->mate_ref_id for unmapped data. It was being causing uninitialised memory accesses when pairs of unmapped reads were present in the same slice. ------------------------------------------------------------------------ r3156 | jkbonfield | 2013-02-20 17:20:10 +0000 (Wed, 20 Feb 2013) | 2 lines Changed paths: M /io_lib/trunk/io_lib/cram_io.c Fixed cram_get_bam_seq() bug caused by c->curr_rec being incremented already. ------------------------------------------------------------------------ r3155 | jkbonfield | 2013-02-20 16:34:26 +0000 (Wed, 20 Feb 2013) | 8 lines Changed paths: M /io_lib/trunk/io_lib/cram_encodings.c M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/io_lib/cram_io.h M /io_lib/trunk/io_lib/cram_structs.h Replaced the dstring_t uses with cram_block structs. The old code is still present currently for testing and easy benchmarking - see the DS_SEQ (undef) macro in cram_structs.h. This simplifies the dependencies. Fixed an issue with cram_get_ref loading the sequence too often for sam_to_cram, dramatically slowing down some use cases. ------------------------------------------------------------------------ r3154 | jkbonfield | 2013-02-19 17:01:09 +0000 (Tue, 19 Feb 2013) | 7 lines Changed paths: M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/io_lib/cram_structs.h Tidy up of cram interface; we now have accessor functions for members of cram_record and it also contains a slice pointer so we only need the cram_record as a sole parameter. This means we have access functions with a one to one correlation to the Samtools bam ones. ------------------------------------------------------------------------ r3153 | jkbonfield | 2013-02-19 16:18:18 +0000 (Tue, 19 Feb 2013) | 12 lines Changed paths: M /io_lib/trunk/io_lib/bam.c M /io_lib/trunk/io_lib/bam.h M /io_lib/trunk/io_lib/cram_encodings.c M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/io_lib/cram_io.h M /io_lib/trunk/io_lib/dstring.c M /io_lib/trunk/io_lib/dstring.h M /io_lib/trunk/progs/cram_to_sam.c M /io_lib/trunk/progs/sam_to_cram.c Improved handling of references - we no longer need to explicitly create a bam_file_t for refs2id to run on, instead allowing cram_load_reference() to use the fd->SAM_hdr struct instead. Added cram reading iterators, in cram record and bam record variants. Fixed a (harmless) bug in bam.c where it reallocated too often. Small speed optimisations to dstring, via DSTRING_LEN macro and reimplementing dstring_nappend with memcpy instead of using the 2 memmove generalised version in dstring_ninsert. ------------------------------------------------------------------------ r3151 | jkbonfield | 2013-02-18 12:01:22 +0000 (Mon, 18 Feb 2013) | 12 lines Changed paths: M /io_lib/trunk/io_lib/cram_encodings.c M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/io_lib/cram_structs.h M /io_lib/trunk/progs/cram_dump.c Replaced many HashTable lookups with a noddy in-situ hash using the cram_map structs themselves to form linked lists for the hash buckets. This is a substantial speed up of auxiliary tag handling. (Really it demonstrates a weakness with our hash library being too slow.) Tidy up of the cram_record to be in the same order as used, to improve cache access. Initialise mapping quality for unmapped reads to prevent uninitialised accesses. ------------------------------------------------------------------------ r3150 | jkbonfield | 2013-02-14 17:49:21 +0000 (Thu, 14 Feb 2013) | 9 lines Changed paths: M /io_lib/trunk/io_lib/cram_encodings.c M /io_lib/trunk/io_lib/cram_io.c Bug fix for Java cram output where the slice headers have incorrect data. Revert this once the Java fix is in place. Optimised itf8_get function, both as a function and as a horrific macro. Sped up external decoding by creating two variants for int vs byte(s). May need a third for byte vs byte array? ------------------------------------------------------------------------ r3148 | jkbonfield | 2013-02-14 14:34:23 +0000 (Thu, 14 Feb 2013) | 11 lines Changed paths: M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/io_lib/cram_io.h M /io_lib/trunk/io_lib/cram_structs.h M /io_lib/trunk/progs/cram_to_sam.c Added code to output MD and NM tags. Tidied up the TN_AS_EXT vs NS_external macros for compilation options. Also experimented (but not enabled) using BA as external - for storing base calls. It doesn't seem to gain us anything. Merged cram_set_prefix with the new decode_md parameter into a more unified cram_set_option() function. Tidy up command line parsing for cram_to_sam. ------------------------------------------------------------------------ r3145 | jkbonfield | 2013-02-13 16:08:30 +0000 (Wed, 13 Feb 2013) | 2 lines Changed paths: M /io_lib/trunk/progs/cram_dump.c M /io_lib/trunk/progs/cram_to_sam.c M /io_lib/trunk/progs/sam_to_cram.c Fixed large file support for 32-bit systems. ------------------------------------------------------------------------ r3144 | jkbonfield | 2013-02-13 14:39:56 +0000 (Wed, 13 Feb 2013) | 8 lines Changed paths: M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/io_lib/cram_structs.h M /io_lib/trunk/progs/sam_to_cram.c Added -0 to -9 level control. Block compression now has the option to try two different compression methods and picks whichever is best. It tracks which worked best previously in a cram_metrics struct and only periodically rechecks to ensure the best method stays the best method. At present this is only employed for the quality block, comparing Z_FILTERED vs Z_RLE. ------------------------------------------------------------------------ r3143 | jkbonfield | 2013-02-13 14:38:06 +0000 (Wed, 13 Feb 2013) | 4 lines Changed paths: M /io_lib/trunk/progs/cram_dump.c Added a -v(erbose) option. By default it no longer dumps everything. Fixed tag handling, specifically BYTE_ARRAY_LEN for tag values. ------------------------------------------------------------------------ r3142 | jkbonfield | 2013-02-12 14:55:42 +0000 (Tue, 12 Feb 2013) | 13 lines Changed paths: M /io_lib/trunk/io_lib/cram_io.c Fixed bam<->cram flag conversion to cope with optical duplicates and qc fails. Bug fix when handling unmapped sequences having mapping qualities and cigar strings. Also no longer clear mate reference ID if the mate is unmapped - it may be stored adjacent to this sequence and have "=" for the ref name. Mapped + unmapped pairs are no used together to identify template length. Removal of some debugging output. ------------------------------------------------------------------------ r3141 | jkbonfield | 2013-02-12 12:11:21 +0000 (Tue, 12 Feb 2013) | 7 lines Changed paths: M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/io_lib/cram_io.h M /io_lib/trunk/io_lib/cram_structs.h M /io_lib/trunk/progs/cram_to_sam.c M /io_lib/trunk/progs/sam_to_cram.c Rewrote the reference handling code to use .fai indices and to only load the portions of the reference needed during encoding and decoding. This should reduce the maximum memory required on large references substantially. ------------------------------------------------------------------------ r3140 | jkbonfield | 2013-02-11 14:20:37 +0000 (Mon, 11 Feb 2013) | 6 lines Changed paths: M /io_lib/trunk/io_lib/cram_encodings.c M /io_lib/trunk/io_lib/cram_encodings.h M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/io_lib/cram_io.h M /io_lib/trunk/io_lib/cram_structs.h M /io_lib/trunk/progs/cram_dump.c M /io_lib/trunk/progs/sam_to_cram.c Merged block_t parameters into cram_block and rewrote the bit I/O code to accept cram_blocks instead. This avoids one level of blocking and code confusion. Fixed some memory leaks and uninitialised accesses (valgrind). ------------------------------------------------------------------------ r3139 | jkbonfield | 2013-02-11 12:10:56 +0000 (Mon, 11 Feb 2013) | 6 lines Changed paths: M /io_lib/trunk/io_lib/cram_encodings.c M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/io_lib/cram_io.h M /io_lib/trunk/io_lib/dstring.c M /io_lib/trunk/io_lib/dstring.h Moved the block bit I/O from cram_io to cram_encodings as it's exclusively used in the latter file. Then made these functions static, to avoid any namespace pollution and to improve likelihood of compiler inlining. ------------------------------------------------------------------------ r3138 | jkbonfield | 2013-02-11 11:48:09 +0000 (Mon, 11 Feb 2013) | 2 lines Changed paths: M /io_lib/trunk/io_lib/cram_io.c More code tidyups. ------------------------------------------------------------------------ r3137 | jkbonfield | 2013-02-11 11:31:08 +0000 (Mon, 11 Feb 2013) | 4 lines Changed paths: M /io_lib/trunk/io_lib/cram_encodings.c M /io_lib/trunk/io_lib/cram_encodings.h M /io_lib/trunk/io_lib/cram_io.c Minor speed up to huffman decoding. Partial tidyup of cram encoding code (it needs a lot more still). ------------------------------------------------------------------------ r3136 | jkbonfield | 2013-02-08 17:39:12 +0000 (Fri, 08 Feb 2013) | 4 lines Changed paths: M /io_lib/trunk/io_lib/cram_encodings.c M /io_lib/trunk/io_lib/cram_encodings.h M /io_lib/trunk/io_lib/cram_io.c Speed improvements to huffman encoder and decoder. Switched to using an external block for NP and TS. ------------------------------------------------------------------------ r3134 | jkbonfield | 2013-02-07 17:47:14 +0000 (Thu, 07 Feb 2013) | 3 lines Changed paths: M /io_lib/trunk/io_lib/cram_io.c Fixed a template size bug where read-pairs exist and are aligned to the exact same position. The 2nd end wasn't getting a -ve template length. ------------------------------------------------------------------------ r3133 | jkbonfield | 2013-02-07 17:28:58 +0000 (Thu, 07 Feb 2013) | 13 lines Changed paths: M /io_lib/trunk/io_lib/cram_encodings.c M /io_lib/trunk/io_lib/cram_encodings.h M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/progs/cram_dump.c 1) Corrected a lot of the data-types used for codecs, BYTE vs INT etc. Also implemented BYTE and INT specific variants of the huffman codecs. TODO: implement BYTE versions of the various integer codecs, or at very least check and fail when we're reading a byte and only have integer versions available. 2) Corrected handling of unmapped data. It now properly gets its own slice where it should do. 3) Fixed flag and mate-flag corrections for mate-downstream environments. ------------------------------------------------------------------------ r3132 | jkbonfield | 2013-02-07 12:18:47 +0000 (Thu, 07 Feb 2013) | 21 lines Changed paths: M /io_lib/trunk/io_lib/bam.c M /io_lib/trunk/io_lib/bam.h M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/io_lib/cram_structs.h M /io_lib/trunk/progs/cram_dump.c M /io_lib/trunk/progs/cram_to_sam.c Fixed the itf8 code again. The previous decoder change was incorrect as the encoder was at fault, not the decoder. This now seems to work correctly with -ve numbers and is interchangeable with the Java implementation. Replaced the cram_SAM_hdr structure with a complete bam_file_t structure (via typedef). This allows reuse of the bam header parsing code. It needs fixing properly though to make a common sub-struct used by both file formats. Added a (currently hacky!) bam_add_rg() function. Note it expects the header string to have been allocated large enough already, as realloc would break the pointers used in the rg_hash unless we redefine it to be volatile keys. The entire header implementation needs a big overhaul. Implemented the UNKNOWN read-group for files missing a read-group. The code can store read-group -1 perfectly fine, but this causes Java to get an array underflow so it is currently mandatory to generate an UNKNOWN read-group. ------------------------------------------------------------------------ r3131 | jkbonfield | 2013-02-06 18:18:33 +0000 (Wed, 06 Feb 2013) | 2 lines Changed paths: M /io_lib/trunk/io_lib/cram_io.c Fixed a bug in itf8_put() for 5 byte values: mostly negatives. ------------------------------------------------------------------------ r3130 | jkbonfield | 2013-02-06 17:25:34 +0000 (Wed, 06 Feb 2013) | 5 lines Changed paths: M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/io_lib/cram_structs.h Fixed incorrect handling of mate_flags. Added support for hashing by read names to detect read-pairing and to set the various DETACHED vs DOWNSTREAM bits in cram_flags. ------------------------------------------------------------------------ r3129 | jkbonfield | 2013-02-06 17:24:30 +0000 (Wed, 06 Feb 2013) | 5 lines Changed paths: M /io_lib/trunk/io_lib/cram_encodings.c Removed fixed sized buffer for huffman table construction. We still need a way of handling the caller knowing this data. Maybe we should be writing to a dynamic block_t instead of a char*. ------------------------------------------------------------------------ r3128 | jkbonfield | 2013-02-05 16:37:38 +0000 (Tue, 05 Feb 2013) | 3 lines Changed paths: M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/io_lib/ctfCompress.c M /io_lib/trunk/progs/cram_dump.c M /io_lib/trunk/progs/hash_list.c M /io_lib/trunk/progs/srf_filter.c More minor code tweaks, to silence some (not all) of the Intel Compiler warnings. ------------------------------------------------------------------------ r3127 | jkbonfield | 2013-02-05 15:23:40 +0000 (Tue, 05 Feb 2013) | 2 lines Changed paths: M /io_lib/trunk/io_lib/bam.c M /io_lib/trunk/io_lib/cram_encodings.c M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/io_lib/cram_io.h M /io_lib/trunk/io_lib/dstring.c M /io_lib/trunk/io_lib/expFileIO.c M /io_lib/trunk/io_lib/hash_table.c M /io_lib/trunk/io_lib/jenkins_lookup3.c M /io_lib/trunk/io_lib/mFILE.c M /io_lib/trunk/io_lib/open_trace_file.c M /io_lib/trunk/io_lib/os.h.in M /io_lib/trunk/io_lib/pooled_alloc.c M /io_lib/trunk/io_lib/scf.h M /io_lib/trunk/io_lib/seqIOABI.c M /io_lib/trunk/io_lib/seqIOPlain.c M /io_lib/trunk/io_lib/srf.c M /io_lib/trunk/io_lib/translate.c M /io_lib/trunk/io_lib/vlen.c M /io_lib/trunk/io_lib/ztr.c M /io_lib/trunk/io_lib/ztr_translate.c M /io_lib/trunk/progs/append_sff.c M /io_lib/trunk/progs/extract_fastq.c M /io_lib/trunk/progs/extract_qual.c M /io_lib/trunk/progs/extract_seq.c M /io_lib/trunk/progs/hash_extract.c M /io_lib/trunk/progs/hash_sff.c M /io_lib/trunk/progs/hash_tar.c M /io_lib/trunk/progs/index_tar.c M /io_lib/trunk/progs/sam_convert.c M /io_lib/trunk/progs/sam_to_cram.c M /io_lib/trunk/progs/srf2fastq.c M /io_lib/trunk/progs/srf_dump_all.c M /io_lib/trunk/progs/srf_filter.c M /io_lib/trunk/progs/srf_index_hash.c M /io_lib/trunk/progs/srf_info.c M /io_lib/trunk/progs/srf_list.c Code tidyup to allow it to build with gcc -Wall ------------------------------------------------------------------------ r3126 | jkbonfield | 2013-02-05 11:33:27 +0000 (Tue, 05 Feb 2013) | 2 lines Changed paths: M /io_lib/trunk/io_lib/bam.c Fixed minor memory leak in bam_close. ------------------------------------------------------------------------ r3125 | jkbonfield | 2013-02-05 11:30:07 +0000 (Tue, 05 Feb 2013) | 5 lines Changed paths: M /io_lib/trunk/io_lib/cram_encodings.c M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/io_lib/cram_structs.h Made the TN codec method optional via #define; either external of huffman. Minor tidyups of debugging output. ------------------------------------------------------------------------ r3124 | jkbonfield | 2013-02-04 16:51:28 +0000 (Mon, 04 Feb 2013) | 4 lines Changed paths: M /io_lib/trunk/io_lib/cram_io.c Fix zlib_mem_deflate() output buffer size as it was computed with zlib encoding rather than gzip encoding. Compression of 0-sized data therefore ran out of storage causing a deflate whinge. ------------------------------------------------------------------------ r3123 | jkbonfield | 2013-02-04 15:17:39 +0000 (Mon, 04 Feb 2013) | 6 lines Changed paths: M /io_lib/trunk/io_lib/cram_encodings.c M /io_lib/trunk/io_lib/cram_encodings.h M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/io_lib/cram_structs.h M /io_lib/trunk/progs/cram_dump.c Added auxiliary tags to CRAM writer. Added quality strings to CRAM writer. CRAM encoder now uses optimised zlib parameters for speed. ------------------------------------------------------------------------ r3122 | jkbonfield | 2013-02-01 17:30:42 +0000 (Fri, 01 Feb 2013) | 9 lines Changed paths: M /io_lib/trunk/io_lib/cram_encodings.c M /io_lib/trunk/io_lib/cram_encodings.h M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/io_lib/cram_io.h M /io_lib/trunk/io_lib/cram_structs.h First draft of a working CRAM writer. It needs a lot of work still, but I've managed to encode and decode a file. TODO: * No support for quality strings or auxiliary fields yet. * No options for turning on or off read names * Minimal use of codecs - all external, byte_array_stop and huffman at present. This leads to larger than expected files. ------------------------------------------------------------------------ r3121 | jkbonfield | 2013-02-01 17:28:20 +0000 (Fri, 01 Feb 2013) | 5 lines Changed paths: M /io_lib/trunk/io_lib/hash_table.c M /io_lib/trunk/io_lib/hash_table.h Added HASH_INT_KEYS as an option. This allows the keys to be integers directly rather than pointers to an integer, avoiding memory allocation issues. ------------------------------------------------------------------------ r3120 | jkbonfield | 2013-02-01 17:26:51 +0000 (Fri, 01 Feb 2013) | 2 lines Changed paths: M /io_lib/trunk/progs/sam_to_cram.c Improved error reporting. ------------------------------------------------------------------------ r3119 | jkbonfield | 2013-02-01 17:26:24 +0000 (Fri, 01 Feb 2013) | 2 lines Changed paths: M /io_lib/trunk/progs/cram_dump.c Minor update to report slice content type. ------------------------------------------------------------------------ r3115 | jkbonfield | 2013-01-24 15:26:03 +0000 (Thu, 24 Jan 2013) | 8 lines Changed paths: M /io_lib/trunk/io_lib/cram_io.c Fixed two bugs in cram_to_sam: 1) Loading reference sequences failed on fasta files containing words after the >identifier line. 2) We were using uninitialised data for the insert size field on unmapped reads. It now comes out as 0. ------------------------------------------------------------------------ r3114 | jkbonfield | 2013-01-24 14:51:08 +0000 (Thu, 24 Jan 2013) | 9 lines Changed paths: M /io_lib/trunk/io_lib/bam.c Removed a huge memory leak in reading SAM caused by a bug in the thread-safe modifications. TO FIX STILL: Backed out the freeing of data in bam_parse_header due to attempting to reuse it later. I'm not sure of the cause yet and these data structures need a good reorganisation. For now we'll accept a minor leakage of RG fields as a tradeoff for working. ------------------------------------------------------------------------ r3113 | jkbonfield | 2013-01-21 17:45:57 +0000 (Mon, 21 Jan 2013) | 8 lines Changed paths: M /io_lib/trunk/io_lib/cram_encodings.c M /io_lib/trunk/io_lib/cram_io.c M /io_lib/trunk/io_lib/cram_structs.h M /io_lib/trunk/progs/sam_to_cram.c Added a block_by_id[] array for external and byte_array_stop codecs to use as a quick lookup to find the appropriate block, avoiding a linear search. On-going improvements to sam_to_cram. We now generate and store features - differences to the reference, indels, softclipped bases. As yet we still do not write anything. ------------------------------------------------------------------------ r3112 | jkbonfield | 2013-01-21 17:43:42 +0000 (Mon, 21 Jan 2013) | 4 lines Changed paths: M /io_lib/trunk/io_lib/bam.c Remove memory leak caused by potentially filling out b->ref in two places. This code needs further improvements to allow the reference parsing code to be shared by CRAM and avoid duplication. ------------------------------------------------------------------------ r3111 | jkbonfield | 2013-01-21 15:13:37 +0000 (Mon, 21 Jan 2013) | 3 lines Changed paths: M /io_lib/trunk/io_lib/cram_encodings.c M /io_lib/trunk/io_lib/cram_encodings.h Added BYTE_ARRAY_STOP codec as this is used in new Java CRAM implementations for soft-clips and insertions. ------------------------------------------------------------------------ r3110 | jkbonfield | 2013-01-18 17:27:18 +0000 (Fri, 18 Jan 2013) | 2 lines Changed paths: M /io_lib/trunk/io_lib/bam.c bam_open() can now auto-detect between SAM and BAM format. ------------------------------------------------------------------------ r3109 | jkbonfield | 2013-01-18 16:34:02 +0000 (Fri, 18 Jan 2013) | 3 lines Changed paths: M /io_lib/trunk/io_lib/cram_io.c Initialised the new c->slices field to NULL when reading containers. This was causing cram_to_sam to fail. ------------------------------------------------------------------------ r3108 | jkbonfield | 2013-01-18 10:19:47 +0000 (Fri, 18 Jan 2013) | 3 lines Changed paths: M /io_lib/trunk/configure.in Replaced AM_CONFIG_HEADER with AC_CONFIG_HEADERS to fix problems when building using MacPorts (https://sourceforge.net/projects/staden/forums/forum/347718/topic/6645165) ------------------------------------------------------------------------ r3107 | mhyfritz | 2013-01-17 12:36:49 +0000 (Thu, 17 Jan 2013) | 1 line Changed paths: M /io_lib/trunk/progs/cram_to_sam.c M /io_lib/trunk/progs/sam_to_cram.c Cosmetic fixes ------------------------------------------------------------------------ r3106 | jkbonfield | 2013-01-16 14:05:32 +0000 (Wed, 16 Jan 2013) | 4 lines Changed paths: M /io_lib/trunk/Makefile.am M /io_lib/trunk/configure.in M /io_lib/trunk/io_lib/Makefile.am A /io_lib/trunk/io_lib/bam.c A /io_lib/trunk/io_lib/bam.h A /io_lib/trunk/io_lib/cram.h A /io_lib/trunk/io_lib/cram_encodings.c A /io_lib/trunk/io_lib/cram_encodings.h A /io_lib/trunk/io_lib/cram_io.c A /io_lib/trunk/io_lib/cram_io.h A /io_lib/trunk/io_lib/cram_structs.h A /io_lib/trunk/io_lib/dstring.c A /io_lib/trunk/io_lib/dstring.h M /io_lib/trunk/io_lib/hash_table.c M /io_lib/trunk/io_lib/hash_table.h M /io_lib/trunk/io_lib/misc.h M /io_lib/trunk/progs/Makefile.am A /io_lib/trunk/progs/cram_dump.c A /io_lib/trunk/progs/cram_to_sam.c A /io_lib/trunk/progs/sam_convert.c A /io_lib/trunk/progs/sam_to_cram.c M /io_lib/trunk/progs/srf_filter.c M /io_lib/trunk/progs/srf_list.c Added in BAM and CRAM support to IO_lib. These will replace the support in Gap5 in time to come. ------------------------------------------------------------------------ r2959 | jkbonfield | 2012-04-20 17:21:37 +0100 (Fri, 20 Apr 2012) | 2 lines Changed paths: M /io_lib/trunk/io_lib/vlen.c Added %lld support =============================================================================== 2011-02-03: RELEASE 1.12.5 r2389 | jkbonfield | 2011-02-03 16:35:42 +0000 (Thu, 03 Feb 2011) | 1 line Changed paths: M /io_lib/trunk/ChangeLog r2388 | jkbonfield | 2011-02-03 16:34:35 +0000 (Thu, 03 Feb 2011) | 7 lines Changed paths: M /io_lib/trunk/CHANGES M /io_lib/trunk/ChangeLog M /io_lib/trunk/README M /io_lib/trunk/configure.in M /io_lib/trunk/io_lib/os.h.in M /io_lib/trunk/io_lib/vlen.c Fixed detection of va_copy(); now done via autoconf check. This avoids bugs caused on some MacOS X builds when using the vflen() io_lib call. (This bug fix may also work for others hosts that we haven't tested the code on.) Updated version to 1.12.5 ------------------------------------------------------------------------ r2387 | jkbonfield | 2011-02-03 16:33:05 +0000 (Thu, 03 Feb 2011) | 1 line Changed paths: M /io_lib/trunk/progs/Makefile.am M /io_lib/trunk/progs/hash_exp.c Added hash_exp to the programs listing. Code always existed, but not compiled for some reason. ------------------------------------------------------------------------ r2386 | jkbonfield | 2011-02-03 16:32:05 +0000 (Thu, 03 Feb 2011) | 2 lines Changed paths: M /io_lib/trunk/io_lib/hash_table.c Fixed minor memory leak in HashTableResize. =============================================================================== 2010-07-06: RELEASE 1.12.4 r2183 | jkbonfield | 2010-07-14 09:51:32 +0100 (Wed, 14 Jul 2010) | 3 lines Changed paths: M /io_lib/trunk/CHANGES M /io_lib/trunk/ChangeLog M /io_lib/trunk/README M /io_lib/trunk/configure.in Version updates (which should have been committed prior to 1.2.4, although they're in the tarball). ------------------------------------------------------------------------ r2182 | jkbonfield | 2010-07-14 09:38:16 +0100 (Wed, 14 Jul 2010) | 2 lines Changed paths: M /io_lib/trunk/progs/srf2fasta.c Fixed to work on SOLiD SRFs. ------------------------------------------------------------------------ r2173 | jkbonfield | 2010-07-07 10:26:57 +0100 (Wed, 07 Jul 2010) | 3 lines Changed paths: M /io_lib/trunk/io_lib/hash_table.c Bug fix to HashFileOpenArchive error checking. This caused the previous release to completely fail at extracting data. (Argh) =============================================================================== 2010-07-06: RELEASE 1.12.3 r2171 | jkbonfield | 2010-07-06 17:39:18 +0100 (Tue, 06 Jul 2010) | 2 lines Changed paths: M /io_lib/trunk/CHANGES M /io_lib/trunk/ChangeLog M /io_lib/trunk/README M /io_lib/trunk/configure.in Updating to version 1.12.3 ------------------------------------------------------------------------ r2170 | jkbonfield | 2010-07-06 17:32:43 +0100 (Tue, 06 Jul 2010) | 14 lines Changed paths: M /io_lib/trunk/io_lib/hash_table.c M /io_lib/trunk/io_lib/hash_table.h M /io_lib/trunk/progs/hash_list.c M /io_lib/trunk/progs/hash_sff.c M /io_lib/trunk/progs/hash_tar.c Added support for a hash index of multiple files. This means we can have a single HASH= line on our TRACE_PATH while transparently fetching traces from any number of .tar files. (For now this is only supported with tar and not SFF.) Hash_list has been updated to list the originating .tar file when outputting in long format. Also added a -m option to hash_tar to provide a mapping from old to new tar entry names. This allows us to rename the contents of a tar file (eg to strip off a .ztr suffix or change case) incase Gap4 has been incorrectly contructed with different trace filenames in it. (Yes it's just a hack option.) ------------------------------------------------------------------------ r2132 | daviesrob | 2010-05-27 10:18:46 +0100 (Thu, 27 May 2010) | 1 line Changed paths: M /io_lib/trunk/progs/srf_filter.c Update srf_filter so that it can read from a pipe. It is also now possible to u se "-" as the name of the input/output file to read from stdin/write to stdout. ------------------------------------------------------------------------ r2131 | jkbonfield | 2010-05-26 17:08:22 +0100 (Wed, 26 May 2010) | 2 lines Changed paths: M /io_lib/trunk/io_lib/ztr.c Removed erroneous #endif. ------------------------------------------------------------------------ r2130 | jkbonfield | 2010-05-26 16:53:07 +0100 (Wed, 26 May 2010) | 24 lines Changed paths: M /io_lib/trunk/COPYRIGHT M /io_lib/trunk/Makefile.am M /io_lib/trunk/README M /io_lib/trunk/configure.in M /io_lib/trunk/io_lib/Makefile.am M /io_lib/trunk/io_lib/Read.c M /io_lib/trunk/io_lib/Read.h M /io_lib/trunk/io_lib/array.c M /io_lib/trunk/io_lib/compress.c M /io_lib/trunk/io_lib/compression.c M /io_lib/trunk/io_lib/ctfCompress.c M /io_lib/trunk/io_lib/deflate_interlaced.c M /io_lib/trunk/io_lib/error.c M /io_lib/trunk/io_lib/expFileIO.c M /io_lib/trunk/io_lib/files.c M /io_lib/trunk/io_lib/find.c M /io_lib/trunk/io_lib/fpoint.c M /io_lib/trunk/io_lib/jenkins_lookup3.c M /io_lib/trunk/io_lib/mach-io.c M /io_lib/trunk/io_lib/misc_scf.c D /io_lib/trunk/io_lib/os.h A /io_lib/trunk/io_lib/os.h.in M /io_lib/trunk/io_lib/pooled_alloc.c M /io_lib/trunk/io_lib/read_alloc.c M /io_lib/trunk/io_lib/read_scf.c M /io_lib/trunk/io_lib/scf_extras.c M /io_lib/trunk/io_lib/seqIOABI.c M /io_lib/trunk/io_lib/seqIOALF.c M /io_lib/trunk/io_lib/seqIOCTF.c M /io_lib/trunk/io_lib/seqIOPlain.c M /io_lib/trunk/io_lib/sff.c M /io_lib/trunk/io_lib/strings.c M /io_lib/trunk/io_lib/traceType.c M /io_lib/trunk/io_lib/translate.c M /io_lib/trunk/io_lib/vlen.c M /io_lib/trunk/io_lib/write_scf.c M /io_lib/trunk/io_lib/xalloc.c M /io_lib/trunk/io_lib/ztr.c M /io_lib/trunk/io_lib/ztr_translate.c M /io_lib/trunk/progs/append_sff.c M /io_lib/trunk/progs/convert_trace.c M /io_lib/trunk/progs/extract_fastq.c M /io_lib/trunk/progs/extract_qual.c M /io_lib/trunk/progs/extract_seq.c M /io_lib/trunk/progs/get_comment.c M /io_lib/trunk/progs/hash_exp.c M /io_lib/trunk/progs/hash_extract.c M /io_lib/trunk/progs/hash_sff.c M /io_lib/trunk/progs/hash_tar.c M /io_lib/trunk/progs/index_tar.c M /io_lib/trunk/progs/makeSCF.c M /io_lib/trunk/progs/scf_dump.c M /io_lib/trunk/progs/scf_info.c M /io_lib/trunk/progs/scf_update.c M /io_lib/trunk/progs/srf2fasta.c M /io_lib/trunk/progs/srf2fastq.c M /io_lib/trunk/progs/srf_dump_all.c M /io_lib/trunk/progs/srf_filter.c M /io_lib/trunk/progs/srf_info.c M /io_lib/trunk/progs/trace_dump.c M /io_lib/trunk/progs/ztr_dump.c Overhaul of endianness detection. - We still use autoconf, but now generate an os.h from os.h.in with either SP_LITTLE_ENDIAN or SP_BIG_ENDIAN already hard-coded within it. This avoids issues when non-autoconf programs linking against io_lib include os.h. - As an exception to the above, MacOS X FAT binaries will defined neither of the endian parameters (as it's impossible to know this at configure time) and falls back to the auto-dtection based on CPU time. Hopefully the same applies for any cross-compilation. NOTE: this requires a modern autoconf with the 4th argument to AC_C_BIGENDIAN macro. (3.65 has it, but 3.61 does not. I am unsure which version inbetween it appeared.) - We now include io_lib_config.h in all .c files and in no .h files. This avoids complications of trying to include io_lib header files (os.h in particular) from another program using autoconf that's also defined HAVE_CONFIG_H. - Removed False/True from os.h. Only false was used and only in two scf source files. I just explicitly check vs 0 now. ------------------------------------------------------------------------ r2123 | jkbonfield | 2010-05-11 17:04:30 +0100 (Tue, 11 May 2010) | 2 lines Changed paths: M /io_lib/trunk/io_lib/os.h Added extra auto-detected for big vs little endian (when not using autoconf). ------------------------------------------------------------------------ r2107 | jkbonfield | 2010-04-29 16:46:14 +0100 (Thu, 29 Apr 2010) | 4 lines Changed paths: M /io_lib/trunk/io_lib/misc.h Reordered include files to ensure that io_lib-config.h comes before sys/types.h or sys/stat.h. This ensures Large File Support works correctly. ------------------------------------------------------------------------ r2068 | jkbonfield | 2010-03-16 15:31:00 +0000 (Tue, 16 Mar 2010) | 2 lines Changed paths: M /io_lib/trunk/progs/srf_dump_all.c Detect tagged-runs with names including #, eg IL2_4381:1:1:1066:18864#43. ------------------------------------------------------------------------ r1999 | jkbonfield | 2010-02-05 13:59:40 +0000 (Fri, 05 Feb 2010) | 15 lines Changed paths: M /io_lib/trunk/progs/srf2fastq.c See: https://sourceforge.net/tracker/index.php?func=detail&aid=2945526&group_id=100316&atid=627060 submitted by Jordan Mendler. Fixed negative quality values - these shouldn't happen when specifying SCALE as PH(red), but -1 appears in ABI SOLiD files. Fixed N vs . character. We no longer force ambiguity bases to N, keeping . in use for SOLiD data. Improved the use of the "-c" option. The program will now automatically find the appropriate CNF chunk, so -c is only necessary when both CNF1 and CNF4 are present and you wish to request data comes from CNF1 instead. ------------------------------------------------------------------------ r1998 | jkbonfield | 2010-02-05 13:54:42 +0000 (Fri, 05 Feb 2010) | 1 line Changed paths: M /io_lib/trunk/ChangeLog ------------------------------------------------------------------------ r1967 | jkbonfield | 2010-01-18 09:57:34 +0000 (Mon, 18 Jan 2010) | 1 line Changed paths: M /io_lib/trunk/Makefile.am ------------------------------------------------------------------------ r1966 | jkbonfield | 2010-01-18 09:55:14 +0000 (Mon, 18 Jan 2010) | 2 lines Changed paths: M /io_lib/trunk/progs/srf2fastq.c Fixed spelling mistake. ------------------------------------------------------------------------ r1965 | jkbonfield | 2010-01-18 09:54:39 +0000 (Mon, 18 Jan 2010) | 2 lines Changed paths: D /io_lib/trunk/man/man1/illumina2srf.1 Removed - should have been culled when we removed illumina2srf itself. =============================================================================== 2010-01-15: RELEASE 1.12.2 ------------------------------------------------------------------------ r1952 | jkbonfield | 2010-01-14 17:28:02 +0000 (Thu, 14 Jan 2010) | 2 lines Changed paths: M /io_lib/trunk/CHANGES M /io_lib/trunk/README M /io_lib/trunk/configure.in Updates to produce 1.12.2 ------------------------------------------------------------------------ r1951 | jkbonfield | 2010-01-14 17:21:14 +0000 (Thu, 14 Jan 2010) | 3 lines Changed paths: M /io_lib/trunk/io_lib/os.h Guarded HAVE_* definitions behind #ifndef checks to avoid warnings in certain cases. ------------------------------------------------------------------------ r1950 | jkbonfield | 2010-01-14 16:44:42 +0000 (Thu, 14 Jan 2010) | 5 lines Changed paths: M /io_lib/trunk/man/man1/srf2fastq.1 M /io_lib/trunk/progs/srf2fastq.c Added -r option as requested in source forge Patch ID: 2926627, as suggested by jmendler. The exact implementation differs in minor ways. ------------------------------------------------------------------------ r1939 | jkbonfield | 2010-01-07 09:36:18 +0000 (Thu, 07 Jan 2010) | 3 lines Changed paths: M /io_lib/trunk/progs/srf2fasta.c M /io_lib/trunk/progs/srf2fastq.c M /io_lib/trunk/progs/srf_extract_hash.c Fixed the usage() function to exit 1 instead of 0. (Patch from Jordan Mendler) ------------------------------------------------------------------------ r1930 | jkbonfield | 2009-12-03 14:04:01 +0000 (Thu, 03 Dec 2009) | 7 lines Changed paths: M /io_lib/trunk/io_lib/sff.c Fixed a bug in read_sff_read_data (with thanks to Tim Massingham). After reading the data the function did not pad out to the next 8-byte boundary. This only surfaces when using the library from your own tools as the programs supplied with io_lib never read more than a single sff read. ------------------------------------------------------------------------ r1924 | jkbonfield | 2009-11-23 12:20:18 +0000 (Mon, 23 Nov 2009) | 6 lines Changed paths: M /io_lib/trunk/progs/srf2fastq.c Applied patch from Jordan Mendler: https://sourceforge.net/tracker/index.php?func=detail&aid=2900087&group_id=100316&atid=627060 This adds a -S (sequential) option to srf2fastq to interleave forward and reverse fragments in the same output file as desired by BFast. ------------------------------------------------------------------------ r1851 | daviesrob | 2009-10-02 10:29:05 +0100 (Fri, 02 Oct 2009) | 1 line Changed paths: M /io_lib/trunk/progs/srf2fastq.c Fixed buffer overrun in parse_regn ------------------------------------------------------------------------ r1850 | daviesrob | 2009-10-02 10:02:30 +0100 (Fri, 02 Oct 2009) | 1 line Changed paths: M /io_lib/trunk/progs/srf_info.c Fixed buffer overrun in parse_regn ------------------------------------------------------------------------ r1834 | daviesrob | 2009-09-11 17:48:32 +0100 (Fri, 11 Sep 2009) | 1 line Changed paths: M /io_lib/trunk/Makefile.am M /io_lib/trunk/io_lib/ztr.c Added pooled_alloc.h to list of include files to install. Fixed ztr_add_text so that it leaves two NUL bytes on the end of the TEXT chunk, as documented in the ZTR specification. ------------------------------------------------------------------------ r1813 | daviesrob | 2009-09-01 12:37:37 +0100 (Tue, 01 Sep 2009) | 1 line Changed paths: M /io_lib/trunk/io_lib/Makefile.am M /io_lib/trunk/io_lib/hash_table.c M /io_lib/trunk/io_lib/hash_table.h A /io_lib/trunk/io_lib/pooled_alloc.c A /io_lib/trunk/io_lib/pooled_alloc.h M /io_lib/trunk/io_lib/srf.c M /io_lib/trunk/io_lib/srf.h Added HASH_POOL_ITEMS option to hash table code to allocate HashItems in pools, which reduces malloc overhead in big hash tables. Also made srf_index_add_trace _body use pooled storage for trace names. =============================================================================== 2009-07-29: RELEASE 1.12.1 ------------------------------------------------------------------------ r1806 | jkbonfield | 2009-08-07 16:46:20 +0100 (Fri, 07 Aug 2009) | 1 line Changed paths: M /io_lib/trunk/README M /io_lib/trunk/configure.in Updated version to 1.12.1 ------------------------------------------------------------------------ r1805 | jkbonfield | 2009-08-07 16:18:28 +0100 (Fri, 07 Aug 2009) | 1 line Changed paths: M /io_lib/trunk/Makefile.am M /io_lib/trunk/README Minor edit ------------------------------------------------------------------------ r1792 | jkbonfield | 2009-08-03 11:58:49 +0100 (Mon, 03 Aug 2009) | 4 lines Changed paths: M /io_lib/trunk/io_lib/os.h Moved the autoconf detection of endianness to the start of os.h. This means that machine/compiler testing #ifdefs take precedence, allowing for cross-compilation and "fat" binaries on MacOS X. ------------------------------------------------------------------------ r1791 | jkbonfield | 2009-08-03 11:56:50 +0100 (Mon, 03 Aug 2009) | 2 lines Changed paths: M /io_lib/trunk/tests/Makefile.am M /io_lib/trunk/tests/srf_index.test Minor tweaks to checks/dist. ------------------------------------------------------------------------ r1789 | jkbonfield | 2009-07-31 12:17:27 +0100 (Fri, 31 Jul 2009) | 2 lines Changed paths: M /io_lib/trunk/io_lib-config.in Fixed -lread to be -lstaden-read ------------------------------------------------------------------------ r1780 | jkbonfield | 2009-07-29 10:07:56 +0100 (Wed, 29 Jul 2009) | 2 lines Changed paths: M /io_lib/trunk/CHANGES M /io_lib/trunk/ChangeLog M /io_lib/trunk/README Minor updates to state version 1.12.0 =============================================================================== 2009-07-29: RELEASE 1.12.0 ------------------------------------------------------------------------ r1779 | jkbonfield | 2009-07-29 09:53:33 +0100 (Wed, 29 Jul 2009) | 2 lines Changed paths: M /io_lib/trunk/Makefile.am The man1 pages are now installed too. ------------------------------------------------------------------------ r1778 | jkbonfield | 2009-07-28 17:42:26 +0100 (Tue, 28 Jul 2009) | 2 lines Changed paths: M /io_lib/trunk/tests/Makefile.am D /io_lib/trunk/tests/data/.params A /io_lib/trunk/tests/data/both.info (from /io_lib/trunk/tests/data/slx_out/both.info:1776) A /io_lib/trunk/tests/data/both.run (from /io_lib/trunk/tests/data/slx_out/both.run:1776) A /io_lib/trunk/tests/data/both.srf (from /io_lib/trunk/tests/data/slx_out/both.srf:1776) A /io_lib/trunk/tests/data/proc.info (from /io_lib/trunk/tests/data/slx_out/proc.info:1776) A /io_lib/trunk/tests/data/proc.srf (from /io_lib/trunk/tests/data/slx_out/proc.srf:1776) A /io_lib/trunk/tests/data/proc.srf.indexed (from /io_lib/trunk/tests/data/slx_out/proc.srf.indexed:1776) A /io_lib/trunk/tests/data/raw.info (from /io_lib/trunk/tests/data/slx_out/raw.info:1776) A /io_lib/trunk/tests/data/raw.srf (from /io_lib/trunk/tests/data/slx_out/raw.srf:1776) A /io_lib/trunk/tests/data/slx-C.fasta (from /io_lib/trunk/tests/data/slx_out/slx-C.fasta:1776) A /io_lib/trunk/tests/data/slx-C.fastq (from /io_lib/trunk/tests/data/slx_out/slx-C.fastq:1776) A /io_lib/trunk/tests/data/slx.fasta (from /io_lib/trunk/tests/data/slx_out/slx.fasta:1776) A /io_lib/trunk/tests/data/slx.fastq (from /io_lib/trunk/tests/data/slx_out/slx.fastq:1776) D /io_lib/trunk/tests/data/slx_in D /io_lib/trunk/tests/data/slx_out A /io_lib/trunk/tests/data/test_run_4_134_369_182.srf (from /io_lib/trunk/tests/data/slx_out/test_run_4_134_369_182.srf:1776) A /io_lib/trunk/tests/data/traces.srf (from /io_lib/trunk/tests/data/slx_out/traces.srf:1776) D /io_lib/trunk/tests/illumina2srf.test M /io_lib/trunk/tests/srf2fasta.test M /io_lib/trunk/tests/srf2fastq.test D /io_lib/trunk/tests/srf2illumina.test M /io_lib/trunk/tests/srf_filter.test M /io_lib/trunk/tests/srf_index.test M /io_lib/trunk/tests/srf_info.test Updated tests now that srf2illumina and illumina2srf have been removed. ------------------------------------------------------------------------ r1777 | jkbonfield | 2009-07-28 16:44:43 +0100 (Tue, 28 Jul 2009) | 3 lines Changed paths: D /io_lib/trunk/Makefile M /io_lib/trunk/bootstrap D /io_lib/trunk/io_lib/Makefile D /io_lib/trunk/progs/Makefile Removed remnant Makefiles from the old staden package build system. All we have left now is the autoconf build files. ------------------------------------------------------------------------ r1775 | jkbonfield | 2009-07-28 16:37:18 +0100 (Tue, 28 Jul 2009) | 8 lines Changed paths: A /io_lib/branches A /io_lib/tags A /io_lib/trunk A /io_lib/trunk/CHANGES (from /staden/trunk/src/io_lib/CHANGES:1774) A /io_lib/trunk/COPYRIGHT (from /staden/trunk/src/io_lib/COPYRIGHT:1774) A /io_lib/trunk/ChangeLog (from /staden/trunk/src/io_lib/ChangeLog:1774) A /io_lib/trunk/Makefile (from /staden/trunk/src/io_lib/Makefile:1774) A /io_lib/trunk/Makefile.am (from /staden/trunk/src/io_lib/Makefile.am:1774) A /io_lib/trunk/README (from /staden/trunk/src/io_lib/README:1774) A /io_lib/trunk/acinclude.m4 (from /staden/trunk/src/io_lib/acinclude.m4:1774) A /io_lib/trunk/bootstrap (from /staden/trunk/src/io_lib/bootstrap:1774) A /io_lib/trunk/configure.in (from /staden/trunk/src/io_lib/configure.in:1774) A /io_lib/trunk/dependencies (from /staden/trunk/src/io_lib/dependencies:1774) A /io_lib/trunk/docs (from /staden/trunk/src/io_lib/docs:1774) A /io_lib/trunk/include (from /staden/trunk/src/io_lib/include:1774) A /io_lib/trunk/io_lib (from /staden/trunk/src/io_lib/io_lib:1774) A /io_lib/trunk/io_lib-config.in (from /staden/trunk/src/io_lib/io_lib-config.in:1774) A /io_lib/trunk/io_lib.m4 (from /staden/trunk/src/io_lib/io_lib.m4:1774) A /io_lib/trunk/man (from /staden/trunk/src/io_lib/man:1774) A /io_lib/trunk/options.mk (from /staden/trunk/src/io_lib/options.mk:1774) A /io_lib/trunk/progs (from /staden/trunk/src/io_lib/progs:1774) A /io_lib/trunk/tests (from /staden/trunk/src/io_lib/tests:1774) D /staden/trunk/src/io_lib/CHANGES D /staden/trunk/src/io_lib/COPYRIGHT D /staden/trunk/src/io_lib/ChangeLog D /staden/trunk/src/io_lib/Makefile D /staden/trunk/src/io_lib/Makefile.am D /staden/trunk/src/io_lib/README D /staden/trunk/src/io_lib/acinclude.m4 D /staden/trunk/src/io_lib/bootstrap D /staden/trunk/src/io_lib/configure.in D /staden/trunk/src/io_lib/dependencies D /staden/trunk/src/io_lib/docs D /staden/trunk/src/io_lib/include D /staden/trunk/src/io_lib/io_lib D /staden/trunk/src/io_lib/io_lib-config.in D /staden/trunk/src/io_lib/io_lib.m4 D /staden/trunk/src/io_lib/man D /staden/trunk/src/io_lib/options.mk D /staden/trunk/src/io_lib/progs D /staden/trunk/src/io_lib/tests Moved io_lib from staden source tree into it's own top-level subversion directory, complete with tags, branches, and trunk. For now the old tagged copies of io_lib are still in the staden/tags/ directory with tag names io_lib-, but that is perhaps right and proper (as it's where the code actually resided at that release number). ------------------------------------------------------------------------ r1772 | jkbonfield | 2009-07-28 15:32:58 +0100 (Tue, 28 Jul 2009) | 4 lines Changed paths: M /staden/trunk/src/io_lib/progs/Makefile.am D /staden/trunk/src/io_lib/progs/solexa2srf.c D /staden/trunk/src/io_lib/progs/srf2solexa.c Removed Illumina/Solexa specific programs. These are now out of date with respect to Illumina's own fork, plus I don't think they belong in the largely platform agnostic library. ------------------------------------------------------------------------ r1771 | jkbonfield | 2009-07-28 12:44:07 +0100 (Tue, 28 Jul 2009) | 7 lines Changed paths: M /staden/trunk/src/io_lib/CHANGES M /staden/trunk/src/io_lib/ChangeLog M /staden/trunk/src/io_lib/README M /staden/trunk/src/io_lib/configure.in M /staden/trunk/src/io_lib/io_lib/Makefile.am Preparations for 1.12.0 release. There is now proper versioning support for the library too. The soname used here is libstaden-read.so.1, to distinguish from any earlier dynamic libraries. (The ABI definitely has changed over the years in incompatible manners.) ------------------------------------------------------------------------ r1770 | jkbonfield | 2009-07-28 09:17:29 +0100 (Tue, 28 Jul 2009) | 1 line Changed paths: M /staden/trunk/src/io_lib/tests/data/slx_out/both.info M /staden/trunk/src/io_lib/tests/data/slx_out/raw.info Updated for new format srf_info output ------------------------------------------------------------------------ r1769 | jkbonfield | 2009-07-28 09:16:11 +0100 (Tue, 28 Jul 2009) | 2 lines Changed paths: M /staden/trunk/src/io_lib/tests/data/slx_out/proc.info Updated with new format output. ------------------------------------------------------------------------ r1768 | jkbonfield | 2009-07-27 17:49:44 +0100 (Mon, 27 Jul 2009) | 2 lines Changed paths: M /staden/trunk/src/io_lib/io_lib/vlen.c Include os.h so we can pick up NEED_VA_COPY definition. ------------------------------------------------------------------------ r1767 | jkbonfield | 2009-07-27 17:48:37 +0100 (Mon, 27 Jul 2009) | 5 lines Changed paths: M /staden/trunk/src/io_lib/progs/srf_filter.c Reorganisation to allow chunks to be added as well as removed. At present this only supports adding REGN chunks. (Patch supplied by Steven Leonard.) ------------------------------------------------------------------------ r1766 | jkbonfield | 2009-07-27 17:46:07 +0100 (Mon, 27 Jul 2009) | 3 lines Changed paths: M /staden/trunk/src/io_lib/progs/index_tar.c Handle GNU tar extensions: LongLink notation. (Patch supplied by Steven Leonard). ------------------------------------------------------------------------ r1765 | jkbonfield | 2009-07-27 17:45:16 +0100 (Mon, 27 Jul 2009) | 4 lines Changed paths: M /staden/trunk/src/io_lib/progs/srf2fasta.c M /staden/trunk/src/io_lib/progs/srf2fastq.c M /staden/trunk/src/io_lib/progs/srf_extract_hash.c Changed the maximum read length from 1024 to 10000. This allows for capillary traces to be stored in SRF. (Patch supplied by Steven Leonard) ------------------------------------------------------------------------ r1764 | jkbonfield | 2009-07-27 17:43:36 +0100 (Mon, 27 Jul 2009) | 3 lines Changed paths: M /staden/trunk/src/io_lib/progs/srf_info.c Use int64_t instead of long for base counts and chunk sizes. (Supplied by Steven Leonard.) ------------------------------------------------------------------------ r1763 | jkbonfield | 2009-07-27 16:49:10 +0100 (Mon, 27 Jul 2009) | 3 lines Changed paths: M /staden/trunk/src/io_lib/man/man1/srf_info.1 M /staden/trunk/src/io_lib/progs/srf_info.c Added compressed chunk size to the per-chunk type output. This allows us to see what takes up the most storage in an SRF. ------------------------------------------------------------------------ r1762 | jkbonfield | 2009-07-27 16:47:20 +0100 (Mon, 27 Jul 2009) | 1 line Changed paths: M /staden/trunk/src/io_lib/io_lib/ztr.c removed C9Xism ------------------------------------------------------------------------ r1761 | jkbonfield | 2009-07-27 15:01:16 +0100 (Mon, 27 Jul 2009) | 5 lines Changed paths: M /staden/trunk/src/io_lib/configure.in M /staden/trunk/src/io_lib/io_lib/Makefile.am M /staden/trunk/src/io_lib/progs/Makefile.am Re-enabled libtool, with a workaround to remove the infuriating rpath nonsense. (It's now 2x slower to configure, 3x slower to compile and 10x more anguish to debug, but at least I can sleep at night knowing rpath hasn't had it's wicked way with the code.) ------------------------------------------------------------------------ r1756 | jkbonfield | 2009-07-24 10:27:29 +0100 (Fri, 24 Jul 2009) | 5 lines Changed paths: M /staden/trunk/src/Makefile.in A /staden/trunk/src/io_lib/io_lib/Makefile Added a Makefile for io_lib/io_lib; so the library itself. This isn't expected to be used normally, but it allows me to test local copies of io_lib (under a different library name) in conjunction with the staden source tree before releasing either. ------------------------------------------------------------------------ r1723 | jkbonfield | 2009-06-22 12:38:26 +0100 (Mon, 22 Jun 2009) | 2 lines Changed paths: M /staden/trunk/src/io_lib/io_lib/ztr_translate.c Gracefully handle the case of a trace with no BPOS chunk in ztr2read(). ------------------------------------------------------------------------ r1722 | jkbonfield | 2009-06-22 12:37:32 +0100 (Mon, 22 Jun 2009) | 2 lines Changed paths: M /staden/trunk/src/io_lib/io_lib/hash_table.c M /staden/trunk/src/io_lib/io_lib/hash_table.h Added the hash table iterator functions (copied from Gap5's hache tables). ------------------------------------------------------------------------ r1721 | jkbonfield | 2009-06-22 12:36:52 +0100 (Mon, 22 Jun 2009) | 2 lines Changed paths: M /staden/trunk/src/io_lib/io_lib/deflate_interlaced.c Fixed a memory allocation issue of codes2codeset(). ------------------------------------------------------------------------ r1720 | jkbonfield | 2009-06-22 12:35:21 +0100 (Mon, 22 Jun 2009) | 4 lines Changed paths: M /staden/trunk/src/io_lib/Makefile Remove use of curl-config --libs. While useful for linking against static libraries, it just adds unwanted dependencies in a dynamic build environment. ------------------------------------------------------------------------ r1596 | jkbonfield | 2009-04-20 12:34:23 +0100 (Mon, 20 Apr 2009) | 6 lines Changed paths: M /staden/trunk/src/io_lib/io_lib/compress.c M /staden/trunk/src/io_lib/io_lib/compress.h Made pipe2() internal as it's not used anywhere else yet. Also renamed from pipe2 to pipe_into. This resolves SF bug #2629155; pipe2 has been added as a system function to glibc 2.9 as an interface to the new (2.6.27+) kernel system call of the same name. ------------------------------------------------------------------------ r1526 | jkbonfield | 2009-03-04 14:38:16 +0000 (Wed, 04 Mar 2009) | 5 lines Changed paths: M /staden/trunk/src/io_lib/progs/srf_info.c Fixed the same bug with mf_end and ztr_partial_decode from srf.c. Specifically a ZTR file with no chunks in the srf data block header failed. ------------------------------------------------------------------------ r1525 | jkbonfield | 2009-03-04 14:23:58 +0000 (Wed, 04 Mar 2009) | 4 lines Changed paths: M /staden/trunk/src/io_lib/io_lib/srf.c Bug fix to srf_next_ztr_flags. When faced with a ZTR header with no ZTR chunks in the srf data block header it erroneously set mf_end to zero instead of the actual length. ------------------------------------------------------------------------ r1455 | jkbonfield | 2009-01-22 17:19:25 +0000 (Thu, 22 Jan 2009) | 3 lines Changed paths: M /staden/trunk/src/io_lib/io_lib/array.c M /staden/trunk/src/io_lib/io_lib/array.h Updated the Array struct to use size_t, matching the copy in Misc (yes I know, multiple variants is asking for trouble). ------------------------------------------------------------------------ r1428 | jkbonfield | 2008-12-11 10:22:25 +0000 (Thu, 11 Dec 2008) | 3 lines Changed paths: M /staden/trunk/src/io_lib/progs/srf2solexa.c Changed dump_qcal so it handles negative log-odds scores. In practice I've never seen these occur with the 1.0 solexa pipeline release though. =============================================================================== 2008-12-10 James Bonfield * 1.11.6.1 released. * progs/solexa2srf.c: Removal of debugging output. 2008-12-10 James Bonfield * 1.11.6 released. 2008-12-10 jkbonfield * progs/solexa2srf.c: Fixed the add_qcal_chunk code so it doesn't assume that it can strlen the binary quality string. * man/man1/srf2fastq.1, * man/man1/srf_info.1: (10:17:27) Updated to reflect newly added options. * progs/srf2fastq.c: (10:19:25) Merged in changes from Steven Leonard. - Extra options were added to provide explicit control over the read names (whether to add /1, /2, ...) and filenames. - Renamed -p (primer) as -e (explicit). * progs/srf_info.c: (10:20:18) Merged in changes from Steven Leonard - Call srf_destroy before exiting in various failure cases. This has no real impact except to make it easier to look for real memory leaks. 2008-12-09 jkbonfield * progs/srf2fastq.c: (10:20:00) Fixed an error with split file mode - it read past the end of an array. We now check the SCALE option on CNF4 and CNF1 chunks and convert the data accordingly to phred. * progs/solexa2srf.c: (10:23:31) Merged in some of the changes made by Chris Saunders from Illumina. Most significantly this now stores CNF1 data in log-odds format and sets SCALE meta-data accordingly. This makes srf2illumina work better as it doesn't go from log-odds to phred back to log-odds, destroying data in rounding. * tests/data/slx_out/both.info, * tests/data/slx_out/both.srf, * tests/data/slx_out/proc.info, * tests/data/slx_out/proc.srf, * tests/data/slx_out/proc.srf.indexed, * tests/data/slx_out/raw.info, * tests/data/slx_out/raw.srf, * tests/data/slx_out/test_run_4_134_369_182.srf, * tests/data/slx_out/both.run/4_PROGRAM_ID.txt: (12:26:13) Updated to accommodate illumina2srf version string change. * progs/srf_filter.c: (12:28:30) Bad case of missing braces! 2008-12-08 jkbonfield * io_lib/compression.c: (12:32:38) Better error handling in tshift method * io_lib/compress.c, * io_lib/compress.h: (12:33:40) Added remove_extension() function. (Not yet used by io_lib, but potentially handy and used by some external tools.) (Steven Leonard) * progs/srf2solexa.c: (12:34:38) Bug fixed the qcal conversion - now use the correct lookup table and added .499 to match the rounding used in solexa2srf.c. * progs/srf2fastq.c, * progs/srf_filter.c, * progs/srf_info.c: (12:35:40) Merged in Steven Leonard's changes. These mainly involve better support for multiple index blocks in SRF files (eg concatenated files), support for splitting output files in srf2fastq, and extra reporting options in srf_info. * io_lib/ztr.c, * io_lib/ztr.h: (17:15:58) Added const to string params in ztr_add_text. * io_lib/srf.c, * io_lib/srf.h: (17:23:53) New function srf_next_ztr_flags. This is the same as the old srf_next_ztr function except with the addition of an extra argument into which the SRF Data Block 'flags' value is copied when returning the next trace. =============================================================================== 2008-12-04 James Bonfield * 1.11.5 released. 2008-12-03 jkbonfield * progs/solexa2srf.c: (17:29:10) Fixed qcal format so it now correctly drops quality by the 64 offset added in the fastq-a-like strings. Fixed a bug with the 2-file calibration mode (-qf and -qr). A single combined -qf alone works fine, but when pasting the split file mode (fwd + rev) a newline crept halfway into the quality string causing the reverse qualities to be shifted by one. * progs/solexa2srf.c: (17:29:56) Bumped version to 1.11 2008-12-02 jkbonfield * progs/srf_filter.c: (14:38:58) Removed some major memory leaks. * io_lib/srf.c, * progs/srf_filter.c: (15:01:04) More memory leak fixed (although tiny). 2008-10-23 jkbonfield * progs/hash_sff.c: (14:08:19) Added support for outputting only the table of contents to a new file without copying the existing sff files. This is useful if we have the original sff files in an archive that we cannot modify. 2008-10-07 jkbonfield * progs/Makefile.am: (16:02:51) Added extract_fastq to the list of programs to build. 2008-09-29 jkbonfield * man/man1/illumina2srf.1, * man/man1/srf2fasta.1, * man/man1/srf2fastq.1, * man/man1/srf_info.1, * man/man1/srf_list.1: (13:40:01) Added the first draft of several manual pages. * man/man1/illumina2srf.1: (13:44:09) *** empty log message *** * progs/Makefile.am, * progs/srf_list.c: (14:00:22) Added new program: srf_list. This lists or counts the sequence names within an SRF file. * io_lib/srf.c: (14:01:38) The srf_next_block_details now uses the trace_body struct held within the srf struct. This means it can be queried after a successful call and is utilised by srf_list to obtain the trace body size. * man/man1/srf_index_hash.1: (14:08:36) First draft of man page. 2008-09-18 jkbonfield * progs/solexa2srf.c: (12:59:37) Fixed a bug with parsing the directory name. If it fails it left the run number in an inconsistent state. This shouldn't cause issues in production pipelines, but does if you copy the files out of the run folders. * io_lib/srf.c, * io_lib/srf.h, * progs/solexa2srf.c: (16:33:45) Overhauled the SRF indexing code. Much of the indexing code in srf_index_hash.c has been moved over to srf.c so it can be used by other programs. An API has been created too so it is now far easier to create, add to and save an index. Added support for writing indexes in illumina2srf. Note that now if no index is written we also write out 8 bytes of zero, indicating the length of the index is zero. (This is required by more recent versions of the SRF specification.) Still to do: tools such as srf_filter should be updating the index (or at least removing the old ones). This will now be easier to do with these code updates. Updated the tests to check the new illumina2srf -i option too. * progs/srf_index_hash.c, * tests/illumina2srf.test, * tests/srf_index.test, * tests/data/slx_out/both.srf, * tests/data/slx_out/proc.srf, * tests/data/slx_out/raw.srf: (16:33:46) Overhauled the SRF indexing code. Much of the indexing code in srf_index_hash.c has been moved over to srf.c so it can be used by other programs. An API has been created too so it is now far easier to create, add to and save an index. Added support for writing indexes in illumina2srf. Note that now if no index is written we also write out 8 bytes of zero, indicating the length of the index is zero. (This is required by more recent versions of the SRF specification.) Still to do: tools such as srf_filter should be updating the index (or at least removing the old ones). This will now be easier to do with these code updates. Updated the tests to check the new illumina2srf -i option too. =============================================================================== 2008-09-11 James Bonfield * 1.11.4 released. 2008-09-11 James Bonfield * Makefile.am, * bootstrap, * configure.in: (08:43:42) Updated for version number and inclusion of tests dir. * io_lib/Attic/Makefile.in: (08:43:55) Removed due to being auto-generated from Makefile.am * io_lib/os.h: (08:44:56) Tidy up of endianness detection. I split apart the endian step from the os-components (no strdup, etc). Also changed the order so that when using autoconf the automatically detected settings override any existing assumptions from os.h. * io_lib/hash_table.h: (08:46:10) Included sys/types.h for off_t type. * CHANGES, * ChangeLog, * README: (10:25:27) Final tweaks for preparing 1.11.4 * io_lib/srf.h: (10:52:37) Changed block_type from char to int. This cures a problem on PowerMac (PPC) running Debian where char is by default an unsigned type, meaning it cannot be compared to EOF (-1). * tests/srf_index.test, * tests/data/slx_out/Attic/test_run:4:134:369:182.srf, * tests/data/slx_out/test_run_4_134_369_182.srf: (11:09:11) Renamed test_run:4:134:369:182.srf to test_run_4_134_369_182.srf as Windows cannot cope with colons in filenames, causing the tar file to fail to unpack. Grrr. * Makefile.am, * io_lib/srf.c, * progs/solexa2srf.c, * progs/srf2fasta.c, * progs/srf2fastq.c, * progs/srf2solexa.c, * progs/srf_dump_all.c, * progs/srf_extract_linear.c, * tests/Makefile.am, * tests/srf_index.test, * tests/srf_info.test: (15:25:29) A variety of changes to make the code work correctly using msys/mingw on Windows. These mainly revolve around binary mode and nl/cr issues. 2008-09-10 James Bonfield * tests/Makefile.am, * tests/illumina2srf.test, * tests/srf2fasta.test, * tests/srf2fastq.test, * tests/srf2illumina.test, * tests/srf_filter.test, * tests/srf_index.test, * tests/srf_info.test, * tests/data/.params, * tests/data/slx_in/.params, * tests/data/slx_in/s_4_0133_int.txt.gz, * tests/data/slx_in/s_4_0133_nse.txt.gz, * tests/data/slx_in/s_4_0134_int.txt.gz, * tests/data/slx_in/s_4_0134_nse.txt.gz, * tests/data/slx_in/Bustard1.9.5_28-08-2008_auto/s_4_0133_prb.txt, * tests/data/slx_in/Bustard1.9.5_28-08-2008_auto/s_4_0133_qhg.txt, * tests/data/slx_in/Bustard1.9.5_28-08-2008_auto/s_4_0133_seq.txt, * tests/data/slx_in/Bustard1.9.5_28-08-2008_auto/s_4_0133_sig2.txt, * tests/data/slx_in/Bustard1.9.5_28-08-2008_auto/s_4_0134_prb.txt, * tests/data/slx_in/Bustard1.9.5_28-08-2008_auto/s_4_0134_qhg.txt, * tests/data/slx_in/Bustard1.9.5_28-08-2008_auto/s_4_0134_seq.txt, * tests/data/slx_in/Bustard1.9.5_28-08-2008_auto/s_4_0134_sig2.txt, * tests/data/slx_in/Bustard1.9.5_28-08-2008_auto/Phasing/s_4_01_phasing.xml, * tests/data/slx_in/Matrix/s_4_02_matrix.txt, * tests/data/slx_out/both.info, * tests/data/slx_out/both.srf, * tests/data/slx_out/proc.info, * tests/data/slx_out/proc.srf, * tests/data/slx_out/proc.srf.indexed, * tests/data/slx_out/raw.info, * tests/data/slx_out/raw.srf, * tests/data/slx_out/slx-C.fasta, * tests/data/slx_out/slx-C.fastq, * tests/data/slx_out/slx.fasta, * tests/data/slx_out/slx.fastq, * tests/data/slx_out/test_run:4:134:369:182.srf, * tests/data/slx_out/traces.srf, * tests/data/slx_out/both.run/4_ILLUMINA_GA_BUSTARD_PARAMS.txt, * tests/data/slx_out/both.run/4_ILLUMINA_GA_CHASTITY.txt: (15:53:41) First pass at a "make check" target. Currently this is centred around the newer code, specifically SRF support. * tests/data/slx_out/both.run/4_ILLUMINA_GA_FIRECREST_PARAMS.txt, * tests/data/slx_out/both.run/4_ILLUMINA_GA_MATRIX_FWD.txt, * tests/data/slx_out/both.run/4_ILLUMINA_GA_PHASING_FWD.txt, * tests/data/slx_out/both.run/4_PROGRAM_ID.txt, * tests/data/slx_out/both.run/s_4_0133_int.txt, * tests/data/slx_out/both.run/s_4_0133_nse.txt, * tests/data/slx_out/both.run/s_4_0133_prb.txt, * tests/data/slx_out/both.run/s_4_0133_seq.txt, * tests/data/slx_out/both.run/s_4_0133_sig2.txt, * tests/data/slx_out/both.run/s_4_0134_int.txt, * tests/data/slx_out/both.run/s_4_0134_nse.txt, * tests/data/slx_out/both.run/s_4_0134_prb.txt, * tests/data/slx_out/both.run/s_4_0134_seq.txt, * tests/data/slx_out/both.run/s_4_0134_sig2.txt: (15:53:42) First pass at a "make check" target. Currently this is centred around the newer code, specifically SRF support. * tests/Makefile.am, * tests/illumina2srf.test, * tests/srf2fasta.test, * tests/srf2fastq.test, * tests/srf2illumina.test, * tests/srf_filter.test, * tests/srf_index.test, * tests/srf_info.test: (16:13:19) Fixed tests to use $outdir for output directory so we can neatly tidy it up for make distclean. Without this make distcheck fails. * tests/Makefile.am, * tests/illumina2srf.test, * tests/srf2fasta.test, * tests/srf2fastq.test, * tests/srf2illumina.test, * tests/srf_filter.test, * tests/srf_index.test, * tests/srf_info.test: (16:43:33) Fixed some bashisms and switched to make use of srcdir instead of top_srcdir/tests. 2008-09-09 James Bonfield * acinclude.m4: (13:27:35) Fixed the LIBCURL_CHECK_CONFIG code to not believe the output from "curl-config --libs". We try -lcurl first off to see if that also works. The reason is simply that curl-config --libs typically loves to explicitly specify all the implicit dependencies, such as -lssl -lcrypto -ldl, etc. This in turn locks compiled io_lib libraries and binaries into requiring very specific version of system libraries. * io_lib/Attic/Makefile.in: (13:27:57) *** empty log message *** * io_lib/compression.c: (13:30:24) Minor speed tweaks to qshift and unqshift * io_lib/mFILE.c, * progs/solexa2srf.c: (13:31:41) Added include of io_lib_config.h for autoconf builds so that the ftello and similar functions get the correct prototypes. * io_lib/srf.c, * io_lib/srf.h: (13:32:44) Made partial_decode_ztr non-static and added it, along with ztr_dup and construct_trace_name to the external header file for use in other parts of io_lib. * progs/Makefile.am, * progs/srf_filter.c, * progs/srf_info.c: (13:36:40) Added two new programs from Steven Leonard. srf_info: dumps out basic information on the contents of an SRF file, including the read name prefixes used, how many DBs per DBH and frequencies of ZTR chunk and meta-data strings. srf_filter: a tool to produce new srf files by filtering in or out data from an existing srf file. This can be performed either at the entire trace level (eg tagged as good or bad) or also at individual ZTR chunk levels (eg processed data only). * progs/srf2fasta.c, * progs/srf2fastq.c: (13:37:37) Include string.h for additional prototypes (for -Wall -Wno-paranthesis compilations). * progs/srf_extract_hash.c: (13:38:47) Major overhaul from Steven Leonard. It now supports a -fastq option to output fastq instead of ZTR files and optionally can use calibrated or non-calibrated confidence values too. * progs/srf_extract_linear.c: (13:39:44) Added support for SRFB_NULL_INDEX so that srf files with a blank index do not causes crashes. * progs/srf_index_hash.c: (13:40:44) Added extra error checking from Steven Leonard to spot duplicate read names. The new -c option also allows checking of an existing srf file without attempting to write a new index. 2008-09-08 James Bonfield * progs/solexa2srf.c: (08:40:20) Fixed bug reported by Robert Sanders. The fwd matrix was being written twice on paired-end runs instead of fwd+reverse. * COPYRIGHT, * io_lib/open_trace_file.c, * io_lib/sff.c: (10:56:46) Updated 454's copyright notice (following correspondence from Jim Knight at 454) to explicitly include permission to modify and redistribute the code. Also updated the GRL licence to be explicit rather than just an implied BSD style. 2008-08-29 James Bonfield * io_lib/deflate_interlaced.c: (09:00:39) Added external codes2codeset() function to turn bit-length arrays into codesets. Useful for tools that wish to use this code to use their own precomputed huffman trees. * io_lib/deflate_interlaced.h: (09:00:53) *** empty log message *** * progs/solexa2srf.c: (09:01:21) Renamed ILLUMINA_GA_PARAMS and ILLUMINA_GA_PARAMS2 to ILLUMINA_GA_BUSTARD_PARAMS and ILLUMINA_GA_FIRECREST_PARAMS. 2008-08-26 James Bonfield * progs/solexa2srf.c: (11:07:09) Added the second .params file (Data directory). Major reduction in memory usage when adding the .params files; we only hold this in memory for the first ZTR file per DBH as it ends up in the header anyway. (This also speeds things up too.) 2008-08-08 James Bonfield * progs/solexa2srf.c: (10:21:28) Fixed a bug in parse_4_float when handling strings with leading zeroes after the point, eg "17.04". Fortunately this is never triggered in the solexa data as it's always one single value after the decimal point. * configure.in, * io_lib/os.h: (10:33:29) Applied Chris Saunders' patch to use autoconf for checking machine endianness. * progs/solexa2srf.c: (16:52:10) Added a MAX_READS_PER_DBH #define to solexa2srf (defaults at 10000) to reduce the maximum number of traces per tile we process between SRF data block headers. This helps reduce the maximum memory usage which is especially important on dense GA2 runs where 200,000 clusters in a tile can be achieved. Also fixed a bug with using -qf/-qr when not supplying a list of tiles consecutively starting with tile 1. 2008-08-05 James Bonfield * io_lib/srf.c: (08:18:14) Fixed memory leak in srf_next_ztr reported by Rob Egan. Triggered by srf2fastq -C. 2008-07-24 James Bonfield * progs/solexa2srf.c: (15:47:32) Updated version to v1.10 Added -pf/-pr parameters to allow the phasing files to be stored. By default it attempts to derive these filenames from the fwd/rev cycle numbers. Auto-compute the basecaller name and version string from the directory name. * progs/solexa2srf.c: (15:58:15) Bug fix to get_base_caller() so that it can identify the directory when given a full pathname to elsewhere other than the cwd. 2008-07-18 James Bonfield * progs/solexa2srf.c: (15:54:51) No longer iterate through tiles printing up . or ! depending on whether we encounter an error. Now it just aborts at the point of failure. Also made the parsing code more robust as in a couple specific cases it only wrote to stderr without actually generating a non-zero exit code. These mean the tool is more amenable to running in a production pipeline. If it gets any error at all it'll be more obvious and forces attention. 2008-07-11 James Bonfield * progs/solexa2srf.c: (11:35:28) Updated the rounding of int/nse/sig2 to all use the rint() function to round to closest integer value. Previously int/nse rounded down and sig2 rounded closest. (Although the rounding on sig2 was via +/- 0.5 and so the half-way cases sometimes give different answers to the new code using rint()). It has a very minor impact overall, but it is now consistent. =============================================================================== 2008-07-09 James Bonfield * 1.11.3 released. 2008-07-09 jkbonfield * io_lib/mFILE.c: * io_lib/Read.c, * io_lib/mFILE.h: (13:54:59) Fixed a bug visible with "extract_seq -fasta_out -fofn f -output f.fasta" whereby only the last file was visible. This is due to the mFILE mechanism and an explicit fseek upon writing each file. Fixed this by using an extended freopen option ("wbx" instead of "wb") to override this feature. It's not ideal, but gets the job done - I hope. 2008-07-08 jkbonfield * io_lib/srf.c, * io_lib/srf.h: (13:22:57) Added SRFB_NULL_INDEX as an SRF block type. It's essentially type 0 and is defined to be 8 long (with 7 more zeros). The purpose is to transparently gloss over the 8-zeros that may be on the end of some files indicating a missing index block. * progs/solexa2srf.c: (13:34:40) MAJOR BUG FIX! Fixed a bug in reorder_ztr() whereby the sorted order of multiple chunks of the same chunk type were not "stable". The result of this is that 3 SMP4 chunks (say A, B, C) may end up sorted A, B, C with nchunks==9 and C, A, B with nchunks==15. Given that an optimisation means that we change the number of chunks depending on whether we've encoded HUFF chunks this causes a "corruption" in as far as the correct data is stored but with potentially an incorrect meta-data block for the first SMP4 chunk. See srf_fix.c to reverse this problem. Also added a warning regarding the -C option and -qf option. These are inherently incompatible (right now) as purity filtered data is not calibrated. Updated version to v1.8 2008-06-12 jkbonfield * progs/srf2fasta.c, * progs/srf2fastq.c: (10:44:23) Removed memory leaks from using ztr_find_chunks and not freeing the result. =============================================================================== 2008-06-04 James Bonfield * 1.11.2 released. 2008-06-04 jkbonfield * docs/ZTR_format: (13:06:36) Added some text regarding *ideas* for version 2. These are not officially part of any stanard yet. * io_lib/compression.c: (13:06:54) Comment change only. 2008-06-03 jkbonfield * io_lib/srf.c: (16:23:50) Applied bug fix from John Emhoff: srf_read_xml was incorrectly interpreting the XML length as the length of the XML string rather than the entire SRF block itself including header. It now agrees with srf_write_xml, which interpreted this correctly. 2008-05-23 jkbonfield * docs/ZTR_format: (08:38:05) Documented TYPE meta-data for SMP4 and removed the comment about being mutually exclusive with SAMP. Added explanation of log-odds vs phred scales. Added CNF1 chunk type (how did I miss this before?). 2008-05-21 jkbonfield * io_lib/srf.c: (09:12:23) Fixed memory leak in construct_trace_name. (Patch from John Emhoff at Heliocos.) 2008-05-14 jkbonfield * progs/solexa2srf.c: (13:08:34) Fixed floating point to integer rounding of trace data to round to closest instead of floor(value). * io_lib/srf.c, * io_lib/srf.h, * progs/solexa2srf.c, * progs/srf2fasta.c, * progs/srf2fastq.c, * progs/srf2solexa.c, * progs/srf_dump_all.c: (14:13:15) Added changes from Camil Toma (albeit modified here and there) to incorporate the -C option to various tools. This allows for chastity filtered data to be stored in SRF, but tagged as being bad data. We then get the option to filter it on extraction instead. 2008-05-13 jkbonfield * progs/solexa2srf.c: (14:25:53) Reverted the footer position change in encode_ztr() back (to the 20th February 2008) to taking out the meta-data into the header block too. Although this contains variable data (OFFS=value) it's the same for all members of a tile. 2008-05-08 jkbonfield * io_lib/open_trace_file.c: (11:06:53) Sped up searching in SRF files by stripping off the directory name when calling srf_find_trace(). (It got to this before eventually, but only after searching various false combinations.) * io_lib/os.h: (11:07:31) Minor change to prevent errors when compiling within the Staden Package. No impact for autoconf version. * io_lib/srf.c: (11:08:18) Fixed bug in srf_find_trace that caused it to rarely fail to find a trace when querying the hash table. 2008-05-06 jkbonfield * docs/ZTR_format: (11:44:51) Fixed error in the pictoral diagram describing the magic number. (It is correct everywhere else.) * io_lib/open_trace_file.c: (14:27:24) Added SRF interfaces to open_trace_file meaning we can now try specifying traces file fubar.srf/tname or TRACE_PATH=SRF=fubar.srf and tname. * configure.in, * io_lib/ztr.c, * progs/Makefile.am, * progs/solexa2srf.c, * progs/srf2solexa.c: (15:35:36) Implemented Come Raczy's (Illumina) changes. These involved renaming the solexa2srf and srf2solexa tools to be illumina2srf and srf2illumina and the addition of qcal support in preparation for the GA v1.0 release. Note that currently the filenames are the same as before, in order to preserve change history. * Makefile: (15:43:33) Added srf.o to the Staden Package Makefile (NB: not part of the autoconf system.) 2008-04-15 jkbonfield * io_lib/hash_table.c: (15:09:41) Initialises pb and pc in hash() function when using HASH_FUNC_JENKINS3. Bug reported by Cristian Goina. 2008-04-08 jkbonfield * progs/solexa2srf.c: (11:22:33) Fixed a code inefficiency when using -qf and -qr. * io_lib/srf.c, * io_lib/srf.h: (16:16:55) Fixed bugs regarding binary format read_id suffixes, reported and mostly patched by Cristian Goina. The srf_trace_body_t struct now has a read_id_length field. The srf_construct_trace_body() function has an extra argument to pass in the length, or -1 if unknown (it'll use strlen then). New function srf_write_pstringb to write binary pstrings, avoiding the requirement for strlen(). * progs/solexa2srf.c: (16:21:57) Added extra arg to srf_construct_trace_body call (see srf.c change log). Fixed a bug introduced in the recent efficiency improvements for -qf/-qr. These meant that many sequences were incorrectly skipped. 2008-04-07 jkbonfield * progs/solexa2srf.c: (08:54:06) Increased the estimation of number of bytes per cycle in the allocation in get_sig(). * progs/solexa2srf.c: (15:11:06) Fixed error that crept in when error checking was added to compress_chunk calls. Missing curly braces meant that some chunks were not compressed while other chunks got needless additional layers of compression. 2008-04-03 jkbonfield * progs/solexa2srf.c: (15:57:06) The defaults for -N and -n are now using the same naming conventions used in Gerald during the fastq generation steps. To do this is looks at the run folder root directory name to get the run date, machine name and run number. (These are available for use as %d, %m and %r in the format strings.) Calibrated confidence values are now automatically included if the -qf or -qr parameters are used (specifying the fastq filename). Note this only works currently if the number of bases after calibration is the same as the number before. The calibrated confidence values are written in a CNF1 ztr chunk (in addition to the existing CNF4 chunk for uncalibrated values) and are rescaled to adhere to the phred scale (-10 * log10(1-P)). Added meta-data to the confidence chunks (CNF1 and CNF4) with a SCALE key. The value is either LO (log-odds) or PH (phred). This increases file size somewhat as it's written once per trace, but the long-term goal is to upgrade ZTR to support the ability to specific default meta-data keys/values. * progs/srf2fastq.c: (15:57:58) Added a -c option to output calibrated confidence values instead of uncalibrated ones. Plus additionally it should be able to handle multiple archives on the command line instead of a single one. * progs/solexa2srf.c: (17:00:28) Added support for using popen() to gzip -cd instead of using gzopen. The reason is that it's between 3 and 5 times faster doing that. I'm unsure why, but overall it sped up solexa2srf -r 3 fold when the Firecrest data is gzipped. 2008-04-02 jkbonfield * progs/solexa2srf.c: (09:14:45) Fixed the footer(aka body) position calculation so it works still on trace files containing no trace data at all. Ie solexa2srf -P. * progs/solexa2srf.c: (09:28:02) Added Camil Toma's (Broad) changes to support -mf and -mr paremeters. These provide finer grained control over the filenames of the forward and reverse matrices. * progs/srf2solexa.c: (09:29:04) Added Camil Toma's (Broad) changes to extract text files embedded in ZTR TEXT chunks. * progs/srf_dump_all.c: (10:54:29) Added Camil Toma's (Broad) changes to srf_dump_all. These add multiple new features, increasing the source length 7 fold. * progs/srf2solexa.c, * progs/srf_dump_all.c: (10:56:06) Fixed bug reported by Cristian Goina (JCVI): we now use srf_open with mode "rb" instead of "r". This resolves an issue on Windows/DOS when dealing with binary data including ^Z characters being interpreted as EOF. * progs/srf_dump_all.c: (11:05:25) Fixed missing newlines in the standard "dump" format. 2008-03-20 jkbonfield * io_lib/hash_table.c, * progs/hash_list.c: (09:45:07) Added more includes of io_lib_config.h to ensure 64-bit file support works correctly. 2008-03-13 jkbonfield * progs/solexa2srf.c: (09:32:15) Fixed an error when passing in fully qualified pathnames. We now chdir() to the directory containing the seq.txt file and work from there. Also some functions involved in supporting fastq files with callibrated confidence values. This is unfinished and needs more work, specifically it doesn't do anything with the sequence/qual yet (just parses it) and the entire operation should probably work from the GERALD directory instead of the Bustard directory. Hence for now the -qf and -qr options are undocumented. * progs/solexa2srf.c: (11:53:32) Incorporated Come Razy's changes to solexa2srf, with a few modifications to adhere to C89 instead of C9X C standards. These add support for the new Illumina IPAR file format via the -I command line option. 2008-02-29 jkbonfield * acinclude.m4, * configure.in: (14:10:53) Fixed autoconf build environment for Fedora. We no longer assume /usr/lib is a valid default for zlib, instead relying on either the compiler to find it or an explicit --with-zlib option. See SF bug 1898427 https://sourceforge.net/tracker/index.php?func=detail&aid=1898427&g roup_id=100316&atid=627058 =============================================================================== 2008-02-20 James Bonfield * 1.11.0 released. 2008-02-20 James Bonfield * progs/srf2fastq.c: (12:49:09) Removed the ztr2read conversion and operate directly on the ztr struct. This is now 25% faster. * progs/srf2fasta.c: (12:49:30) New program - trivially modelled on srf2fastq.c * progs/solexa2srf.c: (10:33:36) Altered the header/footer split for ZTR to stop just before the metadata part of a SMP4 chunk. Previously it was after this and just before the data, but now we can have multiple SMP4 chunks in a single ZTR file this was breaking things. 2008-02-18 James Bonfield * io_lib/ztr.h: (16:53:52) Added ZTR_TYPE_REGN definition. We have no explicit code to implement this yet in ztr.c, but for now it's in solexa2srf. * progs/solexa2srf.c: (16:55:38) Added support for specifying the start coord for the 2nd read in a paired-read run (solexa2srf -2 ). This also adds a REGN chunk to the ZTR file and stores the second matrix file too. * progs/srf2solexa.c: (16:56:39) Major overhaul to support raw data as well as processed data. Still to-do: write out .params and the two matrix files. 2008-02-15 James Bonfield * io_lib/srf.c: (10:05:54) Fixed memory leak in srf_read_trace_body usage. This was primarily visible from within srf_index_hash. * progs/srf2solexa.c, * io_lib/srf.c, * progs/srf_index_hash.c, * progs/srf_extract_hash.c: (12:35:19) Added include of io_lib-config.h to ensure picking up the correct compiler definitions for 64-bit file size support. * progs/srf_extract_linear.c: (12:40:55) Fixed memory leaks. 2008-02-14 James Bonfield * progs/solexa2srf.c: (17:02:42) Don't bother performing ZTR_FORM_TSHIFT transformation on the solexa noise data as it doesn't help it at all. Also hard coded the interlaced huffman to operate in batches of 2 instead of 8 for noise data for the same reason. * io_lib/ztr_translate.c: (17:07:15) ztr2read() now correctly handles translation of ZTR files with multiple samples in. Specifically it only sets the Read struct baseline and trace[ACGT] arrays when the TYPE meta-data field is blank, PROC or A,C,G T. This fixes trace_dump etc on solexa srf files, (note that the srf files themselves were perfect valid anyway). 2008-02-06 James Bonfield * progs/extract_seq.c: (11:04:38) Use set_compression_method to explicitly disable gzipped output from extract_seq (which is by default on if the input is gzipped). * io_lib/Makefile.in, * progs/Makefile.am, * progs/extract_qual.c: (11:04:59) Added Steven Leonard's extract_qual program (derived from extract_seq). 2008-01-28 James Bonfield * progs/solexa2srf.c: (09:47:42) Sped up parse_4_int and parse_4_float substantially. 2008-01-25 James Bonfield * Tagged iolib-1-11-0b8 * progs/solexa2srf.c: (11:38:34) Fixed small memory leak in zfopen/zfclose. Fixed a bug where reorder_ztr could put CNF4 before BASE, breaking the decoding. Added support for loading solexa matrix and params files into appropriately named TEXT key/value pairs. It also adds the PROGRAM_ID there now too. Sped up chastity filtering. We now only read the line of text rather than decode it for data that is filtered. Minor tweaks to program usage output. * progs/trace_dump.c: (11:39:09) Updated output to be more inline with srf_dump_all. Also now supports baseline properly. * progs/ztr_dump.c: (11:39:34) Added ZTR_FORM_XRLE2, ZTR_FORM_QSHIFT and ZTR_FORM_TSHIFT. 2008-01-24 James Bonfield * io_lib/ztr.c, * io_lib/ztr.h: (17:17:52) Two new utility functions that are *long* overdue. ztr_new_chunk() - creates and initialises a new chunk in a ztr struct. ztr_add_text() - adds arbitrary key/value pairs to the TEXT chunk, creating it if required. 2008-01-22 James Bonfield * io_lib/srf.c, * io_lib/srf.h: (11:07:40) Allow for srf_read_index_hdr() to be used to read an index internal to the file rather than at the end of the file. To accommodate this an extra "no_seek" argument has been added. * progs/solexa2srf.c: (11:10:56) Support multiple trace channels (raw "int" & noise, in addition to or instead of the processed data). Input data may now optionally be compressed. Added a -c option to do chastity filtering via the .qhg files. Improved the dynamic range filtering. We no longer trim all negative values in preference for high positive values. Instead we set the clip points to trim the least number of total values. * progs/srf2solexa.c: (11:11:35) Fixed the baseline subtraction. It now uses the correct value instead of a hardcoded 32768. * progs/srf_extract_linear.c: (11:12:15) Changed to use the new srf_read_index_hdr arguments. * progs/srf_index_hash.c: (11:13:12) Improved index support when the input is concatenated SRF files already containing indices. It now overwrites the last index. * progs/ztr_dump.c: (11:13:47) Added display of meta-data TYPE field for trace sample chunks. 2008-01-14 James Bonfield * io_lib/srf.c, * io_lib/srf.h, * progs/srf_index_hash.c: (16:57:36) Bug fixes to do with reading and writing the index format. We incorrectly handled having null dbhFile and containerFile elements, plus also computed the index size wrong for these fields too. =============================================================================== 2008-01-11 James Bonfield * 1.11.0b7 released. * io_lib/srf.c: (11:35:09) IMPORTANT BUG FIX: The SRF Data Block Header had the blockSize field 4 bytes too large, so SRF files produced did not conform to the standard. Also fixed SRF reading support for when headerBlob is zero length. We then delay ztr decoding until we've read the actual data blob. * io_lib/compression.c, * io_lib/deflate_interlaced.c, * io_lib/deflate_interlaced.h, * io_lib/srf.c, * io_lib/ztr.c, * io_lib/ztr_translate.c, * progs/solexa2srf.c: (12:26:11) Added missing prototypes and fixed various signed vs unsigned assignments, as spotted by the Intel C Compiler. 2008-01-02 James Bonfield * Tagged iolib-1-11-0b6 2008-01-02 James Bonfield * io_lib/srf.c: (11:41:00) Removed some debugging output 2007-12-12 James Bonfield * io_lib/srf.c, * io_lib/srf.h, * progs/srf_index_hash.c: (18:50:46) Updates to SRF 1.3. This includes removal of the readID counter and added support for printf style formatting. It also has some tweaks to the format for the index (32-bit vs 64-bit and dbh/container file strings). Both versions have therefore been bumped (SRF 1.3 and index 1.01). TODO: support for extracting data from an SRF file that's split with container headers, trace headers and trace bodies all in separate files. 2007-11-12 James Bonfield * Tagged iolib-1-11-0b5 2007-11-08 James Bonfield * io_lib/Read.c, * io_lib/Read.h, * io_lib/abi.h, * io_lib/alf.h, * io_lib/array.c, * io_lib/array.h, * io_lib/compress.c, * io_lib/compress.h, * io_lib/compression.c, * io_lib/compression.h, * io_lib/ctfCompress.c, * io_lib/deflate_interlaced.c, * io_lib/deflate_interlaced.h, * io_lib/error.c, * io_lib/error.h, * io_lib/expFileIO.c: * io_lib/expFileIO.h, * io_lib/files.c, * io_lib/find.c, * io_lib/fpoint.c, * io_lib/fpoint.h, * io_lib/hash_table.c, * io_lib/hash_table.h, * io_lib/jenkins_lookup3.c, * io_lib/jenkins_lookup3.h, * io_lib/mFILE.c, * io_lib/mFILE.h, * io_lib/mach-io.c, * io_lib/mach-io.h, * io_lib/misc.h, * io_lib/misc_scf.c, * io_lib/open_trace_file.c, * io_lib/open_trace_file.h, * io_lib/os.h, * io_lib/plain.h, * io_lib/read_alloc.c, * io_lib/read_scf.c, * io_lib/scf.h, * io_lib/scf_extras.c, * io_lib/scf_extras.h, * io_lib/seqIOABI.c, * io_lib/seqIOABI.h, * io_lib/seqIOALF.c, * io_lib/seqIOCTF.c, * io_lib/seqIOCTF.h, * io_lib/seqIOPlain.c, * io_lib/sff.c, * io_lib/sff.h, * io_lib/srf.c, * io_lib/srf.h, * io_lib/stdio_hack.h, * io_lib/strings.c, * io_lib/tar_format.h, * io_lib/traceType.c, * io_lib/traceType.h, * io_lib/translate.c, * io_lib/translate.h: * io_lib/Makefile.am, * io_lib/Makefile.in, * io_lib/vlen.c, * io_lib/vlen.h, * io_lib/write_scf.c, * io_lib/xalloc.c, * io_lib/xalloc.h, * io_lib/ztr.c, * io_lib/ztr.h, * io_lib/ztr_translate.c: (14:58:14) Renamed files from {abi,alf,ctf,exp_file,plain,read,scf,sff,srf,utils,ztr} subdirs to a single io_lib subdir. The purpose of this is so that code can #include from both within this source tree and externally when compiling against io_lib, resolving problems when including files that then include other io_lib files. Plus it's simply tidier this way. * io_lib/Read.c: * io_lib/Read.h, * io_lib/abi.h, * io_lib/alf.h, * io_lib/array.c, * io_lib/compress.c, * io_lib/compress.h, * io_lib/compression.c, * io_lib/compression.h, * io_lib/ctfCompress.c, * io_lib/deflate_interlaced.c, * io_lib/expFileIO.c, * io_lib/expFileIO.h, * io_lib/files.c, * io_lib/find.c, * io_lib/fpoint.c, * io_lib/hash_table.c, * io_lib/jenkins_lookup3.c, * io_lib/mFILE.c, * io_lib/mach-io.c, * io_lib/mach-io.h, * io_lib/misc.h, * io_lib/misc_scf.c, * io_lib/open_trace_file.c, * io_lib/open_trace_file.h, * io_lib/plain.h, * io_lib/read_alloc.c, * io_lib/read_scf.c, * io_lib/scf.h, * io_lib/scf_extras.c, * io_lib/scf_extras.h, * io_lib/seqIOABI.c, * io_lib/seqIOABI.h, * io_lib/seqIOALF.c, * io_lib/seqIOCTF.c, * io_lib/seqIOCTF.h, * io_lib/seqIOPlain.c, * io_lib/sff.c, * io_lib/sff.h, * io_lib/srf.c, * io_lib/srf.h, * io_lib/stdio_hack.h, * io_lib/strings.c, * io_lib/traceType.c, * io_lib/traceType.h, * io_lib/translate.c, * io_lib/translate.h, * io_lib/vlen.c, * io_lib/write_scf.c, * io_lib/xalloc.c, * io_lib/ztr.c, * io_lib/ztr.h, * io_lib/ztr_translate.c, * progs/Makefile.am, * progs/append_sff.c, * progs/convert_trace.c, * progs/extract_fastq.c, * progs/extract_seq.c, * progs/get_comment.c, * progs/hash_exp.c, * progs/hash_extract.c: * progs/hash_list.c, * progs/hash_sff.c, * progs/hash_tar.c, * progs/index_tar.c, * progs/makeSCF.c, * progs/scf_dump.c, * progs/scf_info.c, * progs/scf_update.c, * progs/solexa2srf.c, * progs/srf2fastq.c, * progs/srf2solexa.c, * progs/srf_dump_all.c, * progs/srf_extract_hash.c, * progs/srf_extract_linear.c, * progs/srf_index_hash.c, * progs/trace_dump.c, * progs/ztr_dump.c: (17:24:16) Modify the include paths to use "io_lib/foo.h" instead of "foo.h" or . The advantage of this is that the source for external programs compiled and linked against io_lib can use exactly the same #include statements as the progs/* files. * Makefile.am, * configure.in: (17:37:00) Updated to handle the filename movements. * docs/Hash_File_Format, * docs/ZTR_format: (17:42:14) Moved from elsewhere 2007-11-06 James Bonfield * README, * CHANGES Updated * progs/Makefile.am: (10:09:33) Added srf_extract_hash; demonstration of using srf_find_trace to query a hash table index. * progs/srf_extract_hash.c: (10:09:34) Added srf_extract_hash; demonstration of using srf_find_trace to query a hash table index. * srf/srf.h: (10:10:15) Bug fix: updated version string to 1.2. (We were already writing using the 1.2 standard but claiming 1.1) * srf/srf.c: (10:12:04) Bug fix when using glibc: added explicit include of io_lib_config.h prior to stdio.h so the AC_SYS_LARGEFILE autoconf magic does its tricks. This is only required for glibc, which appears broken by default as it doesn't contain a prototype for fseeko despite exporting the system, unless explicit macros are defined. 2007-11-02 James Bonfield * progs/solexa2srf.c: (13:57:30) Improved handling of out-of-range data. Specifically what happens when the minimum value in a trace is -40000 and the maximum value is +50000. We now clip -ve values if the range doesn't fit. * ztr/ztr_translate.c: (13:59:41) Added SMP4 'OFFS' metadata and Read->baseline support when converting from read2ztr. 2007-11-01 James Bonfield * srf/srf.c: (14:24:30) More error checking paranoia in SRF support; given that fwrite() can sometimes claim success even when it failed we now explicitly call ferror and check fclose() return. * ztr/FORMAT, * ztr/ztr.c, * ztr/ztr.h, * ztr/ztr_translate.c: (14:26:02) Better support for ZTR v1.2. We now correctly handle SAMP/SMP4 metadata fields and make use of OFFS when converting to Read. * progs/solexa2srf.c, * progs/srf_dump_all.c: (14:26:35) Improved support for ztr OFFS metadata and removed the old crufty SHIFT_BY #define. * progs/solexa2srf.c: (17:35:58) Bug fix: we were missing the trailing nul of the trace OFFS metadata value. Also the setting of min_val when the range is too high was invalid. Note further work is needed here as we've already truncated to 16-bit making it impossible to tell where the wraparound occurs. * ztr/ztr.c, * ztr/ztr_translate.c: (18:00:55) Fixed memory leaks. 2007-10-26 James Bonfield * progs/Makefile.am, * progs/srf2fastq.c: (10:35:56) Added srf2fastq conversion to demonstrate usage of read_sections() and as a benchmark for pure sequence+quality extraction. (It appears to cope at about 100,000 sequences/second.) * ztr/deflate_interlaced.c, * ztr/deflate_interlaced.h: (10:38:04) Changed generate_code_set and huffman_codeset_destroy to keep the same huffman_codeset_t structure for all uses of one of the predetermined CODE_* codesets. * ztr/ztr_translate.c: (10:40:37) ztr2read() now honours the read_sections() setting. To do this it also means it uncompresses data on the fly, but only for chunk types that it needs to. Hence this code no longer needs uncompress_ztr() calling first either. * srf/srf.c, * srf/srf.h: (10:46:07) Moved some static local variables out of srf_next_ztr into the srf_t object. This means the code should be multi-threaded. * ztr/FORMAT: (10:47:07) Current v1.3 draft * ztr/Attic/deflate_simple.c, * ztr/Attic/deflate_simple.h: (10:50:32) Replaced by deflate_interlaced.[ch] some time ago. * progs/srf2solexa.c: (11:35:59) Switched to using srf_next_ztr() in order to avoid repeated huffman codeset decoding. Now much faster. * CHANGES: (14:28:27) *** empty log message *** * README, * configure.in: (14:31:48) *** empty log message *** 2007-10-25 James Bonfield * progs/srf_dump_all.c, * progs/srf_extract_linear.c, * srf/srf.c, * srf/srf.h, * ztr/compression.c, * ztr/deflate_interlaced.c, * ztr/deflate_interlaced.h, * ztr/ztr.c, * ztr/ztr.h: (14:21:16) Upgraded SRF to support v1.2 specification. NOTE: No support is kept for v1.1! Dramatically improved the speed of sequential decoding (eg in srf_dump_all) by use of caching huffman_codeset_t structs. * progs/srf_dump_all.c: (16:55:24) Added unused (#if-ed out) printf variant. It's for possible efficiency gains, but ignoring for now. * ztr/compression.c, * ztr/deflate_interlaced.c: (16:56:06) Fixed unsthuff uncompression for the predfined CODE_* huffman trees. 2007-10-17 James Bonfield * progs/solexa2srf.c: (16:56:11) Dropped ZLIB compression of BPOS as A) it's tiny anyway and B) we don't want to waste time compressing it over and over again. (TODO: actually we don't need to encode it over and over again either.) =============================================================================== 2007-10-16 James Bonfield * progs/solexa2srf.c, * srf/srf.c, * ztr/compression.c, * ztr/deflate_interlaced.c, * ztr/deflate_interlaced.h, * ztr/ztr.c: * ztr/ztr.h: (08:36:06) Improvements to speed following code profiling. * progs/solexa2srf.c: (16:49:38) Major overhaul of parsing code. We now roll our own specialist parser instead of using strtok and sscanf. This has approximately doubled the speed (so maybe 4-5x faster in the parsing component). * configure.in: (16:52:06) Boost version to 1.11.0b3 2007-10-11 James Bonfield * ztr/deflate_interlaced.c: (13:34:48) Fixed a buffer overrun. * ztr/compression.c: (13:35:59) Removed a small memory leak and improved initialisation in tshift to avoid (harmless) valgrind error. * progs/srf2solexa.c, * progs/srf_dump_all.c, * srf/srf.c: (13:37:29) Removed memory leaks. 2007-10-02 James Bonfield * README, * ztr/FORMAT: (08:55:47) Minor doc updates * read/Makefile.am: (08:57:02) Fixed src vs srf typo. * README: (08:58:09) Version change * configure.in: (08:59:11) Version change 2007-09-28 James Bonfield * Makefile.am, * configure.in, * progs/Makefile.am, * progs/solexa2srf.c, * progs/srf2solexa.c, * progs/srf_dump_all.c: (11:07:15) File Edit Options Buffers Tools Help Version 1.11.0b1 Added preliminary SRF support. This consists of a new subdirectory 'srf' (yes these all really need merging into a single directory, but that's a later task), a substantial update to ZTR and a variety of SRF tools in progs. The old huffman_static.[ch] files were renamed and substantially worked upon to create deflate_interlaced.[ch]. Added new compression types. xrle2, tshift and qshift. The latter two of these are very specific to trace and quality packings. May need to rename to be more generic. * progs/srf_extract_linear.c, * progs/srf_index_hash.c, * progs/ztr_dump.c, * read/Makefile.am, * srf/srf.c, * srf/srf.h, * ztr/compression.c, * ztr/compression.h, * ztr/deflate_interlaced.c, * ztr/deflate_interlaced.h, * ztr/Attic/huffman_static.c, * ztr/Attic/huffman_static.h, * ztr/ztr.c, * ztr/ztr.h: (11:07:16) File Edit Options Buffers Tools Help Version 1.11.0b1 Added preliminary SRF support. This consists of a new subdirectory 'srf' (yes these all really need merging into a single directory, but that's a later task), a substantial update to ZTR and a variety of SRF tools in progs. The old huffman_static.[ch] files were renamed and substantially worked upon to create deflate_interlaced.[ch]. Added new compression types. xrle2, tshift and qshift. The latter two of these are very specific to trace and quality packings. May need to rename to be more generic. * ztr/compression.c: (15:28:12) Fixed a bug in run length encoding XRLE2 format when dealing with very long repeat runs. * ztr/FORMAT-1.2: (15:34:26) Fixed error in XRLE description. * ztr/FORMAT: (15:34:41) Further updates documenting version 1.3 changes 2007-09-03 James Bonfield * ztr/Attic/deflate_simple.c, * ztr/Attic/deflate_simple.h: (11:11:12) Mostly a rename from huffman_static to deflate_simple, but also a large overhaul and redesign. This code implements the huffman component of the Deflate algorithm. * ztr/compression.c, * ztr/compression.h, * ztr/ztr.c, * ztr/ztr.h: (11:12:16) Updates to deal with the change from huffman_static to deflate_simple. * Makefile: * Makefile.am, * read/Makefile.am: * progs/ztr_dump.c: (11:35:50) Update for rename of huffman_static.h to deflate_simple.h 2007-08-15 James Bonfield * ztr/compression.c, * ztr/Attic/huffman_static.c, * ztr/Attic/huffman_static.h: (15:30:04) Major overhaul of huffman_static.c. It's been substantially tuned for speed and also has several bug fixes to ensure we have a consistent sort function before applying the canonical_codes function (which previously meant differing qsort implementations would give different codes). * ztr/FORMAT-1.2: (15:31:58) Created a snapshot of FORMAT for ZTR v1.2 only 2007-07-16 James Bonfield * acinclude.m4, * configure.in: (08:03:42) Updated configure.in to support --with-lib=DIR. * utils/files.c: (08:05:23) Switched from using tempnam() to tmpfile(). This meant recreating tmpfile() wrapper on MS Windows to avoid bugs with it always attempting to write to the root directory, regardless of user privs. * utils/open_trace_file.c, * utils/os.h: (08:05:24) Switched from using tempnam() to tmpfile(). This meant recreating tmpfile() wrapper on MS Windows to avoid bugs with it always attempting to write to the root directory, regardless of user privs. * progs/hash_extract.c: (09:01:39) Fixed bug on windows: we now set stdout to be binary mode first. * utils/open_trace_file.c: (09:02:51) INCOMPATIBLE CHANGE: On windows we now use semi-colon as the path separator. The reason is that with the MinGW getenv() seems to do "clever things" with PATH variables and consequently ends up corrupting our clumsy attempt of escaping colons in paths. 2007-07-11 James Bonfield * Makefile, * Makefile.am, * read/Makefile.am, * utils/hash_table.c, * utils/hash_table.h, * utils/jenkins_lookup3.c, * utils/jenkins_lookup3.h: (13:57:26) Added Bob Jenkins' lookup3.c code to the hash_table support. It also now uses this for 64-bit hashing. 2007-07-06 James Bonfield * ztr/Attic/huffman_static.c: (09:06:46) Bug fix to last commit - finish adding the CODE_ENGLISH and removal of other code sets. 2007-07-05 James Bonfield * plain/seqIOPlain.c: (08:27:43) For FASTA format files we now, eventually, read the first sequence. * ztr/FORMAT, * ztr/Attic/huffman_static.c, * ztr/Attic/huffman_static.h, * ztr/ztr.c, * ztr/ztr.h: (08:28:30) Work-in-progress update to support HUFF chunks and STHUFF (static huffman) compression methods. * progs/ztr_dump.c: (08:29:15) Updated to support the new static-huffman compression method. * ztr/Attic/huffman_static.c, * ztr/Attic/huffman_static.h: (10:45:48) Removed potentially variable huffman trees (solexa trace, confidence values) and added an english text tree. This was based on War of the Worlds, The Gold Bug, 200000 Leagues Under the Sea and the "man ascii" unix manual page for a bit of variety. It also includes the SYM_ANY escape code for handling out-of-band data. =============================================================================== 2007-05-30 James Bonfield * progs/extract_seq.c: (11:10:59) Fixed usage string (added -ztr). * io_lib-config.in: (11:11:26) Added explicit @LIBZ@ to --libs. * progs/hash_sff.c: (11:12:07) Fixed FILE handling bug. * ztr/ztr.c: (11:13:07) Maded entropy() static to avoid clash with ztr_dump.c * CHANGES, * README, * configure.in: (11:34:53) Updated to version 1.10.2 2007-04-19 James Bonfield * utils/hash_table.c: (16:18:19) Fixed a memory leak and also changed to use off_t instead of long for file offsets. * ztr/Attic/huffman_static.c: * ztr/Attic/huffman_static.h: * ztr/ztr.c: * ztr/ztr.h: * Makefile: * Makefile.am: * read/Makefile.am: (16:21:59) Added HUFFMAN_STATIC ZTR compression method. * configure.in: * abi/fpoint.h: * abi/seqIOABI.h: * ctf/seqIOCTF.h, * exp_file/expFileIO.h: * progs/convert_trace.c, * progs/extract_fastq.c: * progs/extract_seq.c: * progs/hash_sff.c, * progs/makeSCF.c: * progs/ztr_dump.c: * read/Read.h: * read/scf_extras.h: * read/translate.h: * scf/scf.h: * sff/sff.h: * utils/array.h: * utils/compress.h: * utils/error.h: * utils/hash_table.h: * utils/mFILE.h: * utils/mach-io.h: * utils/misc.h: * utils/open_trace_file.h: * utils/os.h: * utils/stdio_hack.h: * utils/tar_format.h: * utils/traceType.h: * utils/vlen.h: * utils/xalloc.h: * ztr/compression.h: (16:30:14) Added extern "C" {...} guards around all header files to ease use from within C++ source. 2006-08-07 James Bonfield * progs/convert_trace.c: (14:12:39) Added -signed and -noneg options to perform shifting of trace data to avoid the unsigned issues for TRACE. 2006-07-18 James Bonfield * utils/traceType.c: (13:44:13) Added support for anytr in str2int and int2str conversions. 2006-07-06 James Bonfield * progs/hash_exp.c: (08:45:18) Use binary mode, for windows. * progs/hash_exp.c: (09:20:20) Remove control-M from end of line when indexing ID lines. * progs/hash_exp.c: (09:22:52) Oops; removal of debugging info 2006-07-05 James Bonfield * Makefile, * dependencies: (15:45:01) Fixed dependency generation for io_lib 2006-07-04 James Bonfield * utils/mFILE.c, * utils/mFILE.h: (13:43:28) Added mfcreate_from(). It has a usage syntax identical to mfreopen(), but unlike mfreopen() it doesn't do anything with the file pointer (neither closing ie or remembering it in the structure). * progs/extract_fastq.c: (16:19:30) Pathname hacking and listed -ztr on command line. * progs/extract_seq.c, * progs/makeSCF.c: (16:20:17) Added -ztr as a command line option. * progs/hash_exp.c: (16:21:14) Hash_exp now outputs to the same file containing the experiment files (in appended hash-table mode). * progs/hash_extract.c: (16:21:53) Bug fix: now only needs at least 1 filename specified when fofn mode is not in use. * progs/hash_list.c: (16:22:40) error detection and protection 2006-06-27 James Bonfield * utils/mFILE.c: (11:16:21) Bug fix to the previous change: mstdin(), mstdout() and mstderr() now correctly mark their streams and read and write capable. * utils/mFILE.c, * utils/mFILE.h: (15:48:15) Added mfdetach() to allow the file pointer to be closed without deallocating the mFILE structure. Also removed the mFILE->fname component and replaced uses with checks to mode & MF_WRITE. * utils/mFILE.c, * utils/mFILE.h: (15:58:52) Corrected duff spelling! 2006-06-26 James Bonfield * utils/mFILE.c, * utils/mFILE.h: (16:47:30) Fixed a bug in mfflush whereby it could attempt to write HUGE amounts of data (-ve size) when files are truncated before flushing; it now fseeks before doing the write and checks if the size is +ve. Also fixed mfwrite to correctly reset the flush_pos record. Added a mode field to the mFILE structure so we can keep track of append and read-only flags. These are checked for in the mfwrite function so mfwrite now writes to the correct location when append mode is used (ie forced to the end of file) and it now returns 0 when attempting to write to a read-only mFILE. =============================================================================== 2006-06-20 awhitwham * utils/open_trace_file.c: (11:37:24) Changed to open trace files as read only * configure.in: (13:42:57) Updated to version 1.10.1 2006-06-15 James Bonfield * io_lib.m4: (10:58:46) First working(?) version; testing on the Internal Trace Server. * io_lib.m4: (11:18:39) bug fix IO_LIB_CPPFLAGS & IO_LIB_LDFLAGS initialisation" * Makefile.am: (11:25:57) Added io_lib-config to install scripts * progs/Makefile.am: (11:26:28) Added LIBCURL flags * read/Makefile.am: (11:26:54) Added LIBCURL_CPPFLAGS usage. * CHANGES: (15:40:12) *** empty log message *** * progs/Makefile.am: (15:40:28) Added ztr_dump to the list of progs. * progs/ztr_dump.c: (15:41:05) Support for log2 format. * ztr/compression.c, * ztr/compression.h, * ztr/ztr.c: (15:42:06) Added a ZTR_FORM_LOG2 compression technique. It's an experimental lossy compression and is turned off right now; the space saving was only about 10% and if we go lossy I want big changes not small ones. * ztr/ztr.h: (15:42:07) Added a ZTR_FORM_LOG2 compression technique. It's an experimental lossy compression and is turned off right now; the space saving was only about 10% and if we go lossy I want big changes not small ones. * README: (15:43:46) *** empty log message *** 2006-06-14 James Bonfield * progs/convert_trace.c: (08:53:43) Added a -error option to request stderr goes to a file instead of stderr. (from Saul Kravitz) * scf/misc_scf.c, * scf/read_scf.c, * scf/write_scf.c: (08:58:12) Renamed delta_samples[12] to be scf_delta_samples[12]. (patch supplied by Saul Kravitz) * scf/scf.h: (08:58:29) Renamed delta_samples[12] to be scf_delta_samples[12]. (patch supplied by Saul Kravitz) * utils/open_trace_file.c: (08:58:55) Comment update * utils/open_trace_file.c: * Makefile: (16:28:29) Renamed USE_LIBCURL to be HAVE_LIBCURL to make it compatible with autoconf. * bootstrap: (16:28:56) Added removal of io_lib-config * acinclude.m4, * configure.in: (16:29:55) Added libcurl checking code (in acinclude.m4). * io_lib-config.in: (16:31:18) New io_lib-config program to query the compile and link parameters needed when using io_lib. * io_lib.m4: (16:46:32) Initial draft (unchecked) of autoconf macros for use by packages (in configure.in) that want to make use of io_lib. 2006-06-13 James Bonfield * progs/Makefile: (11:50:47) Added ZLIB_INC include path. 2006-06-09 James Bonfield * utils/open_trace_file.c: (08:53:24) Somewhere along the line I managed to break the most common of all search mechanisms; local filenames on disk! Fixed find_file_dir(). 2006-06-08 James Bonfield * Makefile, * utils/open_trace_file.c: (13:21:59) Added libcurl support and made this the default instead of using WGET for URL based accesses. Fixed a bug in the old wget code also though involving handling of zero-sized replies. Removed the compressed file extension iteration code in find_file_dir as it's now included in the master open_trace_file function instead (and so was yielding stats on fubar.scf.gz.bz2 and similar). It's also now possible to turn off the compressed file extension iteration code by prefixing a search path element with a "|" symbol. Replaced RAWDATA environment with EXP_PATH and TRACE_PATH. These default back to RAWDATA when not defined. Created new functions named open_exp_file and open_exp_mfile which use EXP_PATH instead of TRACE_PATH. These allow for experiment files and trace files to share the same names (as is the case in external "trace servers") but use different accessor routes to return the data. * utils/open_trace_file.h: (13:22:40) New prototypes or the open_exp_{file,mfile} code and iolib_[sg]et_{trace,exp}_path calls. * progs/Makefile, * progs/hash_exp.c: (13:25:15) New program hash_exp. This allows for multiple experiment files to be concatenated together instead a single multi-sequence file and then be indexed (using hash_exp) to allow for a HASH=... EXP_PATH element to extract the data back out again. * progs/convert_trace.c, * progs/extract_seq.c, * read/Read.c, * read/Read.h, * read/scf_extras.c, * read/translate.c: (13:28:29) Make use of open_exp_mfile instead of open_trace_mfile when we know we've explicitly requested a file in EXP format. This ensures we'll use the correct search path where appropriate. Also defined an ANYTR trace format which is identical to the old ANY format except that it excludes EXP and PLN (ie "ANY TRace"). Again this is used internally to ensure we pick the correct search path when dealing with fetching traces and/or experiment files. * utils/mFILE.c: (13:29:23) Fixed a bug in mfseek and mrewind. Both now clear the EOF flag. * utils/traceType.c: (13:33:16) Bug fix to fdetermine_trace_type: now rewinds back. * Makefile: (15:21:02) Fixed the include/.links target (added sff) * progs/Makefile, * progs/extract_fastq.c: (15:22:24) Added extract_fastq program. 2006-05-30 James Bonfield * ztr/compression.c: (08:46:57) Fixed a bug in xrle(); it now correctly handles runs of 256 or more. 2006-04-12 James Bonfield * read/Read.c: (10:53:27) Changed various fwrite_* functions to not close the FILE pointer given to them. 2006-02-28 James Bonfield * ztr/compression.c: (17:10:36) Fixed bug reading past memory in xrle(). (Thanks to Kathryn Beal for identifying this.) 2006-02-27 James Bonfield * ztr/ztr.c, * ztr/ztr.h: (14:40:06) Removed static from compress_chunk and uncompress_chunk. Added prototypes to ztr.h. 2006-02-23 James Bonfield * utils/read_alloc.c: (15:08:36) Fixed a bug in read_dup and not initialising read->info. * utils/read_alloc.c: (16:00:44) Fixed typo. 2006-02-20 James Bonfield * utils/hash_table.c: (12:16:50) Allow HashTableAdd to take a non-string for the key. 2006-01-26 James Bonfield * utils/hash_table.c, * utils/hash_table.h: (09:37:02) Fixed HashTableAdd with non-string keys and without HASH_NONVOLATILE_KEYS defined. It used strdup, but now allocates and memcpys. Added HashTableDel and HashTableRemove functions. HashTableDel removes and destroys a specified HashItem. HashTableRemove removes and destroys all items attached to a given key. =============================================================================== 2005-12-14 James Bonfield * CHANGES, * README, * configure.in: (14:35:00) Update for 1.9.2 2005-12-09 James Bonfield * configure.in: (17:32:31) Added AC_CHECK_LIB calls for nsl and socket (gethostbyname and socket). Needed for Solaris compilations. 2005-11-16 James Bonfield * progs/extract_seq.c: (14:14:16) Used open_trace_mfile instead of open_trace_file to avoid the need for temporary files and hence speeds this up. * read/Read.c: (14:23:23) fwrite_reading now frees the temporary mFILE it created. * read/Read.h, * read/translate.c: (14:45:41) Added private_data and private_size to the Read structure & populate from SCF. * utils/compress.c: (14:48:51) mfreopen_compressed no longer closes the original FILE*. This makes it backwards compatible once more with the original version and also cures a bug whereby the old file pointer was often left open, leading to running out of file descriptors. * utils/mFILE.c: (15:05:51) Fixed uninitialised check when filename was specified but not found in mfload. * utils/read_alloc.c: (15:17:01) Added private_data to read struct 2005-11-10 James Bonfield * progs/hash_extract.c: (11:32:06) Now returns an error code (to the calling process) if it failed to extract a sequence. * utils/hash_table.c: (11:33:07) Fixed problem in hashquery when searching for something that has a hash key not present (ie empty hash bucket). =============================================================================== 2005-10-27 James Bonfield * utils/mFILE.c: (15:46:45) Fixed hang in mfload when given zero length files. 2005-10-25 James Bonfield * read/translate.c: (08:20:26) NDEBUG checks 2005-10-21 James Bonfield * bootstrap: (09:15:23) Removed more auto-generated files. * configure.in, * progs/Makefile.am: (09:16:43) Further removal of libtool specific bits (AC_CHECK_LIB). * Makefile: (16:03:35) Fixed bug with IOLIB_ZTR vs IOLIB_SFF macro. * Makefile.am, * bootstrap, * configure.in, * read/Read.h, * utils/compress.c: (16:04:48) Replaced automake's generated config.h file io_lib_config and allow for it to be installed with "make install". * progs/Makefile.am: (16:05:19) Added append_sff to the targets. * read/translate.c: (16:05:42) Disabled asserts * utils/mFILE.c: (16:06:25) Fixed bug in mfgetc when dealing with 8-bit data. It always now returns unsigned values except when EOF * utils/open_trace_file.c: (16:07:20) Updated TAR magic number to be just the 5 first bytes as the 6th differs between systems (space vs nul). 2005-10-20 James Bonfield * sff/sff.c: (13:31:22) Split the read functions into read & decode functions so that we can unpack SFF structs from other sources. * progs/Makefile, * progs/append_sff.c: (13:31:58) Added an append_sff.c program, to combine multiple SFF archives into a single archive. 2005-10-18 James Bonfield * progs/convert_trace.c: (16:41:44) Modified to check RAWDATA search path when loading traces. * progs/hash_sff.c: (16:42:58) Major overhaul to not load the entire SFF file into memory. It also handles copying the SFF file to a new file and adding an index to an SFF archive that already has an index. * sff/sff.c, * sff/sff.h: (16:44:31) Restructured read functions to load & decode functions so we can decode SFF data blocks obtained via other means (eg as used in the indexing code). * utils/open_trace_file.c: (16:45:42) Added SFF "sorted index" code, based on 454's getsff.c implementation. Also restructured the SFF querying code a bit so that it caches this data. 2005-10-14 James Bonfield * CHANGES: (16:07:36) *** empty log message *** * exp_file/expFileIO.c: (16:08:32) Renamed _MSV_VER to _WIN32 so that the binary/ascii conversions for experiment file IO works once more under Windows. * progs/Makefile, * progs/Makefile.am, * progs/hash_sff.c: (16:09:08) Added hash_sff program. This adds a .hsh format index to the SFF container. * sff/sff.c, * sff/sff.h: (16:10:10) A total rewrite of the SFF code due to the recent changes in file format. This code handles access of a *single* SFF entry. The code to manipulate multi-file SFF (ie the container) is in open_trace_file.c. * utils/hash_table.c, * utils/hash_table.h: (16:11:33) HashFileSave now returns the length of the saved hash. HashFileFopen now sets afp by default to be the same as hfp. Extra checking has been added when closing these file pointers to ensure we don't close twice if they point to the same FILE*. * utils/mFILE.c, * utils/mFILE.h: (16:12:58) Added an mfascii() function. This allows for changing from binary to ascii after a file has been opened. It should be called in place of where the windows-specific _set_mode() function would be used. There is currently no analagous ascii-to-binary conversion, but I have not yet found a need for it either. * utils/mach-io.c, * utils/mach-io.h: (16:13:29) Added [bl]e_{read,write}_int_8 functions for use with 8-byte data types found in SFF. * utils/open_trace_file.c: (16:14:55) Added a SFF= format for the RAWDATA search path. This handles the SFF container in much the same way that TAR= and HASH= works. Also for all three of these types you can now do archive/entry instead. Eg "extract_seq traces.tar/xyz.ztr" will work and it'll even look for traces.tar in RAWDATA if required. * utils/os.h: (16:15:19) Added a uint1 typedef for completeness. * Makefile.am, * read/Makefile.am: (16:16:06) Makefile support for new sff.c files. * dependencies: (16:16:23) *** empty log message *** * configure.in: (16:16:43) Updated to version 1.9.1. 2005-10-04 James Bonfield * Makefile: (08:54:30) Added sff to make distsrc * utils/hash_table.c: (11:34:03) Cast ptrdiff_t value to int for %.*s argument. 2005-09-29 James Bonfield * utils/hash_table.c, * utils/hash_table.h: (16:04:06) Fixed the hash file saving and loading so that it works on all platforms instead of just x86 linux. There were bugs in assuming the size of structures. The assumptions are still there in that I assume they pad the same internally (for ease of coding - we can change it when we finally see a system which operates differently), but the final "boundary" padding has been resolved. 2005-09-28 James Bonfield * progs/hash_list.c: (10:16:49) *** empty log message *** 2005-09-19 James Bonfield * utils/compress.c: (13:58:02) Fixed a file descriptor (and some memory) leak in freopen_compressed. (Bug ID 1289095) 2005-09-08 James Bonfield * ztr/ztr.c, * ztr/ztr_translate.c: (11:29:06) Don't try to compress SAMP chunks with meta-data PYRW as the raw pyrosequencing data from 454 doesn't compress. * progs/Makefile, * progs/hash_tar.c, * utils/Hash_File_Format, * utils/hash_table.c, * utils/hash_table.h: (11:30:56) Changed the HashFile format slightly. It's now format 1.00. The key difference is that it has a file footer pointing back to the hashfile header (so the hashfile can be appended to an archive) and it also has an offset in the header to apply to all seeks within the archive itself, so it can be prepending to an archive that's already been indexed without breaking the offsets. Extended the hash_tar program to allow control over these header options. 2005-08-26 James Bonfield * dependencies: (08:24:32) Rebuilt 2005-08-25 James Bonfield * progs/makeSCF.c, * ztr/ztr.c: (10:22:20) General code tidyup to prevent warnings. 2005-08-15 James Bonfield * utils/hash_table.c: (15:25:18) Fixed HashTableLoad so it correctly stores the HashTable in the HashFile structure. It also now checks for the correct size of file to load. * sff/sff.c, * sff/sff.h: (15:25:44) Added SFF (454 flowgram) file reading support. 2005-08-10 James Bonfield * Makefile, * README, * options.mk: (15:15:24) Added draft SFF format support. I need to verify if the example data files I tested this with are correct or if the SFF draft spec is correct (as they differ marginally in places). Hence this format may change soon. * read/Read.c, * read/Read.h, * utils/traceType.c: (15:15:25) Added draft SFF format support. I need to verify if the example data files I tested this with are correct or if the SFF draft spec is correct (as they differ marginally in places). Hence this format may change soon. * progs/ztr_dump.c: (15:16:31) Added (commented out) code for extra debugging. * progs/Makefile: (15:16:48) Added hash_extract to the Makefile. 2005-07-22 James Bonfield * utils/compress.c: (15:52:07) Unset compression_used when opening uncompressed files instead of leaving as the last value. 2005-07-15 James Bonfield * read/Read.c: (15:16:58) Removed file descriptor 'leak' in write_reading(). 2005-07-14 James Bonfield * exp_file/expFileIO.c: (13:53:45) Commenting only * read/Read.c, * utils/mFILE.c: (13:54:54) mfopen now honours binary verses ascii differences (and so updated Read.c calls accordingly) so that Windows works better. Also improved append mode of opening. 2005-07-13 James Bonfield * ztr/ztr.c: (08:41:16) Removed the warning for unknown chunk types. It now just silently stores them in memory. 2005-07-11 James Bonfield * utils/mFILE.c: (14:01:50) Fixed divide-by-zero buf when calling mfread for zero bytes. * read/Read.c: (16:07:38) Fixed IO_LIB_* macros to be IOLIB_* macros. 2005-07-07 James Bonfield * Makefile.am: * progs/Makefile.am: (09:01:50) Removed libtool requirements. * configure.in: (09:02:07) Removed use of libtool. * Attic/Makefile.in, * abi/Attic/Makefile.in: * alf/Attic/Makefile.in, * ctf/Attic/Makefile.in: * exp_file/Attic/Makefile.in, * plain/Attic/Makefile.in: * progs/Attic/Makefile.in, * read/Attic/Makefile.in, * scf/Attic/Makefile.in: * utils/Attic/Makefile.in, * ztr/Attic/Makefile.in: * Attic/config.h.in: * Attic/configure: * Attic/depcomp, * Attic/install-sh, * Attic/ltmain.sh, * Attic/missing: * abi/Attic/Makefile.am, * alf/Attic/Makefile.am, * ctf/Attic/Makefile.am: * exp_file/Attic/Makefile.am, * plain/Attic/Makefile.am, * scf/Attic/Makefile.am, * utils/Attic/Makefile.am, * ztr/Attic/Makefile.am: (09:09:50) Removed as these have now been collapsed into the read/Makefile.am. * README: (09:10:19) *** empty log message *** * read/Makefile.am: (09:12:18) Subsumed the other */Makefile.am files. * progs/hash_tar.c: (09:12:48) On Windows, set stdout to be _O_BINARY. * read/Read.c: (09:13:22) Fixed the _O_BINARY setting code on windows to check for fp being valid and to use the mf->fp instead of fp. * utils/compress.c: (09:15:30) Added checks for HAVE_SYS_WAIT_H for Windows handling. * utils/compress.c: (09:20:04) Moved HAVE_ZLIB_H from compress.c and put in os.h (when autoconf is not in use). * utils/hash_table.c: (09:21:45) Changed bucket_pos from int64_t to int32_t (as was intended) so it works on windows correctly. * utils/mFILE.c: (09:22:50) Added more _O_BINARY checks for windows. * utils/open_trace_file.c: (09:23:28) Added error checking in open_trace_file(). * bootstrap: (10:28:38) Added to simplify initialisation of the autoconf system. * utils/os.h: (10:34:54) Moved os.h from include to utils. * Makefile.am: (10:49:17) Fixed missing backslash in pkginclude_HEADERS. * Attic/config.guess, * Attic/config.sub, * Attic/ltconfig, * Attic/mkinstalldirs, * Attic/stamp-h.in: (10:55:09) Removed more auto-generated files from CVS tree. * read/Read.h: (14:28:29) *** empty log message *** 2005-07-04 James Bonfield * README: (09:24:49) *** empty log message *** * CHANGES: (09:24:50) *** empty log message *** * Makefile.am, * progs/Makefile.am, * read/Makefile.am, * scf/Attic/Makefile.am, * utils/Attic/Makefile.am: (09:25:34) Adjusted EXTRA_DIST definitions to only include files we still appear to have! * Attic/Makefile.in, * progs/Attic/Makefile.in: * read/Attic/Makefile.in, * scf/Attic/Makefile.in, * utils/Attic/Makefile.in: * Attic/config.h.in, * Attic/configure: * configure.in: (09:27:05) Updated to use newer AC_INIT syntax. * read/Read.c: (10:21:50) Made the default output format ZTR. Do not compress output (via gzip for example) if ZTR2 or ZTR3 is used. * utils/compress.c: (10:25:19) If HAVE_ZLIB isn't defined then the memgzip/memgunzip functions are now also not built (and hence removes compilation errors). The pipe2 function now uses waitpid to avoid zombies. * utils/mFILE.c, * utils/mFILE.h: (10:29:41) Added mfrecreate() function to change an existing mFILE to point to new data. Better handling of append mode in mfreopen. Fixed mf->fname such that it's now always a pointer to malloced data. Added mfdestroy to deallocate memory, but without flushing or closing file descriptors. Changed mfflush to write data regardless of whether it's stdin/stdout. This means that mfflush+mfdestroy can be used to close an mFILE without closing the underlying FILE pointer used. Added mftruncate. Rewrote mfread to do a single memcpy instead of looped memcpys. =============================================================================== 2005-06-29 James Bonfield * CHANGES, * Makefile, * README, * dependencies: (13:33:14) Version 1.9.0-test * Significant speed ups, particularly when dealing with reading gzipped files or when extracting data from tar files. * New external functions for faster access via mFILE (memory-file) structs. These mimic the fread/fwrite calls, but with mfread/mfwrite etc. * Some functions previously available in external scope, but not defined in header files, have now been made internal only ("static"). Please contact me if you were using these and have a burning need for them to remain external. * Numerous minor tweaks and updates to fix compiler warnings on more stricter modes of the Intel C Compiler. * Preliminary support for storing pyrosequencing style traces. This has been modeled on the flowgram data from 454, but should be applicable to other platforms. ZTR has been updated to incorporate this too. The Read structure also has flow, flow_order, nflows and flow_raw elements too. Code to convert these into the more usual traceA/C/G/T arrays exists currently as part of Trev (in tk_utils in the Staden Package), but this may move into io_lib for the next official release. * New hash_tar and hash_extract programs. These replace the index_tar program for rast random access. For RAWDATA include "HASH=hashfile" as an element to get io_lib to use the archive hash. It's possible to create hash files of most archive formats as the hash itself contains the offset and size of each item in the archive. This means that extracting an item does not need to know the format of the original archive. Some benchmarks show that on ext3 it's actually faster to extract files from the hash than directly via the directory. This was testing with ~200,000 files, whereupon directory lookups become slow. I'd imagine ResierFS or similar to be faster. * Added an XRLE encoding for ZTR. This is similar to the existing RLE mechanism but it copes with run length encoding of items larger than a single byte. It's current use is for storing the 4-base repeating flow order in 454 data. * Potential incompatibilities: - The Exp_info structure now has an "mFILE *fp" member instead of "FILE *fp". - As mentioned above, some functions are no longer external. These include many ctf functions, ztr_(de)compress, ztr_chunk_(read/write), be_read_*, be_write_*, - The default search order for RAWDATA is that the current directory is searched after the rest of rawdata instead of before. - Removed support for the old unix "pack" program as a compression tool. * abi/abi.h, * abi/fpoint.c, * abi/seqIOABI.c, * abi/seqIOABI.h, * alf/alf.h, * alf/seqIOALF.c, * ctf/ctfCompress.c, * ctf/seqIOCTF.c, * ctf/seqIOCTF.h, * exp_file/expFileIO.c, * exp_file/expFileIO.h, * plain/plain.h: (13:33:32) Version 1.9.0-test * Significant speed ups, particularly when dealing with reading gzipped files or when extracting data from tar files. * New external functions for faster access via mFILE (memory-file) structs. These mimic the fread/fwrite calls, but with mfread/mfwrite etc. * Some functions previously available in external scope, but not defined in header files, have now been made internal only ("static"). Please contact me if you were using these and have a burning need for them to remain external. * Numerous minor tweaks and updates to fix compiler warnings on more stricter modes of the Intel C Compiler. * Preliminary support for storing pyrosequencing style traces. This has been modeled on the flowgram data from 454, but should be applicable to other platforms. ZTR has been updated to incorporate this too. The Read structure also has flow, flow_order, nflows and flow_raw elements too. Code to convert these into the more usual traceA/C/G/T arrays exists currently as part of Trev (in tk_utils in the Staden Package), but this may move into io_lib for the next official release. * New hash_tar and hash_extract programs. These replace the index_tar program for rast random access. For RAWDATA include "HASH=hashfile" as an element to get io_lib to use the archive hash. It's possible to create hash files of most archive formats as the hash itself contains the offset and size of each item in the archive. This means that extracting an item does not need to know the format of the original archive. Some benchmarks show that on ext3 it's actually faster to extract files from the hash than directly via the directory. This was testing with ~200,000 files, whereupon directory lookups become slow. I'd imagine ResierFS or similar to be faster. * Added an XRLE encoding for ZTR. This is similar to the existing RLE mechanism but it copes with run length encoding of items larger than a single byte. It's current use is for storing the 4-base repeating flow order in 454 data. * Potential incompatibilities: - The Exp_info structure now has an "mFILE *fp" member instead of "FILE *fp". - As mentioned above, some functions are no longer external. These include many ctf functions, ztr_(de)compress, ztr_chunk_(read/write), be_read_*, be_write_*, - The default search order for RAWDATA is that the current directory is searched after the rest of rawdata instead of before. - Removed support for the old unix "pack" program as a compression tool. * plain/seqIOPlain.c, * progs/Makefile, * progs/convert_trace.c, * progs/extract_seq.c, * progs/get_comment.c, * progs/hash_extract.c, * progs/hash_tar.c, * progs/makeSCF.c, * progs/trace_dump.c, * progs/ztr_dump.c, * read/Read.c, * read/Read.h, * read/scf_extras.c, * read/translate.c, * scf/misc_scf.c, * scf/read_scf.c, * scf/scf.h, * scf/write_scf.c, * utils/compress.c, * utils/compress.h, * utils/hash_table.c, * utils/hash_table.h, * utils/mach-io.c, * utils/mach-io.h, * utils/open_trace_file.c, * utils/open_trace_file.h, * utils/read_alloc.c, * utils/traceType.c, * utils/traceType.h, * ztr/FORMAT, * ztr/compression.c, * ztr/compression.h, * ztr/ztr.c, * ztr/ztr.h, * ztr/ztr_translate.c: (13:33:33) Version 1.9.0-test * Significant speed ups, particularly when dealing with reading gzipped files or when extracting data from tar files. * New external functions for faster access via mFILE (memory-file) structs. These mimic the fread/fwrite calls, but with mfread/mfwrite etc. * Some functions previously available in external scope, but not defined in header files, have now been made internal only ("static"). Please contact me if you were using these and have a burning need for them to remain external. * Numerous minor tweaks and updates to fix compiler warnings on more stricter modes of the Intel C Compiler. * Preliminary support for storing pyrosequencing style traces. This has been modeled on the flowgram data from 454, but should be applicable to other platforms. ZTR has been updated to incorporate this too. The Read structure also has flow, flow_order, nflows and flow_raw elements too. Code to convert these into the more usual traceA/C/G/T arrays exists currently as part of Trev (in tk_utils in the Staden Package), but this may move into io_lib for the next official release. * New hash_tar and hash_extract programs. These replace the index_tar program for rast random access. For RAWDATA include "HASH=hashfile" as an element to get io_lib to use the archive hash. It's possible to create hash files of most archive formats as the hash itself contains the offset and size of each item in the archive. This means that extracting an item does not need to know the format of the original archive. Some benchmarks show that on ext3 it's actually faster to extract files from the hash than directly via the directory. This was testing with ~200,000 files, whereupon directory lookups become slow. I'd imagine ResierFS or similar to be faster. * Added an XRLE encoding for ZTR. This is similar to the existing RLE mechanism but it copes with run length encoding of items larger than a single byte. It's current use is for storing the 4-base repeating flow order in 454 data. * Potential incompatibilities: - The Exp_info structure now has an "mFILE *fp" member instead of "FILE *fp". - As mentioned above, some functions are no longer external. These include many ctf functions, ztr_(de)compress, ztr_chunk_(read/write), be_read_*, be_write_*, - The default search order for RAWDATA is that the current directory is searched after the rest of rawdata instead of before. - Removed support for the old unix "pack" program as a compression tool. * utils/vlen.c, * utils/vlen.h: (13:35:42) vlen/vflen functions to estimate the maximum data size written out by a printf style function. This is used by the new mFILE functions. * utils/mFILE.c, * utils/mFILE.h: (13:39:13) mFILE struct support. This is basically a set of functions to similulate stdio file support on a block of memory instead of a file, for purposes of speed and to avoid the need of writing data out to a file only to be opened and read back in again (which happened a lot before). stdio_hack.h is, like it says, a hacky bunch of #defines to turn stdio functions and io_lib functions into their mFILE equivalents. It is used internally to convert old code (eg ABI file reading) to use mFILE structures, but can also be used by the brave to update their own code. Use with extreme caution. * utils/stdio_hack.h: (13:39:14) mFILE struct support. This is basically a set of functions to similulate stdio file support on a block of memory instead of a file, for purposes of speed and to avoid the need of writing data out to a file only to be opened and read back in again (which happened a lot before). stdio_hack.h is, like it says, a hacky bunch of #defines to turn stdio functions and io_lib functions into their mFILE equivalents. It is used internally to convert old code (eg ABI file reading) to use mFILE structures, but can also be used by the brave to update their own code. Use with extreme caution. 2005-06-08 James Bonfield * utils/hash_table.c: * utils/hash_table.h: * progs/hash_extract.c, * progs/hash_tar.c: (08:37:49) Added some simple hash table functions. Layered on top of these are HashFiles, which allow hash table indexing of files to be stored on disk. hash_tar and hash_extract test programs illustrate its use on tar files, much like index_tar does. * utils/open_trace_file.c: (08:38:22) Added support for integrating the new hashfile code via a "HASH=hashfile" RAWDATA setting. 2005-04-27 James Bonfield * progs/get_comment.c: (16:15:51) Removed "might be used uninitialised" warning messages from the compiler. 2005-02-09 James Bonfield * abi/seqIOABI.c: (10:08:03) Added getABIIndexEntrySW and modified getABIString to correctly determine the string type (pascal vs C-string). This means MODL numbers now come out as 3730 instead of 730 (for example). 2004-12-06 James Bonfield * progs/ztr_dump.c: (17:41:58) Corrected minor compiler warnings. 2004-11-16 James Bonfield * exp_file/expFileIO.c: (12:10:16) Major speed up of reading large experiment files. Tested on a 1Mb sequence with AV, ON and SQ lines the new code is 1000 times faster on the Alpha. Primarily the difference comes from removing O(N^2) complexities by removing strcat & strlen type of operations. 2004-10-29 James Bonfield * Makefile: (10:42:10) Automatically create binary output directories. 2004-10-21 James Bonfield * dependencies: (11:39:28) *** empty log message *** 2004-10-14 James Bonfield * progs/convert_trace.c: (15:38:18) Added a "-subtract " option to allow removal of a specific DC offset. 2004-10-08 James Bonfield * progs/convert_trace.c: (14:49:06) Fixed a divide-by-zero error in the normalisation code. 2004-10-01 James Bonfield * progs/convert_trace.c: (10:56:07) Rewrote rescale_heights (the "-normalise" option) using an amplitude tracker with an attack & delay model. This seems to work well at adjusting for both gradual amplitude variations and for downscaling huge dye-blobs. 2004-08-17 James Bonfield * progs/Makefile, * progs/Makefile.am, * progs/ztr_dump.c: (13:37:17) Added a ztr_dump program. 2004-08-05 James Bonfield * progs/index_tar.c: (09:32:05) Fix bug submitted by Steve Leonard. If a directory is too large to fit in the name (>100) but short enough to fit in the prefix the name field will be empty, this is not the cas for ordinary files where the name field is always non-empty. 2004-07-26 James Bonfield * exp_file/expFileIO.c: (14:24:35) MinGW port * utils/open_trace_file.c: (14:26:13) MinGW port =============================================================================== 2004-06-01 James Bonfield * CHANGES, * Makefile.am, * Attic/Makefile.in, * README, * Attic/config.guess, * Attic/config.h.in, * Attic/config.sub, * Attic/configure, * configure.in, * Attic/depcomp, * Attic/install-sh, * Attic/ltmain.sh, * Attic/missing, * Attic/mkinstalldirs: * abi/Attic/Makefile.in, * alf/Attic/Makefile.in: * ctf/Attic/Makefile.in, * exp_file/Attic/Makefile.in, * plain/Attic/Makefile.in, * progs/Makefile.am, * progs/Attic/Makefile.in, * read/Attic/Makefile.in, * scf/Attic/Makefile.in, * utils/Attic/Makefile.in, * ztr/Attic/Makefile.in: (08:54:51) Updated notes to claim this is version 1.8.12 and rebuilt all the automake/autoconf/libtool generated files. 2004-05-13 James Bonfield * abi/seqIOABI.c: (16:14:10) Improved spacing fix. 2004-05-12 James Bonfield * abi/seqIOABI.c: (08:27:40) Applied change suggested by Saul A. Kravitz. The fallback fspacing is now calculated over the range that basecalls exist rather than the total length of trace. 2004-03-03 James Bonfield * ztr/ztr_translate.c: (17:45:52) Treat Read->basePos as 16-bit, which means hard-coding the first two bytes in ztr_encode_positions for each pos as zero. 2004-02-19 James Bonfield * exp_file/expFileIO.c: (12:13:52) Fixed typo in LG qualifier (was LF). * exp_file/expFileIO.h: (13:48:59) More type fixes; EFLT_LG was given the same number as _FT. Now diff. 2004-02-12 James Bonfield * dependencies: (10:32:01) *** empty log message *** 2004-02-09 James Bonfield * exp_file/expFileIO.c, * exp_file/expFileIO.h: (14:39:52) Added LG (LiGation) to experiment file definition. 2004-01-13 James Bonfield * read/translate.c: (17:02:00) In read2exp only set the file format to be TT_EXP when 'redirection to trace' is not enabled (ie it indicates where the sequence came from, EXP or SCF/ZTR/...). 2003-11-17 James Bonfield * utils/open_trace_file.c: (14:52:28) Added ARC= and URL= RAWDATA search methods to fetch traces via the ensembl trace archive and via a URL. 2003-10-24 James Bonfield * abi/seqIOABI.c: (08:24:07) Protect against the base spacing being listed as a negative number in the ABI file. * progs/extract_seq.c: (08:24:29) Added a -fofn option * utils/compress.c: (08:24:57) More error checking on writing compressed files. 2003-07-10 James Bonfield * Makefile: (11:14:14) Put back the Staden Makefile as I accidently overwrote this with the autoconf generate one. * progs/Makefile: (11:14:18) *** empty log message *** 2003-07-07 James Bonfield * abi/seqIOABI.c, * abi/seqIOABI.h: (11:20:37) Confidence values (PCON 1) are now loaded from ABI files. * Makefile.am: * Attic/Makefile.in, * Attic/config.guess, * Attic/config.h.in, * Attic/config.sub, * Attic/configure, * configure.in, * Attic/install-sh, * Attic/ltconfig, * Attic/ltmain.sh, * Attic/missing, * Attic/mkinstalldirs, * Attic/stamp-h.in: (11:24:47) Added automake/autoconf/libtool files to CVS tree. Not all of these are 'source' files as some are generated by others, but for ease of compilation the output from these tools is distribute too, meaning that only './configure' needs to be run. * abi/Attic/Makefile.am, * abi/Attic/Makefile.in: (11:24:52) *** empty log message *** * alf/Attic/Makefile.am, * alf/Attic/Makefile.in, * ctf/Attic/Makefile.am, * ctf/Attic/Makefile.in, * exp_file/Attic/Makefile.am, * exp_file/Attic/Makefile.in, * plain/Attic/Makefile.am, * plain/Attic/Makefile.in, * progs/Makefile.am: (11:25:02) *** empty log message *** * progs/Attic/Makefile.in, * read/Makefile.am, * read/Attic/Makefile.in, * scf/Attic/Makefile.am, * scf/Attic/Makefile.in, * utils/Attic/Makefile.am, * utils/Attic/Makefile.in, * ztr/Attic/Makefile.am, * ztr/Attic/Makefile.in: (11:25:03) *** empty log message *** * Makefile: (11:48:43) Updates to automake/conf system. * Makefile.am, * Attic/Makefile.in, * Attic/config.guess, * Attic/config.h.in, * Attic/config.sub, * Attic/configure, * Attic/depcomp, * Attic/ltmain.sh: (11:48:44) Updates to automake/conf system. * abi/Attic/Makefile.am, * abi/Attic/Makefile.in, * alf/Attic/Makefile.am, * alf/Attic/Makefile.in, * ctf/Attic/Makefile.am, * ctf/Attic/Makefile.in, * exp_file/Attic/Makefile.am, * exp_file/Attic/Makefile.in, * plain/Attic/Makefile.am, * plain/Attic/Makefile.in, * progs/Makefile, * progs/Makefile.am: (11:48:50) *** empty log message *** * progs/Attic/Makefile.in, * read/Makefile.am, * read/Attic/Makefile.in, * read/Read.h, * scf/Attic/Makefile.am, * scf/Attic/Makefile.in, * utils/Attic/Makefile.am, * utils/Attic/Makefile.in, * ztr/Attic/Makefile.am: (11:48:51) *** empty log message *** * ztr/Attic/Makefile.in: (11:48:54) *** empty log message *** * read/Read.h: (11:56:56) *** empty log message *** 2003-06-09 James Bonfield * CHANGES, * COPYRIGHT, * Makefile, * README, * options.mk, * abi/abi.h, * abi/fpoint.c, * abi/fpoint.h, * abi/seqIOABI.c: (11:24:36) Import of Staden Package 2003.0b2 * CHANGES, * COPYRIGHT, * Makefile, * README, * options.mk, * abi/abi.h, * abi/fpoint.c, * abi/fpoint.h, * abi/seqIOABI.c: (11:24:36) branches: 1.1.1; Initial revision * abi/seqIOABI.h, * alf/alf.h, * alf/seqIOALF.c, * ctf/ctfCompress.c, * ctf/seqIOCTF.c, * ctf/seqIOCTF.h, * exp_file/expFileIO.c, * exp_file/expFileIO.h, * plain/plain.h, * plain/seqIOPlain.c, * progs/Makefile, * progs/convert_trace.c, * progs/extract_seq.c, * progs/get_comment.c, * progs/index_tar.c, * progs/makeSCF.c, * progs/scf_dump.c, * progs/scf_info.c, * progs/scf_update.c, * progs/trace_dump.c, * read/Read.c, * read/Read.h, * read/scf_extras.c, * read/scf_extras.h, * read/translate.c, * read/translate.h, * scf/misc_scf.c, * scf/read_scf.c, * scf/scf.h, * scf/write_scf.c, * utils/array.c, * utils/array.h, * utils/compress.c, * utils/compress.h, * utils/error.c, * utils/error.h, * utils/files.c, * utils/find.c, * utils/mach-io.c, * utils/mach-io.h, * utils/misc.h, * utils/open_trace_file.c, * utils/open_trace_file.h, * utils/read_alloc.c, * utils/strings.c, * utils/tar_format.h, * utils/traceType.c: (11:24:37) Import of Staden Package 2003.0b2 * abi/seqIOABI.h, * alf/alf.h, * alf/seqIOALF.c, * ctf/ctfCompress.c, * ctf/seqIOCTF.c, * ctf/seqIOCTF.h, * exp_file/expFileIO.c, * exp_file/expFileIO.h, * plain/plain.h, * plain/seqIOPlain.c, * progs/Makefile, * progs/convert_trace.c, * progs/extract_seq.c, * progs/get_comment.c, * progs/index_tar.c, * progs/makeSCF.c, * progs/scf_dump.c, * progs/scf_info.c, * progs/scf_update.c, * progs/trace_dump.c, * read/Read.c, * read/Read.h, * read/scf_extras.c, * read/scf_extras.h, * read/translate.c, * read/translate.h, * scf/misc_scf.c, * scf/read_scf.c, * scf/scf.h, * scf/write_scf.c, * utils/array.c, * utils/array.h, * utils/compress.c, * utils/compress.h, * utils/error.c, * utils/error.h, * utils/files.c, * utils/find.c, * utils/mach-io.c, * utils/mach-io.h, * utils/misc.h, * utils/open_trace_file.c, * utils/open_trace_file.h, * utils/read_alloc.c, * utils/strings.c, * utils/tar_format.h, * utils/traceType.c: (11:24:37) branches: 1.1.1; Initial revision * man/man3/ExperimentFile.3, * man/man3/exp2read.3, * man/man3/fread_reading.3, * man/man3/fread_scf.3, * man/man3/fwrite_reading.3, * man/man3/fwrite_scf.3, * man/man3/read2exp.3, * man/man3/read2scf.3, * man/man3/read_allocate.3, * man/man3/read_deallocate.3, * man/man3/read_reading.3, * man/man3/read_scf.3, * man/man3/read_scf_header.3, * man/man3/scf2read.3, * man/man3/write_reading.3, * man/man3/write_scf.3, * man/man3/write_scf_header.3, * man/man4/Read.4, * utils/traceType.h, * utils/xalloc.c, * utils/xalloc.h, * ztr/FORMAT, * ztr/compression.c, * ztr/compression.h, * ztr/ztr.c, * ztr/ztr.h, * ztr/ztr_translate.c: (11:24:38) Import of Staden Package 2003.0b2 * man/man3/ExperimentFile.3, * man/man3/exp2read.3, * man/man3/fread_reading.3, * man/man3/fread_scf.3, * man/man3/fwrite_reading.3, * man/man3/fwrite_scf.3, * man/man3/read2exp.3, * man/man3/read2scf.3, * man/man3/read_allocate.3, * man/man3/read_deallocate.3, * man/man3/read_reading.3, * man/man3/read_scf.3, * man/man3/read_scf_header.3, * man/man3/scf2read.3, * man/man3/write_reading.3, * man/man3/write_scf.3, * man/man3/write_scf_header.3, * man/man4/Read.4, * utils/traceType.h, * utils/xalloc.c, * utils/xalloc.h, * ztr/FORMAT, * ztr/compression.c, * ztr/compression.h, * ztr/ztr.c, * ztr/ztr.h, * ztr/ztr_translate.c: (11:24:38) branches: 1.1.1; Initial revision * Makefile: (11:59:11) Added include/.links target to main library instead of progs, thus making the build work cleanly from a newly checked out copy. * Makefile: (14:22:43) Fix .links code. io_lib-1.14.6/compile0000755000031500020650000001624512524416543011351 00000000000000#! /bin/sh # Wrapper for compilers which do not understand '-c -o'. scriptversion=2012-10-14.11; # UTC # Copyright (C) 1999-2013 Free Software Foundation, Inc. # Written by Tom Tromey . # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # This file is maintained in Automake, please report # bugs to or send patches to # . nl=' ' # We need space, tab and new line, in precisely that order. Quoting is # there to prevent tools from complaining about whitespace usage. IFS=" "" $nl" file_conv= # func_file_conv build_file lazy # Convert a $build file to $host form and store it in $file # Currently only supports Windows hosts. If the determined conversion # type is listed in (the comma separated) LAZY, no conversion will # take place. func_file_conv () { file=$1 case $file in / | /[!/]*) # absolute file, and not a UNC file if test -z "$file_conv"; then # lazily determine how to convert abs files case `uname -s` in MINGW*) file_conv=mingw ;; CYGWIN*) file_conv=cygwin ;; *) file_conv=wine ;; esac fi case $file_conv/,$2, in *,$file_conv,*) ;; mingw/*) file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` ;; cygwin/*) file=`cygpath -m "$file" || echo "$file"` ;; wine/*) file=`winepath -w "$file" || echo "$file"` ;; esac ;; esac } # func_cl_dashL linkdir # Make cl look for libraries in LINKDIR func_cl_dashL () { func_file_conv "$1" if test -z "$lib_path"; then lib_path=$file else lib_path="$lib_path;$file" fi linker_opts="$linker_opts -LIBPATH:$file" } # func_cl_dashl library # Do a library search-path lookup for cl func_cl_dashl () { lib=$1 found=no save_IFS=$IFS IFS=';' for dir in $lib_path $LIB do IFS=$save_IFS if $shared && test -f "$dir/$lib.dll.lib"; then found=yes lib=$dir/$lib.dll.lib break fi if test -f "$dir/$lib.lib"; then found=yes lib=$dir/$lib.lib break fi if test -f "$dir/lib$lib.a"; then found=yes lib=$dir/lib$lib.a break fi done IFS=$save_IFS if test "$found" != yes; then lib=$lib.lib fi } # func_cl_wrapper cl arg... # Adjust compile command to suit cl func_cl_wrapper () { # Assume a capable shell lib_path= shared=: linker_opts= for arg do if test -n "$eat"; then eat= else case $1 in -o) # configure might choose to run compile as 'compile cc -o foo foo.c'. eat=1 case $2 in *.o | *.[oO][bB][jJ]) func_file_conv "$2" set x "$@" -Fo"$file" shift ;; *) func_file_conv "$2" set x "$@" -Fe"$file" shift ;; esac ;; -I) eat=1 func_file_conv "$2" mingw set x "$@" -I"$file" shift ;; -I*) func_file_conv "${1#-I}" mingw set x "$@" -I"$file" shift ;; -l) eat=1 func_cl_dashl "$2" set x "$@" "$lib" shift ;; -l*) func_cl_dashl "${1#-l}" set x "$@" "$lib" shift ;; -L) eat=1 func_cl_dashL "$2" ;; -L*) func_cl_dashL "${1#-L}" ;; -static) shared=false ;; -Wl,*) arg=${1#-Wl,} save_ifs="$IFS"; IFS=',' for flag in $arg; do IFS="$save_ifs" linker_opts="$linker_opts $flag" done IFS="$save_ifs" ;; -Xlinker) eat=1 linker_opts="$linker_opts $2" ;; -*) set x "$@" "$1" shift ;; *.cc | *.CC | *.cxx | *.CXX | *.[cC]++) func_file_conv "$1" set x "$@" -Tp"$file" shift ;; *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO]) func_file_conv "$1" mingw set x "$@" "$file" shift ;; *) set x "$@" "$1" shift ;; esac fi shift done if test -n "$linker_opts"; then linker_opts="-link$linker_opts" fi exec "$@" $linker_opts exit 1 } eat= case $1 in '') echo "$0: No command. Try '$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: compile [--help] [--version] PROGRAM [ARGS] Wrapper for compilers which do not understand '-c -o'. Remove '-o dest.o' from ARGS, run PROGRAM with the remaining arguments, and rename the output as expected. If you are trying to build a whole package this is not the right script to run: please start by reading the file 'INSTALL'. Report bugs to . EOF exit $? ;; -v | --v*) echo "compile $scriptversion" exit $? ;; cl | *[/\\]cl | cl.exe | *[/\\]cl.exe ) func_cl_wrapper "$@" # Doesn't return... ;; esac ofile= cfile= for arg do if test -n "$eat"; then eat= else case $1 in -o) # configure might choose to run compile as 'compile cc -o foo foo.c'. # So we strip '-o arg' only if arg is an object. eat=1 case $2 in *.o | *.obj) ofile=$2 ;; *) set x "$@" -o "$2" shift ;; esac ;; *.c) cfile=$1 set x "$@" "$1" shift ;; *) set x "$@" "$1" shift ;; esac fi shift done if test -z "$ofile" || test -z "$cfile"; then # If no '-o' option was seen then we might have been invoked from a # pattern rule where we don't need one. That is ok -- this is a # normal compilation that the losing compiler can handle. If no # '.c' file was seen then we are probably linking. That is also # ok. exec "$@" fi # Name of file we expect compiler to create. cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'` # Create the lock directory. # Note: use '[/\\:.-]' here to ensure that we don't use the same name # that we are using for the .o file. Also, base the name on the expected # object file name, since that is what matters with a parallel build. lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d while true; do if mkdir "$lockdir" >/dev/null 2>&1; then break fi sleep 1 done # FIXME: race condition here if user kills between mkdir and trap. trap "rmdir '$lockdir'; exit 1" 1 2 15 # Run the compile. "$@" ret=$? if test -f "$cofile"; then test "$cofile" = "$ofile" || mv "$cofile" "$ofile" elif test -f "${cofile}bj"; then test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile" fi rmdir "$lockdir" exit $ret # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: io_lib-1.14.6/config.guess0000755000031500020650000012743212617160065012312 00000000000000#! /bin/sh # Attempt to guess a canonical system name. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, # 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, # 2011, 2012 Free Software Foundation, Inc. timestamp='2012-02-10' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Per Bothner. Please send patches (context # diff format) to and include a ChangeLog # entry. # # This script attempts to guess a canonical system name similar to # config.sub. If it succeeds, it prints the system name on stdout, and # exits with 0. Otherwise, it exits with 1. # # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; * ) break ;; esac done if test $# != 0; then echo "$me: too many arguments$help" >&2 exit 1 fi trap 'exit 1' 1 2 15 # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a # headache to deal with in a portable fashion. # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still # use `HOST_CC' if defined, but it is deprecated. # Portable tmp directory creation inspired by the Autoconf team. set_cc_for_build=' trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; : ${TMPDIR=/tmp} ; { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; dummy=$tmp/dummy ; tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; case $CC_FOR_BUILD,$HOST_CC,$CC in ,,) echo "int x;" > $dummy.c ; for c in cc gcc c89 c99 ; do if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then CC_FOR_BUILD="$c"; break ; fi ; done ; if test x"$CC_FOR_BUILD" = x ; then CC_FOR_BUILD=no_compiler_found ; fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; esac ; set_cc_for_build= ;' # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) if (test -f /.attbin/uname) >/dev/null 2>&1 ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown # Note: order is significant - the case branches are not exclusive. case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward # compatibility and a consistent mechanism for selecting the # object file format. # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ /usr/sbin/$sysctl 2>/dev/null || echo unknown)` case "${UNAME_MACHINE_ARCH}" in armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently, or will in the future. case "${UNAME_MACHINE_ARCH}" in arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ELF__ then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? os=netbsd else os=netbsdelf fi ;; *) os=netbsd ;; esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. case "${UNAME_VERSION}" in Debian*) release='-gnu' ;; *) release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. echo "${machine}-${os}${release}" exit ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} exit ;; *:ekkoBSD:*:*) echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} exit ;; *:SolidBSD:*:*) echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} exit ;; macppc:MirBSD:*:*) echo powerpc-unknown-mirbsd${UNAME_RELEASE} exit ;; *:MirBSD:*:*) echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` ;; *5.*) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on # OSF/1 and Tru64 systems produced since 1995. I hope that # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case "$ALPHA_CPU_TYPE" in "EV4 (21064)") UNAME_MACHINE="alpha" ;; "EV4.5 (21064)") UNAME_MACHINE="alpha" ;; "LCA4 (21066/21068)") UNAME_MACHINE="alpha" ;; "EV5 (21164)") UNAME_MACHINE="alphaev5" ;; "EV5.6 (21164A)") UNAME_MACHINE="alphaev56" ;; "EV5.6 (21164PC)") UNAME_MACHINE="alphapca56" ;; "EV5.7 (21164PC)") UNAME_MACHINE="alphapca57" ;; "EV6 (21264)") UNAME_MACHINE="alphaev6" ;; "EV6.7 (21264A)") UNAME_MACHINE="alphaev67" ;; "EV6.8CB (21264C)") UNAME_MACHINE="alphaev68" ;; "EV6.8AL (21264B)") UNAME_MACHINE="alphaev68" ;; "EV6.8CX (21264D)") UNAME_MACHINE="alphaev68" ;; "EV6.9A (21264/EV69A)") UNAME_MACHINE="alphaev69" ;; "EV7 (21364)") UNAME_MACHINE="alphaev7" ;; "EV7.9 (21364A)") UNAME_MACHINE="alphaev79" ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` # Reset EXIT trap before exiting to avoid spurious non-zero exit code. exitcode=$? trap '' 0 exit $exitcode ;; Alpha\ *:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # Should we change UNAME_MACHINE based on the output of uname instead # of the specific Alpha model? echo alpha-pc-interix exit ;; 21064:Windows_NT:50:3) echo alpha-dec-winnt3.5 exit ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-unknown-sysv4 exit ;; *:[Aa]miga[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-amigaos exit ;; *:[Mm]orph[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-morphos exit ;; *:OS/390:*:*) echo i370-ibm-openedition exit ;; *:z/VM:*:*) echo s390-ibm-zvmoe exit ;; *:OS400:*:*) echo powerpc-ibm-os400 exit ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} exit ;; arm:riscos:*:*|arm:RISCOS:*:*) echo arm-unknown-riscos exit ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) echo hppa1.1-hitachi-hiuxmpp exit ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. if test "`(/bin/universe) 2>/dev/null`" = att ; then echo pyramid-pyramid-sysv3 else echo pyramid-pyramid-bsd fi exit ;; NILE*:*:*:dcosx) echo pyramid-pyramid-svr4 exit ;; DRS?6000:unix:4.0:6*) echo sparc-icl-nx6 exit ;; DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) case `/usr/bin/uname -p` in sparc) echo sparc-icl-nx7; exit ;; esac ;; s390x:SunOS:*:*) echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) echo i386-pc-auroraux${UNAME_RELEASE} exit ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) eval $set_cc_for_build SUN_ARCH="i386" # If there is a compiler, see if it is configured for 64-bit objects. # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. # This test works for both compilers. if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then SUN_ARCH="x86_64" fi fi echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:*:*) case "`/usr/bin/arch -k`" in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` exit ;; sun3*:SunOS:*:*) echo m68k-sun-sunos${UNAME_RELEASE} exit ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) echo m68k-sun-sunos${UNAME_RELEASE} ;; sun4) echo sparc-sun-sunos${UNAME_RELEASE} ;; esac exit ;; aushp:SunOS:*:*) echo sparc-auspex-sunos${UNAME_RELEASE} exit ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor # > m68000). The system name ranges from "MiNT" over "FreeMiNT" # to the lowercase version "mint" (or "freemint"). Finally # the system name "TOS" denotes a system which is actually not # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) echo m68k-milan-mint${UNAME_RELEASE} exit ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) echo m68k-hades-mint${UNAME_RELEASE} exit ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) echo m68k-unknown-mint${UNAME_RELEASE} exit ;; m68k:machten:*:*) echo m68k-apple-machten${UNAME_RELEASE} exit ;; powerpc:machten:*:*) echo powerpc-apple-machten${UNAME_RELEASE} exit ;; RISC*:Mach:*:*) echo mips-dec-mach_bsd4.3 exit ;; RISC*:ULTRIX:*:*) echo mips-dec-ultrix${UNAME_RELEASE} exit ;; VAX*:ULTRIX*:*:*) echo vax-dec-ultrix${UNAME_RELEASE} exit ;; 2020:CLIX:*:* | 2430:CLIX:*:*) echo clipper-intergraph-clix${UNAME_RELEASE} exit ;; mips:*:*:UMIPS | mips:*:*:RISCos) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && SYSTEM_NAME=`$dummy $dummyarg` && { echo "$SYSTEM_NAME"; exit; } echo mips-mips-riscos${UNAME_RELEASE} exit ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax exit ;; Motorola:*:4.3:PL8-*) echo powerpc-harris-powermax exit ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) echo powerpc-harris-powermax exit ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix exit ;; m88k:CX/UX:7*:*) echo m88k-harris-cxux7 exit ;; m88k:*:4*:R4*) echo m88k-motorola-sysv4 exit ;; m88k:*:3*:R3*) echo m88k-motorola-sysv3 exit ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] then if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ [ ${TARGET_BINARY_INTERFACE}x = x ] then echo m88k-dg-dgux${UNAME_RELEASE} else echo m88k-dg-dguxbcs${UNAME_RELEASE} fi else echo i586-dg-dgux${UNAME_RELEASE} fi exit ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 exit ;; M88*:*:R3*:*) # Delta 88k system running SVR3 echo m88k-motorola-sysv3 exit ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) echo m88k-tektronix-sysv3 exit ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) echo m68k-tektronix-bsd exit ;; *:IRIX*:*:*) echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` exit ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) echo i386-ibm-aix exit ;; ia64:AIX:*:*) if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} exit ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include main() { if (!__power_pc()) exit(1); puts("powerpc-ibm-aix3.2.5"); exit(0); } EOF if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` then echo "$SYSTEM_NAME" else echo rs6000-ibm-aix3.2.5 fi elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then echo rs6000-ibm-aix3.2.4 else echo rs6000-ibm-aix3.2 fi exit ;; *:AIX:*:[4567]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${IBM_ARCH}-ibm-aix${IBM_REV} exit ;; *:AIX:*:*) echo rs6000-ibm-aix exit ;; ibmrt:4.4BSD:*|romp-ibm:BSD:*) echo romp-ibm-bsd4.4 exit ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to exit ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) echo rs6000-bull-bosx exit ;; DPX/2?00:B.O.S.:*:*) echo m68k-bull-sysv3 exit ;; 9000/[34]??:4.3bsd:1.*:*) echo m68k-hp-bsd exit ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) echo m68k-hp-bsd4.4 exit ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` case "${UNAME_MACHINE}" in 9000/31? ) HP_ARCH=m68000 ;; 9000/[34]?? ) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case "${sc_cpu_version}" in 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case "${sc_kernel_bits}" in 32) HP_ARCH="hppa2.0n" ;; 64) HP_ARCH="hppa2.0w" ;; '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 esac ;; esac fi if [ "${HP_ARCH}" = "" ]; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #define _HPUX_SOURCE #include #include int main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); #endif long cpu = sysconf (_SC_CPU_VERSION); switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0"); break; case CPU_PA_RISC1_1: puts ("hppa1.1"); break; case CPU_PA_RISC2_0: #if defined(_SC_KERNEL_BITS) switch (bits) { case 64: puts ("hppa2.0w"); break; case 32: puts ("hppa2.0n"); break; default: puts ("hppa2.0"); break; } break; #else /* !defined(_SC_KERNEL_BITS) */ puts ("hppa2.0"); break; #endif default: puts ("hppa1.0"); break; } exit (0); } EOF (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac if [ ${HP_ARCH} = "hppa2.0w" ] then eval $set_cc_for_build # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler # generating 64-bit code. GNU and HP use different nomenclature: # # $ CC_FOR_BUILD=cc ./config.guess # => hppa2.0w-hp-hpux11.23 # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess # => hppa64-hp-hpux11.23 if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | grep -q __LP64__ then HP_ARCH="hppa2.0w" else HP_ARCH="hppa64" fi fi echo ${HP_ARCH}-hp-hpux${HPUX_REV} exit ;; ia64:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` echo ia64-hp-hpux${HPUX_REV} exit ;; 3050*:HI-UX:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include int main () { long cpu = sysconf (_SC_CPU_VERSION); /* The order matters, because CPU_IS_HP_MC68K erroneously returns true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct results, however. */ if (CPU_IS_PA_RISC (cpu)) { switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; default: puts ("hppa-hitachi-hiuxwe2"); break; } } else if (CPU_IS_HP_MC68K (cpu)) puts ("m68k-hitachi-hiuxwe2"); else puts ("unknown-hitachi-hiuxwe2"); exit (0); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } echo unknown-hitachi-hiuxwe2 exit ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) echo hppa1.1-hp-bsd exit ;; 9000/8??:4.3bsd:*:*) echo hppa1.0-hp-bsd exit ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix exit ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) echo hppa1.1-hp-osf exit ;; hp8??:OSF1:*:*) echo hppa1.0-hp-osf exit ;; i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then echo ${UNAME_MACHINE}-unknown-osf1mk else echo ${UNAME_MACHINE}-unknown-osf1 fi exit ;; parisc*:Lites*:*:*) echo hppa1.1-hp-lites exit ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd exit ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd exit ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd exit ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd exit ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*[A-Z]90:*:*:*) echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*T3E:*:*:*) echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*SV1:*:*:*) echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; *:UNICOS/mp:*:*) echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; 5000:UNIX_System_V:4.*:*) FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} exit ;; sparc*:BSD/OS:*:*) echo sparc-unknown-bsdi${UNAME_RELEASE} exit ;; *:BSD/OS:*:*) echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} exit ;; *:FreeBSD:*:*) UNAME_PROCESSOR=`/usr/bin/uname -p` case ${UNAME_PROCESSOR} in amd64) echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; *) echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; esac exit ;; i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin exit ;; *:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit ;; i*:MSYS*:*) echo ${UNAME_MACHINE}-pc-msys exit ;; i*:windows32*:*) # uname -m includes "-pc" on this system. echo ${UNAME_MACHINE}-mingw32 exit ;; i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 exit ;; *:Interix*:*) case ${UNAME_MACHINE} in x86) echo i586-pc-interix${UNAME_RELEASE} exit ;; authenticamd | genuineintel | EM64T) echo x86_64-unknown-interix${UNAME_RELEASE} exit ;; IA64) echo ia64-unknown-interix${UNAME_RELEASE} exit ;; esac ;; [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) echo i${UNAME_MACHINE}-pc-mks exit ;; 8664:Windows_NT:*) echo x86_64-pc-mks exit ;; i*:Windows_NT*:* | Pentium*:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we # UNAME_MACHINE based on the output of uname instead of i386? echo i586-pc-interix exit ;; i*:UWIN*:*) echo ${UNAME_MACHINE}-pc-uwin exit ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) echo x86_64-unknown-cygwin exit ;; p*:CYGWIN*:*) echo powerpcle-unknown-cygwin exit ;; prep*:SunOS:5.*:*) echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; *:GNU:*:*) # the GNU system echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` exit ;; *:GNU/*:*:*) # other systems with GNU libc and userland echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu exit ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix exit ;; aarch64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; aarch64_be:Linux:*:*) UNAME_MACHINE=aarch64_be echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; PCA57) UNAME_MACHINE=alphapca56 ;; EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep -q ld.so.1 if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} exit ;; arm*:Linux:*:*) eval $set_cc_for_build if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then echo ${UNAME_MACHINE}-unknown-linux-gnu else if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then echo ${UNAME_MACHINE}-unknown-linux-gnueabi else echo ${UNAME_MACHINE}-unknown-linux-gnueabihf fi fi exit ;; avr32*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; cris:Linux:*:*) echo ${UNAME_MACHINE}-axis-linux-gnu exit ;; crisv32:Linux:*:*) echo ${UNAME_MACHINE}-axis-linux-gnu exit ;; frv:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; hexagon:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; i*86:Linux:*:*) LIBC=gnu eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __dietlibc__ LIBC=dietlibc #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'` echo "${UNAME_MACHINE}-pc-linux-${LIBC}" exit ;; ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; m32r*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; m68*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; mips:Linux:*:* | mips64:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef ${UNAME_MACHINE} #undef ${UNAME_MACHINE}el #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=${UNAME_MACHINE}el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=${UNAME_MACHINE} #else CPU= #endif #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } ;; or32:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; padre:Linux:*:*) echo sparc-unknown-linux-gnu exit ;; parisc64:Linux:*:* | hppa64:Linux:*:*) echo hppa64-unknown-linux-gnu exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in PA7*) echo hppa1.1-unknown-linux-gnu ;; PA8*) echo hppa2.0-unknown-linux-gnu ;; *) echo hppa-unknown-linux-gnu ;; esac exit ;; ppc64:Linux:*:*) echo powerpc64-unknown-linux-gnu exit ;; ppc:Linux:*:*) echo powerpc-unknown-linux-gnu exit ;; s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux exit ;; sh64*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; sh*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; sparc:Linux:*:* | sparc64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; tile*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; vax:Linux:*:*) echo ${UNAME_MACHINE}-dec-linux-gnu exit ;; x86_64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; xtensa*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. echo i386-sequent-sysv4 exit ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} exit ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. echo ${UNAME_MACHINE}-pc-os2-emx exit ;; i*86:XTS-300:*:STOP) echo ${UNAME_MACHINE}-unknown-stop exit ;; i*86:atheos:*:*) echo ${UNAME_MACHINE}-unknown-atheos exit ;; i*86:syllable:*:*) echo ${UNAME_MACHINE}-pc-syllable exit ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) echo i386-unknown-lynxos${UNAME_RELEASE} exit ;; i*86:*DOS:*:*) echo ${UNAME_MACHINE}-pc-msdosdjgpp exit ;; i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} else echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} fi exit ;; i*86:*:5:[678]*) # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} exit ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 echo ${UNAME_MACHINE}-pc-sco$UNAME_REL else echo ${UNAME_MACHINE}-pc-sysv32 fi exit ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i586. # Note: whatever this is, it MUST be the same as what config.sub # prints for the "djgpp" host, or else GDB configury will decide that # this is a cross-build. echo i586-pc-msdosdjgpp exit ;; Intel:Mach:3*:*) echo i386-pc-mach3 exit ;; paragon:*:*:*) echo i860-intel-osf1 exit ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 fi exit ;; mini*:CTIX:SYS*5:*) # "miniframe" echo m68010-convergent-sysv exit ;; mc68k:UNIX:SYSTEM5:3.51m) echo m68k-convergent-sysv exit ;; M680?0:D-NIX:5.3:*) echo m68k-diab-dnix exit ;; M68*:*:R3V[5678]*:*) test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4; exit; } ;; NCR*:*:4.2:* | MPRAS*:*:4.2:*) OS_REL='.3' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-unknown-lynxos${UNAME_RELEASE} exit ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit ;; TSUNAMI:LynxOS:2.*:*) echo sparc-unknown-lynxos${UNAME_RELEASE} exit ;; rs6000:LynxOS:2.*:*) echo rs6000-unknown-lynxos${UNAME_RELEASE} exit ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) echo powerpc-unknown-lynxos${UNAME_RELEASE} exit ;; SM[BE]S:UNIX_SV:*:*) echo mips-dde-sysv${UNAME_RELEASE} exit ;; RM*:ReliantUNIX-*:*:*) echo mips-sni-sysv4 exit ;; RM*:SINIX-*:*:*) echo mips-sni-sysv4 exit ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` echo ${UNAME_MACHINE}-sni-sysv4 else echo ns32k-sni-sysv fi exit ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says echo i586-unisys-sysv4 exit ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm echo hppa1.1-stratus-sysv4 exit ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. echo i860-stratus-sysv4 exit ;; i*86:VOS:*:*) # From Paul.Green@stratus.com. echo ${UNAME_MACHINE}-stratus-vos exit ;; *:VOS:*:*) # From Paul.Green@stratus.com. echo hppa1.1-stratus-vos exit ;; mc68*:A/UX:*:*) echo m68k-apple-aux${UNAME_RELEASE} exit ;; news*:NEWS-OS:6*:*) echo mips-sony-newsos6 exit ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then echo mips-nec-sysv${UNAME_RELEASE} else echo mips-unknown-sysv${UNAME_RELEASE} fi exit ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos exit ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. echo powerpc-apple-beos exit ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos exit ;; BePC:Haiku:*:*) # Haiku running on Intel PC compatible. echo i586-pc-haiku exit ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux${UNAME_RELEASE} exit ;; SX-5:SUPER-UX:*:*) echo sx5-nec-superux${UNAME_RELEASE} exit ;; SX-6:SUPER-UX:*:*) echo sx6-nec-superux${UNAME_RELEASE} exit ;; SX-7:SUPER-UX:*:*) echo sx7-nec-superux${UNAME_RELEASE} exit ;; SX-8:SUPER-UX:*:*) echo sx8-nec-superux${UNAME_RELEASE} exit ;; SX-8R:SUPER-UX:*:*) echo sx8r-nec-superux${UNAME_RELEASE} exit ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} exit ;; *:Rhapsody:*:*) echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} exit ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown case $UNAME_PROCESSOR in i386) eval $set_cc_for_build if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then UNAME_PROCESSOR="x86_64" fi fi ;; unknown) UNAME_PROCESSOR=powerpc ;; esac echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = "x86"; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} exit ;; *:QNX:*:4*) echo i386-pc-qnx exit ;; NEO-?:NONSTOP_KERNEL:*:*) echo neo-tandem-nsk${UNAME_RELEASE} exit ;; NSE-?:NONSTOP_KERNEL:*:*) echo nse-tandem-nsk${UNAME_RELEASE} exit ;; NSR-?:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} exit ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux exit ;; BS2000:POSIX*:*:*) echo bs2000-siemens-sysv exit ;; DS/*:UNIX_System_V:*:*) echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} exit ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. if test "$cputype" = "386"; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" fi echo ${UNAME_MACHINE}-unknown-plan9 exit ;; *:TOPS-10:*:*) echo pdp10-unknown-tops10 exit ;; *:TENEX:*:*) echo pdp10-unknown-tenex exit ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) echo pdp10-dec-tops20 exit ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) echo pdp10-xkl-tops20 exit ;; *:TOPS-20:*:*) echo pdp10-unknown-tops20 exit ;; *:ITS:*:*) echo pdp10-unknown-its exit ;; SEI:*:*:SEIUX) echo mips-sei-seiux${UNAME_RELEASE} exit ;; *:DragonFly:*:*) echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` exit ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` case "${UNAME_MACHINE}" in A*) echo alpha-dec-vms ; exit ;; I*) echo ia64-dec-vms ; exit ;; V*) echo vax-dec-vms ; exit ;; esac ;; *:XENIX:*:SysV) echo i386-pc-xenix exit ;; i*86:skyos:*:*) echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' exit ;; i*86:rdos:*:*) echo ${UNAME_MACHINE}-pc-rdos exit ;; i*86:AROS:*:*) echo ${UNAME_MACHINE}-pc-aros exit ;; x86_64:VMkernel:*:*) echo ${UNAME_MACHINE}-unknown-esx exit ;; esac #echo '(No uname command or uname output not recognized.)' 1>&2 #echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 eval $set_cc_for_build cat >$dummy.c < # include #endif main () { #if defined (sony) #if defined (MIPSEB) /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, I don't know.... */ printf ("mips-sony-bsd\n"); exit (0); #else #include printf ("m68k-sony-newsos%s\n", #ifdef NEWSOS4 "4" #else "" #endif ); exit (0); #endif #endif #if defined (__arm) && defined (__acorn) && defined (__unix) printf ("arm-acorn-riscix\n"); exit (0); #endif #if defined (hp300) && !defined (hpux) printf ("m68k-hp-bsd\n"); exit (0); #endif #if defined (NeXT) #if !defined (__ARCHITECTURE__) #define __ARCHITECTURE__ "m68k" #endif int version; version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; if (version < 4) printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); else printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); exit (0); #endif #if defined (MULTIMAX) || defined (n16) #if defined (UMAXV) printf ("ns32k-encore-sysv\n"); exit (0); #else #if defined (CMU) printf ("ns32k-encore-mach\n"); exit (0); #else printf ("ns32k-encore-bsd\n"); exit (0); #endif #endif #endif #if defined (__386BSD__) printf ("i386-pc-bsd\n"); exit (0); #endif #if defined (sequent) #if defined (i386) printf ("i386-sequent-dynix\n"); exit (0); #endif #if defined (ns32000) printf ("ns32k-sequent-dynix\n"); exit (0); #endif #endif #if defined (_SEQUENT_) struct utsname un; uname(&un); if (strncmp(un.version, "V2", 2) == 0) { printf ("i386-sequent-ptx2\n"); exit (0); } if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ printf ("i386-sequent-ptx1\n"); exit (0); } printf ("i386-sequent-ptx\n"); exit (0); #endif #if defined (vax) # if !defined (ultrix) # include # if defined (BSD) # if BSD == 43 printf ("vax-dec-bsd4.3\n"); exit (0); # else # if BSD == 199006 printf ("vax-dec-bsd4.3reno\n"); exit (0); # else printf ("vax-dec-bsd\n"); exit (0); # endif # endif # else printf ("vax-dec-bsd\n"); exit (0); # endif # else printf ("vax-dec-ultrix\n"); exit (0); # endif #endif #if defined (alliant) && defined (i860) printf ("i860-alliant-bsd\n"); exit (0); #endif exit (1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } # Apollos put the system type in the environment. test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } # Convex versions that predate uname can use getsysinfo(1) if [ -x /usr/convex/getsysinfo ] then case `getsysinfo -f cpu_type` in c1*) echo c1-convex-bsd exit ;; c2*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; c34*) echo c34-convex-bsd exit ;; c38*) echo c38-convex-bsd exit ;; c4*) echo c4-convex-bsd exit ;; esac fi cat >&2 < in order to provide the needed information to handle your system. config.guess timestamp = $timestamp uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` /bin/uname -X = `(/bin/uname -X) 2>/dev/null` hostinfo = `(hostinfo) 2>/dev/null` /bin/universe = `(/bin/universe) 2>/dev/null` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` /bin/arch = `(/bin/arch) 2>/dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` UNAME_MACHINE = ${UNAME_MACHINE} UNAME_RELEASE = ${UNAME_RELEASE} UNAME_SYSTEM = ${UNAME_SYSTEM} UNAME_VERSION = ${UNAME_VERSION} EOF exit 1 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: io_lib-1.14.6/config.sub0000755000031500020650000010517612617160065011756 00000000000000#! /bin/sh # Configuration validation subroutine script. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, # 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, # 2011, 2012 Free Software Foundation, Inc. timestamp='2012-02-10' # This file is (in principle) common to ALL GNU software. # The presence of a machine in this file suggests that SOME GNU software # can handle that machine. It does not imply ALL GNU software can. # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Please send patches to . Submit a context # diff and a properly formatted GNU ChangeLog entry. # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. # Otherwise, we print the canonical config type on stdout and succeed. # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. # Each package is responsible for reporting which valid configurations # it does not support. The user should be able to distinguish # a failure to support a valid configuration from a meaningless # configuration. # The goal of this file is to map all the various variations of a given # machine specification into a single specification in the form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or in some cases, the newer four-part form: # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] CPU-MFR-OPSYS $0 [OPTION] ALIAS Canonicalize a configuration name. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.sub ($timestamp) Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" exit 1 ;; *local*) # First pass through any local machine types. echo $1 exit ;; * ) break ;; esac done case $# in 0) echo "$me: missing argument$help" >&2 exit 1;; 1) ;; *) echo "$me: too many arguments$help" >&2 exit 1;; esac # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). # Here we must recognize all the valid KERNEL-OS combinations. maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ knetbsd*-gnu* | netbsd*-gnu* | \ kopensolaris*-gnu* | \ storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; android-linux) os=-linux-android basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown ;; *) basic_machine=`echo $1 | sed 's/-[^-]*$//'` if [ $basic_machine != $1 ] then os=`echo $1 | sed 's/.*-/-/'` else os=; fi ;; esac ### Let's recognize common machines as not being operating systems so ### that things like config.sub decstation-3100 work. We also ### recognize some manufacturers as not being operating systems, so we ### can provide default operating systems below. case $os in -sun*os*) # Prevent following clause from handling this invalid input. ;; -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ -apple | -axis | -knuth | -cray | -microblaze) os= basic_machine=$1 ;; -bluegene*) os=-cnk ;; -sim | -cisco | -oki | -wec | -winbond) os= basic_machine=$1 ;; -scout) ;; -wrs) os=-vxworks basic_machine=$1 ;; -chorusos*) os=-chorusos basic_machine=$1 ;; -chorusrdb) os=-chorusrdb basic_machine=$1 ;; -hiux*) os=-hiuxwe2 ;; -sco6) os=-sco5v6 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5) os=-sco3.2v5 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco4) os=-sco3.2v4 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2.[4-9]*) os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2v[4-9]*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5v6*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco*) os=-sco3.2v2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -udk*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -isc) os=-isc2.2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -clix*) basic_machine=clipper-intergraph ;; -isc*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -lynx*) os=-lynxos ;; -ptx*) basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` ;; -windowsnt*) os=`echo $os | sed -e 's/windowsnt/winnt/'` ;; -psos*) os=-psos ;; -mint | -mint[0-9]*) basic_machine=m68k-atari os=-mint ;; esac # Decode aliases for certain CPU-COMPANY combinations. case $basic_machine in # Recognize the basic CPU types without company name. # Some are omitted here because they have special meanings below. 1750a | 580 \ | a29k \ | aarch64 | aarch64_be \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | am33_2.0 \ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ | be32 | be64 \ | bfin \ | c4x | clipper \ | d10v | d30v | dlx | dsp16xx \ | epiphany \ | fido | fr30 | frv \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | hexagon \ | i370 | i860 | i960 | ia64 \ | ip2k | iq2000 \ | le32 | le64 \ | lm32 \ | m32c | m32r | m32rle | m68000 | m68k | m88k \ | maxq | mb | microblaze | mcore | mep | metag \ | mips | mipsbe | mipseb | mipsel | mipsle \ | mips16 \ | mips64 | mips64el \ | mips64octeon | mips64octeonel \ | mips64orion | mips64orionel \ | mips64r5900 | mips64r5900el \ | mips64vr | mips64vrel \ | mips64vr4100 | mips64vr4100el \ | mips64vr4300 | mips64vr4300el \ | mips64vr5000 | mips64vr5000el \ | mips64vr5900 | mips64vr5900el \ | mipsisa32 | mipsisa32el \ | mipsisa32r2 | mipsisa32r2el \ | mipsisa64 | mipsisa64el \ | mipsisa64r2 | mipsisa64r2el \ | mipsisa64sb1 | mipsisa64sb1el \ | mipsisa64sr71k | mipsisa64sr71kel \ | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ | moxie \ | mt \ | msp430 \ | nds32 | nds32le | nds32be \ | nios | nios2 \ | ns16k | ns32k \ | open8 \ | or32 \ | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle \ | pyramid \ | rl78 | rx \ | score \ | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ | spu \ | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ | ubicom32 \ | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ | we32k \ | x86 | xc16x | xstormy16 | xtensa \ | z8k | z80) basic_machine=$basic_machine-unknown ;; c54x) basic_machine=tic54x-unknown ;; c55x) basic_machine=tic55x-unknown ;; c6x) basic_machine=tic6x-unknown ;; m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip) basic_machine=$basic_machine-unknown os=-none ;; m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) ;; ms1) basic_machine=mt-unknown ;; strongarm | thumb | xscale) basic_machine=arm-unknown ;; xgate) basic_machine=$basic_machine-unknown os=-none ;; xscaleeb) basic_machine=armeb-unknown ;; xscaleel) basic_machine=armel-unknown ;; # We use `pc' rather than `unknown' # because (1) that's what they normally are, and # (2) the word "unknown" tends to confuse beginning users. i*86 | x86_64) basic_machine=$basic_machine-pc ;; # Object if more than one company name word. *-*-*) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; # Recognize the basic CPU types with company name. 580-* \ | a29k-* \ | aarch64-* | aarch64_be-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* | avr32-* \ | be32-* | be64-* \ | bfin-* | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* \ | clipper-* | craynv-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ | elxsi-* \ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | hexagon-* \ | i*86-* | i860-* | i960-* | ia64-* \ | ip2k-* | iq2000-* \ | le32-* | le64-* \ | lm32-* \ | m32c-* | m32r-* | m32rle-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ | mips16-* \ | mips64-* | mips64el-* \ | mips64octeon-* | mips64octeonel-* \ | mips64orion-* | mips64orionel-* \ | mips64r5900-* | mips64r5900el-* \ | mips64vr-* | mips64vrel-* \ | mips64vr4100-* | mips64vr4100el-* \ | mips64vr4300-* | mips64vr4300el-* \ | mips64vr5000-* | mips64vr5000el-* \ | mips64vr5900-* | mips64vr5900el-* \ | mipsisa32-* | mipsisa32el-* \ | mipsisa32r2-* | mipsisa32r2el-* \ | mipsisa64-* | mipsisa64el-* \ | mipsisa64r2-* | mipsisa64r2el-* \ | mipsisa64sb1-* | mipsisa64sb1el-* \ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ | mipstx39-* | mipstx39el-* \ | mmix-* \ | mt-* \ | msp430-* \ | nds32-* | nds32le-* | nds32be-* \ | nios-* | nios2-* \ | none-* | np1-* | ns16k-* | ns32k-* \ | open8-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ | pyramid-* \ | rl78-* | romp-* | rs6000-* | rx-* \ | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ | sparclite-* \ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \ | tahoe-* \ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ | tile*-* \ | tron-* \ | ubicom32-* \ | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ | vax-* \ | we32k-* \ | x86-* | x86_64-* | xc16x-* | xps100-* \ | xstormy16-* | xtensa*-* \ | ymp-* \ | z8k-* | z80-*) ;; # Recognize the basic CPU types without company name, with glob match. xtensa*) basic_machine=$basic_machine-unknown ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. 386bsd) basic_machine=i386-unknown os=-bsd ;; 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) basic_machine=m68000-att ;; 3b*) basic_machine=we32k-att ;; a29khif) basic_machine=a29k-amd os=-udi ;; abacus) basic_machine=abacus-unknown ;; adobe68k) basic_machine=m68010-adobe os=-scout ;; alliant | fx80) basic_machine=fx80-alliant ;; altos | altos3068) basic_machine=m68k-altos ;; am29k) basic_machine=a29k-none os=-bsd ;; amd64) basic_machine=x86_64-pc ;; amd64-*) basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; amdahl) basic_machine=580-amdahl os=-sysv ;; amiga | amiga-*) basic_machine=m68k-unknown ;; amigaos | amigados) basic_machine=m68k-unknown os=-amigaos ;; amigaunix | amix) basic_machine=m68k-unknown os=-sysv4 ;; apollo68) basic_machine=m68k-apollo os=-sysv ;; apollo68bsd) basic_machine=m68k-apollo os=-bsd ;; aros) basic_machine=i386-pc os=-aros ;; aux) basic_machine=m68k-apple os=-aux ;; balance) basic_machine=ns32k-sequent os=-dynix ;; blackfin) basic_machine=bfin-unknown os=-linux ;; blackfin-*) basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; bluegene*) basic_machine=powerpc-ibm os=-cnk ;; c54x-*) basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c55x-*) basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c6x-*) basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c90) basic_machine=c90-cray os=-unicos ;; cegcc) basic_machine=arm-unknown os=-cegcc ;; convex-c1) basic_machine=c1-convex os=-bsd ;; convex-c2) basic_machine=c2-convex os=-bsd ;; convex-c32) basic_machine=c32-convex os=-bsd ;; convex-c34) basic_machine=c34-convex os=-bsd ;; convex-c38) basic_machine=c38-convex os=-bsd ;; cray | j90) basic_machine=j90-cray os=-unicos ;; craynv) basic_machine=craynv-cray os=-unicosmp ;; cr16 | cr16-*) basic_machine=cr16-unknown os=-elf ;; crds | unos) basic_machine=m68k-crds ;; crisv32 | crisv32-* | etraxfs*) basic_machine=crisv32-axis ;; cris | cris-* | etrax*) basic_machine=cris-axis ;; crx) basic_machine=crx-unknown os=-elf ;; da30 | da30-*) basic_machine=m68k-da30 ;; decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) basic_machine=mips-dec ;; decsystem10* | dec10*) basic_machine=pdp10-dec os=-tops10 ;; decsystem20* | dec20*) basic_machine=pdp10-dec os=-tops20 ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) basic_machine=m68k-motorola ;; delta88) basic_machine=m88k-motorola os=-sysv3 ;; dicos) basic_machine=i686-pc os=-dicos ;; djgpp) basic_machine=i586-pc os=-msdosdjgpp ;; dpx20 | dpx20-*) basic_machine=rs6000-bull os=-bosx ;; dpx2* | dpx2*-bull) basic_machine=m68k-bull os=-sysv3 ;; ebmon29k) basic_machine=a29k-amd os=-ebmon ;; elxsi) basic_machine=elxsi-elxsi os=-bsd ;; encore | umax | mmax) basic_machine=ns32k-encore ;; es1800 | OSE68k | ose68k | ose | OSE) basic_machine=m68k-ericsson os=-ose ;; fx2800) basic_machine=i860-alliant ;; genix) basic_machine=ns32k-ns ;; gmicro) basic_machine=tron-gmicro os=-sysv ;; go32) basic_machine=i386-pc os=-go32 ;; h3050r* | hiux*) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; h8300hms) basic_machine=h8300-hitachi os=-hms ;; h8300xray) basic_machine=h8300-hitachi os=-xray ;; h8500hms) basic_machine=h8500-hitachi os=-hms ;; harris) basic_machine=m88k-harris os=-sysv3 ;; hp300-*) basic_machine=m68k-hp ;; hp300bsd) basic_machine=m68k-hp os=-bsd ;; hp300hpux) basic_machine=m68k-hp os=-hpux ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) basic_machine=m68000-hp ;; hp9k3[2-9][0-9]) basic_machine=m68k-hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) basic_machine=hppa1.1-hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) basic_machine=hppa1.1-hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) basic_machine=hppa1.0-hp ;; hppa-next) os=-nextstep3 ;; hppaosf) basic_machine=hppa1.1-hp os=-osf ;; hppro) basic_machine=hppa1.1-hp os=-proelf ;; i370-ibm* | ibm*) basic_machine=i370-ibm ;; i*86v32) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv32 ;; i*86v4*) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv4 ;; i*86v) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv ;; i*86sol2) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-solaris2 ;; i386mach) basic_machine=i386-mach os=-mach ;; i386-vsta | vsta) basic_machine=i386-unknown os=-vsta ;; iris | iris4d) basic_machine=mips-sgi case $os in -irix*) ;; *) os=-irix4 ;; esac ;; isi68 | isi) basic_machine=m68k-isi os=-sysv ;; m68knommu) basic_machine=m68k-unknown os=-linux ;; m68knommu-*) basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; m88k-omron*) basic_machine=m88k-omron ;; magnum | m3230) basic_machine=mips-mips os=-sysv ;; merlin) basic_machine=ns32k-utek os=-sysv ;; microblaze) basic_machine=microblaze-xilinx ;; mingw32) basic_machine=i386-pc os=-mingw32 ;; mingw32ce) basic_machine=arm-unknown os=-mingw32ce ;; miniframe) basic_machine=m68000-convergent ;; *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) basic_machine=m68k-atari os=-mint ;; mips3*-*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` ;; mips3*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown ;; monitor) basic_machine=m68k-rom68k os=-coff ;; morphos) basic_machine=powerpc-unknown os=-morphos ;; msdos) basic_machine=i386-pc os=-msdos ;; ms1-*) basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` ;; msys) basic_machine=i386-pc os=-msys ;; mvs) basic_machine=i370-ibm os=-mvs ;; nacl) basic_machine=le32-unknown os=-nacl ;; ncr3000) basic_machine=i486-ncr os=-sysv4 ;; netbsd386) basic_machine=i386-unknown os=-netbsd ;; netwinder) basic_machine=armv4l-rebel os=-linux ;; news | news700 | news800 | news900) basic_machine=m68k-sony os=-newsos ;; news1000) basic_machine=m68030-sony os=-newsos ;; news-3600 | risc-news) basic_machine=mips-sony os=-newsos ;; necv70) basic_machine=v70-nec os=-sysv ;; next | m*-next ) basic_machine=m68k-next case $os in -nextstep* ) ;; -ns2*) os=-nextstep2 ;; *) os=-nextstep3 ;; esac ;; nh3000) basic_machine=m68k-harris os=-cxux ;; nh[45]000) basic_machine=m88k-harris os=-cxux ;; nindy960) basic_machine=i960-intel os=-nindy ;; mon960) basic_machine=i960-intel os=-mon960 ;; nonstopux) basic_machine=mips-compaq os=-nonstopux ;; np1) basic_machine=np1-gould ;; neo-tandem) basic_machine=neo-tandem ;; nse-tandem) basic_machine=nse-tandem ;; nsr-tandem) basic_machine=nsr-tandem ;; op50n-* | op60c-*) basic_machine=hppa1.1-oki os=-proelf ;; openrisc | openrisc-*) basic_machine=or32-unknown ;; os400) basic_machine=powerpc-ibm os=-os400 ;; OSE68000 | ose68000) basic_machine=m68000-ericsson os=-ose ;; os68k) basic_machine=m68k-none os=-os68k ;; pa-hitachi) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; paragon) basic_machine=i860-intel os=-osf ;; parisc) basic_machine=hppa-unknown os=-linux ;; parisc-*) basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; pbd) basic_machine=sparc-tti ;; pbb) basic_machine=m68k-tti ;; pc532 | pc532-*) basic_machine=ns32k-pc532 ;; pc98) basic_machine=i386-pc ;; pc98-*) basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium | p5 | k5 | k6 | nexgen | viac3) basic_machine=i586-pc ;; pentiumpro | p6 | 6x86 | athlon | athlon_*) basic_machine=i686-pc ;; pentiumii | pentium2 | pentiumiii | pentium3) basic_machine=i686-pc ;; pentium4) basic_machine=i786-pc ;; pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumpro-* | p6-* | 6x86-* | athlon-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium4-*) basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pn) basic_machine=pn-gould ;; power) basic_machine=power-ibm ;; ppc | ppcbe) basic_machine=powerpc-unknown ;; ppc-* | ppcbe-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppcle | powerpclittle | ppc-le | powerpc-little) basic_machine=powerpcle-unknown ;; ppcle-* | powerpclittle-*) basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64) basic_machine=powerpc64-unknown ;; ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64le | powerpc64little | ppc64-le | powerpc64-little) basic_machine=powerpc64le-unknown ;; ppc64le-* | powerpc64little-*) basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ps2) basic_machine=i386-ibm ;; pw32) basic_machine=i586-unknown os=-pw32 ;; rdos) basic_machine=i386-pc os=-rdos ;; rom68k) basic_machine=m68k-rom68k os=-coff ;; rm[46]00) basic_machine=mips-siemens ;; rtpc | rtpc-*) basic_machine=romp-ibm ;; s390 | s390-*) basic_machine=s390-ibm ;; s390x | s390x-*) basic_machine=s390x-ibm ;; sa29200) basic_machine=a29k-amd os=-udi ;; sb1) basic_machine=mipsisa64sb1-unknown ;; sb1el) basic_machine=mipsisa64sb1el-unknown ;; sde) basic_machine=mipsisa32-sde os=-elf ;; sei) basic_machine=mips-sei os=-seiux ;; sequent) basic_machine=i386-sequent ;; sh) basic_machine=sh-hitachi os=-hms ;; sh5el) basic_machine=sh5le-unknown ;; sh64) basic_machine=sh64-unknown ;; sparclite-wrs | simso-wrs) basic_machine=sparclite-wrs os=-vxworks ;; sps7) basic_machine=m68k-bull os=-sysv2 ;; spur) basic_machine=spur-unknown ;; st2000) basic_machine=m68k-tandem ;; stratus) basic_machine=i860-stratus os=-sysv4 ;; strongarm-* | thumb-*) basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` ;; sun2) basic_machine=m68000-sun ;; sun2os3) basic_machine=m68000-sun os=-sunos3 ;; sun2os4) basic_machine=m68000-sun os=-sunos4 ;; sun3os3) basic_machine=m68k-sun os=-sunos3 ;; sun3os4) basic_machine=m68k-sun os=-sunos4 ;; sun4os3) basic_machine=sparc-sun os=-sunos3 ;; sun4os4) basic_machine=sparc-sun os=-sunos4 ;; sun4sol2) basic_machine=sparc-sun os=-solaris2 ;; sun3 | sun3-*) basic_machine=m68k-sun ;; sun4) basic_machine=sparc-sun ;; sun386 | sun386i | roadrunner) basic_machine=i386-sun ;; sv1) basic_machine=sv1-cray os=-unicos ;; symmetry) basic_machine=i386-sequent os=-dynix ;; t3e) basic_machine=alphaev5-cray os=-unicos ;; t90) basic_machine=t90-cray os=-unicos ;; tile*) basic_machine=$basic_machine-unknown os=-linux-gnu ;; tx39) basic_machine=mipstx39-unknown ;; tx39el) basic_machine=mipstx39el-unknown ;; toad1) basic_machine=pdp10-xkl os=-tops20 ;; tower | tower-32) basic_machine=m68k-ncr ;; tpf) basic_machine=s390x-ibm os=-tpf ;; udi29k) basic_machine=a29k-amd os=-udi ;; ultra3) basic_machine=a29k-nyu os=-sym1 ;; v810 | necv810) basic_machine=v810-nec os=-none ;; vaxv) basic_machine=vax-dec os=-sysv ;; vms) basic_machine=vax-dec os=-vms ;; vpp*|vx|vx-*) basic_machine=f301-fujitsu ;; vxworks960) basic_machine=i960-wrs os=-vxworks ;; vxworks68) basic_machine=m68k-wrs os=-vxworks ;; vxworks29k) basic_machine=a29k-wrs os=-vxworks ;; w65*) basic_machine=w65-wdc os=-none ;; w89k-*) basic_machine=hppa1.1-winbond os=-proelf ;; xbox) basic_machine=i686-pc os=-mingw32 ;; xps | xps100) basic_machine=xps100-honeywell ;; xscale-* | xscalee[bl]-*) basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` ;; ymp) basic_machine=ymp-cray os=-unicos ;; z8k-*-coff) basic_machine=z8k-unknown os=-sim ;; z80-*-coff) basic_machine=z80-unknown os=-sim ;; none) basic_machine=none-none os=-none ;; # Here we handle the default manufacturer of certain CPU types. It is in # some cases the only manufacturer, in others, it is the most popular. w89k) basic_machine=hppa1.1-winbond ;; op50n) basic_machine=hppa1.1-oki ;; op60c) basic_machine=hppa1.1-oki ;; romp) basic_machine=romp-ibm ;; mmix) basic_machine=mmix-knuth ;; rs6000) basic_machine=rs6000-ibm ;; vax) basic_machine=vax-dec ;; pdp10) # there are many clones, so DEC is not a safe bet basic_machine=pdp10-unknown ;; pdp11) basic_machine=pdp11-dec ;; we32k) basic_machine=we32k-att ;; sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) basic_machine=sh-unknown ;; sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) basic_machine=sparc-sun ;; cydra) basic_machine=cydra-cydrome ;; orion) basic_machine=orion-highlevel ;; orion105) basic_machine=clipper-highlevel ;; mac | mpw | mac-mpw) basic_machine=m68k-apple ;; pmac | pmac-mpw) basic_machine=powerpc-apple ;; *-unknown) # Make sure to match an already-canonicalized machine name. ;; *) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; esac # Here we canonicalize certain aliases for manufacturers. case $basic_machine in *-digital*) basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` ;; *-commodore*) basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` ;; *) ;; esac # Decode manufacturer-specific aliases for certain operating systems. if [ x"$os" != x"" ] then case $os in # First match some system type aliases # that might get confused with valid system types. # -solaris* is a basic system type, with this one exception. -auroraux) os=-auroraux ;; -solaris1 | -solaris1.*) os=`echo $os | sed -e 's|solaris1|sunos4|'` ;; -solaris) os=-solaris2 ;; -svr4*) os=-sysv4 ;; -unixware*) os=-sysv4.2uw ;; -gnu/linux*) os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` ;; # First accept the basic system types. # The portable systems comes first. # Each alternative MUST END IN A *, to match a version number. # -sysv* is not here because it comes later, after sysvr4. -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ | -sym* | -kopensolaris* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* | -aros* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ | -openbsd* | -solidbsd* \ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -chorusos* | -chorusrdb* | -cegcc* \ | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -mingw32* | -linux-gnu* | -linux-android* \ | -linux-newlib* | -linux-uclibc* \ | -uxpv* | -beos* | -mpeix* | -udk* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) case $basic_machine in x86-* | i*86-*) ;; *) os=-nto$os ;; esac ;; -nto-qnx*) ;; -nto*) os=`echo $os | sed -e 's|nto|nto-qnx|'` ;; -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) ;; -mac*) os=`echo $os | sed -e 's|mac|macos|'` ;; -linux-dietlibc) os=-linux-dietlibc ;; -linux*) os=`echo $os | sed -e 's|linux|linux-gnu|'` ;; -sunos5*) os=`echo $os | sed -e 's|sunos5|solaris2|'` ;; -sunos6*) os=`echo $os | sed -e 's|sunos6|solaris3|'` ;; -opened*) os=-openedition ;; -os400*) os=-os400 ;; -wince*) os=-wince ;; -osfrose*) os=-osfrose ;; -osf*) os=-osf ;; -utek*) os=-bsd ;; -dynix*) os=-bsd ;; -acis*) os=-aos ;; -atheos*) os=-atheos ;; -syllable*) os=-syllable ;; -386bsd) os=-bsd ;; -ctix* | -uts*) os=-sysv ;; -nova*) os=-rtmk-nova ;; -ns2 ) os=-nextstep2 ;; -nsk*) os=-nsk ;; # Preserve the version number of sinix5. -sinix5.*) os=`echo $os | sed -e 's|sinix|sysv|'` ;; -sinix*) os=-sysv4 ;; -tpf*) os=-tpf ;; -triton*) os=-sysv3 ;; -oss*) os=-sysv3 ;; -svr4) os=-sysv4 ;; -svr3) os=-sysv3 ;; -sysvr4) os=-sysv4 ;; # This must come after -sysvr4. -sysv*) ;; -ose*) os=-ose ;; -es1800*) os=-ose ;; -xenix) os=-xenix ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) os=-mint ;; -aros*) os=-aros ;; -kaos*) os=-kaos ;; -zvmoe) os=-zvmoe ;; -dicos*) os=-dicos ;; -nacl*) ;; -none) ;; *) # Get rid of the `-' at the beginning of $os. os=`echo $os | sed 's/[^-]*-//'` echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 exit 1 ;; esac else # Here we handle the default operating systems that come with various machines. # The value should be what the vendor currently ships out the door with their # machine or put another way, the most popular os provided with the machine. # Note that if you're going to try to match "-MANUFACTURER" here (say, # "-sun"), then you have to tell the case statement up towards the top # that MANUFACTURER isn't an operating system. Otherwise, code above # will signal an error saying that MANUFACTURER isn't an operating # system, and we'll never get to this point. case $basic_machine in score-*) os=-elf ;; spu-*) os=-elf ;; *-acorn) os=-riscix1.2 ;; arm*-rebel) os=-linux ;; arm*-semi) os=-aout ;; c4x-* | tic4x-*) os=-coff ;; tic54x-*) os=-coff ;; tic55x-*) os=-coff ;; tic6x-*) os=-coff ;; # This must come before the *-dec entry. pdp10-*) os=-tops20 ;; pdp11-*) os=-none ;; *-dec | vax-*) os=-ultrix4.2 ;; m68*-apollo) os=-domain ;; i386-sun) os=-sunos4.0.2 ;; m68000-sun) os=-sunos3 ;; m68*-cisco) os=-aout ;; mep-*) os=-elf ;; mips*-cisco) os=-elf ;; mips*-*) os=-elf ;; or32-*) os=-coff ;; *-tti) # must be before sparc entry or we get the wrong os. os=-sysv3 ;; sparc-* | *-sun) os=-sunos4.1.1 ;; *-be) os=-beos ;; *-haiku) os=-haiku ;; *-ibm) os=-aix ;; *-knuth) os=-mmixware ;; *-wec) os=-proelf ;; *-winbond) os=-proelf ;; *-oki) os=-proelf ;; *-hp) os=-hpux ;; *-hitachi) os=-hiux ;; i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) os=-sysv ;; *-cbm) os=-amigaos ;; *-dg) os=-dgux ;; *-dolphin) os=-sysv3 ;; m68k-ccur) os=-rtu ;; m88k-omron*) os=-luna ;; *-next ) os=-nextstep ;; *-sequent) os=-ptx ;; *-crds) os=-unos ;; *-ns) os=-genix ;; i370-*) os=-mvs ;; *-next) os=-nextstep3 ;; *-gould) os=-sysv ;; *-highlevel) os=-bsd ;; *-encore) os=-bsd ;; *-sgi) os=-irix ;; *-siemens) os=-sysv4 ;; *-masscomp) os=-rtu ;; f30[01]-fujitsu | f700-fujitsu) os=-uxpv ;; *-rom68k) os=-coff ;; *-*bug) os=-coff ;; *-apple) os=-macos ;; *-atari*) os=-mint ;; *) os=-none ;; esac fi # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. vendor=unknown case $basic_machine in *-unknown) case $os in -riscix*) vendor=acorn ;; -sunos*) vendor=sun ;; -cnk*|-aix*) vendor=ibm ;; -beos*) vendor=be ;; -hpux*) vendor=hp ;; -mpeix*) vendor=hp ;; -hiux*) vendor=hitachi ;; -unos*) vendor=crds ;; -dgux*) vendor=dg ;; -luna*) vendor=omron ;; -genix*) vendor=ns ;; -mvs* | -opened*) vendor=ibm ;; -os400*) vendor=ibm ;; -ptx*) vendor=sequent ;; -tpf*) vendor=ibm ;; -vxsim* | -vxworks* | -windiss*) vendor=wrs ;; -aux*) vendor=apple ;; -hms*) vendor=hitachi ;; -mpw* | -macos*) vendor=apple ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) vendor=atari ;; -vos*) vendor=stratus ;; esac basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` ;; esac echo $basic_machine$os exit # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: io_lib-1.14.6/depcomp0000755000031500020650000004755612617160066011360 00000000000000#! /bin/sh # depcomp - compile a program generating dependencies as side-effects scriptversion=2011-12-04.11; # UTC # Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009, 2010, # 2011 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Alexandre Oliva . case $1 in '') echo "$0: No command. Try \`$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: depcomp [--help] [--version] PROGRAM [ARGS] Run PROGRAMS ARGS to compile a file, generating dependencies as side-effects. Environment variables: depmode Dependency tracking mode. source Source file read by `PROGRAMS ARGS'. object Object file output by `PROGRAMS ARGS'. DEPDIR directory where to store dependencies. depfile Dependency file to output. tmpdepfile Temporary file to use when outputting dependencies. libtool Whether libtool is used (yes/no). Report bugs to . EOF exit $? ;; -v | --v*) echo "depcomp $scriptversion" exit $? ;; esac if test -z "$depmode" || test -z "$source" || test -z "$object"; then echo "depcomp: Variables source, object and depmode must be set" 1>&2 exit 1 fi # Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. depfile=${depfile-`echo "$object" | sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} rm -f "$tmpdepfile" # Some modes work just like other modes, but use different flags. We # parameterize here, but still list the modes in the big case below, # to make depend.m4 easier to write. Note that we *cannot* use a case # here, because this file can only contain one case statement. if test "$depmode" = hp; then # HP compiler uses -M and no extra arg. gccflag=-M depmode=gcc fi if test "$depmode" = dashXmstdout; then # This is just like dashmstdout with a different argument. dashmflag=-xM depmode=dashmstdout fi cygpath_u="cygpath -u -f -" if test "$depmode" = msvcmsys; then # This is just like msvisualcpp but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u='sed s,\\\\,/,g' depmode=msvisualcpp fi if test "$depmode" = msvc7msys; then # This is just like msvc7 but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u='sed s,\\\\,/,g' depmode=msvc7 fi case "$depmode" in gcc3) ## gcc 3 implements dependency tracking that does exactly what ## we want. Yay! Note: for some reason libtool 1.4 doesn't like ## it if -MD -MP comes after the -MF stuff. Hmm. ## Unfortunately, FreeBSD c89 acceptance of flags depends upon ## the command line argument order; so add the flags where they ## appear in depend2.am. Note that the slowdown incurred here ## affects only configure: in makefiles, %FASTDEP% shortcuts this. for arg do case $arg in -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; *) set fnord "$@" "$arg" ;; esac shift # fnord shift # $arg done "$@" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi mv "$tmpdepfile" "$depfile" ;; gcc) ## There are various ways to get dependency output from gcc. Here's ## why we pick this rather obscure method: ## - Don't want to use -MD because we'd like the dependencies to end ## up in a subdir. Having to rename by hand is ugly. ## (We might end up doing this anyway to support other compilers.) ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like ## -MM, not -M (despite what the docs say). ## - Using -M directly means running the compiler twice (even worse ## than renaming). if test -z "$gccflag"; then gccflag=-MD, fi "$@" -Wp,"$gccflag$tmpdepfile" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz ## The second -e expression handles DOS-style file names with drive letters. sed -e 's/^[^:]*: / /' \ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" ## This next piece of magic avoids the `deleted header file' problem. ## The problem is that when a header file which appears in a .P file ## is deleted, the dependency causes make to die (because there is ## typically no way to rebuild the header). We avoid this by adding ## dummy dependencies for each header file. Too bad gcc doesn't do ## this for us directly. tr ' ' ' ' < "$tmpdepfile" | ## Some versions of gcc put a space before the `:'. On the theory ## that the space means something, we add a space to the output as ## well. hp depmode also adds that space, but also prefixes the VPATH ## to the object. Take care to not repeat it in the output. ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; sgi) if test "$libtool" = yes; then "$@" "-Wp,-MDupdate,$tmpdepfile" else "$@" -MDupdate "$tmpdepfile" fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files echo "$object : \\" > "$depfile" # Clip off the initial element (the dependent). Don't try to be # clever and replace this with sed code, as IRIX sed won't handle # lines with more than a fixed number of characters (4096 in # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; # the IRIX cc adds comments like `#:fec' to the end of the # dependency line. tr ' ' ' ' < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ tr ' ' ' ' >> "$depfile" echo >> "$depfile" # The second pass generates a dummy entry for each header file. tr ' ' ' ' < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ >> "$depfile" else # The sourcefile does not contain any dependencies, so just # store a dummy comment line, to avoid errors with the Makefile # "include basename.Plo" scheme. echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; aix) # The C for AIX Compiler uses -M and outputs the dependencies # in a .u file. In older versions, this file always lives in the # current directory. Also, the AIX compiler puts `$object:' at the # start of each line; $object doesn't have directory information. # Version 6 uses the directory in both cases. dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` test "x$dir" = "x$object" && dir= base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` if test "$libtool" = yes; then tmpdepfile1=$dir$base.u tmpdepfile2=$base.u tmpdepfile3=$dir.libs/$base.u "$@" -Wc,-M else tmpdepfile1=$dir$base.u tmpdepfile2=$dir$base.u tmpdepfile3=$dir$base.u "$@" -M fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then # Each line is of the form `foo.o: dependent.h'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" # That's a tab and a space in the []. sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" else # The sourcefile does not contain any dependencies, so just # store a dummy comment line, to avoid errors with the Makefile # "include basename.Plo" scheme. echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; icc) # Intel's C compiler understands `-MD -MF file'. However on # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c # ICC 7.0 will fill foo.d with something like # foo.o: sub/foo.c # foo.o: sub/foo.h # which is wrong. We want: # sub/foo.o: sub/foo.c # sub/foo.o: sub/foo.h # sub/foo.c: # sub/foo.h: # ICC 7.1 will output # foo.o: sub/foo.c sub/foo.h # and will wrap long lines using \ : # foo.o: sub/foo.c ... \ # sub/foo.h ... \ # ... "$@" -MD -MF "$tmpdepfile" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each line is of the form `foo.o: dependent.h', # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this invocation # correctly. Breaking it into two sed invocations is a workaround. sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp2) # The "hp" stanza above does not work with aCC (C++) and HP's ia64 # compilers, which have integrated preprocessors. The correct option # to use with these is +Maked; it writes dependencies to a file named # 'foo.d', which lands next to the object file, wherever that # happens to be. # Much of this is similar to the tru64 case; see comments there. dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` test "x$dir" = "x$object" && dir= base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` if test "$libtool" = yes; then tmpdepfile1=$dir$base.d tmpdepfile2=$dir.libs/$base.d "$@" -Wc,+Maked else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d "$@" +Maked fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile1" "$tmpdepfile2" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" # Add `dependent.h:' lines. sed -ne '2,${ s/^ *// s/ \\*$// s/$/:/ p }' "$tmpdepfile" >> "$depfile" else echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" "$tmpdepfile2" ;; tru64) # The Tru64 compiler uses -MD to generate dependencies as a side # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put # dependencies in `foo.d' instead, so we check for that too. # Subdirectories are respected. dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` test "x$dir" = "x$object" && dir= base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` if test "$libtool" = yes; then # With Tru64 cc, shared objects can also be used to make a # static library. This mechanism is used in libtool 1.4 series to # handle both shared and static libraries in a single compilation. # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. # # With libtool 1.5 this exception was removed, and libtool now # generates 2 separate objects for the 2 libraries. These two # compilations output dependencies in $dir.libs/$base.o.d and # in $dir$base.o.d. We have to check for both files, because # one of the two compilations can be disabled. We should prefer # $dir$base.o.d over $dir.libs/$base.o.d because the latter is # automatically cleaned when .libs/ is deleted, while ignoring # the former would cause a distcleancheck panic. tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 tmpdepfile2=$dir$base.o.d # libtool 1.5 tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 "$@" -Wc,-MD else tmpdepfile1=$dir$base.o.d tmpdepfile2=$dir$base.d tmpdepfile3=$dir$base.d tmpdepfile4=$dir$base.d "$@" -MD fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" # That's a tab and a space in the []. sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" else echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; msvc7) if test "$libtool" = yes; then showIncludes=-Wc,-showIncludes else showIncludes=-showIncludes fi "$@" $showIncludes > "$tmpdepfile" stat=$? grep -v '^Note: including file: ' "$tmpdepfile" if test "$stat" = 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" # The first sed program below extracts the file names and escapes # backslashes for cygpath. The second sed program outputs the file # name when reading, but also accumulates all include files in the # hold buffer in order to output them again at the end. This only # works with sed implementations that can handle large buffers. sed < "$tmpdepfile" -n ' /^Note: including file: *\(.*\)/ { s//\1/ s/\\/\\\\/g p }' | $cygpath_u | sort -u | sed -n ' s/ /\\ /g s/\(.*\)/ \1 \\/p s/.\(.*\) \\/\1:/ H $ { s/.*/ / G p }' >> "$depfile" rm -f "$tmpdepfile" ;; msvc7msys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; #nosideeffect) # This comment above is used by automake to tell side-effect # dependency tracking mechanisms from slower ones. dashmstdout) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout, regardless of -o. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove `-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done test -z "$dashmflag" && dashmflag=-M # Require at least two characters before searching for `:' # in the target name. This is to cope with DOS-style filenames: # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. "$@" $dashmflag | sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" tr ' ' ' ' < "$tmpdepfile" | \ ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; dashXmstdout) # This case only exists to satisfy depend.m4. It is never actually # run, as this mode is specially recognized in the preamble. exit 1 ;; makedepend) "$@" || exit $? # Remove any Libtool call if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # X makedepend shift cleared=no eat=no for arg do case $cleared in no) set ""; shift cleared=yes ;; esac if test $eat = yes; then eat=no continue fi case "$arg" in -D*|-I*) set fnord "$@" "$arg"; shift ;; # Strip any option that makedepend may not understand. Remove # the object too, otherwise makedepend will parse it as a source file. -arch) eat=yes ;; -*|$object) ;; *) set fnord "$@" "$arg"; shift ;; esac done obj_suffix=`echo "$object" | sed 's/^.*\././'` touch "$tmpdepfile" ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" rm -f "$depfile" # makedepend may prepend the VPATH from the source file name to the object. # No need to regex-escape $object, excess matching of '.' is harmless. sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" sed '1,2d' "$tmpdepfile" | tr ' ' ' ' | \ ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" "$tmpdepfile".bak ;; cpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove `-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done "$@" -E | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | sed '$ s: \\$::' > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" cat < "$tmpdepfile" >> "$depfile" sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; msvisualcpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi IFS=" " for arg do case "$arg" in -o) shift ;; $object) shift ;; "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") set fnord "$@" shift shift ;; *) set fnord "$@" "$arg" shift shift ;; esac done "$@" -E 2>/dev/null | sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" echo " " >> "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" rm -f "$tmpdepfile" ;; msvcmsys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; none) exec "$@" ;; *) echo "Unknown depmode $depmode" 1>&2 exit 1 ;; esac exit 0 # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: io_lib-1.14.6/install-sh0000755000031500020650000003325612617160065011776 00000000000000#!/bin/sh # install - install a program, script, or datafile scriptversion=2011-01-19.21; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the # following copyright and license. # # Copyright (C) 1994 X Consortium # # 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 # X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN # AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- # TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # Except as contained in this notice, the name of the X Consortium shall not # be used in advertising or otherwise to promote the sale, use or other deal- # ings in this Software without prior written authorization from the X Consor- # tium. # # # FSF changes to this file are in the public domain. # # Calling this script install-sh is preferred over install.sh, to prevent # `make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. nl=' ' IFS=" "" $nl" # set DOITPROG to echo to test this script # Don't use :- since 4.3BSD and earlier shells don't like it. doit=${DOITPROG-} if test -z "$doit"; then doit_exec=exec else doit_exec=$doit fi # Put in absolute file names if you don't have them in your path; # or use environment vars. chgrpprog=${CHGRPPROG-chgrp} chmodprog=${CHMODPROG-chmod} chownprog=${CHOWNPROG-chown} cmpprog=${CMPPROG-cmp} cpprog=${CPPROG-cp} mkdirprog=${MKDIRPROG-mkdir} mvprog=${MVPROG-mv} rmprog=${RMPROG-rm} stripprog=${STRIPPROG-strip} posix_glob='?' initialize_posix_glob=' test "$posix_glob" != "?" || { if (set -f) 2>/dev/null; then posix_glob= else posix_glob=: fi } ' posix_mkdir= # Desired mode of installed file. mode=0755 chgrpcmd= chmodcmd=$chmodprog chowncmd= mvcmd=$mvprog rmcmd="$rmprog -f" stripcmd= src= dst= dir_arg= dst_arg= copy_on_change=false no_target_directory= usage="\ Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE or: $0 [OPTION]... SRCFILES... DIRECTORY or: $0 [OPTION]... -t DIRECTORY SRCFILES... or: $0 [OPTION]... -d DIRECTORIES... In the 1st form, copy SRCFILE to DSTFILE. In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. In the 4th, create DIRECTORIES. Options: --help display this help and exit. --version display version info and exit. -c (ignored) -C install only if different (preserve the last data modification time) -d create directories instead of installing files. -g GROUP $chgrpprog installed files to GROUP. -m MODE $chmodprog installed files to MODE. -o USER $chownprog installed files to USER. -s $stripprog installed files. -t DIRECTORY install into DIRECTORY. -T report an error if DSTFILE is a directory. Environment variables override the default commands: CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG " while test $# -ne 0; do case $1 in -c) ;; -C) copy_on_change=true;; -d) dir_arg=true;; -g) chgrpcmd="$chgrpprog $2" shift;; --help) echo "$usage"; exit $?;; -m) mode=$2 case $mode in *' '* | *' '* | *' '* | *'*'* | *'?'* | *'['*) echo "$0: invalid mode: $mode" >&2 exit 1;; esac shift;; -o) chowncmd="$chownprog $2" shift;; -s) stripcmd=$stripprog;; -t) dst_arg=$2 # Protect names problematic for `test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac shift;; -T) no_target_directory=true;; --version) echo "$0 $scriptversion"; exit $?;; --) shift break;; -*) echo "$0: invalid option: $1" >&2 exit 1;; *) break;; esac shift done if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then # When -d is used, all remaining arguments are directories to create. # When -t is used, the destination is already specified. # Otherwise, the last argument is the destination. Remove it from $@. for arg do if test -n "$dst_arg"; then # $@ is not empty: it contains at least $arg. set fnord "$@" "$dst_arg" shift # fnord fi shift # arg dst_arg=$arg # Protect names problematic for `test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac done fi if test $# -eq 0; then if test -z "$dir_arg"; then echo "$0: no input file specified." >&2 exit 1 fi # It's OK to call `install-sh -d' without argument. # This can happen when creating conditional directories. exit 0 fi if test -z "$dir_arg"; then do_exit='(exit $ret); exit $ret' trap "ret=129; $do_exit" 1 trap "ret=130; $do_exit" 2 trap "ret=141; $do_exit" 13 trap "ret=143; $do_exit" 15 # Set umask so as not to create temps with too-generous modes. # However, 'strip' requires both read and write access to temps. case $mode in # Optimize common cases. *644) cp_umask=133;; *755) cp_umask=22;; *[0-7]) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw='% 200' fi cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; *) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw=,u+rw fi cp_umask=$mode$u_plus_rw;; esac fi for src do # Protect names problematic for `test' and other utilities. case $src in -* | [=\(\)!]) src=./$src;; esac if test -n "$dir_arg"; then dst=$src dstdir=$dst test -d "$dstdir" dstdir_status=$? else # Waiting for this to be detected by the "$cpprog $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if test ! -f "$src" && test ! -d "$src"; then echo "$0: $src does not exist." >&2 exit 1 fi if test -z "$dst_arg"; then echo "$0: no destination specified." >&2 exit 1 fi dst=$dst_arg # If destination is a directory, append the input filename; won't work # if double slashes aren't ignored. if test -d "$dst"; then if test -n "$no_target_directory"; then echo "$0: $dst_arg: Is a directory" >&2 exit 1 fi dstdir=$dst dst=$dstdir/`basename "$src"` dstdir_status=0 else # Prefer dirname, but fall back on a substitute if dirname fails. dstdir=` (dirname "$dst") 2>/dev/null || expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$dst" : 'X\(//\)[^/]' \| \ X"$dst" : 'X\(//\)$' \| \ X"$dst" : 'X\(/\)' \| . 2>/dev/null || echo X"$dst" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q' ` test -d "$dstdir" dstdir_status=$? fi fi obsolete_mkdir_used=false if test $dstdir_status != 0; then case $posix_mkdir in '') # Create intermediate dirs using mode 755 as modified by the umask. # This is like FreeBSD 'install' as of 1997-10-28. umask=`umask` case $stripcmd.$umask in # Optimize common cases. *[2367][2367]) mkdir_umask=$umask;; .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; *[0-7]) mkdir_umask=`expr $umask + 22 \ - $umask % 100 % 40 + $umask % 20 \ - $umask % 10 % 4 + $umask % 2 `;; *) mkdir_umask=$umask,go-w;; esac # With -d, create the new directory with the user-specified mode. # Otherwise, rely on $mkdir_umask. if test -n "$dir_arg"; then mkdir_mode=-m$mode else mkdir_mode= fi posix_mkdir=false case $umask in *[123567][0-7][0-7]) # POSIX mkdir -p sets u+wx bits regardless of umask, which # is incompatible with FreeBSD 'install' when (umask & 300) != 0. ;; *) tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 if (umask $mkdir_umask && exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 then if test -z "$dir_arg" || { # Check for POSIX incompatibilities with -m. # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or # other-writeable bit of parent directory when it shouldn't. # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. ls_ld_tmpdir=`ls -ld "$tmpdir"` case $ls_ld_tmpdir in d????-?r-*) different_mode=700;; d????-?--*) different_mode=755;; *) false;; esac && $mkdirprog -m$different_mode -p -- "$tmpdir" && { ls_ld_tmpdir_1=`ls -ld "$tmpdir"` test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" } } then posix_mkdir=: fi rmdir "$tmpdir/d" "$tmpdir" else # Remove any dirs left behind by ancient mkdir implementations. rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null fi trap '' 0;; esac;; esac if $posix_mkdir && ( umask $mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" ) then : else # The umask is ridiculous, or mkdir does not conform to POSIX, # or it failed possibly due to a race condition. Create the # directory the slow way, step by step, checking for races as we go. case $dstdir in /*) prefix='/';; [-=\(\)!]*) prefix='./';; *) prefix='';; esac eval "$initialize_posix_glob" oIFS=$IFS IFS=/ $posix_glob set -f set fnord $dstdir shift $posix_glob set +f IFS=$oIFS prefixes= for d do test X"$d" = X && continue prefix=$prefix$d if test -d "$prefix"; then prefixes= else if $posix_mkdir; then (umask=$mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break # Don't fail if two instances are running concurrently. test -d "$prefix" || exit 1 else case $prefix in *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; *) qprefix=$prefix;; esac prefixes="$prefixes '$qprefix'" fi fi prefix=$prefix/ done if test -n "$prefixes"; then # Don't fail if two instances are running concurrently. (umask $mkdir_umask && eval "\$doit_exec \$mkdirprog $prefixes") || test -d "$dstdir" || exit 1 obsolete_mkdir_used=true fi fi fi if test -n "$dir_arg"; then { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 else # Make a couple of temp file names in the proper directory. dsttmp=$dstdir/_inst.$$_ rmtmp=$dstdir/_rm.$$_ # Trap to clean up those temp files at exit. trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 # Copy the file name to the temp name. (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && # and set any options; do chmod last to preserve setuid bits. # # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $cpprog $src $dsttmp" command. # { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && # If -C, don't bother to copy if it wouldn't change the file. if $copy_on_change && old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && eval "$initialize_posix_glob" && $posix_glob set -f && set X $old && old=:$2:$4:$5:$6 && set X $new && new=:$2:$4:$5:$6 && $posix_glob set +f && test "$old" = "$new" && $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 then rm -f "$dsttmp" else # Rename the file to the real destination. $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || # The rename failed, perhaps because mv can't rename something else # to itself, or perhaps because mv is so ancient that it does not # support -f. { # Now remove or move aside any old file at destination location. # We try this two ways since rm can't unlink itself on some # systems and the destination file might be busy for other # reasons. In this case, the final cleanup might fail but the new # file should still install successfully. { test ! -f "$dst" || $doit $rmcmd -f "$dst" 2>/dev/null || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } } || { echo "$0: cannot unlink or rename $dst" >&2 (exit 1); exit 1 } } && # Now rename the file to the real destination. $doit $mvcmd "$dsttmp" "$dst" } fi || exit 1 trap '' 0 fi done # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: io_lib-1.14.6/ltmain.sh0000644000031500020650000105204012617160062011600 00000000000000 # libtool (GNU libtool) 2.4.2 # Written by Gordon Matzigkeit , 1996 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, # 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # GNU Libtool is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # As a special exception to the GNU General Public License, # if you distribute this file as part of a program or library that # is built using GNU Libtool, you may include this file under the # same distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with GNU Libtool; see the file COPYING. If not, a copy # can be downloaded from http://www.gnu.org/licenses/gpl.html, # or obtained by writing to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # Usage: $progname [OPTION]... [MODE-ARG]... # # Provide generalized library-building support services. # # --config show all configuration variables # --debug enable verbose shell tracing # -n, --dry-run display commands without modifying any files # --features display basic configuration information and exit # --mode=MODE use operation mode MODE # --preserve-dup-deps don't remove duplicate dependency libraries # --quiet, --silent don't print informational messages # --no-quiet, --no-silent # print informational messages (default) # --no-warn don't display warning messages # --tag=TAG use configuration variables from tag TAG # -v, --verbose print more informational messages than default # --no-verbose don't print the extra informational messages # --version print version information # -h, --help, --help-all print short, long, or detailed help message # # MODE must be one of the following: # # clean remove files from the build directory # compile compile a source file into a libtool object # execute automatically set library path, then run a program # finish complete the installation of libtool libraries # install install libraries or executables # link create a library or an executable # uninstall remove libraries from an installed directory # # MODE-ARGS vary depending on the MODE. When passed as first option, # `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that. # Try `$progname --help --mode=MODE' for a more detailed description of MODE. # # When reporting a bug, please describe a test case to reproduce it and # include the following information: # # host-triplet: $host # shell: $SHELL # compiler: $LTCC # compiler flags: $LTCFLAGS # linker: $LD (gnu? $with_gnu_ld) # $progname: (GNU libtool) 2.4.2 Debian-2.4.2-1ubuntu1 # automake: $automake_version # autoconf: $autoconf_version # # Report bugs to . # GNU libtool home page: . # General help using GNU software: . PROGRAM=libtool PACKAGE=libtool VERSION="2.4.2 Debian-2.4.2-1ubuntu1" TIMESTAMP="" package_revision=1.3337 # Be Bourne compatible if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac fi BIN_SH=xpg4; export BIN_SH # for Tru64 DUALCASE=1; export DUALCASE # for MKS sh # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $1 _LTECHO_EOF' } # NLS nuisances: We save the old values to restore during execute mode. lt_user_locale= lt_safe_locale= for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES do eval "if test \"\${$lt_var+set}\" = set; then save_$lt_var=\$$lt_var $lt_var=C export $lt_var lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\" lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\" fi" done LC_ALL=C LANGUAGE=C export LANGUAGE LC_ALL $lt_unset CDPATH # Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh # is ksh but when the shell is invoked as "sh" and the current value of # the _XPG environment variable is not equal to 1 (one), the special # positional parameter $0, within a function call, is the name of the # function. progpath="$0" : ${CP="cp -f"} test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'} : ${MAKE="make"} : ${MKDIR="mkdir"} : ${MV="mv -f"} : ${RM="rm -f"} : ${SHELL="${CONFIG_SHELL-/bin/sh}"} : ${Xsed="$SED -e 1s/^X//"} # Global variables: EXIT_SUCCESS=0 EXIT_FAILURE=1 EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. exit_status=$EXIT_SUCCESS # Make sure IFS has a sensible default lt_nl=' ' IFS=" $lt_nl" dirname="s,/[^/]*$,," basename="s,^.*/,," # func_dirname file append nondir_replacement # Compute the dirname of FILE. If nonempty, add APPEND to the result, # otherwise set result to NONDIR_REPLACEMENT. func_dirname () { func_dirname_result=`$ECHO "${1}" | $SED "$dirname"` if test "X$func_dirname_result" = "X${1}"; then func_dirname_result="${3}" else func_dirname_result="$func_dirname_result${2}" fi } # func_dirname may be replaced by extended shell implementation # func_basename file func_basename () { func_basename_result=`$ECHO "${1}" | $SED "$basename"` } # func_basename may be replaced by extended shell implementation # func_dirname_and_basename file append nondir_replacement # perform func_basename and func_dirname in a single function # call: # dirname: Compute the dirname of FILE. If nonempty, # add APPEND to the result, otherwise set result # to NONDIR_REPLACEMENT. # value returned in "$func_dirname_result" # basename: Compute filename of FILE. # value retuned in "$func_basename_result" # Implementation must be kept synchronized with func_dirname # and func_basename. For efficiency, we do not delegate to # those functions but instead duplicate the functionality here. func_dirname_and_basename () { # Extract subdirectory from the argument. func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"` if test "X$func_dirname_result" = "X${1}"; then func_dirname_result="${3}" else func_dirname_result="$func_dirname_result${2}" fi func_basename_result=`$ECHO "${1}" | $SED -e "$basename"` } # func_dirname_and_basename may be replaced by extended shell implementation # func_stripname prefix suffix name # strip PREFIX and SUFFIX off of NAME. # PREFIX and SUFFIX must not contain globbing or regex special # characters, hashes, percent signs, but SUFFIX may contain a leading # dot (in which case that matches only a dot). # func_strip_suffix prefix name func_stripname () { case ${2} in .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; esac } # func_stripname may be replaced by extended shell implementation # These SED scripts presuppose an absolute path with a trailing slash. pathcar='s,^/\([^/]*\).*$,\1,' pathcdr='s,^/[^/]*,,' removedotparts=':dotsl s@/\./@/@g t dotsl s,/\.$,/,' collapseslashes='s@/\{1,\}@/@g' finalslash='s,/*$,/,' # func_normal_abspath PATH # Remove doubled-up and trailing slashes, "." path components, # and cancel out any ".." path components in PATH after making # it an absolute path. # value returned in "$func_normal_abspath_result" func_normal_abspath () { # Start from root dir and reassemble the path. func_normal_abspath_result= func_normal_abspath_tpath=$1 func_normal_abspath_altnamespace= case $func_normal_abspath_tpath in "") # Empty path, that just means $cwd. func_stripname '' '/' "`pwd`" func_normal_abspath_result=$func_stripname_result return ;; # The next three entries are used to spot a run of precisely # two leading slashes without using negated character classes; # we take advantage of case's first-match behaviour. ///*) # Unusual form of absolute path, do nothing. ;; //*) # Not necessarily an ordinary path; POSIX reserves leading '//' # and for example Cygwin uses it to access remote file shares # over CIFS/SMB, so we conserve a leading double slash if found. func_normal_abspath_altnamespace=/ ;; /*) # Absolute path, do nothing. ;; *) # Relative path, prepend $cwd. func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath ;; esac # Cancel out all the simple stuff to save iterations. We also want # the path to end with a slash for ease of parsing, so make sure # there is one (and only one) here. func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"` while :; do # Processed it all yet? if test "$func_normal_abspath_tpath" = / ; then # If we ascended to the root using ".." the result may be empty now. if test -z "$func_normal_abspath_result" ; then func_normal_abspath_result=/ fi break fi func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$pathcar"` func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$pathcdr"` # Figure out what to do with it case $func_normal_abspath_tcomponent in "") # Trailing empty path component, ignore it. ;; ..) # Parent dir; strip last assembled component from result. func_dirname "$func_normal_abspath_result" func_normal_abspath_result=$func_dirname_result ;; *) # Actual path component, append it. func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent ;; esac done # Restore leading double-slash if one was found on entry. func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result } # func_relative_path SRCDIR DSTDIR # generates a relative path from SRCDIR to DSTDIR, with a trailing # slash if non-empty, suitable for immediately appending a filename # without needing to append a separator. # value returned in "$func_relative_path_result" func_relative_path () { func_relative_path_result= func_normal_abspath "$1" func_relative_path_tlibdir=$func_normal_abspath_result func_normal_abspath "$2" func_relative_path_tbindir=$func_normal_abspath_result # Ascend the tree starting from libdir while :; do # check if we have found a prefix of bindir case $func_relative_path_tbindir in $func_relative_path_tlibdir) # found an exact match func_relative_path_tcancelled= break ;; $func_relative_path_tlibdir*) # found a matching prefix func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" func_relative_path_tcancelled=$func_stripname_result if test -z "$func_relative_path_result"; then func_relative_path_result=. fi break ;; *) func_dirname $func_relative_path_tlibdir func_relative_path_tlibdir=${func_dirname_result} if test "x$func_relative_path_tlibdir" = x ; then # Have to descend all the way to the root! func_relative_path_result=../$func_relative_path_result func_relative_path_tcancelled=$func_relative_path_tbindir break fi func_relative_path_result=../$func_relative_path_result ;; esac done # Now calculate path; take care to avoid doubling-up slashes. func_stripname '' '/' "$func_relative_path_result" func_relative_path_result=$func_stripname_result func_stripname '/' '/' "$func_relative_path_tcancelled" if test "x$func_stripname_result" != x ; then func_relative_path_result=${func_relative_path_result}/${func_stripname_result} fi # Normalisation. If bindir is libdir, return empty string, # else relative path ending with a slash; either way, target # file name can be directly appended. if test ! -z "$func_relative_path_result"; then func_stripname './' '' "$func_relative_path_result/" func_relative_path_result=$func_stripname_result fi } # The name of this program: func_dirname_and_basename "$progpath" progname=$func_basename_result # Make sure we have an absolute path for reexecution: case $progpath in [\\/]*|[A-Za-z]:\\*) ;; *[\\/]*) progdir=$func_dirname_result progdir=`cd "$progdir" && pwd` progpath="$progdir/$progname" ;; *) save_IFS="$IFS" IFS=${PATH_SEPARATOR-:} for progdir in $PATH; do IFS="$save_IFS" test -x "$progdir/$progname" && break done IFS="$save_IFS" test -n "$progdir" || progdir=`pwd` progpath="$progdir/$progname" ;; esac # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. Xsed="${SED}"' -e 1s/^X//' sed_quote_subst='s/\([`"$\\]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\(["`\\]\)/\\\1/g' # Sed substitution that turns a string into a regex matching for the # string literally. sed_make_literal_regex='s,[].[^$\\*\/],\\&,g' # Sed substitution that converts a w32 file name or path # which contains forward slashes, into one that contains # (escaped) backslashes. A very naive implementation. lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' # Re-`\' parameter expansions in output of double_quote_subst that were # `\'-ed in input to the same. If an odd number of `\' preceded a '$' # in input to double_quote_subst, that '$' was protected from expansion. # Since each input `\' is now two `\'s, look for any number of runs of # four `\'s followed by two `\'s and then a '$'. `\' that '$'. bs='\\' bs2='\\\\' bs4='\\\\\\\\' dollar='\$' sed_double_backslash="\ s/$bs4/&\\ /g s/^$bs2$dollar/$bs&/ s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g s/\n//g" # Standard options: opt_dry_run=false opt_help=false opt_quiet=false opt_verbose=false opt_warning=: # func_echo arg... # Echo program name prefixed message, along with the current mode # name if it has been set yet. func_echo () { $ECHO "$progname: ${opt_mode+$opt_mode: }$*" } # func_verbose arg... # Echo program name prefixed message in verbose mode only. func_verbose () { $opt_verbose && func_echo ${1+"$@"} # A bug in bash halts the script if the last line of a function # fails when set -e is in force, so we need another command to # work around that: : } # func_echo_all arg... # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "$*" } # func_error arg... # Echo program name prefixed message to standard error. func_error () { $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2 } # func_warning arg... # Echo program name prefixed warning message to standard error. func_warning () { $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2 # bash bug again: : } # func_fatal_error arg... # Echo program name prefixed message to standard error, and exit. func_fatal_error () { func_error ${1+"$@"} exit $EXIT_FAILURE } # func_fatal_help arg... # Echo program name prefixed message to standard error, followed by # a help hint, and exit. func_fatal_help () { func_error ${1+"$@"} func_fatal_error "$help" } help="Try \`$progname --help' for more information." ## default # func_grep expression filename # Check whether EXPRESSION matches any line of FILENAME, without output. func_grep () { $GREP "$1" "$2" >/dev/null 2>&1 } # func_mkdir_p directory-path # Make sure the entire path to DIRECTORY-PATH is available. func_mkdir_p () { my_directory_path="$1" my_dir_list= if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then # Protect directory names starting with `-' case $my_directory_path in -*) my_directory_path="./$my_directory_path" ;; esac # While some portion of DIR does not yet exist... while test ! -d "$my_directory_path"; do # ...make a list in topmost first order. Use a colon delimited # list incase some portion of path contains whitespace. my_dir_list="$my_directory_path:$my_dir_list" # If the last portion added has no slash in it, the list is done case $my_directory_path in */*) ;; *) break ;; esac # ...otherwise throw away the child directory and loop my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"` done my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'` save_mkdir_p_IFS="$IFS"; IFS=':' for my_dir in $my_dir_list; do IFS="$save_mkdir_p_IFS" # mkdir can fail with a `File exist' error if two processes # try to create one of the directories concurrently. Don't # stop in that case! $MKDIR "$my_dir" 2>/dev/null || : done IFS="$save_mkdir_p_IFS" # Bail out if we (or some other process) failed to create a directory. test -d "$my_directory_path" || \ func_fatal_error "Failed to create \`$1'" fi } # func_mktempdir [string] # Make a temporary directory that won't clash with other running # libtool processes, and avoids race conditions if possible. If # given, STRING is the basename for that directory. func_mktempdir () { my_template="${TMPDIR-/tmp}/${1-$progname}" if test "$opt_dry_run" = ":"; then # Return a directory name, but don't create it in dry-run mode my_tmpdir="${my_template}-$$" else # If mktemp works, use that first and foremost my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` if test ! -d "$my_tmpdir"; then # Failing that, at least try and use $RANDOM to avoid a race my_tmpdir="${my_template}-${RANDOM-0}$$" save_mktempdir_umask=`umask` umask 0077 $MKDIR "$my_tmpdir" umask $save_mktempdir_umask fi # If we're not in dry-run mode, bomb out on failure test -d "$my_tmpdir" || \ func_fatal_error "cannot create temporary directory \`$my_tmpdir'" fi $ECHO "$my_tmpdir" } # func_quote_for_eval arg # Aesthetically quote ARG to be evaled later. # This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT # is double-quoted, suitable for a subsequent eval, whereas # FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters # which are still active within double quotes backslashified. func_quote_for_eval () { case $1 in *[\\\`\"\$]*) func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;; *) func_quote_for_eval_unquoted_result="$1" ;; esac case $func_quote_for_eval_unquoted_result in # Double-quote args containing shell metacharacters to delay # word splitting, command substitution and and variable # expansion for a subsequent eval. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\"" ;; *) func_quote_for_eval_result="$func_quote_for_eval_unquoted_result" esac } # func_quote_for_expand arg # Aesthetically quote ARG to be evaled later; same as above, # but do not quote variable references. func_quote_for_expand () { case $1 in *[\\\`\"]*) my_arg=`$ECHO "$1" | $SED \ -e "$double_quote_subst" -e "$sed_double_backslash"` ;; *) my_arg="$1" ;; esac case $my_arg in # Double-quote args containing shell metacharacters to delay # word splitting and command substitution for a subsequent eval. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") my_arg="\"$my_arg\"" ;; esac func_quote_for_expand_result="$my_arg" } # func_show_eval cmd [fail_exp] # Unless opt_silent is true, then output CMD. Then, if opt_dryrun is # not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP # is given, then evaluate it. func_show_eval () { my_cmd="$1" my_fail_exp="${2-:}" ${opt_silent-false} || { func_quote_for_expand "$my_cmd" eval "func_echo $func_quote_for_expand_result" } if ${opt_dry_run-false}; then :; else eval "$my_cmd" my_status=$? if test "$my_status" -eq 0; then :; else eval "(exit $my_status); $my_fail_exp" fi fi } # func_show_eval_locale cmd [fail_exp] # Unless opt_silent is true, then output CMD. Then, if opt_dryrun is # not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP # is given, then evaluate it. Use the saved locale for evaluation. func_show_eval_locale () { my_cmd="$1" my_fail_exp="${2-:}" ${opt_silent-false} || { func_quote_for_expand "$my_cmd" eval "func_echo $func_quote_for_expand_result" } if ${opt_dry_run-false}; then :; else eval "$lt_user_locale $my_cmd" my_status=$? eval "$lt_safe_locale" if test "$my_status" -eq 0; then :; else eval "(exit $my_status); $my_fail_exp" fi fi } # func_tr_sh # Turn $1 into a string suitable for a shell variable name. # Result is stored in $func_tr_sh_result. All characters # not in the set a-zA-Z0-9_ are replaced with '_'. Further, # if $1 begins with a digit, a '_' is prepended as well. func_tr_sh () { case $1 in [0-9]* | *[!a-zA-Z0-9_]*) func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'` ;; * ) func_tr_sh_result=$1 ;; esac } # func_version # Echo version message to standard output and exit. func_version () { $opt_debug $SED -n '/(C)/!b go :more /\./!{ N s/\n# / / b more } :go /^# '$PROGRAM' (GNU /,/# warranty; / { s/^# // s/^# *$// s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/ p }' < "$progpath" exit $? } # func_usage # Echo short help message to standard output and exit. func_usage () { $opt_debug $SED -n '/^# Usage:/,/^# *.*--help/ { s/^# // s/^# *$// s/\$progname/'$progname'/ p }' < "$progpath" echo $ECHO "run \`$progname --help | more' for full usage" exit $? } # func_help [NOEXIT] # Echo long help message to standard output and exit, # unless 'noexit' is passed as argument. func_help () { $opt_debug $SED -n '/^# Usage:/,/# Report bugs to/ { :print s/^# // s/^# *$// s*\$progname*'$progname'* s*\$host*'"$host"'* s*\$SHELL*'"$SHELL"'* s*\$LTCC*'"$LTCC"'* s*\$LTCFLAGS*'"$LTCFLAGS"'* s*\$LD*'"$LD"'* s/\$with_gnu_ld/'"$with_gnu_ld"'/ s/\$automake_version/'"`(${AUTOMAKE-automake} --version) 2>/dev/null |$SED 1q`"'/ s/\$autoconf_version/'"`(${AUTOCONF-autoconf} --version) 2>/dev/null |$SED 1q`"'/ p d } /^# .* home page:/b print /^# General help using/b print ' < "$progpath" ret=$? if test -z "$1"; then exit $ret fi } # func_missing_arg argname # Echo program name prefixed message to standard error and set global # exit_cmd. func_missing_arg () { $opt_debug func_error "missing argument for $1." exit_cmd=exit } # func_split_short_opt shortopt # Set func_split_short_opt_name and func_split_short_opt_arg shell # variables after splitting SHORTOPT after the 2nd character. func_split_short_opt () { my_sed_short_opt='1s/^\(..\).*$/\1/;q' my_sed_short_rest='1s/^..\(.*\)$/\1/;q' func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"` func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"` } # func_split_short_opt may be replaced by extended shell implementation # func_split_long_opt longopt # Set func_split_long_opt_name and func_split_long_opt_arg shell # variables after splitting LONGOPT at the `=' sign. func_split_long_opt () { my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q' my_sed_long_arg='1s/^--[^=]*=//' func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"` func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"` } # func_split_long_opt may be replaced by extended shell implementation exit_cmd=: magic="%%%MAGIC variable%%%" magic_exe="%%%MAGIC EXE variable%%%" # Global variables. nonopt= preserve_args= lo2o="s/\\.lo\$/.${objext}/" o2lo="s/\\.${objext}\$/.lo/" extracted_archives= extracted_serial=0 # If this variable is set in any of the actions, the command in it # will be execed at the end. This prevents here-documents from being # left over by shells. exec_cmd= # func_append var value # Append VALUE to the end of shell variable VAR. func_append () { eval "${1}=\$${1}\${2}" } # func_append may be replaced by extended shell implementation # func_append_quoted var value # Quote VALUE and append to the end of shell variable VAR, separated # by a space. func_append_quoted () { func_quote_for_eval "${2}" eval "${1}=\$${1}\\ \$func_quote_for_eval_result" } # func_append_quoted may be replaced by extended shell implementation # func_arith arithmetic-term... func_arith () { func_arith_result=`expr "${@}"` } # func_arith may be replaced by extended shell implementation # func_len string # STRING may not start with a hyphen. func_len () { func_len_result=`expr "${1}" : ".*" 2>/dev/null || echo $max_cmd_len` } # func_len may be replaced by extended shell implementation # func_lo2o object func_lo2o () { func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"` } # func_lo2o may be replaced by extended shell implementation # func_xform libobj-or-source func_xform () { func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'` } # func_xform may be replaced by extended shell implementation # func_fatal_configuration arg... # Echo program name prefixed message to standard error, followed by # a configuration failure hint, and exit. func_fatal_configuration () { func_error ${1+"$@"} func_error "See the $PACKAGE documentation for more information." func_fatal_error "Fatal configuration error." } # func_config # Display the configuration for all the tags in this script. func_config () { re_begincf='^# ### BEGIN LIBTOOL' re_endcf='^# ### END LIBTOOL' # Default configuration. $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" # Now print the configurations for the tags. for tagname in $taglist; do $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" done exit $? } # func_features # Display the features supported by this script. func_features () { echo "host: $host" if test "$build_libtool_libs" = yes; then echo "enable shared libraries" else echo "disable shared libraries" fi if test "$build_old_libs" = yes; then echo "enable static libraries" else echo "disable static libraries" fi exit $? } # func_enable_tag tagname # Verify that TAGNAME is valid, and either flag an error and exit, or # enable the TAGNAME tag. We also add TAGNAME to the global $taglist # variable here. func_enable_tag () { # Global variable: tagname="$1" re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" sed_extractcf="/$re_begincf/,/$re_endcf/p" # Validate tagname. case $tagname in *[!-_A-Za-z0-9,/]*) func_fatal_error "invalid tag name: $tagname" ;; esac # Don't test for the "default" C tag, as we know it's # there but not specially marked. case $tagname in CC) ;; *) if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then taglist="$taglist $tagname" # Evaluate the configuration. Be careful to quote the path # and the sed script, to avoid splitting on whitespace, but # also don't use non-portable quotes within backquotes within # quotes we have to do it in 2 steps: extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` eval "$extractedcf" else func_error "ignoring unknown tag $tagname" fi ;; esac } # func_check_version_match # Ensure that we are using m4 macros, and libtool script from the same # release of libtool. func_check_version_match () { if test "$package_revision" != "$macro_revision"; then if test "$VERSION" != "$macro_version"; then if test -z "$macro_version"; then cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, but the $progname: definition of this LT_INIT comes from an older release. $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION $progname: and run autoconf again. _LT_EOF else cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, but the $progname: definition of this LT_INIT comes from $PACKAGE $macro_version. $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION $progname: and run autoconf again. _LT_EOF fi else cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, $progname: but the definition of this LT_INIT comes from revision $macro_revision. $progname: You should recreate aclocal.m4 with macros from revision $package_revision $progname: of $PACKAGE $VERSION and run autoconf again. _LT_EOF fi exit $EXIT_MISMATCH fi } # Shorthand for --mode=foo, only valid as the first argument case $1 in clean|clea|cle|cl) shift; set dummy --mode clean ${1+"$@"}; shift ;; compile|compil|compi|comp|com|co|c) shift; set dummy --mode compile ${1+"$@"}; shift ;; execute|execut|execu|exec|exe|ex|e) shift; set dummy --mode execute ${1+"$@"}; shift ;; finish|finis|fini|fin|fi|f) shift; set dummy --mode finish ${1+"$@"}; shift ;; install|instal|insta|inst|ins|in|i) shift; set dummy --mode install ${1+"$@"}; shift ;; link|lin|li|l) shift; set dummy --mode link ${1+"$@"}; shift ;; uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) shift; set dummy --mode uninstall ${1+"$@"}; shift ;; esac # Option defaults: opt_debug=: opt_dry_run=false opt_config=false opt_preserve_dup_deps=false opt_features=false opt_finish=false opt_help=false opt_help_all=false opt_silent=: opt_warning=: opt_verbose=: opt_silent=false opt_verbose=false # Parse options once, thoroughly. This comes as soon as possible in the # script to make things like `--version' happen as quickly as we can. { # this just eases exit handling while test $# -gt 0; do opt="$1" shift case $opt in --debug|-x) opt_debug='set -x' func_echo "enabling shell trace mode" $opt_debug ;; --dry-run|--dryrun|-n) opt_dry_run=: ;; --config) opt_config=: func_config ;; --dlopen|-dlopen) optarg="$1" opt_dlopen="${opt_dlopen+$opt_dlopen }$optarg" shift ;; --preserve-dup-deps) opt_preserve_dup_deps=: ;; --features) opt_features=: func_features ;; --finish) opt_finish=: set dummy --mode finish ${1+"$@"}; shift ;; --help) opt_help=: ;; --help-all) opt_help_all=: opt_help=': help-all' ;; --mode) test $# = 0 && func_missing_arg $opt && break optarg="$1" opt_mode="$optarg" case $optarg in # Valid mode arguments: clean|compile|execute|finish|install|link|relink|uninstall) ;; # Catch anything else as an error *) func_error "invalid argument for $opt" exit_cmd=exit break ;; esac shift ;; --no-silent|--no-quiet) opt_silent=false func_append preserve_args " $opt" ;; --no-warning|--no-warn) opt_warning=false func_append preserve_args " $opt" ;; --no-verbose) opt_verbose=false func_append preserve_args " $opt" ;; --silent|--quiet) opt_silent=: func_append preserve_args " $opt" opt_verbose=false ;; --verbose|-v) opt_verbose=: func_append preserve_args " $opt" opt_silent=false ;; --tag) test $# = 0 && func_missing_arg $opt && break optarg="$1" opt_tag="$optarg" func_append preserve_args " $opt $optarg" func_enable_tag "$optarg" shift ;; -\?|-h) func_usage ;; --help) func_help ;; --version) func_version ;; # Separate optargs to long options: --*=*) func_split_long_opt "$opt" set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"} shift ;; # Separate non-argument short options: -\?*|-h*|-n*|-v*) func_split_short_opt "$opt" set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"} shift ;; --) break ;; -*) func_fatal_help "unrecognized option \`$opt'" ;; *) set dummy "$opt" ${1+"$@"}; shift; break ;; esac done # Validate options: # save first non-option argument if test "$#" -gt 0; then nonopt="$opt" shift fi # preserve --debug test "$opt_debug" = : || func_append preserve_args " --debug" case $host in *cygwin* | *mingw* | *pw32* | *cegcc*) # don't eliminate duplications in $postdeps and $predeps opt_duplicate_compiler_generated_deps=: ;; *) opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps ;; esac $opt_help || { # Sanity checks first: func_check_version_match if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then func_fatal_configuration "not configured to build any kind of library" fi # Darwin sucks eval std_shrext=\"$shrext_cmds\" # Only execute mode is allowed to have -dlopen flags. if test -n "$opt_dlopen" && test "$opt_mode" != execute; then func_error "unrecognized option \`-dlopen'" $ECHO "$help" 1>&2 exit $EXIT_FAILURE fi # Change the help message to a mode-specific one. generic_help="$help" help="Try \`$progname --help --mode=$opt_mode' for more information." } # Bail if the options were screwed $exit_cmd $EXIT_FAILURE } ## ----------- ## ## Main. ## ## ----------- ## # func_lalib_p file # True iff FILE is a libtool `.la' library or `.lo' object file. # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_lalib_p () { test -f "$1" && $SED -e 4q "$1" 2>/dev/null \ | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 } # func_lalib_unsafe_p file # True iff FILE is a libtool `.la' library or `.lo' object file. # This function implements the same check as func_lalib_p without # resorting to external programs. To this end, it redirects stdin and # closes it afterwards, without saving the original file descriptor. # As a safety measure, use it only where a negative result would be # fatal anyway. Works if `file' does not exist. func_lalib_unsafe_p () { lalib_p=no if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then for lalib_p_l in 1 2 3 4 do read lalib_p_line case "$lalib_p_line" in \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; esac done exec 0<&5 5<&- fi test "$lalib_p" = yes } # func_ltwrapper_script_p file # True iff FILE is a libtool wrapper script # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_script_p () { func_lalib_p "$1" } # func_ltwrapper_executable_p file # True iff FILE is a libtool wrapper executable # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_executable_p () { func_ltwrapper_exec_suffix= case $1 in *.exe) ;; *) func_ltwrapper_exec_suffix=.exe ;; esac $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 } # func_ltwrapper_scriptname file # Assumes file is an ltwrapper_executable # uses $file to determine the appropriate filename for a # temporary ltwrapper_script. func_ltwrapper_scriptname () { func_dirname_and_basename "$1" "" "." func_stripname '' '.exe' "$func_basename_result" func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper" } # func_ltwrapper_p file # True iff FILE is a libtool wrapper script or wrapper executable # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_p () { func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" } # func_execute_cmds commands fail_cmd # Execute tilde-delimited COMMANDS. # If FAIL_CMD is given, eval that upon failure. # FAIL_CMD may read-access the current command in variable CMD! func_execute_cmds () { $opt_debug save_ifs=$IFS; IFS='~' for cmd in $1; do IFS=$save_ifs eval cmd=\"$cmd\" func_show_eval "$cmd" "${2-:}" done IFS=$save_ifs } # func_source file # Source FILE, adding directory component if necessary. # Note that it is not necessary on cygwin/mingw to append a dot to # FILE even if both FILE and FILE.exe exist: automatic-append-.exe # behavior happens only for exec(3), not for open(2)! Also, sourcing # `FILE.' does not work on cygwin managed mounts. func_source () { $opt_debug case $1 in */* | *\\*) . "$1" ;; *) . "./$1" ;; esac } # func_resolve_sysroot PATH # Replace a leading = in PATH with a sysroot. Store the result into # func_resolve_sysroot_result func_resolve_sysroot () { func_resolve_sysroot_result=$1 case $func_resolve_sysroot_result in =*) func_stripname '=' '' "$func_resolve_sysroot_result" func_resolve_sysroot_result=$lt_sysroot$func_stripname_result ;; esac } # func_replace_sysroot PATH # If PATH begins with the sysroot, replace it with = and # store the result into func_replace_sysroot_result. func_replace_sysroot () { case "$lt_sysroot:$1" in ?*:"$lt_sysroot"*) func_stripname "$lt_sysroot" '' "$1" func_replace_sysroot_result="=$func_stripname_result" ;; *) # Including no sysroot. func_replace_sysroot_result=$1 ;; esac } # func_infer_tag arg # Infer tagged configuration to use if any are available and # if one wasn't chosen via the "--tag" command line option. # Only attempt this if the compiler in the base compile # command doesn't match the default compiler. # arg is usually of the form 'gcc ...' func_infer_tag () { $opt_debug if test -n "$available_tags" && test -z "$tagname"; then CC_quoted= for arg in $CC; do func_append_quoted CC_quoted "$arg" done CC_expanded=`func_echo_all $CC` CC_quoted_expanded=`func_echo_all $CC_quoted` case $@ in # Blanks in the command may have been stripped by the calling shell, # but not from the CC environment variable when configure was run. " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;; # Blanks at the start of $base_compile will cause this to fail # if we don't check for them as well. *) for z in $available_tags; do if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then # Evaluate the configuration. eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" CC_quoted= for arg in $CC; do # Double-quote args containing other shell metacharacters. func_append_quoted CC_quoted "$arg" done CC_expanded=`func_echo_all $CC` CC_quoted_expanded=`func_echo_all $CC_quoted` case "$@ " in " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) # The compiler in the base compile command matches # the one in the tagged configuration. # Assume this is the tagged configuration we want. tagname=$z break ;; esac fi done # If $tagname still isn't set, then no tagged configuration # was found and let the user know that the "--tag" command # line option must be used. if test -z "$tagname"; then func_echo "unable to infer tagged configuration" func_fatal_error "specify a tag with \`--tag'" # else # func_verbose "using $tagname tagged configuration" fi ;; esac fi } # func_write_libtool_object output_name pic_name nonpic_name # Create a libtool object file (analogous to a ".la" file), # but don't create it if we're doing a dry run. func_write_libtool_object () { write_libobj=${1} if test "$build_libtool_libs" = yes; then write_lobj=\'${2}\' else write_lobj=none fi if test "$build_old_libs" = yes; then write_oldobj=\'${3}\' else write_oldobj=none fi $opt_dry_run || { cat >${write_libobj}T </dev/null` if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" | $SED -e "$lt_sed_naive_backslashify"` else func_convert_core_file_wine_to_w32_result= fi fi } # end: func_convert_core_file_wine_to_w32 # func_convert_core_path_wine_to_w32 ARG # Helper function used by path conversion functions when $build is *nix, and # $host is mingw, cygwin, or some other w32 environment. Relies on a correctly # configured wine environment available, with the winepath program in $build's # $PATH. Assumes ARG has no leading or trailing path separator characters. # # ARG is path to be converted from $build format to win32. # Result is available in $func_convert_core_path_wine_to_w32_result. # Unconvertible file (directory) names in ARG are skipped; if no directory names # are convertible, then the result may be empty. func_convert_core_path_wine_to_w32 () { $opt_debug # unfortunately, winepath doesn't convert paths, only file names func_convert_core_path_wine_to_w32_result="" if test -n "$1"; then oldIFS=$IFS IFS=: for func_convert_core_path_wine_to_w32_f in $1; do IFS=$oldIFS func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f" if test -n "$func_convert_core_file_wine_to_w32_result" ; then if test -z "$func_convert_core_path_wine_to_w32_result"; then func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result" else func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result" fi fi done IFS=$oldIFS fi } # end: func_convert_core_path_wine_to_w32 # func_cygpath ARGS... # Wrapper around calling the cygpath program via LT_CYGPATH. This is used when # when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2) # $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or # (2), returns the Cygwin file name or path in func_cygpath_result (input # file name or path is assumed to be in w32 format, as previously converted # from $build's *nix or MSYS format). In case (3), returns the w32 file name # or path in func_cygpath_result (input file name or path is assumed to be in # Cygwin format). Returns an empty string on error. # # ARGS are passed to cygpath, with the last one being the file name or path to # be converted. # # Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH # environment variable; do not put it in $PATH. func_cygpath () { $opt_debug if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null` if test "$?" -ne 0; then # on failure, ensure result is empty func_cygpath_result= fi else func_cygpath_result= func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'" fi } #end: func_cygpath # func_convert_core_msys_to_w32 ARG # Convert file name or path ARG from MSYS format to w32 format. Return # result in func_convert_core_msys_to_w32_result. func_convert_core_msys_to_w32 () { $opt_debug # awkward: cmd appends spaces to result func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"` } #end: func_convert_core_msys_to_w32 # func_convert_file_check ARG1 ARG2 # Verify that ARG1 (a file name in $build format) was converted to $host # format in ARG2. Otherwise, emit an error message, but continue (resetting # func_to_host_file_result to ARG1). func_convert_file_check () { $opt_debug if test -z "$2" && test -n "$1" ; then func_error "Could not determine host file name corresponding to" func_error " \`$1'" func_error "Continuing, but uninstalled executables may not work." # Fallback: func_to_host_file_result="$1" fi } # end func_convert_file_check # func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH # Verify that FROM_PATH (a path in $build format) was converted to $host # format in TO_PATH. Otherwise, emit an error message, but continue, resetting # func_to_host_file_result to a simplistic fallback value (see below). func_convert_path_check () { $opt_debug if test -z "$4" && test -n "$3"; then func_error "Could not determine the host path corresponding to" func_error " \`$3'" func_error "Continuing, but uninstalled executables may not work." # Fallback. This is a deliberately simplistic "conversion" and # should not be "improved". See libtool.info. if test "x$1" != "x$2"; then lt_replace_pathsep_chars="s|$1|$2|g" func_to_host_path_result=`echo "$3" | $SED -e "$lt_replace_pathsep_chars"` else func_to_host_path_result="$3" fi fi } # end func_convert_path_check # func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG # Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT # and appending REPL if ORIG matches BACKPAT. func_convert_path_front_back_pathsep () { $opt_debug case $4 in $1 ) func_to_host_path_result="$3$func_to_host_path_result" ;; esac case $4 in $2 ) func_append func_to_host_path_result "$3" ;; esac } # end func_convert_path_front_back_pathsep ################################################## # $build to $host FILE NAME CONVERSION FUNCTIONS # ################################################## # invoked via `$to_host_file_cmd ARG' # # In each case, ARG is the path to be converted from $build to $host format. # Result will be available in $func_to_host_file_result. # func_to_host_file ARG # Converts the file name ARG from $build format to $host format. Return result # in func_to_host_file_result. func_to_host_file () { $opt_debug $to_host_file_cmd "$1" } # end func_to_host_file # func_to_tool_file ARG LAZY # converts the file name ARG from $build format to toolchain format. Return # result in func_to_tool_file_result. If the conversion in use is listed # in (the comma separated) LAZY, no conversion takes place. func_to_tool_file () { $opt_debug case ,$2, in *,"$to_tool_file_cmd",*) func_to_tool_file_result=$1 ;; *) $to_tool_file_cmd "$1" func_to_tool_file_result=$func_to_host_file_result ;; esac } # end func_to_tool_file # func_convert_file_noop ARG # Copy ARG to func_to_host_file_result. func_convert_file_noop () { func_to_host_file_result="$1" } # end func_convert_file_noop # func_convert_file_msys_to_w32 ARG # Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic # conversion to w32 is not available inside the cwrapper. Returns result in # func_to_host_file_result. func_convert_file_msys_to_w32 () { $opt_debug func_to_host_file_result="$1" if test -n "$1"; then func_convert_core_msys_to_w32 "$1" func_to_host_file_result="$func_convert_core_msys_to_w32_result" fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_msys_to_w32 # func_convert_file_cygwin_to_w32 ARG # Convert file name ARG from Cygwin to w32 format. Returns result in # func_to_host_file_result. func_convert_file_cygwin_to_w32 () { $opt_debug func_to_host_file_result="$1" if test -n "$1"; then # because $build is cygwin, we call "the" cygpath in $PATH; no need to use # LT_CYGPATH in this case. func_to_host_file_result=`cygpath -m "$1"` fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_cygwin_to_w32 # func_convert_file_nix_to_w32 ARG # Convert file name ARG from *nix to w32 format. Requires a wine environment # and a working winepath. Returns result in func_to_host_file_result. func_convert_file_nix_to_w32 () { $opt_debug func_to_host_file_result="$1" if test -n "$1"; then func_convert_core_file_wine_to_w32 "$1" func_to_host_file_result="$func_convert_core_file_wine_to_w32_result" fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_nix_to_w32 # func_convert_file_msys_to_cygwin ARG # Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. # Returns result in func_to_host_file_result. func_convert_file_msys_to_cygwin () { $opt_debug func_to_host_file_result="$1" if test -n "$1"; then func_convert_core_msys_to_w32 "$1" func_cygpath -u "$func_convert_core_msys_to_w32_result" func_to_host_file_result="$func_cygpath_result" fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_msys_to_cygwin # func_convert_file_nix_to_cygwin ARG # Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed # in a wine environment, working winepath, and LT_CYGPATH set. Returns result # in func_to_host_file_result. func_convert_file_nix_to_cygwin () { $opt_debug func_to_host_file_result="$1" if test -n "$1"; then # convert from *nix to w32, then use cygpath to convert from w32 to cygwin. func_convert_core_file_wine_to_w32 "$1" func_cygpath -u "$func_convert_core_file_wine_to_w32_result" func_to_host_file_result="$func_cygpath_result" fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_nix_to_cygwin ############################################# # $build to $host PATH CONVERSION FUNCTIONS # ############################################# # invoked via `$to_host_path_cmd ARG' # # In each case, ARG is the path to be converted from $build to $host format. # The result will be available in $func_to_host_path_result. # # Path separators are also converted from $build format to $host format. If # ARG begins or ends with a path separator character, it is preserved (but # converted to $host format) on output. # # All path conversion functions are named using the following convention: # file name conversion function : func_convert_file_X_to_Y () # path conversion function : func_convert_path_X_to_Y () # where, for any given $build/$host combination the 'X_to_Y' value is the # same. If conversion functions are added for new $build/$host combinations, # the two new functions must follow this pattern, or func_init_to_host_path_cmd # will break. # func_init_to_host_path_cmd # Ensures that function "pointer" variable $to_host_path_cmd is set to the # appropriate value, based on the value of $to_host_file_cmd. to_host_path_cmd= func_init_to_host_path_cmd () { $opt_debug if test -z "$to_host_path_cmd"; then func_stripname 'func_convert_file_' '' "$to_host_file_cmd" to_host_path_cmd="func_convert_path_${func_stripname_result}" fi } # func_to_host_path ARG # Converts the path ARG from $build format to $host format. Return result # in func_to_host_path_result. func_to_host_path () { $opt_debug func_init_to_host_path_cmd $to_host_path_cmd "$1" } # end func_to_host_path # func_convert_path_noop ARG # Copy ARG to func_to_host_path_result. func_convert_path_noop () { func_to_host_path_result="$1" } # end func_convert_path_noop # func_convert_path_msys_to_w32 ARG # Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic # conversion to w32 is not available inside the cwrapper. Returns result in # func_to_host_path_result. func_convert_path_msys_to_w32 () { $opt_debug func_to_host_path_result="$1" if test -n "$1"; then # Remove leading and trailing path separator characters from ARG. MSYS # behavior is inconsistent here; cygpath turns them into '.;' and ';.'; # and winepath ignores them completely. func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" func_to_host_path_result="$func_convert_core_msys_to_w32_result" func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_msys_to_w32 # func_convert_path_cygwin_to_w32 ARG # Convert path ARG from Cygwin to w32 format. Returns result in # func_to_host_file_result. func_convert_path_cygwin_to_w32 () { $opt_debug func_to_host_path_result="$1" if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"` func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_cygwin_to_w32 # func_convert_path_nix_to_w32 ARG # Convert path ARG from *nix to w32 format. Requires a wine environment and # a working winepath. Returns result in func_to_host_file_result. func_convert_path_nix_to_w32 () { $opt_debug func_to_host_path_result="$1" if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" func_to_host_path_result="$func_convert_core_path_wine_to_w32_result" func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_nix_to_w32 # func_convert_path_msys_to_cygwin ARG # Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. # Returns result in func_to_host_file_result. func_convert_path_msys_to_cygwin () { $opt_debug func_to_host_path_result="$1" if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" func_cygpath -u -p "$func_convert_core_msys_to_w32_result" func_to_host_path_result="$func_cygpath_result" func_convert_path_check : : \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" : "$1" fi } # end func_convert_path_msys_to_cygwin # func_convert_path_nix_to_cygwin ARG # Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a # a wine environment, working winepath, and LT_CYGPATH set. Returns result in # func_to_host_file_result. func_convert_path_nix_to_cygwin () { $opt_debug func_to_host_path_result="$1" if test -n "$1"; then # Remove leading and trailing path separator characters from # ARG. msys behavior is inconsistent here, cygpath turns them # into '.;' and ';.', and winepath ignores them completely. func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result" func_to_host_path_result="$func_cygpath_result" func_convert_path_check : : \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" : "$1" fi } # end func_convert_path_nix_to_cygwin # func_mode_compile arg... func_mode_compile () { $opt_debug # Get the compilation command and the source file. base_compile= srcfile="$nonopt" # always keep a non-empty value in "srcfile" suppress_opt=yes suppress_output= arg_mode=normal libobj= later= pie_flag= for arg do case $arg_mode in arg ) # do not "continue". Instead, add this to base_compile lastarg="$arg" arg_mode=normal ;; target ) libobj="$arg" arg_mode=normal continue ;; normal ) # Accept any command-line options. case $arg in -o) test -n "$libobj" && \ func_fatal_error "you cannot specify \`-o' more than once" arg_mode=target continue ;; -pie | -fpie | -fPIE) func_append pie_flag " $arg" continue ;; -shared | -static | -prefer-pic | -prefer-non-pic) func_append later " $arg" continue ;; -no-suppress) suppress_opt=no continue ;; -Xcompiler) arg_mode=arg # the next one goes into the "base_compile" arg list continue # The current "srcfile" will either be retained or ;; # replaced later. I would guess that would be a bug. -Wc,*) func_stripname '-Wc,' '' "$arg" args=$func_stripname_result lastarg= save_ifs="$IFS"; IFS=',' for arg in $args; do IFS="$save_ifs" func_append_quoted lastarg "$arg" done IFS="$save_ifs" func_stripname ' ' '' "$lastarg" lastarg=$func_stripname_result # Add the arguments to base_compile. func_append base_compile " $lastarg" continue ;; *) # Accept the current argument as the source file. # The previous "srcfile" becomes the current argument. # lastarg="$srcfile" srcfile="$arg" ;; esac # case $arg ;; esac # case $arg_mode # Aesthetically quote the previous argument. func_append_quoted base_compile "$lastarg" done # for arg case $arg_mode in arg) func_fatal_error "you must specify an argument for -Xcompile" ;; target) func_fatal_error "you must specify a target with \`-o'" ;; *) # Get the name of the library object. test -z "$libobj" && { func_basename "$srcfile" libobj="$func_basename_result" } ;; esac # Recognize several different file suffixes. # If the user specifies -o file.o, it is replaced with file.lo case $libobj in *.[cCFSifmso] | \ *.ada | *.adb | *.ads | *.asm | \ *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup) func_xform "$libobj" libobj=$func_xform_result ;; esac case $libobj in *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; *) func_fatal_error "cannot determine name of library object from \`$libobj'" ;; esac func_infer_tag $base_compile for arg in $later; do case $arg in -shared) test "$build_libtool_libs" != yes && \ func_fatal_configuration "can not build a shared library" build_old_libs=no continue ;; -static) build_libtool_libs=no build_old_libs=yes continue ;; -prefer-pic) pic_mode=yes continue ;; -prefer-non-pic) pic_mode=no continue ;; esac done func_quote_for_eval "$libobj" test "X$libobj" != "X$func_quote_for_eval_result" \ && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ && func_warning "libobj name \`$libobj' may not contain shell special characters." func_dirname_and_basename "$obj" "/" "" objname="$func_basename_result" xdir="$func_dirname_result" lobj=${xdir}$objdir/$objname test -z "$base_compile" && \ func_fatal_help "you must specify a compilation command" # Delete any leftover library objects. if test "$build_old_libs" = yes; then removelist="$obj $lobj $libobj ${libobj}T" else removelist="$lobj $libobj ${libobj}T" fi # On Cygwin there's no "real" PIC flag so we must build both object types case $host_os in cygwin* | mingw* | pw32* | os2* | cegcc*) pic_mode=default ;; esac if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then # non-PIC code in shared libraries is not supported pic_mode=default fi # Calculate the filename of the output object if compiler does # not support -o with -c if test "$compiler_c_o" = no; then output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext} lockfile="$output_obj.lock" else output_obj= need_locks=no lockfile= fi # Lock this critical section if it is needed # We use this script file to make the link, it avoids creating a new file if test "$need_locks" = yes; then until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do func_echo "Waiting for $lockfile to be removed" sleep 2 done elif test "$need_locks" = warn; then if test -f "$lockfile"; then $ECHO "\ *** ERROR, $lockfile exists and contains: `cat $lockfile 2>/dev/null` This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi func_append removelist " $output_obj" $ECHO "$srcfile" > "$lockfile" fi $opt_dry_run || $RM $removelist func_append removelist " $lockfile" trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 srcfile=$func_to_tool_file_result func_quote_for_eval "$srcfile" qsrcfile=$func_quote_for_eval_result # Only build a PIC object if we are building libtool libraries. if test "$build_libtool_libs" = yes; then # Without this assignment, base_compile gets emptied. fbsd_hideous_sh_bug=$base_compile if test "$pic_mode" != no; then command="$base_compile $qsrcfile $pic_flag" else # Don't build PIC code command="$base_compile $qsrcfile" fi func_mkdir_p "$xdir$objdir" if test -z "$output_obj"; then # Place PIC objects in $objdir func_append command " -o $lobj" fi func_show_eval_locale "$command" \ 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' if test "$need_locks" = warn && test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then $ECHO "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi # Just move the object if needed, then go on to compile the next one if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then func_show_eval '$MV "$output_obj" "$lobj"' \ 'error=$?; $opt_dry_run || $RM $removelist; exit $error' fi # Allow error messages only from the first compilation. if test "$suppress_opt" = yes; then suppress_output=' >/dev/null 2>&1' fi fi # Only build a position-dependent object if we build old libraries. if test "$build_old_libs" = yes; then if test "$pic_mode" != yes; then # Don't build PIC code command="$base_compile $qsrcfile$pie_flag" else command="$base_compile $qsrcfile $pic_flag" fi if test "$compiler_c_o" = yes; then func_append command " -o $obj" fi # Suppress compiler output if we already did a PIC compilation. func_append command "$suppress_output" func_show_eval_locale "$command" \ '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' if test "$need_locks" = warn && test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then $ECHO "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi # Just move the object if needed if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then func_show_eval '$MV "$output_obj" "$obj"' \ 'error=$?; $opt_dry_run || $RM $removelist; exit $error' fi fi $opt_dry_run || { func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" # Unlock the critical section if it was locked if test "$need_locks" != no; then removelist=$lockfile $RM "$lockfile" fi } exit $EXIT_SUCCESS } $opt_help || { test "$opt_mode" = compile && func_mode_compile ${1+"$@"} } func_mode_help () { # We need to display help for each of the modes. case $opt_mode in "") # Generic help is extracted from the usage comments # at the start of this file. func_help ;; clean) $ECHO \ "Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... Remove files from the build directory. RM is the name of the program to use to delete files associated with each FILE (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed to RM. If FILE is a libtool library, object or program, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; compile) $ECHO \ "Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE Compile a source file into a libtool library object. This mode accepts the following additional options: -o OUTPUT-FILE set the output file name to OUTPUT-FILE -no-suppress do not suppress compiler output for multiple passes -prefer-pic try to build PIC objects only -prefer-non-pic try to build non-PIC objects only -shared do not build a \`.o' file suitable for static linking -static only build a \`.o' file suitable for static linking -Wc,FLAG pass FLAG directly to the compiler COMPILE-COMMAND is a command to be used in creating a \`standard' object file from the given SOURCEFILE. The output file name is determined by removing the directory component from SOURCEFILE, then substituting the C source code suffix \`.c' with the library object suffix, \`.lo'." ;; execute) $ECHO \ "Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... Automatically set library path, then run a program. This mode accepts the following additional options: -dlopen FILE add the directory containing FILE to the library path This mode sets the library path environment variable according to \`-dlopen' flags. If any of the ARGS are libtool executable wrappers, then they are translated into their corresponding uninstalled binary, and any of their required library directories are added to the library path. Then, COMMAND is executed, with ARGS as arguments." ;; finish) $ECHO \ "Usage: $progname [OPTION]... --mode=finish [LIBDIR]... Complete the installation of libtool libraries. Each LIBDIR is a directory that contains libtool libraries. The commands that this mode executes may require superuser privileges. Use the \`--dry-run' option if you just want to see what would be executed." ;; install) $ECHO \ "Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... Install executables or libraries. INSTALL-COMMAND is the installation command. The first component should be either the \`install' or \`cp' program. The following components of INSTALL-COMMAND are treated specially: -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation The rest of the components are interpreted as arguments to that command (only BSD-compatible install options are recognized)." ;; link) $ECHO \ "Usage: $progname [OPTION]... --mode=link LINK-COMMAND... Link object files or libraries together to form another library, or to create an executable program. LINK-COMMAND is a command using the C compiler that you would use to create a program from several object files. The following components of LINK-COMMAND are treated specially: -all-static do not do any dynamic linking at all -avoid-version do not add a version suffix if possible -bindir BINDIR specify path to binaries directory (for systems where libraries must be found in the PATH setting at runtime) -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) -export-symbols SYMFILE try to export only the symbols listed in SYMFILE -export-symbols-regex REGEX try to export only the symbols matching REGEX -LLIBDIR search LIBDIR for required installed libraries -lNAME OUTPUT-FILE requires the installed library libNAME -module build a library that can dlopened -no-fast-install disable the fast-install mode -no-install link a not-installable executable -no-undefined declare that a library does not refer to external symbols -o OUTPUT-FILE create OUTPUT-FILE from the specified objects -objectlist FILE Use a list of object files found in FILE to specify objects -precious-files-regex REGEX don't remove output files matching REGEX -release RELEASE specify package release information -rpath LIBDIR the created library will eventually be installed in LIBDIR -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries -shared only do dynamic linking of libtool libraries -shrext SUFFIX override the standard shared library file extension -static do not do any dynamic linking of uninstalled libtool libraries -static-libtool-libs do not do any dynamic linking of libtool libraries -version-info CURRENT[:REVISION[:AGE]] specify library version info [each variable defaults to 0] -weak LIBNAME declare that the target provides the LIBNAME interface -Wc,FLAG -Xcompiler FLAG pass linker-specific FLAG directly to the compiler -Wl,FLAG -Xlinker FLAG pass linker-specific FLAG directly to the linker -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) All other options (arguments beginning with \`-') are ignored. Every other argument is treated as a filename. Files ending in \`.la' are treated as uninstalled libtool libraries, other files are standard or library object files. If the OUTPUT-FILE ends in \`.la', then a libtool library is created, only library objects (\`.lo' files) may be specified, and \`-rpath' is required, except when creating a convenience library. If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created using \`ar' and \`ranlib', or on Windows using \`lib'. If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file is created, otherwise an executable program is created." ;; uninstall) $ECHO \ "Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... Remove libraries from an installation directory. RM is the name of the program to use to delete files associated with each FILE (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed to RM. If FILE is a libtool library, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; *) func_fatal_help "invalid operation mode \`$opt_mode'" ;; esac echo $ECHO "Try \`$progname --help' for more information about other modes." } # Now that we've collected a possible --mode arg, show help if necessary if $opt_help; then if test "$opt_help" = :; then func_mode_help else { func_help noexit for opt_mode in compile link execute install finish uninstall clean; do func_mode_help done } | sed -n '1p; 2,$s/^Usage:/ or: /p' { func_help noexit for opt_mode in compile link execute install finish uninstall clean; do echo func_mode_help done } | sed '1d /^When reporting/,/^Report/{ H d } $x /information about other modes/d /more detailed .*MODE/d s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/' fi exit $? fi # func_mode_execute arg... func_mode_execute () { $opt_debug # The first argument is the command name. cmd="$nonopt" test -z "$cmd" && \ func_fatal_help "you must specify a COMMAND" # Handle -dlopen flags immediately. for file in $opt_dlopen; do test -f "$file" \ || func_fatal_help "\`$file' is not a file" dir= case $file in *.la) func_resolve_sysroot "$file" file=$func_resolve_sysroot_result # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$file" \ || func_fatal_help "\`$lib' is not a valid libtool archive" # Read the libtool library. dlname= library_names= func_source "$file" # Skip this library if it cannot be dlopened. if test -z "$dlname"; then # Warn if it was a shared library. test -n "$library_names" && \ func_warning "\`$file' was not linked with \`-export-dynamic'" continue fi func_dirname "$file" "" "." dir="$func_dirname_result" if test -f "$dir/$objdir/$dlname"; then func_append dir "/$objdir" else if test ! -f "$dir/$dlname"; then func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" fi fi ;; *.lo) # Just add the directory containing the .lo file. func_dirname "$file" "" "." dir="$func_dirname_result" ;; *) func_warning "\`-dlopen' is ignored for non-libtool libraries and objects" continue ;; esac # Get the absolute pathname. absdir=`cd "$dir" && pwd` test -n "$absdir" && dir="$absdir" # Now add the directory to shlibpath_var. if eval "test -z \"\$$shlibpath_var\""; then eval "$shlibpath_var=\"\$dir\"" else eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" fi done # This variable tells wrapper scripts just to set shlibpath_var # rather than running their programs. libtool_execute_magic="$magic" # Check if any of the arguments is a wrapper script. args= for file do case $file in -* | *.la | *.lo ) ;; *) # Do a test to see if this is really a libtool program. if func_ltwrapper_script_p "$file"; then func_source "$file" # Transform arg to wrapped name. file="$progdir/$program" elif func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" func_source "$func_ltwrapper_scriptname_result" # Transform arg to wrapped name. file="$progdir/$program" fi ;; esac # Quote arguments (to preserve shell metacharacters). func_append_quoted args "$file" done if test "X$opt_dry_run" = Xfalse; then if test -n "$shlibpath_var"; then # Export the shlibpath_var. eval "export $shlibpath_var" fi # Restore saved environment variables for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES do eval "if test \"\${save_$lt_var+set}\" = set; then $lt_var=\$save_$lt_var; export $lt_var else $lt_unset $lt_var fi" done # Now prepare to actually exec the command. exec_cmd="\$cmd$args" else # Display what would be done. if test -n "$shlibpath_var"; then eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" echo "export $shlibpath_var" fi $ECHO "$cmd$args" exit $EXIT_SUCCESS fi } test "$opt_mode" = execute && func_mode_execute ${1+"$@"} # func_mode_finish arg... func_mode_finish () { $opt_debug libs= libdirs= admincmds= for opt in "$nonopt" ${1+"$@"} do if test -d "$opt"; then func_append libdirs " $opt" elif test -f "$opt"; then if func_lalib_unsafe_p "$opt"; then func_append libs " $opt" else func_warning "\`$opt' is not a valid libtool archive" fi else func_fatal_error "invalid argument \`$opt'" fi done if test -n "$libs"; then if test -n "$lt_sysroot"; then sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"` sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;" else sysroot_cmd= fi # Remove sysroot references if $opt_dry_run; then for lib in $libs; do echo "removing references to $lt_sysroot and \`=' prefixes from $lib" done else tmpdir=`func_mktempdir` for lib in $libs; do sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ > $tmpdir/tmp-la mv -f $tmpdir/tmp-la $lib done ${RM}r "$tmpdir" fi fi if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then for libdir in $libdirs; do if test -n "$finish_cmds"; then # Do each command in the finish commands. func_execute_cmds "$finish_cmds" 'admincmds="$admincmds '"$cmd"'"' fi if test -n "$finish_eval"; then # Do the single finish_eval. eval cmds=\"$finish_eval\" $opt_dry_run || eval "$cmds" || func_append admincmds " $cmds" fi done fi # Exit here if they wanted silent mode. $opt_silent && exit $EXIT_SUCCESS if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then echo "----------------------------------------------------------------------" echo "Libraries have been installed in:" for libdir in $libdirs; do $ECHO " $libdir" done echo echo "If you ever happen to want to link against installed libraries" echo "in a given directory, LIBDIR, you must either use libtool, and" echo "specify the full pathname of the library, or use the \`-LLIBDIR'" echo "flag during linking and do at least one of the following:" if test -n "$shlibpath_var"; then echo " - add LIBDIR to the \`$shlibpath_var' environment variable" echo " during execution" fi if test -n "$runpath_var"; then echo " - add LIBDIR to the \`$runpath_var' environment variable" echo " during linking" fi if test -n "$hardcode_libdir_flag_spec"; then libdir=LIBDIR eval flag=\"$hardcode_libdir_flag_spec\" $ECHO " - use the \`$flag' linker flag" fi if test -n "$admincmds"; then $ECHO " - have your system administrator run these commands:$admincmds" fi if test -f /etc/ld.so.conf; then echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" fi echo echo "See any operating system documentation about shared libraries for" case $host in solaris2.[6789]|solaris2.1[0-9]) echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" echo "pages." ;; *) echo "more information, such as the ld(1) and ld.so(8) manual pages." ;; esac echo "----------------------------------------------------------------------" fi exit $EXIT_SUCCESS } test "$opt_mode" = finish && func_mode_finish ${1+"$@"} # func_mode_install arg... func_mode_install () { $opt_debug # There may be an optional sh(1) argument at the beginning of # install_prog (especially on Windows NT). if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || # Allow the use of GNU shtool's install command. case $nonopt in *shtool*) :;; *) false;; esac; then # Aesthetically quote it. func_quote_for_eval "$nonopt" install_prog="$func_quote_for_eval_result " arg=$1 shift else install_prog= arg=$nonopt fi # The real first argument should be the name of the installation program. # Aesthetically quote it. func_quote_for_eval "$arg" func_append install_prog "$func_quote_for_eval_result" install_shared_prog=$install_prog case " $install_prog " in *[\\\ /]cp\ *) install_cp=: ;; *) install_cp=false ;; esac # We need to accept at least all the BSD install flags. dest= files= opts= prev= install_type= isdir=no stripme= no_mode=: for arg do arg2= if test -n "$dest"; then func_append files " $dest" dest=$arg continue fi case $arg in -d) isdir=yes ;; -f) if $install_cp; then :; else prev=$arg fi ;; -g | -m | -o) prev=$arg ;; -s) stripme=" -s" continue ;; -*) ;; *) # If the previous option needed an argument, then skip it. if test -n "$prev"; then if test "x$prev" = x-m && test -n "$install_override_mode"; then arg2=$install_override_mode no_mode=false fi prev= else dest=$arg continue fi ;; esac # Aesthetically quote the argument. func_quote_for_eval "$arg" func_append install_prog " $func_quote_for_eval_result" if test -n "$arg2"; then func_quote_for_eval "$arg2" fi func_append install_shared_prog " $func_quote_for_eval_result" done test -z "$install_prog" && \ func_fatal_help "you must specify an install program" test -n "$prev" && \ func_fatal_help "the \`$prev' option requires an argument" if test -n "$install_override_mode" && $no_mode; then if $install_cp; then :; else func_quote_for_eval "$install_override_mode" func_append install_shared_prog " -m $func_quote_for_eval_result" fi fi if test -z "$files"; then if test -z "$dest"; then func_fatal_help "no file or destination specified" else func_fatal_help "you must specify a destination" fi fi # Strip any trailing slash from the destination. func_stripname '' '/' "$dest" dest=$func_stripname_result # Check to see that the destination is a directory. test -d "$dest" && isdir=yes if test "$isdir" = yes; then destdir="$dest" destname= else func_dirname_and_basename "$dest" "" "." destdir="$func_dirname_result" destname="$func_basename_result" # Not a directory, so check to see that there is only one file specified. set dummy $files; shift test "$#" -gt 1 && \ func_fatal_help "\`$dest' is not a directory" fi case $destdir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) for file in $files; do case $file in *.lo) ;; *) func_fatal_help "\`$destdir' must be an absolute directory name" ;; esac done ;; esac # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic="$magic" staticlibs= future_libdirs= current_libdirs= for file in $files; do # Do each installation. case $file in *.$libext) # Do the static libraries later. func_append staticlibs " $file" ;; *.la) func_resolve_sysroot "$file" file=$func_resolve_sysroot_result # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$file" \ || func_fatal_help "\`$file' is not a valid libtool archive" library_names= old_library= relink_command= func_source "$file" # Add the libdir to current_libdirs if it is the destination. if test "X$destdir" = "X$libdir"; then case "$current_libdirs " in *" $libdir "*) ;; *) func_append current_libdirs " $libdir" ;; esac else # Note the libdir as a future libdir. case "$future_libdirs " in *" $libdir "*) ;; *) func_append future_libdirs " $libdir" ;; esac fi func_dirname "$file" "/" "" dir="$func_dirname_result" func_append dir "$objdir" if test -n "$relink_command"; then # Determine the prefix the user has applied to our future dir. inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"` # Don't allow the user to place us outside of our expected # location b/c this prevents finding dependent libraries that # are installed to the same prefix. # At present, this check doesn't affect windows .dll's that # are installed into $libdir/../bin (currently, that works fine) # but it's something to keep an eye on. test "$inst_prefix_dir" = "$destdir" && \ func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" if test -n "$inst_prefix_dir"; then # Stick the inst_prefix_dir data into the link command. relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` else relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` fi func_warning "relinking \`$file'" func_show_eval "$relink_command" \ 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"' fi # See the names of the shared library. set dummy $library_names; shift if test -n "$1"; then realname="$1" shift srcname="$realname" test -n "$relink_command" && srcname="$realname"T # Install the shared library and build the symlinks. func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ 'exit $?' tstripme="$stripme" case $host_os in cygwin* | mingw* | pw32* | cegcc*) case $realname in *.dll.a) tstripme="" ;; esac ;; esac if test -n "$tstripme" && test -n "$striplib"; then func_show_eval "$striplib $destdir/$realname" 'exit $?' fi if test "$#" -gt 0; then # Delete the old symlinks, and create new ones. # Try `ln -sf' first, because the `ln' binary might depend on # the symlink we replace! Solaris /bin/ln does not understand -f, # so we also need to try rm && ln -s. for linkname do test "$linkname" != "$realname" \ && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" done fi # Do each command in the postinstall commands. lib="$destdir/$realname" func_execute_cmds "$postinstall_cmds" 'exit $?' fi # Install the pseudo-library for information purposes. func_basename "$file" name="$func_basename_result" instname="$dir/$name"i func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' # Maybe install the static library, too. test -n "$old_library" && func_append staticlibs " $dir/$old_library" ;; *.lo) # Install (i.e. copy) a libtool object. # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile="$destdir/$destname" else func_basename "$file" destfile="$func_basename_result" destfile="$destdir/$destfile" fi # Deduce the name of the destination old-style object file. case $destfile in *.lo) func_lo2o "$destfile" staticdest=$func_lo2o_result ;; *.$objext) staticdest="$destfile" destfile= ;; *) func_fatal_help "cannot copy a libtool object to \`$destfile'" ;; esac # Install the libtool object if requested. test -n "$destfile" && \ func_show_eval "$install_prog $file $destfile" 'exit $?' # Install the old object if enabled. if test "$build_old_libs" = yes; then # Deduce the name of the old-style object file. func_lo2o "$file" staticobj=$func_lo2o_result func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' fi exit $EXIT_SUCCESS ;; *) # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile="$destdir/$destname" else func_basename "$file" destfile="$func_basename_result" destfile="$destdir/$destfile" fi # If the file is missing, and there is a .exe on the end, strip it # because it is most likely a libtool script we actually want to # install stripped_ext="" case $file in *.exe) if test ! -f "$file"; then func_stripname '' '.exe' "$file" file=$func_stripname_result stripped_ext=".exe" fi ;; esac # Do a test to see if this is really a libtool program. case $host in *cygwin* | *mingw*) if func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" wrapper=$func_ltwrapper_scriptname_result else func_stripname '' '.exe' "$file" wrapper=$func_stripname_result fi ;; *) wrapper=$file ;; esac if func_ltwrapper_script_p "$wrapper"; then notinst_deplibs= relink_command= func_source "$wrapper" # Check the variables that should have been set. test -z "$generated_by_libtool_version" && \ func_fatal_error "invalid libtool wrapper script \`$wrapper'" finalize=yes for lib in $notinst_deplibs; do # Check to see that each library is installed. libdir= if test -f "$lib"; then func_source "$lib" fi libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test if test -n "$libdir" && test ! -f "$libfile"; then func_warning "\`$lib' has not been installed in \`$libdir'" finalize=no fi done relink_command= func_source "$wrapper" outputname= if test "$fast_install" = no && test -n "$relink_command"; then $opt_dry_run || { if test "$finalize" = yes; then tmpdir=`func_mktempdir` func_basename "$file$stripped_ext" file="$func_basename_result" outputname="$tmpdir/$file" # Replace the output file specification. relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` $opt_silent || { func_quote_for_expand "$relink_command" eval "func_echo $func_quote_for_expand_result" } if eval "$relink_command"; then : else func_error "error: relink \`$file' with the above command before installing it" $opt_dry_run || ${RM}r "$tmpdir" continue fi file="$outputname" else func_warning "cannot relink \`$file'" fi } else # Install the binary that we compiled earlier. file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` fi fi # remove .exe since cygwin /usr/bin/install will append another # one anyway case $install_prog,$host in */usr/bin/install*,*cygwin*) case $file:$destfile in *.exe:*.exe) # this is ok ;; *.exe:*) destfile=$destfile.exe ;; *:*.exe) func_stripname '' '.exe' "$destfile" destfile=$func_stripname_result ;; esac ;; esac func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' $opt_dry_run || if test -n "$outputname"; then ${RM}r "$tmpdir" fi ;; esac done for file in $staticlibs; do func_basename "$file" name="$func_basename_result" # Set up the ranlib parameters. oldlib="$destdir/$name" func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 tool_oldlib=$func_to_tool_file_result func_show_eval "$install_prog \$file \$oldlib" 'exit $?' if test -n "$stripme" && test -n "$old_striplib"; then func_show_eval "$old_striplib $tool_oldlib" 'exit $?' fi # Do each command in the postinstall commands. func_execute_cmds "$old_postinstall_cmds" 'exit $?' done test -n "$future_libdirs" && \ func_warning "remember to run \`$progname --finish$future_libdirs'" if test -n "$current_libdirs"; then # Maybe just do a dry run. $opt_dry_run && current_libdirs=" -n$current_libdirs" exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' else exit $EXIT_SUCCESS fi } test "$opt_mode" = install && func_mode_install ${1+"$@"} # func_generate_dlsyms outputname originator pic_p # Extract symbols from dlprefiles and create ${outputname}S.o with # a dlpreopen symbol table. func_generate_dlsyms () { $opt_debug my_outputname="$1" my_originator="$2" my_pic_p="${3-no}" my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'` my_dlsyms= if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then if test -n "$NM" && test -n "$global_symbol_pipe"; then my_dlsyms="${my_outputname}S.c" else func_error "not configured to extract global symbols from dlpreopened files" fi fi if test -n "$my_dlsyms"; then case $my_dlsyms in "") ;; *.c) # Discover the nlist of each of the dlfiles. nlist="$output_objdir/${my_outputname}.nm" func_show_eval "$RM $nlist ${nlist}S ${nlist}T" # Parse the name list into a source file. func_verbose "creating $output_objdir/$my_dlsyms" $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ /* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */ /* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */ #ifdef __cplusplus extern \"C\" { #endif #if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) #pragma GCC diagnostic ignored \"-Wstrict-prototypes\" #endif /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) /* DATA imports from DLLs on WIN32 con't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT_DLSYM_CONST #elif defined(__osf__) /* This system does not cope well with relocations in const data. */ # define LT_DLSYM_CONST #else # define LT_DLSYM_CONST const #endif /* External symbol declarations for the compiler. */\ " if test "$dlself" = yes; then func_verbose "generating symbol list for \`$output'" $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" # Add our own program objects to the symbol list. progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` for progfile in $progfiles; do func_to_tool_file "$progfile" func_convert_file_msys_to_w32 func_verbose "extracting global C symbols from \`$func_to_tool_file_result'" $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'" done if test -n "$exclude_expsyms"; then $opt_dry_run || { eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' } fi if test -n "$export_symbols_regex"; then $opt_dry_run || { eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' } fi # Prepare the list of exported symbols if test -z "$export_symbols"; then export_symbols="$output_objdir/$outputname.exp" $opt_dry_run || { $RM $export_symbols eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' case $host in *cygwin* | *mingw* | *cegcc* ) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' ;; esac } else $opt_dry_run || { eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' case $host in *cygwin* | *mingw* | *cegcc* ) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' ;; esac } fi fi for dlprefile in $dlprefiles; do func_verbose "extracting global C symbols from \`$dlprefile'" func_basename "$dlprefile" name="$func_basename_result" case $host in *cygwin* | *mingw* | *cegcc* ) # if an import library, we need to obtain dlname if func_win32_import_lib_p "$dlprefile"; then func_tr_sh "$dlprefile" eval "curr_lafile=\$libfile_$func_tr_sh_result" dlprefile_dlbasename="" if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then # Use subshell, to avoid clobbering current variable values dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"` if test -n "$dlprefile_dlname" ; then func_basename "$dlprefile_dlname" dlprefile_dlbasename="$func_basename_result" else # no lafile. user explicitly requested -dlpreopen . $sharedlib_from_linklib_cmd "$dlprefile" dlprefile_dlbasename=$sharedlib_from_linklib_result fi fi $opt_dry_run || { if test -n "$dlprefile_dlbasename" ; then eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"' else func_warning "Could not compute DLL name from $name" eval '$ECHO ": $name " >> "$nlist"' fi func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'" } else # not an import lib $opt_dry_run || { eval '$ECHO ": $name " >> "$nlist"' func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" } fi ;; *) $opt_dry_run || { eval '$ECHO ": $name " >> "$nlist"' func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" } ;; esac done $opt_dry_run || { # Make sure we have at least an empty file. test -f "$nlist" || : > "$nlist" if test -n "$exclude_expsyms"; then $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T $MV "$nlist"T "$nlist" fi # Try sorting and uniquifying the output. if $GREP -v "^: " < "$nlist" | if sort -k 3 /dev/null 2>&1; then sort -k 3 else sort +2 fi | uniq > "$nlist"S; then : else $GREP -v "^: " < "$nlist" > "$nlist"S fi if test -f "$nlist"S; then eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' else echo '/* NONE */' >> "$output_objdir/$my_dlsyms" fi echo >> "$output_objdir/$my_dlsyms" "\ /* The mapping between symbol names and symbols. */ typedef struct { const char *name; void *address; } lt_dlsymlist; extern LT_DLSYM_CONST lt_dlsymlist lt_${my_prefix}_LTX_preloaded_symbols[]; LT_DLSYM_CONST lt_dlsymlist lt_${my_prefix}_LTX_preloaded_symbols[] = {\ { \"$my_originator\", (void *) 0 }," case $need_lib_prefix in no) eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" ;; *) eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" ;; esac echo >> "$output_objdir/$my_dlsyms" "\ {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt_${my_prefix}_LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif\ " } # !$opt_dry_run pic_flag_for_symtable= case "$compile_command " in *" -static "*) ;; *) case $host in # compiling the symbol table file with pic_flag works around # a FreeBSD bug that causes programs to crash when -lm is # linked before any other PIC object. But we must not use # pic_flag when linking with -static. The problem exists in # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; *-*-hpux*) pic_flag_for_symtable=" $pic_flag" ;; *) if test "X$my_pic_p" != Xno; then pic_flag_for_symtable=" $pic_flag" fi ;; esac ;; esac symtab_cflags= for arg in $LTCFLAGS; do case $arg in -pie | -fpie | -fPIE) ;; *) func_append symtab_cflags " $arg" ;; esac done # Now compile the dynamic symbol file. func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' # Clean up the generated files. func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"' # Transform the symbol file into the correct name. symfileobj="$output_objdir/${my_outputname}S.$objext" case $host in *cygwin* | *mingw* | *cegcc* ) if test -f "$output_objdir/$my_outputname.def"; then compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` else compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` fi ;; *) compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` ;; esac ;; *) func_fatal_error "unknown suffix for \`$my_dlsyms'" ;; esac else # We keep going just in case the user didn't refer to # lt_preloaded_symbols. The linker will fail if global_symbol_pipe # really was required. # Nullify the symbol file. compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` fi } # func_win32_libid arg # return the library type of file 'arg' # # Need a lot of goo to handle *both* DLLs and import libs # Has to be a shell function in order to 'eat' the argument # that is supplied when $file_magic_command is called. # Despite the name, also deal with 64 bit binaries. func_win32_libid () { $opt_debug win32_libid_type="unknown" win32_fileres=`file -L $1 2>/dev/null` case $win32_fileres in *ar\ archive\ import\ library*) # definitely import win32_libid_type="x86 archive import" ;; *ar\ archive*) # could be an import, or static # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then func_to_tool_file "$1" func_convert_file_msys_to_w32 win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | $SED -n -e ' 1,100{ / I /{ s,.*,import, p q } }'` case $win32_nmres in import*) win32_libid_type="x86 archive import";; *) win32_libid_type="x86 archive static";; esac fi ;; *DLL*) win32_libid_type="x86 DLL" ;; *executable*) # but shell scripts are "executable" too... case $win32_fileres in *MS\ Windows\ PE\ Intel*) win32_libid_type="x86 DLL" ;; esac ;; esac $ECHO "$win32_libid_type" } # func_cygming_dll_for_implib ARG # # Platform-specific function to extract the # name of the DLL associated with the specified # import library ARG. # Invoked by eval'ing the libtool variable # $sharedlib_from_linklib_cmd # Result is available in the variable # $sharedlib_from_linklib_result func_cygming_dll_for_implib () { $opt_debug sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"` } # func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs # # The is the core of a fallback implementation of a # platform-specific function to extract the name of the # DLL associated with the specified import library LIBNAME. # # SECTION_NAME is either .idata$6 or .idata$7, depending # on the platform and compiler that created the implib. # # Echos the name of the DLL associated with the # specified import library. func_cygming_dll_for_implib_fallback_core () { $opt_debug match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"` $OBJDUMP -s --section "$1" "$2" 2>/dev/null | $SED '/^Contents of section '"$match_literal"':/{ # Place marker at beginning of archive member dllname section s/.*/====MARK====/ p d } # These lines can sometimes be longer than 43 characters, but # are always uninteresting /:[ ]*file format pe[i]\{,1\}-/d /^In archive [^:]*:/d # Ensure marker is printed /^====MARK====/p # Remove all lines with less than 43 characters /^.\{43\}/!d # From remaining lines, remove first 43 characters s/^.\{43\}//' | $SED -n ' # Join marker and all lines until next marker into a single line /^====MARK====/ b para H $ b para b :para x s/\n//g # Remove the marker s/^====MARK====// # Remove trailing dots and whitespace s/[\. \t]*$// # Print /./p' | # we now have a list, one entry per line, of the stringified # contents of the appropriate section of all members of the # archive which possess that section. Heuristic: eliminate # all those which have a first or second character that is # a '.' (that is, objdump's representation of an unprintable # character.) This should work for all archives with less than # 0x302f exports -- but will fail for DLLs whose name actually # begins with a literal '.' or a single character followed by # a '.'. # # Of those that remain, print the first one. $SED -e '/^\./d;/^.\./d;q' } # func_cygming_gnu_implib_p ARG # This predicate returns with zero status (TRUE) if # ARG is a GNU/binutils-style import library. Returns # with nonzero status (FALSE) otherwise. func_cygming_gnu_implib_p () { $opt_debug func_to_tool_file "$1" func_convert_file_msys_to_w32 func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'` test -n "$func_cygming_gnu_implib_tmp" } # func_cygming_ms_implib_p ARG # This predicate returns with zero status (TRUE) if # ARG is an MS-style import library. Returns # with nonzero status (FALSE) otherwise. func_cygming_ms_implib_p () { $opt_debug func_to_tool_file "$1" func_convert_file_msys_to_w32 func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` test -n "$func_cygming_ms_implib_tmp" } # func_cygming_dll_for_implib_fallback ARG # Platform-specific function to extract the # name of the DLL associated with the specified # import library ARG. # # This fallback implementation is for use when $DLLTOOL # does not support the --identify-strict option. # Invoked by eval'ing the libtool variable # $sharedlib_from_linklib_cmd # Result is available in the variable # $sharedlib_from_linklib_result func_cygming_dll_for_implib_fallback () { $opt_debug if func_cygming_gnu_implib_p "$1" ; then # binutils import library sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"` elif func_cygming_ms_implib_p "$1" ; then # ms-generated import library sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"` else # unknown sharedlib_from_linklib_result="" fi } # func_extract_an_archive dir oldlib func_extract_an_archive () { $opt_debug f_ex_an_ar_dir="$1"; shift f_ex_an_ar_oldlib="$1" if test "$lock_old_archive_extraction" = yes; then lockfile=$f_ex_an_ar_oldlib.lock until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do func_echo "Waiting for $lockfile to be removed" sleep 2 done fi func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ 'stat=$?; rm -f "$lockfile"; exit $stat' if test "$lock_old_archive_extraction" = yes; then $opt_dry_run || rm -f "$lockfile" fi if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then : else func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" fi } # func_extract_archives gentop oldlib ... func_extract_archives () { $opt_debug my_gentop="$1"; shift my_oldlibs=${1+"$@"} my_oldobjs="" my_xlib="" my_xabs="" my_xdir="" for my_xlib in $my_oldlibs; do # Extract the objects. case $my_xlib in [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; *) my_xabs=`pwd`"/$my_xlib" ;; esac func_basename "$my_xlib" my_xlib="$func_basename_result" my_xlib_u=$my_xlib while :; do case " $extracted_archives " in *" $my_xlib_u "*) func_arith $extracted_serial + 1 extracted_serial=$func_arith_result my_xlib_u=lt$extracted_serial-$my_xlib ;; *) break ;; esac done extracted_archives="$extracted_archives $my_xlib_u" my_xdir="$my_gentop/$my_xlib_u" func_mkdir_p "$my_xdir" case $host in *-darwin*) func_verbose "Extracting $my_xabs" # Do not bother doing anything if just a dry run $opt_dry_run || { darwin_orig_dir=`pwd` cd $my_xdir || exit $? darwin_archive=$my_xabs darwin_curdir=`pwd` darwin_base_archive=`basename "$darwin_archive"` darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` if test -n "$darwin_arches"; then darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` darwin_arch= func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" for darwin_arch in $darwin_arches ; do func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}" $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" func_extract_an_archive "`pwd`" "${darwin_base_archive}" cd "$darwin_curdir" $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" done # $darwin_arches ## Okay now we've a bunch of thin objects, gotta fatten them up :) darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u` darwin_file= darwin_files= for darwin_file in $darwin_filelist; do darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` $LIPO -create -output "$darwin_file" $darwin_files done # $darwin_filelist $RM -rf unfat-$$ cd "$darwin_orig_dir" else cd $darwin_orig_dir func_extract_an_archive "$my_xdir" "$my_xabs" fi # $darwin_arches } # !$opt_dry_run ;; *) func_extract_an_archive "$my_xdir" "$my_xabs" ;; esac my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` done func_extract_archives_result="$my_oldobjs" } # func_emit_wrapper [arg=no] # # Emit a libtool wrapper script on stdout. # Don't directly open a file because we may want to # incorporate the script contents within a cygwin/mingw # wrapper executable. Must ONLY be called from within # func_mode_link because it depends on a number of variables # set therein. # # ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR # variable will take. If 'yes', then the emitted script # will assume that the directory in which it is stored is # the $objdir directory. This is a cygwin/mingw-specific # behavior. func_emit_wrapper () { func_emit_wrapper_arg1=${1-no} $ECHO "\ #! $SHELL # $output - temporary wrapper script for $objdir/$outputname # Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION # # The $output program cannot be directly executed until all the libtool # libraries that it depends on are installed. # # This wrapper script should never be moved out of the build directory. # If it is, it will not operate correctly. # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. sed_quote_subst='$sed_quote_subst' # Be Bourne compatible if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac fi BIN_SH=xpg4; export BIN_SH # for Tru64 DUALCASE=1; export DUALCASE # for MKS sh # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH relink_command=\"$relink_command\" # This environment variable determines our operation mode. if test \"\$libtool_install_magic\" = \"$magic\"; then # install mode needs the following variables: generated_by_libtool_version='$macro_version' notinst_deplibs='$notinst_deplibs' else # When we are sourced in execute mode, \$file and \$ECHO are already set. if test \"\$libtool_execute_magic\" != \"$magic\"; then file=\"\$0\"" qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` $ECHO "\ # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$1 _LTECHO_EOF' } ECHO=\"$qECHO\" fi # Very basic option parsing. These options are (a) specific to # the libtool wrapper, (b) are identical between the wrapper # /script/ and the wrapper /executable/ which is used only on # windows platforms, and (c) all begin with the string "--lt-" # (application programs are unlikely to have options which match # this pattern). # # There are only two supported options: --lt-debug and # --lt-dump-script. There is, deliberately, no --lt-help. # # The first argument to this parsing function should be the # script's $0 value, followed by "$@". lt_option_debug= func_parse_lt_options () { lt_script_arg0=\$0 shift for lt_opt do case \"\$lt_opt\" in --lt-debug) lt_option_debug=1 ;; --lt-dump-script) lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\` test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\` cat \"\$lt_dump_D/\$lt_dump_F\" exit 0 ;; --lt-*) \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 exit 1 ;; esac done # Print the debug banner immediately: if test -n \"\$lt_option_debug\"; then echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2 fi } # Used when --lt-debug. Prints its arguments to stdout # (redirection is the responsibility of the caller) func_lt_dump_args () { lt_dump_args_N=1; for lt_arg do \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\" lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` done } # Core function for launching the target application func_exec_program_core () { " case $host in # Backslashes separate directories on plain windows *-*-mingw | *-*-os2* | *-cegcc*) $ECHO "\ if test -n \"\$lt_option_debug\"; then \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2 func_lt_dump_args \${1+\"\$@\"} 1>&2 fi exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} " ;; *) $ECHO "\ if test -n \"\$lt_option_debug\"; then \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2 func_lt_dump_args \${1+\"\$@\"} 1>&2 fi exec \"\$progdir/\$program\" \${1+\"\$@\"} " ;; esac $ECHO "\ \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 exit 1 } # A function to encapsulate launching the target application # Strips options in the --lt-* namespace from \$@ and # launches target application with the remaining arguments. func_exec_program () { case \" \$* \" in *\\ --lt-*) for lt_wr_arg do case \$lt_wr_arg in --lt-*) ;; *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; esac shift done ;; esac func_exec_program_core \${1+\"\$@\"} } # Parse options func_parse_lt_options \"\$0\" \${1+\"\$@\"} # Find the directory that this script lives in. thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` test \"x\$thisdir\" = \"x\$file\" && thisdir=. # Follow symbolic links until we get to the real thisdir. file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` while test -n \"\$file\"; do destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` # If there was a directory component, then change thisdir. if test \"x\$destdir\" != \"x\$file\"; then case \"\$destdir\" in [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; *) thisdir=\"\$thisdir/\$destdir\" ;; esac fi file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` done # Usually 'no', except on cygwin/mingw when embedded into # the cwrapper. WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then # special case for '.' if test \"\$thisdir\" = \".\"; then thisdir=\`pwd\` fi # remove .libs from thisdir case \"\$thisdir\" in *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; $objdir ) thisdir=. ;; esac fi # Try to get the absolute directory name. absdir=\`cd \"\$thisdir\" && pwd\` test -n \"\$absdir\" && thisdir=\"\$absdir\" " if test "$fast_install" = yes; then $ECHO "\ program=lt-'$outputname'$exeext progdir=\"\$thisdir/$objdir\" if test ! -f \"\$progdir/\$program\" || { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ test \"X\$file\" != \"X\$progdir/\$program\"; }; then file=\"\$\$-\$program\" if test ! -d \"\$progdir\"; then $MKDIR \"\$progdir\" else $RM \"\$progdir/\$file\" fi" $ECHO "\ # relink executable if necessary if test -n \"\$relink_command\"; then if relink_command_output=\`eval \$relink_command 2>&1\`; then : else $ECHO \"\$relink_command_output\" >&2 $RM \"\$progdir/\$file\" exit 1 fi fi $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || { $RM \"\$progdir/\$program\"; $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } $RM \"\$progdir/\$file\" fi" else $ECHO "\ program='$outputname' progdir=\"\$thisdir/$objdir\" " fi $ECHO "\ if test -f \"\$progdir/\$program\"; then" # fixup the dll searchpath if we need to. # # Fix the DLL searchpath if we need to. Do this before prepending # to shlibpath, because on Windows, both are PATH and uninstalled # libraries must come first. if test -n "$dllsearchpath"; then $ECHO "\ # Add the dll search path components to the executable PATH PATH=$dllsearchpath:\$PATH " fi # Export our shlibpath_var if we have one. if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then $ECHO "\ # Add our own library path to $shlibpath_var $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" # Some systems cannot cope with colon-terminated $shlibpath_var # The second colon is a workaround for a bug in BeOS R4 sed $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` export $shlibpath_var " fi $ECHO "\ if test \"\$libtool_execute_magic\" != \"$magic\"; then # Run the actual program with our arguments. func_exec_program \${1+\"\$@\"} fi else # The program doesn't exist. \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 exit 1 fi fi\ " } # func_emit_cwrapperexe_src # emit the source code for a wrapper executable on stdout # Must ONLY be called from within func_mode_link because # it depends on a number of variable set therein. func_emit_cwrapperexe_src () { cat < #include #ifdef _MSC_VER # include # include # include #else # include # include # ifdef __CYGWIN__ # include # endif #endif #include #include #include #include #include #include #include #include /* declarations of non-ANSI functions */ #if defined(__MINGW32__) # ifdef __STRICT_ANSI__ int _putenv (const char *); # endif #elif defined(__CYGWIN__) # ifdef __STRICT_ANSI__ char *realpath (const char *, char *); int putenv (char *); int setenv (const char *, const char *, int); # endif /* #elif defined (other platforms) ... */ #endif /* portability defines, excluding path handling macros */ #if defined(_MSC_VER) # define setmode _setmode # define stat _stat # define chmod _chmod # define getcwd _getcwd # define putenv _putenv # define S_IXUSR _S_IEXEC # ifndef _INTPTR_T_DEFINED # define _INTPTR_T_DEFINED # define intptr_t int # endif #elif defined(__MINGW32__) # define setmode _setmode # define stat _stat # define chmod _chmod # define getcwd _getcwd # define putenv _putenv #elif defined(__CYGWIN__) # define HAVE_SETENV # define FOPEN_WB "wb" /* #elif defined (other platforms) ... */ #endif #if defined(PATH_MAX) # define LT_PATHMAX PATH_MAX #elif defined(MAXPATHLEN) # define LT_PATHMAX MAXPATHLEN #else # define LT_PATHMAX 1024 #endif #ifndef S_IXOTH # define S_IXOTH 0 #endif #ifndef S_IXGRP # define S_IXGRP 0 #endif /* path handling portability macros */ #ifndef DIR_SEPARATOR # define DIR_SEPARATOR '/' # define PATH_SEPARATOR ':' #endif #if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ defined (__OS2__) # define HAVE_DOS_BASED_FILE_SYSTEM # define FOPEN_WB "wb" # ifndef DIR_SEPARATOR_2 # define DIR_SEPARATOR_2 '\\' # endif # ifndef PATH_SEPARATOR_2 # define PATH_SEPARATOR_2 ';' # endif #endif #ifndef DIR_SEPARATOR_2 # define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) #else /* DIR_SEPARATOR_2 */ # define IS_DIR_SEPARATOR(ch) \ (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) #endif /* DIR_SEPARATOR_2 */ #ifndef PATH_SEPARATOR_2 # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) #else /* PATH_SEPARATOR_2 */ # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) #endif /* PATH_SEPARATOR_2 */ #ifndef FOPEN_WB # define FOPEN_WB "w" #endif #ifndef _O_BINARY # define _O_BINARY 0 #endif #define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) #define XFREE(stale) do { \ if (stale) { free ((void *) stale); stale = 0; } \ } while (0) #if defined(LT_DEBUGWRAPPER) static int lt_debug = 1; #else static int lt_debug = 0; #endif const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ void *xmalloc (size_t num); char *xstrdup (const char *string); const char *base_name (const char *name); char *find_executable (const char *wrapper); char *chase_symlinks (const char *pathspec); int make_executable (const char *path); int check_executable (const char *path); char *strendzap (char *str, const char *pat); void lt_debugprintf (const char *file, int line, const char *fmt, ...); void lt_fatal (const char *file, int line, const char *message, ...); static const char *nonnull (const char *s); static const char *nonempty (const char *s); void lt_setenv (const char *name, const char *value); char *lt_extend_str (const char *orig_value, const char *add, int to_end); void lt_update_exe_path (const char *name, const char *value); void lt_update_lib_path (const char *name, const char *value); char **prepare_spawn (char **argv); void lt_dump_script (FILE *f); EOF cat <= 0) && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) return 1; else return 0; } int make_executable (const char *path) { int rval = 0; struct stat st; lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", nonempty (path)); if ((!path) || (!*path)) return 0; if (stat (path, &st) >= 0) { rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); } return rval; } /* Searches for the full path of the wrapper. Returns newly allocated full path name if found, NULL otherwise Does not chase symlinks, even on platforms that support them. */ char * find_executable (const char *wrapper) { int has_slash = 0; const char *p; const char *p_next; /* static buffer for getcwd */ char tmp[LT_PATHMAX + 1]; int tmp_len; char *concat_name; lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", nonempty (wrapper)); if ((wrapper == NULL) || (*wrapper == '\0')) return NULL; /* Absolute path? */ #if defined (HAVE_DOS_BASED_FILE_SYSTEM) if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') { concat_name = xstrdup (wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } else { #endif if (IS_DIR_SEPARATOR (wrapper[0])) { concat_name = xstrdup (wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } #if defined (HAVE_DOS_BASED_FILE_SYSTEM) } #endif for (p = wrapper; *p; p++) if (*p == '/') { has_slash = 1; break; } if (!has_slash) { /* no slashes; search PATH */ const char *path = getenv ("PATH"); if (path != NULL) { for (p = path; *p; p = p_next) { const char *q; size_t p_len; for (q = p; *q; q++) if (IS_PATH_SEPARATOR (*q)) break; p_len = q - p; p_next = (*q == '\0' ? q : q + 1); if (p_len == 0) { /* empty path: current directory */ if (getcwd (tmp, LT_PATHMAX) == NULL) lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", nonnull (strerror (errno))); tmp_len = strlen (tmp); concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, tmp, tmp_len); concat_name[tmp_len] = '/'; strcpy (concat_name + tmp_len + 1, wrapper); } else { concat_name = XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, p, p_len); concat_name[p_len] = '/'; strcpy (concat_name + p_len + 1, wrapper); } if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } } /* not found in PATH; assume curdir */ } /* Relative path | not found in path: prepend cwd */ if (getcwd (tmp, LT_PATHMAX) == NULL) lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", nonnull (strerror (errno))); tmp_len = strlen (tmp); concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, tmp, tmp_len); concat_name[tmp_len] = '/'; strcpy (concat_name + tmp_len + 1, wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); return NULL; } char * chase_symlinks (const char *pathspec) { #ifndef S_ISLNK return xstrdup (pathspec); #else char buf[LT_PATHMAX]; struct stat s; char *tmp_pathspec = xstrdup (pathspec); char *p; int has_symlinks = 0; while (strlen (tmp_pathspec) && !has_symlinks) { lt_debugprintf (__FILE__, __LINE__, "checking path component for symlinks: %s\n", tmp_pathspec); if (lstat (tmp_pathspec, &s) == 0) { if (S_ISLNK (s.st_mode) != 0) { has_symlinks = 1; break; } /* search backwards for last DIR_SEPARATOR */ p = tmp_pathspec + strlen (tmp_pathspec) - 1; while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) p--; if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) { /* no more DIR_SEPARATORS left */ break; } *p = '\0'; } else { lt_fatal (__FILE__, __LINE__, "error accessing file \"%s\": %s", tmp_pathspec, nonnull (strerror (errno))); } } XFREE (tmp_pathspec); if (!has_symlinks) { return xstrdup (pathspec); } tmp_pathspec = realpath (pathspec, buf); if (tmp_pathspec == 0) { lt_fatal (__FILE__, __LINE__, "could not follow symlinks for %s", pathspec); } return xstrdup (tmp_pathspec); #endif } char * strendzap (char *str, const char *pat) { size_t len, patlen; assert (str != NULL); assert (pat != NULL); len = strlen (str); patlen = strlen (pat); if (patlen <= len) { str += len - patlen; if (strcmp (str, pat) == 0) *str = '\0'; } return str; } void lt_debugprintf (const char *file, int line, const char *fmt, ...) { va_list args; if (lt_debug) { (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); va_start (args, fmt); (void) vfprintf (stderr, fmt, args); va_end (args); } } static void lt_error_core (int exit_status, const char *file, int line, const char *mode, const char *message, va_list ap) { fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); vfprintf (stderr, message, ap); fprintf (stderr, ".\n"); if (exit_status >= 0) exit (exit_status); } void lt_fatal (const char *file, int line, const char *message, ...) { va_list ap; va_start (ap, message); lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); va_end (ap); } static const char * nonnull (const char *s) { return s ? s : "(null)"; } static const char * nonempty (const char *s) { return (s && !*s) ? "(empty)" : nonnull (s); } void lt_setenv (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_setenv) setting '%s' to '%s'\n", nonnull (name), nonnull (value)); { #ifdef HAVE_SETENV /* always make a copy, for consistency with !HAVE_SETENV */ char *str = xstrdup (value); setenv (name, str, 1); #else int len = strlen (name) + 1 + strlen (value) + 1; char *str = XMALLOC (char, len); sprintf (str, "%s=%s", name, value); if (putenv (str) != EXIT_SUCCESS) { XFREE (str); } #endif } } char * lt_extend_str (const char *orig_value, const char *add, int to_end) { char *new_value; if (orig_value && *orig_value) { int orig_value_len = strlen (orig_value); int add_len = strlen (add); new_value = XMALLOC (char, add_len + orig_value_len + 1); if (to_end) { strcpy (new_value, orig_value); strcpy (new_value + orig_value_len, add); } else { strcpy (new_value, add); strcpy (new_value + add_len, orig_value); } } else { new_value = xstrdup (add); } return new_value; } void lt_update_exe_path (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", nonnull (name), nonnull (value)); if (name && *name && value && *value) { char *new_value = lt_extend_str (getenv (name), value, 0); /* some systems can't cope with a ':'-terminated path #' */ int len = strlen (new_value); while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1])) { new_value[len-1] = '\0'; } lt_setenv (name, new_value); XFREE (new_value); } } void lt_update_lib_path (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", nonnull (name), nonnull (value)); if (name && *name && value && *value) { char *new_value = lt_extend_str (getenv (name), value, 0); lt_setenv (name, new_value); XFREE (new_value); } } EOF case $host_os in mingw*) cat <<"EOF" /* Prepares an argument vector before calling spawn(). Note that spawn() does not by itself call the command interpreter (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); GetVersionEx(&v); v.dwPlatformId == VER_PLATFORM_WIN32_NT; }) ? "cmd.exe" : "command.com"). Instead it simply concatenates the arguments, separated by ' ', and calls CreateProcess(). We must quote the arguments since Win32 CreateProcess() interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a special way: - Space and tab are interpreted as delimiters. They are not treated as delimiters if they are surrounded by double quotes: "...". - Unescaped double quotes are removed from the input. Their only effect is that within double quotes, space and tab are treated like normal characters. - Backslashes not followed by double quotes are not special. - But 2*n+1 backslashes followed by a double quote become n backslashes followed by a double quote (n >= 0): \" -> " \\\" -> \" \\\\\" -> \\" */ #define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" #define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" char ** prepare_spawn (char **argv) { size_t argc; char **new_argv; size_t i; /* Count number of arguments. */ for (argc = 0; argv[argc] != NULL; argc++) ; /* Allocate new argument vector. */ new_argv = XMALLOC (char *, argc + 1); /* Put quoted arguments into the new argument vector. */ for (i = 0; i < argc; i++) { const char *string = argv[i]; if (string[0] == '\0') new_argv[i] = xstrdup ("\"\""); else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) { int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); size_t length; unsigned int backslashes; const char *s; char *quoted_string; char *p; length = 0; backslashes = 0; if (quote_around) length++; for (s = string; *s != '\0'; s++) { char c = *s; if (c == '"') length += backslashes + 1; length++; if (c == '\\') backslashes++; else backslashes = 0; } if (quote_around) length += backslashes + 1; quoted_string = XMALLOC (char, length + 1); p = quoted_string; backslashes = 0; if (quote_around) *p++ = '"'; for (s = string; *s != '\0'; s++) { char c = *s; if (c == '"') { unsigned int j; for (j = backslashes + 1; j > 0; j--) *p++ = '\\'; } *p++ = c; if (c == '\\') backslashes++; else backslashes = 0; } if (quote_around) { unsigned int j; for (j = backslashes; j > 0; j--) *p++ = '\\'; *p++ = '"'; } *p = '\0'; new_argv[i] = quoted_string; } else new_argv[i] = (char *) string; } new_argv[argc] = NULL; return new_argv; } EOF ;; esac cat <<"EOF" void lt_dump_script (FILE* f) { EOF func_emit_wrapper yes | $SED -n -e ' s/^\(.\{79\}\)\(..*\)/\1\ \2/ h s/\([\\"]\)/\\\1/g s/$/\\n/ s/\([^\n]*\).*/ fputs ("\1", f);/p g D' cat <<"EOF" } EOF } # end: func_emit_cwrapperexe_src # func_win32_import_lib_p ARG # True if ARG is an import lib, as indicated by $file_magic_cmd func_win32_import_lib_p () { $opt_debug case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in *import*) : ;; *) false ;; esac } # func_mode_link arg... func_mode_link () { $opt_debug case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) # It is impossible to link a dll without this setting, and # we shouldn't force the makefile maintainer to figure out # which system we are compiling for in order to pass an extra # flag for every libtool invocation. # allow_undefined=no # FIXME: Unfortunately, there are problems with the above when trying # to make a dll which has undefined symbols, in which case not # even a static library is built. For now, we need to specify # -no-undefined on the libtool link line when we can be certain # that all symbols are satisfied, otherwise we get a static library. allow_undefined=yes ;; *) allow_undefined=yes ;; esac libtool_args=$nonopt base_compile="$nonopt $@" compile_command=$nonopt finalize_command=$nonopt compile_rpath= finalize_rpath= compile_shlibpath= finalize_shlibpath= convenience= old_convenience= deplibs= old_deplibs= compiler_flags= linker_flags= dllsearchpath= lib_search_path=`pwd` inst_prefix_dir= new_inherited_linker_flags= avoid_version=no bindir= dlfiles= dlprefiles= dlself=no export_dynamic=no export_symbols= export_symbols_regex= generated= libobjs= ltlibs= module=no no_install=no objs= non_pic_objects= precious_files_regex= prefer_static_libs=no preload=no prev= prevarg= release= rpath= xrpath= perm_rpath= temp_rpath= thread_safe=no vinfo= vinfo_number=no weak_libs= single_module="${wl}-single_module" func_infer_tag $base_compile # We need to know -static, to get the right output filenames. for arg do case $arg in -shared) test "$build_libtool_libs" != yes && \ func_fatal_configuration "can not build a shared library" build_old_libs=no break ;; -all-static | -static | -static-libtool-libs) case $arg in -all-static) if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then func_warning "complete static linking is impossible in this configuration" fi if test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=yes ;; -static) if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=built ;; -static-libtool-libs) if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=yes ;; esac build_libtool_libs=no build_old_libs=yes break ;; esac done # See if our shared archives depend on static archives. test -n "$old_archive_from_new_cmds" && build_old_libs=yes # Go through the arguments, transforming them on the way. while test "$#" -gt 0; do arg="$1" shift func_quote_for_eval "$arg" qarg=$func_quote_for_eval_unquoted_result func_append libtool_args " $func_quote_for_eval_result" # If the previous option needs an argument, assign it. if test -n "$prev"; then case $prev in output) func_append compile_command " @OUTPUT@" func_append finalize_command " @OUTPUT@" ;; esac case $prev in bindir) bindir="$arg" prev= continue ;; dlfiles|dlprefiles) if test "$preload" = no; then # Add the symbol object into the linking commands. func_append compile_command " @SYMFILE@" func_append finalize_command " @SYMFILE@" preload=yes fi case $arg in *.la | *.lo) ;; # We handle these cases below. force) if test "$dlself" = no; then dlself=needless export_dynamic=yes fi prev= continue ;; self) if test "$prev" = dlprefiles; then dlself=yes elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then dlself=yes else dlself=needless export_dynamic=yes fi prev= continue ;; *) if test "$prev" = dlfiles; then func_append dlfiles " $arg" else func_append dlprefiles " $arg" fi prev= continue ;; esac ;; expsyms) export_symbols="$arg" test -f "$arg" \ || func_fatal_error "symbol file \`$arg' does not exist" prev= continue ;; expsyms_regex) export_symbols_regex="$arg" prev= continue ;; framework) case $host in *-*-darwin*) case "$deplibs " in *" $qarg.ltframework "*) ;; *) func_append deplibs " $qarg.ltframework" # this is fixed later ;; esac ;; esac prev= continue ;; inst_prefix) inst_prefix_dir="$arg" prev= continue ;; objectlist) if test -f "$arg"; then save_arg=$arg moreargs= for fil in `cat "$save_arg"` do # func_append moreargs " $fil" arg=$fil # A libtool-controlled object. # Check to see that this really is a libtool object. if func_lalib_unsafe_p "$arg"; then pic_object= non_pic_object= # Read the .lo file func_source "$arg" if test -z "$pic_object" || test -z "$non_pic_object" || test "$pic_object" = none && test "$non_pic_object" = none; then func_fatal_error "cannot find name of object for \`$arg'" fi # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir="$func_dirname_result" if test "$pic_object" != none; then # Prepend the subdirectory the object is found in. pic_object="$xdir$pic_object" if test "$prev" = dlfiles; then if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then func_append dlfiles " $pic_object" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi # CHECK ME: I think I busted this. -Ossama if test "$prev" = dlprefiles; then # Preload the old-style object. func_append dlprefiles " $pic_object" prev= fi # A PIC object. func_append libobjs " $pic_object" arg="$pic_object" fi # Non-PIC object. if test "$non_pic_object" != none; then # Prepend the subdirectory the object is found in. non_pic_object="$xdir$non_pic_object" # A standard non-PIC object func_append non_pic_objects " $non_pic_object" if test -z "$pic_object" || test "$pic_object" = none ; then arg="$non_pic_object" fi else # If the PIC object exists, use it instead. # $xdir was prepended to $pic_object above. non_pic_object="$pic_object" func_append non_pic_objects " $non_pic_object" fi else # Only an error if not doing a dry-run. if $opt_dry_run; then # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir="$func_dirname_result" func_lo2o "$arg" pic_object=$xdir$objdir/$func_lo2o_result non_pic_object=$xdir$func_lo2o_result func_append libobjs " $pic_object" func_append non_pic_objects " $non_pic_object" else func_fatal_error "\`$arg' is not a valid libtool object" fi fi done else func_fatal_error "link input file \`$arg' does not exist" fi arg=$save_arg prev= continue ;; precious_regex) precious_files_regex="$arg" prev= continue ;; release) release="-$arg" prev= continue ;; rpath | xrpath) # We need an absolute path. case $arg in [\\/]* | [A-Za-z]:[\\/]*) ;; *) func_fatal_error "only absolute run-paths are allowed" ;; esac if test "$prev" = rpath; then case "$rpath " in *" $arg "*) ;; *) func_append rpath " $arg" ;; esac else case "$xrpath " in *" $arg "*) ;; *) func_append xrpath " $arg" ;; esac fi prev= continue ;; shrext) shrext_cmds="$arg" prev= continue ;; weak) func_append weak_libs " $arg" prev= continue ;; xcclinker) func_append linker_flags " $qarg" func_append compiler_flags " $qarg" prev= func_append compile_command " $qarg" func_append finalize_command " $qarg" continue ;; xcompiler) func_append compiler_flags " $qarg" prev= func_append compile_command " $qarg" func_append finalize_command " $qarg" continue ;; xlinker) func_append linker_flags " $qarg" func_append compiler_flags " $wl$qarg" prev= func_append compile_command " $wl$qarg" func_append finalize_command " $wl$qarg" continue ;; *) eval "$prev=\"\$arg\"" prev= continue ;; esac fi # test -n "$prev" prevarg="$arg" case $arg in -all-static) if test -n "$link_static_flag"; then # See comment for -static flag below, for more details. func_append compile_command " $link_static_flag" func_append finalize_command " $link_static_flag" fi continue ;; -allow-undefined) # FIXME: remove this flag sometime in the future. func_fatal_error "\`-allow-undefined' must not be used because it is the default" ;; -avoid-version) avoid_version=yes continue ;; -bindir) prev=bindir continue ;; -dlopen) prev=dlfiles continue ;; -dlpreopen) prev=dlprefiles continue ;; -export-dynamic) export_dynamic=yes continue ;; -export-symbols | -export-symbols-regex) if test -n "$export_symbols" || test -n "$export_symbols_regex"; then func_fatal_error "more than one -exported-symbols argument is not allowed" fi if test "X$arg" = "X-export-symbols"; then prev=expsyms else prev=expsyms_regex fi continue ;; -framework) prev=framework continue ;; -inst-prefix-dir) prev=inst_prefix continue ;; # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* # so, if we see these flags be careful not to treat them like -L -L[A-Z][A-Z]*:*) case $with_gcc/$host in no/*-*-irix* | /*-*-irix*) func_append compile_command " $arg" func_append finalize_command " $arg" ;; esac continue ;; -L*) func_stripname "-L" '' "$arg" if test -z "$func_stripname_result"; then if test "$#" -gt 0; then func_fatal_error "require no space between \`-L' and \`$1'" else func_fatal_error "need path for \`-L' option" fi fi func_resolve_sysroot "$func_stripname_result" dir=$func_resolve_sysroot_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) absdir=`cd "$dir" && pwd` test -z "$absdir" && \ func_fatal_error "cannot determine absolute directory name of \`$dir'" dir="$absdir" ;; esac case "$deplibs " in *" -L$dir "* | *" $arg "*) # Will only happen for absolute or sysroot arguments ;; *) # Preserve sysroot, but never include relative directories case $dir in [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;; *) func_append deplibs " -L$dir" ;; esac func_append lib_search_path " $dir" ;; esac case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` case :$dllsearchpath: in *":$dir:"*) ;; ::) dllsearchpath=$dir;; *) func_append dllsearchpath ":$dir";; esac case :$dllsearchpath: in *":$testbindir:"*) ;; ::) dllsearchpath=$testbindir;; *) func_append dllsearchpath ":$testbindir";; esac ;; esac continue ;; -l*) if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) # These systems don't actually have a C or math library (as such) continue ;; *-*-os2*) # These systems don't actually have a C library (as such) test "X$arg" = "X-lc" && continue ;; *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) # Do not include libc due to us having libc/libc_r. test "X$arg" = "X-lc" && continue ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C and math libraries are in the System framework func_append deplibs " System.ltframework" continue ;; *-*-sco3.2v5* | *-*-sco5v6*) # Causes problems with __ctype test "X$arg" = "X-lc" && continue ;; *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) # Compiler inserts libc in the correct place for threads to work test "X$arg" = "X-lc" && continue ;; esac elif test "X$arg" = "X-lc_r"; then case $host in *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) # Do not include libc_r directly, use -pthread flag. continue ;; esac fi func_append deplibs " $arg" continue ;; -module) module=yes continue ;; # Tru64 UNIX uses -model [arg] to determine the layout of C++ # classes, name mangling, and exception handling. # Darwin uses the -arch flag to determine output architecture. -model|-arch|-isysroot|--sysroot) func_append compiler_flags " $arg" func_append compile_command " $arg" func_append finalize_command " $arg" prev=xcompiler continue ;; -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) func_append compiler_flags " $arg" func_append compile_command " $arg" func_append finalize_command " $arg" case "$new_inherited_linker_flags " in *" $arg "*) ;; * ) func_append new_inherited_linker_flags " $arg" ;; esac continue ;; -multi_module) single_module="${wl}-multi_module" continue ;; -no-fast-install) fast_install=no continue ;; -no-install) case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) # The PATH hackery in wrapper scripts is required on Windows # and Darwin in order for the loader to find any dlls it needs. func_warning "\`-no-install' is ignored for $host" func_warning "assuming \`-no-fast-install' instead" fast_install=no ;; *) no_install=yes ;; esac continue ;; -no-undefined) allow_undefined=no continue ;; -objectlist) prev=objectlist continue ;; -o) prev=output ;; -precious-files-regex) prev=precious_regex continue ;; -release) prev=release continue ;; -rpath) prev=rpath continue ;; -R) prev=xrpath continue ;; -R*) func_stripname '-R' '' "$arg" dir=$func_stripname_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; =*) func_stripname '=' '' "$dir" dir=$lt_sysroot$func_stripname_result ;; *) func_fatal_error "only absolute run-paths are allowed" ;; esac case "$xrpath " in *" $dir "*) ;; *) func_append xrpath " $dir" ;; esac continue ;; -shared) # The effects of -shared are defined in a previous loop. continue ;; -shrext) prev=shrext continue ;; -static | -static-libtool-libs) # The effects of -static are defined in a previous loop. # We used to do the same as -all-static on platforms that # didn't have a PIC flag, but the assumption that the effects # would be equivalent was wrong. It would break on at least # Digital Unix and AIX. continue ;; -thread-safe) thread_safe=yes continue ;; -version-info) prev=vinfo continue ;; -version-number) prev=vinfo vinfo_number=yes continue ;; -weak) prev=weak continue ;; -Wc,*) func_stripname '-Wc,' '' "$arg" args=$func_stripname_result arg= save_ifs="$IFS"; IFS=',' for flag in $args; do IFS="$save_ifs" func_quote_for_eval "$flag" func_append arg " $func_quote_for_eval_result" func_append compiler_flags " $func_quote_for_eval_result" done IFS="$save_ifs" func_stripname ' ' '' "$arg" arg=$func_stripname_result ;; -Wl,*) func_stripname '-Wl,' '' "$arg" args=$func_stripname_result arg= save_ifs="$IFS"; IFS=',' for flag in $args; do IFS="$save_ifs" func_quote_for_eval "$flag" func_append arg " $wl$func_quote_for_eval_result" func_append compiler_flags " $wl$func_quote_for_eval_result" func_append linker_flags " $func_quote_for_eval_result" done IFS="$save_ifs" func_stripname ' ' '' "$arg" arg=$func_stripname_result ;; -Xcompiler) prev=xcompiler continue ;; -Xlinker) prev=xlinker continue ;; -XCClinker) prev=xcclinker continue ;; # -msg_* for osf cc -msg_*) func_quote_for_eval "$arg" arg="$func_quote_for_eval_result" ;; # Flags to be passed through unchanged, with rationale: # -64, -mips[0-9] enable 64-bit mode for the SGI compiler # -r[0-9][0-9]* specify processor for the SGI compiler # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler # +DA*, +DD* enable 64-bit mode for the HP compiler # -q* compiler args for the IBM compiler # -m*, -t[45]*, -txscale* architecture-specific flags for GCC # -F/path path to uninstalled frameworks, gcc on darwin # -p, -pg, --coverage, -fprofile-* profiling flags for GCC # @file GCC response files # -tp=* Portland pgcc target processor selection # --sysroot=* for sysroot support # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ -O*|-flto*|-fwhopr*|-fuse-linker-plugin) func_quote_for_eval "$arg" arg="$func_quote_for_eval_result" func_append compile_command " $arg" func_append finalize_command " $arg" func_append compiler_flags " $arg" continue ;; # Some other compiler flag. -* | +*) func_quote_for_eval "$arg" arg="$func_quote_for_eval_result" ;; *.$objext) # A standard object. func_append objs " $arg" ;; *.lo) # A libtool-controlled object. # Check to see that this really is a libtool object. if func_lalib_unsafe_p "$arg"; then pic_object= non_pic_object= # Read the .lo file func_source "$arg" if test -z "$pic_object" || test -z "$non_pic_object" || test "$pic_object" = none && test "$non_pic_object" = none; then func_fatal_error "cannot find name of object for \`$arg'" fi # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir="$func_dirname_result" if test "$pic_object" != none; then # Prepend the subdirectory the object is found in. pic_object="$xdir$pic_object" if test "$prev" = dlfiles; then if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then func_append dlfiles " $pic_object" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi # CHECK ME: I think I busted this. -Ossama if test "$prev" = dlprefiles; then # Preload the old-style object. func_append dlprefiles " $pic_object" prev= fi # A PIC object. func_append libobjs " $pic_object" arg="$pic_object" fi # Non-PIC object. if test "$non_pic_object" != none; then # Prepend the subdirectory the object is found in. non_pic_object="$xdir$non_pic_object" # A standard non-PIC object func_append non_pic_objects " $non_pic_object" if test -z "$pic_object" || test "$pic_object" = none ; then arg="$non_pic_object" fi else # If the PIC object exists, use it instead. # $xdir was prepended to $pic_object above. non_pic_object="$pic_object" func_append non_pic_objects " $non_pic_object" fi else # Only an error if not doing a dry-run. if $opt_dry_run; then # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir="$func_dirname_result" func_lo2o "$arg" pic_object=$xdir$objdir/$func_lo2o_result non_pic_object=$xdir$func_lo2o_result func_append libobjs " $pic_object" func_append non_pic_objects " $non_pic_object" else func_fatal_error "\`$arg' is not a valid libtool object" fi fi ;; *.$libext) # An archive. func_append deplibs " $arg" func_append old_deplibs " $arg" continue ;; *.la) # A libtool-controlled library. func_resolve_sysroot "$arg" if test "$prev" = dlfiles; then # This library was specified with -dlopen. func_append dlfiles " $func_resolve_sysroot_result" prev= elif test "$prev" = dlprefiles; then # The library was specified with -dlpreopen. func_append dlprefiles " $func_resolve_sysroot_result" prev= else func_append deplibs " $func_resolve_sysroot_result" fi continue ;; # Some other compiler argument. *) # Unknown arguments in both finalize_command and compile_command need # to be aesthetically quoted because they are evaled later. func_quote_for_eval "$arg" arg="$func_quote_for_eval_result" ;; esac # arg # Now actually substitute the argument into the commands. if test -n "$arg"; then func_append compile_command " $arg" func_append finalize_command " $arg" fi done # argument parsing loop test -n "$prev" && \ func_fatal_help "the \`$prevarg' option requires an argument" if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then eval arg=\"$export_dynamic_flag_spec\" func_append compile_command " $arg" func_append finalize_command " $arg" fi oldlibs= # calculate the name of the file, without its directory func_basename "$output" outputname="$func_basename_result" libobjs_save="$libobjs" if test -n "$shlibpath_var"; then # get the directories listed in $shlibpath_var eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\` else shlib_search_path= fi eval sys_lib_search_path=\"$sys_lib_search_path_spec\" eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" func_dirname "$output" "/" "" output_objdir="$func_dirname_result$objdir" func_to_tool_file "$output_objdir/" tool_output_objdir=$func_to_tool_file_result # Create the object directory. func_mkdir_p "$output_objdir" # Determine the type of output case $output in "") func_fatal_help "you must specify an output file" ;; *.$libext) linkmode=oldlib ;; *.lo | *.$objext) linkmode=obj ;; *.la) linkmode=lib ;; *) linkmode=prog ;; # Anything else should be a program. esac specialdeplibs= libs= # Find all interdependent deplibs by searching for libraries # that are linked more than once (e.g. -la -lb -la) for deplib in $deplibs; do if $opt_preserve_dup_deps ; then case "$libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi func_append libs " $deplib" done if test "$linkmode" = lib; then libs="$predeps $libs $compiler_lib_search_path $postdeps" # Compute libraries that are listed more than once in $predeps # $postdeps and mark them as special (i.e., whose duplicates are # not to be eliminated). pre_post_deps= if $opt_duplicate_compiler_generated_deps; then for pre_post_dep in $predeps $postdeps; do case "$pre_post_deps " in *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;; esac func_append pre_post_deps " $pre_post_dep" done fi pre_post_deps= fi deplibs= newdependency_libs= newlib_search_path= need_relink=no # whether we're linking any uninstalled libtool libraries notinst_deplibs= # not-installed libtool libraries notinst_path= # paths that contain not-installed libtool libraries case $linkmode in lib) passes="conv dlpreopen link" for file in $dlfiles $dlprefiles; do case $file in *.la) ;; *) func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file" ;; esac done ;; prog) compile_deplibs= finalize_deplibs= alldeplibs=no newdlfiles= newdlprefiles= passes="conv scan dlopen dlpreopen link" ;; *) passes="conv" ;; esac for pass in $passes; do # The preopen pass in lib mode reverses $deplibs; put it back here # so that -L comes before libs that need it for instance... if test "$linkmode,$pass" = "lib,link"; then ## FIXME: Find the place where the list is rebuilt in the wrong ## order, and fix it there properly tmp_deplibs= for deplib in $deplibs; do tmp_deplibs="$deplib $tmp_deplibs" done deplibs="$tmp_deplibs" fi if test "$linkmode,$pass" = "lib,link" || test "$linkmode,$pass" = "prog,scan"; then libs="$deplibs" deplibs= fi if test "$linkmode" = prog; then case $pass in dlopen) libs="$dlfiles" ;; dlpreopen) libs="$dlprefiles" ;; link) libs="$deplibs %DEPLIBS%" test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs" ;; esac fi if test "$linkmode,$pass" = "lib,dlpreopen"; then # Collect and forward deplibs of preopened libtool libs for lib in $dlprefiles; do # Ignore non-libtool-libs dependency_libs= func_resolve_sysroot "$lib" case $lib in *.la) func_source "$func_resolve_sysroot_result" ;; esac # Collect preopened libtool deplibs, except any this library # has declared as weak libs for deplib in $dependency_libs; do func_basename "$deplib" deplib_base=$func_basename_result case " $weak_libs " in *" $deplib_base "*) ;; *) func_append deplibs " $deplib" ;; esac done done libs="$dlprefiles" fi if test "$pass" = dlopen; then # Collect dlpreopened libraries save_deplibs="$deplibs" deplibs= fi for deplib in $libs; do lib= found=no case $deplib in -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else func_append compiler_flags " $deplib" if test "$linkmode" = lib ; then case "$new_inherited_linker_flags " in *" $deplib "*) ;; * ) func_append new_inherited_linker_flags " $deplib" ;; esac fi fi continue ;; -l*) if test "$linkmode" != lib && test "$linkmode" != prog; then func_warning "\`-l' is ignored for archives/objects" continue fi func_stripname '-l' '' "$deplib" name=$func_stripname_result if test "$linkmode" = lib; then searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" else searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" fi for searchdir in $searchdirs; do for search_ext in .la $std_shrext .so .a; do # Search the libtool library lib="$searchdir/lib${name}${search_ext}" if test -f "$lib"; then if test "$search_ext" = ".la"; then found=yes else found=no fi break 2 fi done done if test "$found" != yes; then # deplib doesn't seem to be a libtool library if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" fi continue else # deplib is a libtool library # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, # We need to do some special things here, and not later. if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then case " $predeps $postdeps " in *" $deplib "*) if func_lalib_p "$lib"; then library_names= old_library= func_source "$lib" for l in $old_library $library_names; do ll="$l" done if test "X$ll" = "X$old_library" ; then # only static version available found=no func_dirname "$lib" "" "." ladir="$func_dirname_result" lib=$ladir/$old_library if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" fi continue fi fi ;; *) ;; esac fi fi ;; # -l *.ltframework) if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" if test "$linkmode" = lib ; then case "$new_inherited_linker_flags " in *" $deplib "*) ;; * ) func_append new_inherited_linker_flags " $deplib" ;; esac fi fi continue ;; -L*) case $linkmode in lib) deplibs="$deplib $deplibs" test "$pass" = conv && continue newdependency_libs="$deplib $newdependency_libs" func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result" func_append newlib_search_path " $func_resolve_sysroot_result" ;; prog) if test "$pass" = conv; then deplibs="$deplib $deplibs" continue fi if test "$pass" = scan; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result" func_append newlib_search_path " $func_resolve_sysroot_result" ;; *) func_warning "\`-L' is ignored for archives/objects" ;; esac # linkmode continue ;; # -L -R*) if test "$pass" = link; then func_stripname '-R' '' "$deplib" func_resolve_sysroot "$func_stripname_result" dir=$func_resolve_sysroot_result # Make sure the xrpath contains only unique directories. case "$xrpath " in *" $dir "*) ;; *) func_append xrpath " $dir" ;; esac fi deplibs="$deplib $deplibs" continue ;; *.la) func_resolve_sysroot "$deplib" lib=$func_resolve_sysroot_result ;; *.$libext) if test "$pass" = conv; then deplibs="$deplib $deplibs" continue fi case $linkmode in lib) # Linking convenience modules into shared libraries is allowed, # but linking other static libraries is non-portable. case " $dlpreconveniencelibs " in *" $deplib "*) ;; *) valid_a_lib=no case $deplibs_check_method in match_pattern*) set dummy $deplibs_check_method; shift match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ | $EGREP "$match_pattern_regex" > /dev/null; then valid_a_lib=yes fi ;; pass_all) valid_a_lib=yes ;; esac if test "$valid_a_lib" != yes; then echo $ECHO "*** Warning: Trying to link with static lib archive $deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because the file extensions .$libext of this argument makes me believe" echo "*** that it is just a static archive that I should not use here." else echo $ECHO "*** Warning: Linking the shared library $output against the" $ECHO "*** static library $deplib is not portable!" deplibs="$deplib $deplibs" fi ;; esac continue ;; prog) if test "$pass" != link; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi continue ;; esac # linkmode ;; # *.$libext *.lo | *.$objext) if test "$pass" = conv; then deplibs="$deplib $deplibs" elif test "$linkmode" = prog; then if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then # If there is no dlopen support or we're linking statically, # we need to preload. func_append newdlprefiles " $deplib" compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else func_append newdlfiles " $deplib" fi fi continue ;; %DEPLIBS%) alldeplibs=yes continue ;; esac # case $deplib if test "$found" = yes || test -f "$lib"; then : else func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'" fi # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$lib" \ || func_fatal_error "\`$lib' is not a valid libtool archive" func_dirname "$lib" "" "." ladir="$func_dirname_result" dlname= dlopen= dlpreopen= libdir= library_names= old_library= inherited_linker_flags= # If the library was installed with an old release of libtool, # it will not redefine variables installed, or shouldnotlink installed=yes shouldnotlink=no avoidtemprpath= # Read the .la file func_source "$lib" # Convert "-framework foo" to "foo.ltframework" if test -n "$inherited_linker_flags"; then tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'` for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do case " $new_inherited_linker_flags " in *" $tmp_inherited_linker_flag "*) ;; *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";; esac done fi dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` if test "$linkmode,$pass" = "lib,link" || test "$linkmode,$pass" = "prog,scan" || { test "$linkmode" != prog && test "$linkmode" != lib; }; then test -n "$dlopen" && func_append dlfiles " $dlopen" test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen" fi if test "$pass" = conv; then # Only check for convenience libraries deplibs="$lib $deplibs" if test -z "$libdir"; then if test -z "$old_library"; then func_fatal_error "cannot find name of link library for \`$lib'" fi # It is a libtool convenience library, so add in its objects. func_append convenience " $ladir/$objdir/$old_library" func_append old_convenience " $ladir/$objdir/$old_library" tmp_libs= for deplib in $dependency_libs; do deplibs="$deplib $deplibs" if $opt_preserve_dup_deps ; then case "$tmp_libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi func_append tmp_libs " $deplib" done elif test "$linkmode" != prog && test "$linkmode" != lib; then func_fatal_error "\`$lib' is not a convenience library" fi continue fi # $pass = conv # Get the name of the library we link against. linklib= if test -n "$old_library" && { test "$prefer_static_libs" = yes || test "$prefer_static_libs,$installed" = "built,no"; }; then linklib=$old_library else for l in $old_library $library_names; do linklib="$l" done fi if test -z "$linklib"; then func_fatal_error "cannot find name of link library for \`$lib'" fi # This library was specified with -dlopen. if test "$pass" = dlopen; then if test -z "$libdir"; then func_fatal_error "cannot -dlopen a convenience library: \`$lib'" fi if test -z "$dlname" || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then # If there is no dlname, no dlopen support or we're linking # statically, we need to preload. We also need to preload any # dependent libraries so libltdl's deplib preloader doesn't # bomb out in the load deplibs phase. func_append dlprefiles " $lib $dependency_libs" else func_append newdlfiles " $lib" fi continue fi # $pass = dlopen # We need an absolute path. case $ladir in [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; *) abs_ladir=`cd "$ladir" && pwd` if test -z "$abs_ladir"; then func_warning "cannot determine absolute directory name of \`$ladir'" func_warning "passing it literally to the linker, although it might fail" abs_ladir="$ladir" fi ;; esac func_basename "$lib" laname="$func_basename_result" # Find the relevant object directory and library name. if test "X$installed" = Xyes; then if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then func_warning "library \`$lib' was moved." dir="$ladir" absdir="$abs_ladir" libdir="$abs_ladir" else dir="$lt_sysroot$libdir" absdir="$lt_sysroot$libdir" fi test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes else if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then dir="$ladir" absdir="$abs_ladir" # Remove this search path later func_append notinst_path " $abs_ladir" else dir="$ladir/$objdir" absdir="$abs_ladir/$objdir" # Remove this search path later func_append notinst_path " $abs_ladir" fi fi # $installed = yes func_stripname 'lib' '.la' "$laname" name=$func_stripname_result # This library was specified with -dlpreopen. if test "$pass" = dlpreopen; then if test -z "$libdir" && test "$linkmode" = prog; then func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'" fi case "$host" in # special handling for platforms with PE-DLLs. *cygwin* | *mingw* | *cegcc* ) # Linker will automatically link against shared library if both # static and shared are present. Therefore, ensure we extract # symbols from the import library if a shared library is present # (otherwise, the dlopen module name will be incorrect). We do # this by putting the import library name into $newdlprefiles. # We recover the dlopen module name by 'saving' the la file # name in a special purpose variable, and (later) extracting the # dlname from the la file. if test -n "$dlname"; then func_tr_sh "$dir/$linklib" eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname" func_append newdlprefiles " $dir/$linklib" else func_append newdlprefiles " $dir/$old_library" # Keep a list of preopened convenience libraries to check # that they are being used correctly in the link pass. test -z "$libdir" && \ func_append dlpreconveniencelibs " $dir/$old_library" fi ;; * ) # Prefer using a static library (so that no silly _DYNAMIC symbols # are required to link). if test -n "$old_library"; then func_append newdlprefiles " $dir/$old_library" # Keep a list of preopened convenience libraries to check # that they are being used correctly in the link pass. test -z "$libdir" && \ func_append dlpreconveniencelibs " $dir/$old_library" # Otherwise, use the dlname, so that lt_dlopen finds it. elif test -n "$dlname"; then func_append newdlprefiles " $dir/$dlname" else func_append newdlprefiles " $dir/$linklib" fi ;; esac fi # $pass = dlpreopen if test -z "$libdir"; then # Link the convenience library if test "$linkmode" = lib; then deplibs="$dir/$old_library $deplibs" elif test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$dir/$old_library $compile_deplibs" finalize_deplibs="$dir/$old_library $finalize_deplibs" else deplibs="$lib $deplibs" # used for prog,scan pass fi continue fi if test "$linkmode" = prog && test "$pass" != link; then func_append newlib_search_path " $ladir" deplibs="$lib $deplibs" linkalldeplibs=no if test "$link_all_deplibs" != no || test -z "$library_names" || test "$build_libtool_libs" = no; then linkalldeplibs=yes fi tmp_libs= for deplib in $dependency_libs; do case $deplib in -L*) func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result" func_append newlib_search_path " $func_resolve_sysroot_result" ;; esac # Need to link against all dependency_libs? if test "$linkalldeplibs" = yes; then deplibs="$deplib $deplibs" else # Need to hardcode shared library paths # or/and link against static libraries newdependency_libs="$deplib $newdependency_libs" fi if $opt_preserve_dup_deps ; then case "$tmp_libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi func_append tmp_libs " $deplib" done # for deplib continue fi # $linkmode = prog... if test "$linkmode,$pass" = "prog,link"; then if test -n "$library_names" && { { test "$prefer_static_libs" = no || test "$prefer_static_libs,$installed" = "built,yes"; } || test -z "$old_library"; }; then # We need to hardcode the library path if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then # Make sure the rpath contains only unique directories. case "$temp_rpath:" in *"$absdir:"*) ;; *) func_append temp_rpath "$absdir:" ;; esac fi # Hardcode the library path. # Skip directories that are in the system default run-time # search path. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) func_append compile_rpath " $absdir" ;; esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac ;; esac fi # $linkmode,$pass = prog,link... if test "$alldeplibs" = yes && { test "$deplibs_check_method" = pass_all || { test "$build_libtool_libs" = yes && test -n "$library_names"; }; }; then # We only need to search for static libraries continue fi fi link_static=no # Whether the deplib will be linked statically use_static_libs=$prefer_static_libs if test "$use_static_libs" = built && test "$installed" = yes; then use_static_libs=no fi if test -n "$library_names" && { test "$use_static_libs" = no || test -z "$old_library"; }; then case $host in *cygwin* | *mingw* | *cegcc*) # No point in relinking DLLs because paths are not encoded func_append notinst_deplibs " $lib" need_relink=no ;; *) if test "$installed" = no; then func_append notinst_deplibs " $lib" need_relink=yes fi ;; esac # This is a shared library # Warn about portability, can't link against -module's on some # systems (darwin). Don't bleat about dlopened modules though! dlopenmodule="" for dlpremoduletest in $dlprefiles; do if test "X$dlpremoduletest" = "X$lib"; then dlopenmodule="$dlpremoduletest" break fi done if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then echo if test "$linkmode" = prog; then $ECHO "*** Warning: Linking the executable $output against the loadable module" else $ECHO "*** Warning: Linking the shared library $output against the loadable module" fi $ECHO "*** $linklib is not portable!" fi if test "$linkmode" = lib && test "$hardcode_into_libs" = yes; then # Hardcode the library path. # Skip directories that are in the system default run-time # search path. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) func_append compile_rpath " $absdir" ;; esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac ;; esac fi if test -n "$old_archive_from_expsyms_cmds"; then # figure out the soname set dummy $library_names shift realname="$1" shift libname=`eval "\\$ECHO \"$libname_spec\""` # use dlname if we got it. it's perfectly good, no? if test -n "$dlname"; then soname="$dlname" elif test -n "$soname_spec"; then # bleh windows case $host in *cygwin* | mingw* | *cegcc*) func_arith $current - $age major=$func_arith_result versuffix="-$major" ;; esac eval soname=\"$soname_spec\" else soname="$realname" fi # Make a new name for the extract_expsyms_cmds to use soroot="$soname" func_basename "$soroot" soname="$func_basename_result" func_stripname 'lib' '.dll' "$soname" newlib=libimp-$func_stripname_result.a # If the library has no export list, then create one now if test -f "$output_objdir/$soname-def"; then : else func_verbose "extracting exported symbol list from \`$soname'" func_execute_cmds "$extract_expsyms_cmds" 'exit $?' fi # Create $newlib if test -f "$output_objdir/$newlib"; then :; else func_verbose "generating import library for \`$soname'" func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' fi # make sure the library variables are pointing to the new library dir=$output_objdir linklib=$newlib fi # test -n "$old_archive_from_expsyms_cmds" if test "$linkmode" = prog || test "$opt_mode" != relink; then add_shlibpath= add_dir= add= lib_linked=yes case $hardcode_action in immediate | unsupported) if test "$hardcode_direct" = no; then add="$dir/$linklib" case $host in *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; *-*-sysv4*uw2*) add_dir="-L$dir" ;; *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ *-*-unixware7*) add_dir="-L$dir" ;; *-*-darwin* ) # if the lib is a (non-dlopened) module then we can not # link against it, someone is ignoring the earlier warnings if /usr/bin/file -L $add 2> /dev/null | $GREP ": [^:]* bundle" >/dev/null ; then if test "X$dlopenmodule" != "X$lib"; then $ECHO "*** Warning: lib $linklib is a module, not a shared library" if test -z "$old_library" ; then echo echo "*** And there doesn't seem to be a static archive available" echo "*** The link will probably fail, sorry" else add="$dir/$old_library" fi elif test -n "$old_library"; then add="$dir/$old_library" fi fi esac elif test "$hardcode_minus_L" = no; then case $host in *-*-sunos*) add_shlibpath="$dir" ;; esac add_dir="-L$dir" add="-l$name" elif test "$hardcode_shlibpath_var" = no; then add_shlibpath="$dir" add="-l$name" else lib_linked=no fi ;; relink) if test "$hardcode_direct" = yes && test "$hardcode_direct_absolute" = no; then add="$dir/$linklib" elif test "$hardcode_minus_L" = yes; then add_dir="-L$absdir" # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case $libdir in [\\/]*) func_append add_dir " -L$inst_prefix_dir$libdir" ;; esac fi add="-l$name" elif test "$hardcode_shlibpath_var" = yes; then add_shlibpath="$dir" add="-l$name" else lib_linked=no fi ;; *) lib_linked=no ;; esac if test "$lib_linked" != yes; then func_fatal_configuration "unsupported hardcode properties" fi if test -n "$add_shlibpath"; then case :$compile_shlibpath: in *":$add_shlibpath:"*) ;; *) func_append compile_shlibpath "$add_shlibpath:" ;; esac fi if test "$linkmode" = prog; then test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" test -n "$add" && compile_deplibs="$add $compile_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" if test "$hardcode_direct" != yes && test "$hardcode_minus_L" != yes && test "$hardcode_shlibpath_var" = yes; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) func_append finalize_shlibpath "$libdir:" ;; esac fi fi fi if test "$linkmode" = prog || test "$opt_mode" = relink; then add_shlibpath= add_dir= add= # Finalize command for both is simple: just hardcode it. if test "$hardcode_direct" = yes && test "$hardcode_direct_absolute" = no; then add="$libdir/$linklib" elif test "$hardcode_minus_L" = yes; then add_dir="-L$libdir" add="-l$name" elif test "$hardcode_shlibpath_var" = yes; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) func_append finalize_shlibpath "$libdir:" ;; esac add="-l$name" elif test "$hardcode_automatic" = yes; then if test -n "$inst_prefix_dir" && test -f "$inst_prefix_dir$libdir/$linklib" ; then add="$inst_prefix_dir$libdir/$linklib" else add="$libdir/$linklib" fi else # We cannot seem to hardcode it, guess we'll fake it. add_dir="-L$libdir" # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case $libdir in [\\/]*) func_append add_dir " -L$inst_prefix_dir$libdir" ;; esac fi add="-l$name" fi if test "$linkmode" = prog; then test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" test -n "$add" && finalize_deplibs="$add $finalize_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" fi fi elif test "$linkmode" = prog; then # Here we assume that one of hardcode_direct or hardcode_minus_L # is not unsupported. This is valid on all known static and # shared platforms. if test "$hardcode_direct" != unsupported; then test -n "$old_library" && linklib="$old_library" compile_deplibs="$dir/$linklib $compile_deplibs" finalize_deplibs="$dir/$linklib $finalize_deplibs" else compile_deplibs="-l$name -L$dir $compile_deplibs" finalize_deplibs="-l$name -L$dir $finalize_deplibs" fi elif test "$build_libtool_libs" = yes; then # Not a shared library if test "$deplibs_check_method" != pass_all; then # We're trying link a shared library against a static one # but the system doesn't support it. # Just print a warning and add the library to dependency_libs so # that the program can be linked against the static library. echo $ECHO "*** Warning: This system can not link to static lib archive $lib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have." if test "$module" = yes; then echo "*** But as you try to build a module library, libtool will still create " echo "*** a static module, that should work as long as the dlopening application" echo "*** is linked with the -dlopen flag to resolve symbols at runtime." if test -z "$global_symbol_pipe"; then echo echo "*** However, this would only work if libtool was able to extract symbol" echo "*** lists from a program, using \`nm' or equivalent, but libtool could" echo "*** not find such a program. So, this module is probably useless." echo "*** \`nm' from GNU binutils and a full rebuild may help." fi if test "$build_old_libs" = no; then build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi else deplibs="$dir/$old_library $deplibs" link_static=yes fi fi # link shared/static library? if test "$linkmode" = lib; then if test -n "$dependency_libs" && { test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes || test "$link_static" = yes; }; then # Extract -R from dependency_libs temp_deplibs= for libdir in $dependency_libs; do case $libdir in -R*) func_stripname '-R' '' "$libdir" temp_xrpath=$func_stripname_result case " $xrpath " in *" $temp_xrpath "*) ;; *) func_append xrpath " $temp_xrpath";; esac;; *) func_append temp_deplibs " $libdir";; esac done dependency_libs="$temp_deplibs" fi func_append newlib_search_path " $absdir" # Link against this library test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" # ... and its dependency_libs tmp_libs= for deplib in $dependency_libs; do newdependency_libs="$deplib $newdependency_libs" case $deplib in -L*) func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result";; *) func_resolve_sysroot "$deplib" ;; esac if $opt_preserve_dup_deps ; then case "$tmp_libs " in *" $func_resolve_sysroot_result "*) func_append specialdeplibs " $func_resolve_sysroot_result" ;; esac fi func_append tmp_libs " $func_resolve_sysroot_result" done if test "$link_all_deplibs" != no; then # Add the search paths of all dependency libraries for deplib in $dependency_libs; do path= case $deplib in -L*) path="$deplib" ;; *.la) func_resolve_sysroot "$deplib" deplib=$func_resolve_sysroot_result func_dirname "$deplib" "" "." dir=$func_dirname_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; *) absdir=`cd "$dir" && pwd` if test -z "$absdir"; then func_warning "cannot determine absolute directory name of \`$dir'" absdir="$dir" fi ;; esac if $GREP "^installed=no" $deplib > /dev/null; then case $host in *-*-darwin*) depdepl= eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` if test -n "$deplibrary_names" ; then for tmp in $deplibrary_names ; do depdepl=$tmp done if test -f "$absdir/$objdir/$depdepl" ; then depdepl="$absdir/$objdir/$depdepl" darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` if test -z "$darwin_install_name"; then darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` fi func_append compiler_flags " ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}" func_append linker_flags " -dylib_file ${darwin_install_name}:${depdepl}" path= fi fi ;; *) path="-L$absdir/$objdir" ;; esac else eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` test -z "$libdir" && \ func_fatal_error "\`$deplib' is not a valid libtool archive" test "$absdir" != "$libdir" && \ func_warning "\`$deplib' seems to be moved" path="-L$absdir" fi ;; esac case " $deplibs " in *" $path "*) ;; *) deplibs="$path $deplibs" ;; esac done fi # link_all_deplibs != no fi # linkmode = lib done # for deplib in $libs if test "$pass" = link; then if test "$linkmode" = "prog"; then compile_deplibs="$new_inherited_linker_flags $compile_deplibs" finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" else compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` fi fi dependency_libs="$newdependency_libs" if test "$pass" = dlpreopen; then # Link the dlpreopened libraries before other libraries for deplib in $save_deplibs; do deplibs="$deplib $deplibs" done fi if test "$pass" != dlopen; then if test "$pass" != conv; then # Make sure lib_search_path contains only unique directories. lib_search_path= for dir in $newlib_search_path; do case "$lib_search_path " in *" $dir "*) ;; *) func_append lib_search_path " $dir" ;; esac done newlib_search_path= fi if test "$linkmode,$pass" != "prog,link"; then vars="deplibs" else vars="compile_deplibs finalize_deplibs" fi for var in $vars dependency_libs; do # Add libraries to $var in reverse order eval tmp_libs=\"\$$var\" new_libs= for deplib in $tmp_libs; do # FIXME: Pedantically, this is the right thing to do, so # that some nasty dependency loop isn't accidentally # broken: #new_libs="$deplib $new_libs" # Pragmatically, this seems to cause very few problems in # practice: case $deplib in -L*) new_libs="$deplib $new_libs" ;; -R*) ;; *) # And here is the reason: when a library appears more # than once as an explicit dependence of a library, or # is implicitly linked in more than once by the # compiler, it is considered special, and multiple # occurrences thereof are not removed. Compare this # with having the same library being listed as a # dependency of multiple other libraries: in this case, # we know (pedantically, we assume) the library does not # need to be listed more than once, so we keep only the # last copy. This is not always right, but it is rare # enough that we require users that really mean to play # such unportable linking tricks to link the library # using -Wl,-lname, so that libtool does not consider it # for duplicate removal. case " $specialdeplibs " in *" $deplib "*) new_libs="$deplib $new_libs" ;; *) case " $new_libs " in *" $deplib "*) ;; *) new_libs="$deplib $new_libs" ;; esac ;; esac ;; esac done tmp_libs= for deplib in $new_libs; do case $deplib in -L*) case " $tmp_libs " in *" $deplib "*) ;; *) func_append tmp_libs " $deplib" ;; esac ;; *) func_append tmp_libs " $deplib" ;; esac done eval $var=\"$tmp_libs\" done # for var fi # Last step: remove runtime libs from dependency_libs # (they stay in deplibs) tmp_libs= for i in $dependency_libs ; do case " $predeps $postdeps $compiler_lib_search_path " in *" $i "*) i="" ;; esac if test -n "$i" ; then func_append tmp_libs " $i" fi done dependency_libs=$tmp_libs done # for pass if test "$linkmode" = prog; then dlfiles="$newdlfiles" fi if test "$linkmode" = prog || test "$linkmode" = lib; then dlprefiles="$newdlprefiles" fi case $linkmode in oldlib) if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then func_warning "\`-dlopen' is ignored for archives" fi case " $deplibs" in *\ -l* | *\ -L*) func_warning "\`-l' and \`-L' are ignored for archives" ;; esac test -n "$rpath" && \ func_warning "\`-rpath' is ignored for archives" test -n "$xrpath" && \ func_warning "\`-R' is ignored for archives" test -n "$vinfo" && \ func_warning "\`-version-info/-version-number' is ignored for archives" test -n "$release" && \ func_warning "\`-release' is ignored for archives" test -n "$export_symbols$export_symbols_regex" && \ func_warning "\`-export-symbols' is ignored for archives" # Now set the variables for building old libraries. build_libtool_libs=no oldlibs="$output" func_append objs "$old_deplibs" ;; lib) # Make sure we only generate libraries of the form `libNAME.la'. case $outputname in lib*) func_stripname 'lib' '.la' "$outputname" name=$func_stripname_result eval shared_ext=\"$shrext_cmds\" eval libname=\"$libname_spec\" ;; *) test "$module" = no && \ func_fatal_help "libtool library \`$output' must begin with \`lib'" if test "$need_lib_prefix" != no; then # Add the "lib" prefix for modules if required func_stripname '' '.la' "$outputname" name=$func_stripname_result eval shared_ext=\"$shrext_cmds\" eval libname=\"$libname_spec\" else func_stripname '' '.la' "$outputname" libname=$func_stripname_result fi ;; esac if test -n "$objs"; then if test "$deplibs_check_method" != pass_all; then func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs" else echo $ECHO "*** Warning: Linking the shared library $output against the non-libtool" $ECHO "*** objects $objs is not portable!" func_append libobjs " $objs" fi fi test "$dlself" != no && \ func_warning "\`-dlopen self' is ignored for libtool libraries" set dummy $rpath shift test "$#" -gt 1 && \ func_warning "ignoring multiple \`-rpath's for a libtool library" install_libdir="$1" oldlibs= if test -z "$rpath"; then if test "$build_libtool_libs" = yes; then # Building a libtool convenience library. # Some compilers have problems with a `.al' extension so # convenience libraries should have the same extension an # archive normally would. oldlibs="$output_objdir/$libname.$libext $oldlibs" build_libtool_libs=convenience build_old_libs=yes fi test -n "$vinfo" && \ func_warning "\`-version-info/-version-number' is ignored for convenience libraries" test -n "$release" && \ func_warning "\`-release' is ignored for convenience libraries" else # Parse the version information argument. save_ifs="$IFS"; IFS=':' set dummy $vinfo 0 0 0 shift IFS="$save_ifs" test -n "$7" && \ func_fatal_help "too many parameters to \`-version-info'" # convert absolute version numbers to libtool ages # this retains compatibility with .la files and attempts # to make the code below a bit more comprehensible case $vinfo_number in yes) number_major="$1" number_minor="$2" number_revision="$3" # # There are really only two kinds -- those that # use the current revision as the major version # and those that subtract age and use age as # a minor version. But, then there is irix # which has an extra 1 added just for fun # case $version_type in # correct linux to gnu/linux during the next big refactor darwin|linux|osf|windows|none) func_arith $number_major + $number_minor current=$func_arith_result age="$number_minor" revision="$number_revision" ;; freebsd-aout|freebsd-elf|qnx|sunos) current="$number_major" revision="$number_minor" age="0" ;; irix|nonstopux) func_arith $number_major + $number_minor current=$func_arith_result age="$number_minor" revision="$number_minor" lt_irix_increment=no ;; *) func_fatal_configuration "$modename: unknown library version type \`$version_type'" ;; esac ;; no) current="$1" revision="$2" age="$3" ;; esac # Check that each of the things are valid numbers. case $current in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "CURRENT \`$current' must be a nonnegative integer" func_fatal_error "\`$vinfo' is not valid version information" ;; esac case $revision in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "REVISION \`$revision' must be a nonnegative integer" func_fatal_error "\`$vinfo' is not valid version information" ;; esac case $age in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "AGE \`$age' must be a nonnegative integer" func_fatal_error "\`$vinfo' is not valid version information" ;; esac if test "$age" -gt "$current"; then func_error "AGE \`$age' is greater than the current interface number \`$current'" func_fatal_error "\`$vinfo' is not valid version information" fi # Calculate the version variables. major= versuffix= verstring= case $version_type in none) ;; darwin) # Like Linux, but with the current version available in # verstring for coding it into the library header func_arith $current - $age major=.$func_arith_result versuffix="$major.$age.$revision" # Darwin ld doesn't like 0 for these options... func_arith $current + 1 minor_current=$func_arith_result xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" ;; freebsd-aout) major=".$current" versuffix=".$current.$revision"; ;; freebsd-elf) major=".$current" versuffix=".$current" ;; irix | nonstopux) if test "X$lt_irix_increment" = "Xno"; then func_arith $current - $age else func_arith $current - $age + 1 fi major=$func_arith_result case $version_type in nonstopux) verstring_prefix=nonstopux ;; *) verstring_prefix=sgi ;; esac verstring="$verstring_prefix$major.$revision" # Add in all the interfaces that we are compatible with. loop=$revision while test "$loop" -ne 0; do func_arith $revision - $loop iface=$func_arith_result func_arith $loop - 1 loop=$func_arith_result verstring="$verstring_prefix$major.$iface:$verstring" done # Before this point, $major must not contain `.'. major=.$major versuffix="$major.$revision" ;; linux) # correct to gnu/linux during the next big refactor func_arith $current - $age major=.$func_arith_result versuffix="$major.$age.$revision" ;; osf) func_arith $current - $age major=.$func_arith_result versuffix=".$current.$age.$revision" verstring="$current.$age.$revision" # Add in all the interfaces that we are compatible with. loop=$age while test "$loop" -ne 0; do func_arith $current - $loop iface=$func_arith_result func_arith $loop - 1 loop=$func_arith_result verstring="$verstring:${iface}.0" done # Make executables depend on our current version. func_append verstring ":${current}.0" ;; qnx) major=".$current" versuffix=".$current" ;; sunos) major=".$current" versuffix=".$current.$revision" ;; windows) # Use '-' rather than '.', since we only want one # extension on DOS 8.3 filesystems. func_arith $current - $age major=$func_arith_result versuffix="-$major" ;; *) func_fatal_configuration "unknown library version type \`$version_type'" ;; esac # Clear the version info if we defaulted, and they specified a release. if test -z "$vinfo" && test -n "$release"; then major= case $version_type in darwin) # we can't check for "0.0" in archive_cmds due to quoting # problems, so we reset it completely verstring= ;; *) verstring="0.0" ;; esac if test "$need_version" = no; then versuffix= else versuffix=".0.0" fi fi # Remove version info from name if versioning should be avoided if test "$avoid_version" = yes && test "$need_version" = no; then major= versuffix= verstring="" fi # Check to see if the archive will have undefined symbols. if test "$allow_undefined" = yes; then if test "$allow_undefined_flag" = unsupported; then func_warning "undefined symbols not allowed in $host shared libraries" build_libtool_libs=no build_old_libs=yes fi else # Don't allow undefined symbols. allow_undefined_flag="$no_undefined_flag" fi fi func_generate_dlsyms "$libname" "$libname" "yes" func_append libobjs " $symfileobj" test "X$libobjs" = "X " && libobjs= if test "$opt_mode" != relink; then # Remove our outputs, but don't remove object files since they # may have been created when compiling PIC objects. removelist= tempremovelist=`$ECHO "$output_objdir/*"` for p in $tempremovelist; do case $p in *.$objext | *.gcno) ;; $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) if test "X$precious_files_regex" != "X"; then if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 then continue fi fi func_append removelist " $p" ;; *) ;; esac done test -n "$removelist" && \ func_show_eval "${RM}r \$removelist" fi # Now set the variables for building old libraries. if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then func_append oldlibs " $output_objdir/$libname.$libext" # Transform .lo files to .o files. oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP` fi # Eliminate all temporary directories. #for path in $notinst_path; do # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"` # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"` # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"` #done if test -n "$xrpath"; then # If the user specified any rpath flags, then add them. temp_xrpath= for libdir in $xrpath; do func_replace_sysroot "$libdir" func_append temp_xrpath " -R$func_replace_sysroot_result" case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac done if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then dependency_libs="$temp_xrpath $dependency_libs" fi fi # Make sure dlfiles contains only unique files that won't be dlpreopened old_dlfiles="$dlfiles" dlfiles= for lib in $old_dlfiles; do case " $dlprefiles $dlfiles " in *" $lib "*) ;; *) func_append dlfiles " $lib" ;; esac done # Make sure dlprefiles contains only unique files old_dlprefiles="$dlprefiles" dlprefiles= for lib in $old_dlprefiles; do case "$dlprefiles " in *" $lib "*) ;; *) func_append dlprefiles " $lib" ;; esac done if test "$build_libtool_libs" = yes; then if test -n "$rpath"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) # these systems don't actually have a c library (as such)! ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C library is in the System framework func_append deplibs " System.ltframework" ;; *-*-netbsd*) # Don't link with libc until the a.out ld.so is fixed. ;; *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) # Do not include libc due to us having libc/libc_r. ;; *-*-sco3.2v5* | *-*-sco5v6*) # Causes problems with __ctype ;; *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) # Compiler inserts libc in the correct place for threads to work ;; *) # Add libc to deplibs on all other systems if necessary. if test "$build_libtool_need_lc" = "yes"; then func_append deplibs " -lc" fi ;; esac fi # Transform deplibs into only deplibs that can be linked in shared. name_save=$name libname_save=$libname release_save=$release versuffix_save=$versuffix major_save=$major # I'm not sure if I'm treating the release correctly. I think # release should show up in the -l (ie -lgmp5) so we don't want to # add it in twice. Is that correct? release="" versuffix="" major="" newdeplibs= droppeddeps=no case $deplibs_check_method in pass_all) # Don't check for shared/static. Everything works. # This might be a little naive. We might want to check # whether the library exists or not. But this is on # osf3 & osf4 and I'm not really sure... Just # implementing what was already the behavior. newdeplibs=$deplibs ;; test_compile) # This code stresses the "libraries are programs" paradigm to its # limits. Maybe even breaks it. We compile a program, linking it # against the deplibs as a proxy for the library. Then we can check # whether they linked in statically or dynamically with ldd. $opt_dry_run || $RM conftest.c cat > conftest.c </dev/null` $nocaseglob else potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` fi for potent_lib in $potential_libs; do # Follow soft links. if ls -lLd "$potent_lib" 2>/dev/null | $GREP " -> " >/dev/null; then continue fi # The statement above tries to avoid entering an # endless loop below, in case of cyclic links. # We might still enter an endless loop, since a link # loop can be closed while we follow links, # but so what? potlib="$potent_lib" while test -h "$potlib" 2>/dev/null; do potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` case $potliblink in [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; *) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";; esac done if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | $SED -e 10q | $EGREP "$file_magic_regex" > /dev/null; then func_append newdeplibs " $a_deplib" a_deplib="" break 2 fi done done fi if test -n "$a_deplib" ; then droppeddeps=yes echo $ECHO "*** Warning: linker path does not have real file for library $a_deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because I did check the linker path looking for a file starting" if test -z "$potlib" ; then $ECHO "*** with $libname but no candidates were found. (...for file magic test)" else $ECHO "*** with $libname and none of the candidates passed a file format test" $ECHO "*** using a file magic. Last file checked: $potlib" fi fi ;; *) # Add a -L argument. func_append newdeplibs " $a_deplib" ;; esac done # Gone through all deplibs. ;; match_pattern*) set dummy $deplibs_check_method; shift match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` for a_deplib in $deplibs; do case $a_deplib in -l*) func_stripname -l '' "$a_deplib" name=$func_stripname_result if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then case " $predeps $postdeps " in *" $a_deplib "*) func_append newdeplibs " $a_deplib" a_deplib="" ;; esac fi if test -n "$a_deplib" ; then libname=`eval "\\$ECHO \"$libname_spec\""` for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do potential_libs=`ls $i/$libname[.-]* 2>/dev/null` for potent_lib in $potential_libs; do potlib="$potent_lib" # see symlink-check above in file_magic test if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ $EGREP "$match_pattern_regex" > /dev/null; then func_append newdeplibs " $a_deplib" a_deplib="" break 2 fi done done fi if test -n "$a_deplib" ; then droppeddeps=yes echo $ECHO "*** Warning: linker path does not have real file for library $a_deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because I did check the linker path looking for a file starting" if test -z "$potlib" ; then $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" else $ECHO "*** with $libname and none of the candidates passed a file format test" $ECHO "*** using a regex pattern. Last file checked: $potlib" fi fi ;; *) # Add a -L argument. func_append newdeplibs " $a_deplib" ;; esac done # Gone through all deplibs. ;; none | unknown | *) newdeplibs="" tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'` if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then for i in $predeps $postdeps ; do # can't use Xsed below, because $i might contain '/' tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"` done fi case $tmp_deplibs in *[!\ \ ]*) echo if test "X$deplibs_check_method" = "Xnone"; then echo "*** Warning: inter-library dependencies are not supported in this platform." else echo "*** Warning: inter-library dependencies are not known to be supported." fi echo "*** All declared inter-library dependencies are being dropped." droppeddeps=yes ;; esac ;; esac versuffix=$versuffix_save major=$major_save release=$release_save libname=$libname_save name=$name_save case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library with the System framework newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'` ;; esac if test "$droppeddeps" = yes; then if test "$module" = yes; then echo echo "*** Warning: libtool could not satisfy all declared inter-library" $ECHO "*** dependencies of module $libname. Therefore, libtool will create" echo "*** a static module, that should work as long as the dlopening" echo "*** application is linked with the -dlopen flag." if test -z "$global_symbol_pipe"; then echo echo "*** However, this would only work if libtool was able to extract symbol" echo "*** lists from a program, using \`nm' or equivalent, but libtool could" echo "*** not find such a program. So, this module is probably useless." echo "*** \`nm' from GNU binutils and a full rebuild may help." fi if test "$build_old_libs" = no; then oldlibs="$output_objdir/$libname.$libext" build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi else echo "*** The inter-library dependencies that have been dropped here will be" echo "*** automatically added whenever a program is linked with this library" echo "*** or is declared to -dlopen it." if test "$allow_undefined" = no; then echo echo "*** Since this library must not contain undefined symbols," echo "*** because either the platform does not support them or" echo "*** it was explicitly requested with -no-undefined," echo "*** libtool will only create a static version of it." if test "$build_old_libs" = no; then oldlibs="$output_objdir/$libname.$libext" build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi fi fi # Done checking deplibs! deplibs=$newdeplibs fi # Time to change all our "foo.ltframework" stuff back to "-framework foo" case $host in *-*-darwin*) newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` ;; esac # move library search paths that coincide with paths to not yet # installed libraries to the beginning of the library search list new_libs= for path in $notinst_path; do case " $new_libs " in *" -L$path/$objdir "*) ;; *) case " $deplibs " in *" -L$path/$objdir "*) func_append new_libs " -L$path/$objdir" ;; esac ;; esac done for deplib in $deplibs; do case $deplib in -L*) case " $new_libs " in *" $deplib "*) ;; *) func_append new_libs " $deplib" ;; esac ;; *) func_append new_libs " $deplib" ;; esac done deplibs="$new_libs" # All the library-specific variables (install_libdir is set above). library_names= old_library= dlname= # Test again, we may have decided not to build it any more if test "$build_libtool_libs" = yes; then # Remove ${wl} instances when linking with ld. # FIXME: should test the right _cmds variable. case $archive_cmds in *\$LD\ *) wl= ;; esac if test "$hardcode_into_libs" = yes; then # Hardcode the library paths hardcode_libdirs= dep_rpath= rpath="$finalize_rpath" test "$opt_mode" != relink && rpath="$compile_rpath$rpath" for libdir in $rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then func_replace_sysroot "$libdir" libdir=$func_replace_sysroot_result if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" func_append dep_rpath " $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) func_append perm_rpath " $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" eval "dep_rpath=\"$hardcode_libdir_flag_spec\"" fi if test -n "$runpath_var" && test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do func_append rpath "$dir:" done eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" fi test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" fi shlibpath="$finalize_shlibpath" test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath" if test -n "$shlibpath"; then eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" fi # Get the real and link names of the library. eval shared_ext=\"$shrext_cmds\" eval library_names=\"$library_names_spec\" set dummy $library_names shift realname="$1" shift if test -n "$soname_spec"; then eval soname=\"$soname_spec\" else soname="$realname" fi if test -z "$dlname"; then dlname=$soname fi lib="$output_objdir/$realname" linknames= for link do func_append linknames " $link" done # Use standard objects if they are pic test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP` test "X$libobjs" = "X " && libobjs= delfiles= if test -n "$export_symbols" && test -n "$include_expsyms"; then $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" export_symbols="$output_objdir/$libname.uexp" func_append delfiles " $export_symbols" fi orig_export_symbols= case $host_os in cygwin* | mingw* | cegcc*) if test -n "$export_symbols" && test -z "$export_symbols_regex"; then # exporting using user supplied symfile if test "x`$SED 1q $export_symbols`" != xEXPORTS; then # and it's NOT already a .def file. Must figure out # which of the given symbols are data symbols and tag # them as such. So, trigger use of export_symbols_cmds. # export_symbols gets reassigned inside the "prepare # the list of exported symbols" if statement, so the # include_expsyms logic still works. orig_export_symbols="$export_symbols" export_symbols= always_export_symbols=yes fi fi ;; esac # Prepare the list of exported symbols if test -z "$export_symbols"; then if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then func_verbose "generating symbol list for \`$libname.la'" export_symbols="$output_objdir/$libname.exp" $opt_dry_run || $RM $export_symbols cmds=$export_symbols_cmds save_ifs="$IFS"; IFS='~' for cmd1 in $cmds; do IFS="$save_ifs" # Take the normal branch if the nm_file_list_spec branch # doesn't work or if tool conversion is not needed. case $nm_file_list_spec~$to_tool_file_cmd in *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*) try_normal_branch=yes eval cmd=\"$cmd1\" func_len " $cmd" len=$func_len_result ;; *) try_normal_branch=no ;; esac if test "$try_normal_branch" = yes \ && { test "$len" -lt "$max_cmd_len" \ || test "$max_cmd_len" -le -1; } then func_show_eval "$cmd" 'exit $?' skipped_export=false elif test -n "$nm_file_list_spec"; then func_basename "$output" output_la=$func_basename_result save_libobjs=$libobjs save_output=$output output=${output_objdir}/${output_la}.nm func_to_tool_file "$output" libobjs=$nm_file_list_spec$func_to_tool_file_result func_append delfiles " $output" func_verbose "creating $NM input file list: $output" for obj in $save_libobjs; do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" done > "$output" eval cmd=\"$cmd1\" func_show_eval "$cmd" 'exit $?' output=$save_output libobjs=$save_libobjs skipped_export=false else # The command line is too long to execute in one step. func_verbose "using reloadable object file for export list..." skipped_export=: # Break out early, otherwise skipped_export may be # set to false by a later but shorter cmd. break fi done IFS="$save_ifs" if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' func_show_eval '$MV "${export_symbols}T" "$export_symbols"' fi fi fi if test -n "$export_symbols" && test -n "$include_expsyms"; then tmp_export_symbols="$export_symbols" test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' fi if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then # The given exports_symbols file has to be filtered, so filter it. func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" # FIXME: $output_objdir/$libname.filter potentially contains lots of # 's' commands which not all seds can handle. GNU sed should be fine # though. Also, the filter scales superlinearly with the number of # global variables. join(1) would be nice here, but unfortunately # isn't a blessed tool. $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter func_append delfiles " $export_symbols $output_objdir/$libname.filter" export_symbols=$output_objdir/$libname.def $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols fi tmp_deplibs= for test_deplib in $deplibs; do case " $convenience " in *" $test_deplib "*) ;; *) func_append tmp_deplibs " $test_deplib" ;; esac done deplibs="$tmp_deplibs" if test -n "$convenience"; then if test -n "$whole_archive_flag_spec" && test "$compiler_needs_object" = yes && test -z "$libobjs"; then # extract the archives, so we have objects to list. # TODO: could optimize this to just extract one archive. whole_archive_flag_spec= fi if test -n "$whole_archive_flag_spec"; then save_libobjs=$libobjs eval libobjs=\"\$libobjs $whole_archive_flag_spec\" test "X$libobjs" = "X " && libobjs= else gentop="$output_objdir/${outputname}x" func_append generated " $gentop" func_extract_archives $gentop $convenience func_append libobjs " $func_extract_archives_result" test "X$libobjs" = "X " && libobjs= fi fi if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then eval flag=\"$thread_safe_flag_spec\" func_append linker_flags " $flag" fi # Make a backup of the uninstalled library when relinking if test "$opt_mode" = relink; then $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? fi # Do each of the archive commands. if test "$module" = yes && test -n "$module_cmds" ; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then eval test_cmds=\"$module_expsym_cmds\" cmds=$module_expsym_cmds else eval test_cmds=\"$module_cmds\" cmds=$module_cmds fi else if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then eval test_cmds=\"$archive_expsym_cmds\" cmds=$archive_expsym_cmds else eval test_cmds=\"$archive_cmds\" cmds=$archive_cmds fi fi if test "X$skipped_export" != "X:" && func_len " $test_cmds" && len=$func_len_result && test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then : else # The command line is too long to link in one step, link piecewise # or, if using GNU ld and skipped_export is not :, use a linker # script. # Save the value of $output and $libobjs because we want to # use them later. If we have whole_archive_flag_spec, we # want to use save_libobjs as it was before # whole_archive_flag_spec was expanded, because we can't # assume the linker understands whole_archive_flag_spec. # This may have to be revisited, in case too many # convenience libraries get linked in and end up exceeding # the spec. if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then save_libobjs=$libobjs fi save_output=$output func_basename "$output" output_la=$func_basename_result # Clear the reloadable object creation command queue and # initialize k to one. test_cmds= concat_cmds= objlist= last_robj= k=1 if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then output=${output_objdir}/${output_la}.lnkscript func_verbose "creating GNU ld script: $output" echo 'INPUT (' > $output for obj in $save_libobjs do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" >> $output done echo ')' >> $output func_append delfiles " $output" func_to_tool_file "$output" output=$func_to_tool_file_result elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then output=${output_objdir}/${output_la}.lnk func_verbose "creating linker input file list: $output" : > $output set x $save_libobjs shift firstobj= if test "$compiler_needs_object" = yes; then firstobj="$1 " shift fi for obj do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" >> $output done func_append delfiles " $output" func_to_tool_file "$output" output=$firstobj\"$file_list_spec$func_to_tool_file_result\" else if test -n "$save_libobjs"; then func_verbose "creating reloadable object files..." output=$output_objdir/$output_la-${k}.$objext eval test_cmds=\"$reload_cmds\" func_len " $test_cmds" len0=$func_len_result len=$len0 # Loop over the list of objects to be linked. for obj in $save_libobjs do func_len " $obj" func_arith $len + $func_len_result len=$func_arith_result if test "X$objlist" = X || test "$len" -lt "$max_cmd_len"; then func_append objlist " $obj" else # The command $test_cmds is almost too long, add a # command to the queue. if test "$k" -eq 1 ; then # The first file doesn't have a previous command to add. reload_objs=$objlist eval concat_cmds=\"$reload_cmds\" else # All subsequent reloadable object files will link in # the last one created. reload_objs="$objlist $last_robj" eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\" fi last_robj=$output_objdir/$output_la-${k}.$objext func_arith $k + 1 k=$func_arith_result output=$output_objdir/$output_la-${k}.$objext objlist=" $obj" func_len " $last_robj" func_arith $len0 + $func_len_result len=$func_arith_result fi done # Handle the remaining objects by creating one last # reloadable object file. All subsequent reloadable object # files will link in the last one created. test -z "$concat_cmds" || concat_cmds=$concat_cmds~ reload_objs="$objlist $last_robj" eval concat_cmds=\"\${concat_cmds}$reload_cmds\" if test -n "$last_robj"; then eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\" fi func_append delfiles " $output" else output= fi if ${skipped_export-false}; then func_verbose "generating symbol list for \`$libname.la'" export_symbols="$output_objdir/$libname.exp" $opt_dry_run || $RM $export_symbols libobjs=$output # Append the command to create the export file. test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" if test -n "$last_robj"; then eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" fi fi test -n "$save_libobjs" && func_verbose "creating a temporary reloadable object file: $output" # Loop through the commands generated above and execute them. save_ifs="$IFS"; IFS='~' for cmd in $concat_cmds; do IFS="$save_ifs" $opt_silent || { func_quote_for_expand "$cmd" eval "func_echo $func_quote_for_expand_result" } $opt_dry_run || eval "$cmd" || { lt_exit=$? # Restore the uninstalled library and exit if test "$opt_mode" = relink; then ( cd "$output_objdir" && \ $RM "${realname}T" && \ $MV "${realname}U" "$realname" ) fi exit $lt_exit } done IFS="$save_ifs" if test -n "$export_symbols_regex" && ${skipped_export-false}; then func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' func_show_eval '$MV "${export_symbols}T" "$export_symbols"' fi fi if ${skipped_export-false}; then if test -n "$export_symbols" && test -n "$include_expsyms"; then tmp_export_symbols="$export_symbols" test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' fi if test -n "$orig_export_symbols"; then # The given exports_symbols file has to be filtered, so filter it. func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" # FIXME: $output_objdir/$libname.filter potentially contains lots of # 's' commands which not all seds can handle. GNU sed should be fine # though. Also, the filter scales superlinearly with the number of # global variables. join(1) would be nice here, but unfortunately # isn't a blessed tool. $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter func_append delfiles " $export_symbols $output_objdir/$libname.filter" export_symbols=$output_objdir/$libname.def $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols fi fi libobjs=$output # Restore the value of output. output=$save_output if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then eval libobjs=\"\$libobjs $whole_archive_flag_spec\" test "X$libobjs" = "X " && libobjs= fi # Expand the library linking commands again to reset the # value of $libobjs for piecewise linking. # Do each of the archive commands. if test "$module" = yes && test -n "$module_cmds" ; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then cmds=$module_expsym_cmds else cmds=$module_cmds fi else if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then cmds=$archive_expsym_cmds else cmds=$archive_cmds fi fi fi if test -n "$delfiles"; then # Append the command to remove temporary files to $cmds. eval cmds=\"\$cmds~\$RM $delfiles\" fi # Add any objects from preloaded convenience libraries if test -n "$dlprefiles"; then gentop="$output_objdir/${outputname}x" func_append generated " $gentop" func_extract_archives $gentop $dlprefiles func_append libobjs " $func_extract_archives_result" test "X$libobjs" = "X " && libobjs= fi save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $opt_silent || { func_quote_for_expand "$cmd" eval "func_echo $func_quote_for_expand_result" } $opt_dry_run || eval "$cmd" || { lt_exit=$? # Restore the uninstalled library and exit if test "$opt_mode" = relink; then ( cd "$output_objdir" && \ $RM "${realname}T" && \ $MV "${realname}U" "$realname" ) fi exit $lt_exit } done IFS="$save_ifs" # Restore the uninstalled library and exit if test "$opt_mode" = relink; then $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? if test -n "$convenience"; then if test -z "$whole_archive_flag_spec"; then func_show_eval '${RM}r "$gentop"' fi fi exit $EXIT_SUCCESS fi # Create links to the real library. for linkname in $linknames; do if test "$realname" != "$linkname"; then func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' fi done # If -module or -export-dynamic was specified, set the dlname. if test "$module" = yes || test "$export_dynamic" = yes; then # On all known operating systems, these are identical. dlname="$soname" fi fi ;; obj) if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then func_warning "\`-dlopen' is ignored for objects" fi case " $deplibs" in *\ -l* | *\ -L*) func_warning "\`-l' and \`-L' are ignored for objects" ;; esac test -n "$rpath" && \ func_warning "\`-rpath' is ignored for objects" test -n "$xrpath" && \ func_warning "\`-R' is ignored for objects" test -n "$vinfo" && \ func_warning "\`-version-info' is ignored for objects" test -n "$release" && \ func_warning "\`-release' is ignored for objects" case $output in *.lo) test -n "$objs$old_deplibs" && \ func_fatal_error "cannot build library object \`$output' from non-libtool objects" libobj=$output func_lo2o "$libobj" obj=$func_lo2o_result ;; *) libobj= obj="$output" ;; esac # Delete the old objects. $opt_dry_run || $RM $obj $libobj # Objects from convenience libraries. This assumes # single-version convenience libraries. Whenever we create # different ones for PIC/non-PIC, this we'll have to duplicate # the extraction. reload_conv_objs= gentop= # reload_cmds runs $LD directly, so let us get rid of # -Wl from whole_archive_flag_spec and hope we can get by with # turning comma into space.. wl= if test -n "$convenience"; then if test -n "$whole_archive_flag_spec"; then eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` else gentop="$output_objdir/${obj}x" func_append generated " $gentop" func_extract_archives $gentop $convenience reload_conv_objs="$reload_objs $func_extract_archives_result" fi fi # If we're not building shared, we need to use non_pic_objs test "$build_libtool_libs" != yes && libobjs="$non_pic_objects" # Create the old-style object. reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test output="$obj" func_execute_cmds "$reload_cmds" 'exit $?' # Exit if we aren't doing a library object file. if test -z "$libobj"; then if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi exit $EXIT_SUCCESS fi if test "$build_libtool_libs" != yes; then if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi # Create an invalid libtool object if no PIC, so that we don't # accidentally link it into a program. # $show "echo timestamp > $libobj" # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? exit $EXIT_SUCCESS fi if test -n "$pic_flag" || test "$pic_mode" != default; then # Only do commands if we really have different PIC objects. reload_objs="$libobjs $reload_conv_objs" output="$libobj" func_execute_cmds "$reload_cmds" 'exit $?' fi if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi exit $EXIT_SUCCESS ;; prog) case $host in *cygwin*) func_stripname '' '.exe' "$output" output=$func_stripname_result.exe;; esac test -n "$vinfo" && \ func_warning "\`-version-info' is ignored for programs" test -n "$release" && \ func_warning "\`-release' is ignored for programs" test "$preload" = yes \ && test "$dlopen_support" = unknown \ && test "$dlopen_self" = unknown \ && test "$dlopen_self_static" = unknown && \ func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support." case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library is the System framework compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'` finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'` ;; esac case $host in *-*-darwin*) # Don't allow lazy linking, it breaks C++ global constructors # But is supposedly fixed on 10.4 or later (yay!). if test "$tagname" = CXX ; then case ${MACOSX_DEPLOYMENT_TARGET-10.0} in 10.[0123]) func_append compile_command " ${wl}-bind_at_load" func_append finalize_command " ${wl}-bind_at_load" ;; esac fi # Time to change all our "foo.ltframework" stuff back to "-framework foo" compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` ;; esac # move library search paths that coincide with paths to not yet # installed libraries to the beginning of the library search list new_libs= for path in $notinst_path; do case " $new_libs " in *" -L$path/$objdir "*) ;; *) case " $compile_deplibs " in *" -L$path/$objdir "*) func_append new_libs " -L$path/$objdir" ;; esac ;; esac done for deplib in $compile_deplibs; do case $deplib in -L*) case " $new_libs " in *" $deplib "*) ;; *) func_append new_libs " $deplib" ;; esac ;; *) func_append new_libs " $deplib" ;; esac done compile_deplibs="$new_libs" func_append compile_command " $compile_deplibs" func_append finalize_command " $finalize_deplibs" if test -n "$rpath$xrpath"; then # If the user specified any rpath flags, then add them. for libdir in $rpath $xrpath; do # This is the magic to use -rpath. case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac done fi # Now hardcode the library paths rpath= hardcode_libdirs= for libdir in $compile_rpath $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" func_append rpath " $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) func_append perm_rpath " $libdir" ;; esac fi case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'` case :$dllsearchpath: in *":$libdir:"*) ;; ::) dllsearchpath=$libdir;; *) func_append dllsearchpath ":$libdir";; esac case :$dllsearchpath: in *":$testbindir:"*) ;; ::) dllsearchpath=$testbindir;; *) func_append dllsearchpath ":$testbindir";; esac ;; esac done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" eval rpath=\" $hardcode_libdir_flag_spec\" fi compile_rpath="$rpath" rpath= hardcode_libdirs= for libdir in $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" func_append rpath " $flag" fi elif test -n "$runpath_var"; then case "$finalize_perm_rpath " in *" $libdir "*) ;; *) func_append finalize_perm_rpath " $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" eval rpath=\" $hardcode_libdir_flag_spec\" fi finalize_rpath="$rpath" if test -n "$libobjs" && test "$build_old_libs" = yes; then # Transform all the library objects into standard objects. compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` fi func_generate_dlsyms "$outputname" "@PROGRAM@" "no" # template prelinking step if test -n "$prelink_cmds"; then func_execute_cmds "$prelink_cmds" 'exit $?' fi wrappers_required=yes case $host in *cegcc* | *mingw32ce*) # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. wrappers_required=no ;; *cygwin* | *mingw* ) if test "$build_libtool_libs" != yes; then wrappers_required=no fi ;; *) if test "$need_relink" = no || test "$build_libtool_libs" != yes; then wrappers_required=no fi ;; esac if test "$wrappers_required" = no; then # Replace the output file specification. compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'` link_command="$compile_command$compile_rpath" # We have no uninstalled library dependencies, so finalize right now. exit_status=0 func_show_eval "$link_command" 'exit_status=$?' if test -n "$postlink_cmds"; then func_to_tool_file "$output" postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` func_execute_cmds "$postlink_cmds" 'exit $?' fi # Delete the generated files. if test -f "$output_objdir/${outputname}S.${objext}"; then func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"' fi exit $exit_status fi if test -n "$compile_shlibpath$finalize_shlibpath"; then compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" fi if test -n "$finalize_shlibpath"; then finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" fi compile_var= finalize_var= if test -n "$runpath_var"; then if test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do func_append rpath "$dir:" done compile_var="$runpath_var=\"$rpath\$$runpath_var\" " fi if test -n "$finalize_perm_rpath"; then # We should set the runpath_var. rpath= for dir in $finalize_perm_rpath; do func_append rpath "$dir:" done finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " fi fi if test "$no_install" = yes; then # We don't need to create a wrapper script. link_command="$compile_var$compile_command$compile_rpath" # Replace the output file specification. link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'` # Delete the old output file. $opt_dry_run || $RM $output # Link the executable and exit func_show_eval "$link_command" 'exit $?' if test -n "$postlink_cmds"; then func_to_tool_file "$output" postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` func_execute_cmds "$postlink_cmds" 'exit $?' fi exit $EXIT_SUCCESS fi if test "$hardcode_action" = relink; then # Fast installation is not supported link_command="$compile_var$compile_command$compile_rpath" relink_command="$finalize_var$finalize_command$finalize_rpath" func_warning "this platform does not like uninstalled shared libraries" func_warning "\`$output' will be relinked during installation" else if test "$fast_install" != no; then link_command="$finalize_var$compile_command$finalize_rpath" if test "$fast_install" = yes; then relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` else # fast_install is set to needless relink_command= fi else link_command="$compile_var$compile_command$compile_rpath" relink_command="$finalize_var$finalize_command$finalize_rpath" fi fi # Replace the output file specification. link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` # Delete the old output files. $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname func_show_eval "$link_command" 'exit $?' if test -n "$postlink_cmds"; then func_to_tool_file "$output_objdir/$outputname" postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` func_execute_cmds "$postlink_cmds" 'exit $?' fi # Now create the wrapper script. func_verbose "creating $output" # Quote the relink command for shipping. if test -n "$relink_command"; then # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else func_quote_for_eval "$var_value" relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" fi done relink_command="(cd `pwd`; $relink_command)" relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` fi # Only actually do things if not in dry run mode. $opt_dry_run || { # win32 will think the script is a binary if it has # a .exe suffix, so we strip it off here. case $output in *.exe) func_stripname '' '.exe' "$output" output=$func_stripname_result ;; esac # test for cygwin because mv fails w/o .exe extensions case $host in *cygwin*) exeext=.exe func_stripname '' '.exe' "$outputname" outputname=$func_stripname_result ;; *) exeext= ;; esac case $host in *cygwin* | *mingw* ) func_dirname_and_basename "$output" "" "." output_name=$func_basename_result output_path=$func_dirname_result cwrappersource="$output_path/$objdir/lt-$output_name.c" cwrapper="$output_path/$output_name.exe" $RM $cwrappersource $cwrapper trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 func_emit_cwrapperexe_src > $cwrappersource # The wrapper executable is built using the $host compiler, # because it contains $host paths and files. If cross- # compiling, it, like the target executable, must be # executed on the $host or under an emulation environment. $opt_dry_run || { $LTCC $LTCFLAGS -o $cwrapper $cwrappersource $STRIP $cwrapper } # Now, create the wrapper script for func_source use: func_ltwrapper_scriptname $cwrapper $RM $func_ltwrapper_scriptname_result trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 $opt_dry_run || { # note: this script will not be executed, so do not chmod. if test "x$build" = "x$host" ; then $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result else func_emit_wrapper no > $func_ltwrapper_scriptname_result fi } ;; * ) $RM $output trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 func_emit_wrapper no > $output chmod +x $output ;; esac } exit $EXIT_SUCCESS ;; esac # See if we need to build an old-fashioned archive. for oldlib in $oldlibs; do if test "$build_libtool_libs" = convenience; then oldobjs="$libobjs_save $symfileobj" addlibs="$convenience" build_libtool_libs=no else if test "$build_libtool_libs" = module; then oldobjs="$libobjs_save" build_libtool_libs=no else oldobjs="$old_deplibs $non_pic_objects" if test "$preload" = yes && test -f "$symfileobj"; then func_append oldobjs " $symfileobj" fi fi addlibs="$old_convenience" fi if test -n "$addlibs"; then gentop="$output_objdir/${outputname}x" func_append generated " $gentop" func_extract_archives $gentop $addlibs func_append oldobjs " $func_extract_archives_result" fi # Do each command in the archive commands. if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then cmds=$old_archive_from_new_cmds else # Add any objects from preloaded convenience libraries if test -n "$dlprefiles"; then gentop="$output_objdir/${outputname}x" func_append generated " $gentop" func_extract_archives $gentop $dlprefiles func_append oldobjs " $func_extract_archives_result" fi # POSIX demands no paths to be encoded in archives. We have # to avoid creating archives with duplicate basenames if we # might have to extract them afterwards, e.g., when creating a # static archive out of a convenience library, or when linking # the entirety of a libtool archive into another (currently # not supported by libtool). if (for obj in $oldobjs do func_basename "$obj" $ECHO "$func_basename_result" done | sort | sort -uc >/dev/null 2>&1); then : else echo "copying selected object files to avoid basename conflicts..." gentop="$output_objdir/${outputname}x" func_append generated " $gentop" func_mkdir_p "$gentop" save_oldobjs=$oldobjs oldobjs= counter=1 for obj in $save_oldobjs do func_basename "$obj" objbase="$func_basename_result" case " $oldobjs " in " ") oldobjs=$obj ;; *[\ /]"$objbase "*) while :; do # Make sure we don't pick an alternate name that also # overlaps. newobj=lt$counter-$objbase func_arith $counter + 1 counter=$func_arith_result case " $oldobjs " in *[\ /]"$newobj "*) ;; *) if test ! -f "$gentop/$newobj"; then break; fi ;; esac done func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" func_append oldobjs " $gentop/$newobj" ;; *) func_append oldobjs " $obj" ;; esac done fi func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 tool_oldlib=$func_to_tool_file_result eval cmds=\"$old_archive_cmds\" func_len " $cmds" len=$func_len_result if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then cmds=$old_archive_cmds elif test -n "$archiver_list_spec"; then func_verbose "using command file archive linking..." for obj in $oldobjs do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" done > $output_objdir/$libname.libcmd func_to_tool_file "$output_objdir/$libname.libcmd" oldobjs=" $archiver_list_spec$func_to_tool_file_result" cmds=$old_archive_cmds else # the command line is too long to link in one step, link in parts func_verbose "using piecewise archive linking..." save_RANLIB=$RANLIB RANLIB=: objlist= concat_cmds= save_oldobjs=$oldobjs oldobjs= # Is there a better way of finding the last object in the list? for obj in $save_oldobjs do last_oldobj=$obj done eval test_cmds=\"$old_archive_cmds\" func_len " $test_cmds" len0=$func_len_result len=$len0 for obj in $save_oldobjs do func_len " $obj" func_arith $len + $func_len_result len=$func_arith_result func_append objlist " $obj" if test "$len" -lt "$max_cmd_len"; then : else # the above command should be used before it gets too long oldobjs=$objlist if test "$obj" = "$last_oldobj" ; then RANLIB=$save_RANLIB fi test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" objlist= len=$len0 fi done RANLIB=$save_RANLIB oldobjs=$objlist if test "X$oldobjs" = "X" ; then eval cmds=\"\$concat_cmds\" else eval cmds=\"\$concat_cmds~\$old_archive_cmds\" fi fi fi func_execute_cmds "$cmds" 'exit $?' done test -n "$generated" && \ func_show_eval "${RM}r$generated" # Now create the libtool archive. case $output in *.la) old_library= test "$build_old_libs" = yes && old_library="$libname.$libext" func_verbose "creating $output" # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else func_quote_for_eval "$var_value" relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" fi done # Quote the link command for shipping. relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` if test "$hardcode_automatic" = yes ; then relink_command= fi # Only create the output if not a dry run. $opt_dry_run || { for installed in no yes; do if test "$installed" = yes; then if test -z "$install_libdir"; then break fi output="$output_objdir/$outputname"i # Replace all uninstalled libtool libraries with the installed ones newdependency_libs= for deplib in $dependency_libs; do case $deplib in *.la) func_basename "$deplib" name="$func_basename_result" func_resolve_sysroot "$deplib" eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result` test -z "$libdir" && \ func_fatal_error "\`$deplib' is not a valid libtool archive" func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name" ;; -L*) func_stripname -L '' "$deplib" func_replace_sysroot "$func_stripname_result" func_append newdependency_libs " -L$func_replace_sysroot_result" ;; -R*) func_stripname -R '' "$deplib" func_replace_sysroot "$func_stripname_result" func_append newdependency_libs " -R$func_replace_sysroot_result" ;; *) func_append newdependency_libs " $deplib" ;; esac done dependency_libs="$newdependency_libs" newdlfiles= for lib in $dlfiles; do case $lib in *.la) func_basename "$lib" name="$func_basename_result" eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` test -z "$libdir" && \ func_fatal_error "\`$lib' is not a valid libtool archive" func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name" ;; *) func_append newdlfiles " $lib" ;; esac done dlfiles="$newdlfiles" newdlprefiles= for lib in $dlprefiles; do case $lib in *.la) # Only pass preopened files to the pseudo-archive (for # eventual linking with the app. that links it) if we # didn't already link the preopened objects directly into # the library: func_basename "$lib" name="$func_basename_result" eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` test -z "$libdir" && \ func_fatal_error "\`$lib' is not a valid libtool archive" func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name" ;; esac done dlprefiles="$newdlprefiles" else newdlfiles= for lib in $dlfiles; do case $lib in [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; *) abs=`pwd`"/$lib" ;; esac func_append newdlfiles " $abs" done dlfiles="$newdlfiles" newdlprefiles= for lib in $dlprefiles; do case $lib in [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; *) abs=`pwd`"/$lib" ;; esac func_append newdlprefiles " $abs" done dlprefiles="$newdlprefiles" fi $RM $output # place dlname in correct position for cygwin # In fact, it would be nice if we could use this code for all target # systems that can't hard-code library paths into their executables # and that have no shared library path variable independent of PATH, # but it turns out we can't easily determine that from inspecting # libtool variables, so we have to hard-code the OSs to which it # applies here; at the moment, that means platforms that use the PE # object format with DLL files. See the long comment at the top of # tests/bindir.at for full details. tdlname=$dlname case $host,$output,$installed,$module,$dlname in *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) # If a -bindir argument was supplied, place the dll there. if test "x$bindir" != x ; then func_relative_path "$install_libdir" "$bindir" tdlname=$func_relative_path_result$dlname else # Otherwise fall back on heuristic. tdlname=../bin/$dlname fi ;; esac $ECHO > $output "\ # $outputname - a libtool library file # Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION # # Please DO NOT delete this file! # It is necessary for linking the library. # The name that we can dlopen(3). dlname='$tdlname' # Names of this library. library_names='$library_names' # The name of the static archive. old_library='$old_library' # Linker flags that can not go in dependency_libs. inherited_linker_flags='$new_inherited_linker_flags' # Libraries that this one depends upon. dependency_libs='$dependency_libs' # Names of additional weak libraries provided by this library weak_library_names='$weak_libs' # Version information for $libname. current=$current age=$age revision=$revision # Is this an already installed library? installed=$installed # Should we warn about portability when linking against -modules? shouldnotlink=$module # Files to dlopen/dlpreopen dlopen='$dlfiles' dlpreopen='$dlprefiles' # Directory that this library needs to be installed in: libdir='$install_libdir'" if test "$installed" = no && test "$need_relink" = yes; then $ECHO >> $output "\ relink_command=\"$relink_command\"" fi done } # Do a symbolic link so that the libtool archive can be found in # LD_LIBRARY_PATH before the program is installed. func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' ;; esac exit $EXIT_SUCCESS } { test "$opt_mode" = link || test "$opt_mode" = relink; } && func_mode_link ${1+"$@"} # func_mode_uninstall arg... func_mode_uninstall () { $opt_debug RM="$nonopt" files= rmforce= exit_status=0 # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic="$magic" for arg do case $arg in -f) func_append RM " $arg"; rmforce=yes ;; -*) func_append RM " $arg" ;; *) func_append files " $arg" ;; esac done test -z "$RM" && \ func_fatal_help "you must specify an RM program" rmdirs= for file in $files; do func_dirname "$file" "" "." dir="$func_dirname_result" if test "X$dir" = X.; then odir="$objdir" else odir="$dir/$objdir" fi func_basename "$file" name="$func_basename_result" test "$opt_mode" = uninstall && odir="$dir" # Remember odir for removal later, being careful to avoid duplicates if test "$opt_mode" = clean; then case " $rmdirs " in *" $odir "*) ;; *) func_append rmdirs " $odir" ;; esac fi # Don't error if the file doesn't exist and rm -f was used. if { test -L "$file"; } >/dev/null 2>&1 || { test -h "$file"; } >/dev/null 2>&1 || test -f "$file"; then : elif test -d "$file"; then exit_status=1 continue elif test "$rmforce" = yes; then continue fi rmfiles="$file" case $name in *.la) # Possibly a libtool archive, so verify it. if func_lalib_p "$file"; then func_source $dir/$name # Delete the libtool libraries and symlinks. for n in $library_names; do func_append rmfiles " $odir/$n" done test -n "$old_library" && func_append rmfiles " $odir/$old_library" case "$opt_mode" in clean) case " $library_names " in *" $dlname "*) ;; *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;; esac test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i" ;; uninstall) if test -n "$library_names"; then # Do each command in the postuninstall commands. func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' fi if test -n "$old_library"; then # Do each command in the old_postuninstall commands. func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' fi # FIXME: should reinstall the best remaining shared library. ;; esac fi ;; *.lo) # Possibly a libtool object, so verify it. if func_lalib_p "$file"; then # Read the .lo file func_source $dir/$name # Add PIC object to the list of files to remove. if test -n "$pic_object" && test "$pic_object" != none; then func_append rmfiles " $dir/$pic_object" fi # Add non-PIC object to the list of files to remove. if test -n "$non_pic_object" && test "$non_pic_object" != none; then func_append rmfiles " $dir/$non_pic_object" fi fi ;; *) if test "$opt_mode" = clean ; then noexename=$name case $file in *.exe) func_stripname '' '.exe' "$file" file=$func_stripname_result func_stripname '' '.exe' "$name" noexename=$func_stripname_result # $file with .exe has already been added to rmfiles, # add $file without .exe func_append rmfiles " $file" ;; esac # Do a test to see if this is a libtool program. if func_ltwrapper_p "$file"; then if func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" relink_command= func_source $func_ltwrapper_scriptname_result func_append rmfiles " $func_ltwrapper_scriptname_result" else relink_command= func_source $dir/$noexename fi # note $name still contains .exe if it was in $file originally # as does the version of $file that was added into $rmfiles func_append rmfiles " $odir/$name $odir/${name}S.${objext}" if test "$fast_install" = yes && test -n "$relink_command"; then func_append rmfiles " $odir/lt-$name" fi if test "X$noexename" != "X$name" ; then func_append rmfiles " $odir/lt-${noexename}.c" fi fi fi ;; esac func_show_eval "$RM $rmfiles" 'exit_status=1' done # Try to remove the ${objdir}s in the directories where we deleted files for dir in $rmdirs; do if test -d "$dir"; then func_show_eval "rmdir $dir >/dev/null 2>&1" fi done exit $exit_status } { test "$opt_mode" = uninstall || test "$opt_mode" = clean; } && func_mode_uninstall ${1+"$@"} test -z "$opt_mode" && { help="$generic_help" func_fatal_help "you must specify a MODE" } test -z "$exec_cmd" && \ func_fatal_help "invalid operation mode \`$opt_mode'" if test -n "$exec_cmd"; then eval exec "$exec_cmd" exit $EXIT_FAILURE fi exit $exit_status # The TAGs below are defined such that we never get into a situation # in which we disable both kinds of libraries. Given conflicting # choices, we go for a static library, that is the most portable, # since we can't tell whether shared libraries were disabled because # the user asked for that or because the platform doesn't support # them. This is particularly important on AIX, because we don't # support having both static and shared libraries enabled at the same # time on that platform, so we default to a shared-only configuration. # If a disable-shared tag is given, we'll fallback to a static-only # configuration. But we'll never go from static-only to shared-only. # ### BEGIN LIBTOOL TAG CONFIG: disable-shared build_libtool_libs=no build_old_libs=yes # ### END LIBTOOL TAG CONFIG: disable-shared # ### BEGIN LIBTOOL TAG CONFIG: disable-static build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` # ### END LIBTOOL TAG CONFIG: disable-static # Local Variables: # mode:shell-script # sh-indentation:2 # End: # vi:sw=2 io_lib-1.14.6/missing0000755000031500020650000002415212617160065011364 00000000000000#! /bin/sh # Common stub for a few missing GNU programs while installing. scriptversion=2012-01-06.13; # UTC # Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006, # 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. # Originally by Fran,cois Pinard , 1996. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. if test $# -eq 0; then echo 1>&2 "Try \`$0 --help' for more information" exit 1 fi run=: sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p' sed_minuso='s/.* -o \([^ ]*\).*/\1/p' # In the cases where this matters, `missing' is being run in the # srcdir already. if test -f configure.ac; then configure_ac=configure.ac else configure_ac=configure.in fi msg="missing on your system" case $1 in --run) # Try to run requested program, and just exit if it succeeds. run= shift "$@" && exit 0 # Exit code 63 means version mismatch. This often happens # when the user try to use an ancient version of a tool on # a file that requires a minimum version. In this case we # we should proceed has if the program had been absent, or # if --run hadn't been passed. if test $? = 63; then run=: msg="probably too old" fi ;; -h|--h|--he|--hel|--help) echo "\ $0 [OPTION]... PROGRAM [ARGUMENT]... Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an error status if there is no known handling for PROGRAM. Options: -h, --help display this help and exit -v, --version output version information and exit --run try to run the given command, and emulate it if it fails Supported PROGRAM values: aclocal touch file \`aclocal.m4' autoconf touch file \`configure' autoheader touch file \`config.h.in' autom4te touch the output file, or create a stub one automake touch all \`Makefile.in' files bison create \`y.tab.[ch]', if possible, from existing .[ch] flex create \`lex.yy.c', if possible, from existing .c help2man touch the output file lex create \`lex.yy.c', if possible, from existing .c makeinfo touch the output file yacc create \`y.tab.[ch]', if possible, from existing .[ch] Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and \`g' are ignored when checking the name. Send bug reports to ." exit $? ;; -v|--v|--ve|--ver|--vers|--versi|--versio|--version) echo "missing $scriptversion (GNU Automake)" exit $? ;; -*) echo 1>&2 "$0: Unknown \`$1' option" echo 1>&2 "Try \`$0 --help' for more information" exit 1 ;; esac # normalize program name to check for. program=`echo "$1" | sed ' s/^gnu-//; t s/^gnu//; t s/^g//; t'` # Now exit if we have it, but it failed. Also exit now if we # don't have it and --version was passed (most likely to detect # the program). This is about non-GNU programs, so use $1 not # $program. case $1 in lex*|yacc*) # Not GNU programs, they don't have --version. ;; *) if test -z "$run" && ($1 --version) > /dev/null 2>&1; then # We have it, but it failed. exit 1 elif test "x$2" = "x--version" || test "x$2" = "x--help"; then # Could not run --version or --help. This is probably someone # running `$TOOL --version' or `$TOOL --help' to check whether # $TOOL exists and not knowing $TOOL uses missing. exit 1 fi ;; esac # If it does not exist, or fails to run (possibly an outdated version), # try to emulate it. case $program in aclocal*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`acinclude.m4' or \`${configure_ac}'. You might want to install the \`Automake' and \`Perl' packages. Grab them from any GNU archive site." touch aclocal.m4 ;; autoconf*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`${configure_ac}'. You might want to install the \`Autoconf' and \`GNU m4' packages. Grab them from any GNU archive site." touch configure ;; autoheader*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`acconfig.h' or \`${configure_ac}'. You might want to install the \`Autoconf' and \`GNU m4' packages. Grab them from any GNU archive site." files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` test -z "$files" && files="config.h" touch_files= for f in $files; do case $f in *:*) touch_files="$touch_files "`echo "$f" | sed -e 's/^[^:]*://' -e 's/:.*//'`;; *) touch_files="$touch_files $f.in";; esac done touch $touch_files ;; automake*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. You might want to install the \`Automake' and \`Perl' packages. Grab them from any GNU archive site." find . -type f -name Makefile.am -print | sed 's/\.am$/.in/' | while read f; do touch "$f"; done ;; autom4te*) echo 1>&2 "\ WARNING: \`$1' is needed, but is $msg. You might have modified some files without having the proper tools for further handling them. You can get \`$1' as part of \`Autoconf' from any GNU archive site." file=`echo "$*" | sed -n "$sed_output"` test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` if test -f "$file"; then touch $file else test -z "$file" || exec >$file echo "#! /bin/sh" echo "# Created by GNU Automake missing as a replacement of" echo "# $ $@" echo "exit 0" chmod +x $file exit 1 fi ;; bison*|yacc*) echo 1>&2 "\ WARNING: \`$1' $msg. You should only need it if you modified a \`.y' file. You may need the \`Bison' package in order for those modifications to take effect. You can get \`Bison' from any GNU archive site." rm -f y.tab.c y.tab.h if test $# -ne 1; then eval LASTARG=\${$#} case $LASTARG in *.y) SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` if test -f "$SRCFILE"; then cp "$SRCFILE" y.tab.c fi SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` if test -f "$SRCFILE"; then cp "$SRCFILE" y.tab.h fi ;; esac fi if test ! -f y.tab.h; then echo >y.tab.h fi if test ! -f y.tab.c; then echo 'main() { return 0; }' >y.tab.c fi ;; lex*|flex*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a \`.l' file. You may need the \`Flex' package in order for those modifications to take effect. You can get \`Flex' from any GNU archive site." rm -f lex.yy.c if test $# -ne 1; then eval LASTARG=\${$#} case $LASTARG in *.l) SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` if test -f "$SRCFILE"; then cp "$SRCFILE" lex.yy.c fi ;; esac fi if test ! -f lex.yy.c; then echo 'main() { return 0; }' >lex.yy.c fi ;; help2man*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a dependency of a manual page. You may need the \`Help2man' package in order for those modifications to take effect. You can get \`Help2man' from any GNU archive site." file=`echo "$*" | sed -n "$sed_output"` test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` if test -f "$file"; then touch $file else test -z "$file" || exec >$file echo ".ab help2man is required to generate this page" exit $? fi ;; makeinfo*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a \`.texi' or \`.texinfo' file, or any other file indirectly affecting the aspect of the manual. The spurious call might also be the consequence of using a buggy \`make' (AIX, DU, IRIX). You might want to install the \`Texinfo' package or the \`GNU make' package. Grab either from any GNU archive site." # The file to touch is that specified with -o ... file=`echo "$*" | sed -n "$sed_output"` test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` if test -z "$file"; then # ... or it is the one specified with @setfilename ... infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` file=`sed -n ' /^@setfilename/{ s/.* \([^ ]*\) *$/\1/ p q }' $infile` # ... or it is derived from the source name (dir/f.texi becomes f.info) test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info fi # If the file does not exist, the user really needs makeinfo; # let's fail without touching anything. test -f $file || exit 1 touch $file ;; *) echo 1>&2 "\ WARNING: \`$1' is needed, and is $msg. You might have modified some files without having the proper tools for further handling them. Check the \`README' file, it often tells you about the needed prerequisites for installing this package. You may also peek at any GNU archive site, in case some other package would contain this missing \`$1' program." exit 1 ;; esac exit 0 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: io_lib-1.14.6/COPYRIGHT0000644000031500020650000000571512354177667011302 00000000000000The files in these directories are covered by a mixture of compatible BSD style opensource licences. In summary all this code should be free of GPL issues and is freely available to do with as you wish. Most code is copyright Medical Research council and is made available under this licence: /* * Copyright (c) Medical Research Council 1994. All rights reserved. * * Permission to use, copy, modify and distribute this software and its * documentation for any purpose is hereby granted without fee, provided that * this copyright and notice appears in all copies. * * This file was written by James Bonfield, Simon Dear, Rodger Staden, * as part of the Staden Package at the MRC Laboratory of Molecular * Biology, Hills Road, Cambridge, CB2 2QH, United Kingdom. * * MRC disclaims all warranties with regard to this software. */ Later MRC made the entire Staden Package open source under the 3-clause BSD licence. This copyright message is also included, although it is compatible with the above one. Newer files and changes are copyright Genome Research Ltd using the following compatible BSD licence. Disentangling which is which is somewhat tricky, but it's sufficient to say that work in the CVS/SVN tree from August 2002 will be bound by the GRL licence instead. The GRL licence will have author(s) listed too. Note that these are not the sole authors of the files, but the authors for whom the GRL licence applies. /* * Copyright (c), Genome Research Ltd (GRL). * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * * Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials * provided with the distribution. * * * Neither the name of the Genome Research Limited nor the * names of its contributors may be used to endorse or promote * products derived from this software without specific prior * written permission. * * THIS SOFTWARE IS PROVIDED BY GRL ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL GRL BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED * OF THE POSSIBILITY OF SUCH DAMAGE. */ io_lib-1.14.6/CHANGES0000644000031500020650000020001412617154635010757 00000000000000Version 1.14.6 (6th November 2015) -------------- * CRAM bug fix, reversing a bug introduced during 1.14.5. Output from cramtools could trigger a crash during decoding with scramble. This happened where a HUFFMAN codec was specified with zero symbols. E.g. "DL => HUFFMAN {0, 0}" from cram_dump for a slice where there are no D operators in the cigar strings for this slice. Version 1.14.5 (5th November 2015) -------------- * Scramble now has a way to control the maximum number of bases per slice (default 5Mb), forcing a new slice if this limit is hit before hitting the existing max sequences per slice limit. This improves performance on very long read data. (PacBio, ONT, etc) * Improvements for MacOS X building. * Removed erroneous debugging output from Scramble. * Fixed cram_dump so it works on longer sequences, eg PacBio data. * Fixed cram_size (but not yet cram_dump summary output) to handle multi-byte content_ids when reporting which block type is for which data series. * Fixed a bug with multi-slice containers, broken since r3946 (1.14.1). * Bug fixes to the libmaus2/biobambam2 interface code. Part of this change includes simplifying how auxiliary tag content_ids are assigned for CRAM. * This io_lib release should now work again when being used by the current (albeit 2013) release of Staden Package. Version 1.14.4 (5th October 2015) -------------- CRAM changes: * Fixed a CRAM encoding bug with compression level 6 and above where the resulting CRAM file could not be decoded. This has been in existance since 1.13.8 (and possibly 1.13.6 under rarer conditions). * New scramble option -H to avoid printing header in SAM output. Version 1.14.3 (29th September 2015) -------------- CRAM changes: * Disabled the experimental slice checksum headers (SD and BD *slice* tags) as their behaviour is still undefined and not in the CRAM specification. These were left in in error. * Fixed scram_merge to honour the -R option to specify a region. (NB: This isn't really a properly supported tool, but a test of the library code.) * Fixed a bug in decoding memory that caused lzma level 9 compressed files to be unable to be decompressed. * Minor updates to scramble usage text. Version 1.14.2 (16th September 2015) -------------- CRAM changes: * Bug fix to SAM header parsing so that it now permits nul characters. (This is a long standing bug.) * Bug fix to auxiliary tag compression; we failed to correctly cache the best codec to use, resulting in slower (but valid) compression times. Version 1.14.1 (10th September 2015) -------------- CRAM changes: * Small improvements to compression ratios. CRAM auxiliary fields are now always written to their own blocks. Also now experiment with level 1 zlib compression in addition to the required level, as on some data series this is the best solution. * Removed support for writing CRAM version 1.0. This format was never truely spec compliant anyway due to errors with the first specification. * rANS O1 memory allocation is now via malloc rather than the heap, permitting building on MacOS X again. * Fixed crash in multi-threaded decoding if not decoding positional data (via cram_required_fields() function). * Fixed a bug with non-reference encoded CRAMs and indexing. Version 1.14.0 (10th July 2015) -------------- * The default CRAM format type is now version 3.0. You can still generate version 2.1 files using scramble -V2.1 * Lots of BAM/CRAM code hardening against I/O errors or corrupted data files. Some have been from visual inspection while many have come from automated "american fuzzy lop" fuzz testing. See the ChangeLog for the full list. * Imperovements to compilation; we now compile with -Wall and this should produce no warnings. Let us know if you get them. There is a configure --disable-warnings option to switch off -Wall. * CRAM: added mmap support for references. This can reduce the total memory footprint if many instances of scramble are running and also reduces I/O when we are using small regions of cached md5 references. * CRAM: improved compatibility with Java Cramtools CRC32 checking (Cram version 3.0). We've also now done full integration checking between the two implementations to ensure best compatibility with version 3.0. * CRAM: better support for Biobambam/libmaus; provides an in-memory buffered alternative to the file descriptor to allow better multi-threading performance with libmaus. * CRAM: we now correctly spot sequence "*" when generating a CRAM file so we can correctly export it again (cram version 3.0). Similarly quality "*" is better handled too when being passed on to Cramtools. * CRAM: bug fixed NM:i tag so it no longer counts hard clips. Also fixed NM/MD for sequence "*" and cases where one was previously present but not the other. * CRAM: bug fixed handling unmapped reads with sequence "*". * CRAM: bug fix to index querying when a read starts precisely on a boundary of a cram slice. * CRAM: fixed the container number of blocks field to be computed correctly for multi-slice containers. (Oddly this didn't actually matter for Scramble or Cramtools.) version 1.13.10 (3rd Mar 2015) --------------- * Reduced memory coordinate sorted CRAM files with many references per slice. * More error protection for mismatching .fai/@SQ headers. * Improved handling of alignments off the end of references. version 1.13.9 (29th Jan 2015) -------------- * Improved CRAM stats array usage. Previously it could create sub-optimal HUFFMAN trees in rare situations. Harmless, but larger output than necessary. * The "configure --enable-custom-buffering" (or --disable-) mode, on by default, adds an additional scram_open interface to allow low level I/O operations to be externally defined. This is used within Biobambam to replace stdio with custom code supporting an iRODS backend. See scram_open_cram_via_callbacks(). * CRAM should now be 100% lossless, barring a few specific broken inputs (eg CIGAR strings on unaligned data). If it detects flags, pnext or tlen fields that would differ if decoded using the read-pairing algorithm built in to scramble's cram decoder then it stores the read verbatim to avoid deduplicathing these fields. It also has better support for the Supplementary flag. * Improved support for the Supplementary flags when auto-generating SAM flags. * Fixed an issue where new gcc with -O3 could crash in processing SAM due to SIMD vectorisation and unaligned memory accesses. * Cram_index now works via a pipe, by specifying "-" as the input filename. version 1.13.8 (12th Jan 2015) -------------- * The REF_PATH and RAWDATA variable expansion can now handle URLs without an explicit URL= component. It also understands the format of URLs and doesn't require a double colon (::) to escape a single colon any more. * Removed a few compiler warnings. * CRAM: Improved test harness to test Scramble -e and -x. Fixed an issue related to -x not setting RI data series in some cases. * CRAM: BS:Z and BI:Z now go to separate external blocks, for (usually) improved compression. Also added special blocks for IonTorrent ZM:B and FZ:B tags. * CRAM: Reading CRAM indices is now much faster. Also fixed a bug when doing multiple range queries that fell exactly on CRAM container boundaries. * CRAM: Bug fixes and efficiency improvements to the logic to work out which data-series to decode. * CRAM: Better handling of MD and NM tags when using non-reference encoding. Also sped up the MD string generation. * CRAM: Improved support for dealing with both primary and secondary alignments. * CRAM: Better support for name-sorted data. It worked before, but we had too many re-loads of the reference sequence. Similarly removed pointless reference sequence loads when encoding with scramble -x. * CRAM: Various minor memory leaks removed. * CRAM: Multi-threading updates. Fixed some uninitialised memory accesses causing crashes on SPARC/Solaris. Also fixed issues when using range-requests while multi-threading. Less mutex locking when using name-sorted data. * CRAM: Removed spurious warnings about lack of EOF block when reading older format CRAM files. * CRAM: Bug fix to the (undocumented) SAM 'd' aux type. Only used here because samtools supports it. * CRAM: Bug fix when attempting to decode 0 bytes from an external block. * CRAM: More support for version 3.0. The 'b' and 'q' CRAM feature codes have been implemented along with better support for the old BYTE_ARRAY_LEN encoder. Support for compressed SAM headers. Unified RANS0/RANS1 codecs to RANS (switches order itself). EXPERIMENTAL: enable using "scramble -V3.0". This has now been cross-validated against Java cram_tools 3.0 format. (Note this is incompatible with the v3.0 files produced from earlier Scramble.) * BAM: Added support for CIGAR strings above 65535 elements long. See http://sourceforge.net/p/samtools/mailman/message/30672431/ * BAM: Removed buffer overrun in records with no auxiliary data and a record length of 1024 or a higher power of 2. * BAM: Handle newline/carriage-return format files. * BAM: Bug fixed the bin/index calculation; Now [beg,end) instead of [beg,end]. * BAM: Fixed the SAM parser to handle integers between -2billion and +4billion. (Incoming change to the SAM spec.) Version 1.13.7 (30th May 2014) -------------- * CRAM: Bug fixed the required fields detection code. (It was crashing when running scram_flagstat on Cramtools output.) * CRAM: Bug fix to cram_dump output on files using E_BYTE_ARRAY_* codecs. * BAM/CRAM: Modified the thread-pool to try and minimise the number of threads used when the program hits an I/O bottleneck. This avoids CPU auto-frequence-scaling causing slowdowns. Version 1.13.6 (19th May 2014) -------------- * CRAM: Major overhaul of how data series are assigned to CORE vs EXTERNAL blocks. The net effect is that CRAM file should become slightly smaller and also faster for decoding when the decoder only needs specific SAM columns. This has dramatically sped up flagstats. * CRAM: Selection of compression algorithm for external blocks is now more advanced. We allows specifying multiple compression (eg gzip, bzip2, lzma, rANS) and the tool will learn which methods work best for which blocks and adapt. (This matters only for v3.0 CRAM specification, so is experimental.) * Cram_dump should now do a better job of auto-detecting binary vs printable text, allowing printing of arbitrary blocks in a friendlier fashion. It also now tracks which block is for which data-series and displays these in the summary output. * Cram_index has been refactored, with the code moving out of the program and into the io_lib library. It has also been bug-fixed to cope with multiple references packed into a single cram container. * CRAM: bug fixes - The EOF writing code now uses the correct bit stream for value -1. - Changing the version with scramble -V wasn't having any effect. - The BETA codec now correct honours beta offset value for zero length codes. (Previously unused) - EOF now returns the correct value when a CRAM file is closed before attempting to decode the first sequence. (Ie header only.) * BAM: bug fixes - Adding @SQ lines to a BAM file with no textual representation of the SAM header now works. - Fixed an issue in multi-threaded decoding, causing rare deadlocks. * CRAM: experimental changes - Further tweaks to the rANS codec used for the version 3 CRAM. (Ongoing work, to be used for experimentation only.) Version 1.13.5 (28th February 2014) -------------- * CRAM: Fixed two bugs involving reference sequences: - When loading a fasta file containing un-folded sequence (all on one line) the input data wasn't uppercased. This could lead to invalid slice MD5 sums if the fasta file contained lowercase sequence. - In some situations the MD5 header in the @SQ line would be computed on a blank sequence, leading to header errors. Version 1.13.4 (17th February 2014) -------------- * BAM: Fixed some buffer overruns in BAM decoding. * CRAM: Added support for CRAM EOF blocks (new in CRAM v2.1 specification). Also improved BAM EOF block checking. v2.1 is now the default output version. * CRAM: Fixed an error causing multi-threading to take longer for the first additional thread. * CRAM: Improved memory-caching of reference sequences when fetching via MD5 path. Also reduced memory used when loading via REF_PATH. * CRAM: Experimental / alpha quality code for CRAM version 3.0, including new codecs (rANS & arithmetic coders) and CRCs. * CRAM: Small improvements to the bzip2 (-j) mode. It now periodically tests bzip2 vs gzip and uses whichever is best rather than forcing all compression to go via bzip2. * CRAM: Fixed crash when handling CRAM files with non-sequential reference IDs. * Scramble: Now supports 8-way quality binning as an output option. * Index_tar: Fixed debian bug #729276 - buffer overflow. * Improved Windows building via cross-compilation. Version 1.13.3 (25th October 2013) -------------- * Improved robustness of CRAM support. * Fixed important bugs in CRAM multi-threading support. * CTF has been removed from io_lib source tree. Use 1.13.2 or older if you still need this. * CRAM now supports the new SAM 0x800 supplementary flag. * Minor optimisations to CRAM compression levels (-1, -3 etc) so they are more distinct. * Fixed bug with curl timeouts when fetching large traces and/or reference sequences. Version 1.13.2 (25th June 2013) -------------- * Added multi-threading support for sam/bam/cram I/O. * New scram_flagstat command, mainly to act as a test harness for reading speed. * Bug fixes and improvements to reference sequence handling, in particular when dealing with unsorted data. * Sped up SAM decoding by about 70%. Also improved robustness of header parsing. * Improved automatic file type detection (scramble). * The CRAM header block is now padded out with lots of nul characters to permit inline editing, although we have no tool or API to do this currently. Version 1.13.1 (3rd May 2013) -------------- * CRAM now has support for storing unsorted data and for using non-reference based encoding (although this isn't very efficient). * CRAM can now use the EBI MD5 server: http://www.ebi.ac.uk/ena/cram/md5/%s The library will use a colon separated REF_PATH environ (see TRACE_PATH for analogous examples) to find references, and if set will write a local MD5 cache to REF_CACHE environ. * Added a rudimentary scram_pileup command, mainly as a test of the library. * CRAM now supports bzip2 encoding, specified using scramble -j. * Various speed increases. * Improved BAM support for non-intel hardware. * Bug fixes to CRAM mate flags in various scenarios. * Fixes to generation of NM and MD strings. * Can now code with BAM files containing no text headers; only binary @SQ records. * Can also cope with SAM/BAM files containing no @SQ records at all (entirely unmapped). * More rigorous error checking in BAM/SAM/CRAM code. * The code is more compatible with linking into samtools (a pilot project is ongoing). * CRAM encoding is more robust to broken CIGAR strings. * Various bug fixes to cram indexing. * [API] Various function renaming, to allow this and samtools libraries to be linked into the same applications and also for tidyness. *_next_seq() becomes *_get_seq() refs type is now refs_t. cram_fd->SAM_hdr is now cram_fd->header sam_header_*() becomes sam_hdr_*() * [API] bam_construct_seq now has a different calling syntax, to make it easier for memory allocation. * [API] Added various auxiliary field construction functions to BAM. * [API] Setting cram options is now done via a varargs syntax. * [API] Added extern "C" around headers to permit use by C++. Version 1.13.0 (21st Mar 2013) -------------- * Added SAM, BAM and CRAM APIs. * Added scramble and cram_merge tools using the above APIs. * Copied in (needs to be "move") dstring, string_alloc and zfio files from main Staden Package tree. * Minor code tidyups to remove warnings from gcc -Wall and from the Intel compiler. Version 1.12.5 (3rd Feb 2011) -------------- * Fixed detection of requirement for va_copy(); affecting some Mac builds. * Added hash_exp. I'm not sure this is of pratical use, but it was in the source tree and in theory at least still works. * Removed minor memory leak in HashTableResize(). Version 1.12.4 (7th July 2010) -------------- * Fixed bug added with 1.12.3 in extracting data from .hash files. Version 1.12.3 (6th July 2010) -------------- * Resolved compilation problems: endianness and large file support are now detected in a wider variety of cases. * srf2fastq now automatically outputs appropriate calibrated vs non-calibrated values without having to explicitly use -c. This option is now only needed when both CNF1 and CNF4 ZTR chunks are present (it'll default to CNF4). * srf2fastq no longer forces "." to be reformatted to "N". * srf_dump_all improvements when facing read names with "#index" from tagged runs. * srf_filter can now act as a pipe, reading from stdin and writing to stdout. * hash_tar can now index multiple tar files together into one .hash file. hash_list -l has been extended to list the originating .tar. Additionally "hash_tar -m map_file" allows renaming of tar filenames prior to indexing, allowing for a hacky way to work around modified names, cases, directory layouts, etc. Version 1.12.2 (15th Jan 2010) -------------- * Extra options in srf2fastq: -S to output split regions sequentially to stdout. -r to request a region to be reverse complemented before output. * API addition - Added pooled_alloc.h. This is a general purpose mechanism of pooling multiple fixed size memory allocations into fewer malloc() library calls. - HashTables now have a HASH_POOL_ITEMS option to use the above pooling system. This reduces memory wasted and speeds them up. * Bug fix: Fixed ztr_add_text() so that is leaves two nul bytes on the end of TEXT chunks instead of one, as documented in the ZTR specification. * Bug fix: Fixed buffer overrun in parse region chunks; srf2fastq and srf2fasta. * Bug fix: API read_sff_read_data() did not skip ahead to the next 8-byte boundary. Version 1.12.1 (7th August 2009) -------------- * Fixed the endianness detection in io_lib/os.h when used in conjuction with auto-conf. This fix allows for "fat" binaries to be built on MacOS X. * Fixed io_lib-config program to use -lstaden-read instead of -lread. Version 1.12.0 (29th July 2009) -------------- * Renamed the library from libread.so to libstaden-read.so. This was already the case for the Fedora bundled RPM. * Switched to using libtool to allow building of dynamic libraries. Note that this is tweaked to not use -rpath though. Proper library versioning has been added too. * Removed deprecated platform specific tools: illumina2srf, srf2illumina. * Srf_info now reports the compressed size of chunks, sorted by type, in addition to their counts. It also correctly sums to over 2Gb now for base-call counting. * Various SRF tools have had the maximum sequence length changed from 1024 to 10000. This allows for even the most gifting capillary traces. * API - The Array functions now take size_t instead of int for the array dimensions. (API CHANGE) - Removed the (unused?) pipe2 function from compress.h. This was intended to be internal only, and it now clashes with a new linux kernel function. (API CHANGE) - Added iterators to the HashTable* api. * Bug fixes - Fixed a memory allocation bug in the codes2codeset() function. - ztr2read() should now work better on ZTR structs with no BPOS chunk. - Fixed various srf tools when facing an SRF file containing zero chunks in the data block header. - index_tar handles some GNU tar extensions better (LongLink). Version 1.11.6.1 (9th December 2008) ---------------- * Identical except removal of a debugging printf statement in solexa2srf. Version 1.11.6 (9th December 2008) -------------- * illumina2srf, srf2illumina, srf2fastq - We no longer change from log-odds to phred when storing data in SRF, instead preferring to just mark it in correct input scale. srf2fastq now honours this scale information and so the conversion from log-odd to phred is done at the export stage instead. (Chris Saunders) - Bug fix to srf2illumina qcal conversion. Combined with above changes the qcal output should now be 100% identical to the original data input via illumina2srf. * API - New function srf_next_ztr_flags. This is like srf_next_ztr but also returns the SRF flags value (good/bad read, etc). * srf_filter, srf2fastq, srf_info (Steven Leonard) - Improved support for multiple index blocks in SRF files, eg from manually concatenated files. - srf2fastq now sports options for splitting the output into multiple fastq files when the input data is a paired-end run. Version 1.11.5 (3rd December 2008) -------------- * Illumina2srf - Fixed major bug with using *both* -qf and -qr together. The quality values for the reverse strand were shifted by one character. - Fixed qcal quality values so they're not shifted down by 64 (illumina format fastq). - Fixed bugs in parsing directory names if not matching the expected format. * Removed major memory leaks from srf_filter. * hash_sff now has support for outputting the table of contents to a new file rather than appending to an existing sff file or copying the entire contents to a new file. * Various man pages have been added. The list is still incomplete though. Additions are most welcome. * New program: srf_list. This lists and/or counts the number of sequences within an SRF file. Version 1.11.4 (11th September 2008) -------------- * New "make check" build target to perform some automated tested. Currently limited to testing the SRF tools. * Fixed machine endianness issues. Specifically this resolves known Intel MacOS-X problems. * New SRF tools - srf_info: reports simple metrics on the contents of an SRF file. - srf_filter: slices and dices the SRF file to produce a new one with various types of data removed. * illumina2srf - Minor float/int rounding change when storing int/nse/sig2 data. - Improved error detection such that it returns a failure code more often given a parsing issue. - Added -pf/pr parameters for storing Phasing files. - Reduced memory usage, especially on large numbers of clusters per tile. We may now produce multiple DBH blocks per tile. Also major reduction to memory when handling the .params files. - Added storage of 2nd .params file (firecrest). - Fixed bug in the automatic base-call version identification. - Fixed a bug with using -qf/qr when not providing all tiles (ie not starting from tile number 1). - Bug fix with storing the reverse matrix file in paired-end runs; a duplicate of the forward one was being used instead. * General SRF - Improved error checking in srf_index_hash. It now spots duplicate reads and also has a -c option to check an existing SRF file without writing the index. - Fixed a memory leak in srf_next_ztr(), triggered in srf2fastq -C. Version 1.11.3 (9th July 2008) -------------- * illumina2srf change: - IMPORTANT bug fix to illumina2srf when using the "-r" flag to store raw (.int and .nse) data. This could often result in corrupting the data ZTR meta-data for the SMP4 chunks resulting in confusion over which trace channels are raw and which are processed. Fortunately the corruption is reversable. For more details and a fix see the ssrformat announcement of the issue: http://www.bcgsc.ca/pipermail/ssrformat/2008-July/000531.html * General SRF changes: - Removed a memory leak in ztr_find_chunks(). - Added SRFB_NULL_INDEX as an SRF block type. This provides a more transparent way to skip over the 8 zero value bytes that may exist at the end of an SRF file missing an index block. * Other changes - Fixed a bug in extract_seq when operating on multiple files and outputting to a file rather than a pipe. An erroneous seek in the mFILE code lead to it repeatedly truncating the output, resulting in one sequence file at the end instead of multiple files. Version 1.11.2 (4th June 2008) -------------- * solexa2srf/srf2solexa changes: - Renamed to illumina2srf/srf2illumina. - Incorporated support the IPAR format (Come Raczy, Illumina). - Added support for qcal format data (Come Raczy). - Added -C option to tag data as failing the chastity filter, but it is still included in the SRF output (Camil Toma). - Many more additional features added to srf_dump_all provided by Camil Toma. It somewhat overlaps srf2solexa now, but may still have it's own use. - Ztr TEXT chunks now output in srf2solexa. - Improved ways to specify matrices (-mf/-mr) in solexa2srf. - solexa2srf is substantially faster when reading gzipped files. - The -N/-n naming scheme options for solexa2srf now default to the same conventions used by GERALD. Added additional %d, %m and %r format rules too. - Calibrated confidence values are now output if -qf or -qr paramaters are used, in addition to uncalibrated ones. These are stored in phred scale in a CNF1 ZTR chunk. * srf2fastq now has a -c option to output calibrated confidence values (if present). It also supports multiple archives on the command line. * SRF fixes: - Better handling of full pathnames in solexa2srf. - Use binary IO mode; fixes bugs on Windows. - Fixed an error where some chunks were not compressed properly (valid still, just not compressed). - Removed memory corruption in solexa2srf (in rare cases). - Fixed bug with binary formatted read_id suffixes (fixed by Cristian Goina). - Initialised memory in hash table code (used in indexing amongst other things). - Indexes very occasionally failed to find a trace that did infact exist. - Removed memory leak in construct_trace_name (patch from John Emhoff, Helicos). - Fixed reading of XML block in srf_read_xml(). From John Emhoff. * Added SRF= format string to TRACE_PATH to facilitate on-the-fly extraction from indexed SRF files. This means io_lib can now transparently pull traces from an archive or treat it as if it was a directory - eg "foo.srf/IL15_..._123:456". * Bug fix (SF-1898427) - now builds on Fedora. * Better handling of 64-bit file size sensing in autoconf. Version 1.11.1 (not officially released - internal testing only) -------------- Version 1.11.0 (20th February 2008) -------------- First official release of v1.11.0 and SRF support. * Further speed improvements to solexa2srf. * Added extract_qual program (analogous to extract_seq). * Added new srf2fasta program and also sped up srf2fastq by 25%. * Solexa2srf now supports storing the raw .int/.nse trace data instead of or in addition to the processed .sig2 data. * Solexa2srf now stores enough to reproduce sufficient firecrest output to rerun the solexa basecaller. Specifically that's a couple matrix files and 'region' data for paired end runs. * Minor changes / bug fixes: - extract_seq no longer attempts to gzip the output by default if the input was gzipped - ztr2read conversion (eg visible in trace_dump) now correctly handles ZTR files with multiple SMP4 chunks. - Fixed memory leaks in various bits of SRF code (srf_extract_linear mainly and srf_index_hash). Version 1.11.0b8 (25th January 2008) ---------------- (Hopefully final beta test of SRF code before official 1.11.0 release.) * Bug fixed the index format. We incorrectly handled null dbhFile and containerFile elements plus incorrectly computing the index size. * Improvements for solexa2srf code. - Can store raw vs processed data - Stores matrix and .params contents. - Optional chastity filtering. - Input data may now be gzipped. * Minor fixes to output of trace_dump and ztr_dump. * Minor srf_index_hash bug fixes (when dealing with concatenated indexed files). Version 1.11.0b7 (11th January 2008) ---------------- * IMPORTANT bug fix to the SRF format. The Data Block Header had the blocksize field 4 bytes too large. Now fixed. Old SRF files will not be readable by this new code (as they were in error). Version 1.11.0b6 (2nd January 2008) ---------------- * Changes to adhere to SRF v1.3: * Removal of the readID counter. * Added support for printf style name formatting. * Minor index format tweaks (64-bit data, dch/container filenames). Index format is therefore now 1.01. Version 1.11.0b5 (8th November 2007) ---------------- * Major reorganisation of directories. All library code is in subdir "io_lib". The code now uses "io_lib/xxx.h" in all include statements too. * Fixed memory leaks in ZTR code * Various SRF bug fixes and better support for sample OFFS metadata in both ZTR/ZTR. * Added srf_extract_hash program to perform random-access on a hash indexed SRF archive. Version 1.11.0b4 (26th October 2007) ---------------- * The SRF format now supported adheres to version 1.2. * More speedups, in particular focusing on uncompression this time, so srf2solexa is an order of magnitude faster. * ztr2read() now honours the read_sections() options and so is much faster when only decoding (say) base and quality values. * New program srf2fastq. * Internal changes to various ztr data structures. If you use these yourself take note of the new ztr_owns fields to avoid memory leaks. Version 1.11.0b3 (16th October 2007) ---------------- * Major speed improvements for compression. solexa2srf is now 30-35x faster. * Fixed various buffer overruns and memory leaks reported by valgrind in the new deflate interlaced and SRF code. Version 1.11.0b2 (2nd October 2007) ---------------- * Minor version change to fix typoes in Makefile system. Version 1.11.0b1 (28th September 2007) ---------------- Beta release 1. * Added preliminary SRF support. This consists of a new subdirectory 'srf' (yes these all really need merging into a single directory, but that's a later task), a substantial update to ZTR and a variety of SRF tools in progs. The old huffman_static.[ch] files were renamed and substantially worked upon to create deflate_interlaced.[ch]. Added new compression types. xrle2, tshift and qshift. The latter two of these are very specific to trace and quality packings. May need to rename to be more generic. Version 1.10.3 (???) -------------- * The HashTable interface now also allows for Bob Jenkins' lookup3 64-bit hash function. This allows for substantially larger hash tables. * Replaced tempnam() with tmpfile(). On systems without tmpfile (Windows) this is simply a wrapper to use the old tempnam calls. * hash_extract bug fix for windows: now operates in binary mode. * INCOMPATIBLE CHANGE: On windows we now use semi-colon as the path separator. The reason is that with the MinGW getenv() seems to do "clever things" with PATH variables and consequently ends up corrupting our clumsy attempt of escaping colons in paths. * Fasta format is semi-supported in "plain" format. It returns the first entry when reading. * Experimental support for static huffman (STHUFF) compression type. Version 1.10.2 (30th May 2007) -------------- Primarily this is a bug fix release. * Convert_trace now has -signed and -noneg options to control signed vs unsigned issues when shifting trace data about. * Include files now have C++ extern "C" style guards around them. * Various programs now accept -ztr command line arguments to force ZTR format reading. This is for consistencies sake only and it is recommended that users simply let the programs automatically detect the file formats. * Hash_exp now outputs to the same file containing the experiment files (in appended hash-table mode). It also has better Windows handling (stripping ^M and using binary mode). * hash_extract bug fix: now only needs at least 1 filename specified when fofn mode is not in use. * mFILE emulation: bug fixes when dealing with ftruncate, append mode, checking for read/write flags, new mfcreate_from() function. * ZTR: added an experimental ZTR_FORM_STHUFF compression scheme. This uses static huffman encoding on a predefined hard-coded set of huffman tables. The purpose (as yet not put into action) is to allow efficient compression of very small data sets for Illumina, AB SOLiD, etc style traces. Version 1.10.1 (20th June 2006) -------------- * Trace files are now opened in read-only mode by default (open_trace_file func). Version 1.10.0 (15th June 2006) -------------- * Two new environment variables are used, EXP_PATH and TRACE_PATH, to replace RAWDATA. EXP_PATH is used when the new open_exp_mfile() function is called and TRACE_PATH is used when open_trace_mfile() is called. Both default to using RAWDATA when EXP or TRACE env is now found. Also defined a trace type TT_ANYTR which is analogous to the existing TT_ANY except it will not look for experiment or plain format files. Modified the various example programs to use the appropriate open call. This allows for traces and experiment files to have identical names, such as is usually the case when querying named trace objects from a trace server. * New program: extract_fastq to generate FASTQ output format. * New program: hash_exp. This allows multiple experiment files to be contatenated together and then indexed so io_lib can still treat them as single files. * The URL based search path mechanism now by default uses libcurl instead of wget. This makes it considerably faster. * If an element in RAWDATA, EXP_PATH or TRACE_PATH now starts with the pipe symbol ("|") then the compressed file extension code is negated for that search element. (This prevents looking for foo.gz, foo.Z, foo.bz2, etc if it fails to find foo.) * Added HashTableDel() and HashTableRemove() functions to take items out of a hash table. * ZTR's compress_chunk() and uncompress_chunk() functions are now externally callable. * New program io_lib-config. This has --version, --cflags and --libs options to query the appropriate configuration when compiling and linking against io_lib. There's also a new io_lib.m4 file which provides an AC_CHECK_IO_LIB autoconf macro to use io_lib-config and generate appropriate Makefile substitutions. * Updated the autoconf code to support libcurl searching. * Renamed SCF's delta_samples[12] functions to be scf_delta_samples[12]. (From Saul Kravitz) * Added a '-error filename' option to convert_trace. (From Saul Kravitz) * Bug fix: HashTableAdd() now works properly with non-string keys. * Bug fix to read_dup(). * Bug fix to xrle which could read past the array bounds. It also now handles run-lengths of 256 or more. * Bug fix: the fwrite_* functions no longer close the FILE pointer given to them. * Bug fix to fdetermine_trace_type(); it now rewinds the file back. * Bug fix to mfseek and mrewind; they both now clear the EOF flag. * Bug fix to find_file_dir(). Version 1.9.2 (14th December 2005) ------------- * Added AC_CHECK_LIB calls for the nsl and socket libraries (gethostbyname / socket functions). Needed for Solaris compilations. * In extract_seq, used open_trace_mfile instead of open_trace_file. Functionally this is the same, but it is faster. * fwrite_reading() now frees the temporary mFILE it created. * mfreopen_compressed() no longer closes the original FILE pointer. This brings it back into line with the original functionality provided in 1.8.x. It also cures a bug where the old file pointer was often left opening meaning operates on many files could could cause a resource leak ending in the inability to open more trace files. * Added private_data and private_size to the Read struct. Populate these when reading SCF files. * Hash_extract now returns an error code to the calling process upon failure. * Major overhaul of hash_sff. It no longer loads the entire file into memory. It can now cope with adding a hash index to an archive that already contains an index. * Added support for 454's "sorted index" code. NB this is based on the extraction code from their getsff.c code and has not been tested with a genuine indexed SFF file yet. * Fixed an uninitialised memory access in mfload(). * Fixed a bug where hash query searches for items that do not exist and map to an empty bucket could cause hangs or crashes. * Fixed a hang in mfload() when reading a zero length file. Version 1.9.1 ------------- * Implemented the SFF (454) file structure, currently as read-only. This is supported both as an archive containing multiple files and also as a single SFF entry. * Allow for SFF=? components in RAWDATA search path. * Tar files, SFF archives and hashed archives (eg hashed tar, sff, or "solid" archives) may now be used as part of a pathname. Eg if a tar file foo.tar contains entry xyzzy.ztr then we can ask to fetch trace foo.tar/xyzzy.ztr instead of requiring setting of the RAWDATA environment variable. * Changed the HashFile format slightly. It's now format 1.00. The key difference is that it has a file footer pointing back to the hashfile header (so the hashfile can be appended to an archive) and it also has an offset in the header to apply to all seeks within the archive itself, so it can be prepending to an archive that's already been indexed without breaking the offsets. Extended the hash_tar program to allow control over these header options. * Fixed divide-by-zero buf when calling mfread for zero * Removed the warning for unknown ZTR chunk types. It now just silently stores them in memory. * mfopen now honours binary verses ascii differences (and so updated Read.c calls accordingly) so that Windows works better. * Removed file descriptor 'leak' in write_reading(). * Unset compression_used when opening uncompressed files instead of leaving as the last value. * Fixed a file descriptor (and some memory) leak in freopen_compressed. (Bug ID #1289095) * Fixed the hash file saving and loading so that it works on all platforms instead of just x86 linux. There were bugs in assuming the size of structures. The assumptions are still there in that I assume they pad the same internally (for ease of coding - we can change it when we finally see a system which operates differently), but the final "boundary" padding has been resolved. Version 1.9.0 ------------- * ***INCOMPATIBILITIES*** to 1.8.12 - The Exp_info structure now internally contains an "mFILE *" member instead of "FILE *" member. If you use the experiment file functions for I/O then hopefully it'll still work. However if you directly manipulated the Exp_info yourself using fprintf etc then you will need to modify your code. - Some functions no longer have external scope. Most of these did not previously have external function prototypes. If you have a burning need to use one of these, please contact me directly via sourceforge. The full list is: ctfType (global variable) ztr_encode_samples_C replace_nl ztr_encode_samples_G ctfDecorrelate ztr_encode_samples_T exp_print_line_ ztr_decode_samples find_file_tar ztr_encode_bases find_file_archive ztr_decode_bases find_file_url ztr_encode_positions ztr_write_header ztr_decode_positions ztr_write_chunk ztr_encode_confidence_1 ztr_read_header ztr_decode_confidence_1 ztr_read_chunk_hdr ztr_encode_confidence_4 compress_chunk ztr_decode_confidence_4 uncompress_chunk ztr_encode_text ztr_encode_samples_4 ztr_decode_text ztr_decode_samples_4 ztr_encode_clips ztr_encode_samples_common ztr_decode_clips ztr_encode_samples_A - Some external functions have changed prototypes to use mFILE instead of FILE. Most cases of these I've put in place a wrapper function with the old name, but not yet all. Functions changed are: ctfFRead write_scf_samples32 ctfFWrite write_scf_base exp_print_line write_scf_bases exp_print_mline write_scf_bases3 exp_print_seq write_scf_comment read_scf_header fcompress_file read_scf_sample1 fopen_compressed read_scf_samples1 freopen_compressed read_scf_samples31 be_write_int_1 read_scf_sample2 be_write_int_2 read_scf_samples2 be_write_int_4 read_scf_samples32 be_read_int_1 read_scf_base be_read_int_2 read_scf_bases be_read_int_4 read_scf_bases3 le_write_int_1 read_scf_comment le_write_int_2 write_scf_header le_write_int_4 write_scf_sample1 le_read_int_1 write_scf_samples1 le_read_int_2 write_scf_samples31 le_read_int_4 write_scf_samples2 fdetermine_trace_type - Removed support for the OLD unix "pack" program as a valid trace compression algorithm. - Removed CORBA support. (It wasn't enabled and I've no idea if it even worked as I cannot test it.) - The default search order for RAWDATA now has the current working directory at the end of RAWDATA instead of the start. * Significant speed ups, particularly when dealing with reading gzipped files or when extracting data from tar files. * New external functions for faster access via mFILE (memory-file) structs. These mimic the fread/fwrite calls, but with mfread/mfwrite etc. * Numerous minor tweaks and updates to fix compiler warnings on more stricter modes of the Intel C Compiler. * Preliminary support for storing pyrosequencing style traces. This has been modeled on the flowgram data from 454, but should be applicable to other platforms. ZTR has been updated to incorporate this too. The Read structure also has flow, flow_order, nflows and flow_raw elements too. Code to convert these into the more usual traceA/C/G/T arrays exists currently as part of Trev (in tk_utils in the Staden Package), but this may move into io_lib for the next official release. * New hash_tar and hash_extract programs. These replace the index_tar program for rast random access. For RAWDATA include "HASH=hashfile" as an element to get io_lib to use the archive hash. It's possible to create hash files of most archive formats as the hash itself contains the offset and size of each item in the archive. This means that extracting an item does not need to know the format of the original archive. Some benchmarks show that on ext3 it's actually faster to extract files from the hash than directly via the directory. This was testing with ~200,000 files, whereupon directory lookups become slow. I'd imagine ResierFS or similar to be faster. * Added an XRLE encoding for ZTR. This is similar to the existing RLE mechanism but it copes with run length encoding of items larger than a single byte. It's current use is for storing the 4-base repeating flow order in 454 data. Version 1.8.12 -------------- * The ABI format code now reads the confidence values from KB (via PCON field). * New program: trace_dump. Like scf_dump, but deals with generic input formats. * Slightly more sensible average spacing calculation in the ABI reading code. It's still not perfect, but is only used when the real spacing value is negative or zero. * Disabled the base-reordering fix for ABI files. We believe the bug causing this no longer exists. * Expriment file format: added FT (EMBL feature table) and LF (LiGation; a combination of LI and LE) records. * Experiment files: strip out digits from the sequence we read (for better support of EMBL files). * Experiment files: fixed a potential buffer overrun in the conversion of binary confidence values to ascii values. * Minor improvements to portability (INT_MAX vs MAXINT2) and removal of some compilation warnings. * Extract_seq now accepts a -fofn argument. * New functions: read_update_base_positions() and read_udpate_confidence_values() to replace read_update_opos(). These apply an edit buffer to the sequence details and are used (for example) within Trev for saving edits back to a trace file. * Better error handling in fcompress_file(). * New specifiers in RAWDATA. Added a generic URL format (eg "URL=http://some/where/trace=%s") implemented via use of wget. There is also an ARC= format to make use of the Sanger Trace Archive, although currently this will not work externally. * Zero memory used in read_alloc(). Fixes to read_dup(). Version 1.8.11 -------------- * Rewrote the background subtraction in convert_trace to deal with each channel independently. * Make install now install the include files (all of them, although not all are strictly required) in $prefix/include/io_lib/. * Moved the ABI filter wheel order (FWO) reading from outside the sample reading code into the general reading bit as this is needed for reading the comments too (it also applies to the order of the signal strengths). Hence when the READ_COMMENTS section only is defined it now works correctly. * Moved the DataCount #defines into static values and added a abi_set_data_counts function to change these. This allows reading of the raw data from ABI files. This is used within the new convert_trace -abi_data option. * Removed a one-byte write buffer overflow in the CTF writing code. * New Experiment file records WL and WR for indicating clip points within a WT trace. * Removed the saved copy of fp for exp_fread_info in 'e' structure as it doesn't belong to us. (If we do store it there then the exp_destroy_info function will free it and this causes bugs.). POTENTIAL INCOMPATIBILITY: if you assumed that exp_destroy_info closed the files that you opened and passed into exp_fread_info, then this is no longer true. * New function read_dup() to copy a Read structure. * get_read_conf() now deals with loading confidence values from any suitable format and not just SCF. * Fixed memory leak in ztr (ztr->text_segments). Version 1.8.10 -------------- * Added Steven Leonard's changes to index_tar. It no longer adds index entries for directories, unless -d is specified. It also now supports longer names using the @LongLink tar extension. * Fixed a bug in exp2read where the base positions were random if experiment files are loaded without referencing a trace and without having ON lines. * New program get_comment. This queries and extracts text fields held within the Read 'info' section * Overhaul of convert_trace to support the makeSCF options (normalise etc). Version 1.8.9 ------------- Sorry this isn't a proper changes-by-source listing. Any suggestions for how I collate the 'cvs log' output into something more concise? The below text is simply a list of changes, but more complete than in the NEWS file. * ZTR spec updated to v1.2. The chebyshev predictor has been rewritten in integer format. The old chebyshev still has a format type allocated to it (73), but the new ICHEB format (74) is now the default. The old floating point method was potentially unstable (eg when running on non IEEE fp systems). The new method also seems to save a bit more space. * The docs and code disagreed for CNF4 storage. Changed the docs to reflect the code (which does as intended). * ZTR speed increase. Follow1 is substantially faster, increasing write times by about 10%. * New named formats types. ZTR1, ZTR2 and ZTR3. ZTR defaults to ZTR2, but we can explicitly ask for another compression level if desired. Also explicit statement of format (TT_ZTR instead of TT_ANY) removes the need for a rewind() call and so ZTR can now work through a pipe. * General tidy up to remove a few compilation warnings (missing include files, signed vs unsigned issues, etc). * Initial support is included for BioLIMS integration, but this is not complete. (Unfortunately it requires access to a non-public library.) * New function compress_str2int - opposite of existing compress_int2str. * (Steven Leonard). Uses zlib for gzip compression and decompression. These are extracts from the full Staden Package change log. They may not be immediately obvious when taken out of context, but we feel this information may still be useful to the users of io_lib. 23rd August 2000, James ----------------------- 1. Removed find_trace_file and added an open_trace_file function. The idea is that searching for a files existance is better done by attempting to open it. This in turn allows for more possibilities of file searching. Makefile utils/open_trace_file.c read/Read.c read/scf_extras.c read/translate.[ch] progs/extract_seq.c 2. Added a TAR option to RAWDATA. We can now read trace files directly from tar files (although they cannot be written to directly). utils/open_trace_file.c utils/tar_format.h 3. Created an index_tar program to optimise tar reading, although it is not mandatory. progs/index_tar.c progs/Makefile 4. Fixed a bug when dealing with plain text files containing spaces. plain/seqIOPlain.c 31st July 2000, James --------------------- 1. Renamed TTFF to be ZTR. read/Read.[ch] utils/traceType.c utils/compress.c ttff/* -> ztr/* README 2. ZTR reading will now stop when it spots a ZTR magic number. This allows concatenation of ZTR files. ztr/ztr.[ch] 15th June 2000, James --------------------- 1. Added a TTFF_FOLLOW filter type to TTFF. This is enabled with compression level 2 for the chromatogram data. io_lib/ttff/ttff.[ch] io_lib/ttff/compression.[ch] 9th June 2000, James -------------------- * RELEASED 1.8.4 */ 1. Added zlib bits to windows compilation. io_lib/mk/windows.mk 2. Updated convert_trace. It can now reduce sample-size to 8-bit (with the "-8" option) and the formats may now be specified as either integer or text format. The text format is case insensitive. io_lib/progs/convert_trace.c io_lib/utils/traceType.c 3. More windows binary vs ascii fixes. When reading we switch to binary mode before attempting fdetermine_trace_type, otherwise it fails to auto-detect TTFF (which includes a newline as part of the magic number). Also added a _setmode() call to the fwrite_reading code too. io_lib/read/Read.c 4. Changed the default compression technique of TTFF to that used in 1.8.2. I accidently left it set to the experimental dynamic-delta method in 1.8.3, which currently doesn't have the uncompression function! Also removed lots of debugging output. io_lib/ttff/ttff.c io_lib/ttff/ttff_translate.c 5. Bug fix to exp2read - when no right hand quality cutoff is specified we were defaulting to the left end of the trace, instead of the right end. (This only happens when opening experiment files which do not have clip points.) io_lib/read/translate.c 6. Changed the strftime() format in ABI reading code to use %H:%M:%S instead of %T, as %T doesn't appear to be part of ANSI (I think it's probably XPG4-UNIX). It worked on Unix machines, but not on MS Windows. io_lib/abi/seqIOABI.c 8th June 2000, James -------------------- * RELEASED 1.8.3 */ 1. Updated the CTF support so that it includes a couple of new block types. This allows for base positions being non-sequentially ordered, as is possible in severe compressions. io_lib/ctf/ctfCompress.c 2. Overhaul of TTFF format - now more PNG based in style. Still highly experimental. io_lib/ttff/* 16th May 2000, James -------------------- * RELEASED 1.8.0 */ 1. Added szip support. Szip generally gives better compression ratios than gzip and often marginally better than bzip2, but is generally considerably slower at decompression. io_lib/utils/compress.[ch] 2. Merged in Jean Thierre-Mieg's CTF code. This is a compressed trace format which holds the same data as SCF, but in reduce space. io_lib/read/Read.[ch] io_lib/utils/traceType.c io_lib/ctf/* 3. Added my own highly experimental TTFF format. (Thanks to Jean Thierre-Mieg for re-awakining my interest in this.) TTFF files are typically equivalent in size to bzip2'ed SCF files, but are much quicker to write than any of the currently supported compressed formats. Depends on zlib. io_lib/read/Read.[ch] io_lib/utils/traceType.c io_lib/ttff/* 4. Reorganised the Makefiles for easier building. */Makefile 5. New program "convert_trace". Primarily a test tool at present as it needs a friendlier interface. progs/convert_trace.c 20th April 2000, James ---------------------- 1. Removed a file-descriptor leak in extract_seq. io_lib/progs/extract_seq.c 22nd March 2000, James ---------------------- 1. Fixed bug in time formatting from ABI files. We used strftime code %a without setting tm.tm_wday (number of days since sunday). It's not easy to work that out, so we convert from struct tm to time_t, which resets any errornous elements of struct tm. Also fixed a silly error where the end time was set to the start time (incorrectly). io_lib/abi/seqIOABI.c 25th February 2000, James ------------------------- 2. Added checks for QR <= QL in the exp2read conversion function. This caused trev to display incorrectly (blanking incorrect screen portions) when dealing with inconsistent experiment files. Also changed qclip so that it doesn't create this inconsistent case. io_lib/read/translate.c 1st February 2000, Kathryn -------------------------- 1. Fixed bug which caused init_exp to crash when QL was more than 5 digits. Increased it to handle 15 digits. io_lib/read/translate.c 27th January 2000, James ------------------------ 1. Moved Gap4's copy of scf_extras into io_lib, and renamed io_liub's scf_bits to be scf_extras (to avoid editing too many #include statements). Without this we were getting errors due to dynamic linking using odd copies. Eg loading libread.so and then libgap.so meant that find_trace_file called from edUtils2.c (libgap.so) would pick up the first copy from libread.so, despite the fact that there's also a copy in the same libgap.so. gap4/scf_extras.[ch] io_lib/scf_bits.[ch] 25th January 2000, Kathryn -------------------------- 1. Fixed crash in qclip due to insufficent arguments being passed to find_trace_file and also fixed an array bounds error in scan_right of qclip.c io_lib/read/scf_bits.c 19th January 2000, James ------------------------ 4. Copied bits of the fakii and cap2/3 scf/expFile reading code into io_lib. Not all of this is in there, just the things which seem to be common and sensibly fit there. This also helps qclip to build on Windows. FIXME: We should now remove some of this code from Gap4. Also fixed a small memory leak in fopen_compressed() - it wasn't freeing the result of tempnam(). io_lib/read/translate.c io_lib/read/scf_bits.[ch] io_lib/read/seqInfo.[ch] io_lib/utils/files.c io_lib/utils/compress.c 31st August 1999, James ----------------------- 1. -fasta_out mode of extract_seq now changes - to N. io_lib/progs/extract_seq.c 27th August 1999, James ----------------------- 1. The order of information items added by the abi to scf code has changed, to make it more sensible. Also fixed a bug in the textual (rather than numerical) date output, and wrote this to the DATE field. io_lib/abi/seqIOABI.c 2. makeSCF no longer adds a MACH field, as this was redudant. io_lib/abi/makeSCF.c 3. Extract_seq now has proper use of CL and CR when using -cosmid_only. It was assuming they were the same as QL/QR and SL/SR, which is not the case (rather it's like having a CS line of `CL`..`CR`). Extract_seq also now has a -fasta_out format option and can handle multiple files, which makes it easier to produce a fasta file from multiple experiment files. io_lib/progs/extract_seq.c 4th August 1999, James ---------------------- 1. The exp2read() function in io_lib now initialises the confidence arrays (eg r->prob_A) to zero, or to the experiment file AV line. io_lib/read/translate.c 2nd June 1999, James -------------------- 1. The MegaBACE sequencer creates ABI files. However it does so in a odd way. Sometimes the samples arrays are truncated such that bases are positioned above samples which are not stored in the ABI file. We now realloc the samples array in such cases and fill out the remainder with blank data. This removes a crash in trev when viewing such data. io_lib/abi/seqIOABI.c 2. Fixed a memory corruption of io-lib compression. The switch to use tempnam (for Windows) implies that the filename returned is no longer allocated by us. Unfortunately we forgot to remove the xfree(fname) calls. src/io_lib/utils/compress.c 18th May 1999, James -------------------- 1. Fixed the trace rescaling option of makeSCF. We now go through the rescale function twice. Once to work out the maximum value, and again to do the rescaling. This fixes a bug where the maximum value after rescaling was sometimes above 65536 and hence cause "trace wraparound" effects. io_lib/progs/makeSCF.c 26th April 1999, JohnT ---------------------- 1. Allow : to be entered in RAW_DATA by using :: Misc/find.c io_lib/utils/find.c 2. Support for fetching trace files using Corba Modified: Misc/find.c mk/misc.mk io_lib/utils/find.c init_exp/init_exp.c io_lib/read/Makefile io_lib/utils/find.c io_lib/utils/compress.c io_lib/utils/Makefile mk/global.mk Added: io_lib/utils/corba.cpp io_lib/utils/stcorba.h Generated from IDL: io_lib/utils/trace.h io_lib/utils/trace.cpp io_lib/utils/basicServer.h io_lib/utils/basicServer.cpp 3. Added ABI utility progs to NT port mk/abi.mk 4. Added Windows 95 support io_lib/utils/compress.c mk/WINNT.mk 5th March 1999, JohnT --------------------- Various changes for WINNT support as follows: io_lib/utils - Don't redirect to /dev/null on WINNT 3rd February 1999, James ------------------------ 1. Fixed problems reported by Insure on Windows NT. These are mainly lack of prototypes (malloc/memcpy) and not returning properly from 'int' functions. However one fix to seqed_translate.c (find_line_start3) was a array read overflow. io_lib/progs/makeSCF.c 18th January 1999, James ------------------------ 1. Changed the read2exp io_lib translation function so that it can accept lowercase a,c,g,t. Oddly enough it was already coded to accept lowercase IUB codes, but we missed out a,c,g and t! io_lib/read/translate.c 15th January 1999, JohnT ----------------------- Modified files thoughout for Windows NT Compatibility as follows: 8. need to explicitly set text or binary file mode under WINNT io_lib/exp_file/expFileIO.c 18. need to include stddef.h for size_t with Visual C++ io_lib/utils/array.h 19. need to have target LIBS (not LIB) and correct ordering for correct make on WINNT. Also need additional abstractions to allow for different compile and link calling conventions with Visual C++, and have rules for building Windows .def files. io_lib/abi/Makefile io_lib/alf/Makefile io_lib/exp_file/Makefile io_lib/plain/Makefile io_lib/progs/Makefile io_lib/read/Makefile io_lib/scf/Makefile io_lib/utils/Makefile 18th December 1998, James ------------------------- 1. Added bzip2 recognition to the (de)compression code of io_lib. This is now the latest bzip, and is recognised by phred (unlike bzip version 1). Bzip2 is approx the same as bzip1, but more or less twice as fast for decompression. io_lib/utils/compress.c 27th November 1998, James ------------------------- 1. Fixed the trace file searching mechanism in io_lib. When loading an experiment file with LN/LT lines, we now first search for the trace file relative to the location of the experiment file. io_lib/read/Read.c io_lib/read/translate.[ch] 16th November 1998, James ------------------------- 4. Added NT (NoTe) and GD (Gap4 Database) line types to the experiment file. io_lib/exp_file/expFile.[ch] 24th September 1998, James -------------------------- 1. The scf reading and writing code now handles traces with zero bases. Previously this failed after a malloc(0). io_lib/scf/read_scf.c io_lib/scf/write_scf.c 2. The ABI file reading code has been tidied up. It now also supports conversion of more ABI fields, including RUND, RUNT, SPAC(2), CMNT, LANE and MTXF. io_lib/abi/seqIOABI.c 17th July 1998, James --------------------- 1. Extract_seq now copes with sequences containing no SQ line (instead of just SEGV). io_lib/progs/extract_seq 9th July 1998, James -------------------- 1. Enforce IUBC code set in io_lib when converting from trace (any format) to experiment file. We leave the IUBC 'N' intact. io_lib/read/translate.c 28th May 1998, James -------------------- 1. Added a read_sections() function to io_lib so that programs can state which bits of a trace file they are interested in. The loading code only then parses those bits. This can give big increases to things like init_exp which only wants bases and does not care about the delta-delta format of SCF trace data. io_lib/read/Read.h io_lib/read/translate.c io_lib/scf/scf.h io_lib/scf/read_scf.c io_lib/abi/seqIOABI.c io_lib/alf/seqIOALF.c init_exp/init_exp.c 3. Extract GELN (gel name) from ABI file when converting to SCF. io_lib/abi/seqIOABI.[ch] 2. Improved the makeSCF -normalise option. Background subtraction is now cleaner (and simpler) and it also now scales the heights. Moved it to io_lib as it's now freely available. io_lib/progs/makeSCF.c 23rd March 1998, James ---------------------- 1. Removed the change made on 7th May 1997 to seqIOPlain.c. This code is used by extract_seq, and so clipping in seqIOPlain causes double clipping (and hence wrong sections). io_lib/plain/seqIOPlain.c 11th March 1998, James ---------------------- 2. Removed the requirement of EXP_FILE_LINE_LENGTH in exp_fread_info(). This allows for (eg) tags with very long comments to be read in without being truncated. io_lib/exp_file/expFileIO.c 4th March 1998, James --------------------- 1. Following advice from Leif Hansson , the ALF reading code now reads the "Raw data" subfile when the "Processed data" subfile is not present, as "Processed data" is apparently an optional output of the pharmacia software. Raw data is in the same format, although I do not know what processing takes place to convert it to Processed data. (Looking at some real traces, apparently none!) io_lib/alf/seqIOALF.c 24th February 1998, James ------------------------- 1. Added an ABI in MacBinary format file type detector so that these are now autodetected. io_lib/utils/traceType.c 15th January 1998, James ------------------------ 1. Rewrote the delta_samples1/2 functions to be faster. Times vary between 0.55 and 0.7 fractions of the original time. io_lib/scf/misc_scf.c 4th December 1997, James ------------------------ 1. First post-release bug fix. Io_lib incorrect sets read->trace_name when reading anything except SCF files. This means that when outputting to an experiment file no LN line is present. io_lib/read/Read.c 1st October 1997, James ----------------------- 1. Allow for SCF files to contain 0 bases. This mainly affects memory allocation, but also the display widget. io_lib/scf/read_scf.c io_lib/utils/read_alloc.c 28/29th August 1997, James -------------------------- 2. Added a few changes to make the code more portable for the Mac. Not really used at present. Misc/os.h Misc/files.c io_lib/utils/traceType.c io_lib/read/translate.c io_lib/utils/compress.c 30th June 1997, James --------------------- 1. The exp2read function produced invalid rightCutoff values (INT_MAX) when no QR line is present. It now correctly sets it to 0. io_lib/read/translate.c io_lib-1.14.6/man/0000755000031500020650000000000012617161151010611 500000000000000io_lib-1.14.6/man/man4/0000755000031500020650000000000012617161151011450 500000000000000io_lib-1.14.6/man/man4/Read.40000644000031500020650000000003012354177667012342 00000000000000.so man3/read_reading.3 io_lib-1.14.6/man/man1/0000755000031500020650000000000012617161151011445 500000000000000io_lib-1.14.6/man/man1/srf_index_hash.10000644000031500020650000000202412354177667014452 00000000000000.TH srf_index_hash 1 "September 29" "" "Staden io_lib" .SH "NAME" .PP .BR srf_index_hash \- Adds a hash-table index to an SRF file. .SH "SYNOPSIS" .PP \fBsrf_index_hash\fR [\fI-c] \fIsrf_archive\fR .SH "DESCRIPTION" .PP \fBsrf_index_hash\fR adds and index to an SRF file or replaces an existing index with a new one. In the case of concatenated SRF files only the index at the end of a file will be replaced, but internal indices will not be consulted by SRF tools. .PP The index is a hash table indexing the sequence names only. The name itself does not appear in the index, rather the top 7-bits of a 64-bit hash key are held in the index along with N-bits used to determine the hash bucket. This reduces the index size to around 10-15 bytes per sequence. .SH "OPTIONS" .PP .TP \fB-c\fR Check only. This requests that the index is not produced, but the checks performed during the creation of an index (such as looking for duplicate sequence names) are still performed. .SH "AUTHOR" .PP James Bonfield, Wellcome Trust Sanger Institute io_lib-1.14.6/man/man1/srf_info.10000644000031500020650000000255012354177667013277 00000000000000.TH srf_info 1 "September 19" "" "Staden io_lib" .SH "NAME" .PP .BR srf_info \- Lists information about the contents of an SRF file .SH "SYNOPSIS" .PP \fBsrf_info\fR [\fI-l\fR bitmap] \fIsrf_archive\fR ... .SH "DESCRIPTION" .PP \fBsrf_info\fR lists some simple frequency metrics on the contents of an SRF file, both in terms of how many traces there are and the sort of data held within them. .PP For efficiencies sake some control is given over which statistics to gather and display. This is controlled by the \fI-l\fR level parameter. The value is the summation of one or more of the following values, representing the data to display. .TP 1 Count of good/bad reads. .TP 2 Counts and compressed size for selected chunk types. .TP 4 Trace count and trace name prefix for each trace_header. .TP 8 Base count. .SH "OPTIONS" .PP .TP \fB-l\fR bitmap Controls which statistics to gather and display. Bitmap is a value from 0 to 15 (1+2+4+8) as described in the DESCRIPTION section above. .SH "EXAMPLES" .PP To count the total number of good and bad reads along with a break down of trace names per SRF data-block-header we would use bitmap values 1 and 4 combined. .PP .nf srf_info -l 5 foo.srf .fi .PP To count the total number of reads for all srf files in a directory. .PP .nf srf_info -l 1 *.srf .fi .SH "AUTHOR" .PP Steven Leonard, Wellcome Trust Sanger Institute io_lib-1.14.6/man/man1/srf_list.10000644000031500020650000000310212354177667013311 00000000000000.TH srf_list 1 "September 29" "" "Staden io_lib" .SH "NAME" .PP .BR srf_list \- Lists and/or counts the contents of an SRF file .SH "SYNOPSIS" .PP \fBsrf_list\fR [\fIoptions\fR] \fIsrf_archive\fR ... .SH "DESCRIPTION" .PP \fBsrf_list\fR lists the filenames held within one or more SRF container. To simply count the contents rather than list them specify the \fB-c\fR option. Note that when in count-only mode if an index is present it will be used to determine the number of entries in the index and hence sequences in the SRF file. The index cannot be used when listing the filenames however as the index itself does not contain the full filenames. .PP Note that it is not possible to count sequences matching certain patterns or with specific flags set. \fBsrf_info\fR is a more general purpose tool that may cover this. .SH "OPTIONS" .PP .TP \fB-c\fR Counts sequences instead of listing them. Note that this may be substantially faster than listing if an index exists. .TP \fB-v\fR Verbose mode. This gives summary count information per file rather than just the total at the end. .TP \fB-l\fR Long format. When listing sequence names this also provides information on the position in the archive and the size of the sequence specific \fIdata block\fR and the size of the shared \fIdata block header\fR. .SH "EXAMPLES" .PP To count the total number of sequences in several SRF files: .PP .nf srf_list -c *.srf .fi .PP To produce a "fofn" (file of filenames) for an SRF file: .PP .nf srf_list foo.srf > foo.fofn .fi .SH "AUTHOR" .PP James Bonfield, Wellcome Trust Sanger Institute io_lib-1.14.6/man/man1/scramble.10000644000031500020650000001117412602454214013242 00000000000000.TH scramble 1 "March 19 2013" "" "Staden io_lib" .SH "NAME" .PP .BR scramble \- Converts between the SAM, BAM and CRAM file formats. .SH "SYNOPSIS" .PP \fBscramble\fR [\fIoptions\fR] [\fIinput_file\fR [\fIoutput_file\fR]] .SH "DESCRIPTION" .PP \fBscramble\fR converts between various next-gen sequencing alignment file formats, including SAM, BAM and CRAM. It can either act as a pipe reading stdin and writing to stdout, or on named files. When operating as a pipe the input type defaults to SAM or BAM, requiring the \fB-I cram\fR option to indicate input is in CRAM format is appropriate. The output defaults to BAM, but can be adjusted by using the \fB-O\fR \fIformat\fR option. When given filenames the file type is automatically chosen based on the filename suffix. .SH "OPTIONS" .PP .TP \fB-I\fR \fIformat\fR Selects the input format, where \fIformat\fR is one of sam, bam or cram. Use this when reading via a pipe to avoid input bytes being consumed when attempting to detect if the input is in SAM or BAM format. .TP \fB-O\fR \fIformat\fR Selects the output format, where \fIformat\fR is one of sam, bam or cram. .TP \fB-1\fR to \fB-9\fR Sets the compression level from 1 (low compression, fast) to 9 (high compression, slow) when writing in BAM or CRAM format. This is only used during writing. .TP \fB-0\fR or \fB-u\fR Writes uncompressed data. In BAM this still uses BGZF containers, but with no internal compression. In CRAM it stores blocks in RAW format instead. The option has no effect on SAM output. .TP \fB-j\fR CRAM encoding only. Add bzip2 to the list of compression codes potentially used during CRAM creation. .TP \fB-Z\fR CRAM encoding only. Add lzma to the list of compression codes potentially used during CRAM creation. Given the slow compression speed of lzma, this may only be used where it gives a significant advantage over zlib or bzip2, but with higher compression levels (-7) this weighting is ignored as LZMA decompression speed is acceptable, albeit still slower than zlib. .TP \fB-m\fR CRAM decoding only. Generate MD:Z: and NM:I: auxiliary fields based on the reference-based compression. .TP \fB-M\fR CRAM encoding only. Forcibly pack sequences from multiple references into the same slice. Normally CRAM will start a new slice when changing from one reference to another, but will still automatically switch to multi-reference slices if the number of sequences per slice becomes too small. .TP \fB-R\fR \fIrange\fR Currently for CRAM input only, but SAM/BAM support is pending. This indicates a reference sequence name and optionally a start and end location within that reference, using the syntax \fIref_name\fR or \fIref_name\fR:\fIstart\fR-\fIend\fR. For efficient operation the CRAM file needs a .crai format index (built using the \fBcram_index\fR program). .TP \fB-r\fR \fIref.fa\fR CRAM encoding only. Use this to specify the reference fasta file. Note that if the input SAM or BAM file a \fIfile:\fR or local file system based URI specified in the @SQ headers then this option may not be necessary. .TP \fB-s\fR \fInumber\fR CRAM encoding only. Specifies the number of sequecnes per slice. Defaults to 10000. .TP \fB-S\fR \fInumber\fR CRAM encoding only. Specifies the number of slices per container. Defaults to 1. .TP \fB-t\fR BAM and CRAM only. Specifies the number of compression or decompression threads, adaptively shared between both encoding and decoding. Defaults to 1 (no threading). .TP \fB-V\fR \fIversion_string\fR CRAM encoding only. Sets the CRAM file format version. Supported values are "2.0", "2.1" and "3.0". .TP \fB-e\fR CRAM encoding only. Embed snippets of the reference sequence in every slice. This means the files can be decoded without needing to specify the reference fasta file. .TP \fB-x\fR CRAM encoding only. Omit reference based compression and instead store details of every base verbatim. .TP \fB-B\fR Experimental, encoding only. When storing quality values, bin into 8 discrete values (plus 0), as typically used by modern Illumina instruments. (Note that the bins may not be precisely the same ranges.) .TP \fB-!\fR CRAM v3.0 and above decoding only. Do not check CRCs. This option should only be used when attempting to recover from a data corruption. .SH "EXAMPLES" .PP To convert a BAM file from stdin to CRAM on stdout, using reference MT.fa. .PP .nf \fIsome_command\fR | scramble -I bam -O cram -r MT.fa | \fIsome_command\fR .fi .PP The default CRAM output format is version 3.0, so no version needs to be specified when converting from 2.1 to 3.0. To perform the reverse use: .PP .nf scramble -V 2.1 in.cram out.cram .fi .SH "AUTHOR" .PP James Bonfield, Wellcome Trust Sanger Institute io_lib-1.14.6/man/man1/srf2fasta.10000644000031500020650000000112012354177667013355 00000000000000.TH srf2fasta 1 "September 19" "" "Staden io_lib" .SH "NAME" .PP .BR srf2fasta \- Converts SRF files to fasta format .SH "SYNOPSIS" .PP \fBsrf2fasta\fR [\fI-C\fR] \fIsrf_archive\fR .SH "DESCRIPTION" .PP \fBsrf2fasta\fR extracts sequences from an SRF archive and writes them in fasta format to stdout. .SH "OPTIONS" .PP .TP \fB-C\fR Masks out sequences tagged as bad quality. .SH "EXAMPLES" .PP To extract only the good quality sequences from runX.srf into runX.fasta. .PP .nf srf2fasta -C runX.srf > runX.fasta .fi .SH "AUTHOR" .PP James Bonfield, Wellcome Trust Sanger Institute io_lib-1.14.6/man/man1/srf2fastq.10000644000031500020650000000555112354177667013411 00000000000000.TH srf2fastq 1 "December 10" "" "Staden io_lib" .SH "NAME" .PP .BR srf2fastq \- Converts SRF files to Sanger fastq format .SH "SYNOPSIS" .PP \fBsrf2fastq\fR [\fIoptions\fR] \fIsrf_archive\fR ... .SH "DESCRIPTION" .PP \fBsrf2fastq\fR extracts sequences and qualities from one or more SRF archives and writes them in Sanger fastq format to stdout. .PP Note that Illumina also have a fastq format (used in the GERALD directories) which differs slightly in the use of log-odds scores for the quality values. The format described here is using the traditional \fIPhred\fR style of quality encoding. .SH "OPTIONS" .PP .TP \fB-c\fR Outputs calibrated confidence values using the ZTR \fBCNF1\fR chunk type for a single quality per base. Without this use the original Illumina \fI_prb.txt\fR files consisting of four quality values per base, stored in the ZTR \fBCNF4\fR chunks. .TP \fB-C\fR Masks out sequences tagged as bad quality. .TP \fB-s\fR \fIroot\fR Generates files on disk with filenames starting \fIroot\fR, one file per non-explicit element in the SRF/ZTR region (REGN) chunk. Typically this results in two files for paired end runs. The filename suffixes come from the names listed in the SRF region chunks. This option conflicts with the \fB-S\fR parameter. .TP \fB-S\fR Splits sequences into regions, but sequentially lists each sequence region to stdout instead of splitting to separate files on disk. This option conflicts with the \fB-s\fR parameter. .TP \fB-n\FR When using -s the filename suffixes are simply numbered (starting with 1) instead of using the names listed in the SRF region chunks. .TP \fB-a\fR Appends region index to the sequence names. Ie generate "name/1" and "name/2" for a paired read. .TP \fB-e\fR Include any explicit sequence (ZTR region chunk of type 'E') in the sequence output. The explicit sequence is also included in the quality line too. Currently this is utilised by ABI SOLiD to store the last base of the primer. .TP \fB-r\fR \fIregion list\fR Reverse complements the sequence and reverses the quality values for all regions in the \fIregion list\fR. This is a comma separated list of integer values enumerating the regions, starting from 1. Note that this option only works when either \fB-s\fR or \fB-S\fR are specified. .SH "EXAMPLES" .PP To extract only the good quality sequences from all srf files in the current directory using calibrated confidence values (if available). .PP .nf srf2fastq -c -C *.srf > runX.fastq .fi .PP To extract a paired end run into two separate files with sequences named \fIname\fR/1 and \fIname\fR/2. .PP .nf srf2fastq -s runX -a -n runX.srf .fi .PP To extract a paired end run as a single file, alternating forward and reverse sequences, with the second read being reverse complemented. .PP .nf srf2fastq -S -r 2 runX.srf > runX.fastq .fi .SH "AUTHOR" .PP James Bonfield, Steven Leonard - Wellcome Trust Sanger Institute io_lib-1.14.6/man/man3/0000755000031500020650000000000012617161151011447 500000000000000io_lib-1.14.6/man/man3/read_scf_header.30000644000031500020650000000002412354177667014546 00000000000000.so man3/read_scf.3 io_lib-1.14.6/man/man3/read_allocate.30000644000031500020650000000250212354177667014252 00000000000000.TH read_allocate 3 "" "" "Staden Package" .SH NAME .LP .BR read_allocate , .BR read_deallocate \- Allocate and deallocate the \fBRead\fR structure. .SH SYNOPSIS .LP .nf .ft B #include .nf .ft B Read *read_allocate( int num_points, int num_bases); .ft .fi .LP .nf .ft B void read_deallocate( Read *read); .ft .fi .IX "read_allocate()" "" "read_allocate()" .IX "read_deallocate()" "" "read_deallocate()" .SH DESCRIPTION .LP These functions create and destroy \fBRead\fR structures. The \fBRead\fR structure is a generalised in-memory data structure used for holding trace data information. .LP .B read_allocate() creates a \fBRead\fR structure large enough to hold \fBnum_points\fR trace sample points and \fBnum_bases\fR called bases. The allocated data is then initialised to appropriate defaults, which are mainly zeros and null pointers. .LP .B read_deallocate() destroys a previously created \fBRead\fR structure. It is not sufficient to simply use the \fBfree()\fR call instead. .SH RETURN VALUES .LP On successful completion, the \fBread_allocate()\fR function returns a pointer to a \fBRead\fR structure. Otherwise this function returns a null pointer. .LP The \fBread_deallocate()\fR function returns no value. .SH SEE ALSO .LP .BR read_reading (3), .BR fread_reading (3), .BR write_reading (3), .BR fwrite_reading (3) io_lib-1.14.6/man/man3/ExperimentFile.30000644000031500020650000001735612354177667014430 00000000000000.TH ExperimentFile 3 "" "" "Staden Package" .SH NAME .LP .BR exp_read_info , .BR exp_fread_info , .BR exp_create_info , .BR exp_destroy_info , .BR exp_create_range , .BR exp_extract_range , .BR exp_get_feature_index , .BR exp_get_int , .BR exp_get_rng , .BR exp_get_str , .BR exp_put_int , .BR exp_put_rng , .BR exp_put_str , .BR exp_print_line , .BR exp_print_seq , .BR exp_print_file , .BR opos2str , .BR str2opos , .BR conf2str , .BR str2conf \- Manipulations of the Experiment File format .IX "exp_read_info()" "" "exp_read_info()" .IX "exp_fread_info()" "" "exp_fread_info()" .IX "exp_create_info()" "" "exp_create_info()" .IX "exp_destroy_info()" "" "exp_destroy_info()" .IX "exp_create_range()" "" "exp_create_range()" .IX "exp_extract_range()" "" "exp_extract_range()" .IX "exp_get_feature_index()" "" "exp_get_feature_index()" .IX "exp_get_int()" "" "exp_get_int()" .IX "exp_get_rng()" "" "exp_get_rng()" .IX "exp_get_str()" "" "exp_get_str()" .IX "exp_put_int()" "" "exp_put_int()" .IX "exp_put_rng()" "" "exp_put_rng()" .IX "exp_put_str()" "" "exp_put_str()" .IX "exp_print_line()" "" "exp_print_line()" .IX "exp_print_seq()" "" "exp_print_seq()" .IX "exp_print_file()" "" "exp_print_file()" .IX "opos2str()" "" "opos2str()" .IX "str2opos()" "" "str2opos()" .IX "conf2str()" "" "conf2str()" .IX "str2conf()" "" "str2conf()" .SH SYNOPSIS .LP .nf .ft B #include .nf .ft B Exp_info *exp_read_info( char *file); .ft .fi .LP .nf .ft B Exp_info *exp_fread_info( FILE *fp); .ft .fi .LP .nf .ft B Exp_info *exp_create_info(); .ft .fi .LP .nf .ft B void exp_destroy_info( Exp_info *e); .ft .fi .LP .nf .ft B char *exp_create_range( char *str, int start, int end); .ft .fi .LP .nf .ft B int exp_extract_range( char *str, int *start, int *end); .ft .fi .LP .nf .ft B int exp_get_feature_index( char *e); .ft .fi .LP .nf .ft B int exp_get_int( Exp_info *e, int id, int *val); .ft .fi .LP .nf .ft B int exp_get_rng( Exp_info *e, int id, int *from, int *to); .ft .fi .LP .nf .ft B int exp_get_str( Exp_info *e, int id, char *s, f_implicit s_l); .ft .fi .LP .nf .ft B int exp_put_int( Exp_info *e, int id, int *val); .ft .fi .LP .nf .ft B int exp_put_rng( Exp_info *e, int id, int *from, int *to); .ft .fi .LP .nf .ft B int exp_put_str( Exp_info *e, int id, char *s, f_implicit s_l); .ft .fi .LP .nf .ft B int exp_print_line( FILE *fp, Exp_info *e, int eflt, int i); .ft .fi .LP .nf .ft B int exp_print_seq( FILE *fp, Exp_info *e, int eflt, int i); .ft .fi .LP .nf .ft B void exp_print_file( FILE *fp, Exp_info *e); .ft .fi .LP .nf .ft B char *opos2str( int2 *opos, int len, char *buf); .ft .fi .LP .nf .ft B int str2opos( int2 *opos, char *buf); .ft .fi .LP .nf .ft B char *conf2str( int1 *conf, int len, char *buf); .ft .fi .LP .nf .ft B int str2conf( int1 *conf, char *buf); .ft .fi .SH DESCRIPTION .LP These functions manipulate Experiment Files. They include functions for reading, writing, and editing the files. The principle structure used by the routines is the \fBExp_info\fR structure. This is as follows. .EX 5 .ft B #define MAXIMUM_EFLT_LENGTH 4 #define MAXIMUM_EFLTS 48 #define EXP_FILE_LINE_LENGTH 128 typedef Array Exp_entries; typedef struct { Array entries[MAXIMUM_EFLTS]; /* array of array of entries */ int Nentries[MAXIMUM_EFLTS]; /* array of number of entries */ FILE *fp; } Exp_info; #define NULL_Exp_info ( (Exp_info *) NULL ) .ft .EE .LP For the purposes of simple and efficient coding, each line on an experiment file must be smaller than the defined EXP_FILE_LINE_LENGTH, which is 128 characters. .LP Many functions take an experiment file line type identifier as an argument. These functions are listed in the prototypes as taking \fBint id\fR. Here \fBid\fR should be specified using one of the macros defining in the header file. They take the form of \fBEFLT_\fRXX where XX is the line type. For instance, the \fBID\fR line type identifier should be written as \fBEFLT_ID\fR. .LP The C functions available follow. Some FORTRAN interfaces are also available, but these are not documented. See the include file for their prototypes. .LP .B exp_read_info and .B exp_fread_info read an experiment file into an allocated \fBExp_info\fR structure. If successful, the structure pointer is return. Otherwise the null pointer is returned. .LP .B exp_create_info allocates and initialises a new, blank, \fBExp_info\fR structure. If successful, the structure pointer is return. Otherwise the null pointer is returned. .LP .B exp_destroy_info deallocates an \fBExp_info\fR structure. .LP .B exp_create_range creates a string using the experiment file range format of "start..stop". This format is used by the AQ, ON, TG and TC line types. The buffer specified should be large enough to hold the string. The function returns the \fBstr\fR pointer supplied as an argument. .LP .B exp_extract_range extracts the start and end values from the string representation of a range; "start..stop". The values are stored in the integer pointers sent as arguments. If successful, the function returns 0. Otherwise -1 is returned. .LP .B exp_get_feature_index converts from a string representation of an experiment file line type to the integer value. For example, \fBexp_get_feature_index("SQ")\fR returns the integer 22, which is the same as the \fBEFLT_SQ\fR definition. .LP .B exp_get_int obtains the integer value held in a specific line type. The value is stored in the integer pointer \fBval\fR. If successful, the function returns 0. Otherwise 1 is returned. .LP .B exp_get_rng obtains the range values held in a specific line type. The values are stored in the integer pointers \fBfrom\fR and \fBto\fR. If successful, the function returns 0. Otherwise 1 is returned. .LP .B exp_get_str obtains the string value held in a specific line type. The value is stored in the string \fBs\fR. At most \fBs_l\fR characters are copied. If successful, the function returns 0. Otherwise 1 is returned. .LP .B exp_put_int writes the integer pointed to by \fBval\fR to the specified line type. If successful, the function returns 0. Otherwise 1 is returned. .LP .B exp_put_rng writes the range pointed to by \fBfrom\fR and \fBto\fR to the specified line type. If successful, the function returns 0. Otherwise 1 is returned. .LP .B exp_put_str writes the string \fBs\fR of length \fBs_l\fR to the specified line type. If successful, the function returns 0. Otherwise 1 is returned. .LP .B exp_print_line outputs all entries of the specified type to the specified file pointer. .LP .B exp_print_seq .LP .B exp_print_file outputs all entries of all line types to the specified file pointer. .LP .B opos2str converts an array of original positions held in \fBopos\fR with \fBlen\fR elements to a string suitable for use in the ON line type. The \fBbuf\fR should be large enough to hold the string, which in the worst case will be 4 * sequence length. Returns \fBbuf\fR. .LP .B str2opos converts the experiment file original position string held in \fBbuf\fR to an array of original positions to be stored in \fBopos\fR. \fBopos\fR must be large enough to hold the data, hence it should be of the same length as the sequence. Returns the number of elements written to the \fBopos\fR array. .LP .B conf2str converts an array of confidence values helf in \fBconf\dR with \fBlen\fR elements to a string suitable for use in the AV line type. The \fBbuf\fR should be large enough to hold the string, which in the worst case will be 4 * sequence length. Returns \fBbuf\fR. .LP .B str2conf convers the experiment file confidence values string held in \fBbuf\fR to an array of confidence values to be stored in \fBconf\fR. \fBconf\fR must be large enough to hold the data, hence it should be of the same length as the sequence. Returns the number of elements written to the \fBconf\fR array. .SH SEE ALSO .LP .BR ExperimentFile (4) io_lib-1.14.6/man/man3/write_reading.30000644000031500020650000000351312354177667014321 00000000000000.TH write_reading 3 "" "" "Staden Package" .SH NAME .LP .BR write_reading , .BR fwrite_reading \- Write a \fBRead\fR structure into a trace file. .SH SYNOPSIS .LP .nf .ft B #include .nf .ft B int write_reading( char *filename, Read *read, int format); .ft .fi .LP .nf .ft B int fwrite_reading( FILE *fp, Read *read, int format); .ft .fi .IX "write_reading()" "" "write_reading()" .IX "fwrite_reading()" "" "fwrite_reading()" .SH DESCRIPTION .LP These functions write a \fBRead\fR structure into a trace file. The principle format support is the SCF format. Although reading is supported for ABI and ALF, writing is not. Additionally, it is possible to write using the plain (old) staden format files or as Experiment files. In both these cases only the sequence component of the trace file will be written. .LP When writing as an experiment file the QL, QR and SQ fields are generated from the \fBRead\fR structure. If we previously created the \fBRead\fR structure from reading an experiment file then the original experiment file data is also written. Otherwise EN, ID, LN and LT lines are also generated. .LP .B write_reading() writes a \fBRead\fR structure to the specified filename in the specified format. Formats available are .BR TT_SCF , .BR TT_PLN and .BR TT_EXP. Specifying format \fBTT_ANY\fR will be treated as \fBTT_SCF\fR. .LP .B fwrite_reading() writes a \fBRead\fR structure to the specified FILE pointer in the specified format. Apart from writing to FILE pointer instead of a filename, the function is identical to \fBwrite_reading()\fR. .SH RETURN VALUES .LP On successful completion, the \fBwrite_reading()\fR and \fBfwrite_reading()\fR functions return 0. Otherwise these functions return -1. .SH SEE ALSO .LP .BR read_reading (3), .BR fread_reading (3), .BR deallocate_reading (3), .BR scf (4), .br .BR ExperimentFile (4) io_lib-1.14.6/man/man3/write_scf.30000644000031500020650000000267612354177667013474 00000000000000.TH write_scf 3 "" "" "Staden Package" .SH NAME .LP .BR write_scf , .BR fwrite_scf , .BR write_scf_header \- Write SCF files .SH SYNOPSIS .LP .nf .ft B #include .ft .fi .LP .nf .ft B int write_scf( Scf *scf, char *fn); .ft .fi .LP .nf .ft B int fwrite_scf( Scf *scf, FILE *fp); .ft .fi .LP .nf .ft B int write_scf_header( FILE *fp, Header *h); .ft .fi .IX "write_scf()" "" "write_scf()" .IX "fwrite_scf()" "" "fwrite_scf()" .IX "write_scf_header()" "" "write_scf_header()" .SH DESCRIPTION .LP These functions write SCF format trace files. All the functions accepting a \fBFILE *\fP as an argument assume that the file pointer is at the correct offset within the file, which should be the start. .LP .B write_scf() writes an entire SCF file into the \fBScf\fR structure (see the .BR scf (4) manual page for the details of this structure). The data is written to the specified file name. .LP .B fwrite_scf() writesan entire SCF file into the \fBScf\fR structure (see the .BR scf (4) manual page for the details of this structure). The data is written to the specified file pointer, which is neither closed or rewound after the operation. .LP .B write_scf_header() writes the \fBHeader\fR structure to the specified file pointer. .SH RETURN VALUES .LP On successful completion, the \fBwrite_scf()\fR, \fBfwrite_scf()\fR and \fBwrite_scf_header()\fR functions return 0. Otherwise these function returns -1. .SH SEE ALSO .LP .BR scf (4), .BR read_scf (3) io_lib-1.14.6/man/man3/read_deallocate.30000644000031500020650000000003112354177667014556 00000000000000.so man3/read_allocate.3 io_lib-1.14.6/man/man3/fwrite_reading.30000644000031500020650000000003112354177667014457 00000000000000.so man3/write_reading.3 io_lib-1.14.6/man/man3/read2scf.30000644000031500020650000000002412354177667013161 00000000000000.so man3/scf2read.3 io_lib-1.14.6/man/man3/scf2read.30000644000031500020650000000453612354177667013175 00000000000000.TH scf2read 3 "" "" "Staden Package" .SH NAME .LP .BR scf2read , .BR read2scf , .BR exp2read , .BR read2exp \- Translate to and from the \fBRead\fR structure. .SH SYNOPSIS .LP .nf .ft #include .nf .ft B Read *scf2read( Scf *scf); .ft .fi .LP .nf .ft B Scf *read2scf( Read *read); .ft .fi .LP .nf .ft B Exp_info *read2exp( Read *read, char *EN); .ft .fi .LP .nf .ft B Read *exp2read( Exp_info *e); .ft .fi .IX "scf2read()" "" "scf2read()" .IX "read2scf()" "" "read2scf()" .IX "read2exp()" "" "read2exp()" .IX "exp2read()" "" "exp2reead()" .SH DESCRIPTION .LP These functions are used internally by the io library for converting between the in memory representations of the supported file formats. The \fBRead\fR structure is the central format so only conversion to and from this structure is available. Conversions consist of to and from the SCF format and to and from the Experiment File format. .LP .B scf2read() converts an \fBScf\fR structure into a \fBRead\fR structure. The \fBRead\fR structure is allocated by the function. The \fBScf\fR structure is left unchanged. .LP .B read2scf() converts a \fBRead\fR structure into an \fBScf\fR structure. The \fBScf\fR structure is allocated by the function. The \fBRead\fR structure is left unchanged. .LP .B exp2read() converts an \fBExp_info\fR structure into a \fBRead\fR structure. The entryname to use in the EN line type of the Experiment File must be specified. The \fBRead\fR structure is allocated by the function. The \fBExp_info\fR structure is left unchanged. .LP .B read2exp() converts a \fBRead\fR structure into an \fBExp_info\fR structure. The \fBExp_info\fR structure is allocated by the function. The \fBRead\fR structure is left unchanged. .SH RETURN VALUES .LP On successful completion, the \fBscf2read()\fR and \fBexp2read\fR functions return a pointer to an allocated \fBRead\fR structure. Otherwise these functions return NULLRead. .LP On successful completion, the \fBread2scf\fR function returns a pointer to an allocated \fBScf\fR structure. Otherwise this function returns a null pointer. .LP On successful completion, the \fBread2exp\fR function returns a pointer to an allocated \fBExp_info\fR structure. Otherwise this function returns a null pointer. .SH SEE ALSO .LP .BR read_reading (3), .BR fread_reading (3), .BR write_reading (3), .BR fwrite_reading (3), .BR scf (4), .BR ExperimentFile (4) io_lib-1.14.6/man/man3/fwrite_scf.30000644000031500020650000000002512354177667013624 00000000000000.so man3/write_scf.3 io_lib-1.14.6/man/man3/write_scf_header.30000644000031500020650000000002512354177667014766 00000000000000.so man3/write_scf.3 io_lib-1.14.6/man/man3/read_reading.30000644000031500020650000001005012354177667014074 00000000000000.TH read_reading 3 "" "" "Staden Package" .SH NAME .LP .BR read_reading , .BR fread_reading \- Read a trace file into a \fBRead\fR structure. .SH SYNOPSIS .LP .nf .ft B #include .nf .ft B Read *read_reading( char *filename, int format); .ft .fi .LP .nf .ft B Read *fread_reading( FILE *fp, char *filename, int format); .ft .fi .IX "read_reading()" "" "read_reading()" .IX "fread_reading()" "" "fread_reading()" .SH DESCRIPTION .LP These functions read trace files into a \fBRead\fR structure. A variety of formats are supported including ABI, ALF and SCF. (Note that the first two are only supported when the library is used as part of the Staden Package.) Additionally, support for reading the plain (old) staden format files and Experiment files is included. Compressed trace files may also be read. Decompression is performed using either \fBgzip -d\fR or \fBuncompress\fR and is written to a temporary file for further processing. The temporary file is then read and removed. .LP When reading an experiment file the trace file referenced by the LN and LT line types is read. The QL, QR (left and right quality clips), SL and SR (left and right vector clips) are taken from the Experiment file to produce the cutoff information held within the \fBRead\fR structure. The \fBorig_trace\fR field of the \fBRead\fR structure will then contain the pointer to the experiment file structure and the \fBorig_trace_format\fR field will be set to \fBTT_EXP\fR. .LP The functions allocate a \fBRead\fR structure which is returned. To deallocate this structure use the \fBread_deallocate()\fR function. .LP .B read_reading() reads a trace from the specified filename and format. Formats available are .BR TT_SCF , .BR TT_ABI , .BR TT_ALF , .BR TT_PLN , .BR TT_EXP and .BR TT_ANY . Specifying format \fBTT_ANY\fR will attempt to automatically detect the corret format type by analysing the trace file for magic numbers and composition. The \fBformat\fR field of the structure can then be used to determine the real trace type. .LP .B fread_reading() reads a trace from the specified file pointer. The filename argument is used for setting the \fBtrace_name\fR field of the resulting structure, and for error messages. Otherwise the function is identical to the \fBread_reading()\fR function. .LP The \fBRead\fR structure itself is as follows. .EX 5 .ft B typedef uint_2 TRACE; /* for trace heights */ typedef struct { int format; /* Trace file format */ char *trace_name; /* Trace file name */ int NPoints; /* No. of points of data */ int NBases; /* No. of bases */ /* Traces */ TRACE *traceA; /* Array of length `NPoints' */ TRACE *traceC; /* Array of length `NPoints' */ TRACE *traceG; /* Array of length `NPoints' */ TRACE *traceT; /* Array of length `NPoints' */ TRACE maxTraceVal; /* The maximal value in any trace */ /* Bases */ char *base; /* Array of length `NBases' */ uint_2 *basePos; /* Array of length `NBases' */ /* Cutoffs */ int leftCutoff; /* Number of unwanted bases */ int rightCutoff; /* Number of unwanted bases */ /* Miscellaneous Sequence Information */ char *info; /* misc seq info, eg comments */ /* Probability information */ char *prob_A; /* Array of length 'NBases' */ char *prob_C; /* Array of length 'NBases' */ char *prob_G; /* Array of length 'NBases' */ char *prob_T; /* Array of length 'NBases' */ /* The original input format data, or NULL if inapplicable */ int orig_trace_format; void *orig_trace; } Read; .EE .ft .LP .SH RETURN VALUES .LP On successful completion, the \fBread_reading()\fR and \fBfread_reading()\fR functions return a pointer to a \fBRead\fR structure. Otherwise these functions return NULLRead (which is a null pointer). .SH SEE ALSO .LP .BR write_reading (3), .BR fwrite_reading (3), .BR deallocate_reading (3), .BR scf (4), .br .BR ExperimentFile (4) io_lib-1.14.6/man/man3/read_scf.30000644000031500020650000000277512354177667013255 00000000000000.TH read_scf 3 "" "" "Staden Package" .SH NAME .LP .BR read_scf , .BR fread_scf , .BR read_scf_header \- Read SCF files .SH SYNOPSIS .LP .nf .ft B #include .ft .fi .LP .nf .ft B Scf *read_scf( char *fn); .ft .fi .LP .nf .ft B Scf *fread_scf( FILE *fp); .ft .fi .LP .nf .ft B int read_scf_header( FILE *fp, Header *h); .ft .fi .IX "read_scf()" "" "read_scf()" .IX "fread_scf()" "" "fread_scf()" .IX "read_scf_header()" "" "read_scf_header()" .SH DESCRIPTION .LP These functions read SCF format trace files. All the functions accepting a \fBFILE *\fP as an argument assume that the file pointer is at the correct offset within the file. .LP .B read_scf() reads an entire SCF file into the \fBScf\fR structure (see the .BR scf (4) manual page for the details of this structure). The data is read from the specified file name. .LP .B fread_scf() reads an entire SCF file into the \fBScf\fR structure (see the .BR scf (4) manual page for the details of this structure). The data is read from the specified file pointer, which is neither closed or rewound after the operation. .LP .B read_scf_header() reads the \fBHeader\fR structure from the specified file pointer. .SH RETURN VALUES .LP On successful completion, the \fBread_scf()\fR and \fBfread_scf()\fR functions return a pointer to a \fBScf\fR structure. Othewise these functions return a null pointer. .LP On successful completion, the \fBread_scf_header()\fR function returns 0. Otherwise the function returns -1. .SH SEE ALSO .LP .BR scf (4), .BR write_scf (3) io_lib-1.14.6/man/man3/exp2read.30000644000031500020650000000002412354177667013202 00000000000000.so man3/scf2read.3 io_lib-1.14.6/man/man3/fread_reading.30000644000031500020650000000003012354177667014237 00000000000000.so man3/read_reading.3 io_lib-1.14.6/man/man3/read2exp.30000644000031500020650000000002412354177667013202 00000000000000.so man3/scf2read.3 io_lib-1.14.6/man/man3/fread_scf.30000644000031500020650000000002412354177667013404 00000000000000.so man3/read_scf.3 io_lib-1.14.6/options.mk0000644000031500020650000000156712354177667012034 00000000000000#----------------------------------------------------------------------------- # Optional corba support # # CORBA=1 # ABI BioLIMS support # BIOLIMS=1 # Enable specific library types IOLIB_SCF=1 IOLIB_EXP=1 IOLIB_PLN=1 IOLIB_ABI=1 IOLIB_ALF=1 IOLIB_ZTR=1 IOLIB_SFF=1 #----------------------------------------------------------------------------- # Optional defines - do not edit this bit ifdef IOLIB_SCF DEFINES += -DIOLIB_SCF endif ifdef IOLIB_EXP DEFINES += -DIOLIB_EXP endif ifdef IOLIB_PLN DEFINES += -DIOLIB_PLN endif ifdef IOLIB_ABI DEFINES += -DIOLIB_ABI endif ifdef IOLIB_ALF DEFINES += -DIOLIB_ALF endif ifdef IOLIB_ZTR DEFINES += -DIOLIB_ZTR RLIBS += $(ZLIB_LIB) CFLAGS += $(ZLIB_INC) endif ifdef IOLIB_SFF DEFINES += -DIOLIB_SFF endif ifdef BIOLIMS DEFINES += -DUSE_BIOLIMS RLIBS += $(BIOLIMS_LIB) endif ifdef CORBA OBJS += $(CORBA_OBJS) RLIBS += $(CORBA_LIB) endif io_lib-1.14.6/bootstrap0000755000031500020650000000100112354177667011732 00000000000000#!/bin/sh # If this doesn't work, you may wish to try running "autoreconf" instead. set -x rm -rf install-sh missing mkinstalldirs depcomp aclocal.m4 config.cache config.log config.status configure autom4te.cache io_lib_config.h.in config.sub config.guess Makefile.in progs/Makefile.in progs/Makefile read/Makefile.in read/Makefile tests/Makefile tests/Makefile.in dependencies io_lib-config libtoolize --force --copy && \ aclocal -I . && \ autoheader && \ automake --foreign --add-missing --copy && \ autoconf io_lib-1.14.6/progs/0000755000031500020650000000000012617161151011170 500000000000000io_lib-1.14.6/progs/Makefile.am0000644000031500020650000001311212575541112013144 00000000000000# Copyright (c) 2003-2009, 2011, 2013 Genome Research Ltd. # Author(s): James Bonfield # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # # 1. Redistributions of source code must retain the above copyright notice, # this list of conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger # Institute nor the names of its contributors may be used to endorse # or promote products derived from this software without specific # prior written permission. # # THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS # IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED # TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A # PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH # LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # bin_PROGRAMS = convert_trace makeSCF extract_seq extract_qual extract_fastq index_tar scf_dump scf_info scf_update get_comment hash_tar hash_extract hash_list trace_dump hash_sff append_sff ztr_dump srf_dump_all srf_index_hash srf_extract_linear srf_extract_hash srf2fastq srf2fasta srf_filter srf_info srf_list hash_exp cram_dump cram_index scramble scram_merge scram_pileup scram_flagstat scram_test cram_size convert_trace_SOURCES = convert_trace.c convert_trace_LDADD = $(top_builddir)/io_lib/libstaden-read.la get_comment_SOURCES = get_comment.c get_comment_LDADD = $(top_builddir)/io_lib/libstaden-read.la makeSCF_SOURCES = makeSCF.c makeSCF_LDADD = $(top_builddir)/io_lib/libstaden-read.la extract_seq_SOURCES = extract_seq.c extract_seq_LDADD = $(top_builddir)/io_lib/libstaden-read.la extract_qual_SOURCES = extract_qual.c extract_qual_LDADD = $(top_builddir)/io_lib/libstaden-read.la extract_fastq_SOURCES = extract_fastq.c extract_fastq_LDADD = $(top_builddir)/io_lib/libstaden-read.la index_tar_SOURCES = index_tar.c scf_dump_SOURCES = scf_dump.c scf_dump_LDADD = $(top_builddir)/io_lib/libstaden-read.la scf_info_SOURCES = scf_info.c scf_info_LDADD = $(top_builddir)/io_lib/libstaden-read.la scf_update_SOURCES = scf_update.c scf_update_LDADD = $(top_builddir)/io_lib/libstaden-read.la hash_exp_SOURCES = hash_exp.c hash_exp_LDADD = $(top_builddir)/io_lib/libstaden-read.la hash_tar_SOURCES = hash_tar.c hash_tar_LDADD = $(top_builddir)/io_lib/libstaden-read.la hash_list_SOURCES = hash_list.c hash_list_LDADD = $(top_builddir)/io_lib/libstaden-read.la hash_sff_SOURCES = hash_sff.c hash_sff_LDADD = $(top_builddir)/io_lib/libstaden-read.la append_sff_SOURCES = append_sff.c append_sff_LDADD = $(top_builddir)/io_lib/libstaden-read.la hash_extract_SOURCES = hash_extract.c hash_extract_LDADD = $(top_builddir)/io_lib/libstaden-read.la trace_dump_SOURCES = trace_dump.c trace_dump_LDADD = $(top_builddir)/io_lib/libstaden-read.la ztr_dump_SOURCES = ztr_dump.c ztr_dump_LDADD = $(top_builddir)/io_lib/libstaden-read.la srf2fastq_SOURCES = srf2fastq.c srf2fastq_LDADD = $(top_builddir)/io_lib/libstaden-read.la srf2fasta_SOURCES = srf2fasta.c srf2fasta_LDADD = $(top_builddir)/io_lib/libstaden-read.la srf_dump_all_SOURCES = srf_dump_all.c srf_dump_all_LDADD = $(top_builddir)/io_lib/libstaden-read.la srf_extract_linear_SOURCES = srf_extract_linear.c srf_extract_linear_LDADD = $(top_builddir)/io_lib/libstaden-read.la srf_extract_hash_SOURCES = srf_extract_hash.c srf_extract_hash_LDADD = $(top_builddir)/io_lib/libstaden-read.la srf_index_hash_SOURCES = srf_index_hash.c srf_index_hash_LDADD = $(top_builddir)/io_lib/libstaden-read.la srf_filter_SOURCES = srf_filter.c srf_filter_LDADD = $(top_builddir)/io_lib/libstaden-read.la srf_info_SOURCES = srf_info.c srf_info_LDADD = $(top_builddir)/io_lib/libstaden-read.la srf_list_SOURCES = srf_list.c srf_list_LDADD = $(top_builddir)/io_lib/libstaden-read.la cram_dump_SOURCES = cram_dump.c cram_dump_LDADD = $(top_builddir)/io_lib/libstaden-read.la cram_size_SOURCES = cram_size.c cram_size_LDADD = $(top_builddir)/io_lib/libstaden-read.la cram_index_SOURCES = cram_index.c cram_index_LDADD = $(top_builddir)/io_lib/libstaden-read.la #cram_to_sam_SOURCES = cram_to_sam.c #cram_to_sam_LDADD = $(top_builddir)/io_lib/libstaden-read.la # #sam_to_cram_SOURCES = sam_to_cram.c #sam_to_cram_LDADD = $(top_builddir)/io_lib/libstaden-read.la # #sam_convert_SOURCES = sam_convert.c #sam_convert_LDADD = $(top_builddir)/io_lib/libstaden-read.la scramble_SOURCES = scramble.c scramble_LDADD = $(top_builddir)/io_lib/libstaden-read.la scram_merge_SOURCES = scram_merge.c scram_merge_LDADD = $(top_builddir)/io_lib/libstaden-read.la scram_pileup_SOURCES = scram_pileup.c scram_pileup.h scram_pileup_LDADD = $(top_builddir)/io_lib/libstaden-read.la scram_flagstat_SOURCES = scram_flagstat.c scram_flagstat_LDADD = $(top_builddir)/io_lib/libstaden-read.la scram_test_SOURCES = scram_test.c scram_test_LDADD = $(top_builddir)/io_lib/libstaden-read.la INCLUDES= -I${top_srcdir} io_lib-1.14.6/progs/Makefile.in0000644000031500020650000010772612617160066013176 00000000000000# Makefile.in generated by automake 1.11.3 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ bin_PROGRAMS = convert_trace$(EXEEXT) makeSCF$(EXEEXT) \ extract_seq$(EXEEXT) extract_qual$(EXEEXT) \ extract_fastq$(EXEEXT) index_tar$(EXEEXT) scf_dump$(EXEEXT) \ scf_info$(EXEEXT) scf_update$(EXEEXT) get_comment$(EXEEXT) \ hash_tar$(EXEEXT) hash_extract$(EXEEXT) hash_list$(EXEEXT) \ trace_dump$(EXEEXT) hash_sff$(EXEEXT) append_sff$(EXEEXT) \ ztr_dump$(EXEEXT) srf_dump_all$(EXEEXT) \ srf_index_hash$(EXEEXT) srf_extract_linear$(EXEEXT) \ srf_extract_hash$(EXEEXT) srf2fastq$(EXEEXT) \ srf2fasta$(EXEEXT) srf_filter$(EXEEXT) srf_info$(EXEEXT) \ srf_list$(EXEEXT) hash_exp$(EXEEXT) cram_dump$(EXEEXT) \ cram_index$(EXEEXT) scramble$(EXEEXT) scram_merge$(EXEEXT) \ scram_pileup$(EXEEXT) scram_flagstat$(EXEEXT) \ scram_test$(EXEEXT) cram_size$(EXEEXT) subdir = progs DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/io_lib_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(bindir)" PROGRAMS = $(bin_PROGRAMS) am_append_sff_OBJECTS = append_sff.$(OBJEXT) append_sff_OBJECTS = $(am_append_sff_OBJECTS) append_sff_DEPENDENCIES = $(top_builddir)/io_lib/libstaden-read.la am_convert_trace_OBJECTS = convert_trace.$(OBJEXT) convert_trace_OBJECTS = $(am_convert_trace_OBJECTS) convert_trace_DEPENDENCIES = $(top_builddir)/io_lib/libstaden-read.la am_cram_dump_OBJECTS = cram_dump.$(OBJEXT) cram_dump_OBJECTS = $(am_cram_dump_OBJECTS) cram_dump_DEPENDENCIES = $(top_builddir)/io_lib/libstaden-read.la am_cram_index_OBJECTS = cram_index.$(OBJEXT) cram_index_OBJECTS = $(am_cram_index_OBJECTS) cram_index_DEPENDENCIES = $(top_builddir)/io_lib/libstaden-read.la am_cram_size_OBJECTS = cram_size.$(OBJEXT) cram_size_OBJECTS = $(am_cram_size_OBJECTS) cram_size_DEPENDENCIES = $(top_builddir)/io_lib/libstaden-read.la am_extract_fastq_OBJECTS = extract_fastq.$(OBJEXT) extract_fastq_OBJECTS = $(am_extract_fastq_OBJECTS) extract_fastq_DEPENDENCIES = $(top_builddir)/io_lib/libstaden-read.la am_extract_qual_OBJECTS = extract_qual.$(OBJEXT) extract_qual_OBJECTS = $(am_extract_qual_OBJECTS) extract_qual_DEPENDENCIES = $(top_builddir)/io_lib/libstaden-read.la am_extract_seq_OBJECTS = extract_seq.$(OBJEXT) extract_seq_OBJECTS = $(am_extract_seq_OBJECTS) extract_seq_DEPENDENCIES = $(top_builddir)/io_lib/libstaden-read.la am_get_comment_OBJECTS = get_comment.$(OBJEXT) get_comment_OBJECTS = $(am_get_comment_OBJECTS) get_comment_DEPENDENCIES = $(top_builddir)/io_lib/libstaden-read.la am_hash_exp_OBJECTS = hash_exp.$(OBJEXT) hash_exp_OBJECTS = $(am_hash_exp_OBJECTS) hash_exp_DEPENDENCIES = $(top_builddir)/io_lib/libstaden-read.la am_hash_extract_OBJECTS = hash_extract.$(OBJEXT) hash_extract_OBJECTS = $(am_hash_extract_OBJECTS) hash_extract_DEPENDENCIES = $(top_builddir)/io_lib/libstaden-read.la am_hash_list_OBJECTS = hash_list.$(OBJEXT) hash_list_OBJECTS = $(am_hash_list_OBJECTS) hash_list_DEPENDENCIES = $(top_builddir)/io_lib/libstaden-read.la am_hash_sff_OBJECTS = hash_sff.$(OBJEXT) hash_sff_OBJECTS = $(am_hash_sff_OBJECTS) hash_sff_DEPENDENCIES = $(top_builddir)/io_lib/libstaden-read.la am_hash_tar_OBJECTS = hash_tar.$(OBJEXT) hash_tar_OBJECTS = $(am_hash_tar_OBJECTS) hash_tar_DEPENDENCIES = $(top_builddir)/io_lib/libstaden-read.la am_index_tar_OBJECTS = index_tar.$(OBJEXT) index_tar_OBJECTS = $(am_index_tar_OBJECTS) index_tar_LDADD = $(LDADD) am_makeSCF_OBJECTS = makeSCF.$(OBJEXT) makeSCF_OBJECTS = $(am_makeSCF_OBJECTS) makeSCF_DEPENDENCIES = $(top_builddir)/io_lib/libstaden-read.la am_scf_dump_OBJECTS = scf_dump.$(OBJEXT) scf_dump_OBJECTS = $(am_scf_dump_OBJECTS) scf_dump_DEPENDENCIES = $(top_builddir)/io_lib/libstaden-read.la am_scf_info_OBJECTS = scf_info.$(OBJEXT) scf_info_OBJECTS = $(am_scf_info_OBJECTS) scf_info_DEPENDENCIES = $(top_builddir)/io_lib/libstaden-read.la am_scf_update_OBJECTS = scf_update.$(OBJEXT) scf_update_OBJECTS = $(am_scf_update_OBJECTS) scf_update_DEPENDENCIES = $(top_builddir)/io_lib/libstaden-read.la am_scram_flagstat_OBJECTS = scram_flagstat.$(OBJEXT) scram_flagstat_OBJECTS = $(am_scram_flagstat_OBJECTS) scram_flagstat_DEPENDENCIES = \ $(top_builddir)/io_lib/libstaden-read.la am_scram_merge_OBJECTS = scram_merge.$(OBJEXT) scram_merge_OBJECTS = $(am_scram_merge_OBJECTS) scram_merge_DEPENDENCIES = $(top_builddir)/io_lib/libstaden-read.la am_scram_pileup_OBJECTS = scram_pileup.$(OBJEXT) scram_pileup_OBJECTS = $(am_scram_pileup_OBJECTS) scram_pileup_DEPENDENCIES = $(top_builddir)/io_lib/libstaden-read.la am_scram_test_OBJECTS = scram_test.$(OBJEXT) scram_test_OBJECTS = $(am_scram_test_OBJECTS) scram_test_DEPENDENCIES = $(top_builddir)/io_lib/libstaden-read.la am_scramble_OBJECTS = scramble.$(OBJEXT) scramble_OBJECTS = $(am_scramble_OBJECTS) scramble_DEPENDENCIES = $(top_builddir)/io_lib/libstaden-read.la am_srf2fasta_OBJECTS = srf2fasta.$(OBJEXT) srf2fasta_OBJECTS = $(am_srf2fasta_OBJECTS) srf2fasta_DEPENDENCIES = $(top_builddir)/io_lib/libstaden-read.la am_srf2fastq_OBJECTS = srf2fastq.$(OBJEXT) srf2fastq_OBJECTS = $(am_srf2fastq_OBJECTS) srf2fastq_DEPENDENCIES = $(top_builddir)/io_lib/libstaden-read.la am_srf_dump_all_OBJECTS = srf_dump_all.$(OBJEXT) srf_dump_all_OBJECTS = $(am_srf_dump_all_OBJECTS) srf_dump_all_DEPENDENCIES = $(top_builddir)/io_lib/libstaden-read.la am_srf_extract_hash_OBJECTS = srf_extract_hash.$(OBJEXT) srf_extract_hash_OBJECTS = $(am_srf_extract_hash_OBJECTS) srf_extract_hash_DEPENDENCIES = \ $(top_builddir)/io_lib/libstaden-read.la am_srf_extract_linear_OBJECTS = srf_extract_linear.$(OBJEXT) srf_extract_linear_OBJECTS = $(am_srf_extract_linear_OBJECTS) srf_extract_linear_DEPENDENCIES = \ $(top_builddir)/io_lib/libstaden-read.la am_srf_filter_OBJECTS = srf_filter.$(OBJEXT) srf_filter_OBJECTS = $(am_srf_filter_OBJECTS) srf_filter_DEPENDENCIES = $(top_builddir)/io_lib/libstaden-read.la am_srf_index_hash_OBJECTS = srf_index_hash.$(OBJEXT) srf_index_hash_OBJECTS = $(am_srf_index_hash_OBJECTS) srf_index_hash_DEPENDENCIES = \ $(top_builddir)/io_lib/libstaden-read.la am_srf_info_OBJECTS = srf_info.$(OBJEXT) srf_info_OBJECTS = $(am_srf_info_OBJECTS) srf_info_DEPENDENCIES = $(top_builddir)/io_lib/libstaden-read.la am_srf_list_OBJECTS = srf_list.$(OBJEXT) srf_list_OBJECTS = $(am_srf_list_OBJECTS) srf_list_DEPENDENCIES = $(top_builddir)/io_lib/libstaden-read.la am_trace_dump_OBJECTS = trace_dump.$(OBJEXT) trace_dump_OBJECTS = $(am_trace_dump_OBJECTS) trace_dump_DEPENDENCIES = $(top_builddir)/io_lib/libstaden-read.la am_ztr_dump_OBJECTS = ztr_dump.$(OBJEXT) ztr_dump_OBJECTS = $(am_ztr_dump_OBJECTS) ztr_dump_DEPENDENCIES = $(top_builddir)/io_lib/libstaden-read.la DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ SOURCES = $(append_sff_SOURCES) $(convert_trace_SOURCES) \ $(cram_dump_SOURCES) $(cram_index_SOURCES) \ $(cram_size_SOURCES) $(extract_fastq_SOURCES) \ $(extract_qual_SOURCES) $(extract_seq_SOURCES) \ $(get_comment_SOURCES) $(hash_exp_SOURCES) \ $(hash_extract_SOURCES) $(hash_list_SOURCES) \ $(hash_sff_SOURCES) $(hash_tar_SOURCES) $(index_tar_SOURCES) \ $(makeSCF_SOURCES) $(scf_dump_SOURCES) $(scf_info_SOURCES) \ $(scf_update_SOURCES) $(scram_flagstat_SOURCES) \ $(scram_merge_SOURCES) $(scram_pileup_SOURCES) \ $(scram_test_SOURCES) $(scramble_SOURCES) $(srf2fasta_SOURCES) \ $(srf2fastq_SOURCES) $(srf_dump_all_SOURCES) \ $(srf_extract_hash_SOURCES) $(srf_extract_linear_SOURCES) \ $(srf_filter_SOURCES) $(srf_index_hash_SOURCES) \ $(srf_info_SOURCES) $(srf_list_SOURCES) $(trace_dump_SOURCES) \ $(ztr_dump_SOURCES) DIST_SOURCES = $(append_sff_SOURCES) $(convert_trace_SOURCES) \ $(cram_dump_SOURCES) $(cram_index_SOURCES) \ $(cram_size_SOURCES) $(extract_fastq_SOURCES) \ $(extract_qual_SOURCES) $(extract_seq_SOURCES) \ $(get_comment_SOURCES) $(hash_exp_SOURCES) \ $(hash_extract_SOURCES) $(hash_list_SOURCES) \ $(hash_sff_SOURCES) $(hash_tar_SOURCES) $(index_tar_SOURCES) \ $(makeSCF_SOURCES) $(scf_dump_SOURCES) $(scf_info_SOURCES) \ $(scf_update_SOURCES) $(scram_flagstat_SOURCES) \ $(scram_merge_SOURCES) $(scram_pileup_SOURCES) \ $(scram_test_SOURCES) $(scramble_SOURCES) $(srf2fasta_SOURCES) \ $(srf2fastq_SOURCES) $(srf_dump_all_SOURCES) \ $(srf_extract_hash_SOURCES) $(srf_extract_linear_SOURCES) \ $(srf_filter_SOURCES) $(srf_index_hash_SOURCES) \ $(srf_info_SOURCES) $(srf_list_SOURCES) $(trace_dump_SOURCES) \ $(ztr_dump_SOURCES) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBCURL = @LIBCURL@ LIBCURL_CPPFLAGS = @LIBCURL_CPPFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBZ = @LIBZ@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ SED = @SED@ SET_CRAM_IO_CUSTOM_BUFFERING = @SET_CRAM_IO_CUSTOM_BUFFERING@ SET_ENDIAN = @SET_ENDIAN@ SET_MAKE = @SET_MAKE@ SET_STDIO_EXT = @SET_STDIO_EXT@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ VERS_AGE = @VERS_AGE@ VERS_CURRENT = @VERS_CURRENT@ VERS_REVISION = @VERS_REVISION@ _libcurl_config = @_libcurl_config@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ convert_trace_SOURCES = convert_trace.c convert_trace_LDADD = $(top_builddir)/io_lib/libstaden-read.la get_comment_SOURCES = get_comment.c get_comment_LDADD = $(top_builddir)/io_lib/libstaden-read.la makeSCF_SOURCES = makeSCF.c makeSCF_LDADD = $(top_builddir)/io_lib/libstaden-read.la extract_seq_SOURCES = extract_seq.c extract_seq_LDADD = $(top_builddir)/io_lib/libstaden-read.la extract_qual_SOURCES = extract_qual.c extract_qual_LDADD = $(top_builddir)/io_lib/libstaden-read.la extract_fastq_SOURCES = extract_fastq.c extract_fastq_LDADD = $(top_builddir)/io_lib/libstaden-read.la index_tar_SOURCES = index_tar.c scf_dump_SOURCES = scf_dump.c scf_dump_LDADD = $(top_builddir)/io_lib/libstaden-read.la scf_info_SOURCES = scf_info.c scf_info_LDADD = $(top_builddir)/io_lib/libstaden-read.la scf_update_SOURCES = scf_update.c scf_update_LDADD = $(top_builddir)/io_lib/libstaden-read.la hash_exp_SOURCES = hash_exp.c hash_exp_LDADD = $(top_builddir)/io_lib/libstaden-read.la hash_tar_SOURCES = hash_tar.c hash_tar_LDADD = $(top_builddir)/io_lib/libstaden-read.la hash_list_SOURCES = hash_list.c hash_list_LDADD = $(top_builddir)/io_lib/libstaden-read.la hash_sff_SOURCES = hash_sff.c hash_sff_LDADD = $(top_builddir)/io_lib/libstaden-read.la append_sff_SOURCES = append_sff.c append_sff_LDADD = $(top_builddir)/io_lib/libstaden-read.la hash_extract_SOURCES = hash_extract.c hash_extract_LDADD = $(top_builddir)/io_lib/libstaden-read.la trace_dump_SOURCES = trace_dump.c trace_dump_LDADD = $(top_builddir)/io_lib/libstaden-read.la ztr_dump_SOURCES = ztr_dump.c ztr_dump_LDADD = $(top_builddir)/io_lib/libstaden-read.la srf2fastq_SOURCES = srf2fastq.c srf2fastq_LDADD = $(top_builddir)/io_lib/libstaden-read.la srf2fasta_SOURCES = srf2fasta.c srf2fasta_LDADD = $(top_builddir)/io_lib/libstaden-read.la srf_dump_all_SOURCES = srf_dump_all.c srf_dump_all_LDADD = $(top_builddir)/io_lib/libstaden-read.la srf_extract_linear_SOURCES = srf_extract_linear.c srf_extract_linear_LDADD = $(top_builddir)/io_lib/libstaden-read.la srf_extract_hash_SOURCES = srf_extract_hash.c srf_extract_hash_LDADD = $(top_builddir)/io_lib/libstaden-read.la srf_index_hash_SOURCES = srf_index_hash.c srf_index_hash_LDADD = $(top_builddir)/io_lib/libstaden-read.la srf_filter_SOURCES = srf_filter.c srf_filter_LDADD = $(top_builddir)/io_lib/libstaden-read.la srf_info_SOURCES = srf_info.c srf_info_LDADD = $(top_builddir)/io_lib/libstaden-read.la srf_list_SOURCES = srf_list.c srf_list_LDADD = $(top_builddir)/io_lib/libstaden-read.la cram_dump_SOURCES = cram_dump.c cram_dump_LDADD = $(top_builddir)/io_lib/libstaden-read.la cram_size_SOURCES = cram_size.c cram_size_LDADD = $(top_builddir)/io_lib/libstaden-read.la cram_index_SOURCES = cram_index.c cram_index_LDADD = $(top_builddir)/io_lib/libstaden-read.la #cram_to_sam_SOURCES = cram_to_sam.c #cram_to_sam_LDADD = $(top_builddir)/io_lib/libstaden-read.la # #sam_to_cram_SOURCES = sam_to_cram.c #sam_to_cram_LDADD = $(top_builddir)/io_lib/libstaden-read.la # #sam_convert_SOURCES = sam_convert.c #sam_convert_LDADD = $(top_builddir)/io_lib/libstaden-read.la scramble_SOURCES = scramble.c scramble_LDADD = $(top_builddir)/io_lib/libstaden-read.la scram_merge_SOURCES = scram_merge.c scram_merge_LDADD = $(top_builddir)/io_lib/libstaden-read.la scram_pileup_SOURCES = scram_pileup.c scram_pileup.h scram_pileup_LDADD = $(top_builddir)/io_lib/libstaden-read.la scram_flagstat_SOURCES = scram_flagstat.c scram_flagstat_LDADD = $(top_builddir)/io_lib/libstaden-read.la scram_test_SOURCES = scram_test.c scram_test_LDADD = $(top_builddir)/io_lib/libstaden-read.la INCLUDES = -I${top_srcdir} all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign progs/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign progs/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)" @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p || test -f $$p1; \ then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ } \ ; done uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(bindir)" && rm -f $$files clean-binPROGRAMS: @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list append_sff$(EXEEXT): $(append_sff_OBJECTS) $(append_sff_DEPENDENCIES) $(EXTRA_append_sff_DEPENDENCIES) @rm -f append_sff$(EXEEXT) $(LINK) $(append_sff_OBJECTS) $(append_sff_LDADD) $(LIBS) convert_trace$(EXEEXT): $(convert_trace_OBJECTS) $(convert_trace_DEPENDENCIES) $(EXTRA_convert_trace_DEPENDENCIES) @rm -f convert_trace$(EXEEXT) $(LINK) $(convert_trace_OBJECTS) $(convert_trace_LDADD) $(LIBS) cram_dump$(EXEEXT): $(cram_dump_OBJECTS) $(cram_dump_DEPENDENCIES) $(EXTRA_cram_dump_DEPENDENCIES) @rm -f cram_dump$(EXEEXT) $(LINK) $(cram_dump_OBJECTS) $(cram_dump_LDADD) $(LIBS) cram_index$(EXEEXT): $(cram_index_OBJECTS) $(cram_index_DEPENDENCIES) $(EXTRA_cram_index_DEPENDENCIES) @rm -f cram_index$(EXEEXT) $(LINK) $(cram_index_OBJECTS) $(cram_index_LDADD) $(LIBS) cram_size$(EXEEXT): $(cram_size_OBJECTS) $(cram_size_DEPENDENCIES) $(EXTRA_cram_size_DEPENDENCIES) @rm -f cram_size$(EXEEXT) $(LINK) $(cram_size_OBJECTS) $(cram_size_LDADD) $(LIBS) extract_fastq$(EXEEXT): $(extract_fastq_OBJECTS) $(extract_fastq_DEPENDENCIES) $(EXTRA_extract_fastq_DEPENDENCIES) @rm -f extract_fastq$(EXEEXT) $(LINK) $(extract_fastq_OBJECTS) $(extract_fastq_LDADD) $(LIBS) extract_qual$(EXEEXT): $(extract_qual_OBJECTS) $(extract_qual_DEPENDENCIES) $(EXTRA_extract_qual_DEPENDENCIES) @rm -f extract_qual$(EXEEXT) $(LINK) $(extract_qual_OBJECTS) $(extract_qual_LDADD) $(LIBS) extract_seq$(EXEEXT): $(extract_seq_OBJECTS) $(extract_seq_DEPENDENCIES) $(EXTRA_extract_seq_DEPENDENCIES) @rm -f extract_seq$(EXEEXT) $(LINK) $(extract_seq_OBJECTS) $(extract_seq_LDADD) $(LIBS) get_comment$(EXEEXT): $(get_comment_OBJECTS) $(get_comment_DEPENDENCIES) $(EXTRA_get_comment_DEPENDENCIES) @rm -f get_comment$(EXEEXT) $(LINK) $(get_comment_OBJECTS) $(get_comment_LDADD) $(LIBS) hash_exp$(EXEEXT): $(hash_exp_OBJECTS) $(hash_exp_DEPENDENCIES) $(EXTRA_hash_exp_DEPENDENCIES) @rm -f hash_exp$(EXEEXT) $(LINK) $(hash_exp_OBJECTS) $(hash_exp_LDADD) $(LIBS) hash_extract$(EXEEXT): $(hash_extract_OBJECTS) $(hash_extract_DEPENDENCIES) $(EXTRA_hash_extract_DEPENDENCIES) @rm -f hash_extract$(EXEEXT) $(LINK) $(hash_extract_OBJECTS) $(hash_extract_LDADD) $(LIBS) hash_list$(EXEEXT): $(hash_list_OBJECTS) $(hash_list_DEPENDENCIES) $(EXTRA_hash_list_DEPENDENCIES) @rm -f hash_list$(EXEEXT) $(LINK) $(hash_list_OBJECTS) $(hash_list_LDADD) $(LIBS) hash_sff$(EXEEXT): $(hash_sff_OBJECTS) $(hash_sff_DEPENDENCIES) $(EXTRA_hash_sff_DEPENDENCIES) @rm -f hash_sff$(EXEEXT) $(LINK) $(hash_sff_OBJECTS) $(hash_sff_LDADD) $(LIBS) hash_tar$(EXEEXT): $(hash_tar_OBJECTS) $(hash_tar_DEPENDENCIES) $(EXTRA_hash_tar_DEPENDENCIES) @rm -f hash_tar$(EXEEXT) $(LINK) $(hash_tar_OBJECTS) $(hash_tar_LDADD) $(LIBS) index_tar$(EXEEXT): $(index_tar_OBJECTS) $(index_tar_DEPENDENCIES) $(EXTRA_index_tar_DEPENDENCIES) @rm -f index_tar$(EXEEXT) $(LINK) $(index_tar_OBJECTS) $(index_tar_LDADD) $(LIBS) makeSCF$(EXEEXT): $(makeSCF_OBJECTS) $(makeSCF_DEPENDENCIES) $(EXTRA_makeSCF_DEPENDENCIES) @rm -f makeSCF$(EXEEXT) $(LINK) $(makeSCF_OBJECTS) $(makeSCF_LDADD) $(LIBS) scf_dump$(EXEEXT): $(scf_dump_OBJECTS) $(scf_dump_DEPENDENCIES) $(EXTRA_scf_dump_DEPENDENCIES) @rm -f scf_dump$(EXEEXT) $(LINK) $(scf_dump_OBJECTS) $(scf_dump_LDADD) $(LIBS) scf_info$(EXEEXT): $(scf_info_OBJECTS) $(scf_info_DEPENDENCIES) $(EXTRA_scf_info_DEPENDENCIES) @rm -f scf_info$(EXEEXT) $(LINK) $(scf_info_OBJECTS) $(scf_info_LDADD) $(LIBS) scf_update$(EXEEXT): $(scf_update_OBJECTS) $(scf_update_DEPENDENCIES) $(EXTRA_scf_update_DEPENDENCIES) @rm -f scf_update$(EXEEXT) $(LINK) $(scf_update_OBJECTS) $(scf_update_LDADD) $(LIBS) scram_flagstat$(EXEEXT): $(scram_flagstat_OBJECTS) $(scram_flagstat_DEPENDENCIES) $(EXTRA_scram_flagstat_DEPENDENCIES) @rm -f scram_flagstat$(EXEEXT) $(LINK) $(scram_flagstat_OBJECTS) $(scram_flagstat_LDADD) $(LIBS) scram_merge$(EXEEXT): $(scram_merge_OBJECTS) $(scram_merge_DEPENDENCIES) $(EXTRA_scram_merge_DEPENDENCIES) @rm -f scram_merge$(EXEEXT) $(LINK) $(scram_merge_OBJECTS) $(scram_merge_LDADD) $(LIBS) scram_pileup$(EXEEXT): $(scram_pileup_OBJECTS) $(scram_pileup_DEPENDENCIES) $(EXTRA_scram_pileup_DEPENDENCIES) @rm -f scram_pileup$(EXEEXT) $(LINK) $(scram_pileup_OBJECTS) $(scram_pileup_LDADD) $(LIBS) scram_test$(EXEEXT): $(scram_test_OBJECTS) $(scram_test_DEPENDENCIES) $(EXTRA_scram_test_DEPENDENCIES) @rm -f scram_test$(EXEEXT) $(LINK) $(scram_test_OBJECTS) $(scram_test_LDADD) $(LIBS) scramble$(EXEEXT): $(scramble_OBJECTS) $(scramble_DEPENDENCIES) $(EXTRA_scramble_DEPENDENCIES) @rm -f scramble$(EXEEXT) $(LINK) $(scramble_OBJECTS) $(scramble_LDADD) $(LIBS) srf2fasta$(EXEEXT): $(srf2fasta_OBJECTS) $(srf2fasta_DEPENDENCIES) $(EXTRA_srf2fasta_DEPENDENCIES) @rm -f srf2fasta$(EXEEXT) $(LINK) $(srf2fasta_OBJECTS) $(srf2fasta_LDADD) $(LIBS) srf2fastq$(EXEEXT): $(srf2fastq_OBJECTS) $(srf2fastq_DEPENDENCIES) $(EXTRA_srf2fastq_DEPENDENCIES) @rm -f srf2fastq$(EXEEXT) $(LINK) $(srf2fastq_OBJECTS) $(srf2fastq_LDADD) $(LIBS) srf_dump_all$(EXEEXT): $(srf_dump_all_OBJECTS) $(srf_dump_all_DEPENDENCIES) $(EXTRA_srf_dump_all_DEPENDENCIES) @rm -f srf_dump_all$(EXEEXT) $(LINK) $(srf_dump_all_OBJECTS) $(srf_dump_all_LDADD) $(LIBS) srf_extract_hash$(EXEEXT): $(srf_extract_hash_OBJECTS) $(srf_extract_hash_DEPENDENCIES) $(EXTRA_srf_extract_hash_DEPENDENCIES) @rm -f srf_extract_hash$(EXEEXT) $(LINK) $(srf_extract_hash_OBJECTS) $(srf_extract_hash_LDADD) $(LIBS) srf_extract_linear$(EXEEXT): $(srf_extract_linear_OBJECTS) $(srf_extract_linear_DEPENDENCIES) $(EXTRA_srf_extract_linear_DEPENDENCIES) @rm -f srf_extract_linear$(EXEEXT) $(LINK) $(srf_extract_linear_OBJECTS) $(srf_extract_linear_LDADD) $(LIBS) srf_filter$(EXEEXT): $(srf_filter_OBJECTS) $(srf_filter_DEPENDENCIES) $(EXTRA_srf_filter_DEPENDENCIES) @rm -f srf_filter$(EXEEXT) $(LINK) $(srf_filter_OBJECTS) $(srf_filter_LDADD) $(LIBS) srf_index_hash$(EXEEXT): $(srf_index_hash_OBJECTS) $(srf_index_hash_DEPENDENCIES) $(EXTRA_srf_index_hash_DEPENDENCIES) @rm -f srf_index_hash$(EXEEXT) $(LINK) $(srf_index_hash_OBJECTS) $(srf_index_hash_LDADD) $(LIBS) srf_info$(EXEEXT): $(srf_info_OBJECTS) $(srf_info_DEPENDENCIES) $(EXTRA_srf_info_DEPENDENCIES) @rm -f srf_info$(EXEEXT) $(LINK) $(srf_info_OBJECTS) $(srf_info_LDADD) $(LIBS) srf_list$(EXEEXT): $(srf_list_OBJECTS) $(srf_list_DEPENDENCIES) $(EXTRA_srf_list_DEPENDENCIES) @rm -f srf_list$(EXEEXT) $(LINK) $(srf_list_OBJECTS) $(srf_list_LDADD) $(LIBS) trace_dump$(EXEEXT): $(trace_dump_OBJECTS) $(trace_dump_DEPENDENCIES) $(EXTRA_trace_dump_DEPENDENCIES) @rm -f trace_dump$(EXEEXT) $(LINK) $(trace_dump_OBJECTS) $(trace_dump_LDADD) $(LIBS) ztr_dump$(EXEEXT): $(ztr_dump_OBJECTS) $(ztr_dump_DEPENDENCIES) $(EXTRA_ztr_dump_DEPENDENCIES) @rm -f ztr_dump$(EXEEXT) $(LINK) $(ztr_dump_OBJECTS) $(ztr_dump_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/append_sff.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/convert_trace.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cram_dump.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cram_index.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cram_size.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/extract_fastq.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/extract_qual.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/extract_seq.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/get_comment.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hash_exp.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hash_extract.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hash_list.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hash_sff.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hash_tar.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/index_tar.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/makeSCF.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scf_dump.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scf_info.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scf_update.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scram_flagstat.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scram_merge.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scram_pileup.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scram_test.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scramble.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/srf2fasta.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/srf2fastq.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/srf_dump_all.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/srf_extract_hash.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/srf_extract_linear.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/srf_filter.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/srf_index_hash.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/srf_info.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/srf_list.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/trace_dump.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ztr_dump.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c $< .c.obj: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: for dir in "$(DESTDIR)$(bindir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-binPROGRAMS install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-binPROGRAMS .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \ clean-generic clean-libtool ctags distclean distclean-compile \ distclean-generic distclean-libtool distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-binPROGRAMS install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ pdf pdf-am ps ps-am tags uninstall uninstall-am \ uninstall-binPROGRAMS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: io_lib-1.14.6/progs/append_sff.c0000644000031500020650000001147312354177665013406 00000000000000/* * Copyright (c) 2005, 2007, 2010, 2013 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * Concatenates multiple SFF files together. It also strips out any indexing * so this will need to be added again afterwards. * * The first argument is the archive to append to. All subsequent arguments * are the archives to append to the first argument. */ #ifdef HAVE_CONFIG_H #include "io_lib_config.h" #endif #include #include #include #include #include #include #define BSIZE 1024*1024 int main(int argc, char **argv) { int i; FILE *fpin, *fpout; unsigned char *block; unsigned char chdr[31]; sff_common_header *ch; block = (unsigned char *)malloc(BSIZE); if (argc < 3) { fprintf(stderr, "Usage: append_sff sff_file add_me.sff ...\n"); return 1; } /* Open and decode the common header of the archive we'll append to */ if (NULL == (fpout = fopen(argv[1], "rb+"))) { perror(argv[1]); return 1; } if (31 != fread(chdr, 1, 31, fpout)) { fprintf(stderr, "Couldn't read common header\n"); return 1; } ch = decode_sff_common_header(chdr); /* * Jump to the end of the archive or the start of the index. * NB: If the index is not at the end we cannot use a simple append * method. */ fseek(fpout, 0, SEEK_END); if (ch->index_len) { if (ch->index_offset + ch->index_len != ftell(fpout)) { fprintf(stderr, "Index is not at the end of file => cannot append\n"); return 1; } fseek(fpout, ch->index_offset, SEEK_SET); } /* Iterate around other archives, appending to the first one */ for (i = 2; i < argc; i++) { sff_common_header *h; uint64_t pos; size_t len; char *sff = argv[i]; int skipped; printf("Copying %s\n", sff); if (NULL == (fpin = fopen(sff, "rb"))) { perror(sff); return 1; } if (31 != fread(chdr, 1, 31, fpin)) { fprintf(stderr, "Couldn't read common header\n"); return 1; } h = decode_sff_common_header(chdr); /* Check if headers are compatible */ if (ch->flow_len != h->flow_len || ch->key_len != h->key_len || ch->flowgram_format != h->flowgram_format) fprintf(stderr, "*** Error: incompatible SFF headers ***\n"); fseek(fpin, h->header_len - 31, SEEK_CUR); ch->nreads += h->nreads; /* Copy all data from fpin to fpout, skipping index if present */ skipped = h->index_len ? 0 : 1; for (pos = ftell(fpin); ; pos += len) { len = BSIZE; if (!skipped) { if (pos == h->index_offset) { fseek(fpin, h->index_len, SEEK_CUR); pos += h->index_len; skipped = 1; } else if (pos + BSIZE > h->index_offset) { len = h->index_offset - pos; } } if (0 == (len = fread(block, 1, len, fpin))) break; fwrite(block, 1, len, fpout); } free_sff_common_header(h); fclose(fpin); } /* Seek back and update the header with the new nreads */ fseek(fpout, 0, SEEK_SET); if (31 != fread(chdr, 1, 31, fpout)) exit(1); *(uint64_t *)(chdr+8) = be_int8(0); *(uint32_t *)(chdr+16) = be_int4(0); *(uint32_t *)(chdr+20) = be_int4(ch->nreads); fseek(fpout, 0, SEEK_SET); fwrite(chdr, 1, 31, fpout); fclose(fpout); free_sff_common_header(ch); free(block); return 0; } io_lib-1.14.6/progs/convert_trace.c0000644000031500020650000005415212547702405014126 00000000000000/* * Copyright (c) 2004-2008, 2010, 2013 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * Author(s): James Bonfield * * Copyright (c) 2000-2001 MEDICAL RESEARCH COUNCIL * All rights reserved * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1 Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2 Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3 Neither the name of the MEDICAL RESEARCH COUNCIL, THE LABORATORY OF * MOLECULAR BIOLOGY nor the names of its contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ #ifdef HAVE_CONFIG_H #include "io_lib_config.h" #endif #include #include #include #include #include #include #include #include #include #include /* defines MAX and __UNUSED__ */ static char const rcsid[] __UNUSED__ = "$Id: convert_trace.c,v 1.12 2008-02-20 16:07:44 jkbonfield Exp $"; struct opts { char *name; char *fofn; char *passed; char *failed; char *error; int in_format; int out_format; int scale; int sub_background; int subtract; int normalise; int min_normalise; int compress_mode; int dots; int noneg; int signed_trace; int skipx; int start; int end; }; /* * Removes any negative values from a trace by moving each channel * independently so that its lowest value is 0. */ void noneg(Read *r) { int i, j, k; signed int min; TRACE *t; /* Find the real end of the data */ for (k = r->NPoints-1; k >= 0; k--) if (r->traceA[k] || r->traceC[k] || r->traceG[k] || r->traceT[k]) break; for (j = 0; j < 4; j++) { switch(j) { case 0: t = r->traceA; break; case 1: t = r->traceC; break; case 2: t = r->traceG; break; case 3: default: t = r->traceT; break; } /* Find the lowest -ve value per lane */ for (min = i = 0; i <= k; i++) { if (min > ((int16_t *)t)[i]) min = ((int16_t *)t)[i]; } /* And shift everything back up */ for (i = 0; i <= k; i++) { t[i] -= min; } } } /* * Removes any negative values from a trace by moving the trace up so that * the lowest overall value is 0. This differs to noneg above by using * a global shift for all channels and also setting the read 'baseline'. */ void signed_trace(Read *r) { int i, k; signed int min; /* Find the real end of the data */ for (k = r->NPoints-1; k >= 0; k--) if (r->traceA[k] || r->traceC[k] || r->traceG[k] || r->traceT[k]) break; /* Find the lowest -ve value per lane */ for (min = i = 0; i <= k; i++) { if (min > ((int16_t *)(r->traceA))[i]) min = ((int16_t *)(r->traceA))[i]; if (min > ((int16_t *)(r->traceC))[i]) min = ((int16_t *)(r->traceC))[i]; if (min > ((int16_t *)(r->traceG))[i]) min = ((int16_t *)(r->traceG))[i]; if (min > ((int16_t *)(r->traceT))[i]) min = ((int16_t *)(r->traceT))[i]; } r->baseline = -min; /* And shift everything back up */ for (i = 0; i <= k; i++) { r->traceA[i] -= min; r->traceC[i] -= min; r->traceG[i] -= min; r->traceT[i] -= min; } } /* * Scales trace values from 0 to scale, but only if they are larger. */ void rescale_trace(Read *r, int scale) { double s; int i; if (r->maxTraceVal <= scale) return; s = ((double)scale)/r->maxTraceVal; for (i = 0; i < r->NPoints; i++) { r->traceA[i] = r->traceA[i] * s + 0.5; r->traceC[i] = r->traceC[i] * s + 0.5; r->traceG[i] = r->traceG[i] * s + 0.5; r->traceT[i] = r->traceT[i] * s + 0.5; } r->maxTraceVal = scale; } #if 0 /* OLD method, treats all channels together and assumes the same baseline for * each */ /* * Here we just take the minimum trace value and subtract this from all others. * The assumption is that the signal will always be 'base line' on at least * one of the four channels. */ void subtract_background(Read *r) { int i, min; for (i = 0; i < r->NPoints; i++) { min = 999999; if (r->traceA[i] < min) min = r->traceA[i]; if (r->traceC[i] < min) min = r->traceC[i]; if (r->traceG[i] < min) min = r->traceG[i]; if (r->traceT[i] < min) min = r->traceT[i]; r->traceA[i] -= min; r->traceC[i] -= min; r->traceG[i] -= min; r->traceT[i] -= min; } } #endif static void subtract_background_ch(TRACE *channel, int nchannel) { int i, j, bg; int win_len = 501, win_len2 = win_len/2; TRACE *copy; if (NULL == (copy = (TRACE *)malloc(sizeof(*copy) * nchannel))) return; if (nchannel < win_len) win_len = nchannel; /* Take lowest background over win_len and subtract it */ for (i = 0; i < nchannel; i++) { /* Could optimise this considerably */ bg = INT_MAX; for (j = -win_len2; j < win_len2; j++) { if (i+j < 0) continue; if (i+j >= nchannel) break; if (channel[i + j] < bg) bg = channel[i + j]; } copy[i] = channel[i] - bg; } memcpy(channel, copy, nchannel * sizeof(*copy)); free(copy); } /* * Find the average background level of a trace, and subtract this from the * peak heights. */ void subtract_background(Read *r) { subtract_background_ch(r->traceA, r->NPoints); subtract_background_ch(r->traceC, r->NPoints); subtract_background_ch(r->traceG, r->NPoints); subtract_background_ch(r->traceT, r->NPoints); } int int_compar(const void *a, const void *b) { return *(const TRACE *)a - *(const TRACE *)b; } int find_bg(TRACE *data, int ndata) { int i, bg; TRACE *copy = (TRACE *)malloc(ndata * sizeof(TRACE)); /* Sort the trace samples by amplitude */ memcpy(copy, data, ndata * sizeof(TRACE)); qsort(copy, ndata, sizeof(TRACE), int_compar); /* Find the first non-zero value */ for (i = 0; i < ndata && !copy[i]; i++) ; /* * Now take a slie 0.05 through the remainder of the array and set this * as our background. */ bg = copy[(int)((ndata - i) * 0.05 + i)]; free(copy); return bg; } void trace_freq(TRACE *data, int ndata) { int i, bg; bg = find_bg(data, ndata); for (i = 0; i < ndata; i++) { data[i] = MAX(data[i] - bg, 0); } } /* * Separates out the dyes using a deconvolution matrix. * The order of elements in the matrix is C A G T. * A test matrix for the 373. Taken from the BASS distribution. */ double matrix[5][4] = { { 0.002439782, -0.0015053751, 0.00011857301, 2.8906948e-06}, {-0.00075353298, 0.0032971052, -0.006198165, 0.00014828549}, { 0.00020249287, -0.0017620348, 0.010530438, -0.0020235507 }, {-0.001144423, -4.857673e-06, -0.0018845701, 0.00395431 }, {-0.12451385, 0.368916, -2.928292, -3.3142638 } }; void separate_dyes(Read *r, double M[][4]) { int i, j; for (i = 0; i < r->NPoints; i++) { int C, A, G, T; double sep[4]; C = r->traceC[i]; A = r->traceA[i]; G = r->traceG[i]; T = r->traceT[i]; for (j = 0; j < 4; j++) sep[j] = C*M[0][j] + A*M[1][j] + G*M[2][j] + T*M[3][j] + M[4][j]; for (j = 0; j < 4; j++) sep[j] += 10; /* hack! sep[0] += 0.1; sep[1] += -0.4; sep[2] += 2.9; sep[3] += 3.2; */ r->traceC[i] = sep[0] < 0 ? 0 : 1000 * sep[0]; r->traceA[i] = sep[1] < 0 ? 0 : 1000 * sep[1]; r->traceG[i] = sep[2] < 0 ? 0 : 1000 * sep[2]; r->traceT[i] = sep[3] < 0 ? 0 : 1000 * sep[3]; } } /* * Find the maximum height of traces at the called bases. Use this to clip any * other bases. */ void reset_max_called_height(Read *r) { int i, max = 0; /* Find max */ for (i=0; i < r->NBases; i++) { switch(r->base[i]) { case 'a': case 'A': if (r->traceA[r->basePos[i]] > max) max = r->traceA[r->basePos[i]]; break; case 'c': case 'C': if (r->traceC[r->basePos[i]] > max) max = r->traceC[r->basePos[i]]; break; case 'g': case 'G': if (r->traceG[r->basePos[i]] > max) max = r->traceG[r->basePos[i]]; break; case 't': case 'T': if (r->traceT[r->basePos[i]] > max) max = r->traceT[r->basePos[i]]; break; } } /* Clip to max */ for (i = 0; i < r->NPoints; i++) { if (r->traceA[i] > max) r->traceA[i] = max; if (r->traceC[i] > max) r->traceC[i] = max; if (r->traceG[i] > max) r->traceG[i] = max; if (r->traceT[i] > max) r->traceT[i] = max; } if (r->maxTraceVal > max) r->maxTraceVal = max; } /* * Rescales peak heights based on a moving "marker". The marker tracks * up and down (attack and decay) based on the difference between itself and * the trace envelope. We then divide by the marker value to attempt to * normalise peak heights. * * min_marker is used to avoid scaling up noise and represents the minimum * value the marker is allowed to reach. Make sure it is > 0 or divide by * zero may occur. */ void rescale_heights(Read *r, int min_marker) { double marker = 0; int i, j, max, mtv = 0; TRACE *tx[4]; tx[0] = r->traceA; tx[1] = r->traceC; tx[2] = r->traceG; tx[3] = r->traceT; for (i = 0; i < r->NPoints; i++) { for (max = j = 0; j < 4; j++) if (max < tx[j][i]) max = tx[j][i]; if (!marker) { marker = max; } else { if (max >= marker) { /* attack */ marker += (max - marker) / 20.0; } else { /* decay */ marker -= (marker - max) / 10.0; } } if (marker < min_marker) marker = min_marker; for (j = 0; j < 4; j++) { double new = tx[j][i] * 2000.0/marker; tx[j][i] = new > 32767 ? 32767 : new; if (mtv < tx[j][i]) mtv = tx[j][i]; } } r->maxTraceVal = mtv; } /* Removes every other sample as a crude way to reduce file size */ void skipx(Read *r) { int i, j; for (i = j = 0; j < r->NPoints/2; i+=2, j++) { r->traceA[j] = (r->traceA[i] + r->traceA[i+1]) / 2; r->traceC[j] = (r->traceC[i] + r->traceC[i+1]) / 2; r->traceG[j] = (r->traceG[i] + r->traceG[i+1]) / 2; r->traceT[j] = (r->traceT[i] + r->traceT[i+1]) / 2; } r->NPoints = j; for (i = 0; i < r->NBases; i++) { r->basePos[i] /= 2; } } void clip_range(Read *r, int left, int right) { int i, j; if (left != -1) { for (i = 0, j = left; j < r->NPoints; i++, j++) { r->traceA[i] = r->traceA[j]; r->traceC[i] = r->traceC[j]; r->traceG[i] = r->traceG[j]; r->traceT[i] = r->traceT[j]; } right -= left; } if (right > 0) { r->NPoints = right; } } int convert(mFILE *infp, mFILE *outfp, char *infname, char *outfname, struct opts *opts) { Read *r; if (NULL == (r = mfread_reading(infp, infname, opts->in_format))) { fprintf(stderr, "failed to read file %s\n", infname); return 1; } if (opts->start != -1 || opts->end != -1) clip_range(r, opts->start, opts->end); if (opts->skipx) { skipx(r); } if (opts->noneg) noneg(r); if (opts->signed_trace) signed_trace(r); if (opts->subtract) { int i; for (i = 0; i < r->NPoints; i++) { r->traceA[i] = MAX(0, r->traceA[i] - opts->subtract); r->traceC[i] = MAX(0, r->traceC[i] - opts->subtract); r->traceG[i] = MAX(0, r->traceG[i] - opts->subtract); r->traceT[i] = MAX(0, r->traceT[i] - opts->subtract); } } if (opts->sub_background) { /* trace_freq(r->traceA, r->NPoints); trace_freq(r->traceC, r->NPoints); trace_freq(r->traceG, r->NPoints); trace_freq(r->traceT, r->NPoints); */ subtract_background(r); /* separate_dyes(r, matrix); trace_freq(r->traceA, r->NPoints); trace_freq(r->traceC, r->NPoints); trace_freq(r->traceG, r->NPoints); trace_freq(r->traceT, r->NPoints); */ reset_max_called_height(r); } if (opts->normalise) { rescale_heights(r, opts->min_normalise); } if (opts->scale) { rescale_trace(r, opts->scale); } if (opts->name) r->ident = strdup(opts->name); else if (0 == strcmp(outfname, "(stdout)")) r->ident = strdup(infname); else r->ident = strdup(outfname); if (opts->compress_mode != -1) set_compression_method(opts->compress_mode); if (0 != (mfwrite_reading(outfp, r, opts->out_format))) { fprintf(stderr, "failed to write file %s\n", outfname); read_deallocate(r); return 1; } read_deallocate(r); return 0; } void usage(void) { puts("Usage: convert_trace [options] [informat outformat] < in > out"); puts("Or convert_trace [options] -fofn file_of_filenames"); puts("\nOptions are:"); puts(" -in_format format Format for input (defaults to any"); puts(" -out_format format Format for output (default ztr)"); puts(" -fofn file_of_filenames Get \"Input Output\" names from a fofn"); puts(" -passed fofn Output fofn of passed names"); puts(" -error errs Redirect stderr to file \"errs\""); puts(" -failed fofn Output fofn of failed names"); puts(" -name id ID line for experiment file output"); puts(" -subtract_background Auto-subtracts the trace background"); puts(" -subtract amount Subtracts a specified background amount"); puts(" -normalise Normalises peak heights"); puts(" -min_normalise Minimum trace amp for normalising"); puts(" -scale range Downscales peaks to 0-range"); puts(" -compress mode Compress file output (not if stdout)"); puts(" -abi_data counts ABI DATA lanes to copy: eg 9,10,11,12"); puts(" -signed Apply global shift to avoid negative values"); puts(" -noneg Shift each channel independently to avoid -ve"); puts(" -- Explicitly state end of options"); exit(1); } int main(int argc, char **argv) { struct opts opts; opts.in_format = TT_ANY; opts.out_format = TT_ZTR; opts.scale = 0; opts.sub_background = 0; opts.subtract = 0; opts.normalise = 0; opts.min_normalise = 100; opts.name = NULL; opts.compress_mode = -1; opts.dots = 0; opts.noneg = 0; opts.signed_trace = 0; opts.fofn = NULL; opts.passed = NULL; opts.failed = NULL; opts.error = NULL; opts.skipx = 0; opts.start = -1; opts.end = -1; for (argc--, argv++; argc > 0; argc--, argv++) { if (**argv != '-') break; if (strcmp(*argv, "-start") == 0) { opts.start = atoi(*++argv); argc--; } else if (strcmp(*argv, "-end") == 0) { opts.end = atoi(*++argv); argc--; } else if (strcmp(*argv, "-scale") == 0) { opts.scale = atoi(*++argv); argc--; } else if (strcmp(*argv, "-fofn") == 0) { opts.fofn = *++argv; argc--; } else if (strcmp(*argv, "-passed") == 0) { opts.passed = *++argv; argc--; } else if (strcmp(*argv, "-failed") == 0) { opts.failed = *++argv; argc--; } else if (strcmp(*argv, "-error") == 0) { opts.error = *++argv; argc--; } else if (strcmp(*argv, "-subtract_background") == 0) { opts.sub_background = 1; } else if (strcmp(*argv, "-subtract") == 0) { opts.subtract = atoi(*++argv); argc--; } else if (strcmp(*argv, "-normalise") == 0) { opts.normalise = 1; } else if (strcmp(*argv, "-min_normalise") == 0) { opts.min_normalise = atoi(*++argv); argc--; } else if (strcmp(*argv, "-dots") == 0) { opts.dots = 1; } else if (strcmp(*argv, "-noneg") == 0) { opts.noneg = 1; } else if (strcmp(*argv, "-signed") == 0) { opts.signed_trace = 1; } else if (strcmp(*argv, "-skipx") == 0) { opts.skipx = 1; } else if (strcmp(*argv, "-in_format") == 0) { argv++; argc--; if (TT_UNK == (opts.in_format = trace_type_str2int(*argv))) opts.in_format = atoi(*argv); } else if (strcmp(*argv, "-name") == 0) { opts.name = *++argv; argc--; } else if (strcmp(*argv, "-out_format") == 0) { argv++; argc--; if (TT_UNK == (opts.out_format = trace_type_str2int(*argv))) opts.out_format = atoi(*argv); } else if (strcmp(*argv, "-compress") == 0) { opts.compress_mode = compress_str2int(*++argv); argc--; } else if (strcmp(*argv, "-abi_data") == 0) { int c1, c2, c3, c4; argc--; if (argc && 4 == sscanf(*++argv, "%d,%d,%d,%d", &c1, &c2, &c3, &c4)) { abi_set_data_counts(c1, c2, c3, c4); } else { usage(); } } else if (strcmp(*argv, "--") == 0) { break; } else { usage(); } } if (argc == 2) { /* Old syntax, for backwards compatibility */ if (TT_UNK == (opts.in_format = trace_type_str2int(argv[0]))) opts.in_format = atoi(argv[0]); if (TT_UNK == (opts.out_format = trace_type_str2int(argv[1]))) opts.out_format = atoi(argv[1]); } else if (argc != 0) { usage(); } /* * Added by SAK: Allow redirection of error output to file, due to * problems with Java exec */ if (NULL != opts.error) { int fd; fprintf(stderr,"* Redirecting stderr to %s\n", opts.error); close(2); /* close fd with stderr */ if (-1 == (fd = creat(opts.error, 0666))) { exit(1); } } if (!opts.fofn) { return convert(mstdin(), mstdout(), "(stdin)", "(stdout)", &opts); } /* else */ { mFILE *fpin, *fpout; FILE *fppassed = NULL, *fpfailed = NULL; char *infname, *outfname; int ret, ret_all = 0; char line[8192], line2[8192]; FILE *fofn_fp; if (NULL == (fofn_fp = fopen(opts.fofn, "r"))) { perror(opts.fofn); return -1; } if (opts.passed && NULL == (fppassed = fopen(opts.passed, "w"))) { perror(opts.passed); return -1; } if (opts.failed && NULL == (fpfailed = fopen(opts.failed, "w"))) { perror(opts.failed); return -1; } while (fgets(line, 8192, fofn_fp) != NULL) { int i, j, len; /* Find input and output name, escaping spaces as needed */ len = strlen(line); outfname = NULL; for (i = j = 0; i < len; i++) { if (line[i] == '\\' && i != len-1) { line2[j++] = line[++i]; } else if (line[i] == ' ') { line2[j++] = 0; outfname = &line2[j]; } else if (line[i] != '\n') { line2[j++] = line[i]; } } line2[j] = 0; infname = line2; /* Don't clobber input */ if (!strcmp(infname, outfname)) { fprintf(stderr,"* Inputfn %s == Outputfn %s ...skipping\n", infname, outfname); if (fpfailed) fprintf(fpfailed, "%s\n", infname); continue; } /* Open input and output files */ if (opts.in_format == TT_EXP) { fpin = open_exp_mfile(infname, NULL); } else { fpin = open_trace_mfile(infname, NULL); } if (NULL == fpin) { char buf[2048]; sprintf(buf, "ERROR %s", infname); perror(buf); if (opts.dots) { fputc('!', stdout); fflush(stdout); } if (fpfailed) fprintf(fpfailed, "%s\n", infname); continue; } if (outfname) { if (NULL == (fpout = mfopen(outfname, "wb+"))) { char buf[2048]; sprintf(buf, "ERROR %s", outfname); perror(buf); mfclose(fpin); if (opts.dots) { fputc('!', stdout); fflush(stdout); } if (fpfailed) fprintf(fpfailed, "%s\n", infname); continue; } } else { outfname = "(stdout)"; fpout = mstdout(); } /* Convert */ ret = convert(fpin, fpout, infname, outfname, &opts); ret_all |= ret; if (opts.dots) { fputc(ret ? '!' : '.', stdout); fflush(stdout); } if (ret) { if (fpfailed) fprintf(fpfailed, "%s\n", infname); } else { if (fppassed) fprintf(fppassed, "%s\n", infname); } /* Tidy up */ mfclose(fpin); if (fpout != mstdout()) mfclose(fpout); } fclose(fofn_fp); return ret_all; } } io_lib-1.14.6/progs/cram_dump.c0000644000031500020650000006317612611735712013244 00000000000000/* * Copyright (c) 2013 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * A debugging program to dump out information on the layout of a CRAM file. * It's an abomination frankly, but isn't intended for production use. */ #include "io_lib_config.h" #include #include #include #include #include #include void DumpMap2(cram_map **ma, FILE *fp, char *prefix, char *data, HashTable *ds_h) { int i, j; uintptr_t k; for (i = 0; i < CRAM_MAP_HASH; i++) { cram_map *m; for (m = ma[i]; m; m = m->next) { fprintf(fp, "%s%c%c%c => %16s {", prefix ? prefix : "", (m->key>>16) & 0xff ? (m->key>>16) & 0xff : ' ', (m->key>> 8) & 0xff, (m->key>> 0) & 0xff, cram_encoding2str(m->encoding)); for (k = m->offset, j = 0; j < m->size; j++, k++) { printf(j ? ", %d" : "%d", (unsigned char)data[k]); } printf("}\n"); // Crude, only works with single byte ITF8 values if (m->encoding == E_EXTERNAL || m->encoding == E_BYTE_ARRAY_STOP || m->encoding == E_BYTE_ARRAY_LEN) { HashData hd; hd.i = (unsigned char)data[m->offset + m->size-1]; k = (m->key << 8) | hd.i; HashTableAdd(ds_h, (char *)k, 4, hd, NULL); } } } } static cram_map *map_find(cram_map **map, unsigned char *key, int id) { cram_map *m; m = map[CRAM_MAP(key[0],key[1])]; while (m && m->key != id) m= m->next; assert(m); return m; } void dump_core_block(cram_block *b, int verbose) { int i; int binary = 0, len; len = verbose ? b->uncomp_size : MIN(100, b->uncomp_size); for (i = 0; i < len; i++) { if (isprint(b->data[i])) continue; binary++; } if (binary * 10 > len) { printf("Data = {"); for (i = 0; i < len; i++) { printf(i ? ", %02x" : "%02x", (unsigned char)b->data[i]); } if (i < b->uncomp_size) puts(", ...}"); else puts("}"); } else { for (i = 0; i < len; i++) { if (isprint(b->data[i])) putchar(b->data[i]); else printf("\\%03o", b->data[i]); } if (i < b->uncomp_size) puts("..."); } } void dump_seq_block(cram_block *b, int verbose) { int i; for (i = 0; (verbose || i < 100) && i < b->uncomp_size; i++) { if (isprint(b->data[i])) putchar(b->data[i]); else printf("\\%03o", b->data[i]); } } void dump_quality_block(cram_block *b, int verbose) { int i; for (i = 0; (verbose || i < 100) && i < b->uncomp_size; i++) { if (isprint(b->data[i] + '!')) putchar(b->data[i] + '!'); else printf("\\%03o", b->data[i] + '!'); } putchar('\n'); } void dump_name_block(cram_block *b, int verbose) { int i; for (i = 0; (verbose || i < 100) && i < b->uncomp_size; i++) { if (isprint(b->data[i])) putchar(b->data[i]); else printf("\\%03o", b->data[i]); } } void dump_tag_block(cram_block *b, int verbose) { return dump_core_block(b, verbose); } int main(int argc, char **argv) { cram_fd *fd; cram_container *c; off_t pos, pos2, hpos; int verbose = 0; HashTable *bsize_h; HashTable *ds_h; // content_id to data-series lookup. HashTable *dc_h; // content_id to data-compression lookup static int bmax = 0; bsize_h = HashTableCreate(128, HASH_DYNAMIC_SIZE| HASH_NONVOLATILE_KEYS | HASH_INT_KEYS); ds_h = HashTableCreate(128, HASH_DYNAMIC_SIZE| HASH_NONVOLATILE_KEYS | HASH_INT_KEYS); dc_h = HashTableCreate(128, HASH_DYNAMIC_SIZE); if (argc >= 2 && strcmp(argv[1], "-v") == 0) { argc--; argv++; verbose = 1; } if (argc < 2) { fprintf(stderr, "Usage: cram_dump [-v] filename.cram\n"); return 1; } if (NULL == (fd = cram_open(argv[1], "rb"))) { fprintf(stderr, "Error opening CRAM file '%s'.\n", argv[1]); return 1; } printf("File definition structure\n"); printf(" Major vers: %d\n", fd->file_def->major_version); printf(" Minor vers: %d\n", fd->file_def->minor_version); printf(" file_id: %.20s\n", fd->file_def->file_id); printf("\nBAM header:\n%.*s\n", sam_hdr_length(fd->header), sam_hdr_str(fd->header)); pos = CRAM_IO_TELLO(fd); while ((c = cram_read_container(fd))) { int i, j; if (fd->err) { perror("Cram container read"); return 1; } printf("\nContainer pos %"PRId64" size %d\n", (int64_t)pos, c->length); printf(" Ref id: %d\n", c->ref_seq_id); printf(" Ref pos: %d + %d\n", c->ref_seq_start, c->ref_seq_span); printf(" Rec counter: %d\n", c->record_counter); printf(" No. recs: %d\n", c->num_records); printf(" No. bases %"PRId64"\n", c->num_bases); printf(" No. blocks: %d\n", c->num_blocks); printf(" No. landmarks: %d\n", c->num_landmarks); printf(" {"); for (i = 0; i < c->num_landmarks; i++) { printf(i ? ", %d" : "%d", c->landmark[i]); } printf("}\n"); hpos = CRAM_IO_TELLO(fd); if (!c->length) { //printf("\n EMPTY BLOCK\n"); pos = CRAM_IO_TELLO(fd); continue; } printf("\n Container_header block pos %"PRId64"\n", (int64_t)hpos); if (!(c->comp_hdr_block = cram_read_block(fd))) return 1; assert(c->comp_hdr_block->content_type == COMPRESSION_HEADER); c->comp_hdr = cram_decode_compression_header(fd, c->comp_hdr_block); if (!c->comp_hdr) return 1; printf(" Preservation map:\n"); HashTableDump(c->comp_hdr->preservation_map, stdout, "\t"); printf(" Substitution map:\n"); printf(" A: %.4s\n", c->comp_hdr->substitution_matrix[0]); printf(" C: %.4s\n", c->comp_hdr->substitution_matrix[1]); printf(" G: %.4s\n", c->comp_hdr->substitution_matrix[2]); printf(" T: %.4s\n", c->comp_hdr->substitution_matrix[3]); printf(" N: %.4s\n", c->comp_hdr->substitution_matrix[4]); printf("\n Record encoding map:\n"); DumpMap2(c->comp_hdr->rec_encoding_map, stdout, "\t", (char *)c->comp_hdr_block->data, ds_h); printf("\n Tag encoding map:\n"); DumpMap2(c->comp_hdr->tag_encoding_map, stdout, "\t", (char *)c->comp_hdr_block->data, ds_h); for (j = 0; j < c->num_landmarks; j++) { cram_slice *s; int id; pos2 = CRAM_IO_TELLO(fd); assert(pos2 - pos - c->offset == c->landmark[j]); s = cram_read_slice(fd); printf("\n Slice %d/%d, container offset %d, file offset %d\n", j+1, c->num_landmarks, (int)(pos2 - pos - c->offset), (int)pos2); printf("\tSlice content type %s\n", cram_content_type2str(s->hdr->content_type)); if (s->hdr->content_type == MAPPED_SLICE) { int i; printf("\tSlice ref seq %d\n", s->hdr->ref_seq_id); printf("\tSlice ref start %d\n", s->hdr->ref_seq_start); printf("\tSlice ref span %d\n", s->hdr->ref_seq_span); printf("\tSlice MD5 "); for (i = 0; i < 16; i++) printf("%02x", s->hdr->md5[i]); putchar('\n'); } printf("\tRec counter %d\n", s->hdr->record_counter); printf("\tNo. records %d\n", s->hdr->num_records); printf("\tNo. blocks %d\n", s->hdr->num_blocks); printf("\tBlk IDS: {"); for (id = 0; id < s->hdr->num_content_ids; id++) { printf(id ? ", %d" : "%d", s->hdr->block_content_ids[id]); } printf("}\n"); if (s->hdr->content_type == MAPPED_SLICE) { printf("\tRef base id: %d\n", s->hdr->ref_base_id); } if (s->hdr->tags) { HashIter *iter; HashItem *hi; iter = HashTableIterCreate(); while ((hi = HashTableIterNext(s->hdr->tags, iter))) { printf("\tOptional tag %c%c:%c:", hi->key[0], hi->key[1], hi->key[2]); switch(hi->key[2]) { uint32_t len; unsigned char *dat; case 'i': printf("%"PRId64"\n", hi->data.i); break; case 'f': printf("%f\n", hi->data.f); break; case 'Z': case 'H': printf("%s\n", (char *)hi->data.p); break; case 'A': printf("<%d>\n", (unsigned char)hi->data.i); break; case 'B': dat = hi->data.p; len = dat[1] | (dat[2]<<8) | (dat[3]<<16)| (dat[4]<<24); switch(dat[0]) { case 's': case 'S': len *= 2; break; case 'i': case 'I': case 'f': len *= 4; break; default: break; } putchar(dat[0]); dat += 5; while (len--) { printf(",%02x", *dat++); } putchar('\n'); } } } for (id = 0; id < s->hdr->num_blocks; id++) { HashItem *hi; intptr_t k = s->block[id]->content_type == CORE ? -1 : s->block[id]->content_id; hi = HashTableSearch(bsize_h, (char *)k, sizeof(k)); if (hi) { hi->data.i += s->block[id]->comp_size; } else { HashData hd; hd.i = s->block[id]->comp_size; HashTableAdd(bsize_h, (char *)k, sizeof(k), hd, NULL); } // WARNING: scuppered by having high content_id values. if (bmax < s->block[id]->content_id) bmax = s->block[id]->content_id; } for (id = 0; id < s->hdr->num_blocks; id++) cram_uncompress_block(s->block[id]); /* Test decoding of 1st seq */ if (verbose) { cram_block *b = s->block[0]; int32_t i32, bf, fn, prev_pos, rl; unsigned char cf; int out_sz, r, f; int rec; assert(b->content_type == CORE); for (rec = 0; rec < s->hdr->num_records; rec++) { unsigned char ntags; printf("Rec %d/%d at %d,%d\n", rec+1, s->hdr->num_records, (int)b->byte, b->bit); out_sz = 1; /* decode 1 item */ r = c->comp_hdr->codecs[DS_BF]->decode(s,c->comp_hdr->codecs[DS_BF], b, (char *)&bf, &out_sz); printf("BF = %d => SAM 0x%x (ret %d, out_sz %d)\n", bf, fd->bam_flag_swap[bf], r, out_sz); bf = fd->bam_flag_swap[bf]; if (!IS_CRAM_1_VERS(fd)) { r = c->comp_hdr->codecs[DS_CF]->decode(s,c->comp_hdr->codecs[DS_CF], b, (char *)&i32, &out_sz); printf("CF = %d (ret %d, out_sz %d)\n", i32, r, out_sz); cf = i32; } else { r = c->comp_hdr->codecs[DS_CF]->decode(s,c->comp_hdr->codecs[DS_CF], b, (char *)&cf, &out_sz); printf("CF = %d (ret %d, out_sz %d)\n", cf, r, out_sz); } if (!IS_CRAM_1_VERS(fd) && s->hdr->ref_seq_id == -2) { int32_t ri; r |= c->comp_hdr->codecs[DS_RI]->decode(s, c->comp_hdr->codecs[DS_RI], b, (char *)&ri, &out_sz); printf("RI = %d (ret %d, out_sz %d)\n", ri, r, out_sz); } r = c->comp_hdr->codecs[DS_RL]->decode(s,c->comp_hdr->codecs[DS_RL], b, (char *)&rl, &out_sz); printf("RL = %d (ret %d, out_sz %d)\n", rl, r, out_sz); r = c->comp_hdr->codecs[DS_AP]->decode(s,c->comp_hdr->codecs[DS_AP], b, (char *)&i32, &out_sz); printf("AP = %d (ret %d, out_sz %d)\n", i32, r, out_sz); r = c->comp_hdr->codecs[DS_RG]->decode(s,c->comp_hdr->codecs[DS_RG], b, (char *)&i32, &out_sz); printf("RG = %d (ret %d, out_sz %d)\n", i32, r, out_sz); if (c->comp_hdr->read_names_included) { int32_t out_sz2 = 1; cram_block *dat = cram_new_block(EXTERNAL, 0); r = c->comp_hdr->codecs[DS_RN]->decode(s,c->comp_hdr->codecs[DS_RN], b, (char *)dat, &out_sz2); printf("RN = %.*s (ret %d, out_sz %d)\n", out_sz2, BLOCK_DATA(dat), r, out_sz2); cram_free_block(dat); } if (cf & CRAM_FLAG_DETACHED) { char mf; puts("Detached"); /* MF, RN if !captureReadNames, NS, NP, IS */ if (!IS_CRAM_1_VERS(fd)) { r = c->comp_hdr->codecs[DS_MF]->decode(s,c->comp_hdr->codecs[DS_MF], b, (char *)&i32, &out_sz); printf("MF = %d (ret %d, out_sz %d)\n", i32, r, out_sz); } else { r = c->comp_hdr->codecs[DS_MF]->decode(s,c->comp_hdr->codecs[DS_MF], b, &mf, &out_sz); printf("MF = %d (ret %d, out_sz %d)\n", mf, r, out_sz); } if (!c->comp_hdr->read_names_included) { cram_block *dat = cram_new_block(EXTERNAL, 0); int32_t out_sz2 = 1; r = c->comp_hdr->codecs[DS_RN]->decode(s,c->comp_hdr->codecs[DS_RN], b, (char *)dat, &out_sz2); printf("RN = %.*s (ret %d, out_sz %d)\n", out_sz2, BLOCK_DATA(dat), r, out_sz2); cram_free_block(dat); } r = c->comp_hdr->codecs[DS_NS]->decode(s,c->comp_hdr->codecs[DS_NS], b, (char *)&i32, &out_sz); printf("NS = %d (ret %d, out_sz %d)\n", i32, r, out_sz); r = c->comp_hdr->codecs[DS_NP]->decode(s,c->comp_hdr->codecs[DS_NP], b, (char *)&i32, &out_sz); printf("NP = %d (ret %d, out_sz %d)\n", i32, r, out_sz); r = c->comp_hdr->codecs[DS_TS]->decode(s,c->comp_hdr->codecs[DS_TS], b, (char *)&i32, &out_sz); printf("TS = %d (ret %d, out_sz %d)\n", i32, r, out_sz); } else if (cf & CRAM_FLAG_MATE_DOWNSTREAM) { puts("Not detached, and mate is downstream"); r = c->comp_hdr->codecs[DS_NF]->decode(s,c->comp_hdr->codecs[DS_NF], b, (char *)&i32, &out_sz); printf("NF = %d+%d = %d (ret %d, out_sz %d)\n", i32, rec+1, i32+rec+1, r, out_sz); } if (IS_CRAM_1_VERS(fd)) { r = c->comp_hdr->codecs[DS_TC]->decode(s,c->comp_hdr->codecs[DS_TC], b, (char *)&ntags, &out_sz); printf("TC = %d (ret %d, out_sz %d)\n", ntags, r, out_sz); for (f = 0; f < ntags; f++) { int32_t id; char key[3]; cram_map *m; cram_block *tag = cram_new_block(EXTERNAL, 0); r = c->comp_hdr->codecs[DS_TN]->decode(s, c->comp_hdr->codecs[DS_TN], b, (char *)&id, &out_sz); key[0] = (id>>16)&0xff; key[1] = (id>>8)&0xff; key[2] = id&0xff; printf("%3d: TN= %.3s\n", f, key); printf("id=%d\n", id); if ((m = map_find(c->comp_hdr->tag_encoding_map, (unsigned char *)key, id))) { int i, out_sz; BLOCK_SIZE(tag) = 0; r = m->codec->decode(s, m->codec, b, (char *)tag, &out_sz); printf("%3d: Val", f); for(i = 0; i < out_sz; i++) { printf(" %02x", BLOCK_DATA(tag)[i]); } printf("\n"); } else { fprintf(stderr, "*** ERROR: unrecognised aux key ***\n"); } cram_free_block(tag); // skip decoding of tag data itself and hope it's // in an external block. } } else { int32_t tl, ntags; char *tn; r = c->comp_hdr->codecs[DS_TL]->decode(s,c->comp_hdr->codecs[DS_TL], b, (char *)&tl, &out_sz); printf("TL = %d (ret %d, out_sz %d)\n", tl, r, out_sz); tn = (char *)c->comp_hdr->TL[tl]; ntags = strlen(tn)/3; for (f = 0; f < ntags; f++) { int32_t id; char key[3]; cram_map *m; cram_block *tag = cram_new_block(EXTERNAL, 0); key[0] = *tn++; key[1] = *tn++; key[2] = *tn++; id = (key[0]<<16) | (key[1]<<8) | key[2]; printf("%3d: TN= %.3s\n", f, key); printf("id=%d\n", id); if ((m = map_find(c->comp_hdr->tag_encoding_map, (unsigned char *)key, id))) { int i, out_sz; BLOCK_SIZE(tag) = 0; r = m->codec->decode(s, m->codec, b, (char *)tag, &out_sz); printf("%3d: Val", f); for(i = 0; i < out_sz; i++) { printf(" %02x", BLOCK_DATA(tag)[i]); } printf("\n"); } else { fprintf(stderr, "*** ERROR: unrecognised aux key ***\n"); } cram_free_block(tag); // skip decoding of tag data itself and hope it's // in an external block. } } if (!(bf & BAM_FUNMAP)) { r = c->comp_hdr->codecs[DS_FN]->decode(s,c->comp_hdr->codecs[DS_FN], b, (char *)&fn, &out_sz); printf("FN = %d (ret %d, out_sz %d)\n", fn, r, out_sz); prev_pos = 0; for (f = 0; f < fn; f++) { char op; int32_t pos; r = c->comp_hdr->codecs[DS_FC]->decode(s,c->comp_hdr->codecs[DS_FC], b, &op, &out_sz); printf(" %d: FC = %c (ret %d, out_sz %d)\n", f, op, r, out_sz); r = c->comp_hdr->codecs[DS_FP]->decode(s,c->comp_hdr->codecs[DS_FP], b, (char *)&pos, &out_sz); printf(" %d: FP = %d+%d = %d (ret %d, out_sz %d)\n", f, pos, prev_pos, pos + prev_pos, r, out_sz); pos += prev_pos; prev_pos = pos; switch(op) { case 'S': { // soft clip: IN char dat[100]; int32_t out_sz2 = 1; dat[0]='?';dat[1]=0; if (IS_CRAM_1_VERS(fd)) { if (c->comp_hdr->codecs[DS_IN]) { r = c->comp_hdr->codecs[DS_IN]->decode(s,c->comp_hdr->codecs[DS_IN], b, dat, &out_sz2); printf(" %d: IN(S) = %.*s (ret %d, out_sz %d)\n", f, out_sz2, dat, r, out_sz2); } } else { if (c->comp_hdr->codecs[DS_SC]) { r = c->comp_hdr->codecs[DS_SC]->decode(s,c->comp_hdr->codecs[DS_SC], b, dat, &out_sz2); printf(" %d: SC(S) = %.*s (ret %d, out_sz %d)\n", f, out_sz2, dat, r, out_sz2); } } break; } case 'X': { // Substitution; BS char bs; r = c->comp_hdr->codecs[DS_BS]->decode(s,c->comp_hdr->codecs[DS_BS], b, &bs, &out_sz); printf(" %d: BS = %d (ret %d)\n", f, bs, r); break; } case 'D': { // Deletion; DL r = c->comp_hdr->codecs[DS_DL]->decode(s,c->comp_hdr->codecs[DS_DL], b, (char *)&i32, &out_sz); printf(" %d: DL = %d (ret %d)\n", f, i32, r); break; } case 'I': { // Insertion (several bases); IN static char *dat = NULL; static int dat_l = 0; int32_t out_sz2 = 1; if (dat_l < rl+1) { dat = realloc(dat, rl+1); dat_l = rl; } dat[0]='?';dat[1]=0; r = c->comp_hdr->codecs[DS_IN]->decode(s,c->comp_hdr->codecs[DS_IN], b, dat, &out_sz2); printf(" %d: IN(I) = %.*s (ret %d, out_sz %d)\n", f, out_sz2, dat, r, out_sz2); break; } case 'i': { // Insertion (single base); BA char cc; r = c->comp_hdr->codecs[DS_BA]->decode(s,c->comp_hdr->codecs[DS_BA], b, &cc, &out_sz); printf(" %d: BA = %c (ret %d)\n", f, cc, r); break; } case 'b': { // Read bases; BB static char *seq = NULL; static int seq_l = 0; int out_sz2; if (seq_l < rl) { seq = realloc(seq, rl); seq_l = rl; } r = c->comp_hdr->codecs[DS_BB]->decode(s,c->comp_hdr->codecs[DS_BB], b, seq, &out_sz2); printf(" %d: BB(b) = %.*s (ret %d, out_sz %d)\n", f, out_sz2, seq, r, out_sz2); break; } case 'q': { // Read bases; QQ int out_sz2; static char *qual = NULL; static int qual_l = 0; if (qual_l < rl) { qual = realloc(qual, rl); qual_l = rl; } r = c->comp_hdr->codecs[DS_QQ]->decode(s,c->comp_hdr->codecs[DS_QQ], b, qual, &out_sz2); printf(" %d: QQ(b) = %.*s (ret %d, out_sz %d)\n", f, out_sz2, qual, r, out_sz2); break; } case 'B': { // Read base; BA, QS char cc, qc; r = c->comp_hdr->codecs[DS_BA]->decode(s,c->comp_hdr->codecs[DS_BA], b, &cc, &out_sz); r |= c->comp_hdr->codecs[DS_QS]->decode(s,c->comp_hdr->codecs[DS_QS], b, &qc, &out_sz); printf(" %d: BA/QS(B) = %c/%d (ret %d)\n", f, cc, qc, r); break; } case 'Q': { // Quality score; QS char qc; r = c->comp_hdr->codecs[DS_QS]->decode(s,c->comp_hdr->codecs[DS_QS], b, &qc, &out_sz); printf(" %d: QS = %d (ret %d)\n", f, qc, r); break; } case 'N': r = c->comp_hdr->codecs[DS_RS]->decode(s,c->comp_hdr->codecs[DS_RS], b, (char *)&i32, &out_sz); printf(" %d: RS = %d (ret %d)\n", f, i32, r); break; case 'P': r = c->comp_hdr->codecs[DS_PD]->decode(s,c->comp_hdr->codecs[DS_PD], b, (char *)&i32, &out_sz); printf(" %d: PD = %d (ret %d)\n", f, i32, r); break; case 'H': r = c->comp_hdr->codecs[DS_HC]->decode(s,c->comp_hdr->codecs[DS_HC], b, (char *)&i32, &out_sz); printf(" %d: HC = %d (ret %d)\n", f, i32, r); break; default: abort(); } } r = c->comp_hdr->codecs[DS_MQ]->decode(s,c->comp_hdr->codecs[DS_MQ], b, (char *)&i32, &out_sz); printf("MQ = %d (ret %d, out_sz %d)\n", i32, r, out_sz); if (cf & CRAM_FLAG_PRESERVE_QUAL_SCORES) { char dat[1024]; int len = rl; do { int32_t out_sz2 = len > 1024 ? 1024 : len, i; dat[0]='?';dat[1]=0; r = c->comp_hdr->codecs[DS_QS]->decode(s,c->comp_hdr->codecs[DS_QS], b, dat, &out_sz2); for (i = 0; i < out_sz2; i++) dat[i] += '!'; printf("QS = %.*s (ret %d, out_sz %d)\n", out_sz2, dat, r, out_sz2); len -= 1024; } while (len > 0); } } else { puts("Unmapped"); char dat[1024]; int len = rl; while (len > 0) { int32_t out_sz2 = len > 1024 ? 1024 : len; r = c->comp_hdr->codecs[DS_BA]->decode(s, c->comp_hdr->codecs[DS_BA], b, dat, &out_sz2); printf("SQ = %.*s (out_sz %d)\n", out_sz2, dat, out_sz2); len -= 1024; } if (cf & CRAM_FLAG_PRESERVE_QUAL_SCORES) { int len = rl, i; do { int32_t out_sz2 = len > 1024 ? 1024 : len; r = c->comp_hdr->codecs[DS_QS]->decode(s, c->comp_hdr->codecs[DS_QS], b, dat, &out_sz2); for (i = 0; i < out_sz2; i++) dat[i] += '!'; printf("QS = %.*s (out_sz %d)\n", out_sz2, dat, out_sz2); len -= 1024; } while (len > 0); } } } } for (id = 0; id < s->hdr->num_blocks; id++) { HashData hd; cram_block *b = s->block[id]; printf("\n\tBlock %d/%d\n", id+1, s->hdr->num_blocks); printf("\t Size: %d comp / %d uncomp\n", b->comp_size, b->uncomp_size); printf("\t Method: %s\n", cram_block_method2str(b->orig_method)); struct { int id; enum cram_block_method method; } id_type = {b->content_id, b->orig_method}; HashTableAdd(dc_h, (char *)&id_type, sizeof(id_type), hd, NULL); printf("\t Content type: %s\n", cram_content_type2str(b->content_type)); printf("\t Content id: %d\n", b->content_id); if (b->method != RAW) cram_uncompress_block(b); if (b->content_type == CORE) { dump_core_block(b, verbose); } else { int t, m; enum cram_fields cf = 0; char fields[1024], *fp = fields; for (m = 0; m < 2; m++) { cram_map **ma = m ? c->comp_hdr->tag_encoding_map : c->comp_hdr->rec_encoding_map; for (t = 0; t < CRAM_MAP_HASH; t++) { cram_map *m; unsigned char *data = c->comp_hdr_block->data; for (m = ma[t]; m; m = m->next) { if (m->encoding != E_EXTERNAL && m->encoding != E_BYTE_ARRAY_STOP && m->encoding != E_BYTE_ARRAY_LEN) continue; if (data[m->offset + m->size-1] != b->content_id) continue; if ((m->key>>16)&0xff) *fp++ = (m->key>>16)&0xff; *fp++ = (m->key>> 8)&0xff; *fp++ = (m->key>> 0)&0xff; *fp++ = ' '; if (m->key>>16) cf |= CRAM_aux; if (m->key == ('Q'<<8)+'S') cf |= CRAM_QS; if (m->key == ('R'<<8)+'N') cf |= CRAM_RN; if (m->key == ('S'<<8)+'C') cf |= CRAM_SC; if (m->key == ('I'<<8)+'N') cf |= CRAM_IN; } } } *fp++ = 0; printf("\t Keys: %s\n", fields); if (cf == CRAM_aux) dump_tag_block(b, verbose); else if (cf == CRAM_QS) dump_quality_block(b, verbose); else if (cf == CRAM_SC) dump_seq_block(b, verbose); else if (cf == CRAM_RN) dump_name_block(b, verbose); else dump_core_block(b, verbose); } } cram_free_slice(s); } pos = CRAM_IO_TELLO(fd); assert(pos == hpos + c->length); cram_free_container(c); } cram_close(fd); { intptr_t id; puts(""); for (id = -1; id <= bmax; id++) { intptr_t k; HashItem *hi; HashIter *iter; if (!(hi = HashTableSearch(bsize_h, (char *)id, sizeof(id)))) continue; k = (intptr_t) hi->key; if (k == -1) { printf("Block CORE , total size %10ld\n", hi->data.i); continue; } printf("Block content_id %3d, total size %10ld ", (int) k, hi->data.i); struct { int id; enum cram_block_method method; } id_type = {k, 0}; id_type.method = GZIP; putchar((HashTableSearch(dc_h, (char *)&id_type, sizeof(id_type)))?'g':' '); id_type.method = BZIP2; putchar((HashTableSearch(dc_h, (char *)&id_type, sizeof(id_type)))?'b':' '); id_type.method = LZMA; putchar((HashTableSearch(dc_h, (char *)&id_type, sizeof(id_type)))?'l':' '); id_type.method = RANS0; putchar((HashTableSearch(dc_h, (char *)&id_type, sizeof(id_type)))?'r':' '); id_type.method = RANS1; putchar((HashTableSearch(dc_h, (char *)&id_type, sizeof(id_type)))?'R':' '); iter = HashTableIterCreate(); while ((hi = HashTableIterNext(ds_h, iter))) { int c; char buf[5]; int x = 4; if (hi->data.i != k) continue; c = ((uintptr_t) hi->key)>>8; buf[x--] = 0; while(c & 0xff) { buf[x--] = c; c >>= 8; } printf(" %s", &buf[x+1]); } putchar('\n'); HashTableIterDestroy(iter); } } HashTableDestroy(bsize_h, 0); HashTableDestroy(ds_h, 0); HashTableDestroy(dc_h, 0); return 0; } io_lib-1.14.6/progs/cram_index.c0000644000031500020650000000473612545536330013404 00000000000000/* * Copyright (c) 2013 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * A debugging program to dump out information on the layout of a CRAM file. * It's an abomination frankly, but isn't intended for production use. */ #include "io_lib_config.h" #include #include #include #include #include #include #include int main(int argc, char **argv) { cram_fd *fd; if (argc != 2 && argc != 3) { fprintf(stderr, "Usage: cram_index filename.cram [filename.cram.crai]\n"); return 1; } if (NULL == (fd = cram_open(argv[1], "rb"))) { fprintf(stderr, "Error opening CRAM file '%s'.\n", argv[1]); return 1; } cram_set_option(fd, CRAM_OPT_REQUIRED_FIELDS, SAM_RNAME | SAM_POS | SAM_CIGAR); if (cram_index_build(fd, argv[argc-1]) == -1) { cram_close(fd); return 1; } cram_close(fd); return 0; } io_lib-1.14.6/progs/cram_size.c0000644000031500020650000002054212616365622013243 00000000000000/* * Copyright (c) 2013-2015 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * A cut down version of cram_dump.c to accumulate only size * information per data series. This is much faster than cram_dump as * it does not require uncompression of data blocks. */ #include "io_lib_config.h" #include #include #include #include #include #include // Accumulate per {data_series, content_id} combination. void ParseMap(cram_map **ma, char *data, HashTable *ds_h) { int i; uintptr_t k; for (i = 0; i < CRAM_MAP_HASH; i++) { cram_map *m; for (m = ma[i]; m; m = m->next) { // Crude, only works with single byte ITF8 values if (m->encoding == E_EXTERNAL || m->encoding == E_BYTE_ARRAY_STOP || m->encoding == E_BYTE_ARRAY_LEN) { HashData hd; hd.i = (unsigned char)data[m->offset + m->size-1]; k = (m->key << 8) | hd.i; cram_codec *c = cram_decoder_init(m->encoding, data + m->offset, m->size, E_BYTE_ARRAY, 0); int id1, id2; if (c) { id1 = cram_codec_to_id(c, &id2); c->free(c); if (id1 >= 0) { hd.i = id1; HashTableAdd(ds_h, (char *)k, 4, hd, NULL); } if (id2 >= 0) { hd.i = id2; HashTableAdd(ds_h, (char *)k, 4, hd, NULL); } } else { HashTableAdd(ds_h, (char *)k, 4, hd, NULL); } } } } } void print_sizes(HashTable *bsize_h, HashTable *ds_h, HashTable *dc_h, int bmax) { intptr_t id; for (id = -1; id <= bmax; id++) { intptr_t k; HashItem *hi; HashIter *iter; if (!(hi = HashTableSearch(bsize_h, (char *)id, sizeof(id)))) continue; k = (intptr_t) hi->key; if (k == -1) { printf("Block CORE , total size %10ld\n", hi->data.i); continue; } printf("Block content_id %7d, total size %10ld ", (int) k, hi->data.i); struct { int id; enum cram_block_method method; } id_type = {k, 0}; enum cram_block_method methods[] = {GZIP, BZIP2, LZMA, RANS0, RANS1}; int count[1+sizeof(methods)/sizeof(*methods)] = {0}; int i; for (i = 0; i < sizeof(methods)/sizeof(*methods); i++) { id_type.method = methods[i]; if ((hi = HashTableSearch(dc_h, (char *)&id_type, sizeof(id_type)))) { count[0] += hi->data.i; count[i+1] += hi->data.i; } } for (i = 1; i <= sizeof(methods)/sizeof(*methods); i++) { printf("%s%s%c%s", (count[i]+0.01)/(count[0]+0.01) >= 0.50 ? "\033[7m":"", (count[i]+0.01)/(count[0]+0.01) >= 0.10 ? "\033[4m":"", " gblrR"[count[i]?i:0], "\033[0m"); } iter = HashTableIterCreate(); while ((hi = HashTableIterNext(ds_h, iter))) { int c; char buf[5]; int x = 4; if (hi->data.i != k) continue; c = ((uintptr_t) hi->key)>>8; buf[x--] = 0; while(c & 0xff) { buf[x--] = c; c >>= 8; } printf(" %s", &buf[x+1]); } putchar('\n'); HashTableIterDestroy(iter); } } int process_sizes(cram_fd *fd, HashTable *bsize_h, HashTable *ds_h, HashTable *dc_h, int *bmax) { cram_container *c; off_t pos, pos2, hpos; pos = CRAM_IO_TELLO(fd); while ((c = cram_read_container(fd))) { int j; if (fd->err) { perror("Cram container read"); return 1; } hpos = CRAM_IO_TELLO(fd); if (!c->length) { pos = CRAM_IO_TELLO(fd); continue; } if (!(c->comp_hdr_block = cram_read_block(fd))) return 1; assert(c->comp_hdr_block->content_type == COMPRESSION_HEADER); c->comp_hdr = cram_decode_compression_header(fd, c->comp_hdr_block); if (!c->comp_hdr) return 1; ParseMap(c->comp_hdr->rec_encoding_map, (char *)c->comp_hdr_block->data, ds_h); ParseMap(c->comp_hdr->tag_encoding_map, (char *)c->comp_hdr_block->data, ds_h); for (j = 0; j < c->num_landmarks; j++) { cram_slice *s; int id; pos2 = CRAM_IO_TELLO(fd); assert(pos2 - pos - c->offset == c->landmark[j]); s = cram_read_slice(fd); // Accumulate per block content_id for (id = 0; id < s->hdr->num_blocks; id++) { HashItem *hi; intptr_t k = s->block[id]->content_type == CORE ? -1 : s->block[id]->content_id; hi = HashTableSearch(bsize_h, (char *)k, sizeof(k)); if (hi) { hi->data.i += s->block[id]->comp_size; } else { HashData hd; hd.i = s->block[id]->comp_size; HashTableAdd(bsize_h, (char *)k, sizeof(k), hd, NULL); } // WARNING: scuppered by having high content_id values. if (*bmax < s->block[id]->content_id) *bmax = s->block[id]->content_id; } // Hack for rans1 for (id = 0; id < s->hdr->num_blocks; id++) { if (s->block[id]->comp_size >= 2 && s->block[id]->orig_method == RANS0 && s->block[id]->data[0] != 0) s->block[id]->orig_method = RANS1; } // Accumulate per {id, compression_method} combo for (id = 0; id < s->hdr->num_blocks; id++) { HashData hd; HashItem *hi; cram_block *b = s->block[id]; struct { int id; enum cram_block_method method; } id_type = {b->content_id, b->orig_method}; hd.i = 0; hi = HashTableAdd(dc_h, (char *)&id_type, sizeof(id_type), hd, NULL); hi->data.i++; int t, m; char fields[1024], *fp = fields; for (m = 0; m < 2; m++) { cram_map **ma = m ? c->comp_hdr->tag_encoding_map : c->comp_hdr->rec_encoding_map; for (t = 0; t < CRAM_MAP_HASH; t++) { cram_map *m; unsigned char *data = c->comp_hdr_block->data; for (m = ma[t]; m; m = m->next) { if (m->encoding != E_EXTERNAL && m->encoding != E_BYTE_ARRAY_STOP && m->encoding != E_BYTE_ARRAY_LEN) continue; if (data[m->offset + m->size-1] != b->content_id) continue; if ((m->key>>16)&0xff) *fp++ = (m->key>>16)&0xff; *fp++ = (m->key>> 8)&0xff; *fp++ = (m->key>> 0)&0xff; *fp++ = ' '; } } } *fp++ = 0; } cram_free_slice(s); } pos = CRAM_IO_TELLO(fd); assert(pos == hpos + c->length); cram_free_container(c); } return 0; } int main(int argc, char **argv) { cram_fd *fd; HashTable *bsize_h; HashTable *ds_h; // content_id to data-series lookup. HashTable *dc_h; // content_id to data-compression lookup int bmax = 0; bsize_h = HashTableCreate(128, HASH_DYNAMIC_SIZE| HASH_NONVOLATILE_KEYS | HASH_INT_KEYS); ds_h = HashTableCreate(128, HASH_DYNAMIC_SIZE| HASH_NONVOLATILE_KEYS | HASH_INT_KEYS); dc_h = HashTableCreate(128, HASH_DYNAMIC_SIZE); if (argc < 2) { fprintf(stderr, "Usage: cram_size filename.cram\n"); return 1; } if (NULL == (fd = cram_open(argv[1], "rb"))) { fprintf(stderr, "Error opening CRAM file '%s'.\n", argv[1]); return 1; } if (0 != process_sizes(fd, bsize_h, ds_h, dc_h, &bmax)) return 1; cram_close(fd); print_sizes(bsize_h, ds_h, dc_h, bmax); HashTableDestroy(bsize_h, 0); HashTableDestroy(ds_h, 0); HashTableDestroy(dc_h, 0); return 0; } io_lib-1.14.6/progs/extract_fastq.c0000644000031500020650000001211312354177665014141 00000000000000/* * Copyright (c) 2006-2007, 2010, 2013 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifdef HAVE_CONFIG_H #include "io_lib_config.h" #endif #include #include #include #include #include #include #include #include #include #include static int do_trans(mFILE *infp, char *in_file, FILE *outfp, int format) { Read *r; char *p = strrchr(in_file, '/'); int i; read_sections(READ_BASES); if (NULL == (r = mfread_reading(infp, in_file, format))) { fprintf(stderr, "Failed to read file '%s'\n", in_file); return 1; } if (NULL == p) p = in_file; else p++; fprintf(outfp, "@%s\n", p); fprintf(outfp, "%.*s\n", r->NBases, r->base); fprintf(outfp, "+%s\n", p); for (i = 0; i < r->NBases; i++) { int qual; switch (r->base[i]) { case 'A': case 'a': qual = r->prob_A[i]; break; case 'C': case 'c': qual = r->prob_C[i]; break; case 'G': case 'g': qual = r->prob_G[i]; break; case 'T': case 't': qual = r->prob_T[i]; break; default: qual = 0; } fputc(qual + 33, outfp); } fputc('\n', outfp); read_deallocate(r); fflush(outfp); return 0; } static void usage(void) { fprintf(stderr, "Usage: extract_fastq [-(abi|alf|scf|exp|pln)]\n" " [-output output_name] [-fofn fofn] [input_name] ...\n"); exit(1); } int main(int argc, char **argv) { int from_stdin = 1; mFILE *infp = mstdin(); FILE *outfp = stdout; int format = TT_ANY; int ret = 0; char *fofn = NULL; for (argc--, argv++; argc > 0; argc--, argv++) { if (strcasecmp(*argv, "-abi") == 0) { format = TT_ABI; } else if (strcasecmp(*argv, "-alf") == 0) { format = TT_ALF; } else if (strcasecmp(*argv, "-scf") == 0) { format = TT_SCF; } else if (strcasecmp(*argv, "-exp") == 0) { format = TT_EXP; } else if (strcasecmp(*argv, "-pln") == 0) { format = TT_PLN; } else if (strcasecmp(*argv, "-ztr") == 0) { format = TT_ZTR; } else if (strcmp(*argv, "-fofn") == 0) { fofn = *++argv; argc--; from_stdin = 0; } else if (strcasecmp(*argv, "-output") == 0) { if (NULL == (outfp = fopen(*++argv, "wb"))) { perror(*argv); return 1; } argc--; } else if (**argv != '-') { from_stdin = 0; break; } else { usage(); } } if (!from_stdin) { if (fofn) { FILE *fofn_fp; char line[8192]; if (strcmp(fofn, "stdin") == 0) fofn_fp = stdin; else fofn_fp = fopen(fofn, "r"); if (fofn_fp) { while (fgets(line, 8192, fofn_fp) != NULL) { char *cp; if ((cp = strchr(line, '\n'))) *cp = 0; if (format == TT_EXP) { infp = open_exp_mfile(line, NULL); } else { infp = open_trace_mfile(line, NULL); } if (NULL == infp) { perror(line); ret = 1; } else { ret |= do_trans(infp, line, outfp, format); mfclose(infp); } } fclose(fofn_fp); } } for (;argc > 0; argc--, argv++) { if (format == TT_EXP) { infp = open_exp_mfile(*argv, NULL); } else { infp = open_trace_mfile(*argv, NULL); } if (NULL == infp) { perror(*argv); ret = 1; } else { ret |= do_trans(infp, *argv, outfp, format); mfclose(infp); } } } else { ret = do_trans(infp, "", outfp, format); } return ret; } io_lib-1.14.6/progs/extract_qual.c0000644000031500020650000002505412354177665013775 00000000000000/* * Copyright (c) 2008, 2010, 2013 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * Copyright (c) Medical Research Council 1994-1999. All rights reserved. * * Permission to use, copy, modify and distribute this software and its * documentation for any purpose is hereby granted without fee, provided that * this copyright and notice appears in all copies. * * This file was written by James Bonfield, Simon Dear, Rodger Staden, * as part of the Staden Package at the MRC Laboratory of Molecular * Biology, Hills Road, Cambridge, CB2 2QH, United Kingdom. * * MRC disclaims all warranties with regard to this software. */ #ifdef HAVE_CONFIG_H #include "io_lib_config.h" #endif #include #include #include #include #include #include #include #include #include #include #include /* #include "stdio_hack.h" */ #define LINE_LENGTH 60 /* * Converts the confidence array to the accuracy value string (AV). * * Note no memory overrun checks are performed on buf. It is recommended * that it is allocated to 4*len (worst case of "100 " for each base). * * Returns the buf argument. */ static char *my_conf2str(int1 *conf, int len, char *buf) { int i; char *ret = buf, *rs = buf; for (i = 0; i < len; i++) { sprintf(buf, "%d ", conf[i]); buf += strlen(buf); if (buf - rs > LINE_LENGTH) { *buf++ = '\n'; *buf = '\0'; rs = buf; } } return ret; } static int do_trans(mFILE *infp, char *in_file, FILE *outfp, int format, int good_only, int clip_cosmid, int fasta_out) { Read *r; char *tmp_prob_A, *tmp_prob_C, *tmp_prob_G, *tmp_prob_T; char *cstr = NULL; read_sections(READ_BASES); if (NULL == (r = mfread_reading(infp, in_file, format))) { fprintf(stderr, "Failed to read file '%s'\n", in_file); return 1; } tmp_prob_A = r->prob_A; tmp_prob_C = r->prob_C; tmp_prob_G = r->prob_G; tmp_prob_T = r->prob_T; #ifdef IOLIB_EXP if (good_only && r->orig_trace_format == TT_EXP) { int left=0, right=r->NBases + 1, val, lval, rval; Exp_info *e = (Exp_info *)r->orig_trace; if (0 == exp_get_int(e, EFLT_SL, &val)) if (val > left) left = val; if (0 == exp_get_int(e, EFLT_QL, &val)) if (val > left) left = val; if (0 == exp_get_int(e, EFLT_SR, &val)) if (val < right) right = val; if (0 == exp_get_int(e, EFLT_QR, &val)) if (val < right) right = val; /* This is horrid - see gap seqInfo.c file for explaination */ if (clip_cosmid) { int got_cosmid; if (0 == exp_get_rng(e, EFLT_CS, &lval, &rval)) { got_cosmid = 1; } else if (0 == exp_get_int(e, EFLT_CL, &lval) && 0 == exp_get_int(e, EFLT_CR, &rval)) { got_cosmid = 1; } else { got_cosmid = 0; } if (got_cosmid) { if (lval <= left && rval <= left) ; else if (lval <= left+1 && rval < right) left = rval; else if (lval <= left+1 && rval >= right) right = left+1; else if (lval < right && rval < right) right = lval; else if (lval < right && rval >= right) right = lval; } } r->prob_A += left; r->prob_C += left; r->prob_G += left; r->prob_T += left; r->NBases = right - left - 1; } else #endif /* IOLIB_EXP */ if (good_only) { r->prob_A += r->leftCutoff; r->prob_C += r->leftCutoff; r->prob_G += r->leftCutoff; r->prob_T += r->leftCutoff; r->NBases = r->rightCutoff - r->leftCutoff - 1; } /* Confidence values */ if (r->prob_A && r->prob_C && r->prob_G && r->prob_T && r->NBases > 0) { int i; /* We have some, but are they non zero values? */ for (i = 0; i < r->NBases; i++) { if (r->prob_A[i] || r->prob_C[i] || r->prob_G[i] || r->prob_T[i]) break; } if (i != r->NBases) { int1 *conf = (int1 *)xmalloc(r->NBases); cstr = (char *)xmalloc(r->NBases * 4 + 2); for (i = 0; i < r->NBases; i++) { switch (r->base[i]) { case 'a': case 'A': conf[i] = r->prob_A[i]; break; case 'c': case 'C': conf[i] = r->prob_C[i]; break; case 'g': case 'G': conf[i] = r->prob_G[i]; break; case 't': case 'T': conf[i] = r->prob_T[i]; break; case 'b': case 'B': conf[i] = (r->prob_C[i] + r->prob_G[i] + r->prob_T[i]) / 3; break; case 'd': case 'D': conf[i] = (r->prob_A[i] + r->prob_G[i] + r->prob_T[i]) / 3; break; case 'h': case 'H': conf[i] = (r->prob_A[i] + r->prob_C[i] + r->prob_T[i]) / 3; break; case 'v': case 'V': conf[i] = (r->prob_A[i] + r->prob_C[i] + r->prob_G[i]) / 3; break; case 'k': case 'K': conf[i] = (r->prob_G[i] + r->prob_T[i]) / 2; break; case 'm': case 'M': conf[i] = (r->prob_A[i] + r->prob_C[i]) / 2; break; case 'r': case 'R': conf[i] = (r->prob_A[i] + r->prob_G[i]) / 2; break; case 's': case 'S': conf[i] = (r->prob_C[i] + r->prob_G[i]) / 2; break; case 'w': case 'W': conf[i] = (r->prob_A[i] + r->prob_T[i]) / 2; break; case 'y': case 'Y': conf[i] = (r->prob_C[i] + r->prob_T[i]) / 2; break; default: conf[i] = (r->prob_A[i] + r->prob_C[i] + r->prob_G[i] + r->prob_T[i]) / 4; } } my_conf2str(conf, r->NBases, cstr); xfree(conf); } } if (fasta_out) { char *p = strrchr(in_file, '/'); /* Add header */ if (NULL == p) p = in_file; else p++; fprintf(outfp, ">%s\n", p); } if (cstr) { fprintf(outfp,"%s\n", cstr); xfree(cstr); } r->prob_A = tmp_prob_A; r->prob_C = tmp_prob_C; r->prob_G = tmp_prob_G; r->prob_T = tmp_prob_T; read_deallocate(r); fflush(outfp); return 0; } static void usage(void) { fprintf(stderr, "Usage: extract_qual [-r] [-(abi|alf|scf|exp|pln|ztr)]\n" " [-good_only] [-clip_cosmid] [-fasta_out]\n" " [-output output_name] [input_name] ...\n"); exit(1); } int main(int argc, char **argv) { int from_stdin = 1; mFILE *infp = mstdin(); FILE *outfp = stdout; int format = TT_ANY; int redirect = 1; int good_only = 0; int clip_cosmid = 0; int fasta_out = 0; int ret = 0; char *fofn = NULL; for (argc--, argv++; argc > 0; argc--, argv++) { if (strcmp(*argv, "-r") == 0) { redirect = 0; } else if (strcasecmp(*argv, "-abi") == 0) { format = TT_ABI; } else if (strcasecmp(*argv, "-alf") == 0) { format = TT_ALF; } else if (strcasecmp(*argv, "-scf") == 0) { format = TT_SCF; } else if (strcasecmp(*argv, "-exp") == 0) { format = TT_EXP; } else if (strcasecmp(*argv, "-pln") == 0) { format = TT_PLN; } else if (strcasecmp(*argv, "-ztr") == 0) { format = TT_ZTR; } else if (strcasecmp(*argv, "-good_only") == 0) { good_only = 1; } else if (strcasecmp(*argv, "-clip_cosmid") == 0) { clip_cosmid = 1; } else if (strcasecmp(*argv, "-fasta_out") == 0) { fasta_out = 1; } else if (strcmp(*argv, "-fofn") == 0) { fofn = *++argv; argc--; from_stdin = 0; } else if (strcasecmp(*argv, "-output") == 0) { if (NULL == (outfp = fopen(*++argv, "wb"))) { perror(*argv); return 1; } argc--; } else if (**argv != '-') { from_stdin = 0; break; } else { usage(); } } read_experiment_redirect(redirect); if (!from_stdin) { if (fofn) { FILE *fofn_fp; char line[8192]; if (strcmp(fofn, "stdin") == 0) fofn_fp = stdin; else fofn_fp = fopen(fofn, "r"); if (fofn_fp) { while (fgets(line, 8192, fofn_fp) != NULL) { char *cp; if ((cp = strchr(line, '\n'))) *cp = 0; if (format == TT_EXP) { infp = open_exp_mfile(line, NULL); } else { infp = open_trace_mfile(line, NULL); } if (NULL == infp) { perror(line); ret = 1; } else { ret |= do_trans(infp, line, outfp, format, good_only, clip_cosmid, fasta_out); mfclose(infp); } } fclose(fofn_fp); } } for (;argc > 0; argc--, argv++) { if (format == TT_EXP) { infp = open_exp_mfile(*argv, NULL); } else { infp = open_trace_mfile(*argv, NULL); } if (NULL == infp) { perror(*argv); ret = 1; } else { ret |= do_trans(infp, *argv, outfp, format, good_only, clip_cosmid, fasta_out); mfclose(infp); } } } else { ret = do_trans(infp, "", outfp, format, good_only, clip_cosmid, fasta_out); } return ret; } io_lib-1.14.6/progs/extract_seq.c0000644000031500020650000002224612354177665013623 00000000000000/* * Copyright (c) 2003, 2005-2008, 2010, 2013 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * Author(s): James Bonfield * * Copyright (c) 1996, 1999-2001 MEDICAL RESEARCH COUNCIL * All rights reserved * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1 Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2 Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3 Neither the name of the MEDICAL RESEARCH COUNCIL, THE LABORATORY OF * MOLECULAR BIOLOGY nor the names of its contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * Copyright (c) Medical Research Council 1994-1999. All rights reserved. * * Permission to use, copy, modify and distribute this software and its * documentation for any purpose is hereby granted without fee, provided that * this copyright and notice appears in all copies. * * This file was written by James Bonfield, Simon Dear, Rodger Staden, * as part of the Staden Package at the MRC Laboratory of Molecular * Biology, Hills Road, Cambridge, CB2 2QH, United Kingdom. * * MRC disclaims all warranties with regard to this software. */ #ifdef HAVE_CONFIG_H #include "io_lib_config.h" #endif #include #include #include #include #include #include #include #include #include #include /* #include "stdio_hack.h" */ #define LINE_LENGTH 60 static int do_trans(mFILE *infp, char *in_file, FILE *outfp, int format, int good_only, int clip_cosmid, int fasta_out) { Read *r; char *tmp_base; read_sections(READ_BASES); if (NULL == (r = mfread_reading(infp, in_file, format))) { fprintf(stderr, "Failed to read file '%s'\n", in_file); return 1; } tmp_base = r->base; #ifdef IOLIB_EXP if (good_only && r->orig_trace_format == TT_EXP) { int left=0, right=r->NBases + 1, val, lval, rval; Exp_info *e = (Exp_info *)r->orig_trace; if (0 == exp_get_int(e, EFLT_SL, &val)) if (val > left) left = val; if (0 == exp_get_int(e, EFLT_QL, &val)) if (val > left) left = val; if (0 == exp_get_int(e, EFLT_SR, &val)) if (val < right) right = val; if (0 == exp_get_int(e, EFLT_QR, &val)) if (val < right) right = val; /* This is horrid - see gap seqInfo.c file for explaination */ if (clip_cosmid) { int got_cosmid; if (0 == exp_get_rng(e, EFLT_CS, &lval, &rval)) { got_cosmid = 1; } else if (0 == exp_get_int(e, EFLT_CL, &lval) && 0 == exp_get_int(e, EFLT_CR, &rval)) { got_cosmid = 1; } else { got_cosmid = 0; } if (got_cosmid) { if (lval <= left && rval <= left) ; else if (lval <= left+1 && rval < right) left = rval; else if (lval <= left+1 && rval >= right) right = left+1; else if (lval < right && rval < right) right = lval; else if (lval < right && rval >= right) right = lval; } } r->base += left; r->NBases = right - left - 1; } else #endif /* IOLIB_EXP */ if (good_only) { r->base += r->leftCutoff; r->NBases = r->rightCutoff - r->leftCutoff - 1; } if (fasta_out) { char *p = strrchr(in_file, '/'); int i; /* Add header */ if (NULL == p) p = in_file; else p++; fprintf(outfp, ">%s\n", p); /* Replace - with N */ for (i = 0; i < r->NBases; i++) { if (r->base[i] == '-') r->base[i] = 'N'; } } set_compression_method(0); /* We don't want to gzip the output */ fwrite_reading(outfp, r, TT_PLN); r->base = tmp_base; read_deallocate(r); fflush(outfp); return 0; } static void usage(void) { fprintf(stderr, "Usage: extract_seq [-r] [-(abi|alf|scf|exp|pln|ztr)]\n" " [-good_only] [-clip_cosmid] [-fasta_out]\n" " [-output output_name] [input_name] ...\n"); exit(1); } int main(int argc, char **argv) { int from_stdin = 1; mFILE *infp = mstdin(); FILE *outfp = stdout; int format = TT_ANY; int redirect = 1; int good_only = 0; int clip_cosmid = 0; int fasta_out = 0; int ret = 0; char *fofn = NULL; for (argc--, argv++; argc > 0; argc--, argv++) { if (strcmp(*argv, "-r") == 0) { redirect = 0; } else if (strcasecmp(*argv, "-abi") == 0) { format = TT_ABI; } else if (strcasecmp(*argv, "-alf") == 0) { format = TT_ALF; } else if (strcasecmp(*argv, "-scf") == 0) { format = TT_SCF; } else if (strcasecmp(*argv, "-exp") == 0) { format = TT_EXP; } else if (strcasecmp(*argv, "-pln") == 0) { format = TT_PLN; } else if (strcasecmp(*argv, "-ztr") == 0) { format = TT_ZTR; } else if (strcasecmp(*argv, "-good_only") == 0) { good_only = 1; } else if (strcasecmp(*argv, "-clip_cosmid") == 0) { clip_cosmid = 1; } else if (strcasecmp(*argv, "-fasta_out") == 0) { fasta_out = 1; } else if (strcmp(*argv, "-fofn") == 0) { fofn = *++argv; argc--; from_stdin = 0; } else if (strcasecmp(*argv, "-output") == 0) { if (NULL == (outfp = fopen(*++argv, "wb"))) { perror(*argv); return 1; } argc--; } else if (**argv != '-') { from_stdin = 0; break; } else { usage(); } } read_experiment_redirect(redirect); if (!from_stdin) { if (fofn) { FILE *fofn_fp; char line[8192]; if (strcmp(fofn, "stdin") == 0) fofn_fp = stdin; else fofn_fp = fopen(fofn, "r"); if (fofn_fp) { while (fgets(line, 8192, fofn_fp) != NULL) { char *cp; if ((cp = strchr(line, '\n'))) *cp = 0; if (format == TT_EXP) { infp = open_exp_mfile(line, NULL); } else { infp = open_trace_mfile(line, NULL); } if (NULL == infp) { perror(line); ret = 1; } else { ret |= do_trans(infp, line, outfp, format, good_only, clip_cosmid, fasta_out); mfclose(infp); } } fclose(fofn_fp); } } for (;argc > 0; argc--, argv++) { if (format == TT_EXP) { infp = open_exp_mfile(*argv, NULL); } else { infp = open_trace_mfile(*argv, NULL); } if (NULL == infp) { perror(*argv); ret = 1; } else { ret |= do_trans(infp, *argv, outfp, format, good_only, clip_cosmid, fasta_out); mfclose(infp); } } } else { ret = do_trans(infp, "", outfp, format, good_only, clip_cosmid, fasta_out); } return ret; } io_lib-1.14.6/progs/get_comment.c0000644000031500020650000001453312354177665013602 00000000000000/* * Copyright (c) 2005, 2007, 2010 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * Author(s): James Bonfield * * Copyright (c) 2001 MEDICAL RESEARCH COUNCIL * All rights reserved * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1 Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2 Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3 Neither the name of the MEDICAL RESEARCH COUNCIL, THE LABORATORY OF * MOLECULAR BIOLOGY nor the names of its contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * Fetches all or several specific comment(s) from a trace file TEXT section. * * Usage: * get_comment [options] [field ...] < infile * * Options: * -c Suppresses display of field-ID * -h Help * * Return codes: * 0 Success * 1 At least one field was not found * 2 Failed to read file, or usage message displayed */ #ifdef HAVE_CONFIG_H #include "io_lib_config.h" #endif #include #include #include #include #include /* Nasty Microsoft bits */ #ifdef _MSC_VER # define DLL_IMPORT __declspec(dllimport) #else # define DLL_IMPORT #endif /* * From unistd.h extern DLL_IMPORT char *optarg; extern DLL_IMPORT int optind; */ void usage(void) { puts("Usage:"); puts(" get_comment [options] [field ...] < infile"); puts("\nOptions:"); puts(" -c Suppresses display of field-ID"); puts(" -h Help"); puts("\nReturn codes:"); puts(" 0 Success"); puts(" 1 At least one field was not found"); puts(" 2 Failed to read file, or usage message displayed"); exit(2); } int main(int argc, char **argv) { Read *r; char *ident, *value; int ident_len, value_len; enum state_t { NAME, EQUALS, VALUE, NL } state; size_t len; int i, j, found; int suppress = 0; int *found_args = NULL; /* Parse arguments */ for (argc--, argv++; argc > 0; argc--, argv++) { if (**argv != '-') break; if (strcmp(*argv, "-c") == 0) { suppress = 1; } else { usage(); } } /* Read the file */ read_sections(READ_COMMENTS); if (NULL == (r = fread_reading(stdin, "(stdin)", TT_ANY))) { fprintf(stderr, "failed to read trace from stdin\n"); return 2; } if (!r->info) return 1; if (argc == 0) { /* Display all of them */ puts(r->info); } else { /* Display only the ones listed on the command line */ found_args = (int *)calloc(argc, sizeof(int)); len = strlen(r->info); state = NAME; ident = r->info; found = 0; /* Not needed, but avoids "might be used uninitialized" message */ value = NULL; ident_len = value_len = 0; for (i = 0; i <= len; i++) { switch (state) { case NAME: if (r->info[i] == '=') { state = EQUALS; ident_len = &r->info[i] - ident; value_len = 0; } break; case EQUALS: for (j = 0; j < argc; j++) { if (strncmp(ident, argv[j], ident_len) == 0) { found = 1; found_args[j] = 1; } } state = VALUE; value = &r->info[i]; /* DELIBERATE FLOW THROUGH */ case VALUE: if (r->info[i] == '\n' || r->info[i] == 0) { value_len = &r->info[i] - value; state = NL; } break; case NL: if (found) { if (suppress) { printf("%.*s\n", value_len, value); } else { printf("%.*s=%.*s\n", ident_len, ident, value_len, value); } } state = NAME; ident = &r->info[i]; found = 0; break; } } } read_deallocate(r); if (found_args) { for (j = 0; j < argc; j++) { if (found_args[j] == 0) return 1; } } return 0; } io_lib-1.14.6/progs/hash_exp.c0000644000031500020650000000634612354177665013103 00000000000000/* * Copyright (c) 2006-2007, 2010-2011 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifdef HAVE_CONFIG_H #include "io_lib_config.h" #endif #include #include #include #include #include #include #include HashFile *build_index(FILE *fp) { char line[8192]; char rname[8192]; size_t pos = 0, last = 0; char *c = "magic"; HashFile *hf; /* Create the hash table */ hf = HashFileCreate(0, HASH_DYNAMIC_SIZE); hf->headers = (HashFileSection *)malloc(sizeof(*hf->headers)); hf->nheaders = 0; for (*rname = 0; c;) { c = fgets(line, 8192, fp); if (c == NULL || strncmp("ID ", line, 5) == 0) { /* Add this entry; it extends from 'last' to 'pos' */ if (*rname) { HashData hd; HashFileItem *hfi = (HashFileItem *)calloc(1, sizeof(*hfi)); hfi->header = 0; hfi->footer = 0; hfi->pos = last; hfi->size = pos - last; hd.p = hfi; HashTableAdd(hf->h, rname, strlen(rname), hd, NULL); } /* Remember this ID line for when we meet the next */ if (c) { char *nl; if ((nl = strchr(c, '\n'))) *nl = 0; if ((nl = strchr(c, '\r'))) *nl = 0; strcpy(rname, c+5); } last = pos; } pos = ftell(fp); } HashTableStats(hf->h, stderr); return hf; } int main(int argc, char **argv) { HashFile *hf; FILE *fp; if (argc != 2) { fprintf(stderr, "Usage: hash_exp exp_file_ball > exp.hash\n"); return 1; } if (NULL == (fp = fopen(argv[1], "rb+"))) { perror(argv[1]); return 1; } hf = build_index(fp); //hf->archive = NULL; HashFileSave(hf, fp, 0); return 0; } io_lib-1.14.6/progs/hash_extract.c0000644000031500020650000000633112354177665013753 00000000000000/* * Copyright (c) 2005-2008, 2010, 2013 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifdef HAVE_CONFIG_H #include "io_lib_config.h" #endif #include #include #include #include #include /* * Copies a single named file to stdout. * Returns 0 on success * 1 on failure */ int extract(HashFile *hf, char *file) { size_t len; char *data; if ((data = HashFileExtract(hf, file, &len))) { fwrite(data, len, 1, stdout); free(data); return 0; } return 1; } int main(int argc, char **argv) { char *fofn = NULL; char *hash; HashFile *hf; int ret = 0; /* process command line arguments of the form -arg */ for (argc--, argv++; argc > 0; argc--, argv++) { if (**argv != '-' || strcmp(*argv, "--") == 0) break; if (strcmp(*argv, "-I") == 0) { argv++; fofn = *argv; argc--; } } if (argc < 2 && !fofn) { fprintf(stderr, "Usage: hash_extract [-I fofn] hashfile [name ...]\n"); return 1; } hash = argv[0]; argc--; argv++; if (NULL == (hf = HashFileOpen(hash))) { perror(hash); return 1; } if (fofn) { FILE *fofnfp; char file[256]; if (strcmp(fofn, "-") == 0) { fofnfp = stdin; } else { if (NULL == (fofnfp = fopen(fofn, "r"))) { perror(fofn); return 1; } } while (fgets(file, 255, fofnfp)) { char *c; if ((c = strchr(file, '\n'))) *c = 0; ret |= extract(hf, file); } fclose(fofnfp); } #ifdef _WIN32 _setmode(_fileno(stdout), _O_BINARY); #endif for (; argc; argc--, argv++) { ret |= extract(hf, *argv); } HashFileDestroy(hf); return ret; } io_lib-1.14.6/progs/hash_list.c0000644000031500020650000000621012354177665013250 00000000000000/* * Copyright (c) 2005-2008, 2010, 2013 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifdef HAVE_CONFIG_H #include "io_lib_config.h" #endif #include #include #include #include #include /* * Dumps a textual represenation of the hash table to stdout. */ void HashTableLongDump(HashFile *hf, FILE *fp, int long_format) { HashTable *h = hf->h; int i; for (i = 0; i < h->nbuckets; i++) { HashItem *hi; for (hi = h->bucket[i]; hi; hi = hi->next) { HashFileItem *hfi; hfi = (HashFileItem *)hi->data.p; if (long_format) { char *aname; if (hf->archives && hfi->archive < hf->narchives) { aname = hf->archives[hfi->archive]; } else { aname = "?"; } fprintf(fp, "%10"PRId64" %6"PRId32" %.*s %s\n", hfi->pos, hfi->size, hi->key_len, hi->key, aname); /* fprintf(fp, "%10ld %6d %.*s\n", hfi->pos, hfi->size, hi->key_len, hi->key); */ } else { fprintf(fp, "%.*s\n", hi->key_len, hi->key); } } } } /* * Lists the contents of a .hash file */ int main(int argc, char **argv) { FILE *fp; HashFile *hf; int long_format = 0; /* process command line arguments of the form -arg */ if (argc >= 2 && strcmp(argv[1], "-l") == 0) { long_format = 1; argc--; argv++; } if (argc >= 2) { fp = fopen(argv[1], "rb"); if (NULL == fp) { perror(argv[1]); return 1; } } else { fp = stdin; } hf = HashFileLoad(fp); if (hf) { HashTableLongDump(hf, stdout, long_format); HashFileDestroy(hf); } return 0; } io_lib-1.14.6/progs/hash_sff.c0000644000031500020650000002052112354177665013054 00000000000000/* * Copyright (c) 2005, 2007-2008, 2010, 2013 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * This adds a hash table index (".hsh" v1.00 format) to an SFF archive. * It does this either inline on the file itself (provided it doesn't already * have an index) or by producing a new indexed SFF archive. * * It has been coded to require only the memory needed to store the index * and so does quite a lot of I/O but with minimised memory. For a 460,000 * SFF archive it took about 22 seconds real time on a 1.7GHz P4 when copying * or 10 seconds when updating inline. */ /* ---------------------------------------------------------------------- */ #ifdef HAVE_CONFIG_H #include "io_lib_config.h" #endif #include #include #include #include #include #include #include #include /* * Override the sff.c functions to use FILE pointers instead. This means * we don't have to load the entire archive into memory, which is optimal when * dealing with a single file (ie in sff/sff.c), but not when indexing it. * * Done with minimal error checking I'll admit... */ static sff_read_header *fread_sff_read_header(FILE *fp) { sff_read_header *h; unsigned char rhdr[16]; if (16 != fread(rhdr, 1, 16, fp)) return NULL; h = decode_sff_read_header(rhdr); if (h->name_len != fread(h->name, 1, h->name_len, fp)) return free_sff_read_header(h), NULL; /* Pad to 8 chars */ fseek(fp, (ftell(fp) + 7)& ~7, SEEK_SET); return h; } static sff_common_header *fread_sff_common_header(FILE *fp) { sff_common_header *h; unsigned char chdr[31]; if (31 != fread(chdr, 1, 31, fp)) return NULL; h = decode_sff_common_header(chdr); if (h->flow_len != fread(h->flow, 1, h->flow_len, fp)) return free_sff_common_header(h), NULL; if (h->key_len != fread(h->key , 1, h->key_len, fp)) return free_sff_common_header(h), NULL; /* Pad to 8 chars */ fseek(fp, (ftell(fp) + 7)& ~7, SEEK_SET); return h; } void usage(void) { fprintf(stderr, "Usage: hash_sff [-o outfile] [-t] sff_file ...\n"); exit(1); } int main(int argc, char **argv) { HashFile *hf; sff_common_header *ch; sff_read_header *rh; int i, dot, arg; char *sff; char hdr[31]; uint64_t index_offset = 0; uint32_t index_size, index_skipped; FILE *fp, *fpout = NULL; int copy_archive = 1; /* process command line arguments of the form -arg */ for (argc--, argv++; argc > 0; argc--, argv++) { if (**argv != '-' || strcmp(*argv, "--") == 0) break; if (strcmp(*argv, "-o") == 0 && argc > 1) { if (NULL == (fpout = fopen(argv[1], "wb+"))) { perror(argv[1]); return 1; } argv++; argc--; } else if (strcmp(*argv, "-t") == 0) { copy_archive = 0; } else if (**argv == '-') { usage(); } } if (argc < 1) usage(); if (copy_archive == 0 && argc != 1) { fprintf(stderr, "-t option only supported with a single sff argument\n"); return 1; } /* Create the hash table */ hf = HashFileCreate(0, HASH_DYNAMIC_SIZE); hf->nheaders = 0; hf->headers = NULL; for (arg = 0; arg < argc; arg++) { /* open (and read) the entire sff file */ sff = argv[arg]; printf("Indexing %s:\n", sff); if (fpout) { if (NULL == (fp = fopen(sff, "rb"))) { perror(sff); return 1; } } else { if (NULL == (fp = fopen(sff, "rb+"))) { perror(sff); return 1; } } /* Read the common header */ ch = fread_sff_common_header(fp); if (ch->index_len && !fpout) { fprintf(stderr, "Archive already contains index.\nReplacing the" " index requires the \"-o outfile\" option.\n"); return 1; } /* Add the SFF common header as a hash file-header */ hf->nheaders++; hf->headers = (HashFileSection *)realloc(hf->headers, hf->nheaders * sizeof(*hf->headers)); hf->headers[hf->nheaders-1].pos = 0; hf->headers[hf->nheaders-1].size = ch->header_len; hf->headers[hf->nheaders-1].cached_data = NULL; /* Read the index items, adding to the hash */ index_skipped = 0; dot = 0; printf(" |\r|"); for (i = 0; i < ch->nreads; i++) { int dlen; uint32_t offset; HashData hd; HashFileItem *hfi; if (i >= dot * (ch->nreads/69)) { putchar('.'); fflush(stdout); dot++; } /* Skip old index if present */ offset = ftell(fp); if (offset == ch->index_offset) { fseek(fp, ch->index_len, SEEK_CUR); index_skipped = ch->index_len; continue; } hfi = (HashFileItem *)calloc(1, sizeof(*hfi)); rh = fread_sff_read_header(fp); dlen = (2*ch->flow_len + 3*rh->nbases + 7) & ~7; fseek(fp, dlen, SEEK_CUR); hfi->header = hf->nheaders; hfi->footer = 0; hfi->pos = offset - index_skipped; hfi->size = (ftell(fp) - index_skipped) - hfi->pos; hd.p = hfi; HashTableAdd(hf->h, rh->name, rh->name_len, hd, NULL); } printf("\n"); HashTableStats(hf->h, stdout); index_offset = ftell(fp) - index_skipped; /* Copy the archive if needed, minus the old index */ if (fpout && copy_archive) { char block[8192]; size_t len; uint64_t pos = 0; printf("\nCopying archive\n"); fseek(fp, 0, SEEK_SET); while ((len = fread(block, 1, 8192, fp))) { /* Skip previous index */ if (pos < ch->index_offset && pos+len > ch->index_offset) { len = ch->index_offset - pos; fseek(fp, ch->index_offset + ch->index_len, SEEK_SET); } if (len && len != fwrite(block, 1, len, fpout)) { fprintf(stderr, "Failed to output new archive\n"); return 1; } pos += len; } } if (!fpout) { /* Save the hash */ printf("Saving index\n"); fseek(fp, 0, SEEK_END); index_size = HashFileSave(hf, fp, 0); HashFileDestroy(hf); /* Update the common header */ fseek(fp, 0, SEEK_SET); if (31 != fread(hdr, 1, 31, fp)) exit(1); *(uint64_t *)(hdr+8) = be_int8(index_offset); *(uint32_t *)(hdr+16) = be_int4(index_size); fseek(fp, 0, SEEK_SET); fwrite(hdr, 1, 31, fp); } fclose(fp); } if (fpout) { /* Save the hash */ printf("Saving index\n"); if (!copy_archive) { hf->narchives = 1; hf->archives = malloc(sizeof(char **)); hf->archives[0] = strdup(argv[0]); index_offset = 0; } fseek(fpout, 0, SEEK_END); index_size = HashFileSave(hf, fpout, 0); HashFileDestroy(hf); /* Update the common header to indicate index location */ if (copy_archive) { fseek(fpout, 0, SEEK_SET); if (31 != fread(hdr, 1, 31, fpout)) exit(1); *(uint64_t *)(hdr+8) = be_int8(index_offset); *(uint32_t *)(hdr+16) = be_int4(index_size); fseek(fpout, 0, SEEK_SET); fwrite(hdr, 1, 31, fpout); } fclose(fpout); } return 0; } io_lib-1.14.6/progs/hash_tar.c0000644000031500020650000002770712354177665013101 00000000000000/* * Copyright (c) 2005, 2007, 2010, 2013 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifdef HAVE_CONFIG_H #include "io_lib_config.h" #endif #include #include #include #include #include #include #include #include #include typedef struct { int directories; int verbose; int append_mode; int prepend_mode; int basename; char *header; char *footer; char *archive; /* when reading from stdin */ HashTable *map; } options_t; typedef struct { char member[256]; unsigned char archive; uint64_t pos; uint32_t size; } tar_file; static tar_file *files = NULL; static int files_alloc = 0; static int nfiles = 0; void seek_forward(FILE *fp, int size) { if (fp != stdin) { fseek(fp, size, SEEK_CUR); } else { /* Seeking on a pipe isn't supported, even for fwd seeks */ char buf[8192]; while (size) { size -= fread(buf, 1, size > 8192 ? 8192 : size, fp); } } } HashTable *load_map(char *fn) { HashTable *h = HashTableCreate(65536, HASH_DYNAMIC_SIZE | HASH_POOL_ITEMS); FILE *fp; char line[8192]; if (NULL == (fp = fopen(fn, "r"))) { perror(fn); return NULL; } while(fgets(line, 8192, fp)) { char *cp, *from, *to; HashData hd; for (from = cp = line; *cp && !isspace(*cp); cp++); if (!*cp) { fprintf(stderr, "Malformed line '%s'\n", line); return NULL; } *cp++ = 0; for (to = cp; isprint(*cp); cp++); *cp++ = 0; hd.p = strdup(to); if (!HashTableAdd(h, from, strlen(from), hd, NULL)) return NULL; } fclose(fp); return h; } /* * Adds tar index data to the global files[] array. * * Returns 0 on success * -1 on failure */ int accumulate(HashFile *hf, FILE *fp, char *archive, options_t *opt) { tar_block blk; char member[256]; int LongLink = 0; size_t size, extra; size_t offset = 0; /* Add to HashFile archives list */ if (archive) { hf->narchives++; hf->archives = realloc(hf->archives, hf->narchives * sizeof(char *)); hf->archives[hf->narchives-1] = strdup(archive); } /* Fill out the files[] array with the offsets, size and names */ while(fread(&blk, sizeof(blk), 1, fp) == 1) { /* * If a directory is too large to fit in the name (>100) but short * enough to fit in the prefix the name field will be empty, this is * not the cas for ordinary files where the name field is always * non-empty */ if (!blk.header.name[0] && !blk.header.prefix[0]) break; /* get size of member, rounded to a multiple of TBLOCK */ size = strtoul(blk.header.size, NULL, 8); extra = TBLOCK*((size+TBLOCK-1)/TBLOCK) - size; /* skip directories unless requested */ if (opt->directories || blk.header.typeflag != DIRTYPE) { /* * extract member name (prefix + name), unless last member * was ././@LongLink */ if (LongLink == 0) { (void) strncpy(member, blk.header.prefix, 155); if (strlen(blk.header.prefix) > 0 && blk.header.name[0]) (void) strcat(member, "/"); (void) strncat(member, blk.header.name, 100); } /* account for gtar ././@LongLink */ if (strcmp(member, "././@LongLink") == 0) { /* still expect filenames to fit into 256 bytes */ if (size > 256) { int r = fread(member, 1, size > 256 ? 256 : size, fp); fprintf(stderr,"././@LongLink too long size=%ld\n", (long)size); if (r > 0) fprintf(stderr,"%s...\n", member); exit(1); } /* * extract full name of next member then rewind to start * of header */ if (size != fread(member, 1, size > 256 ? 256 : size, fp)) exit(1); fseek(fp, -size, SEEK_CUR); LongLink = 1; } else { /* output offset, member name */ /* printf("%lu %.256s\n", (long)offset, member); */ LongLink = 0; if (nfiles >= files_alloc) { if (files_alloc) files_alloc *= 2; else files_alloc = 1024; files = (tar_file *)realloc(files, files_alloc*sizeof(tar_file)); } if (opt->basename) { char *cp = strrchr(member, '/'); if (cp) memmove(member, cp+1, strlen(cp+1)+1); } if (opt->map) { HashItem *hi = HashTableSearch(opt->map, member, strlen(member)); if (hi) { //fprintf(stderr, "Mapped %s to %s\n", // member, hi->data.p); strcpy(files[nfiles].member, hi->data.p); } else { //fprintf(stderr, "No map for %s\n", // member); strcpy(files[nfiles].member, member); } } else { strcpy(files[nfiles].member, member); } files[nfiles].archive = hf->narchives-1; files[nfiles].pos = offset+sizeof(blk); files[nfiles].size = size; if (opt->verbose) fprintf(stderr, "File %d: pos %010ld+%06d: %s\n", nfiles, (long)files[nfiles].pos, files[nfiles].size, files[nfiles].member); nfiles++; } } /* increment offset */ size += extra; seek_forward(fp, size); offset += sizeof(blk) + size; } return 0; } void link_footers(HashFile *hf, options_t *opt) { int found_header = 0, found_footer = 0; int i; for (i = 0; i < nfiles; i++) { if (opt->header && strncmp(opt->header, files[i].member, 256) == 0) { hf->headers[0].archive_no = 0; /* hard-coded, sorry */ hf->headers[0].pos = files[i].pos; hf->headers[0].size = files[i].size; hf->headers[0].cached_data = NULL; found_header++; } if (opt->footer && strncmp(opt->footer, files[i].member, 256) == 0) { hf->footers[0].archive_no = 0; /* hard-coded, sorry */ hf->footers[0].pos = files[i].pos; hf->footers[0].size = files[i].size; hf->footers[0].cached_data = NULL; found_footer++; } } if (opt->header && !found_header) { fprintf(stderr, "Warning: could not find header '%s' in file\n", opt->header); hf->nheaders = 0; } if (opt->footer && !found_footer) { fprintf(stderr, "Warning: could not find footer '%s' in file\n", opt->footer); hf->nfooters = 0; } } void construct_hash(HashFile *hf) { int i; for (i = 0; i < nfiles; i++) { HashData hd; HashFileItem *hfi = (HashFileItem *)calloc(1, sizeof(*hfi)); /* Just use the last head/foot defined as we only allow 1 at the mo. */ hfi->header = hf->nheaders; hfi->footer = hf->nfooters; hfi->pos = files[i].pos; hfi->size = files[i].size; hfi->archive = files[i].archive; hd.p = hfi; HashTableAdd(hf->h, files[i].member, strlen(files[i].member), hd, NULL); } } void save_hash(HashFile *hf, options_t *opt) { HashTableStats(hf->h, stderr); #ifdef _WIN32 _setmode(_fileno(stdout), _O_BINARY); #endif HashFileSave(hf, stdout, opt->prepend_mode ? HASHFILE_PREPEND : 0); HashFileDestroy(hf); } int main(int argc, char **argv) { options_t opt; HashFile *hf; /* process command line arguments of the form -arg */ opt.directories = 0; opt.verbose = 0; opt.append_mode = 0; opt.prepend_mode = 0; opt.basename = 0; opt.header = NULL; opt.footer = NULL; opt.archive = NULL; opt.map = NULL; hf = HashFileCreate(0, HASH_DYNAMIC_SIZE); for (argc--, argv++; argc > 0; argc--, argv++) { if (**argv != '-' || strcmp(*argv, "--") == 0) break; if (strcmp(*argv, "-a") == 0 && argc > 1) { opt.archive = argv[1]; argv++; argc--; } if (strcmp(*argv, "-A") == 0) opt.append_mode = 1; if (strcmp(*argv, "-O") == 0) opt.prepend_mode = 1; if (strcmp(*argv, "-d") == 0) opt.directories = 1; if (strcmp(*argv, "-v") == 0) opt.verbose = 1; if (strcmp(*argv, "-b") == 0) opt.basename = 1; if (strcmp(*argv, "-m") == 0 && argc > 1) { /* Name mapping */ opt.map = load_map(argv[1]); if (!opt.map) { fprintf(stderr, "Failed to load map '%s'\n", argv[1]); return 1; } argv++; argc--; } if (strcmp(*argv, "-h") == 0 && argc > 1) { /* Common header */ hf->headers = (HashFileSection *) realloc(hf->headers, (hf->nheaders+1) * sizeof(HashFileSection)); opt.header = argv[1]; hf->nheaders++; argv++; argc--; } if (strcmp(*argv, "-f") == 0 && argc > 1) { /* Common footer */ hf->footers = (HashFileSection *) realloc(hf->footers, (hf->nfooters+1) * sizeof(HashFileSection)); opt.footer = argv[1]; hf->nfooters++; argv++; argc--; } } if (argc < 1 && !opt.archive) { fprintf(stderr, "Usage: hash_tar [options] [tarfile] > tarfile.hash\n"); fprintf(stderr, " -a fname Tar archive filename: use if reading from stdin\n"); fprintf(stderr, " -A Force no archive name (eg will concat to archive itself)\n"); fprintf(stderr, " -O Set arc. offset to size of hash (use when prepending)\n"); fprintf(stderr, " -v Verbose mode\n"); fprintf(stderr, " -d Index directory names (useless?)\n"); fprintf(stderr, " -h name Set tar entry 'name' to be a file header\n"); fprintf(stderr, " -f name Set tar entry 'name' to be a file footer\n"); fprintf(stderr, " -b Use only the filename portion of a pathname\n"); fprintf(stderr, " -m fname Reads lines of 'old new' and renames entries before indexing."); return 1; } /* Load the tar file index into memory */ if (argc < 1) { if (!opt.archive) { fprintf(stderr, "If reading from stdin you must use the " "\"-a archivename\" option\n"); return 1; } accumulate(hf, stdin, opt.archive, &opt); } else { /* Single file mode */ if (opt.append_mode) { if (argc >= 2) { fprintf(stderr, "Can only use append_mode with a single " "tar file\n"); return 1; } } /* Iterate over all tar files */ while (argc >= 1) { FILE *fp = fopen(argv[0], "rb"); if (fp == NULL) { perror(argv[0]); return 1; } accumulate(hf, fp, argv[0], &opt); fclose(fp); argc--; argv++; } } /* * Find the header/footer if specified. For now we only support one of * each. */ link_footers(hf, &opt); /* Construct the hash */ construct_hash(hf); /* Save hash */ save_hash(hf, &opt); /* Tidy up */ free(files); return 0; } io_lib-1.14.6/progs/index_tar.c0000644000031500020650000001435012354177665013253 00000000000000/* * Copyright (c) 2004, 2007, 2009-2010, 2013 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * Author(s): James Bonfield * * Copyright (c) 2001 MEDICAL RESEARCH COUNCIL * All rights reserved * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1 Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2 Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3 Neither the name of the MEDICAL RESEARCH COUNCIL, THE LABORATORY OF * MOLECULAR BIOLOGY nor the names of its contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ #ifdef HAVE_CONFIG_H #include "io_lib_config.h" #endif #include #include #include #include #include int main(int argc, char **argv) { int directories = 0; FILE *fp; tar_block blk; char member[257]; size_t size, extra; int LongLink = 0; size_t offset = 0; /* process command line arguments of the form -arg */ for (argc--, argv++; argc > 0; argc--, argv++) { if (**argv != '-' || strcmp(*argv, "--") == 0) break; if (strcmp(*argv, "-d") == 0) directories = 1; } if (argc != 1) { fprintf(stderr, "Usage: index_tar [-d] tarfile > tarfile.index\n"); return 1; } /* open the tarfile */ if (NULL == (fp = fopen(argv[0], "rb"))) { perror(argv[0]); return 1; } while(fread(&blk, sizeof(blk), 1, fp) == 1) { /* * If a directory is too large to fit in the name (>100) but short * enough to fit in the prefix the name field will be empty, this is * not the case for ordinary files where the name field is always * non-empty */ if (!blk.header.name[0] && !blk.header.prefix[0]) break; /* get size of member, rounded to a multiple of TBLOCK */ size = strtoul(blk.header.size, NULL, 8); extra = TBLOCK*((size+TBLOCK-1)/TBLOCK) - size; /* skip directories unless requested */ if (directories || blk.header.typeflag != DIRTYPE || LongLink) { /* * extract member name (prefix + name), unless last member * was ././@LongLink */ if (LongLink == 0) { char *cp; (void) strncpy(member, blk.header.prefix, 155); member[155] = 0; if (strlen(blk.header.prefix) > 0 && blk.header.name[0]) (void) strcat(member, "/"); cp = member + strlen(member); (void) strncpy(cp, blk.header.name, 100); cp[100] = 0; } /* account for gtar ././@LongLink */ if (strcmp(member, "././@LongLink") == 0) { /* still expect filenames to fit into 256 bytes */ if (size > 256) { int r = fread(member, 1, 256, fp); fprintf(stderr,"././@LongLink too long size=%ld\n", (long)size); if (r > 0) fprintf(stderr,"%s...\n", member); exit(1); } /* * extract full name of next member then rewind to start * of header */ if (size != fread(member, 1, size > 256 ? 256 : size, fp)) exit(1); fseek(fp, -size, SEEK_CUR); LongLink = 1; } else { /* output offset, member name */ printf("%lu %.256s\n", (long)offset, member); LongLink = 0; } } /* increment offset */ size += extra; fseek(fp, size, SEEK_CUR); offset += sizeof(blk) + size; } fclose(fp); return 0; } io_lib-1.14.6/progs/makeSCF.c0000644000031500020650000003472012354177665012552 00000000000000/* * Copyright (c) 2005-2007, 2010 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * Author(s): Simon Dear, James Bonfield * * Copyright (c) 1992, 1994-2001 MEDICAL RESEARCH COUNCIL * All rights reserved * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1 Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2 Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3 Neither the name of the MEDICAL RESEARCH COUNCIL, THE LABORATORY OF * MOLECULAR BIOLOGY nor the names of its contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * Copyright (c) Medical Research Council 1994-1998. All rights reserved. * * Permission to use, copy, modify and distribute this software and its * documentation for any purpose is hereby granted without fee, provided that * this copyright and notice appears in all copies. * * This file was written by James Bonfield, Simon Dear, Rodger Staden, * as part of the Staden Package at the MRC Laboratory of Molecular * Biology, Hills Road, Cambridge, CB2 2QH, United Kingdom. * * MRC disclaims all warranties with regard to this software. */ /* * makeSCF v3.06, 17/04/2001 * * Derived from the older makeSCF; this one has been rewritten to use the new * IO libraries and no longer performs quality clipping itself. It also writes * in a new format that is more easily compressed. */ #ifdef HAVE_CONFIG_H #include "io_lib_config.h" #endif #include #include #include #include #include /* * Add our comments. * 1. Work out the comment length - simply add 1K to the current length. * 2. Copy the old comments to our new. * 3. Replace '\n' with ' '. * 4. Add our comments and switch. */ void add_comments(Read *r, char *name, int format) { Comments *cc; int clen; char *cp; char buf[1024]; /* 1. */ if (r->info) { clen = strlen(r->info) + 1024; } else { clen = 1024; } /* 2. */ if (NULL == (cc = (char *)xmalloc(clen))) return; if (r->info) strcpy(cc, r->info); else *cc = 0; /* 3. */ cp = cc; /* while (*cp) { if (*cp == '\n') *cp = ' '; cp++; } *cp++ = '\n'; */ /* 4. */ sprintf(buf, "CONV=makeSCF V3.06\nDATF=%s\nDATN=%s\n", trace_type_int2str(format), name); strcat(cp, buf); if (r->info) xfree(r->info); r->info = cc; } void scale_trace8(Read *r) { double s; int i; if (r->maxTraceVal <= 255) return; s = ((double)255)/r->maxTraceVal; for (i = 0; i < r->NPoints; i++) { r->traceA[i] *= s; r->traceC[i] *= s; r->traceG[i] *= s; r->traceT[i] *= s; } r->maxTraceVal = 255; } /* * Here we just take the minimum trace value and subtract this from all others. * The assumption is that the signal will always be 'base line' on at least * one of the four channels. */ void subtract_background(Read *r) { int i, min; for (i = 0; i < r->NPoints; i++) { min = 999999; if (r->traceA[i] < min) min = r->traceA[i]; if (r->traceC[i] < min) min = r->traceC[i]; if (r->traceG[i] < min) min = r->traceG[i]; if (r->traceT[i] < min) min = r->traceT[i]; r->traceA[i] -= min; r->traceC[i] -= min; r->traceG[i] -= min; r->traceT[i] -= min; } } /* * Find the average background level of a trace, and subtract this from the * peak heights. * * NB. That method is flawed. For now take the minimum instead of average, but * this also has horrid flaws. See above method. */ void subtract_background_old(Read *r) { int i, j, min, bg, max = 0; int win_len = 501, win_len2 = win_len/2; int *background; if (NULL == (background = (int *)xmalloc((r->NPoints + 2 * win_len) * sizeof(*background)))) return; if (r->NPoints < win_len) win_len = r->NPoints; /* Find minimum trace levels at each point */ for (i = 0, j = win_len2; i < r->NPoints; i++, j++) { min = INT_MAX; if (r->traceA[i] < min) min = r->traceA[i]; if (r->traceC[i] < min) min = r->traceC[i]; if (r->traceG[i] < min) min = r->traceG[i]; if (r->traceT[i] < min) min = r->traceT[i]; background[j] = min; } for (i = 0; i < win_len2; i++) { background[i] = background[i + win_len2]; background[i + r->NPoints] = background[i + r->NPoints - win_len2]; } /* Take lowest background over win_len and subtract it */ for (i = 0; i < r->NPoints; i++) { /* Could optimise this considerably */ bg = INT_MAX; for (j = 0; j < win_len; j++) { if (background[i + j] < bg) bg = background[i + j]; } r->traceA[i] -= bg; r->traceC[i] -= bg; r->traceG[i] -= bg; r->traceT[i] -= bg; if (r->traceA[i] > max) max = r->traceA[i]; if (r->traceC[i] > max) max = r->traceC[i]; if (r->traceG[i] > max) max = r->traceG[i]; if (r->traceT[i] > max) max = r->traceT[i]; } r->maxTraceVal = max; xfree(background); } /* * Find the maximum height of traces at the called bases. Use this to clip any * other bases. */ void reset_max_called_height(Read *r) { int i, max = 0; /* Find max */ for (i=0; i < r->NBases; i++) { switch(r->base[i]) { case 'a': case 'A': if (r->traceA[r->basePos[i]] > max) max = r->traceA[r->basePos[i]]; break; case 'c': case 'C': if (r->traceC[r->basePos[i]] > max) max = r->traceC[r->basePos[i]]; break; case 'g': case 'G': if (r->traceG[r->basePos[i]] > max) max = r->traceG[r->basePos[i]]; break; case 't': case 'T': if (r->traceT[r->basePos[i]] > max) max = r->traceT[r->basePos[i]]; break; } } /* Clip to max */ for (i = 0; i < r->NPoints; i++) { if (r->traceA[i] > max) r->traceA[i] = max; if (r->traceC[i] > max) r->traceC[i] = max; if (r->traceG[i] > max) r->traceG[i] = max; if (r->traceT[i] > max) r->traceT[i] = max; } if (r->maxTraceVal > max) r->maxTraceVal = max; } void rescale_heights(Read *r) { int win_len = 1000; int total = 0; int max, max2; int i, j, k; double max_val = 0, rescale = 1.0; TRACE *ta, *tc, *tg, *tt; ta = r->traceA; tc = r->traceC; tg = r->traceG; tt = r->traceT; if (r->NPoints < 2*win_len + 1) return; for (k = 0; k < 2; k++) { max2 = win_len * r->maxTraceVal; for (i = 0; i < win_len; i++) { max = 0; if (ta[i] > max) max = ta[i]; if (tc[i] > max) max = tc[i]; if (tg[i] > max) max = tg[i]; if (tt[i] > max) max = tt[i]; total += max; } for (j = 0; i < r->NPoints; i++, j++) { max = 0; if (ta[j] > max) max = ta[j]; if (tc[j] > max) max = tc[j]; if (tg[j] > max) max = tg[j]; if (tt[j] > max) max = tt[j]; total -= max; max = 0; if (ta[i] > max) max = ta[i]; if (tc[i] > max) max = tc[i]; if (tg[i] > max) max = tg[i]; if (tt[i] > max) max = tt[i]; total += max; if (k == 0) { if (r->traceA[j] * ((double)max2 / total) > max_val) max_val = r->traceA[j] * ((double)max2 / total); if (r->traceC[j] * ((double)max2 / total) > max_val) max_val = r->traceC[j] * ((double)max2 / total); if (r->traceG[j] * ((double)max2 / total) > max_val) max_val = r->traceG[j] * ((double)max2 / total); if (r->traceT[j] * ((double)max2 / total) > max_val) max_val = r->traceT[j] * ((double)max2 / total); } else { r->traceA[j] *= (double)max2 / total * rescale; r->traceC[j] *= (double)max2 / total * rescale; r->traceG[j] *= (double)max2 / total * rescale; r->traceT[j] *= (double)max2 / total * rescale; } } for (; j < r->NPoints; j++) { if (k == 0) { if (r->traceA[j] * ((double)max2 / total) > max_val) max_val = r->traceA[j] * ((double)max2 / total); if (r->traceC[j] * ((double)max2 / total) > max_val) max_val = r->traceC[j] * ((double)max2 / total); if (r->traceG[j] * ((double)max2 / total) > max_val) max_val = r->traceG[j] * ((double)max2 / total); if (r->traceT[j] * ((double)max2 / total) > max_val) max_val = r->traceT[j] * ((double)max2 / total); } else { r->traceA[j] *= (double)max2 / total; r->traceC[j] *= (double)max2 / total; r->traceG[j] *= (double)max2 / total; r->traceT[j] *= (double)max2 / total; } } if (max_val > 65535) rescale = 65535 / max_val; else rescale = 1.0; } } static int convert(char *in, mFILE *ofp, char *out, int format, int prec, int comp, int normalise) { Read *r; if (NULL == (r = read_reading(in, format))) { fprintf(stderr, "%s: failed to read\n", in); return 1; } if (normalise) { subtract_background(r); reset_max_called_height(r); rescale_heights(r); } add_comments(r, in, format); if (prec == 1) scale_trace8(r); if (comp != -1) set_compression_method(comp); if (0 != (mfwrite_reading(ofp, r, TT_SCF))) { fprintf(stderr, "%s: failed to write\n", out); read_deallocate(r); return 1; } read_deallocate(r); return 0; } void usage(void) { fprintf(stderr, "makeSCF [-8] [-2] [-3] [-s] [-compress mode] [-normalise]\n" " -(abi|alf|scf|any) input_name [-output output_name]\n" " or\n" "makeSCF [-8] [-2] [-3] [-s] [-compress mode] [-normalise]\n" " [-(abi|alf|scf|any)] input_name1 output_name1 ... " "input_nameN output_nameN \n"); exit(1); } int main(int argc, char **argv) { int format = TT_ANY, r, prec = 0, version = 3, silent = 0; int compress_mode = -1; char *inf = NULL; char *outf = NULL; mFILE *ofp = mstdout(); int normalise = 0; for (argc--, argv++; argc > 0; argc--, argv++) { if (strcmp(*argv, "-8") == 0) { prec = 1; } else if (strcmp(*argv, "-2") == 0) { version = 2; } else if (strcmp(*argv, "-3") == 0) { version = 3; } else if (strcmp(*argv, "-normalise") == 0) { normalise = 1; } else if (strcmp(*argv, "-s") == 0) { silent = 1; } else if (strcasecmp(*argv, "-abi") == 0) { format = TT_ABI; inf = *++argv; argc--; } else if (strcasecmp(*argv, "-alf") == 0) { format = TT_ALF; inf = *++argv; argc--; } else if (strcasecmp(*argv, "-scf") == 0) { format = TT_SCF; inf = *++argv; argc--; } else if (strcasecmp(*argv, "-ztr") == 0) { format = TT_ZTR; inf = *++argv; argc--; } else if (strcasecmp(*argv, "-any") == 0) { format = TT_ANY; inf = *++argv; argc--; } else if (strcasecmp(*argv, "-output") == 0) { outf = *++argv; argc--; } else if (strcasecmp(*argv, "-compress") == 0) { compress_mode = compress_str2int(*++argv); argc--; } else { break; } } /* if no args left than input file must have been specified */ if (!argc && !inf) usage(); /* if outfile set, then using original syntax, so don't expect any extra args */ if (argc && outf) usage(); if (!silent) { printf("makeSCF v3.06\n"); printf("Copyright (c) MRC Laboratory of Molecular Biology, 2001. All rights reserved.\n"); } set_scf_version(version); if(!argc) { /* original calling syntax */ if (outf) { ofp = mfopen(outf, "wb+"); if (NULL == ofp) { perror(outf); return 1; } } r = convert(inf, ofp, outf, format, prec, compress_mode, normalise); mfclose(ofp); return r; } /* else */ { /* new calling syntax, handling multiple files */ int result=0; for (; argc > 0; argc--, argv++) { if (inf) { /* got infile, so get outfile and process */ outf= *argv; ofp = mfopen(outf, "wb+"); if (NULL == ofp) { perror(outf); if(!result) result=1; continue; } r = convert(inf, ofp, outf, format, prec, compress_mode, normalise); mfclose(ofp); if(!result) /* keep track of the first error */ result=r; /* now need to get another infile */ inf=NULL; } else { /* need infile */ inf= *argv; } } return result; } } io_lib-1.14.6/progs/scf_dump.c0000644000031500020650000001747512354177665013111 00000000000000/* * Copyright (c) 2007, 2010 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * Copyright (c) 1994 MEDICAL RESEARCH COUNCIL * All rights reserved * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1 Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2 Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3 Neither the name of the MEDICAL RESEARCH COUNCIL, THE LABORATORY OF * MOLECULAR BIOLOGY nor the names of its contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * Copyright (c) Medical Research Council 1994. All rights reserved. * * Permission to use, copy, modify and distribute this software and its * documentation for any purpose is hereby granted without fee, provided that * this copyright and notice appears in all copies. * * This file was written by James Bonfield, Simon Dear, Rodger Staden, * as part of the Staden Package at the MRC Laboratory of Molecular * Biology, Hills Road, Cambridge, CB2 2QH, United Kingdom. * * MRC disclaims all warranties with regard to this software. */ #ifdef HAVE_CONFIG_H #include "io_lib_config.h" #endif #include #include int main(int argc, char **argv) { Scf *scf; int i; if (argc != 2) { fprintf(stderr, "Usage: scf_dump scf_filename\n"); return 1; } scf = read_scf(argv[1]); if (scf == NULL) { fprintf(stderr, "read_scf failed\n"); return 1; } printf("[Header]\n"); printf("%d\t# magic_number\n", scf->header.magic_number); printf("%d\t\t# samples\n", scf->header.samples); printf("%d\t\t# samples_offset\n", scf->header.samples_offset); printf("%d\t\t# bases\n", scf->header.bases); printf("%d\t\t# bases_left_clip\n", scf->header.bases_left_clip); printf("%d\t\t# bases_right_clip\n", scf->header.bases_right_clip); printf("%d\t\t# bases_offset\n", scf->header.bases_offset); printf("%d\t\t# comments_size\n", scf->header.comments_size); printf("%d\t\t# comments_offset\n", scf->header.comments_offset); printf("%.4s\t\t# version\n", scf->header.version); printf("%d\t\t# sample_size\n", scf->header.sample_size); printf("%d\t\t# code_set\n", scf->header.code_set); printf("%d\t\t# private_size\n", scf->header.private_size); printf("%d\t\t# private_offset\n", scf->header.private_offset); printf("%d\t\t# spare[0]\n", scf->header.spare[0]); printf("%d\t\t# spare[1]\n", scf->header.spare[1]); printf("%d\t\t# spare[2]\n", scf->header.spare[2]); printf("%d\t\t# spare[3]\n", scf->header.spare[3]); printf("%d\t\t# spare[4]\n", scf->header.spare[4]); printf("%d\t\t# spare[5]\n", scf->header.spare[5]); printf("%d\t\t# spare[6]\n", scf->header.spare[6]); printf("%d\t\t# spare[7]\n", scf->header.spare[7]); printf("%d\t\t# spare[8]\n", scf->header.spare[8]); printf("%d\t\t# spare[9]\n", scf->header.spare[9]); printf("%d\t\t# spare[10]\n", scf->header.spare[10]); printf("%d\t\t# spare[11]\n", scf->header.spare[11]); printf("%d\t\t# spare[12]\n", scf->header.spare[12]); printf("%d\t\t# spare[13]\n", scf->header.spare[13]); printf("%d\t\t# spare[14]\n", scf->header.spare[14]); printf("%d\t\t# spare[15]\n", scf->header.spare[15]); printf("%d\t\t# spare[16]\n", scf->header.spare[16]); printf("%d\t\t# spare[17]\n", scf->header.spare[17]); puts("\n[Bases]"); for (i = 0; i < scf->header.bases; i++) { printf("%c %05d %03d %03d %03d %03d %03d %03d %03d #%3d\n", scf->bases[i].base, scf->bases[i].peak_index, scf->bases[i].prob_A, scf->bases[i].prob_C, scf->bases[i].prob_G, scf->bases[i].prob_T, scf->bases[i].spare[0], scf->bases[i].spare[1], scf->bases[i].spare[2], i); } puts("\n[A_Trace]"); if (scf->header.sample_size == 1) { for (i = 0; i < scf->header.samples; i++) printf("%d\t#%5d\n", scf->samples.samples1[i].sample_A, i); } else { for (i = 0; i < scf->header.samples; i++) printf("%d\t#%5d\n", scf->samples.samples2[i].sample_A, i); } puts("\n[C_Trace]"); if (scf->header.sample_size == 1) { for (i = 0; i < scf->header.samples; i++) printf("%d\t#%5d\n", scf->samples.samples1[i].sample_C, i); } else { for (i = 0; i < scf->header.samples; i++) printf("%d\t#%5d\n", scf->samples.samples2[i].sample_C, i); } puts("\n[G_Trace]"); if (scf->header.sample_size == 1) { for (i = 0; i < scf->header.samples; i++) printf("%d\t#%5d\n", scf->samples.samples1[i].sample_G, i); } else { for (i = 0; i < scf->header.samples; i++) printf("%d\t#%5d\n", scf->samples.samples2[i].sample_G, i); } puts("\n[T_Trace]"); if (scf->header.sample_size == 1) { for (i = 0; i < scf->header.samples; i++) printf("%d\t#%5d\n", scf->samples.samples1[i].sample_T, i); } else { for (i = 0; i < scf->header.samples; i++) printf("%d\t#%5d\n", scf->samples.samples2[i].sample_T, i); } puts("\n[Comments]"); printf("%.*s\n", (int)scf->header.comments_size, scf->comments); scf_deallocate(scf); return 0; } io_lib-1.14.6/progs/scf_info.c0000644000031500020650000001163612354177665013070 00000000000000/* * Copyright (c) 2007, 2010 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * Copyright (c) 1994 MEDICAL RESEARCH COUNCIL * All rights reserved * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1 Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2 Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3 Neither the name of the MEDICAL RESEARCH COUNCIL, THE LABORATORY OF * MOLECULAR BIOLOGY nor the names of its contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * Copyright (c) Medical Research Council 1994. All rights reserved. * * Permission to use, copy, modify and distribute this software and its * documentation for any purpose is hereby granted without fee, provided that * this copyright and notice appears in all copies. * * This file was written by James Bonfield, Simon Dear, Rodger Staden, * as part of the Staden Package at the MRC Laboratory of Molecular * Biology, Hills Road, Cambridge, CB2 2QH, United Kingdom. * * MRC disclaims all warranties with regard to this software. */ #ifdef HAVE_CONFIG_H #include "io_lib_config.h" #endif #include #include int main(int argc, char **argv) { Scf *scf; if (argc != 2) { fprintf(stderr, "Usage: scf_info scf_filename\n"); return 1; } scf = read_scf(argv[1]); if (scf == NULL) { fprintf(stderr, "read_scf failed\n"); return 1; } printf("Version_number %.4s\n", scf->header.version); printf("Number_of_samples %d\n", scf->header.samples); printf("Samples_offset %d\n", scf->header.samples_offset); printf("Samples_size %d\n", scf->header.sample_size); printf("Number_of_bases %d\n", scf->header.bases); printf("Bases_offset %d\n", scf->header.bases_offset); printf("Comments_size %d\n", scf->header.comments_size); printf("Comments_offset %d\n", scf->header.comments_offset); printf("Left_clip %d\n", scf->header.bases_left_clip); printf("Right_clip %d\n", scf->header.bases_right_clip); printf("Code set %d\n", scf->header.code_set); scf_deallocate(scf); return 0; } io_lib-1.14.6/progs/scf_update.c0000644000031500020650000001124712354177665013415 00000000000000/* * Copyright (c) 2007, 2010 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * Author(s): James Bonfield * * Copyright (c) 1995-1996, 2001 MEDICAL RESEARCH COUNCIL * All rights reserved * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1 Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2 Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3 Neither the name of the MEDICAL RESEARCH COUNCIL, THE LABORATORY OF * MOLECULAR BIOLOGY nor the names of its contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * Copyright (c) Medical Research Council 1994. All rights reserved. * * Permission to use, copy, modify and distribute this software and its * documentation for any purpose is hereby granted without fee, provided that * this copyright and notice appears in all copies. * * This file was written by James Bonfield, Simon Dear, Rodger Staden, * as part of the Staden Package at the MRC Laboratory of Molecular * Biology, Hills Road, Cambridge, CB2 2QH, United Kingdom. * * MRC disclaims all warranties with regard to this software. */ #ifdef HAVE_CONFIG_H #include "io_lib_config.h" #endif #include #include #include #include /* * Update a v2.x SCF files to a v3.x SCF files. */ int main(int argc, char **argv) { Scf *scf; int version = 3; if (argc > 2 && strcmp(argv[1], "-v") == 0) { version = atoi(argv[2]); if (version != 2 && version != 3) { fprintf(stderr, "Please specify version 2 or version 3\n"); return 1; } argc-=2; argv+=2; } if (argc != 3) { fprintf(stderr, "Usage: scf_update [-v version] source destination\n"); return 1; } if (NULL == (scf = read_scf(argv[1]))) { perror(argv[1]); return 1; } set_scf_version(version); if (-1 == write_scf(scf, argv[2])) { perror(argv[2]); return 1; } scf_deallocate(scf); return 0; } io_lib-1.14.6/progs/scram_flagstat.c0000644000031500020650000002146112614126501014247 00000000000000/* * Copyright (c) 2013 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * Author: James Bonfield, Wellcome Trust Sanger Institute. 2013 */ #include #include #include #include #include #include #include #include #include #if defined(__MINGW32__) || defined(__FreeBSD__) || defined(__APPLE__) # include #endif #include #include static char *parse_format(char *str) { if (strcmp(str, "sam") == 0 || strcmp(str, "SAM") == 0) return ""; if (strcmp(str, "bam") == 0 || strcmp(str, "BAM") == 0) return "b"; if (strcmp(str, "cram") == 0 || strcmp(str, "CRAM") == 0) return "c"; fprintf(stderr, "Unrecognised file format '%s'\n", str); exit(1); } static char *detect_format(char *fn) { char *cp = strrchr(fn, '.'); if (!cp) return ""; if (strcmp(cp, ".sam") == 0 || strcmp(cp, ".SAM") == 0) return ""; if (strcmp(cp, ".bam") == 0 || strcmp(cp, ".BAM") == 0) return "b"; if (strcmp(cp, ".cram") == 0 || strcmp(cp, ".CRAM") == 0) return "c"; return ""; } static void usage(FILE *fp) { fprintf(fp, " -=- scram_flagstat -=- version %s\n", PACKAGE_VERSION); fprintf(fp, "Author: James Bonfield, Wellcome Trust Sanger Institute. 2013\n\n"); fprintf(fp, "Usage: scram_flagstat [options] [input_file]\n"); fprintf(fp, "Options:\n"); fprintf(fp, " -I format Set input format: \"bam\", \"sam\" or \"cram\".\n"); fprintf(fp, " -R range [Cram] Specifies the refseq:start-end range\n"); fprintf(fp, " -r ref.fa [Cram] Specifies the reference file.\n"); fprintf(fp, " -t N Use N threads (availability varies by format)\n"); } typedef struct { long long n_reads[2], n_mapped[2], n_pair_all[2], n_pair_map[2], n_pair_good[2]; long long n_sgltn[2], n_read1[2], n_read2[2]; long long n_dup[2]; long long n_diffchr[2], n_diffhigh[2]; } bam_flagstat_t; int main(int argc, char **argv) { scram_fd *in; bam_seq_t *s; char imode[10], *in_f = ""; int level = '\0'; // nul terminate string => auto level int c; char *ref_fn = NULL; int start, end, ignore_md5 = 0; char ref_name[1024] = {0}; bam_flagstat_t st; int nthreads = 1; int benchmark = 0; memset(&st, 0, sizeof(st)); /* Parse command line arguments */ while ((c = getopt(argc, argv, "hI:R:r:!t:b")) != -1) { switch (c) { case 'h': usage(stdout); return 0; case 'r': ref_fn = optarg; break; case 'I': in_f = parse_format(optarg); break; case 'R': { char *cp = strchr(optarg, ':'); if (cp) { *cp = 0; switch (sscanf(cp+1, "%d-%d", &start, &end)) { case 1: end = start; break; case 2: break; default: fprintf(stderr, "Malformed range format\n"); return 1; } } else { start = INT_MIN; end = INT_MAX; } strncpy(ref_name, optarg, 1023); break; } case '!': ignore_md5 = 1; break; case 't': nthreads = atoi(optarg); if (nthreads < 1) { fprintf(stderr, "Number of threads needs to be >= 1\n"); return 1; } break; case 'b': // Benchmark mode simply reads all fields in a SAM/BAM/CRAM // and discards them, testing pure read speed. benchmark = 1; break; case '?': fprintf(stderr, "Unrecognised option: -%c\n", optopt); usage(stderr); return 1; } } if (argc - optind > 2) { fprintf(stderr, "Usage: scramble [input_file [output_file]]\n"); return 1; } /* Open up input and output files */ sprintf(imode, "r%s%c", in_f, level); if (argc - optind > 0) { if (*in_f == 0) sprintf(imode, "r%s%c", detect_format(argv[optind]), level); if (!(in = scram_open(argv[optind], imode))) { fprintf(stderr, "Failed to open file %s\n", argv[optind]); return 1; } } else { if (!(in = scram_open("-", imode))) { fprintf(stderr, "Failed to open file %s\n", argv[optind]); return 1; } } if (!in->is_bam && ref_fn) cram_load_reference(in->c, ref_fn); if (nthreads > 1) if (scram_set_option(in, CRAM_OPT_NTHREADS, nthreads)) return 1; if (ignore_md5) { if (scram_set_option(in, CRAM_OPT_IGNORE_MD5, ignore_md5)) return 1; if (scram_set_option(in, CRAM_OPT_IGNORE_CHKSUM, ignore_md5)) return 1; } if (!benchmark) scram_set_option(in, CRAM_OPT_REQUIRED_FIELDS, SAM_FLAG | SAM_MAPQ | SAM_RNEXT); /* Support for sub-range queries, currently implemented for CRAM only */ if (*ref_name != 0) { cram_range r; int refid; if (in->is_bam) { fprintf(stderr, "Currently the -R option is only implemented for CRAM indices\n"); return 1; } cram_index_load(in->c, argv[optind]); refid = sam_hdr_name2ref(in->c->header, ref_name); if (refid == -1 && *ref_name != '*') { fprintf(stderr, "Unknown reference name '%s'\n", ref_name); return 1; } r.refid = refid; r.start = start; r.end = end; if (scram_set_option(in, CRAM_OPT_RANGE, &r)) return 1; } /* Do the actual file format conversion */ if (benchmark) { s = NULL; while (scram_get_seq(in, &s) >= 0); return scram_eof(in) ? 0 : 1; } s = NULL; while (scram_get_seq(in, &s) >= 0) { int w = s->flag & BAM_FQCFAIL ? 1 : 0; ++st.n_reads[w]; if (s->flag & BAM_FPAIRED) { ++st.n_pair_all[w]; if (s->flag & BAM_FPROPER_PAIR) ++st.n_pair_good[w]; if (s->flag & BAM_FREAD1) ++st.n_read1[w]; if (s->flag & BAM_FREAD2) ++st.n_read2[w]; if ((s->flag & BAM_FMUNMAP) && !(s->flag & BAM_FUNMAP)) ++st.n_sgltn[w]; if (!(s->flag & BAM_FUNMAP) && !(s->flag & BAM_FMUNMAP)) { ++st.n_pair_map[w]; if (s->mate_ref != s->ref) { ++st.n_diffchr[w]; if (s->map_qual >= 5) ++st.n_diffhigh[w]; } } } if (!(s->flag & BAM_FUNMAP)) ++st.n_mapped[w]; if (s->flag & BAM_FDUP) ++st.n_dup[w]; } if (s) free(s); if (!scram_eof(in)) return 1; if (scram_close(in)) return 1; printf("%lld + %lld in total (QC-passed reads + QC-failed reads)\n", st.n_reads[0], st.n_reads[1]); printf("%lld + %lld duplicates\n", st.n_dup[0], st.n_dup[1]); printf("%lld + %lld mapped (%.2f%%:%.2f%%)\n", st.n_mapped[0], st.n_mapped[1], (float)st.n_mapped[0] / st.n_reads[0] * 100.0, (float)st.n_mapped[1] / st.n_reads[1] * 100.0); printf("%lld + %lld paired in sequencing\n", st.n_pair_all[0], st.n_pair_all[1]); printf("%lld + %lld read1\n", st.n_read1[0], st.n_read1[1]); printf("%lld + %lld read2\n", st.n_read2[0], st.n_read2[1]); printf("%lld + %lld properly paired (%.2f%%:%.2f%%)\n", st.n_pair_good[0], st.n_pair_good[1], (float)st.n_pair_good[0] / st.n_pair_all[0] * 100.0, (float)st.n_pair_good[1] / st.n_pair_all[1] * 100.0); printf("%lld + %lld with itself and mate mapped\n", st.n_pair_map[0], st.n_pair_map[1]); printf("%lld + %lld singletons (%.2f%%:%.2f%%)\n", st.n_sgltn[0], st.n_sgltn[1], (float)st.n_sgltn[0] / st.n_pair_all[0] * 100.0, (float)st.n_sgltn[1] / st.n_pair_all[1] * 100.0); printf("%lld + %lld with mate mapped to a different chr\n", st.n_diffchr[0], st.n_diffchr[1]); printf("%lld + %lld with mate mapped to a different chr (mapQ>=5)\n", st.n_diffhigh[0], st.n_diffhigh[1]); return 0; } io_lib-1.14.6/progs/scram_merge.c0000644000031500020650000002360012614126501013536 00000000000000/* * Copyright (c) 2013 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * Author: James Bonfield, Wellcome Trust Sanger Institute. 2013 */ #include #include #include #include #include #include #include #include #include #if defined(__MINGW32__) || defined(__FreeBSD__) || defined(__APPLE__) # include #endif #include #include /* * Return 1 for compatible * 0 for incompatible */ static int hdr_compare(SAM_hdr *h1, SAM_hdr *h2) { int i; if (h1->nref != h2->nref) return 0; for (i = 0; i < h1->nref; i++) { if (strcmp(h1->ref[i].name, h2->ref[i].name) != 0) return 0; if (h1->ref[i].len != h2->ref[i].len) return 0; } return 1; } static char *parse_format(char *str) { if (strcmp(str, "sam") == 0 || strcmp(str, "SAM") == 0) return ""; if (strcmp(str, "bam") == 0 || strcmp(str, "BAM") == 0) return "b"; if (strcmp(str, "cram") == 0 || strcmp(str, "CRAM") == 0) return "c"; fprintf(stderr, "Unrecognised file format '%s'\n", str); exit(1); } static char *detect_format(char *fn) { char *cp = strrchr(fn, '.'); if (!cp) return ""; if (strcmp(cp, ".sam") == 0 || strcmp(cp, ".SAM") == 0) return ""; if (strcmp(cp, ".bam") == 0 || strcmp(cp, ".BAM") == 0) return "b"; if (strcmp(cp, ".cram") == 0 || strcmp(cp, ".CRAM") == 0) return "c"; return ""; } static void usage(FILE *fp) { fprintf(fp, " -=- scram_merge -=- version %s\n", PACKAGE_VERSION); fprintf(fp, "Author: James Bonfield, Wellcome Trust Sanger Institute. 2013\n\n"); fprintf(fp, "Usage: scram_merge [options] input_file ...\n"); fprintf(fp, "Options:\n"); fprintf(fp, " -I format Set input format: \"bam\", \"sam\" or \"cram\".\n"); fprintf(fp, " -O format Set output format: \"bam\", \"sam\" or \"cram\".\n"); fprintf(fp, " -1 to -9 Set zlib compression level.\n"); fprintf(fp, " -0 or -u No zlib compression.\n"); //fprintf(fp, " -v Verbose output.\n"); fprintf(fp, " -R range [Cram] Specifies the refseq:start-end range\n"); fprintf(fp, " -r ref.fa [Cram] Specifies the reference file.\n"); fprintf(fp, " -s integer [Cram] Sequences per slice, default %d.\n", SEQS_PER_SLICE); fprintf(fp, " -S integer [Cram] Slices per container, default %d.\n", SLICE_PER_CNT); fprintf(fp, " -V version [Cram] Specify the file format version to write (eg 1.1, 2.0)\n"); fprintf(fp, " -X [Cram] Embed reference sequence.\n"); } int main(int argc, char **argv) { scram_fd **in, *out; int n_input, i; bam_seq_t **s; char imode[10], *in_f = "", omode[10], *out_f = ""; int level = '\0'; // nul terminate string => auto level int c, verbose = 0; int s_opt = 0, S_opt = 0, embed_ref = 0; char *ref_fn = NULL; int start, end; char ref_name[1024] = {0}; refs_t *refs = NULL; int max_reads = -1; /* Parse command line arguments */ while ((c = getopt(argc, argv, "u0123456789hvs:S:V:r:XI:O:R:N:")) != -1) { switch (c) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': level = c; break; case 'u': level = '0'; break; case 'h': usage(stdout); return 0; case 'v': verbose++; break; case 's': s_opt = atoi(optarg); break; case 'S': S_opt = atoi(optarg); break; case 'V': cram_set_option(NULL, CRAM_OPT_VERSION, optarg); break; case 'r': ref_fn = optarg; break; case 'X': embed_ref = 1; break; case 'I': in_f = parse_format(optarg); break; case 'O': out_f = parse_format(optarg); break; case 'R': { char *cp = strchr(optarg, ':'); if (cp) { *cp = 0; switch (sscanf(cp+1, "%d-%d", &start, &end)) { case 1: end = start; break; case 2: break; default: fprintf(stderr, "Malformed range format\n"); return 1; } } else { start = INT_MIN; end = INT_MAX; } strncpy(ref_name, optarg, 1023); break; } case 'N': // For debugging max_reads = atoi(optarg); break; case '?': fprintf(stderr, "Unrecognised option: -%c\n", optopt); usage(stderr); return 1; } } /* Open output file */ sprintf(omode, "w%s%c", out_f, level); if (!(out = scram_open("-", omode))) { fprintf(stderr, "Failed to open bam file %s\n", argv[optind+1]); return 1; } /* Open multiple input files */ sprintf(imode, "r%s%c", in_f, level); n_input = argc - optind; if (!n_input) { fprintf(stderr, "No input files specified.\n"); return 1; } if (!(in = malloc(n_input * sizeof(*in)))) return 1; if (!(s = malloc(n_input * sizeof(*s)))) return 1; for (i = 0; i < n_input; i++, optind++) { s[i] = NULL; if (*in_f == 0) sprintf(imode, "r%s%c", detect_format(argv[optind]), level); if (!(in[i] = scram_open(argv[optind], imode))) { fprintf(stderr, "Failed to open bam file %s\n", argv[optind]); return 1; } if (i && !hdr_compare(scram_get_header(in[0]), scram_get_header(in[i]))) { fprintf(stderr, "Incompatible reference sequence list.\n"); fprintf(stderr, "Currently the @SQ lines need to be identical" " in all files.\n"); return 1; } if (!refs && scram_get_refs(in[i])) refs = scram_get_refs(in[i]); if (refs && scram_set_option(in[i], CRAM_OPT_SHARED_REF, refs)) return 1; /* Support for sub-range queries, currently implemented for CRAM only */ if (*ref_name != 0) { cram_range r; int refid; if (in[i]->is_bam) { fprintf(stderr, "Currently the -R option is only implemented for CRAM indices\n"); return 1; } cram_index_load(in[i]->c, argv[optind]); refid = sam_hdr_name2ref(in[i]->c->header, ref_name); if (refid == -1 && *ref_name != '*') { fprintf(stderr, "Unknown reference name '%s'\n", ref_name); return 1; } r.refid = refid; r.start = start; r.end = end; if (scram_set_option(in[i], CRAM_OPT_RANGE, &r)) return 1; } } /* Set any format specific options */ if (refs) scram_set_option(out, CRAM_OPT_SHARED_REF, refs); if (scram_set_option(out, CRAM_OPT_VERBOSITY, verbose)) return 1; if (s_opt) if (scram_set_option(out, CRAM_OPT_SEQS_PER_SLICE, s_opt)) return 1; if (S_opt) if (scram_set_option(out, CRAM_OPT_SLICES_PER_CONTAINER, S_opt)) return 1; if (embed_ref) if (scram_set_option(out, CRAM_OPT_EMBED_REF, embed_ref)) return 1; /* Copy header and refs from in to out, for writing purposes */ // FIXME: do proper merging of @PG lines // FIXME: track mapping of old PG aux name to new PG aux name per seq scram_set_header(out, sam_hdr_dup(scram_get_header(in[0]))); // Needs doing after loading the header. if (ref_fn) if (scram_set_option(out, CRAM_OPT_REFERENCE, ref_fn)) return 1; if (scram_get_header(in[0])) { if (scram_write_header(out)) return 1; } /* Do the actual file format conversion */ fprintf(stderr, "Opening and loading initial seqs\n"); for (i = 0; i < n_input; i++) { if (scram_get_seq(in[i], &s[i]) < 0) { if (scram_close(in[i])) return 1; in[i] = NULL; free(s[i]); continue; } } fprintf(stderr, "Merging...\n"); for (;;) { int64_t best_val = INT64_MAX; int best_j = 0, j; for (j = 0; j < n_input; j++) { bam_seq_t *b = s[j]; uint64_t x; if (!in[j]) continue; x = (((uint64_t)bam_ref(b))<<33) | (bam_pos(b)<<2) | (bam_strand(b)<<1) | !(bam_flag(b) & BAM_FREAD1); if (best_val > x) { best_val = x; best_j = j; } } if (best_val == INT64_MAX) { // all closed break; } if (-1 == scram_put_seq(out, s[best_j])) return 1; if (scram_get_seq(in[best_j], &s[best_j]) < 0) { if (scram_close(in[best_j])) return 1; in[best_j] = NULL; free(s[best_j]); } if (max_reads >= 0) if (--max_reads == 0) break; } for (i = 0; i < n_input; i++) { if (!in[i]) continue; scram_close(in[i]); if (s[i]) free(s[i]); } /* Finally tidy up and close files */ if (scram_close(out)) return 1; free(in); free(s); return 0; } io_lib-1.14.6/progs/scram_pileup.c0000644000031500020650000005464612545536330013763 00000000000000/* * Copyright (c) 2013 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * Author: James Bonfield, Wellcome Trust Sanger Institute. 2011-2013 * * A basic pileup command. * This needs a lot of work still and to be split into library + program. * For now we have all in one place. * * Compatibility wise it is not meant to be a full blown replacement for * samtools mpileup or even the old samtools pileup. Primarily it is a test * harness for the pileup_loop API code. * * Speed wise it is approaching double the performance of samtools mpileup * (with no extra arguments) when run on BAM. CRAM performance is approx 40% * slower than the BAM version. */ #include #include #include #include #include #include "scram_pileup.h" /* * START_WITH_DEL is the mode that Gap5 uses when building this. It prepends * all cigar strings with 1D and decrements the position by one. (And then * has code to reverse this operation in the pileup handler.) * * The reason for this is that it means reads starting with an insertion work. * Otherwise the inserted bases are silently lost. (Try it with "samtools * mpileup" and you can see it has the same issue.) * * However it's probably not want most people expect. */ //#define START_WITH_DEL /* -------------------------------------------------------------------------- * The pileup code itself. * * This consists of the external pileup_loop() function, which takes a * sam/bam samfile_t pointer and a callback function. The callback function * is called once per column of aligned data (so once per base in an * insertion). * * Current known issues. * 1) zero length matches, ie 2S2S cause failures. * 2) Insertions at starts of sequences get included in the soft clip, so * 2S2I2M is treated as if it's 4S2M * 3) From 1 and 2 above, 1S1I2S becomes 2S2S which fails. */ /* * Fast conversion from encoded SAM base nibble to a printable character */ static char tab[256][2]; static void init_tab(void) { int i, j; unsigned char b2; static int done = 0; if (done) return; for (i = 0; i < 16; i++) { for (j = 0; j < 16; j++) { b2 = (i<<4) | j; tab[b2][0] = "NACMGRSVTWYHKDBN"[i]; tab[b2][1] = "NACMGRSVTWYHKDBN"[j]; } } done = 1; } /* * Fetches the next base => the nth base at unpadded position pos. (Nth can * be greater than 0 if we have an insertion in this column). Do not call this * with pos/nth lower than the previous query, although higher is better. * (This allows it to be initialised at base 0.) * * Stores the result in base and also updates is_insert to indicate that * this sequence still has more bases in this position beyond the current * nth parameter. * * Returns 1 if a base was fetched * 0 if not (eg ran off the end of sequence) */ static int get_next_base(pileup_t *p, int pos, int nth, int *is_insert) { bam_seq_t *b = p->b; enum cigar_op op = p->cigar_op; if (p->first_del && op != BAM_CPAD) p->first_del = 0; *is_insert = 0; /* Find pos first */ while (p->pos < pos) { p->nth = 0; if (p->cigar_len == 0) { if (p->cigar_ind >= bam_cigar_len(b)) { p->eof = 1; return 0; } op=p->cigar_op = p->b_cigar[p->cigar_ind] & BAM_CIGAR_MASK; p->cigar_len = p->b_cigar[p->cigar_ind] >> BAM_CIGAR_SHIFT; p->cigar_ind++; } if ((op == BAM_CMATCH || op == BAM_CBASE_MATCH || op == BAM_CBASE_MISMATCH) && p->cigar_len <= pos - p->pos) { p->seq_offset += p->cigar_len; p->pos += p->cigar_len; p->cigar_len = 0; } else { switch (op) { case BAM_CMATCH: case BAM_CBASE_MATCH: case BAM_CBASE_MISMATCH: p->seq_offset++; /* Fall through */ case BAM_CDEL: case BAM_CREF_SKIP: p->pos++; p->cigar_len--; break; case BAM_CINS: case BAM_CSOFT_CLIP: p->seq_offset += p->cigar_len; /* Fall through */ case BAM_CPAD: case BAM_CHARD_CLIP: p->cigar_len = 0; break; default: fprintf(stderr, "Unhandled cigar_op %d\n", op); return -1; } } } /* Now at pos, find nth base */ while (p->nth < nth) { if (p->cigar_len == 0) { if (p->cigar_ind >= bam_cigar_len(b)) { p->eof = 1; return 0; /* off end of seq */ } op=p->cigar_op = p->b_cigar[p->cigar_ind] & BAM_CIGAR_MASK; p->cigar_len = p->b_cigar[p->cigar_ind] >> BAM_CIGAR_SHIFT; p->cigar_ind++; } switch (op) { case BAM_CMATCH: case BAM_CBASE_MATCH: case BAM_CBASE_MISMATCH: case BAM_CSOFT_CLIP: case BAM_CDEL: case BAM_CREF_SKIP: goto at_nth; /* sorry, but it's fast! */ case BAM_CINS: p->seq_offset++; /* Fall through */ case BAM_CPAD: p->cigar_len--; p->nth++; break; case BAM_CHARD_CLIP: p->cigar_len = 0; break; default: fprintf(stderr, "Unhandled cigar_op %d\n", op); return -1; } } at_nth: /* Fill out base & qual fields */ p->ref_skip = 0; if (p->nth < nth && op != BAM_CINS) { //p->base = '-'; p->base = '*'; p->padding = 1; if (p->seq_offset < b->len) p->qual = (p->qual + p->b_qual[p->seq_offset+1])/2; else p->qual = 0; } else { p->padding = 0; switch(op) { case BAM_CDEL: p->base = '*'; if (p->seq_offset+1 < b->len) p->qual = (p->qual + p->b_qual[p->seq_offset+1])/2; else p->qual = (p->qual + p->b_qual[p->seq_offset])/2; break; case BAM_CPAD: //p->base = '+'; p->base = '*'; if (p->seq_offset+1 < b->len) p->qual = (p->qual + p->b_qual[p->seq_offset+1])/2; else p->qual = (p->qual + p->b_qual[p->seq_offset])/2; break; case BAM_CREF_SKIP: p->base = '.'; p->qual = 0; /* end of fragment, but not sequence */ p->eof = p->eof ? 2 : 3; p->ref_skip = 1; break; default: if (p->seq_offset < b->len) { p->qual = p->b_qual[p->seq_offset]; /* * If you need to label inserted bases as different from * (mis)matching bases then this is where we'd make that change. * The reason could be to allow the consensus algorithm to easily * distinguish between reference bases and non-reference bases. * * Eg: * if (nth) * p->base = tolower(tab[p->b_seq[p->seq_offset/2]][p->seq_offset&1]); * else */ p->base = tab[p->b_seq[p->seq_offset/2]][p->seq_offset&1]; } else { p->base = 'N'; p->qual = 0xff; } break; } } /* Handle moving out of N (skip) into sequence again */ if (p->eof && p->base != '.') { p->start = 1; p->ref_skip = 1; p->eof = 0; } /* Starting with an indel needs a minor fudge */ if (p->start && p->cigar_op == BAM_CDEL) { p->first_del = 1; } /* Check if next op is an insertion of some sort */ if (p->cigar_len == 0) { if (p->cigar_ind < bam_cigar_len(b)) { op=p->cigar_op = p->b_cigar[p->cigar_ind] & BAM_CIGAR_MASK; p->cigar_len = p->b_cigar[p->cigar_ind] >> BAM_CIGAR_SHIFT; p->cigar_ind++; if (op == BAM_CREF_SKIP) { p->eof = 3; p->ref_skip = 1; } } else { p->eof = 1; } } switch (op) { case BAM_CPAD: case BAM_CINS: *is_insert = p->cigar_len; break; case BAM_CSOFT_CLIP: /* Last op 'S' => eof */ p->eof = p->cigar_ind == bam_cigar_len(b) ? 1 : 0; break; case BAM_CHARD_CLIP: p->eof = 1; break; default: break; } return 1; } /* * Loops through a set of supplied ranges producing columns of data. * When found, it calls func with clientdata as a callback. Func should * return 0 for success and non-zero for failure. seq_init() is called * on each new entry before we start processing it. It should return 0 or 1 * to indicate reject or accept status (eg to filter unmapped data). * If seq_init() returns -1 we abort the pileup_loop with an error. * seq_init may be NULL. * * Returns 0 on success * -1 on failure */ int pileup_loop(scram_fd *fp, int (*seq_init)(void *client_data, scram_fd *fp, pileup_t *p), int (*seq_add)(void *client_data, scram_fd *fp, pileup_t *p, int depth, int pos, int nth, int is_insert), void *client_data) { int ret = -1; pileup_t *phead = NULL, *p, *pfree = NULL, *last, *next, *ptail = NULL; pileup_t *pnew = NULL; int is_insert, nth = 0; int col = 0, r; int last_ref = -1; /* FIXME: allow for start/stop boundaries rather than consuming all data */ init_tab(); if (NULL == (pnew = calloc(1, sizeof(*p)))) return -1; do { bam_seq_t *b; int pos, last_in_contig; r = scram_next_seq(fp, &pnew->b); if (r == -1) { //fprintf(stderr, "bam_next_seq() failure on line %d\n", fp->line); if (!scram_eof(fp)) { fprintf(stderr, "bam_next_seq() failure.\n"); return -1; } } b = pnew->b; /* Force realloc */ //fp->bs = NULL; //fp->bs_size = 0; //r = samread(fp, pnew->b); if (r >= 0) { if (bam_flag(b) & BAM_FUNMAP) continue; if (b->ref == -1) { /* Another indicator for unmapped */ continue; } else if (b->ref == last_ref) { pos = b->pos+1; //printf("New seq at pos %d @ %d %s\n", pos, b->ref, // bam_name(b)); last_in_contig = 0; } else { //printf("New ctg at pos %d @ %d\n",b->pos+1,b->ref); pos = (b->pos > col ? b->pos : col)+1; last_in_contig = 1; } } else { last_in_contig = 1; pos = col+1; } if (col > pos) { fprintf(stderr, "BAM/SAM file is not sorted by position. " "Aborting\n"); return -1; } /* Process data between the last column and our latest addition */ while (col < pos && phead) { int v, ins, depth = 0; //printf("Col=%d pos=%d nth=%d\n", col, pos, nth); /* Pileup */ is_insert = 0; for (p = phead; p; p = p->next) { if (!get_next_base(p, col, nth, &ins)) p->eof = 1; if (is_insert < ins) is_insert = ins; depth++; } /* Call our function on phead linked list */ #ifdef START_WITH_DEL v = seq_add(client_data, fp, phead, depth, col-1, nth, is_insert); #else v = seq_add(client_data, fp, phead, depth, col, nth, is_insert); #endif /* Remove dead seqs */ for (p = phead, last = NULL; p; p = next) { next = p->next; p->start = 0; if (p->eof == 1) { if (last) last->next = p->next; else phead = p->next; p->next = pfree; pfree = p; //printf("Del seq %s at pos %d\n", bam_name(p->b), col); } else { last = p; } } if ((ptail = last) == NULL) ptail = phead; if (v == 1) break; /* early abort */ if (v != 0) goto error; /* Next column */ if (is_insert) { nth++; } else { nth = 0; col++; } /* Special case for the last sequence in a contig */ if (last_in_contig && phead) pos++; } /* May happen if we have a hole in the contig */ col = pos; /* New contig */ if (b && b->ref != last_ref) { last_ref = b->ref; pos = b->pos+1; nth = 0; col = pos; } /* * Add this seq. * Note: cigars starting with I or P ops (eg 2P3I10M) mean we have * alignment instructions that take place before the designated * starting location listed in the SAM file. They won't get included * in the callback function until they officially start, which is * already too late. * * So to workaround this, we prefix all CIGAR with 1D, move the * position by 1bp, and then force the callback code to remove * leaving pads (either P or D generated). * * Ie it's a level 10 hack! */ if (r >= 0) { p = pnew; p->next = NULL; p->cd = NULL; p->start = 1; p->eof = 0; #ifdef START_WITH_DEL p->pos = pos-1; p->cigar_ind = 0; p->b_cigar = bam_cigar(p->b); if ((p->b_cigar[0] & BAM_CIGAR_MASK) == BAM_CHARD_CLIP) { p->cigar_len = p->b_cigar[0] >> BAM_CIGAR_SHIFT; p->cigar_op = BAM_CHARD_CLIP; if ((p->b_cigar[1] & BAM_CIGAR_MASK) == BAM_CSOFT_CLIP) { /* xHxS... => xHxS1D... */ p->b_cigar[0] = p->b_cigar[1]; p->b_cigar[1] = (1 << BAM_CIGAR_SHIFT) | BAM_CDEL; } else { /* xH... => xH1D... */ p->b_cigar[0] = (1 << BAM_CIGAR_SHIFT) | BAM_CDEL; } } else { if ((p->b_cigar[0] & BAM_CIGAR_MASK) == BAM_CSOFT_CLIP) { /* xS... => xS1D... */ p->cigar_len = p->b_cigar[0] >> BAM_CIGAR_SHIFT; p->cigar_op = BAM_CSOFT_CLIP; p->b_cigar[0] = (1 << BAM_CIGAR_SHIFT) | BAM_CDEL; } else { /* ... => 1D... */ p->cigar_len = 1; /* was 0 */ p->cigar_op = BAM_CDEL; /* was 'X' */ } } p->seq_offset = -1; p->first_del = 1; #else p->pos = pos-1; p->cigar_ind = 0; p->b_cigar = bam_cigar(p->b); p->cigar_len = 0; p->cigar_op = -1; p->seq_offset = -1; p->first_del = 0; #endif p->b_strand = bam_strand(p->b) ? 1 : 0; p->b_qual = (uc *)bam_qual(p->b); p->b_seq = (uc *)bam_seq(p->b); if (seq_init) { int v; v = seq_init(client_data, fp, p); if (v == -1) return -1; if (v == 1) { /* Keep this seq */ if (phead) { ptail->next = p; } else { phead = p; } ptail = p; } else { /* Push back on free list */ p->next = pfree; pfree = p; } } else { if (phead) ptail->next = p; else phead = p; ptail = p; } /* Allocate the next pileup rec */ if (pfree) { pnew = pfree; pfree = pfree->next; } else { if (NULL == (pnew = calloc(1, sizeof(*pnew)))) goto error; } } } while (r >= 0); ret = 0; error: if (pnew) { free(pnew->b); free(pnew); } /* Tidy up */ for (p = pfree; p; p = next) { next = p->next; free(p->b); free(p); } return ret; } /* -------------------------------------------------------------------------- * Example usage of the above pileup code */ #include #include char strand_char[2][256]; void strand_init(void) { int i; for (i = 0; i < 256; i++) { strand_char[0][i] = toupper((unsigned char)i); strand_char[1][i] = tolower((unsigned char)i); } } /* * Used to delay emitting pileup lines around insertions, so we can * stack multiple bases together. */ typedef struct { int alloc; char *base; // first base call int *seq_offset; // first seq_offset int *seq_len; // length of insertion } sam_pileup_t; static int sam_pileup(void *cd_v, scram_fd *fp, pileup_t *p, int depth, int pos, int nth, int is_insert) { static unsigned char *seq = NULL, *qual = NULL, *buf = NULL; static size_t seq_alloc = 0, buf_alloc = 0; static int max_depth = 0; unsigned char *sp, *qp, *cp; int ref; sam_pileup_t *cd = (sam_pileup_t *)cd_v; size_t buf_len; if (max_depth < depth) { max_depth = depth; seq = realloc(seq, seq_alloc = max_depth*2); qual = realloc(qual, max_depth); //buf = realloc(buf, max_depth*2+1000); if (!seq || !qual) return -1; } sp = seq; qp = qual; cp = buf; if (!p) return 0; if (is_insert) { pileup_t *p_orig = p; int i; if (nth == 0) { /* Reference position pos with is_insert inserted bases to come */ if (cd->alloc < depth) { cd->alloc = depth; cd->base = realloc(cd->base, cd->alloc * sizeof(*cd->base)); cd->seq_offset = realloc(cd->seq_offset, cd->alloc * sizeof(*cd->seq_offset)); cd->seq_len = realloc(cd->seq_len, cd->alloc * sizeof(*cd->seq_len)); } /* * FIXME: This assumes that the number of entries in the p list * here matches the number of entries in the p list when is_inser * becomes 0 (ie the last base of the insert). * * Given that sequences can end mid-way through an insert or * even start mid-way, this assumption is false. */ for (i = 0; p; p = p->next, i++) { cd->base[i] = strand_char[p->b_strand][(uc)p->base]; cd->seq_offset[i] = p->seq_offset+1; cd->seq_len[i] = 0; } p = p_orig; } else { for (i = 0; p; p = p->next, i++) if (p->base != '*') cd->seq_len[i]++; } p = p_orig; return 0; } ref = p->b->ref; if (nth) { int n; for (n = 0; p; p = p->next, n++) { int i, j; uint8_t *b_seq = (uint8_t *)bam_seq(p->b); while ((sp - seq + 5 + cd->seq_len[n]) > seq_alloc) { ptrdiff_t d = sp - seq; seq = realloc(seq, seq_alloc*=2); sp = seq + d; } if(p->base != '*') cd->seq_len[n]++; if (p->start) { *sp++ = '^'; *sp++ = MIN(p->b->map_qual,93) + '!'; } *sp++ = cd->base[n]; if (cd->seq_len[n]) { *sp++ = '+'; sp = append_int(sp, cd->seq_len[n]); for (i = cd->seq_offset[n], j = 0; j < cd->seq_len[n]; i++, j++) { uc call = bam_nt16_rev_table[bam_seqi(b_seq, i)]; *sp++ = strand_char[bam_strand(p->b)][call]; } } if (p->eof) *sp++ = '$'; *qp++ = MIN(p->qual,93) + '!'; } } else { for (; p; p = p->next) { while ((sp - seq + 4) > seq_alloc) { ptrdiff_t d = sp - seq; seq = realloc(seq, seq_alloc*=2); sp = seq + d; } if (p->start) { *sp++ = '^'; *sp++ = MIN(p->b->map_qual,93) + '!'; } *sp++ = strand_char[p->b_strand][(uc)p->base]; //*sp++ = strand_char[bam_strand(p->b)][p->base]; if (p->eof) *sp++ = '$'; *qp++ = MIN(p->qual,93) + '!'; } } /* Equivalent to the printf below, but faster */ buf_len = strlen(scram_get_header(fp)->ref[ref].name) + 1 // name + 10 + 1 // pos + 1 + 1 // base + 10 + 1 // depth + sp - seq + 1 // seq + qp - qual + 1; // qual if (buf_len > buf_alloc) buf = realloc(buf, buf_alloc = buf_len); cp = buf; strcpy((char *) cp, scram_get_header(fp)->ref[ref].name); cp += strlen((char *) cp); *cp++ = '\t'; cp = append_int(cp, pos); *cp++ = '\t'; *cp++ = 'N'; *cp++ = '\t'; cp = append_int(cp, depth); *cp++ = '\t'; memcpy(cp, seq, sp-seq); cp += sp-seq; *cp++ = '\t'; memcpy(cp, qual, qp-qual); cp += qp-qual; *cp++ = '\0'; puts((char *) buf); //*sp++ = 0; //*qp++ = 0; //printf("ref\t%d+%d\tN\t%d\t%s\t%s\n", pos, nth, depth, seq, qual); return 0; } static int basic_pileup(void *cd, scram_fd *fp, pileup_t *p, int depth, int pos, int nth, int is_insert) { static unsigned char *seq = NULL, *qual = NULL, *buf = NULL; static int max_depth = 0; unsigned char *qp, *cp, *rp; int ref; if (max_depth < depth) { max_depth = depth; seq = realloc(seq, max_depth*3); qual = realloc(qual, max_depth); buf = realloc(buf, max_depth*2+1000); if (!seq || !qual || !buf) return -1; } qp = qual; cp = buf; if (!p) return 0; /* Ref, pos, depth */ ref = p->b->ref; rp = (unsigned char *) scram_get_header(fp)->ref[ref].name; while ((*cp++ = *rp++)) ; cp--; *cp++ = '\t'; cp = append_int(cp, pos); *cp++ = '+'; cp = append_int(cp, nth); *cp++ = '\t'; *cp++ = 'N'; *cp++ = '\t'; cp = append_int(cp, depth); *cp++ = '\t'; /* Seq + qual at predetermined offsets */ qp = cp + depth + 1; for (; p; p = p->next) { *cp++ = p->base; *qp++ = MIN(p->qual,93) + '!'; } *cp++ = '\t'; *qp++ = '\0'; puts((char *) buf); return 0; } static int depth_pileup(void *cd, scram_fd *fp, pileup_t *p, int depth, int pos, int nth, int is_insert) { unsigned char buf[1024], *cp = buf, *rp; if (nth) return 0; rp = (unsigned char *) scram_get_header(fp)->ref[p->b->ref].name; while ((*cp++ = *rp++)) ; cp[-1] = '\t'; cp = append_int(cp, pos); *cp++= '\t'; cp = append_int(cp, depth); *cp++ = '\0'; puts((char *) buf); return 0; } int main(int argc, char **argv) { scram_fd *fp; sam_pileup_t *p; int mode = 0; if (argc < 2) { fprintf(stderr, "Usage: scram_pileup [options] filename.{sam,bam,cram}\n"); fprintf(stderr, "Options:\n"); fprintf(stderr, " -5 Gap5 pileup format.\n"); fprintf(stderr, " -d Depth format.\n"); fprintf(stderr, " (otherwise) Samtools pileup format.\n"); fprintf(stderr, "\n\nNOTE: This program is still under development " "and should be considered a proof\nof concept only.\n"); return 1; } if (argc >= 2 && strcmp(argv[1], "-5") == 0) { mode = '5'; argc--; argv++; } if (argc >= 2 && strcmp(argv[1], "-d") == 0) { mode = 'd'; argc--; argv++; } if (argc != 2) { fprintf(stderr, "sam_pileup filename\n"); return 1; } strand_init(); fp = scram_open(argv[1], "r"); if (!fp) { perror(argv[1]); return 1; } if (!(p = calloc(1, sizeof(*p)))) return 1; switch(mode) { case '5': pileup_loop(fp, NULL, basic_pileup, NULL); break; case 'd': pileup_loop(fp, NULL, depth_pileup, NULL); break; default: pileup_loop(fp, NULL, sam_pileup, p); break; } if (p) free(p); if (0 != scram_close(fp)) return 1; return 0; } io_lib-1.14.6/progs/scram_pileup.h0000644000031500020650000000625512354177665013773 00000000000000/* * Copyright (c) 2013 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef _PILEUP_H_ #define _PILEUP_H_ #include "io_lib/scram.h" typedef struct pileup { struct pileup *next; // A link list, for active seqs void *cd; // General purpose per-seq client-data bam_seq_t *b; // Bam entry associated with struct unsigned char *b_qual;// cached bam_qual unsigned char *b_seq; // cached bam_seq uint32_t *b_cigar; // cached bam_cigar int b_strand; // 0 => fwd, 1 => rev int pos; // Current unpadded position in seq int nth; // nth base at unpadded position 'pos' int seq_offset; // Current base position in s->seq[] array. int cigar_ind; // Current location in s->alignment cigar str int cigar_op; // Current cigar operation int cigar_len; // Remaining length of this cigar op int first_del; // Used when first base is a deletion int eof; // True if this sequence has finished int qual; // Current qual (for active seq only) char base; // Current base (for active seq only) char start; // True if this is a new sequence char ref_skip; // True if the cause of eof or start is cigar N char padding; // True if the base was added due to another seq } pileup_t; int pileup_loop(scram_fd *fp, int (*seq_init)(void *client_data, scram_fd *fp, pileup_t *p), int (*seq_add)(void *client_data, scram_fd *fp, pileup_t *p, int depth, int pos, int nth, int is_insert), void *client_data); #endif io_lib-1.14.6/progs/scram_test.c0000644000031500020650000002003512614126501013415 00000000000000/* * Copyright (c) 2013 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * Author: James Bonfield, Wellcome Trust Sanger Institute. 2013 */ #include #include #include #include #include #include #include #include #include #if defined(__MINGW32__) || defined(__FreeBSD__) || defined(__APPLE__) # include #endif #include #include static char *parse_format(char *str) { if (strcmp(str, "sam") == 0 || strcmp(str, "SAM") == 0) return ""; if (strcmp(str, "bam") == 0 || strcmp(str, "BAM") == 0) return "b"; if (strcmp(str, "cram") == 0 || strcmp(str, "CRAM") == 0) return "c"; fprintf(stderr, "Unrecognised file format '%s'\n", str); exit(1); } static char *detect_format(char *fn) { char *cp = strrchr(fn, '.'); if (!cp) return ""; if (strcmp(cp, ".sam") == 0 || strcmp(cp, ".SAM") == 0) return ""; if (strcmp(cp, ".bam") == 0 || strcmp(cp, ".BAM") == 0) return "b"; if (strcmp(cp, ".cram") == 0 || strcmp(cp, ".CRAM") == 0) return "c"; return ""; } static void usage(FILE *fp) { fprintf(fp, " -=- scram_flagstat -=- version %s\n", PACKAGE_VERSION); fprintf(fp, "Author: James Bonfield, Wellcome Trust Sanger Institute. 2013\n\n"); fprintf(fp, "Usage: scram_flagstat [options] [input_file]\n"); fprintf(fp, "Options:\n"); fprintf(fp, " -I format Set input format: \"bam\", \"sam\" or \"cram\".\n"); fprintf(fp, " -R range [Cram] Specifies the refseq:start-end range\n"); fprintf(fp, " -r ref.fa [Cram] Specifies the reference file.\n"); fprintf(fp, " -t N Use N threads (availability varies by format)\n"); } typedef struct { long long n_reads[2], n_mapped[2], n_pair_all[2], n_pair_map[2], n_pair_good[2]; long long n_sgltn[2], n_read1[2], n_read2[2]; long long n_dup[2]; long long n_diffchr[2], n_diffhigh[2]; } bam_flagstat_t; int main(int argc, char **argv) { scram_fd *in; bam_seq_t *s; char imode[10], *in_f = ""; int level = '\0'; // nul terminate string => auto level int c; char *ref_fn = NULL; int start, end, ignore_md5 = 0; char ref_name[1024] = {0}; bam_flagstat_t st; int nthreads = 1; int col = SAM_FLAG, req = 0; memset(&st, 0, sizeof(st)); /* Parse command line arguments */ while ((c = getopt(argc, argv, "hI:R:r:!t:c:C:")) != -1) { switch (c) { case 'h': usage(stdout); return 0; case 'r': ref_fn = optarg; break; case 'I': in_f = parse_format(optarg); break; case 'R': { char *cp = strchr(optarg, ':'); if (cp) { *cp = 0; switch (sscanf(cp+1, "%d-%d", &start, &end)) { case 1: end = start; break; case 2: break; default: fprintf(stderr, "Malformed range format\n"); return 1; } } else { start = INT_MIN; end = INT_MAX; } strncpy(ref_name, optarg, 1023); break; } case '!': ignore_md5 = 1; break; case 't': nthreads = atoi(optarg); if (nthreads < 1) { fprintf(stderr, "Number of threads needs to be >= 1\n"); return 1; } break; case 'c': req = col = strtol(optarg, NULL, 0); break; case 'C': req = strtol(optarg, NULL, 0); break; case '?': fprintf(stderr, "Unrecognised option: -%c\n", optopt); usage(stderr); return 1; } } if (argc - optind > 2) { fprintf(stderr, "Usage: scramble [input_file [output_file]]\n"); return 1; } /* Open up input and output files */ sprintf(imode, "r%s%c", in_f, level); if (argc - optind > 0) { if (*in_f == 0) sprintf(imode, "r%s%c", detect_format(argv[optind]), level); if (!(in = scram_open(argv[optind], imode))) { fprintf(stderr, "Failed to open file %s\n", argv[optind]); return 1; } } else { if (!(in = scram_open("-", imode))) { fprintf(stderr, "Failed to open file %s\n", argv[optind]); return 1; } } if (!in->is_bam && ref_fn) cram_load_reference(in->c, ref_fn); if (nthreads > 1) if (scram_set_option(in, CRAM_OPT_NTHREADS, nthreads)) return 1; if (ignore_md5) if (scram_set_option(in, CRAM_OPT_IGNORE_MD5, ignore_md5)) return 1; scram_set_option(in, CRAM_OPT_REQUIRED_FIELDS, req); /* Support for sub-range queries, currently implemented for CRAM only */ if (*ref_name != 0) { cram_range r; int refid; if (in->is_bam) { fprintf(stderr, "Currently the -R option is only implemented for CRAM indices\n"); return 1; } cram_index_load(in->c, argv[optind]); refid = sam_hdr_name2ref(in->c->header, ref_name); if (refid == -1 && *ref_name != '*') { fprintf(stderr, "Unknown reference name '%s'\n", ref_name); return 1; } r.refid = refid; r.start = start; r.end = end; if (scram_set_option(in, CRAM_OPT_RANGE, &r)) return 1; } /* Do the actual file format conversion */ s = NULL; while (scram_get_seq(in, &s) >= 0) { if (col & SAM_QNAME) printf("Name:\t%.*s\n", bam_name_len(s), bam_name(s)); if (col & SAM_FLAG) printf("Flag:\t%d\n", bam_flag(s)); if (col & SAM_RNAME) printf("Ref:\t%d\n", bam_ref(s)); if (col & SAM_POS) printf("Pos:\t%d\n", bam_pos(s)); if (col & SAM_MAPQ) printf("MapQ:\t%d\n", bam_map_qual(s)); if (col & SAM_CIGAR) { int i; uint32_t *cig = bam_cigar(s); printf("Cigar:\t"); for (i = 0; i < bam_cigar_len(s); i++) printf("%d%c", cig[i]>>4, "MIDNSHP=X"[cig[i]&0xf]); putchar('\n'); } if (col & SAM_RNEXT) printf("Rnext:\t%d\n", bam_mate_ref(s)); if (col & SAM_PNEXT) printf("Pnext:\t%d\n", bam_mate_pos(s)); if (col & SAM_TLEN) printf("Tlen:\t%d\n", bam_ins_size(s)); if (col & SAM_SEQ) { unsigned char *seq = (unsigned char *) bam_seq(s); int i; printf("Seq:\t"); for (i = 0; i < bam_seq_len(s); i++) putchar("=ACMGRSVTWYHKDBN"[i&1 ? seq[i/2]&15 : seq[i/2]>>4]); putchar('\n'); } if (col & SAM_QUAL) { char *qual = bam_qual(s); int i; printf("Qual:\t"); for (i = 0; i < bam_seq_len(s); i++) putchar(qual[i]+'!'); putchar('\n'); } if (col & SAM_AUX) { char *aux = bam_aux(s); int i, aux_size = ((char *)s + bam_blk_size(s)) - aux; printf("aux:\t"); for (i = 0; i < aux_size; i++) printf("%02x", aux[i]); putchar('\n'); } } if (s) free(s); if (!scram_eof(in)) return 1; if (scram_close(in)) return 1; return 0; } io_lib-1.14.6/progs/scramble.c0000644000031500020650000003235312614126501013047 00000000000000/* * Copyright (c) 2013 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * Author: James Bonfield, Wellcome Trust Sanger Institute. 2013 */ #ifdef HAVE_CONFIG_H #include "io_lib_config.h" #endif #include #include #include #include #include #include #include #include #include #if defined(__MINGW32__) || defined(__FreeBSD__) || defined(__APPLE__) # include #endif #include #include static char *parse_format(char *str) { if (strcmp(str, "sam") == 0 || strcmp(str, "SAM") == 0) return "s"; if (strcmp(str, "bam") == 0 || strcmp(str, "BAM") == 0) return "b"; if (strcmp(str, "cram") == 0 || strcmp(str, "CRAM") == 0) return "c"; fprintf(stderr, "Unrecognised file format '%s'\n", str); exit(1); } static char *detect_format(char *fn) { char *cp = strrchr(fn, '.'); if (!cp) return ""; if (strcmp(cp, ".sam") == 0 || strcmp(cp, ".SAM") == 0) return "s"; if (strcmp(cp, ".bam") == 0 || strcmp(cp, ".BAM") == 0) return "b"; if (strcmp(cp, ".cram") == 0 || strcmp(cp, ".CRAM") == 0) return "c"; return ""; } static void usage(FILE *fp) { fprintf(fp, " -=- sCRAMble -=- version %s\n", PACKAGE_VERSION); fprintf(fp, "Author: James Bonfield, Wellcome Trust Sanger Institute. 2013-2015\n\n"); fprintf(fp, "Usage: scramble [options] [input_file [output_file]]\n"); fprintf(fp, "Options:\n"); fprintf(fp, " -I format Set input format: \"bam\", \"sam\" or \"cram\".\n"); fprintf(fp, " -O format Set output format: \"bam\", \"sam\" or \"cram\".\n"); fprintf(fp, " -1 to -9 Set compression level.\n"); fprintf(fp, " -0 or -u No compression.\n"); //fprintf(fp, " -v Verbose output.\n"); fprintf(fp, " -H [SAM] Do not print header\n"); fprintf(fp, " -R range [Cram] Specifies the refseq:start-end range\n"); fprintf(fp, " -r ref.fa [Cram] Specifies the reference file.\n"); fprintf(fp, " -b integer [Cram] Max. bases per slice, default %d.\n", BASES_PER_SLICE); fprintf(fp, " -s integer [Cram] Sequences per slice, default %d.\n", SEQS_PER_SLICE); fprintf(fp, " -S integer [Cram] Slices per container, default %d.\n", SLICE_PER_CNT); fprintf(fp, " -V version [Cram] Specify the file format version to write (eg 1.1, 2.0)\n"); fprintf(fp, " -e [Cram] Embed reference sequence.\n"); fprintf(fp, " -x [Cram] Non-reference based encoding.\n"); fprintf(fp, " -M [Cram] Use multiple references per slice.\n"); fprintf(fp, " -m [Cram] Generate MD and NM tags.\n"); #ifdef HAVE_LIBBZ2 fprintf(fp, " -j [Cram] Also compress using bzip2.\n"); #endif #ifdef HAVE_LIBLZMA fprintf(fp, " -Z [Cram] Also compress using lzma.\n"); #endif fprintf(fp, " -t N Use N threads (availability varies by format)\n"); fprintf(fp, " -B Enable Illumina 8 quality-binning system (lossy)\n"); fprintf(fp, " -! Disable all checking of checksums\n"); } int main(int argc, char **argv) { scram_fd *in, *out; bam_seq_t *s; char imode[10], *in_f = "", omode[10], *out_f = ""; int level = '\0'; // nul terminate string => auto level int c, verbose = 0; int s_opt = 0, S_opt = 0, embed_ref = 0, ignore_md5 = 0, decode_md = 0; char *ref_fn = NULL; int start, end, multi_seq = -1, no_ref = 0; int use_bz2 = 0, use_rans = 0, use_lzma = 0; char ref_name[1024] = {0}; refs_t *refs; int nthreads = 1; t_pool *p = NULL; int max_reads = -1; enum quality_binning binning = BINNING_NONE; int sam_fields = 0; // all int header = 1; int bases_per_slice = 0; /* Parse command line arguments */ while ((c = getopt(argc, argv, "u0123456789hvs:S:V:r:xXeI:O:R:!MmjJZt:BN:F:Hb:")) != -1) { switch (c) { case 'F': sam_fields = strtol(optarg, NULL, 0); // undocumented for testing break; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': level = c; break; case 'u': level = '0'; break; case 'h': usage(stdout); return 0; case 'H': header = 0; break; case 'v': verbose++; break; case 's': s_opt = atoi(optarg); bases_per_slice = s_opt * 500; // guesswork... break; case 'b': bases_per_slice = atoi(optarg); break; case 'S': S_opt = atoi(optarg); break; case 'm': decode_md = 1; break; case 'V': if (cram_set_option(NULL, CRAM_OPT_VERSION, optarg)) return 1; break; case 'r': ref_fn = optarg; break; case 'X': fprintf(stderr, "-X is deprecated in favour of -e.\n"); case 'e': embed_ref = 1; break; case 'x': no_ref = 1; break; case 'I': in_f = parse_format(optarg); break; case 'O': out_f = parse_format(optarg); break; case 'R': { char *cp = strchr(optarg, ':'); if (cp) { *cp = 0; switch (sscanf(cp+1, "%d-%d", &start, &end)) { case 1: end = start; break; case 2: break; default: fprintf(stderr, "Malformed range format\n"); return 1; } } else { start = INT_MIN; end = INT_MAX; } strncpy(ref_name, optarg, 1023); break; } case '!': ignore_md5 = 1; break; case 'M': multi_seq = 1; break; case 'j': #ifdef HAVE_LIBBZ2 use_bz2 = 1; #else fprintf(stderr, "Warning: bzip2 support is not compiled into this" " version.\nPlease recompile.\n"); #endif break; case 'J': use_rans = 1; break; case 'Z': #ifdef HAVE_LIBLZMA use_lzma = 1; #else fprintf(stderr, "Warning: lzma support is not compiled into this" " version.\nPlease recompile.\n"); #endif break; case 't': nthreads = atoi(optarg); if (nthreads < 1) { fprintf(stderr, "Number of threads needs to be >= 1\n"); return 1; } break; case 'B': binning = BINNING_ILLUMINA; break; case 'N': // For debugging max_reads = atoi(optarg); break; case '?': fprintf(stderr, "Unrecognised option: -%c\n", optopt); usage(stderr); return 1; } } if (argc - optind > 2) { fprintf(stderr, "Usage: scramble [input_file [output_file]]\n"); return 1; } /* Open up input and output files */ sprintf(imode, "r%s%c", in_f, level); if (argc - optind > 0) { if (*in_f == 0) sprintf(imode, "r%s%c", detect_format(argv[optind]), level); if (!(in = scram_open(argv[optind], imode))) { fprintf(stderr, "Failed to open file %s\n", argv[optind]); return 1; } } else { if (!(in = scram_open("-", imode))) { fprintf(stderr, "Failed to open file %s\n", argv[optind]); return 1; } } if (!in->is_bam && ref_fn) { cram_load_reference(in->c, ref_fn); if (!in->c->refs && !embed_ref) { fprintf(stderr, "Unable to find an appropriate reference.\n" "Please specify a valid reference with " "-r ref.fa option.\n"); return 1; } } sprintf(omode, "w%s%c", out_f, level); if (argc - optind > 1) { if (*out_f == 0) sprintf(omode, "w%s%c", detect_format(argv[optind+1]), level); if (!(out = scram_open(argv[optind+1], omode))) { fprintf(stderr, "Failed to open file %s\n", argv[optind+1]); return 1; } } else { if (!(out = scram_open("-", omode))) { fprintf(stderr, "Failed to open file %s\n", argv[optind+1]); return 1; } } /* Set any format specific options */ scram_set_refs(out, refs = scram_get_refs(in)); scram_set_option(out, CRAM_OPT_VERBOSITY, verbose); if (s_opt) if (scram_set_option(out, CRAM_OPT_SEQS_PER_SLICE, s_opt)) return 1; if (S_opt) if (scram_set_option(out, CRAM_OPT_SLICES_PER_CONTAINER, S_opt)) return 1; if (bases_per_slice) if (scram_set_option(out, CRAM_OPT_BASES_PER_SLICE, bases_per_slice)) return 1; if (embed_ref) if (scram_set_option(out, CRAM_OPT_EMBED_REF, embed_ref)) return 1; if (use_bz2) if (scram_set_option(out, CRAM_OPT_USE_BZIP2, use_bz2)) return 1; if (use_rans) if (scram_set_option(out, CRAM_OPT_USE_RANS, use_rans)) return 1; if (use_lzma) if (scram_set_option(out, CRAM_OPT_USE_LZMA, use_lzma)) return 1; if (binning != BINNING_NONE) if (scram_set_option(out, CRAM_OPT_BINNING, binning)) return 1; if (no_ref) if (scram_set_option(out, CRAM_OPT_NO_REF, no_ref)) return 1; if (multi_seq) if (scram_set_option(out, CRAM_OPT_MULTI_SEQ_PER_SLICE, multi_seq)) return 1; if (decode_md) { if (no_ref) { fprintf(stderr, "Cannot use -m in conjunction with -x.\n"); return 1; } if (scram_set_option(in, CRAM_OPT_DECODE_MD, decode_md)) return 1; } if (nthreads > 1) { if (NULL == (p = t_pool_init(nthreads*2, nthreads))) return 1; if (scram_set_option(in, CRAM_OPT_THREAD_POOL, p)) return 1; if (scram_set_option(out, CRAM_OPT_THREAD_POOL, p)) return 1; } if (ignore_md5) { if (scram_set_option(in, CRAM_OPT_IGNORE_MD5, ignore_md5)) return 1; if (scram_set_option(in, CRAM_OPT_IGNORE_CHKSUM, ignore_md5)) return 1; if (scram_set_option(out, CRAM_OPT_IGNORE_CHKSUM, ignore_md5)) return 1; } if (sam_fields) scram_set_option(in, CRAM_OPT_REQUIRED_FIELDS, sam_fields); /* Copy header and refs from in to out, for writing purposes */ scram_set_header(out, scram_get_header(in)); // Needs doing after loading the header. if (ref_fn) { if (scram_set_option(out, CRAM_OPT_REFERENCE, ref_fn)) return 1; } else { // Attempt to fill out a cram->refs[] array from @SQ headers scram_set_option(out, CRAM_OPT_REFERENCE, NULL); } if (scram_get_header(out)) { char *arg_list = stringify_argv(argc, argv); if (!arg_list) return 1; if (sam_hdr_add_PG(scram_get_header(out), "scramble", "VN", PACKAGE_VERSION, "CL", arg_list, NULL)) return 1; if ((header || omode[1] != 's') && scram_write_header(out) != 0) return 1; free(arg_list); } /* Support for sub-range queries, currently implemented for CRAM only */ if (*ref_name != 0) { cram_range r; int refid; if (in->is_bam) { fprintf(stderr, "Currently the -R option is only implemented for CRAM indices\n"); return 1; } cram_index_load(in->c, argv[optind]); refid = sam_hdr_name2ref(in->c->header, ref_name); if (refid == -1 && *ref_name != '*') { fprintf(stderr, "Unknown reference name '%s'\n", ref_name); return 1; } r.refid = refid; r.start = start; r.end = end; if (scram_set_option(in, CRAM_OPT_RANGE, &r)) return 1; } /* Do the actual file format conversion */ s = NULL; while (scram_get_seq(in, &s) >= 0) { if (-1 == scram_put_seq(out, s)) { fprintf(stderr, "Failed to encode sequence\n"); return 1; } if (max_reads >= 0) if (--max_reads == 0) break; } switch(scram_eof(in)) { case -1: fprintf(stderr, "Failed to decode sequence\n"); return 1; case 0: if (max_reads == -1) { fprintf(stderr, "Failed to decode sequence\n"); return 1; } else { break; } case 2: fprintf(stderr, "Warning: no end-of-file block identified. " "File may be truncated.\n"); break; case 1: default: // expected case break; } /* Finally tidy up and close files */ if (scram_close(in)) { fprintf(stderr, "Failed in scram_close(in)\n"); return 1; } if (scram_close(out)) { fprintf(stderr, "Failed in scram_close(out)\n"); return 1; } if (p) t_pool_destroy(p, 0); if (s) free(s); return 0; } io_lib-1.14.6/progs/srf2fasta.c0000644000031500020650000000747612354177665013204 00000000000000/* * Copyright (c) 2008-2010 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * This performs a linear (non-indexed) search for a trace in an SRF archive. * * It's not intended as a suitable production program or as a library of code * to use, but as a test and benchmark statistic. */ #ifdef HAVE_CONFIG_H #include "io_lib_config.h" #endif #include #include #include #include #include #include #include #include /* ------------------------------------------------------------------------ */ #define MAX_READ_LEN 10000 void ztr2fasta(ztr_t *z, char *name) { int i, nc; char buf[MAX_READ_LEN*2 + 512 + 6]; char *seq = buf; ztr_chunk_t **chunks; /* Extract the sequence only */ chunks = ztr_find_chunks(z, ZTR_TYPE_BASE, &nc); if (nc != 1) { fprintf(stderr, "Zero or greater than one BASE chunks found.\n"); if (chunks) free(chunks); return; } uncompress_chunk(z, chunks[0]); /* Construct fasta entry */ *seq++ = '>'; while (*name) *seq++ = *name++; *seq++ = '\n'; for (i = 1; i < chunks[0]->dlength; i++) { char base = chunks[0]->data[i]; if (base == '.') *seq++ = 'N'; else *seq++ = base; } *seq++ = '\n'; fwrite(buf, 1, seq - buf, stdout); free(chunks); return; } /* ------------------------------------------------------------------------ */ void usage(void) { fprintf(stderr, "Usage: srf2fasta [-C] archive_name\n"); exit(1); } int main(int argc, char **argv) { char *ar_name; srf_t *srf; char name[512]; ztr_t *ztr; int mask = 0, i; /* Parse args */ for (i = 1; i < argc && argv[i][0] == '-'; i++) { if (!strcmp(argv[i], "-")) { break; } else if (!strcmp(argv[i], "-C")) { mask = SRF_READ_FLAG_BAD_MASK; } else { usage(); } } if (i == argc) { usage(); } ar_name = argv[i]; if (NULL == (srf = srf_open(ar_name, "r"))) { perror(ar_name); return 4; } read_sections(READ_BASES); #ifdef _WIN32 _setmode(_fileno(stdout), _O_BINARY); #endif while (NULL != (ztr = srf_next_ztr(srf, name, mask))) { ztr2fasta(ztr, name); delete_ztr(ztr); } srf_destroy(srf, 1); return 0; } io_lib-1.14.6/progs/srf2fastq.c0000644000031500020650000005142212545536330013200 00000000000000/* * Copyright (c) 2007-2010, 2013 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * This performs a linear (non-indexed) search for a trace in an SRF archive. * * It's not intended as a suitable production program or as a library of code * to use, but as a test and benchmark statistic. */ #ifdef HAVE_CONFIG_H #include "io_lib_config.h" #endif #include #include #include #include #include #include #include #include #include #define MAX_REGIONS 40 /* regn chunk */ typedef struct { char coord; char *region_names; int nregions; char *name[MAX_REGIONS]; char code[MAX_REGIONS]; int start[MAX_REGIONS]; int length[MAX_REGIONS]; int index[MAX_REGIONS]; FILE *file[MAX_REGIONS]; int count; } regn_t; /* * Inline reverse a string */ static void reverse_string( char *s , int length ) { char temp; char *first = s; char *last = s + length - 1; /* Reverse complement */ while ( last > first ) { temp = *first; *first++ = *last; *last-- = temp; } } /* * Reverse complement a DNA string. */ static void reverse_complement( char *s , int length ) { char temp; char *first = s; char *last = s + length - 1; static unsigned char cbase[256]; static int init = 0; /* Initialise cbase[] array on first use */ if (!init) { int i; for (i = 0; i < 256; i++) cbase[i] = i; cbase['A'] = 'T'; cbase['a'] = 't'; cbase['C'] = 'G'; cbase['c'] = 'g'; cbase['G'] = 'C'; cbase['g'] = 'c'; cbase['T'] = 'A'; cbase['t'] = 'a'; init = 1; } /* Reverse complement */ while ( last > first ) { temp = *first; *first++ = cbase[(unsigned char)*last]; *last-- = cbase[(unsigned char)temp]; } if (last == first) *first = cbase[(unsigned char)*first]; } static char qlookup[256]; void init_qlookup(void) { int i; for (i = -128; i < 128; i++) { qlookup[i+128] = '!' + (int)((10*log(1+pow(10, i/10.0))/log(10)+.499)); } } static char getQual(int logodds, char qual) { /* * If quality is negative, treat it as 0. * Solid, for instance, produces -1 on unknown base. */ if ( qual < 0 ) qual = 0; return ( logodds ? qlookup[qual + 128] : qual + '!' ); } /* * Parse the REGN chunk, add to regn HASH * * Returns corresponding HashItem * from regn Hash */ HashItem *parse_regn(ztr_t *z, ztr_chunk_t *chunk, HashTable *regn_hash) { char key[1024]; char *name; HashItem *hi; regn_t *regn; size_t l; uncompress_chunk(z, chunk); /* the hash key is a combination of the region names and boundaries */ name = ztr_lookup_mdata_value(z, chunk, "NAME"); l = snprintf(key, sizeof(key), "names=%s", name); if( chunk->dlength ){ int nbndy = (chunk->dlength-1)/4; uint4 *bndy = (uint4 *)(chunk->data+1); int ibndy; for (ibndy=0; ibndycoord = (NULL == coord ? 'B' : *coord ); regn->region_names = strdup(name); cp1 = strtok (regn->region_names,";"); while(cp1) { char *cp2; if(NULL == (cp2 = strchr(cp1,':'))) { fprintf(stderr, "Invalid region name/code pair %s\n", cp1); return NULL; } *cp2++ = '\0'; regn->name[nregions] = cp1; regn->code[nregions] = *cp2; nregions++; cp1 = strtok (NULL, ";"); } regn->nregions = nregions; if( chunk->dlength ) { nbndy = (chunk->dlength-1)/4; memcpy(bndy, chunk->data+1, chunk->dlength-1); } for( iregion=0, ibndy=0; iregioncode[iregion] == 'E' ){ /* not in BASE chunk, no boundary, set length = 0 */ regn->start[iregion] = (iregion ? (regn->start[iregion-1] + regn->length[iregion-1]) : 0); regn->length[iregion] = 0; } else { if( ibndy > nbndy ){ fprintf(stderr, "More name/code pairs than boundaries\n"); return NULL; } regn->start[iregion] = (iregion ? (regn->start[iregion-1] + regn->length[iregion-1]) : 0); regn->length[iregion] = (ibndy == nbndy ? -1 : (be_int4(bndy[ibndy])-regn->start[iregion])); regn->index[iregion] = index; ibndy++; index++; } } regn->count = 1; hd.p = regn; if (NULL == (hi = HashTableAdd(regn_hash, key, strlen(key), hd, NULL))) { free(regn->region_names); free(regn); return NULL; } } else { regn = (regn_t *)(hi->data.p); regn->count++; } return hi; } /* ------------------------------------------------------------------------ */ #define MAX_READ_LEN 10000 void ztr2fastq(ztr_t *z, char *name, int calibrated, int sequential, int split, char *root, int numeric, int append, int explicit, HashTable *regn_hash, int *nfiles_open, char **filenames, FILE **files, int *reverse) { int i, nc, seq_len, nfiles = *nfiles_open; char buf[MAX_READ_LEN*2 + 512 + 6]; char *seq, *qual, *sdata, *qdata, *key; ztr_chunk_t **chunks; HashItem *hi; regn_t *regn = NULL; int logodds; char *cset; if ( sequential || split || explicit ) { chunks = ztr_find_chunks(z, ZTR_TYPE_REGN, &nc); if (nc != 1) { fprintf(stderr, "Zero or greater than one REGN chunks found.\n"); if (chunks) free(chunks); return; } if( NULL == (hi = parse_regn(z, chunks[0], regn_hash)) ){ fprintf(stderr, "Invalid RGEN chunk\n"); if (chunks) free(chunks); return; } regn = (regn_t *)(hi->data.p); if( regn->count == 1 ){ int iregion; for (iregion=0; iregionnregions; iregion++) { if( regn->code[iregion] == 'E' ) { /* not in BASE chunk, the name of region IS the sequence, set file = NULL */ regn->file[iregion] = NULL; } else if( split ){ char filename[FILENAME_MAX]; int ifile; if( numeric ){ sprintf(filename, "%s_%d.fastq", root, regn->index[iregion]); } else { sprintf(filename, "%s_%s.fastq", root, regn->name[iregion]); } for (ifile=0; ifilefile[iregion] = files[ifile]; break; } } if( ifile == nfiles ){ FILE *fp; if (nfiles == MAX_REGIONS) { fprintf(stderr, "Too many regions.\n"); if (chunks) free(chunks); return; } printf("Opening file %s\n", filename); filenames[nfiles] = strdup(filename); if (NULL == (fp = fopen(filename, "wb+"))) { perror(filename); if (chunks) free(chunks); return; } files[nfiles++] = fp; regn->file[iregion] = fp; } } else { regn->file[iregion] = stdout; } } } if (chunks) free(chunks); } /* Extract the sequence only */ chunks = ztr_find_chunks(z, ZTR_TYPE_BASE, &nc); if (nc == 0) { fprintf(stderr, "Zero BASE chunks found.\n"); if (chunks) free(chunks); return; } if (nc > 1) { fprintf(stderr, "Multiple BASE chunks found. Using first only.\n"); } cset = ztr_lookup_mdata_value(z, chunks[0], "CSET"); uncompress_chunk(z, chunks[0]); sdata = chunks[0]->data+1; seq_len = chunks[0]->dlength-1; /* Extract the quality */ free(chunks); if (calibrated) { chunks = ztr_find_chunks(z, ZTR_TYPE_CNF1, &nc); } else { /* Try CNF4 first, and if not found revert to CNF1 */ chunks = ztr_find_chunks(z, ZTR_TYPE_CNF4, &nc); if (nc == 0) { if (chunks) free(chunks); chunks = ztr_find_chunks(z, ZTR_TYPE_CNF1, &nc); } } if (nc == 0) { fprintf(stderr, "No CNF chunks found.\n"); if (chunks) free(chunks); return; } if (nc > 1) { fprintf(stderr, "Multiple CNF chunks found. Using first only\n"); } uncompress_chunk(z, chunks[0]); qdata = chunks[0]->data+1; key = ztr_lookup_mdata_value(z, chunks[0], "SCALE"); logodds = (key && 0 == strcmp(key, "LO")) ? 1 : 0; /* Construct fastq entry */ if( sequential || split ){ int iregion; for (iregion=0; iregionnregions && iregioncode[iregion] == 'E' ) { /* * Not in BASE chunk, the sequence IS the name of the region * which may be pre-pended to the next region */ continue; } length = (regn->length[iregion] == -1 ? (seq_len-regn->start[iregion]) : regn->length[iregion]); seq = buf; *seq++ = '@'; while (*cp) *seq++ = *cp++; if( append ){ int n = sprintf(seq,"/%d", regn->index[iregion]); if( n < 0 ){ fprintf(stderr, "Unable to add index to read name\n"); if (chunks) free(chunks); return; } seq += n; } *seq++ = '\n'; qual = seq + length; if( explicit && iregion && regn->code[iregion-1] == 'E' ) { /* * previous region not in BASE chunk, the name of region * IS the sequence which is pre-pended to this region */ qual += strlen(regn->name[iregion-1]); } *qual++ = '\n'; *qual++ = '+'; *qual++ = '\n'; if( explicit && iregion && regn->code[iregion-1] == 'E' ){ /* * previous region not in BASE chunk, the name of region * IS the sequence which is pre-pended to this region * * The idea of adding the sequence to the quality string * here seems very odd. However so far we have only seen * SOLiD files using explicit regions and in these their * own fastqs appear to have the DNA base prepended to * both the colour space sequence and quality strings. * * NB: we don't allow this to be reversed. */ strcpy(seq, regn->name[iregion-1]); seq += strlen(regn->name[iregion-1]); memset(qual, '!', strlen(regn->name[iregion-1])); qual += strlen(regn->name[iregion-1]); } /* If this is a region to be reversed, do so */ if ( reverse[iregion] ) { reverse_complement(sdata ,length); reverse_string(qdata, length); } for (i = 0; i < length; i++) { if (*sdata != '.' || (cset && *cset == '0')) { *seq++ = *sdata++; } else { *seq++ = 'N'; sdata++; } *qual++ = getQual(logodds, *qdata++); } *qual++ = '\n'; fwrite(buf, 1, qual - buf, regn->file[iregion]); } } else { seq = buf; *seq++ = '@'; while (*name) *seq++ = *name++; *seq++ = '\n'; qual = seq + seq_len; if( explicit ){ int iregion; for (iregion=0; iregionnregions; iregion++) { if( regn->code[iregion] == 'E' ) { /* * region not in BASE chunk, the name of region IS * the sequence */ qual += strlen(regn->name[iregion]); } } } *qual++ = '\n'; *qual++ = '+'; *qual++ = '\n'; if( explicit ){ int iregion; for (iregion=0; iregionnregions; iregion++) { int length; if( regn->code[iregion] == 'E' ){ /* * region not in BASE chunk, the name of region IS * the sequence * * The idea of adding the sequence to the quality string * here seems very odd. However so far we have only seen * SOLiD files using explicit regions and in these their * own fastqs appear to have the DNA base prepended to * both the colour space sequence and quality strings. */ strcpy(seq, regn->name[iregion]); seq += strlen(regn->name[iregion]); memset(qual, '!', strlen(regn->name[iregion])); qual += strlen(regn->name[iregion]); } else { length = (regn->length[iregion] == -1 ? (seq_len-regn->start[iregion]) : regn->length[iregion]); /* If this is a region to be reversed, do so */ if ( reverse[iregion] ) { reverse_complement(sdata, length); reverse_string(qdata, length); } for (i = 0; i < length; i++) { if (*sdata != '.' || (cset && *cset == '0')) { *seq++ = *sdata++; } else { *seq++ = 'N'; sdata++; } *qual++ = getQual(logodds, *qdata++); } } } } else { if ( reverse[0] ) { reverse_complement(sdata, seq_len); reverse_string(qdata, seq_len); } for (i = 0; i < seq_len; i++) { if (*sdata != '.' || (cset && *cset == '0')) { *seq++ = *sdata++; } else { *seq++ = 'N'; sdata++; } *qual++ = getQual(logodds, *qdata++); } } *qual++ = '\n'; fwrite(buf, 1, qual - buf, stdout); } *nfiles_open = nfiles; free(chunks); } /* ------------------------------------------------------------------------ */ void usage(void) { fprintf(stderr, "Usage: srf2fastq [-c] [-C] [-s root] [-n] [-p] archive_name ...\n"); fprintf(stderr, "\n"); fprintf(stderr, " -c Use calibrated quality values (CNF1)\n"); fprintf(stderr, " -C Ignore bad reads\n"); fprintf(stderr, "\n"); fprintf(stderr, " -s root Split the fastq files, one for each region in the REGN chunk.\n"); fprintf(stderr, " The files are named root_ + the name of the region.\n"); fprintf(stderr, " -S Sequentially display regions rather than append them into\n"); fprintf(stderr, " one long read. (conflicts with -s)\n"); fprintf(stderr, "\n"); fprintf(stderr, " -n Ignore REGN names: use region index.\n"); fprintf(stderr, " i.e. root_1, root_2 etc.\n"); fprintf(stderr, " -a Append region index to name\n"); fprintf(stderr, " i.e. name/1, name/2 etc.\n"); fprintf(stderr, " -e Include explicit sequence: the names of the regions of type 'E'\n"); fprintf(stderr, "\n"); fprintf(stderr, " -r 1,2.. In a comma separated list, specify which regions to reverse,\n"); fprintf(stderr, " counting from 1. This will reverse complement the read and\n"); fprintf(stderr, " reverse the quality scores. (requires -s or -S)\n"); exit(1); } int main(int argc, char **argv) { int calibrated = 0; int mask = 0, i; int sequential = 0; int split = 0; int numeric = 0; int append = 0; int explicit = 0; char root[FILENAME_MAX]; int nfiles_open = 0; char *filenames[MAX_REGIONS]; FILE *files[MAX_REGIONS]; int reverse[MAX_REGIONS], reverse_set = 0; memset(reverse, 0, MAX_REGIONS * sizeof(int)); /* Parse args */ for (i = 1; i < argc && argv[i][0] == '-'; i++) { if (!strcmp(argv[i], "-")) { break; } else if (!strcmp(argv[i], "-C")) { mask = SRF_READ_FLAG_BAD_MASK; } else if (!strcmp(argv[i], "-c")) { calibrated = 1; } else if (!strcmp(argv[i], "-s")) { split = 1; strcpy(root, argv[++i]); } else if (!strcmp(argv[i], "-S")) { sequential = 1; } else if (!strcmp(argv[i], "-n")) { numeric = 1; } else if (!strcmp(argv[i], "-a")) { append = 1; } else if (!strcmp(argv[i], "-e")) { explicit = 1; } else if (!strcmp(argv[i], "-r")) { char *cp, *cpend; /* Figure out which ends to reverse */ if (++i == argc) usage(); cp = argv[i]; do { long l = (int)strtol(cp, &cpend, 10); if (cpend - cp && l >= 1 && l <= MAX_REGIONS) reverse[l-1] = 1; cp = cpend+1; } while (*cpend); reverse_set = 1; } else { usage(); } } if (i == argc) { usage(); } if ( sequential && split ) { fprintf(stderr, "ERROR: Parameters -s and -S conflict!\n"); usage(); } if ( reverse_set && ! (sequential || split) ) { fprintf(stderr, "ERROR: The -r parameter is only supported when " "spliting sequences by region.\n"); usage(); } read_sections(READ_BASES); init_qlookup(); #ifdef _WIN32 _setmode(_fileno(stdout), _O_BINARY); #endif for (; i < argc; i++) { char *ar_name; srf_t *srf; HashTable *regn_hash; char name[512]; ztr_t *ztr; ar_name = argv[i]; if (NULL == (srf = srf_open(ar_name, "r"))) { perror(ar_name); return 4; } if (NULL == (regn_hash = HashTableCreate(0,HASH_DYNAMIC_SIZE|HASH_FUNC_JENKINS3))) { return 1; } while (NULL != (ztr = srf_next_ztr(srf, name, mask))) { ztr2fastq(ztr, name, calibrated, sequential, split, root, numeric, append, explicit, regn_hash, &nfiles_open, filenames, files, reverse); delete_ztr(ztr); } srf_destroy(srf, 1); } return 0; } io_lib-1.14.6/progs/srf_dump_all.c0000644000031500020650000010774412547702405013745 00000000000000/* * Copyright (c) 2007-2008, 2010, 2013 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * This performs a linear (non-indexed) search for a trace in an SRF archive. * * It's not intended as a suitable production program or as a library of code * to use, but as a test and benchmark statistic. */ #ifdef HAVE_CONFIG_H #include "io_lib_config.h" #endif #include #include #include #include #include #include #include #include #include #include /* Fix MinGW's mkdir which only accepts one argument */ #if defined(__MINGW32__) # define mkdir(filename,mode) mkdir((filename)) #endif #define CR 13 /* Decimal code of Carriage Return char */ #define LF 10 /* Decimal code of Line Feed char */ #define EOF_MARKER 26 /* Decimal code of DOS end-of-file marker */ #define MAX_REC_LEN 1024 /* Maximum size of input buffer */ #define SEQ (1 << 0) #define PRB (1 << 1) #define SIG2 (1 << 2) #define INT (1 << 3) #define NSE (1 << 4) #define ALL (SEQ | PRB | SIG2 | INT | NSE) #define SEQ_STR "seq" #define PRB_STR "prb" #define SIG2_STR "sig2" #define INT_STR "int" #define NSE_STR "nse" #define ALL_STR "all" #define TEXT (1 << 0) #define SOLEXA (1 << 1) #define TEXT_STR "text" #define SOLEXA_STR "solexa" #define CONSOLE_DEST (1 << 0) #define FILE_DEST (1 << 1) #define NONE_DEST (1 << 2) #define CONSOLE_STR "console" #define FILE_STR "file" #define NONE_STR "none" #define MAX_CYCLES 500 /* ------------------------------------------------------------------------ */ /* * All the reads and prefixes will be used to filter reads in an srf archive. * For reads the match with the reads in the archive must be exact. Prefixes * need only match to the beginning of the read, so they are a way to filter * several reads that, for example, belong to the same lane and tile. For * example, if the reads are
:::::, then a * prefix can progress from center all the way to y coordinate in terms of * read specificity. */ typedef struct { int prefixes_size; int reads_size; char** prefixes; /* Prefixes to filter on. */ char** reads; /* Reads to filter on. */ } read_filter_t; /* ------------------------------------------------------------------------ */ /* Find the first non-digit character in the name and make it variable. */ int parse_int_from_name(const char *name, int *variable, size_t *i, const char *variable_name) { size_t last = *i; int sep = 0; while (*i > 0 && isdigit(name[*i])) { --(*i); } sep = name[*i]; if((*i == 0 && isdigit(name[*i])) || last == *i) { fprintf(stderr, "Bad read name \"%s\" for \"%s\". Read name needs to follow pattern of:\n", name, variable_name); fprintf(stderr, "\"prefix\"\n"); fprintf(stderr, "where lane, tile, x and y all consist of digits and the separators consist of non-numeric characters.\n"); *variable = 0; return -1; } *variable = atoi(&name[(*i)+1]); if (*i > 0) --(*i); return sep; } /* * Parses a name assuming it consists of: * prefix * * Sometimes though we have indexed samples, eg * "IL2_4381:1:1:1066:18864#43", where the last number has a different * meaning. We spot this by looking for a different separator. * * We fill out the supplied lane, tile, x and y parameters, or set them to * 0, 0, 0 and 0 if unknown. * * Returns 0 for success * -1 for failure (unknown) */ int parse_name(char *name, int *lane, int *tile, int *x, int *y) { size_t len = strlen(name); size_t i = len-1; int sep1, sep2, sep3, sep4; /* Find the first non-digit character in the name and make it y. */ if((sep1 = parse_int_from_name(name, y, &i, "y")) == -1) return -1; /* Find the second non-digit character in the name and make it x. */ if((sep2 = parse_int_from_name(name, x, &i, "x")) == -1) return -1; /* Find the third non-digit character in the name and make it the tile. */ if((sep3 = parse_int_from_name(name, tile, &i, "tile")) == -1) return -1; /* Find the fourth non-digit character in the name and make it the lane. */ if((sep4 = parse_int_from_name(name, lane, &i, "lane")) == -1) return -1; /* Detect when the last value was something different, eg index */ if (sep1 != sep2 && sep2 == sep3) { *y = *x; *x = *tile; *tile = *lane; sep1 = sep2; sep2 = sep3; sep3 = sep4; if ((sep4 = parse_int_from_name(name, lane, &i, "lane") == -1)) return -1; } if (sep1 != sep2 || sep2 != sep3) { static int done = 0; if (!done) { done = 1; fprintf(stderr, "Error: Name format unrecognised. " "lane/tile/x/y values maybe incorrect.\n"); } } return 0; } /* * Prints to the given file 4 values for every base in solexa format. This is * used to output int, nse and sig2 type reads. */ void dump_samples4_solexa(FILE *fp, int lane, int tile, int x, int y, int baseline, unsigned char *bytes, int nbytes) { int i, j, nb; int A[MAX_CYCLES], C[MAX_CYCLES], G[MAX_CYCLES], T[MAX_CYCLES]; nb = nbytes/8; for (i = j = 0; i < nb; i++, j+= 2) A[i] = (bytes[j] << 8) | bytes[j+1]; for (i = 0; i < nb; i++, j+= 2) C[i] = (bytes[j] << 8) | bytes[j+1]; for (i = 0; i < nb; i++, j+= 2) G[i] = (bytes[j] << 8) | bytes[j+1]; for (i = 0; i < nb; i++, j+= 2) T[i] = (bytes[j] << 8) | bytes[j+1]; fprintf(fp, "%d\t%d\t%d\t%d", lane, tile, x, y); for (i = 0; i < nb; i++) fprintf(fp, "\t%d %d %d %d", A[i] - baseline, C[i] - baseline, G[i] - baseline, T[i] - baseline); fprintf(fp, "\n"); } /* * Prints to the given file 4 values for every base in solexa format. This is * used to output prb type reads. */ void dump_conf4_solexa(FILE *fp, char *seq, signed char *bytes, int nbytes) { int i, j, nb; int A[MAX_CYCLES], C[MAX_CYCLES], G[MAX_CYCLES], T[MAX_CYCLES]; nb = nbytes/4; for (i = 0, j = nb; i < nb; i++) { switch(seq[i]) { case 'A': case 'a': A[i] = bytes[i]; C[i] = bytes[j++]; G[i] = bytes[j++]; T[i] = bytes[j++]; break; case 'C': case 'c': A[i] = bytes[j++]; C[i] = bytes[i]; G[i] = bytes[j++]; T[i] = bytes[j++]; break; case 'G': case 'g': A[i] = bytes[j++]; C[i] = bytes[j++]; G[i] = bytes[i]; T[i] = bytes[j++]; break; default: A[i] = bytes[j++]; C[i] = bytes[j++]; G[i] = bytes[j++]; T[i] = bytes[i]; break; } } for (i = 0; i < nb; i++) { if (i) fputc('\t', fp); fprintf(fp, "%4d %4d %4d %4d", A[i], C[i], G[i], T[i]); } fprintf(fp, "\n"); } /* * Prints a read in solexa format. Depending on the given chunk type mode, * only some of the chunks are printed out for every read. The files are * given in the following order: seq, prb, sig2, int, nse. The files must * already be open. */ void dump_solexa(ztr_t *z, char *name, char mode, FILE **files) { int i, nc; ztr_chunk_t **chunks; char *seq; int lane = -1, tile = -1, x = -1, y = -1; parse_name(name, &lane, &tile, &x, &y); uncompress_ztr(z); chunks = ztr_find_chunks(z, ZTR_TYPE_BASE, &nc); if (nc != 1) { fprintf(stderr, "Zero or greater than one BASE chunks found.\n"); return; } seq = chunks[0]->data+1; /* Sequence */ if (mode & SEQ) { fprintf(files[0], "%d\t%d\t%d\t%d\t%.*s\n", lane, tile, x, y, chunks[0]->dlength-1, chunks[0]->data+1); } /* Confidence */ if (mode & PRB) { chunks = ztr_find_chunks(z, ZTR_TYPE_CNF4, &nc); if (nc != 1) { fprintf(stderr, "Zero or greater than one CNF chunks found.\n"); return; } dump_conf4_solexa(files[1], seq, (sc *)chunks[0]->data+1, chunks[0]->dlength-1); } /* Traces */ if (mode & SIG2) { chunks = ztr_find_chunks(z, ZTR_TYPE_SMP4, &nc); for (i = 0; i < nc; i++) { char *key = ztr_lookup_mdata_value(z, chunks[i], "TYPE"); if (!key || 0 == strcmp(key, "PROC")) { key = ztr_lookup_mdata_value(z, chunks[i], "OFFS"); dump_samples4_solexa(files[2], lane, tile, x, y, key ? atoi(key) : 0, (uc *)chunks[i]->data+2, chunks[i]->dlength-2); break; } } } if (mode & INT) { chunks = ztr_find_chunks(z, ZTR_TYPE_SMP4, &nc); for (i = 0; i < nc; i++) { char *key = ztr_lookup_mdata_value(z, chunks[i], "TYPE"); if (key && 0 == strcmp(key, "SLXI")) { key = ztr_lookup_mdata_value(z, chunks[i], "OFFS"); dump_samples4_solexa(files[3], lane, tile, x, y, key ? atoi(key) : 0, (uc *)chunks[i]->data+2, chunks[i]->dlength-2); break; } } } if (mode & NSE) { chunks = ztr_find_chunks(z, ZTR_TYPE_SMP4, &nc); for (i = 0; i < nc; i++) { char *key = ztr_lookup_mdata_value(z, chunks[i], "TYPE"); if (key && 0 == strcmp(key, "SLXN")) { key = ztr_lookup_mdata_value(z, chunks[i], "OFFS"); dump_samples4_solexa(files[4], lane, tile, x, y, key ? atoi(key) : 0, (uc *)chunks[i]->data+2, chunks[i]->dlength-2); break; } } } } /* * Ripped out of io_lib's trace_dump program. * It reformats a trace to as printable ASCII. */ void dump_text(ztr_t *z, char *name, char mode, FILE **files) { Read *read; int i; uncompress_ztr(z); read = ztr2read(z); /* Inefficient; can do direct */ if (read == NULL) { fprintf(stderr, "Tracedump was unable to open file %s\n", name ); return; } fprintf(files[0], "[Trace]\n"); fprintf(files[0], "%s\n", name); fprintf(files[0], "\n[Header]\n"); fprintf(files[0], "%d\t\t# format\n", read->format); fprintf(files[0], "%d\t\t# NPoints\n", read->NPoints); fprintf(files[0], "%d\t\t# NBases\n", read->NBases); fprintf(files[0], "%d\t\t# NFlows\n", read->nflows); fprintf(files[0], "%d\t\t# maxTraceVal\n", (int)read->maxTraceVal-read->baseline); fprintf(files[0], "%d\t\t# baseline\n", read->baseline); fprintf(files[0], "%d\t\t# leftCutoff\n", read->leftCutoff); fprintf(files[0], "%d\t\t# rightCutoff\n", read->rightCutoff); fputs("\n[Bases]\n", files[0]); for (i = 0; i < read->NBases; i++) { fprintf(files[0], "%c %05d %+03d %+03d %+03d %+03d #%3d\n", read->base[i], read->basePos ? read->basePos[i] : 0, (int)read->prob_A[i], (int)read->prob_C[i], (int)read->prob_G[i], (int)read->prob_T[i], i); } if (read->NPoints) { fputs("\n[A_Trace]\n", files[0]); for(i = 0; i < read->NPoints; i++) fprintf(files[0], "%d\t#%5d\n", (int)read->traceA[i] - read->baseline, i); fputs("\n[C_Trace]\n", files[0]); for(i = 0; i < read->NPoints; i++) fprintf(files[0], "%d\t#%5d\n", (int)read->traceC[i] - read->baseline, i); fputs("\n[G_Trace]\n", files[0]); for(i = 0; i < read->NPoints; i++) fprintf(files[0], "%d\t#%5d\n", (int)read->traceG[i] - read->baseline, i); fputs("\n[T_Trace]\n", files[0]); for(i = 0; i < read->NPoints; i++) fprintf(files[0], "%d\t#%5d\n", (int)read->traceT[i] - read->baseline, i); } if (read->flow_order) { fputs("\n[Flows]\n", files[0]); for (i = 0; i < read->nflows; i++) { fprintf(files[0], "%c %5.2f %u\t#%5d\n", read->flow_order[i], read->flow ? read->flow[i] : 0, read->flow_raw ? read->flow_raw[i] : 0, i); } } if (read->info) { fputs("\n[Info]\n", files[0]); fprintf(files[0], "%s\n", read->info); } read_deallocate(read); } /* * Print usage message to stderr and exit with the given \"code\". */ void usage(int code) { fprintf(stderr, "Usage: srf_dump_all [-c chunk_types] [-d destination_types] [-f read_filter] [-n] [-o] [-t type_of_output] archive_name\n"); fprintf(stderr, "Options:\n"); fprintf(stderr, " -c chunk_types\n"); fprintf(stderr, " Chunk types to output given as a comma delimited list of types.\n"); fprintf(stderr, " The following types are allowed: \"all\", \"seq\", \"prb\",\n"); fprintf(stderr, " \"int\", \"nse\", \"sig2\".\n"); fprintf(stderr, " The default is \"all\".\n"); fprintf(stderr, "\n -d destination_types\n"); fprintf(stderr, " Distinations to output to.\n"); fprintf(stderr, " The following types are allowed: \"console\", \"file\", \"none\".\n"); fprintf(stderr, " The default is \"console\". Console and file can be together, \n" " but none is exclusive.\n"); fprintf(stderr, "\n -f read_filter\n"); fprintf(stderr, " The filter to apply to reads in the archive. If reads match the\n"); fprintf(stderr, " filter they are dumped.\n"); fprintf(stderr, " The filter takes the form of =, where can be\n"); fprintf(stderr, " \"read\", \"prefix\", \"file\".\n"); fprintf(stderr, " If the is \"read\" the value is represents the name of a\n"); fprintf(stderr, " read to dump. Only the matching read will be dumped.\n"); fprintf(stderr, " If the is \"prefix\" the value is represents the prefix of\n"); fprintf(stderr, " the name of the reads to dump. Only the matching reads will be\n dumped.\n"); fprintf(stderr, " If the is \"file\" the value is a file name where any\n"); fprintf(stderr, " number of \"read\" and \"prefix\" name value pairs can be included,\n one per line.\n"); fprintf(stderr, " The default is no filter, which means all reads are dumped.\n"); fprintf(stderr, "\n -n Output the total number of reads at the bottom.\n"); fprintf(stderr, "\n -o Output the total number of reads only. Nothing else is output.\n"); fprintf(stderr, "\n -t type_of_output\n"); fprintf(stderr, " Type of output. Only one value allowed.\n"); fprintf(stderr, " Currently \"text\" and \"solexa\" is supported.\n"); fprintf(stderr, " The default is \"text\".\n"); fprintf(stderr, "\n -v Print verbose messages.\n"); fprintf(stderr, "\n"); exit(code); } /* * Reads the lines from the fiven \"input\" file and creates the reads and prefixes * for the read filter. The \"read_filter\" given is allocated. * * Returns 0 on success. Errors cause the usage message and exit. */ int read_filter_from_file(FILE *input, read_filter_t *read_filter) { int isNewline; /* Boolean indicating we've read a CR or LF */ long lFileLen; /* Length of file */ long lIndex; /* Index into cThisLine array */ long lLineCount; /* Current line number */ long lTotalChars; /* Total characters read */ char cThisLine[MAX_REC_LEN]; /* Contents of current line */ char *cFile; /* Dynamically allocated buffer (entire file) */ char *cThisPtr; /* Pointer to current position in cFile */ char *filter_type = NULL; char *prefix; char *read; fseek(input, 0L, SEEK_END); /* Position to end of file */ lFileLen = ftell(input); /* Get file length */ rewind(input); /* Back to start of file */ cFile = calloc(lFileLen + 1, sizeof(char)); if(cFile == NULL ) { fprintf(stderr, "\nInsufficient memory to read file.\n"); return -1; } /* Read the entire file into cFile */ if (1 != fread(cFile, lFileLen, 1, input)) return -1; lLineCount = 0L; lTotalChars = 0L; cThisPtr = cFile; /* Point to beginning of array */ while (*cThisPtr) /* Read until reaching null char */ { lIndex = 0L; /* Reset counters and flags */ isNewline = 0; while (*cThisPtr) /* Read until reaching null char */ { if (!isNewline) /* Haven't read a CR or LF yet */ { if (*cThisPtr == CR || *cThisPtr == LF) /* This char IS a CR or LF */ isNewline = 1; /* Set flag */ } else if (*cThisPtr != CR && *cThisPtr != LF) /* Already found CR or LF */ break; /* Done with line */ /* Don't copy LS or CR */ if (*cThisPtr != CR && *cThisPtr != LF) { cThisLine[lIndex++] = *cThisPtr++; /* Add char to output and increment */ ++lTotalChars; } else { cThisPtr++; } } /* end while (*cThisPtr) */ cThisLine[lIndex] = '\0'; /* Terminate the string */ ++lLineCount; /* Increment the line counter */ /* Find the one and only = in the string. */ if(strchr(cThisLine,'=') != NULL && (strchr(cThisLine,'=') == strrchr(cThisLine,'='))) { filter_type = strtok (cThisLine, "="); } else { fprintf(stderr, "Baddly formatted read filter \"%s\". Expected an \"=\" character in middle of filter.\n", cThisLine); usage(1); } if (!strcmp(filter_type, "prefix")) { prefix = strtok (NULL, "="); if(prefix == NULL) { fprintf(stderr, "Bad prefix \"%s\" in read filter \"%s\".\n", prefix, cThisLine); usage(1); } else { ++(read_filter->prefixes_size); read_filter->prefixes = (char**) realloc (read_filter->prefixes, read_filter->prefixes_size * sizeof(char *)); read_filter->prefixes[read_filter->prefixes_size - 1] = (char*) calloc (strlen(prefix) + 1,sizeof(char)); strcpy(read_filter->prefixes[read_filter->prefixes_size - 1], prefix); } } else if (!strcmp(filter_type, "read")) { read = strtok (NULL, "="); if(read == NULL) { fprintf(stderr, "Bad read \"%s\" in read filter \"%s\".\n", read, cThisLine); usage(1); } else { ++(read_filter->reads_size); read_filter->reads = (char**) realloc (read_filter->reads, read_filter->reads_size * sizeof(char *)); read_filter->reads[read_filter->reads_size - 1] = (char*) calloc (strlen(read) + 1,sizeof(char)); strcpy(read_filter->reads[read_filter->reads_size - 1], read); } } else { fprintf(stderr, "Unrecognized filter type \"%s\" given as part of read filter \"%s\". The valid filter types are \"%s\".\n", filter_type, cThisLine, "prefix or read"); usage(1); } } free(cFile); return 0; } /* * Parse the given \"filter_value\" string for the filter value. * * Returns a read filter allocated on the heap which needs to be freed by the * calling function. Errors usually cause the usage message and exit. */ read_filter_t *get_read_filter(char *filter_value) { char *filter_type = NULL; char *file_name = NULL; FILE *fp = NULL; char *prefix = NULL; char *read = NULL; /* Create read filter. */ read_filter_t *read_filter = (read_filter_t *)calloc(1, sizeof(read_filter_t)); if(read_filter == NULL) { return NULL; } read_filter->prefixes_size = 0; read_filter->reads_size = 0; /* Find the one and only = in the string. */ if( strchr(filter_value,'=') != NULL && (strchr(filter_value,'=') == strrchr(filter_value,'=')) ) { filter_type = strtok (filter_value,"="); } else { fprintf(stderr, "Baddly formatted read filter \"%s\". Expected an \"=\" character in middle of filter.\n", filter_value); usage(1); } /* Check the string before the = is a valid filter type. */ if(!strcmp("file", filter_type)) { /* Read the file. */ file_name = strtok (NULL, "="); if(file_name == NULL) { fprintf(stderr, "Bad file name \"%s\" in read filter \"%s\".\n", file_name, filter_value); usage(1); } fp = fopen(file_name, "r"); if(fp == NULL) { fprintf(stderr, "Bad file name \"%s\" in read filter \"%s\".\n", file_name, filter_value); usage(1); } /* Read line by line. */ if(read_filter_from_file(fp, read_filter)) { fprintf(stderr, "Bad contents of file %s.\n", file_name); usage(1); } } else if (!strcmp("prefix", filter_type)) { prefix = strtok (NULL, "="); if(prefix == NULL) { fprintf(stderr, "Bad prefix \"%s\" in read filter \"%s\".\n", prefix, filter_value); usage(1); } else { ++(read_filter->prefixes_size); read_filter->prefixes = (char**) malloc (read_filter->prefixes_size * sizeof(char *)); read_filter->prefixes[read_filter->prefixes_size - 1] = (char*) calloc (strlen(prefix) + 1,sizeof(char)); strcpy(read_filter->prefixes[read_filter->prefixes_size - 1], prefix); } } else if (!strcmp("read", filter_type)) { read = strtok (NULL, "="); if(read == NULL) { fprintf(stderr, "Bad read \"%s\" in read filter \"%s\".\n", read, filter_value); usage(1); } else { ++(read_filter->reads_size); read_filter->reads = (char**) malloc (read_filter->reads_size * sizeof(char *)); read_filter->reads[read_filter->reads_size - 1] = (char*) calloc (strlen(read) + 1, sizeof(char)); strcpy(read_filter->reads[read_filter->reads_size - 1], read); } } else { fprintf(stderr, "Unrecognized filter type \"%s\" given as part of read filter \"%s\". The valid filter types are \"%s\".\n", filter_type, filter_value, "prefix, read, or file"); usage(1); } return read_filter; } /* * Parse the comma delimited list of chunk types and put them in the single character \"mode\". * * Returns 0 on success. */ int get_chunk_types(char *arg, char *mode) { int num_allowed_types = 6; char *allowed_str_types[] = {SEQ_STR, INT_STR, NSE_STR, PRB_STR, SIG2_STR, ALL_STR}; char allowed_types[] = {SEQ, INT, NSE, PRB, SIG2, ALL}; char *type; int i = 0; type = strtok (arg,","); while(type) { for(i = 0; i < num_allowed_types; i++) { if(!strcmp(type, allowed_str_types[i]) && !(*mode & allowed_types[i])) { *mode += allowed_types[i]; break; } } type = strtok (NULL, ","); } return 0; } /* * Parse the output format type and put it in the single character \"mode\". * * Returns 0 on success. */ int get_type_of_output(char *arg, char *mode) { int num_allowed_types = 2; char *allowed_str_types[] = {TEXT_STR, SOLEXA_STR}; char allowed_types[] = {TEXT, SOLEXA}; int i = 0; for(i = 0; i < num_allowed_types; i++) { if(!strcmp(arg, allowed_str_types[i])) { *mode = allowed_types[i]; break; } } return 0; } /* * Parse the comma delimited list of destination types and put them in the single characted "\mode\". * * Returns 0 on success. */ int get_destination_types(char *arg, char *mode) { int num_allowed_types = 3; char *allowed_str_types[] = {CONSOLE_STR, FILE_STR, NONE_STR}; char allowed_types[] = {CONSOLE_DEST, FILE_DEST, NONE_DEST}; char *type; int i = 0; type = strtok (arg,","); while(type) { for(i = 0; i < num_allowed_types; i++) { if(!strcmp(type, allowed_str_types[i]) && !(*mode & allowed_types[i])) { *mode += allowed_types[i]; break; } } type = strtok (NULL, ","); } /* NONE_DEST is exclusive, ignore others. */ if(*mode & NONE_DEST) { *mode = NONE_DEST; } return 0; } /* * Returns 1 is the read \"name\" matches any of the reads or prefixes in the \"read_filter\". */ int check_read_name(read_filter_t *read_filter, char *name) { int i; for(i = 0; i < read_filter->prefixes_size; i++) { if(name == strstr(name, read_filter->prefixes[i])) { return 1; } } for(i = 0; i < read_filter->reads_size; i++) { if(!strcmp(name, read_filter->reads[i])) { free(read_filter->reads[i]); read_filter->reads[i] = read_filter->reads[read_filter->reads_size - 1]; read_filter->reads_size--; return 1; } } return 0; } void dump_read_filter(read_filter_t *read_filter) { int i; printf("Read filter used:\n"); for(i = 0; i < read_filter->prefixes_size; i++) { printf("\tprefix[%d] = %s\n", i, read_filter->prefixes[i]); } for(i = 0; i < read_filter->reads_size; i++) { printf("\tread[%d] = %s\n", i, read_filter->reads[i]); } } void dump_chunk_mode(char mode) { printf("mode: %d.\n", mode); if(mode & SEQ) { printf("SEQ required.\n"); } if(mode & INT) { printf("INT required.\n"); } if(mode & NSE) { printf("NSE required.\n"); } if(mode & PRB) { printf("PRB required.\n"); } if(mode & SIG2) { printf("SIG2 required.\n"); } } void dump_type_mode(char mode) { printf("mode: %d.\n", mode); if(mode & TEXT) { printf("TEXT required.\n"); } if(mode & SOLEXA) { printf("SOLEXA required.\n"); } } void dump_destination_mode(char mode) { printf("mode: %d.\n", mode); if(mode & CONSOLE_DEST) { printf("CONSOLE required.\n"); } if(mode & FILE_DEST) { printf("FILE required.\n"); } if(mode & NONE_DEST) { printf("NONE required.\n"); } } /* * Open the solexa format file given the directory, lane, tile, and file type. * Uses solexa file naming conventions to create the file. * * Returns the successfully opened file or NULL. */ FILE *fopen_slx(char *dir, char *type, int lane, int tile) { char fn[1024]; FILE *fp; sprintf(fn, "%s/s_%d_%04d_%s.txt", dir, lane, tile, type); printf("Opening file %s\n", fn); if (NULL == (fp = fopen(fn, "w+"))) { perror(fn); return NULL; } return fp; } /* * Given the archive name (ar_name), the chunk types to output (chunk_mode), * and some other parameters such as the read filter, open various files and * dumps solexa formated output to those files. The number of reads is updated * in the \"num_reads\" parameter. * * Returns 0 on success. */ int process_srf_to_solexa_files(char *ar_name, char chunk_mode, int num_reads_only_mode, int filter_mode, read_filter_t *read_filter, long *num_reads) { srf_t *srf; char name[1024], dir2[1024]; ztr_t *ztr; int last_lane = 0, last_tile = 0; /* seq prb sig2 int nse */ FILE *files[] = {NULL, NULL, NULL, NULL, NULL}; if (NULL == (srf = srf_open(ar_name, "rb"))) { perror(ar_name); return 1; } char *cp = strrchr(ar_name, '.'); if (cp) *cp = 0; sprintf(dir2, "%s.run", ar_name); mkdir(dir2, 0777); while (NULL != (ztr = srf_next_ztr(srf, name, 0))) { int lane = -1, tile = -1, x = -1, y = -1; parse_name(name, &lane, &tile, &x, &y); if (last_lane != lane || last_tile != tile) { fprintf(stderr, "New tile: %d/%d\n", lane, tile); last_lane = lane; last_tile = tile; if (files[0]) { fclose(files[0]); files[0] = NULL; } if (files[1]) { fclose(files[1]); files[1] = NULL; } if (files[2]) { fclose(files[2]); files[2] = NULL; } if (files[3]) { fclose(files[3]); files[3] = NULL; } if (files[4]) { fclose(files[4]); files[4] = NULL; } if (chunk_mode & SEQ) { files[0] = fopen_slx(dir2, "seq", lane, tile); } if (chunk_mode & PRB) { files[1] = fopen_slx(dir2, "prb", lane, tile); } if (chunk_mode & SIG2) { files[2] = fopen_slx(dir2, "sig2", lane, tile); } if (chunk_mode & INT) { files[3] = fopen_slx(dir2, "int", lane, tile); } if (chunk_mode & NSE) { files[4] = fopen_slx(dir2, "nse", lane, tile); } } if(!num_reads_only_mode) { if(!filter_mode || (filter_mode && check_read_name(read_filter, name))) { dump_solexa(ztr, name, chunk_mode, files); ++(*num_reads); } } else { ++(*num_reads); } delete_ztr(ztr); } if (files[0]) fclose(files[0]); if (files[1]) fclose(files[1]); if (files[2]) fclose(files[2]); if (files[3]) fclose(files[3]); if (files[4]) fclose(files[4]); srf_destroy(srf, 1); return 0; } /* * Open the text format file given the directory, lane and tile. * Uses solexa file naming conventions to create the file, except that the file * has a \"dump.txt\" type. * * Returns the successfully opened file or NULL. */ FILE *fopen_text(char *dir, int lane, int tile) { char fn[1024]; FILE *fp; sprintf(fn, "%s/s_%d_%04d_dump.txt", dir, lane, tile); if (NULL == (fp = fopen(fn, "w+"))) { perror(fn); return NULL; } return fp; } /* * Given the archive name (ar_name), the chunk types to output (chunk_mode), * and some other parameters such as the read filter, open one file and dumps * text formatted output to that file. The number of reads is updated in the * \"num_reads\" parameter. * * Returns 0 on success. */ int process_srf_to_text_files(char *ar_name, char chunk_mode, int num_reads_only_mode, int filter_mode, read_filter_t *read_filter, long *num_reads) { srf_t *srf; char name[1024], dir2[1024]; ztr_t *ztr; int last_lane = 0, last_tile = 0; /* dump */ FILE *files[] = {NULL}; if (NULL == (srf = srf_open(ar_name, "rb"))) { perror(ar_name); return 1; } char *cp = strrchr(ar_name, '.'); if (cp) *cp = 0; sprintf(dir2, "%s.run", ar_name); mkdir(dir2, 0777); while (NULL != (ztr = srf_next_ztr(srf, name, 0))) { int lane = -1, tile = -1, x = -1, y = -1; parse_name(name, &lane, &tile, &x, &y); if (last_lane != lane || last_tile != tile) { fprintf(stderr, "New tile: %d/%d\n", lane, tile); last_lane = lane; last_tile = tile; if (files[0]) { fclose(files[0]); files[0] = NULL; } if (chunk_mode) { files[0] = fopen_text(dir2, lane, tile); } } if(!num_reads_only_mode) { if(!filter_mode || (filter_mode && check_read_name(read_filter, name))) { dump_text(ztr, name, chunk_mode, files); ++(*num_reads); } } else { ++(*num_reads); } delete_ztr(ztr); } if (files[0]) fclose(files[0]); srf_destroy(srf, 1); return 0; } /* ------------------------------------------------------------------------ */ /* * Main method. */ int main(int argc, char **argv) { int i; long num_reads = 0; int num_reads_mode = 0; int num_reads_only_mode = 0; int filter_mode = 0; char *ar_name = NULL; srf_t *srf = NULL; char name[512]; ztr_t *ztr = NULL; read_filter_t *read_filter = NULL; char *filter_value = NULL; int c; int errflg = 0; extern char *optarg; extern int optind, optopt; char chunk_mode = ALL; char type_mode = TEXT; char destination_mode = CONSOLE_DEST; FILE **files = NULL; int verbose = 0; if (argc < 2) { fprintf(stderr, "Please specify an archive name.\n"); usage(1); } while ((c = getopt(argc, argv, ":c:d:f:not:v")) != -1) { switch (c) { case 'c': chunk_mode = 0; if(get_chunk_types(optarg, &chunk_mode) || !chunk_mode) { fprintf(stderr, "Invalid value \"%s\" given to option -%c.\n", optarg, c); errflg++; } break; case 'd': destination_mode = 0; if(get_destination_types(optarg, &destination_mode) || !destination_mode) { fprintf(stderr, "Invalid value \"%s\" given to option -%c.\n", optarg, c); errflg++; } break; case 'f': if (num_reads_only_mode) { fprintf(stderr, "Option -%c is exclusing with option -o.\n", c); errflg++; } else { filter_mode++; filter_value = optarg; } break; case 'n': if (num_reads_only_mode) { fprintf(stderr, "Option -%c is exclusing with option -o.\n", c); errflg++; } else num_reads_mode++; break; case 'o': if (num_reads_mode) { fprintf(stderr, "Option -%c is exclusing with option -n.\n", c); errflg++; } else if (filter_mode) { fprintf(stderr, "Option -%c is exclusing with option -f.\n", c); errflg++; } else num_reads_only_mode++; break; case 't': type_mode=0; if(get_type_of_output(optarg, &type_mode) || !type_mode) { fprintf(stderr, "Invalid value \"%s\" given to option -%c.\n", optarg, c); errflg++; } break; case 'v': verbose++; break; case ':': /* -? without operand */ fprintf(stderr, "Option -%c requires an operand\n", optopt); errflg++; break; case '?': fprintf(stderr, "Unrecognised option: -%c\n", optopt); errflg++; } } if (errflg) { usage(1); } if(optind + 1 != argc) { fprintf(stderr, "The archive name must be the last argument.\n"); usage(1); } else { ar_name = argv[optind]; } if(filter_mode) { read_filter = get_read_filter(filter_value); if(verbose) { dump_read_filter(read_filter); } } if(chunk_mode && verbose) { dump_chunk_mode(chunk_mode); } if(type_mode && verbose) { dump_type_mode(type_mode); } if(destination_mode && verbose) { dump_destination_mode(destination_mode); } if (!access(ar_name, R_OK)) { if(verbose) { printf("Dumping from archive %s.\n", ar_name); } } else { fprintf(stderr, "Archive %s not found.\n", ar_name); } if(destination_mode & NONE_DEST) { if (NULL == (srf = srf_open(ar_name, "rb"))) { perror(ar_name); return 1; } while (NULL != (ztr = srf_next_ztr(srf, name, 0))) { if(!num_reads_only_mode) { if(!filter_mode || (filter_mode && check_read_name(read_filter, name))) { ++num_reads; } } else { ++num_reads; } delete_ztr(ztr); } } if(destination_mode & CONSOLE_DEST) { /* Cosole means stdout. */ files = malloc((sizeof(FILE *))*5); for(i = 0; i < 5; i++) { files[i] = stdout; } if (NULL == (srf = srf_open(ar_name, "rb"))) { perror(ar_name); return 1; } while (NULL != (ztr = srf_next_ztr(srf, name, 0))) { if(!num_reads_only_mode) { if(!filter_mode || (filter_mode && check_read_name(read_filter, name))) { if(type_mode & SOLEXA) { dump_solexa(ztr, name, chunk_mode, files); } else if(type_mode & TEXT) { dump_text(ztr, name, chunk_mode, files); } else { fprintf(stderr, "Assertion error on type_mode (%c).\nExiting.\n", type_mode); exit(1); } ++num_reads; } } else { ++num_reads; } delete_ztr(ztr); } } if(destination_mode & FILE_DEST) { if(type_mode & SOLEXA) { process_srf_to_solexa_files(ar_name, chunk_mode, num_reads_only_mode, filter_mode, read_filter, &num_reads); } else if(type_mode & TEXT) { process_srf_to_text_files(ar_name, chunk_mode, num_reads_only_mode, filter_mode, read_filter, &num_reads); } else { fprintf(stderr, "Assertion error on type_mode (%c).\nExiting.\n", type_mode); exit(1); } } if(num_reads_mode || num_reads_only_mode) { printf("\nReads: %ld\n", num_reads); } srf_destroy(srf, 1); return 0; } io_lib-1.14.6/progs/srf_extract_hash.c0000644000031500020650000001265012354177665014626 00000000000000/* * Copyright (c) 2007-2010 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifdef HAVE_CONFIG_H #include "io_lib_config.h" #endif #include #include #include #include #include #include #include static char qlookup[256]; void init_qlookup(void) { int i; for (i = -128; i < 128; i++) { qlookup[i+128] = '!' + (int)((10*log(1+pow(10, i/10.0))/log(10)+.499)); } } /* ------------------------------------------------------------------------ */ #define MAX_READ_LEN 10000 void ztr2fastq(ztr_t *z, char *name, int calibrated) { int i, nc, seq_len; char buf[MAX_READ_LEN*2 + 512 + 6]; char *seq, *qual, *sdata, *qdata; ztr_chunk_t **chunks; /* Extract the sequence only */ chunks = ztr_find_chunks(z, ZTR_TYPE_BASE, &nc); if (nc != 1) { fprintf(stderr, "Zero or greater than one BASE chunks found.\n"); return; } uncompress_chunk(z, chunks[0]); sdata = chunks[0]->data+1; seq_len = chunks[0]->dlength-1; /* Extract the quality */ if (calibrated) chunks = ztr_find_chunks(z, ZTR_TYPE_CNF1, &nc); else chunks = ztr_find_chunks(z, ZTR_TYPE_CNF4, &nc); if (nc != 1) { fprintf(stderr, "Zero or greater than one CNF chunks found.\n"); return; } uncompress_chunk(z, chunks[0]); qdata = chunks[0]->data+1; /* Construct fastq entry */ seq = buf; *seq++ = '@'; while (*name) *seq++ = *name++; *seq++ = '\n'; qual = seq + seq_len; *qual++ = '\n'; *qual++ = '+'; *qual++ = '\n'; for (i = 0; i < seq_len; i++) { if (*sdata != '.') { *seq++ = *sdata++; } else { *seq++ = 'N'; sdata++; } *qual++ = calibrated ? *qdata++ + '!' : qlookup[*qdata++ + 128]; } *qual++ = '\n'; fwrite(buf, 1, qual - buf, stdout); } /* ------------------------------------------------------------------------ */ void usage(void) { fprintf(stderr, "Usage: srf_extract [-fastq] [-c] archive_name trace_name ...\n"); exit(1); } int main(int argc, char **argv) { FILE *fp; srf_t *srf; char *archive, *trace; uint64_t cpos, hpos, dpos; int fastq = 0, calibrated = 0, i; /* Parse args */ for (i = 1; i < argc && argv[i][0] == '-'; i++) { if (!strcmp(argv[i], "-")) { break; } else if (!strcmp(argv[i], "-c")) { calibrated = 1; } else if (!strcmp(argv[i], "-fastq")) { fastq = 1; } else { usage(); } } if (argc < (i+2)) { usage(); } /* the SRF archive */ archive = argv[i++]; fp = fopen(archive, "rb"); if (NULL == fp) { perror(archive); return 1; } srf = srf_create(fp); /* the trace */ trace = argv[i]; if( fastq ){ read_sections(READ_BASES); init_qlookup(); }else{ #ifdef _WIN32 _setmode(_fileno(stdout), _O_BINARY); #endif } /* Search index */ switch (srf_find_trace(srf, trace, &cpos, &hpos, &dpos)) { case -1: fprintf(stderr, "Malformed or missing index hash. " "Consider running srf_index_hash\n"); return 1; case -2: fprintf(stderr, "%s: not found\n", trace); break; default: /* The srf object holds the latest data and trace header blocks */ if( fastq ){ mFILE *mf = mfcreate(NULL, 0); mfwrite(srf->th.trace_hdr, 1, srf->th.trace_hdr_size, mf); mfwrite(srf->tb.trace, 1, srf->tb.trace_size, mf); mfseek(mf, 0, SEEK_SET); ztr_t *ztr = partial_decode_ztr(srf, mf, NULL); ztr2fastq(ztr, trace, calibrated); delete_ztr(ztr); mfdestroy(mf); } else { fwrite(srf->th.trace_hdr, 1, srf->th.trace_hdr_size, stdout); fwrite(srf->tb.trace, 1, srf->tb.trace_size, stdout); } break; } return 0; } io_lib-1.14.6/progs/srf_extract_linear.c0000644000031500020650000001117012354177665015151 00000000000000/* * Copyright (c) 2007-2008 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * This performs a linear (non-indexed) search for a trace in an SRF archive. * * It's not intended as a suitable production program or as a library of code * to use, but as a test and benchmark statistic. */ #ifdef HAVE_CONFIG_H #include "io_lib_config.h" #endif #include #include #include #include #include #include #include /* ------------------------------------------------------------------------ */ /* * Looks for a trace name in an SRF archive and returns the binary contents * if found, or NULL if not. */ mFILE *find_reading(srf_t *srf, char *tr_name) { do { int type; switch(type = srf_next_block_type(srf)) { case -1: /* EOF */ return NULL; case SRFB_CONTAINER: if (0 != srf_read_cont_hdr(srf, &srf->ch)) return NULL; break; case SRFB_XML: if (0 != srf_read_xml(srf, &srf->xml)) return NULL; break; case SRFB_TRACE_HEADER: { /* off_t pos = ftell(srf->fp); */ if (0 != srf_read_trace_hdr(srf, &srf->th)) return NULL; #if 0 /* * If the name prefix doesn't match tr_name then skip this entire * block. */ if (0 != strncmp(tr_name, srf->th.id_prefix, strlen(srf->th.id_prefix)) && 0 != srf->th.next_block_offset) { fseek(srf->fp, pos + srf->th.next_block_offset, SEEK_SET); } #endif break; } case SRFB_TRACE_BODY: { mFILE *mf = mfcreate(NULL, 0); srf_trace_body_t tb; char name[512]; if (!mf || 0 != srf_read_trace_body(srf, &tb, 0)) return NULL; sprintf(name, "%s%s", srf->th.id_prefix, tb.read_id); if (strcmp(name, tr_name)) { mfdestroy(mf); if (tb.trace) free(tb.trace); continue; } if (srf->th.trace_hdr_size) mfwrite(srf->th.trace_hdr, 1, srf->th.trace_hdr_size, mf); if (tb.trace_size) mfwrite(tb.trace, 1, tb.trace_size, mf); if (tb.trace) free(tb.trace); mrewind(mf); return mf; } case SRFB_INDEX: { off_t pos = ftello(srf->fp); srf_read_index_hdr(srf, &srf->hdr, 1); /* Skip the index body */ fseeko(srf->fp, pos + srf->hdr.size, SEEK_SET); break; } case SRFB_NULL_INDEX: break; default: fprintf(stderr, "Block of unknown type '%c'. Aborting\n", type); return NULL; } } while (1); return NULL; } /* ------------------------------------------------------------------------ */ int main(int argc, char **argv) { char *ar_name, *tr_name; mFILE *mf; srf_t *srf; if (argc != 3) { fprintf(stderr, "Usage: extract_linear_srf archive_name trace_name\n"); return 1; } ar_name = argv[1]; tr_name = argv[2]; if (NULL == (srf = srf_open(ar_name, "r"))) { perror(ar_name); return 4; } if (NULL == (mf = find_reading(srf, tr_name))) { fprintf(stderr, "%s not found in archive\n", tr_name); return 3; } #ifdef _WIN32 _setmode(_fileno(stdout), _O_BINARY); #endif fwrite(mf->data, 1, mf->size, stdout); return 0; } io_lib-1.14.6/progs/srf_filter.c0000644000031500020650000011047612545536330013431 00000000000000/* * Copyright (c) 2008-2010, 2013 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * This performs a linear (non-indexed) search for a trace in an SRF archive. * * It's not intended as a suitable production program or as a library of code * to use, but as a test and benchmark statistic. */ #ifdef HAVE_CONFIG_H #include "io_lib_config.h" #endif #include #include #include #include #include #include /* Only need on windows for _O_BINARY */ #include #include #include #include #include #include #include #include #define CR 13 /* Decimal code of Carriage Return char */ #define LF 10 /* Decimal code of Line Feed char */ #define EOF_MARKER 26 /* Decimal code of DOS end-of-file marker */ #define MAX_REC_LEN 1024 /* Maximum size of input buffer */ #define CHUNK_BASE (1 << 0) #define CHUNK_CNF1 (1 << 1) #define CHUNK_CNF4 (1 << 2) #define CHUNK_SAMP (1 << 3) #define CHUNK_SMP4 (1 << 4) #define CHUNK_ALL (CHUNK_BASE | CHUNK_CNF1 | CHUNK_CNF4 | CHUNK_SAMP | CHUNK_SMP4) #define NCHUNKS 6 #define CHUNK_BASE_STR "BASE" #define CHUNK_CNF1_STR "CNF1" #define CHUNK_CNF4_STR "CNF4" #define CHUNK_SAMP_STR "SAMP" #define CHUNK_SMP4_STR "SMP4" #define CHUNK_ALL_STR "ALL" #define TYPE_PROC (1 << 0) #define TYPE_SLXI (1 << 1) #define TYPE_SLXN (1 << 2) #define TYPE_0FAM (1 << 3) #define TYPE_1CY3 (1 << 4) #define TYPE_2TXR (1 << 5) #define TYPE_3CY5 (1 << 6) #define TYPE_ALL (TYPE_PROC | TYPE_SLXI | TYPE_SLXN | TYPE_0FAM | TYPE_1CY3 | TYPE_2TXR | TYPE_3CY5) #define NTYPES 8 #define TYPE_PROC_STR "PROC" #define TYPE_SLXI_STR "SLXI" #define TYPE_SLXN_STR "SLXN" #define TYPE_0FAM_STR "0FAM" #define TYPE_1CY3_STR "1CY3" #define TYPE_2TXR_STR "2TXR" #define TYPE_3CY5_STR "3CY5" #define TYPE_ALL_STR "ALL" /* ------------------------------------------------------------------------ */ /* * All the reads and prefixes will be used to filter reads in an srf archive. * For reads the match with the reads in the archive must be exact. Prefixes * need only match to the beginning of the read, so they are a way to filter * several reads that, for example, belong to the same lane and tile. For * example, if the reads are
:::::, then a * prefix can progress from center all the way to y coordinate in terms of * read specificity. */ typedef struct { int prefixes_size; int reads_size; char** prefixes; /* Prefixes to filter on. */ HashTable *reads_hash; /* Reads to filter on. */ } read_filter_t; /* ------------------------------------------------------------------------ */ /* * Print usage message to stderr and exit with the given \"code\". */ void usage(int code) { fprintf(stderr, "Usage: srf_filter [-c chunk_types] [-f read_filter] [-C] [-o] [-v] input(s) output\n"); fprintf(stderr, "Options:\n"); fprintf(stderr, " -c chunk_types\n"); fprintf(stderr, " Chunk types to output given as a comma delimited list of types.\n"); fprintf(stderr, " The following types are allowed: \"ALL\", \"BASE\", \"CNF1\", \"CNF4\"\n"); fprintf(stderr, " \"SAMP\", \"SMP4\".\n"); fprintf(stderr, " The default is \"ALL\".\n"); fprintf(stderr, "\n -m mdata_types\n"); fprintf(stderr, " SAMP/SMP4 mdata types to output given as a comma delimited list of types.\n"); fprintf(stderr, " The following types are allowed: \"ALL\", \"PROC\", \"SLXI\", \"SLXN\"\n"); fprintf(stderr, " \"0FAM\", \"1CY3\", \"2TXR\", \"3CY5\".\n"); fprintf(stderr, " The default is \"ALL\".\n"); fprintf(stderr, "\n -f read_filter\n"); fprintf(stderr, " The filter to apply to reads in the archive. If reads match the\n"); fprintf(stderr, " filter they are dumped.\n"); fprintf(stderr, " The filter takes the form of =, where can be\n"); fprintf(stderr, " \"read\", \"prefix\", \"file\".\n"); fprintf(stderr, " If the is \"read\" the value is represents the name of a\n"); fprintf(stderr, " read to dump. Only the matching read will be dumped.\n"); fprintf(stderr, " If the is \"prefix\" the value is represents the prefix of\n"); fprintf(stderr, " the name of the reads to dump. Only the matching reads will be\n"); fprintf(stderr, " dumped.\n"); fprintf(stderr, " If the is \"file\" the value is a file name where any\n"); fprintf(stderr, " number of \"read\" and \"prefix\" name value pairs can be included,\n"); fprintf(stderr, " one per line.\n"); fprintf(stderr, " The default is no filter, which means all reads are dumped.\n"); fprintf(stderr, "\n -b exclude bad reads using readsFlags bitmask in data block header.\n"); fprintf(stderr, "\n -2 cyc use this option to add a Illumina-style REGN chunk.\n"); fprintf(stderr, "\n -v Print verbose messages.\n"); fprintf(stderr, "\nUse '-' for the input or output name to read from stdin" " or write to stdout.\n"); fprintf(stderr, "\n"); exit(code); } /* * Reads the lines from the fiven \"input\" file and creates the reads and prefixes * for the read filter. The \"read_filter\" given is allocated. * * Returns 0 on success. Errors cause the usage message and exit. */ int read_filter_from_file(FILE *input, read_filter_t *read_filter) { int isNewline; /* Boolean indicating we've read a CR or LF */ long lFileLen; /* Length of file */ long lIndex; /* Index into cThisLine array */ long lLineCount; /* Current line number */ long lTotalChars; /* Total characters read */ char cThisLine[MAX_REC_LEN]; /* Contents of current line */ char *cFile; /* Dynamically allocated buffer (entire file) */ char *cThisPtr; /* Pointer to current position in cFile */ char *filter_type = NULL; char *prefix; char *read; fseek(input, 0L, SEEK_END); /* Position to end of file */ lFileLen = ftell(input); /* Get file length */ rewind(input); /* Back to start of file */ cFile = calloc(lFileLen + 1, sizeof(char)); if(cFile == NULL ) { fprintf(stderr, "\nInsufficient memory to read file.\n"); return -1; } /* Read the entire file into cFile */ if (1 != fread(cFile, lFileLen, 1, input)) return -1; lLineCount = 0L; lTotalChars = 0L; cThisPtr = cFile; /* Point to beginning of array */ while (*cThisPtr) /* Read until reaching null char */ { lIndex = 0L; /* Reset counters and flags */ isNewline = 0; while (*cThisPtr) /* Read until reaching null char */ { if (!isNewline) /* Haven't read a CR or LF yet */ { if (*cThisPtr == CR || *cThisPtr == LF) /* This char IS a CR or LF */ isNewline = 1; /* Set flag */ } else if (*cThisPtr != CR && *cThisPtr != LF) /* Already found CR or LF */ break; /* Done with line */ /* Don't copy LS or CR */ if (*cThisPtr != CR && *cThisPtr != LF) { cThisLine[lIndex++] = *cThisPtr++; /* Add char to output and increment */ ++lTotalChars; } else { cThisPtr++; } } /* end while (*cThisPtr) */ cThisLine[lIndex] = '\0'; /* Terminate the string */ ++lLineCount; /* Increment the line counter */ /* Find the one and only = in the string. */ if(strchr(cThisLine,'=') != NULL && (strchr(cThisLine,'=') == strrchr(cThisLine,'='))) { filter_type = strtok (cThisLine, "="); } else { fprintf(stderr, "Baddly formatted read filter \"%s\". Expected an \"=\" character in middle of filter.\n", cThisLine); usage(1); } if (!strcmp(filter_type, "prefix")) { prefix = strtok (NULL, "="); if(prefix == NULL) { fprintf(stderr, "Bad prefix \"%s\" in read filter \"%s\".\n", prefix, cThisLine); usage(1); } else { ++(read_filter->prefixes_size); read_filter->prefixes = (char**) realloc (read_filter->prefixes, read_filter->prefixes_size * sizeof(char *)); read_filter->prefixes[read_filter->prefixes_size - 1] = (char*) calloc (strlen(prefix) + 1,sizeof(char)); strcpy(read_filter->prefixes[read_filter->prefixes_size - 1], prefix); } } else if (!strcmp(filter_type, "read")) { read = strtok (NULL, "="); if(read == NULL) { fprintf(stderr, "Bad read \"%s\" in read filter \"%s\".\n", read, cThisLine); usage(1); } else { char *file; HashItem *hi; if( NULL != (file = strchr(read, ' '))) { *file = '\0'; file++; printf("read=%s file=%s\n", read, file); } else { printf("read=%s\n", read); } if (NULL == (hi = (HashTableSearch(read_filter->reads_hash, read, strlen(read))))) { HashData hd; hd.i = read_filter->reads_size; if (NULL == (hi = HashTableAdd(read_filter->reads_hash, read, strlen(read), hd, NULL))) { fprintf(stderr, "\nUnable to process read filter.\n"); return 0; } ++(read_filter->reads_size); } } } else { fprintf(stderr, "Unrecognized filter type \"%s\" given as part of read filter \"%s\". The valid filter types are \"%s\".\n", filter_type, cThisLine, "prefix or read"); usage(1); } } free(cFile); return 0; } /* * Parse the given \"filter_value\" string for the filter value. * * Returns a read filter allocated on the heap which needs to be freed by the * calling function. Errors usually cause the usage message and exit. */ read_filter_t *get_read_filter(char *filter_value) { char *filter_type = NULL; char *file_name = NULL; FILE *fp = NULL; char *prefix = NULL; char *read = NULL; /* Create read filter. */ read_filter_t *read_filter = (read_filter_t *)calloc(1, sizeof(read_filter_t)); if(read_filter == NULL) { return NULL; } read_filter->prefixes_size = 0; read_filter->reads_size = 0; if (NULL == (read_filter->reads_hash = HashTableCreate(0, HASH_DYNAMIC_SIZE|HASH_FUNC_JENKINS3))) { return NULL; } /* Find the one and only = in the string. */ if( strchr(filter_value,'=') != NULL && (strchr(filter_value,'=') == strrchr(filter_value,'=')) ) { filter_type = strtok (filter_value,"="); } else { fprintf(stderr, "Baddly formatted read filter \"%s\". Expected an \"=\" character in middle of filter.\n", filter_value); usage(1); } /* Check the string before the = is a valid filter type. */ if(!strcmp("file", filter_type)) { /* Read the file. */ file_name = strtok (NULL, "="); if(file_name == NULL) { fprintf(stderr, "Bad file name \"%s\" in read filter \"%s\".\n", file_name, filter_value); usage(1); } fp = fopen(file_name, "r"); if(fp == NULL) { fprintf(stderr, "Bad file name \"%s\" in read filter \"%s\".\n", file_name, filter_value); usage(1); } /* Read line by line. */ if(read_filter_from_file(fp, read_filter)) { fprintf(stderr, "Bad contents of file %s.\n", file_name); usage(1); } } else if (!strcmp("prefix", filter_type)) { prefix = strtok (NULL, "="); if(prefix == NULL) { fprintf(stderr, "Bad prefix \"%s\" in read filter \"%s\".\n", prefix, filter_value); usage(1); } else { ++(read_filter->prefixes_size); read_filter->prefixes = (char**) malloc (read_filter->prefixes_size * sizeof(char *)); read_filter->prefixes[read_filter->prefixes_size - 1] = (char*) calloc (strlen(prefix) + 1,sizeof(char)); strcpy(read_filter->prefixes[read_filter->prefixes_size - 1], prefix); } } else if (!strcmp("read", filter_type)) { read = strtok (NULL, "="); if(read == NULL) { fprintf(stderr, "Bad read \"%s\" in read filter \"%s\".\n", read, filter_value); usage(1); } else { HashItem *hi; if (NULL == (hi = (HashTableSearch(read_filter->reads_hash, read, strlen(read))))) { HashData hd; hd.i = 0; if (NULL == (hi = HashTableAdd(read_filter->reads_hash, read, strlen(read), hd, NULL))) { return NULL; } ++(read_filter->reads_size); } } } else { fprintf(stderr, "Unrecognized filter type \"%s\" given as part of read filter \"%s\". The valid filter types are \"%s\".\n", filter_type, filter_value, "prefix, read, or file"); usage(1); } return read_filter; } /* * Parse the comma delimited list of chunk types and put them in the single character \"mode\". * * Returns 0 on success. */ int get_chunk_types(char *arg, char *mode) { int num_allowed_types = NCHUNKS; char *allowed_str_types[] = {CHUNK_BASE_STR,CHUNK_CNF1_STR,CHUNK_CNF4_STR,CHUNK_SAMP_STR,CHUNK_SMP4_STR,CHUNK_ALL_STR}; char allowed_types[] = {CHUNK_BASE,CHUNK_CNF1,CHUNK_CNF4,CHUNK_SAMP,CHUNK_SMP4,CHUNK_ALL}; char *type; int i = 0; type = strtok (arg,","); while(type) { for(i = 0; i < num_allowed_types; i++) { if(!strcmp(type, allowed_str_types[i]) && !(*mode & allowed_types[i])) { *mode += allowed_types[i]; break; } } type = strtok (NULL, ","); } return 0; } /* * Parse the comma delimited list of mdata types and put them in the single character \"mode\". * * Returns 0 on success. */ int get_mdata_types(char *arg, char *mode) { int num_allowed_types = NTYPES; char *allowed_str_types[] = {TYPE_PROC_STR, TYPE_SLXI_STR, TYPE_SLXN_STR, TYPE_0FAM_STR, TYPE_1CY3_STR, TYPE_2TXR_STR, TYPE_3CY5_STR, TYPE_ALL_STR}; char allowed_types[] = {TYPE_PROC, TYPE_SLXI, TYPE_SLXN, TYPE_0FAM, TYPE_1CY3, TYPE_2TXR, TYPE_3CY5, TYPE_ALL}; char *type; int i = 0; type = strtok (arg,","); while(type) { for(i = 0; i < num_allowed_types; i++) { if(!strcmp(type, allowed_str_types[i]) && !(*mode & allowed_types[i])) { *mode += allowed_types[i]; break; } } type = strtok (NULL, ","); } return 0; } /* * Returns 1 is the read \"name\" matches any of the reads or prefixes in the \"read_filter\". */ int check_read_name(read_filter_t *read_filter, char *name) { int i; for(i = 0; i < read_filter->prefixes_size; i++) { if(name == strstr(name, read_filter->prefixes[i])) { return 1; } } if( read_filter->reads_size ){ HashItem *hi; if (NULL != (hi = (HashTableSearch(read_filter->reads_hash, name, strlen(name))))) { return 1; } } return 0; } void dump_read_filter(read_filter_t *read_filter) { int i; printf("Read filter used:\n"); for(i = 0; i < read_filter->prefixes_size; i++) { printf("\tprefix[%d] = %s\n", i, read_filter->prefixes[i]); } if( read_filter->reads_size ){ int ibucket; for (ibucket=0; ibucketreads_hash->nbuckets; ibucket++) { HashItem *hi; for (hi = read_filter->reads_hash->bucket[ibucket]; hi; hi = hi->next) { printf("\tread[%"PRId64"] = %s\n", hi->data.i, hi->key); } } } } void dump_chunk_mode(char mode) { printf("mode: %d.\n", mode); if(mode & CHUNK_BASE) { printf("BASE chunk required.\n"); } if(mode & CHUNK_CNF1) { printf("CNF1 chunk required.\n"); } if(mode & CHUNK_CNF4) { printf("CNF4 chunk required.\n"); } if(mode & CHUNK_SAMP) { printf("SAMP chunk required.\n"); } if(mode & CHUNK_SMP4) { printf("SMP4 chunk required.\n"); } } void dump_mdata_mode(char mode) { printf("mode: %d.\n", mode); if(mode & TYPE_PROC) { printf("Illumina PROC SAMP/SMP4 chunk required.\n"); } if(mode & TYPE_SLXI) { printf("Illumina SLXI SAMP/SMP4 chunk required.\n"); } if(mode & TYPE_SLXN) { printf("Illumina SLXN SAMP/SMP4 chunk required.\n"); } if(mode & TYPE_0FAM) { printf("Solid 0FAM SAMP/SMP4 chunk required.\n"); } if(mode & TYPE_1CY3) { printf("Solid 1CY3 SAMP/SMP4 chunk required.\n"); } if(mode & TYPE_2TXR) { printf("Solid 2TXR SAMP/SMP4 chunk required.\n"); } if(mode & TYPE_3CY5) { printf("Solid 3CY3 SAMP/SMP4 chunk required.\n"); } } /* * ztr_mwrite_chunk * * Writes a ZTR chunk including chunk header and data * * Arguments: * fp A mFILE pointer * chunk A pointer to the chunk to write * * Returns: * Success: 0 * Failure: -1 */ static int ztr_mwrite_chunk(mFILE *fp, ztr_chunk_t *chunk) { int4 bei4; /* { char str[5]; fprintf(stderr, "Write chunk %.4s %08x length %d\n", ZTR_BE2STR(chunk->type, str), chunk->type, chunk->dlength); } */ /* type */ bei4 = be_int4(chunk->type); if (1 != mfwrite(&bei4, 4, 1, fp)) return -1; /* metadata length */ bei4 = be_int4(chunk->mdlength); if (1 != mfwrite(&bei4, 4, 1, fp)) return -1; /* metadata */ if (chunk->mdlength) if (chunk->mdlength != mfwrite(chunk->mdata, 1, chunk->mdlength, fp)) return -1; /* data length */ bei4 = be_int4(chunk->dlength); if (1 != mfwrite(&bei4, 4, 1, fp)) return -1; /* data */ if (chunk->dlength != mfwrite(chunk->data, 1, chunk->dlength, fp)) return -1; return 0; } /* * Adds a ZTR REGN chunk describing the paired-end structure. Ie which bit * is which. This is a simplified form of the more generic REGN contents. * * Returns 0 for success * -1 for failure */ static int add_readpair_region(unsigned int rev_cycle, mFILE *mf) { char *mdata = malloc(100); unsigned char *data = malloc(5); int mdlen; ztr_chunk_t c; if (!data || !mdata) return -1; data[0] = 0; rev_cycle--; /* we count from 0 */ data[1] = (rev_cycle >> 24) & 0xff; data[2] = (rev_cycle >> 16) & 0xff; data[3] = (rev_cycle >> 8) & 0xff; data[4] = (rev_cycle >> 0) & 0xff; mdlen = sprintf(mdata, "NAME%cforward:P;reverse:P%c",0,0); /* Initialise */ c.type = ZTR_TYPE_REGN; c.data = (char *)data; c.dlength = 5; c.mdata = mdata; c.mdlength = mdlen; c.ztr_owns = 1; ztr_mwrite_chunk(mf, &c); free(data); free(mdata); return 0; } /* * Given the input archive name (input), the output archive name (output), * the chunk types to output (chunk_mode) and some other parameters such as * the read filter generates a filtered srf file. * * Note the generated srf file is NOT indexed * * Returns 0 on success. * 1 on failure */ int srf_filter(char *input, srf_t *out_srf, char chunk_mode, char mdata_mode, int filter_mode, read_filter_t *read_filter, int read_mask, int rev_cycle) { srf_t *in_srf; int output_trace_header = 0; char name[1024]; if (0 == strcmp(input, "-")) { /* Read from stdin */ input = "stdin"; #ifdef _WIN32 _setmode(_fileno(stdin), _O_BINARY); #endif if (NULL == (in_srf = srf_create(stdin))) { perror("srf_create"); return 1; } } else { if (NULL == (in_srf = srf_open(input, "rb"))) { perror(input); return 1; } } do { int type; ztr_chunk_t *chunk; switch(type = srf_next_block_type(in_srf)) { mFILE *mf; uint32_t trace_hdr_size; case SRFB_CONTAINER: if (0 != srf_read_cont_hdr(in_srf, &in_srf->ch)) { fprintf(stderr, "Error reading container header.\nExiting.\n"); exit(1); } if (0 != srf_write_cont_hdr(out_srf, &in_srf->ch)) { fprintf(stderr, "Error writing container header.\nExiting.\n"); exit(1); } break; case SRFB_XML: if (0 != srf_read_xml(in_srf, &in_srf->xml)) { fprintf(stderr, "Error reading XML.\nExiting.\n"); exit(1); } if (0 != srf_write_xml(out_srf, &in_srf->xml)) { fprintf(stderr, "Error writing XML.\nExiting.\n"); exit(1); } break; case SRFB_TRACE_HEADER: if (0 != srf_read_trace_hdr(in_srf, &in_srf->th)) { fprintf(stderr, "Error reading trace header.\nExiting.\n"); exit(1); } #if 1 if (chunk_mode == CHUNK_ALL && mdata_mode == TYPE_ALL) { if (!rev_cycle) { output_trace_header = 1; break; } } #endif /* Decode ZTR chunks in the header */ if (in_srf->mf) mfdestroy(in_srf->mf); in_srf->mf = mfcreate(NULL, 0); if (in_srf->th.trace_hdr_size) mfwrite(in_srf->th.trace_hdr, 1, in_srf->th.trace_hdr_size, in_srf->mf); if (in_srf->ztr) delete_ztr(in_srf->ztr); mrewind(in_srf->mf); /* create the trace header data */ mf = mfcreate(NULL, 0); if (NULL != (in_srf->ztr = partial_decode_ztr(in_srf, in_srf->mf, NULL))) { in_srf->mf_pos = mftell(in_srf->mf); mfseek(in_srf->mf, 0, SEEK_END); in_srf->mf_end = mftell(in_srf->mf); mfseek(in_srf->mf, 0, SEEK_SET); mfwrite(in_srf->mf->data, 1, sizeof(ztr_header_t), mf); mfseek(in_srf->mf, sizeof(ztr_header_t), SEEK_CUR); int pos = mftell(in_srf->mf); while ((chunk = ztr_read_chunk_hdr(in_srf->mf))) { char *key = ztr_lookup_mdata_value(in_srf->ztr, chunk, "TYPE"); int flag = 0; /* filter on chunk type */ switch (chunk->type) { case ZTR_TYPE_BASE: if (chunk_mode & CHUNK_BASE) flag = 1; break; case ZTR_TYPE_CNF1: if (chunk_mode & CHUNK_CNF1) flag = 1; break; case ZTR_TYPE_CNF4: if (chunk_mode & CHUNK_CNF4) flag = 1; break; case ZTR_TYPE_REGN: if (!rev_cycle) flag = 1; break; case ZTR_TYPE_SAMP: if (chunk_mode & CHUNK_SAMP) { if (mdata_mode == TYPE_ALL) flag = 1; if ((mdata_mode & TYPE_0FAM) && (key && 0 == strcmp(key, "0FAM"))) flag = 1; if ((mdata_mode & TYPE_1CY3) && (key && 0 == strcmp(key, "1CY3"))) flag = 1; if ((mdata_mode & TYPE_2TXR) && (key && 0 == strcmp(key, "2TXR"))) flag = 1; if ((mdata_mode & TYPE_3CY5) && (key && 0 == strcmp(key, "3CY5"))) flag = 1; } break; case ZTR_TYPE_SMP4: if (chunk_mode & CHUNK_SMP4) { if (mdata_mode == TYPE_ALL) flag = 1; if ((mdata_mode & TYPE_PROC) && (NULL == key || 0 == strcmp(key, "PROC"))) flag = 1; if ((mdata_mode & TYPE_SLXI) && (key && 0 == strcmp(key, "SLXI"))) flag = 1; if ((mdata_mode & TYPE_SLXN) && (key && 0 == strcmp(key, "SLXN"))) flag = 1; } break; default: flag = 1; break; } if (flag) mfwrite(in_srf->mf->data+pos, 1, (4+4+chunk->mdlength+4+chunk->dlength), mf); mfseek(in_srf->mf, chunk->dlength, SEEK_CUR); pos = mftell(in_srf->mf); if (chunk->mdata) xfree(chunk->mdata); xfree(chunk); } if (rev_cycle) { fprintf(stderr, "Adding REGN chunk to trace header\n"); if ( -1 == add_readpair_region(rev_cycle, mf)) { fprintf(stderr, "Failed to add to REGN chunk\n"); exit(1); } } #if 1 if (chunk_mode == CHUNK_ALL && mdata_mode == TYPE_ALL) { mfwrite(in_srf->mf->data+in_srf->mf_pos, 1 , (in_srf->mf_end-in_srf->mf_pos), mf); } #endif } else { /* Maybe not enough to decode or no headerBlob. */ /* So delay until decoding the body. */ in_srf->mf_pos = 0; } mfseek(in_srf->mf, 0, SEEK_END); in_srf->mf_end = mftell(in_srf->mf); /* construct the new trace header */ trace_hdr_size = mftell(mf); char *trace_hdr; if (NULL == (trace_hdr = malloc(trace_hdr_size))) { fprintf(stderr, "Error making trace header.\nExiting.\n"); exit(1); } memcpy(trace_hdr, mf->data, trace_hdr_size); if (out_srf->th.trace_hdr) free(out_srf->th.trace_hdr); srf_construct_trace_hdr(&out_srf->th, in_srf->th.id_prefix, (uc *)trace_hdr, trace_hdr_size); output_trace_header = 1; mfdestroy(mf); break; case SRFB_TRACE_BODY: { srf_trace_body_t old_tb; ztr_t *ztr_tmp; if (0 != srf_read_trace_body(in_srf, &old_tb, 0)) { fprintf(stderr, "Error reading trace body.\nExiting.\n"); exit(1); } if (-1 == construct_trace_name(in_srf->th.id_prefix, (unsigned char *)old_tb.read_id, old_tb.read_id_length, name, 512)) { fprintf(stderr, "Error constructing trace name.\nExiting.\n"); exit(1); } if (old_tb.flags & read_mask) { if (old_tb.trace_size) free(old_tb.trace); break; } if (filter_mode && !check_read_name(read_filter, name)) { if (old_tb.trace_size) free(old_tb.trace); break; } #if 1 if (chunk_mode == CHUNK_ALL && mdata_mode == TYPE_ALL) { /* output the trace header as required */ if( output_trace_header ) { output_trace_header = 0; if (!rev_cycle ) { if (0 != srf_write_trace_hdr(out_srf, &in_srf->th)) { fprintf(stderr, "Error writing trace header.\nExiting.\n"); exit(1); } }else{ if (0 != srf_write_trace_hdr(out_srf, &out_srf->th)) { fprintf(stderr, "Error writing trace header.\nExiting.\n"); exit(1); } } } if (!rev_cycle || (rev_cycle && in_srf->mf_pos)) { if (0 != srf_write_trace_body(out_srf, &old_tb)) { fprintf(stderr, "Error writing trace body.\nExiting.\n"); exit(1); } } if (old_tb.trace_size) free(old_tb.trace); break; } #endif if (!in_srf->mf) { fprintf(stderr, "Error reading trace body.\nExiting.\n"); exit(1); } mfseek(in_srf->mf, in_srf->mf_end, SEEK_SET); if (old_tb.trace_size) { mfwrite(old_tb.trace, 1, old_tb.trace_size, in_srf->mf); free(old_tb.trace); old_tb.trace = NULL; } mftruncate(in_srf->mf, mftell(in_srf->mf)); mfseek(in_srf->mf, in_srf->mf_pos, SEEK_SET); if (in_srf->ztr) ztr_tmp = ztr_dup(in_srf->ztr); /* inefficient, but simple */ else ztr_tmp = NULL; if ((ztr_tmp = partial_decode_ztr(in_srf, in_srf->mf, ztr_tmp))) { /* create the trace body data */ mFILE *mf = mfcreate(NULL, 0); /* include the ztr header if it wasn't in the trace header block */ if( !in_srf->mf_pos ){ mfseek(in_srf->mf, 0, SEEK_SET); mfwrite(in_srf->mf->data, 1, sizeof(ztr_header_t), mf); mfseek(in_srf->mf, sizeof(ztr_header_t), SEEK_CUR); }else{ mfseek(in_srf->mf, in_srf->mf_pos, SEEK_SET); } int pos = mftell(in_srf->mf); while ((chunk = ztr_read_chunk_hdr(in_srf->mf))) { char *key = ztr_lookup_mdata_value(ztr_tmp, chunk, "TYPE"); int flag = 0; /* filter on chunk type */ switch (chunk->type) { case ZTR_TYPE_BASE: if (chunk_mode & CHUNK_BASE) flag = 1; break; case ZTR_TYPE_CNF1: if (chunk_mode & CHUNK_CNF1) flag = 1; break; case ZTR_TYPE_CNF4: if (chunk_mode & CHUNK_CNF4) flag = 1; break; case ZTR_TYPE_REGN: if (rev_cycle && in_srf->mf_pos) { fprintf(stderr, "Added REGN chunk to trace header but found REGN chunk in trace body\n"); exit(1); } if (!rev_cycle) flag = 1; break; case ZTR_TYPE_SAMP: if (chunk_mode & CHUNK_SAMP) { if (mdata_mode == TYPE_ALL) flag = 1; if ((mdata_mode & TYPE_0FAM) && (key && 0 == strcmp(key, "0FAM"))) flag = 1; if ((mdata_mode & TYPE_1CY3) && (key && 0 == strcmp(key, "1CY3"))) flag = 1; if ((mdata_mode & TYPE_2TXR) && (key && 0 == strcmp(key, "2TXR"))) flag = 1; if ((mdata_mode & TYPE_3CY5) && (key && 0 == strcmp(key, "3CY5"))) flag = 1; } break; case ZTR_TYPE_SMP4: if (chunk_mode & CHUNK_SMP4) { if (mdata_mode == TYPE_ALL) flag = 1; if ((mdata_mode & TYPE_PROC) && (NULL == key || 0 == strcmp(key, "PROC"))) flag = 1; if ((mdata_mode & TYPE_SLXI) && (key && 0 == strcmp(key, "SLXI"))) flag = 1; if ((mdata_mode & TYPE_SLXN) && (key && 0 == strcmp(key, "SLXN"))) flag = 1; } break; default: flag = 1; break; } if (flag) mfwrite(in_srf->mf->data+pos, 1, (4+4+chunk->mdlength+4+chunk->dlength), mf); mfseek(in_srf->mf, chunk->dlength, SEEK_CUR); pos = mftell(in_srf->mf); if (chunk->mdata) xfree(chunk->mdata); xfree(chunk); } if (rev_cycle && !in_srf->mf_pos) { fprintf(stderr, "Adding REGN chunk to trace body\n"); if ( -1 == add_readpair_region(rev_cycle, mf)) { fprintf(stderr, "Failed to add to REGN chunk\n"); exit(1); } } /* output the trace header as required */ if( output_trace_header ) { output_trace_header = 0; if (0 != srf_write_trace_hdr(out_srf, &out_srf->th)) { fprintf(stderr, "Error writing trace header.\nExiting.\n"); exit(1); } } /* construct the new trace body */ srf_trace_body_t new_tb; srf_construct_trace_body(&new_tb, name+strlen(in_srf->th.id_prefix), -1, (uc *)mf->data, mf->size, old_tb.flags); if (0 != srf_write_trace_body(out_srf, &new_tb)) { fprintf(stderr, "Error writing trace body.\nExiting.\n"); exit(1); } mfdestroy(mf); } if( ztr_tmp ) delete_ztr(ztr_tmp); break; } case -1: { /* are we really at the end of the srf file */ long pos = ftell(in_srf->fp); fseek(in_srf->fp, 0, SEEK_END); if( pos != ftell(in_srf->fp) ){ srf_destroy(in_srf, 1); fprintf(stderr, "srf file is corrupt\n"); return 1; } srf_destroy(in_srf, 1); return 0; } case SRFB_NULL_INDEX: { /* * Maybe the last 8 bytes of a the file (or previously was * last 8 bytes prior to concatenating SRF files together). * If so it's the index length and should always be 8 zeros. */ uint64_t ilen; if (1 != fread(&ilen, 8, 1, in_srf->fp)) { srf_destroy(in_srf, 1); fprintf(stderr, "srf file is corrupt\n"); return 1; } if (ilen != 0) { srf_destroy(in_srf, 1); fprintf(stderr, "srf file is corrupt\n"); return 1; } break; } case SRFB_INDEX: { off_t pos = ftell(in_srf->fp); srf_read_index_hdr(in_srf, &in_srf->hdr, 1); /* Skip the index body */ if (0 != fseeko(in_srf->fp, pos + in_srf->hdr.size, SEEK_SET)) { char temp[65536]; ssize_t to_read; if (EBADF != errno && ESPIPE != errno) { perror(input); srf_destroy(in_srf, 1); return 1; } to_read = in_srf->hdr.size - in_srf->hdr.index_hdr_sz; while (to_read > 0) { size_t nmemb = to_read > sizeof(temp) ? sizeof(temp) : to_read; size_t bytes = fread(temp, 1, nmemb, in_srf->fp); if (bytes < nmemb) break; to_read -= bytes; } if (to_read > 0) { if (ferror(in_srf->fp)) { perror(input); } else { fprintf(stderr, "srf file '%s' truncated.", input); } srf_destroy(in_srf, 1); return 1; } } break; } default: srf_destroy(in_srf, 1); fprintf(stderr, "Block of unknown type '%c'. Aborting\n", type); return 1; } } while (1); srf_destroy(in_srf, 1); return 0; } /* ------------------------------------------------------------------------ */ /* * Main method. */ int main(int argc, char **argv) { int nfiles, ifile; int filter_mode = 0; char *input = NULL; char *output = NULL; read_filter_t *read_filter = NULL; char *filter_value = NULL; int rev_cycle = 0; int c; int errflg = 0; extern char *optarg; extern int optind, optopt; char chunk_mode = CHUNK_ALL; char mdata_mode = TYPE_ALL; int verbose = 0; int read_mask = 0; srf_t *srf = NULL; while ((c = getopt(argc, argv, ":c:m:f:vb2:")) != -1) { switch (c) { case 'c': chunk_mode = 0; if(get_chunk_types(optarg, &chunk_mode) || !chunk_mode) { fprintf(stderr, "Invalid value \"%s\" given to option -%c.\n", optarg, c); errflg++; } break; case 'm': mdata_mode = 0; if(get_mdata_types(optarg, &mdata_mode) || !mdata_mode) { fprintf(stderr, "Invalid value \"%s\" given to option -%c.\n", optarg, c); errflg++; } break; case 'f': filter_mode++; filter_value = optarg; break; case 'v': verbose++; break; case 'b': read_mask = SRF_READ_FLAG_BAD_MASK; break; case '2': rev_cycle = atoi(optarg); break; case ':': /* -? without operand */ fprintf(stderr, "Option -%c requires an operand\n", optopt); errflg++; break; case '?': fprintf(stderr, "Unrecognised option: -%c\n", optopt); errflg++; } } if (errflg) { usage(1); } nfiles = (argc-optind); if( nfiles < 2 ){ fprintf(stderr, "Please specify input archive name(s) and an output archive name.\n"); usage(1); } output = argv[optind+nfiles-1]; nfiles--; if(filter_mode) { read_filter = get_read_filter(filter_value); if(verbose) { dump_read_filter(read_filter); } } if(chunk_mode && verbose) { dump_chunk_mode(chunk_mode); } if(mdata_mode && verbose) { dump_mdata_mode(mdata_mode); } if (0 == strcmp(output, "-")) { #ifdef _WIN32 _setmode(_fileno(stdout), _O_BINARY); #endif if (NULL == (srf = srf_create(stdout))) { perror("srf_create"); return 1; } } else { if (NULL == (srf = srf_open(output, "wb"))) { perror(output); return 1; } } for (ifile=0; ifile #include #include #include #include #include #include #include #include #include /* ------------------------------------------------------------------------ */ void usage(int code) { printf("Usage: srf_index_hash [-c] srf_file\n"); printf(" Options:\n"); printf(" -c check an existing index, don't re-index\n"); exit(code); } int main(int argc, char **argv) { srf_t *srf; uint64_t pos; char name[512]; int i, type; char *archive; int dbh_pos_stored_sep = 0; int check = 0; off_t old_index = 0; srf_index_t *idx; /* Parse args */ for (i = 1; i < argc && argv[i][0] == '-'; i++) { if (!strcmp(argv[i], "-")) { break; } else if (!strcmp(argv[i], "-c")) { check = 1; } else if (!strcmp(argv[i], "-h")) { usage(0); } else { usage(1); } } if (argc != (i+1)) { usage(1); } archive = argv[i]; if( check ){ srf = srf_open(archive, "rb"); } else { srf = srf_open(archive, "r+b"); } if (NULL == srf ){ perror(argv[i]); return 1; } idx = srf_index_create(NULL, NULL, dbh_pos_stored_sep); if (NULL == idx) return 1; /* Scan through file gathering the details to index in memory */ while ((type = srf_next_block_details(srf, &pos, name)) >= 0) { /* Only want this set if the last block in the file is an index */ old_index = 0; switch (type) { case SRFB_CONTAINER: if (srf_index_add_cont_hdr(idx, pos)) return 1; break; case SRFB_TRACE_HEADER: if (srf_index_add_trace_hdr(idx, pos)) return 1; break; case SRFB_TRACE_BODY: if (srf_index_add_trace_body(idx, name, pos)) return 1; break; case SRFB_INDEX: /* An old index */ old_index = pos; break; case SRFB_NULL_INDEX: old_index = pos; break; default: abort(); } } /* the type should be -1 (EOF) */ if( type != -1 ) abort(); /* are we really at the end of the srf file */ pos = ftell(srf->fp); fseek(srf->fp, 0, SEEK_END); if( pos != ftell(srf->fp) ){ fprintf(stderr, "srf file is corrupt\n"); return 1; } if (check) { srf_index_destroy(idx); srf_destroy(srf, 1); return 0; } /* Write out the index */ if (old_index) fseeko(srf->fp, old_index, SEEK_SET); srf_index_stats(idx, NULL); srf_index_write(srf, idx); /* Truncate incase we've somehow overwritten an old longer index */ if (ftello(srf->fp) != -1 && ftruncate(fileno(srf->fp), ftello(srf->fp)) == -1) return -1; srf_index_destroy(idx); srf_destroy(srf, 1); return 0; } io_lib-1.14.6/progs/srf_info.c0000644000031500020650000006123312354177665013105 00000000000000/* * Copyright (c) 2008-2010, 2013 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * This performs a linear (non-indexed) search for a trace in an SRF archive. * * It's not intended as a suitable production program or as a library of code * to use, but as a test and benchmark statistic. */ #ifdef HAVE_CONFIG_H #include "io_lib_config.h" #endif #include #include #include #include #include #include #include #include #include #include #include #include #define LEVEL_READ (1 << 0) #define LEVEL_CHUNK (1 << 1) #define LEVEL_NAME (1 << 2) #define LEVEL_BASE (1 << 3) #define LEVEL_ALL (LEVEL_READ | LEVEL_CHUNK | LEVEL_NAME | LEVEL_BASE ); /* only checks the first 10 traces */ #define LEVEL_CHECK 255 #define READ_GOOD 0 #define READ_BAD 1 #define READ_TOTAL 2 #define NREADS 3 #define READ_GOOD_STR "GOOD" #define READ_BAD_STR "BAD" #define READ_TOTAL_STR "TOTAL" /* see ztr.h for a list of all possible ztr chunk types */ #define CHUNK_BASE 0 #define CHUNK_CNF1 1 #define CHUNK_CNF4 2 #define CHUNK_SAMP 3 #define CHUNK_SMP4 4 #define CHUNK_REGN 5 #define NCHUNKS 6 #define CHUNK_BASE_TYPE ZTR_TYPE_BASE #define CHUNK_CNF1_TYPE ZTR_TYPE_CNF1 #define CHUNK_CNF4_TYPE ZTR_TYPE_CNF4 #define CHUNK_SAMP_TYPE ZTR_TYPE_SAMP #define CHUNK_SMP4_TYPE ZTR_TYPE_SMP4 #define CHUNK_REGN_TYPE ZTR_TYPE_REGN #define KEY_TYPE 0 #define KEY_VALTYPE 1 #define KEY_GROUP 2 #define KEY_OFFS 3 #define KEY_SCALE 4 #define KEY_COORD 5 #define KEY_NAME 6 #define NKEYS 7 #define KEY_TYPE_STR "TYPE" #define KEY_VALTYPE_STR "VALTYPE" #define KEY_GROUP_STR "GROUP" #define KEY_OFFS_STR "OFFS" #define KEY_SCALE_STR "SCALE" #define KEY_COORD_STR "COORD" #define KEY_NAME_STR "NAME" #define TYPE_PROC 0 #define TYPE_SLXI 1 #define TYPE_SLXN 2 #define TYPE_0FAM 3 #define TYPE_1CY3 4 #define TYPE_2TXR 5 #define TYPE_3CY5 6 #define NTYPES 7 #define TYPE_PROC_STR "PROC" #define TYPE_SLXI_STR "SLXI" #define TYPE_SLXN_STR "SLXN" #define TYPE_0FAM_STR "0FAM" #define TYPE_1CY3_STR "1CY3" #define TYPE_2TXR_STR "2TXR" #define TYPE_3CY5_STR "3CY5" #define MAX_REGIONS 4 /* regn chunk */ typedef struct { char coord; char *region_names; int nregions; char *name[MAX_REGIONS]; char code[MAX_REGIONS]; int start[MAX_REGIONS]; int length[MAX_REGIONS]; int count; } regn_t; /* ------------------------------------------------------------------------ */ /* * Print usage message to stderr and exit with the given \"code\". */ void usage(int code) { fprintf(stderr, "Usage: srf_info [-level level_bitmap] input(s)\n"); fprintf(stderr, "Options:\n"); fprintf(stderr, " -l level_bitmap \n"); fprintf(stderr, " 1\tCount of good/bad reads.\n"); fprintf(stderr, " 2\tCounts for selected chunk types.\n"); fprintf(stderr, " 4\tTrace count and trace name prefix for each trace_header.\n"); fprintf(stderr, " 8\tBase count.\n"); fprintf(stderr, "\n"); exit(code); } /* * Parse the REGN chunk, add to regn HASH * * Returns corresponding HashItem * from regn Hash */ HashItem *parse_regn(ztr_t *z, ztr_chunk_t *chunk, HashTable *regn_hash) { char key[1024]; char *name; HashItem *hi; regn_t *regn; size_t l; uncompress_chunk(z, chunk); /* the hash key is a combination of the region names and boundaries */ name = ztr_lookup_mdata_value(z, chunk, "NAME"); l = snprintf(key, sizeof(key), "names=%s", name); if( chunk->dlength ){ int nbndy = (chunk->dlength-1)/4; uint4 *bndy = (uint4 *)(chunk->data+1); int ibndy; for (ibndy=0; ibndycoord = (NULL == coord ? 'B' : *coord ); regn->region_names = strdup(name); cp1 = strtok (regn->region_names,";"); while(cp1) { char *cp2; if(NULL == (cp2 = strchr(cp1,':'))) { fprintf(stderr, "Invalid region name/code pair %s\n", cp1); return NULL; } *cp2++ = '\0'; regn->name[nregions] = cp1; regn->code[nregions] = *cp2; nregions++; cp1 = strtok (NULL, ";"); } regn->nregions = nregions; if( chunk->dlength ) { nbndy = (chunk->dlength-1)/4; memcpy(bndy, chunk->data+1, chunk->dlength-1); } for( iregion=0, ibndy=0; iregioncode[iregion] == 'E' ){ /* no sequence, length = 0 */ regn->start[iregion] = (iregion ? (regn->start[iregion-1] + regn->length[iregion-1]) : 0); regn->length[iregion] = 0; }else{ if( ibndy > nbndy ){ fprintf(stderr, "More name/code pairs than boundaries\n"); return NULL; } regn->start[iregion] = (iregion ? (regn->start[iregion-1] + regn->length[iregion-1]) : 0); regn->length[iregion] = (ibndy == nbndy ? -1 : (be_int4(bndy[ibndy])-regn->start[iregion])); ibndy++; } } regn->count = 1; hd.p = regn; if (NULL == (hi = HashTableAdd(regn_hash, key, strlen(key), hd, NULL))) { free(regn->region_names); free(regn); return NULL; } } else { regn = (regn_t *)(hi->data.p); regn->count++; } return hi; } /* * Parse the sequence * * Returns 0 on success. */ int parse_base(ztr_t *z, ztr_chunk_t *chunk, uint64_t *base_count) { int i; uncompress_chunk(z, chunk); for (i = 1; i < chunk->dlength; i++) { char base = chunk->data[i]; uint1 key; switch (base) { case 'A': case 'a': key = 0; break; case 'C': case 'c': key = 1; break; case 'G': case 'g': key = 2; break; case 'T': case 't': key = 3; break; default: key = 4; break; } base_count[key]++; } return 0; } /* * count the mdata keys * * Returns 0 on success. */ int count_mdata_keys(ztr_t *z, ztr_chunk_t *chunk, int ichunk, long key_count[NCHUNKS][NKEYS], long type_count[NCHUNKS][NTYPES]) { char *keys_str[] = {KEY_TYPE_STR, KEY_VALTYPE_STR, KEY_GROUP_STR, KEY_OFFS_STR, KEY_SCALE_STR, KEY_COORD_STR, KEY_NAME_STR}; char *types_str[] = {TYPE_PROC_STR, TYPE_SLXI_STR, TYPE_SLXN_STR, TYPE_0FAM_STR, TYPE_1CY3_STR, TYPE_2TXR_STR, TYPE_3CY5_STR}; int ikey, itype; if (z->header.version_major > 1 || z->header.version_minor >= 2) { /* ZTR format 1.2 onwards */ char *cp = chunk->mdata; int32_t dlen = chunk->mdlength; /* * NB: we may wish to rewrite this using a dedicated state machine * instead of strlen/strcmp as this currently assumes the meta- * data is correctly formatted, which we cannot assume as the * metadata is external and outside of our control. * Passing in non-nul terminated strings could crash this code. */ while (dlen > 0) { size_t l; /* key */ l = strlen(cp); for (ikey=0; ikeytype) { case ZTR_TYPE_SAMP: case ZTR_TYPE_SMP4: key_count[ichunk][KEY_TYPE]++; for (itype=0; itypemdata, types_str[itype])) { type_count[ichunk][itype]++; } break; default: break; } } return 0; } /* * As per partial_decode_ztr in srf.c, but without uncompress_ztr. */ ztr_t *partial_decode_ztr2(srf_t *srf, mFILE *mf, ztr_t *z) { ztr_t *ztr; ztr_chunk_t *chunk; long pos = 0; if (z) { /* Use existing ZTR object => already loaded header */ ztr = z; } else { /* Allocate or use existing ztr */ if (NULL == (ztr = new_ztr())) return NULL; /* Read the header */ if (-1 == ztr_read_header(mf, &ztr->header)) { if (!z) delete_ztr(ztr); mrewind(mf); return NULL; } /* Check magic number and version */ if (memcmp(ztr->header.magic, ZTR_MAGIC, 8) != 0) { if (!z) delete_ztr(ztr); mrewind(mf); return NULL; } if (ztr->header.version_major != ZTR_VERSION_MAJOR) { if (!z) delete_ztr(ztr); mrewind(mf); return NULL; } } /* Load chunks */ pos = mftell(mf); while ((chunk = ztr_read_chunk_hdr(mf))) { chunk->data = (char *)xmalloc(chunk->dlength); if (chunk->dlength != mfread(chunk->data, 1, chunk->dlength, mf)) break; ztr->nchunks++; ztr->chunk = (ztr_chunk_t *)xrealloc(ztr->chunk, ztr->nchunks * sizeof(ztr_chunk_t)); memcpy(&ztr->chunk[ztr->nchunks-1], chunk, sizeof(*chunk)); xfree(chunk); pos = mftell(mf); } /* * At this stage we're 'pos' into the mFILE mf with any remainder being * a partial block. */ if (0 == ztr->nchunks) { if (!z) delete_ztr(ztr); mrewind(mf); return NULL; } /* Ensure we exit at the start of a ztr CHUNK */ mfseek(mf, pos, SEEK_SET); /* If this is the header part, ensure we uncompress and init. data */ if (!z) { /* Force caching of huffman code_sets */ ztr_find_hcode(ztr, CODE_USER); /* And uncompress the rest */ uncompress_ztr(ztr); } return ztr; } /* * Given the archive name and the level_mode * generate information about the archive * * Note the generated srf file is NOT indexed * * Returns 0 on success. */ int srf_info(char *input, int level_mode, long *read_count, long *chunk_count, uint64_t *chunk_size, long key_count[NCHUNKS][NKEYS], long type_count[NCHUNKS][NTYPES], HashTable *regn_hash, uint64_t *base_count) { srf_t *srf; off_t pos; int type; int count = 0; long trace_body_count = 0; char name[1024]; if (NULL == (srf = srf_open(input, "rb"))) { perror(input); return 1; } while ((type = srf_next_block_type(srf)) >= 0) { switch (type) { case SRFB_CONTAINER: if( trace_body_count ){ if( level_mode & LEVEL_NAME ) printf( " ... %s x%ld\n", name+strlen(srf->th.id_prefix), trace_body_count); trace_body_count = 0; } if (0 != srf_read_cont_hdr(srf, &srf->ch)) { fprintf(stderr, "Error reading container header.\nExiting.\n"); exit(1); } break; case SRFB_XML: if( trace_body_count ){ if( level_mode & LEVEL_NAME ) printf( " ... %s x%ld\n", name+strlen(srf->th.id_prefix), trace_body_count); trace_body_count = 0; } if (0 != srf_read_xml(srf, &srf->xml)) { fprintf(stderr, "Error reading XML.\nExiting.\n"); exit(1); } break; case SRFB_TRACE_HEADER: if( trace_body_count ){ if( level_mode & LEVEL_NAME ) printf( " ... %s x%ld\n", name+strlen(srf->th.id_prefix), trace_body_count); trace_body_count = 0; } if (0 != srf_read_trace_hdr(srf, &srf->th)) { fprintf(stderr, "Error reading trace header.\nExiting.\n"); exit(1); } if( 0 == (level_mode & (LEVEL_CHUNK | LEVEL_BASE)) ) break; /* Decode ZTR chunks in the header */ if (srf->mf) mfdestroy(srf->mf); srf->mf = mfcreate(NULL, 0); if (srf->th.trace_hdr_size) mfwrite(srf->th.trace_hdr, 1, srf->th.trace_hdr_size, srf->mf); if (srf->ztr) delete_ztr(srf->ztr); mrewind(srf->mf); if (NULL != (srf->ztr = partial_decode_ztr(srf, srf->mf, NULL))) { srf->mf_pos = mftell(srf->mf); } else { /* Maybe not enough to decode or no headerBlob. */ /* So delay until decoding the body. */ srf->mf_pos = 0; } mfseek(srf->mf, 0, SEEK_END); srf->mf_end = mftell(srf->mf); break; case SRFB_TRACE_BODY: { srf_trace_body_t old_tb; ztr_t *ztr_tmp; int no_trace = (level_mode & (LEVEL_CHUNK | LEVEL_BASE) ? 0 : 1); if (0 != srf_read_trace_body(srf, &old_tb, no_trace)) { fprintf(stderr, "Error reading trace body.\nExiting.\n"); exit(1); } if (-1 == construct_trace_name(srf->th.id_prefix, (unsigned char *)old_tb.read_id, old_tb.read_id_length, name, 512)) { fprintf(stderr, "Error constructing trace name.\nExiting.\n"); exit(1); } trace_body_count++; if( 1 == trace_body_count ){ if( level_mode & LEVEL_NAME ) printf( "trace_name: %s + %s", srf->th.id_prefix, name+strlen(srf->th.id_prefix)); } read_count[READ_TOTAL]++; if (old_tb.flags & SRF_READ_FLAG_BAD_MASK ){ read_count[READ_BAD]++; } else { read_count[READ_GOOD]++; } if( 0 == (level_mode & (LEVEL_CHUNK | LEVEL_BASE)) ) break; if (!srf->mf) { fprintf(stderr, "Error reading trace body.\nExiting.\n"); exit(1); } mfseek(srf->mf, srf->mf_end, SEEK_SET); if (old_tb.trace_size) { mfwrite(old_tb.trace, 1, old_tb.trace_size, srf->mf); free(old_tb.trace); old_tb.trace = NULL; } mftruncate(srf->mf, mftell(srf->mf)); mfseek(srf->mf, srf->mf_pos, SEEK_SET); if (srf->ztr) ztr_tmp = ztr_dup(srf->ztr); /* inefficient, but simple */ else ztr_tmp = NULL; if ((ztr_tmp = partial_decode_ztr(srf, srf->mf, ztr_tmp))) { int i; for (i=0; inchunks; i++) { int ichunk = -1; switch (ztr_tmp->chunk[i].type) { case ZTR_TYPE_BASE: ichunk = CHUNK_BASE; chunk_size[ichunk] += ztr_tmp->chunk[i].dlength; if( parse_base(ztr_tmp, &ztr_tmp->chunk[i], base_count) ){ delete_ztr(ztr_tmp); return 1; } break; case ZTR_TYPE_CNF1: ichunk = CHUNK_CNF1; chunk_size[ichunk] += ztr_tmp->chunk[i].dlength; break; case ZTR_TYPE_CNF4: ichunk = CHUNK_CNF4; chunk_size[ichunk] += ztr_tmp->chunk[i].dlength; break; case ZTR_TYPE_SAMP: ichunk = CHUNK_SAMP; chunk_size[ichunk] += ztr_tmp->chunk[i].dlength; break; case ZTR_TYPE_SMP4: ichunk = CHUNK_SMP4; chunk_size[ichunk] += ztr_tmp->chunk[i].dlength; break; case ZTR_TYPE_REGN: ichunk = CHUNK_REGN; chunk_size[ichunk] += ztr_tmp->chunk[i].dlength; if( NULL == parse_regn(ztr_tmp, &ztr_tmp->chunk[i], regn_hash) ){ delete_ztr(ztr_tmp); return 1; } break; default: break; } if( ichunk > -1 ) { chunk_count[ichunk]++; count_mdata_keys(ztr_tmp, &ztr_tmp->chunk[i], ichunk, key_count, type_count); } } } if( ztr_tmp ) delete_ztr(ztr_tmp); count++; if( (level_mode == LEVEL_CHECK) && (count == 10) ){ printf( " ... %s x%ld\n", name+strlen(srf->th.id_prefix), trace_body_count); srf_destroy(srf, 1); return 0; } break; } case SRFB_INDEX: { off_t pos = ftell(srf->fp); if( trace_body_count ){ if( level_mode & LEVEL_NAME ) printf( " ... %s x%ld\n", name+strlen(srf->th.id_prefix), trace_body_count); trace_body_count = 0; } printf( "Reading srf index block\n"); if (0 != srf_read_index_hdr(srf, &srf->hdr, 1)) { srf_destroy(srf, 1); fprintf(stderr, "Error reading srf index block header.\nExiting.\n"); exit(1); } /* Skip the index body */ fseeko(srf->fp, pos + srf->hdr.size, SEEK_SET); break; } case SRFB_NULL_INDEX: { uint64_t ilen; if( trace_body_count ){ if( level_mode & LEVEL_NAME ) printf( " ... %s x%ld\n", name+strlen(srf->th.id_prefix), trace_body_count); trace_body_count = 0; } printf( "Reading srf null index block\n"); /* * Maybe the last 8 bytes of a the file (or previously was * last 8 bytes prior to concatenating SRF files together). * If so it's the index length and should always be 8 zeros. */ if (1 != fread(&ilen, 8, 1, srf->fp)) { srf_destroy(srf, 1); fprintf(stderr, "Error reading srf null index block.\nExiting.\n"); exit(1); } if (ilen != 0) { srf_destroy(srf, 1); fprintf(stderr, "Invalid srf null index block.\nExiting.\n"); exit(1); } break; } default: srf_destroy(srf, 1); fprintf(stderr, "Block of unknown type '%c'\nExiting.\n", type); exit(1); } } if( trace_body_count ){ if( level_mode & LEVEL_NAME ) printf( " ... %s x%ld\n", name+strlen(srf->th.id_prefix), trace_body_count); trace_body_count = 0; } /* the type should be -1 (EOF) */ if( type != -1 ) { fprintf(stderr, "Block of unknown type '%c'\nExiting.\n", type); exit(1); } /* are we really at the end of the srf file */ pos = ftell(srf->fp); fseek(srf->fp, 0, SEEK_END); if( pos != ftell(srf->fp) ){ fprintf(stderr, "srf file is corrupt\n"); exit(1); } srf_destroy(srf, 1); return 0; } /* ------------------------------------------------------------------------ */ /* * Main method. */ int main(int argc, char **argv) { int ifile, nfiles; char *input = NULL; int c; int errflg = 0; extern char *optarg; extern int optind, optopt; int level_mode = LEVEL_ALL; long read_count[NREADS]; char *read_str[] = {READ_GOOD_STR, READ_BAD_STR, READ_TOTAL_STR}; long chunk_count[NCHUNKS]; uint64_t chunk_size[NCHUNKS]; uint4 chunk_type[] = {CHUNK_BASE_TYPE, CHUNK_CNF1_TYPE, CHUNK_CNF4_TYPE, CHUNK_SAMP_TYPE, CHUNK_SMP4_TYPE, CHUNK_REGN_TYPE}; long key_count[NCHUNKS][NKEYS]; char *keys_str[] = {KEY_TYPE_STR, KEY_VALTYPE_STR, KEY_GROUP_STR, KEY_OFFS_STR, KEY_SCALE_STR, KEY_COORD_STR, KEY_NAME_STR}; long type_count[NCHUNKS][NTYPES]; char *types_str[] = {TYPE_PROC_STR, TYPE_SLXI_STR, TYPE_SLXN_STR, TYPE_0FAM_STR, TYPE_1CY3_STR, TYPE_2TXR_STR, TYPE_3CY5_STR}; int iread, ichunk, ikey, itype; while ((c = getopt(argc, argv, "l:")) != -1) { switch (c) { case 'l': if (1 != sscanf(optarg, "%d", &level_mode)) { fprintf(stderr, "Otion -%c requires an operand\n", optopt); errflg++; } break; case ':': /* -? without operand */ fprintf(stderr, "Option -%c requires an operand\n", optopt); errflg++; break; case '?': fprintf(stderr, "Unrecognised option: -%c\n", optopt); errflg++; } } if (errflg) { usage(1); } nfiles = (argc-optind); if( nfiles < 1 ){ fprintf(stderr, "Please specify input archive name(s).\n"); usage(1); } for (ifile=0; ifilenbuckets; ibucket++) { HashItem *hi; for (hi = regn_hash->bucket[ibucket]; hi; hi = hi->next) { regn_t *regn = (regn_t *)hi->data.p; printf(" %s x%d\n", hi->key, regn->count); } } } } } } } } /* base counts */ if( level_mode & LEVEL_BASE ) { uint64_t total = 0; int i; for (i=0; i<5; i++) { if( base_count[i] ){ printf("Bases: %c: %"PRId64"\n", bases[i], base_count[i]); total += base_count[i]; } } printf("Bases: TOTAL: %"PRId64"\n", total); } } } return 0; } io_lib-1.14.6/progs/srf_list.c0000644000031500020650000001135312545536330013111 00000000000000/* * Copyright (c) 2008, 2013 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifdef HAVE_CONFIG_H #include "io_lib_config.h" #endif #include #include #include #include #include #include #include #include #include /* Command line options */ typedef struct { int long_format; int count_only; int verbose; } opts; /* * Lists the contents of an SRF file. * * Returns num_reads for success * -1 for failure */ int64_t list_file(char *fname, opts *opts) { srf_t *srf; char name[512]; int64_t count = 0; int type; uint64_t pos; if (NULL == (srf = srf_open(fname, "r"))) { perror(fname); return -1; } /* Scan through file gathering the details to index in memory */ while ((type = srf_next_block_details(srf, &pos, name)) >= 0) { if (type == SRFB_TRACE_BODY) { count++; if (!opts->count_only) { if (opts->long_format) printf("%-30s %10"PRId64" + %4d + %5d\n", name, pos, srf->tb.trace_size, srf->th.trace_hdr_size); else puts(name); } } } srf_destroy(srf, 1); return count; } /* * Counts the contents of an SRF file. * If the hash index exists it uses this instead. * * Returns num_reads for success * -1 for failure */ int64_t count_file(char *fname, opts *opts) { srf_t *srf; srf_index_hdr_t hdr; off_t skip; int item_sz = 9; if (NULL == (srf = srf_open(fname, "r"))) { perror(fname); return -1; } /* Read the index header */ if (0 != srf_read_index_hdr(srf, &hdr, 0)) { srf_destroy(srf, 1); return list_file(fname, opts); } /* Compute the remaining size of the index and divide by item_sz */ if (hdr.dbh_pos_stored_sep) item_sz += 4; skip = hdr.index_hdr_sz + hdr.n_container * 8 + hdr.n_data_block_hdr * 8 + hdr.n_buckets * 8; srf_destroy(srf, 1); return (hdr.size - skip - 16/* footer*/) / item_sz; } void usage(int error) { printf("Usage: srf_list [options] srf_file ...\n"); printf("Options: -c\tCount only - do not list filenames\n"); printf(" -v\tVerbose - gives summary data per file too\n"); printf(" -l\tList in long format. Lines contain:\n"); printf(" \t name position body-size header-size\n"); exit(error); } /* * Lists the contents of a .hash file */ int main(int argc, char **argv) { opts opts; int i, c; int64_t count = 0; opts.long_format = 0; opts.count_only = 0; opts.verbose = 0; while ((c = getopt(argc, argv, "lcvh")) != -1) { switch (c) { case 'l': opts.long_format = 1; break; case 'c': opts.count_only = 1; break; case 'v': opts.verbose = 1; break; case 'h': usage(0); default: usage(1); } } for (i = optind; i < argc; i++) { int64_t c; if (opts.count_only) c = count_file(argv[i], &opts); else c = list_file(argv[i], &opts); if (c < 0) return 1; if (opts.verbose) printf("%s: %"PRId64" sequences\n", argv[i], c); count += c; } if (opts.count_only) printf("%"PRId64"\n", count); return 0; } io_lib-1.14.6/progs/trace_dump.c0000644000031500020650000001410412354177665013416 00000000000000/* * Copyright (c) 2005, 2007-2008, 2010 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * Author(s): James Bonfield * * Copyright (c) 2002 MEDICAL RESEARCH COUNCIL * All rights reserved * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1 Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2 Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3 Neither the name of the MEDICAL RESEARCH COUNCIL, THE LABORATORY OF * MOLECULAR BIOLOGY nor the names of its contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* * Copyright (c) Medical Research Council 2002. All rights reserved. * * Permission to use, copy, modify and distribute this software and its * documentation for any purpose is hereby granted without fee, provided that * this copyright and notice appears in all copies. * * This file was written by James Bonfield, Simon Dear, Rodger Staden, * Mark Jordan as part of the Staden Package at the MRC Laboratory of * Molecular Biology, Hills Road, Cambridge, CB2 2QH, United Kingdom. * * MRC disclaims all warranties with regard to this software. */ #ifdef HAVE_CONFIG_H #include "io_lib_config.h" #endif #include #include int main(int argc, char **argv) { Read* read; int i; if (argc != 2) { fprintf(stderr, "Usage: trace_dump \n"); return 1; } read = read_reading( argv[1], TT_ANY ); if (read == NULL) { fprintf(stderr, "Tracedump was unable to open file %s\n", argv[1] ); return 1; } printf("[Trace]\n"); printf("%s\n", read->trace_name ); printf("\n[Header]\n"); printf("%d\t\t# format\n", read->format); printf("%d\t\t# NPoints\n", read->NPoints); printf("%d\t\t# NBases\n", read->NBases); printf("%d\t\t# NFlows\n", read->nflows); printf("%d\t\t# maxTraceVal\n", (int)read->maxTraceVal-read->baseline); printf("%d\t\t# baseline\n", read->baseline); printf("%d\t\t# leftCutoff\n", read->leftCutoff); printf("%d\t\t# rightCutoff\n", read->rightCutoff); puts("\n[Bases]"); for (i = 0; i < read->NBases; i++) { printf("%c %05d %+03d %+03d %+03d %+03d #%3d\n", read->base[i], read->basePos ? read->basePos[i] : 0, (int)read->prob_A[i], (int)read->prob_C[i], (int)read->prob_G[i], (int)read->prob_T[i], i); } if (read->NPoints) { puts("\n[A_Trace]"); for(i = 0; i < read->NPoints; i++) printf("%d\t#%5d\n", (int)read->traceA[i] - read->baseline, i); puts("\n[C_Trace]"); for(i = 0; i < read->NPoints; i++) printf("%d\t#%5d\n", (int)read->traceC[i] - read->baseline, i); puts("\n[G_Trace]"); for(i = 0; i < read->NPoints; i++) printf("%d\t#%5d\n", (int)read->traceG[i] - read->baseline, i); puts("\n[T_Trace]"); for(i = 0; i < read->NPoints; i++) printf("%d\t#%5d\n", (int)read->traceT[i] - read->baseline, i); } if (read->flow_order) { puts("\n[Flows]"); for (i = 0; i < read->nflows; i++) { printf("%c %5.2f %u\t#%5d\n", read->flow_order[i], read->flow ? read->flow[i] : 0, read->flow_raw ? read->flow_raw[i] : 0, i); } } if (read->info) { puts("\n[Info]"); printf("%s\n", read->info); } read_deallocate(read); return 0; } io_lib-1.14.6/progs/ztr_dump.c0000644000031500020650000001622012354177665013140 00000000000000/* * Copyright (c) 2004-2008, 2010 Genome Research Ltd. * Author(s): James Bonfield * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger * Institute nor the names of its contributors may be used to endorse * or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifdef HAVE_CONFIG_H #include "io_lib_config.h" #endif #include #include #include #include #include #include static char *format2str(int format) { static char unk[100]; switch (format) { case ZTR_FORM_RAW: return "raw"; case ZTR_FORM_RLE: return "rle"; case ZTR_FORM_XRLE: return "xrle"; case ZTR_FORM_XRLE2: return "xrle2"; case ZTR_FORM_ZLIB: return "zlib"; case ZTR_FORM_DELTA1: return "delta1"; case ZTR_FORM_DELTA2: return "delta2"; case ZTR_FORM_DELTA4: return "delta4"; case ZTR_FORM_DDELTA1: return "ddelta1"; case ZTR_FORM_DDELTA2: return "ddelta2"; case ZTR_FORM_DDELTA4: return "ddelta4"; case ZTR_FORM_16TO8: return "16to8"; case ZTR_FORM_32TO8: return "32to8"; case ZTR_FORM_FOLLOW1: return "follow1"; case ZTR_FORM_CHEB445: return "cheb445"; case ZTR_FORM_ICHEB: return "icheb"; case ZTR_FORM_LOG2: return "log2"; case ZTR_FORM_STHUFF: return "sthuff"; case ZTR_FORM_QSHIFT: return "qshift"; case ZTR_FORM_TSHIFT: return "tshift"; } sprintf(unk, "?%d?\n", format); return unk; } /* * Shannon showed that for storage in base 'b' with alphabet symbols 'a' having * a probability of ocurring in any context of 'Pa' we should encode * symbol 'a' to have a storage width of -logb(Pa). * * Eg. b = 26, P(e) = .22. => width .4647277. * * We use this to calculate the entropy of a signal by summing over all letters * in the signal. In this case, our storage has base 256. */ #define EBASE 256 double entropy(unsigned char *data, int len) { double E[EBASE]; double P[EBASE]; double e; int i; for (i = 0; i < EBASE; i++) P[i] = 0; for (i = 0; i < len; i++) P[data[i]]++; for (i = 0; i < EBASE; i++) { if (P[i]) { P[i] /= len; E[i] = -(log(P[i])/log(EBASE)); } else { E[i] = 0; } } for (e = i = 0; i < len; i++) e += E[data[i]]; return e; } /* Debug version of the ztr.c uncompress_chunk function. */ static int explode_chunk(ztr_t *ztr, ztr_chunk_t *chunk) { char *new_data = NULL; int new_len; while (chunk->dlength > 0 && chunk->data[0] != ZTR_FORM_RAW) { double ent = entropy((unsigned char *)chunk->data, chunk->dlength); switch (chunk->data[0]) { case ZTR_FORM_RLE: new_data = unrle(chunk->data, chunk->dlength, &new_len); break; case ZTR_FORM_XRLE: new_data = unxrle(chunk->data, chunk->dlength, &new_len); break; case ZTR_FORM_XRLE2: new_data = unxrle2(chunk->data, chunk->dlength, &new_len); break; case ZTR_FORM_ZLIB: new_data = zlib_dehuff(chunk->data, chunk->dlength, &new_len); break; case ZTR_FORM_DELTA1: new_data = recorrelate1(chunk->data, chunk->dlength, &new_len); break; case ZTR_FORM_DELTA2: new_data = recorrelate2(chunk->data, chunk->dlength, &new_len); break; case ZTR_FORM_DELTA4: new_data = recorrelate4(chunk->data, chunk->dlength, &new_len); break; case ZTR_FORM_16TO8: new_data = expand_8to16(chunk->data, chunk->dlength, &new_len); break; case ZTR_FORM_32TO8: new_data = expand_8to32(chunk->data, chunk->dlength, &new_len); break; case ZTR_FORM_FOLLOW1: new_data = unfollow1(chunk->data, chunk->dlength, &new_len); break; case ZTR_FORM_ICHEB: new_data = ichebuncomp(chunk->data, chunk->dlength, &new_len); break; case ZTR_FORM_LOG2: new_data = unlog2_data(chunk->data, chunk->dlength, &new_len); break; case ZTR_FORM_STHUFF: new_data = unsthuff(ztr, chunk->data, chunk->dlength, &new_len); break; case ZTR_FORM_QSHIFT: new_data = unqshift(chunk->data, chunk->dlength, &new_len); break; case ZTR_FORM_TSHIFT: new_data = untshift(ztr, chunk->data, chunk->dlength, &new_len); break; default: fprintf(stderr, "Unknown encoding format %d\n", chunk->data[0]); return -1; } if (!new_data) { fprintf(stderr, "Failed to decode chunk with format %s\n", format2str(chunk->data[0])); return -1; } printf(" format %8s => %6d to %6d, entropy %8.1f to %8.1f\n", format2str(chunk->data[0]), chunk->dlength, new_len, ent, entropy((unsigned char *)new_data, new_len)); chunk->dlength = new_len; xfree(chunk->data); chunk->data = new_data; } return 0; } int main(int argc, char **argv) { ztr_t *ztr; mFILE *fp; int i; if (argc >= 2) { if (NULL == (fp = mfopen(argv[1], "rb"))) { perror(argv[1]); return 1; } } else { fp = mstdin(); } if (NULL == (ztr = mfread_ztr(fp))) { perror("fread_ztr"); return 1; } printf("Nchunks = %d\n", ztr->nchunks); for (i = 0; i < ztr->nchunks; i++) { char str[5]; int complen; int rawlen; char *val; (void)ZTR_BE2STR(ztr->chunk[i].type, str); complen = ztr->chunk[i].dlength; val = ztr_lookup_mdata_value(ztr, &ztr->chunk[i], "TYPE"); if (val) printf("-- %s (%s) --\n", str, val); else printf("-- %s --\n", str); explode_chunk(ztr, &ztr->chunk[i]); rawlen = ztr->chunk[i].dlength; printf("SUMMARY %s mlen %3d, dlen %6d, rawlen %6d, ratio %f\n", str, ztr->chunk[i].mdlength, complen, rawlen, (double)complen/rawlen); #if 0 fflush(stdout); puts("\n========================================"); write(1, ztr->chunk[i].data, ztr->chunk[i].dlength); puts("\n========================================"); #endif } delete_ztr(ztr); return 0; } io_lib-1.14.6/tests/0000755000031500020650000000000012617161151011200 500000000000000io_lib-1.14.6/tests/Makefile.am0000644000031500020650000000505112617160052013154 00000000000000# Copyright (c) 2008-2009, 2013 Genome Research Ltd. # Author(s): James Bonfield # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # # 1. Redistributions of source code must retain the above copyright notice, # this list of conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger # Institute nor the names of its contributors may be used to endorse # or promote products derived from this software without specific # prior written permission. # # THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS # IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED # TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A # PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH # LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # ## Makefile.am -- Process this file with automake to produce Makefile.in EXTRA_DIST = $(TESTS) data compare_sam.pl generate_data.pl cram_io_test.c MAINTAINERCLEANFILES = Makefile.in noinst_PROGRAMS = cram_io_test test_outdir = test.out TESTS_ENVIRONMENT = \ top_builddir=$(top_builddir) \ outdir=$(test_outdir) TESTS = \ srf2fasta.test \ srf2fastq.test \ srf_info.test \ srf_filter.test \ srf_index.test \ scram.test \ scram_mt.test \ scram_v3.test \ cram_io.test \ java.test cram_io_test_SOURCES = cram_io_test.c cram_io_test_LDADD = $(top_builddir)/io_lib/libstaden-read.la INCLUDES= -I${top_srcdir} dist-hook: rm -rf `find $(distdir)/data -name .svn` rm -f $(distdir)/data/ce#sorted.*am $(distdir)/data/ce#unsorted.*am rm -f $(distdir)/data/*~ chmod u+w $(distdir)/data distclean-local: -rm -rf $(test_outdir) io_lib-1.14.6/tests/Makefile.in0000644000031500020650000004730712617160066013204 00000000000000# Makefile.in generated by automake 1.11.3 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # Copyright (c) 2008-2009, 2013 Genome Research Ltd. # Author(s): James Bonfield # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # # 1. Redistributions of source code must retain the above copyright notice, # this list of conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger # Institute nor the names of its contributors may be used to endorse # or promote products derived from this software without specific # prior written permission. # # THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS # IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED # TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A # PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH # LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = cram_io_test$(EXEEXT) subdir = tests DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/io_lib_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) am_cram_io_test_OBJECTS = cram_io_test.$(OBJEXT) cram_io_test_OBJECTS = $(am_cram_io_test_OBJECTS) cram_io_test_DEPENDENCIES = $(top_builddir)/io_lib/libstaden-read.la DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ SOURCES = $(cram_io_test_SOURCES) DIST_SOURCES = $(cram_io_test_SOURCES) ETAGS = etags CTAGS = ctags am__tty_colors = \ red=; grn=; lgn=; blu=; std= DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBCURL = @LIBCURL@ LIBCURL_CPPFLAGS = @LIBCURL_CPPFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBZ = @LIBZ@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ SED = @SED@ SET_CRAM_IO_CUSTOM_BUFFERING = @SET_CRAM_IO_CUSTOM_BUFFERING@ SET_ENDIAN = @SET_ENDIAN@ SET_MAKE = @SET_MAKE@ SET_STDIO_EXT = @SET_STDIO_EXT@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ VERS_AGE = @VERS_AGE@ VERS_CURRENT = @VERS_CURRENT@ VERS_REVISION = @VERS_REVISION@ _libcurl_config = @_libcurl_config@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ EXTRA_DIST = $(TESTS) data compare_sam.pl generate_data.pl cram_io_test.c MAINTAINERCLEANFILES = Makefile.in test_outdir = test.out TESTS_ENVIRONMENT = \ top_builddir=$(top_builddir) \ outdir=$(test_outdir) TESTS = \ srf2fasta.test \ srf2fastq.test \ srf_info.test \ srf_filter.test \ srf_index.test \ scram.test \ scram_mt.test \ scram_v3.test \ cram_io.test \ java.test cram_io_test_SOURCES = cram_io_test.c cram_io_test_LDADD = $(top_builddir)/io_lib/libstaden-read.la INCLUDES = -I${top_srcdir} all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign tests/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign tests/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list cram_io_test$(EXEEXT): $(cram_io_test_OBJECTS) $(cram_io_test_DEPENDENCIES) $(EXTRA_cram_io_test_DEPENDENCIES) @rm -f cram_io_test$(EXEEXT) $(LINK) $(cram_io_test_OBJECTS) $(cram_io_test_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cram_io_test.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c $< .c.obj: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags check-TESTS: $(TESTS) @failed=0; all=0; xfail=0; xpass=0; skip=0; \ srcdir=$(srcdir); export srcdir; \ list=' $(TESTS) '; \ $(am__tty_colors); \ if test -n "$$list"; then \ for tst in $$list; do \ if test -f ./$$tst; then dir=./; \ elif test -f $$tst; then dir=; \ else dir="$(srcdir)/"; fi; \ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ all=`expr $$all + 1`; \ case " $(XFAIL_TESTS) " in \ *[\ \ ]$$tst[\ \ ]*) \ xpass=`expr $$xpass + 1`; \ failed=`expr $$failed + 1`; \ col=$$red; res=XPASS; \ ;; \ *) \ col=$$grn; res=PASS; \ ;; \ esac; \ elif test $$? -ne 77; then \ all=`expr $$all + 1`; \ case " $(XFAIL_TESTS) " in \ *[\ \ ]$$tst[\ \ ]*) \ xfail=`expr $$xfail + 1`; \ col=$$lgn; res=XFAIL; \ ;; \ *) \ failed=`expr $$failed + 1`; \ col=$$red; res=FAIL; \ ;; \ esac; \ else \ skip=`expr $$skip + 1`; \ col=$$blu; res=SKIP; \ fi; \ echo "$${col}$$res$${std}: $$tst"; \ done; \ if test "$$all" -eq 1; then \ tests="test"; \ All=""; \ else \ tests="tests"; \ All="All "; \ fi; \ if test "$$failed" -eq 0; then \ if test "$$xfail" -eq 0; then \ banner="$$All$$all $$tests passed"; \ else \ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \ fi; \ else \ if test "$$xpass" -eq 0; then \ banner="$$failed of $$all $$tests failed"; \ else \ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \ fi; \ fi; \ dashes="$$banner"; \ skipped=""; \ if test "$$skip" -ne 0; then \ if test "$$skip" -eq 1; then \ skipped="($$skip test was not run)"; \ else \ skipped="($$skip tests were not run)"; \ fi; \ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \ dashes="$$skipped"; \ fi; \ report=""; \ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ report="Please report to $(PACKAGE_BUGREPORT)"; \ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \ dashes="$$report"; \ fi; \ dashes=`echo "$$dashes" | sed s/./=/g`; \ if test "$$failed" -eq 0; then \ col="$$grn"; \ else \ col="$$red"; \ fi; \ echo "$${col}$$dashes$${std}"; \ echo "$${col}$$banner$${std}"; \ test -z "$$skipped" || echo "$${col}$$skipped$${std}"; \ test -z "$$report" || echo "$${col}$$report$${std}"; \ echo "$${col}$$dashes$${std}"; \ test "$$failed" -eq 0; \ else :; fi distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$(top_distdir)" distdir="$(distdir)" \ dist-hook check-am: all-am $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) clean: clean-am clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-local distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: check-am install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \ clean-generic clean-libtool clean-noinstPROGRAMS ctags \ dist-hook distclean distclean-compile distclean-generic \ distclean-libtool distclean-local distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags uninstall uninstall-am dist-hook: rm -rf `find $(distdir)/data -name .svn` rm -f $(distdir)/data/ce#sorted.*am $(distdir)/data/ce#unsorted.*am rm -f $(distdir)/data/*~ chmod u+w $(distdir)/data distclean-local: -rm -rf $(test_outdir) # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: io_lib-1.14.6/tests/cram_io_test.c0000644000031500020650000000743012462710571013744 00000000000000#define CRAM_IO_TEST #include #include #include int main(int argc, char *argv[]) { int i = 0; for ( i = 1; i < argc; ++i ) { FILE * fp = fopen(argv[i],"rb"); cram_fd * cramfd = NULL; char * Ba = NULL; char * Bb = NULL; size_t la = 0; size_t lb = 0; size_t o = 0; size_t p = 0; int r = -1; char linebuf0[32]; char linebuf1[32]; if ( ! fp ) { fprintf(stderr,"Cannot open file %s\n",argv[i]); goto cleanup; } cramfd = cram_io_open(argv[i],"rc","rb"); if ( ! cramfd ) goto cleanup; /* compare file sizes by seeking to end of file */ r = fseek(fp,0,SEEK_END); assert ( r == 0 ); la = ftello(fp); r = CRAM_IO_SEEK(cramfd,0,SEEK_END); assert ( r == 0 ); lb = CRAM_IO_TELLO(cramfd); assert ( la == lb ); Ba = (char *)malloc(la); if ( ! Ba ) goto cleanup; Bb = (char *)malloc(lb); if ( ! Bb ) goto cleanup; /* seek to start position and read file via getc type calls */ for ( o = 0; o <= la; ++o ) { r = fseeko(fp,o,SEEK_SET); assert ( r == 0 ); r = CRAM_IO_SEEK(cramfd,o,SEEK_SET); assert ( r == 0 ); if ( o % 1024 == 0 ) { fprintf(stderr,"%s/%d/%d\n",argv[i],(int)o, (int)la); } for ( p = o; p < la; ++p ) { int const c1 = getc(fp); int const c2 = CRAM_IO_GETC(cramfd); assert ( c1 == c2 ); } assert ( getc(fp) == EOF ); assert ( CRAM_IO_GETC(cramfd) == EOF ); } /* seek to start position, read up to 16 bytes via getc and the rest via fread() */ for ( o = 0; o <= la; ++o ) { size_t rest = 0; int r0 = -1; int r1 = -1; r = fseeko(fp,o,SEEK_SET); assert ( r == 0 ); r = CRAM_IO_SEEK(cramfd,o,SEEK_SET); assert ( r == 0 ); if ( o % 1024 == 0 ) { fprintf(stderr,"%s/%d/%d\n",argv[i],(int)o, (int)la); } for ( p = o; p < la && p < o+16; ++p ) { int const c1 = getc(fp); int const c2 = CRAM_IO_GETC(cramfd); assert ( c1 == c2 ); } assert ( p <= la ); rest = la-p; r0 = fread(Ba,rest,1,fp); assert ( rest == 0 || r0 == 1 ); r1 = CRAM_IO_READ(Bb,rest,1,cramfd); assert ( rest == 0 || r1 == 1 ); assert ( r0 == r1 ); for ( p = 0; p < rest; ++p ) { assert ( Ba[p] == Bb[p] ); } assert ( getc(fp) == EOF ); assert ( CRAM_IO_GETC(cramfd) == EOF ); } /* run fgets type test */ r = fseeko(fp,0,SEEK_SET); assert ( r == 0 ); r = CRAM_IO_SEEK(cramfd,0,SEEK_SET); assert ( r == 0 ); while ( fgets(&linebuf0[0],sizeof(linebuf0),fp) ) { assert ( CRAM_IO_FGETS(&linebuf1[0],sizeof(linebuf1),cramfd) == &linebuf1[0] ); assert ( strlen(&linebuf0[0]) == strlen(&linebuf1[0]) ); assert ( strcmp(&linebuf0[0],&linebuf1[0]) == 0 ); } assert ( CRAM_IO_FGETS(&linebuf1[0],sizeof(linebuf1),cramfd) == NULL ); cleanup: if ( Bb ) { free(Bb); Bb = NULL; } if ( Ba ) { free(Ba); Ba = NULL; } if ( cramfd ) { cram_io_close(cramfd,NULL); cramfd = NULL; } if ( fp ) { fclose(fp); fp = NULL; } } return 0; } io_lib-1.14.6/tests/srf2fasta.test0000755000031500020650000000150312354177667013737 00000000000000#!/bin/sh if test ! -d $outdir then mkdir $outdir fi $top_builddir/progs/srf2fasta $srcdir/data/proc.srf > $outdir/slx.fasta cmp $outdir/slx.fasta $srcdir/data/slx.fasta || exit 1 $top_builddir/progs/srf2fasta -C $srcdir/data/proc.srf > $outdir/slx.fasta cmp $outdir/slx.fasta $srcdir/data/slx-C.fasta || exit 1 $top_builddir/progs/srf2fasta $srcdir/data/raw.srf > $outdir/slx.fasta cmp $outdir/slx.fasta $srcdir/data/slx.fasta || exit 1 $top_builddir/progs/srf2fasta -C $srcdir/data/raw.srf > $outdir/slx.fasta cmp $outdir/slx.fasta $srcdir/data/slx-C.fasta || exit 1 $top_builddir/progs/srf2fasta $srcdir/data/both.srf > $outdir/slx.fasta cmp $outdir/slx.fasta $srcdir/data/slx.fasta || exit 1 $top_builddir/progs/srf2fasta -C $srcdir/data/both.srf > $outdir/slx.fasta cmp $outdir/slx.fasta $srcdir/data/slx-C.fasta || exit 1 io_lib-1.14.6/tests/srf2fastq.test0000755000031500020650000000142312354177667013760 00000000000000#!/bin/sh $top_builddir/progs/srf2fastq $srcdir/data/proc.srf > $outdir/slx.fastq cmp $outdir/slx.fastq $srcdir/data/slx.fastq || exit 1 $top_builddir/progs/srf2fastq -C $srcdir/data/proc.srf > $outdir/slx.fastq cmp $outdir/slx.fastq $srcdir/data/slx-C.fastq || exit 1 $top_builddir/progs/srf2fastq $srcdir/data/raw.srf > $outdir/slx.fastq cmp $outdir/slx.fastq $srcdir/data/slx.fastq || exit 1 $top_builddir/progs/srf2fastq -C $srcdir/data/raw.srf > $outdir/slx.fastq cmp $outdir/slx.fastq $srcdir/data/slx-C.fastq || exit 1 $top_builddir/progs/srf2fastq $srcdir/data/both.srf > $outdir/slx.fastq cmp $outdir/slx.fastq $srcdir/data/slx.fastq || exit 1 $top_builddir/progs/srf2fastq -C $srcdir/data/both.srf > $outdir/slx.fastq cmp $outdir/slx.fastq $srcdir/data/slx-C.fastq || exit 1 io_lib-1.14.6/tests/srf_info.test0000755000031500020650000000077212354177667013660 00000000000000#!/bin/sh (cd $outdir cp ../$srcdir/data/proc.srf . ../$top_builddir/progs/srf_info proc.srf | tr -d '\015' > proc.info) cmp $outdir/proc.info $srcdir/data/proc.info || exit 1 (cd $outdir cp ../$srcdir/data/raw.srf . ../$top_builddir/progs/srf_info raw.srf | tr -d '\015' > raw.info) cmp $outdir/raw.info $srcdir/data/raw.info || exit 1 (cd $outdir cp ../$srcdir/data/both.srf . ../$top_builddir/progs/srf_info both.srf | tr -d '\015' > both.info) cmp $outdir/both.info $srcdir/data/both.info || exit 1 io_lib-1.14.6/tests/srf_filter.test0000755000031500020650000000135312354177667014206 00000000000000#!/bin/sh # Filter out raw data from both.srf and we should get something similar to # proc.srf. Hard to verify this fully. $top_builddir/progs/srf_filter -m PROC $srcdir/data/both.srf $outdir/f_proc.srf $top_builddir/progs/srf_dump_all $srcdir/data/proc.srf > $outdir/proc.dump $top_builddir/progs/srf_dump_all $outdir/f_proc.srf > $outdir/f_proc.dump cmp $outdir/proc.dump $outdir/f_proc.dump || exit 1 # Also check with srf_info to see that we have the expected number of # ZTR chunks $top_builddir/progs/srf_info $srcdir/data/proc.srf|tail -n +2|grep -v 'null index' > $outdir/proc.info $top_builddir/progs/srf_info $outdir/f_proc.srf|tail -n +2|grep -v 'null index' > $outdir/f_proc.info cmp $outdir/proc.info $outdir/f_proc.info || exit 1 io_lib-1.14.6/tests/srf_index.test0000755000031500020650000000174412354177667014034 00000000000000#!/bin/sh # Extract an entry using srf_extract_linear chmod u+w $outdir/proc.srf $top_builddir/progs/srf_extract_linear $outdir/proc.srf test_run:4:134:369:182 > $outdir/_.srf cmp $outdir/_.srf $srcdir/data/test_run_4_134_369_182.srf || exit 1 # Extract using the hash table method - should fail echo "NB: The next line is expected to be an error message" 1>&2 $top_builddir/progs/srf_extract_hash $outdir/proc.srf test_run:4:134:369:182 > $outdir/_.srf [ $? = 1 ] || exit 1 # Index it $top_builddir/progs/srf_index_hash $outdir/proc.srf cmp $outdir/proc.srf $srcdir/data/proc.srf.indexed || exit 1 # Extract using the hash table method $top_builddir/progs/srf_extract_hash $outdir/proc.srf test_run:4:134:369:182 > $outdir/_.srf [ $? = 0 ] || exit 1 # Check the archive/name access method too seq=`$top_builddir/progs/extract_seq $outdir/proc.srf/test_run:4:134:369:182 | tr -d '\012\015'` [ "$seq" = "GGTAGAGATTCTCTTGTTGACATTTTAAAAGAGCGTGTCTGGAAACGTACGGATTGTTCAGTAACTTGACTCAT" ] || exit 1 io_lib-1.14.6/tests/scram.test0000755000031500020650000000655712617160315013147 00000000000000#!/bin/sh $srcdir/generate_data.pl || exit 1 scramble="${VALGRIND} $top_builddir/progs/scramble ${SCRAMBLE_ARGS}" compare_sam=$srcdir/compare_sam.pl #valgrind="valgrind --leak-check=full" #scramble="$valgrind $scramble" # fast cmp that does large blocks to avoid disk thrashing #cmp=fcmp cmp=cmp case $# in 0) files=`/bin/ls $srcdir/data/*.sam | egrep -v '[._](full|\.sub|java)\.'` ;; *) files=${@+"$@"} ;; esac for i in $files do ref=`echo $i | sed 's/#.*/.fa/'` root=`echo $i | sed 's/\.sam$//;s:.*/::'` echo "=== testing $root.sam ===" # Create BAM echo "$scramble $i $outdir/$root.bam" $scramble $i $outdir/$root.bam || exit 1 # Create CRAM echo "$scramble -r $ref $outdir/$root.bam $outdir/$root.full.cram" $scramble -r $ref $outdir/$root.bam $outdir/$root.full.cram || exit 1 # Test conversion back to SAM echo "$scramble $outdir/$root.bam > $outdir/tmp.sam" $scramble $outdir/$root.bam > $outdir/tmp.sam || exit 1 $compare_sam $srcdir/data/$root.sam $outdir/tmp.sam || exit 1 echo "$scramble $outdir/$root.full.cram > $outdir/$root.full.sam" $scramble $outdir/$root.full.cram > $outdir/$root.full.sam || exit 1 $compare_sam --nomd --unknownrg $srcdir/data/$root.sam $outdir/$root.full.sam || exit 1 echo "$scramble -O bam $outdir/$root.full.cram > $outdir/$root.full.bam" $scramble -O bam $outdir/$root.full.cram > $outdir/$root.full.bam || exit 1 echo "$scramble $outdir/$root.full.bam $outdir/tmp.sam" $scramble $outdir/$root.full.bam $outdir/tmp.sam || exit 1 sed '/^@PG.*scramble\.3.*/d;s/^\(@PG.*scramble.*\) -O bam/\1/' $outdir/tmp.sam > $outdir/$root.full.bam.sam rm $outdir/tmp.sam echo "$cmp $outdir/$root.full.sam $outdir/$root.full.bam.sam" $cmp $outdir/$root.full.sam $outdir/$root.full.bam.sam || exit 1 # Try again with embedded ref; skip for unsorted sams case "$root" in *"unsorted") #skip ;; *) echo "$scramble -e -r $ref $outdir/$root.bam $outdir/$root.full.cram" $scramble -e -r $ref $outdir/$root.bam $outdir/$root.full.cram || exit 1 echo "$scramble $outdir/$root.full.cram > $outdir/$root.full.sam" $scramble $outdir/$root.full.cram > $outdir/tmp.sam || exit 1 sed '/^@PG.*scramble\.3.*/d;s/^\(@PG.*scramble.*\) -e /\1 /' $outdir/tmp.sam > $outdir/$root.full.bam.sam $compare_sam --nomd --unknownrg $srcdir/data/$root.sam $outdir/$root.full.sam || exit 1 echo "$cmp $outdir/$root.full.sam $outdir/$root.full.bam.sam" $cmp $outdir/$root.full.sam $outdir/$root.full.bam.sam || exit 1 ;; esac # And again with no ref. echo "$scramble -x -r $ref $outdir/$root.bam $outdir/$root.full.cram" $scramble -x -r $ref $outdir/$root.bam $outdir/$root.full.cram || exit 1 echo "$scramble $outdir/$root.full.cram > $outdir/$root.full.sam" $scramble $outdir/$root.full.cram > $outdir/tmp.sam || exit 1 sed '/^@PG.*scramble\.3.*/d;s/^\(@PG.*scramble.*\) -x /\1 /' $outdir/tmp.sam > $outdir/$root.full.bam.sam $compare_sam --nomd --unknownrg $srcdir/data/$root.sam $outdir/$root.full.sam || exit 1 # need compare against original here as ce#5b.sam as "*" in seq. echo "$compare_sam --unknownrg $srcdir/data/$root.sam $outdir/$root.full.bam.sam" $compare_sam --noqual --unknownrg $srcdir/data/$root.sam $outdir/$root.full.bam.sam || exit 1 echo "" done io_lib-1.14.6/tests/scram_mt.test0000755000031500020650000000006012511752010013616 00000000000000#!/bin/sh SCRAMBLE_ARGS=-t4 $srcdir/scram.test io_lib-1.14.6/tests/scram_v3.test0000755000031500020650000000007012511752003013531 00000000000000#!/bin/sh SCRAMBLE_ARGS="-t4 -V3.0" $srcdir/scram.test io_lib-1.14.6/tests/cram_io.test0000755000031500020650000000010612462172347013441 00000000000000#!/bin/sh $top_builddir/tests/cram_io_test $outdir/aux#aux.full.cram io_lib-1.14.6/tests/java.test0000755000031500020650000000127612617157157012766 00000000000000#!/bin/sh # Tests scramble compatibility with a simple cramtools.jar cram file. # Minimal, but potentially useful compatibility test. scramble="${VALGRIND} $top_builddir/progs/scramble ${SCRAMBLE_ARGS}" compare_sam=$srcdir/compare_sam.pl for i in `/bin/ls $srcdir/data/*_java.cram` do echo "=== testing $i ===" ref=`echo $i | sed 's/#.*/.fa/'` root=`echo $i | sed 's/\.cram$//;s:.*/::'` echo root=$root echo "$scramble -r $ref $i $outdir/$root.scramble.sam" $scramble -r $ref $i $outdir/$root.scramble.sam || exit 1 echo $compare_sam $srcdir/data/${root}.sam $outdir/$root.scramble.sam $compare_sam $srcdir/data/${root}.sam $outdir/$root.scramble.sam || exit 1 done io_lib-1.14.6/tests/data/0000755000031500020650000000000012617161151012111 500000000000000io_lib-1.14.6/tests/data/both.run/0000755000031500020650000000000012617161151013650 500000000000000io_lib-1.14.6/tests/data/both.run/s_4_0134_nse.txt0000644000031500020650000002777012354177666016367 000000000000004 134 548 359 316 1100 55 1520 679 1100 88 1290 119 1050 96 1240 229 1030 110 1150 582 465 121 1150 291 420 85 1170 318 517 126 1290 199 1040 154 1260 205 510 149 1250 242 448 143 1220 635 978 593 529 217 437 206 854 297 597 166 523 298 779 189 622 300 872 247 735 385 930 283 693 395 913 294 1065 347 792 316 1205 365 948 313 1334 466 701 375 983 383 1008 411 1385 541 1001 380 1431 411 1141 373 1041 433 1113 461 1242 337 805 435 1265 530 957 448 1567 403 766 448 1384 297 661 486 1580 379 833 503 1356 423 925 537 1531 405 821 510 1500 354 784 543 1634 406 956 577 1794 357 1071 583 1563 478 973 526 1738 391 960 541 1690 365 963 604 1643 304 359 96 1300 189 940 140 447 225 967 107 1120 162 956 124 1200 583 385 164 1170 295 911 195 1100 250 362 625 1100 269 892 207 572 257 830 206 823 198 370 225 914 353 802 239 646 293 740 252 681 248 776 254 706 269 653 252 594 305 654 281 629 228 631 298 900 284 498 329 953 280 538 305 990 223 751 309 693 335 940 327 736 312 735 313 785 258 670 312 1162 285 808 387 624 296 734 352 1066 373 504 313 1209 234 641 343 1116 327 633 367 912 329 572 359 905 319 677 359 929 323 666 357 1164 305 662 385 1341 288 455 405 1168 251 617 386 1241 296 679 381 1186 339 579 405 1232 330 741 435 1069 322 666 356 1111 4 134 594 276 316 1100 55 1520 679 1100 88 1290 119 1050 96 1240 229 1030 110 1150 582 465 121 1150 291 420 85 1170 318 517 126 1290 199 1040 154 1260 205 510 149 1250 242 448 143 1220 635 978 593 529 217 437 206 854 297 597 166 523 298 943 189 622 278 633 217 472 373 980 271 677 432 1020 257 1390 351 1050 299 1042 391 653 206 1370 413 1234 320 760 367 940 489 811 439 1068 325 901 370 970 343 924 345 938 447 1100 461 878 335 1220 437 951 382 1301 386 983 382 1106 365 944 304 1170 445 749 538 1140 419 776 453 1490 351 725 560 1058 460 731 482 1440 288 888 517 1382 525 1021 490 1543 420 1058 385 1638 474 904 535 1621 417 919 492 1550 304 1040 96 1300 189 940 140 447 225 967 107 1120 162 956 124 1200 583 385 164 1170 295 911 195 1100 250 362 625 1100 269 892 207 572 257 830 206 823 198 370 225 914 353 802 239 646 293 740 252 681 248 776 254 706 269 653 252 594 305 654 281 629 228 631 298 900 284 498 329 953 280 538 305 990 223 751 309 693 335 940 327 736 312 735 313 785 258 670 312 1162 285 808 387 624 296 734 352 1066 373 504 313 1209 234 641 343 1116 327 633 367 912 329 572 359 905 319 677 359 929 323 666 357 1164 305 662 385 1341 288 455 405 1168 251 617 386 1241 296 679 381 1186 339 579 405 1232 330 741 435 1069 322 666 356 1111 4 134 369 182 78 784 45 1060 211 769 51 901 89 691 73 922 117 754 76 800 170 275 59 791 187 763 93 903 144 716 78 862 379 228 115 926 138 263 81 838 124 262 119 791 148 249 131 833 160 321 137 493 154 363 104 286 349 241 107 807 152 239 131 779 193 416 191 339 190 493 163 366 245 268 123 316 251 578 163 446 260 551 285 398 186 480 276 301 273 456 261 557 255 396 218 543 165 393 306 487 238 451 434 453 219 402 171 317 393 617 245 398 158 231 237 740 220 433 308 639 246 420 337 852 233 403 224 872 160 397 445 801 257 589 214 961 239 365 437 842 215 396 478 858 187 289 421 850 183 474 275 883 187 660 63 926 209 278 88 884 200 645 84 794 195 276 77 846 186 239 111 315 137 237 131 322 172 244 445 289 150 242 144 264 178 263 103 324 137 204 141 381 150 241 187 309 125 316 162 443 320 343 175 467 110 257 146 439 130 299 153 340 155 348 169 458 123 216 241 374 176 252 235 572 135 477 235 465 206 333 237 640 119 340 192 381 169 447 165 632 162 345 269 645 205 389 275 649 219 450 253 647 184 289 321 676 179 339 302 606 146 286 205 653 137 316 249 616 186 362 259 462 195 331 267 684 181 309 269 757 187 412 272 704 178 310 268 739 185 277 299 905 155 473 277 643 162 329 295 777 4 134 354 230 78 784 45 1060 211 769 51 901 89 691 73 922 117 754 76 800 170 275 59 791 187 763 93 903 144 716 78 862 379 228 115 926 138 263 81 838 124 262 119 791 148 249 131 833 160 321 137 493 154 363 104 286 349 241 107 807 152 239 131 779 193 416 191 339 190 493 163 366 245 268 123 316 251 578 163 446 260 551 285 398 186 480 276 301 273 456 261 557 255 396 218 543 165 393 306 487 238 451 434 453 219 402 171 317 393 617 245 398 158 231 237 740 220 433 308 639 246 420 337 852 233 403 224 872 160 397 445 801 257 589 214 961 239 365 437 842 215 396 478 858 187 289 421 850 183 474 275 883 187 660 63 926 209 278 88 884 200 645 84 794 195 276 77 846 186 239 111 315 137 237 131 322 172 244 445 289 150 242 144 264 178 263 103 324 137 204 141 381 150 241 187 309 125 316 162 443 320 343 175 467 110 257 146 439 130 299 153 340 155 348 169 458 123 216 241 374 176 252 235 572 135 477 235 465 206 333 237 640 119 340 192 381 169 447 165 632 162 345 269 645 205 389 275 649 219 450 253 647 184 289 321 676 179 339 302 606 146 286 205 653 137 316 249 616 186 362 259 462 195 331 267 684 181 309 269 757 187 412 272 704 178 310 268 739 185 277 299 905 155 473 277 643 162 329 295 777 4 134 614 269 316 1100 55 1520 679 1100 88 1290 119 1050 96 1240 229 1030 110 1150 582 465 121 1150 291 420 85 1170 318 517 126 1290 199 1040 154 1260 205 510 149 1250 242 448 143 1220 635 978 593 529 217 437 206 854 297 597 166 523 298 943 189 622 278 633 217 472 373 980 271 677 432 1020 257 1390 351 1050 299 1042 391 653 206 1370 413 1234 320 760 367 940 489 811 439 1068 325 901 370 970 343 924 345 938 447 1100 461 878 335 1220 437 951 382 1301 386 983 382 1106 365 944 304 1170 445 749 538 1140 419 776 453 1490 351 725 560 1058 460 731 482 1440 288 888 517 1382 525 1021 490 1543 420 1058 385 1638 474 904 535 1621 417 919 492 1550 304 1040 96 1300 189 940 140 447 225 967 107 1120 162 956 124 1200 583 385 164 1170 295 911 195 1100 250 362 625 1100 269 892 207 572 257 830 206 823 198 370 225 914 353 802 239 646 293 740 252 681 248 776 254 706 269 653 252 594 305 654 281 629 228 631 298 900 284 498 329 953 280 538 305 990 223 751 309 693 335 940 327 736 312 735 313 785 258 670 312 1162 285 808 387 624 296 734 352 1066 373 504 313 1209 234 641 343 1116 327 633 367 912 329 572 359 905 319 677 359 929 323 666 357 1164 305 662 385 1341 288 455 405 1168 251 617 386 1241 296 679 381 1186 339 579 405 1232 330 741 435 1069 322 666 356 1111 4 134 368 209 78 784 45 1060 211 769 51 901 89 691 73 922 117 754 76 800 170 275 59 791 187 763 93 903 144 716 78 862 379 228 115 926 138 263 81 838 124 262 119 791 148 249 131 833 160 321 137 493 154 363 104 286 349 241 107 807 152 239 131 779 193 416 191 339 190 493 163 366 245 268 123 316 251 578 163 446 260 551 285 398 186 480 276 301 273 456 261 557 255 396 218 543 165 393 306 487 238 451 434 453 219 402 171 317 393 617 245 398 158 231 237 740 220 433 308 639 246 420 337 852 233 403 224 872 160 397 445 801 257 589 214 961 239 365 437 842 215 396 478 858 187 289 421 850 183 474 275 883 187 660 63 926 209 278 88 884 200 645 84 794 195 276 77 846 186 239 111 315 137 237 131 322 172 244 445 289 150 242 144 264 178 263 103 324 137 204 141 381 150 241 187 309 125 316 162 443 320 343 175 467 110 257 146 439 130 299 153 340 155 348 169 458 123 216 241 374 176 252 235 572 135 477 235 465 206 333 237 640 119 340 192 381 169 447 165 632 162 345 269 645 205 389 275 649 219 450 253 647 184 289 321 676 179 339 302 606 146 286 205 653 137 316 249 616 186 362 259 462 195 331 267 684 181 309 269 757 187 412 272 704 178 310 268 739 185 277 299 905 155 473 277 643 162 329 295 777 4 134 621 345 316 1100 55 1520 679 1100 88 1290 119 1050 96 1240 229 1030 110 1150 582 465 121 1150 291 420 85 1170 318 517 126 1290 199 1040 154 1260 205 510 149 1250 242 448 143 1220 635 978 593 529 217 437 206 854 297 597 166 523 298 943 189 622 278 633 217 472 373 980 271 677 432 1020 257 1390 351 1050 299 1042 391 653 206 1370 413 1234 320 760 367 940 489 811 439 1068 325 901 370 970 343 924 345 938 447 1100 461 878 335 1220 437 951 382 1301 386 983 382 1106 365 944 304 1170 445 749 538 1140 419 776 453 1490 351 725 560 1058 460 731 482 1440 288 888 517 1382 525 1021 490 1543 420 1058 385 1638 474 904 535 1621 417 919 492 1550 304 1040 96 1300 189 940 140 447 225 967 107 1120 162 956 124 1200 583 385 164 1170 295 911 195 1100 250 362 625 1100 269 892 207 572 257 830 206 823 198 370 225 914 353 802 239 646 293 740 252 681 248 776 254 706 269 653 252 594 305 654 281 629 228 631 298 900 284 498 329 953 280 538 305 990 223 751 309 693 335 940 327 736 312 735 313 785 258 670 312 1162 285 808 387 624 296 734 352 1066 373 504 313 1209 234 641 343 1116 327 633 367 912 329 572 359 905 319 677 359 929 323 666 357 1164 305 662 385 1341 288 455 405 1168 251 617 386 1241 296 679 381 1186 339 579 405 1232 330 741 435 1069 322 666 356 1111 4 134 538 358 316 1100 55 1520 679 1100 88 1290 119 1050 96 1240 229 1030 110 1150 582 465 121 1150 291 420 85 1170 318 517 126 1290 199 1040 154 1260 205 510 149 1250 242 448 143 1220 635 978 593 529 217 437 206 854 342 795 245 789 318 779 231 506 300 872 247 735 385 930 283 693 395 913 294 1065 347 792 316 1205 365 948 313 1334 466 701 375 983 383 1008 411 1385 541 1001 380 1431 411 1141 373 1041 433 1113 461 1242 337 805 435 1265 530 957 448 1567 403 766 448 1384 297 661 486 1580 379 833 503 1356 423 925 537 1531 405 821 510 1500 354 784 543 1634 406 956 577 1794 357 1071 583 1563 478 973 526 1738 391 960 541 1690 365 963 604 1643 319 359 93 460 248 893 108 447 225 820 107 1120 162 956 124 1200 583 385 164 1170 295 433 195 1100 250 737 625 1100 269 553 207 572 257 496 206 823 198 370 225 914 353 802 239 646 293 740 252 681 248 776 254 706 269 653 252 594 305 654 281 629 228 631 298 900 284 498 329 953 280 538 305 990 223 751 309 693 335 940 327 736 312 735 313 785 258 670 312 1162 285 808 387 624 296 734 352 1066 373 504 313 1209 234 641 343 1116 327 633 367 912 329 572 359 905 319 677 359 929 323 666 357 1164 305 662 385 1341 288 455 405 1168 251 617 386 1241 296 679 381 1186 339 579 405 1232 330 741 435 1069 322 666 356 1111 4 134 557 250 91 1100 55 1520 594 980 87 1130 540 1000 100 1220 562 337 97 1110 549 428 112 1100 326 352 142 396 234 316 130 1100 315 980 139 447 226 423 609 1120 219 321 571 432 220 475 174 446 269 836 176 657 294 534 189 1260 283 478 171 529 288 861 209 538 337 747 301 883 267 1059 242 1390 364 694 233 658 460 671 286 1067 351 733 316 983 415 994 374 887 446 961 347 739 327 571 276 721 451 965 437 571 426 1015 302 1206 414 860 376 1485 339 849 385 1112 278 841 455 1266 449 821 381 919 352 704 428 1275 411 810 499 1316 489 801 417 1221 444 797 424 1313 461 942 487 1419 447 647 505 1262 381 820 560 1312 375 709 543 1300 275 912 103 1300 218 845 125 1120 251 850 132 425 267 313 115 1020 210 431 170 1100 281 387 221 420 151 365 199 1150 192 295 220 575 195 288 223 511 191 305 245 392 334 398 288 1220 262 512 260 375 240 467 245 433 277 729 279 569 248 460 321 765 270 692 259 685 270 380 282 597 304 470 310 1083 285 467 264 696 242 571 312 1028 287 648 378 672 233 543 318 1217 230 514 320 953 172 366 309 1000 337 701 317 888 324 689 364 825 297 449 425 1124 295 799 422 925 259 817 426 1093 330 627 387 893 326 817 357 1177 265 636 397 986 303 664 412 1021 260 809 385 886 332 660 343 1023 350 752 385 1072 358 718 366 1157 4 134 529 256 316 1100 55 1520 594 1100 87 1290 540 1000 100 1240 562 337 97 1150 549 428 112 1100 326 352 142 396 234 316 130 1100 315 980 139 447 226 423 609 1120 219 321 571 432 220 475 174 446 269 836 176 657 310 850 212 549 377 677 220 506 190 861 191 735 278 783 255 693 395 913 294 1065 276 792 316 1205 355 493 298 1334 466 701 375 983 480 921 411 1385 464 1059 360 1431 425 895 325 1041 451 965 437 1242 443 1015 347 1265 477 957 448 1567 386 907 405 1384 315 750 418 1580 304 935 381 1356 400 706 372 1531 390 1088 431 1151 406 759 510 1634 496 820 445 1794 414 831 517 1563 360 641 517 1233 389 753 440 1038 446 709 422 1171 319 359 93 460 277 275 95 431 481 747 122 348 251 718 115 329 215 262 177 896 269 297 538 844 213 366 162 1030 160 365 554 462 201 401 214 980 208 736 168 537 250 578 241 459 149 315 251 697 164 660 233 515 274 691 238 481 240 567 271 852 141 305 283 655 194 514 273 831 167 589 287 794 185 609 301 696 205 565 286 1028 287 497 378 672 233 532 318 1162 230 725 320 953 172 419 309 1000 337 701 317 888 324 689 364 825 297 449 425 1124 295 799 422 905 259 817 426 929 330 627 387 1164 326 817 357 1177 265 636 397 986 303 664 412 1021 260 809 385 886 332 660 343 1023 350 752 385 1072 358 718 366 1157 io_lib-1.14.6/tests/data/both.run/s_4_0133_seq.txt0000644000031500020650000000157212354177666016361 000000000000004 133 593 417 GTATAAGTCAAAGCACCTTTAGCGTTAAGGTACTGAATCTGTGCCGCGTTTCTTTGTTCCTGAGCATGGCACTA 4 133 587 382 GTTGAGTTCGATAATGGTGATATGTATGTTGACGGCCGGGGGAGCACATTGTAGCATTGTGCCAATTCATCCAT 4 133 505 428 GGTTGGACTTGGTGGCAAGTCTGCCGCTGATAAAGGACAGGAAATGCAGCAGCAAGATAATCACGAGTATCCTT 4 133 548 808 GATTGAATCGCGAGTGGTCGGCAGATTGCGATAAACGTTGCAGTGGAATAGTCAGGTTAAATTTAATGTGACCG 4 133 568 418 GTCCCCTTCGGGGCGGTGGTCTATAGTGTTATTTATAAGGCTGCTTCTGACGTTCGTGATGAGTTTGTATCTGT 4 133 587 489 GTGTTCAACAGACCTATAAACATTCTGTGCCGCGTTTAGCGCAAGAGTAAACATAGTGCCATGCTCAGGAACAA 4 133 511 464 GCAAATCACCAGAAGGCGGTTCCTGAATGAATGGGAATTCGTCTAAGAAGTTTAAGATTGCTGAGGGTCAGTGG 4 133 507 435 GATATGAATAACACTATAGACAACCGCCACGATGGGGGAGGGAGTGCACCAGCCAGAGTGCGGCAAAACTGCGT 4 133 561 484 GCCATAATTCAAACTTTTTTTCTGATAAGCTGGTTCTGCATTAACCGTCAAACTATCAAAATATAACGTTGACG 4 133 539 484 GTAACGGCTTTAGTTTCCAAAACGAAGAACCGAGAAGAGCGCCACTTTAACAAGGATAATAACAAAGCACAAAA io_lib-1.14.6/tests/data/both.run/s_4_0134_seq.txt0000644000031500020650000000157212354177666016362 000000000000004 134 548 359 GAAAGATTGGTGTTTTCCATAATAGACGCAACGCGAGACTCAAAAAGAGATTGCTGGCATTCAGTCGGCGACTT 4 134 594 276 GCCTTCTGGTGATTTGCAAGAACGCGTACTTATTCGCAACCTGACTATTCCACTGCAACAACTGAACGGACTGG 4 134 369 182 GGTAGAGATTCTCTTGTTGACATTTTAAAAGAGCGTGTCTGGAAACGTACGGATTGTTCAGTAACTTGACTCAT 4 134 354 230 GATCGGAAGAGCGGTTCAGCAGGAATGCCGAGACCCCGCTCTACGCGATTTCATAGTGGAGGCGTGCGGCGATC 4 134 614 269 GATTAAGCTCATTAGGGTTAGCCTCGGTACGGTCAGGCGCTTTTCTTGGCACGATTAACCCTGATACCAATAAA 4 134 368 209 GATTTGGTCATTGGTAAAATACTGACCAGCCGTTTGATTATCAACAGAAGGAGTCTACTGCTCGCGTTGCGTCT 4 134 621 345 GTTCAACAGACCTATAAACATTCTGTGCCGCGTTTCTGCACCTTTAGCGTTAAGGTACTGAATCTCTTTAGTCG 4 134 538 358 GGTAGCTTTAAGCGGCTCACCTTTAGCATCAACAGGCTAGCTTGCAAAATACGTGGCCTTATGGTTACAGTATG 4 134 557 250 GATATTTCTGATGAGTCGAAAAATTATCTTGATAAAGAGGATAGGTCGAATTTTCTCATTTTCCGCCAGCAGTC 4 134 529 256 GTCAGAAAATCGAAATCATCTTCGGTTAAATCCAAAATTCAGGCTTCTGCCGTTTTGGATTTAACCGAAGATGA io_lib-1.14.6/tests/data/both.run/s_4_0133_int.txt0000644000031500020650000003557412354177666016374 000000000000004 133 593 417 -1575 -3114 23632 14569 -1592 -4133 929 17252 14021 11200 -772 -76 516 -564 -3951 18840 12439 10967 187 -144 10751 10218 840 -215 -210 -766 20073 11883 308 248 1231 9199 1801 13147 425 -1397 11255 11927 -590 -328 13358 14378 279 -3480 12872 10907 -15 -470 700 -238 14971 10163 2353 12720 709 -848 11616 13087 -3 -2947 3727 15570 669 -2503 2829 16298 -610 -2414 -19 176 312 17992 -418 1305 -826 14512 499 430 673 15153 10800 10527 1252 2958 1711 2324 11888 10892 2811 14238 2284 -585 269 1890 13061 12829 57 750 1497 15324 1242 725 463 17906 10197 10101 79 2626 9769 11031 1379 381 1782 2565 14181 10596 1127 1345 11110 12541 1503 562 2260 10541 8316 8808 2091 1607 1888 8908 1183 2713 828 2231 2584 14164 1044 1501 12067 11444 8667 9175 985 2057 7858 8423 1925 4740 -523 -3738 -1189 18547 19 10175 -1804 -426 -3514 -4781 648 16445 -2218 -5087 16027 15433 -1121 -3549 1237 11313 -1844 -1649 14886 11059 -640 9182 434 -548 -323 8179 -112 474 -1282 -1493 14321 10704 -257 6529 972 961 -943 -3497 15090 13134 -2115 -3120 1196 13188 -2247 -2465 1035 14565 -273 -297 438 12521 -305 4652 876 3778 -1383 -1967 318 15863 -923 -1515 609 14125 -889 -1663 1441 13711 -269 -893 10659 10580 -1514 -2400 995 11847 -832 -51 884 11827 322 6305 -1039 1791 136 6362 -895 1925 -1230 -1818 1542 14263 -673 -1278 9500 12432 4321 5433 2364 1520 552 948 9438 6875 859 5853 1561 1686 4002 4592 1223 2103 -743 -459 2421 10307 -6 -797 9039 9214 -179 -1021 8729 9356 -153 3143 2473 3634 3259 3940 1385 3093 616 4580 1498 2464 151 922 750 9387 2836 3231 1309 4249 4 133 587 382 -893 -1087 22807 19153 201 1115 -779 15561 570 1033 -177 22260 547 153 20064 15393 9659 11375 987 97 547 1435 19213 14306 775 1544 1091 14409 546 1636 -387 20658 2447 12866 1605 2922 939 1518 18113 13647 8472 9205 1493 3294 1262 1786 1621 19498 10757 12352 1156 841 9993 10621 1337 3784 704 558 2505 21424 966 1666 19039 21734 1143 854 20010 21594 697 1878 3104 14555 1733 2479 19287 18928 9718 11235 2582 4323 2169 2846 2951 22786 9590 10689 1362 6300 1315 1765 4665 26119 1281 1757 17733 20692 1703 2466 2315 17306 8494 8976 2828 9211 912 1704 4694 24600 1320 2148 16273 18761 1044 2028 3849 19074 655 169 4635 23954 915 2067 12363 20565 6678 8074 4965 9392 3083 10172 4415 7184 1449 3729 12733 15623 1238 1991 14345 17674 2228 9278 4546 8873 2544 9345 3832 8128 -721 -1583 17688 15516 -241 -1693 17332 13810 431 423 14031 9647 78 -235 14520 11689 -901 -571 12877 10671 5426 5980 1727 2027 -326 -660 12978 9484 1699 8500 587 588 7647 7717 1183 1841 1245 7673 1560 1533 7745 9011 1603 777 1179 1825 1653 12445 842 1308 419 12778 852 1577 10268 8946 927 1902 412 9142 6664 7420 2064 3583 1120 1858 10117 9482 1830 7632 8068 7149 5098 6399 2384 3400 1200 1921 2037 11031 673 760 2148 12266 -38 -144 9370 10949 206 816 2838 8793 101 870 8366 9760 833 5628 2374 3442 1337 6332 2021 2861 4489 6120 1809 2893 5470 5621 1362 3124 1300 2042 1029 11013 901 1194 1703 11462 1902 5338 1458 4105 4430 5789 1318 3438 1089 1659 1659 9900 1500 6258 1703 2796 1432 6039 1460 3878 4307 5408 1257 3951 1285 2176 1156 10703 4 133 505 428 -1970 -2096 22136 13335 -114 -1175 18772 11011 5 -159 1031 8335 -1778 -1945 622 15233 -1827 -1665 13355 10212 -1377 -1717 13678 9417 8578 7200 775 -1276 -36 8827 -1435 -646 -489 -1047 -953 14563 -559 -1214 1005 14757 -96 -1407 15069 8985 -1211 -3111 10253 11649 -340 -176 -2865 6716 -775 -1807 11408 10097 -1361 -1552 12051 9949 1010 10115 -259 929 11680 12844 -3746 -2183 9335 9857 2200 787 1402 1556 12854 8414 -1036 -60 2264 8773 342 7210 257 4307 -502 452 2408 12752 -167 532 13739 9469 1200 8845 140 907 693 6974 2576 2842 115 1781 11167 8428 523 7399 -289 1826 -614 200 3451 14511 1046 1415 9198 10144 4893 5729 591 4202 1567 1770 330 10149 5663 6436 1194 2920 7467 8532 535 1052 5219 6660 1567 2511 932 1009 10766 9147 1714 1936 9159 5733 5266 6165 2401 1452 2205 11083 -1828 -3721 9365 9984 -39 -3113 453 312 13830 7528 -2498 -2831 15375 12549 7311 7339 -1347 -1038 11219 10308 -3213 -1430 10884 9727 -1792 -2964 -230 -1510 -499 12894 -802 -727 12485 7982 1637 10523 -1215 -2625 6238 6848 473 -282 675 755 10208 5407 2397 9877 -1026 -2073 8474 8839 288 -1134 1420 1787 8421 4518 2139 10338 1342 -3588 7543 8420 -1058 -2198 7114 8282 581 -2372 1378 666 11438 5842 7023 5416 64 425 293 -387 -311 9950 7284 6414 -303 1063 6644 8095 307 -1577 767 951 788 7634 1477 6805 -95 -489 5746 6515 146 -1522 1203 6876 -698 -370 -246 474 7476 7396 3943 3974 1725 1141 -18 633 8438 6624 147 525 960 5155 5330 4736 954 1696 709 830 1028 6008 610 3998 635 2581 980 4799 755 2061 278 533 189 8113 -200 -346 796 10300 4 133 548 808 -1113 -1090 17668 13979 8869 9716 -1561 -906 -996 -1113 660 16842 20 -279 737 17279 359 346 14047 10629 9837 11760 -41 -232 11215 12108 -89 424 410 99 634 16092 2131 10121 -78 419 180 834 13132 10813 1457 8727 1211 1616 795 1040 10805 10698 6829 7263 1537 1398 906 1357 11684 8493 293 470 1027 8964 423 650 10854 11620 375 187 10593 10988 182 343 1384 11243 1430 7963 2346 3507 690 1992 10660 9532 517 646 10823 10782 1803 8195 2565 2402 6265 7756 2553 2810 1342 2134 11089 9580 5206 6524 2020 3874 1196 1926 2155 13681 732 798 2650 14646 766 1615 9307 10930 1268 6999 3579 4009 1080 2427 10052 10283 4764 5285 2855 5278 1747 2077 2277 11882 6456 6577 1709 4876 7453 8181 1995 4139 6397 7770 2202 3813 2562 6772 2665 4088 1127 2764 8538 9644 -118 -755 377 15156 -613 -1445 524 15943 -331 -269 13581 11299 1896 9928 431 102 6461 7676 -1 485 406 -26 13484 11355 199 -324 1299 9404 -89 -713 12164 11244 -40 183 12819 10090 6068 6265 1176 182 7043 6840 151 999 554 448 547 12831 6709 7247 1203 1062 864 1108 9991 7916 145 327 1143 8928 1175 7604 405 1500 6077 6749 1515 1661 942 1341 11219 8253 480 679 10979 8664 -30 99 2466 10237 41 144 1681 12569 7121 7292 1320 2499 7611 7827 812 1715 6450 6599 1078 2644 841 810 1284 12832 729 628 1313 11975 1097 1223 1291 11527 5586 6158 559 3067 5548 5942 968 2660 1211 1179 1905 10992 644 298 7669 11050 -68 -23 3262 9752 675 488 7538 9811 4190 4415 2094 3909 1248 5064 1843 3335 1319 5484 2318 3303 239 1109 7094 9421 4 133 568 418 -1129 -157 21949 13523 290 -756 2457 14736 3192 13282 324 532 1881 12678 869 -892 622 12682 405 3189 2036 12443 -899 613 -42 1060 664 15850 55 4563 689 15435 5336 14411 -616 4050 3331 3493 16472 11581 2079 1160 16679 12774 -209 741 14439 13902 -2149 2273 14555 11818 -461 8967 3154 4135 2325 2577 15246 10539 -96 682 15791 12335 346 4027 1960 9715 2642 5048 11276 11138 -324 1991 14888 14366 -604 3175 5892 13449 507 4938 3115 6636 3655 2057 2706 15311 4941 6793 -581 5985 2207 3070 2394 11884 4669 6591 2757 6862 4233 6825 9823 12748 223 1998 4150 11430 3670 5726 10074 12749 141 394 4943 14017 25 1079 2774 16659 6467 4826 1396 10177 2641 3191 2121 14364 1710 2591 2131 15483 5222 6098 -733 8071 5862 7468 5221 6617 2795 3811 1027 12255 4427 5413 3834 7348 12456 11873 -2076 1343 -1176 -2410 18102 14196 -1862 -2368 18300 12680 2371 13153 -1393 1815 506 815 5716 13215 -441 192 16205 13718 1992 10687 2460 -622 -1272 79 848 18286 150 745 -2654 14724 1325 8456 339 2222 -696 84 845 18616 630 2143 11432 13369 6560 6903 1928 4393 1139 9179 1568 -245 1713 3545 12319 10948 604 2146 2185 11547 604 1533 126 13893 1836 8029 1186 5281 298 1973 10349 11646 368 1036 3056 12488 710 1369 11260 11931 5243 5220 4223 5369 1047 1006 2649 13918 885 1179 10567 9493 4163 5956 4188 3738 801 645 11040 10486 2169 175 2784 9912 474 1115 2831 11803 -476 275 2231 14655 527 2760 9524 12134 1152 -115 2457 11051 4103 5570 1592 6389 852 2231 1227 11417 1263 5299 1421 6128 464 886 1751 12961 -671 466 7589 13373 -42 475 3098 10831 4 133 587 489 -444 -1199 21810 18178 -571 -1109 699 15102 569 936 19584 13417 253 493 877 11773 -3 -178 657 16720 2880 12723 74 1105 9981 11637 197 847 11881 14642 -572 -1154 3081 13783 -2260 -309 8620 11694 963 1721 1404 1929 13612 10393 10045 11927 -651 -78 1359 10959 178 1133 2202 12553 -1497 1255 385 1297 818 17105 12297 13140 774 4613 1521 2071 884 20705 14576 15540 -82 805 15941 18603 -2229 746 16627 18248 380 1504 3945 13711 542 2435 11827 14722 -1405 1859 2281 3573 178 17881 1921 4256 775 17171 3456 14647 584 2728 1373 3573 881 16460 1025 1491 14219 15449 -178 1413 3220 14912 724 2784 13336 13026 3079 13039 1134 4443 2556 13421 2597 3848 1107 4165 14237 11023 1551 11321 3281 4214 338 2665 14942 14458 630 2083 3400 16131 729 2101 1166 18267 868 2723 1237 17094 12370 13071 -858 -1162 493 661 15537 9643 2201 13931 -975 -1027 369 -397 16159 12346 2627 13554 -2656 143 11496 13145 34 -363 10989 12367 496 -1095 1481 1754 15125 7471 6639 8107 2182 1209 907 1099 14266 7244 881 1104 -886 7825 9418 9916 -228 85 9350 11223 106 -491 8779 10261 658 599 2945 9538 796 -363 9757 10866 -679 -138 1845 1479 87 10007 8300 10160 912 349 1604 2373 8115 5778 464 836 938 7547 -254 187 10687 9771 1846 8638 1729 1087 2431 9557 958 -674 7046 8703 607 22 1395 2392 1156 9228 1239 3007 7623 6560 1538 7869 1832 2387 553 1841 1145 9999 1807 8660 -323 1194 6022 7747 765 1459 810 1620 9004 8538 916 1943 8916 6700 4470 5608 2429 2138 6491 7348 1242 1620 2997 7659 1091 1477 6763 7720 1027 1232 7545 8270 1255 968 4 133 511 464 134 790 21290 11979 3086 17878 -831 -2787 15762 17987 -11 -2172 13280 16171 -796 -565 13981 16070 318 -1369 953 1382 -1920 15793 3147 15087 95 -1755 12518 14416 268 -768 2269 14568 131 -882 3140 15486 -2118 -2571 12387 14047 -1770 -1075 789 929 14156 10551 10487 12211 -270 -1327 11777 12276 132 263 825 1363 15294 8170 -125 1081 18546 13697 3952 16514 1257 -1377 675 1935 17580 10985 951 1875 16691 10482 445 593 1714 11888 447 909 1691 14704 2667 12984 -300 -521 2513 12439 196 136 549 1069 1243 15653 1250 2267 12938 11865 9090 10642 517 1244 8779 10203 1412 2062 1545 2220 1940 14143 1687 2828 11636 11631 7993 9620 1902 1567 8238 9193 1273 886 2002 2280 2412 14611 1236 1572 13013 12862 1201 1606 13150 11646 1521 1401 11645 11297 7437 8320 3173 2859 8077 9467 2993 2415 -2392 -2807 451 21255 -3120 -3203 615 21820 2280 14623 -1510 -1222 -861 -1801 17907 15436 -1659 -2485 1283 14472 1507 9689 182 2038 -1437 -2336 799 19520 9304 10514 170 -1688 9970 9287 903 432 -461 -1134 15673 14168 7101 6311 1220 1702 8605 8042 1422 310 907 879 12833 10086 461 666 1748 9772 188 -202 -961 16519 -150 -617 870 17544 7163 7810 944 2645 8505 9519 1505 -162 1345 1604 10286 10917 6734 5154 1043 3895 541 -166 909 15623 -591 -602 1643 16907 438 367 10983 12797 1133 6743 2058 4990 391 877 469 14413 967 1176 8851 12060 4447 5263 2763 4145 523 826 9891 12055 396 552 8911 11713 9 -536 10373 12412 349 899 1876 9431 1701 6734 836 3750 4707 5136 2501 3961 889 843 9163 10777 579 1030 3474 9467 203 100 9216 11334 267 506 8815 10099 4 133 507 435 -47 -805 21226 14469 11699 12416 7967 3731 55 -925 815 17842 11096 13080 264 -176 212 934 -354 18214 663 537 14234 16611 12435 11242 544 1776 10867 11271 -399 846 8080 8164 -417 15351 10754 12673 4289 7481 12265 13361 685 -139 2608 11386 -153 3116 10461 11671 6774 6845 2042 12331 -264 1075 595 1545 679 13836 13073 15215 389 9713 9909 10198 -1888 15741 12264 12843 -1154 10365 2631 2910 14316 14051 8538 11479 1574 4127 3134 13541 1054 8470 8938 16059 712 274 11253 14281 880 2563 3518 12758 382 11121 2061 13143 -335 11357 1041 3824 12142 15033 1792 11234 8937 7775 2386 11938 1445 2666 6245 11382 298 2588 2064 11440 907 10215 3495 9223 9148 8349 5558 8973 1975 3895 5613 8675 1455 13219 1010 2447 11195 13551 4943 6560 11696 11200 2446 7563 11567 9468 2381 6895 10211 7861 430 7185 14232 10831 10079 10040 796 -1015 8580 5535 15773 7862 -588 -1615 14957 12412 -623 -1067 12059 9321 7635 9390 1389 473 1720 7271 12830 8304 4642 9045 1211 10550 414 565 7469 10839 2225 10741 10212 4663 7779 10015 -36 222 605 8712 8786 7181 2115 9534 6141 6124 8859 9488 6439 7085 936 1730 10053 7565 1657 9265 1818 10721 2247 10185 8020 4765 8122 9282 1689 6632 914 5451 12003 5867 5550 6130 2151 2660 -244 558 6008 10702 416 5512 777 11345 267 513 10418 8798 583 6682 2959 2702 814 3006 10067 8879 4793 4915 9860 8049 1482 5690 1729 7052 6284 7534 623 884 6398 6557 1547 2293 6093 6701 4159 3510 5483 6425 1899 1924 2066 5321 4644 5507 555 136 4023 8442 568 431 8160 8386 1213 5350 3231 5421 519 602 8217 11018 536 280 3005 9695 4 133 561 484 -310 285 21180 17657 2301 17529 402 204 2793 17202 191 1343 12189 14388 135 975 396 1390 1017 23692 11524 13633 392 1528 11671 14181 269 1670 997 1296 962 24599 781 2015 873 22950 2901 16393 482 2379 14393 16155 407 1705 14145 17647 401 1783 13210 17133 382 1422 3186 14209 71 2108 1148 2281 1003 20995 1533 2559 1232 28744 938 2100 1291 28519 1114 2257 1171 29367 1076 2215 1297 30270 1072 2348 1080 28743 780 2564 1417 27501 3399 17468 909 7215 1189 2898 2375 26179 1835 3067 17792 23651 13975 15660 2124 6607 3183 5141 1277 25162 16055 18261 1359 5881 14347 17385 2255 6376 2651 5065 15136 18907 3835 15535 2353 7881 1955 4098 3276 23615 1430 2771 16832 20238 1141 2990 15592 20710 1037 2295 3639 20127 1127 2941 2559 25022 2626 12152 2096 9701 1172 3801 2078 23333 433 486 16887 14230 2849 15388 796 1060 11262 14024 480 938 645 1495 777 19695 885 1101 443 19779 13242 14688 -53 2071 12712 14364 593 595 3192 13114 575 596 2529 13369 1103 1725 698 1547 14713 13362 397 1689 1591 12043 2732 12688 401 1961 10638 13229 687 1491 10270 12072 795 1614 10659 12008 743 1190 2976 11576 480 2153 1793 3068 776 14187 8335 9666 679 4001 1457 2943 1033 14080 2941 11644 649 3045 9029 11326 561 2261 9738 10977 867 1707 8995 10817 499 2235 8531 9880 703 3993 2631 3598 776 13741 7973 9694 477 4631 2817 4070 1008 12941 9501 10314 990 3487 8808 10153 1410 3355 3104 9193 2040 4462 1752 3189 9537 12304 1580 2243 2038 12199 1394 1924 2874 15001 2055 2523 8649 11572 5417 7454 2715 4935 2847 8150 2938 5431 2424 3668 8335 9843 4 133 539 484 244 -1008 21151 14738 -1335 2131 -78 15057 9600 13112 278 185 10520 9733 741 15953 -313 10508 -233 14290 9906 8721 15207 11477 1902 3249 15125 10320 122 10645 12218 7570 -261 674 672 15009 2111 10484 1437 15325 1194 1522 7616 14409 8738 9695 753 5603 6449 4909 11813 11053 2472 10562 -2592 11001 445 4943 884 14738 290 1435 9920 18059 1331 10994 11843 17236 2733 11470 4895 14863 10720 12239 2077 4054 11794 10466 71 14478 10611 11735 3044 7360 10198 9054 11762 13774 551 7195 10473 14627 5227 4355 13089 8665 8839 10252 3111 6394 9846 13301 1227 2594 2591 3966 11167 14580 8002 8907 7949 8168 10360 11164 4081 5464 4898 11951 0 8983 5459 10756 1542 3169 3270 7603 8834 13088 5976 8678 4852 11244 2610 7115 6756 8008 5455 8431 2601 7229 6044 7569 7645 9533 5125 7536 7893 7999 9712 9486 12904 12213 8440 8048 14166 10403 2200 13229 -1339 -892 -765 -998 12243 10040 2002 9992 1616 6849 1927 9991 11803 6302 8043 9423 7227 3582 2143 10000 -4034 7933 5114 8030 828 14286 155 6826 -1693 13372 5095 7148 698 14872 8584 8821 123 2426 7336 10907 -873 -543 85 7157 11004 11607 7081 8964 1276 -789 7422 8421 9917 5742 5741 7652 11102 5192 2079 2086 9197 9457 7255 4482 10329 10226 1521 873 952 9463 6313 7010 903 7082 6789 7344 5699 2606 7501 9029 -988 11860 8475 9449 -1063 4102 6222 6149 5781 6042 1083 5881 8023 8132 5580 6819 2072 1173 6760 7573 4936 3649 5301 6522 1197 1736 5531 6892 7887 3772 5039 8018 819 -1024 6277 6025 5847 1359 2178 7202 153 153 5011 6213 1303 1476 5916 6859 1363 807 6581 6757 960 6107 6551 6307 1056 902 io_lib-1.14.6/tests/data/both.run/4_PROGRAM_ID.txt0000644000031500020650000000002212354177666016251 00000000000000illumina2srf v1.12io_lib-1.14.6/tests/data/both.run/s_4_0134_int.txt0000644000031500020650000003521112354177666016361 000000000000004 134 548 359 -1571 -1440 23458 19308 11799 12614 -732 546 10477 11925 346 1297 11591 11789 472 681 53 -758 19919 14894 9890 10067 565 692 278 498 854 20434 486 1133 943 19738 257 159 19185 14494 -743 -1549 19381 15243 349 667 1064 11278 -1301 -1260 20014 19288 451 712 267 13399 85 -393 1462 19917 -16 -653 1615 20636 -638 25 1575 26869 1684 11635 1671 3692 2835 13759 1209 1977 9632 11193 812 3218 1459 1053 1814 24304 10316 10893 1518 4138 10240 11299 1106 4061 2124 2912 1195 19438 10552 11330 2431 5124 1793 2415 14858 16280 9414 11806 1652 4233 2750 9952 2697 4614 1795 2959 15476 14499 2823 11709 2714 3688 8820 11099 2104 3518 9569 11534 1677 3638 2651 9247 2884 5240 1791 3833 14813 13860 2439 10152 3221 5269 1665 3638 14074 13869 6155 7320 4815 6673 1829 3786 12181 11363 10387 10742 -100 -856 1607 10146 -1607 -650 98 627 429 14357 1693 10196 -715 -189 8583 8802 -1448 -1364 8347 8920 301 -373 7815 8088 172 167 7799 8718 13 -54 8797 8658 316 557 807 962 13181 9132 7564 8379 249 -635 398 552 11973 9686 6103 6813 886 861 800 673 -205 11196 311 -482 638 12739 532 887 10919 9355 1665 6950 1061 1652 361 444 1144 9379 249 814 9985 8405 443 672 10979 8683 1397 5379 1975 2405 5304 5623 992 1889 1034 1659 679 8617 606 1435 416 10060 1684 6264 363 2279 5316 6497 592 2073 1191 2058 6762 7186 665 1505 909 6737 1553 6133 722 1738 827 2015 7322 6196 576 1500 7676 7615 1036 5002 2314 2836 1588 2877 6741 6066 3473 4662 2041 2167 1399 4681 1739 2222 828 1750 1567 7541 791 1832 1511 7594 4 134 594 276 -3915 -3514 22937 16949 3172 16003 -806 -4661 701 10639 -289 757 -2749 -1023 721 20742 -160 -89 -2363 17499 289 9187 -256 748 -2534 -2103 605 22769 -1030 -548 17603 14503 -944 -2804 19063 15581 151 409 -2077 7883 639 928 13693 12280 10238 8413 60 949 -1311 -1556 1022 16439 25 -822 -1072 17071 -1387 -903 1160 18953 -1111 -80 15859 13138 3550 15177 -1291 -1289 12524 13157 693 618 11293 12263 -182 -465 1556 1248 13261 12505 8955 8030 2072 3023 9405 9633 1261 2654 3048 11687 -927 533 956 1622 12790 10212 2286 10142 1553 1295 902 1899 14426 10690 505 1389 1242 10870 6794 7729 1566 4043 1006 8447 1405 2984 -1847 -551 1655 17605 -745 -932 1657 18019 7571 9408 -1516 3474 8 651 1046 14383 -736 63 883 16109 1346 6675 1911 6590 397 1448 8917 12488 1201 8407 2505 3972 13231 11996 106 -1717 9865 10720 111 -1912 837 10566 -481 -1485 2456 13035 -3872 -729 708 1455 -1776 10068 99 -1101 13312 11156 10478 9975 902 -1794 400 6887 366 757 392 1247 -1434 9797 7748 8095 -1377 291 -1721 -1877 357 14438 -1066 -527 -20 11926 598 8517 -1454 -29 2122 10722 -182 -2019 8350 10300 -223 -1478 950 6954 86 651 99 -760 1036 13090 216 169 10580 7453 1006 8301 -629 97 6651 8132 62 12 8589 7574 363 1155 1484 7268 207 1275 8058 8108 -38 224 8737 9865 -699 -699 2149 7728 -1454 389 -2 1548 980 9354 1208 1856 8916 5898 6581 7323 -396 25 5871 7026 124 900 2356 7481 46 594 246 1088 6833 7685 528 -230 8852 8283 4248 3828 1826 2165 1777 6049 149 1509 886 1713 1767 8797 817 374 8516 8559 797 214 7970 8432 4 134 369 182 1 427 18963 15097 -1405 -1092 16685 12347 188 625 -1561 9117 9950 10985 -1770 610 201 -496 14878 11524 8328 7694 921 1646 738 1243 12060 9385 7908 8566 883 -28 671 1131 835 11841 327 959 821 12659 2041 9437 -1149 1768 -354 787 792 15569 965 8036 744 2472 607 1567 794 12755 357 1010 -513 13818 427 1128 15039 14039 419 1164 1898 11851 389 914 399 18431 521 1316 13104 15664 7784 8452 1970 3587 2534 10053 909 1275 7532 9448 394 1704 1233 2200 822 15195 343 1397 1492 18361 1045 1618 1548 17146 1111 1854 -194 17636 6801 7823 1045 4769 7138 8037 960 3553 8026 8143 1111 3619 7107 7693 2158 4235 2110 2744 9949 10811 4937 5808 3487 4977 1138 2430 9924 12664 1887 7005 3754 4295 232 1318 10854 12771 -189 383 3931 11413 588 1116 9550 12801 -1177 -840 447 15841 1413 7415 133 1268 206 632 694 14109 374 489 10711 10133 212 -704 12589 10564 6936 7097 853 -273 7769 6922 536 927 7591 7933 458 -857 1657 6326 801 1275 742 1165 8802 8015 767 1164 965 7041 6375 7329 -520 432 1647 6024 1165 1617 583 1217 11340 7588 651 315 10710 9138 4637 5257 703 1151 691 961 1055 9685 416 511 1452 11889 499 740 7738 8179 453 650 1959 10008 584 1315 1304 10523 1804 6260 1080 2219 4643 4833 1580 2829 1004 1384 6989 7771 1181 1577 1733 7087 5207 5777 1158 2005 4848 5996 438 1223 1501 5204 775 2680 800 1705 112 8649 735 1163 545 9942 937 1674 6491 7993 3715 4214 1929 3199 1586 4805 1075 2395 945 2289 598 7214 1601 4703 640 3486 3503 4709 351 2619 1348 1930 1529 8012 4 134 354 230 -301 7 18763 11198 9638 9808 -243 -1272 -262 271 -329 15189 1529 11395 187 -104 163 523 15432 9106 277 440 12605 10033 9446 9442 -485 -434 13009 12673 521 -1177 828 387 10789 8247 8195 8843 874 -155 610 1009 9414 6959 1661 9236 1195 912 590 597 12225 8175 205 -45 12648 9611 922 403 1210 10349 436 1123 1016 11665 2397 9437 497 650 8846 9623 1560 -875 951 1871 11406 8221 2095 8400 2018 850 7315 8461 1166 1367 1052 1696 10126 8881 994 1234 11621 8069 5371 6332 2252 1275 6863 7544 1257 894 1297 469 1997 11107 689 1603 9835 7774 1632 7643 895 3137 1147 7116 1409 1881 883 1505 9898 7924 5431 6025 1202 3035 1670 2293 8993 6598 5023 5982 2416 1931 2084 7097 1534 191 1884 7564 1756 1160 1478 7332 593 1724 1791 7503 1963 1393 -607 6479 13330 10105 5246 13662 1557 1240 -404 1687 565 21827 2666 14737 1428 2505 548 1843 10595 19160 7957 7998 11548 8668 6728 13965 2971 3420 5996 6535 11109 8994 2661 8559 9668 7526 3817 4389 13284 10398 5746 7211 7676 5910 1633 6086 2671 12017 190 1301 8547 19180 296 1575 2661 16984 1947 11051 2679 4047 6171 8379 6176 7035 420 1449 3742 17678 5433 6710 8103 8621 478 1305 10141 15004 2945 2513 4783 12379 849 657 14559 15769 701 13 16889 16844 4773 4561 8739 9185 2852 2650 11339 11076 3185 3707 10299 10405 4878 8572 5287 3823 2680 6359 6551 6827 2479 3991 4491 9808 1756 5637 6836 7461 1792 6122 4969 6420 3695 5425 7100 7017 1923 3197 9550 10013 3666 6945 4640 4492 3524 5175 6945 6939 5277 6595 3884 5020 2386 2826 2293 12112 1837 6093 1499 6974 4 134 614 269 -384 3399 22554 13017 10973 11777 436 1369 -218 -1909 503 19621 251 1461 478 20441 9630 13220 192 1427 12576 13898 182 -1197 3944 3267 12956 10153 332 11579 800 1459 -978 -538 1011 19216 246 11606 650 2138 8187 9307 555 1896 -1032 3091 936 20589 708 1340 31 15050 7541 10254 953 2055 430 645 15339 11589 -896 2061 16989 15668 -1005 -608 14518 15667 -749 817 2189 15731 458 -672 1899 19541 12035 11134 2076 4396 -201 297 12762 13122 2611 11361 2565 3982 1994 11466 1871 3777 470 1179 1465 16775 3848 9960 2750 5329 -1405 4156 13993 14133 697 1144 9691 12356 -567 573 3048 12210 5115 7207 3603 5262 2391 9424 2967 4126 885 1627 12041 12507 448 521 11073 12779 655 2211 1291 10439 3822 8020 2911 5760 5183 9265 3053 5201 1664 2820 10907 9822 845 1711 9672 11580 1070 13481 -84 -1014 101 1049 14445 9206 -41 8779 898 277 -23 1040 -513 13964 308 504 451 15030 321 1074 -1026 14391 -165 -1024 471 16004 2316 11159 -106 -396 -1019 3442 -1325 12124 -1543 2381 676 13381 591 1000 10301 10199 179 3655 9583 9720 2254 11137 829 404 8424 10117 397 -2153 1973 10316 -1483 1481 -260 554 12155 11157 6873 7161 1079 2115 792 1460 443 11255 1068 1378 844 12034 7744 8514 -643 2619 8414 9592 -783 2153 2512 9235 549 1006 2309 10204 477 145 1654 7814 2281 2432 102 692 1731 11665 906 1298 8973 7934 5251 6240 1663 3396 661 2137 1277 9811 6473 7962 -208 1117 2623 7525 517 2565 1803 7309 1583 2574 5987 6842 540 3466 5450 6118 791 3275 1752 2037 804 10227 6214 6927 -121 2425 7003 7693 1117 2133 6653 7187 374 3315 4 134 368 209 -20 -500 18743 9941 9129 8599 37 221 -181 -568 463 14008 -1239 -862 -193 14142 243 -1201 -1195 12545 -992 -278 14227 10706 -182 -1388 13538 9316 -1795 187 745 11059 974 8047 -105 -291 6245 6779 492 2860 524 -801 -407 16006 -1115 -1189 -1102 16584 -1657 1063 13533 11693 351 392 13021 10708 -362 -706 572 10383 8539 8409 678 692 9533 8347 901 815 8766 9076 59 -1681 9319 8733 1667 -65 671 568 624 12786 8016 7605 329 -259 2448 8867 1033 -84 896 1617 619 10079 567 2336 9239 8317 6512 6851 1173 1278 1922 7130 854 2807 2637 9739 -582 531 5840 7737 661 -279 609 941 8856 7601 1061 6465 1660 2243 1176 6992 1454 1742 -673 -191 10118 9279 118 57 1163 9161 -69 -489 822 11364 371 489 482 11323 277 313 6958 9796 3734 3531 1705 5518 66 -971 470 13836 -555 -1002 -1547 13098 7286 8095 -467 -2111 517 -713 -757 11545 2960 6659 -732 -308 6263 5917 -801 -575 6879 5847 63 -330 1016 6281 -788 -1497 5825 5587 609 -520 834 -1429 10890 8170 4858 5005 1204 -299 6355 5989 -862 -350 751 -683 10703 8229 710 1471 8883 5679 4371 3339 1120 1040 684 484 8089 6832 657 142 713 5121 1959 4213 343 1890 -280 194 664 8903 4274 4567 2728 1112 1261 4012 532 2330 332 -146 644 8609 1339 930 6104 5965 589 3778 961 1970 463 1268 447 6561 599 4372 202 2061 201 1664 6190 5755 1234 4326 1951 1089 -303 659 6170 6039 202 131 1700 6639 11 291 1624 6471 321 935 4958 5064 693 3736 2125 1709 193 792 6513 5692 -1 262 1877 6111 -558 2099 1162 3593 262 103 1192 7917 4 134 621 345 146 292 22447 13382 -1792 -1520 731 15770 848 -464 -142 19570 3219 13620 -416 946 13603 14462 324 -270 12280 13801 -685 -2429 2644 12305 -1060 2032 10206 12537 658 1159 1002 1119 13446 9778 10393 11072 -451 -561 2011 11927 -53 204 2707 12137 915 -1103 935 409 655 17006 9683 10604 353 1447 1639 3167 -331 15540 13082 14310 417 411 12282 13813 549 1720 13793 15566 -429 -606 3979 14642 -2086 -462 10210 10677 61 1153 544 1603 -883 19830 1077 1777 1074 19123 1333 11295 413 4901 1332 2318 1950 17494 76 996 16259 16184 -933 -185 3249 16745 124 2055 13212 14329 1360 10091 2224 5013 1089 9841 2538 4389 689 3129 14031 11546 562 8247 3593 4939 110 901 15958 14997 341 2060 1477 13709 299 850 1782 18287 -254 1329 1751 20450 1447 8609 1069 5697 144 911 1668 19403 -63 -112 17728 9633 1832 11675 -939 -2625 11431 13763 -209 -2352 1553 9835 82 2954 1983 9381 138 2613 -692 -633 654 17699 -503 -1295 178 18270 -314 -722 371 16716 8651 9966 709 -471 913 26 12974 11439 1878 8118 1270 1579 595 1285 13075 11027 446 608 1343 11310 853 1221 842 12753 8601 8997 87 -1321 7402 7031 1220 2120 928 97 13126 11774 701 826 13367 9563 789 764 1624 8246 6418 6363 1352 2496 2341 7863 1025 670 898 1680 312 12957 16 428 11516 11786 7646 8305 249 1818 7287 7665 1186 3648 1242 1537 1451 12616 2111 7322 1103 2533 814 2018 94 11258 1587 7017 138 3568 613 1476 574 13260 87 480 559 14232 1027 1330 1266 13814 5553 6933 1658 3799 763 1153 9025 10641 616 1015 2040 8997 1771 6997 1652 3647 858 2367 8000 9315 4 134 538 358 -369 -1837 22367 17650 -596 -217 19209 13724 -840 -1679 917 13261 12894 14336 616 27 642 289 17567 13979 2972 14183 1146 -551 700 1582 1168 17743 220 1278 1127 19310 499 161 1182 20781 11569 11355 970 3117 9926 11410 1477 2761 95 -346 15814 14926 3120 13601 351 1937 499 686 15221 13424 -165 1152 13761 12633 1029 9639 2944 4990 532 1566 2680 19546 1989 10468 1741 4852 9811 12367 -370 2655 2805 10290 1595 3568 1362 11226 2006 5113 1267 3323 1117 18986 872 2794 -271 18304 1383 3005 2249 17233 8590 10676 2302 5066 1922 3693 13371 13810 2872 9815 3640 5889 7663 9419 2340 5415 1605 3430 1237 15344 2516 10213 1855 6263 8656 11670 1201 3395 7298 9743 1934 4998 4185 11597 1999 2934 7322 10350 2795 3099 1443 3464 11519 12159 1573 3589 11962 10945 2537 9490 2996 4993 513 583 511 15087 9707 10031 673 1554 -441 99 17451 12544 2255 11715 -819 51 698 1137 795 17057 267 -119 1113 19582 -749 -193 16681 15231 1608 9099 1369 2212 10391 9956 876 1929 9956 10029 733 1671 10247 11357 632 -110 10138 10253 639 2036 865 752 1119 17287 9137 10527 -1146 1570 2388 9295 1215 2175 -283 848 13824 13723 457 328 2353 12710 500 892 13467 11911 11 541 12615 11704 823 7710 2429 3531 1685 7876 1685 4081 380 1193 1794 16687 952 1798 1538 13879 6239 7524 1324 3728 1423 1657 1382 13881 588 683 11860 13150 678 1112 9895 12130 -14 698 2821 12328 1139 1801 1368 13756 5879 6883 1857 4816 3315 7480 1829 4219 4776 6192 2730 4666 2007 3056 8448 10174 1684 2417 3444 9924 4772 5671 2486 5874 1926 1966 2808 12041 1314 2377 7288 10139 4 134 557 250 1573 2329 22214 16949 13029 14560 501 818 435 1042 863 22406 12647 14166 411 1214 1081 1432 827 21599 859 1197 208 21959 446 1097 913 21361 2698 14072 387 1642 421 1251 1425 21530 389 907 16868 17309 9858 10961 1209 3323 1003 1828 1242 21046 1186 1798 15215 17536 10239 12287 1899 3164 1250 2222 15428 16081 1095 2765 2245 15766 3491 15966 2313 4061 1793 3678 16783 16360 10748 12062 2225 4488 12869 14055 1648 3673 12021 15011 1435 3364 12273 14379 1505 3247 11248 13120 1181 3804 2655 3449 1764 19956 2858 3948 1610 20916 11186 12474 1442 6243 2467 4628 1521 18176 3237 13267 1097 7039 1773 3619 1411 19570 1253 2603 2735 21115 1867 3035 13831 18204 9344 10917 2926 8505 2997 4029 2250 19572 11097 12763 1920 7661 12210 13906 1929 5551 10668 12691 3107 6589 3477 5517 11387 14215 11427 12799 -203 1453 794 1327 15175 12236 292 602 15006 11731 8835 9183 444 1379 849 1159 266 15167 9952 10559 905 1634 685 869 13885 12358 601 901 13497 9895 587 986 1077 8941 1812 10792 1198 2026 808 1534 13117 11806 8330 9623 1903 2330 8385 9392 1291 2151 1222 1854 1438 14869 627 1240 1436 16627 675 1169 1398 15376 482 1164 1279 15411 2045 9326 1075 4588 638 2043 1241 12694 2031 9528 1147 3703 7701 9547 2455 3895 1305 2405 1386 14301 891 1875 1074 14032 758 1429 1181 14275 913 2115 954 13955 1957 9118 1182 4302 1976 9288 1713 3908 1025 3316 8228 10499 1890 8542 1796 3652 2585 9715 1515 3208 6517 8667 1750 4094 1553 3396 7725 9096 2130 7773 2304 4314 5211 7638 2312 4110 1342 2904 7534 9366 1342 3002 2448 9099 2014 7247 2011 4923 4 134 529 256 153 375 22045 18047 -664 -147 770 16633 2401 14696 391 1480 12679 13558 555 487 1004 1024 18946 14078 12342 13327 513 709 11922 13444 723 875 12324 13914 777 740 11520 12872 669 1739 1430 2086 979 15683 2547 11446 1606 2294 1231 1863 15973 14980 9317 10718 1312 2075 11485 13492 292 1044 10165 11442 910 2038 2143 3418 1198 17208 4288 16028 921 3033 12743 14457 852 2457 2355 4414 1265 17538 3889 14290 577 4075 1158 3059 1344 19712 1538 3359 1416 17994 2939 12745 2001 4477 1285 3557 15613 15775 1210 2494 15988 15530 1012 2291 3747 15792 1829 3244 2519 16386 8210 10224 1800 5667 9494 10339 1701 5053 9397 10092 1654 5228 2056 4091 1590 15514 2736 11257 1453 5581 3890 12520 1468 5417 9298 11474 1407 4409 10485 12110 1517 3776 9816 12077 1465 3409 8994 11118 1590 4055 629 393 6 16777 -103 -70 249 16212 2641 13121 -27 862 11743 12741 271 572 454 -135 15114 11944 72 250 15668 11259 1777 11136 879 1641 -116 188 858 15671 -291 -344 816 17774 1850 11088 434 1774 455 1727 994 13321 -58 599 11777 13141 1198 9962 1959 1493 1738 10362 1305 1164 325 1786 12529 12574 176 1004 1665 12224 353 996 1581 14348 -4 215 1388 17583 129 703 2121 15320 78 664 11107 15628 726 1087 9957 13565 5678 5996 2365 5526 748 1337 1683 13105 444 553 1446 15400 1356 1724 1178 14811 7276 8103 1332 4804 6612 8182 1282 4163 2679 8198 1700 4044 2066 7164 2077 4309 1737 3264 8953 10288 5507 6381 2457 4275 5333 6729 2201 4430 2248 2888 8552 9189 4357 5393 2617 5246 1378 2050 2693 11154 1439 2202 7406 11203 4501 5024 2813 5992 io_lib-1.14.6/tests/data/both.run/4_ILLUMINA_GA_CHASTITY.txt0000644000031500020650000000001012354177666017654 000000000000000.600000io_lib-1.14.6/tests/data/both.run/4_ILLUMINA_GA_FIRECREST_PARAMS.txt0000644000031500020650000010234112354177666021027 00000000000000 1 0 /staging/IL9/analysis/080813_IL9_1213/Data/default_offsets.txt 2.700000 /staging/IL9/analysis/Instruments/HWI-EAS130/default_offsets.txt /staging/IL9/analysis/Instruments/HWI-EAS130/default_offsets.txt 1.500000 4.000000 1 1 gzip .gz 0 0 1 37 /staging/IL9/analysis/080813_IL9_1213 HWI-EAS130 1 -1 -1 1 36 /staging/IL9/analysis/080813_IL9_1213 /staging/IL9/analysis/080813_IL9_1213 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 s_[12345678]_[0-9][0-9][02468]1 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 C2.1,C3.1,C4.1,C5.1,C6.1,C7.1,C8.1,C9.1,C10.1,C11.1,C12.1,C13.1,C14.1,C15.1,C16.1,C17.1,C18.1,C19.1,C20.1,C21.1,C22.1,C23.1,C24.1,C25.1,C26.1,C27.1,C28.1,C29.1,C30.1,C31.1,C32.1,C33.1,C34.1,C35.1,C36.1,C37.1 1 0 /staging/IL9/analysis/080813_IL9_1213/Data/default_offsets.txt 2.700000 /staging/IL9/analysis/080813_IL9_1213/Data/default_offsets.txt 1.500000 4.000000 1 1 gzip .gz 0 0 1 37 /staging/IL9/analysis/080813_IL9_1213 HWI-EAS130 1 -1 -1 1 36 /staging/IL9/analysis/080813_IL9_1213 /staging/IL9/analysis/080813_IL9_1213 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 s_[12345678]_[0-9][0-9][02468]1 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 C2.1,C3.1,C4.1,C5.1,C6.1,C7.1,C8.1,C9.1,C10.1,C11.1,C12.1,C13.1,C14.1,C15.1,C16.1,C17.1,C18.1,C19.1,C20.1,C21.1,C22.1,C23.1,C24.1,C25.1,C26.1,C27.1,C28.1,C29.1,C30.1,C31.1,C32.1,C33.1,C34.1,C35.1,C36.1,C37.1 1 0 /staging/IL9/analysis/080813_IL9_1213/Data/default_offsets.txt 2.700000 /staging/IL9/analysis/080813_IL9_1213/Data/default_offsets.txt 1.500000 4.000000 1 1 gzip .gz 0 0 1 37 /staging/IL9/analysis/080813_IL9_1213 38 74 /staging/IL9/analysis/080818_IL9_1232 HWI-EAS130 1 -1 -1 1 36 /staging/IL9/analysis/080813_IL9_1213 37 72 /staging/IL9/analysis/080818_IL9_1232 /staging/IL9/analysis/080813_IL9_1213 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 s s s s s s s s C2.1,C3.1,C4.1,C5.1,C6.1,C7.1,C8.1,C9.1,C10.1,C11.1,C12.1,C13.1,C14.1,C15.1,C16.1,C17.1,C18.1,C19.1,C20.1,C21.1,C22.1,C23.1,C24.1,C25.1,C26.1,C27.1,C28.1,C29.1,C30.1,C31.1,C32.1,C33.1,C34.1,C35.1,C36.1,C37.1 1 0 /staging/IL9/analysis/080813_IL9_1213/Data/default_offsets.txt 2.700000 /staging/IL9/analysis/080813_IL9_1213/Data/default_offsets.txt 1.500000 4.000000 0 1 gzip .gz 0 0 0 1 37 /staging/IL9/analysis/080813_IL9_1213 HWI-EAS130 1 -1 -1 1 37 /staging/IL9/analysis/080813_IL9_1213 /staging/IL9/analysis/080813_IL9_1213 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 s_[12345678]_[0-9][0-9][02468]1 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 C1.1,C2.1,C3.1,C4.1,C5.1,C6.1,C7.1,C8.1,C9.1,C10.1,C11.1,C12.1,C13.1,C14.1,C15.1,C16.1,C17.1,C18.1,C19.1,C20.1,C21.1,C22.1,C23.1,C24.1,C25.1,C26.1,C27.1,C28.1,C29.1,C30.1,C31.1,C32.1,C33.1,C34.1,C35.1,C36.1,C37.1 1 0 /staging/IL9/analysis/080813_IL9_1213/Data/default_offsets.txt 2.700000 /staging/IL9/analysis/080813_IL9_1213/Data/default_offsets.txt 1.500000 4.000000 0 1 gzip .gz 0 0 0 1 37 /staging/IL9/analysis/080813_IL9_1213 38 74 /staging/IL9/analysis/080818_IL9_1232 HWI-EAS130 1 -1 -1 1 37 /staging/IL9/analysis/080813_IL9_1213 38 74 /staging/IL9/analysis/080818_IL9_1232 /staging/IL9/analysis/080813_IL9_1213 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 s s s s s s s s C1.1,C2.1,C3.1,C4.1,C5.1,C6.1,C7.1,C8.1,C9.1,C10.1,C11.1,C12.1,C13.1,C14.1,C15.1,C16.1,C17.1,C18.1,C19.1,C20.1,C21.1,C22.1,C23.1,C24.1,C25.1,C26.1,C27.1,C28.1,C29.1,C30.1,C31.1,C32.1,C33.1,C34.1,C35.1,C36.1,C37.1 io_lib-1.14.6/tests/data/both.run/4_ILLUMINA_GA_PHASING_FWD.txt0000644000031500020650000000013512354177666020225 00000000000000 0.004400 0.003000 io_lib-1.14.6/tests/data/both.run/s_4_0133_sig2.txt0000644000031500020650000003454312354177666016441 000000000000004 133 593 417 -1066 -2372 19502 -917 -1046 -3357 507 14017 17440 -3767 -540 295 790 -1451 -3636 18328 15286 -2040 325 -613 13018 -798 516 -709 -78 -1113 17314 -1394 604 -537 407 7452 -466 14985 500 -1826 13666 111 -433 137 15634 1252 466 -3383 16126 -2863 -411 -334 568 -2042 13504 281 169 14238 4 -1191 14829 398 103 -2643 1132 15424 825 -2537 651 17814 -432 -2660 333 -1512 103 16279 -697 2327 -1031 12292 204 -453 423 12875 14851 -648 520 566 1164 -536 11245 2893 1103 16612 439 -2745 305 267 12508 3302 101 690 -92 12674 1140 -1101 27 16007 13515 -391 11 607 12036 1709 280 -1045 991 595 13413 818 1455 16 9365 4382 1340 -1731 612 8832 12081 -262 1990 -1249 -661 10863 756 712 1096 396 1096 12806 334 105 12499 1572 11893 515 -1017 645 10134 578 2095 3524 52 -4074 -1218 15585 -2232 13534 -1488 589 -3997 -1543 181 13043 -2044 -3635 13266 3192 -776 -3154 445 8616 -2285 176 12554 366 -2954 13301 72 -825 -2255 11499 -471 401 -1468 -878 12373 556 -1858 9788 -88 77 -461 -3836 13180 1805 -2389 -1166 241 10209 -2794 -124 674 11198 -138 -257 142 10078 -1523 7419 735 1374 -1587 -1130 -5 13284 -954 -630 287 10855 -956 -916 455 10620 -36 -635 9848 1331 -1791 -1281 -97 9460 -1155 735 689 9536 -870 8495 -1025 1204 -1217 9105 -923 1130 -1435 -1684 582 12067 -1240 -891 8969 4388 6074 1929 494 -809 44 -214 9098 211 -775 8103 353 376 6015 65 801 216 -1966 604 1200 8329 352 -1116 8064 1479 43 -1808 7622 2823 -1776 5811 1324 1292 5124 -349 983 1854 -868 6716 1342 -12 -502 385 268 8878 4373 670 1273 2101 4 133 587 382 -424 -741 18769 3355 385 996 -858 13517 1068 348 -447 18957 1095 -987 16913 1531 11458 2047 415 -606 709 652 16431 1131 1089 776 337 11517 855 842 -682 17991 984 13646 1079 890 1192 -218 15905 1318 10657 761 629 1401 939 336 1089 16609 13082 1927 1062 -983 12220 545 1136 1814 616 -551 1279 17880 1599 505 16440 6636 2123 -1091 17209 6646 732 1494 330 10953 2014 285 17864 4780 12708 1847 864 710 1442 374 2236 19723 12839 1272 839 1819 1013 110 2889 21668 1964 52 16801 5412 1562 818 51 14378 11953 254 2233 3815 238 698 2752 20465 2026 536 15646 4110 1403 1209 1314 14268 1372 -1434 2822 18485 595 1300 11680 9692 9563 649 3126 4465 1559 10553 2739 2912 1641 1582 11385 6264 1866 -862 12861 7092 1402 10076 2316 4449 2236 9099 3561 5136 -710 -930 14337 2506 -2 -1736 14177 1348 499 149 11459 -180 149 -259 11758 1217 -1339 584 10554 1328 6661 874 981 585 -536 -588 11010 307 294 9553 151 37 9718 -383 950 773 -635 9104 1269 290 9683 1524 1308 -804 868 973 1234 9403 861 728 -307 10454 829 1097 9220 534 447 1424 -404 7742 8673 1124 1306 1229 660 646 8741 1953 478 8726 6687 1033 6552 1393 1548 840 848 1078 1467 8107 781 199 1060 9088 -143 -112 8592 2736 126 978 1182 5845 -88 596 7688 2970 -130 6910 1325 1175 24 7116 1585 1032 5364 1884 1453 1195 7244 -66 1052 868 652 1294 563 9041 844 -140 1326 8875 1059 5574 1120 1505 6049 1565 976 1136 579 -52 1250 8662 766 7255 1410 41 -21 6758 1132 2516 6227 767 973 1440 784 1520 897 10047 4 133 505 428 -1844 -572 18279 -1124 464 -1706 15628 -1214 223 -308 757 6484 -1775 -349 151 12568 -1876 -46 11146 943 -1457 -680 11443 305 10986 -2155 482 -1626 -2184 11751 -1170 -68 -119 -1250 -1044 13125 -245 -945 317 12102 528 -1946 13099 -1623 -820 -2742 8537 4170 -291 411 -3597 7565 -377 -1683 10033 1806 -1360 -910 10403 1642 -1220 12669 -882 808 14750 618 -3462 163 11269 428 1775 -721 1301 -223 11922 -471 -1532 688 1006 6795 -786 9736 -61 2668 -489 257 1231 10563 40 -204 13233 -753 15 10598 -1340 635 -358 7992 1776 936 217 330 10930 731 -758 10135 -1769 872 -742 -244 2540 12000 1282 42 8950 2314 6743 1104 -613 2459 832 -96 70 9783 7152 907 1218 793 9208 1172 301 306 6082 1982 480 1245 444 -529 10294 1993 1825 0 7968 -690 7588 1284 1259 -119 690 11736 -1453 -2056 11169 940 10 -2592 594 -52 11311 -1793 -3159 -306 12643 1499 8821 165 -1290 -185 13692 -1068 -2670 621 13588 -1396 -1419 -1839 -394 -1618 -878 11315 -1063 -140 10883 -988 -238 12585 -1453 -1583 7912 428 108 -473 419 -303 9108 -1461 776 10870 -1363 -1155 11014 45 -59 -1151 1088 -58 7597 -962 156 12125 872 -4046 9426 486 -1080 -975 8623 1837 -75 -2411 693 -931 10750 -1862 10016 -2201 -802 -239 -1091 -645 -434 9499 9781 -1334 -298 441 8109 2482 302 -2478 79 -583 639 7073 -136 8446 -168 -1020 8151 -438 248 -1632 -599 9049 -1446 18 -1223 221 7464 2159 6034 -130 -29 -444 -961 1124 8400 228 -806 663 -284 4408 8287 -1004 820 -245 -30 -225 811 5189 -149 5087 419 1332 402 5849 706 323 327 -340 -132 7017 -347 -126 689 9107 4 133 548 808 -880 -344 14550 1884 10416 963 -1206 47 -815 -317 316 13908 459 -565 236 14144 610 -360 11931 872 11478 2330 -179 -286 13433 936 29 55 486 -889 327 13772 1034 10546 -313 -174 405 -140 11552 1832 357 9687 312 488 974 -461 9549 3147 8719 428 546 103 868 300 10538 324 449 103 -200 7497 803 25 9444 3324 822 -569 9079 2950 389 -392 271 9435 534 9151 1607 908 883 811 9350 1992 898 -855 9330 3253 495 9141 1441 238 8328 1076 1571 834 676 518 10524 1908 6909 1650 756 1360 987 685 1552 11073 1130 -320 1487 11385 1076 264 8817 3179 356 8479 1687 726 930 597 9635 3232 6714 426 1441 1994 1025 233 1766 10222 8485 -156 1318 2114 9062 745 1706 2276 7782 1163 1812 1832 1563 6210 1587 1677 1337 1337 8748 3957 -27 -686 114 11955 -583 -951 226 12610 -450 127 11187 1448 402 10886 219 -279 7688 1595 -221 302 408 -442 11356 1415 339 -588 441 7052 -2 -703 10069 2069 -388 482 10701 877 7436 377 621 -680 8821 -177 65 295 -86 -30 257 10867 8626 892 632 -464 587 432 8900 420 68 -177 368 7194 -495 9552 216 538 8040 450 728 383 547 651 9667 243 511 382 9402 328 -146 270 1256 7110 -753 260 1155 9984 9182 367 1061 381 9188 437 577 740 8107 336 859 632 180 93 877 10481 800 -43 916 8679 668 275 957 9124 7171 972 297 1192 7115 664 709 590 715 69 842 8980 842 -433 7309 3724 -394 290 1352 6514 340 -187 7317 3489 6287 -204 916 1694 -175 5786 1473 1626 807 6267 1244 837 -24 656 7218 4478 4 133 568 418 -1052 785 18138 -875 880 -1504 1858 11027 1911 12704 388 188 164 13374 860 -1364 -1543 14992 414 2444 490 13076 -688 676 78 778 373 13147 -615 5410 427 12644 4868 11701 -886 3392 4324 -622 14170 357 3089 -1680 13768 1370 -55 789 11685 3764 -3212 5167 12376 1684 -2418 12558 1576 1696 3558 -859 13310 193 -123 458 13386 1310 -263 4834 192 7621 3461 2520 9702 2599 -652 2375 12922 3490 -1236 4580 4149 8567 -352 6019 2344 2768 5424 -3388 2205 12426 5900 2764 -981 4288 2108 602 2091 9248 5668 2304 1783 3484 5185 3022 9194 4986 -851 1873 2142 7651 5258 2456 9334 4197 -103 -330 3434 9060 -762 1630 1879 13202 9964 -3105 860 6468 2629 884 1699 11197 1512 901 1855 12278 6775 831 -1707 6868 7293 1998 5729 804 2446 944 -369 11735 6283 1158 4038 3266 15040 -570 -1722 2131 -1180 -1454 14810 1230 -2190 -670 15126 -132 490 14659 -1457 2064 534 327 4441 7544 -752 790 13528 1846 558 12022 1777 -2511 -1974 1690 497 14663 92 584 -2554 13612 50 10104 347 543 -1142 786 76 15412 101 2300 9977 3824 8558 -13 1114 2442 -1013 11653 779 -1534 1820 2080 10992 1614 262 2182 1162 8189 477 826 -275 11740 907 9209 395 2836 -134 1974 9414 3111 261 886 1164 9068 204 1120 10178 2812 7254 25 2897 948 715 73 1182 11212 540 370 9745 798 5352 2976 2094 266 257 -80 10300 1867 3564 -3201 1231 6679 171 1444 2197 7568 -1036 884 728 11515 32 4008 9250 2895 1423 -2773 998 8303 5546 2674 1221 2893 64 1351 780 9876 650 6727 1155 2429 660 -332 498 10838 -1496 2024 7484 5678 -23 748 1998 8053 4 133 587 489 187 -1423 17949 3094 -256 -832 370 12318 1072 41 16420 345 500 172 375 9376 363 -605 317 13830 1402 12650 155 518 11746 1580 279 542 13875 3052 -302 -820 910 13925 -1884 972 10254 3369 669 814 1174 109 12099 1160 12477 1899 -1077 147 -886 12390 326 767 707 13416 -1312 1287 70 148 563 15118 16138 801 728 1569 304 376 479 18677 18189 881 146 -853 18336 3363 -1982 1882 20559 870 672 789 379 13660 666 1664 15370 2633 -1297 1267 1671 1042 9 16163 2111 1832 497 14643 2037 16138 596 -661 1468 1173 -564 15329 1735 -268 13976 3264 -537 1939 215 12062 889 1183 13189 2391 2078 13547 -759 3019 922 14557 1342 1528 1215 861 14323 1191 -111 14713 -159 1391 392 916 15257 3081 882 1542 980 12380 1003 1390 521 15048 1175 2472 967 14928 14658 1106 -688 -575 531 387 12745 -1025 45 15797 -943 -414 582 -1268 13480 813 494 14926 -2478 1532 13628 2095 73 -456 13090 2007 108 -1258 1161 418 12975 -2634 8026 2170 1033 -186 760 323 12461 -2645 540 366 -1426 7430 11621 734 -167 -202 10731 2729 87 -624 10544 1686 551 94 942 9578 738 -936 12617 1230 -668 -281 1047 -706 -77 9080 10614 2922 347 -1035 1173 1043 7520 -351 407 510 -587 6284 -608 -29 10000 1622 756 9721 693 -287 731 10141 756 -1338 9437 1515 421 -1072 650 1200 257 8144 1092 1838 7316 214 359 9910 912 2 302 -105 839 8951 -148 10900 -552 179 8479 1491 -189 441 -231 946 8212 2111 257 1482 7859 104 5362 1729 1284 269 8749 387 914 572 806 7852 877 513 8641 477 778 364 10224 1261 1199 -72 4 133 511 464 470 398 17618 -1805 787 18564 -500 -1986 18524 2600 196 -1951 15105 3436 -522 -92 16381 2412 489 -1687 1021 65 -1888 14848 1132 15474 291 -2057 15222 1422 378 -853 -211 15714 300 -887 927 15784 -1676 -1102 15381 1332 -1770 11 107 -338 12777 1082 12583 2190 -765 -1192 14528 344 -346 219 373 326 13446 -1905 -156 344 15961 1546 2521 17470 -652 -2254 797 -25 15598 -466 1380 806 14472 -1127 702 -67 55 9629 726 -506 1305 12346 1228 14056 -302 -1614 1096 13144 269 -1064 787 -1017 24 14559 943 925 12698 1672 11566 1876 -950 374 10872 1656 1313 -99 779 447 586 12764 1348 1090 11534 2408 10144 2045 413 -275 10364 1006 1045 -1353 1649 5 872 13422 1706 77 12033 2218 1636 284 10852 2250 1301 -752 10190 3376 9785 1080 1435 162 10534 1826 2940 317 -2810 -364 95 16828 -3784 69 224 17329 21 16621 -1403 -290 -854 -1259 14869 2213 -1874 -1186 644 11198 72 11355 102 916 -1927 -1386 416 15984 11176 1883 138 -2099 12507 -828 325 -305 -1284 -685 13579 2730 8960 -931 428 579 10901 -619 716 -762 583 150 11340 618 464 439 887 6776 291 -385 -1241 14157 -700 -534 572 14276 8902 1065 722 769 10622 1576 714 -1582 276 619 9456 3315 9599 -2251 102 1588 158 -721 461 12773 -1004 258 416 13366 681 -659 10331 3261 37 8963 900 1678 274 17 -756 12895 686 307 8462 4124 6159 1361 850 1021 -123 491 8728 4311 431 452 6764 4369 30 -880 9352 3678 209 190 385 7326 286 8458 368 1897 6916 -231 1398 1415 304 -36 9025 3435 601 945 1091 6228 184 -196 8298 3646 284 611 7989 3460 4 133 507 435 576 -1387 17516 319 14008 576 6770 -1391 641 -1437 436 14666 13075 2368 357 -768 258 704 -741 15778 1037 -539 12112 5832 15410 -1768 247 974 12795 417 -253 524 9670 -251 -606 13660 12623 2213 3852 3535 14829 783 586 -903 350 11705 -341 2802 13477 139 6226 1877 -286 13992 -515 424 242 176 432 12035 16446 2563 439 6956 11560 -122 -1883 14829 15449 507 -1714 9039 2056 -308 13537 3348 10731 3114 380 2075 573 13954 841 7243 9669 8609 708 -1122 13980 2319 885 1139 1573 11924 265 9720 256 14776 -1304 9917 1234 805 11421 5590 436 12516 7649 878 562 12247 457 1253 7827 4792 128 1330 -308 12685 -19 9469 3377 6359 9309 782 6399 3777 737 1225 6959 3740 19 12064 -175 1100 10454 4396 7238 1087 9534 2640 1465 6943 9650 1299 2539 5796 9271 873 -1002 9105 11558 614 12173 99 674 -1371 11100 -3806 12934 -2688 -652 -1161 12107 1613 -852 -501 9877 705 9102 2386 730 -512 502 7641 10896 -854 4792 6116 405 8024 275 -259 6064 4580 471 12102 8720 -2443 9568 2340 -729 177 -1667 11202 7547 734 479 10295 4811 1365 11502 520 5017 2081 330 618 8715 -152 198 10740 524 8488 368 11188 7241 -1763 10773 646 196 5145 -1215 6868 11089 -2858 7637 351 678 763 -1156 692 5437 5259 -740 7989 -744 9574 427 -990 9829 460 -868 9427 1029 243 10 2682 8751 1590 6836 -618 8644 329 -590 6771 527 5595 7959 1348 276 -422 7596 44 1042 1046 7058 970 3890 327 6752 953 888 211 1156 5565 4133 1509 639 -1244 2556 5288 718 -843 7815 1656 491 7353 1144 2317 566 -696 8050 4135 794 -262 1827 7262 4 133 561 484 72 271 17444 3000 -161 19073 492 -157 611 18165 299 927 14381 2359 231 408 348 922 544 19766 13559 2451 435 551 13635 3000 330 735 1276 -30 484 20552 1165 856 429 19050 412 17803 520 930 17503 1157 467 1062 16078 4197 477 1161 15425 4297 473 814 888 14739 118 948 1564 335 599 17790 2282 893 651 23325 1422 1135 716 22908 1733 1078 578 23643 1694 1055 705 24503 1651 1224 490 23123 1090 794 856 23091 1524 20111 739 2353 1578 117 668 22915 1453 841 17046 8944 19128 1848 323 2073 705 2089 567 23647 20799 2342 1204 1796 17440 3664 920 3520 1238 1109 14960 8011 2357 17406 232 3276 2457 478 1220 20923 1996 1080 15676 5638 1494 2029 13559 8004 1408 1098 1213 15109 1539 686 1776 21723 1525 14640 1747 2767 1538 1549 1573 22816 472 282 13695 1905 648 16781 648 267 13071 3888 386 186 381 1316 386 15479 703 459 107 15822 15794 2162 -85 1278 15133 2096 495 -35 1251 13428 451 19 595 14830 500 598 631 780 12729 2240 108 1360 685 9317 569 14191 250 875 12708 3124 552 648 11775 2520 638 749 13066 1325 604 340 878 12665 343 775 1287 1117 454 12134 10851 1903 494 1412 673 1408 691 11991 846 13058 478 1163 10942 2478 399 1375 11427 1566 740 639 10216 2698 332 1337 10437 1909 543 1986 1319 1272 460 12153 10524 2609 274 1636 1255 1804 683 11419 12230 1064 724 1044 10973 1188 1079 1645 1203 9792 828 2093 1622 1220 9377 4118 1726 941 362 8824 1417 912 1594 11518 1865 525 8472 3653 7247 2451 1281 2038 1397 8704 1652 2578 3098 1025 8477 3713 4 133 539 484 1020 -2008 17449 585 -1947 4217 -254 12696 10900 4292 359 -83 13165 -1563 508 12985 -2628 13806 -514 12117 12840 -2355 12880 861 2151 1163 12518 203 -1752 13491 10330 -869 -157 294 -18 12575 1285 10900 950 12027 1434 -382 6588 7686 10791 1167 -22 4040 8430 -2997 10755 2208 1246 10893 -3093 10932 -147 5329 461 12003 652 96 8434 9243 73 12508 10167 7475 1397 10996 3589 10165 13275 1088 1708 822 14753 -2531 -396 13348 12240 1656 2254 3535 13635 -2972 10471 4809 -2228 9787 8225 7000 7082 -2810 11706 -1140 10700 1646 1689 4158 11752 4657 100 634 1471 1037 10407 6869 10040 728 6463 1806 13373 -142 3294 1614 3241 9967 -723 8768 5973 6145 852 249 2636 5133 8565 6622 7947 2422 3074 7094 1184 6039 6342 2018 6574 3364 891 4953 7418 1107 7056 3660 6295 3302 7303 2268 11649 24 10449 2443 10246 -233 11601 295 218 14847 -1214 -94 -922 -532 10166 1133 648 10819 928 4653 302 10966 9846 -1813 9735 1545 6026 -1536 416 10912 -3809 8742 5831 3659 709 10916 -1840 9356 -1715 11614 5704 2765 483 11816 10492 133 93 1385 8330 4794 -1254 -310 -2584 10131 9860 3476 8592 2187 102 -1744 8772 1366 8445 -949 6498 2957 9176 -2544 1578 241 7143 2737 10377 -3909 8999 1962 752 -623 -84 7567 7791 1283 283 5431 7882 717 5550 -2922 8494 2465 -1560 11713 10177 1488 -1503 3248 7853 -804 5076 1190 -1427 7744 7185 2243 6964 1155 752 -628 8183 1073 4648 52 5664 1727 -233 1016 6358 1668 7945 -1794 4794 4865 -844 -1178 8731 -1948 6134 -2711 -86 8559 -791 266 6343 799 1248 572 6844 1498 1170 -1047 7873 337 604 5791 9003 -335 1011 -769 io_lib-1.14.6/tests/data/both.run/s_4_0134_sig2.txt0000644000031500020650000003420012354177666016430 000000000000004 134 548 359 -1283 -336 19307 3126 13966 852 -500 787 12380 1656 391 828 13892 59 300 208 290 -1485 16903 1433 12151 94 201 -140 414 37 433 16989 878 628 129 16238 820 -554 16312 914 -311 -1504 16408 1792 692 364 -552 9243 -1124 -461 17825 4533 869 253 -910 11121 612 -869 992 16007 580 -1109 1077 16195 -407 14 890 22611 169 13101 1500 627 798 14246 1088 707 12609 863 674 1138 743 -1133 1218 21927 13142 582 1342 818 12647 1193 947 1655 945 689 624 17903 14405 748 1339 1066 381 104 14311 5833 12629 2452 -93 2159 757 10354 1301 2112 2421 -1136 15169 3840 754 13197 788 1166 11174 1285 1735 1659 12106 1527 1274 1974 587 9711 1390 2749 2329 82 14932 3481 1400 11729 -208 2245 1343 743 14251 4060 8901 1033 1543 2663 1356 2561 12498 3020 12359 623 -70 -734 44 11401 -1321 295 -27 742 175 11451 -1 11527 -582 21 10369 211 -1204 -368 9828 902 286 -567 9253 451 140 -25 9042 1399 1 -146 10898 -102 -118 206 221 340 11497 -90 9558 1258 -691 -830 -338 273 10566 1151 7799 1136 280 -394 613 -56 -411 9530 492 -1055 -122 10367 514 291 9914 784 871 7952 238 171 377 -397 235 7754 109 958 8615 653 453 -29 9491 737 318 6176 930 748 7264 -18 731 353 575 943 429 6926 401 710 175 8526 462 7108 251 811 7228 1139 -107 1136 623 1197 6633 1648 466 532 -27 5706 883 7302 -170 351 713 1009 6602 667 435 683 6754 2011 145 6375 586 751 1439 1281 6646 1150 4697 1223 997 475 422 5345 1435 111 787 679 1149 5866 791 1755 1299 5907 4 134 594 276 -4171 66 18884 1459 1227 16119 -470 -3566 -1063 12554 -160 741 -3214 1854 345 17100 223 -266 -2282 16088 -1343 11498 -102 24 -2675 39 -136 19479 -813 296 14863 1812 -269 -2915 16181 2294 274 397 -2973 8089 709 111 12247 2466 13608 -2631 -500 89 -1994 -324 716 13742 729 -1332 -1324 14859 -1475 504 307 15796 -1227 223 14637 1117 1458 16246 -2103 -683 15828 -646 876 116 13708 1199 -812 -627 588 -838 12511 3509 11638 -1505 878 1123 11843 -604 1171 1499 991 12665 -1786 776 1245 -1499 12582 1583 1232 11561 -805 -75 1263 -261 14207 270 -158 956 -649 9887 9784 114 1379 1651 -1158 11159 1183 223 -2508 361 1101 15428 -1309 -949 1404 15154 11134 2770 -1820 1112 -1265 310 1050 12485 -905 127 325 14202 1017 8239 939 2612 624 -1191 9004 6266 94 11496 1303 1410 16117 -1446 111 -1554 11717 1276 119 -1713 -1166 12921 -346 -1047 631 14165 -3217 1388 671 924 -1793 9304 60 -1495 11250 1377 13293 -735 518 -2191 -1412 9069 325 157 -17 987 -1361 9182 9955 577 -1172 222 -2588 -152 175 11892 -1393 387 -133 9864 -1091 10901 -1299 358 237 11866 -55 -1769 10685 1777 -177 -1217 -907 8870 38 -109 321 -1745 166 11268 295 -613 9857 -817 -1082 11028 -1324 421 8055 1585 86 -210 11575 -2304 315 698 -1447 9237 157 919 10468 -753 0 84 11071 1148 -551 -443 431 8592 -1470 535 -762 1603 143 8432 717 780 8936 -1328 8596 1007 -1451 184 7187 984 158 662 1101 8263 -743 76 -265 604 6041 2663 205 -1198 8129 1667 6452 -1322 779 517 506 7380 -187 356 824 590 689 7524 1081 -655 7867 1219 1211 -745 7179 2692 4 134 369 182 400 114 15629 2090 -1334 53 13854 1074 321 478 -1443 8601 11868 1195 -1546 1325 396 -1238 12646 1380 10401 -959 386 792 649 382 10371 1185 9716 706 529 -883 669 413 535 9721 505 376 565 10367 1109 9832 -1011 1287 -383 518 517 13474 -175 9484 674 611 878 573 544 10606 561 656 -1232 12311 809 474 13855 2246 595 809 651 8854 744 411 -699 16145 371 652 12215 5191 10458 33 843 1541 302 10623 771 312 9838 1573 336 307 895 869 467 13175 397 1148 1053 14689 1591 396 1200 12973 893 713 -696 15900 8727 1161 1049 1852 8181 1035 796 2209 9787 -236 873 2327 8726 638 1197 2096 1396 441 9711 3797 6910 925 1371 1621 650 720 9620 5954 1556 7744 1455 395 319 113 10705 4827 -282 543 1266 8008 1258 410 9705 5617 -1510 592 162 12467 369 8040 94 884 126 724 299 11075 401 313 8718 1981 280 -1101 10379 1418 8372 380 504 -838 9498 -1061 422 440 9205 434 378 -1108 664 6584 413 532 765 468 7611 1358 525 574 448 5428 8017 1174 -553 338 674 6304 570 632 491 738 9692 -451 562 -458 9083 1445 6003 1015 -26 -26 410 450 729 7511 421 225 642 9248 533 456 7038 1278 466 307 1048 7211 458 710 879 8284 798 6917 800 392 6365 -269 857 1250 548 645 6529 2110 772 582 830 5340 6689 791 932 441 5944 1282 231 519 333 5798 708 1108 693 822 -156 7386 733 517 -320 8314 461 1187 6441 2089 5275 132 995 1287 714 5267 855 624 765 1038 314 6578 845 4970 546 1924 4781 1316 54 1143 1181 891 1485 7020 4 134 354 230 -18 13 15512 -1052 11471 86 -91 -997 -99 525 -486 13054 -71 12540 111 -418 455 -77 12985 -1001 419 -83 10505 1464 11363 -125 -620 -169 15936 -613 382 -1445 564 -844 9409 1027 10208 747 260 -774 460 -56 8309 663 521 10202 334 15 1013 -777 10553 3 537 -597 10841 742 1513 -862 233 8411 507 390 680 9563 1078 9759 419 -382 11589 129 965 -1939 395 436 10588 786 807 8838 1038 -615 9689 678 403 427 626 511 8935 2037 1001 -102 10303 160 6602 1217 1035 -303 8719 838 949 -720 1215 -1633 905 9815 740 527 9660 -59 912 8243 -345 2337 88 8023 519 500 711 -587 9943 1076 7665 695 -971 2074 892 489 9167 328 7012 461 1101 327 800 6923 1266 -981 1247 6966 1676 -67 525 7231 181 1402 1299 7846 2119 -177 -2314 9516 10826 547 4456 11325 1275 -6 -1005 2861 173 17443 546 16359 1039 730 152 1743 8534 9669 9722 50 9521 166 6336 10169 2036 955 7182 441 9214 905 1579 8411 7655 490 4424 648 11042 849 6841 1982 6163 -10 712 6422 1584 8296 -114 1445 7250 10561 31 1300 1655 12726 -75 13263 1972 911 7736 2554 5290 1444 -684 1410 2400 13416 7073 1942 6647 1145 -385 1367 8583 6562 4078 -566 2615 7436 766 64 12247 4169 462 -782 14306 4057 6430 -19 6083 2205 3088 -168 9379 2446 3487 513 8542 2760 5426 5476 3619 -503 1966 5270 5561 1507 2773 1308 2995 6117 1012 5540 5909 1547 748 6286 3446 2385 4692 1936 5621 1284 1355 1356 8490 3017 3944 5192 2824 554 3479 1997 6330 1788 6873 2072 2868 705 2340 -319 1590 10133 1194 7483 1215 4570 4 134 614 269 -708 4273 18681 -1654 13008 825 462 832 484 -2345 138 16356 369 1293 132 16952 10872 4399 267 748 14879 1452 104 -1281 5011 -1593 11181 1350 -1948 14771 429 299 -770 -558 567 16385 -2219 15061 618 775 10451 489 520 659 -2265 5266 552 17531 853 266 -249 12757 9271 3535 371 398 412 -438 13435 1070 -1322 3701 13903 3713 -783 -193 12270 4725 -962 2109 736 12177 476 -1953 1247 16306 16755 -1456 1190 1078 -1526 -310 11883 4142 1753 11712 1327 1579 546 12629 1587 1149 558 -1246 808 15267 4379 8301 1600 1383 -3381 7018 12918 4020 1704 -675 7910 4638 -1530 1257 1479 9535 7161 1906 3116 1468 935 10387 1533 1381 1301 -610 11027 3933 845 -481 9843 4205 256 1697 -642 9074 4197 5605 2754 2345 6174 5297 1637 2587 1501 512 10247 1726 1189 904 8577 5220 -1455 16428 -54 -886 -113 1411 11846 -761 -2023 11843 754 -492 -272 1427 -629 11584 310 387 212 11757 197 1207 -1079 12056 -65 -1361 218 12898 941 12250 -52 -1095 -2301 5792 -1339 10773 -2875 5442 140 10607 795 295 8673 1989 -693 4561 8015 2483 333 12611 308 -288 10715 1273 424 -2368 -24 12176 -2015 2167 -1161 573 11146 2172 9276 419 214 385 135 1078 139 9264 604 467 648 9694 9668 1161 -650 1724 10522 1093 -774 2175 687 9417 553 300 1000 10781 237 -396 629 8595 2047 -137 -222 32 497 9988 499 513 8623 350 7329 1439 556 1111 -1255 2117 989 8553 9017 1447 -420 -89 1347 7000 352 1863 -129 8198 1508 803 7899 317 215 2624 6921 1113 658 1189 501 348 622 9534 8078 1165 -413 1013 8293 1060 1182 671 8854 927 172 2982 4 134 368 209 439 -960 15508 -2087 11029 -804 113 109 158 -639 194 11613 -1290 386 -358 11902 877 -1988 -1393 11250 -1029 699 11992 837 418 -1934 11346 70 -2400 2328 137 9295 -348 9250 -43 -631 7869 270 486 1795 978 -1978 -589 14053 -1037 -278 -1679 14903 -2305 3427 11811 1587 963 -438 11133 1364 -639 -569 -391 9175 10797 -204 641 -585 11695 -1845 872 217 10049 509 17 -1648 11860 -1029 1660 -1734 -506 -190 240 12085 10960 -1309 305 -1512 874 9355 1041 -1421 1119 -129 -259 9489 -91 2250 8975 1147 9087 -490 188 49 455 6896 802 2101 1335 9691 -661 684 7766 1513 54 -1054 101 -801 8842 1781 183 7525 447 847 464 7946 406 369 -873 -626 10321 1794 539 -138 -497 7433 155 -806 606 9264 737 172 -553 9737 -20 -163 7249 3472 5905 -474 658 4020 283 -1227 207 10846 -592 -473 -1453 11481 8675 1196 -352 -1639 737 -1629 -776 9947 2657 5127 -591 -55 7625 -460 -664 -65 8682 -1499 93 -352 -421 7411 -681 -824 7434 -387 244 -855 1090 -3076 9446 538 5861 444 697 -1073 8052 -356 -1243 180 864 -1981 9229 657 359 1408 7452 -553 6015 -1499 137 164 512 -45 7307 785 820 -903 74 4059 2081 3477 220 640 -1074 539 304 7781 5862 170 2526 -1584 519 4342 224 1283 320 -977 -30 7482 1959 -891 5795 805 -237 5067 317 530 459 300 236 5799 -180 5795 -450 1089 -197 1333 6004 1216 1080 4701 634 -664 -892 1103 5890 1177 410 -289 730 4754 -151 443 817 4608 295 441 4727 943 148 5029 781 -81 86 402 6466 569 109 -159 827 4637 -1734 4710 856 1246 695 -864 1002 7143 4 134 621 345 621 -268 18561 -1272 -1858 196 383 12866 1689 -1873 -394 16666 1679 13214 -243 754 16218 633 437 -503 14395 1567 -416 -1833 743 12437 -843 2349 12259 2497 423 462 791 -287 11779 736 12981 367 -740 -343 -97 12850 46 206 1434 12102 949 -2198 1149 -1631 285 15197 12349 1060 418 -442 781 1797 -557 14556 16207 1240 548 -1205 14092 1703 616 1199 16857 1313 -176 -553 836 15023 -1833 761 13645 -881 386 -282 -341 1217 -1221 18635 1755 -356 843 15941 -565 14476 261 1691 2116 -369 499 15304 327 713 15694 2554 -1131 583 185 13751 349 1347 12766 3720 94 11854 527 2671 -413 11555 1148 2108 1017 582 13853 1720 -1014 11572 283 1902 625 -1012 16250 3075 312 2483 -1175 11125 799 29 1438 14513 -400 984 1210 17831 614 11202 792 211 481 -811 1323 19363 -91 93 14446 -2251 27 13125 -742 -1695 13385 3169 -142 -1955 -156 11083 32 2285 779 9972 77 1695 -913 71 321 14017 -450 -905 -105 14576 -631 -422 78 13540 10697 2046 245 -1470 927 -1464 11237 2029 860 8998 158 367 515 748 11485 1180 450 285 451 8563 411 647 523 10392 10823 702 5 -2037 9289 -379 393 1017 706 -1041 11269 2259 726 439 11502 -455 420 49 427 6490 8754 -568 1071 841 1031 8545 869 -1167 891 570 -895 11839 -1112 619 11125 2341 9976 1069 -965 919 9261 614 993 1454 480 -226 1046 10988 1433 8344 955 -655 577 234 -219 10666 708 8715 56 743 556 440 333 11147 -256 573 181 11108 492 327 869 11342 7968 2371 450 580 -164 509 9129 3333 617 -411 570 7141 1059 8889 439 952 710 1439 8317 3611 4 134 538 358 406 -2316 18416 2348 -328 75 15966 818 -561 -1199 579 10732 15377 1659 478 -581 1020 -1110 14891 2016 1397 14450 790 -1538 1043 525 737 14498 435 1151 685 15432 739 -725 699 17107 14417 -543 869 1398 11796 1840 907 1298 11 -1619 14044 3889 1842 14288 -847 1143 964 -1013 13280 2833 -123 1033 11647 2948 -366 11738 1658 1698 953 -249 1967 16391 199 11641 1531 2018 12675 1923 -484 2287 1231 9522 1493 1907 -476 13119 1797 2256 1717 1266 683 16319 936 2201 -749 15517 1071 1672 1885 13562 11531 2477 1128 1409 1324 1098 12818 4316 1525 9955 2037 2601 10465 1007 1901 2205 843 1272 604 14151 676 11137 1692 2994 11106 2621 899 1720 8567 2057 1721 3421 2184 10773 1628 973 9875 2749 1555 577 389 2007 10586 4380 1922 1292 10798 2189 2034 10734 1434 2755 573 259 224 11812 11638 605 539 778 -697 774 14413 239 626 12828 -881 201 715 589 445 13360 395 -350 362 15345 -1123 726 14127 2558 -70 10519 716 858 12919 -782 682 959 11835 245 579 877 11945 1738 517 -689 12573 280 486 664 -81 -71 790 14416 11668 1689 -1164 1153 831 10069 462 777 -831 1250 12442 2981 641 -204 395 9715 520 734 11583 1351 -151 232 10762 2370 -674 9916 1184 1219 789 8720 1265 1402 133 511 1249 13448 369 1218 1060 10741 8391 2023 1030 335 1032 327 -52 11897 519 237 10717 2974 791 750 8344 3631 -496 1110 1441 8470 622 958 682 11346 8057 937 1517 1616 2039 6677 1311 2186 6214 1431 1539 1901 1703 1595 8144 3170 1228 993 2062 6885 6629 1564 1899 1927 1779 -221 1527 9570 1371 2040 7365 3749 4 134 557 250 2272 437 18337 1822 15317 1712 552 315 890 515 431 18495 15062 1717 463 255 1437 161 416 17800 1416 173 -136 18178 837 281 498 17596 1084 14837 411 120 789 315 536 18056 532 174 14761 4681 12395 1231 457 1353 920 770 272 17981 1364 243 13560 5777 12892 2525 453 1051 1106 668 13929 4805 1232 1172 649 12805 1886 17174 1357 1100 1614 770 15455 4609 13304 1357 865 2276 15333 1035 1415 2016 13490 3772 1262 1895 14239 2267 1364 1699 13660 2178 1006 1414 2200 513 1252 17011 2728 1084 1049 17521 15250 1263 1255 1675 1563 1561 1041 16403 1930 14694 906 2687 2213 557 820 16837 1492 1317 1095 16831 1548 906 13712 6330 13184 1879 1035 4007 1163 763 1599 17792 14484 1938 1615 3681 14481 1765 1521 3212 13161 2312 1798 3464 3100 2429 11728 6517 13377 2008 -184 1159 809 903 12412 1271 142 589 12371 966 10732 614 196 590 549 572 3 12369 12218 995 489 420 467 411 11492 2165 623 553 11218 83 609 223 394 6948 146 12757 594 581 413 599 11403 2176 10058 1915 1093 623 10213 1486 1004 379 818 980 982 11566 530 999 957 12579 690 793 948 11375 345 475 839 12157 892 10910 811 1739 369 731 852 10537 106 11251 796 1564 10175 1948 2144 763 539 1518 859 11459 776 1475 659 10522 705 914 804 10649 804 918 535 11343 741 10381 893 1749 738 10427 764 1774 667 1453 7909 4169 689 9455 673 1554 788 10330 1121 1487 8947 1951 688 2165 444 1765 7563 3097 654 8963 1144 2001 7101 2740 1215 1732 400 2094 7445 3015 1263 1514 1112 6827 1428 8865 1817 2517 4 134 529 256 709 -217 18162 2845 -537 476 418 13561 551 15494 444 946 15216 723 400 -15 1200 -440 16093 1279 14743 1046 200 198 13817 1712 722 247 14331 1783 774 69 13724 1496 653 683 1444 254 595 13350 1345 11829 1029 298 1436 -226 14172 3868 11214 1595 530 796 13427 2393 283 577 12203 1351 879 632 1777 601 772 15138 2248 16199 877 1025 16511 774 801 648 1688 1664 876 15650 2786 14501 497 1004 1260 1037 901 16939 1904 1197 906 14842 1720 13926 888 1079 1511 1332 14030 4711 1673 1009 13933 3327 1164 1349 1640 11733 1632 1459 1787 13142 10205 2536 1450 2421 11371 627 1428 3084 11903 417 1400 2357 1075 1553 1090 14251 1590 11736 1251 2420 2282 11429 1253 3751 11771 1220 1199 2763 12368 1657 1339 2146 11136 2772 1257 1826 11449 2697 1559 2816 776 -129 -213 13455 -159 212 -5 12971 712 14121 -34 597 14149 1373 35 165 432 -651 12416 1102 5 144 12966 179 69 13013 397 430 -237 206 496 12333 -389 -346 439 14245 192 13114 318 230 263 1368 267 10737 -253 480 10277 3761 -549 12157 1182 -210 224 11900 505 -53 31 1535 11204 2827 -13 1174 577 9091 296 1023 1112 10471 -117 391 836 13558 12 958 1019 11237 -146 994 9588 5817 296 634 8384 5312 7824 522 1271 2130 123 1023 1154 9966 333 202 971 11636 818 630 708 11899 9397 1206 1056 2022 7995 1704 941 2478 1230 8049 1329 2120 1170 7241 921 2055 1093 1554 8666 3435 7054 1026 1115 1715 6411 2218 938 2222 1589 772 8448 2605 5951 1667 1249 1960 864 917 1467 8610 925 1249 7211 4482 6691 885 1803 3358 io_lib-1.14.6/tests/data/both.run/4_ILLUMINA_GA_MATRIX_FWD.txt0000644000031500020650000000022612354177666020141 00000000000000# Auto-generated frequency response matrix > A > C > G > T 0.85 0.13 -0.02 -0.02 0.86 0.94 -0.00 -0.01 -0.01 -0.01 1.22 0.02 0.00 -0.00 0.81 1.22 io_lib-1.14.6/tests/data/both.run/4_ILLUMINA_GA_BUSTARD_PARAMS.txt0000644000031500020650000001514512354177666020612 00000000000000 1 4 2 1 1 37 1 1 4 39 1 38 74 2 1 4 1 0 1 37 1 1 4 38 0 38 74 2 0 1 gzip .gz 0 0 0 1 37 /staging/IL9/analysis/080813_IL9_1213 38 74 /staging/IL9/analysis/080818_IL9_1232 HWI-EAS130 1 -1 -1 1 37 /staging/IL9/analysis/080813_IL9_1213 38 74 /staging/IL9/analysis/080818_IL9_1232 /staging/IL9/analysis/080813_IL9_1213 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 s s s s s s s s io_lib-1.14.6/tests/data/both.run/s_4_0133_prb.txt0000644000031500020650000003472012354177666016355 00000000000000 -40 -40 40 -40 -40 -40 -40 40 40 -40 -40 -40 -40 -40 -40 40 40 -40 -40 -40 40 -40 -40 -40 -40 -40 40 -40 -40 -40 -40 40 -40 40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 -40 -40 40 -40 -40 40 -40 -40 40 -40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 40 40 -40 -40 -40 -40 -40 40 -40 -40 40 -40 -40 -40 -40 40 -40 -40 -40 -40 40 -40 -40 -40 40 40 -40 -40 -40 40 -40 -40 -40 -40 -40 40 -40 -40 -40 25 -25 -40 -40 -40 40 40 -40 -40 -40 -40 40 -40 -40 -40 -40 -40 40 -40 -40 40 -40 40 -40 -40 -40 30 -40 -40 -30 -40 -40 -40 40 -40 40 -40 -40 -40 -40 -40 40 -40 -40 40 -40 -40 -40 -40 40 -40 -40 40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 -40 40 -40 -40 40 -40 -40 -40 -40 40 -40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 40 -40 40 -40 -40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 40 -40 -40 -40 -40 40 -40 -40 -40 40 -40 40 -40 -40 -40 40 -40 -40 -40 -40 -40 40 -40 -40 40 -40 17 -17 -40 -40 -40 -40 40 -40 -40 40 -40 -40 40 -40 -40 -40 -40 -40 -40 40 -40 -40 40 -40 -40 -40 40 -40 -38 20 -26 -22 20 -34 -40 -21 -39 31 -35 -36 -40 -40 -40 40 11 -21 -40 -12 -40 -40 40 -40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 40 -40 40 -40 -40 -40 -40 -40 40 -40 -40 -40 -40 40 -40 -40 -40 40 -40 40 -40 -40 -40 -40 40 -40 40 -40 -40 -40 -40 -40 -40 40 40 -40 -40 -40 40 -40 -40 -40 -40 -40 -40 40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 -40 40 -40 -40 40 -40 40 -40 -40 -40 -40 -40 -40 40 40 -40 -40 -40 -40 -40 -40 40 -40 -40 40 -40 -40 -40 -40 40 40 -40 -40 -40 -40 -40 -40 40 -40 -40 40 -40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 8 -8 27 -40 -40 -27 -40 39 -40 -40 -40 -40 26 -26 -40 -40 31 -31 -40 22 -40 -22 -35 12 -40 -12 -40 -40 40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 40 -40 22 -22 -40 -40 -40 -40 40 -40 -40 40 -40 -40 40 -40 -40 -40 -40 40 -40 -40 40 -40 -40 -40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 40 -40 -40 -40 -40 40 40 -40 -40 -40 -40 -40 40 -40 -40 12 -12 -40 40 -40 -40 -40 -40 -39 -40 39 -40 -40 -40 40 -40 -40 40 -40 -40 -33 -40 33 -40 -40 40 -40 -40 40 -40 -40 -40 40 -40 -40 13 -13 -40 -34 40 -40 -40 -40 -40 -40 -40 40 -40 -40 -40 40 -21 15 -32 -17 25 -26 -40 -33 -40 -40 -40 40 -34 32 -40 -36 -40 20 -40 -20 25 -26 -40 -35 -40 -40 -40 40 -40 -40 40 -40 -40 -40 40 -40 -40 -34 -40 33 -40 -40 -40 40 -40 -40 40 -40 -40 -40 40 -40 40 -40 -40 -40 -40 40 -40 -40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 -40 40 -40 -40 40 -40 -40 -40 40 -40 -40 40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 -40 -40 40 -40 -40 -36 -40 36 -40 35 -40 -35 -40 -40 -40 40 -40 -40 40 -40 -40 40 -40 -40 -39 32 -40 -33 -40 -40 40 -40 -40 40 -40 -40 -40 -40 -40 40 -40 -40 40 -40 16 -20 -40 -19 -40 -40 -40 40 31 -32 -40 -35 30 -30 -40 -40 12 -12 -40 -21 -40 -40 39 -39 -40 -35 35 -40 22 -22 -40 -40 -40 40 -40 -40 40 -40 -40 -40 -40 -40 40 -40 -40 -40 40 -40 40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 -40 -40 -40 40 -40 -40 40 -40 -40 40 -40 -40 40 -40 -40 -40 -40 -40 40 -40 -40 40 -40 -40 40 -40 -40 -40 -40 -40 40 -40 -40 40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 -40 -40 40 -40 40 -40 -40 -40 -40 -40 -40 40 40 -40 -40 -40 40 -40 -40 -40 -40 -40 -40 40 -40 40 -40 -40 40 -40 -40 -40 -40 40 -40 -40 -40 -40 40 -40 40 -40 -40 -40 -40 -40 40 -40 -40 -20 -40 20 40 -40 -40 -40 -40 -40 -40 40 -33 16 -40 -16 -28 25 -38 -27 -40 -40 -40 40 -40 -40 -40 40 -40 -40 40 -40 40 -40 -40 -40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 40 -40 40 -40 -40 -40 40 -40 -40 -40 -40 -40 -40 40 -40 40 -40 -40 -40 -40 40 -40 -40 40 -40 -40 -40 -40 40 -40 40 -40 -40 -40 -40 -40 40 -40 -40 -40 -40 40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 -40 40 -40 40 -40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 40 -40 -40 40 -40 -40 -40 -40 -40 40 -40 40 -40 -40 -40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 40 -40 -40 40 -40 -40 -40 -40 40 -40 40 -40 -40 -40 -40 -40 -40 40 40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 -31 27 -40 -29 -40 -40 39 -39 -40 -40 -40 40 -40 -40 -40 40 -40 -40 40 -40 -40 40 -40 -40 40 -40 -40 -40 -40 -40 40 -40 -40 -40 -40 40 -40 -40 40 -40 -40 -40 40 -40 40 -40 -40 -40 40 -40 -40 -40 -40 -40 -40 40 40 -40 -40 -40 -40 -40 40 -40 -40 -40 -40 40 -40 40 -40 -40 40 -40 -40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 -40 40 -40 -40 -40 40 40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 40 40 -40 -40 -40 40 -40 -40 -40 -40 -40 -40 40 -40 -40 40 -40 -40 -40 -40 40 -40 -40 40 -40 40 -40 -40 -40 -40 37 -40 -37 -40 40 -40 -40 -40 -40 32 -32 -40 -40 40 -40 -40 -40 -40 40 -40 40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 -40 -40 40 -40 -40 -40 40 -40 40 -40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 40 -40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 -14 -40 14 -40 -40 40 -40 -40 -40 40 -40 -40 -16 -32 16 -28 11 -18 -13 -40 -40 -40 40 5 -9 -40 -8 -40 -40 -40 40 9 -13 -40 -11 -40 -39 27 -27 -40 -22 -37 22 -40 -31 30 -36 -40 -40 -35 35 -40 -40 -40 40 15 -40 -40 -15 -40 -40 -40 40 -40 -40 -40 40 0 -20 -40 0 12 -21 -13 -40 -40 -40 -40 40 10 -22 -22 -11 40 -40 -40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 40 -40 -40 -40 -40 -29 29 -40 -40 40 -40 -40 40 -40 -40 -40 -40 -40 40 -40 -40 -40 40 -40 40 -40 -40 -40 -40 -40 40 -40 -40 40 -40 40 -40 -40 -40 -40 40 -40 -40 -40 -40 40 -40 -40 -40 -40 40 -40 -40 -40 40 -40 40 -40 -40 -40 -40 40 -40 -40 -40 -40 40 -40 -40 40 -40 40 -40 -40 -40 -40 -40 -40 40 -40 -40 40 -40 11 -11 -40 -40 -40 -40 40 -40 -22 -40 -40 22 -40 -35 -40 35 -40 -40 -40 40 -40 -40 40 -40 -40 -40 -40 40 12 -13 -40 -22 -40 -40 -40 40 -40 22 -40 -22 -40 -40 -40 40 -40 -40 10 -10 -40 -40 -40 40 -40 -40 40 -40 -40 -40 -40 40 -40 -40 40 -40 -40 -40 -40 40 -40 -40 -40 40 -40 40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 -40 40 -40 -40 40 -40 -40 -40 -40 -40 40 -40 40 -40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 -40 -40 40 40 -40 -40 -40 -40 -40 -40 40 40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 -40 40 -40 -40 40 -40 -40 -40 -40 -40 -40 40 -40 -40 -40 40 -40 40 -40 -40 -40 -40 -40 40 -40 -40 40 -40 -40 -40 -40 40 -40 -40 40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 -40 40 -40 -40 40 -40 -40 -40 -40 40 -40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 40 40 -40 -40 -40 -40 -40 40 -40 -40 40 -40 -40 -40 -40 40 -40 -40 40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 -40 -40 40 -40 34 -34 -40 -40 -40 -40 40 -40 -40 -40 -40 40 40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 -40 40 -40 -40 40 -40 -40 -40 -40 -40 -40 40 40 -40 -40 -40 -40 -40 40 -40 -40 -40 -40 40 -40 -40 40 -40 -40 40 -40 -40 -40 40 -40 -40 40 -40 -40 -40 -40 -40 -40 40 -40 -39 39 -40 -40 40 -40 -40 -40 -40 -40 40 -40 40 -40 -40 40 -40 -40 -40 -40 -40 40 -40 -40 -40 40 -40 14 -14 -40 -40 40 -40 -40 -40 -35 34 -40 -40 40 -40 -40 -40 40 -40 -40 -40 -40 -40 40 -40 -40 40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 -40 -40 -40 40 -40 40 -40 -40 40 -40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 40 -40 -40 -40 -40 -40 40 -40 40 -40 -40 -40 40 -40 -40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 40 -40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 -40 40 -40 -40 -40 40 -40 40 -40 -40 -40 40 -40 -40 -40 -40 -40 40 -40 -40 40 -40 40 -40 -40 -40 40 -40 -40 -40 -40 -40 -40 40 -40 -40 40 -40 34 -34 -40 -40 40 -40 -40 -40 -40 -40 -40 40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 29 -29 26 -26 -40 -40 35 -35 -40 -40 -40 -40 -40 40 -40 -40 -40 40 -40 40 -40 -40 -40 -40 40 -40 -40 -40 -40 40 -40 40 -40 -40 -40 -40 -40 40 40 -40 -40 -40 40 -40 -40 -40 -40 -40 40 -40 40 -40 -40 -40 40 -40 -40 -40 -40 -40 40 -40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 40 40 -40 -40 -40 40 -40 -40 -40 -40 -40 40 -40 40 -40 -40 -40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 40 -40 -40 40 -40 -40 -40 -40 -40 40 -40 -40 40 -40 33 -33 -40 -40 -40 -40 40 -40 -40 -40 18 -18 -40 -40 40 -40 -40 -40 -40 40 -40 40 -40 -40 40 -40 -40 -40 -40 -40 32 -32 -39 -25 -31 24 -40 -40 26 -26 -40 -40 33 -33 -40 -40 40 -40 40 -40 -40 -40 -40 -40 -40 40 40 -40 -40 -40 -40 -40 -40 40 -40 -40 40 -40 40 -40 -40 -40 40 -40 -40 -40 -32 -40 -40 32 40 -40 -40 -40 40 -40 -40 -40 -40 40 -40 -40 40 -40 -40 -40 -40 40 -40 -40 -40 -40 -40 40 40 -40 -40 -40 -18 -40 -40 18 40 -40 -40 -40 -40 -40 40 -40 40 -40 -40 -40 -40 32 -40 -32 4 -4 -40 -40 40 -40 -40 -40 -40 8 -40 -8 -40 19 -40 -19 -40 -40 40 -40 -40 27 -27 -40 -40 40 -40 -40 10 -10 -40 -40 -40 9 -40 -9 -40 -14 14 -40 10 -10 -40 -26 -20 -28 -40 19 -40 -40 28 -28 -16 -40 16 -29 -40 -9 9 -40 -40 -14 14 -40 -40 -12 12 -40 40 -40 -40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 40 -40 40 -40 -40 -40 -40 -40 40 -40 -40 -19 -40 19 -40 -40 11 -11 -40 40 -40 -40 38 -38 -40 -40 -40 40 -40 -40 -40 40 -40 -40 40 -40 -40 -40 -40 -40 40 -40 -40 18 -40 -18 -40 40 -40 -40 40 -40 -40 -40 -40 -40 40 -40 40 -40 -40 -40 -40 -40 1 -1 -40 -8 -40 8 -40 -40 40 -40 -40 40 -40 -40 -40 -40 40 -40 -29 -40 29 -40 -40 6 -40 -6 40 -40 -40 -40 40 -40 -40 -40 35 -35 -40 -40 31 -31 -40 -40 -24 9 -9 -25 -40 -40 -25 25 -40 -40 37 -37 -40 24 -40 -24 -40 -40 21 -21 -40 -40 -40 40 -40 -40 40 -40 -40 40 -40 -40 -40 40 -40 -40 40 -40 -40 -40 -40 -40 -40 40 40 -40 -40 -40 40 -40 -40 -40 -40 -40 -40 40 -40 -40 -40 40 -40 40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 -40 40 -40 -40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 40 -40 40 -40 -40 -40 -40 -40 40 -40 -40 40 -40 40 -40 -40 -40 -40 -40 -40 40 40 -40 -40 -40 40 -40 -40 -40 -40 -40 40 -40 -40 40 -40 -40 -40 -40 -40 40 -40 -40 40 -40 -40 -40 36 -36 -40 -40 -40 40 -40 -40 -40 40 -40 40 -40 -40 -40 -40 -40 40 -40 -40 40 -40 -40 40 -40 -40 40 -40 -40 -40 -40 -40 -40 40 -40 -40 -40 40 40 -40 -40 -40 40 -40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 -40 40 -40 -40 -40 -40 40 -40 40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 -40 40 -40 -40 -40 -40 -40 40 40 -40 -40 -40 -40 -40 -40 40 -40 40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 -40 -40 -40 40 40 -40 -40 -40 -40 -40 -40 40 40 -40 -40 -40 40 -40 -40 -40 -40 40 -40 -40 -40 -40 40 -40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 32 -32 20 -20 -40 -38 -40 38 -40 -39 -40 -40 29 -29 -40 -40 40 -40 -40 -40 -40 40 25 -25 -40 -40 1 -40 -40 -1 -40 7 -40 -7 -1 -40 1 -40 -40 -40 40 -40 -40 40 -40 -40 -40 -40 -40 40 -40 -6 -40 6 -40 -40 -16 16 40 -40 -40 -40 -40 -40 40 -40 -40 0 -40 0 -40 -40 -40 40 -40 -40 -4 4 -40 11 -12 -22 -40 3 -40 -3 40 -40 -40 -40 10 -40 -40 -10 40 -40 -40 -40 40 -40 -40 -40 -40 4 -6 -10 -40 -40 40 -40 40 -40 -40 -40 36 -36 -40 -40 -40 -40 22 -22 39 -40 -39 -40 40 -40 -40 -40 -26 3 -40 -3 -1 1 -32 -33 -40 -21 7 -7 2 -18 -40 -3 -40 -1 1 -17 3 -9 -40 -5 1 -16 -2 -17 -7 -17 6 -21 9 -40 -9 -40 -29 -40 29 -40 -40 40 -40 -40 -40 -40 40 -40 -40 40 -40 -40 -40 9 -9 -40 40 -40 -40 -40 -40 9 -40 -9 -40 -40 -40 40 -40 -26 -40 26 -40 -40 -40 40 40 -40 -40 -40 22 -22 -40 -40 -40 1 -1 -40 40 -40 -40 -40 3 -40 -3 -40 -40 -40 40 -40 -40 -40 40 -40 23 -40 -23 -40 -40 -40 -40 40 22 -40 -40 -22 33 -40 -33 -40 -25 -40 -40 25 40 -40 -40 -40 40 -40 -40 -40 -40 3 -3 -30 40 -40 -40 -40 38 -38 -40 -40 26 -26 -40 -40 -24 -40 24 -40 0 0 -40 -40 32 -40 -32 -40 -40 40 -40 -40 35 -35 -40 -40 23 -23 -40 -40 12 -40 -40 -12 40 -40 -40 -40 io_lib-1.14.6/tests/data/both.run/s_4_0134_prb.txt0000644000031500020650000003472012354177666016356 00000000000000 -40 -40 40 -40 40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 -40 -40 40 -40 40 -40 -40 -40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 -40 40 -40 -40 40 -40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 40 -40 40 -40 -40 -40 40 -40 -40 40 -40 -40 -40 -40 -40 -40 40 40 -40 -40 -40 40 -40 -40 -40 -40 -40 -40 40 40 -40 -40 -40 -40 -40 40 -40 40 -40 -40 -40 -40 40 -40 -40 -40 -40 40 -40 -40 40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 -40 29 -40 -29 -40 -40 40 -40 -40 39 -40 -39 -40 -40 40 -40 28 -35 -40 -30 -40 -40 40 -40 40 -40 -40 -40 -40 40 -40 -40 -40 -40 -40 40 -40 40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 -40 -40 40 -40 40 -40 -40 -40 -40 -40 40 -40 40 -40 -40 -40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 40 -40 -40 40 -40 -40 -40 -40 -40 40 -40 -40 40 -40 -40 -40 40 -40 -36 34 -40 -39 40 -40 -40 -40 -40 -40 -40 40 -40 -40 -40 40 -40 40 -40 -40 40 -40 -40 -40 -40 -40 40 -40 -40 -37 -40 37 -40 39 -40 -40 -40 -40 40 -40 -40 -40 29 -29 -40 37 -40 -38 -40 -40 38 -38 16 -16 -40 -28 -26 23 -29 -27 -39 -25 -32 24 -40 -20 -34 20 -40 -40 40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 -40 -40 40 -40 -40 -40 40 -40 40 -40 -40 -40 -40 -40 40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 -40 40 -40 -40 40 -40 40 -40 -40 -40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 40 -40 -40 40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 -40 -40 40 -40 40 -40 -40 -40 40 -40 -40 -40 -40 40 -40 -40 -40 -40 40 -40 -40 40 -40 -40 -40 -40 40 -40 -40 -40 -40 40 40 -40 -40 -40 -40 40 -40 -40 -40 -40 -40 40 -40 -40 -40 40 40 -40 -40 -40 -40 -40 -40 40 -40 -40 -40 40 -27 17 -40 -18 -40 -40 10 -10 -40 40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 -40 -40 40 -40 -40 40 -40 40 -40 -40 -40 -40 40 -40 -40 -40 -40 -40 40 40 -40 -40 -40 -40 -40 -40 40 -40 -40 -40 40 -40 40 -40 -40 -40 40 -40 -40 40 -40 -40 -40 -40 40 -40 -40 -40 -40 -40 40 -40 -40 40 -40 -40 40 -40 -40 32 -32 -40 -40 40 -40 -40 -40 -40 40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 -40 40 -40 -40 -40 -40 -40 40 -40 -40 40 -40 40 -40 -40 -40 38 -38 -40 -40 -40 40 -40 -40 -40 -40 18 -18 -40 -40 40 -40 40 -40 -40 -40 -40 39 -40 -40 -40 -40 -40 40 -40 -40 40 -40 -40 -40 32 -32 -40 -40 40 -40 -40 -40 40 -40 -40 -40 -40 40 40 -40 -40 -40 -40 -40 40 -40 40 -40 -40 -40 -40 -40 40 -40 40 -40 -40 -40 -40 -40 -40 40 -40 -40 -40 40 -40 40 -40 -40 -40 -40 -40 40 -40 40 -40 -40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 40 -40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 40 -40 40 -40 -40 -40 -40 40 -40 -40 40 -40 -40 -40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 40 40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 -40 -40 40 -40 40 -40 -40 -40 -40 -40 32 -32 -40 40 -40 -40 -40 -40 40 -40 -40 -40 -40 40 -40 -40 39 -39 -40 -40 -40 40 -40 40 -40 -40 -40 -40 -40 40 -40 -40 40 -40 -40 -40 40 -40 40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 -40 40 -40 -40 -40 -40 40 -40 -40 -40 -40 40 40 -40 -40 -40 -40 40 -40 -40 -40 -40 40 -40 -40 -40 40 -40 40 -40 -40 -40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 40 -40 -40 -40 -40 40 -40 -40 -40 40 -40 40 -40 -40 40 -40 -40 -40 -40 -40 40 -40 -40 -40 -40 40 40 -40 -40 -40 40 -40 -40 -40 -40 40 -40 -40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 40 -40 40 -40 -40 -40 -40 40 -40 -40 -40 -40 -40 40 -40 24 -40 -24 29 -29 -40 -40 -40 -40 -40 40 -40 -40 40 -40 40 -40 -40 -40 -40 -40 -40 40 -40 40 -40 -40 -40 -40 40 -40 -40 -40 40 -40 40 -40 -40 -40 40 -40 -40 -40 -40 -40 40 -40 40 -40 -40 -40 -40 -40 40 -40 -40 40 -40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 -40 40 -40 -40 -40 40 -40 40 -40 -40 40 -40 -40 -40 -40 -40 40 -40 -40 40 -40 -40 40 -40 -40 -40 -40 -40 40 -40 -40 -40 40 -40 40 -40 -40 -40 40 -40 -40 -40 -40 -40 -40 40 -40 -40 40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 -40 40 -40 40 -40 -40 -40 -40 -40 40 -40 40 -40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 -11 11 -40 -40 40 -40 -40 -40 -40 -40 40 -40 40 -40 -40 -40 -40 -39 39 6 -40 -6 -40 -40 40 -40 -40 -40 -40 40 -40 -40 13 -13 -40 -40 -40 40 -40 20 -40 -20 -40 -40 -28 -40 28 -40 -40 -40 40 -40 -40 -40 40 -40 40 -40 -40 40 -40 -40 -40 -40 -40 -40 40 8 -40 -8 -40 -40 -40 36 -36 -40 -40 -40 40 -40 -40 40 -40 -40 -40 40 -40 6 -40 -6 -40 -40 -40 40 -40 -40 -40 40 -40 0 0 -27 -40 -40 -3 3 -40 -40 -40 -40 40 -40 -4 4 -40 -40 40 -40 -40 -16 -40 16 -40 -40 -40 40 -40 -9 8 -26 -40 -40 -40 40 -40 40 -40 -40 -40 -40 -40 -40 40 -40 25 -40 -25 -40 -40 40 -40 40 -40 -40 -40 -40 -40 -40 40 -40 -40 -40 40 40 -40 -40 -40 40 -40 -40 -40 -40 -40 40 -40 -40 40 -40 -40 -40 -40 -40 40 -40 40 -40 -40 40 -40 -40 -40 -40 -40 -40 40 -40 -40 -40 40 33 -33 -40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 -40 40 -40 -40 -40 40 40 -40 -40 -40 -40 -40 40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 -40 -40 40 -15 15 -40 -36 -40 -38 38 -40 -40 -40 21 -21 -40 -40 -40 40 23 -24 -40 -40 -40 40 -40 -40 -40 -40 40 -40 -40 -40 31 -31 -40 -34 -40 34 -4 0 -11 -9 2 -2 -40 -14 -40 -40 40 -40 -40 -40 13 -13 -40 40 -40 -40 -40 -40 40 -40 -40 40 -40 -40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 40 -40 40 -40 -40 -40 -36 -40 36 -40 -40 -40 40 -40 -40 40 -40 -40 -28 28 -40 -40 40 -40 -40 40 -40 -40 -40 -40 40 -40 -40 -40 -40 40 -40 40 -40 -40 -40 -40 -40 -40 40 -40 -40 -40 40 40 -40 -40 -40 40 -40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 -40 -40 40 -40 -40 40 -40 37 -37 -40 -40 -40 -40 -40 40 40 -40 -40 -40 -32 26 -40 -28 -40 40 -40 -40 40 -40 -40 -40 39 -40 -40 -40 -40 -40 -40 40 40 -40 -40 -40 39 -39 -40 -40 40 -40 -40 -40 -40 -40 40 -40 40 -40 -40 -40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 -40 40 -40 40 -40 -40 40 -40 -40 -40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 -40 40 40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 -40 -40 -40 40 40 -40 -40 -40 -40 40 -40 -40 -40 -40 -40 40 -40 -40 40 -40 40 -40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 40 -40 -40 -40 -40 -40 40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 -40 40 -40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 29 -29 15 -40 -40 -15 -40 -40 -40 40 -40 -40 -40 40 40 -40 -40 -40 -40 -40 -40 40 -40 40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 -40 40 -40 -40 40 -40 -40 -40 -40 -40 40 -40 40 -40 -40 -40 40 -40 -40 -40 -40 -40 40 -40 -40 -40 40 -40 40 -40 -40 -40 -40 -40 40 -40 -40 -40 -40 40 -16 16 -40 -40 -40 -40 -40 40 40 -40 -40 -40 -40 40 -40 -40 -40 -40 -40 40 -40 -40 40 -40 -40 40 -40 -40 -40 -40 -40 40 -40 40 -40 -40 -40 -40 40 -40 -40 40 -40 -40 -40 -40 40 -40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 40 -40 -40 40 -40 -40 -40 -40 40 -40 -40 -40 -34 34 -40 28 -40 -29 -40 -40 -40 40 -40 -40 40 -40 -40 -40 -40 40 -40 -40 -40 40 -40 40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 -40 40 -40 -40 40 -40 -40 -40 -40 -40 40 -40 40 -40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 -40 -40 40 40 -40 -40 -40 -40 -40 -40 40 40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 -40 40 -40 -40 40 -40 -40 -40 -40 -40 -40 40 -40 -40 -40 40 -40 40 -40 -40 -40 -40 -40 40 -40 -40 40 -40 -40 -40 -40 40 -40 -40 40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 -40 40 -40 -40 40 -40 -40 -40 -40 40 -40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 40 -40 40 -40 -40 -40 -40 -40 40 -40 -40 40 -40 -40 40 -40 -40 40 -40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 40 40 -40 -40 -40 -40 -40 40 -40 -40 40 -40 -40 -40 -40 40 -40 -40 -40 -40 40 -40 -40 -40 40 40 -40 -40 -40 40 -40 -40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 -40 40 40 -40 -40 -40 -40 40 -40 -40 -40 -40 -40 40 -40 -40 40 -40 40 -40 -40 -40 40 -40 -40 -40 -40 -40 -40 40 -40 40 -40 -40 -40 -40 -40 40 -40 40 -40 -40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 40 38 -38 -40 -40 -40 -40 40 -40 -40 -40 -40 40 -40 40 -40 -40 -40 -40 35 -35 -40 -40 40 -40 -40 -40 40 -40 -40 -40 -40 40 40 -40 -40 -40 -40 -40 40 -40 -40 40 -40 -40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 40 40 -40 -40 -40 40 -40 -40 -40 -40 -40 40 -40 -40 40 -40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 40 -40 -40 -40 -40 -40 40 -40 40 -40 -40 40 -40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 40 40 -40 -40 -40 -40 -40 40 -40 -40 39 -40 -39 40 -40 -40 -40 -40 -40 -40 40 -40 36 -40 -36 40 -40 -40 -40 25 -35 -40 -25 -40 37 -40 -40 29 -29 -40 -40 -40 -40 26 -26 -40 -40 40 -40 -40 30 -40 -31 -40 -40 -40 40 40 -40 -40 -40 -40 -40 40 -40 -40 40 -40 -40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 40 -40 -40 40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 -40 -40 -40 40 40 -40 -40 -40 -40 40 -40 -40 -40 -40 40 -40 -40 -40 -40 40 -40 -40 40 -40 -40 -40 40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 -40 -40 40 -40 -40 -40 40 40 -40 -40 -40 -40 -40 -40 40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 -40 40 -40 -40 -40 40 40 -40 -40 -40 -25 19 -40 -21 29 -35 -40 -30 -40 -40 33 -33 -40 -32 -33 29 25 -27 -40 -30 -40 -40 -40 40 -40 -40 23 -23 -40 -40 40 -40 40 -40 -40 -40 -40 -40 -40 40 40 -40 -40 -40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 40 -40 40 -40 -40 -40 -40 -40 40 -40 -40 40 -40 40 -40 -40 -40 -40 -40 -40 40 -40 -40 40 -40 40 -40 -40 -40 -40 -40 40 -40 -40 -40 -40 40 -40 40 -40 -40 -40 -40 40 -40 40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 -40 -40 -40 40 -40 -40 -40 40 40 -40 -40 -40 -40 -40 -40 40 -40 40 -40 -40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 40 -40 40 -40 -40 -40 -40 -40 -40 40 40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 -40 -40 28 -28 40 -40 -40 -40 -40 -40 40 -40 -40 -40 40 -40 40 -40 -40 -40 -40 -40 -40 40 40 -40 -40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 -40 40 -40 40 -40 -40 -40 -40 40 -40 40 -40 -40 -40 40 -40 -40 -40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 40 -40 40 -40 -40 -40 -40 -40 40 -40 40 -40 -40 40 -40 -40 -40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 40 -40 40 -40 -40 -40 40 -40 -40 -40 -40 30 -30 -40 40 -40 -40 -40 40 -40 -40 36 -36 -40 -40 -40 -40 36 -36 -40 40 -40 -40 19 -19 -40 -40 -40 -40 34 -35 -40 -25 -40 25 -40 33 -40 -34 -40 -40 40 -40 -40 -40 -40 40 -40 40 -40 -40 40 -40 -40 -40 -40 -40 40 -40 40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 -40 -40 -40 40 -40 40 -40 -40 -40 -40 40 -40 40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 -40 -40 -40 40 -40 40 -40 -40 40 -40 -40 -40 -40 -40 -40 40 -40 40 -40 -40 -40 -40 -40 40 -40 -40 -40 40 -40 40 -40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 -40 40 -40 -40 -40 40 40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 -40 -40 -40 40 -40 40 -40 -40 -40 29 -40 -29 40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 -40 -40 -40 40 -40 -40 -40 40 -40 40 -40 -40 40 -40 -40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 40 -40 -40 -40 -40 -40 40 -40 -40 -40 40 -40 40 -40 -40 -40 -40 -40 40 -40 -40 40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 -40 40 -40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 36 -36 -40 -40 35 -35 40 -40 -40 -40 -40 -40 -40 40 -40 -40 -40 40 -40 -40 -40 40 40 -40 -40 -40 40 -40 -40 -40 -39 34 -40 -36 -33 27 -40 -28 -40 -40 40 -40 29 -29 -40 -40 23 -23 -40 -36 -40 -40 40 -40 19 -19 -40 -36 -40 -40 -40 40 -40 -40 16 -16 19 -28 -40 -19 io_lib-1.14.6/tests/data/both.run/s_4_0133_nse.txt0000644000031500020650000003026412354177666016356 000000000000004 133 593 417 308 1160 51 1530 125 1180 76 1310 642 1160 110 1430 230 380 75 1290 323 1090 146 1250 292 457 142 1230 227 450 130 1370 192 385 138 1330 360 1000 167 1230 200 502 185 1230 524 447 159 564 323 940 158 604 252 934 162 595 252 565 218 657 338 574 208 554 415 887 269 916 447 784 297 926 330 1040 214 588 440 965 263 1340 343 1005 350 1260 382 1060 391 1094 464 960 381 1270 498 1130 352 1290 441 975 443 1200 355 930 422 1370 454 961 407 1220 473 1067 399 1320 463 1298 402 1230 500 1045 404 1380 447 958 486 1523 529 1019 490 1524 572 964 525 1435 208 1055 525 1160 546 1162 465 1373 425 828 467 1240 473 1107 480 1370 396 786 446 1842 273 441 63 1370 299 1060 115 1330 237 1020 151 455 247 1070 155 1170 672 371 156 1190 623 980 188 1190 246 440 235 440 621 1020 225 494 235 974 227 496 279 422 223 401 272 452 258 574 212 809 240 596 303 645 314 1070 316 842 275 640 314 812 297 622 339 796 333 792 323 683 302 1000 337 771 299 1038 250 632 306 632 239 525 318 791 248 834 283 840 354 593 341 941 348 588 406 1010 348 556 362 1121 241 759 314 1044 367 804 390 983 318 560 392 1039 331 821 393 953 274 511 404 998 210 429 406 1264 331 654 453 916 333 611 442 752 388 769 474 910 276 606 450 1121 365 763 457 1101 393 560 455 973 340 443 457 1202 4 133 587 382 308 1160 51 1530 281 1180 94 1310 657 1080 95 1430 318 1000 99 1290 172 1020 103 1250 289 1020 140 1120 658 990 146 1290 255 980 117 1220 186 512 153 1160 595 523 139 471 252 517 218 564 246 537 217 1170 583 575 652 595 223 617 649 657 697 619 250 554 257 597 264 916 447 784 297 926 271 1040 377 588 427 1080 338 1340 343 1005 350 1260 382 1060 391 1094 526 767 399 1270 456 1112 524 1290 451 1109 538 1200 394 638 514 1370 454 961 407 1220 469 1095 437 1320 436 865 491 1230 428 912 435 1380 469 794 580 1523 462 982 476 1524 487 899 447 1435 450 838 509 1160 479 1026 538 1373 552 737 644 1240 343 890 595 1370 444 680 534 1842 273 441 63 1370 269 369 153 1330 604 394 137 1180 197 854 155 1210 214 892 169 1150 623 911 685 476 225 440 243 440 270 439 247 494 235 414 226 496 221 908 220 401 325 614 220 509 283 461 282 1090 571 312 279 1070 365 796 290 938 307 463 297 589 336 574 194 780 210 495 348 858 207 810 344 535 177 425 296 948 398 705 361 1532 270 502 365 828 292 457 400 941 293 611 396 1010 381 613 186 1068 334 590 379 903 338 579 417 992 320 932 349 1034 374 569 272 953 315 725 329 998 328 438 335 1264 383 664 437 1406 259 642 446 1280 318 889 477 953 340 724 448 1367 314 560 514 1217 420 555 451 973 397 674 403 1270 4 133 505 428 308 1160 51 1530 125 1180 76 1310 642 1110 110 1430 230 391 74 1290 323 990 146 1250 292 457 142 1230 227 450 130 1370 495 365 107 400 532 940 144 1090 165 423 143 470 469 465 148 1060 530 391 124 647 202 882 179 628 314 931 98 1050 318 969 212 590 217 1070 254 1330 447 970 313 1410 464 1012 295 1290 517 864 345 645 350 970 280 872 527 950 419 1310 373 984 430 1310 460 1040 403 1120 513 957 460 1180 477 957 422 1320 419 847 444 1230 400 977 439 1150 468 851 496 1180 428 995 481 1430 357 1156 448 1724 451 869 454 721 393 728 452 1597 489 1043 508 1852 446 1096 490 1660 519 966 531 1812 571 1251 377 1263 484 990 558 1615 660 980 81 1320 159 332 108 1190 200 881 119 1180 255 897 144 1110 189 875 167 1150 173 294 208 427 226 403 610 393 246 438 591 404 241 376 204 1130 206 453 194 1010 521 771 196 517 163 277 256 582 233 410 257 950 251 760 272 548 215 502 240 485 245 543 304 602 210 499 278 930 221 669 279 880 332 465 294 1009 308 564 293 1001 326 615 294 913 264 690 308 971 198 664 389 940 299 626 317 986 210 613 179 908 308 600 187 906 256 604 416 987 327 619 172 978 348 559 185 1004 344 650 452 1057 365 640 410 868 361 506 368 962 342 546 441 488 274 590 464 1406 321 671 478 1229 307 572 399 1307 368 725 419 1044 4 133 548 808 80 703 41 961 64 726 55 875 90 715 59 863 140 707 85 798 132 280 96 776 164 732 80 779 149 331 78 858 405 722 89 302 146 223 109 387 121 334 106 319 173 254 98 428 346 289 120 450 214 397 148 425 411 599 98 568 99 273 135 345 133 400 174 431 155 522 127 606 200 346 171 831 233 631 158 584 254 777 159 380 248 335 192 532 266 719 208 774 247 531 245 598 241 539 240 769 249 581 279 782 316 633 236 812 258 561 278 772 316 545 264 770 170 505 308 760 248 606 286 806 238 557 288 980 253 437 312 887 223 470 296 1153 281 585 335 966 303 650 303 878 266 573 251 926 265 570 349 1013 186 560 68 893 415 250 67 756 186 576 92 759 132 224 70 767 350 220 107 786 190 599 105 706 160 213 138 785 126 303 409 303 194 544 137 364 317 185 389 298 105 270 139 377 147 366 127 763 186 480 137 688 145 352 158 329 301 335 167 391 141 470 155 346 152 491 166 578 160 497 193 643 139 221 187 618 182 350 220 481 140 353 217 656 184 451 209 618 183 260 175 481 185 409 254 530 230 460 257 645 167 370 217 697 243 386 228 675 219 353 256 589 219 396 236 416 222 415 276 597 204 438 255 691 224 422 285 797 222 452 255 640 206 382 280 817 208 404 290 744 223 490 183 755 233 478 282 603 4 133 568 418 308 1160 51 1530 125 1180 76 1310 642 1160 110 1430 230 380 75 1290 323 1090 146 1250 292 457 142 1230 227 450 130 1370 192 385 138 1330 360 1000 167 1230 200 502 185 1230 524 447 159 564 323 940 158 604 252 934 162 595 252 565 218 657 338 574 208 554 415 887 269 916 447 784 297 926 330 1040 214 588 440 965 263 1340 343 1005 350 1260 382 1060 391 1094 464 960 381 1270 498 1130 352 1290 441 975 443 1200 355 930 422 1370 454 961 407 1220 473 1067 399 1320 463 1298 402 1230 500 1045 404 1380 447 958 486 1523 529 1019 490 1524 572 964 525 1435 208 1055 525 1160 546 1162 465 1373 425 828 467 1240 473 1107 480 1370 396 786 446 1842 273 441 63 1370 299 1060 115 1330 237 1020 151 455 247 1070 155 1170 672 371 156 1190 623 980 188 1190 246 440 235 440 621 1020 225 494 235 974 227 496 279 422 223 401 272 452 258 574 212 809 240 596 303 645 314 1070 316 842 275 640 314 812 297 622 339 796 333 792 323 683 302 1000 337 771 299 1038 250 632 306 632 239 525 318 791 248 834 283 840 354 593 341 941 348 588 406 1010 348 556 362 1121 241 759 314 1044 367 804 390 983 318 560 392 1039 331 821 393 953 274 511 404 998 210 429 406 1264 331 654 453 916 333 611 442 752 388 769 474 910 276 606 450 1121 365 763 457 1101 393 560 455 973 340 443 457 1202 4 133 587 489 308 1160 51 1530 125 1180 76 1310 642 1160 110 1430 230 380 75 1290 323 1090 146 1250 292 457 142 1230 227 450 130 1370 192 385 138 1330 360 1000 167 1230 200 502 185 1230 524 447 159 564 323 940 158 604 252 934 162 595 252 565 218 657 338 574 208 554 415 887 269 916 447 784 297 926 330 1040 214 588 440 965 263 1340 343 1005 350 1260 382 1060 391 1094 464 960 381 1270 498 1130 352 1290 441 975 443 1200 355 930 422 1370 454 961 407 1220 473 1067 399 1320 463 1298 402 1230 500 1045 404 1380 447 958 486 1523 529 1019 490 1524 572 964 525 1435 208 1055 525 1160 546 1162 465 1373 425 828 467 1240 473 1107 480 1370 396 786 446 1842 273 441 63 1370 299 1060 115 1330 237 1020 151 455 247 1070 155 1170 672 371 156 1190 623 980 188 1190 246 440 235 440 621 1020 225 494 235 974 227 496 279 422 223 401 272 452 258 574 212 809 240 596 303 645 314 1070 316 842 275 640 314 812 297 622 339 796 333 792 323 683 302 1000 337 771 299 1038 250 632 306 632 239 525 318 791 248 834 283 840 354 593 341 941 348 588 406 1010 348 556 362 1121 241 759 314 1044 367 804 390 983 318 560 392 1039 331 821 393 953 274 511 404 998 210 429 406 1264 331 654 453 916 333 611 442 752 388 769 474 910 276 606 450 1121 365 763 457 1101 393 560 455 973 340 443 457 1202 4 133 511 464 308 1160 51 1530 125 1180 76 1310 642 1160 110 1430 230 380 75 1290 323 1090 146 1250 292 457 142 1230 227 450 130 1370 192 365 138 1330 532 940 144 1090 165 423 143 470 469 465 148 1060 530 391 124 647 202 882 179 628 314 931 98 1050 318 969 212 590 217 1070 254 1330 447 970 313 1410 464 1012 295 1290 517 864 345 645 350 970 280 872 527 950 419 1310 373 984 430 1310 460 1040 403 1120 513 957 460 1180 477 957 422 1320 419 847 444 1230 400 977 439 1150 468 851 496 1180 428 995 481 1430 357 1156 448 1724 451 869 454 721 393 728 452 1597 489 1043 508 1852 446 1096 490 1660 519 966 531 1812 571 1251 377 1263 484 990 558 1615 660 980 81 1320 159 332 108 1190 200 881 119 1180 255 897 144 1110 189 875 167 1150 173 294 208 427 226 403 610 393 246 438 591 404 241 376 204 1130 206 453 194 1010 521 771 196 517 163 277 256 582 233 410 257 950 251 760 272 548 215 502 240 485 245 543 304 602 210 499 278 930 221 669 279 880 332 465 294 1009 308 564 293 1001 326 615 294 913 264 690 308 971 198 664 389 940 299 626 317 986 210 613 179 908 308 600 187 906 256 604 416 987 327 619 172 978 348 559 185 1004 344 650 452 1057 365 640 410 868 361 506 368 962 342 546 441 488 274 590 464 1406 321 671 478 1229 307 572 399 1307 368 725 419 1044 4 133 507 435 308 1160 51 1530 125 1180 76 1310 642 1160 110 1430 230 380 75 1290 323 1090 146 1250 292 457 142 1230 227 450 130 1370 495 365 107 400 532 940 144 1090 165 423 143 470 469 465 148 1060 530 391 124 647 202 882 179 628 314 931 98 1050 318 969 212 590 217 1070 254 1330 447 970 313 1410 464 1012 295 1290 517 864 345 645 350 970 280 872 527 950 419 1310 373 984 430 1310 460 1040 403 1120 513 957 460 1180 477 957 422 1320 419 847 444 1230 400 977 439 1150 468 851 496 1180 428 995 481 1430 357 1156 448 1724 451 869 454 721 393 728 452 1597 489 1043 508 1852 446 1096 490 1660 519 966 531 1812 571 1251 377 1263 484 990 558 1615 660 980 81 1320 159 332 108 1190 200 881 119 1180 255 897 144 1110 189 875 167 1150 173 294 208 427 226 403 610 393 246 438 591 404 241 376 204 1130 206 453 194 1010 521 771 196 517 163 277 256 582 233 410 257 950 251 760 272 548 215 502 240 485 245 543 304 602 210 499 278 930 221 669 279 880 332 465 294 1009 308 564 293 1001 326 615 294 913 264 690 308 971 198 664 389 940 299 626 317 986 210 613 179 908 308 600 187 906 256 604 416 987 327 619 172 978 348 559 185 1004 344 650 452 1057 365 640 410 868 361 506 368 962 342 546 441 488 274 590 464 1406 321 671 478 1229 307 572 399 1307 368 725 419 1044 4 133 561 484 308 1160 51 1530 125 1180 76 1310 642 1160 110 1430 230 380 75 1290 323 1090 146 1250 292 457 142 1230 227 450 130 1370 192 385 138 1330 360 1000 167 1230 200 502 185 1230 524 447 159 564 323 940 158 604 252 934 162 595 252 565 218 657 338 574 208 554 415 887 269 916 447 784 297 926 330 1040 214 588 440 965 263 1340 343 1005 350 1260 382 1060 391 1094 464 960 381 1270 498 1130 352 1290 441 957 443 1200 355 930 422 1370 454 961 407 1220 473 1067 399 1320 463 1298 402 1230 500 1045 404 1380 447 958 486 1523 529 1019 490 1524 572 964 525 1435 208 1055 525 1160 546 1162 465 1373 425 828 467 1240 473 1107 480 1370 396 786 446 1842 273 441 63 1370 299 1060 115 1330 237 1020 151 455 247 1070 155 1170 672 371 156 1190 623 980 188 1190 246 440 235 440 621 1020 225 494 235 974 227 496 279 422 223 401 272 452 258 574 212 809 240 596 303 645 314 1070 316 842 275 640 314 812 297 622 339 796 333 792 323 683 302 1000 337 771 299 1038 250 632 306 632 239 525 318 791 248 834 283 840 354 593 341 941 348 588 406 1010 348 556 362 1121 241 759 314 1044 367 804 390 983 318 560 392 1039 331 821 393 953 274 511 404 998 210 429 406 1264 331 654 453 916 333 611 442 752 388 769 474 910 276 606 450 1121 365 763 457 1101 393 560 455 973 340 443 457 1202 4 133 539 484 308 1160 51 1530 125 1180 76 1310 642 1160 110 1430 230 380 75 1290 323 1090 146 1250 292 457 142 1230 227 450 130 1370 192 385 138 1330 360 1000 167 1230 200 502 185 1230 524 447 159 564 323 940 158 604 202 882 179 628 314 931 98 1050 318 969 212 590 217 1070 254 1330 447 970 313 1410 464 1012 295 1290 517 864 345 645 350 970 280 872 527 950 419 1310 373 984 430 1310 460 1040 403 1120 513 957 460 1180 477 957 422 1320 419 847 444 1230 400 977 439 1150 468 851 496 1180 428 995 481 1430 357 1156 448 1724 451 869 454 721 393 728 452 1597 489 1043 508 1852 446 1096 490 1660 519 966 531 1812 571 1251 377 1263 484 990 558 1615 660 980 81 1320 299 332 115 1330 237 881 151 455 247 1070 155 1170 672 371 156 1190 623 294 188 1190 246 440 235 440 621 1020 225 494 235 974 227 496 279 422 223 401 272 452 258 574 212 809 240 596 303 645 314 1070 316 842 275 640 314 812 297 622 339 796 333 792 323 683 302 1000 337 771 299 1038 250 632 306 632 239 525 318 791 248 834 283 840 354 593 341 941 348 588 406 1010 348 556 362 1121 241 759 314 1044 367 804 390 983 318 560 392 1039 331 821 393 953 274 511 404 998 210 429 406 1264 331 654 453 916 333 611 442 752 388 769 474 910 276 606 450 1121 365 763 457 1101 393 560 455 973 340 443 457 1202 io_lib-1.14.6/tests/data/slx-C.fasta0000644000031500020650000000336612354177667014070 00000000000000>test_run:4:133:593:417 GTATAAGTCAAAGCACCTTTAGCGTTAAGGTACTGAATCTGTGCCGCGTTTCTTTGTTCCTGAGCATGGCACTA >test_run:4:133:587:382 GTTGAGTTCGATAATGGTGATATGTATGTTGACGGCCGGGGGAGCACATTGTAGCATTGTGCCAATTCATCCAT >test_run:4:133:505:428 GGTTGGACTTGGTGGCAAGTCTGCCGCTGATAAAGGACAGGAAATGCAGCAGCAAGATAATCACGAGTATCCTT >test_run:4:133:548:808 GATTGAATCGCGAGTGGTCGGCAGATTGCGATAAACGTTGCAGTGGAATAGTCAGGTTAAATTTAATGTGACCG >test_run:4:133:568:418 GTCCCCTTCGGGGCGGTGGTCTATAGTGTTATTTATAAGGCTGCTTCTGACGTTCGTGATGAGTTTGTATCTGT >test_run:4:133:587:489 GTGTTCAACAGACCTATAAACATTCTGTGCCGCGTTTAGCGCAAGAGTAAACATAGTGCCATGCTCAGGAACAA >test_run:4:133:511:464 GCAAATCACCAGAAGGCGGTTCCTGAATGAATGGGAATTCGTCTAAGAAGTTTAAGATTGCTGAGGGTCAGTGG >test_run:4:133:561:484 GCCATAATTCAAACTTTTTTTCTGATAAGCTGGTTCTGCATTAACCGTCAAACTATCAAAATATAACGTTGACG >test_run:4:134:548:359 GAAAGATTGGTGTTTTCCATAATAGACGCAACGCGAGACTCAAAAAGAGATTGCTGGCATTCAGTCGGCGACTT >test_run:4:134:594:276 GCCTTCTGGTGATTTGCAAGAACGCGTACTTATTCGCAACCTGACTATTCCACTGCAACAACTGAACGGACTGG >test_run:4:134:369:182 GGTAGAGATTCTCTTGTTGACATTTTAAAAGAGCGTGTCTGGAAACGTACGGATTGTTCAGTAACTTGACTCAT >test_run:4:134:354:230 GATCGGAAGAGCGGTTCAGCAGGAATGCCGAGACCCCGCTCTACGCGATTTCATAGTGGAGGCGTGCGGCGATC >test_run:4:134:614:269 GATTAAGCTCATTAGGGTTAGCCTCGGTACGGTCAGGCGCTTTTCTTGGCACGATTAACCCTGATACCAATAAA >test_run:4:134:368:209 GATTTGGTCATTGGTAAAATACTGACCAGCCGTTTGATTATCAACAGAAGGAGTCTACTGCTCGCGTTGCGTCT >test_run:4:134:621:345 GTTCAACAGACCTATAAACATTCTGTGCCGCGTTTCTGCACCTTTAGCGTTAAGGTACTGAATCTCTTTAGTCG >test_run:4:134:538:358 GGTAGCTTTAAGCGGCTCACCTTTAGCATCAACAGGCTAGCTTGCAAAATACGTGGCCTTATGGTTACAGTATG >test_run:4:134:557:250 GATATTTCTGATGAGTCGAAAAATTATCTTGATAAAGAGGATAGGTCGAATTTTCTCATTTTCCGCCAGCAGTC >test_run:4:134:529:256 GTCAGAAAATCGAAATCATCTTCGGTTAAATCCAAAATTCAGGCTTCTGCCGTTTTGGATTTAACCGAAGATGA io_lib-1.14.6/tests/data/slx.fastq0000644000031500020650000000670012354177667013723 00000000000000@test_run:4:133:593:417 GTATAAGTCAAAGCACCTTTAGCGTTAAGGTACTGAATCTGTGCCGCGTTTCTTTGTTCCTGAGCATGGCACTA + IIIIIIIIIIIIIIIIIIIIIIIIIIIII:IIIIII?IIIIIIIIIIIIIIIIIIIIIIIII2IIIIII55@I, @test_run:4:133:587:382 GTTGAGTTCGATAATGGTGATATGTATGTTGACGGCCGGGGGAGCACATTGTAGCATTGTGCCAATTCATCCAT + IIIIIIIIIIIIIIIIIIIIIIIIIIIIII*IIIIIIIIIIIIIIIIIII,I7DIII-I7I+I @test_run:4:133:587:489 GTGTTCAACAGACCTATAAACATTCTGTGCCGCGTTTAGCGCAAGAGTAAACATAGTGCCATGCTCAGGAACAA + IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIICIIIIIIIIIIIIIIIIHIIIIII/ICII @test_run:4:133:511:464 GCAAATCACCAGAAGGCGGTTCCTGAATGAATGGGAATTCGTCTAAGAAGTTTAAGATTGCTGAGGGTCAGTGG + IIIIIIIIIIIIIIIIIIIIIIIIIIIIICIIII>;DIIIIIIIIIIIIIIIIIIIIIIIIIIBI3IIIIA9;B @test_run:4:133:507:435 GATATGAATAACACTATAGACAACCGCCACGATGGGGGAGGGAGTGCACCAGCCAGAGTGCGGCAAAACTGCGT + IIIIIIIIAIIIIIII3IIIA&I*4I(IID@+:F96I @test_run:4:133:561:484 GCCATAATTCAAACTTTTTTTCTGATAAGCTGGTTCTGCATTAACCGTCAAACTATCAAAATATAACGTTGACG + IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIEIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIA5G> @test_run:4:133:539:484 GTAACGGCTTTAGTTTCCAAAACGAAGAACCGAGAAGAGCGCCACTTTAACAAGGATAATAACAAAGCACAAAA + II:%)%III(1II$I&,&I+II&IIE7HI&%)%%&%(+>III+I+I;II7%I&II8I7B:II&IG;9$AID8-I @test_run:4:134:548:359 GAAAGATTGGTGTTTTCCATAATAGACGCAACGCGAGACTCAAAAAGAGATTGCTGGCATTCAGTCGGCGACTT + IIIIIIIIIIIIIIIIIIIIIIIIIIIIIII>IHI=IIIIIIIIIIIIIIIIIIIIICIIIIIIFHI>FG1895 @test_run:4:134:594:276 GCCTTCTGGTGATTTGCAAGAACGCGTACTTATTCGCAACCTGACTATTCCACTGCAACAACTGAACGGACTGG + IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII2+IIIIIIIIIIIIIIIIIIIIAIIIIIIIIGI3IIHIIA @test_run:4:134:369:182 GGTAGAGATTCTCTTGTTGACATTTTAAAAGAGCGTGTCTGGAAACGTACGGATTGTTCAGTAACTTGACTCAT + IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIAIIIHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII9>I @test_run:4:134:354:230 GATCGGAAGAGCGGTTCAGCAGGAATGCCGAGACCCCGCTCTACGCGATTTCATAGTGGAGGCGTGCGGCGATC + IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII,IIIH(II.I5=IIIII*EIII(II$&I&I1I*III: @test_run:4:134:614:269 GATTAAGCTCATTAGGGTTAGCCTCGGTACGGTCAGGCGCTTTTCTTGGCACGATTAACCCTGATACCAATAAA + IIIIIIIIIIIIIBIIIIIIIIII0G6I8II@C$%I.IIIIIIIIEII=IIIIIIIIIIIIIIFII;IIHIIHI @test_run:4:134:368:209 GATTTGGTCATTGGTAAAATACTGACCAGCCGTTTGATTATCAACAGAAGGAGTCTACTGCTCGCGTTGCGTCT + IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII>0IIIIIIIIIIIIIIIII1IIIIIIIIIIIIIIIIC=I @test_run:4:134:621:345 GTTCAACAGACCTATAAACATTCTGTGCCGCGTTTCTGCACCTTTAGCGTTAAGGTACTGAATCTCTTTAGTCG + IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIGIIID @test_run:4:134:538:358 GGTAGCTTTAAGCGGCTCACCTTTAGCATCAACAGGCTAGCTTGCAAAATACGTGGCCTTATGGTTACAGTATG + IIIIIIIIIIIIIIIIIIIIIIIIIIHIIEI:F>;I?IIIIIIIIIIIIIIIIIIIIIIIIIIIIII4>B>:I8 @test_run:4:134:557:250 GATATTTCTGATGAGTCGAAAAATTATCTTGATAAAGAGGATAGGTCGAATTTTCTCATTTTCCGCCAGCAGTC + IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII=IIIIIIIIIIIIIIIIIIIIIIIIIII?IIEEI4C:B @test_run:4:134:529:256 GTCAGAAAATCGAAATCATCTTCGGTTAAATCCAAAATTCAGGCTTCTGCCGTTTTGGATTTAACCGAAGATGA + IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII>IIIIIIIIIIIIIIIIIIIIIIIEDIIIIIIC8I4I14 io_lib-1.14.6/tests/data/both.info0000644000031500020650000000072112354177667013663 00000000000000Reading archive both.srf. trace_name: test_run:4:133: + 593:417 ... 539:484 x10 trace_name: test_run:4:134: + 548:359 ... 529:256 x10 Reading srf null index block Reads: GOOD : 18 Reads: BAD : 2 Reads: TOTAL : 20 Chunk: BASE : 20 475 Chunk: CNF4 : 20 842 Mdata key: SCALE : 20 Chunk: SMP4 : 60 27126 Mdata key: TYPE : 40 types: SLXI : 20 types: SLXN : 20 Mdata key: OFFS : 60 Bases: A: 411 Bases: C: 296 Bases: G: 367 Bases: T: 406 Bases: TOTAL: 1480 io_lib-1.14.6/tests/data/xx#minimal.sam0000644000031500020650000000037612473067132014616 00000000000000@SQ SN:xx LN:30 @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 * * io_lib-1.14.6/tests/data/xx#blank.sam0000644000031500020650000000000012354177667014254 00000000000000io_lib-1.14.6/tests/data/c1#pad1.sam0000644000031500020650000000060412354177667013670 00000000000000@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 * io_lib-1.14.6/tests/data/xx#large_aux2.sam0000644000031500020650000000121312473067120015205 00000000000000@SQ SN:xx LN:30 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 io_lib-1.14.6/tests/data/proc.srf0000644000031500020650000027350612354177667013546 00000000000000SSRF1.3ZBustard1.9.5H¤ Etest_run:4:133:®ZTR  HUFF€€1 ƒfôÀþµ,HUFFg‚à‚œ ÐMXÑETùcåÍô0¹ÿm28[AˆêÃýÿï;Jã’2Ú(ÙB8QAêÿá›8àAfk°ÌÀR‚@Ðÿ>buš%Å&@¬HUFF…À ëHUFF—`m¹QÕ¯ì%FAä&‚  ¨Á˜Ôn“´ÛÙë̾tÏΜÿs ÍÔÏsþÜ÷}73rÛsÛa#OVjlµ¢”³e1ÒÁÛ²^{IÅ"„L,•<Úä¨V++m©IÆÚ,¦ƒjz›‚¨«¦±ãý˜yofv½NR¢¨”Òr Äqáÿÿ(`¦>¬ÍçÑ6›æWd´˜‘Ò5éx£l~ÃÌ·¤a›¦0âvšâÎf(éŽÒv*ºòrT·Ï$mµºšŽ’çÐèP ÅD¼î~ïuÏ܇  ¢*¦LÊÿÿ°T€™ú&ŸfÃÌ¿O‰ÃÍlh3DlŽ0}6É=k!ĨókÖ˜Oò/ke8]e(6—¥š>Ò¬PŠ®¥tIj–Ï[!:´-GNQïÅ{$K}NwKò5žd'Ũ…ÀÂ#UÿÿMT€™ú²VDãq6Fb˜1ÌF ㊔Ï>æW2"”ò[¤Hå7ó͸|FÈî6Éw3ýpG*-)ŸÃúè¨ájÂHQBPOS,  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHITEXT áPROGRAM_IDillumina2srf v1.12ILLUMINA_GA_MATRIX_FWD# Auto-generated frequency response matrix > A > C > G > T 0.85 0.13 -0.02 -0.02 0.86 0.94 -0.00 -0.01 -0.01 -0.01 1.22 0.02 0.00 -0.00 0.81 1.22 ILLUMINA_GA_PHASING_FWD 0.004400 0.003000 ILLUMINA_GA_CHASTITY0.600000ILLUMINA_GA_BUSTARD_PARAMS 1 4 2 1 1 37 1 1 4 39 1 38 74 2 1 4 1 0 1 37 1 1 4 38 0 38 74 2 0 1 gzip .gz 0 0 0 1 37 /staging/IL9/analysis/080813_IL9_1213 38 74 /staging/IL9/analysis/080818_IL9_1232 HWI-EAS130 1 -1 -1 1 37 /staging/IL9/analysis/080813_IL9_1213 38 74 /staging/IL9/analysis/080818_IL9_1232 /staging/IL9/analysis/080813_IL9_1213 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 s s s s s s s s ILLUMINA_GA_FIRECREST_PARAMS 1 0 /staging/IL9/analysis/080813_IL9_1213/Data/default_offsets.txt 2.700000 /staging/IL9/analysis/Instruments/HWI-EAS130/default_offsets.txt /staging/IL9/analysis/Instruments/HWI-EAS130/default_offsets.txt 1.500000 4.000000 1 1 gzip .gz 0 0 1 37 /staging/IL9/analysis/080813_IL9_1213 HWI-EAS130 1 -1 -1 1 36 /staging/IL9/analysis/080813_IL9_1213 /staging/IL9/analysis/080813_IL9_1213 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 s_[12345678]_[0-9][0-9][02468]1 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 C2.1,C3.1,C4.1,C5.1,C6.1,C7.1,C8.1,C9.1,C10.1,C11.1,C12.1,C13.1,C14.1,C15.1,C16.1,C17.1,C18.1,C19.1,C20.1,C21.1,C22.1,C23.1,C24.1,C25.1,C26.1,C27.1,C28.1,C29.1,C30.1,C31.1,C32.1,C33.1,C34.1,C35.1,C36.1,C37.1 1 0 /staging/IL9/analysis/080813_IL9_1213/Data/default_offsets.txt 2.700000 /staging/IL9/analysis/080813_IL9_1213/Data/default_offsets.txt 1.500000 4.000000 1 1 gzip .gz 0 0 1 37 /staging/IL9/analysis/080813_IL9_1213 HWI-EAS130 1 -1 -1 1 36 /staging/IL9/analysis/080813_IL9_1213 /staging/IL9/analysis/080813_IL9_1213 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 s_[12345678]_[0-9][0-9][02468]1 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 C2.1,C3.1,C4.1,C5.1,C6.1,C7.1,C8.1,C9.1,C10.1,C11.1,C12.1,C13.1,C14.1,C15.1,C16.1,C17.1,C18.1,C19.1,C20.1,C21.1,C22.1,C23.1,C24.1,C25.1,C26.1,C27.1,C28.1,C29.1,C30.1,C31.1,C32.1,C33.1,C34.1,C35.1,C36.1,C37.1 1 0 /staging/IL9/analysis/080813_IL9_1213/Data/default_offsets.txt 2.700000 /staging/IL9/analysis/080813_IL9_1213/Data/default_offsets.txt 1.500000 4.000000 1 1 gzip .gz 0 0 1 37 /staging/IL9/analysis/080813_IL9_1213 38 74 /staging/IL9/analysis/080818_IL9_1232 HWI-EAS130 1 -1 -1 1 36 /staging/IL9/analysis/080813_IL9_1213 37 72 /staging/IL9/analysis/080818_IL9_1232 /staging/IL9/analysis/080813_IL9_1213 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 s s s s s s s s C2.1,C3.1,C4.1,C5.1,C6.1,C7.1,C8.1,C9.1,C10.1,C11.1,C12.1,C13.1,C14.1,C15.1,C16.1,C17.1,C18.1,C19.1,C20.1,C21.1,C22.1,C23.1,C24.1,C25.1,C26.1,C27.1,C28.1,C29.1,C30.1,C31.1,C32.1,C33.1,C34.1,C35.1,C36.1,C37.1 1 0 /staging/IL9/analysis/080813_IL9_1213/Data/default_offsets.txt 2.700000 /staging/IL9/analysis/080813_IL9_1213/Data/default_offsets.txt 1.500000 4.000000 0 1 gzip .gz 0 0 0 1 37 /staging/IL9/analysis/080813_IL9_1213 HWI-EAS130 1 -1 -1 1 37 /staging/IL9/analysis/080813_IL9_1213 /staging/IL9/analysis/080813_IL9_1213 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 s_[12345678]_[0-9][0-9][02468]1 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 C1.1,C2.1,C3.1,C4.1,C5.1,C6.1,C7.1,C8.1,C9.1,C10.1,C11.1,C12.1,C13.1,C14.1,C15.1,C16.1,C17.1,C18.1,C19.1,C20.1,C21.1,C22.1,C23.1,C24.1,C25.1,C26.1,C27.1,C28.1,C29.1,C30.1,C31.1,C32.1,C33.1,C34.1,C35.1,C36.1,C37.1 1 0 /staging/IL9/analysis/080813_IL9_1213/Data/default_offsets.txt 2.700000 /staging/IL9/analysis/080813_IL9_1213/Data/default_offsets.txt 1.500000 4.000000 0 1 gzip .gz 0 0 0 1 37 /staging/IL9/analysis/080813_IL9_1213 38 74 /staging/IL9/analysis/080818_IL9_1232 HWI-EAS130 1 -1 -1 1 37 /staging/IL9/analysis/080813_IL9_1213 38 74 /staging/IL9/analysis/080818_IL9_1232 /staging/IL9/analysis/080813_IL9_1213 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 s s s s s s s s C1.1,C2.1,C3.1,C4.1,C5.1,C6.1,C7.1,C8.1,C9.1,C10.1,C11.1,C12.1,C13.1,C14.1,C15.1,C16.1,C17.1,C18.1,C19.1,C20.1,C21.1,C22.1,C23.1,C24.1,C25.1,C26.1,C27.1,C28.1,C29.1,C30.1,C31.1,C32.1,C33.1,C34.1,C35.1,C36.1,C37.1 SMP4 OFFS4074RH593:417ßM°°ðÍ")¯¯GÚÈJªËa,\ÁOS|©4 |žšæUb¦œn$R5~¾(MÛùkÔ ÕF=V,•ÃÈ qNäå¯Qú¹ë">ôzTª tø dªVI¨‚GB€è¾j9#/{nä;±Ï}<ƒcMK¬¬xœ`ákç§°ï@Y”6ˆj„^`£+aå»/[zœËÛ˜?¦4]ÍÅ—|OÚÖÔX¦w+kõÔ m#òS+ÆX¹)“œpZwÒ×Z×ÇΠ¢°….%;½ÜÉÌ1;7ì/°‡¥í7/‹ ºíV{ÛÂSÂtx6“ÛºÏSÄ:-õýà¼|!Ù˜‘§ÞñÁsŠ£õ3ÃØþm-nÑZ:CŸJl…þ¡Û$bVû'Z—Áö;š4DZ ²­×Ù½õx÷ó£jtm៵ºJZÏ[S[¤W««½ÚµQ¹¡2°Ö s$¹·v·PéÜônדšÐÎMËŸk§ôªw®@EÚÝ|hñÖöqìu{’”ƒ=tîžvÉìêàX}ßPH…>cé²vÈÓõ+i¯¾— É0OÔùlÍÎfþ¤ä©OPãC¡ºq˜Ý6(%ö¤æX¨dIDeæ\8ŠÁN˜çÐÐ6Ñg‰2k!0ü ×µCe$ HíP­ù•? 9Ü@—Á0Y‚½TïŸhVJ-®J­ü×;™X²†…eç}ª?·ê¯Ýt§Žã‘—®úR ꑤּtøÛQæ¯Z3Ìû‚9<bœi¢•aD]´ùY¹”8K¸qkLjüBASEM€g‰5 Ò$2²dº©Šc”á(sƒmôCNF4 SCALELO7M‚ À ö™þÀİqö”&Y(à 84 pìüÞ0¸®i³„VÓó9f-ÈR[505:428ÞM°°ð’¼À& ¹Ë:zÖÝsÕó“W]¶½Z²›¢ER½§™«¯Á@½›…”¥fbfo1¹¥÷î¶9LZ¯ºÞ 0ïM±u ŽwqT†¯ð§$Õ!–~’ ëš·ÒËV]³Þêq…ê'§ž§š±šÑ— RÔ¬@6'&½¶Ôw‘´²âÓ²:ÍW³&Ú—@ ¯z˜3q_¯`ØÆß#›MÄóÈ©VÌI-W ÚO<‡Ä™¼¶Â”ܾ(‡æI2ë‹0mëY„ûYéœS91*Ä6Ÿ2~ÝQýâ%´"éêrÙ‹Úm6Q»ØMâÇD„t_®·9Ù ³©ù=Í74“ÅRÿJ[2 ăÌ'>J¼×‡NkÚTÆ ÄôêŠCzØ\ ZüðXÛVÖÊ×Unê0¼qý×üÆÇ…2ÐH)¸é}W¼Êäjk1J®˜èñ°Î‰ÑÑ6FE¹¯C°AŒow£¾Þ1ÑtÉ’bÞ픡Y€sTL¸zz`‰‰XÙ¯ÏüšPÝh¢åÅ%§©¯µ2¶ ;‚ÂÄ­|Y4ªHZpþ ’#ž·à¤T²b8aËìR‘"ùè”ÄK’2.í¤mÚØyÊhÀUûós¡³Ú ÷OQ¤;°ÎwÃÃës4-«5‘Æš BASEM€§¥¬4ØrsI€2Èáp Acb´ÕCNF4 SCALELO4M‚ €`× ÅG'Ò`jÝæ ¶^»ži¦ƒ*Š|€z;]ç>Nm€ R&548:808ËM°°pää+^W×7ìц½14÷z;Ì&º¬G&Ûó ÷"%kÎ@„O «…ž}ï'€“6¶æ]ÙÅ€X594:`œX·Ûlx¼™ M ¢9°ÐíˆÎ&Œo(lÚi–ÙY×z…‚ãLùMï˜Xe²é¦(jJ BxpÙ†Œ{Q J†X~—(e‹”µbŽÉ°ËÙ‹?6^-çM¨ì}†¸2B åã®\)AµðË2êÚ ŠÒñ„ÇCͤtŠðOy¹Ô`šXyþ×ÔA"Ùd0êHFqÂÁCNF4 SCALELOM‚ ÀŽy*þ¨A eRs568:418æM°°pIcZYêŸÅ7ýŠñÔžB–´¨V'ùZ9“OÓ<;3»M¨ŒÈâ©>ZB¸O*å_‘à˜ÆûrÏÚ-§èÛ˜qà7ôž·×X÷4—ä©6®‹|LúbU2ò(˜èÂêÅ×ñ^+‚à+v»2ì©Óráó7WÎI¶€ÝÁ’tÂîlœ•П§Q’[Å'ôÒ犾â.E-o¿¾ÃÝìä3psRpÓÞëmóóóžKß½¸ž{_£à«\ôm^,ó…w*:ýh’”{óNíKóÊ ­îÕûÇ‘$?°Mû~4ÁRdgc"3ªEöø=%]FWp¸w W˜áA RzZì¹÷[ëÜY:Wv4Ž$¨‘¬÷ÌLÛ›£#ªF¨ÛO€Ø›GÎ[ TT;Kìüp1ˆÞ e–`v0Sª<{¹À« C¨²Ø%žÖıšWÚþí˜Áéò­‚çs"­ky\QS¹ë"ZÔ•=ÓR̆r{š¢óÆgö²ËØ’vlÞ@š¦¿“aLÑ¥p…-‹ \ ξÊmúØœåó?D2N•w‚³x·”õ¢ !¨øLåúñ]Љ!YëFMËÒ I› ™Žß×­N%6 ¯ÌtìáÊÎ¬Ž•PQ”8°TdÞäUú£ÂYâBÌAÈ Gßà'4^{7BASEM€gÛVS¦-Â,*]®–ÌšIbe´ìCNF4 SCALELODM‚ @‹V€ óNõôü§·¸Ã: ½·Õ«±‰´àÊ©vÍúª²­X,dn¨Ÿ_ˆ" šCž*6R6587:489ÕM°°p×Ôûíð8­:ßÛ¶ê9&ð`ThQˆAºUÃܧFJ!7/š0*¶ç.Âm‚C …òj©2…[¸—‚nI®½Ó·¹á0™GÊB µ![•ê.‘…™HVT_g€#/ï¿,œÈy¡^Q·êù+È"UÁ é*)q'ÅîÙ&Lú¨Ûòr-¯EÛÍåˆÆìEÑ'å?ÑN¼h«‚I8V¶'®ÜøV«¼?ž–þ„¥Vùì&7£¾¸öÇ­b8ûüôÙI±²H«îÁ§³ÈOîºæPÆj}6÷šzÄ`mö²SvD0â$ð÷¡czÓ}Ó©À {ƒTw„æšä‹d³.™ô:ý5hè®;—U}ŠÞÒr1Ûº:Nѽç9‘Œ¹4‡cOFÉÉ]‚Àéš´j¥2/žj ’G’÷ñn‹Lï(ÞõÌ9×ÉÌs4CÂ'ïÂü— Ó“(ã÷©¾ú]Ä1\Üø<µjJ¯EßHymgã¡fmèCä•@–ÅIGK鯚•ì¼Bæ€ žâE&“:¬/ÃMhS òj³(˜º0º…¼ûÔÚK%›Ä9É¡YqÕÌ“ŽeÌ–(¦üS]ÎBASEM€gÖ`È£–¹9+œ1`„¹‘k( CNF4 SCALELOM‚ À?Þ-´8(Ú;à@RA511:464ÖM°°p„’yƒôõ8u èWÔB4øÌ’+ærñãâ`pl¤Äeû×µd8ƒO_N™!`BäœCó˜|fØõ µ§­ ¬@Þðo•î|3õ†› ÿ ¤c'Büœ …<$ÓcH¿D Ä _¿BG¿OˆEd†1’àÇ‚€nó*Êã†;*MíQà°KÇÚ>ÒÉЄÁãsê¶ß¢äÏYc–•$cу:ç¾±"çù1®ó´2Hå6“µÿbYšª‰¦ÉëýÞb^É­¤IáÓ*TRƒ¨ÛºE¿ïö•]¿rv‡Q*liÐ÷“`þÔvXq®x?×?8#¯V¡ì¶Œ4·²´m´’¦ciØB™ ‘JU3/{—ÔVVÃè§õ$r£ù11IÖÖó[*Ère=­UyJåÚŸ($5ã‡-1å)œº ÉÞÐŒ°ÝRR.Ë# T÷ø„MéŽnRž=Û‚Z ýk­4+ˆ‚CÚÁO°j$%FßxDªfÉ*i]œþ‹Õ¨(•l Í¹/Ùÿ$é7¢*¾=²44RtþajÔÙ‡¨Ö^ÜD|©€c+%“‰Á`x"u.ží´4”'óŠY—©ÚNÙ©ˆ=aBASEM€ç€Æ† ÓÚR¡f +r‰Ú0}CNF4 SCALELO#M‚ ÀŒw  yÊÄöpç€E õzžvº RŽ507:435íM°°pM#±Àbl&ñ9îš}™Ý"Àíþ "£âÒù¢.ªm‚Ú`Û°Wo‹ÍIŸµ×/ ÊA1 ~uúüÄöA[Í´‹£›ÂÇHÓ‚Ó~i™ —”ÿT]GFµ”·Rý ªWèXbË»Nþ#s(Y¢ðsÝõ‡SàõUo»ròbŤÑ9q¿àyÏg•D!¼°mf¼i)Í ‹?æc³Î·Ñ¿xºÊ_¤Ñ½ßñÑüúRƒ,—6¼go‹²{ RáIŽw~c1Wü÷ÇÜJ—žÛõÒº,øa}w&ïÔñ/þp/—Å™7Dë Üv˜ãP«QŠ1ÈÀ¯|ú[’F¨êZÒåý¡^ û8ëW’¶#…P•g™-S@O=™–ß_bм·<)•ÜPÏÜ$Ö ¯ÿY¹„óøajÆRÓt2_9R;bä¡Ç]µ«ÅM¯¢™,§µ“ÐïšÍMÄÿ…÷Ë-æBô Ò ’ësÿ×~øa:Ç…×”!á·TŽ)È¿·MJu !Ê¢œ)±”µ›„‚ÂÝïÍVûliâßûR Ö“'¼ªè\3 /µg÷ÖÀeñÖšLyúÐî—>ùÛƒç7Ãy±Ègwo* Ðu1Û&Ê yž ˆ5„­7BASEM€'‘ŒEÈ`sc’ª¨˜cà 1§XÎCNF4 SCALELOXM‚ @‰ÐÀ ÷ I¿€ ûƒ+˜Í@õÂñheÕËðØ&/Þ»›ìT­¬Q xx¨YÁ·‹;7, ¯‹/ –‘’1± ¸¥Ž#ãõÀÇ/ÈR8561:484ÚM°°pÕS2þ®oG%Œãùô}†4Ó‚£ù°Çn}w5Kx Ìb6àçâùò×NŸ 9$o©~9ƒPu+†ˆ ʾÆ9‡LãÒ£ñ¹%/î·§Px,36ʽiHèþŸæ¦ÊcL}'† QøÙ:ÊŽ˜ÿoµÊ‚Sð7¤%Ö]|økën©­¤%¡ÕðlðžÛ¬ÏÜ/QŸ¸™·æî@÷ùÇö݄ƿ݆y Ë+øì—E;ÞëÊ øŽ[ŒnÂß·G9­í ép9Üåa.”Çwß±óJ\(¼ñþŒÆ’øe&ZÅä|°ˆßÁXš¢>d£Ú5ô‰Ä|”nã ŽiÒ¼d!sâ⹟ öíܰ1ã’}?in8Näဿe{Þ‰"RI7ßÂAÏÐÊDVMX:â«Ò<ýBšIfiô)™S"0"ã˜'X,¹j1þ§(hW‰=Žï=¡å²j¤²®ûn>´TÕ1xʽuM3’‚±B°óèí‡êžž,xmµ„°¨/Jµâ«Ïûû ‘cÙª_wÕ¸W—}¡W0¿“NM—ÑZp‰N€à›<@Õâà&»˜bÕîIÍa‚FqÍÕÏx9’'8ÿÅšDÎñBASEM€çFPVU- \ZËQ°Ù€Eˆ`–ÌCNF4 SCALELOM‚ ÀŠ ÔoN_ª…œR¾539:484M°°p5¶™šö¾r¡}:šVåö˜Ñ¹ªßszÇoÿ6 ¢§6ûþkü¼–è ÷f‹ªlé Ìøs¼¶D•§Ûÿý‡« PžöhQ†^ož;¥ô§æ½Wc©›>ü'÷ËDûJb¾ôAÄÔY€°ßæÜ˜zþ×ò+RMGòÇù¿ëûQ'ÎzEEÚÑÐÁÿ`v ±÷Þ]<ÀÐÛÈKWµ}öþ‰x'™Öé{u`ʾ;‹O´ÜñˆdT}9©ùù¹pbß—²\…y;XˆÕ‡‹Ä,>,É·ãé/_1n÷~ÔAþ[Ùíë6lŽªþ[ßœj¿W0.éÀæ–Ù¢)GڸќùYñ¢«8Àþf üGü}Ê—â ø‡†¢¿>¹óâ#»ôü›3Z£WòoêoÊÅ)eÑýÞ¦ºEÙÓÄoÖž‰ÉÔQŸìˆàŸ3O‡¿‡Ÿsûí|¢YáÃRSN÷× XÂ/–Ÿ+ ¬/Qçn\<àó¯ü¯7 ë{ªÇ+zb«.êòàc¿•°5æeµ=Ìí&ëé=Û[C4ËÚb 8á}Á‚¿ÈoÔ´ÞÎQ¶BASEM€g0]…Õ0AØDçÆ*(A0À1€CNF4 SCALELOuM‚ €`œ1¼Î<Í J‡Ž;ÑÊ_­”‚TlÔ± øœð”CŠì0¿ÔÝŸvw×\¼ýšÛo.?¯É©– œ 8`²@à ÆNžn€§ìã ‚Ây߆)3,HE€˜x^hX@H¤Etest_run:4:134:®ZTR  HUFF€€1 ƒfôÀþµ,HUFFc‚p€› °Ì†˜9' â(¹ìýÿo¼«0Pu¸ÿÿ}'jPˆÏAˆS—R ^2€Þÿ†O%ÑoÓ.12ÃÀY Â0йÿ _ʤK­R,. ¿HUFF…À ëHUFF‚—`,¹MÝI:ÓºŽ1H $¡± 1ª'éòûfÞýOÀ@˜©/æs(»BÇ|6ñ çÏdtN>í˜o3œü2\b8YzÖš±.k µF¥‰bcxvî¤VSôŸ9íäRÊvÛb € v¢=È™!¹’œ4q‡ýÿï+ ÌÔÊo˜aŒCŽcçß|ÆbÍÎßæïÌ·9‹¦q‰¬ùå×òëŽu)”0”ÿ³i'69Iµä›¶Ögk£QŠVãb ¡ø¼»’fF’}¹&”’”´…¾åÿ­`˜ÉðwŽó¶(ÆÊܘ×âX7ye4ÃFmㆰ CòrØ•ÙrÜÌa‘+¢8·»µ£’¤W“¨ÝÈ]Æ0E7ý-7ÊvÇa 1 Û’XU¤DÙ¹:sô6°/ûÿ?·€4SæX–öÜÉ#æ‘»Êh¼ÑzŽ‘Íùº¼bÑ£P™šY‡•£tL ­kfÙlQiKµ#Gy/­R,£Zü4=BPOS,  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHITEXT áPROGRAM_IDillumina2srf v1.12ILLUMINA_GA_MATRIX_FWD# Auto-generated frequency response matrix > A > C > G > T 0.85 0.13 -0.02 -0.02 0.86 0.94 -0.00 -0.01 -0.01 -0.01 1.22 0.02 0.00 -0.00 0.81 1.22 ILLUMINA_GA_PHASING_FWD 0.004400 0.003000 ILLUMINA_GA_CHASTITY0.600000ILLUMINA_GA_BUSTARD_PARAMS 1 4 2 1 1 37 1 1 4 39 1 38 74 2 1 4 1 0 1 37 1 1 4 38 0 38 74 2 0 1 gzip .gz 0 0 0 1 37 /staging/IL9/analysis/080813_IL9_1213 38 74 /staging/IL9/analysis/080818_IL9_1232 HWI-EAS130 1 -1 -1 1 37 /staging/IL9/analysis/080813_IL9_1213 38 74 /staging/IL9/analysis/080818_IL9_1232 /staging/IL9/analysis/080813_IL9_1213 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 s s s s s s s s ILLUMINA_GA_FIRECREST_PARAMS 1 0 /staging/IL9/analysis/080813_IL9_1213/Data/default_offsets.txt 2.700000 /staging/IL9/analysis/Instruments/HWI-EAS130/default_offsets.txt /staging/IL9/analysis/Instruments/HWI-EAS130/default_offsets.txt 1.500000 4.000000 1 1 gzip .gz 0 0 1 37 /staging/IL9/analysis/080813_IL9_1213 HWI-EAS130 1 -1 -1 1 36 /staging/IL9/analysis/080813_IL9_1213 /staging/IL9/analysis/080813_IL9_1213 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 s_[12345678]_[0-9][0-9][02468]1 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 C2.1,C3.1,C4.1,C5.1,C6.1,C7.1,C8.1,C9.1,C10.1,C11.1,C12.1,C13.1,C14.1,C15.1,C16.1,C17.1,C18.1,C19.1,C20.1,C21.1,C22.1,C23.1,C24.1,C25.1,C26.1,C27.1,C28.1,C29.1,C30.1,C31.1,C32.1,C33.1,C34.1,C35.1,C36.1,C37.1 1 0 /staging/IL9/analysis/080813_IL9_1213/Data/default_offsets.txt 2.700000 /staging/IL9/analysis/080813_IL9_1213/Data/default_offsets.txt 1.500000 4.000000 1 1 gzip .gz 0 0 1 37 /staging/IL9/analysis/080813_IL9_1213 HWI-EAS130 1 -1 -1 1 36 /staging/IL9/analysis/080813_IL9_1213 /staging/IL9/analysis/080813_IL9_1213 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 s_[12345678]_[0-9][0-9][02468]1 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 C2.1,C3.1,C4.1,C5.1,C6.1,C7.1,C8.1,C9.1,C10.1,C11.1,C12.1,C13.1,C14.1,C15.1,C16.1,C17.1,C18.1,C19.1,C20.1,C21.1,C22.1,C23.1,C24.1,C25.1,C26.1,C27.1,C28.1,C29.1,C30.1,C31.1,C32.1,C33.1,C34.1,C35.1,C36.1,C37.1 1 0 /staging/IL9/analysis/080813_IL9_1213/Data/default_offsets.txt 2.700000 /staging/IL9/analysis/080813_IL9_1213/Data/default_offsets.txt 1.500000 4.000000 1 1 gzip .gz 0 0 1 37 /staging/IL9/analysis/080813_IL9_1213 38 74 /staging/IL9/analysis/080818_IL9_1232 HWI-EAS130 1 -1 -1 1 36 /staging/IL9/analysis/080813_IL9_1213 37 72 /staging/IL9/analysis/080818_IL9_1232 /staging/IL9/analysis/080813_IL9_1213 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 s s s s s s s s C2.1,C3.1,C4.1,C5.1,C6.1,C7.1,C8.1,C9.1,C10.1,C11.1,C12.1,C13.1,C14.1,C15.1,C16.1,C17.1,C18.1,C19.1,C20.1,C21.1,C22.1,C23.1,C24.1,C25.1,C26.1,C27.1,C28.1,C29.1,C30.1,C31.1,C32.1,C33.1,C34.1,C35.1,C36.1,C37.1 1 0 /staging/IL9/analysis/080813_IL9_1213/Data/default_offsets.txt 2.700000 /staging/IL9/analysis/080813_IL9_1213/Data/default_offsets.txt 1.500000 4.000000 0 1 gzip .gz 0 0 0 1 37 /staging/IL9/analysis/080813_IL9_1213 HWI-EAS130 1 -1 -1 1 37 /staging/IL9/analysis/080813_IL9_1213 /staging/IL9/analysis/080813_IL9_1213 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 s_[12345678]_[0-9][0-9][02468]1 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 C1.1,C2.1,C3.1,C4.1,C5.1,C6.1,C7.1,C8.1,C9.1,C10.1,C11.1,C12.1,C13.1,C14.1,C15.1,C16.1,C17.1,C18.1,C19.1,C20.1,C21.1,C22.1,C23.1,C24.1,C25.1,C26.1,C27.1,C28.1,C29.1,C30.1,C31.1,C32.1,C33.1,C34.1,C35.1,C36.1,C37.1 1 0 /staging/IL9/analysis/080813_IL9_1213/Data/default_offsets.txt 2.700000 /staging/IL9/analysis/080813_IL9_1213/Data/default_offsets.txt 1.500000 4.000000 0 1 gzip .gz 0 0 0 1 37 /staging/IL9/analysis/080813_IL9_1213 38 74 /staging/IL9/analysis/080818_IL9_1232 HWI-EAS130 1 -1 -1 1 37 /staging/IL9/analysis/080813_IL9_1213 38 74 /staging/IL9/analysis/080818_IL9_1232 /staging/IL9/analysis/080813_IL9_1213 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 s s s s s s s s C1.1,C2.1,C3.1,C4.1,C5.1,C6.1,C7.1,C8.1,C9.1,C10.1,C11.1,C12.1,C13.1,C14.1,C15.1,C16.1,C17.1,C18.1,C19.1,C20.1,C21.1,C22.1,C23.1,C24.1,C25.1,C26.1,C27.1,C28.1,C29.1,C30.1,C31.1,C32.1,C33.1,C34.1,C35.1,C36.1,C37.1 SMP4 OFFS4171R?548:359ÎM€lÀàïP ´·êiQmFW¦Ö (T?]óJpa÷ !ç¨ U#uàMðèÆç(Âê>¢ ¾0IÔÕÜô!f™þÁñô ÿa¬nzªšÐjÞ€Õ bö'÷W˜jGí,Ö§þkŽF²†{º´ƒFYÙ(xËT/µþä¿-!ÆJ˜ôl,¡*ÚÇq C}øë˜‡˜ÙBßKf<æBö…l;Î-ßMž¦.gÃÊ<9CùŒïßÉ[é>¡5~Úõ‘†[ØŠÊuÜŸÍõì„.·ÏŒè¾«œu¾ðë´Y+Ü˽BFT'œÖ&[^È7+Ï!3ŒËAóÚ  G¬¾;Ëß@Kò`3¶}B³ÑQ§¸Ho[‘´˜Ú±d~U{N¹õ«eÛóEØX/Àq·-²Ît[’b"›ç0}´Æ$²êkà`Ø×>9±íM­ÇP*¥jxÓ\ÌØsl%[>žfg‚ÃG^×ÔH«@øÀ=…F7Hf­ôX&mحД0E†—cÊ¿û@æEfB}àÂ¥)ÓÍÎkÊ{p;3—~ø%ëÅ_¤[Š÷ ¶)$ Mq‘ýÅénBÒn/®øQjã%ÞÂsߟ'¥èÈ<BASEM€' ¥Yµ„ÌÁœÈ"åÒQæ“ÕCNF4 SCALELO(M‚C&v Uh±Ì @Ä&Ú‰¾1½™šntG½<Ê\oÖ\RB594:276ÛM€lÀàéDSèöã µ²„6¡[ù|ß¿°O!®ï°õðK¶õn _7Ò¿Ìו(nâ%e˜¡ddíµ†~Úœ‘hIXþÙãíùTçn*F·ëãï·R7•ÕB–ÕpØ_ÿíÕŒDåÞJàéì}"Ovxé¸ÛY™`|G YÆÛ£lYÆÀNìD=óÇ’\én­,loT%·% ?Šúq[š& m@€åD¤òö4M‹ˆ×;»Fú þÔfs žÛµýÒZÝg{<Ó3Ó›¯w¶È–žç†É>³ ãÊðÕÁQU•srôÿ3l=Q™!Ý û“¯Á™ñêÊêdm{»èàô7y<¦w(ÖÆc‚¼ê(îÁwd“záWÃ;"›¥ÎŽJô Ön¤1x8ÉÍÉeò…} ómD­vµŒ{N€_‰Êpyyçv¦ÔtN\kÓ&´[•-r9ÈK]luz×Hh´Š£§•Ùº{ø2 Ô½365#ÝGBÄZ»†‚g§+,áèh"‘Œˆn¶ÉÊSF¢ovD¨ã –¡áGÌ úbÙÅdݰ88ØF£»¿Jkš…hLÊíèç"ôæ"•ó6W‘~T¬ñ€CržY™ÇØBASEM€çVK“Ê0g¬¨9Ø’Em,ƒ%LYúCNF4 SCALELOM‚C&&üìÎO¾WL+5Þ#påØ0±R 369:182ÄM€lÀà5 ë1‘%S^3ˆ:¯ ë ³²0~áQÚöãÃ(‹^¡ê4̉$æÈÇ;Ÿç!Ò"sçDаI¢€é‹)Rù@´OFà†¹@*“X¢µRË9¢ ¸ßg²˜Ê2å+ŸîÓ¬üȇ*¥rO“ Ô…îu0Å¥ß ‰ñlµ÷$ £Pñ8ÁG*]¨ì¥š—”·‡XÉ/èvª Kþ÷ž£9ÁKs™üdzLˆ±sž3,Y'±ÌàË„’Âýó9aO')Q=èLÉ÷:ñÕX4Uré¡TÖ¨ñ_n¨ÅÎ1/¹Wºaýo˜ÿ»_b—©ÑXñPÍò—B‚\&c7*H†Pàà1²°ìn=B('˜Þþdº`“Y…¾‰Œ–—ÆQHâǶ¡ÐzýÉo¬§˜;Ñ]ÞõT5EŠñB“ˆþ†Î»°GK¹ÐH¥Ì0…öËhŠ'a! d+ˆS–8¥8C«?¼S9Iü˜§_œt‘-:Uš~R?©ÏPàˆ»h@—µ·çâµ^<)8) ––Ò(w³øüÅ_§OàÎ+2P/Ò=f2j>cì´“¤à¹< ‘ÞtëBASEM€§!Rkeɨg¶˜1¥¬a°’5zCNF4 SCALELOM‚C&FL¬v À„·Ô€R[354:230àM€lÀ`[sÏ`ì>ÖÊ;üמ×GšˆŒšÛžp•×®Aˆv¢ŒÇw‡:Ä<²ÅµÚ®Ý›Æ>Þ­7™ ©óȱÂEîH(1xœ†aÏan[š¼˜aXu—ë@h‚-ש…?»G|âOž¥Ø­RËö…´ùàJ!–q$B9/r&wä¬@[áÉ&)#®¾ns™y‚’ÖìË5&(Þ•·-ɹœ˜b|Aë¶? .ÌDn¯í1àUE ”f]æR+ñ€f ¢QJÀd]® .¦m/BŒˆáB“øKÜXŠ{÷ùâòi|ŽÑbÞiÿ¨°åˆgN¦È•#]p:ýw•‡;å«Úâ¯æê†4ò_u 5.|üìøë¢¯“óÊ…ð³íTF"9ŸÍÕqCž[¾FI,Iõ>w®ãc'p<ÒµÚP¯ž$·èÕ9#ËüízBASEM€'MAœÖp(ä&²m®ÅœT#LÑ™ÓI{CNF4 SCALELO2M‚C&^89*ì”Úp¶ÁÍ2h8z¬$@…Ú†îàÑ š?@…ž½R_614:269ÜM€lÀà7qTý8¼*z”*訆èN§g”)õ`ÃÆÔ‹gh \òóWÈ6ŒÞùõñ°‹¦Ûß·@ Ç“#ÈœY³¢ïí|"œ´¥+“8ý>u'¿«x´C«—ŽÖý0ÆsL SZ›—M¼fñöò!ñ~ÃËo½…͇^s „Ú÷h³? Ï_âý~îyµÚ£ñ*sÆËªª:¹í`N×øóUÍÂQ £xøIèÆàt/пOžkÈ£äkð]È =¢º9$.öwn7+’uLôiJ¦,Í“ÍÅ¢[Þ‹[!¤wÊ‹ ø=ø°œÅ×¼ßÇ-=ò©àŒë‰<¤ZøÝË÷Ö@ì ×lk5_pŽõ–¡še›ì|­¥óE)æáØd\F;²ëuCWÑïpØõõök{CÈg¯à&{WºŠ€âD ÞhþyrêZè¨m(…M_ü¾Àš%wÙóS¤ß´i ò½Œïpƒ„VùÛä™’;³›.”qÓà¯Éa$³£aEå(3ãKqLå† ‚«€¬s‘š¨Žµœà0ŒìM2º *Åäú52Ø2.‘o®.¥ÌÚ¸“u |ÊæÛW‡Õ@ >:©r »B ØcÅF<÷)5ü^~”8þœ‹BASEM€'®Q¨…[Ó˜6t®j¥cR°-‰ CNF4 SCALELO:M‚C&N˜ޏ¼ò-¸s@wðǶÈÂ÷ü>~ÞpæPc• €/lÏÕØ° R9368:209ÚM€lÀ`SRi6~¸hê°‰qãÚnÿ¼>ÀÄÍ4ÌÕÏ&Hã{Ã:Ù8t™ˆnÚñmŸ°&Ê»}¹g™œNI¸92D<ý6€aº·ÝR×Ñxå;Ú=øu¤Wêéж¶h§öcÁìêSE7*?T=»û• .5“Á¼N¹ÛÝ¿g®µMíŒð&„jTsDõJ¢ %sdiÑë³mW•bÒ;ÂG*x¦ÂÔÊA!*H*ÇfÙ埢³\ƒ·{—o|pyŽˆ¼J4 %Ðkà ~ßY_Çî<žŸ¬i´Ê÷—;»x¼ìãOu†|Gúà}*I›W©z®©Fl­ãPXñÚVºÅ/Û¾ªj¬ìo»eÇ™tõ¯CCf“ºdf\zï¹1XçòàÙµz‹Ež0çºÿbqç)š¹ HUÁv[$™ÂQdk4I}{3ßç9®÷Õ9÷Üøl PÁpQÆw¬¨óµÿ¶zdÃ/‹¾c6(‰‡¾`V»¡Œ„W`óÜžUæ}Q/Ùü¨¢³…á! á²E(¸¼¨­Å„NK$VYu;uG9§Ëý$º¿ÎNW–±çžr=EÙ(MT~’‚L˜ÀŸ›¾%FÓ«ÞOžr}܇Uwê¿¥¾ð€x)Ím8BASEM€'•6Jˆ%nVR4‚b‹åš³œ­CNF4 SCALELOM‚C&f$ú…ÀMà ó@‡R)621:345ÒM€lÀàKÎqÝ’»«ïê°Æè¯ìÚÝõu¨ÿ^kÎPø.à AM™E´¡«³_bYêÝ.öiãb”æX¡zÌÅ®¿ºjG%lšæÜKpy¸vÇÜm¾1HÐÖ¦›“âNJuØyiɫۅX2Ê|8f¶wUçeWõ7”¢Ç} s ýÛbþ,‹­îÎ^Ö¶¡ óÛ ¥ÙõöÛ^ÛÐ$ø3é´OC¿sFO5?d®ÍL9x–6ŸåLÖO¹áË–±5=Ù£Ÿ$kÒoX=Žò»a{0ÿ1râÛskNæ©00û9¤,8üUÓ~¹y1i ^¨=Û ëʵ{hýè÷‰¶¾nÁ™AuˆbBÒ¿“Î 1h·€Y3_µ™Ñ}ðí¾µ(³#ak£%>Z3¨*QwhÀ³8†)È¿1µC¸XÃ>Ä+ŽÔƒò§­s Ÿ=ÚÄIkžÖO4ª'S$Q mY=õ²JLò0"%Ýø—õ»D79GgQ×'_3”Î¡ÄÆŠö¡çz6^ËÝ4)|ù‹4¶¢’,¸!?­`á’YL‘«œu´ä¹jÛºsO‚ GMÊÚ Whä<-ÝÚzäBASEM€g †l0j™›³ZŽ­ÂY ±„Ö*l>CNF4 SCALELOM‚C&þñ¨ð¢R@538:358ÑM€lÀà+ÛÏ¡óؽǔ£]Êg;<»¥—˜j¸”EÀÐ%jKŽ2Ö¸y#ðdÈkkÁßœåò›­W¹ gþ´—4†\úº¡/ANsƒžå3jQæ¡‹—Й´3ö”Ï1‡™›=ÝÕ‘*ž8@+¤‰éÝέEcÏVÆí:{h’NÊ´‹F ¨j·o’_?JæE½0Ø–|þNYHºÓYmŸîµ[a®°£Xºê|𳣿Šä--§¤7κ÷ªÖü€éuÂîlE=Þõ€[ó•‡Z§‘&XºPŸùªb½*zŽ+¿Ã»ÖO¸+b5â²ìa¶öÌ7F“¨érȞ߀ª¥„Ð-˦ÅÃPÙDr;âd¦Ÿ–ƒntÒáM;0l×m/R «ÍE:ýùi¾iGS¶UÖîxá’ºCµtTŠÿ<@å}jx0¼J 'L0T‚âÌl¬ #·^¦*¥1<,øIá¥`•¥&DRÁr²ÀAlV ÇHŸßðšÒ„'31{bÞ´s"ÍøÉtÐÁýrF=°•—ŠksîtüàbTÉš» À4Ll¦f`ež£ã-ë]h/ìQ92»®È‡æBASEM€§á*pºÆVáh0táÊÄL·"-†‘CNF4 SCALELO&M‚C&Ø)+ }µoH'WÙ´§#UmfIÊÒïtÜ R1557:250ÏM€lÀàSuڌ ] – î Ò,ã®G@'`ž )ŠÌ}F绀šøi °¾¢ j,(|’nÛLŽ¿o¦JcƒùÑ(â>†eÎý}ß /8m FâDÐêmždšêßú\fPZØŽ …µæö)Ra³‰X 9#jŽXXQ>~-K.S;”¤Øæj“–”a =÷™o,«’©ÊÄg'²Ik´Ù$9Åkáòb¿wΩ§§žaE(Ÿ²×Âô{=ž7$xà£,‘ÉÐë%|M&$ÅÔ¿”5å5Á²UûæLÃÅOÂãÐñ¡Dý~ßY}e±w¹”n ͧjõ¶×ÁøZS“´q³™Þ誴|¦Àlžnå÷Xr©“úÓÒ߬™âç]=û0¯€qÐ".~gžñÃ{á|¶‘;­õi±¡TzaG`gOšÆÏB±^zK§ñðPš®G{–±â醇#CÃæäÚõúhB´ Ddõ/Š-Œ^ÕfzZ§¦•¹—°ãy³4¦NlÒ‰¯æk¤I<ò’äc¨-C¡sôØ4óX&±‰ôþÒ'ÆÈãôX±ÄèŠÈÖÚϹIr©•€„[º)Q8)Sä©ä$1J.h® Ñ„Uu6ÃÖØÔÄ•˜hèÔû#°¡ù ëRòq(]®¨*QÂQš@µXØñ“l¨Oß»!,“¨°ŸÒŒ&ÎI»BASEM€gC€&Ðh5-   †®–›UJ› ÉCNF4 SCALELO!M‚C&F$:À+ù¢D,Eþ.¤FwKh Ïvó(io_lib-1.14.6/tests/data/c1#pad2.sam0000644000031500020650000000101712473067332013655 00000000000000@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 * io_lib-1.14.6/tests/data/proc.info0000644000031500020650000000061712354177667013676 00000000000000Reading archive proc.srf. trace_name: test_run:4:133: + 593:417 ... 539:484 x10 trace_name: test_run:4:134: + 548:359 ... 529:256 x10 Reading srf null index block Reads: GOOD : 18 Reads: BAD : 2 Reads: TOTAL : 20 Chunk: BASE : 20 475 Chunk: CNF4 : 20 842 Mdata key: SCALE : 20 Chunk: SMP4 : 20 9467 Mdata key: OFFS : 20 Bases: A: 411 Bases: C: 296 Bases: G: 367 Bases: T: 406 Bases: TOTAL: 1480 io_lib-1.14.6/tests/data/c1#clip.sam0000644000031500020650000000052112354177667013770 00000000000000@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 ****** io_lib-1.14.6/tests/data/c1#pad3.sam0000644000031500020650000000123112473067374013662 00000000000000@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 io_lib-1.14.6/tests/data/ce#5b.sam0000644000031500020650000000355512473051144013424 00000000000000@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 RG:Z:UNKNOWN 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 RG:Z:UNKNOWN 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 RG:Z:UNKNOWN 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 RG:Z:UNKNOWN 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 RG:Z:UNKNOWN VI 0 CHROMOSOME_V 10 1 7S20M1D23M10I30M10S * 0 0 AGCCTAAGCCTAAGCCTAAGCCTAAGCTAAGCCTAAGCCTAAGCCTAAGCTTTTTTTTTTCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA * VI 256 CHROMOSOME_V 10 1 7S20M1D23M10I30M10S * 0 0 * * io_lib-1.14.6/tests/data/c1#bounds.sam0000644000031500020650000000022412354177667014333 00000000000000@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 ********** io_lib-1.14.6/tests/data/slx-C.fastq0000644000031500020650000000614012354177667014101 00000000000000@test_run:4:133:593:417 GTATAAGTCAAAGCACCTTTAGCGTTAAGGTACTGAATCTGTGCCGCGTTTCTTTGTTCCTGAGCATGGCACTA + IIIIIIIIIIIIIIIIIIIIIIIIIIIII:IIIIII?IIIIIIIIIIIIIIIIIIIIIIIII2IIIIII55@I, @test_run:4:133:587:382 GTTGAGTTCGATAATGGTGATATGTATGTTGACGGCCGGGGGAGCACATTGTAGCATTGTGCCAATTCATCCAT + IIIIIIIIIIIIIIIIIIIIIIIIIIIIII*IIIIIIIIIIIIIIIIIII,I7DIII-I7I+I @test_run:4:133:587:489 GTGTTCAACAGACCTATAAACATTCTGTGCCGCGTTTAGCGCAAGAGTAAACATAGTGCCATGCTCAGGAACAA + IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIICIIIIIIIIIIIIIIIIHIIIIII/ICII @test_run:4:133:511:464 GCAAATCACCAGAAGGCGGTTCCTGAATGAATGGGAATTCGTCTAAGAAGTTTAAGATTGCTGAGGGTCAGTGG + IIIIIIIIIIIIIIIIIIIIIIIIIIIIICIIII>;DIIIIIIIIIIIIIIIIIIIIIIIIIIBI3IIIIA9;B @test_run:4:133:561:484 GCCATAATTCAAACTTTTTTTCTGATAAGCTGGTTCTGCATTAACCGTCAAACTATCAAAATATAACGTTGACG + IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIEIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIA5G> @test_run:4:134:548:359 GAAAGATTGGTGTTTTCCATAATAGACGCAACGCGAGACTCAAAAAGAGATTGCTGGCATTCAGTCGGCGACTT + IIIIIIIIIIIIIIIIIIIIIIIIIIIIIII>IHI=IIIIIIIIIIIIIIIIIIIIICIIIIIIFHI>FG1895 @test_run:4:134:594:276 GCCTTCTGGTGATTTGCAAGAACGCGTACTTATTCGCAACCTGACTATTCCACTGCAACAACTGAACGGACTGG + IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII2+IIIIIIIIIIIIIIIIIIIIAIIIIIIIIGI3IIHIIA @test_run:4:134:369:182 GGTAGAGATTCTCTTGTTGACATTTTAAAAGAGCGTGTCTGGAAACGTACGGATTGTTCAGTAACTTGACTCAT + IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIAIIIHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII9>I @test_run:4:134:354:230 GATCGGAAGAGCGGTTCAGCAGGAATGCCGAGACCCCGCTCTACGCGATTTCATAGTGGAGGCGTGCGGCGATC + IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII,IIIH(II.I5=IIIII*EIII(II$&I&I1I*III: @test_run:4:134:614:269 GATTAAGCTCATTAGGGTTAGCCTCGGTACGGTCAGGCGCTTTTCTTGGCACGATTAACCCTGATACCAATAAA + IIIIIIIIIIIIIBIIIIIIIIII0G6I8II@C$%I.IIIIIIIIEII=IIIIIIIIIIIIIIFII;IIHIIHI @test_run:4:134:368:209 GATTTGGTCATTGGTAAAATACTGACCAGCCGTTTGATTATCAACAGAAGGAGTCTACTGCTCGCGTTGCGTCT + IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII>0IIIIIIIIIIIIIIIII1IIIIIIIIIIIIIIIIC=I @test_run:4:134:621:345 GTTCAACAGACCTATAAACATTCTGTGCCGCGTTTCTGCACCTTTAGCGTTAAGGTACTGAATCTCTTTAGTCG + IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIGIIID @test_run:4:134:538:358 GGTAGCTTTAAGCGGCTCACCTTTAGCATCAACAGGCTAGCTTGCAAAATACGTGGCCTTATGGTTACAGTATG + IIIIIIIIIIIIIIIIIIIIIIIIIIHIIEI:F>;I?IIIIIIIIIIIIIIIIIIIIIIIIIIIIII4>B>:I8 @test_run:4:134:557:250 GATATTTCTGATGAGTCGAAAAATTATCTTGATAAAGAGGATAGGTCGAATTTTCTCATTTTCCGCCAGCAGTC + IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII=IIIIIIIIIIIIIIIIIIIIIIIIIII?IIEEI4C:B @test_run:4:134:529:256 GTCAGAAAATCGAAATCATCTTCGGTTAAATCCAAAATTCAGGCTTCTGCCGTTTTGGATTTAACCGAAGATGA + IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII>IIIIIIIIIIIIIIIIIIIIIIIEDIIIIIIC8I4I14 io_lib-1.14.6/tests/data/ce#tag_padded.sam0000644000031500020650000000326312473051223015164 00000000000000@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 RG:Z:UNKNOWN PT:Z:27;29;+;STOP;Note=tag1 II.14978392 16 CHROMOSOME_I 2 1 27M1D73M * 0 0 CCTAGCCCTAACCCTAACCCTAACCCTAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA #############################@B?8B?BA@@DDBCDDCBC@CDCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC RG:Z:UNKNOWN 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 RG:Z:UNKNOWN PT:Z:1;1;+;COMM|101;101;+;COMM IV 16 CHROMOSOME_I 2 1 27M1D73M * 0 0 CCTAGCCCTAACCCTAACCCTAACCCTAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA #############################@B?8B?BA@@DDBCDDCBC@CDCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC RG:Z:UNKNOWN V 0 CHROMOSOME_I 2 1 27M1D73M * 0 0 CCTAGCCCTAACCCTAACCCTAACCCTAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA #############################@B?8B?BA@@DDBCDDCBC@CDCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC RG:Z:UNKNOWN * 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 io_lib-1.14.6/tests/data/ce.fa.fai0000644000031500020650000000034612354177667013512 00000000000000CHROMOSOME_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 io_lib-1.14.6/tests/data/proc.srf.indexed0000644000031500020650000027427612354177667015172 00000000000000SSRF1.3ZBustard1.9.5H¤ Etest_run:4:133:®ZTR  HUFF€€1 ƒfôÀþµ,HUFFg‚à‚œ ÐMXÑETùcåÍô0¹ÿm28[AˆêÃýÿï;Jã’2Ú(ÙB8QAêÿá›8àAfk°ÌÀR‚@Ðÿ>buš%Å&@¬HUFF…À ëHUFF—`m¹QÕ¯ì%FAä&‚  ¨Á˜Ôn“´ÛÙë̾tÏΜÿs ÍÔÏsþÜ÷}73rÛsÛa#OVjlµ¢”³e1ÒÁÛ²^{IÅ"„L,•<Úä¨V++m©IÆÚ,¦ƒjz›‚¨«¦±ãý˜yofv½NR¢¨”Òr Äqáÿÿ(`¦>¬ÍçÑ6›æWd´˜‘Ò5éx£l~ÃÌ·¤a›¦0âvšâÎf(éŽÒv*ºòrT·Ï$mµºšŽ’çÐèP ÅD¼î~ïuÏ܇  ¢*¦LÊÿÿ°T€™ú&ŸfÃÌ¿O‰ÃÍlh3DlŽ0}6É=k!ĨókÖ˜Oò/ke8]e(6—¥š>Ò¬PŠ®¥tIj–Ï[!:´-GNQïÅ{$K}NwKò5žd'Ũ…ÀÂ#UÿÿMT€™ú²VDãq6Fb˜1ÌF ㊔Ï>æW2"”ò[¤Hå7ó͸|FÈî6Éw3ýpG*-)ŸÃúè¨ájÂHQBPOS,  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHITEXT áPROGRAM_IDillumina2srf v1.12ILLUMINA_GA_MATRIX_FWD# Auto-generated frequency response matrix > A > C > G > T 0.85 0.13 -0.02 -0.02 0.86 0.94 -0.00 -0.01 -0.01 -0.01 1.22 0.02 0.00 -0.00 0.81 1.22 ILLUMINA_GA_PHASING_FWD 0.004400 0.003000 ILLUMINA_GA_CHASTITY0.600000ILLUMINA_GA_BUSTARD_PARAMS 1 4 2 1 1 37 1 1 4 39 1 38 74 2 1 4 1 0 1 37 1 1 4 38 0 38 74 2 0 1 gzip .gz 0 0 0 1 37 /staging/IL9/analysis/080813_IL9_1213 38 74 /staging/IL9/analysis/080818_IL9_1232 HWI-EAS130 1 -1 -1 1 37 /staging/IL9/analysis/080813_IL9_1213 38 74 /staging/IL9/analysis/080818_IL9_1232 /staging/IL9/analysis/080813_IL9_1213 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 s s s s s s s s ILLUMINA_GA_FIRECREST_PARAMS 1 0 /staging/IL9/analysis/080813_IL9_1213/Data/default_offsets.txt 2.700000 /staging/IL9/analysis/Instruments/HWI-EAS130/default_offsets.txt /staging/IL9/analysis/Instruments/HWI-EAS130/default_offsets.txt 1.500000 4.000000 1 1 gzip .gz 0 0 1 37 /staging/IL9/analysis/080813_IL9_1213 HWI-EAS130 1 -1 -1 1 36 /staging/IL9/analysis/080813_IL9_1213 /staging/IL9/analysis/080813_IL9_1213 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 s_[12345678]_[0-9][0-9][02468]1 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 C2.1,C3.1,C4.1,C5.1,C6.1,C7.1,C8.1,C9.1,C10.1,C11.1,C12.1,C13.1,C14.1,C15.1,C16.1,C17.1,C18.1,C19.1,C20.1,C21.1,C22.1,C23.1,C24.1,C25.1,C26.1,C27.1,C28.1,C29.1,C30.1,C31.1,C32.1,C33.1,C34.1,C35.1,C36.1,C37.1 1 0 /staging/IL9/analysis/080813_IL9_1213/Data/default_offsets.txt 2.700000 /staging/IL9/analysis/080813_IL9_1213/Data/default_offsets.txt 1.500000 4.000000 1 1 gzip .gz 0 0 1 37 /staging/IL9/analysis/080813_IL9_1213 HWI-EAS130 1 -1 -1 1 36 /staging/IL9/analysis/080813_IL9_1213 /staging/IL9/analysis/080813_IL9_1213 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 s_[12345678]_[0-9][0-9][02468]1 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 C2.1,C3.1,C4.1,C5.1,C6.1,C7.1,C8.1,C9.1,C10.1,C11.1,C12.1,C13.1,C14.1,C15.1,C16.1,C17.1,C18.1,C19.1,C20.1,C21.1,C22.1,C23.1,C24.1,C25.1,C26.1,C27.1,C28.1,C29.1,C30.1,C31.1,C32.1,C33.1,C34.1,C35.1,C36.1,C37.1 1 0 /staging/IL9/analysis/080813_IL9_1213/Data/default_offsets.txt 2.700000 /staging/IL9/analysis/080813_IL9_1213/Data/default_offsets.txt 1.500000 4.000000 1 1 gzip .gz 0 0 1 37 /staging/IL9/analysis/080813_IL9_1213 38 74 /staging/IL9/analysis/080818_IL9_1232 HWI-EAS130 1 -1 -1 1 36 /staging/IL9/analysis/080813_IL9_1213 37 72 /staging/IL9/analysis/080818_IL9_1232 /staging/IL9/analysis/080813_IL9_1213 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 s s s s s s s s C2.1,C3.1,C4.1,C5.1,C6.1,C7.1,C8.1,C9.1,C10.1,C11.1,C12.1,C13.1,C14.1,C15.1,C16.1,C17.1,C18.1,C19.1,C20.1,C21.1,C22.1,C23.1,C24.1,C25.1,C26.1,C27.1,C28.1,C29.1,C30.1,C31.1,C32.1,C33.1,C34.1,C35.1,C36.1,C37.1 1 0 /staging/IL9/analysis/080813_IL9_1213/Data/default_offsets.txt 2.700000 /staging/IL9/analysis/080813_IL9_1213/Data/default_offsets.txt 1.500000 4.000000 0 1 gzip .gz 0 0 0 1 37 /staging/IL9/analysis/080813_IL9_1213 HWI-EAS130 1 -1 -1 1 37 /staging/IL9/analysis/080813_IL9_1213 /staging/IL9/analysis/080813_IL9_1213 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 s_[12345678]_[0-9][0-9][02468]1 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 C1.1,C2.1,C3.1,C4.1,C5.1,C6.1,C7.1,C8.1,C9.1,C10.1,C11.1,C12.1,C13.1,C14.1,C15.1,C16.1,C17.1,C18.1,C19.1,C20.1,C21.1,C22.1,C23.1,C24.1,C25.1,C26.1,C27.1,C28.1,C29.1,C30.1,C31.1,C32.1,C33.1,C34.1,C35.1,C36.1,C37.1 1 0 /staging/IL9/analysis/080813_IL9_1213/Data/default_offsets.txt 2.700000 /staging/IL9/analysis/080813_IL9_1213/Data/default_offsets.txt 1.500000 4.000000 0 1 gzip .gz 0 0 0 1 37 /staging/IL9/analysis/080813_IL9_1213 38 74 /staging/IL9/analysis/080818_IL9_1232 HWI-EAS130 1 -1 -1 1 37 /staging/IL9/analysis/080813_IL9_1213 38 74 /staging/IL9/analysis/080818_IL9_1232 /staging/IL9/analysis/080813_IL9_1213 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 s s s s s s s s C1.1,C2.1,C3.1,C4.1,C5.1,C6.1,C7.1,C8.1,C9.1,C10.1,C11.1,C12.1,C13.1,C14.1,C15.1,C16.1,C17.1,C18.1,C19.1,C20.1,C21.1,C22.1,C23.1,C24.1,C25.1,C26.1,C27.1,C28.1,C29.1,C30.1,C31.1,C32.1,C33.1,C34.1,C35.1,C36.1,C37.1 SMP4 OFFS4074RH593:417ßM°°ðÍ")¯¯GÚÈJªËa,\ÁOS|©4 |žšæUb¦œn$R5~¾(MÛùkÔ ÕF=V,•ÃÈ qNäå¯Qú¹ë">ôzTª tø dªVI¨‚GB€è¾j9#/{nä;±Ï}<ƒcMK¬¬xœ`ákç§°ï@Y”6ˆj„^`£+aå»/[zœËÛ˜?¦4]ÍÅ—|OÚÖÔX¦w+kõÔ m#òS+ÆX¹)“œpZwÒ×Z×ÇΠ¢°….%;½ÜÉÌ1;7ì/°‡¥í7/‹ ºíV{ÛÂSÂtx6“ÛºÏSÄ:-õýà¼|!Ù˜‘§ÞñÁsŠ£õ3ÃØþm-nÑZ:CŸJl…þ¡Û$bVû'Z—Áö;š4DZ ²­×Ù½õx÷ó£jtm៵ºJZÏ[S[¤W««½ÚµQ¹¡2°Ö s$¹·v·PéÜônדšÐÎMËŸk§ôªw®@EÚÝ|hñÖöqìu{’”ƒ=tîžvÉìêàX}ßPH…>cé²vÈÓõ+i¯¾— É0OÔùlÍÎfþ¤ä©OPãC¡ºq˜Ý6(%ö¤æX¨dIDeæ\8ŠÁN˜çÐÐ6Ñg‰2k!0ü ×µCe$ HíP­ù•? 9Ü@—Á0Y‚½TïŸhVJ-®J­ü×;™X²†…eç}ª?·ê¯Ýt§Žã‘—®úR ꑤּtøÛQæ¯Z3Ìû‚9<bœi¢•aD]´ùY¹”8K¸qkLjüBASEM€g‰5 Ò$2²dº©Šc”á(sƒmôCNF4 SCALELO7M‚ À ö™þÀİqö”&Y(à 84 pìüÞ0¸®i³„VÓó9f-ÈR[505:428ÞM°°ð’¼À& ¹Ë:zÖÝsÕó“W]¶½Z²›¢ER½§™«¯Á@½›…”¥fbfo1¹¥÷î¶9LZ¯ºÞ 0ïM±u ŽwqT†¯ð§$Õ!–~’ ëš·ÒËV]³Þêq…ê'§ž§š±šÑ— RÔ¬@6'&½¶Ôw‘´²âÓ²:ÍW³&Ú—@ ¯z˜3q_¯`ØÆß#›MÄóÈ©VÌI-W ÚO<‡Ä™¼¶Â”ܾ(‡æI2ë‹0mëY„ûYéœS91*Ä6Ÿ2~ÝQýâ%´"éêrÙ‹Úm6Q»ØMâÇD„t_®·9Ù ³©ù=Í74“ÅRÿJ[2 ăÌ'>J¼×‡NkÚTÆ ÄôêŠCzØ\ ZüðXÛVÖÊ×Unê0¼qý×üÆÇ…2ÐH)¸é}W¼Êäjk1J®˜èñ°Î‰ÑÑ6FE¹¯C°AŒow£¾Þ1ÑtÉ’bÞ픡Y€sTL¸zz`‰‰XÙ¯ÏüšPÝh¢åÅ%§©¯µ2¶ ;‚ÂÄ­|Y4ªHZpþ ’#ž·à¤T²b8aËìR‘"ùè”ÄK’2.í¤mÚØyÊhÀUûós¡³Ú ÷OQ¤;°ÎwÃÃës4-«5‘Æš BASEM€§¥¬4ØrsI€2Èáp Acb´ÕCNF4 SCALELO4M‚ €`× ÅG'Ò`jÝæ ¶^»ži¦ƒ*Š|€z;]ç>Nm€ R&548:808ËM°°pää+^W×7ìц½14÷z;Ì&º¬G&Ûó ÷"%kÎ@„O «…ž}ï'€“6¶æ]ÙÅ€X594:`œX·Ûlx¼™ M ¢9°ÐíˆÎ&Œo(lÚi–ÙY×z…‚ãLùMï˜Xe²é¦(jJ BxpÙ†Œ{Q J†X~—(e‹”µbŽÉ°ËÙ‹?6^-çM¨ì}†¸2B åã®\)AµðË2êÚ ŠÒñ„ÇCͤtŠðOy¹Ô`šXyþ×ÔA"Ùd0êHFqÂÁCNF4 SCALELOM‚ ÀŽy*þ¨A eRs568:418æM°°pIcZYêŸÅ7ýŠñÔžB–´¨V'ùZ9“OÓ<;3»M¨ŒÈâ©>ZB¸O*å_‘à˜ÆûrÏÚ-§èÛ˜qà7ôž·×X÷4—ä©6®‹|LúbU2ò(˜èÂêÅ×ñ^+‚à+v»2ì©Óráó7WÎI¶€ÝÁ’tÂîlœ•П§Q’[Å'ôÒ犾â.E-o¿¾ÃÝìä3psRpÓÞëmóóóžKß½¸ž{_£à«\ôm^,ó…w*:ýh’”{óNíKóÊ ­îÕûÇ‘$?°Mû~4ÁRdgc"3ªEöø=%]FWp¸w W˜áA RzZì¹÷[ëÜY:Wv4Ž$¨‘¬÷ÌLÛ›£#ªF¨ÛO€Ø›GÎ[ TT;Kìüp1ˆÞ e–`v0Sª<{¹À« C¨²Ø%žÖıšWÚþí˜Áéò­‚çs"­ky\QS¹ë"ZÔ•=ÓR̆r{š¢óÆgö²ËØ’vlÞ@š¦¿“aLÑ¥p…-‹ \ ξÊmúØœåó?D2N•w‚³x·”õ¢ !¨øLåúñ]Љ!YëFMËÒ I› ™Žß×­N%6 ¯ÌtìáÊÎ¬Ž•PQ”8°TdÞäUú£ÂYâBÌAÈ Gßà'4^{7BASEM€gÛVS¦-Â,*]®–ÌšIbe´ìCNF4 SCALELODM‚ @‹V€ óNõôü§·¸Ã: ½·Õ«±‰´àÊ©vÍúª²­X,dn¨Ÿ_ˆ" šCž*6R6587:489ÕM°°p×Ôûíð8­:ßÛ¶ê9&ð`ThQˆAºUÃܧFJ!7/š0*¶ç.Âm‚C …òj©2…[¸—‚nI®½Ó·¹á0™GÊB µ![•ê.‘…™HVT_g€#/ï¿,œÈy¡^Q·êù+È"UÁ é*)q'ÅîÙ&Lú¨Ûòr-¯EÛÍåˆÆìEÑ'å?ÑN¼h«‚I8V¶'®ÜøV«¼?ž–þ„¥Vùì&7£¾¸öÇ­b8ûüôÙI±²H«îÁ§³ÈOîºæPÆj}6÷šzÄ`mö²SvD0â$ð÷¡czÓ}Ó©À {ƒTw„æšä‹d³.™ô:ý5hè®;—U}ŠÞÒr1Ûº:Nѽç9‘Œ¹4‡cOFÉÉ]‚Àéš´j¥2/žj ’G’÷ñn‹Lï(ÞõÌ9×ÉÌs4CÂ'ïÂü— Ó“(ã÷©¾ú]Ä1\Üø<µjJ¯EßHymgã¡fmèCä•@–ÅIGK鯚•ì¼Bæ€ žâE&“:¬/ÃMhS òj³(˜º0º…¼ûÔÚK%›Ä9É¡YqÕÌ“ŽeÌ–(¦üS]ÎBASEM€gÖ`È£–¹9+œ1`„¹‘k( CNF4 SCALELOM‚ À?Þ-´8(Ú;à@RA511:464ÖM°°p„’yƒôõ8u èWÔB4øÌ’+ærñãâ`pl¤Äeû×µd8ƒO_N™!`BäœCó˜|fØõ µ§­ ¬@Þðo•î|3õ†› ÿ ¤c'Büœ …<$ÓcH¿D Ä _¿BG¿OˆEd†1’àÇ‚€nó*Êã†;*MíQà°KÇÚ>ÒÉЄÁãsê¶ß¢äÏYc–•$cу:ç¾±"çù1®ó´2Hå6“µÿbYšª‰¦ÉëýÞb^É­¤IáÓ*TRƒ¨ÛºE¿ïö•]¿rv‡Q*liÐ÷“`þÔvXq®x?×?8#¯V¡ì¶Œ4·²´m´’¦ciØB™ ‘JU3/{—ÔVVÃè§õ$r£ù11IÖÖó[*Ère=­UyJåÚŸ($5ã‡-1å)œº ÉÞÐŒ°ÝRR.Ë# T÷ø„MéŽnRž=Û‚Z ýk­4+ˆ‚CÚÁO°j$%FßxDªfÉ*i]œþ‹Õ¨(•l Í¹/Ùÿ$é7¢*¾=²44RtþajÔÙ‡¨Ö^ÜD|©€c+%“‰Á`x"u.ží´4”'óŠY—©ÚNÙ©ˆ=aBASEM€ç€Æ† ÓÚR¡f +r‰Ú0}CNF4 SCALELO#M‚ ÀŒw  yÊÄöpç€E õzžvº RŽ507:435íM°°pM#±Àbl&ñ9îš}™Ý"Àíþ "£âÒù¢.ªm‚Ú`Û°Wo‹ÍIŸµ×/ ÊA1 ~uúüÄöA[Í´‹£›ÂÇHÓ‚Ó~i™ —”ÿT]GFµ”·Rý ªWèXbË»Nþ#s(Y¢ðsÝõ‡SàõUo»ròbŤÑ9q¿àyÏg•D!¼°mf¼i)Í ‹?æc³Î·Ñ¿xºÊ_¤Ñ½ßñÑüúRƒ,—6¼go‹²{ RáIŽw~c1Wü÷ÇÜJ—žÛõÒº,øa}w&ïÔñ/þp/—Å™7Dë Üv˜ãP«QŠ1ÈÀ¯|ú[’F¨êZÒåý¡^ û8ëW’¶#…P•g™-S@O=™–ß_bм·<)•ÜPÏÜ$Ö ¯ÿY¹„óøajÆRÓt2_9R;bä¡Ç]µ«ÅM¯¢™,§µ“ÐïšÍMÄÿ…÷Ë-æBô Ò ’ësÿ×~øa:Ç…×”!á·TŽ)È¿·MJu !Ê¢œ)±”µ›„‚ÂÝïÍVûliâßûR Ö“'¼ªè\3 /µg÷ÖÀeñÖšLyúÐî—>ùÛƒç7Ãy±Ègwo* Ðu1Û&Ê yž ˆ5„­7BASEM€'‘ŒEÈ`sc’ª¨˜cà 1§XÎCNF4 SCALELOXM‚ @‰ÐÀ ÷ I¿€ ûƒ+˜Í@õÂñheÕËðØ&/Þ»›ìT­¬Q xx¨YÁ·‹;7, ¯‹/ –‘’1± ¸¥Ž#ãõÀÇ/ÈR8561:484ÚM°°pÕS2þ®oG%Œãùô}†4Ó‚£ù°Çn}w5Kx Ìb6àçâùò×NŸ 9$o©~9ƒPu+†ˆ ʾÆ9‡LãÒ£ñ¹%/î·§Px,36ʽiHèþŸæ¦ÊcL}'† QøÙ:ÊŽ˜ÿoµÊ‚Sð7¤%Ö]|økën©­¤%¡ÕðlðžÛ¬ÏÜ/QŸ¸™·æî@÷ùÇö݄ƿ݆y Ë+øì—E;ÞëÊ øŽ[ŒnÂß·G9­í ép9Üåa.”Çwß±óJ\(¼ñþŒÆ’øe&ZÅä|°ˆßÁXš¢>d£Ú5ô‰Ä|”nã ŽiÒ¼d!sâ⹟ öíܰ1ã’}?in8Näဿe{Þ‰"RI7ßÂAÏÐÊDVMX:â«Ò<ýBšIfiô)™S"0"ã˜'X,¹j1þ§(hW‰=Žï=¡å²j¤²®ûn>´TÕ1xʽuM3’‚±B°óèí‡êžž,xmµ„°¨/Jµâ«Ïûû ‘cÙª_wÕ¸W—}¡W0¿“NM—ÑZp‰N€à›<@Õâà&»˜bÕîIÍa‚FqÍÕÏx9’'8ÿÅšDÎñBASEM€çFPVU- \ZËQ°Ù€Eˆ`–ÌCNF4 SCALELOM‚ ÀŠ ÔoN_ª…œR¾539:484M°°p5¶™šö¾r¡}:šVåö˜Ñ¹ªßszÇoÿ6 ¢§6ûþkü¼–è ÷f‹ªlé Ìøs¼¶D•§Ûÿý‡« PžöhQ†^ož;¥ô§æ½Wc©›>ü'÷ËDûJb¾ôAÄÔY€°ßæÜ˜zþ×ò+RMGòÇù¿ëûQ'ÎzEEÚÑÐÁÿ`v ±÷Þ]<ÀÐÛÈKWµ}öþ‰x'™Öé{u`ʾ;‹O´ÜñˆdT}9©ùù¹pbß—²\…y;XˆÕ‡‹Ä,>,É·ãé/_1n÷~ÔAþ[Ùíë6lŽªþ[ßœj¿W0.éÀæ–Ù¢)GڸќùYñ¢«8Àþf üGü}Ê—â ø‡†¢¿>¹óâ#»ôü›3Z£WòoêoÊÅ)eÑýÞ¦ºEÙÓÄoÖž‰ÉÔQŸìˆàŸ3O‡¿‡Ÿsûí|¢YáÃRSN÷× XÂ/–Ÿ+ ¬/Qçn\<àó¯ü¯7 ë{ªÇ+zb«.êòàc¿•°5æeµ=Ìí&ëé=Û[C4ËÚb 8á}Á‚¿ÈoÔ´ÞÎQ¶BASEM€g0]…Õ0AØDçÆ*(A0À1€CNF4 SCALELOuM‚ €`œ1¼Î<Í J‡Ž;ÑÊ_­”‚TlÔ± øœð”CŠì0¿ÔÝŸvw×\¼ýšÛo.?¯É©– œ 8`²@à ÆNžn€§ìã ‚Ây߆)3,HE€˜x^hX@H¤Etest_run:4:134:®ZTR  HUFF€€1 ƒfôÀþµ,HUFFc‚p€› °Ì†˜9' â(¹ìýÿo¼«0Pu¸ÿÿ}'jPˆÏAˆS—R ^2€Þÿ†O%ÑoÓ.12ÃÀY Â0йÿ _ʤK­R,. ¿HUFF…À ëHUFF‚—`,¹MÝI:ÓºŽ1H $¡± 1ª'éòûfÞýOÀ@˜©/æs(»BÇ|6ñ çÏdtN>í˜o3œü2\b8YzÖš±.k µF¥‰bcxvî¤VSôŸ9íäRÊvÛb € v¢=È™!¹’œ4q‡ýÿï+ ÌÔÊo˜aŒCŽcçß|ÆbÍÎßæïÌ·9‹¦q‰¬ùå×òëŽu)”0”ÿ³i'69Iµä›¶Ögk£QŠVãb ¡ø¼»’fF’}¹&”’”´…¾åÿ­`˜ÉðwŽó¶(ÆÊܘ×âX7ye4ÃFmㆰ CòrØ•ÙrÜÌa‘+¢8·»µ£’¤W“¨ÝÈ]Æ0E7ý-7ÊvÇa 1 Û’XU¤DÙ¹:sô6°/ûÿ?·€4SæX–öÜÉ#æ‘»Êh¼ÑzŽ‘Íùº¼bÑ£P™šY‡•£tL ­kfÙlQiKµ#Gy/­R,£Zü4=BPOS,  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHITEXT áPROGRAM_IDillumina2srf v1.12ILLUMINA_GA_MATRIX_FWD# Auto-generated frequency response matrix > A > C > G > T 0.85 0.13 -0.02 -0.02 0.86 0.94 -0.00 -0.01 -0.01 -0.01 1.22 0.02 0.00 -0.00 0.81 1.22 ILLUMINA_GA_PHASING_FWD 0.004400 0.003000 ILLUMINA_GA_CHASTITY0.600000ILLUMINA_GA_BUSTARD_PARAMS 1 4 2 1 1 37 1 1 4 39 1 38 74 2 1 4 1 0 1 37 1 1 4 38 0 38 74 2 0 1 gzip .gz 0 0 0 1 37 /staging/IL9/analysis/080813_IL9_1213 38 74 /staging/IL9/analysis/080818_IL9_1232 HWI-EAS130 1 -1 -1 1 37 /staging/IL9/analysis/080813_IL9_1213 38 74 /staging/IL9/analysis/080818_IL9_1232 /staging/IL9/analysis/080813_IL9_1213 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 s s s s s s s s ILLUMINA_GA_FIRECREST_PARAMS 1 0 /staging/IL9/analysis/080813_IL9_1213/Data/default_offsets.txt 2.700000 /staging/IL9/analysis/Instruments/HWI-EAS130/default_offsets.txt /staging/IL9/analysis/Instruments/HWI-EAS130/default_offsets.txt 1.500000 4.000000 1 1 gzip .gz 0 0 1 37 /staging/IL9/analysis/080813_IL9_1213 HWI-EAS130 1 -1 -1 1 36 /staging/IL9/analysis/080813_IL9_1213 /staging/IL9/analysis/080813_IL9_1213 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 s_[12345678]_[0-9][0-9][02468]1 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 C2.1,C3.1,C4.1,C5.1,C6.1,C7.1,C8.1,C9.1,C10.1,C11.1,C12.1,C13.1,C14.1,C15.1,C16.1,C17.1,C18.1,C19.1,C20.1,C21.1,C22.1,C23.1,C24.1,C25.1,C26.1,C27.1,C28.1,C29.1,C30.1,C31.1,C32.1,C33.1,C34.1,C35.1,C36.1,C37.1 1 0 /staging/IL9/analysis/080813_IL9_1213/Data/default_offsets.txt 2.700000 /staging/IL9/analysis/080813_IL9_1213/Data/default_offsets.txt 1.500000 4.000000 1 1 gzip .gz 0 0 1 37 /staging/IL9/analysis/080813_IL9_1213 HWI-EAS130 1 -1 -1 1 36 /staging/IL9/analysis/080813_IL9_1213 /staging/IL9/analysis/080813_IL9_1213 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 s_[12345678]_[0-9][0-9][02468]1 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 C2.1,C3.1,C4.1,C5.1,C6.1,C7.1,C8.1,C9.1,C10.1,C11.1,C12.1,C13.1,C14.1,C15.1,C16.1,C17.1,C18.1,C19.1,C20.1,C21.1,C22.1,C23.1,C24.1,C25.1,C26.1,C27.1,C28.1,C29.1,C30.1,C31.1,C32.1,C33.1,C34.1,C35.1,C36.1,C37.1 1 0 /staging/IL9/analysis/080813_IL9_1213/Data/default_offsets.txt 2.700000 /staging/IL9/analysis/080813_IL9_1213/Data/default_offsets.txt 1.500000 4.000000 1 1 gzip .gz 0 0 1 37 /staging/IL9/analysis/080813_IL9_1213 38 74 /staging/IL9/analysis/080818_IL9_1232 HWI-EAS130 1 -1 -1 1 36 /staging/IL9/analysis/080813_IL9_1213 37 72 /staging/IL9/analysis/080818_IL9_1232 /staging/IL9/analysis/080813_IL9_1213 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 s s s s s s s s C2.1,C3.1,C4.1,C5.1,C6.1,C7.1,C8.1,C9.1,C10.1,C11.1,C12.1,C13.1,C14.1,C15.1,C16.1,C17.1,C18.1,C19.1,C20.1,C21.1,C22.1,C23.1,C24.1,C25.1,C26.1,C27.1,C28.1,C29.1,C30.1,C31.1,C32.1,C33.1,C34.1,C35.1,C36.1,C37.1 1 0 /staging/IL9/analysis/080813_IL9_1213/Data/default_offsets.txt 2.700000 /staging/IL9/analysis/080813_IL9_1213/Data/default_offsets.txt 1.500000 4.000000 0 1 gzip .gz 0 0 0 1 37 /staging/IL9/analysis/080813_IL9_1213 HWI-EAS130 1 -1 -1 1 37 /staging/IL9/analysis/080813_IL9_1213 /staging/IL9/analysis/080813_IL9_1213 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 s_[12345678]_[0-9][0-9][02468]1 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 C1.1,C2.1,C3.1,C4.1,C5.1,C6.1,C7.1,C8.1,C9.1,C10.1,C11.1,C12.1,C13.1,C14.1,C15.1,C16.1,C17.1,C18.1,C19.1,C20.1,C21.1,C22.1,C23.1,C24.1,C25.1,C26.1,C27.1,C28.1,C29.1,C30.1,C31.1,C32.1,C33.1,C34.1,C35.1,C36.1,C37.1 1 0 /staging/IL9/analysis/080813_IL9_1213/Data/default_offsets.txt 2.700000 /staging/IL9/analysis/080813_IL9_1213/Data/default_offsets.txt 1.500000 4.000000 0 1 gzip .gz 0 0 0 1 37 /staging/IL9/analysis/080813_IL9_1213 38 74 /staging/IL9/analysis/080818_IL9_1232 HWI-EAS130 1 -1 -1 1 37 /staging/IL9/analysis/080813_IL9_1213 38 74 /staging/IL9/analysis/080818_IL9_1232 /staging/IL9/analysis/080813_IL9_1213 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 s s s s s s s s C1.1,C2.1,C3.1,C4.1,C5.1,C6.1,C7.1,C8.1,C9.1,C10.1,C11.1,C12.1,C13.1,C14.1,C15.1,C16.1,C17.1,C18.1,C19.1,C20.1,C21.1,C22.1,C23.1,C24.1,C25.1,C26.1,C27.1,C28.1,C29.1,C30.1,C31.1,C32.1,C33.1,C34.1,C35.1,C36.1,C37.1 SMP4 OFFS4171R?548:359ÎM€lÀàïP ´·êiQmFW¦Ö (T?]óJpa÷ !ç¨ U#uàMðèÆç(Âê>¢ ¾0IÔÕÜô!f™þÁñô ÿa¬nzªšÐjÞ€Õ bö'÷W˜jGí,Ö§þkŽF²†{º´ƒFYÙ(xËT/µþä¿-!ÆJ˜ôl,¡*ÚÇq C}øë˜‡˜ÙBßKf<æBö…l;Î-ßMž¦.gÃÊ<9CùŒïßÉ[é>¡5~Úõ‘†[ØŠÊuÜŸÍõì„.·ÏŒè¾«œu¾ðë´Y+Ü˽BFT'œÖ&[^È7+Ï!3ŒËAóÚ  G¬¾;Ëß@Kò`3¶}B³ÑQ§¸Ho[‘´˜Ú±d~U{N¹õ«eÛóEØX/Àq·-²Ît[’b"›ç0}´Æ$²êkà`Ø×>9±íM­ÇP*¥jxÓ\ÌØsl%[>žfg‚ÃG^×ÔH«@øÀ=…F7Hf­ôX&mحД0E†—cÊ¿û@æEfB}àÂ¥)ÓÍÎkÊ{p;3—~ø%ëÅ_¤[Š÷ ¶)$ Mq‘ýÅénBÒn/®øQjã%ÞÂsߟ'¥èÈ<BASEM€' ¥Yµ„ÌÁœÈ"åÒQæ“ÕCNF4 SCALELO(M‚C&v Uh±Ì @Ä&Ú‰¾1½™šntG½<Ê\oÖ\RB594:276ÛM€lÀàéDSèöã µ²„6¡[ù|ß¿°O!®ï°õðK¶õn _7Ò¿Ìו(nâ%e˜¡ddíµ†~Úœ‘hIXþÙãíùTçn*F·ëãï·R7•ÕB–ÕpØ_ÿíÕŒDåÞJàéì}"Ovxé¸ÛY™`|G YÆÛ£lYÆÀNìD=óÇ’\én­,loT%·% ?Šúq[š& m@€åD¤òö4M‹ˆ×;»Fú þÔfs žÛµýÒZÝg{<Ó3Ó›¯w¶È–žç†É>³ ãÊðÕÁQU•srôÿ3l=Q™!Ý û“¯Á™ñêÊêdm{»èàô7y<¦w(ÖÆc‚¼ê(îÁwd“záWÃ;"›¥ÎŽJô Ön¤1x8ÉÍÉeò…} ómD­vµŒ{N€_‰Êpyyçv¦ÔtN\kÓ&´[•-r9ÈK]luz×Hh´Š£§•Ùº{ø2 Ô½365#ÝGBÄZ»†‚g§+,áèh"‘Œˆn¶ÉÊSF¢ovD¨ã –¡áGÌ úbÙÅdݰ88ØF£»¿Jkš…hLÊíèç"ôæ"•ó6W‘~T¬ñ€CržY™ÇØBASEM€çVK“Ê0g¬¨9Ø’Em,ƒ%LYúCNF4 SCALELOM‚C&&üìÎO¾WL+5Þ#påØ0±R 369:182ÄM€lÀà5 ë1‘%S^3ˆ:¯ ë ³²0~áQÚöãÃ(‹^¡ê4̉$æÈÇ;Ÿç!Ò"sçDаI¢€é‹)Rù@´OFà†¹@*“X¢µRË9¢ ¸ßg²˜Ê2å+ŸîÓ¬üȇ*¥rO“ Ô…îu0Å¥ß ‰ñlµ÷$ £Pñ8ÁG*]¨ì¥š—”·‡XÉ/èvª Kþ÷ž£9ÁKs™üdzLˆ±sž3,Y'±ÌàË„’Âýó9aO')Q=èLÉ÷:ñÕX4Uré¡TÖ¨ñ_n¨ÅÎ1/¹Wºaýo˜ÿ»_b—©ÑXñPÍò—B‚\&c7*H†Pàà1²°ìn=B('˜Þþdº`“Y…¾‰Œ–—ÆQHâǶ¡ÐzýÉo¬§˜;Ñ]ÞõT5EŠñB“ˆþ†Î»°GK¹ÐH¥Ì0…öËhŠ'a! d+ˆS–8¥8C«?¼S9Iü˜§_œt‘-:Uš~R?©ÏPàˆ»h@—µ·çâµ^<)8) ––Ò(w³øüÅ_§OàÎ+2P/Ò=f2j>cì´“¤à¹< ‘ÞtëBASEM€§!Rkeɨg¶˜1¥¬a°’5zCNF4 SCALELOM‚C&FL¬v À„·Ô€R[354:230àM€lÀ`[sÏ`ì>ÖÊ;üמ×GšˆŒšÛžp•×®Aˆv¢ŒÇw‡:Ä<²ÅµÚ®Ý›Æ>Þ­7™ ©óȱÂEîH(1xœ†aÏan[š¼˜aXu—ë@h‚-ש…?»G|âOž¥Ø­RËö…´ùàJ!–q$B9/r&wä¬@[áÉ&)#®¾ns™y‚’ÖìË5&(Þ•·-ɹœ˜b|Aë¶? .ÌDn¯í1àUE ”f]æR+ñ€f ¢QJÀd]® .¦m/BŒˆáB“øKÜXŠ{÷ùâòi|ŽÑbÞiÿ¨°åˆgN¦È•#]p:ýw•‡;å«Úâ¯æê†4ò_u 5.|üìøë¢¯“óÊ…ð³íTF"9ŸÍÕqCž[¾FI,Iõ>w®ãc'p<ÒµÚP¯ž$·èÕ9#ËüízBASEM€'MAœÖp(ä&²m®ÅœT#LÑ™ÓI{CNF4 SCALELO2M‚C&^89*ì”Úp¶ÁÍ2h8z¬$@…Ú†îàÑ š?@…ž½R_614:269ÜM€lÀà7qTý8¼*z”*訆èN§g”)õ`ÃÆÔ‹gh \òóWÈ6ŒÞùõñ°‹¦Ûß·@ Ç“#ÈœY³¢ïí|"œ´¥+“8ý>u'¿«x´C«—ŽÖý0ÆsL SZ›—M¼fñöò!ñ~ÃËo½…͇^s „Ú÷h³? Ï_âý~îyµÚ£ñ*sÆËªª:¹í`N×øóUÍÂQ £xøIèÆàt/пOžkÈ£äkð]È =¢º9$.öwn7+’uLôiJ¦,Í“ÍÅ¢[Þ‹[!¤wÊ‹ ø=ø°œÅ×¼ßÇ-=ò©àŒë‰<¤ZøÝË÷Ö@ì ×lk5_pŽõ–¡še›ì|­¥óE)æáØd\F;²ëuCWÑïpØõõök{CÈg¯à&{WºŠ€âD ÞhþyrêZè¨m(…M_ü¾Àš%wÙóS¤ß´i ò½Œïpƒ„VùÛä™’;³›.”qÓà¯Éa$³£aEå(3ãKqLå† ‚«€¬s‘š¨Žµœà0ŒìM2º *Åäú52Ø2.‘o®.¥ÌÚ¸“u |ÊæÛW‡Õ@ >:©r »B ØcÅF<÷)5ü^~”8þœ‹BASEM€'®Q¨…[Ó˜6t®j¥cR°-‰ CNF4 SCALELO:M‚C&N˜ޏ¼ò-¸s@wðǶÈÂ÷ü>~ÞpæPc• €/lÏÕØ° R9368:209ÚM€lÀ`SRi6~¸hê°‰qãÚnÿ¼>ÀÄÍ4ÌÕÏ&Hã{Ã:Ù8t™ˆnÚñmŸ°&Ê»}¹g™œNI¸92D<ý6€aº·ÝR×Ñxå;Ú=øu¤Wêéж¶h§öcÁìêSE7*?T=»û• .5“Á¼N¹ÛÝ¿g®µMíŒð&„jTsDõJ¢ %sdiÑë³mW•bÒ;ÂG*x¦ÂÔÊA!*H*ÇfÙ埢³\ƒ·{—o|pyŽˆ¼J4 %Ðkà ~ßY_Çî<žŸ¬i´Ê÷—;»x¼ìãOu†|Gúà}*I›W©z®©Fl­ãPXñÚVºÅ/Û¾ªj¬ìo»eÇ™tõ¯CCf“ºdf\zï¹1XçòàÙµz‹Ež0çºÿbqç)š¹ HUÁv[$™ÂQdk4I}{3ßç9®÷Õ9÷Üøl PÁpQÆw¬¨óµÿ¶zdÃ/‹¾c6(‰‡¾`V»¡Œ„W`óÜžUæ}Q/Ùü¨¢³…á! á²E(¸¼¨­Å„NK$VYu;uG9§Ëý$º¿ÎNW–±çžr=EÙ(MT~’‚L˜ÀŸ›¾%FÓ«ÞOžr}܇Uwê¿¥¾ð€x)Ím8BASEM€'•6Jˆ%nVR4‚b‹åš³œ­CNF4 SCALELOM‚C&f$ú…ÀMà ó@‡R)621:345ÒM€lÀàKÎqÝ’»«ïê°Æè¯ìÚÝõu¨ÿ^kÎPø.à AM™E´¡«³_bYêÝ.öiãb”æX¡zÌÅ®¿ºjG%lšæÜKpy¸vÇÜm¾1HÐÖ¦›“âNJuØyiɫۅX2Ê|8f¶wUçeWõ7”¢Ç} s ýÛbþ,‹­îÎ^Ö¶¡ óÛ ¥ÙõöÛ^ÛÐ$ø3é´OC¿sFO5?d®ÍL9x–6ŸåLÖO¹áË–±5=Ù£Ÿ$kÒoX=Žò»a{0ÿ1râÛskNæ©00û9¤,8üUÓ~¹y1i ^¨=Û ëʵ{hýè÷‰¶¾nÁ™AuˆbBÒ¿“Î 1h·€Y3_µ™Ñ}ðí¾µ(³#ak£%>Z3¨*QwhÀ³8†)È¿1µC¸XÃ>Ä+ŽÔƒò§­s Ÿ=ÚÄIkžÖO4ª'S$Q mY=õ²JLò0"%Ýø—õ»D79GgQ×'_3”Î¡ÄÆŠö¡çz6^ËÝ4)|ù‹4¶¢’,¸!?­`á’YL‘«œu´ä¹jÛºsO‚ GMÊÚ Whä<-ÝÚzäBASEM€g †l0j™›³ZŽ­ÂY ±„Ö*l>CNF4 SCALELOM‚C&þñ¨ð¢R@538:358ÑM€lÀà+ÛÏ¡óؽǔ£]Êg;<»¥—˜j¸”EÀÐ%jKŽ2Ö¸y#ðdÈkkÁßœåò›­W¹ gþ´—4†\úº¡/ANsƒžå3jQæ¡‹—Й´3ö”Ï1‡™›=ÝÕ‘*ž8@+¤‰éÝέEcÏVÆí:{h’NÊ´‹F ¨j·o’_?JæE½0Ø–|þNYHºÓYmŸîµ[a®°£Xºê|𳣿Šä--§¤7κ÷ªÖü€éuÂîlE=Þõ€[ó•‡Z§‘&XºPŸùªb½*zŽ+¿Ã»ÖO¸+b5â²ìa¶öÌ7F“¨érȞ߀ª¥„Ð-˦ÅÃPÙDr;âd¦Ÿ–ƒntÒáM;0l×m/R «ÍE:ýùi¾iGS¶UÖîxá’ºCµtTŠÿ<@å}jx0¼J 'L0T‚âÌl¬ #·^¦*¥1<,øIá¥`•¥&DRÁr²ÀAlV ÇHŸßðšÒ„'31{bÞ´s"ÍøÉtÐÁýrF=°•—ŠksîtüàbTÉš» À4Ll¦f`ež£ã-ë]h/ìQ92»®È‡æBASEM€§á*pºÆVáh0táÊÄL·"-†‘CNF4 SCALELO&M‚C&Ø)+ }µoH'WÙ´§#UmfIÊÒïtÜ R1557:250ÏM€lÀàSuڌ ] – î Ò,ã®G@'`ž )ŠÌ}F绀šøi °¾¢ j,(|’nÛLŽ¿o¦JcƒùÑ(â>†eÎý}ß /8m FâDÐêmždšêßú\fPZØŽ …µæö)Ra³‰X 9#jŽXXQ>~-K.S;”¤Øæj“–”a =÷™o,«’©ÊÄg'²Ik´Ù$9Åkáòb¿wΩ§§žaE(Ÿ²×Âô{=ž7$xà£,‘ÉÐë%|M&$ÅÔ¿”5å5Á²UûæLÃÅOÂãÐñ¡Dý~ßY}e±w¹”n ͧjõ¶×ÁøZS“´q³™Þ誴|¦Àlžnå÷Xr©“úÓÒ߬™âç]=û0¯€qÐ".~gžñÃ{á|¶‘;­õi±¡TzaG`gOšÆÏB±^zK§ñðPš®G{–±â醇#CÃæäÚõúhB´ Ddõ/Š-Œ^ÕfzZ§¦•¹—°ãy³4¦NlÒ‰¯æk¤I<ò’äc¨-C¡sôØ4óX&±‰ôþÒ'ÆÈãôX±ÄèŠÈÖÚϹIr©•€„[º)Q8)Sä©ä$1J.h® Ñ„Uu6ÃÖØÔÄ•˜hèÔû#°¡ù ëRòq(]®¨*QÂQš@µXØñ“l¨Oß»!,“¨°ŸÒŒ&ÎI»BASEM€gC€&Ðh5-   †®–›UJ› ÉCNF4 SCALELO!M‚C&F$:À+ù¢D,Eþ.¤FwKh Ïvó(Ihsh1.01€E¼M¼Å×àòû :C^g´É$¤»¹×²ˆ­ß¾°R¬§×np£rÙal7†·Wru 0p™õg}½©^JiØ:«¹ûe]…`ÜãcIhsh1.01€io_lib-1.14.6/tests/data/ce.fa0000644000031500020650000402753612354177667012772 00000000000000>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 io_lib-1.14.6/tests/data/ce#tag_depadded.sam0000644000031500020650000000324712473051211015474 00000000000000@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 100M * 0 0 CCTAGCCCTAACCCTAACCCTAACCCTAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA #############################@B?8B?BA@@DDBCDDCBC@CDCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC RG:Z:UNKNOWN PT:Z:27;28;+;STOP;Note=tag1 II.14978392 16 CHROMOSOME_I 2 1 100M * 0 0 CCTAGCCCTAACCCTAACCCTAACCCTAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA #############################@B?8B?BA@@DDBCDDCBC@CDCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC RG:Z:UNKNOWN PT:Z:27;27;+;PRIM;Note=tag2|28;28;+;OLIG;Note=tag3 III 0 CHROMOSOME_I 2 1 27M1I73M * 0 0 CCTAGCCCTAACCCTAACCCTAACCCTCAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA ###########################"##@B?8B?BA@@DDBCDDCBC@CDCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC RG:Z:UNKNOWN PT:Z:1;1;+;COMM|101;101;+;COMM IV 16 CHROMOSOME_I 2 1 100M * 0 0 CCTAGCCCTAACCCTAACCCTAACCCTAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA #############################@B?8B?BA@@DDBCDDCBC@CDCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC RG:Z:UNKNOWN V 0 CHROMOSOME_I 2 1 100M * 0 0 CCTAGCCCTAACCCTAACCCTAACCCTAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA #############################@B?8B?BA@@DDBCDDCBC@CDCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC RG:Z:UNKNOWN * 768 CHROMOSOME_I 2 255 1M * 0 0 * * CT:Z:+;STOP * 768 CHROMOSOME_I 28 255 2M * 0 0 * * CT:Z:+;COMM;Note=consensus%0Amulti%09line%0Atag%0A!"#$%25^&*()_+<>?:@~{}%7C%0A1234567890-=[]'%3B#,./\ * 768 CHROMOSOME_I 101 255 1M * 0 0 * * CT:Z:+;STOP io_lib-1.14.6/tests/data/aux.fa.fai0000644000031500020650000000002212354177667013707 00000000000000Sheila 20 8 20 21 io_lib-1.14.6/tests/data/aux#special.sam0000644000031500020650000000112412354177667014753 00000000000000@HD VN:1.4 SO:unsorted @SQ SN:Sheila LN:20 @RG ID:ID SM:foo Fred 99 Sheila 1 86 10M = 3 12 GCTAGCTCAG !"#$%^&*() XX:i:10 OQ:Z:0123456789 BQ:Z:ABCDEFGHIJ BD:Z:#12344321# BI:Z:#23455432# Q2:Z:1122334455 U2:Z:5544332211 QT:Z:*() CQ:Z:"#$%^^%$#" BC:Z:ACG RT:Z:ACG R2:Z:TAGCTCAGAA E2:Z:CGATCGAGTG CS:Z:T0123012322 XY:Z:foo XZ:Z:bar Fred 147 Sheila 3 86 10M = 1 -12 TAGCTCAGAA !"#$%^&*() OQ:Z:0123456789 BQ:Z:ABCDEFGHIJ BD:Z:#12344321# BI:Z:#23455432# Q2:Z:1122334455 U2:Z:5544332211 QT:Z:*() CQ:Z:"#$%^^%$#" BC:Z:ACG RT:Z:ACG R2:Z:GCTAGCTCAG E2:Z:CGATCGAGTG CS:Z:T0123012322 XY:Z:foo XZ:Z:bar XX:i:10 io_lib-1.14.6/tests/data/xx.fa.fai0000644000031500020650000000003512462217441013536 00000000000000xx 30 4 30 31 yy 20 39 20 21 io_lib-1.14.6/tests/data/aux.fa0000644000031500020650000000003512354177667013155 00000000000000>Sheila GCTAGCTCAGAAAAAAAAAA io_lib-1.14.6/tests/data/raw.srf0000644000031500020650000031414212354177667013364 00000000000000SSRF1.3ZBustard1.9.5H£úEtest_run:4:133:®ZTR  HUFF€€1 ƒfôÀþµ,HUFFg‚à‚œ ÐMXÑETùcåÍô0¹ÿm28[AˆêÃýÿï;Jã’2Ú(ÙB8QAêÿá›8àAfk°ÌÀR‚@Ðÿ>buš%Å&@¬HUFF…À ëHUFF«ƒ—`l·mÛŸÛ’uÒ‘¢¨û"%QŽÛIš¦A›"E‹e(6`{ÙÊ=쫈F3ùãQÎrfÞœko˜›L¼†ÜÍÓ(fîcŽçÍ5sG†™ó±‘ÎŽÅ¢W®•ˆuL“öTt YèZµiÓô@ºÔ¶Ö¯d&[ÚýÎÝÕJ@À²_øÆÆ˜Øm€iKgÚNÓ÷ŽT€™úÆ2Ì_lÕa6 ùä{ç3¿¬‰ó¿aâÚ|óÿfXšnÜi*ÚJÝÍH…r†HéguÚú-²[šm*Ÿô›,:MCÑ…áÖö¶÷ž÷9·í00‹’(š¨‰ÿÿI*ÀL}‘ÿ7ùõ!ŸáZÛ:Ž™µòë|:i„aHÆU>cŵÎòÛmÝT$Ü,¥Ìç•d>×Â*D©é¶|†æÓ€¤7m,ìC—,¯ï}ß[½ßc>çs†3»r…Â8ó›ÃÉhæ»ls>Û%#ÂÊ|®ùn\Šæ»Fͯ#Ÿù-‰­™²jíšR-]£™ùôc}„HUFF`„‡0°†A˜ ¤ûÿã €+`IáÐ!~W„´ÁfN@gø(Ž˜¼LC-ëÔ;eÊ49TdØ’‰'^[—›/”Åé/8|–šÒ8Ÿ‰Ð!Ë×ºŠ…"R:m´ü˜»TEXT áPROGRAM_IDillumina2srf v1.12ILLUMINA_GA_MATRIX_FWD# Auto-generated frequency response matrix > A > C > G > T 0.85 0.13 -0.02 -0.02 0.86 0.94 -0.00 -0.01 -0.01 -0.01 1.22 0.02 0.00 -0.00 0.81 1.22 ILLUMINA_GA_PHASING_FWD 0.004400 0.003000 ILLUMINA_GA_CHASTITY0.600000ILLUMINA_GA_BUSTARD_PARAMS 1 4 2 1 1 37 1 1 4 39 1 38 74 2 1 4 1 0 1 37 1 1 4 38 0 38 74 2 0 1 gzip .gz 0 0 0 1 37 /staging/IL9/analysis/080813_IL9_1213 38 74 /staging/IL9/analysis/080818_IL9_1232 HWI-EAS130 1 -1 -1 1 37 /staging/IL9/analysis/080813_IL9_1213 38 74 /staging/IL9/analysis/080818_IL9_1232 /staging/IL9/analysis/080813_IL9_1213 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 s s s s s s s s ILLUMINA_GA_FIRECREST_PARAMS 1 0 /staging/IL9/analysis/080813_IL9_1213/Data/default_offsets.txt 2.700000 /staging/IL9/analysis/Instruments/HWI-EAS130/default_offsets.txt /staging/IL9/analysis/Instruments/HWI-EAS130/default_offsets.txt 1.500000 4.000000 1 1 gzip .gz 0 0 1 37 /staging/IL9/analysis/080813_IL9_1213 HWI-EAS130 1 -1 -1 1 36 /staging/IL9/analysis/080813_IL9_1213 /staging/IL9/analysis/080813_IL9_1213 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 s_[12345678]_[0-9][0-9][02468]1 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 C2.1,C3.1,C4.1,C5.1,C6.1,C7.1,C8.1,C9.1,C10.1,C11.1,C12.1,C13.1,C14.1,C15.1,C16.1,C17.1,C18.1,C19.1,C20.1,C21.1,C22.1,C23.1,C24.1,C25.1,C26.1,C27.1,C28.1,C29.1,C30.1,C31.1,C32.1,C33.1,C34.1,C35.1,C36.1,C37.1 1 0 /staging/IL9/analysis/080813_IL9_1213/Data/default_offsets.txt 2.700000 /staging/IL9/analysis/080813_IL9_1213/Data/default_offsets.txt 1.500000 4.000000 1 1 gzip .gz 0 0 1 37 /staging/IL9/analysis/080813_IL9_1213 HWI-EAS130 1 -1 -1 1 36 /staging/IL9/analysis/080813_IL9_1213 /staging/IL9/analysis/080813_IL9_1213 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 s_[12345678]_[0-9][0-9][02468]1 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 C2.1,C3.1,C4.1,C5.1,C6.1,C7.1,C8.1,C9.1,C10.1,C11.1,C12.1,C13.1,C14.1,C15.1,C16.1,C17.1,C18.1,C19.1,C20.1,C21.1,C22.1,C23.1,C24.1,C25.1,C26.1,C27.1,C28.1,C29.1,C30.1,C31.1,C32.1,C33.1,C34.1,C35.1,C36.1,C37.1 1 0 /staging/IL9/analysis/080813_IL9_1213/Data/default_offsets.txt 2.700000 /staging/IL9/analysis/080813_IL9_1213/Data/default_offsets.txt 1.500000 4.000000 1 1 gzip .gz 0 0 1 37 /staging/IL9/analysis/080813_IL9_1213 38 74 /staging/IL9/analysis/080818_IL9_1232 HWI-EAS130 1 -1 -1 1 36 /staging/IL9/analysis/080813_IL9_1213 37 72 /staging/IL9/analysis/080818_IL9_1232 /staging/IL9/analysis/080813_IL9_1213 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 s s s s s s s s C2.1,C3.1,C4.1,C5.1,C6.1,C7.1,C8.1,C9.1,C10.1,C11.1,C12.1,C13.1,C14.1,C15.1,C16.1,C17.1,C18.1,C19.1,C20.1,C21.1,C22.1,C23.1,C24.1,C25.1,C26.1,C27.1,C28.1,C29.1,C30.1,C31.1,C32.1,C33.1,C34.1,C35.1,C36.1,C37.1 1 0 /staging/IL9/analysis/080813_IL9_1213/Data/default_offsets.txt 2.700000 /staging/IL9/analysis/080813_IL9_1213/Data/default_offsets.txt 1.500000 4.000000 0 1 gzip .gz 0 0 0 1 37 /staging/IL9/analysis/080813_IL9_1213 HWI-EAS130 1 -1 -1 1 37 /staging/IL9/analysis/080813_IL9_1213 /staging/IL9/analysis/080813_IL9_1213 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 s_[12345678]_[0-9][0-9][02468]1 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 C1.1,C2.1,C3.1,C4.1,C5.1,C6.1,C7.1,C8.1,C9.1,C10.1,C11.1,C12.1,C13.1,C14.1,C15.1,C16.1,C17.1,C18.1,C19.1,C20.1,C21.1,C22.1,C23.1,C24.1,C25.1,C26.1,C27.1,C28.1,C29.1,C30.1,C31.1,C32.1,C33.1,C34.1,C35.1,C36.1,C37.1 1 0 /staging/IL9/analysis/080813_IL9_1213/Data/default_offsets.txt 2.700000 /staging/IL9/analysis/080813_IL9_1213/Data/default_offsets.txt 1.500000 4.000000 0 1 gzip .gz 0 0 0 1 37 /staging/IL9/analysis/080813_IL9_1213 38 74 /staging/IL9/analysis/080818_IL9_1232 HWI-EAS130 1 -1 -1 1 37 /staging/IL9/analysis/080813_IL9_1213 38 74 /staging/IL9/analysis/080818_IL9_1232 /staging/IL9/analysis/080813_IL9_1213 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 s s s s s s s s C1.1,C2.1,C3.1,C4.1,C5.1,C6.1,C7.1,C8.1,C9.1,C10.1,C11.1,C12.1,C13.1,C14.1,C15.1,C16.1,C17.1,C18.1,C19.1,C20.1,C21.1,C22.1,C23.1,C24.1,C25.1,C26.1,C27.1,C28.1,C29.1,C30.1,C31.1,C32.1,C33.1,C34.1,C35.1,C36.1,C37.1 SMP4TYPESLXIOFFS5087Rþ593:417þMƒ@ Ððf9²êº<=ù\v½ïßw³~ã‡\[?e—Ę~4¿yÉN¾Þs 5æwa˜‹æ AnãîV±¼™!øÏä‘îµ¶šoz ü‚ª-v”"öôG,±óߢ¡¢æ&Äqê3Ï“¦Hoz캈nÝYÝ\‹ÊñöåÎÂNC±TT [ÎÝI ß`%¥''·…ä<Ô5ÇZ•)K£$FÜ–z”îø7MœFÙä…'£ÔI¸l|ƒ˜>NUvÛŠ"éëÞÖÅ)ü§6{×Ð :$ÇØyXèr{tÓI¦Jg> õ«Pä íÝ6ÂÉŸB¹£Í^xR›ôž‰¯m_Ök´“žçÁèÓÁš¶/¾ðn€«cªÕ£^«!oTîÜîˆ3<“‘îN+†S2ÉCù²û±×-‡x#åVèy©ÛµÇw—ÁYµa­š¿€¯}AU.aî&ÍkuÓÇAIçÌïVµ®ÄVj¤Ønv„4»‹gt^iÞ ‰%<‡]n­ Ÿë¤å `ír´Mb¾b?€“C¼H‘=Óv}!²,°Ÿß_¹~XÁë1&&3áÚÑÔvšýt‹ç_UÜÎW‚cHº“MÛÙù¡ÿé#<°Îi!Ë|³¸Zž˜¾ï¾ Ul¸»zLaÚ£h¤ÈœO_¼ûURe'¥.SMP4TYPESLXNOFFS-40xM„pRBC''ZꌤÉgb0aò˜|¥ú(6Xª*§•®ÂÛœUêF¨Üóª=f±!„ æR”X ¡0ÆV4ºŠ!AŒþ™dÞ0I’˜2V”Xl´‹o:v)2 }¼ÑMZ¥2Ó:¬AiEÆ#¨&ÄZk:QgëÕ¶·~Ùú¼µ]¨¼¯Æ,r„Ø”ÔYÓ ÆW£¸¦ •œŒúÔ%/SšÕ$j):þÁÅ%sqÆ­.ZV³râfîàˆ 4˜” O!Åô¢Â"˜NK6ÓC¬Rh¾Ù²å¨sT‹Õ~ï]k9B<ùÀ£š1Ñ2À zl /Tˆ0Qì(×(^’.CŽ\¬´W™JUžqŽãμ¡G<Ø€‡Brs œwÈÏk†™wýˆ“hÀº™›½‚ÑïäºøÁŽx0ÇžpBÅÞWonP 4©‰Év‡»–ÄlÕ»e^hííêz%ÕM_Nôe-tø¶îÆBASEM€g6À±U8 4–Ð27gµÊÚG:CNF4 SCALELO M‚ ÀŒ‘ÅÊ€'nWPôÍRúÖ´Õ±õjÉR 587:382õMƒ@ Ðð]œ¦'Ö?#zzÄÛ‘~{EûxÙ‡={’ä]¨û)š…Aàã>i)ùüXY’\¢Ýg,À#Ôæy‘ABô]7êè JbíŒfžTåµMs¾ýb#xp¤ÂÇTµLz¿R©“ TߣwYŸùgUId÷?5Iíî}D8n¥½‹£×û'u#åÿÓnx1Š|¼¡ðAÑ_Õ²¶Õ*KÖû1~*rôZ,UPs¾>ÉžÞÿ”p±•µ=orïŽ8Þð‘Dù{.Ayëo ç2_ýðpþLsè¬žÑ Å­õøkÅÐs»¬«B eȹ¿7ˆq`Ý6/$>ŸÙI朳$3êÚ¯E§V£îP'IÏÄf¤äuª\òzͨmÒã#§¬3µkk‹5ÍtŒAÙ&Ôu4‚R'0;K0k2®›L¶3[˜™U–$¡8Àq‡EEÊ™Œ=M{)ÁíLõRäìŒ\¯°D rÛlÜñ{.øñó g(­.±C"–Ò‚CgI"‘¤ÈŽ–°ª…»l¤÷ÂFÀr`~d¾cDuˆÏÙt…û@h¸J­§L:›ÈJ¬ðÈ<Ù– Ÿ†µt€3…Ê+>JéF¹²½¯Q8’Ra1<ÁÓ1£h‘EÔJ­5:׬Á®€&Š3EW‘´SMP4TYPESLXNOFFS-40M„p~M®(D¼›E*CÀ„!Gˆ„e¥¬[j°T×lò–Lvø";ü¯22Øj6°„D‰e5Æèó]vsXŠî¾O;müGk8ùÃ}=æ[þÝÃzû!«¢ á~2úx;Øášjj5.ù‹ü5Gr&Ñ ŒµÖìDYÜñ†Úúmhs²ÓÎ~T¯®d°ÿÈ¿•xNfƒšÜlÅÞ´°Yù›­ÌKÛ‚r²¼šz *žˆøÓ/r(VärhMŠ&n¤wÈ|@8§É‚ÍE>ãczéIVy"Ø$I6ÓlŸ¹ãŠù~ë˜åyÇ;Jýɤ‡à Žð ¸š2f˜cˆ;Üa‡-ö#“äqAž‘bŽYTúOÿåI¬¾§ŸßZkŸu®x˼3ÎqÜ™7´™'Ý®ÀÇ!¹9PN ƒ;äÆç5ÃÌ»~ÄÉ4àNÝÌÍ^ÁèwrÝGü`G<Øx«Õ;н¯Þ\zÐ~|ž•èV¿9S‘-ëô\šÙ»5WRÝôGÝR%¼ú¶ÎðBASEM€g‰5 Ò$2²dº©Šc”á(sƒmôCNF4 SCALELO7M‚ À ö™þÀİqö”&Y(à 84 pìüÞ0¸®i³„VÓó9f-ÈR505:428ûMƒ@ Ðð ÓqÙ´}Wp¶… [ÉC‚•?PLñU‹¡‘­Zg¼‹+žtÁ]jÍú îÛ.ýh®"¬ëÑn¼šË¶èØÕÙ@²…çã´­íã—¿Ù~Ïn%¨“\°i*.7Ü4;ýЊ L.ê6wc«G,ç²èYÙ zåsG¢Ö¤È¥?j}MֵŠ‚öD…-øªè séXu'ûŠl…êê­®e2”)-p 2üÔêó5{š^Ý£½‘™/AîÚÒF ¡üÞ¨RAàaÐgœ×çG U¹uWS*š4&ÀI™AºùÊ-E®zÖÄCvcÛ’‹£ƒGºæ+öLž\ùßdY=âÂ×ö5Eg E(ÃàcwD®ã4 C\¶‚Õ«R ¡µ»îåAš[A3lázЃ-,—ÒýSMP4TYPESLXNOFFS-40€M„pRBC''Z'µó¥Úh!Š¥ª|$Ùu/Úâ²} ÌQ£ÈoÉpÄZç°÷ÂO‹ÔPƦ|Š€èâíô‰®OP¡]8K•äq)ž1›oënÜèã-ÈÌö«T&¥"KT›ÙóT9h›;Û6·¢Ýµ¶¦5õ«º„j—ÞˆtwsÞULÛþjÄõ\Ó;yV˜hCVyî•Ìkð•3ù\uà9¹œó‰Èñ×0“ªÑ½ø†d:pG >°aA#š²áL9ahxè!þôÛ ¼fž- ­ö¦z­S¡\“£nš(þœ%JP%,~´ CÎËXÑëÆ ¶Øçö…›¡'åTY„‰r¯§D•ýf+8ãÇyCŽhÎÐvÖ™Ì\èN|v´™“ÑÈ9æXÈx0êxÇ}ÕQ?Ïù’Ÿ}“Ïï@Ž· Q-•!gQöQ¼Z¡ÓBlqã:Õ‘æö»ŠÚÛ¬2{»íï랪Ìᣮu»µÿBASEM€§¥¬4ØrsI€2Èáp Acb´ÕCNF4 SCALELO4M‚ €`× ÅG'Ò`jÝæ ¶^»ži¦ƒ*Š|€z;]ç>Nm€ Rí548:808êMƒ@ ÐpÞêÑSÃk!ª^‰º!éýIš{ºb72HçúYÄ¡W™Bч™ÒíýÌ£S¡ªýVŠÆ³ÔàQ褼±ÛV(V¦0¹k¢G¿Y^ÞsF:ÇðYçªó£!ÚB0v<ñC:¥ÕHî…‰À¬Dâ)\B†ÚIµ¢êÄ ¼ŠZ—Û$0”Qryl:E]Tgìè‰Sý¬ß µ ÷<ÜpiR\d4º‹ÒäÉ2lЧ1ÚÕâN V1=„ˆ¶3†ÁN ¬Æ¬Aë’Aý¬Ù)É/¸û¾#ŽAôŠö¦8;?ÙëßÈOnD¾õSØ$Q&‘N 'ƒšá!ó˜™cŠE²"’¯˜ç>?1À¯ºbæ)•ò©$]2µAE¦'gÈ£’\ßà.SÄÇT…˜›HÐQ ·¹M?-Ü¥ŒDšÎ|—[lçŽØ´3 /yí' fÃÍ“§ú¥ÍMwón’ò¦¯ý1ä¼á·væ½0ãDÜ0æ-îr'ÁtèêïHX3Æ»†èg§cNÑ'ÙPoñ³ŸÙâyi†š%ß …Ê¥ÊqÔ~Àü…ÃÂûør Q„‘‡02¹Æ‡”RŸ:T<@Ïã¼à‰püîAAúéÊ‚'y $¼ˆæ L?ƒaó! )¡!õTq‡Ô|ÍC–éáKŒcg‘ßXd›=n²ÓúF÷ƒ8ò$¿”(Ô<¢H™WsÐ~rÄÛdíù_‚²œµºäç¬d>ûÕ4aiU4¦…}ДÌf.‹±E– ]=듲ë¾g¦Ä óQ¢LN¢Ô–ŒH"Þ¢¦<¿%µof83ùëBASEM€'%4'¦M‡”“€YSZ@™l>CNF4 SCALELOM‚ ÀŽy*þ¨A eR568:418ùMƒ@ ÐðÊè‘ ê86d#h)jó¨LB{ò³Jò>ŒvHUEaN„+‹½hÀÑà™c‡D^Õp°¼í 7|0<æšÑƒkùy[RCŽÇ¼F‡yåohàÕEM^PâÍN ŒÙOu§¬°Y%hn²µDÝG+è»gŠ*±Ý7Æã†íÜóA›šÕ-˜ÞêÆ %‹îP41¯Ñ¾¬)›6gdöó @¿(ÄÚ¨¹>qFCÔãkΩü0ÖÀ„?M-˜Ûµ÷ƒÏa°ïƒL{€DvGÌõ}r7ªE‡”E·å’tÔXǨ{Ò=H}|îjnÆÐ/èád1_íúA¾‚WàÝô¤±¬}Þˆô®½¶¾qÆÞÇt:ÖM‡´Æ+GöD®nÈ8φ=øACÓ)Ÿ÷úîzÓ¥Üw¿ \PL= WÄüÙC˜MËSÒw#`³ôL!š«§G¾ìˆµ$E¹ræŠ×9ƒÖ1"¿pß”Ä|ØAÚ¬D`ÑÇ©:M&C¸óÁ¸ÇR\ÄißWxNçF.ç|"r<¤DÇ5̤jt/¾á™ÜÁ6,h0É!É”††‡âOO°­ÀkæÙ¢ÐjoªwÐ:Ê59ê¦IâÏYÈ¡UÂâG 2ä,±Œ½n¼`‹}þ`_¸zRN•Eˆ(÷ŠqJTÙo¶‚3ÎqÜ™74àˆÚÎ:“™ ݉ïÁŽ6s29Ç ï@F︯:êçù!_ò³oòùhÂñ4ª¥2ä,ªÓ>ŠW+túCˆ-n\§:ÒÜ~WQ{›Ufo·½ã}ÝS•9|Ôµn·öBASEM€ç€Æ† ÓÚR¡f +r‰Ú0}CNF4 SCALELO#M‚ ÀŒw  yÊÄöpç€E õzžvº RD507:435Mƒ@ Ðð±ƒð’’µ¼_÷’œ , ×ÓOøé»Þ+à —z%²ˆÈ¸õ‹_æí_â>'á{y¾.Z|yüÓwÒ5µ*–~1¡ —^ŠÆÄÓò)jÔ^ªùù,A³nW:À›Êjúk?«ÝÇ¥÷ÐÞ¢ÙXÏF#-ŒY#ƒr(uÀÚ{UÆ4PàÜÒßùK虨É̉ ç†eÅßµM昭¡Þ2Ö8ÓÎGQ(`í¦FK©u«58XÇÍ&j¸ãÉößïÔ»ÉáÒ‚i ØCÚ¢ÓXÎRÐ5 PN^ÕF4‹?a3l_SMP4TYPESLXNOFFS-40€M„pRBC''Z'µó¥Úh!Š¥ª|$Ùu/Úâ²} ÌQ£ÈoÉpÄZç°÷ÂO‹ÔPƦ|Š€èâíô‰®OP¡]8K•äq)ž1›oënÜèãnòÐ*•I©ÈÕfö|UÚæÎ6¤Í­hw­­iMýª.¡Ú¥7"ÝÝœwÓ¶¿q=×´F³ož&ÚUž{%ó|åL>WxNçF.ç|"r<¤DÇ5̤jt/¾á™ÜÁ6,hD“C6’)' =ÄŸž`[×̳E¡ÕÞTï u*”krÔM“ÅŸ³$C ª„ÅdÈYb+zÝxÁûüÁ¾p3ô¤œ*‹!Qî㔨²ßlgœã¸3ohÀÍÚÎ:“™ ݉ïÁŽ6s29Ç ï@F︯:êçù!_ò³oòùhÂñ4ª¥2ä,ªÓ>ŠW+túCˆ-n\§:ÒÜ~WQ{›Ufo·½ã}ÝS•9|Ôµn·öBASEM€'‘ŒEÈ`sc’ª¨˜cà 1§XÎCNF4 SCALELOXM‚ @‰ÐÀ ÷ I¿€ ûƒ+˜Í@õÂñheÕËðØ&/Þ»›ìT­¬Q xx¨YÁ·‹;7, ¯‹/ –‘’1± ¸¥Ž#ãõÀÇ/ÈRó561:484þMƒ@ ÐðB7·`ç÷ò9:,bv0pÒŽhdЂôf)À}ËÀ| åtëWØÛŒøŠ…žúSÌÏD?jHé¯!ôFXxá[uZ>~#‰3¤Ù?BÌâoš¢¿¦1–‘e|ŽÒæË¦¤‹¿,t±~Åáýù|FÕâí˜ó¿±˜¿ý‚‰qÕCËдV¿³ô3ø Íã¿!R?Õý%ÎëÏ3ÿõÄ? qjÈýÓªŒ>®£lßñÓKa½e¹û· ž Æ£èw|ü>¥›®%ÕxÖ÷fâiûùhàx]+¦Ž·õ¢àçÊùg2+ãSþ£Gp3N­˜hF¹à7%)ß ÄÁ‘L<çO² j‰ÝØÕO\ÊÔnªüa¼8vÓõTøB]Õ¾þ!WêÞ–IdMá-(,0Þ>DS‡þ>šæ»X`y\eÇ&Ì žu¾@46Æþ!ô»ðÊç)Š̠¨Å>*Qniž¥ë!au“(†ÞPæÊ,¦H¥ÔP€¡OVd,yÑ—ÝcFñ¬¸Cà„dC§u%5j×ÑÛ?t=PZ=ÄÞ–ºÎŒKûA“í#¿ŠKQÀæœ&DñR±ë’Vdd憗Èç¯ÅU±4jœãCk8ìåUX››*£ùÁ>˜ˆšùrò¤r³SMP4TYPESLXNOFFS-40xM„pRBC''ZꌤÉgb0aò˜|¥ú(6Xª*§•®ÂÛœUêF¨Üóª=f±!„ æR”X ¡0ÆV4ºŠ!AŒþ™dÞ0I’˜2V”Xl´‹o:v)2 }¼ÑMZ¥2Ó:¬AiEÆ#¨&ÄZk:QgëÕš·~Ùú¼µ]¨¼¯Æ,r„Ø”ÔYÓ ÆW£¸¦ •œŒúÔ%/SšÕ$j):þÁÅ%sqÆ­.ZV³râfîàˆ 4˜” O!Åô¢Â"˜NK6ÓC¬Rh¾Ù²å¨sT‹Õ~ï]k9B<ùÀ£š1Ñ2À zl /Tˆ0Qì(×(^’.CŽ\¬´W™JUžqŽãμ¡G<Ø€‡Brs œwÈÏk†™wýˆ“hÀº™›½‚ÑïäºøÁŽx0ÇžpBÅÞWonP 4©‰Év‡»–ÄlÕ»e^hííêz%ÕM_Nôe-tø¶îÆBASEM€çFPVU- \ZËQ°Ù€Eˆ`–ÌCNF4 SCALELOM‚ ÀŠ ÔoN_ª…œRe539:484Mƒ@ ÐðBQ’¿QÆÑnO |fw†ÁFÀŠ%+ üt‹÷ /+Ï£“ÿºõ«bËû¨¥zíÊó!ùoÝ”2– SÚ4¬ß'Y±²”ó:>å …Õ‰»ü\©19êo “µ¼á§íí시# °wéRòŠ“ðÔìÝ_ðôv¼p·÷¶ÃÙÇ>ß1÷³ŸÛIp¼yø?‹&6±ø=~ò¤¤ó¾i6À â°ð8‰’7k‹æà<‹…¯59×ìc/¯óyïëÊ|!ÆìOïÅ]I*ß–j¾UyèRˆpe×¹æåÈr}x~7¹¹>Ñô™?w0ífÂI{±JÆ%çÞ²ïËÎash´¼Tý;÷Ü$]fï/aëò¦!Tö‡T°ÒÏi»°¤;þž¹Œ:¨Àgÿþ7( P˾—£ñGú=~²šÉäíþüÅlZ0PNÔFÐ é¿x¡·`Ê1*Þ¯ÝQ’;筂ׯÙÚË«›¯È¬³èoÌž}¯ïE ä}äYÔqÀϽ&4²W>â6íݳ¾Î2Zíºo!œ2®vG-vÚ(w;¿A­Pº$ùbÛÖ²‡œ~ÁvMö_<æÝæÍ–曘çŒO’cF[“,¼wǬ(§‘¤-pì7³‰ýÉN¬sºÌWiP7yC;Q²î­¬íUè:m-–›úSqHã}H]SMP4TYPESLXNOFFS-40zM„pRBC''ZꌤÉgbh!Š¥ª|$Ùu/Úâ²} ÌQ£ÈoÉpÄZç°÷ÂÂs)J,†Pc +]EŠ FŒL2o˜$IL+J,6ÚÅŠ7»Œ>Þè&­R™iÖ ´¢ž¯ ÊAÛÜÙ†´¹í®µ5­©_Õ%T»ôF¤»›ó®bÚöW#®ç5ž}Å5P¨¼àdÔ§.y™Ò¬&QKÑñ..™‹3nõpѲ°žå³7«pG Xذ Á¤ | )' =ÄŸž`[×̳E¡ÕÞTï u*”krÔM“ÅŸxò)€G5c ¢e€ô"Ø,^¨a¢Ø5P®Q"¼$]†¹6Xi¯2•6ª<ãÇyCŽx°)º߃mæd4rŽ92ÞŒ:Þq_uÔÏóC¾ägßäó;ÐÁl{ {_½¹A%`Ф&&ÛîZ³Uï–uz¡µ·«ë•T7}9Ñ—µÐáÛº?BASEM€g0]…Õ0AØDçÆ*(A0À1€CNF4 SCALELOuM‚ €`œ1¼Î<Í J‡Ž;ÑÊ_­”‚TlÔ± øœð”CŠì0¿ÔÝŸvw×\¼ýšÛo.?¯É©– œ 8`²@à ÆNžn€§ìã ‚Ây߆)3,HE€˜x^hX@H£åEtest_run:4:134:®ZTR  HUFF€€1 ƒfôÀþµ,HUFFc‚p€› °Ì†˜9' â(¹ìýÿo¼«0Pu¸ÿÿ}'jPˆÏAˆS—R ^2€Þÿ†O%ÑoÓ.12ÃÀY Â0йÿ _ʤK­R,. ¿HUFF…À ëHUFFœƒ—`l¹MÜô¥ilãX !I€æ&Jp캵IÆé•íìÃ>ïÏ3PfêãÌÿ×ó™ùœÿ’ßF†‹r2¢ ͧg¾gä†ó¬ÊÚvÅB²….Õɺ-Ëç–ü†ÕHK×µˆ•NW“:°-¥‘D§ò’T„™és?Ý= –& € ÈÕ j»Uûÿ³`¦¾"ŸPþ+cahŒù4£fcÍ­²(ùÿç³Ò#Vìj1›^Ôít%£S²‰’„˜OÒh­]—ŠXùŒtXM€ºÝ¬aZ $ÄÖ6‰}|l'MÛo¿» ‰KÞÿ­T€™úrò¹!:ßÎ|Ê/á ó‰ü'Ÿi›Oþ4,¶qd¸s«É'}6u•ZHd„¶ÚÍÚfë£5k ë3k¬hÉ´EWë@Ö”6Î[«Èf¿k7ײ!*E@"‡©Ç`;özèÿÿ¨3õÍ/f ëò»ùå3¿ív&ßÊ/ÿc —ÏIÑó›óiãŠâèh3æXþ.DÌ9Æ™Œ‡L­­ŸÚÄZVé¿%­LHUFF^„‡0°†aàtÿŸ<p,ÉiÒ"õß%î×>|„–vš+#t ‰ %+,§97QÇ‚¢ÙuBiEÍ×tM“Pn. ´Ãò‘FI¾’2Í¡Ø}TEXT áPROGRAM_IDillumina2srf v1.12ILLUMINA_GA_MATRIX_FWD# Auto-generated frequency response matrix > A > C > G > T 0.85 0.13 -0.02 -0.02 0.86 0.94 -0.00 -0.01 -0.01 -0.01 1.22 0.02 0.00 -0.00 0.81 1.22 ILLUMINA_GA_PHASING_FWD 0.004400 0.003000 ILLUMINA_GA_CHASTITY0.600000ILLUMINA_GA_BUSTARD_PARAMS 1 4 2 1 1 37 1 1 4 39 1 38 74 2 1 4 1 0 1 37 1 1 4 38 0 38 74 2 0 1 gzip .gz 0 0 0 1 37 /staging/IL9/analysis/080813_IL9_1213 38 74 /staging/IL9/analysis/080818_IL9_1232 HWI-EAS130 1 -1 -1 1 37 /staging/IL9/analysis/080813_IL9_1213 38 74 /staging/IL9/analysis/080818_IL9_1232 /staging/IL9/analysis/080813_IL9_1213 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 s s s s s s s s ILLUMINA_GA_FIRECREST_PARAMS 1 0 /staging/IL9/analysis/080813_IL9_1213/Data/default_offsets.txt 2.700000 /staging/IL9/analysis/Instruments/HWI-EAS130/default_offsets.txt /staging/IL9/analysis/Instruments/HWI-EAS130/default_offsets.txt 1.500000 4.000000 1 1 gzip .gz 0 0 1 37 /staging/IL9/analysis/080813_IL9_1213 HWI-EAS130 1 -1 -1 1 36 /staging/IL9/analysis/080813_IL9_1213 /staging/IL9/analysis/080813_IL9_1213 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 s_[12345678]_[0-9][0-9][02468]1 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 C2.1,C3.1,C4.1,C5.1,C6.1,C7.1,C8.1,C9.1,C10.1,C11.1,C12.1,C13.1,C14.1,C15.1,C16.1,C17.1,C18.1,C19.1,C20.1,C21.1,C22.1,C23.1,C24.1,C25.1,C26.1,C27.1,C28.1,C29.1,C30.1,C31.1,C32.1,C33.1,C34.1,C35.1,C36.1,C37.1 1 0 /staging/IL9/analysis/080813_IL9_1213/Data/default_offsets.txt 2.700000 /staging/IL9/analysis/080813_IL9_1213/Data/default_offsets.txt 1.500000 4.000000 1 1 gzip .gz 0 0 1 37 /staging/IL9/analysis/080813_IL9_1213 HWI-EAS130 1 -1 -1 1 36 /staging/IL9/analysis/080813_IL9_1213 /staging/IL9/analysis/080813_IL9_1213 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 s_[12345678]_[0-9][0-9][02468]1 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 C2.1,C3.1,C4.1,C5.1,C6.1,C7.1,C8.1,C9.1,C10.1,C11.1,C12.1,C13.1,C14.1,C15.1,C16.1,C17.1,C18.1,C19.1,C20.1,C21.1,C22.1,C23.1,C24.1,C25.1,C26.1,C27.1,C28.1,C29.1,C30.1,C31.1,C32.1,C33.1,C34.1,C35.1,C36.1,C37.1 1 0 /staging/IL9/analysis/080813_IL9_1213/Data/default_offsets.txt 2.700000 /staging/IL9/analysis/080813_IL9_1213/Data/default_offsets.txt 1.500000 4.000000 1 1 gzip .gz 0 0 1 37 /staging/IL9/analysis/080813_IL9_1213 38 74 /staging/IL9/analysis/080818_IL9_1232 HWI-EAS130 1 -1 -1 1 36 /staging/IL9/analysis/080813_IL9_1213 37 72 /staging/IL9/analysis/080818_IL9_1232 /staging/IL9/analysis/080813_IL9_1213 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 s s s s s s s s C2.1,C3.1,C4.1,C5.1,C6.1,C7.1,C8.1,C9.1,C10.1,C11.1,C12.1,C13.1,C14.1,C15.1,C16.1,C17.1,C18.1,C19.1,C20.1,C21.1,C22.1,C23.1,C24.1,C25.1,C26.1,C27.1,C28.1,C29.1,C30.1,C31.1,C32.1,C33.1,C34.1,C35.1,C36.1,C37.1 1 0 /staging/IL9/analysis/080813_IL9_1213/Data/default_offsets.txt 2.700000 /staging/IL9/analysis/080813_IL9_1213/Data/default_offsets.txt 1.500000 4.000000 0 1 gzip .gz 0 0 0 1 37 /staging/IL9/analysis/080813_IL9_1213 HWI-EAS130 1 -1 -1 1 37 /staging/IL9/analysis/080813_IL9_1213 /staging/IL9/analysis/080813_IL9_1213 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 s_[12345678]_[0-9][0-9][02468]1 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 C1.1,C2.1,C3.1,C4.1,C5.1,C6.1,C7.1,C8.1,C9.1,C10.1,C11.1,C12.1,C13.1,C14.1,C15.1,C16.1,C17.1,C18.1,C19.1,C20.1,C21.1,C22.1,C23.1,C24.1,C25.1,C26.1,C27.1,C28.1,C29.1,C30.1,C31.1,C32.1,C33.1,C34.1,C35.1,C36.1,C37.1 1 0 /staging/IL9/analysis/080813_IL9_1213/Data/default_offsets.txt 2.700000 /staging/IL9/analysis/080813_IL9_1213/Data/default_offsets.txt 1.500000 4.000000 0 1 gzip .gz 0 0 0 1 37 /staging/IL9/analysis/080813_IL9_1213 38 74 /staging/IL9/analysis/080818_IL9_1232 HWI-EAS130 1 -1 -1 1 37 /staging/IL9/analysis/080813_IL9_1213 38 74 /staging/IL9/analysis/080818_IL9_1232 /staging/IL9/analysis/080813_IL9_1213 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 s s s s s s s s C1.1,C2.1,C3.1,C4.1,C5.1,C6.1,C7.1,C8.1,C9.1,C10.1,C11.1,C12.1,C13.1,C14.1,C15.1,C16.1,C17.1,C18.1,C19.1,C20.1,C21.1,C22.1,C23.1,C24.1,C25.1,C26.1,C27.1,C28.1,C29.1,C30.1,C31.1,C32.1,C33.1,C34.1,C35.1,C36.1,C37.1 SMP4TYPESLXIOFFS4661R548:359ñMƒ X€øw¥cºRþõ$q§K ñ¡Ë«D»8DÕ¼âa o:VÂÙÊæ*Ððñ¦‡‡á†u¯X‚²eW8bdîUtÝ®ÂV÷7PFb%$tî ßµÝâÿÑËV\Ã_íÿ¦ 啯;·%p,ƒRõ¿g%˜$« ¶ë©~5$ªÍ×àíaÁòóåÿÜu–i&RPö=±ßŸ¨ãI’0Û06Æ»LÁ‚ÊÌÔ˜QÓa|7?öy3Ju‚cp@ÐÙŽÙ©r+Ï'ìNN´æ„µfº¤Ïz¢ cÔeí9ãTǹÛ:äBASEM€' ¥Yµ„ÌÁœÈ"åÒQæ“ÕCNF4 SCALELO(M‚C&v Uh±Ì @Ä&Ú‰¾1½™šntG½<Ê\oÖ\Rü594:276ùMƒ X€ø»ðMù±áƒ¬½[Å,Â)Zn t~ù~aD#=T7ÙgµÁã-mþ„þGué^-^Å—¡²ôSä á0¬âsÓê =µùZœ\˜J5~z&t-Wg”¶ëšÚtG²_{t?·Ï‡š¾îÚló ]3çO_¡K&¾[·æˆXj[ˆ[íá>²­êɹý¹žt—”¥=›½"r/VEûÒŒË<Žòé¶;“ºú Ê{ÙÀÏ’"Ý$@à>‘IŽ?5u m¯B÷‹2bO¯V×øb¹Í?ð(òÉ¥¢,ŒÒ’v¥ð ±ÇwûÄXfÆ¿6¯P¾™È­‹ 6¶·þs~XÍ5£‘Y8¥‘V­dN£uÿt\¢ fû²~ºn\mòí±OûЙ‘ñ…ƒm¸ª•®s:¡½{ERèÖd¶4¨à؆©b%Ŧ4¶æóW¶Ín™|˜É?¥À"jJ„44ù(ÆíxáÅͲ]\@&‡”JS¨Ã¶¨>cG픘é£œn•âÜ®$=MŰ/"IÏ7ù¬ø™ÛÓ±:GïÜ&dyvIJ•B¨±6Éšï5·” ó~~àœÇíÜD(情±b¤Š“txÚë¤p„OíSMP4TYPESLXNOFFS-45}M„€„–ŽÎ<ø¬U(Њ ¬Ì‰Uà~½l´Å5P…BŒRb¶û­fY£\ÌÒ mp‚aáF \7„50 ¦ƒ¼§Å]Ú1Ì"ëbé&\gݳŒŽu}õÔí€fÞ¨5rÙ”CÊV«0ÿå·»ÓÏýjÇß—Ý\Þ0+^Ý©ï^‹ÝàVwzç75þªvMÒR<4üœ<ÚjG/9œZÍiƯ¥ŒÖkv RqAãÅ.ͪ"ÊÉ½ÎØØ qøC„ ‹”(¹‚o1°‰R»Ü)R©»$JÔF³•ÙØîˆÝ’œ·4"ÁÃEÞn¡¤ z†Ð³€U¸`!´×N²(íE-Z´a’d™ A–E†¾Þ›¸ú#ñ˜7q=×~š¶ÛÉ0ÖÇ{˜½{{hs”]:à*nö|ŽyÇ^íV_æ;øÆ¾ƒŸÿ{s3Ju‚cp@ÐÙŽÙ©r+Ï'ìNN´æ„µfº¤Ïz¢ cÔeí9ãTǹÛ:äBASEM€çVK“Ê0g¬¨9Ø’Em,ƒ%LYúCNF4 SCALELOM‚C&&üìÎO¾WL+5Þ#påØ0±RÐ369:182ãMƒ X€¸`£Š7Ì”Ýiß4;Š¿ * 4Üâ{N„–. 45fãí¾˜L,·Òó qózÃ-„6›%$’’ŠÔlé¦ErFÔÆ4£nýÞâ0Êéà ³O$¹>q#ñ5AºEîÝ/üžXÒ€2N™®oØaÏõ½"—üyJÇ]‹ý¹ê¼89CÏXûþÚF¹"ééªÓg0û¼ƒl¿'z/!IN0a'NZ’Y/:/´mÓ;msmv¸¨žá{Ÿ9sŽõ{ʦn8}ÍUýl_Œ{d8÷þèÿEwÑÆ³MåL¸ ô63¸BL^|ôÐÖÝÚ}]+moí;5‰¨…؉ŒQ‡…0ËFýR³¢ÁøÉ‚µ);|s€d|f+Z/Õ5Å@e,“±Þ†’?®‚ÏÍ)T™öÓÉê¥ßï^Ø=ò¥ZRˆÎ­ÑzdDÝZ5“¯uAK\fH³¶EqINà0oáË„0Û‰#Ç p8L †#8 ð<•vszgùY l;ï¹aB¥ŒG®¨ŒÖa?'-tã>èý3hfj¡)‡1%äq7bsòà¬IçÏÁçÝ n„ÉɹëKfYÂDxž`¨[³,ŒBôYy *9¥8½˜\Á,SMP4TYPESLXNOFFS-45rM„€ðæ`ÉC Ãx’À“J&lƒ¹@¥ô£ã%%˜xÇ4J%ƒ&þ¤‹L h¨CL1bj¸œ¨ðI£*itCéÄ# %8rá  ‘«Á„J r„ˆ)DD:œ¦2T”–étUÓÁ£<ÕÕHúИ©š×¹i±ÕÒ¤*—Y-ë9éy%Je. 3hPóZƨ¦O¨H lD=z襟R¥XΊ¾|ê!¿â%·3«J8 ¾€Áxd¨„ )ÙÄ“Í"3ŒÐàV ù‰~ÔnA«î+´YÓ8€^DCV4tÄpȇÉEréãP#ƒ‡‘iuu žò‚IŒLñšMf±ì¯QÆn¹ù%nß2æÑü\Uó)K“úŠj©É‚¹äC+u4¹ŽNÌoá­¬lžÛ3ŸÅ,cÇ2Ï[ÝXaÜ„(öŽÅúyÓãA­é{ ÅF‰ZbÜöE/\eüú“õ먑{õBASEM€§!Rkeɨg¶˜1¥¬a°’5zCNF4 SCALELOM‚C&FL¬v À„·Ô€R 354:230ýMƒ X€øÞô$t­Þ?—¶¨ðdßÜ5:ú,†’ïje¨"fËɺ¾ÈìÖz,ª,tO"@Ãö(³•9Éqƒ—ÝvKµR ñ iŒ=¡—Ò=*AÛÄ.ë­btŠ^~«ÓôMIpŽW €©`˜ó&×ÑÜÊIþ•ÄI Ä„nƒ5hz§€oðI9ó·ÛŠ-7Oo‘÷ª±‹±Pç±Ùpz§jœ•v“£SÁýet5ùN\ŒTÌ_­‘À‡WÖ‚ùQ’ïú‹D}5¡¨,[±Ø6ç_ê­Q=1fLIѳG‚wö,žp3øw{ÔV°WÔRôÐ?ýå7ˆLáÆûñ'í½:Ê'LÙ‡ÙikœåcÍk„ùÒOøpô‰]îDÛ’qúoÙTÊ—ÉÌaǵ=½Ù£%—áÙéñÁ—–%ê²^»Õùƒ¨eCut­i¢´wÿ[¾&ï_em;s.7¿›\o2júþ• µå&ß!£$àèÞ_n^…ÃÝë{ßJ†Áo?'1wÍzƒ—ó×_ÿZ1$Ëküj-¥&Ö Oœ¶Ç…ù°pSMP4TYPESLXNOFFS-45rM„€ðæ`ÉC Ãx’À“J&lƒ¹@¥ô£ã%%˜xÇ4J%ƒ&þ¤‹L h¨CL1bj¸œ¨ðI£*itCéÄ# %8rá  ‘«Á„J r„ˆ)DD:œ¦2T”–étUÓÁ£<ÕÕHúИ©š×¹i±ÕÒ¤*—Y-ë9éy%Je. 3hPóZƨ¦O¨H lD=z襟R¥XΊ¾|ê!¿â%·3«J8 ¾€Áxd¨„ )ÙÄ“Í"3ŒÐàV ù‰~ÔnA«î+´YÓ8€^DCV4tÄpȇÉEréãP#ƒ‡‘iuu žò‚IŒLñšMf±ì¯QÆn¹ù%nß2æÑü\Uó)K“úŠj©É‚¹äC+u4¹ŽNÌoá­¬lžÛ3ŸÅ,cÇ2Ï[ÝXaÜ„(öŽÅúyÓãA­é{ ÅF‰ZbÜöE/\eüú“õ먑{õBASEM€'MAœÖp(ä&²m®ÅœT#LÑ™ÓI{CNF4 SCALELO2M‚C&^89*ì”Úp¶ÁÍ2h8z¬$@…Ú†îàÑ š?@…ž½R614:269ðMƒ X€ø[·]„<_1ªbƼN=ñÀõfŠþŽ²Ï²É÷³ çBY ¯çKƒºó÷bC•"ÓàüáUÆ×}ä¨Z ®­w‘+òLÇ­·t;ãPÒý£u¯Žãlþ–`j{bpÂo`mJŒ²­G²ZUI*ó§Ìq "Y‰]˜›q³PLw|hí©ejn24÷pIÞÎ)¤½(ÿùfÝî$"Jø+wø?{:õz§ý¥ú…ÌÌi#;ZºYi€Í- ä4úŽë.Äž"›¢¹1.ì c®úh-©·¿e‡6€OrÂ(_%.ÝêhÑÚfðœüåâø´)(×%¾-5ýÚ^ «]¼0´G:¢c"÷N…©ðÒ{-óYÚÄéç³,žKíe4˜Þ*±×ÝP·$wP£Ö‘®Ð~ ¸0{æèøYÒ2¬~@6Ê?{$(®\ѬN‡ƒ'N¬…ÐtŠb…¥Jo>â*ý= ’³~¯âŠ­L¤b±n.`ÛI1yPd+Ž%,,cšp8$J·¡’=ÿ4¿ôØ1ÎÜW½ ±ë$éçÙͬkÃ[15Úìœ Hêƒ&EiЮ}¼ˆÔbn[µ¤nÔ=1TO‚;ôž—l­å?%épá¸SMP4TYPESLXNOFFS-45}M„€„–ŽÎ<ø¬U(Њ ¬Ì‰Uà~½l´Å5P…BŒRb¶û­fY£\ÌÒ mp‚aáF \7„50 ¦ƒ¼§Å]Ú1Ì"ëbé&\gݳŒŽu}õÔí€fÞ¨5rÙ”CÊV«0ÿå·»ÓÏýjÇß—Ý\Þ0+^Ý©ï^‹ÝàVwzç75þªvMÒR<4üœ<ÚjG/9œZÍiƯ¥ŒÖkv RqAãÅ.ͪ"ÊÉ½ÎØØ qøC„ ‹”(¹‚o1°‰R»Ü)R©»$JÔF³•ÙØîˆÝ’œ·4"ÁÃEÞn¡¤ z†Ð³€U¸`!´×N²(íE-Z´a’d™ A–E†¾Þ›¸ú#ñ˜7q=×~š¶ÛÉ0ÖÇ{˜½{{hs”]:à*nö|ŽyÇ^íV_æ;øÆ¾ƒŸÿ{s3Ju‚cp@ÐÙŽÙ©r+Ï'ìNN´æ„µfº¤Ïz¢ cÔeí9ãTǹÛ:äBASEM€'®Q¨…[Ó˜6t®j¥cR°-‰ CNF4 SCALELO:M‚C&N˜ޏ¼ò-¸s@wðǶÈÂ÷ü>~ÞpæPc• €/lÏÕØ° RÛ368:209ëMƒ X€øN»¹€úë‹aAiDý=•¿ Õ”uOïRU”"b#†µÍtIiŽ÷‡*h(\_Ô7ã‚+/ùŽ–W´šH!{Üç,U )°€¢Îç¿]ùv!”WàÕsfo¤ˆ\}|¯'¦ê¡‚ƒB_ìÀøçcÆB¢WöôPª.ziç2"˜J™')*¡Ï¡>*µI¹y«©PµÅYÜg¡›ÆQÆ€OÆÌã5 ‡Ì\lí™+ ÏÅeÂvY&„ÊÒ›'ž-¶M’PcÜîAªŒ¸ÒhraÅmµu‘BÁ(;ÂRMÂlYŠ pˆG²bæ´»Ùk ä½Å:h;ô‹ÌzûžØpFƒ­´œíªs„--+¸é+HC£ˆjíBË‘¡à£0&nŹ‘ü°7ÔCw„ŽÄL[©« ⮇*5õGà.^F:ìPÚ&IÞWR»¶O\aú8R(ØY )Ø^¿7©_ ¾ç»B;L‹wlä¬ÜoÞ‹DÿòIíŸà‰™­xÀD³L:¸v÷‡ŠmËÈM9i»‡V®bˆ-:ð  Fte§º9G%t0=xd¹Á¦0eݬœ"„¾ab¾Éªý»yRö‘š}ðÇ’ûÀÐbj?ÔºäºSŽ $YSMP4TYPESLXNOFFS-45rM„€ðæ`ÉC Ãx’À“J&lƒ¹@¥ô£ã%%˜xÇ4J%ƒ&þ¤‹L h¨CL1bj¸œ¨ðI£*itCéÄ# %8rá  ‘«Á„J r„ˆ)DD:œ¦2T”–étUÓÁ£<ÕÕHúИ©š×¹i±ÕÒ¤*—Y-ë9éy%Je. 3hPóZƨ¦O¨H lD=z襟R¥XΊ¾|ê!¿â%·3«J8 ¾€Áxd¨„ )ÙÄ“Í"3ŒÐàV ù‰~ÔnA«î+´YÓ8€^DCV4tÄpȇÉEréãP#ƒ‡‘iuu žò‚IŒLñšMf±ì¯QÆn¹ù%nß2æÑü\Uó)K“úŠj©É‚¹äC+u4¹ŽNÌoá­¬lžÛ3ŸÅ,cÇ2Ï[ÝXaÜ„(öŽÅúyÓãA­é{ ÅF‰ZbÜöE/\eüú“õ먑{õBASEM€'•6Jˆ%nVR4‚b‹åš³œ­CNF4 SCALELOM‚C&f$ú…ÀMà ó@‡RÞ621:345ëMƒ X€øPÂE~+¥WÞk Îý\Z‹Õíª°7P)(¯R/­Z¯P{Ÿ3¬´~žÚŸÉ×v k/,N(<§™R({Hž“ÄÂ!¯b#­d.  !iw°épûÀa…ŠáÓß ´›ÅÖ՞äèS½@uA¯îg äKmýŸVmm½|Ìt?™E$Ý)K“¯ƒD‰ºæÂ嫤%˜H2YÓt¶J:¶hê8bDO`Òö=wê.9oK𸇾bx–öÏ•õIþáX&5:4sb6x—@É7´ªÐ-Po¬£°šÀòɪ3cd\nÐàã%Fäª`A¿d ÏžïTþ´§w/Ô¢ÇìmŸ”Rñg­i³# )›£kþ[¸)ù”Z1 ÏÌÚÇò‰R«K¡ð€ ;QJþ™û%åA樼ÂÈ…CW²“x\…‹r].ç–“…'ªt„0ÛqÒÄm{¹¨æ éÞâJ-Û©;¦[Ädóºý`ìÉ/ü-Q¢|™ÅñTç*?Ö¥­¶˜ßWoƒGC3'J]qV«;#7‘4æ’˜šKÇw›˜»-E¸Î¾Ô"з¡°™6¬€X{‰¯—2j»1!Çý6Ì'±®~:Õñ EÃf·!WäTð¯Ù SMP4TYPESLXNOFFS-45}M„€„–ŽÎ<ø¬U(Њ ¬Ì‰Uà~½l´Å5P…BŒRb¶û­fY£\ÌÒ mp‚aáF \7„50 ¦ƒ¼§Å]Ú1Ì"ëbé&\gݳŒŽu}õÔí€fÞ¨5rÙ”CÊV«0ÿå·»ÓÏýjÇß—Ý\Þ0+^Ý©ï^‹ÝàVwzç75þªvMÒR<4üœ<ÚjG/9œZÍiƯ¥ŒÖkv RqAãÅ.ͪ"ÊÉ½ÎØØ qøC„ ‹”(¹‚o1°‰R»Ü)R©»$JÔF³•ÙØîˆÝ’œ·4"ÁÃEÞn¡¤ z†Ð³€U¸`!´×N²(íE-Z´a’d™ A–E†¾Þ›¸ú#ñ˜7q=×~š¶ÛÉ0ÖÇ{˜½{{hs”]:à*nö|ŽyÇ^íV_æ;øÆ¾ƒŸÿ{s3Ju‚cp@ÐÙŽÙ©r+Ï'ìNN´æ„µfº¤Ïz¢ cÔeí9ãTǹÛ:äBASEM€g †l0j™›³ZŽ­ÂY ±„Ö*l>CNF4 SCALELOM‚C&þñ¨ð¢Rÿ538:358ðMƒ X€ø`Õ½ÏF¿QWt5Õ²ŸÖJírþy…9ó➘p|CbÍ|^m:›w¼ÁOM¤ŠBZºrÐÄý©ý=›²@"•wä˜.OcšãßIÕ£¸õñ²Âõ•l=ŸP~ë«ö‡Œ=#Pv2ªñ¹B"=å„0ßH½Ê‰]¿Ri“Èo\¢ÊÙK3euã.æ’©ˆË—Ï#\7•ÃËU­?¬šLîæ†uP–ºøî}F±ÖæÜ]9ðÀnk` {Ƀ»\×*l³~â/‡=ÈËW *}JAuW5Þ\ïúÙ’në§SNP*»å&?ŒzCîwƒè ›ªj²w# àΜ6 XÐcVM—«ûãJ´‹^œyÓ"0?E\ãcºT‘þë¿4†Ÿ·ëbn³Ûn›YÛÄ™¥ÌˆÐc%FÔ2—nñ [§óÌ•šüݱmRâiSºF­åÖ¨`egžV³÷¨ÑÆ$£\$gßÎd5€CÚæ NâŒ1á¼o’z‡)SnòžwiÇ0‹¬‹¥[˜puÌ2:ÖõÕS·˜y£ÖÈudS)[­Â>4¹ðqv¶÷û%Éz×uØ lm’†bÍu—ij×î«)&›\ôÛ¶k’,¨Í {=ÚjG/9œZÍiƯ¥ŒÖkv RqAãÅ.ͪ"ÊÉ½ÎØØ qøC„ ‹”(éç!OøÀßBµgºx±*,R¦Ìß|â‚C.åÌ7.D0ß .òŽp %mhÐ3„ž¬Â ¦½v’Ei/ÒhÑ¢ “$Ë ²,2ôõÞÄÕñˆÇ¼‰ë¹ö«Ð´ÝÍú¬–„Û8áÛ¾ºñÎÏt ×÷–^øûò€§{Mßoø}øn~ì/Òj¥‡:Á18 èlÇìT¹•çv''ZsÂZ3]R‡g=Ñ1겎öqªãÜíòBASEM€§á*pºÆVáh0táÊÄL·"-†‘CNF4 SCALELO&M‚C&Ø)+ }µoH'WÙ´§#UmfIÊÒïtÜ R÷557:250ðMƒ X€ø£1ê€} Û,à‰¤!Î2›²Î¿*!Å/–dú R~2‡ËZûg®° O~©Léú…E¹ïeÁ†Æûù”t¨.°?ŠÄ6‘lÐsåC†üšïè¤æ C•Bºò]gœúÔ³*ÍìËÔ#¦)ÇÜ—XD~o‘}¥äçä¿ÖqÇ1RÏe.)÷ðKlXç2éþ™ÇÙ¶Ñۉ̽FÙûVsæq[ÊãÍ÷E—^²Ï¨${‹‡R¿'gÓ;÷»ýà©Ãju䥲:Ô‹Nó¿gèÈ^>û¦y3¯Q>~؃øæ‡q2nŽ¥›gVrz²ðÓiàD\ý”Ã}É7þËŒ\ý@74Kû÷¢¤“aº¶ºž`e®f÷å\F¶öãV»\ãHKM¤¯vmWVîÐucÍž ÑŒÈQ†‡Pi­ "Ç„ÿ6Ö¯‡³?Á»{«i°í]¬¨ǢɃܔ׆(’ñ á»SNôbYÇ&›¥ÖîËð 8:pÌ ãØuѵsZPÃÆ5îj Ü’­DjÔŒt!=­Üßëð›/s9ß”š´Öçc¥MsÓsy¬¼ÓùìhÌ#‡…SÎ7ùKã4ö8œmÄ«~ÆÇŒÈ¥AŸŒ0ds4gvÖý—š37’%ÔͺyEYSMP4TYPESLXNOFFS-45†M„€Ø›Ûêštë@;4aäo>°,‚I¿µÚýþ`©0åæ™¡/s–‰2Ý.¯©P*AÓ4 c’Z8 9R½¥—YxÃmXDË]ü_„;ØÀ =õà•_ñRÀ}<`w÷»ù¢„î®9ºÚ¸ÎÙ¼àísÿꇬ}e9¬rO4Äàƒ$ËÚJ‹û¹Äm«rŒyÍG{ó%……eÁ&û?爐º_Ä{ß;9tÚ%‡Å$©À²–.fàð]h£ÔzSb ’PB8L2 œ)$~F€„Ÿ¨„–.> õ¸{™Qèc%Y%A¾ÿ5Ë}èÓl\ “ÄǪh¢…~–yI?óºò³Û×ÎïtÒEˆŽ~k®WÌ“l˜t/I)IÌë½CWq»v€ÒC)°´³×£Iób&æ6W7\¿V“Ãýë).à´;ºûë*oå¹Ç·|37s(s§?@îsö¹§¯BœÙ7Ø?ó?‡®îe™W6Ñ~_ìì/t—oçwq Üñ=?›£üBASEM€'Q-IlP´’QB›PµFÕæ†ÃöCNF4 SCALELOM‚C& €# `YIhjoš™ R529:256óMƒ X€ø“£JûÃ|«ºÖ‹ž]‰§lÞÏDÈä%Hìð‚Û}!TÉ«¯gf„Ýû´ó ƒ¢™B}00k€±R‡zéJUFDCâ¢Ùª„#²÷f·~Í)’Âùöñ‡ ¬ËKqä^]ôN/ݬš8‡g‡—Gv.y|M)¯8vhõI¨õÖ¯(é<ݹøk½ù\ÌÏŽš–nPŽþнíNÏ4OÇÏïoÇ/â<ÜÝ«ç §žK)ÌÞ:fX?!8»­‰÷ÕOº½Äp·gF¿_É–¾yÚ—û™Ã Ù5½zíE×ée^èùV.î»ñçê¢ÚO9ÔG¹‡McÔ¨œØ÷‰FۆƤ\&vÈJ,O }ªÛèV2C}°ñˆ;Y¿tŽ„ðJ4XâÓºˆé1ÕÏ몱-Ñø7´d’5:µÜQ¾¥L â‘m:Œæ38¤Ï>6ý Ót–É6y´•´£<Õ„{Ak¯ÄíP‚™S·eâŸÜð#ÁÀöylç¹?d  ¹ü¦3Wfhè ºß*üdçe0Gz§º!¹)Þyò‹‡zZ õ}Msn.Ó·‚û!ö¶†ãË]\V’®øo6Öæ«S¿‰¦;¿R~J§mW•öWë½ÕÌÝÄ<4èXSMP4TYPESLXNOFFS-45†M„€„æãǶº¦Ý:ÐN#MÝn¥Ìy†ÿa­­Þ6W¹b˜ ƒ62gºgv’ ,kiàbß…6J­7%¶ %„Ã$“À™BràgÜ¥ )Ïù[(Vq¦îN…îU&KŽ™ïGñªWf?ßCf8Z¹Ïô¡£‹Ç¼å&–ñÉïtÒEˆŽ~k®WÌ“l˜t/I)IÌ뽉«?âÒPz(–vÖ5ŸÕ’p'|ÛW÷"Þù™®áúÞÒ _ðtwâ;ð ¿W³7wÎjó ¾ïlTåîºàù¶ù•2çÌ]ÝË2/i¢ý¾ØÙ_è¨Ë:Ú]\Ãw|ÏÏæ(?BASEM€gC€&Ðh5-   †®–›UJ› ÉCNF4 SCALELO!M‚C&F$:À+ù¢D,Eþ.¤FwKh Ïvó(io_lib-1.14.6/tests/data/raw.info0000644000031500020650000000072012354177667013517 00000000000000Reading archive raw.srf. trace_name: test_run:4:133: + 593:417 ... 539:484 x10 trace_name: test_run:4:134: + 548:359 ... 529:256 x10 Reading srf null index block Reads: GOOD : 18 Reads: BAD : 2 Reads: TOTAL : 20 Chunk: BASE : 20 475 Chunk: CNF4 : 20 842 Mdata key: SCALE : 20 Chunk: SMP4 : 40 17659 Mdata key: TYPE : 40 types: SLXI : 20 types: SLXN : 20 Mdata key: OFFS : 40 Bases: A: 411 Bases: C: 296 Bases: G: 367 Bases: T: 406 Bases: TOTAL: 1480 io_lib-1.14.6/tests/data/xx.fa0000644000031500020650000000007512456157706013016 00000000000000>xx AAAAAAAAAATTTTTTTTTTCCCCCCCCCC >yy AAAAAAAAAATTTTTTTTTT io_lib-1.14.6/tests/data/xx#triplet.sam0000644000031500020650000000041312473067171014646 00000000000000@SQ SN:xx LN:30 @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 ********** io_lib-1.14.6/tests/data/both.srf0000644000031500020650000034254212354177667013534 00000000000000SSRF1.3ZBustard1.9.5H¦ÃEtest_run:4:133:®ZTR  HUFF€€1 ƒfôÀþµ,HUFFg‚à‚œ ÐMXÑETùcåÍô0¹ÿm28[AˆêÃýÿï;Jã’2Ú(ÙB8QAêÿá›8àAfk°ÌÀR‚@Ðÿ>buš%Å&@¬HUFF…À ëHUFF—`m¹QÕ¯ì%FAä&‚  ¨Á˜Ôn“´ÛÙë̾tÏΜÿs ÍÔÏsþÜ÷}73rÛsÛa#OVjlµ¢”³e1ÒÁÛ²^{IÅ"„L,•<Úä¨V++m©IÆÚ,¦ƒjz›‚¨«¦±ãý˜yofv½NR¢¨”Òr Äqáÿÿ(`¦>¬ÍçÑ6›æWd´˜‘Ò5éx£l~ÃÌ·¤a›¦0âvšâÎf(éŽÒv*ºòrT·Ï$mµºšŽ’çÐèP ÅD¼î~ïuÏ܇  ¢*¦LÊÿÿ°T€™ú&ŸfÃÌ¿O‰ÃÍlh3DlŽ0}6É=k!ĨókÖ˜Oò/ke8]e(6—¥š>Ò¬PŠ®¥tIj–Ï[!:´-GNQïÅ{$K}NwKò5žd'Ũ…ÀÂ#UÿÿMT€™ú²VDãq6Fb˜1ÌF ㊔Ï>æW2"”ò[¤Hå7ó͸|FÈî6Éw3ýpG*-)ŸÃúè¨ájÂHQHUFF«ƒ—`l·mÛŸÛ’uÒ‘¢¨û"%QŽÛIš¦A›"E‹e(6`{ÙÊ=쫈F3ùãQÎrfÞœko˜›L¼†ÜÍÓ(fîcŽçÍ5sG†™ó±‘ÎŽÅ¢W®•ˆuL“öTt YèZµiÓô@ºÔ¶Ö¯d&[ÚýÎÝÕJ@À²_øÆÆ˜Øm€iKgÚNÓ÷ŽT€™úÆ2Ì_lÕa6 ùä{ç3¿¬‰ó¿aâÚ|óÿfXšnÜi*ÚJÝÍH…r†HéguÚú-²[šm*Ÿô›,:MCÑ…áÖö¶÷ž÷9·í00‹’(š¨‰ÿÿI*ÀL}‘ÿ7ùõ!ŸáZÛ:Ž™µòë|:i„aHÆU>cŵÎòÛmÝT$Ü,¥Ìç•d>×Â*D©é¶|†æÓ€¤7m,ìC—,¯ï}ß[½ßc>çs†3»r…Â8ó›ÃÉhæ»ls>Û%#ÂÊ|®ùn\Šæ»Fͯ#Ÿù-‰­™²jíšR-]£™ùôc}„HUFF`„‡0°†A˜ ¤ûÿã €+`IáÐ!~W„´ÁfN@gø(Ž˜¼LC-ëÔ;eÊ49TdØ’‰'^[—›/”Åé/8|–šÒ8Ÿ‰Ð!Ë×ºŠ…"R:m´ü˜»BPOS,  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHITEXT áPROGRAM_IDillumina2srf v1.12ILLUMINA_GA_MATRIX_FWD# Auto-generated frequency response matrix > A > C > G > T 0.85 0.13 -0.02 -0.02 0.86 0.94 -0.00 -0.01 -0.01 -0.01 1.22 0.02 0.00 -0.00 0.81 1.22 ILLUMINA_GA_PHASING_FWD 0.004400 0.003000 ILLUMINA_GA_CHASTITY0.600000ILLUMINA_GA_BUSTARD_PARAMS 1 4 2 1 1 37 1 1 4 39 1 38 74 2 1 4 1 0 1 37 1 1 4 38 0 38 74 2 0 1 gzip .gz 0 0 0 1 37 /staging/IL9/analysis/080813_IL9_1213 38 74 /staging/IL9/analysis/080818_IL9_1232 HWI-EAS130 1 -1 -1 1 37 /staging/IL9/analysis/080813_IL9_1213 38 74 /staging/IL9/analysis/080818_IL9_1232 /staging/IL9/analysis/080813_IL9_1213 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 s s s s s s s s ILLUMINA_GA_FIRECREST_PARAMS 1 0 /staging/IL9/analysis/080813_IL9_1213/Data/default_offsets.txt 2.700000 /staging/IL9/analysis/Instruments/HWI-EAS130/default_offsets.txt /staging/IL9/analysis/Instruments/HWI-EAS130/default_offsets.txt 1.500000 4.000000 1 1 gzip .gz 0 0 1 37 /staging/IL9/analysis/080813_IL9_1213 HWI-EAS130 1 -1 -1 1 36 /staging/IL9/analysis/080813_IL9_1213 /staging/IL9/analysis/080813_IL9_1213 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 s_[12345678]_[0-9][0-9][02468]1 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 C2.1,C3.1,C4.1,C5.1,C6.1,C7.1,C8.1,C9.1,C10.1,C11.1,C12.1,C13.1,C14.1,C15.1,C16.1,C17.1,C18.1,C19.1,C20.1,C21.1,C22.1,C23.1,C24.1,C25.1,C26.1,C27.1,C28.1,C29.1,C30.1,C31.1,C32.1,C33.1,C34.1,C35.1,C36.1,C37.1 1 0 /staging/IL9/analysis/080813_IL9_1213/Data/default_offsets.txt 2.700000 /staging/IL9/analysis/080813_IL9_1213/Data/default_offsets.txt 1.500000 4.000000 1 1 gzip .gz 0 0 1 37 /staging/IL9/analysis/080813_IL9_1213 HWI-EAS130 1 -1 -1 1 36 /staging/IL9/analysis/080813_IL9_1213 /staging/IL9/analysis/080813_IL9_1213 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 s_[12345678]_[0-9][0-9][02468]1 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 C2.1,C3.1,C4.1,C5.1,C6.1,C7.1,C8.1,C9.1,C10.1,C11.1,C12.1,C13.1,C14.1,C15.1,C16.1,C17.1,C18.1,C19.1,C20.1,C21.1,C22.1,C23.1,C24.1,C25.1,C26.1,C27.1,C28.1,C29.1,C30.1,C31.1,C32.1,C33.1,C34.1,C35.1,C36.1,C37.1 1 0 /staging/IL9/analysis/080813_IL9_1213/Data/default_offsets.txt 2.700000 /staging/IL9/analysis/080813_IL9_1213/Data/default_offsets.txt 1.500000 4.000000 1 1 gzip .gz 0 0 1 37 /staging/IL9/analysis/080813_IL9_1213 38 74 /staging/IL9/analysis/080818_IL9_1232 HWI-EAS130 1 -1 -1 1 36 /staging/IL9/analysis/080813_IL9_1213 37 72 /staging/IL9/analysis/080818_IL9_1232 /staging/IL9/analysis/080813_IL9_1213 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 s s s s s s s s C2.1,C3.1,C4.1,C5.1,C6.1,C7.1,C8.1,C9.1,C10.1,C11.1,C12.1,C13.1,C14.1,C15.1,C16.1,C17.1,C18.1,C19.1,C20.1,C21.1,C22.1,C23.1,C24.1,C25.1,C26.1,C27.1,C28.1,C29.1,C30.1,C31.1,C32.1,C33.1,C34.1,C35.1,C36.1,C37.1 1 0 /staging/IL9/analysis/080813_IL9_1213/Data/default_offsets.txt 2.700000 /staging/IL9/analysis/080813_IL9_1213/Data/default_offsets.txt 1.500000 4.000000 0 1 gzip .gz 0 0 0 1 37 /staging/IL9/analysis/080813_IL9_1213 HWI-EAS130 1 -1 -1 1 37 /staging/IL9/analysis/080813_IL9_1213 /staging/IL9/analysis/080813_IL9_1213 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 s_[12345678]_[0-9][0-9][02468]1 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 C1.1,C2.1,C3.1,C4.1,C5.1,C6.1,C7.1,C8.1,C9.1,C10.1,C11.1,C12.1,C13.1,C14.1,C15.1,C16.1,C17.1,C18.1,C19.1,C20.1,C21.1,C22.1,C23.1,C24.1,C25.1,C26.1,C27.1,C28.1,C29.1,C30.1,C31.1,C32.1,C33.1,C34.1,C35.1,C36.1,C37.1 1 0 /staging/IL9/analysis/080813_IL9_1213/Data/default_offsets.txt 2.700000 /staging/IL9/analysis/080813_IL9_1213/Data/default_offsets.txt 1.500000 4.000000 0 1 gzip .gz 0 0 0 1 37 /staging/IL9/analysis/080813_IL9_1213 38 74 /staging/IL9/analysis/080818_IL9_1232 HWI-EAS130 1 -1 -1 1 37 /staging/IL9/analysis/080813_IL9_1213 38 74 /staging/IL9/analysis/080818_IL9_1232 /staging/IL9/analysis/080813_IL9_1213 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 s s s s s s s s C1.1,C2.1,C3.1,C4.1,C5.1,C6.1,C7.1,C8.1,C9.1,C10.1,C11.1,C12.1,C13.1,C14.1,C15.1,C16.1,C17.1,C18.1,C19.1,C20.1,C21.1,C22.1,C23.1,C24.1,C25.1,C26.1,C27.1,C28.1,C29.1,C30.1,C31.1,C32.1,C33.1,C34.1,C35.1,C36.1,C37.1 SMP4 OFFS4074Rý593:417ßM°°ðÍ")¯¯GÚÈJªËa,\ÁOS|©4 |žšæUb¦œn$R5~¾(MÛùkÔ ÕF=V,•ÃÈ qNäå¯Qú¹ë">ôzTª tø dªVI¨‚GB€è¾j9#/{nä;±Ï}<ƒcMK¬¬xœ`ákç§°ï@Y”6ˆj„^`£+aå»/[zœËÛ˜?¦4]ÍÅ—|OÚÖÔX¦w+kõÔ m#òS+ÆX¹)“œpZwÒ×Z×ÇΠ¢°….%;½ÜÉÌ1;7ì/°‡¥í7/‹ ºíV{ÛÂSÂtx6“ÛºÏSÄ:-õýà¼|!Ù˜‘§ÞñÁsŠ£õ3NUvÛŠ"éëÞÖÅ)ü§6{×Ð :$ÇØyXèr{tÓI¦Jg> õ«Pä íÝ6ÂÉŸB¹£Í^xR›ôž‰¯m_Ök´“žçÁèÓÁš¶/¾ðn€«cªÕ£^«!oTîÜîˆ3<“‘îN+†S2ÉCù²û±×-‡x#åVèy©ÛµÇw—ÁYµa­š¿€¯}AU.aî&ÍkuÓÇAIçÌïVµ®ÄVj¤Ønv„4»‹gt^iÞ ‰%<‡]n­ Ÿë¤å `ír´Mb¾b?€“C¼H‘=Óv}!²,°Ÿß_¹~XÁë1&&3áÚÑÔvšýt‹ç_UÜÎW‚cHº“MÛÙù¡ÿé#<°Îi!Ë|³¸Zž˜¾ï¾ Ul¸»zLaÚ£h¤ÈœO_¼ûURe'¥.SMP4TYPESLXNOFFS-40xM„pRBC''ZꌤÉgb0aò˜|¥ú(6Xª*§•®ÂÛœUêF¨Üóª=f±!„ æR”X ¡0ÆV4ºŠ!AŒþ™dÞ0I’˜2V”Xl´‹o:v)2 }¼ÑMZ¥2Ó:¬AiEÆ#¨&ÄZk:QgëÕ¶·~Ùú¼µ]¨¼¯Æ,r„Ø”ÔYÓ ÆW£¸¦ •œŒúÔ%/SšÕ$j):þÁÅ%sqÆ­.ZV³râfîàˆ 4˜” O!Åô¢Â"˜NK6ÓC¬Rh¾Ù²å¨sT‹Õ~ï]k9B<ùÀ£š1Ñ2À zl /Tˆ0Qì(×(^’.CŽ\¬´W™JUžqŽãμ¡G<Ø€‡Brs œwÈÏk†™wýˆ“hÀº™›½‚ÑïäºøÁŽx0ÇžpBÅÞWonP 4©‰Év‡»–ÄlÕ»e^hííêz%ÕM_Nôe-tø¶îÆBASEM€g6À±U8 4–Ð27gµÊÚG:CNF4 SCALELO M‚ ÀŒ‘ÅÊ€'nWPôÍRúÖ´Õ±õjÉR587:382ÜM°°ðQCLg‡†GÈNE,ýúËÑ$'«§?îÑ|Awõ9–OìÕ’Ê1š^tW-àÈÝÛN$~r­¯ì5ê²Íkå’ÆiÅ{äʳ:ͪWëy…ŠZ¶&[Û0ÏÚ€ÉV§æÂéÇä³óæµÝx|V÷98ÁáÖÛ‡©÷RééÝ>ÃØþm-nÑZ:CŸJl…þ¡Û$bVû'Z—Áö;š4DZ ²­×Ù½õx÷ó£jtm៵ºJZÏ[S[¤W««½ÚµQ¹¡2°Ö s$¹·v·PéÜônדšÐÎMËŸk§ôªw®@EÚÝ|hñÖöqìu{’”ƒ=tîžvÉìêàX}ßPH…>cé²vÈÓõ+i¯¾— É0OÔùlÍÎfþ¤ä©OPãC¡ºq˜Ý6(%ö¤æX¨dIDeæ\8ŠÁN˜çÐÐ6Ñg‰2k!0ü ×µCe$ HíP­ù•? 9Ü@—Á0Y‚½TïŸhVJ-®J­ü×;™X²†…eç}ª?·ê¯Ýt§Žã‘—®úR ꑤּtøÛQæ¯Z3Ìû‚9<bœi¢•aD]´ùY¹”8K¸qkLjüSMP4TYPESLXIOFFS5087õMƒ@ Ðð]œ¦'Ö?#zzÄÛ‘~{EûxÙ‡={’ä]¨û)š…Aàã>i)ùüXY’\¢Ýg,À#Ôæy‘ABô]7êè JbíŒfžTåµMs¾ýb#xp¤ÂÇTµLz¿R©“ TߣwYŸùgUId÷?5Iíî}D8n¥½‹£×û'u#åÿÓnx1Š|¼¡ðAÑ_Õ²¶Õ*KÖû1~*rôZ,UPs¾>ÉžÞÿ”p±•µ=orïŽ8Þð‘Dù{.Ayëo ç2_ýðpþLsè¬žÑ Å­õøkÅÐs»¬«B eȹ¿7ˆq`Ý6/$>ŸÙI朳$3êÚ¯E§V£îP'IÏÄf¤äuª\òzͨmÒã#§¬3µkk‹5ÍtŒAÙ&Ôu4‚R'0;K0k2®›L¶3[˜™U–$¡8Àq‡EEÊ™Œ=M{)ÁíLõRäìŒ\¯°D rÛlÜñ{.øñó g(­.±C"–Ò‚CgI"‘¤ÈŽ–°ª…»l¤÷ÂFÀr`~d¾cDuˆÏÙt…û@h¸J­§L:›ÈJ¬ðÈ<Ù– Ÿ†µt€3…Ê+>JéF¹²½¯Q8’Ra1<ÁÓ1£h‘EÔJ­5:׬Á®€&Š3EW‘´SMP4TYPESLXNOFFS-40M„p~M®(D¼›E*CÀ„!Gˆ„e¥¬[j°T×lò–Lvø";ü¯22Øj6°„D‰e5Æèó]vsXŠî¾O;müGk8ùÃ}=æ[þÝÃzû!«¢ á~2úx;Øášjj5.ù‹ü5Gr&Ñ ŒµÖìDYÜñ†Úúmhs²ÓÎ~T¯®d°ÿÈ¿•xNfƒšÜlÅÞ´°Yù›­ÌKÛ‚r²¼šz *žˆøÓ/r(VärhMŠ&n¤wÈ|@8§É‚ÍE>ãczéIVy"Ø$I6ÓlŸ¹ãŠù~ë˜åyÇ;Jýɤ‡à Žð ¸š2f˜cˆ;Üa‡-ö#“äqAž‘bŽYTúOÿåI¬¾§ŸßZkŸu®x˼3ÎqÜ™7´™'Ý®ÀÇ!¹9PN ƒ;äÆç5ÃÌ»~ÄÉ4àNÝÌÍ^ÁèwrÝGü`G<Øx«Õ;н¯Þ\zÐ~|ž•èV¿9S‘-ëô\šÙ»5WRÝôGÝR%¼ú¶ÎðBASEM€g‰5 Ò$2²dº©Šc”á(sƒmôCNF4 SCALELO7M‚ À ö™þÀİqö”&Y(à 84 pìüÞ0¸®i³„VÓó9f-ÈR505:428ÞM°°ð’¼À& ¹Ë:zÖÝsÕó“W]¶½Z²›¢ER½§™«¯Á@½›…”¥fbfo1¹¥÷î¶9LZ¯ºÞ 0ïM±u ŽwqT†¯ð§$Õ!–~’ ëš·ÒËV]³Þêq…ê'§ž§š±šÑ— RÔ¬@6'&½¶Ôw‘´²âÓ²:ÍW³&Ú—@ ¯z˜3q_¯`ØÆß#›MÄóÈ©VÌI-W ÚO<‡Ä™¼¶Â”ܾ(‡æI2ë‹0mëY„ûYéœS91*Ä6Ÿ2~ÝQýâ%´"éêrÙ‹Úm6Q»ØMâÇD„t_®·9Ù ³©ù=Í74“ÅRÿJ[2 ăÌ'>J¼×‡NkÚTÆ ÄôêŠCzØ\ ZüðXÛVÖÊ×Unê0¼qý×üÆÇ…2ÐH)¸é}W¼Êäjk1J®˜èñ°Î‰ÑÑ6FE¹¯C°AŒow£¾Þ1ÑtÉ’bÞ픡Y€sTL¸zz`‰‰XÙ¯ÏüšPÝh¢åÅ%§©¯µ2¶ ;‚ÂÄ­|Y4ªHZpþ ’#ž·à¤T²b8aËìR‘"ùè”ÄK’2.í¤mÚØyÊhÀUûós¡³Ú ÷OQ¤;°ÎwÃÃës4-«5‘Æš SMP4TYPESLXIOFFS5087ûMƒ@ Ðð ÓqÙ´}Wp¶… [ÉC‚•?PLñU‹¡‘­Zg¼‹+žtÁ]jÍú îÛ.ýh®"¬ëÑn¼šË¶èØÕÙ@²…çã´­íã—¿Ù~Ïn%¨“\°i*.7Ü4;ýЊ L.ê6wc«G,ç²èYÙ zåsG¢Ö¤È¥?j}MֵŠ‚öD…-øªè séXu'ûŠl…êê­®e2”)-p 2üÔêó5{š^Ý£½‘™/AîÚÒF ¡üÞ¨RAàaÐgœ×çG U¹uWS*š4&ÀI™AºùÊ-E®zÖÄCvcÛ’‹£ƒGºæ+öLž\ùßdY=âÂ×ö5Eg E(ÃàcwD®ã4 C\¶‚Õ«R ¡µ»îåAš[A3lázЃ-,—ÒýSMP4TYPESLXNOFFS-40€M„pRBC''Z'µó¥Úh!Š¥ª|$Ùu/Úâ²} ÌQ£ÈoÉpÄZç°÷ÂO‹ÔPƦ|Š€èâíô‰®OP¡]8K•äq)ž1›oënÜèã-ÈÌö«T&¥"KT›ÙóT9h›;Û6·¢Ýµ¶¦5õ«º„j—ÞˆtwsÞULÛþjÄõ\Ó;yV˜hCVyî•Ìkð•3ù\uà9¹œó‰Èñ×0“ªÑ½ø†d:pG >°aA#š²áL9ahxè!þôÛ ¼fž- ­ö¦z­S¡\“£nš(þœ%JP%,~´ CÎËXÑëÆ ¶Øçö…›¡'åTY„‰r¯§D•ýf+8ãÇyCŽhÎÐvÖ™Ì\èN|v´™“ÑÈ9æXÈx0êxÇ}ÕQ?Ïù’Ÿ}“Ïï@Ž· Q-•!gQöQ¼Z¡ÓBlqã:Õ‘æö»ŠÚÛ¬2{»íï랪Ìᣮu»µÿBASEM€§¥¬4ØrsI€2Èáp Acb´ÕCNF4 SCALELO4M‚ €`× ÅG'Ò`jÝæ ¶^»ži¦ƒ*Š|€z;]ç>Nm€ RØ548:808ËM°°pää+^W×7ìц½14÷z;Ì&º¬G&Ûó ÷"%kÎ@„O «…ž}ï'€“6¶æ]ÙÅ€X594:`œX·Ûlx¼™ M ¢9°ÐíˆÎ&Œo(lÚi–ÙY×z…‚ãLùMï˜Xe²é¦(jJ BxpÙ†Œ{Q J†X~—(e‹”µbŽÉ°ËÙ‹?6^-çM¨ì}†¸2B åã®\)AµðË2êÚ ŠÒñ„ÇCͤtŠðOy¹Ô`šXyþ×ÔA"Ùd0êHFqÂÁõSØ$Q&‘N 'ƒšá!ó˜™cŠE²"’¯˜ç>?1À¯ºbæ)•ò©$]2µAE¦'gÈ£’\ßà.SÄÇT…˜›HÐQ ·¹M?-Ü¥ŒDšÎ|—[lçŽØ´3 /yí' fÃÍ“§ú¥ÍMwón’ò¦¯ý1ä¼á·væ½0ãDÜ0æ-îr'ÁtèêïHX3Æ»†èg§cNÑ'ÙPoñ³ŸÙâyi†š%ß …Ê¥ÊqÔ~Àü…ÃÂûør Q„‘‡02¹Æ‡”RŸ:T<@Ïã¼à‰püîAAúéÊ‚'y $¼ˆæ L?ƒaó! )¡!õTq‡Ô|ÍC–éáKŒcg‘ßXd›=n²ÓúF÷ƒ8ò$¿”(Ô<¢H™WsÐ~rÄÛdíù_‚²œµºäç¬d>ûÕ4aiU4¦…}ДÌf.‹±E– ]=듲ë¾g¦Ä óQ¢LN¢Ô–ŒH"Þ¢¦<¿%µof83ùëBASEM€'%4'¦M‡”“€YSZ@™l>CNF4 SCALELOM‚ ÀŽy*þ¨A eR#568:418æM°°pIcZYêŸÅ7ýŠñÔžB–´¨V'ùZ9“OÓ<;3»M¨ŒÈâ©>ZB¸O*å_‘à˜ÆûrÏÚ-§èÛ˜qà7ôž·×X÷4—ä©6®‹|LúbU2ò(˜èÂêÅ×ñ^+‚à+v»2ì©Óráó7WÎI¶€ÝÁ’tÂîlœ•П§Q’[Å'ôÒ犾â.E-o¿¾ÃÝìä3psRpÓÞëmóóóžKß½¸ž{_£à«\ôm^,ó…w*:ýh’”{óNíKóÊ ­îÕûÇ‘$?°Mû~4ÁRdgc"3ªEöø=%]FWp¸w W˜áA RzZì¹÷[ëÜY:Wv4Ž$¨‘¬÷ÌLÛ›£#ªF¨ÛO€Ø›GÎ[ TT;Kìüp1ˆÞ e–`v0Sª<{¹À« C¨²Ø%žÖıšWÚþí˜Áéò­‚çs"­ky\QS¹ë"ZÔ•=ÓR̆r{š¢óÆgö²ËØ’vlÞ@š¦¿“aLÑ¥p…-‹ \ ξÊmúØœåó?D2N•w‚³x·”õ¢ !¨øLåúñ]Љ!YëFMËÒ I› ™Žß×­N%6 ¯ÌtìáÊÎ¬Ž•PQ”8°TdÞäUú£ÂYâBÌAÈ Gßà'4^{7SMP4TYPESLXIOFFS5087ùMƒ@ ÐðÊè‘ ê86d#h)jó¨LB{ò³Jò>ŒvHUEaN„+‹½hÀÑà™c‡D^Õp°¼í 7|0<æšÑƒkùy[RCŽÇ¼F‡yåohàÕEM^PâÍN ŒÙOu§¬°Y%hn²µDÝG+è»gŠ*±Ý7Æã†íÜóA›šÕ-˜ÞêÆ %‹îP41¯Ñ¾¬)›6gdöó @¿(ÄÚ¨¹>qFCÔãkΩü0ÖÀ„?M-˜Ûµ÷ƒÏa°ïƒL{€DvGÌõ}r7ªE‡”E·å’tÔXǨ{Ò=H}|îjnÆÐ/èád1_íúA¾‚WàÝô¤±¬}Þˆô®½¶¾qÆÞÇt:ÖM‡´Æ+GöD®nÈ8φ=øACÓ)Ÿ÷úîzÓ¥Üw¿ \ÒÉЄÁãsê¶ß¢äÏYc–•$cу:ç¾±"çù1®ó´2Hå6“µÿbYšª‰¦ÉëýÞb^É­¤IáÓ*TRƒ¨ÛºE¿ïö•]¿rv‡Q*liÐ÷“`þÔvXq®x?×?8#¯V¡ì¶Œ4·²´m´’¦ciØB™ ‘JU3/{—ÔVVÃè§õ$r£ù11IÖÖó[*Ère=­UyJåÚŸ($5ã‡-1å)œº ÉÞÐŒ°ÝRR.Ë# T÷ø„MéŽnRž=Û‚Z ýk­4+ˆ‚CÚÁO°j$%FßxDªfÉ*i]œþ‹Õ¨(•l Í¹/Ùÿ$é7¢*¾=²44RtþajÔÙ‡¨Ö^ÜD|©€c+%“‰Á`x"u.ží´4”'óŠY—©ÚNÙ©ˆ=aSMP4TYPESLXIOFFS5087øMƒ@ ÐðU²hc×™(Tëæßœû/²LÝ“öŸúƒÈíïI]hÕ¬œ›¹]¿¹å!ðmh— o‡Aæ|R‹a²¾\¢6u·ÒÒûÇD»aJkÚä¢óóxs$ûx>PL= WÄüÙC˜MËSÒw#`³ôL!š«§G¾ìˆµ$E¹ræŠ×9ƒÖ1"¿pß”Ä|ØAÚ¬D`ÑÇ©:M&C¸óÁ¸ÇR\ÄißWxNçF.ç|"r<¤DÇ5̤jt/¾á™ÜÁ6,h0É!É”††‡âOO°­ÀkæÙ¢ÐjoªwÐ:Ê59ê¦IâÏYÈ¡UÂâG 2ä,±Œ½n¼`‹}þ`_¸zRN•Eˆ(÷ŠqJTÙo¶‚3ÎqÜ™74àˆÚÎ:“™ ݉ïÁŽ6s29Ç ï@F︯:êçù!_ò³oòùhÂñ4ª¥2ä,ªÓ>ŠW+túCˆ-n\§:ÒÜ~WQ{›Ufo·½ã}ÝS•9|Ôµn·öBASEM€ç€Æ† ÓÚR¡f +r‰Ú0}CNF4 SCALELO#M‚ ÀŒw  yÊÄöpç€E õzžvº RQ507:435íM°°pM#±Àbl&ñ9îš}™Ý"Àíþ "£âÒù¢.ªm‚Ú`Û°Wo‹ÍIŸµ×/ ÊA1 ~uúüÄöA[Í´‹£›ÂÇHÓ‚Ó~i™ —”ÿT]GFµ”·Rý ªWèXbË»Nþ#s(Y¢ðsÝõ‡SàõUo»ròbŤÑ9q¿àyÏg•D!¼°mf¼i)Í ‹?æc³Î·Ñ¿xºÊ_¤Ñ½ßñÑüúRƒ,—6¼go‹²{ RáIŽw~c1Wü÷ÇÜJ—žÛõÒº,øa}w&ïÔñ/þp/—Å™7Dë Üv˜ãP«QŠ1ÈÀ¯|ú[’F¨êZÒåý¡^ û8ëW’¶#…P•g™-S@O=™–ß_bм·<)•ÜPÏÜ$Ö ¯ÿY¹„óøajÆRÓt2_9R;bä¡Ç]µ«ÅM¯¢™,§µ“ÐïšÍMÄÿ…÷Ë-æBô Ò ’ësÿ×~øa:Ç…×”!á·TŽ)È¿·MJu !Ê¢œ)±”µ›„‚ÂÝïÍVûliâßûR Ö“'¼ªè\3 /µg÷ÖÀeñÖšLyúÐî—>ùÛƒç7Ãy±Ègwo* Ðu1Û&Ê yž ˆ5„­7SMP4TYPESLXIOFFS5087Mƒ@ Ðð±ƒð’’µ¼_÷’œ , ×ÓOøé»Þ+à —z%²ˆÈ¸õ‹_æí_â>'á{y¾.Z|yüÓwÒ5µ*–~1¡ —^ŠÆÄÓò)jÔ^ªùù,A³nW:À›Êjúk?«ÝÇ¥÷ÐÞ¢ÙXÏF#-ŒY#ƒr(uÀÚ{UÆ4PàÜÒßùK虨É̉ ç†eÅßµM昭¡Þ2Ö8ÓÎGQ(`í¦FK©u«58XÇÍ&j¸ãÉößïÔ»ÉáÒ‚i ØCÚ¢ÓXÎRÐ5 PN^ÕF4‹?a3l_SMP4TYPESLXNOFFS-40€M„pRBC''Z'µó¥Úh!Š¥ª|$Ùu/Úâ²} ÌQ£ÈoÉpÄZç°÷ÂO‹ÔPƦ|Š€èâíô‰®OP¡]8K•äq)ž1›oënÜèãnòÐ*•I©ÈÕfö|UÚæÎ6¤Í­hw­­iMýª.¡Ú¥7"ÝÝœwÓ¶¿q=×´F³ož&ÚUž{%ó|åL>WxNçF.ç|"r<¤DÇ5̤jt/¾á™ÜÁ6,hD“C6’)' =ÄŸž`[×̳E¡ÕÞTï u*”krÔM“ÅŸ³$C ª„ÅdÈYb+zÝxÁûüÁ¾p3ô¤œ*‹!Qî㔨²ßlgœã¸3ohÀÍÚÎ:“™ ݉ïÁŽ6s29Ç ï@F︯:êçù!_ò³oòùhÂñ4ª¥2ä,ªÓ>ŠW+túCˆ-n\§:ÒÜ~WQ{›Ufo·½ã}ÝS•9|Ôµn·öBASEM€'‘ŒEÈ`sc’ª¨˜cà 1§XÎCNF4 SCALELOXM‚ @‰ÐÀ ÷ I¿€ ûƒ+˜Í@õÂñheÕËðØ&/Þ»›ìT­¬Q xx¨YÁ·‹;7, ¯‹/ –‘’1± ¸¥Ž#ãõÀÇ/ÈRí561:484ÚM°°pÕS2þ®oG%Œãùô}†4Ó‚£ù°Çn}w5Kx Ìb6àçâùò×NŸ 9$o©~9ƒPu+†ˆ ʾÆ9‡LãÒ£ñ¹%/î·§Px,36ʽiHèþŸæ¦ÊcL}'† QøÙ:ÊŽ˜ÿoµÊ‚Sð7¤%Ö]|økën©­¤%¡ÕðlðžÛ¬ÏÜ/QŸ¸™·æî@÷ùÇö݄ƿ݆y Ë+øì—E;ÞëÊ øŽ[ŒnÂß·G9­í ép9Üåa.”Çwß±óJ\(¼ñþŒÆ’øe&ZÅä|°ˆßÁXš¢>d£Ú5ô‰Ä|”nã ŽiÒ¼d!sâ⹟ öíܰ1ã’}?in8Näဿe{Þ‰"RI7ßÂAÏÐÊDVMX:â«Ò<ýBšIfiô)™S"0"ã˜'X,¹j1þ§(hW‰=Žï=¡å²j¤²®ûn>´TÕ1xʽuM3’‚±B°óèí‡êžž,xmµ„°¨/Jµâ«Ïûû ‘cÙª_wÕ¸W—}¡W0¿“NM—ÑZp‰N€à›<@Õâà&»˜bÕîIÍa‚FqÍÕÏx9’'8ÿÅšDÎñSMP4TYPESLXIOFFS5087þMƒ@ ÐðB7·`ç÷ò9:,bv0pÒŽhdЂôf)À}ËÀ| åtëWØÛŒøŠ…žúSÌÏD?jHé¯!ôFXxá[uZ>~#‰3¤Ù?BÌâoš¢¿¦1–‘e|ŽÒæË¦¤‹¿,t±~Åáýù|FÕâí˜ó¿±˜¿ý‚‰qÕCËдV¿³ô3ø Íã¿!R?Õý%ÎëÏ3ÿõÄ? qjÈýÓªŒ>®£lßñÓKa½e¹û· ž Æ£èw|ü>¥›®%ÕxÖ÷fâiûùhàx]+¦Ž·õ¢àçÊùg2+ãSþ£Gp3N­˜hF¹à7%)ß ÄÁ‘L<çO² j‰ÝØÕO\ÊÔnªüa¼8vÓõTøB]Õ¾þ!WêÞ–IdMá-(,0Þ>DS‡þ>šæ»X`y\eÇ&Ì žu¾@46Æþ!ô»ðÊç)Š̠¨Å>*Qniž¥ë!au“(†ÞPæÊ,¦H¥ÔP€¡OVd,yÑ—ÝcFñ¬¸Cà„dC§u%5j×ÑÛ?t=PZ=ÄÞ–ºÎŒKûA“í#¿ŠKQÀæœ&DñR±ë’Vdd憗Èç¯ÅU±4jœãCk8ìåUX››*£ùÁ>˜ˆšùrò¤r³SMP4TYPESLXNOFFS-40xM„pRBC''ZꌤÉgb0aò˜|¥ú(6Xª*§•®ÂÛœUêF¨Üóª=f±!„ æR”X ¡0ÆV4ºŠ!AŒþ™dÞ0I’˜2V”Xl´‹o:v)2 }¼ÑMZ¥2Ó:¬AiEÆ#¨&ÄZk:QgëÕš·~Ùú¼µ]¨¼¯Æ,r„Ø”ÔYÓ ÆW£¸¦ •œŒúÔ%/SšÕ$j):þÁÅ%sqÆ­.ZV³râfîàˆ 4˜” O!Åô¢Â"˜NK6ÓC¬Rh¾Ù²å¨sT‹Õ~ï]k9B<ùÀ£š1Ñ2À zl /Tˆ0Qì(×(^’.CŽ\¬´W™JUžqŽãμ¡G<Ø€‡Brs œwÈÏk†™wýˆ“hÀº™›½‚ÑïäºøÁŽx0ÇžpBÅÞWonP 4©‰Év‡»–ÄlÕ»e^hííêz%ÕM_Nôe-tø¶îÆBASEM€çFPVU- \ZËQ°Ù€Eˆ`–ÌCNF4 SCALELOM‚ ÀŠ ÔoN_ª…œR…539:484M°°p5¶™šö¾r¡}:šVåö˜Ñ¹ªßszÇoÿ6 ¢§6ûþkü¼–è ÷f‹ªlé Ìøs¼¶D•§Ûÿý‡« PžöhQ†^ož;¥ô§æ½Wc©›>ü'÷ËDûJb¾ôAÄÔY€°ßæÜ˜zþ×ò+RMGòÇù¿ëûQ'ÎzEEÚÑÐÁÿ`v ±÷Þ]<ÀÐÛÈKWµ}öþ‰x'™Öé{u`ʾ;‹O´ÜñˆdT}9©ùù¹pbß—²\…y;XˆÕ‡‹Ä,>,É·ãé/_1n÷~ÔAþ[Ùíë6lŽªþ[ßœj¿W0.éÀæ–Ù¢)GڸќùYñ¢«8Àþf üGü}Ê—â ø‡†¢¿>¹óâ#»ôü›3Z£WòoêoÊÅ)eÑýÞ¦ºEÙÓÄoÖž‰ÉÔQŸìˆàŸ3O‡¿‡Ÿsûí|¢YáÃRSN÷× XÂ/–Ÿ+ ¬/Qçn\<àó¯ü¯7 ë{ªÇ+zb«.êòàc¿•°5æeµ=Ìí&ëé=Û[C4ËÚb 8á}Á‚¿ÈoÔ´ÞÎQ¶SMP4TYPESLXIOFFS5087Mƒ@ ÐðBQ’¿QÆÑnO |fw†ÁFÀŠ%+ üt‹÷ /+Ï£“ÿºõ«bËû¨¥zíÊó!ùoÝ”2– SÚ4¬ß'Y±²”ó:>å …Õ‰»ü\©19êo “µ¼á§íí시# °wéRòŠ“ðÔìÝ_ðôv¼p·÷¶ÃÙÇ>ß1÷³ŸÛIp¼yø?‹&6±ø=~ò¤¤ó¾i6À â°ð8‰’7k‹æà<‹…¯59×ìc/¯óyïëÊ|!ÆìOïÅ]I*ß–j¾UyèRˆpe×¹æåÈr}x~7¹¹>Ñô™?w0ífÂI{±JÆ%çÞ²ïËÎash´¼Tý;÷Ü$]fï/aëò¦!Tö‡T°ÒÏi»°¤;þž¹Œ:¨Àgÿþ7( P˾—£ñGú=~²šÉäíþüÅlZ0PNÔFÐ é¿x¡·`Ê1*Þ¯ÝQ’;筂ׯÙÚË«›¯È¬³èoÌž}¯ïE ä}äYÔqÀϽ&4²W>â6íݳ¾Î2Zíºo!œ2®vG-vÚ(w;¿A­Pº$ùbÛÖ²‡œ~ÁvMö_<æÝæÍ–曘çŒO’cF[“,¼wǬ(§‘¤-pì7³‰ýÉN¬sºÌWiP7yC;Q²î­¬íUè:m-–›úSqHã}H]SMP4TYPESLXNOFFS-40zM„pRBC''ZꌤÉgbh!Š¥ª|$Ùu/Úâ²} ÌQ£ÈoÉpÄZç°÷ÂÂs)J,†Pc +]EŠ FŒL2o˜$IL+J,6ÚÅŠ7»Œ>Þè&­R™iÖ ´¢ž¯ ÊAÛÜÙ†´¹í®µ5­©_Õ%T»ôF¤»›ó®bÚöW#®ç5ž}Å5P¨¼àdÔ§.y™Ò¬&QKÑñ..™‹3nõpѲ°žå³7«pG Xذ Á¤ | )' =ÄŸž`[×̳E¡ÕÞTï u*”krÔM“ÅŸxò)€G5c ¢e€ô"Ø,^¨a¢Ø5P®Q"¼$]†¹6Xi¯2•6ª<ãÇyCŽx°)º߃mæd4rŽ92ÞŒ:Þq_uÔÏóC¾ägßäó;ÐÁl{ {_½¹A%`Ф&&ÛîZ³Uï–uz¡µ·«ë•T7}9Ñ—µÐáÛº?BASEM€g0]…Õ0AØDçÆ*(A0À1€CNF4 SCALELOuM‚ €`œ1¼Î<Í J‡Ž;ÑÊ_­”‚TlÔ± øœð”CŠì0¿ÔÝŸvw×\¼ýšÛo.?¯É©– œ 8`²@à ÆNžn€§ìã ‚Ây߆)3,HE€˜x^hX@H¦¡Etest_run:4:134:®ZTR  HUFF€€1 ƒfôÀþµ,HUFFc‚p€› °Ì†˜9' â(¹ìýÿo¼«0Pu¸ÿÿ}'jPˆÏAˆS—R ^2€Þÿ†O%ÑoÓ.12ÃÀY Â0йÿ _ʤK­R,. ¿HUFF…À ëHUFF‚—`,¹MÝI:ÓºŽ1H $¡± 1ª'éòûfÞýOÀ@˜©/æs(»BÇ|6ñ çÏdtN>í˜o3œü2\b8YzÖš±.k µF¥‰bcxvî¤VSôŸ9íäRÊvÛb € v¢=È™!¹’œ4q‡ýÿï+ ÌÔÊo˜aŒCŽcçß|ÆbÍÎßæïÌ·9‹¦q‰¬ùå×òëŽu)”0”ÿ³i'69Iµä›¶Ögk£QŠVãb ¡ø¼»’fF’}¹&”’”´…¾åÿ­`˜ÉðwŽó¶(ÆÊܘ×âX7ye4ÃFmㆰ CòrØ•ÙrÜÌa‘+¢8·»µ£’¤W“¨ÝÈ]Æ0E7ý-7ÊvÇa 1 Û’XU¤DÙ¹:sô6°/ûÿ?·€4SæX–öÜÉ#æ‘»Êh¼ÑzŽ‘Íùº¼bÑ£P™šY‡•£tL ­kfÙlQiKµ#Gy/­R,£Zü4=HUFFœƒ—`l¹MÜô¥ilãX !I€æ&Jp캵IÆé•íìÃ>ïÏ3PfêãÌÿ×ó™ùœÿ’ßF†‹r2¢ ͧg¾gä†ó¬ÊÚvÅB²….Õɺ-Ëç–ü†ÕHK×µˆ•NW“:°-¥‘D§ò’T„™és?Ý= –& € ÈÕ j»Uûÿ³`¦¾"ŸPþ+cahŒù4£fcÍ­²(ùÿç³Ò#Vìj1›^Ôít%£S²‰’„˜OÒh­]—ŠXùŒtXM€ºÝ¬aZ $ÄÖ6‰}|l'MÛo¿» ‰KÞÿ­T€™úrò¹!:ßÎ|Ê/á ó‰ü'Ÿi›Oþ4,¶qd¸s«É'}6u•ZHd„¶ÚÍÚfë£5k ë3k¬hÉ´EWë@Ö”6Î[«Èf¿k7ײ!*E@"‡©Ç`;özèÿÿ¨3õÍ/f ëò»ùå3¿ív&ßÊ/ÿc —ÏIÑó›óiãŠâèh3æXþ.DÌ9Æ™Œ‡L­­ŸÚÄZVé¿%­LHUFF^„‡0°†aàtÿŸ<p,ÉiÒ"õß%î×>|„–vš+#t ‰ %+,§97QÇ‚¢ÙuBiEÍ×tM“Pn. ´Ãò‘FI¾’2Í¡Ø}BPOS,  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHITEXT áPROGRAM_IDillumina2srf v1.12ILLUMINA_GA_MATRIX_FWD# Auto-generated frequency response matrix > A > C > G > T 0.85 0.13 -0.02 -0.02 0.86 0.94 -0.00 -0.01 -0.01 -0.01 1.22 0.02 0.00 -0.00 0.81 1.22 ILLUMINA_GA_PHASING_FWD 0.004400 0.003000 ILLUMINA_GA_CHASTITY0.600000ILLUMINA_GA_BUSTARD_PARAMS 1 4 2 1 1 37 1 1 4 39 1 38 74 2 1 4 1 0 1 37 1 1 4 38 0 38 74 2 0 1 gzip .gz 0 0 0 1 37 /staging/IL9/analysis/080813_IL9_1213 38 74 /staging/IL9/analysis/080818_IL9_1232 HWI-EAS130 1 -1 -1 1 37 /staging/IL9/analysis/080813_IL9_1213 38 74 /staging/IL9/analysis/080818_IL9_1232 /staging/IL9/analysis/080813_IL9_1213 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 s s s s s s s s ILLUMINA_GA_FIRECREST_PARAMS 1 0 /staging/IL9/analysis/080813_IL9_1213/Data/default_offsets.txt 2.700000 /staging/IL9/analysis/Instruments/HWI-EAS130/default_offsets.txt /staging/IL9/analysis/Instruments/HWI-EAS130/default_offsets.txt 1.500000 4.000000 1 1 gzip .gz 0 0 1 37 /staging/IL9/analysis/080813_IL9_1213 HWI-EAS130 1 -1 -1 1 36 /staging/IL9/analysis/080813_IL9_1213 /staging/IL9/analysis/080813_IL9_1213 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 s_[12345678]_[0-9][0-9][02468]1 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 C2.1,C3.1,C4.1,C5.1,C6.1,C7.1,C8.1,C9.1,C10.1,C11.1,C12.1,C13.1,C14.1,C15.1,C16.1,C17.1,C18.1,C19.1,C20.1,C21.1,C22.1,C23.1,C24.1,C25.1,C26.1,C27.1,C28.1,C29.1,C30.1,C31.1,C32.1,C33.1,C34.1,C35.1,C36.1,C37.1 1 0 /staging/IL9/analysis/080813_IL9_1213/Data/default_offsets.txt 2.700000 /staging/IL9/analysis/080813_IL9_1213/Data/default_offsets.txt 1.500000 4.000000 1 1 gzip .gz 0 0 1 37 /staging/IL9/analysis/080813_IL9_1213 HWI-EAS130 1 -1 -1 1 36 /staging/IL9/analysis/080813_IL9_1213 /staging/IL9/analysis/080813_IL9_1213 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 s_[12345678]_[0-9][0-9][02468]1 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 C2.1,C3.1,C4.1,C5.1,C6.1,C7.1,C8.1,C9.1,C10.1,C11.1,C12.1,C13.1,C14.1,C15.1,C16.1,C17.1,C18.1,C19.1,C20.1,C21.1,C22.1,C23.1,C24.1,C25.1,C26.1,C27.1,C28.1,C29.1,C30.1,C31.1,C32.1,C33.1,C34.1,C35.1,C36.1,C37.1 1 0 /staging/IL9/analysis/080813_IL9_1213/Data/default_offsets.txt 2.700000 /staging/IL9/analysis/080813_IL9_1213/Data/default_offsets.txt 1.500000 4.000000 1 1 gzip .gz 0 0 1 37 /staging/IL9/analysis/080813_IL9_1213 38 74 /staging/IL9/analysis/080818_IL9_1232 HWI-EAS130 1 -1 -1 1 36 /staging/IL9/analysis/080813_IL9_1213 37 72 /staging/IL9/analysis/080818_IL9_1232 /staging/IL9/analysis/080813_IL9_1213 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 s s s s s s s s C2.1,C3.1,C4.1,C5.1,C6.1,C7.1,C8.1,C9.1,C10.1,C11.1,C12.1,C13.1,C14.1,C15.1,C16.1,C17.1,C18.1,C19.1,C20.1,C21.1,C22.1,C23.1,C24.1,C25.1,C26.1,C27.1,C28.1,C29.1,C30.1,C31.1,C32.1,C33.1,C34.1,C35.1,C36.1,C37.1 1 0 /staging/IL9/analysis/080813_IL9_1213/Data/default_offsets.txt 2.700000 /staging/IL9/analysis/080813_IL9_1213/Data/default_offsets.txt 1.500000 4.000000 0 1 gzip .gz 0 0 0 1 37 /staging/IL9/analysis/080813_IL9_1213 HWI-EAS130 1 -1 -1 1 37 /staging/IL9/analysis/080813_IL9_1213 /staging/IL9/analysis/080813_IL9_1213 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 s_[12345678]_[0-9][0-9][02468]1 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 C1.1,C2.1,C3.1,C4.1,C5.1,C6.1,C7.1,C8.1,C9.1,C10.1,C11.1,C12.1,C13.1,C14.1,C15.1,C16.1,C17.1,C18.1,C19.1,C20.1,C21.1,C22.1,C23.1,C24.1,C25.1,C26.1,C27.1,C28.1,C29.1,C30.1,C31.1,C32.1,C33.1,C34.1,C35.1,C36.1,C37.1 1 0 /staging/IL9/analysis/080813_IL9_1213/Data/default_offsets.txt 2.700000 /staging/IL9/analysis/080813_IL9_1213/Data/default_offsets.txt 1.500000 4.000000 0 1 gzip .gz 0 0 0 1 37 /staging/IL9/analysis/080813_IL9_1213 38 74 /staging/IL9/analysis/080818_IL9_1232 HWI-EAS130 1 -1 -1 1 37 /staging/IL9/analysis/080813_IL9_1213 38 74 /staging/IL9/analysis/080818_IL9_1232 /staging/IL9/analysis/080813_IL9_1213 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 s s s s s s s s C1.1,C2.1,C3.1,C4.1,C5.1,C6.1,C7.1,C8.1,C9.1,C10.1,C11.1,C12.1,C13.1,C14.1,C15.1,C16.1,C17.1,C18.1,C19.1,C20.1,C21.1,C22.1,C23.1,C24.1,C25.1,C26.1,C27.1,C28.1,C29.1,C30.1,C31.1,C32.1,C33.1,C34.1,C35.1,C36.1,C37.1 SMP4 OFFS4171Rï548:359ÎM€lÀàïP ´·êiQmFW¦Ö (T?]óJpa÷ !ç¨ U#uàMðèÆç(Âê>¢ ¾0IÔÕÜô!f™þÁñô ÿa¬nzªšÐjÞ€Õ bö'÷W˜jGí,Ö§þkŽF²†{º´ƒFYÙ(xËT/µþä¿-!ÆJ˜ôl,¡*ÚÇq C}øë˜‡˜ÙBßKf<æBö…l;Î-ßMž¦.gÃÊ<9CùŒïßÉ[é>¡5~Úõ‘†[ØŠÊuÜŸÍõì„.·ÏŒè¾«œu¾ðë´Y+Ü˽BFT'œÖ&[^È7+Ï!3ŒËAóÚ  G¬¾;Ëß@Kò`3¶}B³ÑQ§¸Ho[‘´˜Ú±d~U{N¹õ«eÛóEØX/Àq·-²Ît[’b"›ç0}´Æ$²êkà`Ø×>9±íM­ÇP*¥jxÓ\ÌØsl%[>žfg‚ÃG^×ÔH«@øÀ=…F7Hf­ôX&mحД0E†—cÊ¿û@æEfB}àÂ¥)ÓÍÎkÊ{p;3—~ø%ëÅ_¤[Š÷ ¶)$ Mq‘ýÅénBÒn/®øQjã%ÞÂsߟ'¥èÈ<SMP4TYPESLXIOFFS4661ñMƒ X€øw¥cºRþõ$q§K ñ¡Ë«D»8DÕ¼âa o:VÂÙÊæ*Ððñ¦‡‡á†u¯X‚²eW8bdîUtÝ®ÂV÷7PFb%$tî ßµÝâÿÑËV\Ã_íÿ¦ 啯;·%p,ƒRõ¿g%˜$« ¶ë©~5$ªÍ×àíaÁòóåÿÜu–i&RPö=±ßŸ¨ãI’0Û06Æ»LÁ‚ÊÌÔ˜QÓa|7?öy3Ju‚cp@ÐÙŽÙ©r+Ï'ìNN´æ„µfº¤Ïz¢ cÔeí9ãTǹÛ:äBASEM€' ¥Yµ„ÌÁœÈ"åÒQæ“ÕCNF4 SCALELO(M‚C&v Uh±Ì @Ä&Ú‰¾1½™šntG½<Ê\oÖ\R÷594:276ÛM€lÀàéDSèöã µ²„6¡[ù|ß¿°O!®ï°õðK¶õn _7Ò¿Ìו(nâ%e˜¡ddíµ†~Úœ‘hIXþÙãíùTçn*F·ëãï·R7•ÕB–ÕpØ_ÿíÕŒDåÞJàéì}"Ovxé¸ÛY™`|G YÆÛ£lYÆÀNìD=óÇ’\én­,loT%·% ?Šúq[š& m@€åD¤òö4M‹ˆ×;»Fú þÔfs žÛµýÒZÝg{<Ó3Ó›¯w¶È–žç†É>³ ãÊðÕÁQU•srôÿ3l=Q™!Ý û“¯Á™ñêÊêdm{»èàô7y<¦w(ÖÆc‚¼ê(îÁwd“záWÃ;"›¥ÎŽJô Ön¤1x8ÉÍÉeò…} ómD­vµŒ{N€_‰Êpyyçv¦ÔtN\kÓ&´[•-r9ÈK]luz×Hh´Š£§•Ùº{ø2 Ô½365#ÝGBÄZ»†‚g§+,áèh"‘Œˆn¶ÉÊSF¢ovD¨ã –¡áGÌ úbÙÅdݰ88ØF£»¿Jkš…hLÊíèç"ôæ"•ó6W‘~T¬ñ€CržY™ÇØSMP4TYPESLXIOFFS4661ùMƒ X€ø»ðMù±áƒ¬½[Å,Â)Zn t~ù~aD#=T7ÙgµÁã-mþ„þGué^-^Å—¡²ôSä á0¬âsÓê =µùZœ\˜J5~z&t-Wg”¶ëšÚtG²_{t?·Ï‡š¾îÚló ]3çO_¡K&¾[·æˆXj[ˆ[íá>²­êɹý¹žt—”¥=›½"r/VEûÒŒË<Žòé¶;“ºú Ê{ÙÀÏ’"Ý$@à>‘IŽ?5u m¯B÷‹2bO¯V×øb¹Í?ð(òÉ¥¢,ŒÒ’v¥ð ±ÇwûÄXfÆ¿6¯P¾™È­‹ 6¶·þs~XÍ5£‘Y8¥‘V­dN£uÿt\¢ fû²~ºn\mòí±OûЙ‘ñ…ƒm¸ª•®s:¡½{ERèÖd¶4¨à؆©b%Ŧ4¶æóW¶Ín™|˜É?¥À"jJ„44ù(ÆíxáÅͲ]\@&‡”JS¨Ã¶¨>cG픘é£œn•âÜ®$=MŰ/"IÏ7ù¬ø™ÛÓ±:GïÜ&dyvIJ•B¨±6Éšï5·” ó~~àœÇíÜD(情±b¤Š“txÚë¤p„OíSMP4TYPESLXNOFFS-45}M„€„–ŽÎ<ø¬U(Њ ¬Ì‰Uà~½l´Å5P…BŒRb¶û­fY£\ÌÒ mp‚aáF \7„50 ¦ƒ¼§Å]Ú1Ì"ëbé&\gݳŒŽu}õÔí€fÞ¨5rÙ”CÊV«0ÿå·»ÓÏýjÇß—Ý\Þ0+^Ý©ï^‹ÝàVwzç75þªvMÒR<4üœ<ÚjG/9œZÍiƯ¥ŒÖkv RqAãÅ.ͪ"ÊÉ½ÎØØ qøC„ ‹”(¹‚o1°‰R»Ü)R©»$JÔF³•ÙØîˆÝ’œ·4"ÁÃEÞn¡¤ z†Ð³€U¸`!´×N²(íE-Z´a’d™ A–E†¾Þ›¸ú#ñ˜7q=×~š¶ÛÉ0ÖÇ{˜½{{hs”]:à*nö|ŽyÇ^íV_æ;øÆ¾ƒŸÿ{s3Ju‚cp@ÐÙŽÙ©r+Ï'ìNN´æ„µfº¤Ïz¢ cÔeí9ãTǹÛ:äBASEM€çVK“Ê0g¬¨9Ø’Em,ƒ%LYúCNF4 SCALELOM‚C&&üìÎO¾WL+5Þ#påØ0±R´369:182ÄM€lÀà5 ë1‘%S^3ˆ:¯ ë ³²0~áQÚöãÃ(‹^¡ê4̉$æÈÇ;Ÿç!Ò"sçDаI¢€é‹)Rù@´OFà†¹@*“X¢µRË9¢ ¸ßg²˜Ê2å+ŸîÓ¬üȇ*¥rO“ Ô…îu0Å¥ß ‰ñlµ÷$ £Pñ8ÁG*]¨ì¥š—”·‡XÉ/èvª Kþ÷ž£9ÁKs™üdzLˆ±sž3,Y'±ÌàË„’Âýó9aO')Q=èLÉ÷:ñÕX4Uré¡TÖ¨ñ_n¨ÅÎ1/¹Wºaýo˜ÿ»_b—©ÑXñPÍò—B‚\&c7*H†Pàà1²°ìn=B('˜Þþdº`“Y…¾‰Œ–—ÆQHâǶ¡ÐzýÉo¬§˜;Ñ]ÞõT5EŠñB“ˆþ†Î»°GK¹ÐH¥Ì0…öËhŠ'a! d+ˆS–8¥8C«?¼S9Iü˜§_œt‘-:Uš~R?©ÏPàˆ»h@—µ·çâµ^<)8) ––Ò(w³øüÅ_§OàÎ+2P/Ò=f2j>cì´“¤à¹< ‘ÞtëSMP4TYPESLXIOFFS4661ãMƒ X€¸`£Š7Ì”Ýiß4;Š¿ * 4Üâ{N„–. 45fãí¾˜L,·Òó qózÃ-„6›%$’’ŠÔlé¦ErFÔÆ4£nýÞâ0Êéà ³O$¹>q#ñ5AºEîÝ/üžXÒ€2N™®oØaÏõ½"—üyJÇ]‹ý¹ê¼89CÏXûþÚF¹"ééªÓg0û¼ƒl¿'z/!IN0a'NZ’Y/:/´mÓ;msmv¸¨žá{Ÿ9sŽõ{ʦn8}ÍUýl_Œ{d8÷þèÿEwÑÆ³MåL¸ ô63¸BL^|ôÐÖÝÚ}]+moí;5‰¨…؉ŒQ‡…0ËFýR³¢ÁøÉ‚µ);|s€d|f+Z/Õ5Å@e,“±Þ†’?®‚ÏÍ)T™öÓÉê¥ßï^Ø=ò¥ZRˆÎ­ÑzdDÝZ5“¯uAK\fH³¶EqINà0oáË„0Û‰#Ç p8L †#8 ð<•vszgùY l;ï¹aB¥ŒG®¨ŒÖa?'-tã>èý3hfj¡)‡1%äq7bsòà¬IçÏÁçÝ n„ÉɹëKfYÂDxž`¨[³,ŒBôYy *9¥8½˜\Á,SMP4TYPESLXNOFFS-45rM„€ðæ`ÉC Ãx’À“J&lƒ¹@¥ô£ã%%˜xÇ4J%ƒ&þ¤‹L h¨CL1bj¸œ¨ðI£*itCéÄ# %8rá  ‘«Á„J r„ˆ)DD:œ¦2T”–étUÓÁ£<ÕÕHúИ©š×¹i±ÕÒ¤*—Y-ë9éy%Je. 3hPóZƨ¦O¨H lD=z襟R¥XΊ¾|ê!¿â%·3«J8 ¾€Áxd¨„ )ÙÄ“Í"3ŒÐàV ù‰~ÔnA«î+´YÓ8€^DCV4tÄpȇÉEréãP#ƒ‡‘iuu žò‚IŒLñšMf±ì¯QÆn¹ù%nß2æÑü\Uó)K“úŠj©É‚¹äC+u4¹ŽNÌoá­¬lžÛ3ŸÅ,cÇ2Ï[ÝXaÜ„(öŽÅúyÓãA­é{ ÅF‰ZbÜöE/\eüú“õ먑{õBASEM€§!Rkeɨg¶˜1¥¬a°’5zCNF4 SCALELOM‚C&FL¬v À„·Ô€R 354:230àM€lÀ`[sÏ`ì>ÖÊ;üמ×GšˆŒšÛžp•×®Aˆv¢ŒÇw‡:Ä<²ÅµÚ®Ý›Æ>Þ­7™ ©óȱÂEîH(1xœ†aÏan[š¼˜aXu—ë@h‚-ש…?»G|âOž¥Ø­RËö…´ùàJ!–q$B9/r&wä¬@[áÉ&)#®¾ns™y‚’ÖìË5&(Þ•·-ɹœ˜b|Aë¶? .ÌDn¯í1àUE ”f]æR+ñ€f ¢QJÀd]® .¦m/BŒˆáB“øKÜXŠ{÷ùâòi|ŽÑbÞiÿ¨°åˆgN¦È•#]p:ýw•‡;å«Úâ¯æê†4ò_u 5.|üìøë¢¯“óÊ…ð³íTF"9ŸÍÕqCž[¾FI,Iõ>w®ãc'p<ÒµÚP¯ž$·èÕ9#ËüízSMP4TYPESLXIOFFS4661ýMƒ X€øÞô$t­Þ?—¶¨ðdßÜ5:ú,†’ïje¨"fËɺ¾ÈìÖz,ª,tO"@Ãö(³•9Éqƒ—ÝvKµR ñ iŒ=¡—Ò=*AÛÄ.ë­btŠ^~«ÓôMIpŽW €©`˜ó&×ÑÜÊIþ•ÄI Ä„nƒ5hz§€oðI9ó·ÛŠ-7Oo‘÷ª±‹±Pç±Ùpz§jœ•v“£SÁýet5ùN\ŒTÌ_­‘À‡WÖ‚ùQ’ïú‹D}5¡¨,[±Ø6ç_ê­Q=1fLIѳG‚wö,žp3øw{ÔV°WÔRôÐ?ýå7ˆLáÆûñ'í½:Ê'LÙ‡ÙikœåcÍk„ùÒOøpô‰]îDÛ’qúoÙTÊ—ÉÌaǵ=½Ù£%—áÙéñÁ—–%ê²^»Õùƒ¨eCut­i¢´wÿ[¾&ï_em;s.7¿›\o2júþ• µå&ß!£$àèÞ_n^…ÃÝë{ßJ†Áo?'1wÍzƒ—ó×_ÿZ1$Ëküj-¥&Ö Oœ¶Ç…ù°pSMP4TYPESLXNOFFS-45rM„€ðæ`ÉC Ãx’À“J&lƒ¹@¥ô£ã%%˜xÇ4J%ƒ&þ¤‹L h¨CL1bj¸œ¨ðI£*itCéÄ# %8rá  ‘«Á„J r„ˆ)DD:œ¦2T”–étUÓÁ£<ÕÕHúИ©š×¹i±ÕÒ¤*—Y-ë9éy%Je. 3hPóZƨ¦O¨H lD=z襟R¥XΊ¾|ê!¿â%·3«J8 ¾€Áxd¨„ )ÙÄ“Í"3ŒÐàV ù‰~ÔnA«î+´YÓ8€^DCV4tÄpȇÉEréãP#ƒ‡‘iuu žò‚IŒLñšMf±ì¯QÆn¹ù%nß2æÑü\Uó)K“úŠj©É‚¹äC+u4¹ŽNÌoá­¬lžÛ3ŸÅ,cÇ2Ï[ÝXaÜ„(öŽÅúyÓãA­é{ ÅF‰ZbÜöE/\eüú“õ먑{õBASEM€'MAœÖp(ä&²m®ÅœT#LÑ™ÓI{CNF4 SCALELO2M‚C&^89*ì”Úp¶ÁÍ2h8z¬$@…Ú†îàÑ š?@…ž½R 614:269ÜM€lÀà7qTý8¼*z”*訆èN§g”)õ`ÃÆÔ‹gh \òóWÈ6ŒÞùõñ°‹¦Ûß·@ Ç“#ÈœY³¢ïí|"œ´¥+“8ý>u'¿«x´C«—ŽÖý0ÆsL SZ›—M¼fñöò!ñ~ÃËo½…͇^s „Ú÷h³? Ï_âý~îyµÚ£ñ*sÆËªª:¹í`N×øóUÍÂQ £xøIèÆàt/пOžkÈ£äkð]È =¢º9$.öwn7+’uLôiJ¦,Í“ÍÅ¢[Þ‹[!¤wÊ‹ ø=ø°œÅ×¼ßÇ-=ò©àŒë‰<¤ZøÝË÷Ö@ì ×lk5_pŽõ–¡še›ì|­¥óE)æáØd\F;²ëuCWÑïpØõõök{CÈg¯à&{WºŠ€âD ÞhþyrêZè¨m(…M_ü¾Àš%wÙóS¤ß´i ò½Œïpƒ„VùÛä™’;³›.”qÓà¯Éa$³£aEå(3ãKqLå† ‚«€¬s‘š¨Žµœà0ŒìM2º *Åäú52Ø2.‘o®.¥ÌÚ¸“u |ÊæÛW‡Õ@ >:©r »B ØcÅF<÷)5ü^~”8þœ‹SMP4TYPESLXIOFFS4661ðMƒ X€ø[·]„<_1ªbƼN=ñÀõfŠþŽ²Ï²É÷³ çBY ¯çKƒºó÷bC•"ÓàüáUÆ×}ä¨Z ®­w‘+òLÇ­·t;ãPÒý£u¯Žãlþ–`j{bpÂo`mJŒ²­G²ZUI*ó§Ìq "Y‰]˜›q³PLw|hí©ejn24÷pIÞÎ)¤½(ÿùfÝî$"Jø+wø?{:õz§ý¥ú…ÌÌi#;ZºYi€Í- ä4úŽë.Äž"›¢¹1.ì c®úh-©·¿e‡6€OrÂ(_%.ÝêhÑÚfðœüåâø´)(×%¾-5ýÚ^ «]¼0´G:¢c"÷N…©ðÒ{-óYÚÄéç³,žKíe4˜Þ*±×ÝP·$wP£Ö‘®Ð~ ¸0{æèøYÒ2¬~@6Ê?{$(®\ѬN‡ƒ'N¬…ÐtŠb…¥Jo>â*ý= ’³~¯âŠ­L¤b±n.`ÛI1yPd+Ž%,,cšp8$J·¡’=ÿ4¿ôØ1ÎÜW½ ±ë$éçÙͬkÃ[15Úìœ Hêƒ&EiЮ}¼ˆÔbn[µ¤nÔ=1TO‚;ôž—l­å?%épá¸SMP4TYPESLXNOFFS-45}M„€„–ŽÎ<ø¬U(Њ ¬Ì‰Uà~½l´Å5P…BŒRb¶û­fY£\ÌÒ mp‚aáF \7„50 ¦ƒ¼§Å]Ú1Ì"ëbé&\gݳŒŽu}õÔí€fÞ¨5rÙ”CÊV«0ÿå·»ÓÏýjÇß—Ý\Þ0+^Ý©ï^‹ÝàVwzç75þªvMÒR<4üœ<ÚjG/9œZÍiƯ¥ŒÖkv RqAãÅ.ͪ"ÊÉ½ÎØØ qøC„ ‹”(¹‚o1°‰R»Ü)R©»$JÔF³•ÙØîˆÝ’œ·4"ÁÃEÞn¡¤ z†Ð³€U¸`!´×N²(íE-Z´a’d™ A–E†¾Þ›¸ú#ñ˜7q=×~š¶ÛÉ0ÖÇ{˜½{{hs”]:à*nö|ŽyÇ^íV_æ;øÆ¾ƒŸÿ{s3Ju‚cp@ÐÙŽÙ©r+Ï'ìNN´æ„µfº¤Ïz¢ cÔeí9ãTǹÛ:äBASEM€'®Q¨…[Ó˜6t®j¥cR°-‰ CNF4 SCALELO:M‚C&N˜ޏ¼ò-¸s@wðǶÈÂ÷ü>~ÞpæPc• €/lÏÕØ° RÕ368:209ÚM€lÀ`SRi6~¸hê°‰qãÚnÿ¼>ÀÄÍ4ÌÕÏ&Hã{Ã:Ù8t™ˆnÚñmŸ°&Ê»}¹g™œNI¸92D<ý6€aº·ÝR×Ñxå;Ú=øu¤Wêéж¶h§öcÁìêSE7*?T=»û• .5“Á¼N¹ÛÝ¿g®µMíŒð&„jTsDõJ¢ %sdiÑë³mW•bÒ;ÂG*x¦ÂÔÊA!*H*ÇfÙ埢³\ƒ·{—o|pyŽˆ¼J4 %Ðkà ~ßY_Çî<žŸ¬i´Ê÷—;»x¼ìãOu†|Gúà}*I›W©z®©Fl­ãPXñÚVºÅ/Û¾ªj¬ìo»eÇ™tõ¯CCf“ºdf\zï¹1XçòàÙµz‹Ež0çºÿbqç)š¹ HUÁv[$™ÂQdk4I}{3ßç9®÷Õ9÷Üøl PÁpQÆw¬¨óµÿ¶zdÃ/‹¾c6(‰‡¾`V»¡Œ„W`óÜžUæ}Q/Ùü¨¢³…á! á²E(¸¼¨­Å„NK$VYu;uG9§Ëý$º¿ÎNW–±çžr=EÙ(MT~’‚L˜ÀŸ›¾%FÓ«ÞOžr}܇Uwê¿¥¾ð€x)Ím8SMP4TYPESLXIOFFS4661ëMƒ X€øN»¹€úë‹aAiDý=•¿ Õ”uOïRU”"b#†µÍtIiŽ÷‡*h(\_Ô7ã‚+/ùŽ–W´šH!{Üç,U )°€¢Îç¿]ùv!”WàÕsfo¤ˆ\}|¯'¦ê¡‚ƒB_ìÀøçcÆB¢WöôPª.ziç2"˜J™')*¡Ï¡>*µI¹y«©PµÅYÜg¡›ÆQÆ€OÆÌã5 ‡Ì\lí™+ ÏÅeÂvY&„ÊÒ›'ž-¶M’PcÜîAªŒ¸ÒhraÅmµu‘BÁ(;ÂRMÂlYŠ pˆG²bæ´»Ùk ä½Å:h;ô‹ÌzûžØpFƒ­´œíªs„--+¸é+HC£ˆjíBË‘¡à£0&nŹ‘ü°7ÔCw„ŽÄL[©« ⮇*5õGà.^F:ìPÚ&IÞWR»¶O\aú8R(ØY )Ø^¿7©_ ¾ç»B;L‹wlä¬ÜoÞ‹DÿòIíŸà‰™­xÀD³L:¸v÷‡ŠmËÈM9i»‡V®bˆ-:ð  Fte§º9G%t0=xd¹Á¦0eݬœ"„¾ab¾Éªý»yRö‘š}ðÇ’ûÀÐbj?ÔºäºSŽ $YSMP4TYPESLXNOFFS-45rM„€ðæ`ÉC Ãx’À“J&lƒ¹@¥ô£ã%%˜xÇ4J%ƒ&þ¤‹L h¨CL1bj¸œ¨ðI£*itCéÄ# %8rá  ‘«Á„J r„ˆ)DD:œ¦2T”–étUÓÁ£<ÕÕHúИ©š×¹i±ÕÒ¤*—Y-ë9éy%Je. 3hPóZƨ¦O¨H lD=z襟R¥XΊ¾|ê!¿â%·3«J8 ¾€Áxd¨„ )ÙÄ“Í"3ŒÐàV ù‰~ÔnA«î+´YÓ8€^DCV4tÄpȇÉEréãP#ƒ‡‘iuu žò‚IŒLñšMf±ì¯QÆn¹ù%nß2æÑü\Uó)K“úŠj©É‚¹äC+u4¹ŽNÌoá­¬lžÛ3ŸÅ,cÇ2Ï[ÝXaÜ„(öŽÅúyÓãA­é{ ÅF‰ZbÜöE/\eüú“õ먑{õBASEM€'•6Jˆ%nVR4‚b‹åš³œ­CNF4 SCALELOM‚C&f$ú…ÀMà ó@‡RÐ621:345ÒM€lÀàKÎqÝ’»«ïê°Æè¯ìÚÝõu¨ÿ^kÎPø.à AM™E´¡«³_bYêÝ.öiãb”æX¡zÌÅ®¿ºjG%lšæÜKpy¸vÇÜm¾1HÐÖ¦›“âNJuØyiɫۅX2Ê|8f¶wUçeWõ7”¢Ç} s ýÛbþ,‹­îÎ^Ö¶¡ óÛ ¥ÙõöÛ^ÛÐ$ø3é´OC¿sFO5?d®ÍL9x–6ŸåLÖO¹áË–±5=Ù£Ÿ$kÒoX=Žò»a{0ÿ1râÛskNæ©00û9¤,8üUÓ~¹y1i ^¨=Û ëʵ{hýè÷‰¶¾nÁ™AuˆbBÒ¿“Î 1h·€Y3_µ™Ñ}ðí¾µ(³#ak£%>Z3¨*QwhÀ³8†)È¿1µC¸XÃ>Ä+ŽÔƒò§­s Ÿ=ÚÄIkžÖO4ª'S$Q mY=õ²JLò0"%Ýø—õ»D79GgQ×'_3”Î¡ÄÆŠö¡çz6^ËÝ4)|ù‹4¶¢’,¸!?­`á’YL‘«œu´ä¹jÛºsO‚ GMÊÚ Whä<-ÝÚzäSMP4TYPESLXIOFFS4661ëMƒ X€øPÂE~+¥WÞk Îý\Z‹Õíª°7P)(¯R/­Z¯P{Ÿ3¬´~žÚŸÉ×v k/,N(<§™R({Hž“ÄÂ!¯b#­d.  !iw°épûÀa…ŠáÓß ´›ÅÖ՞äèS½@uA¯îg äKmýŸVmm½|Ìt?™E$Ý)K“¯ƒD‰ºæÂ嫤%˜H2YÓt¶J:¶hê8bDO`Òö=wê.9oK𸇾bx–öÏ•õIþáX&5:4sb6x—@É7´ªÐ-Po¬£°šÀòɪ3cd\nÐàã%Fäª`A¿d ÏžïTþ´§w/Ô¢ÇìmŸ”Rñg­i³# )›£kþ[¸)ù”Z1 ÏÌÚÇò‰R«K¡ð€ ;QJþ™û%åA樼ÂÈ…CW²“x\…‹r].ç–“…'ªt„0ÛqÒÄm{¹¨æ éÞâJ-Û©;¦[Ädóºý`ìÉ/ü-Q¢|™ÅñTç*?Ö¥­¶˜ßWoƒGC3'J]qV«;#7‘4æ’˜šKÇw›˜»-E¸Î¾Ô"з¡°™6¬€X{‰¯—2j»1!Çý6Ì'±®~:Õñ EÃf·!WäTð¯Ù SMP4TYPESLXNOFFS-45}M„€„–ŽÎ<ø¬U(Њ ¬Ì‰Uà~½l´Å5P…BŒRb¶û­fY£\ÌÒ mp‚aáF \7„50 ¦ƒ¼§Å]Ú1Ì"ëbé&\gݳŒŽu}õÔí€fÞ¨5rÙ”CÊV«0ÿå·»ÓÏýjÇß—Ý\Þ0+^Ý©ï^‹ÝàVwzç75þªvMÒR<4üœ<ÚjG/9œZÍiƯ¥ŒÖkv RqAãÅ.ͪ"ÊÉ½ÎØØ qøC„ ‹”(¹‚o1°‰R»Ü)R©»$JÔF³•ÙØîˆÝ’œ·4"ÁÃEÞn¡¤ z†Ð³€U¸`!´×N²(íE-Z´a’d™ A–E†¾Þ›¸ú#ñ˜7q=×~š¶ÛÉ0ÖÇ{˜½{{hs”]:à*nö|ŽyÇ^íV_æ;øÆ¾ƒŸÿ{s3Ju‚cp@ÐÙŽÙ©r+Ï'ìNN´æ„µfº¤Ïz¢ cÔeí9ãTǹÛ:äBASEM€g †l0j™›³ZŽ­ÂY ±„Ö*l>CNF4 SCALELOM‚C&þñ¨ð¢Rð538:358ÑM€lÀà+ÛÏ¡óؽǔ£]Êg;<»¥—˜j¸”EÀÐ%jKŽ2Ö¸y#ðdÈkkÁßœåò›­W¹ gþ´—4†\úº¡/ANsƒžå3jQæ¡‹—Й´3ö”Ï1‡™›=ÝÕ‘*ž8@+¤‰éÝέEcÏVÆí:{h’NÊ´‹F ¨j·o’_?JæE½0Ø–|þNYHºÓYmŸîµ[a®°£Xºê|𳣿Šä--§¤7κ÷ªÖü€éuÂîlE=Þõ€[ó•‡Z§‘&XºPŸùªb½*zŽ+¿Ã»ÖO¸+b5â²ìa¶öÌ7F“¨érȞ߀ª¥„Ð-˦ÅÃPÙDr;âd¦Ÿ–ƒntÒáM;0l×m/R «ÍE:ýùi¾iGS¶UÖîxá’ºCµtTŠÿ<@å}jx0¼J 'L0T‚âÌl¬ #·^¦*¥1<,øIá¥`•¥&DRÁr²ÀAlV ÇHŸßðšÒ„'31{bÞ´s"ÍøÉtÐÁýrF=°•—ŠksîtüàbTÉš» À4Ll¦f`ež£ã-ë]h/ìQ92»®È‡æSMP4TYPESLXIOFFS4661ðMƒ X€ø`Õ½ÏF¿QWt5Õ²ŸÖJírþy…9ó➘p|CbÍ|^m:›w¼ÁOM¤ŠBZºrÐÄý©ý=›²@"•wä˜.OcšãßIÕ£¸õñ²Âõ•l=ŸP~ë«ö‡Œ=#Pv2ªñ¹B"=å„0ßH½Ê‰]¿Ri“Èo\¢ÊÙK3euã.æ’©ˆË—Ï#\7•ÃËU­?¬šLîæ†uP–ºøî}F±ÖæÜ]9ðÀnk` {Ƀ»\×*l³~â/‡=ÈËW *}JAuW5Þ\ïúÙ’në§SNP*»å&?ŒzCîwƒè ›ªj²w# àΜ6 XÐcVM—«ûãJ´‹^œyÓ"0?E\ãcºT‘þë¿4†Ÿ·ëbn³Ûn›YÛÄ™¥ÌˆÐc%FÔ2—nñ [§óÌ•šüݱmRâiSºF­åÖ¨`egžV³÷¨ÑÆ$£\$gßÎd5€CÚæ NâŒ1á¼o’z‡)SnòžwiÇ0‹¬‹¥[˜puÌ2:ÖõÕS·˜y£ÖÈudS)[­Â>4¹ðqv¶÷û%Éz×uØ lm’†bÍu—ij×î«)&›\ôÛ¶k’,¨Í {=ÚjG/9œZÍiƯ¥ŒÖkv RqAãÅ.ͪ"ÊÉ½ÎØØ qøC„ ‹”(éç!OøÀßBµgºx±*,R¦Ìß|â‚C.åÌ7.D0ß .òŽp %mhÐ3„ž¬Â ¦½v’Ei/ÒhÑ¢ “$Ë ²,2ôõÞÄÕñˆÇ¼‰ë¹ö«Ð´ÝÍú¬–„Û8áÛ¾ºñÎÏt ×÷–^øûò€§{Mßoø}øn~ì/Òj¥‡:Á18 èlÇìT¹•çv''ZsÂZ3]R‡g=Ñ1겎öqªãÜíòBASEM€§á*pºÆVáh0táÊÄL·"-†‘CNF4 SCALELO&M‚C&Ø)+ }µoH'WÙ´§#UmfIÊÒïtÜ Ræ557:250ÏM€lÀàSuڌ ] – î Ò,ã®G@'`ž )ŠÌ}F绀šøi °¾¢ j,(|’nÛLŽ¿o¦JcƒùÑ(â>†eÎý}ß /8mû¦y3¯Q>~؃øæ‡q2nŽ¥›gVrz²ðÓiàD\ý”Ã}É7þËŒ\ý@74Kû÷¢¤“aº¶ºž`e®f÷å\F¶öãV»\ãHKM¤¯vmWVîÐucÍž ÑŒÈQ†‡Pi­ "Ç„ÿ6Ö¯‡³?Á»{«i°í]¬¨ǢɃܔ׆(’ñ á»SNôbYÇ&›¥ÖîËð 8:pÌ ãØuѵsZPÃÆ5îj Ü’­DjÔŒt!=­Üßëð›/s9ß”š´Öçc¥MsÓsy¬¼ÓùìhÌ#‡…SÎ7ùKã4ö8œmÄ«~ÆÇŒÈ¥AŸŒ0ds4gvÖý—š37’%ÔͺyEYSMP4TYPESLXNOFFS-45†M„€Ø›Ûêštë@;4aäo>°,‚I¿µÚýþ`©0åæ™¡/s–‰2Ý.¯©P*AÓ4 c’Z8 9R½¥—YxÃmXDË]ü_„;ØÀ =õà•_ñRÀ}<`w÷»ù¢„î®9ºÚ¸ÎÙ¼àísÿꇬ}e9¬rO4Äàƒ$ËÚJ‹û¹Äm«rŒyÍG{ó%……eÁ&û?爐º_Ä{ß;9tÚ%‡Å$©À²–.fàð]h£ÔzSb ’PB8L2 œ)$~F€„Ÿ¨„–.> õ¸{™Qèc%Y%A¾ÿ5Ë}èÓl\ “ÄǪh¢…~–yI?óºò³Û×ÎïtÒEˆŽ~k®WÌ“l˜t/I)IÌë½CWq»v€ÒC)°´³×£Iób&æ6W7\¿V“Ãýë).à´;ºûë*oå¹Ç·|37s(s§?@îsö¹§¯BœÙ7Ø?ó?‡®îe™W6Ñ~_ìì/t—oçwq Üñ=?›£üBASEM€'Q-IlP´’QB›PµFÕæ†ÃöCNF4 SCALELOM‚C& €# `YIhjoš™ Rì529:256ÊM€lÀà3H`/> FâDÐêmždšêßú\fPZØŽ …µæö)Ra³‰X 9#jŽXXQ>~-K.S;”¤Øæj“–”a =÷™o,«’©ÊÄg'²Ik´Ù$9Åkáòb¿wΩ§§žaE(Ÿ²×Âô{=ž7$xà£,‘ÉÐë%|M&$ÅÔ¿”5å5Á²UûæLÃÅOÂãÐñ¡Dý~ßY}e±w¹”n ͧjõ¶×ÁøZS“´q³™Þ誴|¦Àlžnå÷Xr©“úÓÒ߬™âç]=û0¯€qÐ".~gžñÃ{á|¶‘;­õi±¡TzaG`gOšÆÏB±^zK§ñðPš®G{–±â醇#CÃæäÚõúhB´ Ddõ/Š-Œ^ÕfzZ§¦•¹—°ãy³4¦NlÒ‰¯æk¤I<ò’äc¨-C¡sôØ4óX&±‰ôþÒ'ÆÈãôX±ÄèŠÈÖÚϹIr©•€„[º)Q8)Sä©ä$1J.h® Ñ„Uu6ÃÖØÔÄ•˜hèÔû#°¡ù ëRòq(]®¨*QÂQš@µXØñ“l¨Oß»!,“¨°ŸÒŒ&ÎI»SMP4TYPESLXIOFFS4661óMƒ X€ø“£JûÃ|«ºÖ‹ž]‰§lÞÏDÈä%Hìð‚Û}!TÉ«¯gf„Ýû´ó ƒ¢™B}00k€±R‡zéJUFDCâ¢Ùª„#²÷f·~Í)’Âùöñ‡ ¬ËKqä^]ôN/ݬš8‡g‡—Gv.y|M)¯8vhõI¨õÖ¯(é<ݹøk½ù\ÌÏŽš–nPŽþнíNÏ4OÇÏïoÇ/â<ÜÝ«ç §žK)ÌÞ:fX?!8»­‰÷ÕOº½Äp·gF¿_É–¾yÚ—û™Ã Ù5½zíE×ée^èùV.î»ñçê¢ÚO9ÔG¹‡McÔ¨œØ÷‰FۆƤ\&vÈJ,O }ªÛèV2C}°ñˆ;Y¿tŽ„ðJ4XâÓºˆé1ÕÏ몱-Ñø7´d’5:µÜQ¾¥L â‘m:Œæ38¤Ï>6ý Ót–É6y´•´£<Õ„{Ak¯ÄíP‚™S·eâŸÜð#ÁÀöylç¹?d  ¹ü¦3Wfhè ºß*üdçe0Gz§º!¹)Þyò‹‡zZ õ}Msn.Ó·‚û!ö¶†ãË]\V’®øo6Öæ«S¿‰¦;¿R~J§mW•öWë½ÕÌÝÄ<4èXSMP4TYPESLXNOFFS-45†M„€„æãǶº¦Ý:ÐN#MÝn¥Ìy†ÿa­­Þ6W¹b˜ ƒ62gºgv’ ,kiàbß…6J­7%¶ %„Ã$“À™BràgÜ¥ )Ïù[(Vq¦îN…îU&KŽ™ïGñªWf?ßCf8Z¹Ïô¡£‹Ç¼å&–ñÉïtÒEˆŽ~k®WÌ“l˜t/I)IÌ뽉«?âÒPz(–vÖ5ŸÕ’p'|ÛW÷"Þù™®áúÞÒ _ðtwâ;ð ¿W³7wÎjó ¾ïlTåîºàù¶ù•2çÌ]ÝË2/i¢ý¾ØÙ_è¨Ë:Ú]\Ãw|ÏÏæ(?BASEM€gC€&Ðh5-   †®–›UJ› ÉCNF4 SCALELO!M‚C&F$:À+ù¢D,Eþ.¤FwKh Ïvó(io_lib-1.14.6/tests/data/c1.fa.fai0000644000031500020650000000001612354177667013420 00000000000000c1 10 4 10 11 io_lib-1.14.6/tests/data/c1.fa0000644000031500020650000000001712354177667012663 00000000000000>c1 AACCGCGGTT io_lib-1.14.6/tests/data/ce#1.sam0000644000031500020650000000054212473051056013251 00000000000000@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 RG:Z:UNKNOWN AS:i:-18 XS:i:-18 YT:Z:UU io_lib-1.14.6/tests/data/ce#unmap1.sam0000644000031500020650000000547512473051251014321 00000000000000@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 RG:Z:UNKNOWN YT:Z:UU SRR065390.33808433 4 * 0 0 * * 0 0 NCATCTTCTGCAGGCGCGGTCGGCACCGTGTATTCGTTACGTTCCACGCCGATGATATTAGACACCAGCACGGTGTGATGCGCAGTCACCGCACGACCCG !################################################################################################### RG:Z:UNKNOWN YT:Z:UU SRR065390.33808462 4 * 0 0 * * 0 0 NGTTTGAGCGCAATGACTTGACGATGACCGGTGATTACAGTAACCAGCATATTGTGCCGATGAAGCAGGCTGTCGCTCCGCAATTTGAAGAGGGACACGA !################################################################################################### RG:Z:UNKNOWN YT:Z:UU SRR065390.33808468 4 * 0 0 * * 0 0 NGCTTCCCACTATATTTTACTCTCTGTGGCTTCCCACTTTATTTTACTCTCTGTGGCTTTATCGATTATTTTTTTCTCCTTGGCTTTCCTCTTTATTTTT !))))))''&585555AAAAA6AA############################################################################ RG:Z:UNKNOWN YT:Z:UU SRR065390.33808471 4 * 0 0 * * 0 0 NCGTCTTCTGCGGTTTCTATGATAGAGCAATTCTGTGGCGGATATTAAGATAACGGGTATCTGTTCTTTAATGATGCCGCAAAAAATGGAAAGTTAAGAA !################################################################################################### RG:Z:UNKNOWN YT:Z:UU SRR065390.33808489 4 * 0 0 * * 0 0 NGGAAATTCTGCGGTATCGAGAGATATTTGCCTTTAATTACCCCATAGCCGATTAACATCCCGGCACTATTAATCATTTCAATATTATCAATCACAAAGT !################################################################################################### RG:Z:UNKNOWN YT:Z:UU SRR065390.33808504 4 * 0 0 * * 0 0 NTGGAACACCATGCCCACTTTCGCACGCAGCAGGGCGATATCCTGAGAGTTGGTCAGGATGTTGTCGCCATCAAGCAGAATTTCACCTTCCGCACGCTGC !################################################################################################### RG:Z:UNKNOWN YT:Z:UU SRR065390.33808511 4 * 0 0 * * 0 0 NCAGAAATATATTGAACTTTTGAAACATGTCCCAACTTTTTTTTTTTTTAGAACACGTTGGCTGGTTTTTCAAGTTTTGAATACTTTTTAGGTTTTTTTG !***()(+++AAAAAAAAAA:78:8318::AAAAAAAAAAAA########################################################## RG:Z:UNKNOWN YT:Z:UU SRR065390.33808521 4 * 0 0 * * 0 0 NTGTCAATACATTGTAAGGATTTCCCATTATGTCAATACATAGATCGGAAGAGCGGTTCAGCAGGAATGCCGAGACCGATTTCGTATGTCGTGTTTCTTT !################################################################################################### RG:Z:UNKNOWN YT:Z:UU SRR065390.33808523 4 * 0 0 * * 0 0 NTACTTCTTACAAGATTTTTATCGCTACTTGAAAAAAATTCATCAACATAATCGCCATGACTATCTGCACCGTGAGTATGATAAGCAGCAACTCTATCTG !***+--,')AAAA778577A72AA50888AAAAAAA72A88858AAAA77AAAAAA7AAAAAAAAA8AA############################## RG:Z:UNKNOWN YT:Z:UU io_lib-1.14.6/tests/data/ce#2.sam0000644000031500020650000000123712473051072013252 00000000000000@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 RG:Z:UNKNOWN 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 RG:Z:UNKNOWN io_lib-1.14.6/tests/data/ce#unmap2.sam0000644000031500020650000001321412473067071014317 00000000000000@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 RG:Z:UNKNOWN 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 RG:Z:UNKNOWN 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 RG:Z:UNKNOWN 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 RG:Z:UNKNOWN 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 RG:Z:UNKNOWN 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 RG:Z:UNKNOWN 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 RG:Z:UNKNOWN SRR065390.33808391 4 * 0 0 * * 0 0 GATCGCACTGAAAATCTGGATATAGAACGTGTGCAAATGATTGTCTCTACCGTTCCGTAAAAATTATTGCTAATTAGCAATGATTTTAAGCTAATTAGTT CCCCCCCCCCCCCCCCCCCACCCCCACCCCCCCCCCCCB;CCCAACCCCCCCCCCCCCD=B9BCABCBCB>BBBC@B<<@BA;BCC?B>A<<@(?:4==4 RG:Z:UNKNOWN YT:Z:UU SRR065390.33808433 4 * 0 0 * * 0 0 NCATCTTCTGCAGGCGCGGTCGGCACCGTGTATTCGTTACGTTCCACGCCGATGATATTAGACACCAGCACGGTGTGATGCGCAGTCACCGCACGACCCG !################################################################################################### RG:Z:UNKNOWN YT:Z:UU SRR065390.33808462 4 * 0 0 * * 0 0 NGTTTGAGCGCAATGACTTGACGATGACCGGTGATTACAGTAACCAGCATATTGTGCCGATGAAGCAGGCTGTCGCTCCGCAATTTGAAGAGGGACACGA !################################################################################################### RG:Z:UNKNOWN YT:Z:UU SRR065390.33808468 4 * 0 0 * * 0 0 NGCTTCCCACTATATTTTACTCTCTGTGGCTTCCCACTTTATTTTACTCTCTGTGGCTTTATCGATTATTTTTTTCTCCTTGGCTTTCCTCTTTATTTTT !))))))''&585555AAAAA6AA############################################################################ RG:Z:UNKNOWN YT:Z:UU SRR065390.33808471 4 * 0 0 * * 0 0 NCGTCTTCTGCGGTTTCTATGATAGAGCAATTCTGTGGCGGATATTAAGATAACGGGTATCTGTTCTTTAATGATGCCGCAAAAAATGGAAAGTTAAGAA !################################################################################################### RG:Z:UNKNOWN YT:Z:UU SRR065390.33808489 4 * 0 0 * * 0 0 NGGAAATTCTGCGGTATCGAGAGATATTTGCCTTTAATTACCCCATAGCCGATTAACATCCCGGCACTATTAATCATTTCAATATTATCAATCACAAAGT !################################################################################################### RG:Z:UNKNOWN YT:Z:UU SRR065390.33808504 4 * 0 0 * * 0 0 NTGGAACACCATGCCCACTTTCGCACGCAGCAGGGCGATATCCTGAGAGTTGGTCAGGATGTTGTCGCCATCAAGCAGAATTTCACCTTCCGCACGCTGC !################################################################################################### RG:Z:UNKNOWN YT:Z:UU SRR065390.33808511 4 * 0 0 * * 0 0 NCAGAAATATATTGAACTTTTGAAACATGTCCCAACTTTTTTTTTTTTTAGAACACGTTGGCTGGTTTTTCAAGTTTTGAATACTTTTTAGGTTTTTTTG !***()(+++AAAAAAAAAA:78:8318::AAAAAAAAAAAA########################################################## RG:Z:UNKNOWN YT:Z:UU SRR065390.33808521 4 * 0 0 * * 0 0 NTGTCAATACATTGTAAGGATTTCCCATTATGTCAATACATAGATCGGAAGAGCGGTTCAGCAGGAATGCCGAGACCGATTTCGTATGTCGTGTTTCTTT !################################################################################################### RG:Z:UNKNOWN YT:Z:UU io_lib-1.14.6/tests/data/ce#large_seq.sam0000644000031500020650001014165412473051160015062 00000000000000@SQ SN:CHROMOSOME_I LN:1009800 S1 0 CHROMOSOME_I 1 255 36M4I33M2D18M4I13M3I5M2I7M1I8M4I30M1D20M5D25M4D63M1D31M2I13M4I83M3I36M4D77M2D8M2D5M2D14M2I5M4D1M1D27M5I3M4D47M2D5M4D7M1I70M3D42M4I59M5I2M2I13M4D3M5D6M4I5M4I58M1I10M3I57M1I15M5D57M4I10M1I19M4D9M3I27M4D11M3I9M4I21M4I62M4I51M1I8M3D23M1I5M4I24M2D1M5I4M4D14M3D63M5I1M2I20M4D10M5D7M2D22M4I22M2I9M3I46M5I1M4D12M5D8M3D17M5D149M1D20M1D61M1I14M2I38M4D9M4I62M1I8M1I55M3D62M4I8M4I50M5D19M3D11M2I53M4D7M2D32M2D57M3I48M2D11M4D15M1I23M2D16M5I7M1I3M1D27M5D4M1I18M1D79M5D1M5D8M5D20M1D22M5D24M2D30M5D43M1I17M1I22M2D18M3D1M4I15M1I4M3D1M3I22M5D62M4D19M3I3M5I7M2I110M5D7M2I9M4I28M2D3M4I17M1D1M5D103M5D45M3I32M3I37M1D20M1D22M5I6M3D101M1D20M3D6M1D15M5I14M5D118M1I3M1D3M5I37M4D10M4D10M1D10M2I48M1D2M3D7M4I60M1I38M4I16M3I20M4I30M2D3M2D15M3D35M1D7M1D1M1I44M4D6M5I1M2D2M3I83M3I3M1D18M2I1M5D65M2I13M3I25M1I10M2I23M2D12M1D10M1I1M4D8M3D27M5I9M1D11M3I69M4D115M1D28M5D38M4I5M5D21M4I11M5D43M4I70M5I38M1I27M2D8M3I2M2I10M1D94M5D17M2D9M4I21M1D2M5I8M2D32M4D52M1I37M3D7M5I64M1I31M2I21M2I11M4I46M4I5M5D22M1D55M4I18M3D102M5I72M4I4M1I7M5D19M1D40M2D101M3I2M1I36M2I26M4D5M2I29M5I13M5I20M3I9M2I8M2I143M1I10M4D25M5I41M1I9M5D12M2I8M4I11M2D66M3I1M5D77M5D4M2I49M4I15M3D11M4D17M5I143M2I29M4I4M3I4M3I19M3I44M5D108M3D12M2D19M1I13M3I18M5I2M1I16M1D4M3I318M4I39M4I21M1I24M3D32M2D70M5D11M5D34M4D46M4D3M3D32M3D54M2I8M1D65M5I53M5I27M3D6M1I34M5I34M5I37M4D1M5D10M5I68M1I8M4I6M1I14M5I6M5I26M3D50M2D2M5D22M4I34M1D24M1I28M4D67M2D43M4D17M4I57M3D35M5I66M1D45M2D27M3D28M3I32M4D24M1I16M2I3M3D6M4I33M4I12M2I19M2D5M1D119M3I64M5D29M3I87M2D4M4D42M4D3M4I76M2D19M2I51M2D18M1D2M4D21M4D11M1I6M4D135M1D10M1D120M1I102M4D37M5I8M2I51M4D50M2D14M2D32M5I2M5I36M4D59M3I87M1I21M2D14M1D27M5I3M5D4M4I90M1I37M5I19M3D12M1I21M5D51M4D3M4I8M4D28M4I76M2D5M3I13M4I214M4I18M1I22M2D12M2D123M5D9M1I9M2I17M1I7M5I70M2I34M1D13M5I2M2I69M4D129M5I64M2D15M2D9M1I56M5D73M1D45M5I55M3I26M2I24M4I31M2D29M5I2M2D80M3I28M1D19M4I1M5D4M3D118M3D36M2D32M3I1M2D35M2D27M1I32M2I7M3I51M1I51M3D21M4I4M5I40M1I27M4I55M1I16M4D50M1D107M5D96M1I4M1I68M4I4M4D4M1D78M1I5M2I73M1D7M5I21M4I8M5D71M5D19M5D20M2D7M5D27M1D35M5D38M4I83M1D33M4D54M4I19M1I3M2I11M4I4M1D10M5I24M3D1M2D12M4D8M5D1M2I22M2D39M2D101M4I4M4I26M5I13M3I26M4D33M5D10M2I13M3D19M3D18M2I27M2D3M2I2M4D33M3D55M4I6M3I129M1I14M3D41M4I3M5I81M5D9M5D12M2I5M3D1M5D40M5D2M1D21M1D4M2I2M4I12M4I22M3I105M4I1M5I14M3D19M5I6M4I13M2I10M2D11M4I34M2I7M2D32M3I13M5D23M4D8M3D59M5I11M3I53M1D19M2I122M2D15M2D108M5I1M4D14M5I11M4D12M1I19M2I1M3D7M3D4M2I1M5I24M2I15M1I36M3I16M3D25M5I3M4I22M5D6M4I22M3I77M5I43M1D13M3D30M5I19M4I29M2I86M2I23M4I9M3I7M1I14M3I3M4I39M1I77M2D5M4D58M1D1M1D4M5D57M5I22M3I84M1D19M3I14M5D21M4I10M5D17M1I4M4I63M2I23M4I23M4D32M5D40M5I29M4I126M3I2M1D105M4I49M1I32M4D29M5D31M1D15M5I6M5I21M4I56M2I6M3D11M4D3M1D28M4D78M1D5M1D20M3I67M1D2M2I7M5I2M4D14M5D4M3D27M2I18M5D20M5D58M3D19M4D36M5I133M3I75M4I39M3D28M3D158M4D8M2I12M5I68M5I18M2D17M4I52M1D90M5I17M5D47M4D3M2I15M3I4M1D17M4D1M3D23M1I84M5I1M4D10M1I11M3D78M2I3M4I2M5D13M5D21M2D24M1I89M4I2M3D59M4D22M5I14M4I16M2I53M1I13M1I81M4D11M3I29M2I170M2I43M5I116M3I1M5D1M2I20M5I51M1I17M3D2M4I5M3I17M5D36M5D21M3D4M2I85M2I18M2D42M3I48M3I7M4I11M5I17M4I3M3D45M1I93M1D38M5I8M2D41M3I56M2I35M5D59M5D36M3D9M5D23M4I12M4I14M1D38M5D6M1D2M1D2M3D126M1I9M2D31M5I81M4I7M5D19M5I25M3D222M2D29M2D105M1D39M1I4M2D7M2D67M3D32M5D3M3D36M1I50M2I117M1I75M1D24M2I80M4I48M1I11M4D4M2D55M4I21M5I29M1D51M3D16M5I43M3I17M3I6M4D99M3D17M3D22M3I18M5I35M3I28M1I23M4D9M1I46M3I16M4D18M3I32M3I16M1I60M4D76M3D1M3D9M2D28M2D25M1D8M1D1M5D56M3I8M4I33M1D15M2I83M5D60M5I99M4D90M4I69M4D41M1I4M4I1M3I50M3I38M2D80M2D56M4D33M3I8M2I11M5I15M3I42M1I135M2D29M1I34M3I13M1I74M1I10M5I48M4I8M2I74M4D6M3I43M2D3M4D99M2D20M3D35M5I12M1I4M2D25M5I68M3D57M3I24M5D8M5D10M3D84M5I170M3D31M1I9M3I7M2I47M1D31M4D7M4I13M2D7M4I7M2I58M1I81M3D18M5I6M5D68M4I18M1D25M2D1M2I7M4I5M1I14M3I75M2D33M5D17M1I19M2I3M5I5M5D53M3D1M3I33M1D27M5I33M1D93M5D1M3D167M4D38M2I33M3D119M4I43M3I31M3I7M1I77M5I5M2D5M5I24M4D10M4I88M5D47M4I29M4D63M1D11M2I41M3D97M3D13M4D48M3D55M4I3M5D32M1D53M5D13M1D7M2D23M4D131M4D17M2D18M4D4M2D6M1I71M1I29M5I12M3D48M1D45M4I41M1I84M5I84M2D17M5D87M3D88M2D14M5I52M5D62M4I39M2I44M2I26M4I15M4D21M1I8M3I21M4I48M4D34M4D29M4I17M1D18M5I91M1I35M4D4M2I10M4D26M2I4M1I27M4I14M2D11M3I35M5I64M2D86M1I119M5I23M4D27M4I70M5I8M1D12M3D17M3I9M1D77M3D29M1D35M1I37M3D7M4D35M2I13M3I9M2I112M1D19M4I20M4D81M5I129M1D3M4D48M4D31M4I73M5D18M4I8M2D15M5I18M4I33M5I112M3D13M2I26M5I21M3D1M1I63M2D1M3I22M5D5M4I18M2I10M3D7M1I34M3I1M4I2M5D56M3I48M4D13M3I26M5D24M5I7M5I13M4D16M5I44M1D60M1I17M2D18M5I4M2I1M4I4M4D40M5D81M2D19M3D4M1I19M4D10M4I9M5I7M2D51M2D13M4I19M1D57M2D58M3D84M3I2M1I24M1D11M1D3M3I47M2I9M2D5M2D65M1I25M2I35M3I45M3D1M5I13M1I34M3D5M5D2M4D30M2D21M3I6M1I69M4D69M1D9M3I61M4I3M4D16M4D47M3D28M3D14M2I85M2I33M4I9M4I48M4D78M5I73M2I5M1D60M3I31M4D1M5I24M2I32M4I14M2I19M3I5M2D22M2D49M3D5M3D11M2D43M4D4M1D10M1I14M3I3M5I19M5I63M3I4M3D32M4I1M5D18M1D17M4D41M3D25M1I20M3D43M2I21M2I19M3D2M3D17M4D30M5D30M4D9M4D6M3D51M4I58M2D23M2D4M1I19M1I12M2D20M2I1M3I42M2D82M3I3M4D33M2I37M5D65M1I82M4D6M1D54M5D11M5D34M4I7M3I17M5I33M5D38M1I31M5D26M1I16M4D20M2I13M5I23M1I11M1I10M4I4M3I7M3I26M3D30M5D3M4I35M3D1M5D14M4D24M3I23M4I7M1I32M1D29M3I14M1D107M5I6M5I6M4D3M1I41M1I20M2I32M2D1M1I7M1D3M4I7M3D140M3D48M2I4M3I117M2I18M3D4M4D13M1I11M4I27M1I49M1I52M1I5M3I10M4D116M5I7M2D73M1I30M3I27M1D1M1D14M2I40M4I16M4I76M2I43M3D30M1D10M1D43M1D24M3D1M3I16M5D25M4I34M3D50M4D37M5D12M1D38M1D30M4I23M1D14M2I29M1D17M3D3M5I16M1D29M3I3M3D48M3I141M4I32M4D13M5I23M1D26M1I76M4D50M2I11M5I65M4I2M1I37M3D54M4D34M1I17M5I2M1I5M4D8M2I43M1I147M1D8M5I53M2I59M1I14M5I25M5D28M2I56M5D36M2I5M1I27M3D1M2D14M2D37M2D1M1I11M4D55M4I105M5I3M1I9M5I45M4I49M3D75M2D31M5D1M3D3M3I23M4I65M3I19M5D44M5D68M4D11M4D9M5D28M1I20M4I2M3D118M3I10M4D2M5I40M2I32M1D41M1D9M3I30M4I8M2D7M3I9M5D21M1I34M1I22M1D97M3I44M5D13M4I17M2D46M1I99M3D44M3D16M2I20M4I62M4I9M5D32M2D3M1I29M4I13M3D7M1D11M2I40M1I80M2D47M2D21M2I25M4I21M2I11M5D36M4D112M4I42M2D4M5D67M2I43M5D33M4I27M4I25M1I81M1D10M2D6M4I12M3D6M5D11M2I12M4D41M4D21M3D36M1I32M4I58M4I26M2I12M3I6M5D1M3I6M3D21M1I45M1D20M3I18M4D87M2D59M3D3M2D59M5I60M3I17M3I8M5D2M2D13M1I15M1I6M2D55M3D4M2I86M1D10M2D24M4D6M5I51M3I5M3I6M3I27M1D2M2D39M2I55M4D17M4D98M1I63M3I6M2D114M2I23M2D22M2I36M2D24M5I32M3D23M5D5M4D48M1I26M4I9M1D18M3D1M1D7M4D1M3D14M5I34M1D37M1I68M5D30M4I48M5D108M5I37M5I24M5I46M3I19M1I10M4D118M1I3M4I30M2I35M4I8M2I29M5I26M4D11M5D9M5D21M3I38M3I26M1D5M1I52M2I9M3D4M1I31M4I1M5D24M1D3M1I98M2D30M4D8M4I7M5I76M3D19M4I5M3I47M1I26M4I10M5D41M1D79M1D7M3I14M5D53M5D50M5D73M3I86M1D20M3D69M1I33M1I17M4D38M3D19M5D55M3I27M2D6M3I62M3D8M3D33M2I15M5D2M4D34M4D50M2D68M1D64M5I20M5I29M5D71M3I8M1I40M3I9M3I12M2D15M1I2M2I39M4D36M3D38M1I2M5I30M2D26M5D47M5D19M5D13M3I1M4I3M1I10M2I29M4I78M5I37M3I15M5I6M3D83M5D16M5D6M2D9M4I32M4D13M5D22M2I15M1I56M3I23M2I28M3I71M3I67M5I8M3D7M1D16M4D4M1I15M2D6M1I19M4D1M1D37M2D78M4D23M2D14M2D81M1D11M4D12M3D31M3D70M1D8M5D18M5D6M2I27M4I11M5D22M4D78M3I3M1I162M1D94M4D65M1D2M1D28M3I33M1D47M4I125M5I19M5I106M1I10M5D1M5I61M1D37M2D30M5I101M3D9M4D7M4D59M2I31M4D73M1I13M5D36M1I55M2D31M1I34M3D10M5D53M1D27M1D10M3D19M3I58M5D47M2I54M5I27M3D55M1I46M3D53M3D40M5D5M4I87M1D30M2I21M2D18M4I85M5I3M4I8M3D33M2I38M3D6M2I10M1D28M4D61M2D35M2I24M2D13M1D1M4D37M1D39M3D28M4D1M3I32M1D48M2D132M5I17M1D12M1I47M3D46M1D22M1D26M4D38M5I70M5I8M3D108M4D83M1I35M2D7M3I27M4I17M4D16M2D2M5D53M4D8M3D29M4D20M4D42M5I29M1I19M1D19M3D43M4I26M1I10M5D23M5I9M3I22M3I7M5I49M3I9M4D20M1I73M5D25M2I18M2I1M4D2M1I9M1I55M3D45M5D2M2D17M4I53M4I7M5D19M5D9M2I13M2D1M4I42M2I11M4D4M3I23M3I28M3I22M4D2M1I6M3I47M4D15M3I7M2D46M3D81M4D102M4D15M2D11M2D47M4I65M4I54M5D1M3I37M5I21M2D44M1I69M5I10M5D11M1I115M1I5M4I2M2I10M4I19M4I74M3D32M5I22M3D27M5D35M2I14M3D54M3D14M1I9M2I22M3D20M1D12M4D45M4D1M3D77M1I5M1I53M4I18M1D5M5D18M3D30M1I6M4I16M5D9M3D16M5D100M3I79M2D81M3I56M3D2M5D25M5D26M1D46M2I6M2I9M4D10M5I53M2D2M2D92M3D6M3D45M4I28M3I19M3D9M3I10M5I29M3I51M1D12M5I75M5I22M3I21M1D8M1I7M2D2M1I25M3I19M5D29M4I2M4D25M1D2M3D9M5I26M1I65M3I28M3D62M3I51M2I2M4I32M3D10M5D73M5I3M1D7M1I4M2I56M2D93M5I1M5I28M2D22M1D6M2D28M3D23M5I11M4D100M5I90M2D43M1D57M2I17M2I13M3D71M5D9M5I14M4D120M4D15M5I69M5I1M3I53M4I22M3D7M3D61M5I39M1D38M5D80M3I24M1D6M1I10M1I41M5D50M1I30M1D4M4I126M5I4M4D68M1I87M2D24M1D1M4I70M5D13M2D43M2I1M5D79M2I65M3D6M5D108M4I10M3D44M1I23M5I115M2D10M3I6M5I7M2D57M2I5M3I25M3I79M5I23M3D17M1D28M5D58M5D39M4I12M2I72M2I44M1I39M4D36M3D32M2D21M1I96M3D82M2I7M4D102M2I30M2I46M1D14M4I21M1I28M2D44M2I23M4I164M4I10M1I7M5D12M2D115M4D50M3I1M1D22M3I52M1D74M4D8M5I29M5D83M2D37M4I5M2D30M3I91M2I66M4D14M2I30M1D53M4D14M1D47M5D60M1D19M4D2M2D2M4D42M5I29M4D5M3D15M3D20M2I7M5I3M2D57M2I35M5D3M4D20M3D1M5D71M5I12M3I8M1D29M5D14M4D1M4D6M5I1M1I70M1I47M5I52M1D5M2I54M1I177M4I75M3I2M2I3M2D23M1I17M2D57M1D25M1D42M3D29M5I33M1I17M2I42M5I27M5I15M5I12M5D2M5D1M4I81M5I8M4D2M3I16M1D60M5D41M2D47M5I22M5D114M3I32M3I32M2I37M3I13M2I25M5I21M4I13M5D16M1I58M4I67M5D2M2I38M1D12M3I24M4D11M2D1M2D9M1I9M1D31M2I13M4I72M2I4M4D14M3I49M2I10M2D62M1I152M1D13M2D7M2I102M4I23M5I32M5I1M1I26M3D21M1D7M2D36M1D24M4D1M4D46M2D9M1D3M5I94M1D5M2D2M4D1M1D6M3I5M4D24M3I5M4D81M1I11M2I49M3D32M2I26M2D11M4I86M2D32M4D26M1D5M2I19M3D10M3I46M5I101M1I21M2I28M4D17M3I34M5I3M1I7M4D55M3D4M1I37M3I3M3I97M1I44M5I48M2D63M5I61M4I7M1D40M4D2M3D48M5I55M1I6M4I2M4I1M3I22M1I3M2I43M2I6M5D26M1I12M1D6M4D2M4D57M1D30M1D134M4I22M4I153M1I10M4I3M4D36M5D6M2D2M4I8M4D5M2I17M5I13M2D27M4D21M4D25M1D1M2D17M3D52M1D16M2I12M4D121M1I2M1I68M3I19M4I48M4D24M4I8M2D33M2I9M2I90M1I1M5I22M5D1M2I25M2I55M2I15M2D43M4I57M3I14M4D23M2I17M5I20M4I2M4I32M2I37M3I7M5I11M1D24M1I15M2I30M2D27M2D57M2I2M5D29M3D90M2I2M2I48M5I17M3I41M1D3M3I17M1I83M1D13M2I4M2D22M4I136M2D6M3D11M3I38M5I2M2D114M1I13M1D96M2D13M4I2M1I6M2I2M4D75M2I21M5I2M1I12M2D13M2I8M4I4M1D10M5I5M4I16M5D50M4I15M3D18M3I39M5I85M2I49M5I56M2I38M5I126M1D64M3I33M2D1M3I11M5I6M3I60M3D41M4I6M4D10M5D20M2D19M3I61M2D8M4I3M1I56M3D37M3I69M1I3M2D26M3D80M3I20M4D69M3D71M1D24M2I78M2D95M5D12M1D14M3D30M5I14M1D16M3I43M5D18M5D12M4D15M1I27M3I2M3D120M3D77M5I145M4D9M1D22M3D3M5D3M2D18M1D55M4I27M2I22M1I51M3I53M1I37M2D17M5D57M2D27M1D17M2I50M3D53M1D69M4D9M4I135M2I4M3I39M2I15M1D40M1D16M1I41M3D38M3I21M3I16M2I3M4D1M1I45M2D12M3D59M5I43M4I2M1D26M2I1M5D11M4D83M3D15M4D5M4I60M4I2M2I15M3I122M1D4M2I28M2D12M1I44M4D11M1I54M4D5M2I16M1I33M3D17M1I24M1I33M3I58M2D17M4D13M4I6M5D26M5D17M5I8M2I7M4I24M4D44M1D94M1D5M3D32M4I4M2D19M5D63M1D70M1D13M2I67M1I21M5I3M4I35M5I12M1D30M3I29M5I72M4I33M3I43M1D16M4D3M3D7M3I54M3D9M5D46M5D68M3D77M1D29M4D33M3D7M5D46M4D24M5I16M2I5M5D13M3I36M5D2M2D21M3I7M2D11M3I59M2D45M4D29M5D32M1D7M2I44M2I94M3I4M1I20M1D27M5D19M1D7M3I14M3I11M1I5M2I17M3D44M3I28M4I3M2I64M2D28M3D15M5D61M2D74M2I50M4I9M4I57M1D7M5D17M2D4M5D13M2I9M1D29M3D26M2I7M4I5M2I21M1I60M4I123M1D37M2D6M4D27M3I23M1I19M2I10M2I7M3I36M5D50M4I3M5I190M2D74M3I48M1D5M3I29M3D75M3I11M3D77M1D43M2I5M5I17M1D52M4D28M4I14M5D4M5I14M3I16M1D3M5D63M2D8M5I2M5D28M3I43M2D11M2D64M1D9M5D22M1D97M2D29M3I10M5I9M1D118M4I6M4I37M4I137M2I33M5I41M1D23M1D26M3D68M3I14M4D74M2D32M3I5M2I61M5I15M2D44M1D14M1I42M2I27M2I17M2I8M2I19M2D5M4I59M4D4M2I29M5I13M1I92M3I1M5I1M1I31M2I2M5I41M2D27M5I106M1D13M4D29M1D22M1D8M5I2M3D48M5D65M1I73M4I5M1D31M1I7M4I9M5I12M2I36M4I18M5D11M4D109M3D73M2D13M2I62M1D52M5I91M2I3M3D21M2D12M4I27M4D12M1D46M1I39M3I13M4D9M2I1M3I20M5I78M3D72M3D9M5I4M2D24M4I63M2D9M2D15M1I38M5D4M3D7M3D10M2I39M5I34M3I116M1D22M2D18M2D8M5I2M2D100M4D107M3D12M4I1M3I12M3D3M2I11M1I57M1I7M3D45M3I42M4D27M1I80M2D57M5I35M1D6M2I39M2D44M3I14M1I5M2D46M2I66M4D48M1D42M1D30M1D21M2I21M4I4M3I102M5D20M2D16M3D13M5D23M4I9M4I12M1I26M2I171M3I40M2D35M3D2M1I43M1I41M3D32M3D17M3D54M2I39M5I60M1D40M3I34M1D1M2D12M3D22M2I76M4D69M3D38M2D2M3I8M3I26M5I22M3I21M3D47M1D20M1I34M2I8M2D8M5D23M2D45M2I43M5D8M3D1M2I49M2I14M3I45M2I83M3I39M5D283M5D77M4I13M1D25M2D1M3D23M2D26M4D2M2D23M5I55M3D7M5D9M1I3M1I3M4D54M4D23M3I47M2D17M1D8M1I19M1D17M4I23M4I7M3I51M5D77M1D57M2D9M5I31M4D12M3I76M5D14M3I15M4D44M2D11M1D34M3I2M1D13M2D12M2D25M4D59M1I27M3D18M1I2M5I41M3D10M2D1M5D22M3D12M1D57M2I97M3D9M5D12M3I3M5I9M4I33M3D48M1I32M1I1M2D29M5I52M3I11M2D17M1D18M2D198M3I82M2D20M1I31M3I8M5I147M3I52M2I5M2D2M5I6M2I84M3I16M5I45M1D20M5I14M3I118M2I27M4D8M5I20M2I33M2I5M4D26M5D62M1D4M2I22M2I15M1I4M2I2M3D25M3D21M1D95M3D7M2I54M3I1M4I82M5D18M2D3M2D43M5I32M5D8M1I5M1D6M1D8M2I91M4I35M2D2M1D73M3I24M1D19M3D33M2I45M5I13M4I33M5I22M3I13M1I26M4I6M4I44M4D40M2D13M3D17M1I11M4D11M2I7M2D27M2D24M5D36M4D23M3D36M3D34M4I27M2I61M1I57M5D26M1I25M2D75M5D23M4I17M3I8M3D52M5I5M4I9M5I22M3D9M4D55M1I28M1I21M3I12M5D29M5I32M5I18M1D20M4D23M1D7M5I16M3I63M4I13M4I18M2D24M3D4M3D1M3I14M1D20M2I24M2D55M2D56M1D46M3I14M4I59M5I7M4I58M5D28M2D13M3I8M3D43M1D10M2I60M2I31M1I4M1D162M1I13M5I82M4D5M5I69M3I16M1D36M3I2M4D54M2I57M2I39M2I18M4I2M1D65M1I148M1D46M3I17M2I6M5I244M5I26M3I3M2I10M2I23M4D2M4I49M4D6M2I14M4D30M1I29M3D38M5I33M3D84M4D13M5I15M1D14M4D14M3D3M2I44M5D120M2I5M3D12M2I99M2I1M4I35M1D7M3D17M1D16M5I35M4I9M1I105M2D6M5I15M2I3M2D5M1D60M1I149M3I48M4I21M3I21M1I27M1D16M4I26M2I1M5D87M2D40M4D23M2D26M4I32M4D18M5I16M3D8M1I39M1I14M3D16M2I2M5D2M4D20M1D58M1D55M3D22M4D76M5D41M5I27M2I21M5I9M2I43M4I61M3D6M5D32M4I48M1D89M5D61M5D62M4I72M5I8M4D21M4D8M5D53M3I26M4I132M4I10M5D74M3I138M3D13M1I7M1I50M3I3M1D70M3D14M1D39M1I85M2D12M2I59M4D5M3D50M3D5M5I1M1I27M5D52M3I36M4I30M3I35M1D12M2I13M1D63M3D8M4D67M4I2M3I1M3D84M1I48M4D97M3D16M3D55M1I17M2I4M3D56M5D6M4D6M3I11M4D37M1I23M5I9M4D16M4I68M1D40M2D31M3D44M5I65M4D14M5D8M1D27M3D10M4D114M2I26M1I22M3D49M3I5M2D11M3D17M3D13M3I10M2D118M4I14M2I7M3D58M3I10M4I7M5I8M5I4M3I9M1I36M4I5M1I97M1I1M3D20M3I14M4D24M5D58M2I17M5D123M5D2M2I26M4D4M2I11M3I15M1I34M3I29M1D23M2D1M4I3M5I14M4D5M5I12M2I4M1I26M4I6M1D26M3I33M5D13M4D23M4I6M3D5M3I9M3D52M3I72M4I10M1D133M4I36M4D71M5D77M5D31M3D22M2I23M4I71M5I22M3I69M5I35M3D44M3I8M1I24M4I20M4I4M2I46M1D9M2D56M1I30M4I9M1I21M1D1M3I5M4I78M3I4M2D4M4I18M3I13M5D34M1I9M4D17M4I68M3D71M5I88M1I4M5I111M3I4M2I38M1I117M5D32M1D14M3I33M2D11M2D148M1D156M3I6M5I8M3D32M4D23M1D1M2I16M1D13M3D47M2I47M2D5M1D35M3I55M1I45M2I44M4I40M5I23M2I70M2I1M5I1M4I36M2D15M2D5M4D14M5D121M5I1M5I17M2I37M4D5M4D64M2D1M2I19M5I8M3D19M2D19M3D26M5D53M2I25M2D10M4I4M3D80M1I70M2I9M4D54M1D25M3D4M5D14M3D31M1I20M1I129M2D25M1I22M4D4M3D90M5D33M1I13M5I34M3D8M2D1M2D25M5I14M1D31M1D15M2I3M4I11M4I2M5D65M1I14M4D66M4D21M2I15M5I4M2D9M4I44M3D28M1D34M3D47M5I5M1I146M4I47M4I10M2I7M1I120M5D41M2D19M3D2M2I16M2I36M4I74M2I40M1I97M3I3M2D44M3I3M3D79M2D72M2I25M1I38M4I5M3D15M2I37M5I46M2D68M3D9M2D8M4I32M5D4M3I153M5I6M5I3M2D5M1D19M2I21M5I13M5I254M3D47M1D34M5D27M3D10M4I12M4D7M1D12M1I111M5I42M1D55M3I52M4D3M2I66M2D19M3D14M3D1M1D13M1I55M3I170M2I152M4I134M1I1M3I55M5I12M2D4M3I1M4I6M1I72M5D20M5I17M1I34M1I81M4I49M1D1M2I15M3D15M5I60M5I23M1I52M3I13M3D89M2D12M5D15M1I29M3D28M2D56M2D1M5I1M4D79M4I2M5D30M3I17M2I3M5D26M5I5M1I18M5D15M3D5M4D57M2D109M3I13M4I16M5D21M1D10M1D38M5D8M5I19M5I29M1I46M2I32M3D48M5I15M4D56M1D28M4D96M3D39M5I19M5D102M3D5M3D57M2I32M2I25M5I65M2D22M1I58M5I36M1D18M5I70M2D133M4I24M2I14M5I29M1D24M4D27M3D69M1I27M1D42M2I28M2I15M5I9M4I73M5I80M3I35M4I5M4D6M4D21M4D40M5D54M1I135M5D35M2I39M5I76M4I23M5I107M4D13M4D29M5I22M4D22M5I21M5D19M3I9M1I16M4I22M2I68M1I16M5D35M3I2M4I3M5D2M3I18M5I49M3I56M1I63M3D6M5I10M5I25M5D1M5I35M3D59M5D32M3I83M1D2M1D67M1D69M5D11M3I18M2D27M5I98M4D50M1I18M5I58M3I3M5D87M1I107M2I41M2I68M5I34M5I16M3I40M2I38M4D82M5I1M1D11M2I52M5D18M1D60M3D13M1D8M3I37M4D4M1D30M4D110M4I55M5D5M1I4M4D69M5I25M1D37M3D26M4D50M1I7M4I45M3I10M3D76M1D25M3I1M1I44M2I147M1D2M3I132M1D56M2D57M1D8M5I5M1I8M4D31M4I26M2I5M1D8M3I20M3I1M3I4M1D16M1I53M4I60M3I18M2I3M4I7M2I3M1D33M5D45M4D4M4I8M3D47M1I249M1I26M5I15M2D50M5D3M1I17M1I34M5D13M4I37M2D52M2I59M5D152M1I14M3D62M4I8M5I39M4D41M5D64M2D69M4I20M4I49M2D13M3I9M1I34M1D107M1D16M2D4M1D69M5D8M5I49M1D27M5D41M3D69M3D18M5D37M1I1M1I1M5D3M3D35M1I17M2I47M2D42M4D13M4I1M2I27M4D66M5I58M1D2M3D28M2I26M5D5M5I88M2I30M2I74M2I23M4D7M2D9M2I13M3D61M3D13M3D113M4D18M3I33M1I4M2I25M5I21M1D1M5I13M4D53M2D13M4D2M3D12M3I20M5I170M1I14M5I12M1D38M4I6M1D76M4I39M3D22M5I71M4I57M3I35M2D4M3I2M5D13M5D6M4I2M4I36M5D13M4D43M4D88M3D143M5I12M4I57M5I29M1D33M5D2M1D18M3I38M2I71M2I10M5D39M3D18M4D21M5I4M5I11M5D24M1D19M1D8M1I1M4D47M2I67M5I9M1I15M1I6M1I16M2D5M1I48M3D4M3I12M5I6M1I32M5I100M1D9M2I34M4I6M2I12M3I70M1D9M2D3M5D22M3D89M3I11M3I15M4I5M4I19M3I4M1I81M2I4M3I6M3D20M4D1M2I40M5I53M3I24M5I85M1D13M3I11M5I68M5D17M3I13M1I24M5D21M2I6M5I8M4D91M2D5M1D67M5D11M3I51M1D20M4D21M2D4M4I36M3I4M1D29M2I17M2D36M4D7M1I3M2D5M2I82M2I50M2D8M5D41M1D13M4D17M1I33M4I7M2D19M1I9M1D20M3I22M2D22M1I30M3D24M3D8M3D30M4I24M3I10M3D15M2I19M4D12M2I9M1D21M3I40M1I19M4I50M4D26M5I13M3D23M5I20M5D31M4I16M2I9M4D8M1D35M5I49M3I62M1D5M1I2M4D38M3I53M5I22M3D8M3D88M3D141M4I14M5I20M5I6M5I2M3D37M2I82M4I11M3I26M1I40M2D236M1I13M4I70M5D2M4D3M5I32M4I26M5D40M1I2M1D9M1D60M3I30M4I97M4D9M4D15M5I21M5D5M2D2M3D48M1D66M1I40M4I2M4I4M3I26M2I9M2D75M4D56M2D108M4I23M4I7M2D10M3D6M4I8M1D6M1D56M5I12M2D36M5D45M3I2M3D67M1D34M4I6M3I158M5I123M4D63M3D33M1D47M1D43M5I86M2D2M3I74M2I28M2D52M1I63M1D36M3I42M2I12M4I2M4D65M1D22M2D20M4D11M2I4M3D7M4I7M3I39M1I23M2D1M2D1M2I51M5I19M2D5M1I17M3D43M4D4M4I59M5D102M2I48M2I9M1D56M3I6M4I48M3I4M3D36M1I52M5I8M3I13M2D1M4I12M3D56M5D25M5I1M1I47M3D12M5D6M5I46M2I29M3D20M2D5M1I7M2I2M1D8M4D83M2D32M1I36M5D23M1I8M2D20M3D19M3I16M5I1M5I47M3I5M1I55M1I1M5D26M1D16M3D74M5I39M5I3M3D36M3I42M2I11M5I68M2I19M1I25M5I110M1D5M3I86M5D31M2I36M4D19M4D4M5I122M2D18M3D3M3I79M5D14M2D22M1I5M2I14M3D54M2I17M4D76M3D10M3D73M1D6M5I8M3D67M5D140M4I18M2I29M4I27M4D83M3I23M3I25M1D32M2I39M2I8M2I68M4D63M3D36M2D2M5I54M2D28M3D59M3I14M1I12M4D8M3D4M5D7M2D22M4I10M1D99M5I130M4I75M2I47M2I52M4D35M4I8M2I16M5D13M4I80M1D42M1D40M2D18M5D9M3D48M5D28M3I24M2I23M4D77M4D37M4I47M3I3M3I110M2I27M4I5M5D24M5D69M2I30M4D23M4I12M3I3M5I27M1D5M5D21M4I24M4D58M1I14M3D76M5D20M2I49M4I40M3D10M5D42M3I1M5I60M5I8M4D36M4D16M5I31M2I7M2I22M5I3M2I6M2I63M5I35M3D14M4D35M5D14M1D9M3D33M5D145M1I18M4D36M1D61M5D1M3I121M5I173M2I30M5D70M4D17M1D56M3D10M2D13M5I51M5I41M1D21M1D17M4I1M1I8M1I65M5D2M1D2M3I54M3I54M2D2M3I48M4I15M3I6M3I17M3D6M2D64M4I12M3I9M4I4M4I21M3D76M2I47M1I26M1I3M2I70M5I29M4D1M5D22M4D37M1D8M1D1M4I20M1I40M4D22M4I22M3D1M3I13M5D42M5D8M3I1M1I125M4I74M5D13M1D16M4D14M2I17M3I17M1D6M4D7M1D5M5I30M3D15M1I21M4I10M1D3M1I2M3I34M1D8M1D3M3I15M1I23M4D50M1D44M1I48M5D6M1D8M4D1M3D10M5I14M1D6M5D19M2D13M2I15M2D20M2D28M2I95M1I20M5D8M4I65M4I19M1I23M1I50M1I7M2D14M5D30M2D2M4I1M3D135M3D25M2D7M3D1M5I12M4I3M4D1M5I23M3I11M4I48M4I26M5D100M2I69M3D20M4D14M4D12M2D140M1D29M1I2M2I46M2D50M2D44M4I15M4I192M5I11M4D75M5D130M3D19M4D12M1I2M1D60M2D9M2D36M3I17M4I4M1I12M5D40M3D25M1D26M3I19M1D26M1I46M3D12M2I5M1I9M1D46M3I148M4I3M3I95M2D48M4I127M2I7M4I12M2I75M5D28M2I24M1D1M4I18M3D29M1D2M2I37M5D15M5I45M2D6M4I42M5D15M3D73M2D8M3D43M4D1M2D18M3I34M1D5M1I40M4I26M2D22M4D24M3I20M3D58M3I38M2I39M1D11M1D22M1I6M2I1M3I12M1D8M4D9M2I19M4D70M1D3M4D3M1D59M5I3M5D3M1D14M4I6M4D36M3D26M1D13M5I79M2D42M4D31M5I40M1I30M4D2M5D20M5I3M2I18M5I40M5I33M4D47M3D44M2D46M1I22M1I29M5D34M4I33M2D13M4I14M2D52M4I7M1I68M1D15M1I19M1I13M1I17M2D41M5D45M5I2M5I24M4D23M1D60M4D2M3I25M3D6M3I27M5I30M1I54M4I14M5I8M1I25M5I35M4I101M2D17M3D33M5D11M5I17M3D1M2I11M1D11M4I32M4D59M1D7M2I11M3I8M3I3M4D20M4I30M4I10M3I14M5D3M1D3M1D8M2D107M1D40M3I69M4D7M3I39M3I17M5I7M5I104M4D63M2D78M4I76M5I30M5I2M3D8M3D50M5D111M1I9M2D8M2D32M5D5M1D5M3D17M4D16M5D3M5D10M2I16M4I16M2I34M4I24M5D14M2I67M1D2M5I111M2I11M1D64M5I1M2D17M2D34M4I52M5D20M4I120M5D8M4I30M3I10M1D198M3I3M5D57M5I20M5I165M2D38M4D5M1D14M4D91M2D5M3D114M1D4M4I40M3I10M5D61M1I2M1D6M1D26M5I64M2I34M3I10M1I59M4D18M3I29M1D38M3D8M5D11M2D9M1D83M4D14M3I9M4D13M1I15M5D28M4D91M5I9M4I90M5D11M3I19M3I1M5I12M2I15M3I41M4I35M1D33M3I119M3D103M4I15M5D2M4I81M5I16M4D19M3D132M1I6M2I52M1D18M3I8M4I14M5D18M3D41M1D15M2D19M1D4M4D29M2D36M5D66M3D28M3I5M2I44M3I76M5D24M4I20M1D21M3I55M2D34M4D84M1I24M4I54M5I33M1D68M2I20M4I37M4D34M1D75M4D54M2D31M4D6M2I10M2D55M2D28M3I18M2I4M3I22M4I80M5D17M5D15M5D102M3I13M1I16M3D128M2I27M5D19M3D11M4D28M5I15M2D1M5D62M2D39M2D8M5D20M4D17M3D13M3I7M4D3M3D41M4I85M3D48M2D41M3D14M3D4M1I24M4D62M3I58M3I16M4I116M3I58M2I3M2I23M5I45M2D52M1I21M3D11M4I16M5D43M5D55M3I56M2D36M5I40M5I13M1I30M4D129M4I2M5I7M1I18M1I79M3D11M2I7M5I15M5I4M1D12M2D51M2D11M3D22M5I114M3I22M5I12M3D51M3I194M2D4M3I21M2D4M4D22M1D1M5I3M1D34M5D12M2I5M4I10M3D12M4D16M5I34M2D15M4I24M3I42M4I102M4D7M3I133M5D4M4I18M1I56M3I1M3D28M5I2M5I63M1D1M5D1M4I11M2D56M1D25M1D3M1I73M3I10M5D21M4D10M3I11M2I72M3D22M2I49M2I65M4D29M3D49M4I29M4I6M1D19M4I17M3I35M2D41M1I108M1I57M3I21M4D10M3D18M1D56M4D10M2I12M2D9M4D48M2D33M1D5M3D24M2I52M3I10M3I18M2I28M3D9M2D25M4D3M3D14M1I16M4I27M3D99M3D7M3I21M2I20M5D9M5D14M4I45M2I35M3D7M5I2M3D9M3I14M4D52M1I27M4D7M5I25M3I4M1D1M5D18M4D5M4D12M3I64M5D4M3D5M5D95M2I6M2I39M1I10M3I35M4I40M3I63M5D18M2D4M2I20M5D2M1D28M2D2M5I24M1I42M4I11M2I3M2D15M4D11M1D40M4I31M2D33M4D6M2I6M3I29M2I14M3I34M4I12M4D6M1D34M3D24M5D158M4D19M4I17M5I1M3I42M3D5M2I103M3D26M2D3M4I20M3I41M4D15M3I20M1D14M4I12M5D24M1D9M1I24M1D31M2I18M1I31M2I70M2D27M5D6M5I55M3D44M3I2M1D67M4I113M5D33M2D1M2I9M3D20M4D11M4I16M2D11M1D9M5I6M4D5M2I16M4I77M1D70M1D16M1D9M4D180M2I7M5I11M2I12M1D64M5I6M5I7M5I20M3D6M2D42M3I23M5I39M5D1M1D11M1D37M2I10M4D6M5I46M5I23M3I12M4I27M2I157M4I14M1D54M3D138M2I21M3I19M5D1M5I1M1I30M5D17M4I47M3I16M3D12M2I11M5D14M2I43M1D37M1D51M5I12M1I72M4D30M3D12M3D34M1D31M3I38M2I7M5D26M2I4M1D31M1D44M5I9M5D4M5D8M4I121M2I1M3I14M1D11M5I5M4I62M3D48M5I43M4D15M4I44M1D16M5D34M5I38M1D16M4D5M1I1M2D1M1D48M5I35M4D31M2I94M3I52M2I2M5I34M1D25M3I112M5D50M3D8M4D45M5I7M4I10M4I9M5D5M5I11M1I35M3I14M2D26M3I1M4D8M3I10M5D12M3I23M2I35M3D3M4D58M3I17M2I27M3D25M3D15M2I9M3D69M2D34M4I4M2I50M3D26M4D178M3D19M3I14M1I1M2D118M2D24M3D8M5D22M2D5M2I11M4D7M3D4M4D8M3I7M2D23M2D51M2I1M2I8M2I1M5I21M5D95M5I4M3D2M3I18M4I3M2I202M1I3M4D47M5D23M3I56M5I56M5D70M5D13M4D15M1D29M2I6M4D6M1D15M4I114M2D49M2D44M2D49M4I4M1D45M1D34M4I16M4D23M2I18M3I122M1I15M2D4M4D39M5D35M5D19M3I13M2D19M2D26M4D57M5I25M5D19M3I89M5I138M1I61M2I47M3I6M1I34M1D3M3I57M4D2M4D23M3I177M4I3M3I2M2D22M2I22M5I1M2D46M1I64M2D35M1I26M2D9M1I10M4I8M4I2M1I15M3I5M2I68M1D10M4D196M3D18M3I7M2I12M3D11M5I18M5I9M2I45M4D3M2I4M2I93M5I10M3I10M1D14M3I2M4I10M1I32M5D55M2D9M5I1M3I196M3D87M3I73M1I79M1D3M3I3M5D13M3I12M3I20M5I1M3D13M2D94M2I21M1I21M4D51M1D29M2D74M5D2M1D33M2D1M4I39M5I10M1I9M4D1M2D17M2I14M2D35M1I151M3I5M4I16M5I19M2I38M4I13M5I4M4I17M2I36M1I31M5I4M5D61M5D8M4D44M2D59M1I8M2D62M2I2M3I106M5I28M3D23M2I2M4I5M2D22M3I49M5I23M3D10M4I64M2D21M5D13M1D159M2I38M4I24M1D4M5I38M5D15M2D10M4I11M3D6M4I8M3D5M2D16M4D12M2I7M4I6M5I94M4D5M2D15M2D1M5I14M5I64M5D16M4I2M4D1M2I13M5D1M5I13M4I3M3I49M4D29M4D16M5I51M5I13M5I23M2D11M1I45M1I48M2D63M4I27M4I12M4D55M2I21M3D14M3D47M4I87M4I10M4D132M1D35M5D53M2I22M4D97M5I17M4D66M3I17M5D2M1D1M5D10M3I47M1D22M1I38M4I64M1D33M3D5M4D1M4I10M3I30M5I8M1D45M1D33M1I10M3I6M3D5M5D17M4D96M1D41M3I82M5D93M4D16M3I1M3I30M3I12M4I11M2I20M1I38M5I12M2I3M1D31M4I44M1I26M1D72M5I36M5D56M4I1M5D108M3D1M5D26M4D49M1I16M2D78M1I28M1I20M1D115M4I98M4I66M2I26M5D33M3I3M3D33M2I121M5D10M5I38M3I1M3D69M5D43M3I2M1D21M3I1M5I29M3D67M5I42M4D46M3D1M4D5M4I35M5D56M1I45M5D14M4D9M4I76M4I15M4D1M2D25M2I14M2D37M3I27M4I30M4D23M1I1M1D38M5I41M3I23M2D4M5D100M4D38M2D85M2D16M2I42M3D91M2D44M2I25M1D27M2D45M1D38M3I30M5I4M3D1M1I77M1I31M5I4M3D11M4D43M1D34M1D31M4D16M3D43M4I5M1I78M4D27M1I18M1I13M1I21M5D39M4D22M3I42M1D6M1D3M2I13M3D12M3D1M1D13M2D75M4I1M1D11M3I33M4I4M4D15M1I14M5I16M1D85M5D6M1I4M2I24M2I49M2D4M1D48M3D60M3I4M1D61M2I8M1I3M2I4M4D18M1I38M5D15M5D27M3I47M4I6M2D13M3D43M2D132M1I25M4D8M4I17M5D4M5I31M4I27M2I19M5D60M5I15M1I5M3I27M2I90M2I17M3I5M5D120M2I32M3I20M2D36M4I7M3I8M2I2M3I93M2I7M3I24M3I42M5D12M1I17M5D7M2D57M2D10M4D34M1I18M5I22M3I16M2D11M5D45M1D2M3D23M2D83M5I83M5I85M3I11M5I35M4I26M3D1M2D117M4D26M5D5M4I36M2I6M4D27M5D14M2I218M5I1M1D170M4D12M5D13M3D9M4D53M2D48M5D23M5D22M2I43M3D12M4D66M2D2M1D25M1I28M2D69M5I35M4D4M2I24M3I82M1D2M4I28M1I16M2I33M1I3M4D26M5I96M1I77M5D3M1I6M5I42M1I57M4I23M2I28M4D10M5D62M5I35M1D5M5D44M2D39M2I6M5I30M1I45M5D4M2D1M4I33M5D11M1I13M5I62M4D10M1D58M5I18M1D30M5I64M1D22M2I34M5I18M5D69M1I4M1D52M1I18M5D11M4D21M4D16M3I12M4D5M3I116M1I60M4I12M4D101M5D18M4D32M1I19M5I91M3D8M5D7M1D39M4D1M4D71M3I10M3I23M1D96M5I33M1D10M3D54M3D46M3D11M1D37M3I20M4D24M3I4M1D3M2D30M1I6M1D45M3D10M5D9M2D59M5I9M4D9M4D127M4I14M1D11M3D35M2D68M2I16M2I9M4D85M3D9M5I1M5I21M2D16M2I70M4D13M5D7M3I10M1I6M5I88M1I191M2D2M5I11M1I213M5I59M3I34M3D9M5D16M3I31M3D26M4D6M4D7M5I38M1I8M5I101M2I107M1I120M2D7M1D39M2D15M2I39M1D139M2D2M1I39M4I65M4I22M1I12M1I55M5D23M3D63M2D23M4D26M3D23M4I37M5I41M2D66M1D45M3D22M4D44M3I19M5D18M2I61M1D63M4I6M3D67M5D32M5I25M3I125M3D26M5I10M4I31M4D38M5I11M5D15M2I10M2I10M3I75M3D10M2I21M5I12M1I20M2D43M5I76M1D78M1D67M5D1M4D10M4I20M2I51M1D62M5I20M2D69M2I13M5I22M2I23M5D69M1D43M3I21M1D3M4D1M5D43M3I20M2D101M5D2M2I37M1I21M3I13M1D110M5D34M3I7M2D51M1I66M3D1M3I53M5D22M1I11M1I3M3D10M5I11M4D14M5I2M4D2M1D11M2D121M1D58M5I6M2D6M1I6M3D44M4I33M4D4M2D15M4I8M3I118M3D22M3I3M1I21M2I83M5D209M5D9M4D26M5I5M1I6M3I2M5I9M2I60M2I11M3D20M1D36M5I10M5D49M3D49M3I56M5D51M3D36M5D45M4I3M4D97M4D11M5D41M1D63M3I3M5I101M2I6M4I28M4D6M4I190M4I6M3D51M1D9M4I4M5I1M5D31M2I65M3I7M4D4M5D2M1I39M2D7M4D41M2D8M1I8M3I73M4D11M3D45M2I7M4D76M1D22M2I81M3I45M4I5M4I19M2I14M3I6M4D29M3I21M1I16M5I25M3D14M2D23M3D49M5D17M2D54M2I24M5D1M3I12M2D34M5I52M2I51M4D65M2I42M1D99M3I1M3I112M5D70M5D17M4D47M1D39M5I12M4I17M2I1M5I116M5D22M4I16M4D54M1D52M4D1M4I13M3D41M3D13M4D6M3D4M2D20M1D3M1I57M3I13M2D22M5D23M5D9M1I24M5D10M2D37M5D33M2D21M1D5M3I4M3I35M1D5M5I23M1D196M2D109M5D64M4D10M1I21M5I5M4D104M2I33M2D14M1D6M2I26M2D51M1D14M5I62M2D33M1D25M3D1M5D58M5I1M3I14M3I47M2I12M4D63M1I59M4I34M4D1M1D22M2D3M3D44M1D11M1I35M3D9M2D14M1I29M5D23M3I51M4D48M1I9M5I76M2I15M1D76M2D12M5D1M4I16M3I86M3D102M2I10M5D20M3D1M3I15M1D11M2D2M4D1M1D84M2I55M1D29M2D43M4I27M5I77M3I34M2D20M3D66M1D84M3I14M1D47M2I87M2I47M2D24M3I37M1I1M2D12M1I60M5D30M5D10M4D12M2I11M5I10M4I35M1D39M3I10M5I18M4D54M2D76M1D17M2D16M3D9M5I11M5I7M5D18M3D29M3I8M5I26M3D5M5D15M2D15M4I31M3I54M5D85M4D14M5D81M1I43M3D2M1I11M4I2M5I20M2D6M1I40M2I8M4I33M5D13M3D30M3I19M4D81M5I22M5D4M1I9M3I4M1D20M5I38M5D72M4D51M2I46M4D20M5D14M2I23M1I90M5I24M1D14M2D16M5I22M4D15M2I26M1D8M3I35M1I14M3D41M1D3M5D12M5D60M1D71M5I13M2D43M5D16M2I72M5I3M4I4M3D8M4D3M4D23M3I11M4D8M2D29M4I5M1D218M4D61M3I2M5I8M5D36M1I18M3I1M2D43M4I29M1D5M1D8M3I48M2D19M5D77M3I29M2D8M4I16M2I9M2D115M2I3M4I76M4D62M3I3M2I43M3I5M1D5M3I44M5D81M2D86M1I2M4D17M1I24M2D9M1I72M1I80M1D9M4D36M3I28M1D27M1D38M2I2M2I4M5I14M5D40M4D62M5D7M3D36M4I17M1D67M3D1M3D13M1D9M4D36M3D19M3D39M5I11M3D16M4D4M2D32M4I18M5I36M1I30M3D54M4I72M4D31M1D12M3D20M4I100M1I2M4I11M3D16M5D2M1I1M3D41M4I53M2I29M5I2M5D10M3D22M1I41M2D4M3D15M3I10M4D14M5D31M2D32M3I111M3I142M5I22M4D14M2I32M3D32M5D16M1I26M1D18M5I123M3I9M2I29M5I36M5D2M1D18M2D28M4I59M4D11M3I5M5D10M4D34M5I8M5I54M4I1M4I44M2I34M4I51M1D2M4I27M2D27M2D33M1D9M5I38M2I34M5I22M1D73M5D19M3I4M1I16M5I18M5I1M4D37M5D9M1D2M5D124M4D106M1I12M5I7M3D7M2D89M5D20M3D5M1D14M4D60M2I114M3I24M3D12M4D6M4I16M3I29M5I15M4D38M5I5M1I8M1D6M2I31M3I139M2D29M1D30M2I1M3I22M5I4M4I20M3D63M3D4M3I7M4I15M2D2M5I12M2D54M1D6M4I29M5D42M1D82M3I16M5I74M1D35M1D17M2D29M4I95M5D54M2D132M5D28M3D7M3D12M3D10M4D14M2I30M5D29M5I68M2D28M2D234M5D4M3I94M2I27M2D12M1I6M5D19M4I13M4I43M2I19M5I48M1I84M5I5M3I15M2D37M3I4M2D23M3D7M2I19M2D103M2D4M4I94M3I67M4I6M3I6M5D82M5D4M1D5M4D24M3D4M5I16M4D21M2I46M4D37M5D16M3D36M5I10M1I89M1I12M5I7M4D7M4I53M2I65M2I8M4I139M2I6M2I14M3I30M3I15M1D47M2I7M4I2M3D6M4I2M2D74M2I24M1D1M4I22M3D47M5I10M1D62M1D28M5D1M1D35M5I35M2D15M3I12M3D141M1I67M5D18M2I30M5D9M2I3M5I53M2D34M1D36M2I38M5I177M5D15M1D104M5I47M4D4M5D6M5D43M5D63M2D72M3I71M2I142M1I3M3I28M4D56M1I3M1D20M1D7M3D6M4I13M1D8M2I38M3I77M2I30M4I60M1I25M3D70M5I70M2D32M1D61M4I4M3D32M2D35M1D1M1I41M2D23M3I12M4I86M2I4M4D23M2D10M3I31M4I129M5I9M1I5M2D1M2I3M5D115M3D2M4D21M2D9M5I18M1D3M1D6M3D43M2D60M4D28M3I56M4I1M3D57M2I7M5D31M4D8M1D36M3I82M1I31M5I75M3D16M3I24M4I20M1I7M4D15M1D64M5I2M1D27M1I1M4D23M5D64M1I40M3I49M2I3M5I18M2I32M5D69M3D5M5I49M3I4M1I17M4I43M4I55M2I16M5D23M1D63M2D40M1D2M4D87M2D41M1I3M4I22M1D24M2I18M1D47M4D62M5D54M3I34M5I56M1I9M4D6M2D34M2I86M1D130M3D24M5D36M3I27M5I5M1D32M5D3M3I24M4D3M4I9M5D40M5D42M5I15M4D7M1D29M5D5M1I60M2D11M5I15M4I3M4D47M5D25M2D32M4D24M3D48M3I19M5I4M4D87M4I17M5D54M2D55M1D23M3D5M5I178M5I16M3D13M4I141M1I49M2D32M1I61M1D34M1I104M5I1M5I35M1D16M1I7M2D90M2D55M5I50M5D33M2D8M1D153M1I40M5I15M4D3M4I82M5I70M1I6M5D13M2I57M2I29M1D28M5I4M5D19M2D23M4I6M2D68M1I28M1D20M3I64M2I21M1D28M1D33M1I39M2I25M5I3M3I7M4D29M4D1M5I11M5D6M5D10M1D23M5I14M2D12M1D57M2D3M4I42M4D1M4D12M2I36M2D40M1I11M3D63M2I16M3D90M1D2M1I37M1D36M1I10M1D7M1D26M3D1M1I147M2I31M2I22M5D86M5D27M3I48M5D22M5I107M1I22M3D7M4D12M3I160M5D23M1I12M3D38M1I57M1I12M1I9M3D44M4D13M3D62M1D5M5D153M2D14M3I49M4I25M2D6M5D66M2I12M3I28M5I9M2D33M5I26M2I4M5I57M2D4M4I43M3I15M5D55M4D79M5D57M2D9M1I12M4I2M3D27M5I11M1I31M1D18M4I9M1D71M4D31M5D13M5I7M4D2M5D36M4I3M1D8M5I1M5I33M3I21M1D38M4D17M2I1M4D27M1D42M5I23M5D1M4D245M4I1M4I21M2D19M3D42M5I3M4D52M5I37M3D10M5I9M5D44M2D8M4I30M5I11M2D9M1I22M5I122M4D119M5I16M4D21M1D6M5D25M5I69M3D99M5I8M5D4M5I27M3D3M4D11M1D14M2I12M3D15M2D7M5I8M5I61M2I2M3D3M2D15M2I21M1D21M5D1M2I10M5D6M3I59M2I8M2D23M3D33M1I60M1D88M2I36M2D158M5D97M2D34M3D16M1I50M1I114M3D47M1D98M3I32M5D6M1D8M2I69M5D14M4I4M5D3M5I4M5D2M2D12M2I21M3I7M4D25M3I43M5D9M4I3M2I23M3D2M1D1M5I66M5I38M2I25M5I12M4I8M1D26M1D16M5D31M5D44M3I88M1I21M2I49M2D26M2D26M5I37M1D6M3D24M1I21M5D17M5D13M4I9M5I19M2D1M2I92M4I107M2I43M5D9M3I28M5D3M1I4M5I21M2D12M3I78M3D4M2I39M5I5M3D54M1I2M3I38M3I2M3D14M5I61M5I61M2I16M1D24M3I4M2I2M3I27M2I53M3D8M1I28M2I38M1D27M3D8M1D18M4D6M4D1M4I30M4I33M1D56M1D59M5D16M1D30M2I58M2I60M1I50M4I3M3I25M4D32M3D30M3D47M2I31M5I50M4D27M3I37M5I27M4I37M1I21M4I72M4D11M3I76M4I34M5D7M4I42M4I6M4I18M5I17M3I153M5I28M2I55M2I54M4I27M2I27M4D39M1D47M2D44M1D2M4I26M1I3M5D22M3D21M3D41M5D76M1I15M4D2M5I41M5D318M4D2M1D3M1D17M5I32M1D37M3I11M1I31M5D18M3D15M3D1M3I13M2I41M4D68M2I24M1D23M2I34M5I3M1D7M1I29M3I10M3I37M1D15M1I11M1D57M3D26M4I37M5I40M5D26M4I57M5D6M5D44M2D1M1I46M5I3M5I127M4I33M3I51M4D3M5I23M2D19M3I72M4D34M1D5M5D16M1I36M4D20M2I22M3D9M4D5M5I15M1D1M5I3M5I18M2I19M2D15M1D131M4I135M5I42M1D17M4D29M1D25M4D10M4I10M1I15M2I9M2D6M1D18M4I47M2I36M5I109M1D76M5D51M1D15M3I12M2D35M1D6M5I1M2D9M1D7M5D39M2I40M4I16M1I23M2I32M2I53M3D1M4D15M2I36M3D94M1D24M3I35M1D4M4D7M3D4M2D28M2I18M5I3M5I7M1I85M4D43M3D50M5I47M2I7M5I6M2D6M3I8M4D8M4D176M5D30M2I21M5I14M4D50M3I73M5D39M1I4M4I16M4D20M2I2M5D16M5D5M5D26M2D18M3I65M1D19M2I92M1D23M2D3M3I63M3I14M1D21M2I32M5I13M3I29M2D7M5I3M4I63M3I39M2D5M2D31M2I21M2D5M5I36M3D4M5D59M5I85M4D36M5I32M2I72M5D61M4D16M1D52M1I110M5D3M5I27M5I40M1D9M4I23M5D5M2D51M4I21M5D14M1I90M5D98M5D18M3D68M2D5M2I10M1D45M5I8M2I55M2I40M3I7M3D30M1I11M2D13M3D1M2D67M1D32M4D40M3D38M5I21M1D1M5I22M4D5M4I3M2I44M1I5M1D56M2D12M3D91M1I118M5D4M1D24M5I12M3I4M3D8M3I14M4D72M3I63M3I7M4D25M3I65M1D33M5D2M1I19M3D56M1I18M5I21M1D2M5I14M4D44M3D2M3I5M4I1M2D13M4I24M3D24M3D8M5I99M5D51M4D33M1D11M1I12M1D53M3D4M3D44M4D108M2D2M5I4M5I58M1D20M3D127M4I24M1I26M3I4M1I16M1I155M3I2M5I45M2D50M3D70M4I52M4I38M4D23M2D51M4D9M2D11M2D12M1D2M2I24M4I26M5D45M4I83M4D41M4D204M1D27M5I3M2I32M4I7M3I27M3D69M2D42M2D26M2D7M1I56M2I32M2I75M1I131M4D33M4D1M3I4M4D4M4I15M3D65M1I3M2I1M1D61M2I39M4I3M2I40M3D12M3D32M2I9M4D65M3I61M4I50M3I31M1I75M2I121M4I5M3I56M3I49M4I21M1I14M5I29M4I5M1D14M2D22M4D96M2D114M5I12M5D29M5I12M5I21M3I8M3I46M5I37M1D18M1D27M5I23M1D20M3I28M3D19M3I61M2D11M3I14M4D29M4I45M3I2M4D2M3D86M5I22M5I30M2I9M5D10M1D18M5I92M4I44M1D102M1I19M4I15M3I10M3D33M2D40M5I12M5I54M3D9M1D6M5I48M3D82M3I20M4I64M3I12M4D9M2D3M1I27M4I7M5I22M1D18M2I108M2D68M4D49M5I21M2I41M3D49M2D31M1I24M4D26M5D11M1I7M5I14M3I11M5D22M3D47M4I29M1I16M2I8M1I15M5I16M4D90M4D5M4I10M1I19M1I57M2I8M4I14M5D8M4I25M3I86M2I26M3I14M4I33M2I50M4D69M5I15M2I172M2I1M5I71M3I2M4I42M3I2M2I25M1D55M3D3M1D78M1D40M5D65M3I1M4D6M5D22M1D3M4I66M3I72M1D3M3D19M5D10M5I25M1I11M2I20M5I17M5D34M2I3M2D8M4D1M2I54M2I21M5I23M1D22M4D2M3D12M2D28M5I25M5D41M4I14M5I3M1D103M1D54M2D93M1D8M1D2M4D49M5D26M2D20M3I8M5I7M5I1M5D24M1D45M5D128M2I4M5I20M5D19M4I36M4D31M3D20M2I14M2I39M4D4M3D77M3D23M3D2M5D11M3D4M4D22M4I18M5I67M1D39M2I2M3I4M1I81M1D96M1D39M2D9M5D39M2D83M1D3M5I34M4D3M5D48M5D11M1I80M1I6M4I63M1I15M3D24M2I14M5D3M4I10M4D15M5D6M5D38M5I64M1I40M4D68M3I18M4I9M2D16M3I3M4I14M4D21M4D82M4D14M5I137M1I26M1D23M3I9M4I88M5D29M3I52M3D5M2I105M4I38M3D16M5I6M4I12M3I68M3I29M3I8M5I3M5D11M4D34M3D9M3I56M5D10M3D16M3I86M1I57M3D7M5I58M5D35M2I22M4D33M5D20M5D22M4D21M4I25M1I20M1I77M5D27M3I8M3D25M3D32M1D53M1D26M5I24M4D78M2I3M4I34M3D88M5D84M4D17M5I4M5D12M3I72M2D38M4D23M4D3M1D17M2D23M2I19M1D42M1I5M5D66M1D114M5I9M5D118M5I47M4D5M4I3M3I57M1D8M3D2M2I14M5D92M4I21M5I34M1D11M4D11M3I3M3D7M5I19M5D22M3D63M5I8M3I54M4D34M5I7M5I45M4I15M2D88M4D15M1D15M2D5M4I66M1I33M2I18M2D54M2I2M3I119M2D4M4D55M5I59M4D29M4D121M3I30M3I39M2D25M3D25M3I5M4D19M2D32M5D89M3D21M1D68M5D17M2D16M2I89M1D1M3I42M4I3M3I27M5D44M5D37M1D15M4I13M2I19M1D62M1I1M2D4M1I74M1I47M4D16M1D3M3I44M4D15M4I49M1D1M2D56M3I55M5I44M2D12M4I6M5I48M3I11M3D20M1D31M1I23M5I54M3D31M5I10M5I8M2I13M3I3M4D6M3D34M1D24M3I55M2I1M5D3M4D83M5D20M4I11M4D85M1I34M2I56M1D19M4I14M2D1M3I104M3D2M2D63M3D1M2D38M1I31M1I66M4D7M4I7M1I25M3D1M3I4M4I4M1D29M3I16M2D29M3I47M2I60M2D23M1I57M5I18M2I26M4D34M4I14M2D23M3I102M3D29M1I72M1I22M1I17M2I75M2D14M3I1M3I17M4D29M1D65M3D34M4I55M4I37M2D18M5D56M1I31M2D3M5I21M5I12M4I2M4D2M4D51M4I158M2I1M2I24M2I42M4D51M5I10M3D4M3D148M4I42M4I35M4D34M5I19M3D10M4D4M1D25M1D1M3D34M4D13M2D68M2I66M1I23M1D14M2I34M5I96M3I12M4I44M3D23M5D2M5I12M1D23M4D77M4I7M1I26M2I4M1D11M4I41M3D127M3I17M1D68M1D33M5D6M5I41M1D32M2D69M5D66M5I26M5I65M2I14M1D4M2D2M1D4M4I7M2I4M4I11M2D22M3D46M1D25M2D10M5D6M4D6M4I2M1I10M5D18M5I22M5D1M5I59M5D24M4I26M2I23M3I31M5I62M1I2M2I3M4I37M3D3M3D1M3D4M4D10M1I26M4D32M5D6M1I23M5I6M5I12M2I1M1I61M3D48M2D19M4I12M2I24M2I11M3I37M5I79M3D15M1I2M1I83M4I9M2I14M3I44M1I38M4I7M3I28M5D18M4I29M2I42M3I127M4I78M2D17M3D16M5I25M3D91M5I13M3D18M5I61M3D19M5D35M1I1M2D19M3D22M1I70M2I8M4D8M1I19M2D27M2I35M1I49M1I34M2I47M1D115M1I261M3I35M3I4M3D31M5D12M3I64M5D24M4I41M1D16M1D4M5I5M2D21M4D31M4D117M5I31M1I76M3I22M4D76M3D12M5D1M4I9M3D28M2D1M4I7M3I2M5D14M5I24M1D7M3D3M4I57M3D101M3D4M3D6M4D13M4I56M4D5M5D26M5I5M4D7M2D62M2I20M3I3M5I78M2I9M2I24M4D160M5I51M1I41M1I11M1D8M5I166M4D16M3I21M4I11M1I54M2I68M4D44M1D20M1I22M5D3M1D56M3I5M5I18M2D19M2I14M4I14M5I52M2D14M3I60M5D10M4D7M5D18M4I192M2I59M4D65M5D9M1D18M4I68M4D43M2D16M4I59M2D6M3D42M3I14M5D16M1I21M2I74M2I17M2I19M5D9M1D11M5I7M1D1M4I55M3D47M1I26M3I51M2I4M2I28M2I12M1D76M5D40M2I18M2D8M1I1M5I20M5I14M2I1M5I24M3D18M1I1M1D63M5I21M1I12M1D44M5D23M1I26M1D24M1D27M1I72M4D18M4D30M2I23M2D2M3I12M5D64M4I50M3D96M4D16M2D22M1D35M4I75M2D5M1I50M2D10M5D12M3I17M3I14M4D113M5D40M4D38M1D110M4D2M1I75M2D18M4D44M4I18M1D86M5I19M4D5M3I236M4D9M3D29M4I156M5I47M5I2M4D4M2D47M1I12M3I25M1D24M1D56M1D17M4D4M3D40M4D43M5D11M4I19M4D15M2I50M5D9M3I9M5D25M5D19M3D23M3I3M5I2M5I46M3I1M4I4M2D6M3I4M2I5M4I3M4I2M1D22M3I6M5D34M4I11M3I20M5I32M3D19M2I151M4D24M2I40M2D6M1I12M4D72M3I16M3D31M2D10M2I21M3I28M4I30M1D20M4I32M4I25M5D3M5D51M2I1M5I16M4D28M4I9M5I9M5D2M4D60M2D45M1D4M1I49M5I32M1I5M5I94M5I16M4D49M3I3M2D2M5D61M2I34M3I6M2D14M1I26M1I5M2I9M3I9M5I28M3I21M2D6M1D31M3D26M5I33M5D115M4I86M1D10M1D46M1I1M1I28M2D18M1I20M1D79M5D5M4I10M4D16M2I63M3D4M2I54M2I4M2I21M1I52M3I36M1D16M1I27M2D4M5D68M4I13M3I6M2I14M5D37M3D31M4D15M5I35M2D28M5I2M4D30M3D7M1D65M4D49M4D38M4I19M4I43M4I69M4I39M5I125M5D13M3D1M2D14M5I14M3D59M3D6M2D1M2I3M3D52M3I38M3D15M5I69M1D124M4D5M4I66M3D18M3D30M4D4M5I16M3I28M3D35M4I8M5I11M3D44M2D22M4I19M2I23M4D145M3D35M3D61M5D18M4I22M4D11M1D78M2D12M3I4M5D37M2D6M2D34M1D25M5D6M4D40M1D27M3D23M5D106M1I21M5I22M5D18M1I39M4I6M3D37M1I14M2D18M2D25M4D7M3I3M3D16M1I59M2I31M5I19M1D43M5I3M3I14M1I37M5I24M2D51M5I35M4I4M5I12M1I30M3I14M3I12M3D33M5D5M4D40M4I12M1I6M1I93M2I6M5I33M1D19M4D60M1D5M3I46M3D6M5I61M5D52M3I14M5I41M4I91M5I26M1I34M4D19M3D8M5I98M4I8M2I74M4D15M4D13M4D3M4I72M2I6M4D14M2I73M3I19M1D40M4I15M4D75M1D14M1I8M1D12M1I23M1D28M3I84M5I30M5I57M5I35M1D17M2D61M1I85M5D56M1D147M5D25M2D6M5I10M3I16M1I51M5D38M4D6M2I21M5I37M1I31M5D5M5I27M3D80M2D19M3I3M1D1M3I127M1D36M2D19M3I1M4I15M3I5M5I42M1I28M3I36M3I26M5D31M4I2M1D8M4I48M4I49M2D3M3D72M3I115M3I134M3I31M5D50M5I13M3I7M4D68M3I2M1D11M2D11M1D1M2D55M4D52M4D11M3D2M4D86M4D12M3I51M1I10M5D21M5D54M4I8M3I21M1I235M4D60M4I8M5D19M2I19M5D27M5D12M3D11M5D1M5D55M2D12M5D9M3I9M2I66M1I51M2I3M1D4M2I24M3D51M4D19M3I31M5I51M2D27M2D11M3I24M1D19M3I9M1D51M3D26M3I21M5D58M3D34M5I76M1I7M5D3M3D24M1D33M3I14M3D39M3D15M2D74M3I27M4I9M2I21M4D42M4I34M3D84M5I116M1I5M2I38M2D35M4D55M2D2M5I13M4I3M2D23M1D57M5D26M4I46M4D30M1D40M2I9M4D22M1I5M1I17M2I7M4D19M2D6M5I13M4I43M5D44M1D7M2D7M4D90M5I48M1I25M3D2M2I15M4I30M4I18M2I36M4I19M4I2M1D170M2I21M4I23M2D29M4D34M2I7M2I8M5D4M3D22M5I48M5D82M4D35M4I12M5I39M1D66M5I26M4I6M1I3M2D190M5I21M2I11M2I17M4D31M5I37M4D12M2I42M5I31M1D26M5D13M5I39M2I9M1I138M5I6M1I40M2I2M5D45M4I18M5I17M4D22M4D14M1I18M5D38M5D2M2D44M1I6M5I65M1D129M2I36M2D18M4D36M2D21M3I14M4D37M1I71M5D59M4D120M2I18M3I79M5D33M5I8M1I3M4D49M4D23M5D4M1D14M2I15M1D11M5D53M4I70M2D159M5D4M2D27M5D8M3D30M1I23M2D56M2I145M3D77M5D12M4D15M5I22M2I7M4I119M5D76M4I13M1D43M2I87M3D14M4I2M4D59M4D12M2I33M2I68M3I7M3D15M1D117M1I26M4I36M3I48M2D8M3I122M3I73M4D50M3D13M1D63M2D24M1D1M4I22M4D11M3I2M4I40M4I43M5I25M4I90M2I6M2I8M5D5M3I39M1D17M3I28M5D6M3I6M2I37M3I93M2D73M1D52M3I31M2D67M5I22M5I22M3D7M3D27M3I18M4I1M1D14M5D65M4D64M4D74M2I22M1D91M3I18M2D7M1D45M4D36M1I6M2D20M2I5M2D11M5D66M3D28M2I22M3D97M4D63M3I199M1I51M2D2M5I59M1D26M1I92M5I21M3D13M3I35M4D16M5I5M4I12M3I18M1I25M1D57M2D24M3D20M3I4M1I21M2D49M1D44M3I36M3D13M3D40M4D41M3D43M5D16M4I14M3D7M5D27M1D11M2D88M5I59M1D32M5D39M3I49M3I28M4D22M3I9M5D21M1D13M2D51M1D16M5D24M2I36M5D15M3D4M3I3M3D20M5I21M1I61M3D28M1D21M3D15M4I16M4I9M1D23M4I13M1I14M4D18M2I17M5D52M2I50M5D36M4D15M4D6M3I14M3D1M1D26M1I5M2D71M4I12M2D16M3I9M2I35M4I52M1I18M3D18M5I28M5I47M3I59M2I10M2D2M4I19M4D2M4I2M4I9M5I13M4I93M5D41M3I56M4I24M5I14M5I5M5I9M1D11M3I7M4I71M5I22M2D9M1D65M3I2M5D4M1D85M2D2M5D45M5D3M4I27M3D25M5D1M2D46M1I76M3I5M1D7M4I6M1D32M3D17M1I23M5D18M4D40M4I13M1D26M5I21M1I34M4I8M3D7M4I8M1I1M3I6M4D1M4D37M1I16M1D50M2D70M5D34M2D6M1I52M4D6M5D10M5I4M1I4M4I11M4I71M4I31M4D42M1I25M5D33M3D87M2D11M1I9M5I2M5I18M2I52M5I12M1D3M1I15M2D13M2D50M4I1M2D106M5I7M5D16M1I79M4D10M3I29M4I16M4D167M5D27M4D7M4I14M5I3M1I28M3I26M1D22M5D2M2I36M2D74M1I7M2D15M1D31M2D16M1I89M4D3M5D14M4D31M3I32M5I27M2D18M3D12M2D37M2D6M3I5M2I30M5I8M1I14M1D39M4I23M1D4M2I22M4I4M5D13M5D12M3I47M5I3M3I45M2D43M4D27M5D24M1D69M4D44M5I53M5I4M5I47M2D42M2D61M3I1M3D22M3D2M1I5M4D7M1I45M1I13M3I19M3I4M3D59M1D7M1D8M4I50M1D20M1D19M4I57M2I47M5I44M1D5M4D2M1I16M1D31M4D2M3I86M3D12M3I5M2D27M4I28M1D42M2I17M2D37M2I48M4I21M1I29M1I77M1D46M3D49M3I7M2D9M4D32M1I47M4I33M5D5M1D52M4D19M4D6M5I40M1D8M3I2M1D107M5I23M5D16M5I27M5D9M2D30M1I9M3D59M4I48M5D30M4D48M4D6M1I19M1I10M1I22M4I9M5I30M5D2M4I19M1D30M1I29M4D113M1I54M1D36M5D16M5D62M2I19M4D88M3D63M1I9M1I9M2D85M4I14M2D25M2I11M3I4M3I72M3D55M5D6M4I69M3D37M1I9M5I38M3I68M3I36M4D7M3D3M5D41M4D36M4D73M2I4M2D10M1I7M4I103M4I9M2I39M1I7M5D27M4I16M5I7M4D5M3D29M5I21M4I18M5I2M1I37M1I35M3I63M4I35M3D8M3I7M3I41M2D32M1I10M1I19M2I8M2I38M4D1M4I2M1D23M2I5M5I31M4D9M3D46M1I7M3D3M5I19M1I46M5D39M4I15M5I82M1I55M3D11M4D23M1D99M4I73M5D54M2I38M5D23M3D50M5I14M2I1M5D5M4I15M2I44M5D56M1I1M4I47M2I1M3I38M1I1M4I17M4D34M2I29M4D20M3D3M3D21M5I1M1I32M3D59M2D13M1I7M3D20M4D8M1I54M2I30M2D12M2D58M1D9M4D8M4D8M3D94M4I28M5I17M2D14M3D71M3I1M3D50M5D3M4D21M2D14M5D8M3I2M5D4M4I34M3D21M5I83M1D4M3I23M1I58M4I49M3I1M5I44M3I16M2I27M1D3M2I4M4I38M3D17M3D76M4I44M5I35M5I31M4D24M3I19M1I42M5D35M3D6M2I132M5I13M1I6M4I19M1I16M3D12M2D47M5I31M3D34M1D45M1I17M2D6M3I3M4D109M5D3M5I57M4I43M1D17M4D11M5I13M5D84M2I39M5I8M3I25M5I11M5I24M5D49M2I37M3I15M3D157M5D42M2I64M1I4M1D39M3I27M1I41M2D10M4I68M2D37M3D28M1I40M4D7M4I8M2I51M2D27M1D12M1D87M4I12M3I1M3I53M4D9M5I10M1D1M1D41M5I5M5D18M1I67M1I58M5I38M5D48M5D8M5I19M4I7M4I48M4I19M5D8M3D103M2D37M2D14M3D21M2I1M1I66M5D4M5I17M3I46M4I1M1D94M2I5M2D14M1D18M3I8M4D47M5I41M5D15M2D6M3D62M2D22M5I60M1D4M2D16M2D20M4D19M1I8M1I2M3I35M3D16M2D59M1I10M3D57M5I16M1D6M2I147M2D52M4D21M3D5M1D19M1D6M4I42M3D18M2D8M2D15M2D6M1D40M1I48M2I27M1D90M1I6M2D11M1D2M2I51M3D2M3I13M1I79M2D15M4D10M1I29M4I46M2I1M5D11M4D14M1D24M4I19M4D25M2D52M4I12M2D122M3I1M1I10M5D1M1I3M2D31M4I41M1D67M4I8M2D32M5D39M3D7M1I17M5I14M5I26M4D21M2I8M5D5M1I43M1I9M1D5M5D77M2D60M1D43M5I51M2I49M3D22M1I27M4I22M4D1M2I5M1I14M5D13M1I54M5D43M5D51M4I23M4D2M3D7M3D30M1I4M1D22M2D48M1D12M3D4M4I106M5D68M3D65M5I2M1I43M2I6M3I6M1I59M2D17M2I4M2I11M1I5M2D52M5D12M3I7M4I15M3D28M4D52M4D2M2I12M1D11M5I18M2D8M4I28M4I3M1D33M5D55M5D28M2D106M5D15M5D15M5I2M3I2M3D17M4D13M2I21M3I44M3D13M3D2M1D17M2I23M2D2M2I33M3I8M2I14M4I86M5D28M2I67M1D150M5I9M5D124M3I58M5D119M2D20M3D39M2I2M1D11M1D30M3D19M3I6M4I37M2D3M3I2M2I7M4D54M5I16M5I22M4D11M2D12M2D26M2I17M1I23M4I22M1I46M4D8M5D7M4D17M1D8M4I4M2I55M2I30M3D4M5I28M1I20M5D10M4I16M5I21M3I28M5I29M4D8M3I5M3D36M2I26M1D3M4I16M2D103M1I66M5D45M1D86M5D17M4I20M3D9M4I27M1I9M4D4M2D53M3I57M4D36M2I4M3I2M1D47M3D26M2I115M1I17M2I14M2I46M3D9M2I14M3D4M3D71M4I6M2D7M5D34M3D25M2I11M1D11M5D13M3I104M3D7M4I28M2D19M3D228M4D37M2D44M3D17M4I35M4I6M1I69M1D93M3I8M4D22M2D11M1D11M5D3M3I39M3I36M4I58M3D31M1I4M5D61M4D28M4D8M4D1M5I41M1I1M5I26M1D16M2D21M1D49M3D19M4I31M5D20M4D18M5I80M5I9M4I20M1D61M3I1M3D71M3I80M4I3M1I8M5D5M3D1M4D30M4I49M2D9M1I41M1D15M5I4M3I12M2D12M1D1M4D64M5D24M1I21M1D17M5D11M5I45M5D35M3D45M5D21M4D14M1I12M3D46M3D10M2D14M5I1M5D24M1D20M1D17M5I35M2D89M5I14M4I4M5I27M1D84M1D19M5I78M4D14M2I9M2D5M5D26M3D2M1D29M1I34M1D2M2D17M2I96M5I13M1D15M4I27M1D11M5D79M2D25M3D2M2D13M4D59M3D26M5D50M1I18M2I2M1D70M4D13M1D64M4D19M5I8M3D65M1D11M1I59M2I1M1I81M2I23M4I32M3D44M1D33M1D126M3I6M5I2M5D31M5I71M4D10M1I44M5I1M5D33M4D7M2D4M5I8M2D2M3I42M4I8M1I25M5D101M5D7M3D21M2D40M4I59M1I19M1I6M4I4M3I21M3D41M5D11M1I21M1I34M2I113M1I32M3D51M2D26M5I38M5D12M4I1M2I3M4I22M3D8M2D31M4I92M2I38M4D7M5D107M3D62M4I8M2D47M3I29M5D19M1D102M4D53M5D31M3D41M4D19M3I13M3I19M1I8M2D59M4D48M3D12M2I84M5D8M4I11M2D19M5D45M2D3M5D63M5I11M2D22M2I8M3I58M4I9M5I51M2D3M2I24M3D11M3D31M1D34M5I23M5I12M3I23M4I11M4I180M3I8M2I2M5I3M1D32M1I7M1I31M3D15M2I2M3D2M2D29M2D12M5I6M5I3M1D43M5I62M1D32M3I26M2D15M1D17M4D21M1D1M4I16M3I55M5I32M2I20M3I54M3I16M2I104M2D39M1D93M4I31M2D2M3D54M2I16M3I10M1D21M4D4M1I73M1I72M3D12M3D17M3D22M4D11M3I3M2I96M3D77M4I37M4I10M2D29M2D25M1D51M4D3M5I1M3I79M5D4M2D170M1D10M1I1M1D14M4I18M5D4M2D64M2I51M5I6M4D35M4I4M5I105M4D25M1I65M5I21M3I19M2I19M4D50M2D14M5D2M4I11M4D11M5I2M4I3M5D13M4D9M4I77M5D54M2I11M1I79M3D24M5D4M1I5M5D9M5I5M2I12M2D6M1D31M4D40M1I19M5I3M3I44M4I4M1I81M2D13M4I42M2I20M1D5M5I60M5I5M3D4M4I2M3D20M3D34M5I1M5I59M1I7M1I11M4D8M4D11M4D37M4I24M1I23M3D50M1I29M5D3M2D20M4D26M5I25M3D91M5D37M5D6M2D57M2D106M2I1M5D13M3I67M2I22M3D15M4I35M2D24M1D42M5I28M3I57M3I33M4I48M3I8M2I13M4I12M4D10M3I16M3D15M3I5M5I82M5D3M2D9M4D9M5D12M4I70M5D1M5I12M4D35M5D19M3I23M2D67M4D73M5D2M3D169M4I18M5D7M2I71M2I44M1D13M2D47M3D6M5D11M3I37M1I16M4D70M5D61M1D5M2D3M4I115M2D29M5D18M4I57M4D10M5I13M4I13M1I6M4D57M4I19M4I3M4D42M5I19M5I33M1D12M4I4M1D18M3I14M5D6M4I8M1I3M3I2M1I4M3I81M1D38M2D64M1I60M5D91M4D20M1D2M4D9M5I16M4D71M2I61M4D10M4D132M4D11M4I23M2I22M1I55M2I23M3D5M1D4M4D151M5I4M2I47M1D2M5I2M2D17M2I3M2D6M1I38M3I7M1I74M4D14M1D53M2D11M3D9M1I9M5D13M4I38M3D30M2D40M2D2M5D5M4D20M5D10M5D1M1I1M1I14M3I29M4I64M2D8M1D41M3D33M2I57M1D12M5I54M1D113M1I66M3I82M3D39M3D15M1D58M5I11M3D9M4D16M2I9M5D13M2I24M2D34M2D4M3I13M1D73M1D56M3D7M1I11M4I12M4D33M2D47M2D28M4D15M3I42M1D11M5I103M3I18M1I13M3D29M1D136M3D15M2D8M1D7M4I10M5D14M1I13M5I11M3I98M1I94M4I49M1D34M3I12M2D6M3D60M5D28M4D34M5D86M4I36M5I19M5I9M1I21M3I31M3I10M3D2M2I30M5I156M2I78M2D11M5I5M4D5M5I51M4D7M2D17M1I53M1I1M3D43M1I48M2D15M4I10M1I35M4I40M2I20M1I14M3D4M5D1M3D73M4I91M2D11M1I11M5I99M5I7M2I58M1D50M5I21M1D35M5D86M2D65M1I5M4D17M4D1M4I6M2D39M5I23M2D3M4I21M3I20M5I7M1I15M4D16M4I20M3D15M1I32M4I5M1I86M5D40M3D11M2I27M4I85M2D2M5I59M2I14M1I114M5D2M1I3M2D24M4I13M4I12M2D73M4D7M2I3M3I55M1I3M5D7M3I81M1D17M4I39M1D10M5D19M4I25M4I65M5I54M5D20M2D10M2I58M3I35M1I30M2D56M3D14M2I195M5D77M1I16M2D97M5D3M4D12M5D9M3I14M2D4M3D6M2D55M4D8M5D28M2D52M5I13M1I26M3I115M2I40M4I17M4I33M4I11M4D34M5I18M1D3M4D11M1I8M1D60M4D55M4D20M2D5M3D1M4D8M2D29M4D18M1D72M3D51M5D14M5D47M5D6M4I4M5I2M4I18M5I135M5D7M3D50M4D17M2I26M4D12M2I6M5D38M4I2M3I52M2I5M2D2M2I4M1D14M3D5M3D50M5D59M5D10M3I20M1D9M5D160M4I8M2I71M1I59M1D6M3D32M3I28M4D70M2D76M5I28M2I21M4D7M1D10M4D8M3I27M2D15M5D9M3D11M4D52M3I19M5I100M5D55M4I1M3I19M4D3M1I34M1I17M3D15M4I30M4D115M5D126M1D21M5I20M2D1M4I49M1I15M5D42M4I32M2D6M4I31M5I8M2I58M2I1M2D69M1D6M2I34M4I21M4D21M3D68M4I35M2I28M2D22M4I5M5D27M5I39M3I5M2I155M2I24M2D59M4I31M1D16M5D6M5I40M3I26M1I38M3D6M4I21M4I20M5I3M1I8M2D46M5D36M3I12M3I39M2D10M5I3M2D9M3I28M5D2M5D24M4I100M3D17M5I69M3I30M5I27M2I1M5I49M3I63M2I4M5D16M4I45M5I85M4D25M3D21M4D16M5I211M3D12M4D14M4I30M5I23M5I4M5I6M5I8M1D11M1I48M3I29M1D14M3I35M3I32M2I10M1I27M4D107M2D71M5D52M4I1M4D2M3I8M5D50M4D15M2I59M5D3M1I8M1D37M2D69M3I58M3I2M2D67M5D15M2I46M3D27M3D54M2I55M4D18M2I134M2D35M4D84M3I49M4I34M2D39M3D30M2D14M3D32M4D30M3I8M2I123M2I70M5D5M4I22M1I31M1I9M2D5M2D20M2D28M5I36M2I41M1I14M2D98M3I3M4I8M1I37M4D1M5D62M4I30M5I38M5D26M1D18M1I18M2D28M3I8M2D65M4I10M4I4M4I8M4I8M2D21M5D30M5D42M1D5M3D13M1I54M2I39M4I59M4I44M5D5M5D9M3D64M4I3M5I21M4I15M4I31M5I42M1I49M5I49M3D6M2I10M5D24M1D45M2I2M4D22M5I16M1D20M3I12M5I3M4I13M3I73M2D27M3I9M3I20M4D1M3I3M1D2M4I2M1D48M3D5M3D90M5D19M3D8M5D12M4I3M4D1M4D18M5I9M2I66M4D10M2D81M2I18M5I16M4I71M5I13M2I12M3I55M4D2M3I31M1D13M2I73M5I18M2D6M2I13M1D29M3D91M3D1M3D62M4I37M2I82M2D10M3D11M3D18M2I63M3D19M4D12M3I16M4I21M4I21M4I59M5D12M5I48M5I4M3I64M5D17M4I1M3D41M2I30M5D6M5D5M1D7M2I25M2I6M4I15M3D39M1D34M1I21M5D35M5D4M1I23M3I40M3D58M5D24M3D139M4D85M5D5M3D1M5I45M3I1M4D3M4D30M3I3M5D39M2D124M3I19M2D68M5I1M1D13M5D24M3D14M3D6M4I7M4I6M5I9M3D43M1I62M4I15M1I2M5I19M2D26M4I11M3I39M1D21M1I3M1I32M5D90M3D36M2I29M5D5M2I33M5D40M4D18M1D62M4I22M3I7M2D14M4D29M2I38M2D95M2D10M4D6M3I5M1I16M5D4M5D16M1I45M5D8M2I1M2D39M1D45M2I13M5I3M3D49M3I23M4D8M1D73M3I14M1D48M3I9M4D7M4I7M4I9M4I8M1D7M5I23M1D4M2I16M4I26M2I20M5D8M2D45M3I14M3D12M2I26M1D47M5I19M2D1M1I10M5I50M2D21M5D4M3I48M3D16M5D49M1I19M2D17M5D7M2D10M1I46M4I1M1I20M4I23M1D20M4I54M4D71M2D3M5I1M3D82M5I12M3I36M1I2M3I86M5I20M1I18M2I40M3I63M1D22M1D23M1D46M2I50M4I104M3I8M3I36M3D81M3D22M5D131M3D41M3D3M4D16M2D17M5D9M5D2M5I29M4I25M5I12M4D23M5D43M3D17M2I26M2I6M1D42M1D57M4I7M2I22M1I10M5I17M2D23M5D15M1D8M1D9M2D28M4D15M5I12M3I1M2D23M5D17M3I29M3I39M3D9M3D58M1D168M1D48M1I6M1D23M2I10M2D4M3D27M5I46M2I24M2I19M2I30M3I248M1D21M1D14M3D42M1I18M3I33M2I19M3D19M1I65M1I21M1I21M1D36M4I14M1D7M2D42M4I19M4D107M2D35M4I37M2D57M1D80M1I66M1I1M5D20M1I41M2I16M5D21M4D40M1D24M3D17M1D11M4I14M4I12M4I40M5I81M2I13M2D28M4I66M5I21M1I111M2D87M2D4M2D19M1I12M5I1M3D19M1I71M5D50M5I7M3I41M2D62M1D27M5D121M4D7M1I24M5I5M5I19M4D37M4I20M4D59M1D77M3I27M2I34M2I26M4I15M1I14M2D85M3I14M1I2M3D5M3I21M2I16M5I17M2I6M3I1M5I43M4D7M4D38M5I24M2D7M4D54M3D2M3D26M1I29M4D34M4D1M1I7M2I23M5I26M3D26M4I14M4I99M1I112M3D116M4I6M3D22M3I46M2I90M2I51M4I50M1I15M1I4M1I23M3I23M4D3M3D8M3D26M2D28M4D16M1I101M4D41M1I15M4D7M5D8M5D1M2I62M3D50M2I47M2I12M5D97M2D12M4I8M3I27M4D17M1I51M3D72M5I5M1I68M5D31M4I6M1D15M4D9M5D54M1I21M1I6M2I13M4D4M5D9M4I79M4D21M3I28M5D4M1I21M4I5M2I37M3D10M5I29M4D13M5I8M5D33M5D10M3D40M1D63M5I8M2I7M5I62M2D8M3I5M3I53M5I17M4I39M3I15M2I7M5I42M2D39M2D95M1I99M1D3M2I44M5I22M2I20M2D36M2D7M5I63M2D5M2I84M1D70M1I53M4D21M4I72M1D19M4D31M2I3M3I56M1D9M4D44M3D58M1D24M4I18M5I31M1I24M2I67M3I22M1D53M4I10M3I45M1I37M1I4M3D6M1D140M2D27M1I107M1I2M5D35M3D21M3D5M4I100M3I11M3D31M4I45M2D42M1D35M4D61M2D14M2D29M1I46M5D8M1D61M2D34M3D17M1D22M1D18M2D39M3I45M3I27M5D1M4D89M4D29M2D25M3D3M4D17M5I17M4D1M5D46M1D41M1I151M5I26M4D24M1D93M4I11M2I61M3I31M1I2M4D24M2D15M4D73M2I8M2D2M3I20M4I18M3I22M1I32M2I18M1I4M2D31M5I6M1I4M1D2M3I99M1I13M2I4M3D20M1D31M4I22M3D25M3D16M1D3M5I46M2I2M2I33M5D14M3I19M1D122M1D47M3D3M2I46M2I29M1D39M3I2M1D12M2I49M1I47M4D158M4I24M1I36M3D23M3I18M4D61M2D15M2D36M4I30M2I2M5D24M5D3M1D2M3D34M2D9M3D4M2I16M5D136M4D3M3D4M3I17M3I32M4I22M3D29M2I10M4I7M1I1M3D10M1D38M3I17M3D13M4I23M1D43M1D17M3D7M4I18M2D4M1I32M5D6M4D26M1D56M4I26M3D41M2I22M2I7M5I3M5I2M5I29M5D23M4I34M2I16M5I10M2I2M2D55M1D6M5I52M3D43M3I78M4D18M5D15M1D8M1D16M4I10M3I67M1D41M5D3M4D9M5D17M1I25M5I1M1I9M3D54M2D20M5I17M2D27M5D30M4D59M1I8M2D47M4I1M3D13M4D83M5D13M5I121M4D13M2D2M3D15M5D13M1I38M2D29M3I84M3D33M5D126M2D9M4D99M1I29M1I9M4D4M5I12M3I12M1D34M3D97M2I15M3D19M3D11M5D46M5D7M5I30M3I35M5I67M3D20M1I12M5D31M5D13M4I14M2I13M4I7M5D18M3D26M4I64M4D7M2I48M4D66M3I56M3I41M5D9M2I5M5D87M2D11M3D69M5D46M2I17M2I4M5I46M1D36M1I2M4D9M1D29M2D4M5D23M4D31M4D42M5I1M3D25M2I44M2D21M3I16M2I120M5D44M5D38M1I45M1I19M3I10M1D5M3D62M1D8M4D35M3I3M3I3M1I5M5I10M4I42M2I66M5D85M4D16M4D2M1I78M1D74M4D6M4I50M4D11M3I37M3I17M2I7M1D24M5I60M3D3M1D1M1D42M4I21M5I104M2D14M2I9M3D115M1I32M4I28M4I39M1I32M4D41M1I88M3D40M4I27M3D2M2D17M3D4M4D18M3D13M2I22M3I4M2I30M3I23M5D161M4I19M4D41M2I13M1D66M3D11M2I15M2I31M3D55M1D62M1I2M5I10M4I15M2I168M1D7M3D45M2D55M1D45M1I20M2D65M1I46M1D46M1I2M1D7M4I20M2I3M2I66M4I36M3D7M5D51M2D17M2I4M2I100M2I1M5I10M5D8M1D23M5I78M3I35M4D13M1D72M3D39M5I21M1D1M4I22M1D119M3I1M3I26M5I4M4I5M3D41M3D10M2D132M5D34M1D35M3I34M2D7M3I11M3D6M1I28M3I27M1I25M2I14M4D1M4D51M4D25M1I62M3D7M4D33M4D10M3D16M2D36M4D55M5D25M2D5M5D7M4I58M4D14M3D4M3D60M5I26M2D64M1I10M1I3M1D4M5D36M4D18M2D17M3D1M2I32M5I65M3D9M3D65M4D91M3I13M1D10M5D31M3I120M5D17M4I35M3D12M4I10M5I7M1I15M5I29M2D7M1D2M4D2M5D2M3D29M2D20M3I19M2I26M5I19M2D29M5D29M4I45M2I5M5D18M4I70M2I22M3D27M5D8M5D12M1I4M4D64M3I3M4D31M3I4M5I35M4I17M3I27M5D25M5I11M2I12M3I9M2I39M4D9M5I18M5D11M4D41M2I28M3D10M3I1M2I67M2I56M3I8M4D3M2D3M5I2M5D31M5I26M5I7M2I32M3I37M3D61M1D16M3I46M2D7M2I44M1D11M5D4M4I38M3I2M2D12M1I38M4I7M5I9M1I6M4I40M2I20M3I34M2I5M1I38M5I15M5I46M3I85M1D14M5I32M4I13M3I12M1I76M4I40M2I76M3I14M3D13M2I1M2D78M5I23M1I3M1I18M3I36M4D9M1D16M5I42M2D32M1D30M2I18M4D42M4I18M2D117M5D12M3D22M5D21M2D18M2I81M3D7M2I81M1D39M4I32M5I33M1I48M5I26M4I17M2D41M1I110M5D13M2D51M1I69M4I18M2I32M3D46M5I14M1D30M3I27M3D34M3I5M3I45M1I67M1D7M3D13M2I11M4I18M1D21M2I91M5D51M1D1M4D6M1D23M5I32M1I11M2I19M1I8M1I49M4D44M4D23M3D11M1I45M4D55M5I7M1I2M5I64M1I30M3D34M3D1M4D42M3D2M5D68M2D59M5I12M2D2M4I24M4D15M4I21M2I46M1I19M4I37M1I14M2D63M3I100M4I17M5D85M2I130M1I32M1D65M5D79M5D10M4D27M5I85M5D6M2I50M3D28M4D7M5I11M5I1M2I8M2D2M5D66M5I30M1I18M5I43M5D3M2D5M5I57M1I90M5I32M2D27M4I28M1I75M1I85M3D38M4D57M5I18M2D97M1D1M1I23M4D1M5I6M5D51M2I59M1D24M5I25M4I23M4D49M2I131M5D2M4D3M5I32M3I25M5I7M3D14M5I9M5I61M2I6M5I4M1I5M3I64M5I12M2D28M1D13M4I46M1I13M1I42M2I1M3I45M5D37M3I5M1D14M1I21M1D147M5D17M3D84M5I3M4D10M2D13M1I13M4I75M5I2M1D6M2D13M3I32M2D8M2D22M4I52M1D4M4D10M4D16M4I3M4D3M1D23M4I6M4D33M3D238M2I5M5I9M3I5M3D12M2D16M4I35M4D41M4D7M3I26M3I17M3D132M3I29M3I24M5I49M5D2M1D10M5I30M1D26M2I16M5D76M2I105M2I66M4D8M3I2M3I103M5I1M2D47M2D61M1D14M4I1M3D3M5D4M2D48M3I36M2I13M4D1M3I20M3I26M1D42M4I19M1D21M1D26M5I49M3D18M5D15M4I7M3D30M3I23M2I80M2D2M3I4M4D7M1I10M3D33M3D42M5D11M5D1M4I15M1I38M2D117M2D33M1I11M1I112M1I23M1D24M5D32M4D30M2D37M1I37M5D16M5I14M5I30M1D26M5I40M3D9M2D8M4D2M2D14M1I19M4I19M2I90M3D16M3D9M1I23M4D19M1I13M2I49M1D47M5I35M3D33M3I21M4D1M1D70M3D75M5I137M5I21M3D73M4I14M1I53M5D17M3D59M5D21M3I43M3I37M2D8M1I53M2D22M4D111M3D48M4D35M4D10M1D46M5I39M1I300M2D19M1I38M2D52M3D29M5I102M5D17M3I26M4D12M5D86M3I5M1I13M5I21M5D14M1D42M3I27M3D12M1D9M5I51M3D76M4I2M4I52M5I98M2D47M5I19M1I30M5I9M2I24M2D42M3I22M3D1M1I39M1D12M1D151M4D25M3D1M1D21M5D10M1D36M2D35M4D38M5I13M4D83M2I13M1D40M3I16M1I14M4I45M3I9M3I29M2I18M2D24M4I4M2I40M3D46M5D2M1D11M1I21M1I30M3D17M1D16M1I13M1I37M3I3M2D21M2D19M2D11M2I10M3I120M3I44M2I4M5I45M4I122M4D27M5D20M4I50M5D22M3D21M1I6M1D26M1D23M3D17M1I49M2I7M4D37M2D74M2D7M4D81M3I6M5D9M1D8M2D40M1I7M4I24M3I1M3I36M4I32M1D1M4D21M1I12M5D91M3D3M1I36M1D15M4D13M5I57M1I123M5I10M1I75M3I162M3I22M1I6M1I18M5I31M1I43M3I83M2I57M5I43M2I6M5I19M2D77M1I33M5I10M3I9M2I34M1I7M3I47M5D17M2D37M4D25M3D23M3D1M1D16M4D1M1D12M3I29M2I1M4I28M1I4M5D65M4I26M4D4M1I59M3I21M4I51M4D16M4I81M1D4M3D54M5I82M3I10M3D73M5I59M2D32M5I11M4D5M3D46M2D15M4I10M3I35M4D11M4I52M2I4M4I23M5D41M4I78M2I115M5D1M3D5M4D6M5I10M3I13M2I1M2D68M1I17M1D1M2I8M5I20M1I49M2D32M5D75M3I11M2I29M5I15M4I31M4D25M3I87M1D22M4I20M3D11M2I10M1D39M1D6M2I138M3I102M5I10M2D50M5I32M2I34M4D4M1D6M1D22M5D8M1D17M3D2M3I65M2I15M1D5M5I16M5D7M5I23M4I10M5I9M2D14M4D27M1D22M1I43M5I59M3I11M3I61M2I38M2D11M3I52M2D129M2I40M4I28M4I25M5D10M5D75M5I92M3D15M4I8M5D1M5I90M4I17M4I167M2I36M5D106M2D61M4I99M1D2M5I39M1D43M4D4M2D23M5I82M5I5M3D12M4D11M2I17M4D42M2I35M4I20M4I44M4D24M5D30M4I33M3I6M3I7M2D22M5D36M1I36M5D3M1I7M5I2M5D3M1D7M1D40M5I49M1I57M3D13M2D24M1I66M2I49M3I23M3I22M1I32M1D12M5I9M3D11M3D6M2D30M5D43M1D61M4D12M1I4M2I36M2I19M3I4M3D87M5I3M2I28M2D76M1I25M2I12M1I19M3I31M4D48M5I26M2I56M4D2M2D16M1I57M2D59M2I5M4D25M2D5M4D46M5I3M3I9M2I10M5D8M4I29M5I4M4I5M1I34M4D28M2D6M5D90M1I42M4I3M4D78M4D21M3D35M5I41M4D32M1D6M4D16M3D41M1I50M1I74M1I5M5I16M4D29M3D35M2I110M2D30M2I1M4D1M2D14M4D20M4I3M5I30M3I19M5D16M3I23M3D68M3I20M4I5M4D2M1D44M2I19M5I8M5I46M3D12M1D4M2D12M2D107M4D59M2D31M3D6M1I45M1D138M5D24M5I6M5I17M4I63M1I54M3I51M3I21M4I28M2I9M1D15M1D1M3D2M4D14M4I68M5I27M1I92M2I6M5D2M3I9M4D17M1D23M2D14M3I39M5I6M2I2M1I43M3I8M3I27M5D3M1I64M4I30M4D14M5D14M2I8M3D17M4I18M5I47M4D5M3I14M5D11M5I30M2D42M1D19M3I12M3I30M3D5M1D17M2I8M4I29M4I194M5D106M3I16M5D53M3D27M3I16M3D41M5D1M5D13M3D36M5I52M4D3M4D48M1I1M3D10M4D56M4I1M3I9M2D23M2D61M4D37M4D20M4I27M4D35M1I19M1D13M4I41M4D8M4I38M2D40M2D8M3I30M5D2M1D53M4I11M2I6M5D12M1I13M5I31M3I60M3D38M4D52M1D56M3I20M2D9M2I12M5I43M3D7M1D1M3I48M5I44M5D9M2I65M5D4M4D44M3I1M1I39M1D14M4I53M1D7M4I2M1D1M1I3M2I47M4I27M3I27M5D39M2I36M1I9M4I11M1I20M1I54M3D20M1I10M3D71M5D34M1D46M1I80M4I22M4I62M4I3M2D14M5I127M5I46M1D22M2D26M5D36M3D24M1I16M4I23M5I18M2I13M5I1M1D30M3D8M1I67M4I11M3D4M5I4M5D4M2I53M4D19M3I35M3I17M3I15M2D7M2D6M2D23M4I16M2I102M3I1M3D93M1D26M1I24M1I16M1I102M5D16M3I25M1I4M3D9M4I26M1I18M1I3M2D44M1I73M5D14M2I15M4D35M3D15M3I35M1I42M5D32M4D25M2D1M3I99M1D12M2I30M5D41M3D23M3I16M4I43M4D15M3I12M3D67M1I18M4D43M2D44M3I153M2D63M5D14M1D5M4D10M4D19M3D21M1D37M5D42M3D21M4I6M5I30M3D9M4I31M4D18M5D12M2I11M4D63M2D35M5I40M3D18M4D42M4I2M3I65M1I8M2I33M1I5M4D50M3D8M3I85M4D22M3I14M2D29M2I20M4D2M5I2M3I23M4D66M2I5M1D2M4D54M4D95M2I30M4D16M4D53M5I17M4D11M1I54M1I1M5I23M2D3M2D8M1I14M3D56M3I7M4I11M2I7M5I5M3D2M5D27M5I69M4I19M2D117M1I52M1I115M4D20M1D2M5I19M4I71M1I2M2D96M3D19M3D1M3D33M3I31M3D10M2I8M4D33M4I61M1I8M4D3M2D41M5D26M5D71M1I7M2D3M3I20M3I15M1I32M2I8M4I15M4D20M5I8M3I11M1I87M1I16M3D28M2D4M3D21M3D3M2D36M3I28M1D13M2I40M2I54M3D45M3I25M4D10M1D88M1D44M3D71M4I53M1I12M4I15M1D2M4D2M4I6M1D11M4D15M1I43M5D17M2I70M3I52M1I31M1D37M3I9M4D9M4D9M3I30M1D122M2D9M3D3M2D4M3D60M1I50M3D5M4I19M2D45M1I11M1I21M4I1M5I11M2D18M2I70M2D10M4D69M3I14M4I20M5I26M4I106M3I35M3I12M4I6M4D85M3I13M5D91M5D87M1I27M4I81M4D51M2D20M3D24M1I17M5I11M5I18M3I2M5I17M3I52M2D30M4I50M1D41M3I10M2D20M5I20M4D23M2I44M4I3M2I3M4D4M2D15M1I9M5I4M1I24M4I42M3D18M2D36M2D168M4D17M4D59M3D46M1D4M5D77M1I33M5D41M3D19M4D41M4D101M2I50M1D95M4I47M2D13M3D110M4I30M5I1M2D119M2I22M3D16M1D7M4I8M5D54M5D12M4I6M5D12M3D77M3D20M1I30M2D5M4D8M4I14M3D85M1I120M2I1M5D23M3D1M2I100M2D39M4D8M4D48M4D10M5D69M5D17M2I7M4D15M1I12M2I23M4I9M1I28M1I3M4D95M1I9M1D34M1D25M5I6M2I4M3I52M5I1M4I4M4I104M1D56M3D94M3I65M4D22M2I3M4I8M1I89M2D25M2D33M2D51M2D12M1D64M2D35M4D15M3I11M5I66M4D3M2I32M5D43M5D61M2I7M1I51M2D2M3D58M1D1M3D29M2D36M3I37M2I37M5I21M4D19M5D32M3D83M4D61M5D22M4D67M5D24M1I111M3I3M5D4M2I43M2D45M4D74M3D81M5I22M5D224M4D9M2D2M4I103M5D84M4I2M2I8M5I12M3D43M2D24M4D29M2D15M5D2M4D21M3D1M3D8M3D14M3I26M1I21M4D84M1I3M2I6M4I16M4I49M3D17M4I42M3I47M4I11M2D1M4I13M2D16M5D8M2D70M2I4M1I144M4D27M3D20M1D3M1I18M5D5M4D15M5I16M1I70M4I6M2I25M3D148M2I198M2D58M2I120M2I10M2D23M2D19M1D33M3I16M5D21M5D40M5I9M3D16M5I8M3I50M4D15M1I57M4D2M3D22M3I7M3I18M5I8M3D14M5D77M5D16M5D17M1D48M5D17M3I17M3D77M1I20M3D10M2I50M4I3M2I74M3D76M5D32M1I39M4I32M5I10M5D14M5D46M3I48M3D33M1I34M2I8M5D40M5I40M4I6M3I13M5D8M1D16M4D38M5I7M3I3M5I21M1I10M2I4M2D31M5I139M5I24M4D179M4I18M3D64M2I23M5D1M1I10M3D35M5I20M2I6M1I38M5D29M3D43M2I16M4D6M5I6M1I7M4I14M3D17M4I1M5I34M3D114M5I62M4D21M5I34M2I5M1I28M1D68M1I100M1I39M2I21M5I22M1I65M2I51M3I12M4D3M5D12M3I2M5I6M5I17M1D42M5I69M1D4M4D4M2D3M3I12M1I34M1D9M3D27M2D4M3I36M5D33M2I5M3D46M3I43M4D5M1D3M2D15M5D65M1I7M2D9M4I35M1D7M3D130M4D60M2D2M5D14M4I13M2I5M1I65M4D47M2D40M1I42M4D27M1I3M5D11M2D1M5I49M4D8M2D34M2D25M3I40M4D48M4D76M2D30M5D13M4I76M4D3M4I12M1D11M5D16M4D15M2I57M4I8M3D10M5I16M4D17M4D45M1I17M3D11M5D128M5I13M4D53M1D16M5I6M5I7M5I69M1I9M1I24M1I79M5I14M5I37M4D56M5D10M3I51M3D20M5I16M3I12M5D16M2D26M2D19M5D87M3I21M5D12M5I43M1D67M3I4M3I2M4D9M1I41M5I85M3D74M1D14M1I39M3I37M4D28M3I49M5D75M5I12M4D114M5D5M2I46M1D6M3D19M3D28M2I128M2D114M2D9M5D13M2D15M1D22M1D146M5I5M3I18M3D1M3I9M2D71M4I10M3I50M4I21M2D16M2I9M1I10M2D11M3I8M1I1M2D121M2I1M1D35M4I50M4D6M2D9M3D3M4I8M3D27M4I34M1I69M3I18M1I11M4D5M2I28M1I39M5D1M1D24M5D132M3D3M4I22M4D15M1D27M4I2M3D47M4D8M1D65M2I18M4I11M3I37M3I72M5D4M5D10M4D27M4I8M4D61M2I67M1I3M3D6M2D14M1D39M3I25M3I7M4D12M5I27M2I19M5D85M4I19M5D97M5D95M1I3M1D68M1I24M4D39M2I21M2D22M2I81M1D57M3D26M1D42M4I8M5D13M5I47M1D91M1D38M1I2M1D155M1D2M5I69M3I5M4I8M4D41M5I3M3D9M3D133M3I32M3D47M1D39M2I68M3D3M3I5M2I6M1I28M3I9M2I11M4I3M1D35M3D87M5D81M1D54M5I35M2D57M1I11M2I94M4D19M2I49M1I23M4I54M1I8M1I8M4D79M2I4M4D5M5I7M5D83M5I4M4I16M4I38M2D15M5I7M2I2M5D18M2D46M2I1M1D5M5D2M5D6M3I19M2I1M2D34M4D21M2I55M2D63M1I9M1D7M5I48M3I13M3D16M2D10M5I64M4I5M4D32M2I1M2D2M4I3M3I47M5I27M5D88M5D9M2D6M2I11M5D72M4D16M3I11M4I30M2D6M4D37M1D32M3D9M5D76M5D82M3D7M4D11M5I8M5D18M2I70M2D2M3I153M2D47M3D33M5D20M3D51M3I1M4I26M5D6M5D4M2I16M5I45M2D4M2I55M2I62M2I51M5D88M2I19M1D25M5I33M5I16M5D15M2I2M1D3M2D8M3I25M3I24M1I14M3D14M2I160M1I9M1D26M4I3M5D116M1I16M2I70M4D32M1D45M1I37M4I45M5D2M3D50M3D28M4I23M4D9M3I135M2I1M3I9M4D7M4D80M1D11M3I18M3D14M5I5M1D21M4D20M1I53M4I14M4D9M4D3M5D32M4D48M5D16M3I2M2D3M3I27M5I63M2D4M4D20M1I19M4I26M2I2M5I26M4I14M2I18M1D5M5D57M4I26M5D59M4D26M4I31M1D2M3I24M3I18M3D3M3D14M1I47M2I20M3D21M3D30M4D8M4D44M5I1M3I134M1D3M2I22M4D20M2D16M2I41M3D50M3I43M3I23M5I39M2I90M2D30M2D28M5I21M2I16M5D2M2D158M2I8M2I31M5D36M1I11M3D51M2D150M4I3M5D7M3I34M3I12M1D4M3D26M4D7M3I30M3D8M4D15M2D36M4I5M1I21M5D22M1I181M1I94M4I1M3I5M2I27M2D14M1D27M5D141M1I16M4I15M1I16M2I33M4D23M2D6M3I31M1D32M3I23M4I50M5D19M5D60M5D47M3D24M3I68M3I60M1D45M5D30M1I46M2D4M5I27M4I79M5D32M2D17M4D3M1I15M1I1M5I14M2I6M5I20M4D40M1D23M4D13M2D16M2I39M1D53M2D25M4I1M1D7M3D7M2D48M4I31M3I33M3D7M2I18M2I18M1I52M1D64M4D4M3D19M1D26M4I3M2D42M4I2M2I9M1I121M1I6M4I31M5I13M1I14M2I122M4I19M1I33M5I15M2I12M5D6M1I48M1I1M1D43M2D6M3I79M2I45M3I16M1I83M2D17M5D28M1D1M5I7M1I55M3D28M2I93M5D51M2I6M4I9M4I88M5I50M2I4M1D23M4I89M4D2M3I20M4D128M2D36M3I50M3I131M4I5M4I21M4I44M3D4M4I16M3I33M5I59M1D6M1I20M3I25M3D18M1D28M4D24M1I9M2D13M4I5M2I81M1I13M1I33M5D7M4I17M2I88M2D6M5I17M3I28M1D27M4D24M4D22M3D7M4D8M2D22M3D3M2I71M3D23M5D38M2I24M1D5M5D24M1D1M5D7M3D19M2I69M3I50M5I25M3I34M2D37M4D63M2I14M3D37M4I8M2D13M4D30M1I8M5D60M3I14M4D35M1I102M5I19M3I18M4I10M2I14M5I85M1I23M1I10M2D28M2D9M3D25M2D10M4D92M3D43M1I29M5D49M3I4M5I20M2I16M2I15M1I181M2I7M5I43M5D32M4D24M4I26M5I23M3D46M4I46M5D17M5D10M1D85M1I35M4I56M3I43M5D20M4I17M3I44M1I10M1D119M4I24M4I5M3I92M1D45M1D4M2I85M3I77M3D60M5D1M1D24M2D61M1I20M3D37M2D78M5D20M3D17M5D14M1D28M1I45M4I2M3D46M3D22M4I51M2D11M4D27M5D13M5I38M1D32M3I56M1I41M5D32M4I12M3D3M4D24M3I78M2I26M4I45M1I19M4I14M5D42M5I9M5I9M2D24M3D3M2D12M3I14M5D9M2D15M1I20M5D92M4D12M2I46M5D2M4D82M4I9M5I21M3D54M2D53M1I62M4I7M5D19M4I3M3D48M4I53M4I85M3D26M3D96M5D10M2I8M5I63M4D2M5I76M1D3M2I63M5I44M3I56M5D13M4I6M1I25M1D20M5D9M4D35M1I18M3D22M5D116M3I33M3D7M2D8M5D2M2D16M2D16M4D62M3D25M5D6M5I110M4D105M4I96M2I54M4I243M1I76M4I41M2D8M3I46M1D33M4D12M5I52M2I2M3I34M1D9M1D17M3D77M2I2M5D16M5D108M5I11M4I12M5I25M5I47M5D5M1I11M1D14M1I19M4D67M5I10M2D41M3I24M5D18M2D25M5I30M4I30M4I15M1D153M4D5M1I26M2I34M1I1M2I8M2I12M5I81M4I14M2D49M3D66M4D14M3I21M5D100M4D15M1I39M3I10M2I138M4D8M1D54M4D25M2D21M5I1M2D17M5D38M5D53M5D41M4I180M4I17M4I20M3I12M2I47M2D62M4D8M4I46M2D38M4D74M4I60M4D127M2I58M3I91M1D22M4D7M4I8M1I70M3I25M3I32M3D41M2D11M1I48M1D19M3I27M3D88M2D33M5D88M3I19M1I9M1I22M5I2M4I5M1D13M2I22M2D26M3D107M2D68M1I27M3D12M3I67M1D71M5I14M5D69M1I21M3D29M5D3M3I23M4D4M1D2M1D2M1I23M5I34M4I16M2D22M5I48M2D7M2D20M4I16M2D20M2D7M3D31M1I43M3D51M5D25M2D1M3D10M2I29M2D105M5I1M1D34M2I4M3D23M3I75M3I44M3I12M3D18M2D22M4I39M4I16M2I11M1D14M1I6M4I15M4D90M3I14M5D33M5I14M4D2M3I2M3I90M4I10M5D81M4I19M3D122M2I26M4I14M4I9M1D28M5I14M4D28M5I65M5I10M4D23M1I58M1D22M3D15M3I45M1D23M4I47M4D15M1D9M3I19M5I3M4I29M1I7M4D6M1I24M3D106M4D138M5I18M5I5M4I1M1I18M4I70M2D20M3I14M1I81M5D18M4I44M1I18M4D7M1D16M2D12M3I48M1D1M2D123M4I45M5I2M1I2M1I14M3D15M3I7M2I11M3I23M1I42M3I12M3D46M1I17M1D38M3I3M1I9M2I83M2D6M1D51M5D21M2I6M3D41M1D62M3I24M3I4M3I3M1I27M2I56M2D1M4I23M4D63M3I16M2D10M3I2M1I28M2I65M3I74M5I58M5D12M3I13M2D14M3D4M5D17M5D8M5D1M5I25M2I6M3D28M3I11M2I108M2I2M2I6M1D41M1I25M3D26M4I44M2D47M5D55M1I1M2D96M3D11M3I53M5D2M2I84M4D2M1I31M1D41M1I65M3I28M2D133M2D2M2I15M2D7M5D13M5I4M3D11M2I12M2I5M5D8M4I27M2I11M5D142M4D14M3I93M2I9M4I24M4D11M1D46M5I17M2I6M3D101M2I81M2I6M4D66M2D46M4I10M4I224M4D71M2I8M1I16M2D1M5D49M3D30M5I32M1D72M3I82M1I25M4I35M4D20M1D38M1I54M1D24M3D10M3I96M2D23M4D9M3D9M3D8M5I19M5D8M2I16M5D66M5I6M2D19M4I8M2D32M1D82M4I26M1I5M1I5M2D50M3I75M3I11M2I6M4I96M2I47M1D5M1I6M4D15M2D41M1D42M3I19M1D35M3I46M3I2M3I15M5D22M5I12M5I5M2D1M3I8M4I20M3I9M4D11M3D1M2I25M5D7M5D16M5I21M5I11M4D35M4D15M5D6M5D57M1I104M1D34M2D24M1D35M3D36M2I4M2I3M5D9M3I57M4D28M1I22M5I106M1I46M1I5M5D5M1I3M5D10M3I2M3I53M3I24M2D41M1I20M4I8M2I92M2D68M4I5M2D5M2I10M2D11M4D43M2I10M1I17M3I93M2D35M5I7M1I18M1I9M1D23M5I33M3I24M2I2M4D2M5D236M4I78M4D11M3I28M3I2M5D9M3I50M2I36M1I28M4D62M5D17M3I38M3I43M3D22M1D65M1D39M3D12M4D79M3D110M4D4M1D24M3I3M1D54M3D24M4D20M5I7M5I63M1D42M3I14M5I2M4I51M1I3M2I41M1I46M5I4M3D34M4I7M1I2M2I44M4D63M2I36M5D11M1I98M2D25M1I2M5D31M4D12M3D8M2D6M2I22M1I95M1I32M4D50M5I3M1D5M1D6M3I22M1I10M5I2M1D2M1D9M5I99M4I30M5I105M1I14M1I12M3I32M5D34M3D7M4I41M4D13M5I18M4D38M4I39M3I2M1D4M1I12M3D35M1D27M1I67M4I8M2D23M5I42M3D10M3D134M4D45M2D3M5D8M5I8M2I1M5D6M2D36M4I27M1I23M5D21M2D29M4I8M3D134M3I30M4D2M1I74M2I112M2I63M4D75M5D5M2I102M2D9M2I23M5D56M2I31M1I45M3I27M4I3M1D17M1I26M1D16M1I17M2D28M3D34M3I145M5D8M2I11M3I13M3I4M2I11M1I19M4D23M1I10M3I48M5D8M1I76M5I20M4I34M5D46M1D6M5I62M2I2M5I25M3D10M2I7M3I36M3I8M5D2M3I4M5I40M5D2M3I16M5D20M4D11M5D34M2I61M2D1M3D47M2D66M4D10M2I29M3I27M3I28M1D9M4I18M4I61M3D32M4I83M2I55M2I20M5I94M3D61M5D103M4D3M2D28M5D7M2I1M2D31M2D25M5I40M3I53M3I40M5I24M4D68M2D9M1D56M3D19M5I19M1I47M3D42M5D101M1D9M3D4M5D71M4I2M2D31M5D3M1D3M1I4M3D20M2D16M4I11M3I28M3D54M5D29M2I12M1D65M2I81M4D24M1D11M2I11M2D9M3D37M4I28M1D6M2I30M1D3M5D15M2D82M5D40M1D41M1I69M5I28M1I28M1D17M3D187M1I12M3D30M5D15M3I11M1D15M3I12M5D3M4I7M4D10M1I21M5D17M5I54M4I32M5I38M5D19M5I85M4I10M4D11M4D64M1D42M4D34M1D72M4I21M2D8M5D13M1I4M5D50M2D36M2D20M1I56M5D61M5D12M2I54M4I18M3I3M2I28M2I100M3I12M1D6M1D21M5D3M2D19M5I63M1I26M3D31M4I16M3I10M4I37M1I20M4D5M5D18M4I5M2D59M1I94M5I39M1I6M5D41M1D43M5D46M1I13M1D21M3I49M4D15M2D3M5I17M1I11M5I35M1D14M1D10M5I46M2I21M1D61M5D48M5I46M4D4M5D7M3D50M3D23M2I71M4D13M3D23M3D7M1D14M5I19M1D62M1I18M1I37M4D27M4I32M1I59M1D12M2D21M4I72M1D13M3D12M2D10M5I15M3D38M4I1M3D7M1D3M2D9M1I3M2D58M4D18M4I2M3I1M3D22M5I87M4D13M2D24M1I20M1I1M3I67M5I21M2I18M1D18M4I4M2D13M4I10M2I66M1I2M4D37M1D68M5I46M4D14M5D1M5I38M4I26M2I24M4I21M5I22M1I86M2D78M4I7M1D9M4D31M5I4M3I13M4I55M5I95M5D24M4D1M3D15M1I35M5D8M1D25M4I10M5I1M2D13M4D31M4I95M4D21M4I26M1D25M4I6M5D2M3I22M3I8M2D34M2I2M1D4M2D26M4D27M3D9M4I40M3I5M3I24M2D68M5D26M5D17M2I44M5D20M4D32M4I18M4I6M3D9M5D1M3D14M4D1M5D17M1I87M4I16M3D20M3D5M1I18M4D1M2D8M2D15M3D17M4D11M4I70M3I21M1D16M5I61M1I85M2D46M2D10M2D37M1I5M4D17M2I42M3I49M1D7M2D25M5D46M3D23M3D18M1I71M3D4M4I5M2D5M4I50M1I48M5I67M1D65M4I44M5D6M2I120M4I14M3D4M5D56M5I25M3D81M4I106M2D17M3I50M2I109M2I30M1D17M1I22M2D51M2D30M2I18M5I7M2I4M5D61M1D66M1I37M3I11M4I33M2D3M5D3M4I17M4D15M1I30M3D64M4D46M3D25M5D5M1D14M3I8M4D8M5I28M5I16M2I123M2I32M4D13M5D31M4D25M4I35M5D23M5I91M1I27M1D12M1D25M1D1M2I20M4I18M4I31M5I20M4D11M5I10M3I6M2I11M3I54M5D15M1D102M4D1M3D5M1I18M1D10M5I59M3I123M5D26M4I25M4D4M1D6M2I1M4D23M5I50M3I38M3D17M1D15M5D6M1D28M2I8M5D35M3I19M1I21M1I31M1D14M3D42M1D99M1I42M1D8M5D25M3I16M5D21M5D11M4I26M3D17M5D8M1D10M4D42M4D12M1D47M5I1M5D36M4I6M5I14M2I25M5I10M3D55M3I2M2I5M1I30M3I46M4D2M5I4M5I48M5D30M1I26M5D35M5I45M2I23M3I8M3D22M5D36M5I38M3I33M1D108M5I22M5D4M5D23M1D46M3D3M2I106M2I49M5I1M4D2M3D1M2D179M5I97M2I40M1D68M1D44M2D40M2I14M4I17M1I1M4I36M3I3M3D21M2D66M2I1M3I11M4D33M3D38M4I33M4D21M1D1M2D31M3I26M4D16M2D61M1I83M1I55M4I15M2I26M5I5M1I13M1I26M2D26M3I115M1D24M3D18M1D37M2I57M4D32M3D4M1I24M2I39M3D16M4I50M4I35M2D141M4I10M1I5M5D2M3D38M1I26M4I15M5D36M4D45M1D50M1D9M5D9M4I37M4D112M5D11M1D30M4I14M4I18M5I4M2I76M5D29M4D13M2I2M2I28M5D21M2D1M5I17M1I11M5I48M4I36M4I17M3I63M4D21M3D90M3D18M4D75M5D12M5D82M4I11M4D2M5I5M5I36M1D29M5D7M5D7M1D9M3I39M2D85M2I1M1D37M2I41M5D21M3I23M2D17M4D9M5D26M2I31M1D10M1I116M2D9M2I13M3I24M5I51M2D1M4I17M4I67M4I10M4I7M3I32M4D60M2D17M1D47M5I68M4I14M5I45M1D11M4D19M5I31M4I55M3D10M4D33M1D78M4D4M3D8M5D12M2D2M1D2M4I12M4I25M5I55M1D2M3I19M3D8M4D49M1I36M4I22M2D15M4I27M2I3M4D36M1I24M5D16M5I45M3I39M5D28M3I3M2I40M3I21M2D32M2D14M2I20M1I54M5I52M1I11M3D12M2D53M2D9M3I133M5D37M1I98M5I10M3D39M1I16M2D12M3D57M1D4M1I14M2I31M5I55M5I8M4I48M5D116M4D40M4I13M2I127M1I2M4D10M1I3M3I15M2I50M5I17M2I65M4D53M3I16M3D41M1D5M2D103M1I13M2D18M5I79M1I13M4D25M1I45M3D2M3D6M1D18M3D3M4D5M1D3M4I59M4D5M4I5M1I69M1D22M5I51M4D9M4I3M5I6M5I5M3I67M4I2M3D14M2I86M5I57M3I17M2D24M5D14M1I50M4D35M5D17M2D31M2I24M3I74M3D18M5I6M4I63M3D4M4I48M4D11M5D16M4I18M1I28M3I19M3D32M2D26M3I13M4D69M1I24M1D105M2I5M5I13M4D20M2D4M2I11M2I116M4D41M4D169M2D5M2D51M5D37M1D26M5I2M5I35M1D3M2D16M3I2M1I37M2D57M4I21M5I53M1D5M4D30M1I1M1D27M2I93M4I7M3I3M5I18M1D24M4D4M4I6M4I25M1D24M3D12M4I136M1I38M3I4M1D2M3D38M1I14M4D42M2I34M3D41M4D40M3I14M1I8M5D41M1D7M2I39M1I24M2D27M1D11M2D45M4D41M5I19M4D4M5I46M4I16M2D25M4I26M4D12M4D24M2I2M1D5M2D54M2I36M4D65M3I22M1D21M2I40M1D51M4D10M5D1M1D42M2D12M3D19M3D2M4I35M2I50M2D4M5D17M1D31M2I32M4D3M5D102M3D59M2D1M5I88M3I28M1I32M3I1M1D86M2I45M1D22M2I4M1I18M5D22M1D4M2D18M4I10M3I21M1I55M3I27M4D9M1I20M3I15M1I91M1D26M3D216M5D11M3I25M1I74M5D21M2D49M5I2M4D12M5I136M2I31M3D1M1D11M5D28M4I23M1I34M1D24M5I4M1I5M5D3M3I55M5I7M4D19M3D29M1D33M1D17M3D35M4I33M5I16M3I9M5I21M4D34M1I26M5D15M2D1M5D16M1D50M5I5M3I3M4I9M5D23M4I13M5D5M3I28M5I28M4I38M2I38M1D5M4D25M4D56M1I24M1D3M3I23M5I124M3D30M4D98M1D57M2I34M1D26M3I16M4I20M3I3M4D19M5I93M1D23M3D5M2D26M1D2M3D11M1D31M1D57M2I2M4I49M5D21M3D28M3D9M4I12M3D25M4D79M5I49M1I14M4I30M2I25M1I47M5I14M4D58M5D40M3I5M4D1M2D60M2D59M2D3M5I1M3D17M2D7M4I52M1D55M5D46M4I22M5D8M2I14M5D1M4D30M2I3M1D48M5D19M5I41M1D17M4D36M2D40M1I12M3I19M1D22M4D11M5I25M1I1M5D96M4D8M2I22M2D67M4I138M4D10M1D37M4D33M5I11M5D31M5D6M4D26M4I21M4D2M3I59M2D63M3I5M5D12M1I9M5I74M1I76M3D45M2I121M1D17M4I1M3D16M2I50M2I25M4D14M1D28M3D72M4I3M1I7M4D33M5I36M4D134M5D29M4D6M4I36M1D48M3I7M1D16M2D5M3D1M3I1M4I100M2I110M4D51M3D5M3D80M4D31M2I3M1I53M5D64M5D19M5I39M4D53M3D62M5D102M1D14M2D28M4I22M3D3M5I24M1D23M4I70M4D8M2D34M2D6M1I18M4D73M4I15M5D14M3I81M5I51M5I9M3D184M4D49M5D22M3I25M4I46M1D16M2I19M1D69M5D92M4I14M4I40M5D153M3D17M5D19M4I48M5D27M2D49M5I11M1D24M4D25M5D4M2I34M2I10M2D2M3D40M4I26M1I3M4D61M4I76M4D9M5I43M2D49M3I24M4I1M3I49M5I37M4I17M4I10M5D131M3I75M2D6M2I25M4D11M5D6M1I13M4D3M4I13M1I10M2I182M3I18M2I1M2I84M5D10M4I138M4I10M4I13M5D5M4I28M2D7M3D184M2I43M2D24M1D7M1I6M1I39M2D24M1I28M5D2M2D7M3D3M3D6M2I51M3I1M1I21M3D22M2I13M4D32M5D5M1D13M2I67M4I5M2I56M5I68M4I59M4D24M3I34M2I106M2I1M5D21M3D24M5I15M5I2M1I42M3I7M4D10M2I16M1D33M1D83M5I10M1D67M4D44M5I13M1I71M2I3M1I21M2I31M3D30M1D66M5I54M1I8M1I3M1D5M4I5M1D8M4D20M2D36M1D53M4I21M1D4M3D22M5I29M4I28M5D23M2D26M4D29M2I57M2D11M4I23M2I7M5I27M3D8M5I7M5D44M5I23M1I18M1D22M1D106M1D28M3I59M1D3M1D16M2D11M1D21M2D14M1I18M5I231M3D31M2I4M2D16M5I143M1D1M2D1M2I20M1I22M4I44M4D5M2D5M4I47M1I12M1D21M3I55M3D18M1D6M1I1M3I29M5I91M1I30M4D5M1I38M4I23M2D2M5D1M3D13M3D12M5I40M5D7M1I2M5D59M1I117M1D120M2D82M5I18M3I2M3D47M4I31M5D9M1D6M3D3M4I1M4I104M4D45M5I3M2I30M3D33M4D100M3D51M2I66M2I10M1D13M2D73M3I9M5I7M2I35M5I86M5I33M5D10M3I1M5D14M3D52M5D54M2I25M1D33M2D81M2I14M2I35M5D15M2I38M3D57M2I47M2I26M5D23M1D73M3D15M4D16M2I3M5D110M2D13M1D45M4D14M2I5M4D34M3D56M4I5M1I52M1I8M3I17M2D5M2D33M3I39M2D93M5D20M3D7M5I38M1I4M3D83M2D7M3D10M1I50M1I49M4I22M1D37M4D38M3I28M5I32M3I10M1I37M1I12M2I15M2D10M5D10M3I56M1D6M2D15M1D40M1D50M4I139M4D10M2I84M2I12M3D13M5I13M3D53M4I12M4D16M5D11M1D43M5I9M5D29M2I95M1D2M4I8M4D80M4D48M4I14M4I15M1D75M4D10M5D1M3I62M5D33M3D146M3I30M1D18M2I20M1D110M1I2M3D88M1D40M1D21M5D147M2I1M5D23M5I25M5I8M2D122M3I21M3D10M3D19M4D3M2D166M3D4M2D34M5I25M1I19M4D16M1D4M4D13M1D3M5D65M1I13M3I108M2I33M5I24M1D1M2D35M5I8M2I92M3I26M5I15M1D60M4I10M2D18M5D34M3I103M4D31M1I29M1I26M2I130M1I65M5D2M3I33M1I64M1D69M2D5M4I31M3I13M3I25M4D22M1I1M2D6M4D65M2D58M3D61M4D39M4D117M2I122M2D41M5D24M4D5M5D24M3I33M2I11M2D8M4D68M5D36M5I17M5I61M2D71M1I28M5I76M1I31M3I10M3I11M5I4M2I73M1I26M2D2M1D11M1D9M3I4M5D49M5I25M2D17M2I77M1D2M3D45M3D4M2I64M1I21M1I102M4I46M3I2M4I39M5D11M3D4M1I37M5D45M4D71M2D25M3I16M1I39M5I40M3D2M2I32M1I80M5D37M3I62M2D27M3D50M3D28M2D18M1I45M4D15M5D2M2D23M3I15M4D50M3D16M4I8M1D20M1I44M3D14M3D12M1I1M1I4M4I6M5I18M5D11M5I19M4D55M1D16M1I8M4D27M1D38M2D28M5D23M4I2M4I88M3D61M1D30M1D9M4I75M2D93M4I48M4D34M3D19M2I40M3D29M5I34M1D20M2D98M5I23M5D30M2D7M1D8M2I7M3I3M5D19M1D6M5D13M2I21M4I18M5I88M1I12M1D67M5D6M1I6M2I83M4D51M3D1M4D56M5D7M5I18M5D97M3D6M5D5M3I8M3I19M2I85M4I35M5D28M4D5M4D14M1I16M3I50M3D20M1I11M4I2M3I37M5I51M4I39M5D16M3D46M5D80M3D1M1D16M2D57M2I13M3D9M1D11M3I20M2I75M1I12M2I32M5D20M5I6M2D32M2D53M4I21M2D35M3D132M3D13M3I17M3I5M3I87M5D55M3I13M2I28M5D8M2I70M4I51M1I20M3D1M5I16M4D21M1I8M5D28M4I22M3I23M1I45M4D27M1I34M2I1M2D19M3I123M3I1M1D84M5I90M5I10M3I5M1D16M3I21M2I50M4D21M4D9M2D65M5D36M3I1M2I13M1D38M2D26M1I38M3D37M2D49M3D48M3D71M5I37M4D73M4I32M3D38M1I55M2D110M2D10M1I14M5I64M4D5M3I48M5D38M4D53M4D31M4D18M5D2M1I19M4D2M2D70M2D7M4I57M4D3M3I1M1I62M3I25M2D125M5D105M3I14M3I7M1I91M4I69M3I29M2I22M4D30M1I56M4D13M3I21M5I5M3I51M5D45M4I10M5D12M3D5M4I36M2I24M2D38M4D4M2D39M5I156M5I12M3I14M2D32M3D21M1D14M5I29M4D52M2D10M1I6M3D35M3D10M3D2M5I51M1I45M2D9M5I33M5I56M4D3M4I26M5I122M2I57M2D25M5I5M2D44M4I94M5D64M1I17M5I55M5D41M5D1M2I2M5D41M3I31M4I18M4D17M1I14M1I37M1D47M4I4M3D5M4I22M5I73M4I129M2I21M1D12M1I1M2D59M2D156M4D21M3I29M1I27M2D24M4I110M3D32M3I90M3I9M3D59M2D25M5D7M1D66M3D5M4I27M3I6M1I45M2D2M2I40M1I2M3I14M5I52M1D6M4I19M3I77M3D22M4I74M5D8M4I12M2I34M1D45M3D78M5D7M3D21M1I31M3D56M2I24M4D78M1I19M2D82M1D63M2I25M1I29M4D25M5D2M2I4M2I30M4I38M5I17M1D16M4D42M5D42M4D16M3I41M1I21M5D91M4D11M4I47M5I11M1I31M3I13M2I52M5I9M1I65M1D40M2D38M2I6M1I6M5I3M1I17M1D16M4D1M4I43M3D1M2I21M2I28M4D42M1I46M2D134M5D6M2I6M1I34M3I54M4D12M2D17M4D98M1D7M4D63M3I112M5D25M2D1M1I10M1I3M3I142M3I23M3I70M3I7M1D4M4D2M3D8M4D9M4I64M3I20M1I28M4D1M3D6M3D32M2I1M5I26M2D12M1D27M2I23M1D9M2D15M3I3M5I1M1I13M2D7M4I9M2D55M2D70M4D6M4D26M5D81M4D2M2I26M1I11M1D121M5I15M4I27M5D49M4D75M1D7M1I21M1I32M2I80M1I2M3I80M1D4M5I1M3D5M2D6M1D33M4I47M1D45M1D3M3I32M1I17M2I21M4D41M3I12M1D2M2I61M5I63M2I37M1D6M5I19M3D18M3I22M4I53M5I26M1I42M1D74M3I40M1I1M1D19M4I70M2D4M3I23M4D35M4I15M5I84M4I24M3I43M2I33M4I31M5I35M4I1M5I6M3I2M5D32M1I7M5D13M4I12M5I30M4D1M3D7M3I9M4D16M4D6M4I24M4I1M2D15M3I1M2D97M2D29M5D17M2I12M5I16M3I19M2I1M3I24M4I1M1D25M3I13M1I58M3D17M1I117M5I20M5D12M1I12M1D39M3D13M3I26M3D44M2D36M2D140M4D5M1D38M1D16M2I31M1D1M3I29M1I22M4I24M5I73M3D40M1I92M1I3M4I156M4D176M5D18M4I12M5I33M3I7M3I83M3D160M3D116M5D85M4I1M3I5M5D69M5I79M5I2M3D65M5D21M5I10M4D67M2D4M1D29M5D45M2D1M5I11M4D11M5D34M2D10M3I38M1D105M1D44M5D11M5I131M5I2M2D25M5I53M1I3M1I79M1I30M5I75M3I36M2D8M3D27M4I3M4D58M2I29M4I29M5I68M5D11M1D1M2D40M2I3M4I5M2D15M4D25M1D44M4I95M2D37M1I12M4I33M3D8M4D51M1D73M3I10M1D40M1D113M4D9M2I42M3I78M3D91M4I35M5D25M1I3M4D14M4I64M3D13M5D43M5I6M2D29M2I18M3I35M5I25M1I41M1I3M4D9M4I25M3D25M1D5M2I47M5I102M1D39M1D37M5D14M4I28M5I40M5I29M5I6M5D7M3I34M3D5M5D6M2D41M2D27M2I5M5D10M3D7M3I35M1I10M3D3M2I16M1D7M2I39M2D9M3I60M1D11M3I9M2I18M5D21M5I12M4D2M3D3M5I30M5D6M2D13M3D115M2D51M1I40M4D37M5I22M5D9M3I3M3I10M5D30M3I3M1D20M4D62M4I38M4I3M4I33M2D17M1I52M2I46M2I37M4D117M2D3M2I54M2D7M1D17M2I51M1D32M5D12M5D67M3D6M1I6M2I3M1D38M3I20M2D23M4I32M3D115M3I16M1D57M4D41M3I39M3D8M3D11M3I31M1I7M3D14M5D16M5I8M2I22M3I20M4D13M5D48M1D5M1I26M3D35M2I7M2I56M4I1M5D19M4D29M1I56M4I8M2D23M5D4M5D5M2I49M5I41M5D47M3I2M4I135M5D34M4I13M5D31M3D32M3D11M4I48M3I60M4D18M2D3M1I3M3I1M4I19M1D54M5D35M3D11M1I37M5I51M4D26M5I3M2D15M3D5M1I44M5I6M3D6M2I34M2I7M3I1M3I11M2I22M2D17M5I13M4I46M5D5M3D63M4I20M3D10M2I114M2D291M2D3M2I52M1I9M5I16M3D10M4I41M5I31M1D94M3D12M1D48M5I12M2I16M4D52M1I30M4I28M4I31M4D19M2D2M4D36M4I5M3I11M2D31M3D238M2I76M4D36M4I86M5D14M1I1M4D41M2D14M2D26M3I6M2I3M1I31M2I61M3I14M3I10M5D25M5D37M3D12M4D21M3D54M5I7M5I53M2D10M2D44M1I46M2I12M5D92M4D13M5I6M2I45M2I16M5I3M3D11M5I31M3I29M1I18M3I30M1D2M3D6M1I57M2D16M2I27M4D1M1I3M1D70M5D83M3I28M3I68M5D16M5I42M2I22M4D36M2I7M3I12M4D15M2I6M3D2M1I71M5D12M2D83M2D15M3D84M4D118M4D14M1I24M1D6M1I12M3D71M4I43M3D36M1I12M2I59M5I34M3D37M1D1M2D38M3I6M2I36M2I20M5D18M4I23M4I57M3I5M3D60M5D82M3I75M5I6M2D11M2D23M2D24M3I17M1I35M4I19M1D8M2D78M2D20M3D5M2I1M1I18M5D8M5D50M2D74M5D6M2I25M3I3M2I20M1I38M4D4M5I27M4I12M3I11M2D69M2D126M2D4M3I4M2I57M5I13M1D58M1D4M3I13M3I20M5I25M3I33M1D34M5I10M2D20M5D50M5I15M1I8M3I27M4D8M3D23M1D4M3D25M3D35M1D58M3I15M2I11M5D20M5D6M5I26M3D39M4D77M2I9M5I17M5I20M5I22M5D5M2D23M1I21M2D14M5D78M4D5M2D49M1D22M3I8M5I19M2D5M1D17M1D5M1D1M4D27M1D3M2I5M2D23M4D16M1I12M2I98M5D67M5D18M1D5M5D24M3I11M4D7M1I7M1D51M5D12M4I16M3I6M1I3M4I60M3I13M4D131M1D32M5I5M4I106M4D5M5I23M3D17M4I69M2D35M2I146M5I2M3D30M4D20M2D28M3D111M3D53M5D2M4D8M4D30M3D37M4I1M3D41M5I32M2I24M2I58M5I30M2D56M1D5M4D63M5I11M2I17M5I16M2I52M1D21M4I5M3D8M1I11M4D29M2D54M3D6M4D60M2D5M2D10M1I23M5I13M3I23M3I5M4D1M4D55M1I4M4I43M3I44M5I61M5D1M2I24M1D55M3I68M3D6M5I4M2D22M3I34M3D2M3D13M2I112M1I65M4D36M3D8M5I38M3I55M4D18M2D136M3D3M2D4M4I5M1I53M4D22M1I33M3I1M3I17M5I62M3D1M3D88M2I3M2D11M5I4M4I16M2D62M4D4M1D25M1D4M3D17M4D45M3D15M2D10M2D15M4I52M1D1M2D2M5I16M2I25M4D64M3I19M4D31M5I5M3D25M2I18M5D53M1I3M3D22M3I3M5I47M3I18M4I15M4D15M1I4M2I2M3I61M1D70M1D3M5D9M5I1M3D18M2I16M1I6M4D31M2I65M2D31M3I9M5I54M2D144M5I42M1I71M1D194M5D2M5I7M5I51M3D11M5I7M2I12M2D19M4I34M2I41M3I55M3D15M4I44M5D3M5I20M4I3M1I69M4D35M5D8M5I2M5I30M1I18M3D68M3D45M1D37M1I141M3D69M4I36M3D4M2D6M5D30M2D2M4D5M2D42M2I35M3D6M5I7M5D35M1D1M3I2M5I34M3I18M1I16M2D3M1D34M1D134M3D33M1D68M4I103M4I15M2D5M4D24M5D7M1I53M3D83M4I27M3I17M1D1M5I16M4I21M5D6M5I32M5I32M1D52M5I5M2D170M4D28M2I38M3D88M2I29M3I4M3D6M3I18M2I37M5I15M4I22M2I9M4D23M5D44M1D22M1I8M1I10M3D6M4D53M3D71M4D3M1I13M1D22M2I10M3I15M1D24M5D27M3D18M5I7M2I4M5D53M2D24M2I14M2I25M3I63M2I16M1D19M1D55M2D24M1I130M1D2M2I4M2D17M1D213M5I60M2I26M3D12M4I22M1D54M5D18M5I52M5I62M3I50M5I68M5D31M4I4M2D17M5I46M4I4M3D32M2D5M3D28M3D8M3I47M4I46M2D94M5I5M4I21M5D9M1D47M3I52M3I32M5D16M5D22M3D55M3D9M1D47M3I20M4D10M4D25M2I11M4I27M5D14M5I14M3D50M4I13M4I16M4I85M5I35M4D62M2D10M2D33M4D11M4D18M4D7M4I157M4I39M3D10M4I3M4I43M3D57M3I14M1D52M5D13M3D39M2D20M5D84M2D25M4D12M5I1M4D60M2I14M3I40M4D5M3I7M4I18M3D21M4D15M3D30M4D26M2D8M5I16M2D35M1D181M2D4M2D35M4D33M1D50M3I42M1I8M2D18M5I33M3D64M4D10M2D30M1I6M4I31M2I89M4D3M3I27M5D53M4I25M5D7M1D4M3D46M5I15M4D76M4I7M2I21M3I48M1D3M3I55M4I20M5I18M5D2M3D41M1I37M4I32M4D4M4D63M3D8M2D10M2D24M1I25M5D15M5I24M1D24M1I7M1I34M4D22M4D20M5D111M3D107M2D13M5D20M2I20M3D7M1D4M2I5M1I12M2D6M3D57M1D6M1D24M3D78M5I49M5D11M3I8M5D24M4D95M5D9M1I28M3D17M1D7M4D85M4D25M2D69M4D37M2D32M5D23M3D5M3D10M4D1M4D27M5I21M5I9M2D64M3D34M2I19M1D27M1I20M4D45M1I27M4D14M5D16M2D3M5D32M1D27M5D3M4D9M5I38M4D23M2I11M3D2M2D17M3D59M4D4M1I59M4I15M5I25M5I8M5D120M5D6M3D1M3D75M1D9M3D1M2I9M4D18M4D3M4D10M1I24M5I170M3I52M3D16M5D40M4D9M2D103M2D55M4I50M3D12M4D11M1I10M3D70M5D43M4D32M1D31M3D26M5D1M5D38M2I21M1I25M2I32M3D4M2D4M5D25M4I5M4I7M1D65M5D4M2D17M3D8M3I87M2I16M4D24M2I107M2I1M4I6M2I37M5D75M4I86M4D94M4D37M4I27M3I17M2D4M1I73M2D5M3D24M4D13M5D29M1D18M1I2M2D45M2I9M5I39M1I17M1D47M3D116M3I10M1I62M3D6M5I12M2D56M4D71M1D14M5I1M5D1M4I6M2D82M3I16M4D26M1I43M1I39M3D24M5D15M1D6M2D1M3D3M1I34M2D58M2I2M2D9M1D29M3D10M2I2M5I15M1I25M2D2M5D18M4I18M3I4M4D10M5I9M3D6M2D55M4D4M5I6M1I43M5D14M5I24M5D1M3I14M2D57M3D15M1I5M4D57M4D44M1D29M1D44M3I14M2D53M1D7M3I10M4D108M3I10M1D2M3I33M2D18M2D50M4D23M2I70M5D3M2D14M3I4M1D23M2D12M3D23M2D22M2D12M2I55M3D16M1D27M2I10M1I36M3I6M3D84M1D333M1D6M2D2M4D4M2D12M1I6M5D22M3I7M4I15M1I9M5D3M2D30M5D14M4I24M4D5M3I35M3I11M4I15M2I21M3D80M4I12M4D24M1D1M4D39M2I36M4D8M3D2M2I11M2D5M3I59M5D47M1I1M2D44M5I4M4D16M3D48M5I75M2D54M1I75M1I75M2I23M5D4M3I101M5D30M2I44M2I17M4I39M2I68M2D3M4I22M3I13M1I42M3D40M1D5M1D11M3D21M1D2M5I3M5D13M3I35M4I21M3D1M3I34M4D49M4D15M1I52M2I12M3D13M3D26M1D37M3I100M5D10M2D14M5I31M1I61M3I2M2D34M4D43M4D4M1D15M1I44M4I16M4D7M1I17M1D13M4I14M1I49M2D10M2I64M1D36M5D65M5D34M4D33M3I108M1I75M3I37M4D5M2D69M5I72M3D2M3I5M3I50M2D2M3D18M2I26M5I1M2I11M3D45M3I63M1I3M3I42M4D33M1D35M2D56M4I29M1D9M4D2M1I10M5D22M1I42M5D74M4D9M1I39M5I36M2I6M2I52M4D24M1I2M2I28M1I19M1I39M1D52M1I26M2D26M4I35M1D8M2I19M1D55M2D108M2I30M3D9M2D14M5I9M5I8M5D10M3I4M2D2M3D51M4I13M3I1M2I59M4I22M1D3M5I35M1D33M3D5M2I17M3I13M2D15M5D25M4D39M3I54M3I30M5I63M5I21M4I19M3I6M1I60M4D6M1D46M1I14M5D46M2I72M1D30M3D27M3I31M1I48M3D2M2D12M3D14M2D7M2D8M4I19M4I32M2D36M5D37M3I29M1I4M5I14M4I2M5I7M2D3M5I20M3D30M2D27M5D14M4D19M3I21M3D11M1D32M3I84M1D28M5I23M1D24M3I3M3D1M3D74M5D12M1D12M4D14M4I16M1D32M5I28M3D2M2I45M3I76M1I13M3I64M1I20M5D2M1I19M3I1M2I31M3D15M4I34M1D97M1I53M3D142M2D61M2I16M5D25M3D21M1D43M2D17M1I12M1I17M3D21M1D53M4D83M5I24M1D49M3D5M3I44M1I51M3D3M5I5M3I23M1I30M4D15M1I39M2D14M3D36M2D7M2I60M1D14M5D5M1I22M3D49M5D10M4I12M3D3M4D16M3D27M1D41M4D42M2D9M5D74M5I76M3I2M1I11M4I27M2D20M5I72M2D23M5D30M4D113M3I6M4I10M5I41M5I62M1D4M3I24M2I28M4D17M5I40M5D11M1I50M3D8M2I18M3D36M1I26M1I1M4I29M5D13M2I51M2I34M3D33M3I4M1I13M1D41M1D9M2D87M4I11M3D26M2I20M4I29M3I1M5D68M4D5M2D88M5I23M3D18M4I25M1D13M2D71M5D41M5I43M4I44M3D30M3I2M1I4M4I4M2D6M5D40M3D13M1I44M2D49M3D9M1I34M4D38M1D15M3I35M4I20M4I36M1I43M4D7M5I74M5D44M4I2M2D2M3D46M1I1M2D21M3D24M1D192M3I9M2I1M1I29M3D14M4D9M2I16M2D10M2D28M3I59M2I49M2I5M2D21M2I89M1I89M3D39M1D8M2D91M2D6M2I6M2D18M1D60M4I8M3D1M2D1M2D11M2I74M5I67M5I63M4D14M1D14M3D31M4D3M2D22M2I22M3D22M5I8M4I10M4I84M4I40M5D19M2D6M4I4M4D31M3D18M2I14M5D1M1I11M5I27M2D4M1D144M5I59M1I19M5D26M5D24M3D12M2I16M4I58M1D20M4D23M3D19M3I43M2D5M2I18M5D39M2I39M2I36M4D22M3D20M3D34M4I58M3I26M4I4M3I16M5I59M4I22M5I125M3D55M3I7M3I27M1D2M2D31M1I4M2D17M2D17M4I21M2D33M5D1M4D22M1I29M4I1M4D185M4I31M3I3M2D9M3I12M3D1M2I8M3I84M4D89M3D32M2I4M2I6M2D13M1I62M2D43M5D37M1D1M3D11M5I20M5D7M5D41M4I13M4D6M5I2M1D13M1D10M4D10M4D59M4I1M3I11M5I5M4I21M2I11M1D77M5D59M4I21M2I11M5I3M4D40M1I29M3I14M1D13M5I3M3D10M2I3M5I2M5I8M1D30M3I50M2I10M2D60M1I100M5I63M4D10M2I70M1D69M1I51M3D39M3D40M2D11M3D61M4I6M1D21M2I10M4D9M4D2M1I6M1I105M1D8M4I94M5D38M2D15M2D3M4D66M3I25M1I43M4I6M5D4M5I1M4D18M2D22M3I57M1I15M4I16M5D4M4I7M4D28M1D7M5D14M4D11M1D72M1D27M1D32M1D3M4D47M2I52M4I1M2I1M3I12M1I29M2I6M3D20M4D51M2I7M1D1M1D24M4D54M4D11M5D15M5I59M1I1M5I55M5D41M5I8M3D9M2D9M3D26M3I36M4D24M2D3M1I28M3D3M3D5M2D12M1I19M5D21M1D11M5D2M1D1M2I18M1I162M3D31M5D36M5I4M5D17M5D36M3D81M2I5M1I41M4D23M2I12M5I23M4I18M2I14M4D34M1D6M5I2M5D15M3I9M4D97M3I84M4D85M1D47M1D23M4I4M2D16M5I15M3D33M3I113M2I38M5D16M2D26M3D1M5D1M1I4M3D3M5D36M5I16M5I29M2I32M2D22M2D20M3I15M1D4M3D99M5I2M5D8M2I45M4D9M2D24M4I137M2I37M1D19M5D7M2I6M1I26M1D82M2I52M3I40M2I2M3I75M3I49M1I52M1I10M1I39M3D5M4I19M5D29M3I39M2D39M3D38M2D158M5D22M2D32M3I32M3D26M1I3M1D1M4I73M3I128M4D24M1I12M1D17M3D44M4D41M4D13M3D53M4I51M4I4M5I25M1I30M3I11M1I91M1D27M2D1M5D5M1I10M2I51M5I35M2I33M1I29M5I42M2D16M4D63M4D50M1D40M4I8M1I36M3D4M3D35M3I7M5I3M5D75M2D12M1I2M5I13M2D14M1D10M4I17M2D5M1I15M4D49M5I43M4D23M4D24M4D19M4D62M4I105M5D39M2D59M3D14M3I13M3D13M3D46M3D38M5I57M2I36M5D26M4I3M4I19M3I19M4I16M5D30M1D14M3I57M3I35M3D28M4D15M2I3M1I47M5D21M2D26M5D25M3D9M5I3M4I18M1D10M1I17M1I20M1I18M5I2M2D47M1D7M2D5M1I13M5D3M1I61M5I13M4I54M3I71M5D30M1D17M5D116M2I10M5D12M2I47M4D40M3D40M1D11M3I30M2I52M4D65M1D16M3I2M1I31M4I53M4D15M3I17M3I90M1D27M2D18M5I29M2I53M2D17M4I14M4D4M5D37M4I45M1I5M2D17M2D1M3I12M5I15M5D12M3D44M2D60M3I48M5D60M5D60M3I17M2I13M1D4M1I6M3I30M4I35M5I9M2D23M4D76M3D23M4I95M3I23M3D33M3D21M5I15M5I22M4D15M2D25M5I3M3I31M1I25M4D1M4I31M3I1M4I41M4D7M3I43M2D9M5D25M2I31M4I26M1I5M2D14M2I57M2I10M3D116M2I90M1I2M5D36M4I1M5D8M3D20M3I33M5I7M1I32M5D6M5I4M2I8M2I23M5I6M3I9M1I13M5I81M1I60M2I25M5D46M2D65M5I22M1D13M4D11M1I93M2D87M4D9M1I39M4D30M4D88M4I46M4D46M3I23M1D12M3D28M4I20M2D1M5I24M5D49M4D5M1I22M1I52M5D41M5I8M4I49M1D15M1D34M1I16M4D5M2D1M5I19M5D20M5D10M1D27M2D17M5I37M3D12M3D8M1D71M2D45M4I2M3I38M4I68M3D24M1D22M5I4M4I160M1I6M1D49M4D36M1D10M2I25M4I19M2D34M4I42M3I27M3I6M2D76M4I58M3I63M4D36M5I21M1I22M2I5M1I12M3D124M5I11M5D33M5I28M4D12M4I92M4I90M3D41M5I126M3I9M5D55M4D61M2D51M4D33M5D25M1D6M3I10M2I35M3D7M1I4M3I28M2I12M4I41M4D25M1I74M3I13M4I20M2D1M1I5M5D28M4I113M4D42M3I6M5I11M2D18M5D18M5D36M3D50M5I45M1I11M3D5M2I44M2I16M3I108M4D12M4D28M2D6M2D126M3I16M1I17M2D7M2I50M5I1M2D33M3I18M3I31M4I11M1D69M3I23M1I87M3D2M5D9M1I21M4D49M3D109M1D9M2D36M1I43M1I178M2D152M1D2M5I11M3D96M4D56M2I38M2D6M4I56M5D22M2I16M3I8M4D3M3D38M5D47M4I130M2D67M3I118M3I117M3D4M3I19M4D1M5I12M1I59M5I43M2D9M1I67M2I61M5D6M4I33M4I27M3D3M4D4M4D53M1D64M1I3M2I3M2I49M4I21M2I11M5I30M1D1M5D3M1D7M5I47M5I34M2I14M2I18M1D7M2I8M4I9M1I8M2I15M2D52M5I17M3D70M2I12M1I13M4D107M2D7M5D15M4I4M3I15M2D100M3D10M4I27M2I15M3D20M1D17M1I31M5D106M3I20M4I87M4I24M2I6M2D52M3I12M4D41M1D58M3I4M3D30M5I49M4I19M4I61M5I15M3I60M3D7M1I21M1D37M4I14M3D71M4D50M2I10M2I7M2I6M1I3M3D29M3I6M4D7M4I93M2D29M5I46M3D21M2I77M3I43M2I12M3D60M2I1M2I146M2I2M2D8M4D27M1D11M3I57M4D24M1I18M3I28M5D40M5I19M2I29M4I33M4D4M5D66M5D3M5I31M2D5M4I49M5D9M2I72M2D24M2I11M5D2M3D92M5I51M5D56M2I7M5I11M5I39M2I21M3I41M1I11M2D48M3D83M3I12M1I8M1D1M3I17M3D36M3D35M2D33M1D24M4D1M5D4M4D22M5I36M1I10M5I43M3I100M4I14M2D76M4I2M5D49M5I130M1D38M2D1M2D25M2I14M4I10M5I20M1D35M5I46M1I59M5D17M2I44M2D8M4I12M5I3M5D134M2I19M2D20M5D6M5D19M3I6M5I5M4D71M1D3M1I17M3D50M3I18M1I1M3D37M1D21M1I10M1D44M1D1M3I19M2D3M2D6M5D17M3I39M1D3M5I4M3D11M5I1M2D42M2I43M3I60M5I38M1D30M3D8M1D27M2I39M3I24M1D23M5I9M3D13M2I31M2I33M3D6M4I53M4D8M1D15M5D9M3I12M4I17M3D4M1I9M4D23M4D14M4D80M2I7M5I55M1I23M5I3M3D5M4I5M1I19M2D12M5I46M1I25M5I13M3D61M3I2M5I13M2I15M4D8M4D20M4D36M4D21M4I75M5I43M5D23M5I38M4I78M4I33M2I13M3I82M1I17M1I1M5I1M5I42M3D7M1I37M5I2M4D22M5I108M2I5M4I10M4I32M1D1M2I41M3D84M3I16M2D19M2I13M2I13M3D20M4D12M2I3M1I23M3D23M2D2M5D2M2I27M4I21M1D31M4D15M1D69M4D2M4I4M5D136M4D18M1I7M3D104M5I13M2I32M3D58M4I17M5D6M3I42M5D33M5I22M4I32M1I17M2I23M5I8M1D23M3I44M3D20M4D20M5D91M1D12M2D13M1D25M4D34M3I10M2I26M5D9M3D2M5I25M2I109M2D27M2I18M1I34M3D31M2I94M3I15M4D17M3I12M2I2M3D9M2I114M2I6M2I11M5I33M2D47M4D3M3I33M2D11M2D10M5D11M3D11M3D28M1I55M2I38M3D11M4I81M4D12M2I9M5D14M3D47M1I25M2D3M5D4M3I15M4I8M5D59M3D45M4I94M1I6M3I2M1I1M2D4M2D19M2D1M1D18M5I6M3D23M1I9M2D18M1I26M4D32M1I4M1D23M4D35M3I4M4I37M1I30M5D22M3I136M3D84M2D21M5D71M3I54M5D83M1I13M3D8M4D30M3D31M3I49M1D16M4D14M1I4M5I18M5D30M2D18M4I79M1D1M1D48M2I16M1I23M4I25M4I30M1D8M2I21M5I17M3D60M1D41M1D1M5D54M3I44M5I64M2I36M5I16M5D4M2D49M3D41M4I7M5D14M3D6M1D13M1I2M2D19M3D1M5D4M1I41M1I25M3I21M2D23M5D48M5I53M5I1M2D13M5I1M4I20M1D25M5D2M1I124M4I4M2D17M2I58M4I70M3D30M5I47M3D35M5I2M2I35M5D20M4D24M5I8M3I30M4D23M3D61M4I9M3I19M4D15M2D98M1I44M3D7M5D18M1D4M4I58M2D23M2I2M1I6M5D51M5I9M5D61M3I12M2D60M4D10M2I10M4I64M1I1M1I23M1I16M4D5M3I12M1D24M4D7M5I78M2I27M4I40M5D27M5D16M4D7M1I9M4I30M5I31M3I28M4D15M4D55M1I3M5I5M5D8M4I70M4I17M2I45M4I33M5D20M4I39M4I16M1I22M5D167M4D69M2D4M1D9M5I19M3I103M2I4M2I44M1D6M1I106M2I9M5I37M3I7M4D1M2I60M1I21M5D176M2D36M1I26M5D1M5D4M4D48M3D70M5D79M5I12M3I6M5D21M2I4M4D32M4I64M1I102M3D4M1I2M4I40M5D27M3D8M1I13M4I81M3D45M3I10M4I78M5I71M2D94M3I9M1I49M4D18M2D66M3D1M2D62M3I9M5I14M2D24M4D3M5I20M5I7M5D4M3I1M5D20M2I7M4D35M1D13M5I1M1D43M5I63M1D21M5I24M5I30M4D41M4D18M5D40M4D22M1I67M5I28M5D41M2D108M3I3M5D13M1I118M5I5M4D21M2D27M3D35M5I35M3I56M1I13M5I10M4D26M4D87M5D6M5D3M2I1M3I1M2I21M5D154M3D26M5D3M1D7M4I41M3D40M3D48M4D27M2I5M4I18M5I25M4I14M3I23M5D67M4D8M5D16M3I75M4D6M2I75M1I53M3D82M3D64M1I23M5D59M1D57M3D1M3I75M5D4M2D56M1I32M1D9M3I25M1I73M1D9M2I1M5I36M5I28M5I39M3D44M3D9M4I4M4I2M1I30M3I14M4I77M4D31M3I51M5I19M2D41M2I20M5I8M1D2M2D6M2D66M1D2M5I23M1D11M5I39M2D94M1I5M1I84M2I45M1I3M2D38M4D64M4D2M5D24M5D15M5I57M1I134M4D29M5D9M4D16M2D16M2I90M5D8M2I23M2I1M4I33M3I98M4I23M2I17M3D18M2I64M1D28M4I40M1D14M5D7M5D29M1I38M4D8M4I115M1D100M1D24M3I4M4D10M5I26M5I10M5I12M5I83M2I99M5D55M3I10M2I16M2I14M4D85M5D25M5D5M3D13M1D9M5I35M1D9M4D12M2D50M4D99M3I7M4D26M3I77M3I6M4I46M1I19M4I32M4I52M5I25M1I20M4D27M5I33M1D46M5I41M1I1M4I43M3I25M4D81M1I24M5D14M4D7M3D67M2I59M4I1M1D20M2I17M1D37M4I118M5I24M3D32M1I1M2D18M5D2M3I5M5I11M1D34M1D17M4I62M5I72M4I9M5D3M4I8M4I35M2D3M5D30M3D27M2I8M4D4M3I46M1D5M4I2M2I3M2D3M5D123M1I40M1D35M5I4M4I116M5D13M3D90M5I36M5I35M4I89M1I11M5D33M3D46M5D15M5D96M4D33M4D30M3D15M2I7M4D6M3I23M2D68M1D47M5D55M3D19M5D21M3I19M5D33M5D17M3D31M2D13M3I17M5I17M1I30M1D26M4D51M4I10M5I80M2I34M4I2M2I16M2D1M5I26M2D15M5I39M1D15M5D79M3I3M4D7M4I6M3I90M1D33M5I73M5I7M2I70M5D44M1I59M2D27M3D14M5I23M3D7M2D14M3I115M1I24M3D36M2I27M1I2M1D150M4I2M5I115M3I2M1D23M4I1M5D14M3D33M4D27M4D21M2D1M2D5M4I40M5D2M2I8M2I131M2D27M1D60M1D43M4D33M2I18M2D2M1I3M2D10M5D2M1D3M4I13M5I9M2D62M2I3M4I19M5D74M1I81M3D15M2I7M3I7M1I42M5I34M5D39M1D100M4D28M5I12M2D24M3I24M5I14M3I13M5I15M2D15M2D12M1I7M2D65M1I8M5D13M1I49M1D49M5I43M4I20M5I26M5D90M4I25M5I27M4D12M2I22M3I100M2D1M5I38M4D47M2D4M1D39M1I27M4D35M5D44M3D16M1D4M3D35M5I3M1I16M5I27M5I27M4D19M3D55M5D6M4D15M4D7M1I20M1I5M1I2M2I15M5I23M2D29M5D19M2D7M3D70M5D54M3D33M1I58M1I24M2I12M5D16M3D49M1I51M1D4M5I6M1I46M2I161M3I4M1D6M2D15M4I15M4I11M2I104M2D3M2I6M3D37M3I3M1I12M3D28M2I1M3D13M3I29M3I17M2I24M5D4M2D15M4D22M5I3M1D14M4I6M4D22M3D50M2D34M5I5M5I39M3I24M5D16M5I20M2I31M3I20M4D39M1D41M5I29M5D9M4I13M2I8M3I46M2I59M5D17M1I36M3D7M5I45M3D9M4D22M4I40M5I1M3I2M3D8M5I10M3D18M5D64M2I26M3D87M2D57M2D65M1D42M3I40M2D20M2I100M5D17M4D10M3I15M1D2M3I50M4I20M1I9M3I5M2D8M4D94M5I74M3I55M2D24M3I66M5D24M2D47M4I23M3D28M4I40M5I44M5I17M3D37M5D41M4I74M2I88M1D3M1I9M4D29M4D15M5D22M1I18M5D42M4I37M1D20M2I17M2D38M4I51M2I75M3I72M5D15M1D7M1I3M2D5M1I44M3I47M3I12M1D44M1D67M4D97M5D20M2D12M1D32M2I10M4D10M3D1M5I18M2D30M3D58M2D6M1D13M2D54M1I34M5I14M4D7M2I10M3D7M1D11M5I36M4D10M1I23M4D70M4I19M2D80M4D17M3D5M5I16M5D27M4D7M3D4M4D9M2D10M5I48M1I37M3D9M1I28M5I6M3D3M1D33M5I64M5D24M2I22M4D11M2I9M3D12M2D45M4I14M2D15M2D7M1D1M4D92M5I34M4I82M1I1M3I21M1I25M2I102M1D4M3I33M3D71M1D25M5D53M3D39M5D43M5D5M5D17M3I51M1I19M1D53M3I28M1D93M3I34M3I12M2I19M2I60M2I21M5I12M3D21M5I37M1I43M2D20M1D20M2I5M3I3M5D26M2I37M3I77M1I12M1I2M1D28M3I1M1D7M4D24M3D46M3D24M3D1M5D37M3I39M4D11M2I34M1I184M3D76M5I14M1D6M2D26M3I21M4I4M4D71M1I20M5D7M5I144M3I19M1I2M2D12M1I126M5D13M3D56M3I25M2I6M1I3M5I3M5D17M4I10M3D35M5D6M5I55M1D34M4D29M5I6M2D20M4I32M3D9M5I20M3I30M2D51M3D15M3I46M2D45M1D1M1D34M4I12M5D9M2I2M5I18M2D8M3D29M5D59M2I38M2I17M2I119M5D9M4I22M2D10M5D36M4I4M3D22M2D11M1I43M4D86M4D25M1D1M1D29M2D131M4I3M5D5M3D67M1I16M2D13M5I19M4I29M1I59M5D48M4I64M2I33M3I10M3D14M3I19M2I4M4D12M2D14M5D100M1I10M2D25M5I30M4D54M5D66M3I4M1I7M4I5M1I55M1I7M2D99M4I43M5I39M1I39M3I30M5I18M2D20M2D14M3D6M3D103M4I21M3D1M3I38M4D12M2D7M5I56M4D10M3D18M5D57M1I3M2I11M2D6M4D70M2D16M4D44M5I62M3I155M2D14M1D21M1D46M3I3M4D47M5I2M4I13M1D13M3D16M5I116M5I4M2D64M4I95M5I43M1D5M3D7M2I2M5I91M2I60M4D15M5I24M5D14M4D7M3D10M2D18M1D16M3I43M4D15M3D2M2I3M1I146M1D40M4I28M5I10M1I86M5I31M2I72M5D30M4D124M4D52M4I20M3I30M2D23M1D4M4D1M3D11M5I8M5D17M3D2M4I24M4I1M1D41M1D16M1I131M2D12M1I21M1D4M2I1M1I31M2D104M2I41M2D18M2D13M4D26M1I55M1I22M1D17M5D41M1D51M3I27M2I59M4I4M1D21M5D12M5I19M1I6M3I1M4I22M5D17M4I5M3I5M4I25M2I8M1I6M2I40M5I6M3D45M4I8M3I38M4D4M4D24M5I1M2D23M5D12M4D13M5I26M3D13M5I36M3I11M4I93M3D51M1I14M5D16M3I86M1D35M5D44M4D138M1I30M4D14M3I10M1I45M5I23M1D25M3I4M5D28M2D29M2I10M1I4M4I10M2I15M3D21M3I71M4I24M3I18M5D53M2D19M2D1M1D7M4I5M2I15M1D42M2I1M5I20M4D2M3I3M5I58M2I1M3D23M1D39M5I46M1I2M2I58M3I25M1D32M5I54M5I8M1D17M1D24M5D121M2I19M4I39M3D52M5D2M1D16M3D10M1I4M2I33M4D2M1D59M5D59M3I4M5I1M5D10M4I43M4D41M1I4M1I92M2D82M5D2M2D38M3D22M5I32M1I39M5D8M4I3M4I11M3D16M2D35M3I50M2D38M3D50M2I10M5D40M2I11M1D22M2D4M1D1M3I48M5I54M3D6M4D8M1I8M3I13M4I100M3I4M3D23M5I21M1I1M1I4M3I46M4I13M4D29M2I14M1D18M5D17M3D6M3I67M4I13M3I13M5D76M4D4M4I86M1D2M4I42M5D41M5D7M3I6M1I25M4D41M2D38M1I4M4D100M2I25M5I12M1D1M4D2M1I49M4D31M1I169M5D2M3I4M5D26M3D32M4D10M2I14M1D36M1I53M1I19M2D22M1I100M2I9M5I11M5I36M5D13M2D41M5D49M2D12M3I107M2I24M5I7M2I24M3I39M5D6M1I74M4I1M1D13M3D50M4I39M2I11M4D19M1D32M3I1M2I8M2D4M4I32M4D1M4I5M4I18M5D9M1I18M3D102M1D18M3D4M1I36M3I6M5I10M4D31M5D2M5I4M2D14M5I36M3I40M4I51M4I11M3D31M4I2M1I3M4I4M4I36M1I53M3D9M2I47M2I36M4D11M3I18M3D8M3D10M1D36M2I21M3I91M3D75M1D40M5I90M4I11M5I92M2I51M3I117M2D39M2I3M3D33M3I4M1I13M3I116M5D12M5I41M5I30M3D38M2D12M4D35M3D16M2I56M1I10M4I72M5I13M1I3M5I18M1I28M5D131M2I45M1D21M2I27M5I17M4I22M3D4M5D14M2I1M3D12M4I42M2D123M5D5M1D167M4D27M3D99M5I23M1D22M4D15M3I25M4D34M3D18M2I12M1I19M2D58M4I61M2I11M2D9M5I12M2D28M2D24M5I1M2I24M5I45M4D5M2I7M1D41M4I3M5D76M5D33M2I80M5I23M1I98M1D17M5I49M3I10M4D14M5I55M3I3M3D73M2D5M2D51M3I94M4I74M1I127M5I52M3I59M2D12M5I77M5D21M2D7M3D11M2I46M1I41M3I18M5I16M4D6M1I19M1I3M1D112M3I79M3D21M3I30M2I13M4I25M1D18M3D11M1I94M4D21M1D8M2I12M4D8M3I17M5D46M4I67M2I50M4D24M1D1M1D11M1I36M4D72M5I131M2D2M5D22M5I11M1I1M3I38M2I40M1I56M2I13M2I93M3D99M3I16M3I3M1I3M4I20M2I37M2I18M4D54M4D11M1I23M5I10M2I32M2I1M3I5M3D30M4I13M5D11M4D6M4D46M5D13M4D16M1I28M2I94M1D22M2I56M4I54M5D52M1D10M5D32M1D7M4D25M3I16M1I2M2D3M3I14M2D6M4I94M5D1M3D5M5I8M5I3M2D118M1D82M3I3M2D9M3D8M1I5M1D9M4I2M5D3M1D96M4D18M2I11M4I27M3I2M4I101M4I10M3I3M2D31M2I14M2D22M3I6M1I28M4D10M3D31M2D10M5D31M1I132M1I11M3I14M1I15M5D4M5D11M5D48M4D38M2D43M5D3M1D71M2D9M2D7M3I93M5D24M5I15M1I4M4D32M5D23M3D12M3I21M4D9M1D216M3I61M3D8M3D14M1D17M5I53M3D10M3D54M3D63M5D22M5I22M5D35M1D58M2D46M4D10M1I5M5D10M2D13M5I3M4I8M5I1M5I29M4I1M4I12M5D64M4I3M1D6M1D21M5I34M2D45M2I37M3D20M3I1M3I15M3I5M1D3M2D10M2D1M3I15M4I83M1I52M4I7M1D3M4D40M5I22M4D26M5I7M5D76M3D28M1D16M1I24M3I85M4I4M3D87M3I38M3I57M1D6M4D117M5D6M2I1M2D74M1I13M2D100M5D4M4D7M3D2M1I6M3I58M5I17M1D13M4I9M3D8M1I112M3D5M2D92M5I39M5I12M2I1M3I154M2D1M5D3M5I18M4D28M4I46M1D45M5I81M5I25M3I40M4I5M2D6M3D11M3D87M4I4M5D5M4I83M1I40M1I22M4I6M5D14M1D10M2I45M5I93M4I12M4I36M5I63M2I20M4D49M4I7M3D25M3D1M5D3M2D35M4D5M2D41M1I12M1D17M5I151M4I59M5I52M4I8M3D28M3I15M1D15M3I2M5I19M4D1M1D11M3I13M4I41M3D20M2I53M1D4M4D11M5I74M5D11M3I11M2I71M3D24M5I66M2I37M1I3M1I48M3I23M5I2M1D8M4I43M3D28M2D8M1I17M2D11M4D12M1I36M2D66M2D9M2D66M4I27M2I12M1D87M5I56M1D2M3I5M2I59M2D141M4D27M4I59M4D24M3I51M2I7M3I15M2D11M2I2M2D467M4D4M2I12M3D2M2D36M5D41M3D62M5I9M1D7M3I25M2D32M2I8M5D3M5D5M2I100M4I46M4D18M1D24M2I23M3I42M4I131M2D9M1I2M2I22M5I42M4I91M3I47M1I42M1I6M3I46M1I71M5D56M3D76M3D68M1D88M5D17M5D19M5D112M5I23M1I43M4I19M3D32M3I35M3I2M4I37M4I2M2D18M3D33M1I4M4I23M4I40M1I13M4D7M5D29M3I31M3I3M4D6M1I4M1D59M5D16M1I22M3D13M3I90M1I7M1D2M1D35M5I6M1D26M3I25M4I15M5I5M1D16M3I28M5D16M1I51M5D71M2I28M4I26M2I12M5I1M3D2M3D64M5I12M4I73M1I21M3D34M2D39M4D27M3D6M5D74M2D18M5D6M4D75M4I1M2I16M1I14M4I77M1D2M5I38M5I23M2I20M3I31M3D92M3D5M2I44M1D23M1I32M4D6M1I4M3I10M1I9M5D1M3D16M1I36M4I2M5I10M2D5M5D32M1D18M4I87M3D147M2I7M4D47M2D7M1D8M5I13M3I13M4I22M4I40M3D70M1D110M4D21M1D39M2I56M1D7M2I122M2D9M1D73M3I18M1I24M1D53M5I21M1I19M5D19M5D56M4I87M3I7M3D17M2I73M4I22M2I12M5D6M2I35M4D43M4D155M2I19M4D22M3D15M4I38M5D5M2I81M2I46M5I12M3D3M1I67M5I13M1I51M1D100M2D34M5D13M2D2M4D28M1D38M3I29M3I38M3D16M5D4M2D100M5I22M4D30M4D13M4I23M2I14M5I42M5I95M2D17M5I27M3D19M5D19M4I19M1I21M4D39M1I10M2I6M5D5M4I13M1D10M2D108M1D7M2D112M2D3M5I34M3D9M1I3M4I39M3I1M2D10M3D21M5I20M2D13M3D19M5I34M1I10M3D13M3D19M1D76M3I17M1I11M1I31M1I9M5D90M5D23M5I8M4D8M1D19M2I24M3D70M3D12M5D33M2I51M5I80M3I29M4D80M4D10M3I56M1I20M3D118M2I37M1D32M2D2M3I41M4I31M5D1M4D6M4D23M1D7M4I1M4D27M3D9M5I13M4I5M5I11M4D15M3I1M5D24M5D55M5I79M2D26M5D25M4D5M2D1M4I13M4D25M5I24M4D39M4I76M5D2M1I28M1I55M4D67M4D4M1I23M5I6M3I16M3I19M2I73M2I38M4I21M4D6M1I28M3D37M2D17M5I31M5D52M1D5M2I19M4D19M1D114M5D53M4D12M3D56M1I4M3I21M4I33M2D30M2D48M5D44M2I20M2I49M5D49M5D16M1I12M1D10M2D1M3I28M1I20M4D40M5I56M2I54M2I123M3I17M5I27M1I30M5I40M3I12M4I11M1I33M3I17M4D2M5I22M4I9M4I15M2I21M4I23M5D22M4D33M5I38M1D13M5D2M3I10M1I5M3D54M1D96M1D9M3D30M2D36M3D40M2D93M1D88M2D16M4D72M3I31M2I4M1D3M4I7M5D2M1D4M4I186M4I18M4D25M3D20M1D4M1I24M4I20M2I6M2D30M2I2M3I21M5D79M2D77M1D13M1I23M2D11M1I16M4D9M3D14M5I19M2I59M1D5M1I9M2I25M4I24M4D6M2D38M3D47M4D3M2I8M3D28M1D17M5D45M4D30M5D12M1I24M1I1M4I4M1D16M5I114M4D14M1I43M1D21M2I55M1D42M5I4M1D59M5I31M4I27M4I3M5D6M4I2M2D1M3D40M5I8M2D4M3D119M2I18M5I24M5I2M2I9M3D93M2I24M5D1M1I78M4I19M1I144M3I1M3I10M5D20M3I6M5I4M1D35M2D19M1I17M4I25M3D9M1D36M3D7M2I66M3D37M3D8M4I64M5I19M2D8M1I14M1D16M2D17M3I2M1I16M1D29M5I32M3I129M1D29M2I78M3D8M5I113M1I8M1D109M1I11M5I1M4D33M5I51M5D35M4D30M2D96M3D44M5I10M3D18M5D14M2I56M1D15M2D8M3D5M2D7M4I6M4I13M5I15M4D5M3I46M5I18M3I66M2D6M4D7M3D20M5D33M5I12M4I42M4I24M4D8M5D4M4D23M4D1M5I8M2I1M4I19M2D82M5I41M3I9M3I18M1I10M1D1M1I2M2I3M2D47M3I6M1D29M5D109M4D28M4I22M4D141M5D38M1I17M2D37M1I26M1I15M4I24M1D24M5I40M5D14M3I45M1I1M5I32M1D6M3I14M4D12M5I53M3D42M2D71M4I13M1D22M5D58M3D24M2D53M2D23M3I12M4D8M2I10M1D12M2I17M1I86M5D141M1I17M5I69M3I12M4D1M4D3M2D127M5D48M2D81M4I54M2I17M3I33M2D69M3D33M5I12M4I22M4D61M4I32M1I29M5I32M3I3M1D54M4D67M4I20M2I42M1I8M4I2M4I6M5D14M4I73M1D61M1I9M2D15M3D41M4I37M4I28M1I47M4D76M5I23M4D106M5D19M1D19M2D73M4I29M2I17M5I21M1D79M1I14M3I39M3I32M2I11M5D7M5I5M1I5M5I29M3I7M3I57M1I2M3D28M1D8M2D18M1I75M4D130M1D91M3D24M2I29M1I23M2I69M3D17M3I29M2I7M2I14M3I71M5D30M5D24M1D11M2I11M1D14M5D31M3D35M4I18M3D11M4I32M5D39M2I46M4D6M4D3M4D53M5I17M5I4M3D19M4D42M4D10M1D4M1D41M1D11M3D47M5I10M5D22M2D11M4I14M4D73M3I33M1D3M5I60M1I46M3I18M3I34M1I26M5D5M4D55M2D16M4D16M5I3M3D23M4I6M2I11M5D84M4I13M4D8M4I18M1D17M1D17M4I25M5I8M2D60M4D26M4I47M5I16M3I18M4D1M1I12M3I1M3I59M5D68M4I20M5I18M1D17M1D12M4I22M1I14M4D30M1D125M2I6M4I3M4I6M2I26M4I61M2I114M3D47M5I10M1D30M3I28M2I21M3D17M1I83M1D27M2I65M4D1M3D1M3D136M3I28M3D3M1D53M4D10M4I16M2D30M5I47M4D3M4I72M2D29M4D25M1I28M4D19M5I22M3I5M3D40M5D52M4I116M5I49M2D15M1I5M3D24M2I15M3D65M5I15M1I37M5D2M1D13M3D26M3D49M1D40M2D6M5D6M1D6M2D3M2D1M2I4M2D193M3D21M1D28M5D31M5I45M5I24M2I71M2D5M4D70M2D25M3D16M1I12M3D10M1I100M5D44M4D45M2D31M5I20M1D21M3I5M1D18M2D29M1I3M4I81M4D31M2I14M2I10M1I49M2D9M1D14M1D9M3I17M5I69M4I57M3I33M1D11M3I69M1I63M5I21M2I57M5D67M3D11M1I62M4D23M3D29M1I13M4D28M3D34M3I15M1D80M5I96M1I35M3I32M5D8M1D16M3D43M1D24M4I20M4I30M4I1M4D19M5D11M5I60M5I78M1I41M2I17M1D3M4I4M4I32M1I58M1D2M4D40M2I12M1D38M3I119M4D46M4I4M1I8M5I26M3D61M4I32M2D99M1D15M1I8M2I52M2D4M4D63M2I38M1D7M3I10M2D22M1D36M3D81M3D1M2I6M5D2M5D9M5I19M5D11M2D53M1I20M4I31M2D13M5I11M2D27M3I12M3D15M2D129M5I2M1D43M3D16M4D11M2I46M3I39M2D2M1I49M4I36M4I6M3D23M3D27M4D24M2D8M3I5M5D28M1D9M3D40M1D43M5I69M3D10M2I20M1I3M1I8M4D33M4D56M2D17M2D50M2D65M4I26M5I38M5I30M5D23M1D39M4D4M2I4M2D44M5D126M3I13M5I20M4I14M1I52M4I5M3I64M4D30M5D16M3I42M1I5M1D1M1I10M4I15M4I22M5D2M3I14M5D36M3D49M3D4M2I5M5I36M2D53M3D28M2I12M4I66M1D89M1D28M1D74M3I23M2I113M3D38M5I34M3I33M5I61M2I27M4D18M1I15M1D19M5D51M5D2M4I21M1D27M2D19M4D236M2D37M1D3M2I4M2I87M3D12M5D1M4I58M5I5M1I7M5D20M4I5M4D32M4D4M4I9M2I67M3D57M2D17M3D4M2D8M4I46M2I1M4I81M2I17M1D50M5I48M1I53M1I58M4D22M1D38M2I32M5I1M2D86M4D24M4I64M2D13M3D12M3D10M4I3M2D33M2I5M2D15M3D21M4D2M1I8M5I3M5D7M3I4M4D12M2I48M2I57M5I81M2I8M4I61M4I58M4D17M2I70M2D88M2D22M5D89M5D15M4I1M1D27M2I36M5D18M3D11M4I13M1D9M4D25M2D40M2D69M1D58M1I43M3I104M4D61M5I7M4D17M5I3M4D5M4D10M3I97M4I24M1I31M3I177M2I11M1I4M5D38M4I61M5D39M2I13M3I53M2D5M5D6M4I19M1I12M5D11M2D25M3D78M4I20M4I44M5I79M2I10M1I8M2I23M2I3M1I48M2D36M4I13M5I20M5D54M2I15M3I11M1D23M2D29M1I44M2I13M1I67M1D23M3I22M3D23M1D5M3D39M5D16M5D32M5D21M3D29M2D178M3I59M1D65M1D123M2I124M4D68M3D4M1I2M4I27M3I5M5D25M2I1M4I19M4I8M5I39M5I41M1I4M3D39M4D28M2I2M2D9M4D23M3D29M2D34M2D6M3I10M5D17M1I18M1I62M1I8M1I3M1I35M1I17M4D169M2I78M1I42M5D40M5D29M4I138M5D44M5I9M3D13M1D47M4D138M3D38M1D32M4I38M5I4M1D16M1D20M1I34M5D13M2D22M4D21M4I3M2D15M4I16M2D7M4I38M5I52M1I11M1I30M5D56M2D27M2D49M4D15M1I10M2D89M2I11M4I28M4I15M2D41M1I93M5D12M3D7M2D5M1I10M2D26M3D11M5I17M4D29M5I9M5D18M4D69M3D4M2I35M4D29M2I2M1D75M4I54M1D1M4I18M4I2M5I57M1I9M1D43M1D3M1D86M2D74M1D42M2D11M4I7M1D39M3D23M3I9M4I2M3I64M4D21M1D26M2D4M2I3M2I11M1D61M3D49M5D6M1I4M3I27M3I41M5I48M5D1M2D3M1I134M2D11M5I6M4I58M4D45M3D48M3I71M5I40M4D22M2I57M5D14M4D6M5D3M3D55M2D30M5I6M4I4M4I1M3I21M3D22M2I79M5D15M4D14M1I11M5D62M4D53M5I10M1D41M4D13M1I114M3D38M2I1M4I35M1D70M3D22M2D70M3I32M2D4M2D53M5D18M2D16M1I23M4I12M3I51M4I9M2D12M4I58M3D2M1I8M1I18M3I33M3D29M2I75M2I18M2D9M2I129M3I19M1D13M5D20M3D2M2I16M5D3M2I3M5I57M3D134M4D21M5D7M3I22M3I68M3D16M2I20M2D2M2D1M2D16M2I53M3I6M4I25M1D54M3D11M4D64M1D3M5I77M4I131M4I52M4I1M2I3M4I49M3D27M2I17M3I42M5D50M1I12M2I37M4D2M1D10M2D83M3I3M5I20M4I29M3I52M4I5M1I1M5I49M2D31M1I2M3I21M3I15M4D21M5I24M3D34M4D2M4D65M2I82M5D46M4D31M2I77M2I8M2D15M1I8M5D3M4I5M2I29M1D13M5I8M5I30M1D1M1D8M2I76M1D61M5D2M2D24M1D28M5I13M2D124M4D59M1D35M4I29M5I21M4I59M5D7M4D15M3D28M5D58M2D17M1D8M2I52M5I165M4I80M2D33M5I45M5I10M5D16M1D171M4D14M4D13M1D5M5D31M3I8M5I32M5D12M4D3M1D16M4I15M4D79M5D20M3I27M5D54M3D4M2I11M2D102M2D31M1I71M4I48M3I47M3D86M5I7M1D27M5I3M2D2M2D2M1D7M4I70M4I27M5D77M5D61M2I51M2D13M5I29M3D10M3I96M4I5M4I27M5I36M5I4M4I10M3D47M5D9M3D19M4I20M4D27M3I3M2I85M1I40M4I1M4I23M4D1M4I140M3D17M1D63M5D17M3D19M2I4M3I44M3I9M4I16M3D7M2D49M5I47M4D5M2I3M3I44M2I2M2I45M4I55M4I33M1D44M2I90M5I5M2I8M4I113M4D62M1D31M3D78M3D30M3I9M2I174M3D24M3I6M3D7M4I31M4I14M3D24M5I15M4I45M2D6M1I29M5D3M5I3M5I44M3D96M4D9M4D102M3I7M4I5M1I67M1I32M4D17M4I37M4I6M3D2M4I2M2I46M3I37M3I107M2D11M4I65M4I94M5I20M1I4M2I33M4D56M2I1M1I40M3I5M1D73M4D103M2D21M4D9M5I20M1D29M2D2M4D12M4I40M4D7M2D21M3D29M4D11M2D25M1I17M3I61M5D22M4I39M3I16M2I25M5I62M2D10M1I26M1I7M5D22M5I41M2D3M4D28M5D4M3I9M1I46M2I9M3I7M1I10M4D6M5I123M1D55M5I14M1D22M1I11M1I5M3I23M1I40M2D21M2I8M3D9M2D21M3I8M2D2M3I95M1I3M2I8M1D22M3I13M1D22M3I93M3D125M3D6M1I57M2D36M2I44M3I28M5I26M3D40M2I10M5D12M3I66M5I28M4I15M3I12M4D65M1D10M3D5M4I47M3D9M5I18M5D75M3D7M5D21M4I104M2D57M2I22M1I3M1D39M3I25M1I15M3D1M1I116M2D58M1I40M3I5M2I65M1D80M2D6M3D5M5I1M2D3M5D6M2I15M1I116M4I2M4D83M2I2M2D60M4D5M1I12M1I29M1D1M3I50M2D110M5I102M2D17M2D44M4D146M4I20M5D25M5D47M2D2M4I34M4I24M4D34M3I39M2D78M2D100M3I16M1D13M4D24M3I1M4D84M3I38M2I21M1D28M1D3M4I55M3D46M2I35M4I71M2I4M3D40M4D48M5D14M4D20M2I31M3I5M3I4M5I91M4I61M3D48M5I1M5I70M2I38M1D38M5I11M3I20M5I26M1I3M4D81M5I28M4I73M3I21M2I5M5I69M4I9M2D39M5I4M2I37M1D48M4D81M1D6M3D20M3D4M3D19M4D4M2D11M3D10M4D72M1D112M4I25M4D1M5D43M2D17M1I12M3I8M4I16M5D9M2D165M1D33M3D9M1D14M2I61M1D2M3D24M5I10M5D7M4I3M3D17M1I7M5D33M2D30M2I7M2I14M3D19M2D44M5D14M4I85M2I7M2D8M4I6M5D2M2I29M1I56M2D15M3I55M1I1M2I19M3D21M2I21M2D9M2D38M5D13M1D13M3D35M3D18M4I13M1D49M5I5M2I8M2I3M3D78M5I84M3D53M1I51M5D10M2I14M4D15M5I7M2D2M1D96M2D43M3D24M3D3M2I12M4I5M4D7M4I22M1D4M3D23M2D3M3D9M1D25M3I46M4D42M4I6M3I55M2I59M3I3M4D20M5I77M1D24M4D35M1D41M5D2M1D74M5I10M4D28M3D175M3I2M5I26M5I25M3I5M1D2M1D4M2I32M1I15M1D63M5D56M5D2M4D68M2I5M1D57M1I12M4I27M3I27M2I16M1I24M5D4M1D35M5I69M2D26M4I48M1I1M1D47M1D18M5D25M1I6M2D5M3I1M2I4M4I38M4D1M1I23M4D27M1D10M5D45M4I65M4I21M5D7M1D18M3I9M1I12M1D10M5I22M5D21M1I23M1I12M1D10M1I20M5D6M1D1M5D25M2I20M1I25M3D7M4D75M1D50M1I8M3D2M3D5M1I7M2I26M1D59M2I11M3I38M1D41M2D7M1D28M2I16M5D9M2I1M1I84M2D27M5D2M5D26M1I31M4D26M1D12M5D81M2I28M3I49M1D22M3D8M2I2M3D25M1D52M5D20M4I2M4D13M2I8M2I1M5I28M3D22M1I18M2I54M5D47M3D2M2I18M2D34M4I9M1I2M4I149M5D149M4D2M4I55M4I60M5D22M3I60M3I38M3I27M3I2M1D30M5D53M4D12M2I17M5I9M2I27M3D19M2D178M1I17M4D7M3D2M2D14M3I31M4D38M2D61M4I62M4I16M3D20M1I7M1D20M1D46M2D47M2I76M5I21M1D26M1D27M3I1M1I18M2I7M2I15M2I12M2D10M5D19M4D6M3D35M2I1M5I76M3I17M1D5M1I26M4D36M3D8M3I71M5D48M4I4M2I19M1I95M4D67M5I14M3D69M4I15M2I6M1D13M1D34M1D124M4D6M5I54M5I54M5D39M5I1M3I4M2I14M2I12M4I3M1I5M2D3M5I74M1I1M2D21M2I6M1I39M1I137M4I38M5I14M5I30M5D27M2D10M4I12M2D43M1D34M3I44M5I25M3D122M4D15M4I32M2I23M3D19M1D50M5I63M3I11M2D20M2I16M5I9M1I16M1D91M1I11M1D10M2I38M2I45M4I22M2D16M5I19M3I56M1I154M1I18M5D25M3I14M2I25M4I2M1I29M3D49M4D45M4I6M3I18M1D32M4D7M4D11M5D24M1D58M5I8M1I4M4D15M5D61M1I5M4D27M4I5M5D18M4D1M4D11M3D31M4I2M5D12M5D9M5D26M1D9M5D10M4D31M4D117M5D49M4D115M3I1M2I66M3I15M3I8M4D9M5D17M4D95M3D29M1D14M1D4M1D11M2I23M1D11M5I12M2D9M5I12M5I8M5D148M4I10M4D10M3D38M2D124M5D27M1I29M2D8M3D151M3D73M4I2M3I112M4D20M4I20M5I25M4D156M3I49M4I36M5I14M4I5M4D10M5D4M5D31M5I7M5D14M2D59M1D32M5D42M4D2M5I7M1I64M2I2M1D20M5D20M5I20M2I41M5D68M4D14M5D15M3D41M4D13M2I14M5I57M2D3M1I130M5D54M3D154M2I7M4I54M2D76M5I1M1I15M4D38M4I4M2I14M1D15M5D7M3D37M1D25M1D14M4I168M5I11M5D1M5I24M4D38M1I69M1I12M5D67M1I99M3D6M5I18M4I28M3I137M2I17M5I46M1I91M2D1M2I72M5D20M1I12M4D7M1D41M5I30M4I133M1I67M4D208M1D78M3I101M4D27M4I28M3I67M3D2M1I2M1I75M3I4M5D3M2I57M3I40M1I54M4D38M1D16M4D49M3D108M5I44M2D8M3I2M4I26M2D47M3D26M5I66M5D4M3D27M3D6M3I3M2D45M1I18M4D23M4I43M2D2M3I46M5I114M3D81M1D43M3I4M2D42M3I18M4D25M5I55M1I21M2D19M5D15M4I16M3D2M3D84M3D25M2I39M5D1M5I4M1D25M4D20M3I9M4D34M1D4M1D19M5D87M4D14M5D102M3D58M3D64M5I80M2D13M4D56M4I4M4D29M1D55M4D15M4D42M5D51M1D14M3I19M4I7M4I3M2I10M4D9M1D19M3I11M5D54M1D3M1D23M4I26M3I89M3D124M3I1M5D1M1D39M1D7M4I81M2I12M5I58M1D13M2D23M1I25M2I27M2D5M3D3M1I1M3I20M4D53M2I22M5D67M5I36M1D16M2D25M5D5M1I12M5I64M5D70M1I49M1D65M4I14M5I15M5I21M4D24M1I75M5I10M1I4M4D52M4D4M5I2M3D95M4D21M5D40M4D78M2I39M2D46M5D3M1D5M2I16M4I20M5I94M1I44M3I203M1D22M5D4M2D27M2D19M4I7M3I32M5D31M1D2M2D33M4I38M3I26M5I19M5I26M3I2M3D5M2I2M3I4M3D70M3I13M3I16M1I8M5D9M2D15M4D17M3I58M5I40M2I23M1I20M2I16M3I15M1D74M2I41M1I6M3I2M2D51M2D17M2I48M5I32M5D6M4D36M4I23M2I20M3D10M5I25M2I4M2D47M2D38M3I1M4I41M1I39M1I56M3D25M4I8M2I7M2I8M3I10M3I27M5D7M1I18M3D38M3I41M3D108M5I7M2I12M3I71M5I18M2I131M3D72M4D4M4D28M4D11M4I15M1D27M5I3M4D11M4I6M5D5M1I36M3I2M2I10M3I61M3I80M4I4M3D3M4I10M3I82M3D8M3D1M4I76M3I31M5I122M1D27M3I9M3I17M1I45M3I4M4D14M3D20M3I18M3D1M1I60M2D113M1D39M1I10M4I18M1I12M2I16M4I11M3D11M4I6M1I1M3I2M3D42M1D29M5D30M1D29M5I44M4I38M3D7M4D44M5I46M4D28M3I19M3I30M1I8M4D1M4D30M5D106M3I7M1I6M5D9M3D24M3D7M4D39M1D27M4D97M2I36M1D14M2I4M5I19M1D44M3D58M1I4M4I20M5I34M2I39M5I31M1I41M4D85M3I13M4I52M3D34M3I5M3D41M3D102M5I40M4I16M2D105M4I80M3D36M3D19M3I40M2I79M1I46M2D83M5I14M2I23M5I17M3D53M2D19M5D12M3I28M2I25M4I18M2D66M4I35M5I5M4D27M5D29M1D7M4I15M5I3M3D6M3D53M5I203M3D32M2D36M4I22M4I36M1I8M2D90M5I24M4I18M3I11M4I8M5D118M1D44M4D2M4D23M3D20M3D37M4I4M3I17M1I22M1D95M3D1M5D37M3D34M2D39M1I20M4D19M2I28M3D2M5I74M2D8M3I81M5D1M3D15M3I6M1I43M5D7M1D2M1I14M1I49M4D8M3D3M4D4M1D49M2D80M4D200M1I5M2I36M3I75M3I13M5D57M1I43M5I4M5D3M1D23M1I10M1D6M5I10M2D50M2D40M3D80M5D8M5I20M1I72M4I4M2I94M4D61M4I1M4I8M1I47M5D3M5I2M4D119M1I46M5D13M2I6M3D2M1I7M3D40M3I34M1D14M1D19M1I33M2D34M1D55M2I1M2I5M5D15M3D56M5I32M5I4M2D31M1D23M2D120M3I123M5I23M3I18M5D47M2I80M3D15M2I35M2D8M5I12M1D34M3D46M5D17M1D77M3I7M2D32M2D19M5D28M1I24M2I24M2I3M4I4M2I3M2I58M4D1M4D16M4I24M5D29M1I5M1I27M2D34M4D24M4D36M1D74M3I53M2I61M5I23M4I22M1I156M5I3M1D10M4I5M3I67M2I2M2D21M1I25M5I46M1I62M1I118M1I66M4D43M4I1M1I40M1D13M1I44M1I2M2I3M2I40M4I8M4D2M2D52M3D7M4I52M3I17M2I2M3D8M4I68M4I37M4I75M3I59M4D14M2D24M1I5M3I26M3I31M1D11M3I72M5I8M1D22M5I10M1D84M1D46M2I74M2I7M3I51M3D4M3D8M4I32M1I6M3D20M2D30M4I1M4I14M4I52M3D85M3D16M1D6M2D31M4I46M5D11M4D24M5I8M2I3M5D77M5I31M1D28M2I2M3I31M4I10M3D4M5D7M4D10M3I9M4I37M5I3M4D4M3I15M3I14M4D25M2I25M4D9M3I4M4D36M4D52M4D2M5D15M5D7M3I27M5D29M1D36M1D57M2D13M3I16M4I27M2I15M4D19M4D75M5I3M3I6M1I22M5I3M4I6M4D29M1D63M3D43M3D45M3D3M4I14M5D121M3D12M3I4M5I23M4I17M1I9M1I6M5I46M3D35M4D19M4D14M4D87M3D15M1I31M4I11M2I28M2I41M3D8M3I4M3I12M1I7M3I27M3I8M1I34M5I45M2D49M2D13M5D7M5I6M4I3M5D6M4I134M3D9M3I18M4I29M5I10M2D141M3D31M5I5M5D41M1I43M5D2M4D15M2D7M3D55M5I84M4I50M4D14M5D2M4D39M5I27M3I20M1I4M4I19M5I114M3D31M1D33M3I19M2D6M4I23M4I68M1D56M3D9M1I117M5D80M4D48M1I47M4D36M3I3M2D44M5D25M3D16M4D3M4I138M3I37M1I26M5I35M1I4M2D3M5D30M2D11M1D2M3D101M3I46M4D1M4I13M4I46M3D6M3I16M4D26M2D4M4D3M1D19M1I30M3D31M1D16M1D5M5I36M4D15M5I15M4I23M1I14M1I60M3I3M2D32M1D4M2D83M1D23M5I36M1D33M1I9M3I4M5I18M5D14M1I16M3D8M1I77M3I28M1I15M1D65M4D6M3D9M2I10M4I8M2D112M5D45M2I18M4I72M5I6M2D178M1D19M2I38M2D105M2D15M1D44M4D6M4I11M4I154M1D29M3D3M1I14M1I80M3I21M3I5M2I54M1I1M1I75M5I3M1D53M4I15M1D17M5I173M4I40M4I65M5I4M5I25M3D23M5I15M4I37M2D34M4I22M4D8M4D26M5I13M3D29M1I106M3D4M5I1M3D19M1D50M3D58M2I33M4D13M1D29M3D87M1I17M2D61M3D126M4I4M1I7M2D17M5D62M3I48M3D11M5D14M5D65M2D33M5D3M4D7M2I31M2D122M2D37M3D101M3D55M2I19M3D23M5D19M4D19M3D40M2I56M4I2M3I35M5I83M1I13M4I1M2D52M1I1M5I21M5I11M2D39M4I5M5I26M5I60M3I4M1I47M5I10M4D66M1I58M2D14M4D39M4D28M3I11M2D35M1I20M3D6M4I42M2D9M1D2M1I8M1D33M4D36M3I103M1D81M5I4M1D29M1I4M1D125M5D5M4D42M2I1M3I3M5I6M5I12M1I10M2I49M5I3M4D89M5I16M3D2M2D16M1I59M4D3M2I25M4I13M1D4M2D41M2D17M4I15M5I26M1D3M3D54M5D2M1D61M4I10M4D7M1D9M3I83M2I47M3D58M1I8M1I70M5I11M3I78M4D32M5I13M5I29M2I26M4D12M4I74M2D28M5I40M4D39M5I32M1D10M4D7M2I13M5I27M1D5M2I6M3I18M5D39M4D51M4D32M4I25M5D66M1I52M3I10M3D15M1I12M2I2M3D28M3D126M1I33M3I19M5D48M4I3M3D14M5D44M1D116M1D7M5I116M4D42M3D38M4I8M4I11M2I5M5D8M1D19M5I49M1D9M1D17M1I8M2D19M3D10M3D12M2D49M2I10M1D56M3D56M3D29M5I39M3I21M3I16M1D18M1I39M2D17M1D22M2I7M1D37M2D37M2D2M3I42M1I5M4I2M5I49M3D21M4D18M2I2M3D11M5D155M1I69M2I57M2D53M3I59M4I41M5D23M2I35M1D47M2I20M3I3M1I8M3D39M4I47M5D18M5I55M1D7M4I15M1I28M5D65M1D95M1D10M1I13M2I13M5I2M3D38M2D24M5I38M4D2M4I33M3I7M4I21M4I38M5I60M3I5M2D82M1D13M4I18M5D32M2D4M4D2M1I21M1D80M5D69M5D88M1D10M2D11M4I8M1D77M2D13M1D24M1D3M4I10M2D9M2D70M1D54M5D6M5D66M1D52M2D9M1D9M1I1M1I25M2I35M4D2M1I50M4D56M5D4M3D5M4D15M1I13M1I19M5D92M5D3M1D7M1D67M4I14M1I132M1I11M1D53M5I59M2I1M4I9M2I24M5D28M4D32M1I17M3D28M1I31M2I95M2D83M4I10M3I16M1I44M5I135M3I13M5I36M3I10M3I23M4I27M1D35M3I21M4I65M1D18M1I4M5I11M2D39M3D1M3I11M1D60M3D84M3D30M3I65M4D4M3D45M2I9M5I12M4D3M2I10M1I1M2I61M2D25M3D14M1I37M4D25M1I14M1D13M3I7M4D21M4D6M1D23M5D26M1I31M1I81M2D7M1D28M2I21M1D82M3I31M1D52M4I2M1I48M1D16M3D4M5I105M5I13M3I12M3D52M1D90M4I37M5I76M5I60M5I8M3I31M4D17M1I12M5I45M1I3M4D13M2D15M4I96M2D15M4D25M4I1M4D2M1D99M3D42M1I3M1D11M2D38M2D29M2I5M2D46M4I37M4D16M1I80M3D16M1D8M1I28M3I29M5I28M3D65M3D27M5D66M5I40M4I27M3D20M1I48M2I35M4I41M3I20M5I8M1D38M5D27M1D107M1I2M1D31M2D25M5D32M2I123M4I14M5I25M4D17M1D4M4D6M5D36M3D16M1D32M1I60M1I25M4I13M5D61M3I14M4D11M3I48M4I30M3I1M5D66M1I32M3D1M2D36M3I32M3I10M2I2M5I13M3I65M1I24M4I13M3D8M3I22M4D3M4I80M3D21M3I10M5I16M1D28M1D42M2I6M3D3M3D31M5D1M5I1M1D17M3D82M3I12M4D59M2D55M3I1M5I40M2D38M2D29M1I20M5I51M5I16M4D19M2I6M5D9M2D50M1I31M3I166M3D32M2I8M1D28M4D3M2I9M2I5M3D47M1I12M1D114M2D4M2I80M2I12M2I34M5I26M2I2M2D27M2D39M5D14M1I39M3I9M5D14M5I2M3I2M4D13M1D21M3D43M2I3M3I45M2D90M3I10M3I16M2I2M5D17M2D26M4D25M5I8M1D101M2I12M5I39M1D103M4D65M4I22M4D51M4I50M3D20M2I13M2I37M1D121M1D19M4D15M1I28M1D36M3I40M3D13M4I56M3D62M4I48M4D14M1I3M4D32M3D126M1D16M4D3M3I50M2D11M3I12M5I33M2I11M1I16M4D73M3I30M4I57M3D22M3I8M3D2M2D32M3I48M5D82M3D14M3D10M1D8M2D36M5D7M3I10M3I33M5D21M3D23M3I31M2I6M5I9M2D12M5D40M2I14M3I65M4D6M3I20M1I1M2I29M2D116M2I60M2I25M2D1M2I48M5I18M2D8M3D19M4D8M3D16M3I38M5I27M1I76M5D39M1I1M1I24M4D77M2D63M4D14M4D34M5D31M5D26M4D24M5I57M2D43M2I41M3I6M5D10M5I115M2D14M5D22M5D45M2D15M2I3M1I4M1D8M3I12M4D3M4I93M2D13M1I30M4D20M5D7M3I50M5D68M4D18M1D16M5D20M2I29M5I24M2I5M3I30M2D2M2I46M3D13M2I8M3D1M5D22M2I19M4D5M1I46M2D30M2D51M2I62M3D98M5D83M1D28M4D43M1I25M2D13M4I1M2D18M3I22M2D51M3D92M2D8M3I49M5I47M3I54M4I2M4I5M5D30M2I17M3D11M2I14M2D39M1D5M4D68M4I9M3I52M4D19M4D5M2D83M3D53M3D26M1D38M2I60M3D51M2D7M3D25M3D35M3I11M2I111M4D4M4D5M5I149M1I169M2I3M4D14M3D49M1I10M2D34M2D30M5D6M1I40M4I18M1D63M1I21M4D98M1I3M1D2M4D6M2D1M2I16M5I4M4I66M3I19M2I5M1D14M4I74M3I100M2I5M2I15M1D49M4I64M4I21M4D54M1D17M4D18M4I62M3D11M2I3M2I20M4I2M3D176M1D67M4D84M3I23M2I15M4D62M4I21M3I38M2I29M1I25M5I38M5D57M3I1M2I50M1D49M4I6M4D171M2I40M4I12M3I93M2I111M3I4M3D1M1D26M4D6M4I7M3D6M3D52M3D11M3D14M2I74M5I25M5D1M4D48M2D2M1D132M1I104M4I5M4D10M5D27M1D17M2I13M1I80M2D28M2D67M3I81M4I30M4D20M5D1M2I18M5I73M2D10M3I19M2I7M4I24M5I3M2D15M3D40M4I61M4I9M1D18M3I4M1D2M4I27M5I50M4I50M1D8M2I3M1D129M5D12M2I58M2I1M3D6M3I27M5D139M3D6M2I30M2D60M5I10M2I15M1D27M3I2M1I80M3D27M1I25M4D49M2I2M4D25M1D93M4D31M4I19M2I15M4D22M2D23M2I31M5I7M5D3M1I82M5I2M3I6M2D8M2D5M1I29M5I31M5D9M2I70M5I8M3D29M3D9M3D41M3D116M1I36M2I42M2D63M1I14M2I14M2D13M3I57M4I93M3I83M2I33M5I18M4I14M3D8M4D11M1D19M2D49M1I1M3D6M4I7M4D32M3D1M5D3M3D85M4D30M4D47M5D11M2I25M4D18M5I35M3D8M4D9M3D31M4D19M1D17M2I14M3I54M2D6M4D2M4D17M1I34M4I14M4D33M1D30M4D27M3D99M1D111M4I119M1D33M3I154M5I20M3I38M5I18M1D20M3I28M3D6M4I4M5D8M4I23M2D1M1D19M1I1M5I17M3I44M4I52M3D28M4D23M5I69M4I41M5D108M1D36M5D66M5D10M4I34M4D16M2D7M1D35M1D45M5D22M5D68M4D18M2I37M3D12M3I17M1I3M2D36M4I1M4I43M4D9M4D59M2D21M1I9M3I26M3I9M2I5M5D4M2D43M4I38M2D27M3D2M2I72M1D2M4D131M1I22M1I51M2D5M1D5M4I14M3D3M5I102M5I86M4D73M1I22M3D28M4I52M1D44M3I26M1D55M3D114M2D4M4D72M3I19M2D32M3I12M3I44M1D140M4I40M5D16M1D7M4I12M1D13M5D12M5I21M1I8M2I9M4I1M5D86M4D94M1I4M3D34M2D53M2D8M3D3M5D3M2D20M1I9M3I29M3D72M4D79M4D7M1D31M5D2M1I34M3D36M1D56M5I32M5D48M4D15M3I19M3D1M2D24M2I17M2I47M4D44M2I12M1I114M4I34M1I21M5D52M2I47M1D4M3I61M5D10M4I12M3D40M1I14M3I27M4D1M3I27M3I4M4I4M2D73M3I76M1D80M1I68M2I40M4I88M3D22M5I4M1D20M2D10M5D11M5D7M4I64M4I50M2D4M1I24M5I13M5D41M4I18M1D8M4D1M1D5M2D23M4D25M5I43M3I10M5D8M1I7M2I15M5D9M2D1M1D38M3D121M4D28M1D117M2D24M3D104M5I17M1I30M3I18M4I6M1D39M3D20M2I11M1I58M3D46M2I36M3I9M3D61M3I13M2D40M5D3M3I6M1I16M3I47M4I18M2I12M4I44M1I25M4I24M3D10M1D14M2I72M1D7M4D46M1D16M3I49M2I33M4I2M3I1M1I4M4D20M3I23M5I8M5D30M4D51M1I3M3D58M4I9M3D15M5I61M2I46M4I4M5D49M4I7M3D15M2I3M2I26M2I4M3I75M1I122M2I19M2I56M1I5M5D88M4D18M3D61M4I9M2D15M1D4M2D43M1D11M5I2M4I51M3D7M1D11M4D77M4I15M2I4M2D19M5D2M5D54M4D11M2I69M1I7M1I13M5D37M1I35M5D7M4D37M5D20M4I35M1I69M2D43M4I94M5I5M4I43M3D35M4D58M3D49M3I18M2D65M3I76M2D18M2I45M1D51M2I11M1D13M1D16M2I8M1D29M3D3M1I57M1I6M2D28M3D144M3I28M4D5M5I115M1I12M5I1M3I88M1I3M1I21M5I10M5D40M3D95M1I60M2D2M2D6M3I28M3D10M5I45M1I14M1D3M2D6M5D60M5D63M2D19M1D66M2I48M2D55M3I109M4D8M1D56M3I10M2D60M2D163M3D21M4I92M2D13M5D7M5D21M5D11M1I12M1I98M1I7M4D14M1I14M4I50M1I89M1D8M4I14M2I38M3I17M2I37M5I22M4I14M1I33M2D23M2I33M2I35M5I20M1D36M2D7M5D58M3I91M5I2M1I1M2D21M1I15M1I9M5D17M1D5M4I36M5I15M3I6M1I20M4D46M2D10M2D78M4I91M1I61M1D63M3D15M4D98M1I6M5D24M4I75M5D3M4D18M2D102M5I23M5I4M3I7M3I82M3I65M2D113M2D10M1I73M5I45M5I32M4I29M2I17M1D14M1I6M5I50M3D7M4I10M4I25M3D31M3D3M5D1M3I35M5D18M4D35M3I58M2I64M5D2M2I15M2D162M1I22M2D5M3I23M1I70M1I18M2D80M4D31M5D58M5D26M5I74M3D27M2I19M2D21M4I27M4I27M4I8M2D26M4D146M1I38M4D11M4D32M3D4M2I19M1I19M3D27M5I20M5I18M1D12M2D69M5D16M2D95M5D78M2D2M5I31M4D16M1D1M3D23M2D21M1D26M3D32M1D7M4D30M4I66M1D28M4I71M4D7M2D32M1I43M1I11M5I3M4I1M5I59M5I32M1D61M5D97M3I1M3D3M2D20M2I19M3I3M2D2M3D19M3I2M3D12M3D36M4I55M5I1M3D62M4I114M5D115M3D78M5D7M2D71M4D20M5D46M4I25M2I29M2I62M1I38M4I1M1I93M5D31M4I33M3I34M2I28M4I10M4I24M5D13M5D47M5D3M5I60M3D2M3I1M4I30M4I25M5D7M5D5M4D70M2D63M5I12M2D57M1D23M4D8M5D51M3D17M4D6M1I26M3I43M5I15M1I40M4D27M5I2M1I44M1I5M1D5M1I21M3D2M3I17M2I13M4D8M3I16M3D19M5D137M2I46M2I7M4I11M4I10M5D1M2D41M4I28M4D33M1I61M4D13M4D33M3I3M2I8M3I49M4D9M1I4M3I15M1D18M3I11M1I4M2D21M5I41M4I13M3I108M3I68M5I64M4D6M4I10M1D17M1I6M5D46M1D64M2I2M2I12M4D72M2D21M1I18M1I44M4D13M3D30M3I16M1D2M2I84M3I13M4D8M2I74M1I19M4I16M4D50M1D7M2D73M3I16M2I11M5D33M5I3M4D85M2D64M2D26M1I10M5I9M5I10M1D25M3D7M4I34M1D24M5D6M4D92M3I23M5I52M3D12M2I11M5I2M5I75M1I2M3I17M3D54M3I59M2D23M3D9M4D20M4I5M3D71M1I14M2D18M3I8M2I17M1D44M4D36M5I11M3I19M1D19M1D2M3I26M1D43M3D19M1I122M4I30M2I23M5D59M1I4M5D23M5I1M3D2M2I62M4D13M4I93M5I27M3D41M5D16M3I22M5I42M2D24M1D62M4D12M1D16M4I19M1D32M3D39M3I2M1I53M4I2M2D6M1I17M2D43M4I2M5D80M1D51M2I39M1I22M1I39M4I30M3D9M4I12M4D10M1I126M5I120M4D49M2I8M5D42M5D32M5I11M3I22M3D35M4I15M3D50M4I1M2I10M4I12M3D20M5D113M3I10M5I3M4D1M3I51M1D11M3I7M5D28M2I14M3I23M1D4M1D8M4D52M2D2M2D35M4D18M5D19M2I68M3D37M5I11M1I6M1I16M1I7M3D38M3D4M4D4M3I9M2I24M2I20M1D10M1D3M5I15M5D17M5I63M5I3M2D97M1I32M1D60M4I65M2D2M1I1M3I8M5D17M4I7M4I27M1I16M1I5M5D81M1I43M4D9M5I14M5I31M5D10M3D24M1I12M5I1M4I26M2I54M4I15M1D27M2I23M2I10M5I90M3I29M3D14M5I10M5D11M5I21M5I21M4D62M5I5M3I21M5D25M5D40M2I24M5D6M1I8M4D54M5I40M5D1M1D3M5I218M4D7M1I1M5D3M5D1M5D11M1I108M5D2M5D1M5I11M5D72M1I50M2D36M1D2M1D56M1D6M5D38M3I16M4I5M3I25M2I2M5I48M1D19M3D32M1D14M4I3M2D25M2I26M4D6M2D4M2I5M2I74M5I6M2I12M2D38M1D1M5D3M3D16M2D1M1I28M4I131M5I13M1D74M1I12M5I37M3D8M2I12M4D52M1D8M5D28M5I35M1D39M5I12M5I37M4D27M5D55M3I15M3D134M2D57M4I37M1I10M3D119M1I46M4D153M3I26M2D29M2I18M1D15M2D17M5I1M1D58M2I64M5I44M3D26M4D11M4D13M1I27M5D1M4I7M1D9M5D74M5I39M5D5M5I1M5D11M2D16M2I35M2D24M3D11M1D15M5D10M2I8M1I78M5I83M3D12M1I32M1I15M1I9M4D32M5D26M5D48M1I16M3D39M2I48M2I9M3I24M2D31M4I55M2D18M4I11M2I2M4I30M4D56M4I72M4I9M2I75M5D136M4I17M3I10M1I9M3D1M4D46M4D38M3I30M1D64M5D28M4D22M3I5M5D8M1D3M1D27M5D71M2D25M2D1M1I19M2I35M3I6M2D61M3I40M1I78M5D12M4D41M1D68M3D27M4I47M1D5M3I50M5D2M1D83M1D41M1D140M3I93M2D106M4D65M2D20M1D25M4I50M5D50M2I18M5D20M2I23M5D1M1D9M3D40M5I11M5I50M5D9M4D19M4D2M2D69M4D51M1D27M4I101M2D17M5D26M2D68M3I61M4D2M3D36M4D1M2D13M2I3M5I3M5D91M1D64M2I24M2I4M1D18M4I38M3I16M2D6M3D8M5D10M1I30M3I6M4I27M4D4M3D8M1D9M5I34M3D12M2D53M1D19M2I66M3I47M2D26M3I13M3D28M3I27M2I3M4I14M2D19M1I18M4I25M2I68M5I6M5I33M1D35M1I34M4I92M4I50M1I6M4D3M2D3M1I71M2D1M5D14M3D42M1D21M4D28M1D34M1I75M5D4M3I82M4I15M3I50M5I68M2I90M4D4M4D22M5D74M5I16M4I9M2D17M4I11M4I16M2D11M2I80M3I92M1I51M5D2M2I46M5I21M2I21M5I75M3D19M3I43M5D10M1I52M3I20M2I226M1D15M5I13M2D49M4I18M4I16M3I86M5I7M1I7M2I23M4D22M5I37M2I40M5I13M3D2M3D65M3I5M2D37M4D122M3I13M4D27M5D2M2D38M4D1M4D7M5I41M2I9M4D11M5D27M4D7M2I9M5D35M3D22M3D50M3I21M3D72M3I103M5I25M3D13M2D17M5I14M4D23M4D93M4D1M4D101M2D21M5D3M3D11M4D1M5D53M3I16M2D20M5I11M5D9M2D78M1D147M1I25M5D153M5D12M2D37M5I46M5I44M2D5M5D48M2D85M3I17M3D15M2I16M1D91M1D29M1D6M2I8M2I37M5I80M1I3M3D46M1D7M5D16M3I7M1I74M4I63M4D5M2D37M4I9M4D68M5I26M5I21M5D15M5I41M4D14M4I9M3D2M4I35M5I3M2D29M1D12M1I2M4I54M1I16M2I28M5D6M1I1M5I7M4D11M5D11M2I26M5I9M2I66M1D39M3I12M1D42M2D34M1I10M4D12M5I97M3D9M4I10M1I21M2D18M3I31M5D7M2I14M5I90M2D31M4I16M1D7M1I99M4D70M5I16M1D82M2I53M2D32M2D169M2I13M1I58M3D8M2D16M3I1M5I2M1D52M4I54M4D62M2D16M2D5M2I12M1I21M2I108M1D37M2D3M4D32M5I17M2I7M3D24M3D46M3I21M1D113M3D29M3I57M1I3M5I3M5D109M1I19M1D5M3I6M4I21M3I4M4I12M2D5M3I79M2I3M1D59M1D46M4I72M1D58M3D70M1I36M2D37M1D5M4D39M2I11M1I18M2I2M2I79M4D11M5I25M4I27M5D32M1I35M4D7M2D5M1D8M4I10M3I54M5I6M4I43M1I52M2I3M5I7M3D31M1I35M4I53M1D72M1D15M5I7M5D4M3I1M4I39M3D1M4D34M3D8M2D5M2D13M4I119M4I4M5D42M5D41M5D69M1I37M1D4M3I48M2D8M1D9M1I13M3D10M2I49M4I51M1I6M1D151M3D9M1D14M3D1M1D24M1D7M5I1M3I24M2D5M1I57M3D8M5I26M5I59M4D46M4I88M4I57M4D24M2D7M3D24M5D8M1I59M1I7M4I64M3D1M4I72M3I9M2I24M5D1M1I12M1D34M1I32M3I35M1I72M3I26M3I13M3D23M2I7M1D9M5I36M4I80M4I34M3I17M5I38M4D1M4D26M2D77M3I25M2D10M3I14M4D29M1D44M2D24M5D45M5I4M5D22M3D2M5I3M5I34M2I48M3D14M2I27M4I30M4I50M1I2M4D17M2D33M1D45M4D50M3I10M2I19M1I6M3I105M2D20M1D25M3D8M3D14M4I16M2D5M1I12M3D20M3D6M4I14M2D16M2I5M1I12M2I83M2I9M4I36M1D27M4D56M1I58M5I53M5I35M5D23M4D57M2D16M3I1M5D7M5I11M3I5M5D99M2D70M4I7M5I14M2D25M5D4M2D3M2I58M2D4M1D23M4I6M5D16M4I25M3I36M3D88M3D34M4I28M4I40M3I62M2D47M1D8M5D22M5D4M2D40M4I12M3I2M1D13M5D62M2I19M4D104M4I21M2D5M1I102M4I32M4I14M2I1M5D19M3I24M3D7M2I54M1I46M4D33M3I37M2I15M2I5M4D12M4I23M1D6M1I3M2D3M2D1M3I26M1I39M5I2M1D28M1D16M1D2M4I55M2I6M2I110M3D23M1D19M5I54M3D27M2D38M4D21M4I9M4D3M2D59M3I34M4I19M4D17M5D10M1D3M3I51M5D5M1D74M2D4M3I10M1I6M4D16M1I38M5I66M3D66M3I15M2D1M1I35M3I43M2I22M4I25M3I6M4I55M2I14M1I158M4D27M2I18M4D44M2I16M2I6M2I17M2I25M5I60M3D5M3I101M2I17M1I53M2D1M4D3M1D21M3D1M1I9M3D39M1D14M5D19M4D10M2D4M4D14M3I22M1D61M1I80M3D30M1D6M1D7M2D21M4I4M4D52M2D4M2I32M5D34M2D33M1D7M2D75M1D12M5I55M4D24M2D43M5I22M4D23M4I68M1I24M3I31M5D32M4I55M4D8M1I29M1D45M4D10M1D22M5I35M1D13M1I18M4D12M3D10M2I16M1I61M2I53M5D8M5I33M4I9M4D26M2D14M5I1M4I11M4D11M2D7M5I51M4I24M2D27M4I23M5D9M5D75M1I46M5D30M2D11M2I25M3D61M3I60M4D12M5D37M3D8M2I64M4D1M4D13M5I5M5I11M3I6M4I8M3I4M5D50M5D1M3D25M5I22M1I10M3I37M3D36M1I26M1D1M1D14M4I80M2I72M4D62M3D8M4I20M1D5M5D13M2I34M3D1M2D1M5D17M4I51M5D30M2D10M4I75M3I13M4D52M1D127M5I10M2D70M3I22M1I30M5D15M5D5M5D1M4D85M2I22M5D60M5I32M4I16M5I46M1I18M1D24M2D14M5D3M5D43M3D4M1I32M2D57M1D5M2I13M2D46M3I5M5D8M2D11M5I51M5I20M5D40M2I10M1I76M4D51M1D163M5I14M2I7M5D110M4I13M3D19M3I2M1I39M1I45M2D111M1D74M4I50M2D9M5D24M2D59M4I52M4D57M5D68M4I7M1D35M1D19M4I1M2D65M5D20M3D56M2D26M5I19M2I21M5I14M3I19M1I18M5I3M1I17M2D8M3D6M2D34M2D1M2D1M4D18M2D91M4I48M5I3M1D42M3I1M1D18M4D19M4D1M1D17M2D19M4D70M2I7M1I48M3I46M2D19M4I54M4I3M4I46M4I81M2D46M4I20M1I3M3I4M5D23M3D16M2I32M1I21M3I11M5I23M1D8M2D16M1I71M4D6M1I44M5I14M4D70M1I4M1D70M1D108M1D4M4D25M1D30M1D2M3D1M3I12M3D24M1D12M5D6M5I45M5D4M4D17M1D16M3D29M4D20M4I32M2D11M2D6M1I26M3I68M2D70M1D70M3I21M3I22M4D48M5I30M2I18M4I17M1D26M1D10M1I13M5I18M3D43M1I19M5I28M3I36M5I74M2D113M4I11M1D12M3D54M1D48M5I9M4I50M3I7M2D5M3I45M3I4M3D11M1D8M3I34M4D40M2I16M5I20M5D2M2D82M2D29M3D1M3I6M1D13M5D35M3I18M2I3M3D9M3D60M3D92M3I1M4I8M2D35M4D19M2D2M5I1M1I7M4I14M4I10M1D45M3I7M3I16M5I124M2I55M4I18M5I68M4D23M3I55M4I22M3D61M2I21M2D9M4I61M3D54M5D34M2D52M3I37M1I20M2D11M4D10M2I24M1D6M4I7M1I65M5I69M1D13M1D37M5D24M3D20M4I47M3I93M2D32M1I91M3I14M2D29M4D5M5D5M2I81M4D17M5D3M2D5M1I8M3D31M4D39M2I56M4D133M2I62M4I33M2I123M4I47M4D44M3I17M4I6M4I11M5I7M1I4M1I3M3I5M5D19M2I144M4I52M4D20M4I24M2I20M1I37M2I50M4I23M1I18M3I2M5D8M5I23M4D6M1D52M4D67M1I19M2D39M3D28M2I51M2D41M4I78M4I11M1I12M5I54M4D30M3I149M1D161M4D46M4D1M5D8M3I18M3D88M3D27M5D33M4I5M2I7M5I71M1I12M5I34M3D38M5D13M3I44M5I15M3I2M4D13M4D14M1I18M4I6M2D63M2I36M1D41M1I68M4D20M3I8M5I26M3I49M2D53M3I26M5D52M2I52M3I4M4D9M4I31M1I16M1D18M2D15M3I3M4D106M4I10M1I14M2I10M5D4M2I9M4I62M5D3M2D38M4D184M5D92M4I47M1I80M4I10M5D38M1D9M4I6M5I79M5D77M5D40M1D43M1D4M4D3M2D32M2I29M2D9M4I163M4I18M5I82M4I9M1I6M5I8M5I13M1I9M4D11M2D1M1I30M1I4M1I6M4D62M3D20M4D3M5D13M3D88M3D1M1I38M3D126M5I32M1D12M1I37M4I17M5D62M4D86M1D26M2D1M2D31M2D52M5I25M4D73M1D9M5I39M4D30M3D56M1D123M2I88M1I84M2I19M4D16M5D5M3I5M3D112M4D14M1I5M2I34M5I25M2I5M5D6M2I10M2D30M2D89M4I1M3I7M2D13M2I16M4I17M4I27M4D17M5I81M5I8M1D5M5D2M3D48M2I13M2D69M5I42M4I78M2I111M2I60M4D33M5I40M1D81M2D2M1I12M2I31M2D34M2D11M1D16M2D11M2D15M4I31M5I16M3I14M3I17M1D79M3I42M5I1M5I45M5D5M3D2M4D83M5I2M3D19M5D6M3D7M5I14M2D6M2D3M3I54M1I68M4D10M3D71M4D152M3I5M2I45M2D96M3I10M4D39M4I15M1I6M1D37M5I25M4I9M2I40M1D34M5I5M5D3M2D6M1I66M3D17M3I16M4D3M3I12M1D70M1I43M4I22M1I15M4I17M4D11M2I36M1D2M5D10M2D13M5D9M3D9M5D3M4D1M5D1M5D5M4D75M4D24M5I33M2D31M2D12M4D12M3I129M4D11M3I1M4I30M1D22M3I19M2I1M2I32M2I86M2D18M2D56M4I25M2I31M5D63M5D1M1I34M5I29M2D31M5D17M4I25M5I2M4I2M3D16M1I12M2D8M2I3M3D30M3D78M1I4M2I35M2D38M3D28M4I137M4I109M3I5M2I6M2D43M3D11M4D165M3I4M3D57M4D3M5I68M3I92M4D10M5I24M5I1M1I22M4I58M2I54M4I4M2D43M3D44M4I28M5D22M3D16M4I9M4D1M5I58M3D59M1I37M2D17M1I40M4I29M5D4M3D40M1D10M4I4M5I49M3I1M1D16M2I5M5I13M1D8M4I9M2I33M2D34M1D35M5I22M4I33M3I38M4I6M5D15M2D37M1D32M1I108M3D18M5D22M4I10M1I17M3I19M4D5M4D68M2I14M5D1M3D29M5D135M2D33M4D42M2D41M4I17M1I23M4I23M1D25M4D31M3I9M4D136M5I20M5I13M5I50M5D124M4I16M3D3M5D101M2I16M3D1M3D84M4D30M1D32M1I23M4D28M5D6M2D40M1I3M3I11M4D5M3D39M5I1M2I7M5D54M2I21M5I21M2I12M4D16M4I17M2D64M5D15M5I35M3I47M1D1M4D1M3I8M2I54M3I80M1D1M5I3M5D23M1D3M5D51M1I37M5D19M2D14M4D17M3I25M3I59M4I50M5I19M2D87M3D5M4I26M1D17M5I14M2I13M1D99M4D14M5D15M3D47M4I37M5D4M2D79M4D14M4I63M3D13M3I1M4I34M2D92M2D18M3D12M5D34M2I9M2I74M2I26M3D55M3I25M5I4M4I10M2I103M3D41M2I2M3I15M2I117M5D15M1D5M5D6M4D7M3I11M4D35M5I1M1D11M5D4M5D126M2I14M5D29M4I10M4D16M3I2M3I31M2D54M3I84M4I57M5I22M5D54M2D14M1D6M5D98M2D9M3D27M2D9M2I15M1I9M1I37M5D37M2I25M4I6M2I21M5I20M2I29M2D110M1D31M5I32M3I44M4D76M2D24M4I11M4D62M4I35M2I15M4I39M5I107M5D19M3D92M5I2M1I10M3D11M4D18M5I53M4I22M1I60M4I4M5D2M3D51M2D3M3I65M2D38M2D31M3D18M1I1M2I43M3D34M3I71M5I48M5D17M3D18M4D74M2D79M3D36M5I1M3I68M5I24M1D84M2I55M4I39M5I23M1I22M5I39M5D7M1I24M5D18M5I1M2D88M3D60M5I119M5I17M3D6M3D9M3I13M3D3M4I4M1D3M4I14M1I34M5I62M4D4M5I6M5D42M4D1M4I6M1I15M5D34M1D46M3D123M5D93M4D20M5D90M5D36M1I2M2D26M3D44M1D62M2I71M3I49M3D9M5D36M1D27M2I30M3D97M3I18M2I10M1I14M1D63M3D32M1I25M2D24M3D48M4D14M4D1M2D32M5D113M2D27M1I7M1I18M3I27M5I8M2D2M5I29M2I3M4I34M1I20M3I77M5I26M1I3M2D43M5D75M4I39M2I49M5D32M1I14M1D20M5I4M1D45M4I3M5I3M2I99M5I18M5I26M3D17M5D32M5I15M3I3M5I1M2I26M5D54M4D10M4I16M1I24M4D1M5D18M2I91M4D9M4D33M1I30M5D159M3D43M4D36M4D10M3D33M3D13M3I15M4D27M3D1M1D40M4D65M1D1M4D61M3D18M5D4M5I6M2I25M3D125M5I31M1I4M5D42M1D81M5D40M5I26M3I1M5I50M4D14M3D10M5D2M1I44M5D61M2D35M1I38M3D4M3I4M3D4M1I22M1I37M1D2M3I50M3D4M3D131M5D11M3I8M2D3M5D87M1I18M3D78M1I24M1I24M2I44M4D17M3I10M3D23M4D11M1D10M3I67M2D41M3D9M5I42M4I6M4D5M1D17M2I9M1I13M2I22M2I25M5D43M5I101M2I4M3I11M2I18M5D27M3I11M4D64M1I6M3D24M2I1M1D6M1D85M5D2M1D20M4D27M5D13M5D28M4D113M4D19M5D5M1I2M1D92M4I43M4D120M1D20M3I5M5I40M5D16M4D15M5I19M4I5M3D6M5D48M2D49M4D50M2D39M4D9M1I49M3D6M3D35M2I1M3D58M1D82M1I45M2D25M5I8M3I4M4I3M3I40M3D57M3D6M2D46M2D6M4I74M2D14M3D4M3D22M2D54M5D3M3I61M3I15M1I52M3I26M2I29M2D31M4D18M3D14M1I56M2D12M1D20M3I16M2D12M4D2M4I31M2D12M3I73M5D23M2D45M2D4M1I3M5I14M1D4M5D72M2D21M1D2M5D91M3I17M4D18M3I9M3D4M2I18M3D23M4I75M3I12M5D1M2I28M5D25M2D6M1I42M5I7M4D27M1I14M2I12M3D40M4I20M1D51M4D50M4D47M3I53M3I5M1D2M5D33M4D96M3D67M2D3M3I49M1D9M3I45M5D1M2D7M1D8M1I75M2D30M4I20M5I22M5D1M4D5M1I36M1D8M4I34M1I21M3D35M5D1M5I26M5I50M5D29M5I64M4I1M5I65M2I59M3I49M2D40M3D115M3I28M1D1M1I3M3D9M4D141M4D11M3D7M4D41M5I29M5I40M2D27M3D7M1I3M4D8M4I8M3D2M2I1M5D46M5D32M5I23M5D32M2D169M3D85M2D39M3D68M3D59M1D11M2I13M1I22M4D8M1D1M3I9M5D22M1D23M5D22M5I12M2D29M5I2M3I1M4D15M2I85M1D50M5D8M5I7M1D21M1D39M1D49M4D6M1D133M3D127M5D1M5I16M3I10M2I30M4I28M4I15M1I10M1D21M4D28M2D4M4I29M5D6M2D32M5D26M5I46M4I13M2D45M1D29M5I84M1D8M4I38M2D47M2I32M4I60M1D39M4I27M4D32M3D41M4I17M4I20M5D16M1I17M4D11M4I35M5D29M2I19M4D15M3I17M2D29M4D31M2D37M5I10M5I107M4D1M4D63M2I6M2D37M1D35M3I63M1I31M1I19M4D1M2I16M5I44M4I7M3I18M3I42M1I47M1D10M4I16M5D6M2D16M5I1M5I38M2I71M1I15M3D19M5D81M3I75M1D3M1D21M5D64M5I25M4I14M4D85M1I23M5I3M5I3M1D13M3I29M2I19M1D10M3I56M4I21M4D3M2D9M4I39M5I97M5D48M1I82M5I34M1D15M1D38M2D4M1D19M4D14M1I50M1D14M1I1M4D48M5D4M3I5M1I2M1D59M3D8M5D93M4D17M3D30M3D24M3D31M3D52M4I25M4I12M3I7M1D41M5D60M5D26M2I4M1D23M5I38M5D15M5I75M1D4M3I30M2D9M4I41M5I34M1D4M3I43M5D3M3D12M5I1M3I31M4I78M2I8M5D86M1D8M4I12M4I31M5D46M4D41M2I15M4D37M5I42M5I9M4D14M5I81M5D25M1I30M3D6M2I44M5D2M2I31M2I6M1D14M5D58M3D96M2I1M4D10M2I36M3I27M4I77M5I11M3D5M3I62M4D58M3D50M3D9M3I21M1D1M1D3M2I51M3D95M1D10M1D4M5I15M5I14M1D10M4D13M5I11M5I36M5D7M4D64M4I55M5D59M2D19M5I6M5D50M4I125M5I13M5I19M1D84M4D2M5I50M3D10M3D22M2D14M5D22M5I14M2D7M5I94M5I105M5D2M5D5M1I20M3D44M3I17M1I22M2D12M4I9M5D51M2I28M3I12M4I16M3D32M5I26M2D21M5I2M1I4M5D41M2I5M4I11M5D12M4D11M4I4M2D2M2D11M3I28M3D2M5D47M2I40M4I4M5D16M2D86M4D13M2I11M3D1M1I24M3I5M5I18M2I10M3D10M3I8M1D46M1I31M3I6M2D38M1I9M2I3M4D2M1D49M1I81M5D57M1I14M1I8M3I19M3D5M3I16M4I2M3D58M3D16M1D32M5I31M2D13M4I23M3I1M4I99M2D21M4I57M3I11M5I13M4D25M5D155M2D25M3D32M2D1M2I6M3I7M2I109M1I3M1I7M5I21M2I22M2I14M3D112M5D31M5I131M1I18M5I11M4D5M4I39M3D12M5D12M2I47M2I53M4I6M3I29M3D7M3D18M4D28M2D21M4D30M5D34M4D10M5I59M4D13M2D24M2D10M1D81M4D43M2D23M4I1M4I63M4D27M3I19M1I49M4I10M2D73M1I23M1D110M5D4M5D74M4D135M4D5M4I68M2I63M5D10M3D22M4I34M2I37M2I41M5I69M5D4M1D27M5D10M1I9M5D13M2I25M3I9M5D57M1D75M4D2M3D80M4I17M2D2M1D1M1I28M4I12M5D21M2I40M3I118M4I64M3I21M2D4M4I20M1I36M1D8M3D31M1I9M5D50M5D7M3D69M5I58M4D3M3D1M5I45M3I5M1I5M2D63M2I2M1D88M5I35M3D2M4D2M4I40M2I66M5D50M4I21M5I29M2D6M3I101M1I16M2I58M5I25M5I60M2I20M2D14M4I1M1I31M5I1M4D52M4D59M5I60M2I76M3I11M1I30M2D35M3D13M4I99M1I39M2D10M3I5M1I29M4I20M5D19M3I12M5D45M4I16M5I6M2I154M2D193M2D15M1D71M1D6M2D7M4I33M4D67M5I63M5I22M4D9M3I99M5I16M1D18M1I31M1I70M5D52M1I7M3D6M4D10M2I14M3D58M3I36M3D20M5I91M5I19M2D23M3I38M2I31M5D37M5I37M2I48M4I27M4I18M3D13M4D12M4I18M4I25M2D5M5I14M1I15M5D44M1D58M2I23M3D49M2D10M2I4M2D20M4D3M2I37M3I30M5D12M3D15M2I3M4I35M5D60M3D60M1I59M1I58M1I45M2D67M2I27M4D24M5I25M2I54M1I20M5I17M1I67M2D79M5D51M2D122M3I19M2D36M3D22M2D8M3D79M4I49M4I4M5D16M4D45M5I5M3I15M5D68M5D99M5D62M3I5M5I5M5D15M2I9M1I23M1D10M5D1M1D17M2I82M2I17M4I82M1D34M3I48M2I15M2I7M4D89M5D41M5I26M2I8M5I55M1I30M4I28M3I40M4I136M3I4M5D22M4I31M4I24M2I34M1D65M4D17M5D12M1D98M2I7M1D17M4I32M1I12M3I17M4D6M3D26M2D32M3D13M5D22M5I7M5I2M4I15M1I3M2I82M1I27M5D52M3D30M2D57M3I7M3D50M1D13M2D59M5D35M2D7M2D28M4D35M1D25M2D64M4D39M2I23M4I7M1D9M2D12M1D62M5I41M1I5M2I8M1I23M4I6M3D39M2I44M2I37M5D20M3D22M1D163M1D40M2D120M1I23M3I52M5D4M3I14M4D2M3I4M2D18M1I17M2I2M2D49M5I44M4I15M4I3M2D20M1D101M4I4M5D8M4D4M4D5M1I17M3I76M1D67M2I2M2D27M4I56M4D74M3D10M1I44M3D6M3I61M5I9M2I16M5D2M2D3M2I17M5I23M5D10M5I40M1I136M4I9M1I13M2I64M5I27M5D12M1I47M2I17M2I127M4D12M5I17M4D1M5D1M1D18M5I26M4D22M1I23M4I135M1I1M3D4M1D6M4I46M2D19M4D18M2D25M4D6M1D16M5I7M4D45M3D6M4D168M3D15M4D1M4D14M4D47M2I23M4I27M3D30M5D80M4D12M5D2M2D20M2I15M3I44M3D50M2D32M5D79M4D6M2I5M2D1M2D74M5I31M5D13M3I17M3I47M5D20M3D75M4D28M3I24M1D16M1I42M3D48M3I33M4D37M1I7M1I123M2D36M4D21M5D32M2I19M5D53M3I10M2D32M3I22M1D15M2I128M1I13M5D43M4I9M2D55M5I80M1I15M5I63M4D42M1D86M5D20M3I3M2D27M4I8M3D55M5D49M4D16M2I5M4I14M4I48M5I25M2I40M1D9M1I51M1D58M1D2M1D66M5D11M3D174M2I27M2D12M2D31M3I18M4I40M4D87M5D32M4D5M4D8M1I24M2I17M2D37M1I15M5D19M4I2M2I40M2I8M3I23M5I54M2I10M5I41M3I29M2D35M1D56M5I4M2I15M4D29M5D8M2I11M1D10M1D16M1D62M2I16M2I6M5D16M4I2M3D15M4D50M1I53M3D119M1I35M3I22M1D27M1D20M3I23M3I2M2D47M4I5M5D6M4I13M4D20M3D21M5D39M3I34M4I5M5I16M2D13M1I49M5I19M1D18M1D56M3D26M4D35M3I16M2I13M3I4M5D104M5I19M1I33M5D1M1I11M3I8M4D26M2I41M5I15M4I4M1D17M1I55M3I23M2I3M1I64M4D10M4I42M3D1M4I9M2D19M5D21M4I21M4D3M2D20M2D7M3I20M4I6M3I55M3D2M1D32M2D22M4D29M2D40M2I20M5I18M5D23M5I51M2D30M3D22M1D22M4I10M4I4M1D29M4I20M4D13M3I23M1D20M5D150M3I12M1D12M5I29M5I9M2I17M2I12M5D5M1D60M3I19M2D4M5D7M3D52M4I72M2I8M1I24M1D2M2I10M2I29M5I66M3D11M3D41M5I3M3D48M2I27M3I20M3D46M3D39M3I38M2I19M4I24M5D5M1I12M5D7M4I4M1I66M4D5M5D6M5I15M5I22M2D38M2I8M4D32M5D22M4D43M3I15M3I27M3I19M2I2M5I8M5I5M5I27M3I14M3I10M3I42M4I5M2D34M3D166M1D13M3I17M3I5M3D4M3I18M4D8M5I20M2I2M5I16M2D30M5I32M5I27M5D89M4D88M3I53M4I1M3I9M2I118M5I3M4D3M5D30M3I15M1I142M3D7M2I6M4D25M5D1M3D2M1I36M2I8M5D16M5I18M4D34M3D34M2D107M3I2M1I1M2D43M3I35M2I42M2D35M4I13M3I64M4I23M1D1M5D38M3I1M2D42M3D2M1D21M5I4M2D3M3D54M1D4M2I2M3D15M5D107M1I50M2I35M5I34M5I81M4I36M1I18M3I61M1D124M4D7M1D29M2I33M3D25M5D54M4D64M1I26M4D23M4I12M5I7M3I29M5D39M5I1M2D44M1I96M1D47M5D8M3D17M4I21M3I18M1I1M4I7M2D32M5I42M2D2M2I49M3I12M3D3M5I9M4I33M1I175M5D28M2I29M5I2M1I56M2D44M3I17M1I61M2D55M2I39M3D42M2I44M5D24M4I9M5I45M3I21M5D46M3I9M1D16M4I3M4D53M1I5M4D32M2I21M2I72M3I64M4D6M2I27M4I9M1D44M1I5M2D26M2I29M5D13M4I50M3I25M4D1M3I30M2I8M2I28M5I85M2D51M4I24M3D34M2I11M3I48M2D1M1D1M3I2M1D3M3I1M5D15M2D14M2D10M4D1M1D2M2I49M3D59M4D105M5I32M2I9M4D24M5I3M5I31M3D37M1D34M4D10M1I32M1D81M1I30M2I38M3D6M1D27M4D3M2D94M4D4M3I3M1I31M4I33M5I52M2I18M5D3M4I6M2D10M2D12M2D5M5D3M5I5M4I38M5D6M5D30M2I13M1D67M1D9M3I37M4I16M3D41M1D20M1D79M1D1M2I6M3I22M3I17M4D42M3D1M3I19M4I1M1I5M1D14M2I17M5I10M2D20M2D7M3I36M3D43M3I50M2D23M4D23M4I21M4D4M1D14M1I3M2D38M4D7M5I39M2I10M4D35M1I13M5I163M3D14M1D23M1I8M5D53M5I11M2I10M4I39M3D18M1I4M2D5M3D54M5I30M1I7M4D15M2D20M5D3M5D52M4D25M4D21M1D4M4I78M5I3M5D7M2I61M1I32M3I9M4D170M5I4M1I41M1D69M1I4M1I43M5I26M4I20M3D14M5D9M3D21M1D14M5I73M5D1M5I30M1D6M3D6M2I4M5I17M1I2M4D2M4I10M3D43M3D20M1D107M4D66M2I18M4D12M2I22M4D9M2I14M4I48M4I37M4D16M3I67M4D32M2D15M2I23M3I29M1I20M3I3M3D119M2D31M4I2M2I63M2D4M4D27M5D2M5I163M3D18M2D8M1I18M5D4M5I5M5I89M4D19M2I214M4I21M1I12M1I8M2D12M2D44M2D41M4D22M4D1M1D33M3D18M4I29M5I14M2D12M1D13M4D18M2I12M2I18M3D2M2D1M3I65M5I11M4D33M3I1M1D9M1D17M3I14M2D21M4I17M4D19M1I15M5D16M5D6M3D5M5I92M1I4M1D8M3D17M2I6M1I19M5I125M5I90M2I8M2I54M1D116M1D5M2D27M5D75M1D1M4I29M2I3M3D89M1I28M2I101M4I30M4D10M3D20M2I45M1D50M1I35M2I8M5D28M5D52M2D65M3D12M1D49M5D40M4I136M1I28M4I20M1I57M5D58M4I51M2I68M4I57M1D89M3D45M5I32M3I12M1I17M2I46M4D1M5D15M2D28M2D17M2I6M1I72M5D11M3D12M4I209M4I56M5D38M2I29M4I57M3D4M1D16M3I12M3D17M1D94M3I36M5I67M3D3M3D10M5D12M1I35M3D19M1D11M2D42M4I54M3I2M3D12M3D36M5D41M3D31M3I1M3D12M3D10M3D27M3D23M5D38M2I41M1I22M1D53M4I4M3D7M2D10M3I1M4I3M5I3M1I29M2D56M1I9M5D185M1D2M5I37M4D70M5D16M2I9M1D62M3I33M5I41M2I12M3D33M1I4M4D20M5D75M5I88M5D9M2I2M1D42M3I12M4I50M5D49M5I145M5D22M1D16M5D40M4I18M5D38M2I51M5D46M4I8M5I76M4I11M3D22M3D25M4D8M2I23M4I46M1I20M4I29M2D4M1D48M1D55M1I67M1I2M4D79M2D19M5D5M2I19M3D79M4D41M5D18M4D18M2I72M3I5M3D12M2I31M4D7M1I103M1D8M1I15M1D23M3D6M5I76M2D5M4D47M5D16M4D58M4D20M3D29M1D3M1I13M3I31M4I10M5I4M3D37M4I25M5D15M3D38M1D23M5D40M3D2M1D6M1D116M2I11M1I40M1D33M4D25M5D111M2I26M1D36M3I41M2D2M5I25M5D33M2I4M5D28M4D1M3I111M2I21M1D17M5D8M1I41M3I46M2I57M2I5M5D2M1D5M1D9M5D61M4D2M5I28M1D76M3I29M5D19M4I27M4I70M2D27M3I15M5D19M1I5M2I33M2I20M4D28M1I10M4I4M3I51M4D57M3D127M5I87M4I61M2D70M1D73M1I52M3I52M3D109M1D66M3D69M2D15M1D71M4I5M4D41M2I33M3I27M2I22M5I2M1D3M5D64M2D67M2I10M2I4M5D10M1I54M5I4M5D44M3I51M5D131M3I13M5D2M4D15M1I16M1D49M1D24M4I24M2D86M1D1M1D8M2D6M4D3M2I4M2D62M3I24M2I30M2I4M3I9M5I81M1I32M1D35M5I12M4D4M1I40M5I14M2I60M4I2M3D7M3I20M2D26M3I35M5D24M5I59M2I18M4D74M5I13M2D19M5I31M3I21M2D12M5D53M2I9M1D18M5D8M3I38M2I23M2D1M5I97M1I5M3D2M2I15M5I63M1D17M4I8M1I8M3D21M3D110M5I79M4I12M3D2M3I39M3D23M3D4M4I2M3D22M4D15M3D11M4I1M4I13M4I1M1I26M1I45M1I71M2D35M3D4M5D8M1I21M5I10M3D46M1I4M4I9M2D53M1D25M2D52M3D44M1I36M5I11M5I2M2D9M1D3M3D52M3I23M1I4M3D3M2I3M5D35M2D17M2I25M2I68M3D102M1D7M3D19M2D15M3D10M3I14M3D2M4D23M5I14M1D18M5I11M1I7M1D32M2D14M5D55M1I39M3D28M5I2M2D23M5D48M1D10M1I38M2D13M2I10M4D73M1D11M4D24M5I47M1D46M1D10M4D58M3D27M5I7M3I26M2I3M3I8M1D28M2I33M5D38M1D30M1I5M3D52M2D2M4I5M3D16M1D20M2D5M4D61M2I11M2I4M4I1M5D82M3I10M5I54M1I40M4D3M1I2M1I20M2D12M4I48M2I68M1I7M1I27M2I23M1D37M2I22M1D5M1I134M5D5M2I97M1I25M5D35M4I52M2D11M1I4M4I118M3I44M3I25M3I3M5D26M3D61M5D57M1D60M4D109M1D32M4D9M3I31M3D14M3D9M3D189M4I23M5I26M2I85M3I10M5I2M3D15M4I56M1D15M3I14M1D82M3D18M3I74M3D107M3I19M4D46M1I38M1I39M1I25M5I37M4D3M3D65M1D19M2I57M2I31M3D10M4I16M4D8M2I22M1I15M4D34M1I11M5D43M5D14M5I53M5D7M1I5M4I74M2D55M2I5M1I5M4I1M3D40M3I13M5D55M3I33M2I81M2D66M5I82M1I20M1I68M4D1M2I13M1D21M1I51M1D16M1D18M3I10M3D10M3I54M2D40M5I34M2D37M3D48M1I25M5D11M2D16M4D25M1D72M4I3M1D13M5I35M3D35M3D30M1I33M2D28M2D40M5I52M1I3M5I32M3I14M3I3M1I19M2I8M4D41M1D85M5I54M5D75M2D4M5I18M3D1M4I77M2D17M3I6M4D10M5D20M5I48M4D137M1I4M2I35M4D6M4D16M1D84M3D25M5I2M5I2M5I50M5I40M1I7M2I25M1I39M1I58M3I26M3I49M5I85M3I22M4I18M3D31M3I8M2I4M3D40M1I6M1D4M5D5M5D6M1D249M1D125M4D12M3I6M2I3M3I32M2I37M4D55M5I71M3I8M4D25M5D17M1D74M2I4M4I31M3D4M3I21M5D36M4I33M2D26M4D10M1I11M1I45M3I46M4D30M3I8M5D30M4D7M5I60M4D8M4I14M2D4M3D8M5I95M4I14M4D6M2I11M4D38M1D60M3D23M3I73M1I11M3D13M5D9M5D74M3D28M1D189M3D34M1I13M2D28M5I77M2I9M2I16M3I29M4I15M2D35M1I20M2I98M3D9M3I52M1D16M5I16M1D11M1I13M4I3M1I25M4I22M4I4M3D29M1D17M1D13M4D35M4I12M4D22M1D114M5D27M3D1M1I33M5D3M1I25M5I33M4D33M5I5M3D12M2I26M5I18M4I11M5I27M5D64M4I4M3I36M3I148M3I33M5I6M2D78M3D115M2I51M2D30M1D64M5D19M4I61M2I30M1I1M2D4M5I33M2D72M4I15M1D57M2D38M5D80M2I29M3D2M1D24M1I52M4I48M4I4M3I59M3D5M2D105M2D17M2D12M4I34M5D12M4I54M2D56M5I60M3I8M4I53M4I11M4I59M4I23M4I29M3D9M4D1M5I36M4I2M2D69M3D70M4D17M5D18M2I79M2I5M4D1M1D26M1I6M4D18M3I50M4I10M5D23M2D93M5I16M2D11M3D39M3I3M1D14M1I12M3D40M1D90M5I48M1D27M4D20M2D39M1D9M4I15M1I7M2D14M4I100M4I24M1I5M1I59M1I44M1I51M2I37M5I70M1D15M2D6M3I6M3I1M1I2M2D6M5D8M1I8M3D19M4I23M2D22M2I1M4I32M1D22M2D29M5D78M1D3M3D1M2I36M1D6M1I29M3I83M5D13M5I32M1D44M3I41M2I48M2D48M2I7M2D51M2D25M1I34M3I3M5D19M3I27M2I98M2I36M4D42M3D36M1D1M5I22M4D60M1I25M5D18M3D18M5D20M1D17M4D26M4D26M1I2M5D15M1D17M5D33M4I2M4I18M4D7M2I10M2D11M2I6M1I15M2D44M5I161M5I11M2I8M3D24M2I19M4I1M2D142M4D50M3I9M5I11M4D8M2D4M4D25M3D7M3I72M3I44M5D1M5D80M5I76M4I81M5I70M5D58M1I108M3D44M2I48M3D2M2D6M3D5M2I7M4I10M4D18M1I2M5D36M1D65M1D6M4D110M4I5M3D33M4I3M4I33M1D2M2D21M5D110M2I18M3I36M1D24M4I3M1D2M4I15M5I175M4I4M4D66M1D6M3D31M2I61M3I15M4I13M3D9M2D57M2D20M2I71M4I7M5I14M4D3M5I7M5I49M2D20M5I9M2I64M4I39M5D4M5D46M2D6M5I21M2I15M1I65M4I14M1I4M5D51M1D34M3I53M3D109M4I53M5D5M1I32M3I26M2D17M2I1M2D39M3D19M3D3M1D8M2D9M2D3M1D4M5D33M4D33M2I112M2D34M1I45M2I17M4I3M2I44M4D4M1D15M1I19M4D28M3I14M3D41M2D5M4I63M3D7M1I71M3I13M5I10M1D62M5D54M5I57M3I14M4I49M3I46M4D25M5I19M1D45M1I2M5D17M5D28M5I4M4I15M1D21M3D32M5D9M2D25M5D6M4D27M5I8M1D57M3I74M2I13M3D22M1I35M1I17M5I25M2D31M3D20M5I25M5I82M2D6M3I18M2I1M3D18M4D7M5I23M1I20M3I3M5D71M4D11M5I22M3I64M4D27M1D3M2D42M2D52M3D4M5I1M4I53M4D39M1D3M2I1M5I21M2D10M3D28M3I11M2I96M2D2M1D65M1I54M5D13M2I2M4D16M2I86M1D4M3D6M5D19M1I11M4I12M2D4M1I120M4D11M3I110M4D122M1I23M2D18M5D9M5I40M5D37M4I12M1D52M5D15M4D18M5I20M3D23M4D3M2I49M1D13M1I36M2D45M3I5M2D22M3I58M2I105M1D49M4D13M2I8M1I31M3D4M3D15M4D16M3I45M1I84M2D47M4D8M4D22M3I32M4I8M2I4M1I69M5D18M1D19M3I3M4I4M4I12M1I3M3I22M2D60M5I49M1D31M5I94M1I3M5I52M4D94M5I12M1D29M4I18M5I10M1I22M4I18M2I9M1I34M5D24M5D12M1I6M2I29M2I66M1D57M5I20M5D10M1I40M5I19M2I27M4I42M3D24M2D51M2D11M2I40M1D12M5D13M5D18M4I14M2D10M1D91M5D10M5I18M1I9M2I21M4I22M4I19M1I2M5I34M1I21M5I36M4I14M5I16M2D98M2I17M3D29M2D76M2I6M4D38M2D61M2I10M1I12M3D79M5I31M5I16M1I5M2D84M4D2M3I1M2D84M4I11M5D74M4I3M2D9M3D7M1D117M3I8M4D24M2I11M4D7M3D64M2D86M3I6M3D127M3I3M2I14M3I57M1D61M5D19M4I13M2D17M4I8M3D8M5I48M1I3M5I22M3I2M2I53M1I39M1D34M3I4M3I14M2I46M4D11M5I2M1I122M5D52M4I32M4I93M3I16M3D64M1D65M2D42M5I9M2I37M4I46M4D16M2D14M3I4M4I78M1D2M1I69M1D23M2I47M5D22M5D16M2D4M4D2M5D40M5D31M3D55M1I33M1D7M2D6M3I7M3I75M5D16M1I52M1I66M1D61M2D41M2D30M4D69M3D9M3I8M2I12M4I33M2I28M3D2M2D25M4I7M3I55M2D17M2I72M3D15M4D12M2D10M5D35M2D4M3D14M1D22M3I2M5D16M3D13M5D61M3D63M1D25M2D49M4D39M4D33M2D52M2I22M3D53M4D26M2I21M5I40M4I35M1I37M3I107M4I5M4D46M5I45M5D14M3I43M2I75M1D3M2D14M2D26M2I2M3D157M4D8M5D38M4D48M1D15M2D47M3I17M5D7M4I4M5D4M1D4M3I3M1I73M4D11M2D23M2I3M3I111M5I25M5D17M2I130M1I23M1D24M1I75M5I61M4D82M1I14M5D49M4D38M4I21M2D13M4I86M1I32M3D66M1I33M5D42M4I3M2I17M4I33M4D9M2I12M4I27M2I70M2D168M2I26M2I17M5I11M5D66M2D7M3D45M4D58M5I13M4I3M1I14M2I39M3I50M5I149M4I11M5I100M2D44M1I2M4I58M5D119M4I13M4D25M4I17M2I5M3D4M2D61M1D12M4D39M3I63M3I2M1D26M3I19M2I8M2I18M1I5M3D122M3D2M1I29M5I16M3I18M1I19M1I21M4I14M5I84M1D17M4I28M4D32M5D113M5I38M1D5M1D18M1D32M2I14M4D2M1I39M1I36M5I3M1D27M3I52M3D85M1I89M4I1M3D23M1D9M4I2M4D135M3I13M2I11M4D2M3D26M1I12M2D92M5D7M4D104M4D27M2D6M3I8M2I35M2D9M1D2M4I20M4D81M3I18M5D15M4D52M5D36M5D1M2D33M1I23M3D19M3I51M5D116M1I25M5D6M3D61M2I11M2D8M5I15M2I63M3I25M1I37M1I18M1D94M1I22M1D2M2D6M1D40M4I60M5I22M1D66M2I48M3I37M3I4M4D2M3D9M5D48M3I13M1D34M2I6M2I18M4D11M4I38M4D132M5I45M3D24M4D15M2D6M4D3M1I25M1D4M4D47M4I21M2D77M2I13M5I13M5D19M4I3M2D26M5D45M3D12M5D11M2I6M2I17M4D46M4D21M3D5M3D21M1D3M3D34M5I22M4D150M1I72M3D71M2D27M4D75M1D33M3D1M3I49M4I8M2D98M5I15M5D16M5I51M1D184M4D6M5D71M5I42M2I2M5D6M5I17M3I11M3I29M2D20M5I76M5I43M4D67M4I35M4D196M3I6M3D32M5D39M2D7M1I1M2D21M1D6M1D4M2I18M2D16M5I50M5I14M5I15M3D51M4D64M5D29M2I8M5D1M5D51M4I6M3I68M4D20M1I4M4I44M1D39M4I46M1I25M2I2M1D30M5I2M1D12M5D40M4I16M2D51M4D17M1I24M5D12M4I15M2I4M1I31M3D5M1I39M1D23M5D61M4D34M2D11M3I2M4D15M3I54M1I68M3D23M4I25M1D5M5I30M3D80M3I9M1D13M1D13M3D5M1I101M3I4M4D9M3I1M4D1M4I23M3D37M5I64M3D17M2I86M5D44M2I3M1I37M1D19M3D42M4I84M1I22M1I39M1D31M3D23M5I80M2I4M3D45M3D5M2I23M3I5M1I2M2I35M4I13M5D79M2D88M4D15M4I23M3I1M4I9M2I55M4D2M4D77M2I18M4I18M1I48M3I10M2I8M2I129M2D68M3D2M4I65M4I2M2I74M4I81M2D32M1D9M4D56M1I1M5D31M5D149M1D52M5D17M5I108M3D37M2D35M2I10M2D10M5I49M5I38M5I30M5I18M5D3M3D16M1D102M5D29M2I5M2D16M3I18M4I41M4I61M2D1M2D107M5I5M3D22M1I58M3I1M1I51M5I40M4I1M2D2M5D53M5I14M1I78M3D37M1I25M5I211M5D28M2I1M1D2M3I10M1I13M1D1M4I21M4D1M1D36M5I45M5I17M3D13M4I22M1D18M2I10M4D30M2I27M2I82M1I2M1D28M1I3M2D39M5I24M1I38M5I12M4D21M2D32M3D5M2I18M5D32M2D16M4I13M2D13M3I17M5I41M5D1M4I11M5D94M5D30M2I11M2I29M3I43M5I94M3I37M4D51M5I60M1I22M5D67M2I27M2I6M1D1M1I4M5I34M2I89M3D21M3D25M3I16M1D10M4D17M1I10M3I44M5D1M1I16M3D6M4I62M3I44M1I91M5I7M4I55M4D68M4D7M5I11M3D24M3D30M3D26M2I23M1D5M3D52M4I54M1D96M5D39M3D30M2I53M1D8M2I8M1I46M3I3M1I4M5I3M5I5M1I5M5I19M5D1M1D1M5I29M1I13M3I34M3I35M1D7M1D10M3D92M3I4M5I14M5I49M1I35M5I102M1D7M1I11M4I83M3D15M2D3M4D6M4I33M5D43M3I18M3I115M2D1M3I58M3I28M4D20M3D11M1D40M5I4M1D45M2D78M5I4M2D27M3D69M4I60M2D14M5D63M3D19M1D95M3I12M3D34M4D51M2I9M3I88M4I6M2I1M1I7M3I21M2I12M4I35M3D36M2D4M2D94M3D57M4D44M1I3M2I30M2I17M5I1M2I3M2D26M5D22M3I54M2D33M3I32M4D27M5D13M2D12M3I1M5I11M4D39M1I21M2I76M1I38M1I5M2D39M3D22M5I84M2D23M5I11M2I42M4I1M5D20M5I115M1D43M1D39M2I54M1I4M3D63M2I3M4D45M5I30M5I7M3D17M5D8M3I6M3I35M1D67M4I75M2I25M5I41M3I11M1D28M5D6M5I60M4I13M1D26M1I17M3D8M3I4M1I11M5I5M1D137M2D27M1D45M3I9M3I93M2D18M2D5M5I17M4I13M2D49M2I120M5I9M4I56M4I13M3I57M1D4M2I30M4I31M2D48M1I49M3I2M4I58M2I4M2I5M3I32M2I5M1D5M4I47M1I35M2I25M4I20M5D6M4I13M3I6M1I11M3D63M1D28M2I1M1D36M5D5M4D41M4I5M4I16M2I3M5I66M1I11M3D20M2I26M1I4M4I107M3I10M1D13M3D30M3I19M1I37M2D10M4I4M3I56M2D34M5D34M3I46M2D46M2I32M3D35M5D25M1I33M4I38M4I35M5I4M5I45M1D1M4D11M3I7M3I4M4I3M5I13M1D63M2D71M5D42M1D72M4I1M5I48M2D6M3D5M5D7M4I4M3I2M1I8M4I27M1I3M5I16M5I38M5I62M1I46M3I24M4I22M2D54M3D2M1D13M3I26M3I3M4D59M2D22M2D50M3I88M4D21M4D11M4I31M4I9M5D9M3D31M4D139M5D61M2I26M4D140M1D27M4I61M3I13M2I40M5I141M4D74M4I53M1I73M4I48M1I50M5I64M3D82M2D95M5I31M3I16M2I18M3D33M4D9M3D6M3I45M2I23M4D37M4D10M3I22M2D100M2I16M4I7M4I1M3I8M1I1M1D85M5D3M4D43M1D64M1I12M5D25M2D25M3D71M4D4M1I29M5I44M4D10M4D8M5I33M1D45M1D24M4I1M5D12M4D4M5D7M5I4M5D1M5I23M4I15M5I15M5I138M3I56M1D23M5D69M4D24M4I32M2D8M3I28M5I4M1D20M2D77M2I6M4D6M1D48M1D1M2I65M3D26M1D72M4I46M4D37M1I6M2I19M5I39M3D9M2D17M5D9M1D36M4I24M3I14M5I59M3I13M5D1M4D32M1D37M3D7M1I77M1I22M2I3M2I18M3I16M5D7M3I4M5D86M3D62M3D89M2D2M1I5M5I16M5I29M1I30M2D2M4D105M3I5M2D15M2D94M5D52M2D4M1D74M4D3M1D45M1I15M1D13M3I21M2D51M2D20M2D137M4I6M4D31M5D14M5I17M2D5M1I112M2I19M1I112M4D6M3I59M3I14M5I2M3I56M4I29M4D19M1D84M1D180M1D11M2D39M2I3M3D49M2D4M4I40M4I75M2D24M5I120M4D8M3I7M5I64M1I13M4D19M5I23M3D32M4I32M3I6M2I38M4I10M2I32M4I12M1D34M5D30M1I30M2D14M3I64M2D6M2I110M5I16M2I79M5D49M3D3M3I28M5I41M5I16M5D4M5I8M1I26M1D24M2D1M2D11M2D35M5D52M5I8M1I130M3D20M5I6M3D21M2I21M2I10M4D78M2D22M1D42M4I6M2I8M1D141M4D34M4D30M2I25M5I22M1I53M4D66M5D27M3D104M5D20M4D22M2D52M3D60M2I9M5I18M2D7M5D30M5I52M2I65M2I14M3I69M4I24M4I8M5I4M1D33M3I23M4D3M1I6M3I7M2I117M4I150M2I184M5I8M2D7M2I7M1I21M3I27M3D19M3D3M5I5M4D21M5D47M1D43M3D13M3I6M2I9M2D44M4D15M2D63M1I9M4I29M3I9M2I21M2I17M5D41M5I10M1I6M5I32M2I95M2I11M5I25M1I9M4I56M2I24M4D6M3I5M5I87M2D25M4I10M3D23M1I31M2I50M2I2M5D5M5I9M4I26M3D47M3D17M2I22M3I73M3I15M3I33M2D67M2I12M2I11M3D1M5I44M5I56M5D65M5D67M4I25M4I40M1I82M1D15M4I22M4D16M5D50M3I51M5I10M3D18M3I4M4I37M4D26M4D52M1D55M2D15M2D6M2D2M3D15M3I35M4D32M3D22M1I13M1D48M1D30M2D37M4I25M5I5M5I26M5D56M1D15M1D17M1D7M5D144M5I5M3D22M5I8M2I22M5D3M3D126M1I22M2D10M1D12M3D31M4D52M3D46M3I15M1D42M3I142M2I18M5D52M2I3M4D16M2I157M3I7M1D5M1D17M1I44M5D129M1I4M5D6M3D58M3I8M3D28M5I11M1D125M2D2M2D43M5D43M1D11M4I19M5D7M3I10M3I12M2I2M3I22M1I19M4I48M2D7M4I51M4D2M1I38M1I19M5I17M4I5M3I25M1D4M1I9M4I16M4I10M5I6M3D31M5I38M4I17M4I22M1D7M5D29M2D172M5D73M4I2M2D34M1D25M2I13M5D70M2I7M2I1M3D15M4D32M3D3M1I7M4D16M5I9M5I27M1I1M3I31M3I2M5I50M4D10M2D42M1D96M1I24M3D17M5I34M1D22M5I64M2D11M1I13M4D17M5D24M2D107M3I22M1I8M4D9M3I26M4D35M3D19M5D7M1D20M1I9M2D7M5D7M4I125M2D34M1I16M3D110M3D3M5I18M3I94M4I16M4D30M5D41M2D39M4I35M2I12M3D9M5I2M3I18M3D60M4I9M1D20M5D12M1I22M1I3M5D19M3D20M5I14M3D22M4I5M4I1M1D2M5D72M3I40M2I37M2D7M3I19M4D9M1D1M3D32M5D6M3I41M5D75M5I55M3I7M3D6M3I3M3D51M5D1M2D79M1I35M4I7M3D14M2I33M1D17M4I11M4D1M3D22M3D8M4D31M2I31M5I40M5I51M2I4M3I3M5I21M1D91M5I72M1D45M2D4M3D254M2I19M5D35M1D55M2D23M2D2M5D5M3D14M4I24M2D12M4D8M3D25M3I12M4D96M5I39M5I55M2D14M1I8M1I4M2I4M5D22M5D30M1I9M1I26M3I5M4I67M3I30M2I63M4I3M2D18M4D1M2D18M3I116M3I15M2D30M1I11M3I116M5D2M3D17M3D13M5I12M4D19M4D3M1I9M4I24M3I4M4I15M5I48M3D36M2I6M1D9M4D40M4D2M5D49M3I94M3I11M5I15M3D26M4I27M5D8M3I8M1D14M1D24M3I103M2I1M5D40M4I52M5D2M1D9M4I14M5D120M1D58M4I37M5I23M5D78M5D69M4D16M3D6M1D50M5D15M5D3M1D18M5I1M3I2M5D40M3I44M4I24M2I23M5I12M4I6M4D69M2I46M5D47M1D21M5I170M2D46M2D10M4I106M5I75M3I4M4D16M1D6M3I12M1D13M3I13M4I36M3D51M3I54M1I61M3I18M3D16M4I5M2D36M4D2M1I15M3D31M3D15M5D81M5I13M4D12M2D35M5I109M1I2M4I7M3D36M5I24M2D31M5I2M3D49M3I6M5D54M1I83M5I53M1D61M5I108M2D38M1I44M3I42M4I4M5I33M4D16M3D6M5I20M3I13M3I34M1D54M2I3M4I7M1I23M2I3M5D57M2I34M2D4M4D87M2I1M1I37M4I7M1D63M1D8M4I68M2I41M5D90M5D65M4I9M4I2M2D5M4D3M5D3M1D20M1D17M4D55M2D57M2D17M3I20M3I1M1D42M2I16M2D10M1I46M5I30M1I2M2I17M3I43M2I18M4I21M4I19M1I92M4I11M5D17M3D8M1I20M1D36M4I19M2I7M4I84M2I9M5I60M1I28M2D33M1D20M2D5M3D19M2I31M2I2M2I28M1D2M1I10M1D7M3I3M3I44M5I3M2D20M4D90M1I1M3D5M2I4M3D46M3D35M3D6M3I11M1D38M1I61M3I26M2I17M5I42M2D30M4D46M1D19M2D56M2I1M5I74M5D31M5I3M5I16M1D14M5I4M5I32M3D64M1D5M3I23M5I19M4D51M5I17M1D49M4D51M3I27M5I7M5I51M2I27M4I24M4I15M3D9M4D9M3D33M3D12M5I49M2D2M3I81M5I39M3D55M4D49M1D33M2D1M4D13M1D3M5D9M2I34M1D1M5I8M4I11M3I2M4I2M4I72M5I11M1D4M5I17M5D13M5I1M3D13M2I13M2D90M1I27M4I31M5I6M2I26M2I26M4I15M2I44M4I81M4I40M1D19M3I2M3I21M3I4M4I20M1I6M1D2M2I18M2I38M1I35M2I49M2D10M4I8M1D6M3D20M2D3M3I4M4D51M5I10M5D23M1D58M2D89M1D24M5D47M2I2M2I12M3I25M5D1M4I42M5D37M3I33M2I32M3D39M5I23M3I8M5I7M4D62M2D38M4D45M2I81M5I2M3I43M4D93M1D2M5I31M1I2M3D26M2D36M4I23M3D10M5D3M1D23M3D198M2I2M2D110M5D88M2D4M5D14M5I10M3D33M1I1M2I2M3I27M4I81M3D38M2I20M3I78M5D53M5I48M4I1M3D12M3I18M2D24M2I29M4I14M4I3M4I28M4D8M3D69M3D133M1I54M5I12M2I160M3I8M2D80M2I33M5D99M1D2M2I10M5D9M3D35M4D61M1I13M3D9M1I2M5I32M2D13M1I1M2I5M4I7M3I58M3I28M5D16M1I5M2I14M2D12M5D68M1D19M1I55M5D24M4D19M4D3M5D10M2D59M5I28M5I113M2I20M1I164M5I118M4D54M4I13M2D43M4I23M1I32M3I10M1D12M1D1M4D109M1I16M3D24M2D45M1D18M1I25M5I10M3I8M5D5M4D38M3D31M4I30M3I12M2D14M5D10M2I91M3D23M2D28M1I37M4D6M1I18M1I34M4I12M5I18M5D60M2I3M5D19M4I103M3D10M5I6M5I4M3D31M1D43M1D48M3I2M5D10M3D46M5I124M3D2M4I11M1I23M1I2M4I33M4I36M1D13M5D18M1I24M4I2M5D38M5D40M3D4M5D24M3D4M5D5M4I49M5D94M4I8M4D18M3I118M5I21M4I17M2D25M4D8M2D70M3D9M2D46M5D27M1I45M2D15M4D116M5I19M2D19M1I98M1D32M4D9M4I22M2I37M4D89M1D29M1I34M5D7M1D4M4I55M5I114M4D75M5D9M1I121M4I29M1D23M4I29M4I123M3D12M1D11M3D4M2I32M4D72M1D20M5D27M2I98M5D3M1D53M4D23M3I2M3I6M5I10M2I26M2I5M4D18M1I45M4D11M3D56M3D29M3I37M4D59M2D57M2D27M5D43M5D18M5I4M3I155M4D14M3D128M1I2M4I19M2I23M3D35M4D59M2D113M4D99M2D78M4D29M2I14M4I50M4D10M2I8M2D6M4I1M2D19M4I10M2D13M2D12M2I11M2I37M5D2M5I52M1D36M5D8M3I40M2D139M3I22M3I8M4D36M5I23M5D15M3D10M5I7M3D5M4D36M1I102M2D5M3D8M3D6M5D16M2I105M2I22M5I55M4D21M1I4M3D24M1I10M3D11M3I42M5I2M4I34M5D14M5D24M2I7M4I4M5I26M1I5M4D41M5D154M3I13M4I10M4I9M3D15M1I33M5I94M4D41M5I13M5D27M1D31M4D47M2D30M2I35M5D5M3I97M3D22M4D64M3D79M5D22M3I2M3D14M5I5M3D5M4D73M3I5M2D37M2I14M5D7M5D23M5D43M3I8M3I53M2D34M3I63M1D12M2I19M2I9M2D46M1I1M2D5M4I4M4I10M4D1M3D44M2I17M3I4M4D2M5I12M2D6M4D30M5D45M1I20M2D24M3D33M2I26M5D14M2D5M3D50M4I1M3I2M3D7M4D1M5D58M4I6M5D8M4D14M5I2M5I11M1I78M2D108M2I27M4D23M5I59M1I43M2I102M4I83M3D35M4D2M2D88M1D112M1D11M3D3M2D4M4I23M2I4M1D25M4I43M3I27M3D7M5D10M5D13M5I12M5I28M2D6M5D47M5D79M5D4M2D72M4D43M5D7M3I16M4I7M3I18M3D4M1I5M1I23M3I51M1I7M1D89M5I49M3I8M2I40M2D2M2I17M5D11M2D59M3I56M4I15M4I1M5I50M5I102M4D10M4D55M1I8M1I12M1I23M4D5M2I13M5I6M1I14M3I46M4D72M5I81M1I15M3I15M5D13M5I38M5D129M5I22M2D39M5D6M2I9M4D43M5D4M2I25M2I27M4D57M3I7M5I17M2D7M3D16M3D35M5D73M5I8M4D25M4D2M2I40M1D19M5D28M5I23M1I63M4I50M1D14M5I25M2I11M4I3M5D39M3I45M1I19M5D50M1D4M2I124M5I19M2D1M5I17M2D12M1D7M5I5M1D21M5D39M5I9M4D178M3I19M1D27M3I97M3I5M2I11M5D14M5D21M4D2M5D3M5D6M3I21M1D29M1D9M5D7M2D74M2D14M2I6M2D30M2I6M1I53M4I39M5D21M4D23M1D2M3D36M4I28M4D29M3I59M3I119M3I44M3D15M5I21M2D35M1I40M3D41M4D2M5D9M1D19M1D56M2D7M5I70M3I82M1D19M1I5M2I51M1I93M1I51M5D9M3I5M5I1M3D8M2D35M2I1M1D17M3D53M2I33M4D10M2I104M1D52M3D69M2I24M2D1M4D1M2I6M4I32M2I86M3D14M5D15M1D5M1D69M4D36M5D14M3I32M5D2M5D29M2I4M3I37M3D2M5D62M5D20M5D62M2D21M1I26M1I8M2I85M2I43M4I53M1D14M5D3M5I1M3D11M2I122M5I80M2D3M5D4M1D18M5D15M3D8M2I7M3I25M1D97M1I30M3D75M5I21M1D24M3D33M2I20M5I11M4D8M3I1M1D3M3D12M1D9M2D10M5I41M4I27M2I68M2D6M4D1M1I63M4D71M1D63M5D18M1I193M5D31M3D27M5D4M1I13M4D57M2D12M2D58M1D83M5D6M5D5M1I100M5I10M4D13M4D7M4I38M4I114M3I23M4D21M4D1M5D1M1D85M3I82M4D5M5I8M1D23M3D48M1D24M1I15M3D1M3D63M3D42M2D46M4D6M1I21M4I8M4I176M5D41M4D35M3D43M1D30M5D33M4I30M2I6M4I7M3I32M2D157M5I13M3I22M5D12M5D72M5I10M4I147M2D67M3D6M5I22M2D27M5I8M3I1M3D15M5I9M2I7M3D84M1D67M4I53M1I23M5D33M1I25M5D4M4D43M3I41M4D6M5I75M4D61M2I39M2D58M4D56M1I19M2D4M5D103M3D30M2I19M4I10M1D6M2I20M2D10M5I42M5D5M4D61M1I97M4D6M4I71M1I71M2I28M2I5M4D6M5I39M1D9M3I33M4D6M4D28M5I37M2D22M2D97M5D9M2I63M5D8M5I14M2D2M5D15M5D55M2I155M5I95M2I48M3I15M3D5M3I6M3D56M5I13M4D3M2I10M5D4M1D72M2I24M5D1M3I18M4I103M2I37M3I53M5I14M5I20M2D47M2D26M3I50M4D11M3D3M1I86M2D45M2I53M1I48M1D3M4I4M3D2M1D12M2I51M2I6M1D22M3D24M4D43M4D16M5I1M3D4M5I74M4D10M5I7M4D12M5D25M2D133M3I136M5I1M1I2M4D1M1D64M1I12M4D48M2I48M3I57M1D56M1D3M3I54M4D21M5I68M4I32M1D21M4D46M5I14M4I8M3D20M5D15M2D175M4I10M5I10M4I15M4I46M2I3M4D5M1D23M5D26M3I29M5I9M5D31M3D22M5D13M3I29M2I74M4I12M5I71M3I97M1D10M2D106M2D23M3D5M4D37M4D13M4D95M5D6M3I6M1D22M5I29M4D9M5I43M2D2M1I30M4D18M5D46M2I25M1D14M4I23M4I3M4I21M1D20M1D5M1I19M1I65M1I5M1I3M4D74M5I66M1D40M4D4M5I60M4D21M3D2M5D11M1D12M3D9M4I41M2I54M4D14M4I12M2I8M2I5M1D12M3I14M3I4M2I60M5I19M2D10M2D7M5I42M5I12M5D7M5D104M3I22M2I11M5D17M2D11M5D24M5I2M1D89M4D12M3I66M4I12M2D19M2I115M5D47M3I7M4I26M1I42M5D83M2D4M3I27M5I66M3I87M1D42M4D13M2I28M2D11M1I49M1I1M4I29M2D41M1I4M1I23M1I4M2D3M3D78M1D35M2I13M2D52M4I51M1D135M4I97M2I20M5I12M3D80M3I35M2D25M1D14M4D73M4D9M3D37M5D14M4D13M1D49M1D29M5D59M4I13M2D10M3D17M2I11M4I5M3D44M3D47M5D36M4I2M3D28M4D96M3I39M2D25M2D42M4D68M2I65M5I123M5I25M4D15M5I53M2I40M2D15M3I31M1I5M5I45M1D1M1D19M4I4M3I32M5D20M4I73M4D4M2D44M3I20M2I73M3D10M4D7M1D2M2D5M1I10M1I176M2D20M2D80M2D22M3D103M3D67M3D60M1D45M3I11M3D10M4I29M4D20M2D26M1D27M1I61M2D3M4D31M3D36M5D54M1D83M3I34M2D7M2I30M5D93M5D8M4I18M3I96M1D19M3I8M5D29M3I33M5I76M4I40M2D4M2D1M3D4M2I19M2D3M1I10M5I57M5D38M3D32M4D3M2I8M1D9M5D204M5I19M5I21M5I21M3I5M3I12M4D34M1D1M2I19M1D13M2D4M5I6M2D34M1D37M2D11M2D58M3D8M3I10M3I30M4D4M5D58M3D29M3I15M2I21M1I26M1D69M4I10M1D46M4D12M4D8M5I29M2D7M5D1M3I104M4D27M4D34M4I20M5I22M3D51M1D2M5D21M4D16M3I148M5I47M4D16M1I18M2I12M3I95M4D8M5I13M1D89M3I57M5I5M3I31M3I117M2D69M3I8M3I16M1I62M4D39M4D50M5D36M2I6M5D122M3D43M1D42M5I23M1I48M3D47M1D23M1I38M3D59M5D3M3I12M1D8M3D46M1D25M1I2M3I6M2D15M2D6M4D11M1I39M4I57M4I21M1I20M2D61M5D52M2D52M1I4M4D29M1D15M3I66M3I7M5D11M2I25M2D25M4I68M3D40M4I49M3D134M4D44M5D18M3I14M1D1M3D7M1I19M2I8M5I19M5D51M2D11M2I20M2I33M1I6M1D9M5D3M3I91M2I11M3I15M3D66M2D5M4I2M2D3M2I78M4D13M5I6M1I26M4I34M3I76M5I7M3I120M4D48M1D75M2D18M2I40M2D23M5I3M2I40M1I18M5I23M5D15M3D32M1D21M4D46M3D42M5D95M4I5M2I53M5I16M4D36M3I69M1I73M1I17M4I9M3D20M5I9M3D24M4D84M5D13M4D88M4I20M3I1M4D4M4I42M4D17M5D20M2I13M4D17M1D27M4D61M3I25M4I6M5I10M1D26M2I38M5D64M3D92M2I33M3I50M2D77M1I27M1I8M3D16M3D8M4I33M5I97M1D41M3D18M2I21M5D44M4D41M5D6M4I8M4I12M2D8M5D10M3D73M1I31M1I17M3I6M4I2M4I39M5I26M1I61M1I13M2I42M1D43M2D19M5I6M5I16M2I31M5I27M1I7M4D2M1D3M2D83M5I5M2D27M5D23M4I10M3D69M1I1M2D56M2D15M3D65M2D23M3I10M3I25M5I65M1I8M5D5M5I255M4D3M1D91M3D40M5D3M3I17M4I106M4D27M4I10M5I7M1D31M2D32M1D51M2D36M1D12M4D3M5D3M1I74M4I110M3I9M4D20M4D4M4D18M3I20M3I44M2I1M1D10M2I17M3I48M5I7M4D27M1D29M4I6M4D9M5I40M4D32M1D86M1I1M2D6M4I21M2I27M5I11M2D22M2D21M1I31M1I123M3D29M3D23M3I13M1D23M5D6M4I11M3I38M2I16M3D5M1I26M5D15M4I116M4D9M1I4M5I20M1D61M2I15M5I7M1I35M1D68M5I13M1I17M1D22M2D1M2D80M5I37M3D5M4D5M1I43M4D13M2D13M2I22M2I75M5D17M5D8M2D41M3I53M2I17M2I9M2I109M2I3M4I39M2D82M2D39M3D31M2D55M4I11M3I17M4D32M1I1M1D35M3I1M4I45M5D75M1I92M1D58M2I16M5I4M3I9M4D2M5I117M2I30M3I14M5I5M1I12M2I8M1D1M3D38M3I28M5D71M1I38M4D105M2D18M3D8M4D89M4I17M4I25M2D5M4D19M2I37M4D44M4I25M3D6M4I45M4D35M1I3M5I29M1D28M1D17M3I10M3I115M2I50M3I6M3D58M4D20M3I34M3D25M2I13M5D15M2D59M2D78M1D4M3D55M2I43M4D1M3D13M3I39M4I4M1I34M2D16M5D133M4D15M1D63M1D29M2I9M1D16M5I45M3I35M1D15M2D50M1D24M4I3M5D9M3I4M5D40M1I33M1I10M3D8M1I28M1D34M5D128M5I7M2D55M1D112M5I1M3D23M2D17M4I3M2D91M1D44M1D20M3I31M5I5M2I6M3I38M5I27M4I37M4D47M1I17M3I13M4D21M4I12M5I20M1D37M1I17M5D35M5D21M1D9M2I21M1D21M5I6M5D294M3I23M2I24M2I9M3D33M2I1M1D4M4D39M4I27M1I7M5I8M3I35M2D3M4D31M2I52M5I9M4D42M2D45M4D33M1D2M1D17M5I96M3D10M3I28M4I4M4D25M1D2M1D42M3D12M4D4M2I29M5I33M3D11M5D21M3I58M5D3M3D33M5I1M3I47M3I42M5D7M5D8M3I12M1D1M5I6M3I159M2D5M1D38M1I2M3D42M2I77M5I30M4D2M4D3M5I1M3I30M4D25M3I24M1D26M2D26M3D21M2I4M5D16M5I36M4I22M2D10M2I210M2I19M5D41M4D7M5I85M2I29M5D105M3I31M3I3M4D5M3I5M2D19M5D83M3I34M3I6M2I7M5D61M3I102M3D9M1I27M2I20M3I30M4I6M5D5M3I9M5I83M5I35M2I1M2D78M3D7M1D45M5I43M1I11M2D3M3D14M2I68M2D66M1I7M2I2M2I3M4D18M3D29M4I6M1D9M5I13M5I13M3I47M2I24M3D2M3D9M4D9M1D64M4D29M1D11M4I56M3D3M1I56M3D102M3D28M3I23M3D52M4D126M3I44M2D33M3D162M5I22M3D54M5I43M3D18M4I56M3I18M1I5M2I39M1I11M5I60M5D22M2I18M2D76M1D50M3I31M1D49M3D116M3D60M3D24M2D25M5I10M4D1M3I29M2D103M1D8M2I67M1D46M1D2M3D65M2D26M3D4M3D14M1D10M1D15M5I27M4I8M3D9M4I21M4I28M5I38M2D10M5I2M2I18M5D8M1I4M2I22M5I85M3I32M2D3M3D14M1D15M5D68M2I3M4I51M4D2M3I4M2I24M4I4M2I10M2D7M1D51M3I1M1D1M2I23M1I2M4I5M5D6M4I33M1D75M2D7M1I25M2I4M2D33M4D35M5I70M2D50M5I22M3D79M2D28M4D9M5I16M1D26M3D19M3D57M1I87M5D12M3D111M3I18M2D47M5D2M4D6M4D9M5D42M1D112M4D8M3I54M2D1M3D41M5I8M1I14M1D15M3I6M2D5M5D14M2I15M2D8M3I4M5I19M5I45M3I39M5I15M4I25M2I18M4I10M1I105M2I7M5D27M4D3M1D1M1I16M4D2M2D21M3I6M5I68M2I31M1D61M4I23M2I14M2I8M1D105M2I13M3I20M3I52M3D61M5I8M4D7M4I14M1D15M1I11M1I12M4D25M3D1M1D31M5I5M3D1M3D83M2D27M4I14M1I1M1D21M1D45M4D58M1D3M1I50M5I8M4I67M4I25M5D18M4D60M1I11M2D33M4I4M3I2M2D48M1I110M4D2M3D29M3I2M1D48M5D14M4D62M3D45M5D21M3I18M1I17M1D5M4I31M4D58M4D35M5I27M3I4M5D93M5I155M5I16M5I53M1D27M2I2M4I17M3D34M5D32M2D64M5I20M2D52M1D33M1D83M5I6M1I40M5I3M5D37M5D3M4I37M5I6M5D1M2I99M3I28M2I23M2D4M1D121M1I50M3D30M2D1M2I80M4D20M5I45M4I64M4I20M4D17M2D8M2I51M2I32M1D14M4I3M2D143M1D3M5D1M1I36M3D1M1I64M5D47M4I8M1D12M2I43M1I119M3D61M1I106M3I27M5D3M5D71M1I18M3I1M1D20M2D29M5I32M4D10M5D18M3D31M5D77M4D10M5D27M5I26M2D6M4I43M2D43M1D15M1I6M3I71M3D65M4I40M2I27M4I17M2I95M5I7M2D177M3D47M5I3M2I4M3I24M3D10M4I38M1I45M1D11M2I40M2I15M5D77M3D41M5I130M2D34M1I32M3I13M3D23M3D18M1I21M2D55M * 0 0 GCCTACGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAATATGCCTAAGCCTAGGCCTAAGCCTAAGCCTAAGCCAGCGTCAGCCTAAGCGTAGCTCAGCCTAAGCCTAAATGGCCTAGGAGCCTAATGCCTAAGCTGAGCTAAACCTAAGCCTAAGCCTAAGCCTAAGCTAAGCTTAAGCCTAAGCGTAAAGCCTAAGCCTAAGCCCAAGCCTATAAGCCGAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTCAGCTTAACCTAAGCCTAAGCCTAGGCCTAACCCTAAGCGTCTAAGCCTAAGCCGTAGTAAGGCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTATGCCTAAGCCCAAGCTCTCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAAAGAGATAAGCAAACATTTTATTTTTTCAAAATTGTTTTCATGGTAAATTCAAAACGTTTTTTTTTTAGTGAAGCTTCTATATTTGGGGTACCTAATTTTGCCTGCACCTGCCTTATGCTCCTGTGTTTAGGCCTAGTACTTGTTTAAGATCCTAAACCTAATACTAAGTCTAAGCCTAAGACTAAGCCTAATACTGCCTATAAGACTTAAGGCTAAGACTTAGCCTAAGACTAAGCCTAATACCAAGCCTAAGCCTAAGACTAAGCCTAAGCCGAATAAGCCTAAGCCTAAGACTAAGCCTAATACTAAGCCTAAGCCTAGAACAGACTAAGCCTAAGACTGAGCCTAAGACTAAGCCTTATACTTAGCCTAAGCCAAAGACTCAATGAATAGCCTTAGCCTAAATATCTACAGCCTGAAACGCCTGGTAGTACACTCTTCTGAAAATACAAAAAATTTGCCATTTTTATAGCTAGGGCACTTTTGTGTCTGCCCATCTAATATAGGCAACCAAAAATAATTGCCAAGTTTTTGATGATTTGTTGCATATTGAAAATAAACATTTTTCGGGTGAAATGAATATCGTAGCTACAGAAATGGTTGTGCACTCATCTGAAAGTTTGTTTTTCTAGTTTGTTTTCTTCGCACTTTGTGCAGAATTCTTCTTGATTCTCATTGCAGAAATTTGCAAGAAAATTCGCAATTTGTATTAACAAAAATTGTTCAGTGAAAATTTTTGGAAATTAGTTTACGAATAAATCTCACATTTTTTATAGAAAAATTATTTTTAAGAATTTTTCATTTTAGGAATATTGTGCGTTATTTTAGAAAATAGCTAAATGTGATCTCTGTAATTTTGCCTGCCAAATTCAGTGAAATGTAAAAATCTAATATCCCTCATCACGTGCGACTTATTCCCGAATCAGCAAATTTTTTCAATATGATAGTTTGACATCAATAATTTGCCTATATAACTTTAGACCTGGAGTTGGCTATTAATGCCAAATTCATGATATCTAGCCACAACATTCGTTAGTAGAATTGTTGTTAGTGACGAACCTATAAACAGATTCGTGTTTTCAAGAAATTTTGCTATCATGGTTTTTCTTGGTCTTTTAACCTGGTATTTCGTTTTTGACAAAAATTTTTGTTTCTTGATTCTTGCAAAAATTTTTCCCTCACGACGGCCTTGATGTACCTTCGAAATACTACATCTTCTGGTTCTAATAGTGTTCATTGTTTTATATAAATACTTATTTAATAGGATTTCGGGTTATATAATTTGTATAAAGAGTGGTTGACATAACAAGGCTGACGAAACTTTGTGATGGCTGAAAATATTTTCGTAGCTTTGTTGATTTTTATTTATCGTGTTTGAATAACGTGTCCAATCGCCGAGAAGGAATAGAATACTGGACGACATTGTACGTATTATCCAAAAAATCAGAAAGGTAGATGACGGCACCACAATTCTTTCTGTCAGGTTTTACAACCGCCCAGTGCGTGTCACATGTTCACTGTATAAATGGTTGTACACAATATGCGGAAATAATCTAATGCATTCCAATAAGGCATAATATAAGAGGCTATCAGGCAATGCGTATCGCTCTTTGCTTTGTTTAAAGGGGGAGTAGAGTTTGTGGGGTCTATGTTTCTGAGTCTAATTTTGCCCCTGATACCGAATATCGATGTTAAAAAATTTAAAAATGTCAATTTCCCTCAATGATTTTATATTATTTTTTAAAATCCGAAATTCCATTGGATGCCTATATGTTCTAAACGCAAAATTTTCGCAGAGACCCCTGCCGCCCACGAAACCTTGCCGCACGTGTGGGTTTACGAGCTGAATATTTTCCTTTTTTATTATTTTATACCGATTTTGGTCGATTTTTCTCATTTTCTCTTTTTTTTGGTGTTTTTTATTGAAAATTTTGTGATTTTCGTAAAGTTATTCAAACTATTTATTAATAAAAACAAAAACAACTCCATTAAATATCCCATTTTCCGCAAAAGCGAAGACTAGGAAAATCGCTCTGGAGATAGAATGGATCAACAATTCTTATTATATCATTCCGCTAAAAATCATTATTAATTTTCTTCTGAGAGTCTCATTGCTTAGTTTACGCCAAGAAATAAATTAAAATTAAAATTGTTCATTTTTGAAAAAAAAATAATTAAAAAAACACATTTTTTGGAAAAAAAAATAACTAGAAAAACGGATCCTCCGCGTCGAATCACTGTTTCCGAACTCTTAAAATTCAATGTTTATTGTACAACCCTTTCGCTATTGATTTGATAGCTTTTAAGTAATAGAATTTTCGATACATTAAAACATTTCACAATTAAGCTGGTTCTGAACTGTGTAGAAGTATATTTAAACAAGACTAACTGATACAAAAATATAATTATGATAGTTTTCTGGACCACGCCAATATAAACGATGATCAATCAAGGGACCTGCTACAGTCGTCCACTAACCCGAATATCGACAAGAAAAGAAGAACGCCAACTTTGGATAGACGCTCTAGGGGCCGATGTCGGAAACTAGTCGGGAAGCTAAACCAGAATAGAGGGTACATTACAGATGAGGAGGAGGATGAAGATAGAAATATGCCGACAACATCGTCAGGCCGCTGATTTTTTTGATGTTCTACGCTTAAATTTTCAGCGAACGAACTATTTATTTTGATTGCCTTTTTAAATTTATAATATTTGCCATATGAAATTCTCACTTTCAGGCTGGAAACGTAGTTTTGCAGGCCCCGTCTCCAGTCGATTTTGCGCTGAAAATGGGATATTTAATGGAATTCTTTTTGTTTTTGTTAATAAATAGGAATAAATTTGCGAATATCACAAAATTTTCAAAACACCAAAAAAAAAGAGAAAACATGAGAAAAATCGACGAAAAATTTCGCTATAAAATCAATTAAAAATAGAAGGAAACATATATTCAGCTCGTAAACCCGCAAGTGCGGCACGGTTTGTGGGAGGGGCGGCTCTGGCGGAAAATTTTGCGTTTGAAAACGTCGATTACATGGCATCCAATGGATTTTCGGATTTTCAAAATTAATATAAAATCAGGGAAATTTTTTTAAATTTTGTCACTTCGATATTCGGTATCCGGGGCAAAATTAGAGCAGAAACATAAATTTCCCCAACTCTATCCCCCTTTAACAACCAACGCACCCGAGGATATACAAGCGTTCTATCTACTAGGCATAACTCGATTATTGACATATTATAGACTTCTTTTAATATTTGTAAAATAGTGGATCAGACCCAAAATTCAGCCCGCGAAGGCATGACGTCAGCACGGAGGAGTCTTGTAGTTTCCAGAAGAACTCTGTCGTCTACCCTAATGCCTTGCGAACCCGGGCCATCCTTTCGCTCAGAGGAAATGGATTAGAGTACTCATCAACTCCTCTGTCTAATTTTCAACTGCGGGGGCGACCGTACTGTATTACCGCGGCGACCGACACCTCCCGCGTTCCGTCGATCGCTGTCTGTTGTGTGCGCCTGCGACTCCGCCCACCGGTGGTAACTTTTTGTGGAGGAACAATTCCTTGATTTTGGTCAAGGTTTTTCTGCGCTTTTCAGCGTATTATTATTGACCAATTTTGAATAAAATTTTCAAGAATCATCTAAAATATTTAACATTTATTTAACATAAATAACGTGAGTACGCAGTAAAACTTGACATTTTCAGGAAAATTGCAATTAAACGAATAAAAATCGATATATCCATCATGTTTGGTCGTGAATCCGGTGTGTTGAGCCTACAATGCATACATTTTTACTGGATAAATCTCCTTTGGGAATCCGGTTTGCAGTGCTTTCGAAATGACATGTCCAGTTGAGAATCGCAGGCTCTAAGATGCTCGGGCTGAATAATGAATTGTTTTAAAAAATGTTTAGTAAAAAATTGTTTTCGAATGCATATTGGCTTAACCGATATTATCCAAACGTGACGTTTTCGCGATTTTCGCGCGCTAAAATTACAGTGAGTGAGGTCGACACGACAATTTTGTAAAATTACGGGCGTTCTTTAAGAAGTACTTTAGTTTAAAAAATACACTTCATTTCGTGGAATTTTCTGAATATATTTTTCATAGTTTTTCTCTTTAAATAAATCACTTTTCAACAAAAAACTATGAGACAATAGTTTGTACAGTATTCTTTAGAGGGGCACGCCTGCTCGAATTTCGCAAAAACGTGTCGTGTCGAGACCCCCATTACAGTATTTTTGAGCCGAATATCGCGAAATTTCAAGTCTGGGTGAAACATTGAAATTTTTGGCAAAATAAAAGAATCCTCTTTCAGAATATATTTTGTAAATTTCGAGACGAAATGTATACCTAAATGAATTTTAATTTTAAACCCCTATTAAATATTATTTGGCGTTTTTTATGCATGTCGATTCACTAACGATTTAGTAGTAACTACACGTGGGCAAGTTTATACAGTTTTTGGCTAAGATTTGTGAATTTGAACCGTTTTTCGGCGAACATTACACATGAAAAATTGGCAAAACGGGTTCAAAAACAAAAATTTTGTTAAACTGTAAAAACTGTCCAAAAATTTCGTAAATAACCGGCACACACCCTTTCATTTTTTCAAAATTTTAATTGTTTTCGAATGTTTTTTTTGCAGAATAATTTGTAAAATGAGCCTTTTGTGAATTTTTTTTAATTTCAAAGTTTATTTTTTCTCAAACCAACCCCTGTTGTAACTCGTCCAACTATGATCATCACGTACTGTCGAATAAGTTTCTCGTGATTTGTCACATTATCCTTGAGCTACATCCGCCAGGTTTCAGTCCTTTCTGAAAATGAAAATTAATTTTAAACAATATTGAATTATTTTAAATGAAACAGTTTTCAGAGATTTAACCTTTCGTTCGAGTCCACCACCAGGCCTGCACGTTATTCGGGTGTTATCTTTTAAAAAACTGAAAAATCGAAAATAGTTCAATTTCTGTTTTGTGGTCAAAATTGTTCAATTACAGGTAAGCAAATAGTCTTTAATTTTCAAGTGAATTGAAAATTAGGGAAATGACCGGACATAAGTTTAAAAACCCGATTGCAGTTTTCAAAGGTAAATTGAAAATTTAATAAACAGGTTGTAAATCAAGGAGATCCTATTGAATGAAAAAAAATCCGAATGTGCCGACGGGATTTTTCGGTGGTTTTTGAACGAAAATCGAAAAAGTAAATGTTTTTAATTTTCAAATTTCAATTTTTAATCGGAAAAAATGTACGAAATTGACTTTTTCATGTGAAACATTGTTGTTTTCTAGTAAAAAAAAATTTTAACCGATACAGATTTTCTAGACTCAGTTTTTTCGGTTGAATATTGTTTTTTACTATTTTATCTTTCTATTACAGATACAATTTTATTTCGCTTAAAAATAACCGGAACATCGAAAATATTTTTTTTTCTGTTTCTCAAAACATTTCAATTACCTAGAATTTTGTTTAAAAACTACATGCTTTATTTATGAACGTAGTAAATAATACCCCCTCTTATTTATAAACTTTCAACATACAATTTTTCAGTTTTCAGTGCTATCTAGTGCTTACCGCACATCACTTTTAAAGAAATCAACCAAATCGTCACCAAATATGCCCTGAAATCCATTGAATCCATAACAACTTTAATCATAACGTCGTTCGTTTCGGGCGGTGCAAACGTCTTTGGCAGTCCTTCGCTACGAATCATTATCTCCAATTCGTGGATGTTTTCCAATATATTGATCACTTTTCGTGATCAACTCCTCGACAACTTCTTCCATATCAACTTTCAATAAGAATGGCATTAAGAGATGCTTTGTAACACGTCCGATACCCGCTCCGCAGTCCAGCTGCATAGTCAAGCCGAATAGATTCTGGAAAATATTGTCATTGTAAAATTCAAAGTTGGCCCAGGGGTGACCGGCAATTTCACAGCAAATCGTTGTCAATTTTCCATGAATTTGATGCCCGAAAATTGGAAAAACGACAATTTGCCGGTTCGCTGAATTTACCTTTTTTAAATTTAATTTTCAATTCAGGCAAACGCTTTTTTCCGTTTGCCGGATATCAATTTGCAGGAATTTCTCAAAGGAATTTTTATTAAAACGGAAACACAGTGCTTTTTTTTTTCTTTCCCGTGTTTTTCAGATATTTTTATAAAGTTTACTGACTTTTCAGAATGGTGAGATGTAGGACAATTTTGTTTTAAAAAAATTGTGAAATTTCCAGCAGAACAAAAAAACATGTGCAAACCCACAAGTTGGCAAAAATATTTTGCATTTGCCGTTTTTCCCGTTTGCCGAAAAGTCTAATCTCGGTAATTGCGCCATTTTTCGAGATTTTGAGCCACATAAAAAACTTTGAACCATTTTTGAGTTAAGTATTATTACGACATTCGTTTATTTGACGCTGCACGAGAATTTTATGGGCCTATACCTTCAAAATTGTCGGGGTTTGAAAACCCCTATATGTTCGACCGAATGTTAATCTCACTTTGATGAAAATAAAATTTTCTACGGCTCATAAACGTATAGCCGCCGTCAGTCTCAAAATTTATACGATAGACACTTTATGGCGTTTATCGCCTATATTCCGTCAACAATTATTCATCTCTTTCAATGTTGTTTTTTTTTAAGGCTAAAAATGAACTTTCATGCAAATTTGTTTGATTAGGCCGTGTCGTGGTTCAACGATGCAAATTTCAGAATTTAAAAAATAAATGAAAACGAAAATGTTTCTATATACCCTATTTGTGTTCTGTGATTCCGAATACCACTGTGAAAAATTCAAAAAAAATGCCCTGATTTTATATAAATTTTTGTAAGCGTCTACAATTGTCGTTTGAATATCACACTTGGTTACACAAAATTATGAAAATGAGGAAAATTTGTTTTAATTTTTTCACATTGATAGTCGGAATCAGGAAAAAAAATAAGGTCTATAGAAAAATTCCGAACCTTTACTGCTTCTCTGGGTATAATAAATTTAAAATAAATACAGAAAATTTCAGTTCACACTGACCTAATTAAATTTGGGTATATTTCTAGGATCCGAGTTCTTGTTTACACCAGATTTACAAACTATCTAGCCTTTCACCGCCTTTTTATCATTTCCCTTCAGGCAACTCCATAAAAATCGCCTTTCGCCTCATATTACAAGATTATTCCCCTTTCTCTCCCCATTGAAAGTCATTTTCGAAACAAGCGGAAGTCATATGTGGTGTGGTGTGCGTTGGCAAACAACAAGAAAGAATCTCTGAAAACAAAAAGCGTTTTGGGTGCCCAAGTAATATTGAAAATCGTGTCTCATTTTCCATCAAAAGAAAAGGAGAAAAATTCGGCGTTTTGTTTGATTTCCGGGAAAGAAGACTCGGAAAAAGATTTAATTGACTATTTTTCAAGCAAACCTATATTGCTACAACTTTCTAAAAGGTCAGAAATTGCCGCGTAGCCTAGAAAATTGGAGGTTTAAACTCTTCCAGCTGGTAGTATTTCAGACAGGGTGCATCGAAAATTCGAAAATCCTCCTACAGAAATTAACATTTTGAAGCATCTAGAAAAGTTGAGATTATAGTACCTCACTTTTGCCGAGAAATCTCTTTCGAGGTTGAAGAGGTCTTACAAAATTTTCGGTCCTCTGACGTGAAAATGGGATGGGTTAAGGCTTCACACGACGGCGTTTTCAGGTCACACGAGAAGTTATCGTACGAGGAGAATTGACCTCCAAACCCTGATCGTGACTACAGGTCGTCGTTCGGAGCATGCGGAAGGTTCAGTGTTCGAAAATCTTCGACCAGCTTATGAGACCAGCGAAATAGACAGGACGACCAAACATTTGTGGAAGAGCTTTTCCTAGACCATCAGGATGCTATTTCGACAGAGCTGAGATAGTCGTTACGAAGTGTGGAAAAGCTGGTTTTCCAAAATCCCCGACCAGGTAGAAAATGAGACACCGATTAAGTTTATCCAGTGGGTAGAGTTTTTTCTAGGCCATCATTATGCTAGAAAAAAGCTTCGGCCATGGGGTTTTTAGGCCGTCTATTTATTTCTCATCACTTTCTCAGAAATTTCTATTTCTCAGCACCCCCCAATGATAAGTTTTTTGCAAAAAACTGCTTTGCTCATCAGCAATTCGTAATCAGGTGACCCCATTAGGCCTACCGAAACACACATTTGTCATTATTTTTCCGAATAACAAGAAAAAAGTCTTCACGCATGGGGAGATAAGAAAACCTGATTTTAAATCTTACTGTGCCGGCTGGCGCGGCGAGCTTCGATCACTGAGCCGAAAGATTAGAAAACTATGGGAATGAGGGCGTATCGTACAAATCGTCCAGGCAGAATCTGTCTAATTTTCGAACGTATATCCAGTTTTGTTATTAATTTAAGTAAACCCGTCAAACCTAGAAACAAGTAAAACGGGAGGGGGGGAATATCAGAAAATTAAATCTTGCGCACACTTTTCCATTGATCTACTAAGGTATACAATGCCCAGAGGTGTGCGGCAAATTTTGAAACTTACCCGCGCATGCCGCCCGTTTTTTTGTTTCTAGAAAAGTCAGATTTTTTGTCGAATTTGTTCAAAATTCGCTAAGATACTGTGAGTTTAGAAAAAATGACGAAAAAACTCGGAAAAGGAGGAAGAGATCTGAAATATGTAGATTTTTTTAGAAAAGACCAGGATAAATTACTGAAAAATTGGCATTTTTCGTCGAAACCCCAATATACTAAATTATGCGGATTTTTAGTTTCAAATTCAACATACAGTGCATTTTTTGGGCCTACTTCTACGACTTTAAAGGGGGGAGCATTTATGCGGGAGGGTCCTGCCGCGCATTTAGTCATCATTTTTAGCAGTTTCTGTGTAATTCAGATCACATGCAGGTCACACAATATTTATCCCATATTTAGTATGTGCCGTGCTTTTTCACAAATTAATTGTGATCTACGCGTGATCCCTGCGAATTTTGAGAAGACTTTGTTAAAAATGATGACTGTCCACGGCAAGACCCTTCGACGTATGAATGCGCCCCCCTTTAAAGTTGTATAAGTGGAAAAAAAATGCTCTAGCAAAAAATCGAACATTCTGATATTTGAATATCTCGAAATTAAAATAATTTGTGAAAAATTTTTATTTTATTTCGAAAACTACCGATTTTAGAAAAATTCTAAAATTTCGATTTTTTTTGTTGATTTTTCGATTTTTAAAATAAAATTTCATAATCTTTTAAACCGATCTCTCTTGCATTTCCTGAAAAATCGTGATTTCTATCCTTTTTCTTCAGTCCTTCAATAAATCGTTTCGACTCCGATAGGTCGGGCGCGTGAAGCGCTTCGAATCCGCCTAGCATTCCGTTGAAGTCCTGCCTCGCGCGGCTCCAGTATTCCTCCGCCCTGAGAGAGAATAGTTGAAAACATTGTTTTGAGACTTAAAAATTTTTTTTTTAGTTTTTTTCAAAAATTCTTACATGTTATAGAGTTTGTTTTTCAAATTTCTTTTTTCAGAAAAACTTAGTATTTTCGATAATTTTAGTTACAATAAAAACGAGTTTTTTTTCAAAAAATATTTCGGTTTTTTTTTTAATTTTTGGTCTAAAACCGCAAAAGATTTGCGTGTTGGCCGAACTTTTTGATTCTGTACCTTTTCAAACAACTGCAGCATTGAATTTTAGAAGATAATGAAGAGCTCATTTTGCTTATGCTCCAATGTTGCGTCAGCTGCTCCGAGCAGTCTGGAGACATGACGAAAAGACGAGGGGTCACGGATATGATGACGATACTGGAAATGAGATATTTACATTGTCTACTAGCTCATCGGGAAAATTATTACCAGAAAGATAAACAGACATGTGCGTTTTTTTAATGGAAGAGAAACACAAGAAAAATTTGGACAAACTAGGGCAGGGCTATGAGTCGATATATGGCTTCGGTCTCGACACCACTATTTTTGTTAACTAATATGGTATGGTCGCACCTATAAAGAGTACTGTAGTTTCTAACTCTCTTTGCTGCAACATAATTGACGCTCAGCGAAAACTACAGCAATTCTTCAAAAGACTATCTGTACCCTTTGTGTGGACTTACGGGCTCGATTCTCGTGCATAAACGAATTTCTGCTCGAATGATAGCCCTATGTCAATTTGGTATAGTCTTTTCTTTTGCCATTTTTCCGTGTTCTTCTAATATTTAATCTATTATTAAATTATGTAATTCTCACCCTCCTTAGAACTGCGACCGAACAGAGATTCGTCACCTCCGCCCCATATTCCGGCCAATCAGATCGAGTAGGCGGAGTTCGAAGTCGCTGATTGGTTTGAAAAGTCGCGGAAATGCAAGAAGTTTTAAGGTAGCCGTGGAAAACTGATGACTATTCTAGCGCGCTTGTGTCGATTTACGGAATCTCGATTTTCAGGAAGGAATTTTTAATTACATTTTTTCGCTCAATTAATATTCTAAATAAATAACTACATGATTTGAATTAATTTAATTTCATTCGAGCCAGTAGATCGACACATGTGCTACAGTAATCATTAGTTTTCGCAACGAGATATTTTGCGCGTACAATATTTAGTGTCCCGTAATAACTCTACTCCCTACAAACATTACGACCTCCAGAGGCCTCCAGGTAGTTGAGACTCTTGTATTTCCAATTCAGAGACAATGCGTCACTGGAAGAGAAACCGAAGCGGAAAAAAAAACACGGAAACCCAAAAATAGGGTTTGCCCCGCCCTATTCTTCTCCAATAATTGTCTTATTTTTGCAAGACTTACCACCTGTGTATGCCTTACTCGACATGCGTTAAACCCCCCCCCCCCTCCCTATCTTACAAGGTACTGATAACACTTTCAGTCTTTCACACTTTTGGCGGGGACATCGCCGCTCTTTATTCGCGGCGAGCTGATGACTCATCAATTTTTCACTCAATTCCGCTTTTGATTATCTTCAATGTTCTAGAAGGGCACATTGGTCATCCTTATTTTTTCCTTCTCTTTCTCGGGCCTTTGTTGCGCATGACCGCCCCCTACAGCAGGGCGTGGCCTGAACGGGGGCTCCGAGAGCTACTCATTCTTGCCGCGTCCCCCTCCAGCGCCACCCAAACTTCTTCGGTTCTAGAGATCGAGAAGAAGCGAACGTATGATTTTTTAAAATTATAATTGTTTCTTTCGAAAAAAAAAATTTCATTTACAGTAAGCCACAGATACAATCAACGAAACTCTTGAATTCTGCTATCTTTTCTTGCGACAGTTGCGGTTTTTGGTGAGTTTATGCTTTAGACTTTTCCGCCAAAAATACAGTTGCCGGTCTCGGTATGGCAAAATTTTTGTTAAATTCGAAAAGCAGTGAGTAAGTAGTTTCGAATTTTCGTTCCTGCTTAATTTTCATCAATTCATCGACTCATTTTTCTCACGACTTCTTCTTTATGAAAAATCAATGAGAATTCTGACTAGGTCAGGATCTTAGGGGTGAGGTACCTAGGGACGCATCACATATGCCAAACGGAAGCTGAGAGCAATCATTGGCTACAAAAATATGCTTTCAAATTGCAACGGACCTCTGGGAGACTGCAAATTCGGCCATTCTGAAATTATGCTTTTGTATGCTCGAAAGTGGTAAGAATTTAGGATTTATTACAGAAGAACGTTTAATTAGTAAAATTAGTTTTTTTATACTTGAAACAAGTACAGTAGGCCTGTATCAAAACACATTGTTGGACTTCTTATTCTACTTCATGTTTTTCTGTAATAAATTCTAAATTCTTACCACTTTCGAGCATTCAAATGCATAATTTCAGACAAGAATTTCCAGAGTCCCAGAGGTGCGTCGCAGTATTTGAAATATTCTTGTAGCCAATGATCTCAGCTTCTGTTTGGCATGTGGCGTCTCTAGGTACCTCACCCCGAAGCTTCTCCATTCCCTAGTGAGCAAACAAAATTTTGAAATTAGTACGATTTAAAGGCACATTGATTTTTCTGGGTCAAGCACAAATTTGTCGTGTCGAGACCTAGGCTACGTTAGTATTTTCGCGAAAAATCGCAAAATCTTGCAGCTGGGATATACTTGTGCGAGAATACTTTTTGCATTAATTTTGAGAAAAATTATTTTTTTTAGACTTTTTGACAAAATTTTTCGGATAGCCAATCATAAAACGGCGACCTGTGCCCGGTTGTTACATTAGGCCAACAAAGTTCCTGGGAACACTGCTGCAAACCATAATAGAGGGGTCCGGAGCATAATATCGATTTTTCGTACTTTCCTGTATTTCTTGTTCTATATGGCCGGAGTAGAACAGGATTTGAAAGTCAAAATTTTTCTCATATGGATATCACATGGATATCAAAATATTTCCATATGGATATGGAGAACATTTTTCTCCTAGGGACTTTGAAAGTTGAATCACTTGACATCTGGGGAATTAGTATTCCAGGCGTAAGTCGAATCTGTTAGAAACGGAAATGGGCATAGTGAATTAGGTAGACTTTCAATTAATCTGATCCATTGCAGTCAGACGCGGTTTCCCGGCCTGACGCCTGCCTCCAACATGCCCGCCTTCACGGCCGGTCCCGCGCCTGATTTCTGCACTGTGACGAGACAGACGAAGGTCGCCTTCTGGCGCCCGCATGGAGCACAATCGAATTGTCAGCTTCCGATGGGAGTCCGTAAATCGACACACAGGGGTACCTCAGACATTTCCCTCCCCCTTACGAATTGTTAGTGACAATTGGAGGGGGACTTCATCTCCAATCGAGACACACATATGTTGTCGTCAGTGAAGTGTAAAGATCTTAACGATTGCTGTATGATGTTAAAAAGCACTCTATGATCACCTAGGTTTTTCATCACACCCTTATTAGGTGTGGTGCCCATCGAGCACTCACGCCAGGCAGGGAGAGCACCGGTCCCTGACTAATGCGAATGTTTTAGACCGGAAAGCGATGAAAGAGCATAGAAGATCATTATCACGTCTAATTAGGTTACGGCGAAATTTGCAAAAAAGAGCAGGAAACTTGGCTCATATCCAATATAACAACCAGGACTTCCATGTAGGCGTTAAAGCGATACCACTGTATCTCACCCCAATCCGTACCTTAAGCTGAAACAAACGTGGACTTTTTTCATCTCTTAAAGGAGTTTCGTAAACGGGAAATTGTTTTAAAATGGAGTATTTGTACTTCAACAATTATTGCAAAAGAAAAACGGAAAAAATCCGCTAACATTCAGCATTTTAAGTCTCATGAAGAAGTCTTTAAAATTTCAACCGTAGAGAAATCCTGCATAGGCACGACGCTCTAGGCATTCGAATTTTAATATGTTTTGATGTTTTGAGAAAAATAATACAATAACTTCCCAGTTTTCTATAACTTTGAGAAAAAAGCGAATTAAATTCCGAAAAAACTACATTTATCAATATTTTGTTTACGAATATGGCCTAGAAAGCGCGTGGTGGCCTCGGATTCATTTGCTCGCGAAATTCAAATTCCGTCACTTTCGTCGATTTCAACGGCCCTGTAAACCCGTGCTGCATGTCAACGGATTTTTCCCGCTTATTCTTTCTTTTGCAGAAATAATTAGAAGTTTGAGTACAAATACTTGTAAAACAATTTTATTTTTGCTATTTTGACGTTGATTGATTACGGTTTTTTTGGTTTGGGACCAAAAATTCCAGAAATGTTTGGCGTGTCTAGTCTTTCGACTCGAGACTACTCTGTATTAAATAGGCAAACATTTATTTTAACACAGTTGTGACGTCATAATATTTTGATACATTTTGCAACATTACTTAAATAACCCCATTAAAAATTAACCTAATCGTGCATCAAACAAAATTTTATGGTTTTTTTGGTTTTTCGAAAATTTCAATTTTTTTTGTTTTTTGGGTTTTTTTGGTTTTTCAAAAACTTCAATTTTTTGTTTTTTGGTCCAACATTTTTTTTTGGTCTCAGCTCTTCTGGCCTACCCTAGGAGAAATAGCGCTTCAAAAACTGATGAAAACGTACAAATTTGTCGATAGAAACCAAATATTACGAAAATCTGAAAAGTTGGCTCAAATCTAGATTGGATCGGCCGATTTTCCACAAGTTTCCAAGCTTCCACAAGTCGTATCCCGAGTCGATTCAAATTGAGTTTGAATACTGCCAATTTTGAACCAAATTTCCCTGGCTTCTCTGTTATTTAAAAAAACGCGAGGCAAAAAAATAAAACGATCTAATTATTACTTTTGTGAACACAAAATTCTGAAAATCGCGCGTAAATATTGCGCAACATATTTGACGCGGAAAATATCTCGTATCGAAAACTACATTAATTCTTTAAATGACACGCTGTATGTGGTTATTTACGGGCTCAAAAAACCGACACGTTTATTTTAGAAAATGCCCGTAAATCCACACATAAGAGAGTAATTGAATATAAAAAGAATTAACCTGTAGTTTTCTACGAGATATACGCTTTGCGCGCCAACTATGTTGCGCAATACGCAACCCACCATATGGATATATACTGATGTGAGGATAAAAAACAGCAAGCCAACTTTCAGCGGTCGGCTCCGGCAGGCCTCGAGGACTGCGTCCTCAGGAGCAACTGTACAGTCTGGAGAAAGAGAACGGAGTTGATGTGAAGCAAAAGGGGCGCTGAAACCAGCAGCAGATGCCGACACATTCCTTGGATTTGTTCCATAGAAGAGAATGGTCACGTGGCAGCCATGCAGCGGTCGATGATCAATATGAGGAGTCTAGAGCTCCTTGTTATTTAGTGGTGGTGGCCGTAAAAGAGAAAACTCGGCCAAGCTGCTCGGAGTTTTTGAATTTTTGATAATCCGAAATGAAAATTGATTGCTCGAAAAGGCAATCTTTTGGAAAAACGAATTTTGTAATTTTTTTCAGCAAAAATTGCTTTTCGAATTTTTCCATTAAAAAATCGATAATTTCTCCCCGTGCAGTGGAAAACAAACAATATTTTTTTGATGATTGGCACTCTTCCAAACCCGGCGAGGACTAGGTACACTCCTGCGTCATCCCCATTATCTTATCACACTTTCTTTCGAAAATAGCGTTTGAGGTAGAGACGGAAAAGTGAGAAAGGTGAGTCAATTTTATGCGTAGATTTAGGATGATAATACACACAAATTAAAAAAACGAATGCGTGGCGTGCACTGAAACCCTCATATTTAGGCCCCGCCTAACGGTTTCACCTCTCGTCCACTCACGGAGAAAAAAATTTACGTGGGGACCAACCAATATCAGGCCTAGGCCGCCATCGTACGGGTTCCGCGCGCCGCTATGTTTAACTCTCTGTGGGTGTGGCGAGCTGTCTCCGCCCGCTGCGACTCGAGTAAAACATAGCGGCGCGCGGAACCCGTAGGAAGTCGACGGCCGATATTGTTGGACAAATTTTTTCCTTTTATCCGTCAGTGGACGACTATACAAAAAGGCGGGGCCTAACCACTTAAGATGTTTTCTGCAGTACACGCCACGAACAGTTTTTTTATGTTGAGTGTATAGGTCTAGATTCTCGAAAGTCTAACAGTTATTTAAATGATGAACTCGTGATGACTGTTAAATTGCTTTGGAAATTTCGGGGGAATTATAGAAATCGATTTTGTATCGATAAGATTTACAGGAAAAACCCAGTACCACTAATATCTAGGTATTCGATGGTAGGCAGGCGCGATTTCCTTGAGGCCTGCCTGGAATCTGTCCGGCTCACACCAAAATATGTCTATCATTTTGCTGAAAACCAAATTAAGAAATGAAAGTGTAGAGATGATGACGGAGGTCGCCTTAAGGTCAGACAGGTTAAAAAACCGATTTTAGCTATTTTAATTTTCTTAACAACCGAATTAGAAATATGCTGCTTGTCATTTTTGAGTAAAAATTATTCATACGAAAACTTCGACCAAAACCACCCCGAAAAAAATGAGGAAAATAAAGATTTTTCGAGAAAATAACAAAAAAATCCAGCAAATAGTGAAAAATAGTTCTCTCCGAGAAAAGGAGTTTAGACGCTATGAGGTAGTCTCGAAAATCATTTCAACCTAAAAGCCATAAACGGCATTATCGATTAAAATTCTCACTGAAAATCCGGTGCCCGAATTTCAGTGCTCCCCACAATCGAAGCCCGCTTGGCCGAAGTGTTGAGAGCCGGAGAACGCGGCTCGGAGTCAACCCGGAGGAAGTCCGTTTTGACGGATCTTCGTCCTCGTAATTCCAATAAATATTCTTTGCCCTACATACTTTATCCATCTGACAACTAAAATGTCAGTTCTTCTTGGCTTCAGCGGTTCTATTTGTCAAATGGTTTATTTTCCCCAGAGCGAACTCTCAAAAGGTTAAAATATTGTTCGATTACCCCTTTTTGTCAATTATTTTCTTCAATTTCTTATTTATCATTATTTTTCTAAACGAAGACGGTTGTGAATTTAAATTATGTTAATGGTCTAAACTTTCCAAACTGAATAAATTCAGCATGTTGGCACGTTTTTACAGTAGTTTTTGAGTGAAAATAGAGGTAAAAAGACAGAAAATCAATAAAAAATGAAAACAAAACTATCAATGAAAAATGGTTGAAAATCGAGCAAAAATCGTTCAAAAAAAAATAAATTCGAAAAAATAATTGCGTCGAGGAACGCGTCAGTACTCTCTGCGACTCTCACCCTTCAGCACGCGCGCCACGAGAAATGCGCAATGGCTAAATTCGCGCGGAAAATCATTTCGTTTTTCAACATTAAACAAATTCGACGAGTAAATCGCTCAATACTTAAGTAAGTATGGATTTTCAGCTCGTTCAAAAAATTTTCAGAACCGTTTTAAAGTCGTAAGGTTTTTTTTTAAATCGTCGGAAGTAAAAAAATAGCGCGGAAATCTACGGAGTGCGGAGCGAACACAGGCGCTGTAATTCAAATGGGTAGAATAGTCAAAATTGAAAGTTCGCCAGCACGACCATATTTTCAAAACTTAATGGTAGATTTTTTCGTTTTTCTTTTGTGGTATTTCGGCATTTAAGATTAGAGAGCACATTTTAAAGTAAAATTCCCCATCCAAGTCGCACTCACCTTCTCCAGCCATTTCCAATTGGAAAAGTGTATTATATCCCGTCTTTTTTTTTCTGAACAATAAATTTTTCGTTTATCCAGGATAGTCATGATACAAATTCGTTAACAAAAAATGAATAAATGAGAGCGATTAAAGCATTGTCGGAAAATATGGGTTAAGGAGAAGGGGGCGGACTTTTGGATGGGGTACAAAAACCATCAATATGCAAAAACTGGGCTAAAAGCAATATTTTCAAATTATGCCCGACAAAGGTTCAAAAGTCAATATATAGAAATGAGAACATGAGTATTATGCCACGTGGCGGGAAAAATACGTGGAGTGTAATACGATGATCAGATCCTTGTGAATACAAAGTTTGTGACGACGTGGCCGAGAAGAACTTTGTAAGCCAATGCGTAAAAAGGGGTTCAGTCTAGGCCGAAATTTTTTTTGGGCCACATATTAAGTTAAATTAATTAAAAAAAATCACAGCGTATCCAATTTGCCGAGTTTTGACTTGAGCTCGGCGCGATACGTGTCGATTGACTCAAAATATTGTTTTTTTTTATTTCCGAATAAAAAATGGTGAGTACCTCCAAAATTAGCTTTTCATTGTCCATATAGAACTTTTTGATTTGTTCCACAGTTTTTGTGGCCATCCGGCGATCCAAACTCGAAATTGTCATTTCCTGGTACCAGTGGAAACCTGAAGGAATTTCGGATGTTTTTGCTTAATCATAATCATGATAATCTTACGTGAAACATAAGACTTGGAAAACGAGATTTTTCGAGAGTTCGAATTCAATTTATCTTCAGATTTTATTGCAACAAATCAATTTTCAACATAAAATAATTTTTCCAACTTTTTTTCCCAATTTATGAGAGTTTAAACATTGTTTTAAAGCAAACCGCCAACATTACATAAAAAATTAAAATATTGTTGAAGGAAAAAAATGATGAAATAGATTTTCTGACAAAAAATTTAATTTTTTTGGATTCGCGCTTCAATTATTGCGTTCTTTAAGAAGAGTGATCGAATTTTATATTTCCAATTGTAAAAAAATTTAAAATGGAATGAAACCTTTCCAAAGAAAAACTGAATATCACCAGAACTTGTGATTTTTCAGCATTTATTTTTAGGTTTGAATTTTTTTTTCATGATTGCCAAACGTGAAAAGTGCAATTTTACCGAACATTTAAAAAATCAAGATTTTTCAATTCTCTCTGAATTCCTGCAGATTTTTCGATGAAAAATTGAATTTTCCTTGGGTAATATTATTTTTCGGGAATTTATCAGTTTTTAAAAAAAATTTTATTGTCTCTGAAGTTCTCGATAAAAAATTATTTTCTGCAAAAAATCTACTTTTTCTCATTGAATATTCCGTAAAAAAAATCAGAATTACAAGGCACATTTCCTTTTCTAATCTACCGTATAATAATTCAATATTCTTTTAAAAATTCGGGGTAGATAATGAATTGTACCAATTTTTATTAAAGTTAATTTTTCTAATTTACGTTTCAAAATTTTCTTGAATAGTTTTTGGAATTACAGATTGTTTCAAAAAAATTTATTTTGTTTTTTTTTCTCGAAAATTTGAAATCCATACATTCTAATAGCATTCTTTCTGTTCCTCAGGACTCCAAACATAATTTATCCTGACCTTTCCAGATCGATTGCCATTTGTTGCAATAGTATCTAGTTCAGAAATCTCTCGAACCATCTTCCCTTCAACGCCATAATATGTTTCGCTTCCAATTTGCATTTTCTCCTTTTGGTACACGGCTGTATGTCATTGGTGCACGGAACATTGGTTGACGGGCTTCTTCATTCAGAATTCTGGAAAAGTTGATGTTGTGCGATTTTTTTTGGGTAAAAAAAACAATTTTCGTAAGTTTAATTAACTAATATTTTAAAAAATCTGTCTCAGTTTCTGAGGCACCACGGGTTCAAGATCTGGTGGGATTGCCTCCCGGATCTGGCACCGTGCCAACGCATTGAATGCAATTTTTCTGAAAAAAGGGCAACGAAGATCCGATTTAAAAAAATTTTTCAATTATTTTCCAAAGTTTTCACGAACTATAAGAACGGAGCAATTTTTCACAAAAATTCCAGTTCCTTTTTATGTTAGAATTTAAAAAAAAAATTGAATTTTTCCTAAAAAATTAGTACATTTTCCGATATCTCAAGTGTGCCATAAGAGCCTAAAATCAGAAAACTTTTAAAGGAAAAATTTTGAGCATTCTTATCAAAAAATCAACTTCTTCTCACAATGTTACCTTATTTTCTTTCTAAATTCTGAAAAGCATATCTCAGCTTTTGCTAAACTATTTTTTACCTCAAATTTTGAGAAAATTAAAATATAAGAGCTATGATATAGTAAATATTTTATTTTCTAATAATTTTTGGTATTTCTATTCTTTCGTTTTTTCATTTTTCAAAAATTCCACATAGTTTTAAATGTTCATATTATTTCTTTTGTCCAGGAAAACTCGTAAATTTTAGTACAACTTTAAACCGGAAGATTGATCTTTTAAATTTTTTTTTCAAAAAATTTGAATCTTCGACATGAAAGATGTAGAAGTGTGATTTAAAAATAAAAGTGCAGGTATTTTCAGTTTACAGCAAAAGTCAGTTTAAAAAATTTCGACTGGTTTTCAAAATGAGTTTCCTTTTTTGTACACGTAGAACTTTTTTTATTTTCCGATTTCTGGCGTTTAGTTGCAGAAATTTTTTTTCCGCAAAGTCAGGAAAAATTCAGAAAAATAGGACAGTCAAAAAATTGTAGCTACAATTTTTTGAGTGTCTTTTTCTGAATTTTTCCTACGATTTTGCGGAAAAAAAAACTTATTTTTTCATGAAATCGAGTACCCATCCAATTCCACAAACTTACTCGTTCTCCTCCATACATTTCGTTTGTTCTCCAAACAAGTGGAAAACACATATGATGTTTTCTCATATTATCATTCCAGTACAGCCGGTGTATCGACCGAAGCTCCGTGCCACAGATTCTGCACGTATTCCATCGATTGGATCAGCTTCAATCGCTTTCTCCACAATGGCCTGAGGTTGAGAAGGGAGTCGTCTGGAGAAAAATAGAATAGAATCATGATTTTTAGGTTATTTTACGTTTAAAAATCTAATTTTTAAGACGCGTAAACGTTGGGCTCATTTATAAAAAATCGGCACACCGGCAACTTTGCCGAAATTTCGGAAAATTGTCGGTTTGCACATTTTTGCGGATCGTGAAAGTTCAGAACTTCGATTTCAATCCGCAAAATTGTATACATCCTATCAAAACATCAATCTTGAAAGGCCATTAAATACTCTCTATGGTCTAAAGAAAAGAAAACGATGGTGTAAAAAGATGCAGTTTTAAATGTTGTCTTATTAATAACAAAATTCGACAATTTGCCGGAATTGCAATTTTTTTTTCTCCAACTTCCGAAAAAAACCCACCGACCACCATAATATCATCGTCTTCTTCTGTTTCTTTTCCAATTCCAAGCCCTTTGATCGCTTTTCCGGTGGCTGGCTGCATGAGCTCAAGGTATCCGTATACATAGATTTTCATGTCTGAAAGAAAATTCAAATTTCTTCTGGAATGTTACTCGAAAGTATCATTCCGGACATTACTCGTTGCCGTCGTTTGGTCAGTGCACGGAGGCTTGCCGGACGTGGAACACGCATCAAACGTAAATAAAGGATACACGGTTCACATCCGTGACGCGACATTACACATTTAGCTTAAAATTGTGAAATTAATTTTTTTTAATAGCATCTTTTTTTTTAAATTTCGCCCATGCTTTTTCCATTTTTTCAACGAGTTTCCTTATTTTTTGTCCATTTACTGTAAGTTTTTGAGAATTGTTTTTTGTTAATTTAACATTAGCAAACATTTATTAGCAAAAATTTTATTAGCAAAAAAACTTTTTTAATTTTTTTAAATTAGCTCAAAATTCTCGAAATTTTAGATTTTTAAAGGGTAAACAATATAAAACTTAGGGAGTTTTGAGCTATAAAACGATAAATTGATTTGAAAAAGGATGATAAACTTAGTTTAAAAAACCGACAAAAATAGACTAAAATGAAGGGAACACGGCAGCAGCTTAGCCCCATGCTTAGCCAGCAGCCCTGTAGCAACCCAGTATCAATAATATCCCGTGCCAATTTTCTAGAACTGAATATAAATTGGGTTGCAATGTTGCTAAAGGGCTGCGAAAGACTGAACTGGGATGAACCTGGGCTGCAAGGGGCTGCGAAGTGCTGCGAGGGCAAAGCTCAGGCTACAGTGCTAAAAGGGGGCTGAGCCCAGACACTCAGGAAAAAACTCCATACTCGCAGCCGCACCACATTTGCGCTCTGATCGCGTGCTATCCGCGCGCACAGAAATTCGAAAGTATTACTGTTCCAAATTCGGAATGCGCGCACGAGGGAGAAGACGCAATTAGAGCGCGGATCTGCACGTAAGGAAGAAGTGGGACTGGAGCACGAACCAGTAATCTAGTCGCGCCTCCGCTCTCCAGGAGGTCTAGAGCGATTTGCCGAGCAGGTCAGCCCTTCGCAGCCCTTCAGGAAGTACAATCAAAATTATACAGAAATTTTATATTGGAACGGGATATCATTGATACGCCTAAACAGCCCTATTAAATAGTGATGACGGCGTAAATGAAATTCGCCATTTCCAGCTAACATATAAATTTTTTTTTTTTAACATTGATATGAATGGATTCAGCAGAAAATTTGCCGAAGTCATTGGAAAATATTAAGATTTCCAGATTTCGGTACTCCACTTTTAAAACTGAATTTTAAAACTGTAGTCTTTATTCAATGTTTCTTTCAAAATTTAAAAAGTAGAATATGTGAGAAAAATTTCCAAAATTGTCAAAATCTCTAATAGCTGAAATATTTCACGGCCAACCGGCGGGGGGTACATGAGAATTCTCTACCGTATGATTCCAATTTGGCTGACTGCGTGCTCAACGTTGACTAATACTGAGTGTAAACTTTTCGTACACCGTTGCGTACTGCACAGCGCGCATTTTAATTGACGACATTTAGCAAAAATTATAAGATTTTTCGGAATTATGAAGCGCAATTTTCACAAAAATAATGAGTTATTTGTAGAATTTATGAAAAATCGTGAAGATTTTTTTCTTGATATTCAAGAACAAGCAATTTTTTTCTTAACAGAGGAATCCTCTCGCATGCACCTGTTGTTTTTTGCTCCACTTTAGGACGATAAAAATGCGAATTGTTGATAAAATGAATGATAAATAATATAGAGTAAAAGTGCAAATATGACTTCAGCAAGTTTTAAACCCAAATTTTTCCTGGTCGATTTTCTGTTAGATTCCTGGTTTTGAGTAAACAGTCTGATATATTCCTGATTATAATGATAACAATCACGAACATAAGAATTGTAGAGCACAGAGAAACAACAAATTGCAAACACAGCAACTGATATCAGAATTAACGACGGAAGTACCACGGAAACCTCCTCGGTCTCCACCTCGCCCACCACGGAAGCCACCACCTCTGTCGCGTCCTCTGAATCCTCCTCGATCTCCACCGAATCCACCTCTCCTCCATCGCGGTCTTCTGATATACCACGGAAGCCTCCACCTCCACCAGGATCTGTTGAGAGTCCTCTGAAGCCTCCTCGATCGCCACCTAAAACCACGGAAGCCACCACGATCCGCGGATTTTCCTCTATAGCCTTCGAGGCTTCAGTTGTACCCCATTCTTGGCACGCCTCAGATCTCTACAAAAAAAACAAATTAGAAGCATTTCAGACCATGCTTATCGAAATGTGTACCTATCCCGCTTTATCGCAATCTGTCTATACGTCTTATCCTTTTGGTTCTCAACTTCTTTAACTTGTCCAGTAGCGAGCTTGCTAACGAGCAGCATTTTCCCGAATCGCCTTCACCTCAGCCTCCACAGCATCCAGTGGCTCCTTGACAATCGTAACTTCGAGTAATACGTTGCTCACTCTCCTGCTCACGACGCTATTTCATCTGCTTCTTTTTATTGTCACCGCATTATGGTTGTGATAGAGATTAACCTCTCCGTCTCATCGATTTGTCCACTTCTTCATTTTTGACTCCGAGTTCCAGCGTCAGTCGGGTCCGATCTCACGAAGACGGACCGTAGCTATTCTGGCGAATTCCGCAGTCACGTCCTTCAAAAATGTCTTGTGGATGTTCTTCTTGCTGAGGGGGCTGCTGAAACCAATGTCGGCATGATGAGAGTTCCGGTATTCTGAATCCTTTTCCTGCGTGGGCTAGCGACGAGCTGCACGTCTGAAAATCAACGTTTTTGGAATTTTTGGGCGCATGATCTGGAGCTACAGAATCATTCGATTCTTAGAATCAGCATGCTTTTATTCATATTTTAGGATCTTTTTAAAAAATCTGGACCAAAAGTTTTCGAAAAAATTTTAATTTTTGTGACTATCAGAAATTTGAATATTCACTAAATCGAAAAAAATCATTGCAAAATCCATTCGTCAGCTGAGAACATTCAAAACTTATCAATTTGAAATCAGCATATTTCAGTGTATAATTAAAAAAGTTTCAAAAATTCTGAGACTTTTATTTTTGAGAAAAATAATTATTCGCTCGAATTATTGAATTTTCACTAAGCAACAGTAAACTTGCGCCCATGCTACAAGCCTGAATCTTTCAAATTAAGAACCAGCATGATTTTTTCAATATTCTAGGACGTTTAAAAAAAATCTGGACGAAGTTTTTGAGGAACGTAATTTATACAAAAATGTTCTGATTTTTCACTAAACTCAATTTATAAAAATAGTCAACGTTGCCCATGCTGTACACCTAAATCATTATGCGGAAATTCAGAACCGCCATGTATTTTTTCTTACCAAAGGCTCTTTAAAAAAAATGTGGACCAAGAGTTTTGATATTTAGAAAAATAACTCACTTTTCGACGTTTTTCGCCTTCTCGTTGCTAACCCGACAGTTGATTTTTGCGGCGATTTGTGGCGCTGAAAATTTTTAGTTTTATTAACGAAGAAAACAAGAAAAAACGACGAGAAAACATCAGAAAAATGCGAAAAAACATCGAAAAACCACCGCAACCTCGTGCTAATAACAAAAAAAAAGCATTGCAGCCGCGGGACTAGTTTTCGCAACTGTCTAGGCCATGTCCCGTTCGCCGTGCCGTGTATTTGTTTAATTCCCTTTTTGGAAAAAGTCAACATATTTCTCTAACAAATCGTTTTTCTATTAATTTTTGTCTAAAATTCACAATCAACAGATCTTTTGCATTGCAATTCTCACAATATCCCGACAGGAAACCTCAGTTACAAATCTGATTCACCTCTTTGAATAGTTCATTATTAGTGACGGTTTCATTCAAAGCACATTAATCATTGTTTTAAACTTTTGCACTTCGTGTTTTATGTAATAGAATTGTAATGGACAAAAGAAAGCAAGAGCGTTGGGGCATCTGCAAAAAATCATGAAATTTATTCTCTTTTTATGATTAAATTAGAATTTTCTAAAATTCCCTTTTTTTGACATATGCACTTACAGCCGCATGAATCTTGTTGAACCGTTTTCCGAAATGAAAGAAAGTGGACAAAAGACCAATGTTGATTCTTCTCCAATCATCATGAATTTCTTTTCTTCTCATCGCTTGAACCATCGCAGCGTCGAAATTACTTGACTGTCTCGTTGTTCAGAATGAACAGACCTGTAAAATCAGTTACTTTTTTTTAGCAATTTAAACAAAGTACTATTTCCAAAAAATAGGGAAAAAAAGGTTTGATTTTATAAACTCTCGAATTTTTATTATGGTCAATTGTTATTTTTTCCAGAGAAAAACTCATTCTCCCAATATTCAGAAGTTTCTCTCTAAATTTTTTTCCCATCGTACCCTTATCTATAGGTAATTGATATGACGTACGATCCAGTCTGAGATGTCTTCTGTAAGCCGTTTCTCGTTCATTTCGTCTGGAACCGCCCAATCAAGTTGATCTCTGTACGGTTCTTTTTCCAATTGCTTGCAGTTGGCTGTATAATCGCCTGATAGCGTGTTCGGTTCCCACGTGGATTAGATTGTCGACATTGAAAGTGGATTTGCTGGAGGAAATTGGGAATTTTTCAAGGTTTTAAGTGGATTTTCAAGCTATTTATAAAAGCAGGAAAAAGCTCAGAAATAAACTTTTTTTACGTCGTGTTTTTTCCAATGGAATTACCTACTTTTAACTAATTGTTCGGTTTAAACCCAGAAACTTGTTTCATATGGATTTTCCCGGTGAAAATAGAAGGAATCGTCGCATTCTCAAAGTTTTTTCACCGATTTGTTTCAATTTTAGCACAACTCAATGAATCACAAAAATTCCATTAGAGCCGATTTTCGTAAATTGGTTCCTACATTTCGAACGAAAAATTGTCCTTTCTGTTTAAACCGGAAATTCTCTTTTGAAAAACCAATGAAAATTTGAATTTTCTGCGCTTTTCTTCGGAAAATTATTCTCGAAGTTTATCAATCGATCCTTGGTCTTTTTTTGTTCCGCAGATAACGGCTGGCGGAGTTTACAAGCGTACCAAGTGGTTCAACTTTTATGCGATAAAGCTTTATAAATGGGACATAGATGAATAATATTTCGAGAGGCTAAATGCAAAAAGAATGAGTAAAAAAGCGCGCAGCCCCGTCCATCTCTGACGAAAAACGCCGTTTAAGGATCGGCTGGATTGCAATTTCCGAATGGGAGTAGTTCGAAGTGTCAAAATGCCGGAGAGGTAGTCGTCAAATTTCACCGAAACGTAACCCGGTAATTTCCACAATTAATGGTCGATTTTTCGCAACAAGTGGTATGTTTGTCAGGATTTATATTGTGGCAGTCCAGATTTTAAGGATTATTTTTGGGCAAAAATGTCGAAGTAATTTTCTCTGAAAAAGTTCGTTTATTATAATTCAGATTTTTTAGATAGTTTTCATCAATTTTGCCAGTTTTCAGCCTGAGAACCTTACTAAAGTACGATGTGTATCATGAGCGCCCCTTTCATGAAGCTAACGAGCTTCAGCTTCATCTTCGTCCTCTTCATCCTCCAAATCTTCATCCTCATCGCCCATTGATTCCCCAGACGTTGTTTCGCGTTTGCTCATGGATCTTATAGGACGAGCCTGAAGATTCAATTCTTTTAAATTCAAATTTACCGCTTAAAAATCGATAATTCTCCCGTACTCTGGTTTCTTCTTCTTGTTCCGCCTGCTCCTCTGGATCATCTTCCTCCATTGACTAGGGCCGGCATTCAACATATTCAAGCCTTCGTCTGAATTTCTGGCCAATTTATACAAAAACCGACAAAATAATAAGCATCACTTTCTTTTCGCGTCTTCGTCAGAGACGTGTGAATCCATTTCCTGGAATTTGAGTTTGAATGTTTTTAAACAAATTTTATGGAGAAAACATTCGAAACACTAGAACTTCTGTTGAAACACGAGAAAATTTTTTGAAAATCCATGAGAAAAACAGTTTTGAAAAATCTGTTTTTGGAGGCTCTCCGTTGAGGAATCGTCACCCGAGACGCAGATTCTCCGGTTTTTTCATAGTTTGAGTTTAAGAACAAAACAGTTTAAAAAAATGTTTTTAGTATTTGAATGTAACTTATAATGTATGTTTTACTTCCATTAAAAATTAAAAAAAACTACAACCCTAAATTATCATGTAAATTTGAAACCGTGAATCAATCTCCGCGGAAGGGCGAGCCTATATTCCGCAAGCGCACTCTATCGCTAATGTACAATGGGCGGTTTTTCTAACTGCTAGGAATTAATCGGATTCTCGAAGTTGATTTTGGGTTTCTTTTTTTCGGGAACATATTGGTGTTTTTGCGTTCAATATTCAAACTTAGAGGAAAACTGCTTCAAATAATTAGGGAAACTCTTGAAACGAAAGCGCTGAAAACAGGCAAAAATAATTATTTTTGTATTTTTTAGGCTACTTTCTATACTTTTGCGTACATACTATAGTTATTCTATAACAGCCATTAAAATTATTAAAATGATTTTTCCATTAAAAATAAAATGAGCAAAATGATTCTTTTCCAGAATCCTATATGCGCCTTTAAAATCTCTCGGATTACTGTTTCAAAGAAATTCTCCTTTATATTTTTAATTTTAAATTTTTTCCTGAATGTCAAATATTAGGGTAAAAATCATAATAATATGTGCTATTCATATGAGTGTGGGCAAGAATTAGTGAAAAAGAACAAAAACACGTATGGACTGTAAAATTGGAATTTTGAAAATAAAAATAATATGCAGAAACAATTAAAATTTCCAGGAAAAAAGTCAGTAAAACCATCAAGAAAAAACTACTCGATTTTGAAGGAAATCAGCAAGAAATATCGTAGAAAAAAGTATGTTTAATTTGGAAAACCCCTGCTTGAATTTGTTTACAGTAAATTGGGCATAAAAGCGTATTGGCAAATTCGCAAAAACAAAAATCTGGGGATCGTGATGTGATGGAGTTGGGTTTTGTGAAAAAATTCAGCGCGGAAAAAATTGAGTAGACTATTTCAAAAATGTCGATTTTTGAAATTTGTGAAAAATTGAACAAAAACTGTTTTTTTTTGGAATTTCAAGAAGTTTTATAAATTTTTTTGGTTAAGATCAATTTTGAATATTATCTAGTTTGGTTTCACTTAACCATGCAGAACAATTCGTACAAAGGTATTCTAGAAAGGAAATGTGCGCTCCAGCACATTATTTGCTCGTGGAGCGCACTTGTGTGCACGTACGCTAGACCAGAATGTGTGGTAGAAAGGGAGGGAATAGGAAAAACAACAAATTGGGCAATGTAAGATTCGGAGAAAGAATTGGAACGAAACAATATGTATTTCGAGCTCCGCGAGCTGGTGGATCAATCCACAGGCTCTCCATCCTTGCGTTTTCGAGAGGCACATTGCATTCTAGTTACACACACCCGAGCACGTGTATAATGGAACATTGAAGCCTGGAAACGAGCCATCGCTACCATCATTACCACGTGGATGAAAAACTTAAATTTTGATGATTCGAAAATTTTCTGGAAAAGTTATGATTGTGAGATAAATTGAATTCTTTGAAAAATCAAAATTGCAAATGCTTGTAGAAAATTTTATATATTTTTTTAAGCGTATCTTTTCTGTATACATTTCCAAATTTTTTTGTTACCCAATTTTAAAGATTTTATTGAATTTTAAAATTCCTTTCAGTAATTCGGAAACTTTTTTTCAACTTTTTGATTTTCCGCATTTTTTAAAATTTTATTCAAGGAGAATTATTAGATTCTTTTGAATTTAACGAATTCTGTTCGCTAAAAAATTTTTCGATTTTTCCTGATTTAACGTCTGACAAATATATCTGGTTTTTTTATTTTCCTGATTTTTCTGTTCGATTAAAAATTTATAAAAACAAGTTTTTTTCTAATTTTTGGTTTTGATGATTGTGTATTTTTTCTGAACTTTACAGTTTACGATGACACCGATCTTCCACATTAAAAAATTCGATACAAAAAAGCATTAACATGATTTTTAAAATTTGAATTATTTTTCAAAAAAAATAATATTTCAACTGTGTTTTCGGAATTTTCGATTTTTTCTGAGTTTTTTTTGGAATTTTTCCTCCTTTCTGCTACCAGAAAAATATTGCCAAATTCAATGTTGTGTAGTAATTGTATTCAAAAAAAGTGTTCAACTTCTGAGTCTAAACCTTTTCCGAATCCTTAAATCCTTGCAGAGCTCTCGTGAATTCAGTTGTCAATTATGTGAATAGCAAGCTGCGTAACATTTTAATGAAAGTTTTAGTTTGTCAAGGACTCGATTAATTTCCGAATAATCATAATCATCGACTCGAAGATCATATAATCCTTGAGTATAGTTCCAAATTACTTTGCTTCACGGAAAGCAGCAGTGTCAATTTCATTTTGATTCACGGCGGCTGGTGGTTCTCCTTCTCCAGATGCATGGGATGAGCCGGATGGCCTGAAAAATTAATTTTTTGGAATTATTATATTTTTCGGTTTATTTCATGCATCTCGATTATTTTAACAAAATTACCAAATTCAACTAGATTACAACTTGCACTGTGTCGATTTACGGGTTTTGGCGTTATACGAGTTGAATTTGTTTATCGATAGAATATTAAAATTTAGCTAAAATTGAGTAGACTATAAGAAGAATTTTTTTAACTTCAAAAATCATTCGAGGCAAAAACGTCACGAGCGTCAGGATCGACACAGTAGTCATTTATATAAAAACCAGTTTCGGCCACGAAATATCTCGCGCCATTCTTCAAACATCTTGGGTAGTACGTATTCTCAAAACTGTGAGTTCACGTATAATATTCATGCGAAATTTTGGTCTACTTTGTTAGAGAAATCATCACTAACATATTGCCAGTAGGCCGAATATGATATCGAACATTCGATCACGCCGTGACGTCATCTAAGTGTATCCGTATATTCATTCGTTATTATAAACATGATCCCATCCAACTTCTTCAACTCGGAAGGGCGGAATATCCTTTTCAGGTCTTCATTCTAAATTCAATATATCCAAAGTTGAATGGTGCGAGTAAATTGGATAATTTTACACGGCGCTTTTTCGCATAATATCTTCTCCATTTTTATCGATATTTGCATACATCATGATACAGGCGAGTAGTTTTTCCGTTTGGAACTATCTGTTGCTGCAGGAGCACTAATCATAAATGATTCAATAGTTTCAGTAGTCATTGCACACATCTTCGCTGGTGGCCTTGTCCTTTTTCCGACGTCTTTTCCAGCTCACTGATCAAATACTTCAGTTGGCCGACGATCTGGCATTCCTCATTTCGTTCATGATATAGGCCGACTGGCCTCCCAAGAGTCGGGTCGACATTATCGATATTAAGGAAATCAATCTGATCTTGTGTCAAATAACACGACGTTCGAATCCAATACAGCATATAACTGTGCACATTGCGTGAGTCGTTGAGATCTATTCCGACGGCGAGGTAGAGAGCAAACCGAGCAAGTTGTAACGATCGCCCAGGACGTCTGGCGTGCGGCGAGCGAAGAGCACCTGGAAATTTTCCTTGAGAAAAACCTATCATCGTTGTTATACGTTCCTTCACTTGGCATTGGAGTTGGCAGCATATGTTTTGAAAAAACGTTGTTTTTGTTGAAAGAACATTTTATATACGGGACCATGAGATAATATTCCTATTTCCTTACTGGCGCGAAACCAAAATATGCAGGCCACGGCAACGAGAGCGCATATGGCAAAGAGAGACGAATCTTATTTTCTTGTAATTTTTACGGTTTTAAAATAATTTAGAATCCTTTTCAACTATCTTGATTGTAAAATATTACAAATTACAGAATTTCGCTACCAAATTTACTGGAAATCTAAACTCTGAGAATGCGCATGGAGCAACATATTTGACGCGCAAAGCTCGTAGCGAAAACTACAGTTATTCTTTAAATGACCACTGTAGCGCTTGTGTCGATTTACGGGTTCGGTTTTTTAAAGAATTTTCGTGTTGTTCGAGAAGTGACAGTGGTATTCCTTTTCCTTCTTTCTTAATCCTATTATTTTATCATTATATGCTTAATTTTAATATTCAATTCATACAACTAAATTATTAATATTTCGAGTAGACATTCTAAGAATTCCGGTAGTATTCGCTTCGAGATATTTTTCGCGTGAAATATTGTTGTGAAATACGCATTCTTAGAATAGATGGTGCTCCCGTAATAATCAGATAAGAAAAGATTTAGTCCAAGAACTTTCCGAAGATTTCAATATTTGCAAAATCAGAAACCTGACCCCCGAAGATTCTTTAAATTTTAGAAATTTTTCAAGGTTTGCTAAATAACTCTAACTTATTTCTTCTATTAATAGGCCTGCAATACTTTTTCGATGGTCTTGCCGCTTCGGGCAATAACTATTAGGGAGTGCAAGTCTAATAGAGAGTGCCATACTATTCTTCAGAAAGTTTTTCCGTGTTGGGGCTAGATTCTATTTGAAAAAACTCCAATTTTATTTGGAAGTATAGAAAATTTGATTGAAATTGCAACAAAAAGCACAATAACGACTTCCAGCTCGAAAAATTTTGTTATAAACTGTTGCATAACAGGGAAAAAATGTTATTAAAAATGTTTTATTAGTAAGAAGTGTTACAAAAAAAAGTAGGTGCAAGACTATTAGGGAGTGCAACACTAATAGGTGCACTACTAATTTTCGGAAGGTCTCCGGGCAATACTAATACAGGGAGTGCAAATCTAATAGGGAGGCCATATTAATAGAAGATATACGGTATATATAGCTTTGAAAAATCGGAAAATGCCTAATTTTGCTACTTTTTGAGGTTTGAAAATCTCTAAAAATTCAATAAATAAAATTTGGGTCAAATTACCGCTAGATTATTCCCATGAATCATCCATGGTCTATGACAATTCGAATCAAATAAACCAATTTTCGAAATTTCATGTATGACCAATCATTGCCCAACAACCACATTTCTTGTCCACCCCAAGCTTTGCCAGAAATTTGCGACGATGATGATCCATAAGTGATAGGCATCTCTGACGTGATGCAGCCATTAGTGCAATTGGTAAGACGAGCCGAAGCTGGTAGATCACTTATATCAACGAACATATGGCCATAACTTCCTGTCAAATTATGAACATGTAGAGTTGGGAGTTTACATGTCCAGCTGGAATAATATGGAAACGTGAGGGAACAATTAGTTCGAGACGGGGAGGGGCAGGTTGGCTTAGGGTGCCAACCGACATAGCCGAACATTGGGGTTTCTGATCAGCTTAGCGCCAGCCGACCGTCTACTAGTACTGCAGCTAAATTTTCGTCGGCTGTCGGCTGGTGAAAATTTTCATAATCAATTTTAATGGATGTTCCAAATTTTTCCCTAACTTGACCAAATTTGTTTGCTGGCCCAGCGACACCCGATAATTTAGATCATTGCGCATTACGGCAGAGGCTACTTGGCAGAAACTTTATAATTTTAAATTCAGAAATTCAATTCGTTTTCAAATAATATTTTTTATAACTTTACCGATCAATCACTTCAATCGGATCAAATTTGAGCCAATACATCGCTTGCACTTTTTAGTTGTAGTGTGCATGTGTAGATCTTTTTATCTGCGAAGTGAGTCAATGAAGAATATTCGCGACCAGTTTCTAAAACTCAGTTTTCTAAGGAAATTTCTGAAAAGAAATTCGAGAAAAAACTGAGTCAGCAAAAGAAAATGGGAAATGTATGTCTGGAAATGTATTCGAATATTATATTCAAAACAGTTTTCAAAAAAACAACGATAGCAATGGTGATCAGAAAGGAAGGAACTGGGCGAAAAAAATTATCTTTGAATCTCTTTGCATCTTTGTGATCTAAAAGATAAAGGTTTCACATTGGAGATTTGTGAATGTGATAAGGGTGAAAAATGGAGATTAATTGTGGTAAGTAAATTCAGGAAAAACCTAATTTTTGGTGAGAAAATTGTGGAAAAACTATAAAAGAATCTTTGGGGTTTAAAACTCAAGTTTTTCGCTGTTTCCGCACTGTGCTGACCAGTTTTTTGAGAGTTTGGCCGAATTCGGTGATTAGATCAAAAAAATAATTTCAAAACTTTGCGCCTCAAGTGTGACGTATTCGTACTCTATTGCCGTTCCACCAAAATTTCCTTCATTGTTTTGTCATTTTTCTGCATAATAACTGATCTGGGTTTTTTTGCTGCATCACCCAAGTGTACGAATTTCCCTAAAAATTATACCGGTATTTTTTCAAAATTTTTAGTCGCTAGAATCTTTTTTATTTTCTTTAAAAAAAGAGTTTTCTCGCGAGTAGAAGGAGAAAAAATGTGTGGCCATACTTCTTCGTTAAAGAATGCACGACTAGCTATAGCTCAAGCCCCCTCTGGAACGTTCCATCTTCCTCCCATTTTCCCACGTTCGAGAATCACTTCTTTCCCTCAGCTTCTCTTCTTCTAAAACCACAACTAGACAAATGTGCTTGTTTTCCATTTTTCACATCGCCGAGAAACCCGCTATCACAGACTCAATGCGCCTTCACCGGAGACGGGGCTATTTGTGTGTGTACATTGTACTGATCTCTGCGTGATATACGAACACCGGCCTCGGATTGAACCAGAGGGGGGGGGGGAGGGGGGGGGGTGTGGTAAAAAAAGAGAAATACTCTGAAATTCAATCTAGAAGTAGAAAGAAAACAAAGCGAAAAATTGGACATTCGTCCGGCTAAAAAATCTCATGGAAAACAAAATCTACTCCGTTCGATTTGTGAGCATTTTCATCCTATCTCTCTCACAAACCCGACTAAGGAAACGATAAAGCCTGGGCCCATCCCCAAAGTGTGCTCTCATGCTCTGGAGCGTTCTAGACTGTCTGTAGAGCCACAACTGGCGGAATAGCACTGAAGTGATGGAGAGCCGTAGAGAGAAGAAAAAAACGATTTGGTGGCGGAGGAGATGGCTTCGGCCCTCCAAATAAACAACAATTACTCGATATCGTTTCCTCTGTGATGGTGTTCTCTTCAATGTTTACTGTACGATATTGAACAGGAAATTAAATTGAGGTACACTCTGAATACATATACACAATAAATAAATACAAAAACTATAGTTTCCGCACAAAAAATTCAAAAAAAAAACGATTTTTTTTGTCCGAGAGGAGTATATGGCCTAGAAAAATAAAACTCGCCGATGCCTCTTTGGTCTGATGAAACTTTAAAAAATTATGGCCGAATTTTAGATTTCTCAGGCCAATATTGATACGTTTGTCGATAAGTACCATAAATTAGTCGGTTTTTCACGGGATTCTTCATTCCTCATGCTCATATTTTTCCTCCATTGGCAATCTCCTGCTGGACAACGCGTGGGAAATCGTGTGCCCTACACGGGCAAATACATTTTGTTTTACAAAGCAAACCGTGCCGCGACGCGACACGCAACGAGCCGTAAATCTACCCCAGATATGGCCGAGCTATGCCCTAACCTGTCAAAATCTTCCACTTCAAAAGATGAGGGAAGCCATAGAAGCTCCGCGTGTTGTTTCTGAAAAAAAAACCCGCCTAAAGTTGATTTAAATTATCGTTTCTTTGGAAATAATAAAATCGATGAATTTGTCGATATTGATAAATTTCCGATAAAAAAAAAATTACTTAAAAGAGGAAAAAAAATTCTCTTTTAGTACCAACAAATACGCCCATTGGACTAACCAAATCGTTCTTTCAATCTTTGTTTAAATCTTTGTGCGTCTATAATTGTCGCTTCGGAAAACTACACAAAATCACACACACACACAAGGAGAAGAAAAGAAAAAACGTGTTCCATGACCTGCCATCTGGGCTGATCGATCTGTGAATTGGGGAAAATTGAGGTATACTGGTTTTTTATCGGGAAGATTTTTTCGGAAGGATTGAGATGAAAGTTCGAAAGGTAATTCGCAAAGTTGAGATTTGAAAAATTCGAAAAAAAGACAATCTCAATTCTGCTGTAACCCCCAATTTTGCGTCATGGCCCAGAGTATGCAGCGTGCCCTAGAAATTACTAACGTGGCCTACAAAGATCACGGCGGTATCTATGATTTTCTATGTGCGTGACCTAGAATATACAAGACCTAGATTGATTGCGTAGAACATCTCCCAGTATATCCTAGCAGTCTTAAGTGGCAGTTTCTCAGTTAGTACGCCCAAGAATTCTCACGTCAGCATGACCTAGGATGTTAAAGCGTGGCCTACGAATTTTCAGTGTCTTCTAGGATATTCCAGTCTAAAAATTGGTTCAGTGAGGCCTGAAATCATCGCGTGTCCTAGAATGTTTAATTGCAAAAAAAAGATTTGAAAACTAGTATTTCCCTAGAATTCAGTCTGAGCATTATTTTTAATCTAGTTTTAAGGAAAAAATCAAAATAATAAACATTTTTTGATTAATGTCTCCGATCTACAGATGGGTGCAAGAAAGAATGCAACATTGTGATTGCTCGGTGGAGCATGACGATAAAAGAAAGAGACAGGTCCCTCACCTCCCCAGTGGTCGAAACAATTATAAATTGGACAAACGGAGAAGGGGTCGGGCAGACACAAGAGAGAGAGTACGTGAAGAGGGTGTCCAGGAAAAATGGGATGAGGGCAAATCTAGTTCAAAGATGAGCACTTTTCAGGATCTTTGATTCTGAGAAAATCAGATTTTGAACAAAAAGAATAGTTCATAATTTAATGGCATACATAGAAATATTTTCAGATTGTTCTTCAAAGAAAAATATTTTTATGGGACATCAAAGTTTATTTATTGCATTCTTCCAAAACAGTGGCCGGTCTGGACAGTTCGAATTTTTGTTAAATGCGAGGAGGTGTGCGCCTTTAAAGAGTACTGTAATCATTTCCAACTTTCGTTTTAATATTTACTTGTGGGAAAACATTAATGCTTAACGAAAAATGACAGTACTCTTTAAAAGAGCACATCTTCTCGCTTGTGACAAGCATTTTCGCGTCTCGGTGACAACTTTTAAGTTAAAGGCACAATGATAGAACTTTTCTGAAGAATTTAATTTATTTTTAAGTTAATTGCTACTGGGCTGTATCCTTTTTCAAGTCGCACGAGAGCCAAACTGTAGCAAATCTTAAGAAAAAAAGTCGACAAAACGTGCCGAAATTAGTAAACTTGAGAGCTTTAAAACTCTATTATCAGTTCTTCGCCAACAAAAAGAGTACCGTATCAGAAACGACCTTCGACTTTTTTGGCTCTCCTGCAACTACGGACATGAATTAGTTCTTATTGACAGTTTTCAAGTTTTTTTTTGGGAGTTTTATTTATTGTGCATTTAAAAAATCGTACTTTTAAGTTTGATGCGTGGCCTAGAATTTGCCCGTGTGAGCATCTCTCCACGGTAGCCAAGAAATTTTCTACCGTGGCCTAAAAACTGCCAGTGTAGAAATACTTTATTGTGGCCTAAATTTTCCAATGGTCCTGTTCTTTTTATAGTTCGAATGCACTTGACTTTTCGTTCGACCTGGAAGCGTAAAGAGTGGTGGCCTAGAAAACGATTCATGAGCAGAGTATTGAAAAAAAAACGAAATTTCGAGCAACAAGCGAACAAAAATCGTCTGTCGATAGAGTCTTTCGAATACTGGGGATGCAAATCAGCAATTCATTCTAAAAAAACTTTTGTGATAAGAAATCAAACTGATAAGCCAGTGTAAAGTCACGTAAAGAGGATTGAAAATAGCATTTCAGGTCGGGGTACGGTAGGGTTTTTGTAGAAATCTTAATGCAACATTTCAATGGGCAACGAGTTCGTGGCCTAGAAAAATCATGTCTGAAAAATTTGCAAATGCGCTCCGGTAGCCCGGATTGGTTAAAAATTTTCAATGCCTATTTGAAGTGGCGGCCTAGAATATACCAAATAATGGTCTAGTACTCAAATTGGCGGCATAGAAATCAACCTAATGAGCTAGAGAATCTTGTAGGCAGCTTTGATCACCTATGATAGGCGGAGGTGATAGGTAAAATTGTAGACAAAGGTAAGTTGAACATAGGCGTAGTCGTTTGCAGGCATACATAGGTCATTTATTAGGCAGATGAGGCCTGATTGTACAGTGCCGTCCAAAAATATATCCTATCTTTGACTTTCGATAAATTTACAAATTGCGTTTTCAAACGAGCACAACTTTAATACTAGAAATGTTATCGGAAAAAGTTCAACTCATGTATGTATTGCCCATCATTACGTCTACTCGTATTCAATTGTTTGTTGTTCAGGCTACCTACTGTCACGGTCCGACATCAAATACAGCGGCCGACATCTCGTAAGCCCGTTTTTGACAGCCCACGTTTACTGATTCGGCCGTATCTCGAAAACTTATTTTTTTCTGAAAATGTTAAAGTGAAATAGTTTTCATATTATTTGTTATCATTTGTGTTTATTCACTTTGTTCTGAAAAATCCAGTAAAAGTTATGGGAGTGCAAACTTGTCGCTCACTGCAGCTTAAACAATCAAAAATCAGGTTACTTAACTATAGTTAGTTCTAATTTTTTTTTTGTAGAGCATTTTTTAGAAATAACACATGTAAAATCACATTGAGCGAGCTATATTCAAACACGATGATTCAGGAAAAAATTCATTGGTGGCGAGAAATGTTCACGGCGTAACACTATTCAAGTTTGATCTCTCATAACTCTTTTTCTGGATTTTTCAGAACGAAATGAATAGACATAATGACAAGTAGAAAACTATTTTAACAACACCTCGAAAAAAAAATCGCTCCTCGACATACGGCCGAATCACTGAGTCGTTGTCAAAAACGGGCTCACGAGATGTCGGCCGCTGGATTATTTGTCGTGGCACTGGTAAAAAACTTAAAAAATTGAATACAAGTAGACGGAGTTATGGGCAATACTTCATCTGTTAGCGAACTTTTTTCACAGGATATTTCTAGTTTTAAAGTTGTGCTCGTTTGGAAAAGTTGTAGCAAGTTATCAAAAATCGAAGATGGCATATGTTTTGGCCGGTCCTGTAGGTTAAATAATCTCGTTATCAGGTGTAGCATGAATCAAAGCCATGTAGGCGGGCGTAGGTATCTTCTAGCCGAGTAGGCGTGTTACCTAAGGAGTCAAATGCAGACGTAAGTAATCATAAATAATTCACACTTTGTGCGCAGGCGTAGCTCACCTTGTTAGACAATCATAGTTAGCTTTTAAGTAGGGTTAGGACACCTATTATAGGCAGGTTTAATTCCTCTTATATGTGTGCGTAGAACACGATATAGTCAGGTGTAGGTCACTTTGTAGGCAACACGTCTAGGTTCTTCTTTCGGCAGGCGAAGGTCATCTTCTGAGCAAGGTTTGCCTTGTAGAAGGGTCGATGTACGTTGCCGTAGGCAGACTAAGTTACCTTCTGGGCCTGCCTATAGTGACTAGTAAGGCAGGTGTTCGAACCAAGGGTGTCAGTGACCCGTAAAAATTACAACAACGGGACAACTGGATGTCCCGTTCCCGTCAAAATTTTGAAAACGGGACAACACGTCCCGGTCCCACGAAAACACCCAAAAAACGGGACAACGGGACCCGTTCCCGTGAAAATGCGCTCAAAAACGGGACAAAAACGAGACGTCCCGTTCCCGTAAAAATGACAAAAACGGGACACCGGGACTTCCCCTTCCCGTGAGAATGTATTTTGAAAACAACGGGACGTCCCGTTCCCGTGAAAACACCCAAATACACCCAAAAAAACCGGACAACGGGACAAAGAGACGGGACACGGGAGACACCCTGGTTGGCACCGCACTGAAGAATGCTGAAACCAACTTTTTTTTCAAAAATGGCCCTGCTCAACGAGCCGAATGCATTTTGGTCGTATAATATTGGCATACCTTTTTGCCACCGTGAGAATCATTGAACAAAATCATGCACTTTCAATTTCATTTTTCATTTCATCAAATAAAAAGATTCGGGGATTTGATATATATTGGAAAGTAATAAATGAATGGGAGATTTGTATGGATCGAGGGGGAAAAGTGCACACCCCGGGAAATGATCAATTTGGAGCAGGCAATTGAAGGAGCTGGAGCAGGAGGCTACACTAACCACCCCTTCACAGCTAAACACATGGCTAATAAAATTGAATATTTGAAGTGAACTACTAGTGATAAGCGGTGAAACGGGGTATGTGGCCCTCATTTTTTTTTGACACTTCGAAAACCGCATTTCTTATCACTTGTGTGCAGAAGCATTGAAGCAGGAGGCAAGTGGTGGTCTAAAAATTAGAAAAGCTCGGCCACTGCTTGCCCGATAGGAGCACACGGTCGCATACTGTTTCAACAGAAATTCGAAAAAATTGGAAAATCCCGTTGATTCCGCTGAATCCGACGATTAAAGAAATTTATCCTCGCGTTTCTGATTGCACTGAAATCGCTCAGTATTCTAGAAATTTGTTTTCTGCGAGTGTATATTGTTTTGGAAATGTTGTGTTCATGTTTTACGAAGAACAATATAATATTATGTATATTAGTTATTATATATTATTATAATAGAAATTTTACAACGTAAAAACCCCAAACTTCTAGAAGAAATTGCCTCGCGTGTCTCATTACAATAAAATCAGTTTTTTTCCTTTATTTTATATTACAATATGTATATCGATTCAGCAAAACGGGCGGGACAGAAAATTAAGAAAATGGCGAATAGTTCGTTCCCGCGGAAGTAAATTTCCCCGAATTGGGGAGAAAAAATTCGAATTTTTACTGGATTTGTCTCAAGCTTTTGAATCTAGAAACAGTTTCTCTCTAGTAGAATCTCTTTAAAAAATTTTCGTTGCACCAAAAAGTCACTTTTCCTACTGAATGCGAATTAAAACATTCCGCCAGGAGACCACACAAAATCGAGAGACTTAGTTAGACAAGTAGTGGGAAAATAAGAGGCAACAAATCATCTCCGAAAGTTTTTTTGTGCAGAGTAGGGGAGAAGTTGCGGCGCTGAAAGACAGAGAAAGGGAGAGAGAGACAGAGAGGGTGAGAGATATAACAGAAAACCAGTATGGCGGAGGAAGAGAAGAAAAAAGTGTTAGAAATATTTGTCCGTCGACGCCTTCTTCGTCTTCGTCCTTCATAAATGAAACCATGAATTTTCCTCAGATATTGCCTTACTATTAAATGGGGCCCACGGGGGGCGAAAGGGTGTGGCCGGCCGATCCAAAACGGTGGCCTAGCAAAATATCGGCGGTGGCTCACGGTATCAAACAAAAAAACAAACATCGAATGACCATAATTTTTAAGCTTTTCAGTTTTTGGAGTCATTTCTGATTTTTATCCCAAAAATAGAGCTCTGTGCTATTTTTATGCAGAATCAGCTGGCTAAACTTGGTTTTCGGAATTTGTGCGAGTCTTAGAGATTCCCGACACAGCATCGAGTTTTACTGGAGAACACGTAGCGAGCACAGAAAAGGAAGGAAACAAGAATTGGCTCCGCGAGCAACCAAGCAGCCGTTCAAGAACAAACTGACCGAGCAAAGAACAGCGCGATAGGGCTCATGTATATCTTCTAAAAATAATGGATACTGGATAGAGAGATGAGAGACAGCAGCAGATGGTCAAATGACGACAAGCCACTTTCGAAGATTATTTGGTTTATTCATGCGTGTCTTTTTTTTTCTTGCAAGAAAAAATGATCATTAGCCGAAAATTAAATATTGGTTGTCCGAAGTACAGAAATGAAAATAAATCGTCCGCAAGGAGTACAAAATTCAAAATGGCTATTATCAAAGAGAAGGACACAATTCAAAAGTGTATATTGTCCGAGCAGGAGTACAAGATCCAAAAAATGAATTGTCCGAGAGGAGTAAAAATTCAAACCACAAAAATCCTGAGAATTTCAAGAAAGGGGCGGAGCCTGATTCGAGTGGACTGTCGTTGCAAAACGCAAAACTTCAAAAACATACCGTTTTCAAAATCTACCTCGCCGACCTACCGTAACCCTCTAAAATTTCTCTAGGATCAAATATCATCGCAAGAAGTGTTCGTTCGAAACGAAAAACGTATTTCTGACGCCTCATCACTCATCTTATCAGTAACAAACCTGAGAGAGACGGAAACAAAGTTCCGAACTATATTTTGAACCGAACAGGGATCCTGCAAATCACGTAATGGACAAAATGCATTGCTATGCAGCAAGACGCAATTGCATTCTTCAGCCAGAATATCGATTTTTACTACGTACGTATAGTGATAAAAAAAATAGATGCTGAGTTACGATCTTTAATTCGCCGGATGTGCGAGGTTTGCATTTTTTTTAGCCTTTCGAATTGTCGTGCAGAAAAACCCGTAAGCATGATTTTTCTCAGTAAAAATTTCTTGCGCCAAAATTGTCTTCTATTTTTTTCGCGAAAAATCAAAAATCTCCAAAACTTCGGTGGAGCGCACTTTCTGGACCACAATAAGCGAAACATCTCTTTCTGCGGTTTTCAAAAAATAAACGAACAAACATCAACAAGAAACGAGAGAGAGGTTTTGTTGCCTTAAAAAAATGGATATCGAATTTCTGTGCTCCATTTCCCTCTCCGAGAAATGGCGCGGGGAACGTGCAAACAGTGCGAGTATGTCTAATGGCTCTCACGTAGATCGAGAATCTCGAGTGGAAACTTTGCTAGTATAGACAGTTGAAGGAGGCCGGAGTCTTTTATTCTATTGGGGAACCGAGAAAATTTGTTTATGTCTGGCCGTGGAGCGTAGTTAATGTAATTTTTTTGCATTAAACGTGCTCCATCGAACAAGTAAAAAAATATGCATACTAGTATGTACCTTAAAATAGTTGTAACACGAATTGCCTGTGGAAATAAAAATCACGGCAAGTTCTCTCCATAGGATCAATGTAGGGAATTTTGCTGTTTATAATGCAAACGTCGAAGTCTCTAAAAAGCTACAATTTTCGATCGGTATCGTTCATGCATTTCGACTGATTTTCGTTATTTTTTATTGGAGTACGCTCGTTCTATCGAAACACGGGGCCCGAGAAAATATTATATCCAAAATCTAGAGAGGTTGTCTTGCGCTTAGCCGAAGTGAAGATTAAAATTGTTCAGCCTGCGTTGCCCGACGACTTTTTGTAAAACTTGGCCACCAACTTTTTTACGAGGCTGCGGCTACATCGCATTTGGGTGACTTTATATGTGTTCAGGGTGTCCAAACATGCACCCAAAAGAGAGTGTCATTTTTAACGCACGAAACAGCAATCTCAAACGGGGCGACAAAAAATGAGAGAGAGAGAAAGACGGGCGCAATCTAATGTTTTATCAGTGTTCTCTTCTTCTCCTCCGACCTCGTTTGCATCCCCCTAATTAATCATTCGTTGGTTTGTAATACAGAGAGAGGGAAATAGTGAGTGTGAGGGAAAATTGGAGATTGAGAGAGTTAGAAATAGAGAGTGAGAACTTCAAGTCACTTTTTAGCCGTTTTAAAAAGTTTTGGTCGATGATTTTGACATTTGATAAACCTGAATGAGAGATGATGCTTAGATAAATGAAAATTGAGATGATAATTATACATGACTTCACTTAGAGCGATGTTGTTTCACGTGCAAATTGGTGATTCGTCGAGAAGTTGTGACTGTTCGTGTCGGGAAAATTTCACTAGCTGTGAGCGCCCTTTTTAAAATGTAAAGTAGCATAATTTATTTTCAGAAAATTTAGCGTTGGAAAAATAAGTAGTGCGCAACATATTTGACTCCCAAAACGTTTTGTAGCGAAAACTACAGTAACTCTTTAAACAATACTGGTTTGGTTCTGGTGTCGCGGGCTGCCAAAATTCGAAAGTAAATTCATTAATAATCGAACCAGTAAATCGAGCGCTGCAGATGACAGTGGAGGAATTAATGTTGTTTTCGCTACTAGATATGCGTCAAACATGTTGCGCAGGACACATTCTCAGAATTTTGTGTTCCCGTGATATAACAATTCATTTTTCTGTCCCATATAACCTCTTTCAATTATAAGAAACCATTTGCAGCGAAACACAAACAATTTAGCCGATTTCTATTTCACCTATAAAATTCGCGTCAATGGCCCGCGCTGTCGAGATCATAAAACCATATGTTATGCAAATGGCGTAAAATTCAACGGTGGCCGCCCGCATGGTCATTGATCGTTATAAGCAGAATGGAGGAGGGTACGGGGAGCATCACTTTCCTGAAATGAGCCCGCGAGAGATTAGAGAATTAGAGAAATGAGAGATCAATGAGAGGGTGAAAGGTATGAAAATAAGAAAGGGATGTAAATGAACACGGATGGAAATAGATGGAATAATGAAGTGCGCAATCGATGCACCATCTCAGATTTTTCGGTTTTCGCGGCAGATAGTTGAGGAATTACATTTTTCGGGCTCCATCGATAATGCCCTGCCGGACAGCGCGTTATGTGAGTCTCCACAGGGGCAAATACCTTTAGTTTTACAATGCGAAACCCGAGCTGCGACAACGCGCCGTAAATCGCCCCCAGCCGTGACCGAAAATGGCCTAATTCGTCAAACTTTTACATTCCAAAATATCAGGGAAACCAGGTGCGCGTTTCCTGTTGTCCGAAAAAAGATTACAACAAAAGAGAAGAAATGGAGCATTTGCGCGCCATACACTTTGAGACAATTTCATTTTCCACATCCTATATATATTTTCGTTTTTCTGTCGTATTTTGTTGACTTTTAATTTATTGGTATTTCGACCGATTCAAAAATAATTATTTTGACTGTATTTTGCATACATGTAGAACTGGTGTTTTTTAAGATATTCGGCCCATTCAAGTTTTTCAGTGTATAATTGATATATGATTTCATTCCGAACTGAAAATTATATCGAAACGATGGAAAACCTCGGATATTAATACTGATTATAGTGGCAAGAAGAGAGGAATCGGAAAGTTCGTATGGATCAAGTTCACCGATTCTCGAAACACAGTCATCTGGCCGAAACTTGACGAAGTTACTGAGGATGAATATTCTAATTCGAGCAGTAATGAAACTAGCGACGAAGAGGAAAACCTCATACAAGAAGTACCAAAAGTCTTAGCTATAACAGAGAGGTAAGAATTGTGTCTTCTAGTGACTTTTCGCCAGATTCTCTAATATAATATATTTTGTTGTAGAGAGAAGAAAAGTTAACGGAAAACGAGACGAATTCGTTTTAACGGTAATCCTTGAAGTACAAACTAGCAATACTAAAAAATGCGTGAACGAGATCTTATTTTCAATATAATCATGGGCAAAACGATGAAATTATGAAAAGTCTCTTATTGGATACCGATGGAACTATGACTGCAGCAACAAGGCTTGTTCGGAATGTGCCTACGATTGGAATCAGTGCCAAGTTACTCTCTGGACTGGATTTATTAAAAATAATATGAGCTGCACGTGGCACTGCAAAAAACCGCTTCGCTTCAACAATGCTTCTTGTGGTTGGTTTGCTTTTCAAAAAATAGTTCACTGTTTCAGAGGTTCAACCAAGTCGCTTCTTCATGTTGAAAATGCGGTGCCCACCCGGACCATGTAATCGCTCTTCCGGAAACACATTGGCGACCGATTTTGTTGGTCCACCTCTAGTTCTGTGCGAGAACAGTGATACAACTAGTATTTTCAGGACAAAGGCTCGACTGACTGCGGAAGCTCCCGCATCTGAGGAGAATCTCAAATCAGGATTCCATTCCAAAGCGACAACTCGAACGCTTTCCAAAGATCGCATCAGAACGATCCACAACGTTCATCAGCCGAAGAACATGCGGAGCCAGATATCGTGGTGGATGGCTGAGTACGCAGCTCGAATGCCTTAAGGCGAAACAATTGGTTTTTTAATTAAGCTTGCTGGTCATGTTAATTTTGAACGTGTTAGTTCACATTGTTTTTTTTTTTAAATGTGTGTTGTTCTAATAAATTTGATTAATCACACGTTTTCTAGTCTACTACGTGCGTCACGAGATATCAGTGGTTTCTTCTTATCAGAAGCTGAATCATTTCCGGTTGTCAATGTTTGTAGGTCAAAAGAAAGGCTGTGTGATTTCGACCATTGATTTGTTTATATGGATAAGTTCCTGCCTTTTGGAAGGGCAGTATTCCCGGTATATATGGGCCTAATACGGAATCGAAAATAACCTGACACAAACCTGACGTTGCCTGTTGCCGGCGGCGGCTTAGTAACTTGACAGCGGGTCGCGATTTCACCTGCCTGTTCTCCATTCTGCAGCGAGCGACCTGCTGGCAGGTTGCCACTAAGCTGACGCGGTTTACCTGTGTTATGGCGCGTGCTCAGTCGTTTCAGGAAACTAGTAGCATCAGAAGATCGGGGTTCGGGAAACTGCCATCCGGGGCTTGAAGGTTCTATGAAACAGGGCGAATGACAAGGAGAGGCAATAAACAAGTAGTAGGCGTCCTCTAGAAAACATTTTTGTCTTTAATACGCGTTTCCTACTGATGCCTTATTTATTGATATTTGGATCCCCTTTTCTAGAATAAAAAATCAGAATCAGCAGAAAAATTTGAGAAAAAGTCATCGCCACTCAGAGTTGGTCGGAGTAAATCAGAGATAGGCATAGTAAATCATAGCTAGTCAGAGAATATCAGAGTTAATCCGGGTAATAAGTAACCTAGTCATAGCATATCAGAGCTAGGCATAGTCAAGCGTGGTTACTCCCAGTAAAACCACACTTGCACCGAACTGCGGCTAGTGTGCTTTACCTGTAACTCCGCTTTTTACTCTGAGTTAGTATGATATGATTTGTCTGAGCTGTGGTTGGGCTTCGCGGAACTTGAATAATTCGAGACAAAATCTAAAAATTTTAGCGAATTTTGTTTAATTTATTTGAGGTTCTACGACAGAACTCGAAAAATTTCGGGTTTTAATGTTTACACATTTTATAAATTTAAAATTGAATACTCAACTGTGGGACTCCTCGAAAATCACATGCTCATTTAAATTTTGAAGTTCGAACCTCAAAAAACGCGCAAAAACCAAATTCAGCTAGGATATCAAATTTATGATTGAACCCACATCTATATTTTGATGCGGTTTATAGTTTCTGAAGTTTTCGCGATAAAATCCGAATAATAATTACCCGTACCGTATATTCTCAATCTAATTCCCAGGTCATTTTTTCATGCAGCACTATGAGAGACTGTCGTTACTACTGGACAAAAGAGCATTAATTTTCGAACGGCTACTTTTAATTAAAGATCACTAGTATTTAGTCACAAAAGCTATTTTTTAAGCAGAAATTCATAAAAATGTTTTCAATAGCGAACTTTTGTAACCAAAAGACCCAGTAAAACGATTCAATTACTTTCGTCAATTATCAAAAAATCATCAAAAATATACAAAAAAATACCAAAAAATATTGAAACTTTCAAGTGACTCTTTCAATAGAAAATGGGGAGCACTAATACTGCTGATTTTTCGGACCCTTTTTGAATGCAGCACTATTAGAGACTGCAGGATTTACTACTGGAGTGATGCTGCACTAATAGAGAATATACGGTATATAATATATTCTTGCAGAAAAAAGTACGATTATCAATGAAAATTAGCTGATAAGAGGCTTTTGTTTGAACTAAGACGACGGAACGCCTCTAGTTCAAAAAATTCTAAAACCACGTTGTGTCAGGCATGTCTCATTGCGGTTTGATCTACGAAAAATGCGGGAATATTTTTCCAGAAGAATTGACGTCAGCACGCTCTTAACCATGCGAACCGCAGATGAGATGTCTGCGTCTCTTTTCCCGCATTTTAAGTTCAAAAGGGACTTTCTGACACCACGTGTAAAAAGGGGTTACGACGGACCCTGGCCTAGAATTAGGCGTGAAAATGCTCTGGCACTGATGTAGTGAACCGCGATGCAAAATTGGGGGCCGAAAATTAGGCTTTCCTTGCGAGAACGATTACTTAAAAATGTTTTCCTTTGTCGAAAATTTAAAAAACACACCACATGTATTCATCTCGACCAACGCCTCGTAAATGTTTTCAAAAAAGGCGGGTAAAATTAGTTGAATTCGCCAAGAGGAAATTCACCGCTGTTGAGCGCGTGCAAAAATTTCAGCACTTGCTGACGGTGTTTCCACAAATTACACCGATTAGTGGGGCAGAAAACACGTGCACACTCTTTCAATAAAACTAGAAAATAAATCCCAGGCCTGCATATATTGCACAAACCGTAATCCCCTTCGCGCTAAACAACACGCGCAACGATGCTCCGCTTGGGAAGGAAAAATTAATTTAACTCGGGCTTTTCATTAAACAATTTTTACATCGTTAATTTTTCGATGTTTTCACTGCGAAAAAGTGTTAAAATAACGATTTTTAAACCTATCTTCAATGAATCCGTGCAAAAAATCGCGATTTCTCGAGTTTTGAAAGAAATTTATGAAACAATCGGCATTTTTAATAATGGTTTGAAATAAAAATCTAAATTTTTTTTCGGTGCAGAAAAGTCGTTGCTCGCACAGTTTTTTTAAAGCATTTTCACATCAAACTCCGCCTTTTTTCCAGTAAATCGATCTAATATGTAGGGAGTGCGAGACAAAGCTGAGCGACGGCGCAAGCGGCTGGCTTCGCCGAGTATCCCGACAGATATCGATCCAAAAGACAGACTACTCGCCATATATCTTCCAGGCGATTTGGGCGCTTTCCAGTTGTACGGTAAATTTTCCGACTTTCAAGGTAGAAAAGTGTAGAAAAATCGAACTTACTTCTTAAAACTCGAAAAAATCGAATTCTTTCAGGATTCGGCAACTAGACGAGCTCCTAACCGACAATGTTGAAATACTGGCCAGGGGCCGCAGCCGCACACGATTCTTCTAGAATTCCAGAAAAGACCGACGTGGCTATGATGATGTTCTATTTGGATTTAAACGACGAGTCTTATACACCGTCAAAGCGCAATTTTTGGCTTTTTCAAACGAAAAAATACAATAAACCCTGAATATCCAGTTTGTTTCTCAATTTTTGCCTAAAAAACGGCTTTTTCACTCGCTTATCATTTACAATTTGAACAACAAGTTTTTTAAAGGATAAACATGAATTTCTAGCTTTTTCAGAGGTTTTCGATTAAAAAATAGAGATTTTTGTGATATCGGACGGATAAATTACCAAAGCTTGCTGTCGATTTTTTTAAATATTTTTTACTTAAAAATCTGCAATTTTTTTTTTCGAGGAAACATGTGAATTTCAAGCTTCAGAGATTTTCTATGAAAAAGGTTCGTGCCGAGACCCATGTGCTTTAAACTTCAGAATTTTCCCAATTTGAAATTAAAAAGAGAATGAAAATTGTCATGGAAAAATGCGTTTTTGGCCCAAAACCTCCAAAACTTCGAGTACAAATATAGGTCGAGTTTCAACTGTTTTCGATCAATTTTTTTGCAGAATTCAAGTAAAAATGGGTTAGCACCATCTCACGATATATTTTTCCGTCAAACACAAACATTTAACGAGCCCCAGGGATGGACAATTATCGATTTACGCGAGAAAAATGGGAAACCGAATTGCGTTTTTTGGCTTCAAGTATTATTCAGAATGATCAAAATGGCAGAGATGCTCATATAACGTAGACGAATTGAGAATTTCAGAACGAAAATTGCCGAAAAAATAGAAATTTTAGCGAATTTGAGTCGGAAATTTCGAAATGATTGACATTTTTAAGCAAATTTCCAACTAAAATCTAATATGCAAATTTGATCTGTTTATATTTTTCTTTAATTGTTCTAAAAACCTTAATAAACAATTAAAAATTGAAGTAAAATTAATTTTTTAACTTTGAAAGGATTTTTTGATTGAAAATTTTCACAATTTATTTTGTGGTGGGGCTAATTAAAATCGTTGTTTTTTTTTTCAAAAAAGTTAAAAAAACTTTAGTCAGAAATTGCCTTGTAAAATATGTTTTTTCTCTAGACCTCGTAGTCACGAGGACGCGTAGGTCGCCTCGCAAATTTGAAAAACTCAAGAAAAATCAATAAATTTGTGATTAATCAAGAAAAAAAATTTAATTTCCTGGTCTCAGACACGAATGCTTCGAAAAAAAAAAAGAGGCGAGCCTACGCTAATATAGTTGACCACGCCCACAAAATGGGCAAATCAAGTTTGGCACAATCTTTCAAAAAATCGAAACAAAAATTTTTCCAATTTTGTGAGATTTTACGAAAATTTCCGTTGGAAAATCGAAAAAAAATATTCTCGTTTTTTATTTTTCAAAAAAAAATGTGCCTAAAATTCATAAAATAAATCAATACTTTCTCAAAATTTCAACAGTCCATCTTCCAGGCACGTTCAAGAGTCCTTGGACCCCATCAGGCGATGTCTCCACGAACGAATCGAATATTCACGGGAGAACCACACGGACCGATTCCCGATAAAAATATCAATTTCGACGGCTAGGATTTTGCCAATTTTATCGATCACTCACTTCTTCACTTCGTTACATTTATCCGCCTCCAGTGATTCCAGATAATGAGCCAGTTTTGCATTGAAATTTAGTGCGAAAGGCCATATAGAGCATGATTTAACATAAAATTTCGAATTGATAAACAATGGAAAAACATGGTGCTATGATGCTTTTTTAACACTTTTAATTGTTCCAATTTGAGAAGTAAAATTTTCAGCTGATAAATCAACTGATTTTCTATATACCTCTGCCACTAAAGCTTAAAAACTTGCCCCAGTGCTGTCCTAACCTTCAAATAGCTGGCAAGTCTATTTATTATTCTTGTTTCATACTATTGAGATTGCTTCGCGAGACCCCAACCCATTTACCTGTAGTTAAATATACGAATAATTATTTATATATTTTCTTTAAATTTCCTTAGTATACTATTTTTCTGATCTCTCTTCAAAAAACGCTAGAAAAAATAAACAAATGTCGGTTTAAAAATGCCCGGTAATTTACCTTCTATAGTTTTTCGAAAAAAAAACCGATGAAATTCAGATGGAAATTCCCGATCCCGAACTGCCGGGAACACCGGTTGGTCCGCAAGATTTGGAGATTCTAGACACGCCCGGTTATACGAGAAGCTTAGTGCGTTTCGTGTCGGGACCCGGAAATTTGACATTTTTGGCGCGCGGCTTATTAGAATAACTCCAAACCTTGTCAAAGATGTTTTTTTCGAATTAAATAACATTCGTGCTTGGGCTCGGATATTCACAGAAATTTTGATTTGGAAACAATTTTTTTTGAGGCCAAAATTTTCAAAGTTTGTCTTGTTGGCGCGTGGACTAGTAGGAACCGCCCCTTCTAAATTATCCCTGTATTGAGCAAGTTTTCTGACATTGATTTCAAAATTTTTTTTTAGAAATTTCTGGTTTATTTTTTCCGGTTTTTTTCCGAGTTGCTGTTTAAGTTTGGAGAAATTTCAGAATTTGTCAATTTTAGGTGCGTGGCAATCTTTTTTCAGTAACTTTTTTTTTATTTGAAAAATTGAAACTTTCGCGATGCGGTTCAAGTAAAGCCACAAAAACTCAATGATTTTTTCACAAAAATTTCAAATTTCTTGCAAGACCTACTGCAACTTCGATTTTTAGAAAACTTTATGCTTAAGAAAAAAAACAGCGCGAATTTTCTGATTTAGCCCGACCCGCCCCAAAAATGGAAAGATTTCCGAAAATTCGAACCAAAAGTTCGCAGAAACTTGAATTTCTCTCACACAGAACGCGCTAATTTGAATTTTTCCAAAAATAAGCAAGCGCCCGCCCCAAAAATGCACAAATAAAAATTTTGAACCAAATAAATACAATTTCGCTTTTTTCCGTTTTCGAACAAAAAATTCTAAGTAAATCTATGGTTCTCAGGGCCCAGGCACCCATCTACCTACTTAAAAAAGCGTTAAATTTCAGGAATTAGCATCAACCGAACGCGCGTCTCGCAGATTGTGTAGTCTCTATTTGGGCGGAGATCTCGAAAAAAATCTATCGCTGCGATCAGAGATCCGAAAAATCCGTGATTGAAGTCACGATTCTGTTGGAATGGGAACACGGACCAATTCAAGCGGCGAAAGTAGTGTAACAGTGCTGAAACCTATTTCGGAAAAATCAAAAGTTGGTCTCTTTTTAGCAAAAAAAAATCGATAAATCGATGAAAACCGACAACTTGGAGAATTTTCATTTATCTCAAATTTGAGTCCCTCAGCGCCATATTGTGTACTGTAGGTGCTCGAATGTTGAATTTCAAAAATTGAGAACTAAAGACATCAATGTCGTGACGAGACAATGTTTTGAAAATTTTGAATTTCAATGTAAAAAATTGGGAACTTCCCTCCAAAAGGTAAATTGGTTTAGTCACAAACTCTGAAATTTTGAAATAAAATTTTTTTCGGCTAAAAATAAGTATTTTACTTTAAAAACTATTTTGAAGAAAAAAAGTTGGGTCTCGCCACGTTGTATCTTGTATATGTGTATCTAAATTGCCATGTTGTCGAGACCCTCTCCTATTTTACACTTCAACTTGTTCCTCACGAGGGACGAGGAACAGTGGTTTCTAGGCCATGGCCGAGGGGTTTCCGACAAGTTTCATCGGCCATTTATCTTGCTTTGTTTTCCGCCTGTTTTCTTTCGTTCTTTTTCCCATTTTTCCTTAGTAAAAAAATAAATATTTTTGCAGATGCCAAACGATTTTCAAGTAAAAAAATCATGTATTCAGTGGGCAAGCAGCGGTATGAAAGTTAGGGCATTGTTGATGTATTATCTTACGGGAATACAAAACCTAAACTTTTGCTGAAACATGATACATATGATGCTTAAACTGACTACCTGATCTTCTTAACGAGACCGCTGAAAAAGTTTTGAGGTTTTCAAAATTCAACTTTTTGTGCGAAAATCTCGACTTTTTCACCGAAGTTGAATGGAAACCTCAAAACTTTTTCAGCGGTCTTGATATGAAAATCAGGCCACTAGCTTCAGCATCTAAGCATCATATGTAGCATCATGTTAAAGAGAAAGTTGTTTTGTATCGTTCCTGTAATCTGTGGCATCATATTACATTGCCCACTTTCACCGCTACTGCCTGCCCACTTAATACATAATTTTTTCACTTGGAAATTGTTTTAGCATCGCAAAAAATATTATGTGTATTTATCAGTTTTATTAAGAAAAAACGAAAAAAATCAGTGAAAAACGAAAGAAGACAGGCGGAGAACAATACAAGTGTGGATAAATGGACTCTGGAACTTATGCTCGGCCCATCCGCCATGGCCTGAAACCACCTTTTCCTTCGCCTCGTAAGGAAAAAGTTGCAGTGACACTTTTACTCAAATAAAAAAACAAAAACCGATAATTTCACCATTTATCAGGCACATCTCTTCCTCACACCGGACCTTAGTGCTTAAAACGAGGCCAGTTCTTCCACAGCGAGCCGACGAGATTCATCGGTCTCCAGCACATGAAATTATACATTTTTGCTGACAATGTATTGATTAGTGGGTTAGTTTTTAGTTGTTTGCATGGGTCAGACTACAAACGAAAACCCTAATTTCAGAGCAAATTTGACGGATTCTTATTTTACTAATCGAACGGAGCGATATTACGTTCTATTCAGAAAGTGCAAACCATTGGCAGATTTCTTCCACGCAATTATCAACATAAGCGTTGTTGGTGAGTTGGCGATTGCGCTCCACCGACACTGGTCAGCTCGCTTGAACTGATAACTTTATCTAAAAAATTGCAATAATTGTTTTAATTTGGCTTCAAAAAACCATCAGTAGATGTAATAAAATTCTTCTCAAAGCAAAAAATTAGATACTTTCTAAAAAAATTGAATCTCCCGCGAAAATAATTTTTTGAGAAAATTTGAATTTTTCACCTAAATATTTTTTTCAAGATTTTTTACCACAAAATGAGGCGGGGCCTCGGTATACACGCTCAAAAAATCAAGGGAAAACTTAAAATACTTGTAAATTTGACTACCAGCTATTTTTTGCGAAACAAAAATCGAAAGTAGCACTTTTCGAAAAATTCTCGACAAAAATGAAAAATGGGGGGGCGATCTGTGTGCGGCGGTATTCGGCGGCATATGCCGATGCCGGTTTTTGGAGCCCGTCATATGCCGTTATGCCGATTTGAAGATTCACGGCATATGCCGAAAAAGCCGTTATGCCGAAAAATCCCCCGATGAATGCCGCACATGTCTGGGCGGGACTTCAAAAACCACGCCCACAACAGAGAACAAAAATTTGGAGTGACGGTTTGCAATTCCCTCGCGCTTTTTCTTGTTTTTTTTCAACAAGATGAAAAAGCGCTCTACTGACACATTTTTTTTCTAATATTTTCATTATAAATCCAATTTTCAGCCGACTCGAGCTTTTCATTGTCGAAATTGAGCAAAACTGGTGCCGAGACAATGTGATGTGCACACATATTTAGGTAATCTGAAAGGATGGGTAACCTGAAATTTTTCCAAAAAAATTTAACGCTTCGTTCGTCTCATCTCTACCGATGCTCAAAACACGTGTGAATCGACTTAACGAAAAATACAAAGAATCGCGAAAAACGTCGTCGAATTGCATGTCTGCTCACACGTGGATTTACCCCGTTTTTCAAATGGGGCATTTGGGAATCAGGAGTTTGAATTAGTAGTTTGCAAAAACTTTTATCACTGAAAAATCCGGAGCTCAAAATGACGATGGCTGCGGGATATTTCAATTTGGCTATCGAATTCGAGATTATGAGGAATCGATTCTGAAAGAAGGAGATTAACATTTGGATATGAAATCTTACAGCTTCTCCTTTTGTATTTTTTTGGGAAAAATATCTGAAATAAGTTCAAAAATTTCAAAATAGAATTTTTTCGAAATTTTTGTACTCCTGGAAATTTTGGTTAAAAAAAGTTTTCTCGAGAAATTTGATTTCCCGCCAAATTTTTTCTGTGAAAATTTGATTTTCCAACATGTTTTCTCATAAAATTTGAATTTCCCGTCAAGATGTTTCTGAGGAAGTTTGATTTTCTCATCAAAATATTTCAAAATCATTTCCAGGCGAACGGATTCTTCGATCAAAGTGGCTTCTCGGAAATAGATTCCACCACTATATTCCAACATTTCTGATCAATTGAAAACGAGAAATCAACGGCCGATCGAGTGTGAAAACGTTCGAATAACGATAGAGAAGAATGGACATTTCATGCAAAAGGTTTTGTAACGGCAGAAAATAATAATCAATTAACGACATTAATTGGCTCATCTAATTACGGTTATCGATCGGTTCATCGAGATCTTGAAGATCAAGTGATGGTTGTTACAAGAAATCGGACACTTATCTATCGATTAACAGGAAAAGAAAAATCTATTATTCGAATATTAATCGATACTTGACATGGCTGCACTTCAACAACCGGAACATCATAATTCCACCATTAGTTCGAGTCATTTCACGTCTAATTCGGAGTTTTTTGTAGACGTTTTCCAATTCTTTATAGCGGAATAATAAGGTTTGACTTTAATAAATCTTTGTAGATTGTTACAGTTTTTTTGAAATGCAACATTTTGCCGAATTAGGCCATTTGACAATTTTTGGTCGTGTCACGGCGCGGAGTAGAAAACTAAGTATTTTGATTTGTTTTTTCGAAATATCCGAAAAACAACAAAAGGAGTTTTTTGTTGAAAAAAATGTTGCGAATTTCAGAATACGGCACTTTTCCGATTTCTGCCCCCTAGGGCTGTTATGAGGGGGACGTCCCCTATTGGGGGCCGGGGACGATCATTTGTACCCCCATGGGGGACGGGCGCTTGTCCCCGCCACGTGACGGGGAGCGCCCCTTGTCCCCGATGGAACGAAGATTCGTCCCCTTTTGAGTTCTGATTTATTTTAGATTTTCACTTCATATCTTACCGGTACAGAGAGTGTAGATAATTCGTTAGAGAGTAGACGTCCGGGACCCAATGGAGCGGGGCGCGCGGAAGAGACGATCTAGTGTCGATTTACGAAATTTTCAGCAACTCGTTGTCATCATTTCGTAAATCCACACAAATCGTCTCTTCAGCTTGGGTCCCGGATGTCTGGCACTCTAACTATCTACACTCTCTGTACCGATAATAAAATATTTTTCCGTGACTCGTTTCCATAGCTTAGACGCTGTGTGCGGGGATACCGTGGATATTCCACACAAAAAACGTGTCGCTTTAATAATTATGAAGCAAAAAATACAACAAACGCACATTCTTCACATTGGGTAAACGAGGGGGCGCGCTCCCACTTTACCCGGGCGCCCCTTTTCGGGGGGGGGGGGGGGGCGTATTACGGGAGGTTTTTTGAAAAACTTGGTAATTTTTGAAATATGTCAACTGACAGCTGTCGTTCAAGTATGTATTTCTATCATATCTCCATACAAATCATAGTTAATTCTTTAGCAATATTGGGGTCCCTCACAAAGTCCAAGTTTTCTTCTCACACGGCCGCCTTCGATTTTTTCTTAAGAGCTTCATTTGCGAAGATCAAAATACATGATCGACAAAGTTGAGTCACTTAAACATCATCATGTGTGTTCGCCTGCAAATGTTAACAAAGGACCAGGCGAATTTGCCAAGCTTTCACGTCTTCATGTCTACGTAGAAAATGCAGTCCTTGAAGAAGCCACGCAGACAGACAGGCAAGTACATAATCAGTAAATGGGCAAATAGGCAAAGCAGGCATGAAATAGGTTAGGCACGTGGGTAGGCAGGTATGAGACATACAAACATGCAGGCAGGTCTGAGAAAGCGAGAAAAGGCAGGTGAGCATGATGAAGGCACATAGGCAGGTAGGCAAGGAAGCTCCTAGACAGGTACAAAATAGATGTGCGCAAAGTAGGCTGCAAAGAAACTAAGCTCGTCCCCAGGCATGAGGTAAGCGCATAGGCTTGCAAGTAGGCGAGTAAACACGCGGGCATCAAATTGAGGCAATCAGGTATTTTTGGGCTCCATTTGGAAACACACTTACTGGATAGAAAAGAGTGGGACTCGTGTAGAATGCAAATGCTATATAAATTGGATCCGGTGCAGCACAGATTTTCTCTTTGATCTCGTTTGTTCAATCCGTAACTCCGATAATTGATTTCTCCAGTTTCACTTGTATTAATCGCTTGGAGAGGCTCTCGATGATAGAATGAAAAATACTCAGAAATTGTCGGATATGTTCTCGATTTTCAGTGAATTTCCTTAGAGAAAGCTAAAAACTCACGAACAAACGCTGCCGATCGAGTCCACCACCAGTATTGCCTACGCCCCACAAAAACCGGTCTCTCGCTGTCTGTCACTAGTTTCAACAAATACCTAATCTCCTCGGCATCTTTCGGTCCCATATGCTCCGGCCATCCGGTATAATGGTAATGAGTCCCCTCTTGAGTACGCTACTTTCTGGAAAAAAGTTTGTTGCAGGCTACCTTTTAGGCCATACTGCATGGAACAAAAATACGGACAGGCGTGGAAGGTTAGAATAGTGATGAGAAAAAATGAAAACAAACATTTAAAAAAGCAAAGAATTGACCGGTTATTATTAAAAAATAAGAATTTTTATCCGGACAATTCGAGGCAGATGTGACTGCCTACCGGCGTGCCACCGCGCCTATCTCATGCCTGCGTGCCTTTACTGACTCCCAAATATTAGCAACAATTGTGACCTAGTCTTCAACAAAGGGTTCGAGATACTCTTCGTGCAAGCGATTGTTAAGTCGCCAAAATTGGTTTTTCGTCGAGTTCAGTTGGAAAGTACCTATCACAGTTCACCGTATTAGCACCAATAAAGTTGAAAAATACGATAAATGGATTGAAAACGAAGGGTGGCTTGAAGGCAGGCAGGACCACTGCTCTGTGTAGGGCGTCTTGTAGACAAGCAGACAGGAGTGGGTCACCATGTAGGCAGAGGGAAGGGTAGGTTGGCTAGTGGGCGGGCAGGCGTAGGCTGCTGCAACACAAGCATATAGGCTCATCTATTTCCGCGAAATCCCACAACAACATCACAAATGTACTTGATTTATTCAGCTTCACTGACTCCCAAAATGCGGCAATCGCTAAAATATCGGAGCTTTTCTTATCAACAGGCTCAACTGCGGAGCAGGCATCAACACAAACTTCAAGCCGTTATCCACTTCAACAACATGTGACGATGCTGGCTGAAAATGAACGGATTTTTTGGGAGGTACCCATAATGTTGCCACTTGTCTACCTATGTGCGCTTGAGTTAAAGGTTAAACCTAAGCCTATGCCTATGAGCCTAAGCTGAGCCTAAGCTTAAGGTTAAGTGTAAGCCTAAGCGTAAACCTAAGCAATGAGGCGAAGGGTAGGCAGGCAGGCGTACCAGTCTTACCCATTCTTTTTCGAAGACTCATAGACACCGGATCACAGTGACATCCTGTAAGGCGCAAAACTGGACAAAATCGTCTCCCGTAATTTCTACTCTAGGTTATTTGGAACCTTCTCAAATACTGACAATTTTTTCTAGTAACGAACGAAATTAGCGTGTTGAATGAGTCTTGAGCGGCCGAATTGAAAAACGTATCTCATTCAGATCCACACGACTGATCATCTGATTTGGTGGGTACATCGTTTCTCTTTTTCTTCCGAGTCGAGTATTTTGTAGCGGAAGCAAAAGGAAGCAATTATATATGACAATGACGATCAGAGCCAAAATTACATATTGTTCGTGTGGTCTGGGATTTTGGAAATTTTTAGGGATGTTCAGCTTCTAGGCTTTGTTAGCTTAGCTTAGGCATAGGCTTAGGCTTCGGCTTAAGGCCTAAACACAGAGGTTGGCGGAACCAGGCAGGCAATATTAGAGGTACCCGCCAAATATCTAGAAGCTTCACTAAAAAAAAAACGTTTTGAATCTAAGCATGAAACCAATTTTGAAAAAGTAAAATGTTTGCTTATCTCAATTTTTGCATTTCCTTGCTTTTATATTGTAATTAAAAATAATAATTTGAATTTTCAGCTCGTTCAGCGATAGAGTTGTGCTAAATTTCAAGAAGAAATTAAGAATTTTCGTAAAAAATATTTGTTAACGCGAAAAAACTTTTAAAGCTTTAATTCATATTGTTCAAAAAAGGTTGGAGTAAAAAATTTGGAATTTTTTTGATTTTCACCCCAAAACCTTTCTTTAGAATGTATCCCTCTTGCCTCCATCCGCGCCTTATACGCAATCCGCGCCTGATGATTTTTCTCCGGGAACTTGAGAAAACCGATTTGGTTGTTGGGAGAAGAAGTGCGGAATGAGGAGCGTTTTTTGAGAAAAGATAAAATTTGGGATTTTTTTGATCATACTTTCCCGAAAACCTTTCTTTAGAATGCTCTGCCACTTGCCTCAACGCCTTGTGATTTTTCTCCGGGAACTTGAGACGATTTGGTTATTGGGAGAAGAAGTGGGAATGTGGAGCGTTTGCTGAGAAAGATAGATTTTCTACTATTTCTCAATTATTCAATACTATCGAACTTGATATGCAGTCTTTGAACGTTCTTGTCATTACGAGTAGGCGAAGGTTATTGGTAAGTGTATGGGATGTCTTTCCGATGAATTTTACCAACGGCACGGGATGCCTGAGTGTACCTTTTCGATTTCATAAAAACTTCGGAAGGTGTGCTGAGCGTAGGCGTAACTCGTTAAGCTAATTTTTCCTTTCCTGGTAAATCTTATCCTGATCAAACCAGTTGGGAACACTGTGGCGCCACGTGCAACTTCATGGGTAGGCGGCAAACACCACGGAAATTTATGGATTTGGGGCACCCAATTTGACGTAATTTCGGTTTCCGAATTTTGTCGGTGCATTAAGGGTTTGACACTGAAATCGAGTTTGGGAATTAGCGTTTTTCAAGTCGAATACCCTCAAAATTTTGGTTTCCGCAAGTTTGTCTAAATGCAGGGGTAGGCGGCAACTGCCCTTTGGCATATTTAATTTTGGCACGACGAATTCACCCAATTCCCGTCAACGTGAACTTTCTTCTCGTTTCTTAATTAGTTTTTCATTAAATTGATAAAAATGAGAAAATTATAAATTTGTAAATTCACTTCAAAATGCAGGCGGGCAGGTTTCAGTCAAGCCCGTCTGAAACCGCGCCTGTCTACCAAGGAAGCCCTACACCTTTCAAATAAGATCAACTCACTGTGGTGGTGTGGACCATTCTTTTCAGAATTTCCAAGATCTGGCGGTGGTCGGAGAATTGCAGTCGTGGCAGAGGCTTGAATAAATATGAAATGAGCAAAGCAAGTCCAGAGCAGCAACAGGGAGCCTTTTTCGGCAAGTCTGTTTTGAAAGACTTGAAAACTCCAGTCCACCATCATCCAAGCTCGTCAGAGCATCCTGAACTTCACCGAGCAAGCGACTTCTTATTGCCAACATCCTTCACAAGTTCTACCGGTTTTTCCCACGATTTTTCCAAGCCTACCCTACCAAGACTAGCCCAAACAACCTTCTTAGCTTCCGTGAAACATAACCATATCTGTCTACAAATTCTGTGGAATCAGATTAAGTCCACTTATGCATCTAAGCTGAACAACATCACATCCAAAGATGCTCCAAGCGCCACCTCAGCTTCTCAAGATGATCTATCCTTATCGTCCTGTGCCAAAGTGGCTCCACTCGCTGCCAACTCTCGTTGCACAATTTGTGCATGGTTCTAATGATTCCACATTTGCTCTTTATTCTCGGAGCACGTCCTCCAGTCGAGCAATTTCTTGAGCCGCTGGGCCATTATGGAATTAGTGTTCAGCGCCGTTTGTAAACTGGGATGTTTTATCCGAAGCAAATTTGCGGCGCTTGCTAAACGTACAGCGCCAGAGATTTCAGACCACTATTGAGGCTTGAAACTGAGATCAGAGCATCTTCGACAGCAGTGGCTATCGGCAGGAATTTTTGATCTGTTCGGAACGAATTCAAATCTGACAGGTTCTTTTTAATTTTGGCCAATTCTTTGTTGGTCGAAGCCAGCTCTACGTCGGAAGAAATTGACCAATATCAGAGCGAGAGTCATTCATTTGTTCAATAGCACGTTTTTCTAGTGTTTTCAAAAGATTCGGATTCACGAAAGTAGCGTTTGCCGTCAACAATTCTACTCATGGTCAGCAACAACATTAGCCGCTCATTTTTTTCACTCCATTAAAGCATGGGCGAGCCTCAGCGGTTGTCCAATTGCTATTGTTATCCTTGCAATCAGTGCGCATTCTGCGTCCTGATTTGCTTTCAACAAGTTGATTCATCACACTTTCAAAATCGATATCGATTGTTCCCTCAATGTTCGATGCAATTTTAGATAGTCCCTCCAGAGTCGTGAAGTGGGGGGTTATTAGATCAGAGTAGATTTGGCGCATTGGGCTGAAAGTTTATTTGTATTTTCGTTTTTTTGAGTTTGAACCTTTCTGGACAACCGACAGATTGGCTCAAACTAAAGGACTTTACAAAAGTTTTTGTCAAATCAATTTCGCAAATATTACCGGTTTTTCGGAGCTTTGATCAGGGTGGGGTGGCAAACGATTTTTTTCCCGAAATCGGCAAATCGGCAACCCGGCATTTTGCCGATTTTACCAAAATGGCCTGGAAAATTTTTGAATCCCTCCCTCTAAACACTTCCGGTAAATTGTTATCCAAACTACAATTCGGCAAATTACCTGAATTAAATCAATTTGCGCCCAATCGGCAAATTGCAAACTGCAAATTACTCTCCGATAAATTTGGAGAAACCGGCCAATCGCCGAAAATTTTTGGTAACTGGAAAAAATTTCAAAAGGCACTGTACCCTTGCTTCCGTTTTGAAAAATGCTTCTAAACAGTTCCGGCATATATCCGGCAAACGGCAAATCAGCAGTTGGCCGTAAAATAAAAATATCCGCCTCAGCAAATTAAGGCTGGAATTAAAAAGTTCCTCCAAATCGGCAAAACCGGGAATTTGGCCGCGTGACTTCGCCAAAAATAAATATGCCAAACGGCAGTTGCCACCTACCGCTGCAATGTTAGACAAACTTTCGGAAACCAAAATTCTGAAGGTATTCGACAATTGTTTGAAAAACCCTAATTCCCAGGAACACGACTTTATTATAAAACACTTAATCGACAAAATTTCGGAAAGGCCCGAAATTTCTGGCATATTGGGCAAATCGATAAACATTTTTTTCCGTTGTGCCGCCTACCCCTGGAGTTGCACGTAGTGCCACAGTGTTCCCTATTGGTTCGCTCAAGAAATTGCGGACTTGCCAGGCAAAATTAGCTTAACACGCCGAGTACCTCGCTTAGCTCACCTTCCGAAGGTGAAATCGAAAGGGTACACTCAGGCTTTCCGTGCCGTTGGTAATTCATCGGAAAGCCACGCATACACTTACCAATAGACCTTCGCCTCAGCGACAAGAACTTTCAAAGACTGGATATCAAGTCAGATCGTTCGATAGTATTGAATAATTGAGAAATAGTAGCAAATCTATCTTTTCAACAAACGCTCCACATTCCGCACTTCTTCTCCCAACAACCAAATCGTCTCAAGTTCCCGAATTTGCGTAAAATTATGTGATCAGTACTTTCTCGGGCCCGAGCGTCGGTTGCCAATTGAGAGTTTAGGTTATGCTCCATATCAATTGCTCCATTCGGTAGACCAACTGTGTACTTCTTCGGGACTGCCCGATGGATTCGATGGTTTGAAGATGGATCTTCGATTCTTGGATATATTTGGAAATGCATTCCGGATAGATGCCATGTTTTCTACTAGCTTTCTTAGTGCCGCGATTGCGGGATCCCAGATGTGTACAATCTTGATGGGTGAAAATTATGAGTTCATCACATCACGAACTTTTGGCCATAATACAAAGAAAGAGGAGCAGCTATTGTTTTTGAAGCCATGCATCGTACATATTCGGATTCCCACTACAATCTTGGGATTTTTTCAACAAATCGTTTAACGCAGAATGGGATTTGGGAATCTCGGTAAACTAGTGAACGCTTCAATCTCTATGTACAGTTGCTCCATACTGAAAGCATTTCGGAAAGGGTTGTAACTTATGTAAAACTCTCTGTAATGTCTTTCATGTCTGCCTTGAAATTTGTCTCGTCTGGCCACTTCTTGGGACCTCCAATATCATGAGCCAGGTGGGGGTACCACACTTTTGACAGTTGTAAGGCCAGAATTGTTTTGCATCAACATCGTCGCCGATATTCGATTGTAGTTCTATAAAGGTATAGTTTTTGGGGGCAAAAAACGAAAGTGGTTCAAAATTTTGGAACATAATGCCTATTTTTAGATAGCTAAAATCTAAAATTTTGCATTGCTGACAAGCTTGTGAAAATCGGCTTGTTTAACAGAAAATAGGCTTTTTCCTATACTTTGAATTACTTTTTTAGATTGAAATTAAACTCATTTCGGTTATTTCCAAACGTCCACAAAGCCGCAAACTCTATCAGGGGTAGGCGGGAATTGTAGGCAAATGTATTTTCTGCAAAGCTAATCGGGATGTGTACAATTTTGCCTCTGGCAGTTTACCGAGCCCATTTACCGAAAATTTTAATTCCGGCAAATTGTCCATACTCTATTACTACATAGGCCCTTATATAACATCTTTTTCCGCCCCTCTACTCTATTACCACCTAATCTGTTACTACAGTGGATTTTTAGAAACCAAAATTTCAGCTTTTGAATTTTATATTCGTAGAGATAAGAAATTCGTAGTGAAAAGTTGAAACCTGGAACAAACATAGCTGCATAATTGCATCGTAATATGTAAAAATAGGTCTTCCTTGGTAGATAGGCGCGGTTTCAGGTGCGCATGCCTGAAACCTGCCTTGGGGCCATATGTGAACGAGTAGACTGTAGTTTTAAAAAACAAAAAAAGGTACCTAACAAAAAACATTCTCATATATTAGTTTGAATGTGCAACCAAACCTTTGAGCGCTATCAGTTTAGAATTTCCAGCCAGAACTGGAGTCAATTGCATTCAGTTGATCCATTGAGATATCGTATTTGAACAAATCCAGAGTTAAATTCGTTGATGGAATGGTTCCTTTTGTGCCGTTCAATTCTTGTTGTAGTTACATTGATCTCAATCGTGAGGAGAATTGTAATCGTGCTCAACGGCAGTTATGAAGTTGTCATCTGCAACTTTTATGACTGATTTTTTTAGATGAAGTTATTTGTTGTCTTTTCTTTTATGAATTATTACGTATATAATACGTATCATGCGATATTGTTTCGCTTTCCAACCCCCGGGGAACTCTTTTTACTTTGTTTTTTTTTGACTTTTATGGACTTTTTTGTCCTTTGCTATTTTTTTTATGAGAATTGATGCCCGAATTTGACTTTTTTCAGATCAGATTTTTTGGAATTTCTTCGCAGAGGAGAATTATTCTTTTTTGTCAAAGCGAGCTAACGACCTAGCCACTGACGCCAAGCCTAACATAGGACTGAACCTTCTAAGTCTGGAAGTAGCCTAAGCCTACAAGGAAAGTCTTTGAAAGGGCACTGTAGATTTTGGTTCCTCTCATGTTGATTTTCCGATAGAAGTGTGTGTTTTGATCTATCCAAAAAATTTAGATCCAAGCCAAGTTTCAGCAAAGTAATGACATTTCGAAATTTCAGTTAAAAACACCATTGTGAACTGTCTTACAGTGCGATCCACACAAATAGCTCGCGTGAACACCAAAAATGTGACGCCCACCACAATAGGCTGAAGACAGTGGATTTCAATGCTGTTTTTAACTGAAAATTCAAAATGTCGCACTTAAGTTTGCTGAAACTTGACTTGGGCAGCTAAATTGATTGGTGAGATCTACCCAAAGCTAACACTCTTCTTGAATCGGAATATCAACATGAGAACCCTAAATCTACGGGCCGCTTAACCCAGACCTCCCTTGTTAGCACTAAGCCTATGCGAGACACGCAAAATATACATTAACATACATATACAACAAATACAACGTAATAATTGTTTTTCTGTAATTCGCTGACAAACCTTTCCAACTACGTTGGGAACGTGGATCTAATGGCGGTCATCACATTAAAGAAACTGGATTCTTCTGGAGCAACATATATTGAAGTTAAACCTCCGAAACAGTCAAGAAACCTTCGAAAGTATCCGAATTGACAACACGATTAACCGTTATAATTATCAAAACGATTATTATTGATTCGAAGACAGAAGACAAAATTCGGAACCAAAATAAAAATCAACCTACTCATTGCACCAAAATATTATGAAACTTCCCTTTGATCGACGGTTTTTGAAGCAATTAAAGATTGGAAGTGTGAATTCTGAGAAAAGGAGTGTTGGAATTTTTATTTATTTTATAACGAAAAGGTCACGCGTTTCTGTAATTTAATTTCTATGAAAGTTTTAAGGTCTCACAGAATGTCAAACACTAGATGGCCGAAGAAAATTTGACATAAGCAGCGAAATTTGACCTTTCAAAAAAATTAATATTACGTGTACAAAAATCTTTGATTCCAATGGAACTGAATTTTTGGGTGATACAAGAGGGAATGTGTCTCAAGGTGTAATTTCAGTAAAACTGTACAAGAGAAAAAACGTTCAATATTTTTACGCCGTCTATTGCTAATAACTTCTACAAAATTTTCATTCGGACATAACAAAAATAAAACAAGGTGACCATGGGGTGAGATTACAGGTGCATTTCCTCATCTTCATTTTTCAGACTGAACATCCAAGATAAGTAGCCCGAACTGAAGTTTTTCTGAAAATGTTATATAGTCATTAAACATCGGTCAAAAACAGTATTTAAACAAAATATCCCGAGACAACACACCTTTTTTGTCTTCAAGATATTCAGATAGAAACCTAATGTCCTGAAACTTGGATTTTGGGTCCTTAAGAAGATAAAACAGATAATTAGCTGTTTTAAGTTAATACCCGCAATCATTTTCACATTAGAGCAAAATTAAATTAAAATGAAACTTTTTTTTGGATTCAAGCATTTTTTGGAACCGAAATTCAAGTTTTAGGACACCCTAGTTTTCAACCTGAATATCCTGAAGACAAAAGTGTTTCACCATCTTGGCATTTTTTGTTTAAATACTGTTTATGAATGTTTGATGAGTATTTAGGAACTTTTTCAGAAAAAAATTCGGGCTATTTTTCTCGGAATTTCAGTCTGAAGATGTATGATTTTTTAATTCAAATTTGAGGGAATGTCGTTCATGGTGGCTCGAGGTCAATGGATAAATGGCTAAGACTAAAACATCGACATTGATCGAAGAACGATTTTTTATTCAAAAAATAAGATTTATTTGACTAGCACTGAAACATTCATCGTTTTTTGTCACTATAACCCATTGGAATGATCTGTAGAAATTAACTAAATTTAGAGATTTTACCGATACGTGGCAATATTTAAGACATTAGTTTTCGCCCTGGCCGTTTGTCTGTTGAGATAGTGAAGCGCCAGCTAAAGCGCATCGCCTTTGGTGCTGAGAAGCAGGTCTCGACGCGACGACATCTTTCTTCGCGCGCAGCGGCGAGATTTCGTCAGTACGTGTTGGAGCGTATAAGAATAAGGACGTGATTTTATCGATTTGCATCGATTTTTTTTGGATTTTTCTTTGTTATTGTATTTTTATCGAATTTTTAGTAGTTTTAAGGTTCTTTTTTATCGATTTTCCTTGGTTCCGTTGTGTTTTTAAGCGTTTTTCTCGTTCGTAATGATAAAAAGGGCGGTTTTCTCCGTTTTCCAAGAGTTATTTGGTATGTCAGATTTTGCAGGAGGAATCATCAAAATTCTCAGTTTTTGGCATGTGATCCTTACGAAGAGTACTGTCTGATGCACATCAATGGCTTTTTCCCCCGCAGGTGCTACAGTACGTGTTCTACTCCTTTCAGGGGTTCCTTCTCTCTTCTAGGAGATTAAATATGTTCGTTGTTTCTTCCCTCTATCTTACGCGCTCTTTCCAGCCTTGTTAGTTTATCCATGCTCTTTTCTTATGTAATTTTCGTTTATCAATTTCTCTAATTATTTTCGGTTTCCGGTTCGTGCACTCGCGCACCCTCTCCCTATTTTACTCTATCTCTCACTATCTCTCACATCTGTCTCTCTCTCATAAGCTATTTTGGTATTTTGCGCGTTAAGAAGTCATGTTTTGATGGACCGTGTTCAAAGGAAGAATATTTTCGGCGAGTGCAATGTATGTGGTGTGAAGTCACTCCATGAGTCTTATTATTCCGATAACCTTTTATCGAGATGTAGTACCTTATCGAGCGGCCCAATTTTATGTATGTTTATCTACATTGTGGTTACCATGTAACGGGAGTTCACATCGCAGGAAGTTCTTTATCGCGAAAGTATCAGACCCCGGATTACCTATCAGTTTAAATGCGACATCTTTCGTCGGGTGAGATATAGTATCTTGTGTTTCTATCGCATTTCATTGGACCGGTCGAGCCAGGTCTGAGTGTTTATGAGCACGAGTCGACTCCGTGAGTCTCAATGATTTTCCGTTTGCAGGCGGTTTTCCAGGTTTCCCGTTGGTTTCTGCTTCATCTTCTACTACCGTTTTAAGTAGGATTGGCTCAAGTCTACGGAAGAGTAGAGCAAGCCTACGGTGTAAAGAAGGTCTTCGAAAGAGTAGCGCAAGTTTACGGAGGATTCACGCAGGTCTACGGAAGAGTGGAGCAGGAATACGTTAGAGAGTCACTAGACCATACTGGGGGTCCGATTTACAATTGGATTCTCGAAAAACCGTGTACCTGCATAACCAGACAGCCGATATATCTACCTTACCGTCCAATTGGTCAAGTATTTCAGGAGAAGCGTATAAGGCTATGATTTTCTTTAGCAACGCCGCGCGTTTTGTAATTGCATAACAAGCTGTGTATTCCGTGTAGACTTTATCCTGCTCACTTGTTAGATGTTTAGGGACATCCGGTTCGACCTTTTTTCTTTCTCCCGCTATCGACGACGCAGATCACTGCGTATGAGTTGCTTTTATATACGTCGATCGATTGTTCCGGTATACGTAAAATTAGGCGCTATATTTTATCGCTTTCCTTGCTCACGCGATTCAGATATTTTAATGTCGAATTCCGTCACCTACCACTACGTAGGAGATATGCAGTGCTTTGTCAGAATAACTCAGGTCGTAAGAGTCTCTCAAGACTAGGGAGATATTCGCAGGTTGGTGGCAGTAATTTGTTTTTCCAATTAGCTATTCTCCTTGTCAGGACTTATTCAGGGAGTCGAAGTAGCCCGAGACGTTTGGCCCTAGTATGGATACTTCACGACAGTTCAAACAGATTGTGGTCGGCCTTTAATGGGAATTAGTTCTACTGCTCAGGTTCATAGCTGACTTAGCCGAGCCCCTTCGAGGTACGTCGCAATTTGGCGATTAGCATACTTCCAGGAAGACATAGACGAATCACAGTTTCAGAATTCCTATACACTTCGGTAACTACGGAGTAAGGCGATCAGTTCCTTGCCGCATTTATATGTTCATCTGAACTTTATATTTTTGCATATTAGCTCACGGATTACATTGGAAACTACAGATAACTGGGAGACAAATGCTTCGCTTTTTGTCACTTTTTCCGAGTTTACTCAAGCCCAGAGTAATGTAGTTTGAGGTTAATCTACTTCTCGTTTCCATGTGCAGATACTAGCAGAGTTGCTGTTATAACTGAGAGTCATTTCACACACAATACGGGTTAATGTCTGTCGGCAGTTTCTTCTCAACGCAAGGTTTTCGCTATATAGATAATCTGGTATAGCGGTGAACAACCTGTAATTATTAAACGCCTCAAGCATAGCCGTGACTAGTTATAGCCCCCGGCTTTGCGGGTTCTACCCTATACCACACAAAACCCAAACCAATAAACTGCACCCATGATAGTATATAATTCGTGTAGTCTTTTTAGAGCGTAAAGTTCTGATCAGGGAAAACGAATTCTCGGGGAACGCGATCCTAGAAATGTTTTCCCGAGAAAGTGAGGCGAAAGCTTAAAGGCGCATCGCCCTTAGTGAGAGGCAGGTCGCGACGCGACGACATCTTACGCGAGCAGCGGCGAGCGTCAACCATTCTATGTGTTGGTTTCCCCCCTCCCGCCCCACACACATATTATTACAAAGTGCGAGACATTGCCAGATATGCGATGATTTCCATCCTTACGGAGAAAAATCGAATTATTATGAAAATATTAAGTTTAAACCGTAAGTCGTTTATTTTCAGGAGGTGAGTTTTATTTTTCCTTCATCGTCGCCTGACTGGGCAGTCGGTGTCTATCTGAACAGGTTCGCAGCTCGACCCTTGTGCTTGTTTTCGGTAGCAGGAATACTTATGGGTTTTTTCTCAGTTTCGGGAGAGATATTTACAGGCTTTCAGGAAACCGAGATTCAGAGTTTAATAATGACATATCTTTACAGGAAAATTGTGGTTTGAGTTTGCAGCCTTTCAGAGCGCCTGATGGATCAATAGTTCAATCCACGGAAACACGGACGAAAGTGGTCCACCGAGCAATCAATGTGGAACGAGACGATTCCAGCGTTTACCATGCCCCCTAACATCGATGATGGTCTAGATATGGTAAAGTTCTTCCCATCAAGCGTTGTTCGAGTTTTGGACAAACTTCTTCGATAAAATACTTGACTAAAAAAGCGAATTAAAGTCTACCACAATTTGAAAAAATATTTGGTTCTAGATTATTTCGAAGATTAGACTATAAACATCACGGCCTAACGTAGCTGAGGTTTGACATGTTGTGGGACTGAATACAAAAGCGTGAACTCACGTAGACTGTCTCTTGAATAATTCGAAGAACCAGATGTGAGCTACGGAATAGGCTTAGGCTTAGGCTTGGGCGGGGCTGGGAGGAGTAAAAAATTGCGGAATTTGCCGTTTGAAGAGCTCGCGAGTCCGAGTTTGGCAAATTTTAAATTTTGCCGTACGGACACACCAAATTTGACAAAAAATCGTCAAAAATAACAAATTGTTCCGAGTTTGATCAGTTCGGTAAGAAAATTATGAAAAAAGTGATTGCAGAATTTGCCAAGCTCGCCTTTGTCTTTGGTCAATTCAGCACCATATGAGTGATTATTATCAATTTTCCACTGTCGCTACTCGTCGCATTTAACAAGTAGTCATCGATTGCCGAAACAACTTCCTTCCAGCTCAAACTTTTTTCTTAGCCTTCATCGGGAACCTTTCCTAATTTTTGCCCGGCCTTCTTAACCTCATTCTTCCCATCTTCCCAAATTACAGTCCCATCCTTCTTCTCTTCTTCTTCCCACTACGACCATCTTTGTCCACGTATAGGACCTTTCTCGGGAGAGTGTGTGCAACCGAGACAATTTGCGAAAAACTGCTCCCGGTCCCCCCATTCGTTTTCGCGAAATCAATAGACACAAAAATGTTCCGTAAAACAAATCTCCCCTTGTCGTTTATCCCCCTGTAAGTACACAATATCCTTTTCTCAGAAAAAAACCTTTGTTCTTCAATTTCGGAATCATCTTTTCTTCGTGTTAGTCCTGTGAAAGGCGGAGTACTGAAATATGGAAAATATTTTTAAAGGACTCCCTGATGAATATCTAGAAAGTTCAAAAAATTTTCCCTCATTTCATATTTCAGCTTGAAATCTTTCATTGTGCACTAATGAGATTTCGACTTCGAAGTTTGTTTGAAATGTGTTTTCAAGGTCAATTTTCGTCAATGTATTATTTTACTATCGAAAAACTAAAAAAATTTCAATGAGTAAAGTAAGTCAGTAAGCATTTGGTAAATAACAAAAATCTCGTAATTCTACACATAGCGTGTCGCGAAAATTCGAAATCTGATGGGTGCACAGAAATGCTTCAAAGTCAAATATAAAATAAGGGAAATTTTTGTGAATTTTGTCAGATATTCGGAATCAGGGGCAAATTTCATGTGAAGTCAATTAGAAACGTATTTATTTCGTGGTACTTTTCTAGTCTAAAACTAAAACTAAAGCTAAGCTAAAGTTAATTAAATTACCATGAATCTAATTTGTTTTGTTTTAAAGTTTCCGATTGCAAAAATTCCAAGATCTCAGTTTGCCGAAGTTTAAATAACGACTACTCTGGACTTTTCCCGAAAGAAATCGAACACCGGAGTATACTAATAAGATCCATCGACGGTACACAAAAGGATCATGAAAAAGGGGCACCGTGCGCATAATACCTTCTGGCTTTCCCCTTCCCCAACGAAAGATTTCCTTCTTATATTTGTTCGTTTCGTTCCTGCACACTGACTCCATCTCTTCTAACCCCCTCCTCAGTCTGAATACTCTCTCATCTCACAACGCTTCTGTCTACCTGCCTGCGTCCCCTCGGTACCATATACTAAGCTCTTCGTACCTGCCACTTACCAACAACTTGCCTCTTGGAGGTCTCTCTCTCTACCACATCACCTTGTTCTTCGACTTGTGGTTCTCTCTTATCGAAAAAGTGACTTTCCCGTGTCCTTCCGGGCCATTCACATTTTCCAATTTTATTCGAATTTTATGTGCCCACTGCTAGCTAGGTTCTATATTGAGTGCCGAATTAATTTTATTGATGGTCTAACTAAATAAAGCCACTGGCAACAATTTTTATAAAATTTGTTTGCATATTTATGTAACATTAGCGAAAGTTTTAAAATTCGTACTGTGTGAGACATCACTTTCGAAGTGTTCATTCTATTACGGGATCACAAGATTATGAGAATACTTATTGCGCAACATTCTTGACGCGCAATAACTAGTAGCGAAAACTACAGTAATTCTTCAAATGACTATTGTAGCGCTTGTGTCGATACTGGCTCGATTTTATTTAAATGATTTTTTTTCGAATAGTGACGTCGATATTCCATTTTGCGTTCTGTCATTTTCGTATTATCTATAATTTTATTCATTTCGAGAATCGAGCCCATAAATCGACACAAACACTACAGTAGCATTTAATACTGTTATTTTCGCTAAGATGCGCGTCAAGATTCATTTCCTTACGAAATACAAACTTCTTGGCGAAAATTTCAAAATTCAAATTGCCCGCTTAGTATTTAGCCCGATTAAAGTTTTCTGGAATTTCCTGCCAAATAAAAAGCTAGTTTAAATATTTAAAAAATAGCTTAGAATTCTTAGAATGCGTATTGCGCAGCTTATTAAAGTGACGCCCAAAGCATTTCATAGCGAAAACACAGTAATTCTTGAAATGACTACTGTAGCGATTTTGTCGATTTACGGGCTCGATTTTTGAAATAAATTTTTTAAAATCTTTTCGAATCAAGCCCTGAATAGACACAAGCTATACAGTAGTTATTCAAAGAGGTTTTGCGATCGAGGTATTTTGTGTGTCAAATAATTTATTCCCGTAAAACAAAATACCGCTCTAAAGATATAAAATTTACAACGCCTATTAAGCACCCCACTGAAACCCGCCGGAAAATCCAGAAAAATTATATAAATTTCACCTCTAAAAAATAACCTGGATAGTTGACCGCGTAATTCGACCTGTTTTATTCCCGATTGTCCGACTGACCACACCCCGATTCTCTCGAACTACCCGCGACAAGCTTAAGCATCTTTCTTTATTCCCACACTTTTCGTAAACTTCTGAGAGACAAAACAATAATATTTCTTTCTCAAATCAATATTGGCTATATTCTCCGCATCCCGTAGCCGGTCCCATCAACGTACTTCTAGAACTCCCACGAAATTTCAATTGCTCTATTGAAAAGGTCTCTCTTTTATATGACCCAGGCGCAAAATTTCGTGCAAAAATACAATCGACGGTTTTCTCGACGCGATAATTTTTGCTAAATTCCAAAAATGTGTGCGCCTTTAAGATTACTATTGTAAATAGCTTCAAACTTTAACCGATTTTAACAATTGAATTTTCTATGTTTTCCGTTTAATATATATTTATTTATTTAAAAATTAAGTTGAAATTGAGATAGGCTAGATGAAGATAAATTACATTACTCTTTAAAGGCGTACATGGCGTTTCGCGACCGGGTACAGTATTTTCGACTGCGATTTTGGTTTTTAAAAAACCTAACCAATAGAATTTCCAGCGCTCACACTCATTGGCCGTGGAAATTCAGCAGCAACCGTCCGACAGCTCTTTTTCGTCAAACGACGAATTCGACGATCGTCAGAACAAAAAGTGAGCAGTTTTGTATGAACAGCAGGTGTGATATGATTTTATTGTGAAATTTGGGACTACAAACCCGAAAAAACAGTACACCTTGTGTGATCTAGAAAAAAATAGAGCAATCGATAATTTTCGGGTAATTTTAAAGTTATTTTCAGCGAAATAAACAATATTTTTGAGCATTGGGTTTTCAGTCATTTTCGATTAAAAAATTCTTCAATGTTGAGCTGAAACTATCGATTTTTACTAGAAAATTGATATTTCTAGCGCAACCACAATTTTAATGTTTAAATTGCTTTGAAACCTCATAACATCTCCCGCACCTCCAGTTTTTGAGTTTTCCGAATATCGGAAACTCAACAGAATCTCATTTTCCTACCGAAATCTATTAGTTTATAATAAATTTGATCGTTTTCTGCTTAAAATTCCCTGAAACTTCTGAAAAAAAACCGATTAATCAGCTAATTCGCTTAAAACTAATTTCGTGCCGGGATGACCACGGCCTCGGGTTTTAAATCGTATGCGCTTTTTGTTTTGTACCATGTTTATTATAGTTTTTAAAGTAAAAAATGAAATTTTCAGCAAGTTTTGGCGTCAAAGAAATGTATCGAACGCATAAATTGAACGAATACTGGAGGCTTGATTTCTGGTATAGCGAATGGTATTCTAAGTGAGTTTTATCCGATAATGGGAATCGACGAAAAACCAGAAATAAACAGTTAATTTCCAGAAATGAGCAACGGGAACAGCTGCAATCACCATCACCAATTCCCGATCAGCATTCCAATTTCGTGCTCGTCACACTCAATTCAATCACGATCACGAATGAGGACACTCTGAACGCGAATAGGGATCTCCTGTCTCGTGCGCCTGCAACGACGTAATTGTCGCCAGAACCGTGTAACCGTCGTTTATTCGCGTGGAAGGCCGGCCGGGATAATGTTTTTCTAAAAGACCATGTCAGGATATTGGGAAATACAACGGTATGAAAATCGGCTTTTCAGCGATAAAAATTGGAATTTTCAGGTCAACCCAGCGTGGTATCCCGTAATGCTAATCAGGAGGAGCGTATGGTTCATGCACATTGTGTAGTGAGAATAAAATTGGTTTTTCTGACCTTTCTATGAATAACCCCGATTCCCATGAAAATATAAGGATGTTTTCAGCAGAAACTCCAGGCAAATTGAGTTTTTGATGCGAATAATGGATTAAAAAGGATAACAAAAAAATCCATGAAAATTATTTTTTACATCAAAACTCCATAAAAATCGGATTTTTGAGCGGATAGATTACTTTGCCAGAAATTGCATTTAGCAAAAAACAATTCTTGCGCGCAATTGCGAACAAAAAATTCAGAACAATGAAACATAACAAAGTTAAAAAAATTATTTATTTAAATACTTTTTTGAGCTGAAAATAAAAAAATTGCCTCAGATTTTGTGGCCAAAAATTCAAGAATATTGCATGAAAATTAGTTTTTGTTTGCAGACGAAAGCAAAAATTAATTCTTTTTCTCGCTTAAAACTGGGTTGATAAAATGGTGTTTAACACAAAAATCCACAAAAAATTGATTTTTAGGCCACAAAATCTATGAACATTCTGATATTCTGGAAAAAAATTAAGAAAATTCATATTGATTTGCCATTTTGTTCAAAAACTTTTTTCAAAAGCATTTCATCAGTGGGAAAAATTTGATATTTCAACAAAAAAATTATTAAATTTTAGAGCTAGCCTACGGCCATGGAATTGTAAGACAGACATGAGAGCTAGCGGATGTGACGTGGCTCCGGGAGCAGCTTCAACAACCTCCAGCACATCATCACATCATTCAACTGCAACAAACCATCAGCCATGGTTTCATTCAAGATTAGCAGAGAACTGAAAAGTAACATAGAAAATGTTGGAAAATCTGGGAAAATGTGTCATTATTCGGTTTTGTCGTCAGGTTTCCAATTTTATGAAAAAAACGTCACTAAAAACGACATAATTCTTACGGAAACATCTGAAATTGTTTGCATGAAAAAAGTCGCGATTTTCTAGAAAATTTTAAAATGTAATAGAAAAATGTTGAAAATAGATTTTTTCTGAATTTTTTGAATTTCATTAGATAATAGAGACAACATCATGTTTTGGAGTCAACTTTTTCGCCTGAAACGCTGGAAAAGGCAGAATAATGGTTAGGGTTTTTAGTGGTATCGAAAATAAAAATGTATTTTTTAAAAGAACGAGAATTTTTTTTTCGTCGAACGTTAGTTCCAACAATAATTACTTACAAAACATTTTTTGTTGGAACGTCTTTTTTTTCTGAAGTTTTCTTAGATTTTGATAACTTTCTTAATTTCAATTCAAATCGGCAAAATTGTACGCGTCTTTTGACTGTTCCCACATCTTTGTAACGAATACGGGAAAAAATATTTCAAAAAGGCACTTTTTTCAAGTGTTTTCGCCTTATAAAAGATTGCCTTCCGGCAAATTGGGATATCCTACATACGGCAAATCGGCGAACTGACAATTTGCCGGAATCGAAAGATTCCGGCAACCGACAACCTTCCGATTTGCCGGTGTCAGAAACTTGAAAAGTGTAGAAAAATAATTGGACGTCACAACTAAATAATAATTCATGTCATTTCTTAATGTATTTTAATACAGTTTTGACGTCATTTTTCTCCATTTTTCATTCTTCCGGCGCACTTGAATAACCCTGTATACCACTTAAAAATCATGTTTAATTTACAAATTTGTAAACTCCCGATTACCTGCATACCGGAGGAACCTTCCTAGTACGTGAATCCACAAATTTCCCCGGCGTCTTCATCACTATGTATGTCTTTTCACGGAAAAGTCGAACACTATCAGTGCATCGAACAGACGGCGGTCAGCGCAATTGACCTGTGACCAGGAAGAACATGGTACTTTTCCAATTTGACACAGTTGGTCTCGGTGAGTCATTTCGGGGCTGTAGAGACAGGAAAAGGGGGAGGAATGGGTGAACCGGTATTCGTTAGACTGAGACAGGTGAAGATAACAGTCATGATTTTATATTGTGAAGAGTTGTATTATAAAGGTTGGTTGACTAGATTTGATTATTTGGGCGAAAGAGAAAGTGAATGAGGGGAAAATTGTTAAAATTCGGATTTAAGTATGAAAACTCACAAAAATGTTATATAAATTTATATTTTGGATATAACTAATTAAAGATTTTATATAGCAAGACTTTAAATAATATGAATATAATAATCTAATATATCAATCTCCTCATTTAATGGCTAGTTGTAATGTCCAATTTTCCAGCACTTACCTACAAACGTGACGCGGACGGTCTCTGCCATCGCCTCGTGGTAACTGCGATTATTTGTGAAACAGCGACATTTTCATCAATCGGATCATCGTCATTTGGTTCATCGTCGACAGTTGATGTGGCATATCGTACATCAGTATTTCGACACGCGGGTTAGATATTTCATCGAACGATATATGTTGGTGACACAATTGCACGGAGACGCCAATGGAGATGTTCGATTGGGAACTTATAAGAATCGAAAAGTCGCGCTAAAAGTGTCGAAAATGCATGGAAATGGAATGTTGGACTCATTGCTGGATGAAGCCATATGGTGTAAGTTATCCAATTATTGAGAAGAAAATAATTTTGGCAAAGCCCAAAACAATGCGTGTTGAACAATGTCATGTTAAAAATATATTTATGTTTCAAAAATGTATTTCAATTTAGGTGTTGCTTTTAATTTGGATCTCAATAATAACAACGTTTTCCAAGTTTTTAGTTATGAGTACCCCGAAATCTGAAAAATATTTTCAGTTGACTTCCAAATTCCCTGATTCCGAAAGTCTAAGTGAAAGATTCGAAACCTGATGGGCTGAGCACAAATTATTTGTACAATTTAAACACTTTTTAATTAAGATAAATTCCCCAATTTTTTTGAAAATATTCCATTAATTCCTATTTTATGTTAATAATTGATTCAGTTTACAAAGCTTAGTTTCATAATTTTCAATTTTCCTGATTGATGAGATAACTAATGGCAGCAAATAAATCTGAAAAATCCCGAATTTTGCAGAGGTCTGTCGCTGAACATCCAAATCTAGGGACGCTTGTCGTTGTTGTACTGATGATGAGTGAATGTCGACATGATAACTGAATATATGGCAAATAGTTTTAATCGATTTACTCCGATCTCGAGGAAGGCATGCGTTGGAGAATCGGAGGCAGTTAATGTATGTTCGATGTAAGAAAAAGTTGACAAATAAAAAAATTGGAATTTCACATTCGCCAATTAGATTGTTCAAAAATTGTTGACATTTCTGCATTTTTATAACCGAAAAATCGACATTTCATTCCGCCTGAGTAATAGTAACTCACCACGAAAAGGGTTACTGTAGCAGTCTTTTAGCTGTCTCTGGTTTAGTAATTTACGATTTGCCGGTCGTCTGAAACCCGATTTTTTCTAGATTTTAACAATTTTCTAGTATGCTGTTGGCAATTCATTCCAAAAACATTTTAATGTTGCCGCTAAATTTTTGTGCTCCGTTTGTCGAAAAGCCGACTTTTTAAAAACACTGCAAAATTTCTCTCTAAGTTTTTTAAAAAATGGTTGCCCTTGAAATCAATGCAGTGTTTATATTTTATTTTGGATTTTTCGAACAAAAATTTTGTTCGTCTATCCGAAACACCAAAAAATCCACTTACCATTTTTCGAAGCGAATTTTTTTTTTCCAAACAACAAACCTGATTTCAAGGGTAGAAACATTTTTTAAAAAAGTTGAAAAAAATATTGTAAAATCGGTTTTAGTTTTTAAAAAAAGTCGTTTAAATTTGTTGCACAATTAAAAAAAAATTTAGAGAAAAATCTTGGAAGGCTTCACGCACACAGCTGAAAATGCTAATACAGTACAGCTTTTCGTGGTTGGACCCAGCCACCGTGGTTACTCTACCTCCGGCAAAGTGGAAAATTCGATTTTTTTGTTAGAAAATTTGAAAATGTCAAAGACCTGTGAAATGTTTCAATTTTTTGTGCCAGCTGTTCTTGAAATCCAAATTATTCGACTTTTTTTCCATTTTCAGGGATACTTGCCAAGGAATTTATCTGGAATCAAAACAGATTGTTCATCGAGTGGCCGCTCGAAATGTCCTCGACGATGATTTAGTAGCGTAAGTTTCCGTTTTTGGATTAGCGAAAAAAGCACTAACAGCCAGTCACATGATTCGGCTTCTGGCAAATTTCCGGACTGATTAAATGGACGGCACCTGAAGCGCTTAGACATAATGTAAGTTTGGTTGAAAAATTGATAAAATTGAGAAATTTTTACAGAATTTATTCTTTCAAAATTAACAATTTCATAAAAAGAAAGAAAATCATTTCAATTTAAGGAATTTCGTATTAAATTTCTAATTTAAAAAAATGTCGATATTTTTTAAAATTAACAAAATTTGAAAACAGAAATCCGTAATTCCGCCGAAAAATGCCTCAAAAATCTGCACTTTGAATTTTTGCCCAAATTTCTAGAATTTTTCCTTACTTCATTTTCTTTCATAGCTTGAATATCAAAAGGAAAATCTTGAAAAAAAATCCCAGAAAAATAAAAAACAACCAAAATCGATTGATTTCAAAAGTTTCTTTTTTAAAAATTGGTTTTTTGTCATTTTTTTCTGATAAATGGAATAGCTTGAAACTAGAATTTGAAAGTATCCAAATTTTCTAATAGATCGATGAAAAATGACTCAAAAACTCCAAAAAATATTGAATTTATCTCTTAAATTTTTCAAAAATGGAATTTTTTTCACGTAAAAAATAGAATTTTTTTTCCCAAATTTTTTTTAGCAACACCACAAAATCCGATGTTTGGTCATTCGGCATTCTTCTTTGGGAAAAATTTTTTCATTCGGACGAATACCGTACCCAAGAATTGTGAGTGACAACATTGCTTAATTAAAAAAATTTCTCGTGTTTTTTCATATTATTCCTCGCTAGCTGGATTGTTTTTATTTCTGTTTGGTTGGGATCATTTCTTTAAAGGCTCCACGGAAAGGGAATCTGCCTGCGAGAATGAGATCTACGAAAATGAGCGACAATGCTAGGATGAAACGTGCGTTGTTTAGCAAGTTTTTGATACTTTTCAAAAATACTAGACTTTTCAACCTTTTTCGTAGATCCTCTTCTCGTAGTTTTTGGTGGGTCCCCTTCCTATATTTTTGGCTTGGCCGAGTTTTCTCCCGGCCACGATCATCACTATTTTATTGATTTTTGTCATGATTTTCAGGGAGCCGATGGTCGATCGGTATGTGTATATTGCATATATTCGTTAGGTTCTATTTTTTACCAATTCTATCCAATTCTATTATACAATACATCTCACTATATTTTCCCCTGCCTGAAATTTTTGAAAAAAAATGAGGCAATTTTAACTTAAAGCTTTTTCCAAAATTTTCCAACAAAAAAAGTTTTTTATTTTTCAATCGCTCGAATTCTGAAAATGAAAAATGATGATAGAAATTGTTTTAAGAAAATGATTTTTTTGGTAGCAAAACGAATTTAATTTTTAATCGAAATACAACTTTTTTTTCAAAAACACCTTATTCGAGACAATAATATTTCTTTTCTTTTCAAAATTGAACATATTCTGGAAAATTGAATAATTAAAAGCATCAAGATTAAATATTCGAAAAAAAGAGAAGTATAGATTTATTGGCTTATTTGGAAAAAAGAAATGAAAAAAATGCAATAATCGAGTCTTTATTTTGGTTTTGTTTCCGACGATGTCCTTCTCGTATATAGTATTTTCCTACCACGAAAATCGCCGTGCAGGGTCTTTAAATTCGGCCGACCACGTCTCGCCTAAGTCCAGTCCCCCACATGTCAAATAAAATTTTTTTCGCAACATCCTGAATTTTGAAATCTTTTTCCAAAGAAAAAAAGTACCGTTTTTTATTTAATTTTAGAAGCTTGAGAAAATGCTTGGAAAAAAGTATTATTTTTTCTAATTTTGAACTTTTTAAAAAAATTATTATATCTTGATTTTCAAAATTTTCCATATTCGATGTTAAAAATTATAAACATTTTTCAGAAAGTAATACCGAAATTTTTTTAGAAAAAAGTCAAATTTGGAGCGAACATTATGTTTTTCAACAATTTGTCAACAATTTTTGTTCACCGCGATTTTTTTTTTGGATCCAAAAAAATCTTTGTTTGTGTGATTTCCGACGGCACCCAACTCCCCAGAATTTACCGCAAAAACTCTATTTTTTTCTCTGCTACCTCTTCCCTATCTTCTAATTAATGTTTTTTCACTATTCGTTTTTATTATTTTTTCCTTTCAGAGCTCAGTTAGAGCCCAAAACTAACCATCAGAAACAAAAAAAACAACTTTCTTTTCTTTTCGAATTAATTTTTTCAGCCTAGGTTCAAGGCGTTGTGAGATATTGAGTAGGTATCGAATGGAAGCACCTGAAGGGTACCGGAAATTTTCAAGGTTATGAATGAAACATGGGCTCTTTCGGCACAAGATCGACCGTACTTTAGGACAGGCAGATTTTTTAAGGGTTTTATAGAATTTTAAGAACGATTTCAAAATCCGAAAAAAAAACCTACAATTATGGTAATTTTTGAGAAAATCTACAATTTTTTTTCGAAAACCTGACAGAAAGAAGAAAGATAATTTGAAAAATGCCCTAAATTGACCAAAACTATGGAATTTTTACCAAAATTTCAGAGGGGTTTTTCAGATTTTACCAGAGTTTCTGCCTTATAAATTAAAAATTTCAAAGGGAAATATTTTTTTAAAATCAGCATTTTTAGCAATTTTTGTGATAATTGTTTATGCCAAAAATGGTGCGAATCTCATGTTTGAAGATTTAAAATTCAGAAAAATCTAAATTTTGGGCAATTTCAATAAAATGGAAAGATTCTGAAAATAATAAATTTTTCGAAATCATGAAAAAAATTTTACAATTTTTGCGAAAAGAATTGTGAAAATTAGAAATTTTATTATTAAAAATATTCTCATGATAAAAACAAAACATTTCAAAAATCCGCCGAAAATGGCTTAAAAATCTAAAGTAAGAAAAGATTTTGCATTAAATTTTATTGATTAGTATTTGCCAAAAAAACCCGAAAATTCACTCTAAAATTACAAAAATTTCAATTTTCTTAAGCTGCGTCCACAAAATGGCTTTAAAAATCATTTTCATGTACAATGTCAAAATTTTAAAACAAGTGAAATTTTGTTCAAAAGTTACCATAATAAAGGTTTTATGCTTTCCGGTCATTTTTTTTAATTTTGGCACACTAACCGAAAAAAAAATTGCTCCGCATTTTTACCCTGAAATATGCGAAAATGTTTGCATTTTTTGAAAATGCCACTTAAATTTTTTATATTTTCAGGTCGTGCCGATTGACAACCATCCGAAATTACAGTATGACATCGGCGCACATCTCGAAACGTTTTCCAGAATCCATATCCACCGAATTTTCTAGTCCATATGAGGTTTCTGTTTTTTTTTCGATGTTTTTTACACAAATTTAGTCATATTTTATAGTAATTTCTCCCACACATTTTTAGGCATCGTTATTATATATTTTCTAATCCGCTGCCACGCATTTCGGATAGAGATCCTGGAATTTAAAGGCACAGCGGTGTTTTTGGATGGGTCCCACCTCGATAAAATTTTTGCCATGCGCTCCTTTGAAATTTTGTTTTCGATATTCCTAAAAATCACAAAAAACATTGTTTTTTCTAAATTCGAGAAGTTTTAGCCTTTCTTTCGACTAAAAGTCGATTTTTTTACGTTGGTTTAAATTTTTCTCGATTTGAAAAAAATTTCAATTTTCAGTGAATCAAAGAAAAAACATCAGGGAGCAAAACTTCTATTCGAAAGAACAATATTTTAAAATTGTATTTTCCGATATAATTTTCACTGTTGGGTCTCACCACGAAAATCGACATGCACCTTTATATTTCCTTGCCAACACCTCTCCGAACGGCCGATACCAAATACCTACGGGTTCTTCAATTTTCCTCTGCATCATCGATGCCGTTTTTAAAAATTTTTATCGAATATATTTTCACGTTTAAAATTATTAATTTGTAACGCCAATTTCAAGAAAAAAGGCTCAAAACTCCGCCATTGGGATAATTTTTGCAGCGACGGAAAATGCAATAAATTTTATATTAGTTTTCACCGATTTTTAACAGACTATTTTTAGAACTTTTAGTCATTTTGTATGTGTGTGTTGCTAGCGTTTATCGGCAAGAAATTATTGTTTTTTCTTAATTTTTAATAAGGGACATTTTTTAAAGAGATTTTCAGAAAATCGGTAAAGATTTAAGATGCTCTGAATATGTCCAACTTCACAAGCTTCGTAGATTACGCGGATAAGGTGTTGAATGAGTTGAATGTGCAAGTGCGCCCTATGGATAAATGGAGCAGCGTGGCAATTCGAAAATTCAAGAAATTTAAATAAAAACGTATTACTCGAAAGTTCACAGAGTTTTTCACCAAAAAATTGAAAATTCGCTGAAAAAGTCGCGGGACATTTTGATTTTTCGGGAAGATTAGAATTGACTGAAAAAACCGCGTCTTTATTCGAGAAATTTTAGAAAGGCGGAAAATTCCAGATTTCTTTATTTAAAAAAAAACATGAATAAAAAATTCTGAGAAATCATGAAAATTGATTGAAAAGTTTCAATTTTAGGCTAAAATTTTTTTGCGAAAAATTCATTTAGTTTATGTTGGTAAAGTTCCGATTTTTCTGCAAGACGAATTTGAATTTCTTTCTGAACAAGTGCGTTTTTTTTCAAAAGTTTTTAAAATCGGAAATTTTTCGCCTCGAAACTGAACCGAAAAATTCGAAAAATGAAGCGCGGGCAATTCGTCTTGAATTTTGGCATTGAAAATATATGAAAAATTCAAAAATTGGAAAAGCTCAAAGTTTTTCACAAAATAGTCGATGTATTTTCTCATTTTTCAATGTAAAAACCGATAGTTACCGCCGCACGCTGGGTCGCAGCAACAATGCAGCCAGACAACAATACCGCCGTCACCGTTGAACGTAATAAAAAACGGCCAATTCCACTGTTAAATCCAAGTGAGTTTAATCGATTTTTCTGTAGAAAAATCTGAATGTAAATTTTGAGCTGAATTTTCAGACGAAATCAGCAGCTCTTCGTGCTATGACGTCTTTCCATGCAATCCGGAGAATCTCAGCAGGGACATGTTATGTACAAGAGTTCGTCGATTCTATCCTGCCGTTGCTGAAAGAGGAAACTCAAAATGAAAAAAGAACTATAGTACTATACATTCGAAAAAAAATTTTCAGTTTACAGGCGCATCTTTAAATATGCATTATTATTCATTAGTGTCGACCCAGAAAGCGCATGCAAATTTTGAACTAAACTGGAATAAAAATTTTATTACACATTCGTGTAAGAATATTCAGTTTAAAGGCGCGTGCTAGTTTTAAGCGTACTTCAAAAATCAAAAAAATATATATATCTATTCGTGAAAACATGTTCTTTTTAGAAGCTCTTTAAAAGTTTAAAAATGATTATTATACGGTTTCTAAAAATTTCCAAAAATCAGGTCAAATGCACTTAGAAGATTGGAAAATATGAAATCTTTATACATGCCTGAAAAAATACGGCATGGTCCAAAAGTCGACAAATCGGTCCAATATTTTCTATTTTTTCAGAGAAATCTTGCGCCAAGGTCGAAATTTTTCGACGATTTCTACGACGTTCCGTGCGATCGCCAGAATTGAGGAGGGAGACCATTGTGAAAGTTGAAAGCAAATATTTCTTCAAAAAATTATTATATTAAATTTACACATACACATTCGTGAAAAGATTTAGTGCTGCCGGCAGGTGAAAATAATGAGATGAAAAATATATACAGAAAAAGGAAAATTTGAAAAATATTTTTTGGCGATAATTAGAATATTACCCGCAAACAAAATTCAAATGACATTTCTTCAGTTTTTGAAAATCTAAACACAATTTCAAAATGTCATTATTGGTGATTCGTGAAAAAACTCAGTTTAAAGGCTCATTTCATATTCAATATAAATGAGAATTATTAAACATCTTAAAGACATAAAGTTTACAATATAAATGAAATCTAAGAAGAAAAATTATACATTAAAGTTGGGAACAAAATTTTGTATTTGAGTAGGACGCTTGACATCAATTTAGTGATATAAAATTTTGAAACCAAGAATTTTCGAAAAAAAATCACGTATACCTAAAAATTTGTAGTTGTTTTTTTAAAGTTAGTACAGAAACTATTTTCTCTAAAATTCAAAAATATTCCAGGTAACATTGGAACACAGGACAATTTTCAACCCTCGAGACAAGCCTATCAATCCAATGGAAACACTATCAATAATTCCGAATATTAAAAGATGTCAGAGTTGTTACAATTGACTTGAGAAGATCTCAAAATGAATATATTGGCCAATCAAATACTCTACCTCTCGAAAAGGGGACCAATCGAAAAGATACTCAAGTTGGACCTGCTATGGAGGACCGCGATGTGAAGGCGAAAAACCGTAGGCATTGGATAGCTAATTAGTATTGGGGGTTGGGAGGGGAGGGAGGAAAGTTCGAGAAAATCGGAATATCTTATGCACTAAATATTACTTAGGCCGTTTGATTAATAAATCGACACATCAAGTAAATAAATTCTGAAACAAATTAAAAAAACGTTTCGATTGATATATGTGTATCATTTTCAAAAGATGACATAAATTGGCAAACAAGAAATTTTTTATTCAATAAAAATATACTACGGGAGCCTAAACTTTTGGAGAGTGCGTATTGCACAACATATTGGACCAGATATCTCGAAGCGAAAACTACAGTAATTCCATTTAAATGACTGGTGTCGATTTACGGGCTCTTTTTTCATTTCTCCGGATTATTTTCTCTTTTTTGCTAAATTTTAATATTCTATCTATAACTAAAAAATTAATTCATTTCGAAAATCTAGCCCGAAAATGGACACAAGCGCTACAGTAGTCATTTAAAGGATTACTGTAATTTCGCTACGCGATACTTTGTGCGTCAATATATATTGTGCATCCAGTTACGCATTTTCAGAATTTTGTATTCTCATAAAATTTTCGAAAAAGTAAATCTTTTAAAAAACTTTTTATTAAATGAATAAAAATTTTTCCCCTTGGAGAATCGGATAAAAATAATTTATTTAAGTTTTGAAATTTTAATATTTTGAAAAAGAAACATTTGACGTATTGAAGAAAAAGATGAACCTTCTTTTGTAAATATGGTTTTTACAAAATTCCAATCGTCCAATATACAGACTCATCATTTTCCAGCAGCATTTAATAGCTACGAAGCATGGCGCGTTCGGAACTCGAAAGGTGCCAGCAGAAGACGGATTCGACGTCTGTCTGGACAATTGCGTAGCACTTAACAAAGAAGGCTTCAACTATGCGGCTCAGCGGGGTGCGATTTTTGGAAAGTCAAAAAACTGGATTTCCGATTAAAAATATGTATAGTGTATGTATTTTTCAAATTTCCAGCTACCCTGTGTTACGTAGTAGTGAGCAACTTCTTGGATCGTGTGGACATTGAACGACAACTACAACACCACAAACAGGGACGATTTCCGATTTGGGTGTGGTCTCGGGCGAACGGACACTCGACGTTATTCGTTTCGGCGCATCACGAGAACTATATCGGATGCCGGGGATTTCGGCGAAGTTAGTACATTATATTTTAAGTATGATTTAAAATGTTATTTTCTTACCCAGCAGCGTTTGCAAGAAAGTATCACCCGTTGCCATCTGAATAAAGAGAAGCCGCATGTTCTAAACTTGGACGTCGATTTTGTGTCGAATGTTGGAAAAGCTTTTGATAATCTCCCATAGCTTAGTGCAATTGGTGAGGGAGAGCATTTCATATTTCAAAAAAAAGTTATTCGCCGTATTTTCAGCTCTTTTATTTTCCATAATTTTACATATACTATGCAATTTCCCAGACTCCTACGAGCAATACGTTACACACAGGTGCAAAACGGTTGGAATACGAAACTCCTATCGGGAGAACCGGATCGGGCTACATCTCGTCAACCTCTGCAGGATCACAACCTATCAGACGATTCAATGGATAGTTGATAGAGATCGATCGGTTAACAGGGTGTACTATCAATTTAGTATTCAGAGAGAGGGAGAGAGCGATTTTCATAAATATTTACATACGAGTTAGTCATTTACCACAATCGACTGATCAGAATCTGATACGTGGCCGTTTTGAGACCCTCCGCCAGTACTTTAGGAACTTGCACCGAACTTGCTGCTTGATCCTCCCCCTCCAGAGGATCTTCTCCAGATGGGATACAACTTTTGATGAAGCTGATCATCGGATCCTCCTGTCATCCGAACTAGATTCAACTGTCTGAGAAGAATACAACCAGTGTCTGCAATCACCGGGTTCCCTTTTGCTCGTCGAGTACTCAAATTGTGTCGGCATATGAATTTGTCCAACGTGGGAAGCCTGAATGATAAAGGGGGACTAGCGTCGAATAGTTATTTTTTATGTTTTTCATATACTCGTTTGCATTAAAGTAACGGCTCTCCTACCTTGAAATCCGAGTTCGGACTGATCTTTTCTCCGTTTCACCGAGATGATTCTTCTGGTGACTCGTTATTTCTCCTTACGCTGATCGTGAACCCATTTAATCAATTCCTGATCAACGTCGTAATACTTTAAAGGTCTTCCACCTCGACCTGTCGAAAGTCGCTTTGTTGCAGTTGAGCCTTTATCTTTCTGAAATTATTTGCCAAAAGGCACAAGTCGAAAATTTTTGGTAACAAAATGAAAATTTGAAATCGAACAGAGAATGTATCTGGGTTATGCCCAGTATTTCAAAATATAGGAATAGTAGAAATGACTTCTTTTGATAGGATAAATTATAAGCCTAGAAAAAATCATAGTATTTGAATTAAAAGGTCCACAAAAGGTTCTATTGATTCGGCAGGGCTTGCATGTAGTAGCGAAACCTGCCTTTAAGGCGACCGCCGCTTGCCTCTCGGTTACGCCTTACGTTGTGCTAAAACATAATTCAATCTTTTTTTTTTTAATTTCTATTCTGATTTTCAACAAATTGAGAGAAATGAGAAAATTAGAAATTTGTAAATTCACATAGGCGGGTTTCAAGCAGGACCCTGTCACCGCGCATGCCTAACATGACAGTCATAGCCCTGGACTCTTTCCTTTTTGAACACGAAAATATGTCCGAAGTGGCAAAACTTACAACTGCTTATGCCTCGATTTCAGCTTTGTGGGCAATGATCCATTGTTGAATGTTTTGACCTATTCACATTCAAATCCTTTGCTGCTTCGATAAATTCTTATGTTCGTTCAAGGGCATAATTTATGGCCTGCTCAAAATTCAAGTCATACGTTCTTTTTCGAGTTTTTACATGCACTGCTGTAGGGATTTCGCTAATTGGTTTTCTCTGAAAAATAAGTATAACAAGCAAAGTCTTAACTAGTCAGCAAGTTATTGGAAATAACGAGAGAGAAGCTAACGAAGGGAAGACCAATGGAGACAGCAAATTGGCTGTTACACACACAGAGAGACATGGCTAATAGAGTGTGCCTATTAGAGGGTCGAGGAATTGCAGTGAGACGAATTTACTGGGCATGAATGTAAAGGGGGTGCAAGGCTAATAGGAGGAGAAAAGTACAACTACAAAAGCATTATTATATAAAAAGCTAGGAATACCTGTATGGGCACCCCAAGATTTGTATGTAAGTAGTTATGTAAATGACTTTTTGGAATTGAAAGGAAAATACCAAAAATGGAAAAAACCTCCGGTCAATCATAAAAAAATTTTGAAAGAAGTTCGATCTAGGCTACGGTTTACAGTTTCCCTGATTTCTACTAAAATGCATTAATCTTGAGTTTATCTCTAACAAAGTGATGGTACTTTTGAATGGTTATAACACAGGTTGCAGAAGACGAAGGATCAGCTATGTCGATTATTGTGGCCCTCAGAGCCTCACGCAAATGTGGTGTGCTCCAAATTTTACAGAACAACTACGAGTGCAAAGAGTTTATTAGAAATGTTTTTTCTGTACTAAAAATGGGGTTTAAAAAACGAATTTTGGTTGATTTAGTTCTCTCCTTGTATAAATTTCGAAAATTTTCCGAAATTTTTTTTTCAATATAAACAATGTCTTCAACAACTCATCGAAAAAATGTGGATTTCGCGCCCTTGGCCACCCATTTGGTGAACGGCTACTCAGAAGAACCGACGATATCCATCGAGACGTGGGAAACCACAGAATAGAATGAGAACTGACGTCATGCCGATGTGGTTGATCTTATTGGATTGTGTTTCACAGATAAATATATACATTTGAGTAGGTTTGGTGAAAAAAATGTTTTTCCTCGCAAAAAAATGTTTTCAAAATTTGAATTTCCCACCCAAAATTTTTCTCAAAAATTTTTTTAAAAATTAATTTTAAAATTATCTGTTTTCTCAAAAAATTTGAATCTCCCGGATTTAAAACTTCCAAAAATTCGTCTATCAATAAATGTTATATTAGATAGTTTTCGACGAATCATAAAAATTAGTTTCTAACGCACTTTTCAAATAATTTTTTTAAAAAATAATTTTAAAAACAATTAATTTTCTTCATTCAATTTCCAGATTCACATTCTCTCCACAAAACCGTTCTCATTGCACTATGGGATCTATAATTAACTGGAATGGTCCCATCAATGGCTTGTAATAATCTGGAACAGCAATTACTCGCAAAAGTCGGCGGTGGACCATTCCCATTGGATCGATATTTTGAGAAAAGATACCTACTCGAAATGGAAATATTTGGCACGACGCAGTGCTTTTTATGGAATCAATTACGAAAAGTTGGTGCTTTTCAAGAAAAAAATCCATTTATATCGATTGTTTTTTTCTTATTGATTTCAGCTACTTTTTCACCTCCGTCAGCAATATTTTGTTGCAACATTTTGGACGTGGCCGCGAAAAAAAAATTGGTGGCCGAGTTGTCTTTTTTTTCACTGCCATTAATTGAGAGGAAAATCTCAGGAATTGAAAATTTTTTCGAAAGTATACAATGTTGACCGAGAAAATATAGGGGGCCGTGGAATTTCTCTTTCTTCTCTGCCACGTTATTTTAGTAAACAATTAGAATAAAAAACACAGAATGTTGTTCAAATTGAAAAAGTCTCTAAAACAAGAAAAAATTGATGGCCGAGTTTTATTTCCATTTTGCGCGGCCACGTGACAAGCAGTGATTTCTCAAACGTTTTCAGGAAAAAAAAACAGGCGGAATTCAGATAATCCTACGAAAACTATTTGTTTCTGGATACAAAAGTCAAAACTTCAAAATCGGTGGTCGAGTGTTCTCTTTTTTTGCGGCCTTATCACGATCCAGAACCAGTGTGTGCTCACTCGAAATTCCTTCAATGTGAATTTATTCGGCCAACGTCGAGACGTTTTTGCGATATTCAACTGTGGTCCGCGTCATCGATGGATTCCTCCGGCAAACGGGAAAAATTCGGGAAAACTCGGCGAAGTAGAACTCTCGCTGGACGAGAAAATGATCGAAATGCCCTTGGAAAAAATGGAACTGTTCCGAGTGGAAAATGTATCATTTGGACCTACCGGAAGAGGTGACCAAACTTTTGGATTTATAGGCTTTCGAAACATATCTTACTCTCAATTCTTAAATCTTTAGTATTCATCTTCATATCCTTAGTCGATTCCGGAGATTTCCCCAATAATTTAAATGATTTTGATATGATCCGGCCGGATGATTTCGGCGCAATGTCCATGAATTCCTCCATCAACTAACTCACCATCGTTCGTTAATACGGTAGGGATACTTATTAGCTCGGAAAATAAATAACGACACATTTTGTCTCGAATTTATTATAGGTGACTTAGTAATAGACATTTAGTGTCTAGGCACGCATAAAAATTAGATCTTTTTCATCGTTCCGATACTTTCACACAAAAGTACGTTTTTTTTCGCAACGTTGTCAATTGAACAATCAATAGGTCGGCAAATAATTGTTGGAGTGTTTTGTCACACGATATTTATCAAATTTATATGTGACTCCTGGTAGAAATTTGTTATGGTCGGCAATAAGTACTGAGTCATAAATTCATATAACTTGTTGTTTGCTTATCGATTGTTTTTAATTGCCGGAGTTCATGTTATTCACTATGGGCTTTCATCTTAGTCAACATTTGGTTAAAAACTCGAATCCAAGTAGAAACAACTTTTTCAAGGTTTACGCCGTGCTTCTTTTTTCTCTTATTTTCTGCACTACATTGATATTTATGTAGGGATCCAGGCCGAGTGTCGGTATTTCGATTTTTGTATAAAATCGAAATTTTTTTTTTGATTTTTCGATTTTCCCTGAAAACACACAATTGAAAAATGTCACCCTTGGTACGGATATTGCTATCTATTATACAGTGTGAGAATCCAATAAAATTATATTTTATTTTTGCAGCCAGTTCGTTACAACACGACAACAGATTGAAATCAATATTCGATCATTCGACACTTGAGAAACGAAATCGTCGAGCAGCTGCCAGAATTGGCCCCCGCCAGTTATTCAAACCAAATGGCAAATTGTCGGATATTCGAAATATGCTGATGATTCACACCAAGACCACATTCCCGAACTGTTGAGACGCCTATTTTAAAGACTGTACGGGATTTTTGGAAAATTTAAAATTTGGAAAATGAAATATTCAAACAAAACAATTTTTTCGCTTCATCAAATTTCATAAAAATTTATGTTAATAAATAGTTTTTTATTGAATTTTAAAATTCTTACTCAAAACTTTCAAAATAATTAAAAAAAAAAACCAAACTTGTATATTTTTTTTTATTAAAAAAGTTAAAAAAAATTTTTTTTGATAATGGGTTGACACTGCGCCTTCAAAATTTGATGAAAATCTTAATACTAGATTTTTTTAATTTTTCATTTAAGACTTTTCGAAAAATTCGAAAGTTCAAAAAAAAAAATTCAAAAAAAATTTCACTCTAATCAATCCCCCGTCTGCAAAATTTTCGATAAAACGATGAAAATTTTGTGGAATAAAAATGTTTAATTTATCATTCTGAGGCACCACGATTTAGTCAAGATCTGGCTCCTGGGATTAAGGACCCGATCTTGAGTACATGATTCTTCATTTCCAGCGCAAAATCCTTAAATCCGGGATTCCACCGAATCCGGCTTGACACCCGAGGTGCCTCATCATTCTACCTTTAAAAACTCCAAATTATAAAAAATTCTGCAAAACTCTAAAGAAATTTGATTTTCGATTTTCAAAAATTTAATTTTTTGTATTAAACATTCAAGTATAAAATATTGATGAAATTCTAGAATCATATTTTTAAGTTTTACAACATTTTTTAAAAATCTACAATCGTTCACTTTCTTGCCTTCGAAATTTGAATGTGAAGAAAAAATTTCAAATTAGAAATAAATTAAAAATGTGCTCATAGAATTCTTTAAAAATATGCGTTTCCCTAATAATTTCCATGTTTCAGTCCCCATCGCCCTCCTACACCCCATTTAACCCGACGCCCGTTCACCGGAACCGCGTCCGTGCCGACAATCGCCCAATTCGCCCGGCGGCCGCAGGGGCTCCTAAGAAAACTGACCCCCATCAGGCCCCGAGATAAGAGCTTATGGAGATGTGGCTATAGAGAGCCCTACTACTCGGGTCCCAGATTTTGAAGAAAAAGTTATACTAAGGTATTCGAGTTTAATTTCCGCTCTGGGAACACTATTATCTATAAACGTATGACCCCTTTAAATTGAGCTCCAGTAGTCAAAAACGTCGAAAATTTTCAATTTTTTTGAATTTTTACTTGAATTTTTTCATCCAGTTCTAAAAAAAAGCTTTCAGCTCTACCCCTTCTTTCATTTGTCACCTACTGCCTCGCTTCATTGCCCTGGGGTTAATTAATTTTTTGATGCTTTTCTAGTCCCGCCACGGTTTTTTTCATTTCGGAAAGTCTCGGATCGATTATCAATTTTTTCGAAAATTTGGTAAATTTAGAGAAACTCTAAATATTATCGATTTTAAGATACAAATGATTCTAAGATTTTTTTTTTCAAATAAAATTTTGGAAATGTTTTTTTGTAAAAAAAAGTGCAAAAAACACTTAATGGAGAATTTTTAAAAAATTGGAAAAAATCTTGAAAGTTTGTCGATTTTTCAGAGTGCCTTTTGGAGTTACGTGTCGGTTTTCTTTCCGAATTTTCATCAAATTTACTTTCTACCAAAAAATCTCTAAAACGCCGTGGCGGGAACCTACTTCATTTTTATTCTGCATAATTAGACAAATATTATTTTCTCATTTCAAAACTTGTTACATATTTTGTGTTGTGAAACATATGTCTAAATTTTTACGGACTGAAAAAATATTCTTAATGTTTTTGAAATTTTCATTATTGGCGTCATCCATGTCTATTTGATTGTTTCCACACCCCCCCCCCCCCCTCAACGTAAAATGAAAAGAACAAGACGATTGACAGCTAGCATGTGCGACGATCAAAGTACCGATTTGATTCAGTTGAGAGGGAGGGACACGAGAACGCGAAAAAGTAGTCGGAAGCCCATCTAAAAGTGCTGGAATACATTGGCAATCGCTATGAAATTCGAATGACCGACGGGAGAGTCTGTCCATACGTGGCACGATGATCGCCACTGTCAAGGCTAATATGGTTTTGAACAAGGTAAAAATTTGATGAAAATTTGGTTTGCCAAAAGCTTCATAGTTTCAAATATTTTTCCTTAGGAAAAATTATGCGCCGCAGGCACGATACACTAAACTTTCCGCTTTTTTCTATTGCTGGCTTAGTTTTCGCAATTTTCTGGCTACCAGTTCTGCAAAAATGATCGATCCGTGAATTGTGCAAACATCTGAGTTACACAGAGAGTGGGGGCGGGGCGGAACATCGCAACACTGCCGGACCCATGGTTTTGTCCACAACTTTTTTTTTCAAGACAAAGTCTCGGACGATTGTACTTGCTTTTTCTCTTTTTTGTATAACAATGGTATTTATACTAAATAATTCACATATGGTAAATTGCATATAGCAAAAATGGCACAAATATCCTCTCAAATTAAGGGGAGCCTTAATCTTAATTAAATTGGATATCATTTTCATTCGAAAAGAAGAGAGAAAGAAGTAAAATCGAAACTTTTGCTTTTGAAAAAAATGCTTGATTTTATGTCATTTCCGTTGTTTTTTTTTCAGTATTTAACTTTTGAAAGATTTATTTATAAGGTTTGCGGTTAAAAACGCTGAATTTCGCGTTTTTCTTTTCTGGATTCAAATTACAAGTTTGTTAGTAACAAATTCGAATGTCAAACACGGAAAAATAAGCGAAAATAACAAAAAATCCTGTATTGTAACCACAAAGTTCTCCACGAGTGGTACGACTACCGTGGAGCCGACGCGCCGCAGGTTTGCAAAACAACGCCCACCCCGTATTCTGCGCGGCACTACACAATTTTCTATCTCACGAATAAATTTTTCAGAAAAGGCAGGCTTTGGTCTGTCGAAAATATCATGAAAAATCAAGTCTTTGTCAGGTTTCCAACGCTGGAAAAGGTAGGAATTAGGGTTTGTTACCAAAAATCGTATAATATTAAAATCCCAGTGCTTCTCTGTCTTTCAGCAATATCTTTTAATTTCCAGGCAGACGAGCGATGGGACAAAGATCTTGAAAGGCGTCTGATTTCTAGGGCAAGCGATATCTCGAAAAAGCACCGCGTGGATTCGATGCACGCGTTGCCGGACCCTAAAAACTGAAATTATCCAGTTTTCTTATTTTCTCTAATTAATCCGATCCTTTTCTTGACAAGATTAATATAAAGTAATTTTTATCGAAGCGATTTTTGCTCATCTCATCCAAATATGAAAGAACATTCGAAGAAAAATCGCCGGCTTCACTTGGAACCGCGGCCATCAGTTGAGAATGCTGAATATGTACAAAGACTGGAAAATATTAAATTTTTCTGTTTCAAATTTCACGTTTTTCGCGTTTTCCACAAAAAAGCAAAGCATTGTAGTATTTCAAAAAACACTCATGGTAAACGAAGGCACCGTGGAATACACGATAGCAATGTGAGACCGCATCGACCAAACTGGGAAACGCCTGCGCCTTTAATTATGTTTAATTTTCGAATTTCGAGTTTATTTTTTTCTCAAGACTTTTGCGACTTTTTTAATATTTTATTACTTGTAGCGCTGAAATATCACAGTTATTATAGCGTCCCACATTGGGGACATCAATCAAAACAGGTATTTTTCAAAATATCGCCGAAATCAATAACCAGTTTTGAGATGTTGCCACCCGAGCCCCAGGCACGGATAATACTGAGAGAAGTTCCGGTCCAGAATACCCAGAAAGAGCAACCACCGGGTTCAGGAGATCAAAACCGTGTCCCGCAAGTCGAAGGACCATCGGACGTCAGTTCGAGCCGGAAAATTCCGGATCACTTCGACGTGGGCCGCATCACGGTTCCACATGAATGCCCCCGCAGATGGCTCAGAAGTCAATAGTTCGAGGACGACGAAAAAGACGAGTCGAGAACGAGTGTTGGGCGGTGATCGAAAGAATAGGAAGCGAGGATGACAAGTTCGAGGCCTCTGAGCTTGTTCCACGAGTGTCGAGTACCGCGATCACGATTGGTATATCGCGTTGGATAAATAAGGAGAAAGCCGGGGCGAATTATCAAGATTACGAAAAAAATTTTGATTTTCAATCTCATTTTTTAAATTTCAGCACCTACTCTACGGCTATCGAGGCGGAATCCAACGCATAATTCTCTCGCATCAACAGACGGATTCGATGGACAAAGTATAACGATTCGCCGCTAGTGAAGTACTGAAAATCATCGGAGACGGTCTGTACGTAGTGGTTCCGACTCGTTCCTCATACTGGTCTAATCAGTCCCAAATATCGTTACAACAAAGGCGTCGAGCTTCGGATTTTCGTTATAGTGAATTGGATTGATTCCGAATTGTGTTGGACGATCATCAGACGCCCAACGATCGTTTGGACAGATGTCGGACCTATCTGTCTGAGTGCCGCGAGCCAATATTCGACGGAAGCTGCTGCTGACCAAGATGCAAATTTTCGCGTCGTACTCCGAATGTGCCATATTACTGTCAACGGAATTTAAGCACCTTGGTTAAAAAAAACGCGTATAAAGAATAATAGTTCCAAATTTTCAGCTCGATTCCCGATGGTTCCCCGATTCCATGGACCATTATCATCGTTCCAGCCACTCATCGAACAATCAGAGAAGGATCCGATTACTGGGCTCAAATTATGGCCAGCGTTAGAGTGCTCTCGATGATTTAGTCGTTACAAAGAAGGTGCTTAATCATTTTAATATTAAATTTTACAGCATGTATAATTATTCATCTATCAGAAACGGCTCCCGCCTGTCTCAAAGATTGGAGGGTCACGTTAATGTGATTCGCCGGTGCAAATCAAATTCGGAATCATTGAGTCGGCGGGTGAAAAATACGCGACGCAGGGAAGCATGATGGCGGTCGTGGTTCAGTGCTATCAGAACAGCACGTTTGCATCTTTCGAAGCACTTATCGCCGGACCCCCGCGAGTCGTTGATTATTACCGAAGGACGCTTTCTGGAATTATTGCCCGAAGACGTGGCGTCTCGGAAAATGCGTGATCAGTATCAGAAAGAGCACGTTGTAAGCACGATTTTCCAGAGAAAAAGGCTTTCGATAAATTTTCTTATTTTCAGATCCGAAGTCGGAAGTTTACCAATCTGCATGAACACAGCCGGATTATTGTCTTGCCTCAAATCACTACGAGGATTCAGCGAGTGCCTTTGATCACAGGTTTATATATTTCTGTATTTCTTCTTCACTGCCTTATTTTAAAAGAATTTTCCCGTTTTTTTTCTTTTGTTCATTTTCCCCTTTTCTTGGTACGCTGTCGTTATGTCCCCGGTACATGCTAAATTAACGTATATTTTTAATTAGCAATTAAAAAACTTCCTGATTAACTGCCCGTTTTTGGAGGAGAACCAGAAGAACGCAGACGAGTTTCTGAAACTGAAAGGGTTTGAAATTTTTACCAATCAAACAAACTCGCAGTTCAAAAACCATGCCGTCGTTGCTCAAGTTTGAAAAAACCACTAAACATATTTGCAACGTAGATTGATAGAATATCATTGGATCTTATGGATCCGCAATGGCCAGATCATATTGACATTTACCGTTTAATGGGTCGGTACCGCTGAAAAGTTGCTGGTCTCGCAGCGAACTACAGTAATCGGGAAAAAGCGCTGTTTATTATCGAGTTTTCACTTACTCAAAAAAGTCAATAAACTCGCCGCGAGATCCAAACCTCAACTTACGATAGCTATTTGTAGGAGTCGATTTTCCATCGACAAGGAAGCCAGCGACTAGGAAAATTTTGATAGGGAGAAGCATTGAAATTTAATTGTTTTGGGGCGTTGCGTCTGGGCCGTTTTTATAGGAATTTTTGAGCTGTAAGAAAACAACGCAACATTTATTGCCATCAATTAATACTCCGGAAAAATATGAGTCATTATGGGGGGTTTTCAACCGTACGGATTTTGACAAATTTGAAACTACCATATAATGGTTAGTTTTGTAGTTAGAGAACTCAAAATTGATTTTCTAAGACAAAAACATTGCTTCAGAAAATAGTAGGTTTGTATAATTTCCAAAAAATTATTTCTTGCCCAAAAAAAAAAGAGCTTCATTAGATGGCTGAACCAAAAAATTGGGCAAAAATAAAAAGTGTCTAATTTTGGGGTTTGAAAACGGGTAATTAATATATGCAGAATTCAGAAAATCTAGGTTTAACCCATCAAAAACCATTAAAAAGGGGGACAAAATTTGGCAATTTTTTCAACAACTCACAATTTTGAAACCTCCTCTAAATTGGTTCAATTTGTAGCTACAGAACTTAAAATTGGTCTCCAAGCCATCAACAATTGTCCTTTTTCAAAATATAATAGTTTTAAACGTTTCTTTGAAAATTTATTTTTCTTGCCCACAAAAAAGGACAGTCATTAGATTGTGGCAAAAAATTGGGCAAAAATAAAAACTTGTCTAATTTTGTTGAAAACGGGTAACTCATATATGCAGAATTCAGAAAATCTATTTAACACAGCAAAAACCATTAAAAATCTAAAATGATTAATTTTCTAGTTAAAGCATGCAAAATGGATCTGCGGGAATACCAAAAAGTTGTCAAGTATCGCAAAAAAAGTGGTTCAATTAAAAAAAAATTAGTCTGGGGTTAAAAATCGATTTTTTCGCCGCACTTCGCAACTTGGACGAATTATTCTTTCGCTGCACAAAGTGAGAATCAATAATTATTGATTTTATTTCTAAAACAGAAAAATAGATATTCACTTATCTGAAAAATCGATATTAAACGGAAATTCGCAAAAATCGATGGTCATTAGTTTTTTTGCAAACCAGTAAAATCGCTTTTATCCTTCGCCGCATTTCCTAACTTTTTCTATGCCACTTGACCTTTTTTCTTCCAGAAATCTTGGAGCTTCCCAAACCCACTCATCAGCCAGCGTGCTTCATCAATCATTCCGTTGAGAACTATGAATTTATCGAGTGAAAATTAAAAAGAGGGGGATTTATTACACTGAAAAAGTGTTTTTGTGCCACGTGGCGGCCTGCAGGCCGAACCTAATTCCTAGCGGGAATTTCTAGGCCATGTACTTGGGGGAGATGGGGAGATGATCGAGGGGTCAACTTCAGGGAAAATGTTTGTAACAAAATAGAAAAAAAACTATAAAAGGTAAGAGGAGATCAAAGGTCACGCAACTAGGGCTTGAAAAATGAATGCCTGCCTACAAATAGACATGTAGGAATGTAGGCAGGCAGACAAAAAGTGGGTGAACAACGAGAAAAGGCACGTAAAATGGGGTAAAGGTTAGAGAAAAAGAAAAAAAAAGCTCACAGAGCACATTAAAAATGGAAAAAAACGAGATCATTGGATATTCTGCTGCAGTTGATCGTCATCATGAGTGGTCTGCTGATTGGGGTCGACTATCACATCATCTGGTTCACGAGAGCATCTTCTTCGAGCAGCTCATGGATGATCGTCTTGATGATTTGGCTGTTCAACCACTTGCGAATTCGAGGACATCATTTACAAATTAGAAAATACCATTTTTTAGACAAGAAATCGATAAATTTCTGTGTTTATTACTATTTTTCGGATAATTCCACACAATTAGATAGTTATTGAGTTGTCTTTCTATAATTTTCAAAAAAAAAAATTGAACGATAATTATTGATTTTTTTTTAAATCAAAAACTTCACAAACTCAAGAATTATATATTTTTCGTCCTCCTTCTCTTTCGGTTTTGTGTTTGTGTAATGAGTTTTTTTGAAAAACGCAAAATTTTCTGTGATATTTCTATTTTTTAACCTGAGGCATAGTTTTTGAAAAAATTTTGCAATATTTTCAGTGTTCTTTCTCAGAAAAACTCGAATAATTGCAAAAAATGTAAAATTTATCAAAAACTCATTTTCAGTCCTTTGCTCAGAGAAGACTGGAAAAAAAATTTCAATTTTTTTGAAAACCTGCCAAAAAACGAAGTTTCACTCGCGAAACATTTTTTTTATCTTTTTTCGAAAATTTAATACATTTTTTTGCAATTTTTTAATATCAATCCGTTCTCACATTTTTTGGTAAAAATATGAGGAAAATGCATACATTTTGGATTTTTTCAGAATATCTGTTTACCATTATTCTGCTTCTCCACAGTAAATACTTTAGGTGCTCCTTCTCGTGCACTTCTACTTCCAAATTAACATCGTCACCAACTGTCCCAATAACATCTTCCTCGACAATTTCCTCAACAATTGCTCCATCAGGAGCCATATGCAAATGCATTTCTCGATTATCCATTTCTTCTCCAGCCATTATTTCGTTAAACTCCAAACGTGTGATTCACTATTTGCAAGAGACGATGTTCGCTTTTTTCGAAGAGCATTTTGAAGAGCAAATCGAATGTCTCGTTGTCGGTTGCTGAGCCAAATGAGTTCTTTGCAATACGGAAGTGAGCCTCGGCTGTTTCGACTTGTTCAACGCGCCATTCCAGATGGTGATAGAGGCTGGAACTATTACTCAGAAATTTCAGATTTTGTTTCGTAACCAAATGTGGGAGCTGGGAAATTCGCGTTTTCGACGAAAAAATAGCCTTTCAAAAGATTATTTTCAGATATGTTTAAAAAAATTGAAAACGACGAAATTAGACCTAGTAAAAATTGGATTTTCAGGCATATACACGGGCGTTTGATTACGTGGCCGTGAAAAACGGAGAAACTCGGCCGCGTAGAAACAAAACCGAAAATTGCAGAAAATCCAGGAATTATTTTTAATGACTCCGAAATTTCTATCCCCGATTCCGAATTATATATATGAAAGAATATATACTTCTGAAAAATTCAAAAAACCTTTGCTCACGCCACTAATTTGCTGAAGAGCCCAAAATTTTTACGATCCTGCTATTTCGGCTTTCTATCCGGCAGCTGAATCTGTTGCTGGACGTGGATGATGATGGTTGCTGAATCTGCTTCCGTCTGTGAAACCTTAAGCTCTCACTCGTCGAGCATCTCCTCAAGATGTTTCACATTTTTCTTTGATCCTCCTTCTGAAGCTTCTGCTGAAGCTCCAGCCGTGTCAGTCGTCCAATCATCCACAAAATCACCCGCCGCCGCCGAAACAATCATCATTCTTCAACTGGATCATGATCACCTCTCAGCATCCCGAAAACAATGAGTCGCCACAATCTCACGACGTCGGACATAATAGAGCCTTCGTGTTCTCCTGAATCCTATACTTCTCCAACATCACTTTAGCCACCTCGGCAGGGCCTTTCTCGCGTGCAGCCGGAGCACATCCTCCCGAAAGTGGGGTGGAAGACGTTGAAGTGAGTATTCTTGAGCGGAGCTCATCGTCTGTGGTTAACCGGAGCCGGCATATCGCCGGGCTCTCAACTGTACGATTAAATGAGCTCATTGCCGATTTGATGGCCATTCTGCAATGTCTCACGTAACGTCACCTTCTTGCGAAGGACAACGTGGAAGGGCAGTACGTGAAGCTGGAATTCGATGAGATCCGAACTATGGGATGATGGTGTCTTCCAGATGTAGTTGACCTTCTCGATTCAGTGCGAGCGCTTGTTTCGCAGATTTTGGACGTTTTGTGATGCCGTCTGAAAAACAGAGAAAAAATTGAATTTGGAGCATCTTGAATTTGGGTCCTTTTTTACTTTCCTACGGAACGTCCCACTTTATTTTTCGTGGTTTTTTTTCTGAATTTTGGATTACAGGGAATATCTCTCCAAACCAAGTACAGGGAATACCAAACTGTGTGGGCCGTCGCAGGAAGACTTCTCTACACTTATAAATTGTTTTACCTGTAGGCACATAAAGGAAAAGAGCAGAGCCTGCATCTTTGTATCTTCGATAAATTCGAGTTAAAAGTTCTTTTGTCTCTATTCATTTGTCATATTTTCCAATGTTTTAAAAACATTTTTTCTAAACTTTACAGTAATTTCGAGCGGGCTATTTTCACTATCAACTTTTTGACGCGTTTTTAATTCTTCATTTCAACCTCAATTTGTGCAAACTTTTCAAATTTCCATATAATAGGGCCGATTTGAAATTTTCATAATTTACACCAATATATTCAATCTTTAACCTCATTTTTTTCACAGAAATTCCCAACATTTTCACATATTTTTCATGACAAATTTGTATTTCAATGTTTTCCAAACTTACGAGGAATGGTGCTTGCCAGATATTCTCTGACCACGGAACCATCACACGTCAAATTTCTTGCATCAACCTCGAGCCCATCAATAAAGAAAACGAATGCGGCTTTGCCAGTTGTGGCTGCCGGAAGAGCCGGTACTCGATTGTGGCATAGGGACTCACTGCAAAAAAAGCATCGTTTTTTATAGAAATGGATCGATGTTTGTGTATAACTTTATCGATTTGCTAGAATATTATCGATTAGTTTCCGAAAAAAAATTTTAAAACAACCGTAAAACTGTATTTCTATTTTTATTTTTTTAAAGATAGACTTCCAGATCATATTTGTTTTGAAAATTTATAAAAAATTATCGATTTCTCTATGGAAAAATATCGGCTATTCTCGAAACTTGTGGATTTCCCTAGAGAGTTATCGATTTCTTCAAGGAAAAAATTATCGAATGTTCTAGAAGTTGTGCAAATTTTTCATAAAATTATCGACTATCTTTTACTGAAATATATAGACTTTTCGCCCAAAAAGTACGTACATCAAAGAAGGCTTATTGACAAGAGAGTAATTGTCGATTCCTATCATTCCAGAACTCCATATCCAACAGCTGAAGATACAAACTACCATCATTGGCGGCTTGTGCTGGCACAGCAAACGGGCATTCTTTCTCGCATTCCGCCATATCCGACACATCATTATCATACGATATCATGTATCTGCGTTGGCTAGGGAAAAATGGATCCTCATTTACACGCGTTGAGCACACACTTTGTGAGCCTGCGAGAGCTCAATGAGAACCTATGGTTTTGTGGCTCGTTTCGCGATTCGCAAATATCCGCCATGCATTCGTGGTAGCTCGCCTTCCTGATTATAGTCGTACATGATGCGCGCATGGCTTCACCACGAGCCGTGATTCGGTTTCCATATGTGATTGATTTTTTTGCGTAGTCGTGGCGCACGTGGATTGTTATGGAATACAGGAATACCAAGTGGAATGTTGGCACGTTTTGAAGTTGGGCCCATGTTGTGGGCCTTTGGTCTGTGAGGGCTTTGGGATATTATTACGGGAGGCATAAAATTCTGAGAATGCGCATTGCACAGCATAGCCCATAGACCAGATCCGTAAATCAACACAAGCCCAACAGTAGTTATTTAATAAATTACTGTAGTTTTTGCTGCGAGATATTCTGCAACGCGTCAAATGTGTTGCGAAATACGAATGCTCAGACGTAATTTTTCCTAAAGCTCGTCTATTTTTGTTTCATTCAGGGTTACTAAAAAAAAACCTGTTTTTAAAGCTTCTACATGTTTAAAAAGTTTTGAGAATTTAATACACTTTTTTTAATAGAAATTTGGCAGATATTTTCATCACCTCATCGACGATTATTCTTTTTGAACAATTTTCGATTTTTATGGGAATATATTTATATTCCAAGAAGATTAACTTTTTTTCAAGAAATATGAAAATTTATCGATTTTTCAAAAGAGATTAATTTATCAAAAAAAGAATAACTTTTCCAGAAAATATTTGTTATTTTCTTAGAAATTAAAAAAAAATTGTTAAATCGCTACGAATTTTGTGTCAATTTTTCAAAAAAAAAAAAGAGGCATCGAGAATATCCCATTTTTTTCGAAAAAAATTTTTTGGTTATCGATTTTTCTTTTTTTAGATAAAACGTCTCGTATATACTTTTTTAAAGATGTTTTTTCACCAACAAATTTTGATATTAAAAAGTTGGAATTTTATTACTAAATTATGGAAAACGTTTTCGATTTTTAGAAAATCGGAATTGAAAGTGGGCGCAAAAAATTTAATTTTTTAAGAAATTATAAAATAGAGATTATGCTCATTTTGGTATGGAGAGCGTCGATTTCCATCGGGCAAGATTTTTTTGGTTGTTTTCCCTCCATGTAACACCTGAAACTCGAGTGATCCCATGCTCATCACAAATCACAAGCTCCGACTTTGCGAATTTTCGTCCCCGATAGCACGTCGGATTCTGTTCATTTACATTATTAGACCATGGCGAGAAGTCGTCACGATTGATGTCCGTGTGGAAAGAGGGCTGGCGACGAAGAATGCGTACGCACGAGAGTTACGAAGTGCAGTACATTGTAAGGTGCCGGCTTCGCGTAGTCAAGCTCAGCAGACCACGTTCTTCGCTGGAAATATGATGACTATTTCGAAACATTTTTCGAGGAAAATGGATAGAAAAAACGAAAAATTCAATTTATTTCAAAGTTCGCTTATTGTTGATGAAAACATTATTACGGGAACACAAAATACTGAGAATGCGTATTGTGCAAAGTTTCTCGCGAAAAGTGTACTACAGTTAGGTGTTTCTTCAAATGACTACTGTACCTATCCTTGCGATTTACGGGAATAATTTATCAATCGATAAAACAGTCATTTTTAGAATTACCGTAGTCCTCGCCACGAGATATTATGCGCGTCAAGTATGATGCACGCATTCTCCAAATTTTGTGTTCCGTAATAAAGTAAAATAATGTTGTTAGATAAATATTCAGGGTCTCAACAAAATTTAATCTATGTTATCAGTGTTCATGTTTTTAGAGTGGAAAAGTTTTTTTTCAGAAAACAGTCAGAAATGTAGATTGTGTTGCATATTTAAAAAAATCATTTAAAAAATATGAACATTTTTTTGAAAAATCAAATTTCTCCAGATTGTATTACGCCATTAAAGGTCTCGGCACCATTTTGTTTCAATTTTTTGAAAGTTTTTGAAGTAGAAATATTTTTTTTATGAAAATTTTCCGTCGTTAGAATTTCGTTGAAAATTCGCTAATAAACGGGGAGTAAAAAAAACGAAATTTTCCAATTTTTCGAAAAACAAAATCGAAAAATTCCTCCCAAACTTACACATGGTATTAGCAATCCACTCCAACATGGCCTCAAACGTGCTGGCGACCCTCATTATGTCTAACAGTCAAGCACACTAAATATGTCCCGTTTCCAATTGCCGGGGATTCTCAAAATAGGGCGCCGGGTTCTCCTGCGGCTAGCGGATCATCGTCAAACTCCAAATCGTAGCCAATGTTGAGCACATCCTCTTGAGACATATCCAACAAATCATCGTCTAGCAGATGTTCCCTGAGCGTCTTCAGCAATCGAAACATCTTGCATTAACTGATGTTGCTGCTGCTGGTGCTGATGGGGTTGAAGCTGGATCTGATCTAGGGAATCATTGTGATGTCCCGGATGACTTCTTCTTCCACGACTTCCAAATCTTCTACATCTAGTTAAATTGTTCTTCATAATTCGGTGCGGCAGATGATGTAGATGGATCTTGTGATGTATCAAACTTCTTCATGGATGATCGTTGATCCATTTCGATCATCTAACACCTCTTGATGTCCAGGTGTTCCAGGGTCTGGTTTAACAAACGGACACGGAACCGAACCATCTATCACAGCTATTCATATATATAACACACATTTCCGATCGTAATCGTTTGCGTTGAATATAAATGAGACGCTTCCGAAGACGGGGGCATCTCGGCAGGACGGACATTGTTTCGACGAGACACAACTGTGTATTTAGAGTGCCAGCCCCGCCAGCCGTGTCTTTTGCCATTCGGAACTGGCCGTTGTCGTCTTGGACGATGGCGAGCTGTGCGGACGCGGGTGACGGACCTTCCGAGGCAGCTGAAATTAATCAACCTACGGCACTCTGTACATCTCCGGCACCACGTTTTCAGATCTACCCTCAAAACAAGATCTACTATTTGGAGATCTACGAAACCACTACTTTTCAAGAAATGGTACCATTCGAATTGCATCGCAGTATTCTCTAAGAACAACAAATCCAGAATGATGACCGCCCATTGTGCTCCGATGTCGGGTGTTGTTTAGCGTTTAGAAAAATCTTTTTTGAAAGAAAAACTTCAGCCGAGAGAACGATAAACAACGCACGATGAGTAATATGGAAGAGTTTTTGTTTCGTTGTTAGGAACACTGAAAGAGCTAGATCCTGAAAACGTATATCTTGTTTTGGTAGATCTTATTTTCGTAGATCTTGTTGTAGAACCGGCCAGATCTCGAAAACGTGATGCCTAATCTTCTGCAGTTGGCGAATTTTCACATATTTCAAGCTAACATATTTTTTCTTAAGCTTGTCCATCGATTTCTTCGTTTTCACGATTTTTTTCAGAGAAAATATAGAAAATCGATAAATTTGACGTTAAATTTTCGATTGAAAAAATGGAAAAATTACAGGAAAGTATTGATGGAGATTTAAACTTTCTAAACAATCGAAAATTATCCTTTTTCTTCTTTTGGAAATTTTTTTTTGGATTTTTCCCAAAATGGGGGATTTGAAATCAAAAAGCGTTAAAAACAAATACTTTTCTTTTAAAATTACCGGAAATTATTTTAGAAAATTTCCTAAAAACGTCAATAAATTAAAAAATCGAACAAGAGAAAGAGTTATTAAATTAAACAAAAACAATTTCACAAAAGTCGATAGCTATTGATTTTTCATCATAATTCCCTAAAAGTCGAAATTTTTAAACCTTCTGATAAATTCTTTTTTTGTTAAAAATAGAACTTTCGATTGATGAGAGAGACGTTTAAAACTTTAATAACTTCCTGTAATTTGTCCTATTTTTAATCGAAAATTTACAATTTTAATTTATTCATTTAAAAAAATCAAAAAACGAAGAAATTGTCCGTTTTTCTGGAAAAATTAATTCTTCGGCTCGAAATTTCGATGATTTGTTTTTAGAAAAAAATATGTAAAAAATTATAGAATTTCAAATAAAACACTGTTTTTTTTCTTTTGATCTTGAAATAGTAGAGCCCGAATTTCTTCCATAATCCAATTGTTCACTCAAAATTTGAAATTTTCGCATGACAAAATAACTTACGATTAACAGTCAACACGGGACCGTCCCTGATCGCCAGTATGATTAATCTTACGCTTATTTCAACAAAATTCGCCGGCCACAAAGTGCACAAAAACGCCGGTTGTCGGAATACGTGGCGGTAGGTACGGTGGCCATTCGGCGATTCAGACAATTCGATTGGCTCAGCAGCTCGGGCTCATTCACCAAATATCGGAACGGGAGACGCCTCTTGTTGTGGGTGCCGACCCAACCTCGAGTATGCAAGTTTTACGCGAAGAAACAATGCACCATCCTTCCACTATCTCGTCTTCGAACTGGGAATGTTTTTTTGATGAGAGAAGTTAAAATAGTAATCTTTAAATATCAGTTTGAATTCGCCGCATTTCAGTTGTGCACCTTTCGTGTATATTTACGATATGTTTAATCTTTTTCAGATGCTGATTTCCGATCTTTAACGGGTTTCCTTGATTTTCGTCGGTTTTTTTTGGATATGTGTTTTTGAGGTCGATTAATGAACCATTTTATTATCAGAAAGCTAGCAAAATGTTAAATACTGGACAGAAAATCCATATGCCACATGCTTTTCTCGACTGAAAACCGGAAATGTTGCTAGTTTTTGATAATAAAATGTTAAATTAACACATTTTCAAAAAAAAAAACAATTCTACAAAAACCGGTGCGACGAAAATTCAAGAATCGTTGCATAAACGGAAATCAAGACCCGATAAAGATTAAGCATTTCGTAACACCGAATTTGGTAAAACGACCACATGGCATCTCTAGCCCGAAAATTCGAAATTCTTCCAGCTGAAATGTCCATTAAATCAGGGAATTTTTCTGAATATTTCACTTAGATTAGGGATCAGGAAAAAATTTGGAGTTATAATAAAAAAAGTTACTAAGCAAAACGTTTTAGCAATTTAGGTTCTAATAGGCTTTACAAATATCAAAAAGTCCAGATTTTTCAATATATATATTTTTAGAGCCACAGATTTTTTGCTGTTTTTCAGCATTCTCGGAAGAACATACCGGTGTGGATCCGGGATCATCCAGATCTAACGAGACGTGCGGATCAGTTGGATCGACCATCGCATGTCTTAAATAGTCGTTTCCGTGCGGATAGTTTTACGATTGGAATTTCACCGGGACACGTGTAGTCGTAGAGAATGAGCACGTTTCCTTAGATTTGGCCATCGCCAATGGGAGAGGTTCCCTAGAAAATCTGGAAAAAATTTTGTGAATGGATTTTTTCGTTCTGAAGCATTTTTCTTGAAATTTGAAGGAAGACGGGTTTTGCATAGACTCAAAATTAACCCTTTAGAAAATTGTTACGTTGGCTCAAAATATCGAGAATAAAACAATTTTTTTCTAAAATTTCGAAAAAATTGGCATAATGGCGGAAAATGTAATTTTATTTGATTATTGTACTCGCCTTTTTCAGTTCATTTTGGGTTAAGCATTTTTGGCCCATAGGCTTAAAATTAAACTTAAACATTTAAAAAACGAAATAAGATATCTGCACAAAGCCAGTTATGGCCACTATGAACTAAAAAAAACATTTAAAAAAAACAACTTTTTTTTGAATATTCACACTTTCTTAAACTGATAATAAACCTTTTTTCTCAATCTTAACAGTCTCGGCAGCCACGCGCTGTACTCGGTGAGATGAAGTCGGCGATACGTGGATCCTTGTCCGATTGGAGCCGTCCGTTGAGACGAGCAACCGGATGACGTCGGACATTCGGTTTGATGACTGGATCAGTGTTGCCTACGTCGCCGCCAGTAGAGCTCGATAGCTTCAGATCGTCATTCGAGACGTCTTTATCGACATGATTTTGGAGCCGTCCACATGCGAAACAGGCTTTGTGTGGAACAAGTGGTGGGAGACGGGGTTTGTCCAGAAGCCAACCTCCTCCGCGACTAAAAATGGGGACCGTTGATTTTAGTTTTTTTTTTCTGGATTTTTCGGACAATAGCATTTTGACCATTTTCTTTATTTTTAGAAGTTATTTTTCTATATTTTTTCTCTAAGAACTATTGTAAAAAATAGTTCAATTTTTTTGAGGTTCTGGCGACAAAAATTTATTTTATCGAAAAAAATTTTTTTTTTTTAAAACAAGATATAGATTTATCACTGAAAATTACTAATTTCCAGTGCAAAAAATTTTTTTGCCTATTCTGGTAGCTGCCTGATTTTTGATATATATTCCAACACAATAAAGTTGCTGAAATTTTCTCCTTTTTTCACTGTCTCCGTACATCATTGCAATTTCGGTCTGTTCGCGTTGGTTAGCAGCTCATTTATTCGTTCATTTCTGTGAAGGTACGCCAGGCAGCCTGAATTGTGGCGTAGCAATCACCGTTTTTCGTCGAATTTCACCTTCATCTTCGAACTGCAAATAGACAATCATTGAAGAAAAAAAACGTTAAAATCCGACTTTCTCGATGATTTTTATGATTTTTAACTGAAATATTGATTTTTCGGCATTTTCTGAAGCAGATTTTGATTAAAATTTGAAGGTTTTTTTTCGTCTCCCGTAGGCTCAAAAAACGCCCTTTTTATGGCGGCTCAAACGCAAATATTAAGTAATATTCGAATACAAAAGTTCATAAATTTAGGACCCCTGCGGGGACATTAGACTTCAGATCTAAAACTAACCGATTTTGAATATTTTGAGCCAAGTTTGGCCAAATAGGCATTAAATTCACTCCAGATGACTAACACGTGAAAAAAGTTAAAATTAGGTAAATAAGACAAAAACAGAAAAAAAATAACTTGAAGCGAAACTGGAGCCCATTTTTGGAGACAATTCTCATTACAAAATTGGTTTTTTGGGAACATTTTTTATTCAAGTTATTTCGGACATTTTTTTTCGAAGAATTCCCATAAAACTTCGAAGCTTTTTCGGCATGTAAGCCCCTACCAATTTCACGCAATCTGGTACTGCCTTTCAGCAAGACCCAAGTTTACTGATAACTCTCCTTGAACTCGGAACATTTTCGACGGTGTCGCCGCCGCTGGATTTATAATTCTTCGCATTCTTCTACCATCGTCGATATACGACCCATCCGTATCCATTGGGCAAGCTTGCGTGTTCGGACACGTCGCTGTTTGCTGGGCCTGGAAAATTTCGATTTTAAAGTTTTTTAAAATAAATAATCCCCTACAAATTAATTTCCAAATGCGGCGGTTGCCAATCCATAAACCCGTCGTCCTCGTCCTCATCATCACCGAACGGGTCCATTTGTATGCGATCGCTCGTCTCGATATCTCGAGGGGAAAGGTTTAAATAGGCGGCTCATCCTCTACGATGACCTCCGTCTCTGCTCACGTGTACATCGTGTCGTCGCCGGCGAAGATCGGCTCTCCGAGCTCTCCGGCGGTGAGCTCCTCGAAATGTGGCGCTGGCTTTTAAGCTCTTTTTCACGTTGCGAACCGTACTTCCCTACGTCCTGCGTTTTGGAGCTGCGATCGAGCTCGTCTTGTGGATGCAGAGGCGAGCGCTTCTTCCTTTGGGTTGCCCAACTCGTAGTCTTCATTGTTGTAGAGCACGTGGGGATTTCCGAGCATTTCGACGTGGACGATATTTTGTGGCTGGATCCTGGGGCTCTGCGGCCGCAGGCTCTGGATTTGGCTGGGGCTCTTCGGCCGGCTGGCCAATTGGGGCTCTGTTGTGCACAGGAGAGAGCGCTGTTGATCAACTTGTTCCTGATTTTCTGCCAATTCAATTTTCAGGATTGACATTCTTCTGCAATTTAATAATTGAAAATAAGAATAATTAAGTGGAAAATTAAAAATTAAACAAGCATTAAAATAAATTTGAACAAGTCCAGATTTGTAGTCCGCAACGCACGGACGAACGCATACACCACAACTAAGAGAGACGGGAGGAGGGATGGAGAATTTGAAAGAGATGGCTAGGCGACGAGATAGCCGGAGGATTGAGGAAGGACAAACACACAGATGTGGGTTCTTGCAGCGCTTTCTCTGCGTCACTTCTTTCGACATTTTTCGGTTCAATGGGAAATTTCTACTTTTTCGGAGTTTTTCTTTTTTTTCATCGGAAAACTTCAAAAAATTCAAATGGAAACTAGGAGCTGTACGGACAATGCATAGAATAACACGAAAAATGCACATTTTTAGGCCTTAGGTCACTGTTCCGGCGCGGAAATGCGGATCAATTTCTTTTTGAATTCAAAATAGAGAAACTGGACGTGATGGTTGGTACAAGCGTTTAGTGAAAATGTATCACAAAATAGGAGATCAATTAGATATGTTAATTTATTCGTGGACCAAATGACTATAAAAAATTGCGAAATAAATAAAAGTCGATTAAAAACAATCATATGTCTTCATTGCTTGGCGAGAGTTTCTCGGTATCGGATAAACTTATCTCCTACAAGAGACTTGCGAATAACCAAAATAGTTTAGTAATCTAGACATTGGGTGGGGTGGGCCCAAATATTGAATAAGGGTGAAGAAAGATTATTCAAAATACGTCGCTGAAGTGTTGGCATACAATATTGAGTCGGATAAATGGTAAGAAAGCATCACCACTCAACTCAGATCACAATCTATTTCTCTGAAGAAGAAAGGGACGAATGTAGTAGCTTGCTGAGGGGGGGGAGGGAAGGGCGTGGGGATGGAGGCAATTTCAAATAAATCTGAAAGCAAGTTACAAATACGCACAGCCAAAACGGTGAGGCCGAGACTTGGCAAACCCAGTGATTGCAAGAATTCGATAAAAAGCTACTCGCGGATGTTAAGAGCGAATCATTTGGATCTCGGGGGCAGTAAATTAAAGGGACAAGGCATTTCGAAAAATACACACGTTAGACTGAAAAAAAAAAACCGATGTGATCATTATGGGATGCATCACTGCTTCTTTGGTGGGTCGAGTTGACACTGAGGCGAAGGAATGCGGATTGTACCGCTGCCACCGCCATATCCTTGTCTGTCAGTTGCTACATGCTTGTTGGATACAGATTTGTAGATTCCGTCTGTATAAAGCTGCTTCAACGTTGGTGCCGAGGGCAGATGTTTCTGAAAAATAAAGATATATCAGCGCTATAGATTAGTTTTACTTACCAATAAACCACAATTGATTTCTTTCGGTGCTGTAGATCTTGGCGTCCTCGTCTGTTGAAACTGATTGCACTGTAGCAAATGGCGCAAGTCGCTACCCTTGATTTCCGATCAACATAATAACAATGTTATGATCGGCGTGATCACGAAGCTCCTTCAACTATCGCTCTACATTCTCTTACGTCTAACATGAAGCTTAGTGTCGTAGACTAGGAGAGCTCACAGCCCCACGATAGTAAGCGGATATGATGGCACGGTAACGTTACTTTTCTGTCCAGCAGTATCCCAAATTTGAGCCTTCAATGTCTTGCCTTCTACCTATGACAAAAATAATAATTTGAATCATAACATTAGTGTATGCTACTGAAGTTCCTCACCGAGATGCTTCTCGTGGCAAACTCGACTCCGATTGTTAATTTTGATTCCAAGTTGAACTCATTCTTGTGAAACGAATAGACAGGAGATGTTCATCGACTTTCCGACGGCTGAGTCTCCAATCAGAACAACCGAAACAATTTTTCGTTTGGGAATTGAAAAAAACAAAATTACCGTTGAAACACAATTAGTCGTACTGCATCGTCACGAGAGCCCATCTTCTGCGCTGTAAAATGATAAAGGACTTGTTAAGGTTGAAAGTTATATATTAGGACGATTGTAAAAAAGAAAAAGGGCATTGGTCTCATGATTCATCAGCCGGGCGCAATGTCTTGTTGTAAAATCGATATTGAAAACGAACACTGTTTTATCGGCGGAGCATATTTCTATGTTCTGTTCCCGACACAAACGCGGAGTCAGCAACCGCTATCTCGACGCATGGGATTGAAAAAATAGAAGTGAACTTAATTTAAGAATGATTCAAAGTATATGAGTTGGGAGTTTTATATTGTTATCAATATATGAGGGGGGTGTCACCTTGAAGGAAAATGTGAAAATGTATATAGAAGTGTGTTAGGCTGAAGAGTATTTGAGGCATATCATACCCGAAAAACAGGGAAGGTGAGCGGCCACTTTGTTTGTCGACACGATTTCGAAATAGTTGAACTATTTTTTAACGGGAAGAAGCTTTCTCTGGGTGTTCTTTTTTGATATTTTCAGCTAAAAATTGAAAAAAATAATTAGTTTTATGGCTGTGAACATCCACAACATAAGCTTTTCCGAACGCGAAATGCGTGTGAAACCCAAATAATTGAACGTAACAGGTCCACCGGCGCGGCCACGGCGGTCTGAGGGTACGCGACGCTAGCGCAGCGCAAGGCCGGGTCCCGGCACGACAGACTACCGTATCCCTTTAGCAGCGGCGCAACGGATCGTATCTCAATTACATTTTTTTTTTTTTGAGACTAACGATTTTTCCGTTTTTTCAGAGCAATATTTTTCATTGATTTTCTTAAATTCATCAGAATAAATTTTAGAACCTAATTTCCCGTAATTCTGATACGCGTTTTTAGTTTTCGTGAAGAAAATGCTGATTCGAAAACTGAAATAATTTAGTTTTGAAAACTTGCTCTGAACTCTGTTTCAATATCTTATAATTTGCTTCTTTTCTGAATATTTTGATTTTCCTCAGGTAACCAACCGCCTATACTCCAACGTAAGGTTTTTCTTTAAAATTTATATTAGATTGAAATACATTAGTTTTAGGCCTGATTTTCAAATACTTCAATTTTGATATTTAATTGTTGGTTTTTCAGTTGAAAAGAAAGTGCCACAGGTTCCAGAAACTGTGCTCAAGCGCAGAAAGCAGACGATCCTCGCACCAAGGCTGGTCAACATTATACTAGGTGACCGTCTCTGTAAGTTTATTTAACTGTCTTGAAAGAAAACCGAAAATGTTCTTGCGCTGGTTTTAGGATCCACTATTATCCAAGGCTACCAGCAGTCAAAACTGGAAGCTATAAGATCTTGTTTTGGGTGAGGTGTATTCAATTCAGAATGCGTCTCATGTTTATAACACGATGACAATTCGAAATTTTACAGTTTAAATTGTCTTTTAGGTCCCGTTTGAAAATTAATTTGTACTAATCATGCATTAAAAATAAAATTTTTTACAGAAGAACAAGGGAAGAGAGAATTCTTCAAGCGTGCTGAGAAAAACGTCCAGGAGTACTCTAGAAACGCCCAAAAGGAAGGACTCAGACTCAAGCGCGAGGCTGAGGCCAATGGGTGCGAGACTTCTACGTTCCAGCTGAGAAGGTCGCCGTCGTCAGACTTCGCGGTATCAACCAGCTTCATCCAAAGCCAAGAAAGGTGAAATTATGTTAATGAGTTTTTTAATAACCATTCGTTTTCAGGCTCTCAAGTTCCTCCGTCATAGTCAGATCAACAACGGAGTGTTCGCCAAGCTGAACAAGGCTACTCTTCCACTTCTCCGTATCATCGAGCCATACGTAGCTTGGGGTTATCCAAACAACAAGACCATCCACTATCAGAGTCCTCTACAAGCGCTAATCGGATACGCCAAGGTTGACGGCCACAAAACCGCATATTGCAATCACCGACAACACCATCGTCGAGCAGAGCCTCGGGATAATTTGAAAACGTATGCCTTTTAATTCTTATTTAATTGTTTTCAGGAAAGTTCAACATCATCTGTCTTGAGGATTTGGCCCTGGAACGAGATCGTCCCTACCGTCGGACCACACTTCAAGGAGGCCCACCAACTTCTTGTGGCCCTTCAAGTTCAACAACCCAACTAAGATGGACTAAGAAGACCAACCACGTCATTGAAGGAGGAGACTTCGGAATCAGAGAAGATCAAATCAACAACCTTCTCCGAATAATGGTCTAACTTGTTTGGTGTTCATACCTTCCTCCCGGATAAATCGTTATTGTTTGACGTTGTTTAATTATGTGCATAAATAATCATGAAACGTTATCGTCTTGGCTCGACTCATCTCGGATTTCATGAAGGGTCTCATCATTCAGATGAATTCGTAAAACCGCTTCCCTTGCTGACTACTCTCCCAAGAACAGTCACTGTTCCCTACTATGCTCCATCCTGTTTATTTCTAGAAACTTCGAAGCGATCCTAATTCCCTATGAAGTGAGAGAATTTAGGTTCGTGAATAAACATAGTCCAGATTTAAATCCACGCAATGTCCTCTCTACAATGTACTCCCTCTTGAGCACCTTAACCCATTGATGATGTAGATGGGTATTTCTTCAAAAATTTGATGGAAGGACTTGATTATCTGCTCGCCAAACGATATGGAACAGTTGCCTTAATACTAGAATTATCCTTAGAAAAAGCTTAAATATTCTTCCAGTCTCTGGACTCGGGCCTGACTCCAAAAGAGCGAGCACAGGCTCTCGCATTGCGCACTTTGCTCGACGTGCTTGGATGCTTACACGCGAGGCCAACTACGGATTTCATGTGGCTGCGCGATTAAGAATAGACTTCGGGCTTGGTCAGCTCTATTTTTGGAGGAATTGGGTTGTACCCAGATGCAGAAACGGGTAGATTATTGATATTTTATGGAAAAATCGATAAAATATTGATTTTTTACTGGAACAAATAGATCAAAAATCGGTTTTATTTTCCTCGGAAAGTCAATGCCGCTGTCTGAAATTAGTAGTTTCTTGTTGATACAAGTTCGATAAAACTGGTTTTTCAGAAGCAAAATCGATATAGTAAGCCAAAATGACCAAAAATTATCAATTTTCCTATAATATTTACCTTGGTTAGATTATCGATTTTTAAGGCAATAAAGTCGATATTTCACAATTTTTTATTTTTTTTTGGCTTTCCAGCGCGCAAACTGTGCCAAGATCTAAATTTTCCGAAATTTTCATTTCTGACACGCCGCCGAGTGCGAGGCTACGGAATATCCGGAAAATCGGCATGCGAGAAAGGAGGTCGCCTGCCGAACAAACTGAAGCTGTTGGAGGCGGCCTCCCTGACTTTTGGCTCGAAAAATACTTTTTCGATGTCAATGCACCGTCTTTGGTAGGTGGCAGCCAAAAAACTCGTCGGAGCCAAGACTAGGTTTCAGCTCGACTGCAAGGCGTTCGCCGTGATGGCTCAAATATACACCACTGCAGAACGAGGCCCGCGTAAAACAATTCATCCCGAAACGATCTCCAAATTTGTTCGGTGGCCTTGAGTTTTCTAAGCCACGAGAGTTGAAAAGTTCTATAATAGGGCATTTGGTTTCAGATGACATTAGTGACGGGCACACATGAATCCAGAGGAATTCTGGTCGGATTGGTGTATCACGTCGGAGGATTGAATTTCGTGGAAAATGCTAATTGGTTTAATGTAATATGATTTTGCTTCGTGGATTTTAACCTATGCACGAATAAAATTTATATTCTAATTTTAAAAAAATTTCAAACCAAAGAATTTTGAGTCTTACGTGACAATTGAAGGGTATTGCAATATGGGCATAAAAAATATATTCCCTAATTTTCGAACTTGCTCAGTCTTGGTTGCGCAGGAAATTTTTTTGCAGTTCTTGTTTGGGCCTCGGAGCTTGCGCAGATGCATAATATTTGACGCGCAGAGTTTTAATTGAAGTTTGAGCTTGAATTGAGTTATTGAATTTTAATTAAATAAAGCGAATTCTAGATAAAATGATGTGTTTATTGCAAACTAGATCGTGAACCTACAAAACAAAGACTTTACGCGCAAATTTCCGAAATTTTCAAGAAAAACCAGTGGAGGCAGAATTTCAAATGATACTTGTTCCTCTTCTATTTCTTCTACCAATTTTGTTGTGCGGTGGGAATAAGAAAAAAGCGAACAAAAATGATGTAAAAGGCGTCGAAAGTAAACCCACTGGTTCCACCGTCGACCTCTACAGACCTGCTGAAGACTAAAGAGAAGGAGAAATGAAAAAAGAAGAAGCTCCGGGAGCACGACGCCCCGACTCAGCCGAAAAGTCCTCCGAAACCAGTGGTCCAGGACACGAGAACTTGGTTAAGTGCTGCCTAAAAGTGAGAAGGAAGACGAAATGAAGAAGGGAATTCAGTTGCGAATCCGCCGAAAAATTTGGTGGGTCTCACTGCGATACATTGAGTGTTTTATCGATTTTCTCTGAAATAATTGATTTTTTCTGTAAAATTTTTGACCGCGAGATTTGCGAGTTTTCTGAATTTTCAAATATGTCGATTTTTCAGAAATGCGAAAGTGAAATTTCTCAAAGGAAAAGCCGGCGGCTGACAAAGAAGGACGAGAAAAAAGAAGCAAGATGGCCATAAGGAAGAGTCGAAAAGAGGGAAAGGAGAATAAAAAGGAAAATGACCAAATTCTGTGAAAAATTTCGATAAATTGGTTCCTGAAGAAGTCATTGTTCATTGTCGCTTTTTCAGAATTCCTCGAAATTTAATTGGGCGTCATGCTTCATATGTTGCATTGAGTCCAGAGACTTTCAAAGTTCACGCGCAGCAGACATTTTAGCACGCGCTGCAGTGAAATTCCTCTTGGTGAAGATCTTGATTTTTTCCCGCCTTTTTTGAAAATTTTCGAGGCGTTGGTCGAGCCGAGTACATGTGAAGACGGAATGTCAAATCACAAATACATCACATTTGACGCGCAAAAAATTCGTTTTGAAAATATGCGCGTCGAATAGGGTGCATTGAGTACGCGGAGCCAATACTAATCACACTTTCTTATCGTGGAAAATGGAGCGAAATTTGATTTTTTGATATTTAAATATTCGGGAACAGAAAATTCGGAGAATGCGTATTTTGAAACATAATTGACGCGCAAAATACCTTCTCGTACAAAGCGAAAACTACAGTAATTCTTTAAATGACTACAGTAGCACATGTGTCGCCGATTGGGCGTGATTTTTATTCCATTTTCTTCAGTTTTTCTTGACATTATTGTGTTTTATTTTAATATTTTTACCGATTAATAAATGATTTCCGCAAGATAAATCGAGCTCACAAACGCTACAATTGTGTCATTTAAAGAACTGTAGTCTCCGCTGCGAGATATTTTGCGCGTCAAATATGTTGTGCAATACGCATGAATTTTGTGGGCACGTAATATTTGAGCGGCTGTTAGATAAAGATCAAAAAATTCAAAAAAAAAAAAGATGTCAGAAATCAAAAATTTTTTATTGACGCAATGCACAAAGTCTCCTGTTTCCCTTTTCCCCAAAGTTTTAAACTAATAATAAAATTTTTTAATTGTCCAATCCGACCAGTTTAATACGAAACAAAACGGACAAAAGATTCCACAATTCCGATTACGGCTCAACACTTTCACTCAAGGAATTCTCTACGCTTAGATTTTGATCTTAATGGAAAACTGGTAGAACTTGGTATAAAACTACACAAAACTGGCAGAAAGAGTACTCCTTCCAAGACAAATAAAGTCCCTAATCGAGGAAGATCACTTGGAGCATATTCTGCCGCAACGCGTTTCTGCGCCGTCCCTCTCCAACTCGTGTATTGCGATTGTGGTGTTAACACTAACAATTGCCTATCAGGCACTGTAGTGGTATTCATATAATTCACTCAAATTTGCTTAACGATGCCCATTTTTGCCACCTGGTAATTTTTTTTAAAAAATTCAGAAATTTTGATTTGGATATATTCAAATAAAAAAAAAGTCTAAATTTATTTGCAATCGTTTGAGATTTGACATACATTCCAAATCCTACTCTTCGCAATTTTTTAGTCAACTCAACCTCAAAACCTTAAAAAAAAACCGCAAACCTGTCATGGCGCATTACGTCGATGTTATCCCTACGATAAATCTTCTGTTTTCGAAGGGTTTTTCATTTTCCAATTTTTATCACCAAGGAAAATGTATACACCAAAAAATTATATAGAATGTGACGTGTAAATTGGCAAAAAACTAATAACTTGCGCTTAGCTTTAAATCACTGCATTGCCTCTGCGGACTCAACACACCCGATCTGAAATTTCAGGAACTTATCGATTTTTGCCTAAAATTTTGCTGCATGGCTGCATCGATTAAATATTAAAAAAAAAAGCTGTTGAAAATGATCGATTTTTTTGAACACGAAAAATTTGTGGAAAATATGAAATAAAAAAAAACATTGTGCATCGAAAAACTTACAGGCTCGATACCGTGAGCTCTGGACAGAACAAAACTGAAGATGGCTCGGAGTCGCGGCCGGGACGAGTAGCTCGTGGCCCGAACCAAGCGAGAGGTTAAAGGCACATGGCTCCTCGGACAGTCCAGACCGATGAAGCAGAAATCGACGACAGAACAATACGCCGAGGCCGCTGGCGGAGGCGGTGGAGCAATACCGAGTGTAGACGGGGCAGGTGAAGGACCACCGGGTGATGGTAGGTTTTTAGATTTGCGAAGCTATCGTGGTTTATTGGTTTAGTTTTACAGACGGGGTCGACGGAACGGAAGGAAAAGACGGTGCACCTGGAACCGATGAAAAAGAGTCAGGTACCACAAAGACCCGGCGACGGAGGTAATCAACAGGTACCATCTGATGCATTTGAAGCATGCACACGTGAATGACCACCAGGACCGCCTGAACCAACCGCCCGGAGACAAAATCTCGAGGCTACCCTGGAGAAATCTGGGAAGAGCCAGGCACCCGAAGCGCCGGACCGAAAGGAAATGCTGGACCGTAAGTGGAACTACAGAATCGATTCAGTCTGCGGTAAAAAATCATTTTAGGATAAAAATCGATAATTTTCATTTTCGTTTTCCTCCATTAATTTATGTTAACTTTCTAGAGTTGGACCAGGTCCACCCTATCCAGGACGACCTAGAGAAACCGGAGATCACGGAAAGACGATCGCCGGAGAGGCGCCACCTGGACCACCAGACGACAGAGGAAGGAGAAAGTCCACAAGGACCACCGGGACCATCAGGGCCACGTGGAAAGAACGGAGTCGATGGAGAGAAGGGTACGAGATCAAGGTAATCCGGGACCATATGGAAAACCTGGGCAACCGGGAGCTCCAGGACCCGATGGCTCTGGTGGTGAGAAGGGAGGTTGCGATCATTGCCCACCGCCAAGAACTCCACCTGGTTATTAAAGATTCTTCGATTAGTTGATATTTTATTTTATTTGATCATGGCGTTATTCATTTTATCCTTCGGTGAAATTTCTTTTGTTGCACTATGATAATAAAATTCTCTTGCCAGTAGTTCCAAGTGCCCCAACATATTTTGGAGTCCTTTATGTAGATCCCTCTCGTCGAAAGCTGGAAGATTTCACAATAAATCTTTCAGAAAAATCGAATGAAATTTTAGAAAAAAAAACATCAAATTTTTGACGAACTGCATAATCAGTCAATATTCTATAAAAAAAAATACGATCGCACAATAATAAACAACGACGCGGAACGACACAGTCCGCGGTTACTGAGCTCCGCCCACGATTTCATTTGCACTGCGTTGAGTCGGCCGTGTTGTTATTCAAGAGTGAATATACTGGTTAAGTTTAAAAAGTTGGGTGTTTAGTGTTGAAGAAAATAATTTTTTTATTTTGAATAAAGCACAATTGGCAGCTGAAACTGGATTAAATCCAGACAAATTTTGAACCGTGGTTGTTGATGCATTGAGTTTATATTGTTAGTCAAATGTATGAACTTGTAAAGTGCTTGTAAATGTAAGTTGCTTGTTCGCTCATTCTGAAACAAAATTTAAATTAAATAAAAGTTCACGCGTTGATACAAAAAAGCCAAACTTACTGATTGCAATAAAAATAATCATTCATAATAGTTTTTAACAAACAACAATCCAATGCGATCAAAAGTTCGGAAGGTGATTTACAACCAGAGGACACCCAATCCAGAGAAGATAAAGAGACGACTGCTACGTATAGTGAGGATACAAAGCCACGTAAATAGACCGAAGTAGTCCTACTTTAAAATAACAGTAACCCAGCTGCCTAAATATCATAATAAAACTTGCAAAAAAATGATGTAAAATTTTAGTTTTTAGACTTTTGAACTGGTAGAAGCTGTGTTAGCGCCACTTTTTGACCACGTCTAAATAGAAAAATTTCCCATTGTAAAAGAGTTGTATTATGATACACTGCGTGGCGTGTAAAATACCGAAAAATAAAAGCGCGGTTTTTTTTTTCGTAAAATCACAGGGAAAAATCCGTAATCCCGGAACTCCAATCAGCCGCCAACATCCCACGGGCCCAATAACTTCTGGGTTTTCAACAATCTCATTTACTCCAATTCCCGAAACCCAATGGGAAGGAGAGCTAAACGCGGAACGGGACTGCCAAGACCCCACGCTATCCAGTTAGTCGTCCGACCAACGCCTCTCACACCAGCCATCACGCCATGCGAAGCACCACCACTACCACCTCCACCAAACCCTCTAGCGATAATAACAACTTGAAACGATTGAAAGTCAAAATCAACTGATTGAAGTGCCCAGCGATGAAGTAGGCCGAGTAGATTAATATAGACAATTTTCTTTCATTTCATGGGAAGGAACGAGTGTGAGGCGATGTTGAGCAAGCATGAAGACGATTCGAATGACGGAAATTAGGAAGAGGCAGGTCGCGTATGTGATTAGTATCAAGCATGGAAGTATCAAAATATTCACGTGTGTAACGGACCAAGACGGTGGGAGTTGTTTGGTATTATCATTTAGTTTCGTTTCAAATCAGACCGAGATACATACATTGAAGTTCAAATTTAGAACATGTTGCATCGCAATGTTGTAGTTCATTGTGCTCCCTGAAGCATTTTGCGGACACCACGAATTACATAGAAAATAAATATTTTAACCTATGGTGGGCGGCAAATTGACAAATTGCCGATTTGCTGAATTTGCCAAAAATTTTCGGAAAATTGTATTGTTGCACATTTTTTTTAAATTTCAAAATTTCGCAAATTTTATCGGCAAAATTGTACGCATCAACCCTATTTTCTACATCTGTTCCGAAAAGTAATTATATGAAAATATCTTAAGAAAAGGGGAAAAAATTCGAAAAGGCACAGTTTTCAGTGTTTGCGTCTTGTACAAAAAAAATCTCGAAAAACTTTCGGCCAGCAAACCGCCAAATTGCCGGAAAGGTCTTATAGTTTCAGCTAGCAGTTCGAATCGGCAAACCGGCTATTTGCCGAATTGCCGCAGTAGCCTCTCACCCCTGATGCTTTTGAACATGGTGCATTGCATCACCCTCGACTTGGAAAGTTTATATCGGTAGATATTTGCAGAAGATGTAATTTAATGATATTGTTCAGAAAAAGCTCTGGACCAACAAGTACGCCTTCAAATCCATCTGTGAGCTTATTGCCTATCACAAGCGAAATCACAAGCAGATTTATGATGACGTTGATCTGTGGCCTCGGGCACGACATGGATGGCAGCTGAACAACGGGCAGGTCACATTGATTAAGAGCGAAGTTGGGAGAGGGACAGTTTGGAGAAGTGCACAAAGGATTGAAGACATCTTGCAGCCCCGGTCACTGTTGCCGTGAAGACCTTGCACCAGAGGAAGGCGGCCATCTATCCGCCAATGAGAAGATCTTGTTCCTAAGAGAGGCCAATGTGATGCTCACCCTGCACGGTCTAATGCTACCTGTTTCAAGTTGAACTAAACTAAAATTCATTCCAAATGTGATAAAATTGTTCTCTACGGAGTATGCTCCATGAAGGAGCCCATAACATGATTTGGTCATGGAGTTTTGCGACGAGAATTTGAATCCCCCTGGCAAGGACGCTCTACTCTCCAAGGAAGAAAAAGTGTCAGCTGAGGACAAGATTCTCTACCTTTTCCGCATAACGCCGCCTCCGGTATTGGTTATTTGCACGGAAAGGTTAGTCACAGGGAGCGGCGAGAAATTGTTTGTTGAATTCCAAAAAGATGTTTGTTTTTCAAAATTTCTGAAATGTGTATGAAAAAATAAATTTCAGCTGAAAATACTTTGGATTGGCGGTCAAATGAGTTGCTATAAAGGAGCGAAAGGGAGGATGTCTGCCGGTCAAGTACATGGCTCCGGAGACATTGAAGAAGGGGTTGTACAGTACTGCCTCTGATATTTCTAGGTGAGCCTACGAGCATACATATGACATTGGTAGTGGCGTCGTGGCCTAGAAACCTTATCCGCGTCTGAAGGATAATAACATCACACAAGTCTCTATGATTTCCAGCTACTGCGCTCAAATGTACTAAGTCTACACGGACAGAGACGCCATTCGAAACGTGCGGGCTACGTGGAAATGAGCTCCGAAAAGCGATCATCGGGAAGAGAATCAGCTTGCCCGTTGAGGTAGAGCTACCAGTCTTCATTGCCAACATTTTCGAGCAAAACAAAGCAGGCAGTACGAGACCGAAGATCGCATTAGCTCCAAGCAAATTATTCAGATTTTTAAGGAGGTTTGTGAAGCATTTTATCTGTTTTTTGTTCAAAAAATTTGTTATTTTCCAGGAAGTCGGATTCCATGAAATTGAGACAAGTGGGATACTGCATAAGCTTGTCAATTCTCCCTTCCGAGAATTCACAATAAGGAAAGTAAAGGCGCTGGCAGTGTAATAAATATCTGAAAATCCCCCCACCCCTGAAAATATTTGACTGTATTTTTTAAATCACACAACGCACACAAAAGACAGACAGAAAGCATAAGTACACAGAGAAAATGTTTGAGGTGAGGTGCGGAAGGGAGGCTAGAACCTACTTTACGCCTCCCTAACAAGTTATGACTTTTTGGAATTCAAAATGTCGTTTTTTGCTATTTCACTCATGCGCTTACGTACAAACCTTCCTACCTTGTCTGCCTACCTCCCTCCTATTCTCTTATTGCAGGATTTTTGAATTTTTCTGAATATAAGCGTCTGTCGTACTTGTGCGTCATTTGCAAACAGGCTGTTCTCCGTTTTAGGGGGTGGCAGCACCCACAAAAAAAGACATAGGAAATCGGACGGAGTGATCTACTAGATCAGATGAACATTAGACATCAGTTTGGACCTAAAGTTAAACATTATTAATTCACAATGGATTTTCTTATTGTATTTCTTGATATAGCCCGGTTGTGCGGTATTGATACCATTACAATCCACTAAGCTAAAGGCTGTCATGTGGAGCCGAATGAAAAAAATCCTGATGATACATCGAGCATGCGGCAGGCGTTGAAACTCGGCAAATTAAGATTTGCCGGAAATGTTTTGAGGGATTTTTTATAAGATTTAAATGTGACTCCCTTTCTGAAATGCATGTGTCCCGTAAGTTTTTTAACTTTAGATATTTTTATAGGATCTCACTTTTCAAAATAGACGTAGGAGAAATCATAGGATGCATACACCTTTGCCGATTGAAATTTAAATTCTGAAATCCTTCCAATAAAAGTGCATCACCACAAGTTGCCGACTTTTGGCAATTGCTCGTTTCTCCGGCAAATTCGACACACCTGGCCTAATTTGCCGATTTGTCGATTTGCGAGAAATTTTAAATTCCGGCTATTTTTCGATTTGCCAATTTGCCGAGCAATAAATTTCAATTCCGTCAACTTGCTATATTGATCGTTTGCCGCCCATCCCTGGTACGCCAAGAATGGTAGAATATGAGTATACTAAAAATATTTGAAGAAGAGGACTGGAGCTGGAAGAAAAATCTTTTTACCGAAGTCTTCTGAGACAATTTCGTGAAAATTGATTATCACTTTCTGACTCACAATTTTTAAAAAAAATTTCCAAAATTTTTATCCTAGTTCTCGATCGAAACTGGTCTTCCGACATGCAGGTGCTTGATTGGTAAGTATGACTGCCATACCAAATCAAATGAAAAACACGGTGTATCGTCTGGGAAAAACTTAAACTGTTCCGTTTTAGTAATTGGACAAGGATCTGCTCAATCTCGCTACTATAGCAACCGACATCTTGCGGGTCCAATAAAGATTGGTATATCTTGAAAATTTGATGCACGTTTATTTAATCGCCGCCACACACACACTCACAAAAAAATCAATTAAAGCACCCAGTTGCGCGATTTTAGTTTCTAGGCGCGACAAAAGGAGGAGAACCGAAGCATTTCCGCATTATGGCTCGTGTGTGTGCCGTTCCGTTTGTCCCGCGGCTCTCTCTCCCTCTCTGTTTTTTTTGTTTGCGAAAACTTCTCTCTCTCTCTCTGCCATCACTTGTCTGATGCGGATAACATAGAGGGAGGAGCAGCTTAGAATTGCGGAGGGCAAAATACCTGAAATGTGATCTCTCTCTTATTGAGTCATTGACTGTTGCTGCGAGAGCCTTTTCCCGCGCGCGCCTCCCAACTACCCGTCGACGAGCCGATTTTCTTGTCGGCGGTGCCATTCGCAATACACGTCCCTCTCTCTTCTTGTTCTAGAAACATTCGGATTTTTGATTTTTTGATTTTTCATGGTGGGTCTGAAGGCTTTTTTAGGCCAGACTTTTGGTGGCCAGGTGTATTTTTATTTCCAATTTATCATATTGCTTTTGTCCGACTTGTAGGCAAAGCACCTTTTTAAGCGCCAAGTAATTAAGCTGAAGTTTGGCTGCCTAGGTTTCTAGCCACCAAACAATTTTTTTGTTTTCACACAGCACACTTTTTTAAACACTGTCATAAGTTTTCAAAATTTTTTGAAAAATTTTACACCGAATTTTGAGAACTTTAAGTTTGGTGGCCTAAATGTTTTCAAAATTTTCTATGCCACTGAAACAAAAGTCCTAACTCTAATTGAATTATCTTTGAAACTATGAAAACTACAAGTTCGACTAAATATGGCTTACGGGTCCAATTAAACTCGACTGGGTGGCCTAGAAAACCAATTTCGCTTTTATTTCATTTTCTATGCCACCAATAATCTTGTTCGAACATTACTTTTATTTTAATTAGTGGAGTTTGGAATCTGCCATGGGCTGTAAGATGTTGCTCGCCTCTAGTTTCTATGCCAGGAACCAAAAAGTGGTGTTGGTGGCCGACAAACCCAAACTTGGACAATTGCATTTTCTCGGCCATCATTTTTTTTAAACTAATCGTTGTTGGTTTAGTCTACTGTAAAAAATCAAATGGATAACAACGGGAGCCAAGCTTTGGAGCTGGTGGTAGATTTTGTGCTAGGTCACTAACTGAAATGATTGCAGCTGTAACTATAAAAAATAATTTACACGAGATATATAACATCCAAAATTAGTAGCCTAATTTTAGGATTAGAAACTATTTAAACAATTGGTGTGTGGAATAGAAACTGTATTTTGAAATTGCCACCAATTCCAAATAAGCCTATTTCACTCCTGATTTGAGCTAAAACGCTGAAATTTAGGCCATATTAGAATAGGCTATATTTGAAAAAATGGAATTGGTCTGACCTAGAAAATATTTTTTTGAAATTTCTGCTCCACCAATTTAAATTATAGCATAACTCGTTTCATAGTTGGACGGTGATTGAAATTTTAGACAGATTTTAAAAACAGATTGATCCCTTGAATTTTCTAGGCCACCTCTCCAGAAAAAAATCTGAGAATTGTTTTTATTTCTAATTCAATTTCTTCGGCCGTTTTTCATCTCTCGAGGATCTTATCCCCTTGTCTTACGTCTCCCACCCGCTGCTATTTAGGCGCCTTCATAACTGTGAAAATTCTCACCATTACTTTCCCTATCTCGTTTTTGCCCCCCCCCCCCGGTGTCCTATCCTTGTTCGTACACCTGTTGTTCCATAACATCTGCCAACCAATTTTTTCCAATTTTGCCAATTTTTAGTCAAAAAAGTGCATTGCATCGGCAGGCATGCCTCTATAACTCGTACACACACTTCGCTGAGCATACTGGAAGAGGGAAAAAATCAGGGATTGTTTGGATTCCTGGCGCCTTCTAGGAAAAAAACTCTTCCATTTTTGTAGTGCACATCAAAATGATCAAGCTGATTAATTTTCAAGTTACTCCCATAAATACAACTGAGAAAGTTGCGTTTTAAAGTTTCTAGGCCATCGTGGGATTTCTAGGTAGGTTCCCTTTTTTAAAATAGCAGTCTTGCACTAAAGTTTTGATTAGGCTGTTAAATGCTTTTTGTCAGTACGTTTTTTGGAACGTCGATTTTTACATTCCTCTTTTAGTTATTGATTCCGTTTTTTGCAAATTTTTATTTATTCCATATCTTACAACATTTAGAGGGACTCAAAGTCTTTGATAGCCAAGAATTCACTCTAATGACGTTATGAGCTCCCAGACTATAACCTTTTTCCCTTTTAAAAAATATCTAAATTACAAACATTTAATACAAAAACTTCTCGTTTCGAAACGTTTCGAAATCCTCCATTTAAAAAAATTAGATTAGCATCGGAAAAATTGCGAAAATTTTGAATCTGAGTGTGGATTTTCAATAGGGGGTCGAAACCTCGCAGGAATTTGAGAACAGTACCCTTTCCATCGTCCTTCCCGAAGCCCATTACATCATTAATTTAGCCACCTTTCTAAAGCGGTCCTGGGGGGGGGGACATCTGTAGTTTGTTGCCTATACAGGGACCCCCGCCACAACCACCGCAACTAGAGAAGAAACATCTGCTGCACACAGACAGCTGGCACATGGATGGACAAAACTCCTTAATTTTAGACCGCGCTATTTCATATAATAAAAGTAGAACGGGAGGCAGAAAAGAGGATGACTGCGAAACATCCACCTGCTTGGCTGTCAGCGCATAAACTTTTCGGAAATTTTGGGTCCCACCACGCTTTTTTCGGTAGCAAATTTTGAGATATCTCGATACACCATGATGTCATTTGGTGGAATTTTGGGTTATCATGGCAAATACAAACCTTTAACGTGAGTGCCAAATTGAACTTTTGCAGTCTGAACTTTTGGCCATTACTTAAAAATTTCCATGGGGCTCTCTAAGCCATGTGGTTTCGAATTTTTCCTGAAAATTTAGATTTGGTCATGCACCATGTTGTTTTTTTTTTGGAATAATTGAGGAATTCACGGCTTACTTTTAAAGTAAAAAGTTTCGTGAGATCCATGTGTTTTCATGTTATTCAGTTTGTAAATTATACAGATTATTGACTGAAGGTTAATTTTTAGTTGGGAAAATAAAAATCGCCAAAATCAATAAACAATCGTAATCATTTAGAAGTTGGGAGTTTCCATATAGGCGGTAAAAGGCTTGTCTGCCTTACAATAATACGACCGCCGCTCGCCTCAATCCGCGGCGGAGCAGTGTTCAGTTAGGCACTGAAACCGCGTTCCTGCTTACCATGATGTTCCGTTCTTCACGTCGATACACCATGATAATGGGTTACATTTTGAGCCTTTTCGAAAAATACCATGGTGGAAAATTTCAAGCTGAATTTTAATATTTATTAACCGTATTGTGGGAGATAGCATGCAAATGTCTTTCATCTTGTGTCCCTTCACTCGAACGTCTTCAATTTTCGTCCGAACTTCTCGATGCACCATAATGCTGTTTGGCGATAACTTTAAGAATGGTAGAGATTGCGATGCACCATGACGTTTGTATCGATTATCAGAACAAAAATCACTCCGAGACCCAAATAGTTTCATTCTCGGCACTATATTTTCCAAGTAAATTTGAAAATTGCTTCTCGGAAAAGTTTTTTCACATGCACCTTTAATCTTCTGCTTTGGAAACTATGTAATTTCCGCCCAATACTCTATTTCAAGTTGCTCTCGATGCACCATGATTGTATTTTTTTCAAATTTCTTACTTTTTTTTGATTTTTCCATGAGAGCCAATATCTGTCTTTATAACGGTTCTGTAACGAAATTTTGAAATTCTTGCACGAGATTCTGCTCTCATCTCGACATGATAATTTTAAAATGAAATTTAGCGATTTTTCGGGAAAAAAACTGTTTCGATCAGATTTTCTAGTTATTGGACACTCTGCACCTTGCTTATTGCTGGAAATTACATTTTAAACCGACAACCTTTCAAAAACTGTTTTCGTCGATCTCTATGAGTGCATAATTTTGTTGTAAATAGCTCGGTGGTGGGCCGCAAAAAAACAAAAAAAACAGGTATAAAACGCAAATAAATTTTGTTGTAATGTTGACACCAACAGAATCGGCCTGGAACATACGGTAGATCGGATTTGCAAAAAAACAACGTTTGTTTCGACGTTCCGCCGCTTTTTATGGGAGAAGTAGTATGTACCTTTAAGGGTACCGTAGCCTTGACCCTATGGCCTAAAAGTGAACGGTACTAGTCCCAAAAAAAACAAGATGACCAGTTTCAATCTGTCAACATCTACACATTTCTAAAATCTCATTTAAATTCCACTGTTCGATTTTCGCCTTTCTTCTGTCCCAAAGTACCGTATCCTCATCCTTCTACCACCTTAATTTGCATTTGTTCTTGCTTATTCACTTCTTCCCCTGGACGAAAAATGTTGCACGACAACAACAAAACCCGCCCCCCACCATCTGTTTCTCTGAACCTTCGATCCAACTGTCCCCGCCCCCTTTTTGAAGCCCACTGTCTTTTACTTTTTTTCTTTGGTCGCTGATTATGTCGGTTCGTTTTAGTATTACAGGAATGCACTACAATAAATTCCCTAAACGCGTACCGCGTTGCACAACATATTTGACGTGCAAAATATCTAGTAGCGAAACCTAATCTATAGTTACTCTTGAAATGACTTTTGTAGCATGCCGATTTAACTAAATTATTTATTAACAGATAAAATATTAATAGACACGACAATTCAAAAAAATTCATTTCGTAAATCGAGCCCGTAAAGACAAAAGCGCTACAGTAGTCATTTAAAGAATTACTGTGTTTTCGCGTACGAGTTATTTTGTGCGTCAACATATGTTGCGCAATACGCATTCTTATAATGTACCCGTAGTATATTTTTGTCTCTCTGATTTCCCTCAATTGCAATCTTTTAATTCCAGATTTTTTTGGTGAAATTTCTCCGCTCCATTATCAATTTTTTTTAACCACATAATTATTAACCCCAAAACATCGCAGATTTTCAGGTAAAATGCCAGGGCGTCGTGAAGCGTTAGACCTTTTTCTATGAGTAATGGTGAGCAATTTTTTTGAAGTTTTTTTTTGAAATTTGTAATTTTCCAGAAGGCTTCTGCAAACGGGCATGACACGTGTGAACGACGCCGAAATTTTGGCAACCGTGAGTTCGGCAAATAAGCTAACAGTCTAAGAAACACGAAAAAAAATTTTCTGTTCAAGATTCGTGATTTTCGGATGATTTTTGAACTTTTTGTTCCGACGAGATTAAAGTTCCCACTGAAAACCCTCTCTCTAAAAATCCGCTGCTAAAAAGCCTCAAATGGCCTTGCGAGAATAGACGGAATGTTCAGGGATGACTGGTTTAAAATCGGCGACCTGTTGCCATTCAAACCGAATATCTCATTTCGAGTCCTCCCTTTTTTTTAAGTGGGTCGGATTTGAGATTTAACATACAGAAGAGAATAGGGAGAGACAAAGAGGGACAAGAGGGGAAAAATCTTCTTGGAAACAACCTCGTACCGAAATTACGGAAGTTTTTGCCTCACAGGATCCTTCAATATTGCGTGAGAAAGCTAAAAATCCAATAGTCATTTTTTTCTCCTTTTTTAAAAAAAGGTTTCCTCCCGCGTCAAAAATTGAAAGGATCGGATTTATTGTTACACGCCTGCCTCCTTTCTATTAACCTTGTTCTCGATCGCAACCTCTTTTCTACATTACGTGAAAAAATGCTATTTTTTTTCCTTGTTCAGATTCAATTTGAAAGGTGCTGTGGAAAAAGTTTTTTTTTTGCCCTGAAAAAATAATCGAAATTTCGCGTTTATACTGCTAAAAAATGACGACTCAAAATTTCAAGTAATTCTTTCGAAAAATCGATTTGAAATAGACAAAAATTTTCAATTTTTCATATCTGAAAACACACTTATTTCGATTTTCATTGTTTCCTTGGAAAAAATCTCACAAAAACGCAAATAATTAATTTCCCACTTAATCTGGACTACGATATCCAAGCTCCGCCTCCGCGTATTCCTTGTACGTGACAAACATGGCGGCCCAACACCAACTCAGACATTAAATGAGTGATACCGTACTCTCTCTGTTTTTTCTTTCATTTTTTCGGCGCCGAGAATTTTCAATTTTTGGTGGTTCGTTTGGCGGTATTTTTCGGATTATGGTCGGTTCACACACACACACCAGTTGGTGTTGCCGGTCGTCACCCGACTCGCGCCACACTCTTTGTCCGTGTACTGCTTTGCCATTTGTGCGCGCGAACCGCTGCCCGTCTATCTTATCATATCAGGCGCCTCGTTTTGTCGCTTTTTCTACATTTGCCCTTCCTAGGACAGGGGTACCTGCGGTCGGCTTTTCATCCCAGAGAAAATATGCTTAAAAATTCCGAAAAACCTCTATTTTTCGATTTTAGCATCGATTTTCGCCCAAACATAACCATTTTTCAGAATGAACGAAGAACAAATCGCCTATTGCCAGGGGTTTGGTATTACGAGGAAGACACTGCCTCGTGCTCTCCAGTCAGCGATCCGGAATATTTCGCAGTTTCTCAACTACAGAACGTCGATAGGCGTGCAAAATGTCACAGAGTCCGTGGAAGTACCGACGTCGGCAATAGCATGTCGCCGAGATTGTTGGTCGTCAAGGTATAAATTGCCTGTTTAGTCAAATCTACAGATTCCACAAATTTTCTCGATAGGCTGCAAAATTAAGGCACTGCGCGCCAACTCGCGAACACCTACAAGACACCGGTTGGCGGAGAAGAGCCAATTTTCGTGGTCACCGGACGCCTACGTGAACGAGGCGAAACGAGAGATCGACTGCGCCACCGAGCACTTAACACAGATCCGTGCGTCGAGAAGACATACACAAAGTAGGTGACCGTAGGCAGACGGTTCCTGAGCCGCCTTGCTGTTGTTCCGAGCCCATGCACCTGGACAGATCACGAGCTATAGTTCGTTAATTGTCGGACTCGTCGTCCGAAAGGAGCGACTATGAACAGGACACCCTGACACGTACATCATTACAAGCGCCGAGCCGAGAACGGAGGAGCCCGTTTTTAAGGTATTTTTGTTGGAGAGCATACATAGAGTTTTGGCGCAAAATTCTCATTCATGCTTTATAAACCAAAAACAGAGAAGTTTCTAGTTTCGGCTTAGGAACTACTGAGAATCGGCTTTTCCATGACATATATGTGTGGAGCTGAAAATCTACTTTTGACTGAAAAATTCAAGTTTATGACTAAGAAAAATTAGATAATTAGACCATGCTATTATTTCATAATATTGGTCCAATTTTTCTTGCTTTGCTGAGCAAATTAACAAATTTAACAATCGGCGGGGTTTCTGAAATATTTTTGTAAAAAAACCGATTTAAACTCCAATTTTCCAACCTTATTTTTACATATTAGTACTAGAAAAATTGTATAATGGGGAGAATTCATAAGTTCTAAAATCGGCTGTTTTGTAGCAAAGTTTGTAAATATATCATTCTTAAAGTCTCTAAACGTGATTCTAGAAAACGTGTCTCATCAGGATTTGATTTCTGCGACACACTTCTCTCGAGTTTTACATAGAAGTTGTTCATTACAAATTTCTATTTTTAAGGTCCCCATTACCATTGTCAATCTTTCATTCCGATTATTTGCCTCGTCATAGCCTGCAAGAAGGGGAGCCTAATGCCTAGACAGATGAGACAGAAACACATGTGTGTTTGTAAGTGTCTGGTGTGATATACCCAATTCGTTTCGGCCGTCTCTTGTTTTCTTCCTGACACCGAGTTTCGAGCGATTTTCGAGGTCGTACAGTTATGAATTGGCTGTCACTGCTGTGGCTAACAAACAAAAACAATCAAACTTGTGCGGAATTGATATTCTAAAGAGAATAAAGAGCAACCATGGGTGGCGACTAGCATCGGAAGTGCTTGTGACCTCTTGGTGTGAATTTTAAACGGTTTCCTTCCACAGACTCCGACATGCTAAAAATTCCAGCCGTCGGGAGCCGTTTAGGGTCTACACTGATAGATGATGATTAGAATCTTTTAATTTGGTAGAATTCCCCCCGCGGGACCGCTTAATGTTGCATGTCGTCTTCTTCTTCTTGGCAGCAAAATATCATTGATGATGAGTTATCTCAGTTTGATGCTCAATGACGCCGTGAAACAGCCACCCCACAGTAAATTAGTCGAATTACCGATGGGGCGCCCGGGTTTTTGGAAGAGTCATGCGATTGGGAGTCCACATACACACGCACCATCTCTTTCACTCCATCTAACAGTGTAGTAGGGTGATGAAAAGGGGGGGGATCGATGAAGAGACTCTATTAATTAAATGACCGGGGCGGGGGCCAAATTGCACATACGCTTGGTTTTATTGCACCGTTGGCTCAGTGAGAGCAACATTTTGTGGCAGCACCAGGGGTACTTCAAATACGGGACGAACAAAAGTCGTTGTTGTTTCTATAGGAAGGCTTCCGTTGGACTTTTGAAACCAGATCAGATTAGGGATATGTAATTGACGGTTTTGACCGTATGTGTCCATACACGCGTCGTTGTGTGGTGTGTGGCGACATAAATTAGCGTATGTGCTCCGCATGGCCTTTTTCCTCCTTCCTTACAATGGTAATTATCATCCCCCACTACTCTGGGTCGCCATGGACGAACTGTGAATGTGTTGACAGTGCGGGCCCGAAACTAGTACATGGACATCTTGCCCCGGTGCGGTGCGCTCATCGTTATTCCTCCCAATTTAGTTGTCCGTTTCAAATGTCTCCGGTACCCTATTGGACGAGACAAGGAGGTGATGGATTTGCAGGCGGGGAAGGAATTACATGATGTTTGGGAGATTATGGAAAGGTAGTTTCACCTCGTATTATATGGTTCTACAAAGACCAATTGTCTTTTTTGTTCGTGGCTCAAATGAATAATTGGTACGGAAATATAGAAAAATGTCCGACTAGGTAATAGAATTGTTTCTATGTTTTTAACCAAAAATAGCTCATACTAGTGCACTTGAGTGTTGAATTTTCAAAGGTTTTATTTTCAAATAGAGCATTTTCAATACTTATAAAATCAATTTTCGGTTCAAAAACTTCTAATTTTCTCACCGAAAAAGTTCTCACAAGACAGTGACAGAGGGGTGGTCGCGTGCGAGTCGTTTTGATATCCATCTCGATAATCAGAGAATGTGATCTATGCCTCAATGACACAGTTCCGCGAAGGAGTCCGAGAAAAACGTACAAAAGAAGAATATTGATAGAAATAACATTTATTCAAATCAAAGGATATTAAAAAAAAAGAACATAAACTATTTAACGAATTCACAAAAATTCGGAAGCATATTTCCTATAATGAAAACATCCTAAAAATTCTGAAAATGTGTACTGCACAACATTTTTACGCGCATAATCTCTTGTAGCAAAAACTACATTCGTAATTCATAAAATTGACTAATGTAGCGCTTGTTTAGAGTTATGTGCTCTACGAAATGAATTTATATACTTTATCGATGGAAAAATAATTTTAAGCAGAATATGAGAAAATAATATGAAGAAAAAAGAAATTCGAGTCACGTGCTCTGAGAAATGAATTTAAAAATTTTATCGCTGGAAAAATATTTTTAAGCAGAAGATGAGAAAATAATATGAAGAAACGAAACTTAAGCAATTCATTCGAGATTACGCGCTTAAACCCAGAGCTACAGTAATCTGTGAAAGAATTAGTGTAGTATTCGCTACTAGATATTAAGTGCGTCAAATATGTGCCTATGCGCAATAAACATTTAAGTTTGTGTTTCCGTAATATAAGTTTTTTGCGAGAACTACAAAAATATAACTATTTCTATTCCAGGTGACCGGCCTCCCACATAACGTCGAGGCTGCCGGCAAGGAGATCGAGACGCACATCTTCCGGCGAACCGGAAATCTTCCAGAAACCCGACAAAATGACTGTGCCGGACAGGTGGCCGGTGTCTCGTTGATGGTTCAGAAGCAGCACAGGCTCAACAACAAATGGTCCACGAGGCGGTGTCAGCAACAATCGATATCGAAGAGCATTCGGCAGTAATCCGTTCAATCAGAAGGAGATGTCGTCGCCGCCATTGGAATGGAGAGCTCGGGGATTGGACGCGTTGCTCGCAGCCATCGAGGCGTAGTTCGTTGACTCCGGACTCTTTCCGGTACTGGACTGTCTTCTCGTCCATCGTGGAGGACAATCGGCGAAAAAAGGTCTGCCAACCTACGACTACTGGGGAACCGACAACTCGCTTAATATTATGGAGAACGGTTAGCTTTTTTTTCAACGAATTCATTAATAAGAATTTTAAATGACAAATAAGGATTTTTCCGAAATTCCACTCAGCCGCAAGTACGATGCTCTGTACGCATGGTCGTCGATGGGATTGGAGAAACGCGAGGAATCCCCAACCAATGGTATTTTTGAAGGAATTTTATAAATTACATTTTGATATAAAACAAAAAATGCAATTTTCCTTCAAAGTTCCCGTAAATTTTTGAAAGAAAATTTGATTTTCCGCTAAAAAATTCAAGAAAAAAACAAGTTCGTGTTTTCCACTCGGAACCTGACGGCTTCTTATGTTTTAAATAAAAAATAACGTTTCTAAAACTCATAATGTTTAAAAAATTTCACAGTAAAAAATTATTTTCCCGAAATCTTGAGACCTATCCGTTTTTGAAAATAAAAATTTAGGAGTAAAATCGTAGTTTTCTATATAAAAATTATAATTTTCATTTGAAATTCAATCAAAAAATGTTTAAATAAAATTGGATTGTGTCCGTCGAAATCTATAAAAAGAAAATTTTTTTTGAACAATAAAAGACAACTTGTAATTTTCTTTTGAACTTCGAGGAAAAATATGTTTTTTTTCACCGTTATGCAAAAAATCGATTTTTTAATAACCTCGTTTTTGAAAAAGGTGAAATTCCAATTTCAAGAGGTAAAGTTAATTTATTTATTTTATGAGAAAAACTTGAAATTTAAAGGAAAATTACTGAAATTTACAATTTATCATACATATTTATTTCGACATATCTCGAAATATCAAGTGGTAAATTTTCTCCACAAAAGTGTGATTCTCTTTAAAAACTAGAAAATTTCAATTGTATCTGAAGCAAATCAAATTTTGCAGGCTCATGACCTCCCTCAAAGGAACATCCGCCGGCTTCGGCCTTCTCAGCAATCAGGTCTGGCGGAAACATGAATCTGTGGAGCCCAGGATCGTTGGCTGTTCAGTAACATCTGCCTCGCCGACGTCATCCCGAGACCTGCGATCACCACGATCATACTCTCTTGCCGATCAATGGATAAGCTGTGGATCCATTCATCAATCCATTACTATCGTCTCTCATCTAGCAAAAACCTCAACGGGTTCCAATCTTTCCATTCTTTAAAAGATTCTTTTTCCCATTTTCTACTTTGTTCATCGGTGTACAAGTCCCTCCATTCCCATTTTCTCACCTCTTTACTACATTACTATGCGAACACACAAAAAGTCACCATCATTCTCACAAAATACTAGACAAAAAAAACGAAAAAAATCACATATATTTATATATAACTATTATTATTTGTTATTCATATTTTTGAATTATCGATATTATATATATTTATATATGTAACCCATACTGTCCCCCAATACATATATTCCTACAGTAGGTTTTTTTGGCTGTAACTTTCTCTATTATTTTTTGCACTAAGGACGAACAACTCATGTTTTTAACAAAACGGCAATTATATATATTATGCCTCTTTTCTCTCTATCTCTCACCTAGTGTTTAGCTCCCAATTTTCCCCCTCTCTACTACGCAACTAACGGAGAATTGAGAGGCCTTTTATATTTACAGCATCTTTATAAAACTCGAGTGATCCCCACCCCATCAAATTTATCGTATGTAAACGTTCTGTCGATATATTACATGGTGTATGTGAATGAAGCGTTTCGTGTCGTCTCTCCATATCGACTCTGGTATCCATAGCAACTCCCCGAGCTTTTCGCTCACTCGCGCCCGCCATATACTATACCTTTACTATTATTAAATGCACTCAAATCCTATCCTCCGTCAATTAGCCGATCAATTGTCCGAATTGCCACAATGCTCCATTGCGGGTACTATTAGCACAATAGTTGAATATATTAATTCAAAAATATTTATAGTTTGGAGGTGTCCCATTGTTTCAGATATCCGCGCGACGATAAGTGCCACGTTGGGGGAAACGCCAAAGAAAACGAGTAGGGATTTGCCTAGGTATAGAGGCGACATTTATGGAAAATTTGAAATTTTCTGAAAAAAAAAGGATTTTTGTTCTTTTATCAAAAATGCCTTGTCTTTTCGCCAAAAAAATCAAAATTTTCGACTTAAAAACTTCAAAATTTTTTCAGGATCACACTATACAAAATACAAAATATCTCGTAGCAAAAACTACAGTAATTCTTTAAATGAGTCCTACTGTAGAGCTTGTGTCGATTTACGGGCTCAAGTTTAATATTAGATAAAAATGAGAAGAAAGGTAAAGACACGAAGAAACGAATGATGCCAAAGTGTAATATCGAAAATATTCGAAAATAAATAAATTTCAGAAATAGTCCGTAAATCGACACAAGAGCTTCAGTAGTCATTTAAAGAATTACTGTAGGTTTTCGTTACAAGATATTTTGGTCAAATATATCGTATGTGCAATATGCATTTATTTTGTGTTTCCGGAATAGGTAAAATGTCAGAAAATCAAGGATGGAACCCCGCGTTCTACGGGTATTATGGCCACGGCCACTTTTTCCAAAACTGCAGTGAAAAAGGCGTTGTTATTTCATTTTCTGAAAAAAACATTGAACATTATTATCGAGAATACGATCTGACAAATTTCTCATAATTTATTTTTGATTGTCGCTACCTGTTTAACTTTACTCCGCCCCCAATCTTGTTGCCGGAAGTTTGATATTTTGTTTGTAGCTGTCTTGTCGAAGGACGGGGAGGAGGTCAACAAGGTAGATAAAAAATATATTATGCGAATTTTGTGCGATCGTATTTTTTCGATTATATATATATATATATCTTCATGTAATTCTCATGAAATCTTGAAAAAAAACGCGACACATGGAATTACCCGTTACTCGAGGCCCACTGTTTTATAGTTTGAGCGCGTTGCAATTTTTTGTCGATAACATAGTTTCTATTTAAACAAAAAACATCGTGCGCCCACATTGAAGAAAATGCTACAATTGGTGGCATTAACTTTCTGAAACAAGGATTTACAGAAAGTGTCAGGGCACCATAGCATGATTGGATTGGCTCGAGCAGAATGGATATCCAATATCATCTCAAGTCTTGATAACAAATGTCTGGAAACATGGAGAGTGCAGAAAAACATCATACATGGAAGATGCGGAAAAAATCGATAATCTATTGCGAAGTTAGCTGAAAATCGATATTCGCGATGGCACCGGTGACGAATTTGAACGAAAATCGATAAAATCGATTGGCGCGGGTTCCCGCCGGTTTTCAAAAATTAATAAAACATGGTCGATAAACGAGCACCGTTGAAAATTACACCGTTTAGTGATGAGGAATATCGAAAAACGTCGATGCAGAAACGGATGGAAATGGAGAGGGAACGAGTGAGTTGCGTTAAATAATTTTTTTTTAAAATATTTAACTAAAGGCGACAAGGCGATTTTTAAAAATCGATGTTTAGCGACTTTTATTCAAAAGAATAATTTCAATGCCCTAAATCACTCAAATGGTGATTAAAAAAGTATTTGCGCGCGCGCGTAAAATTGTGCATGCAGCGTATGACCCTATGTGGTAAACCTCCGGGTCCGACACTTTTTGGTGAGGGTTTCGCATCGCTATAAAGATTGCAGATCGCGGCGTGAGCGTTGGCGGCGTTCCGACTTGCATGAGAGTCCTTTCCTACTTTTGCAAAAGAATCGATCGCTCGGATTTTTCAGCTCGCACGTCTATCCAACCAGGCAGGACGAATCCGACGATATCCTCATCGTCTTCCTCCGACTCTTCCATAACGTCATCCGCGTCGTCATCTTCCGAGGAGAAGTTGACTTTTCAATTCGAATATCTTGGGGAAACCCACAGCAGCTGGCGCGGAGAAAATGATAGAACTCAGCCAAATTCCCAACGCATGGGGTCCGTCAAAATCCGCGTTAGTCACTACGTGGCCGTAAGCACTTCTGACCCACTTCCGGCGATTTTCAACGCACATCTTCCGCCGCTCTCCATGGGACGACCACCGCTGACAAAAAGCGCGAAAAGTCGGGAAATCGACGCCATTTTCGGCTCGGATAACGTGGATTATAGAGCGGGGATTTCGAGCAGGATGGCCGTGGCGAAGAAAAAGTCTATGCTCCCTATGGAGAAAAAGAAGGAGGAAGCGAAACCCTCAGAACAGGAGCTAGTGGAGCCGTTGGTCTTTGACTGCCTTATCAGAAGGTAACTTTGTACTTGCACCCTGCAAAAATTCCGAAAAATTATGCACGTGGTCACTGCTAGGTTTTGCATAAGCGAAGCAAAAGCGCCTCATTGAGAATACACGTTTGCGCCAACTCTCGCTATCCATTGGCGTGAGAGACACATATACTACTTTTTCCTCTGAACGTGAAAAACGAAAAGAATACCCGTTTTGCCGTCTGCATCTCTTCTTCCACACGCTATTTTAGCCGTCGAGGACGAGGAACTCTTCCAGGATTTTCTTGGCTTCTCATATTCGTTGTCAAGTTTTGCCTCGTCCGCGAGAAAACGTGAATTTTGAGACGGCCAGCGAGCACGTGATTCTGCAACTCTCCTAAAAATCGATTGTTCCTGTAGCTTATAATCTTTTAGAGGCGCATATTCCGCTTGCGGAGCAAAAGTAAACAAAAAACATGCCGGTCTAGATACAAATCGAAGAATTTCCTGCAAAATCAATAATAAAAAATTTTCAGGCGAATCGATCGGCTTGAAGACTTCGACACCGGTCAACTGTCCGGAGGATCCGATTATTGTTTTTAAAATTTTTTTCTTTTAAAAAATTTCCCGCCTTTGCAATAAATAAATTCTCACCTAGGCTAGAATTTCACTATTCAACTTGAAAAAATATGGTTCGCCCAAACTACGATAAACAAATGTGTGTCGAGCGGGCGAAGCCACTGAGAAAGGAGCAAAATGTACACAAAACCATATTTGAGTGTAATTTTTTCAGAGTTTGGCGCCGATTTTCTGTGAGACATGAGTTTTCTCAATTTATATTTGGTTATTTTTATTTTAGTTCTTACTGGTAAATGTCTGGGTAAGTCCTGATGACTTGTGAAAACGAAAAAAACTCTTTCATTGATGCTAGTGCGATTGCTAGGAAAGCAACTTTCATTCAGTTACCAAGAAAAAGTCCCCATATGGATCTGCGTGGCATAACAACTATCCATCCACGGAGATGCAAATCCGATCTATTGGCAAATAACATGGAAGAGTATAATTTCTCTTCCAAACACGGAAACCTTCCCCTTGGCGGTAGTGCCCACAACCCTGCATGTTTACCAAACTACACAGACAGCGCTTGTCTGCAAGTGGCAAAAAATGGCCGGCGAAATTTTTATGTAAATAATTTTCAAAGTGTTACCCTATTTGCACCTTTTTGGCAAAATTTCCATAAGTAAGAAATTTGATGGAAGAAACGATGAGAGGTTATGCGGGGAGTCTGAAAACGGGGCTGCATGACCTGTATGCGACCTGTTTAGGCCTAAAGCTAGTGACCCCTAGAAATCAAAGTTTCAAAGAGACTTTATTTTTCAGCACTCCAACAAGCTCAAGGCAGAAACTCAACGGTACGACGGATACAACAAGCTGGCGAACAGTGACTGGGCTTCTGCTGGTAGGTTTTTTTGGAAGAGAAATGACGTCACACTGCCCTACTTCTTCAGGAAGTCGGCTGCATGATGCACGCGGTTCCTACTACTCAGACGGCGCGTATATTCAGTGAATAACTCAGTCCTCCTGTCTCCGATATACTATTGGTTTAAAGGAGAGTCCGGTATTCCTTATACAAGAGGATGCCCCACTTGTTATTGGCATTTTTCAGTTTGTATTTTTTTAATACTAGTAGCTGAGCCATTTGTAGGTCATCAAGTAGTTGCTTAATAATGCAATCAAATGGAGTATCCTGTCCACTAGAGACACTTAAAATTCAAGATACCCCTATGTGATAATGTATTTGAAAATGCGAGTACTGGGGAAAACTACAATCCCATTTTACCATAGTGCAGACAAAGCAACTGGAAATTTTACCTCGAGAACAAACCGTCAATGAACGGACTTCATGGATTGATGGATCATTCATCTATGGTACCGCCCAGTCATGGGGGTCTAAGTTTTAGGACGGTTAGCTCAGGGTGCACCTGGATATCGACCACTTAACAACCCACATATTCCATTGAATATCCCCGCTCTGCCACAAGTACATCGATTGATCAGAGTCCTAAGATAGATTATTTAGTGTGTTCATTGTTCTATAGAAAAGCTATAAATAATTTGTAAAATTGAAGTGTTGGGAGACTCGCGTGTGAATGCAACAGCATCCTGGTCTTCTTTCATTTGGTCTGATCCTCTTCCGTGATTGGCATAACTACGATGCAAATCAAATCTATCGAGAACATCCTGACTGGACAGACGAGCAAATAGGCAGCACGGCGCTGGGATTGGTCATCTATGCAGAAGATTATTTGCTTTGTTCCAGGACCTCTAGGTTACTCATAGTGCATCATCTAATAGCTTAAACTCAGTGATTTCTGTTAAGGTGAAGTCGTTCGTTTGTCAAACTACACCAAAGGAATACATGCCACACATGCCACCTGGAATCTCGCTTTTGGAACACCGCCTTCAGGTTCCCTCACTCAATTGTGCCACCAGCAATAGTGGCTGCTGAGAAAACGAGTAAATAAATGTGAACCGGACGGAAGATGGTGGATATCCTGCATTGAGTGCCAGCGAATTGGTGGTGGAATGCACAGGATATTGGGAAGGAGTAGACAGTGTGGATGAAAACCTTATTCCTGGTTAGTTAATACTTGAGTGGTTATACTTTTGATAAAGATTGTTCAGGATGGCAAGCCAGATAGCTGAATGAGAAGATAACATAGTCGCAGATCTTCGTGATTACAGGACCAATGCATTTCTCTCGTTTGGATGTTGTTGCTTCATCAATAATGAGAGGAAGGGACAATGGAGTACCCCCGTATAATGAATTGAGAAGAACCTTCGGACCTGCACCAAAGGCATGGGAGACAATGAATGAAGATTTCTACAAGAAGCATACTGCGTGGAAAAGTTGAAAGAGTTTTGTGGATGGAGGCAATATTGAAACTTATTATATCTGGATGCTTATGTTGGAGGGCAAGGGTCTTTTATAAAAGTTAGAGAGATCCTCCAATATACCCTCATAACATATTGTATAAGTTTAATTCATCAATAATTCAGCTTGGACCATTTAGAATGCTGGAAGGAGGTGAAAATGGCCCTGAGATGTTCAAAGAAATCATAAAGGATGTTGGCGCACCCGTATTCGAGATGGAGGAGATCGATTCTGGTTTGAGAATAAACTAAATAGATTATTCACTAAGAAGTTCAAATGAAAGTTCATAGTATTACACTTCGTATATTATCAAAGCATTGCACAACCGATGTCGACGATGCTTCAGAAGGATGTGAGTTATAGTAAAACACCCGTTGGTTATGATCGCGTAGTTAATAGAATGTTTCATTCCAGTCATGGATCTTGAAATTTTGTCATGATTCTGTTATATAACAATATATGTATGTATTATATAATACTCATGTCTCAATATGGCATTTAATTTCCAGGTATTTTTCTTCAAAGAAGGTGATCCACGCCCCCGGCTTCCTAGTGAATACCATTGGACTTGAGTGCTCCCCAAGACTTATTCAATTCACCTACTGGGATGATAACGAGACTACTTATATCTACAGTCTAGGTTTGGCGTATATTCCTTTTAGTCAGTCTTTATTTCAATCTGATATATACTACCGATAGAGACTCAGCGATTATAGAGTTGATCAAGCTAAGAACTTTCAGTTTGCTATAATATCTCGCGATCATAATATGGTTGAACGACGTATCCGAATAGGTCATAACAGTGCTTGTGACAGCTTGACTACTGACTTGTCAACACAAAGTCCCAAAGTTAATGTCTACAAAGTGAATGGTATTTTTTCATACTTGATTTTGATTTAAATTATGTCGTGAATCTGCAGCTTTGGAATGGCTTCAAAGTACATACGGTCAGCAAGTTCGGATAGAAAGCGAATACCACTTGACAGTGTGCACAAGAAGGTTGTGCGGAATCCTTCGAAAAAAGGCTTCGTTTTGGAACTGGACAAAAGATTGAGGTATGCCACTCTATACCGAATCCATCAGCAATGCACGGACCATTTGTATTTTGTCTCAAAAGAATAATCTTCATTTGGTGATAAGATTGTCGTCTGATAGAGATTTTTCTAAATTTCTGATCACATTAGACAGGGGCTAGTGGAATGCAGGGGTTATCATAAAGGCTGACGAGACTTCTGTGAGTTTACTTCAAGAAATACGTCGAATCTGGAAATTATTTCAGATTCTCTTGTCCCAAGCAATCACAATAGAACACCGGCAAGACCGACTGTACCTGTTCTTCCGTGAAGCCTACGCAAAAGCATTCAATGATAGTGAACTTGCCAAGATTTGACTCGGAAACTTCATCTTTGGCTCATCGATGATGATTTAGTAAATGAGACAATATCTCGTCAGGAATTGGCAAGTGCAATGGGAATGAAAGCATAAATAATAAATACTTGAGTTTGTTGTGTGAACAGAATGTTCGCGATTGCAAAATAATTAGGATTCGCTCAGTTTCAATGAGTTTTTGACAGTATTCTTGATGGAGTTTTTTAATGGTGGGTTTATTGTGATTTACTAAAGTTCTGATCACAAATACTACACGTGAGTTCCAGTCTGTTTACACTAGGTTCGGTAAATATGTATAATGTTATAGGGTGACTGTTACTGAAGCGCCTTAGTAGTCTTCTCTTCTTTGAATGGCAACAAACAGGCTCCGTCATTAACACATTTAAGCTGCATTTCTCTGCTAAAAGTAACGGCTTAATCGAAGTGCGATTTAAACATTCGGGTCTATAATCGTCTTTTAGTATATTGTCGCGCCTACTAAGGCTCGCTTTAATAATCAGTTTTAAACGCGAATTTGATGGTGTTAAATACGATTTTAATTTGGGAATTGTTCACAATTAGATGCTATCTTGACTAATAATAAATAAATACAGACACAAAAACCTTTTACTACATGGACAAAAATCATCCGAATCTACCCAAATCGGCATTAGGTTAATGTCTTTGATTAATCACCTTCTTTAATTTGCAGCTCCTCAAAAGCAAAAACTGCACAGTCTATTCAAAATGAGTGATTTGGAGGGAAAGAACAAGGTTCTCCGAATGGATCTCGCAGAACTGGTCAAGTCCCTCAATCATACCGCCGGAGTTCACATTACCTAGAAAGTGTGCAGCTTCGATTAACTTTCAATGACGTGCTGCACAGGTGCAGGTATACATCCCTGTGTAGTATGCCAAGTATTAAGTTTCAGGAGTAAGTTCTCGACGATGCGGAGTACTTGACTTGTAATAATTTCGACGCATTGTTCTCGACGGAGATCTCTGACGTCCCGATCGGTCTGGTCCATTTAATAGATTATTACTCACATTTATCAAGTAGTATGGTGTTGAATTCAAATTCGCAAGTAAATACAACTTCAGGCCATCATGCCACACCTCATTCCCAATAGTGACCGCTCTACTCCTGCTCCACTTTCTCTGATTCAGAGAATTTGTGCATTCAAAGACTGGAAACCTATTCGACTACACGTCTTCATCATCGTCTGCTTTGTCGCCATTCACATTGTCCTTTTTTTCGAACTTTTCTGGCGTTTACTGTTTAGTTCGGTTTTCAAAAGCAATCAATTAAGATTCCTCCCTAAACGAAGATCTAGACCTCGGTCGGGTGTGGGTGCCGGGATCGCTATCACTCTCTCTTCTATTGCGGGAGCCTTGTCATTTAGCATGGCGTTGATATTGCGCTTACAGTGAAATATTATAACACTGCTTCGAGAGAGACAGTATTGCGCAGTATATTCCATTTGACTCGGCTTCGCGTTCCATAAGGTAAGAGCCTCTCTCTTGGCCTAGCGCTGTAGGTTAATTAAAACAATTACTCCAACTCGTAATTTCAGAGCGTCGCATTATTCACCCTATTCTTGTCTACCCTTCACACCATCGGCCATTGTGTAAACTTTTATGACGTTGGAACTCAAAGCGACCGTGGACTTGCTTTTCTCTTCCAGGAACAGCAACATTTTACGGGTAGCCGCACCTACACGACTCGGTTGGCAGATCTCTCAGTAGATTGAACGTTGGCTTGCTTTCAGCTCTGACGTCGCGCCTACCCTAAGCTGGTTCTATGGAACAATTACTGGGTTGGCGGGAATGGGATTAGTTATTATTTGGTTATGAGTATCATTTATGTGTTCGCATGGCCAAAGATCACTAAGCATATCACTCGTTTTCTCCGGCTGACTCATCTTGTGAATGTTGGGTTTTATGCACTCACGATCTTCACGGACTTCCTTTTTGGGGTAAGGCTTAATTTAATTTGATTCATTGCGCCTACGCTCTTTTTACGCTCTTGACGTCAATATTTGGTACGTCTCCCAAATTTGGCACGTTGGGACTCATTGTCCTTTCTGTAATCGAACGTATAATTGGGTTGATGCAATAACCCATTACAAGTCGTTTGATATAGCCCATGGAGAAATCCATCAGATATTATATACATCGAGTACCGTCGTGGCCAGGAGAATTTGAATATAAATCAGGACAATGGATTACAGTATCACCACCCTCTATATCATGTACCTTTAATGAATCTCACGCATTCTCGATTGTCGCCTCAATTCCACAGGATGAGAATATGAGGTTGTATATAAAAGCAGTTGGACCTTATCCCCCGGACATGGAAGTAGAGAAGTGGATTGATAAGCTCTTGAATACAGGGTCACCATTCCCATTGGTAATTCAGATGAAAGGACCATATGGTGACGGTAATCAGGAATAGATGAATTATGAAGTTGCAATAATGGTTGGAGCAGGAATCGGAGTGAGTCCATATGCATCCACGCTTGTTAGTACCAAACACATCAAGTGACTCGTTACAGAGTGATCGATGTCGTAAATATTTCCTGTGTGTTCGAGTCACAAGAACTTTGAATGGTTTGTGGAAATGCTGTCCTGAAAAATGACTATTGAGAATCATTTTAGCAAAGCCTCCTGGGCCCGAGACACACATTATTCGTCACTCAGATGTTCCATAAGTTTTATTTAAGCGGAACTACTATGCTTGAGTTTTTTATGCGTTTTTGGTTTTTACATGTATAACTCGGCTAAACCTAATGGAGAAAAAGGTTCCTTAACTAATAAAATGTTGCTCAGCTAACTATTTCTATGCAATAAAATATGTTTCAAAGTATCATCTCACAAGTCCAAATTTGATTATTTTTCTTAAACCGAGTATATTTCAAGTCCGAAATCTAGTTTTCTTGAAAAAATTTGGTATATTTTTTGCACATAATCATTTTATAAAGTGCTCTGCAAATCAGAAATAGTTCGAACAGTCTTTCATAGTTAGTGTGACATTTATTGGAACTTAAAAGAAAAAATTACGCGACATAGAAACGCTCGATTATCTGAAAAACCAATGGATTTTGATTCTAGTTAATTTATTTTCAAAAACCGATATAAACATATTTTGTGATAATTGTAAACTAAAAACTATACCTGAATATTTTTATATTTATGTGGTTTTTGATTTCAGGATTCAATGGTAAAATACTACCCTAACGGCTTACCCAAGTCTCAGAAAATTGTAGTTACTCTCAACAAATTAATACATATCATTTCTTATATGAAGTACGTTTGCGAGAAGCACTTCCGTGCCACCAACACAGGCATATCAATGTTCACTGGCCTACACGGTAAGAATCAATTCGGACGGCCCTTCAAAACTTTCTTCCAATGATTTATTCAGAGTGAGATAAGGAGGTTAGTTTCATGGTTTTAACCTCTAAATAAAGCAAATTTGCAGCAATCCGAAATTGGAGTGTTCAGTTGTGGACCTGTATACTTAAATGACAGTATAGCTGAAGGATGTGCATGCCAATCGACAACGAGATGCTCCATTTGCACTTTGAACCTTTCTAATCTTCCCTGTTAGATTTACTATGACAAAAAAAAGATCATGAATGACAAAACATAGAAAAAAAACCTGAAATAAAGATTTCACATTTGTCCAGGTAGTATATATCCCCAATACAAACATTTTGATACGGTCTCGAAACTTCCCCATTCCCAAATAATCATCAGACATTGTAATTAGGCAAAAAACCAGACCCCTCGGCTCCTCCCTCACCACAAATAAAAGCAATTCCCCCATTTCCCCCCAGTTCATTCACCAACAATGAGTTTATGACGTTCGTGTCATACACTTCGTTTTCTTTACGTGTTCATTTCTCCGTTCTCTTCCTTCTCGTCGCTTTTATTGTGATCTATGACATTTTCGATGAAATTCGAGAATTTCAAGAAGTAATCGAAAAAGATGCCAGGAAGTTTGAGGTAAGGCAATATGTGGTGCAGCAATAATATCCGCATTTTTCGTAGATCATACCGTTATGGGACAGTCTGACACCACGTGATAAAATAGTATACGAATGTAAAGCAAGGTTGAAACGAAAATGAAATTTCGTTTTCGAAAACGAAAACTTTTCGTTTTAAACGCGAAAGACTTAGAAAACGAAAACGAAAATATCAGTTTTGTCCTATTTAATTGGTAAAATATAGTTTTAGGTACATGAATTATTAGGTCCATTTTCGAATCAATAATAAACAAACAATAGTTTTATTACAAACAGTAAAAATAAAATAAAGCTAAAGAACAATAACAATCACACTTGCTGAACAACTCTTCCATTTATCCAAATTTAAAGCCACTTTTTGATTTAGCGTAAGAACACAGACTTGCTCAACGACTCTACGTAGACTTATTCCAGCTTTGTAGAAACGTGAGCCGCCAGCTCCTGAGAAAACTCGTTCCGATTCAGCAGATGAAGCTGGGGTTGTCAGATATCTGTTCGCTATATGAGAAAGCAATGGCAACTTAGATCGATTGAGCGTATTTTGAAAAAAGAGCGGGGTCTGATTTTCTATTGTTGTGGGTATCGGAGAAAACCAACTTCGGCACTAGCACCGAGCATGGAATCTACAGGCGCTTTGTATTCTTTTTCTGATCTTGGAATGCTTTTTCTCGTAAGCTTCAAACAGGAACTTCGTTATTCCCACTAGAGTTTCATTTTCTGGCTCATCGACTGCTTCTTCTCTTCTTTTAATAATCCTTGCGCTAAGCTCAAAACGACCAAGCTCTTTTCCGTCTATTTTCTTTTGTATCGTGGGTCCCAATGTTTGATGCAACAATCACCAGTTTGAATGTCACCAGTCGGTGCCCGCGTCGTAGGTGCGGTCAATGGCTGGTATGTATATAATATATATTAGATGGAAACTATAACATTGAAAAAAAAAAGCAAACATTGAAACACAATAGAAAATCAAAATATGGGCTCTTCTTGAATAAAAATCAGAATTACGAATTGTTCACTGGGGCTTATTTCTTGTACAAAATAATGATTTTGACCAGGCTCAAAAAAAATACGTTGTGCACAGAGAGAGGTGATGTTCCTTTTTTCGAAAATTCGAAAACGAAAACGAACAAAACATGACAGAAACCCGAAAATAACGAACAAACGAAAATTCGAAAACGACAAAGTGACAAGCCATTCCTGATTACAAGGTCGGTATTTCATAAATATTGTAGAGAAAGGTTGCTACTAGCGATGATTCCAAAAAAATTTAGATTCATCAGAGATGTACACCCAAATACCCAAGGCATCGGCCCTAATTATTGATTAGACACAACCGCGCTTCTTACTTCCAACAAGCTTTTCCTATTTTTCCGGTTCTACTTCACCGCCGCCTCACGTTCAATTGCCGGTTTCGACAAGCGGAGCCGATTCGGAGGAGCTGTTTCTTTTTAGTTGTATATACATCTTTTTAAAATTAAAAAGTCAGTGTTGTTGTTACCCATAAAACAGTGAATGAAAAAAAAAGAAGTCTAGACAGATCAAATGTAAAACTGGCACAGAATACTCAAAGAAGCATAAAAAATGTATTTTAATAATGGATGATATAGGGAAGGTTAGAACGTTTCAAAGCGTGTGGTGCAAATGAAAGAGCATCTCGTTGTCGGTTGGCAACTGCACATCCTTCAGCTATACTTTCTTACACGTCGACAACTGAACACTGGCCCGATTTTGGATTGCTGCACATTTGCTTTATTTCGAGGTTAAAAAGCATTTAACTAATCTCCTTATGTTCACTCTGAATAAATTGGAAGAAAGCTTTGAAGTTGGGCCGTCCGAAATGGTTATTAGCGTGAATACCAGTAAACATTGAAATTCCTGAGTTGGTGGCACGGAAGTGCTAACCTCTGGACGAATGTACTGCAAGTAAGAGGTTCAAAAGTTTAACAGCTTCAGACCTCCCGCTGATGCCACTACGTTTAAATGCGTCCGCTTTAATCAGTTTATAACCATAACCTGACGTTTGATTTTGAGAATTATCTTCAATAAACTCACAAGCATAGTAGTTCTCAAATCACTTGTGGACCGTCTGATTGACAAAGATATGTGTCTGCCATAGTTCCCGACCTTTCGTGGTCTCACGTTCTTTGAGCACATCCCCCCACAATCCAAGGTTTGCATAGTCCTTGTGAGCTTTCGAGTCCACACCCATAGGAAATATACTTTACGGCCACGTACTCTGTGAAATGAGTCACTTGATGTTCGTTGTACAGATCAACAACGATGCATATGGAGTCACTCCGATTCCTGCTTCAACCATTATTGCAACTTCATAATCCATCCATTCTAGGTTACCATCACCATATGGTCCTTTCTTATGGATTAATGGAAATGGCGATCCTGTGTTCAATTATCTTATCAATTCGCTTCTCAACTTCCATGTCGATGGTCCAACTGCTTTTATATACAACTTCATATCATCCTGTGGACTTGAGTGGGCAATCGCCAGAATGCGTGAGCTTTAAAGGTATTTGCCGTGATATTTATGGTGATATAGGGATACAGTATGACCCATTGTCCTGATTTATATTTAAACTCTCTTGGACGACGGTACTATTCATATCAAATATCTCATGGAAGGATTTCTGCGTTTACAATTTCTAAGTTTTTGTAATATTGCATCAAACCAATTATGCGATCGATTACAAATAAAACGATTGAGAGGGACGAACACCCACGTAGTAGCAAATTTGGGAGACTGCAGTTGTCAACAAATATTCGAAGAAACTTCTTGAACTGAACAGTGGCAAAACATCCAACAACTTTGGAAGCCCATGAAGAAGAGTACGTGCGTAAAAGGCAATATTGAAGATGTGATCCCTTCAGAACCGGAATGCGTGATAAGCTCTCTTAATGAGACATGGGAACGCGAGATCATAAATGATGCACATGACAGCGACCAATGCAATTCCTGTCAGACCTGTAATTGTGCTGAAGAACCAGTAAATGATTGAAGGAAGGAAGTTGGATCTGAAAGTTATTTGATGAAAGTTGTTGTCAGTCTTGAGAGAGTTTGTTAATGCGTATTCTAGTAAGATTGAATGCAAAAATGAATTCAAGTAAAGTATTACCCAAAGAATGCTTCCTGAAAGAGACAAGCAAGACCTTGGGCTTGACTTTGAGTTCCAACGTGATAGAGATTGACACAATGTCCAACGGTGTGAAGAGTAGCCCAGAAAGCCGCGAAAGAGCGCAACGATCTAGAAATGTTCAGTTATTATAGAGTTTTTGATACTGGCGGTCATAATAAACAATACTTTGTCCAAATAGTATTTCCCATTGTTTAATGTCATAGTTTATTAGGTGTATATTCAAAAATCTGCCACCATCCTTCAGAACACTTATGTAAAGTCGACTTAAAAACATCTGAGTTTTTTGAGCAACAAGAGACCCACACTCGTTCTAAATAGAAATATATCTGGAGCACAGGAAAATCTTTAAACTTAGGAGACACTTTTTTAGTAAACAGAACACTACACACAAGCAACACTGATGTAATGTTACCTTATCCTCACTTCTATTCATCATTTATTTTGCCTTTTAGACATCGATTTTTGTGTTTTGCTTCTTCTCCAATGTAGCCATTATTTTTTTTCTCATCCCTTTTTATTTTTGTTCCATTTTTATTTATGTAACGTATGGTTTGTATATTTTAATGTGAGTTTTTTTTCCGTAGCTCACGATATCTTACTATCGTAATAAATTTAAAAAAATTTTATCAAACACTTACGAAGTTTAGGCCGCTATATCATAAGTTCAAACATCTGGCTGAGACACCATGTTCGATGAAAAGATCTTTCCTTTCAGGCGTTGTATTCTATTTTAAAAAGTCTTTTCAAAACATTGTGTACGTACAGTACAGATATCCTACTTGCATGAAACCTCCGCATTACTGTACAGATAATAAAATAACACGTTTTCCCTTATATCTGAACATGCTAAATATTTTTAAAAACAACTGCTCATTTGACGGATAAAATTTACTAATGCCATCCAAGAATAATATTTAAAAAACATGTGTTACACGCTGCCCTAACGTTTCTCACCTTGTGGTTCCAACGCAATAGCCGCAAATAGTCTGGAAAATGGAAAATACTGCGTACAATGACTGTCTCTCGAAGCAGTGTGATTATGTTTCCTACAAACTGTCAGCAATATCAACGCCATGCATTATGAAATGGCTCCCGCGGCACCACGAGTAATAGCGATTCCAGCTCCCATTACTCGTCGGTGATCCATGCGCCATGTATAATCTGAAAACTAAATTAACATGAGCTCCCCATTATATGAACACGCCAAAACCGTTCGAAGAAAAGAACAAGATTGATGGCAACAAAGCAGAAGACAATGACAAACGTGTGCGATAGGTCTCCAAGAACGCTGAAACCTTGTGGATCAAAGTTAGCGGTGCTGAACTGTTGAGGTGCCGGATCGATCCACGACGGCAAATGAGTTCAGAGAAGATGTTCTAAAAGTTATAATTGTTATACGGTAAGAGGCCTCCTGAATACTCACTCTCCAATACTTGGCTGATAGACATGTTCTCTCGATTGAACGTCAGTCCAACTTGCTTGTCAGGTATATCCGAGAAAGCAATCCGAGCAGAAATCATCGTAAGTCAGGTACCGGTTGGCATCATTGCTCACTCCTGCATAGTTCAGCACTTCATTGAATAATCGGGATGAAGCTGCACACATTCAGTAATGACTCCAGCGGCGACTTTGATTGTGGGACCTGACGAGTTCCGCGAGAACCTTTCGGAGTACCTTGTTCTTTCCCTCCAACACACATTTTGACTAGAGTTTTTTTGCTCTTGAGATCTGAAAATTAAAGTAGGTGGTGCATAACATTTTTTAAAGGCAGTTTTGGTTTTTCTAATGTTCATTAAAAGAAAATCTACAATTGACTAATTTCTCGACACTTCGGTGCCATATTAGTTTTGACCTCCCTGTCACACGAGAACTTTCTACAGTGCTCTCGCAAATACTATCGGGCTCCCCCGAATAAATTCAGATTCATAAAGAATAAATAACCTTTAGAACTTTACTATGTGCTCTCGAAATATTGCCGACCATAGGACACCGAGTTTCCCGGCTAATGAACCAACAATGTTAATCCAGCGGTCGCTAACCGCCTAGTCCGTTTCAAGTATCTGGAAATAAATTTCTTTTGGAGACTTCGGCGTTCTCTTGTTGTAACCAAGGTCTAACCTTTTATATGTAGTTTTGTACGTACAAAATCAAAGACAGTTCAAAACAACTTTACCGCTACTGCTGTTACACGTAATTAAGCTGTATTAAGTATATATTCAATTAGAACTTGCAAAGTTAATGGGAAACACGTCATGCCGGAACATTCTAAAACGTAGTCTTTGTATCACGACAAATTTATGCTGAAATAGTCACCATTACTCTCTCAAGACTGTCCCCCAATTGCATTGAAACTGAGCCACGGCTCATTATGTTTTTGCTGCATTGGTCATCGCGAACATTCCCTTCTCAAACTCATTATTCGCTTTCATTCCCAACTTGCCAGTTCCTCGCGAGATATTGTCTTAATATATCATCATTTTCCGTGATGAGTCAAATGAAGGTTCCAAATCTTGAAGTGCACTATCATTGAATTCTTCCCATTTGCGTAGGCTTTCGCGCACGGATGAACAGGACCAGTCGGTTGACGGCGTTTCTTTTGTGATTGCTTGGGATAAGAGATTCTGAAATAATTTCGAGACTTCAACGTATTTCTTGAAGTAAACTGACAGAATTCTCGTCATTCTTTAATGACCTCTGCATTGATTCCACTAGCCGCCTGTCTAATTTGATCCAAAAATATAGATAAATCTCTTGCTATCAGACGACAATCTTATGACCAAAGCACTGATGATTATTCGAGACAGAAGTACAAATAGTCCGTGCATTGCTGATGGATTCGGCACAGTGTGGAATGTAACTGAATCTTCTGTCCAGTAAAACGAATTTTTCGGATTACACCGCGTGGCTTCTTAACTGCCAAGGTGGTGTTTTCTATTCGGCTCTATCCTGACATGTCGTATATACTCTTCTTGAAGCCATTCCAAAGCATTTACACCATAAATATCTCCCTTCGCGCCACAATCATCATAGTTTTGCAAAGTAGTTAGGCTGTCACAAGCACTGTTGTGGCCAATAGCAATGCGTCGATTAACCAAGTATCGGCCAATTCCATAGCAAACTGAAAGCATTTTGGTTTGTATGGAACTAGATGGAATAGCTCACTTAATGGCACAATGCTAATCCAATTAGGGCGAAAACGTAAGTGGTGATCAGTCCAATAAGTTGATTGCATAAATGGCACACATGGTTCAAGTCCAGTTGTCTGTTCACTTGGAATGGTTGCGGGGGTAACCTTCCTTGAAGAAGTATAGCTGGAGTGATAAATAAATTGCAATGCGGAATTCAAAAGAACATAATAATAAACCATTAAATTTGGAAAGTACTATTACTTACATCCTTCTTAATGTCTCATCGATATTGGTGGTTGCTTTGATAATATCTCGAAGTGAAATACTATGAATTATTTGAACGGATTCTTCATCAGTGAGTATTATTCTCAAACCTTTAGAATCTATCTCCATCACGAATAGGGGTCAATTGATCCTTTATGATTCTTTGAACAACTCTCCAGGCCCTATTTTCACCTCCTTCCAGCATTCTAAAATAATGACGTTTTATTGATTCACGTAATCCAATATATGTGCACTGAGAAAGAAACAAGTATGCGTAATTTATTCTGCCTGATTTGCAAAACATACTACCTTGCATGGGTAACTGAAAGAATTAAGGAATTGCTATACTATAAAACTGAGGTGACATACAACGTCCCGCTGAGAGTCTAGCCTGCTACAAATTATAGAGTATGACCTAAAGAAGCCGTTAGAAGTTACTCGTGAGAACTTTTTAACCCTTGAGAAGACTTTAGCGAATTCTATTCAATCCACTTATACCAATCAGTTATAAACGAATTGATTTTCATTGTTTTTGCTTGAAACTCTTCGAATTCACCGCATTTTAAGTTACGAATTCTACTTTAAATCCAAAACTAACCCTCCTAATAAGCATCCAAATATAAAATAGTGCCTCCATGCAACTCTTCGTTCAACTTCTCCACCTTTGCAGTATGCTTCTTGTAAAAGTCTTCATTCATTGTATCCCATGTCATTGGCGCAAGTTCGAATGTTCAATTCATTATACGGTGGTACCCCATTGTCCCATCCTCTCATTATTGATGAAGCAACAACATCCAAACGAGAGAATTGCGTTGGACCGAAGAATCACGAAGATCTTCAAAAATGACTACTATGTTATCATCTCGTTCAGGTATCTCAAGGCTTGCCATTCTAATCTGTAGTTACAATACCTCTATTATATAACCACTGCAAGCCTGAACTAACCACGAATAATCTCATCCACACTGAGCGTTATTCCTTTACAGGATACCTGCGCATTCCACCAATTCTGGGAGAATCTTGACCAATGCAGGATCTCCACCAACTTCCGTCCGGAATTCACATTTATTTTCCTCGTTTTCTCAGAAGCACTGCTGTGGCACAATTGAGTGAGGGAACCTGAAGGCGGCAGCTCCAAAATCATGCGAGATTCCTGGTGGACCATGTGTTTAAGCATGTGTTTGGTGTAGTTTGACAAACGAACGTCTTTAAAAGAAACACTGAGTTTAAGGTATTATAACATAGTTGATTAACCTAACAGCCCTCTCCGAAGTCATATGCAATAATCTTCTGCATAGATGCAATCACCAAATGACGTGCTGCCTGGAAGATTTGTTGGTCTGTCCAGTCAGGATGTTCTCGATGGATTTGATTTGCATTGCCAACGGAAGTGGAGCAGACCAAAAGAAGACCTGGATTCTCATTCACACGCGAGTCTCCCAACACTTCAAGTTTTAAATATTTATACTTTTATAAAACTCTGAACTCACTAAATAATCTATCTGGACTCATCAATCGATGTACTGGTGGCGGAGCGGGGTTATTCAATTGGAATATGTGGGTTGTTAAGTGGTGGATTATCCAGGTACACCTTCAGCCACCGCCCTTGTTTGAAGGATCTTAATGAGGACACCCATGGCTGGGTGGTACCATAGATGAATGATCCATCAATCCATGAAGTCCGTTCATCGATTTGTTCTCGAGGTGAGTTGAGTAATCCCATTTCCAGTTGCTTTATCGTATTTGGCACGTGTGAATGGGATTTCTGTCTATCCCTCACATTCTTTATCAAATGCATTATCACATAGGGGTACTTGTCTGAATTTTAACTGTCTCTAGTGGACAGGATACTCCATTTGATTGCATTATTTCATAAGCAACTACTTAGGACCTATAATTCTTATTACTAATTTTTAGAGGGCGATAAAAACCAACTGAAAAATGCCAAAGATATCGTGCATCCTCTTGTATTAGGTCTACCGGACTAACTCCTTTGAATAGTATATCGGAGAGTTCACGGGCGGACGCAAGTGAGTAATTCACTGAATATACACCGTCTGAGTAGTAGGAACGTGCATCTCTATGCAGCCGACTTCCTGAAGGAGTAGGGTAACGTCATACGTCTTCTCTTCCGAAAAAACCTACCAGCAGACCCCCATTCAATCCTCGCCAGATTGTTGTTCCATCAGTCGTATCTTTGAATTTCCTGATTTTGTTGGATTCCTGAAAAGATAAACGAGTTTTTTATTTCCAGGCCACCAAAATCTATATGACGGCCTTTTAGTTCCTTATTGAAATCTCTAGATCGCACAGTCACACATGCTCCCTTCACTACATTTTCACGATTCGTGCATTTTCTCACTGATCGCGCAAATTTCCGGTCAGTAGCGGAGCAGAGCAAACATTTGCCTAGCCCCTCCACCAGAAACAATTATTTTCGTATCAATTTCGCACCTTTATTCCGTTTGTTTGCCTCTTTTTTGTACATTTTATCCTTTTTCTAGCGACAATTGACGGCAAGGTCAGTACAACAGGAAATTGTTCCTGTCGTGAATTTCAGGAATTTTTCCAAAATTGGTTGGGAAACTACCACTGTGTTGAAAATTCGAAAGATACACATTTTGTTATTTAGGTGTAAACATGAACACTAGGTAATCTATGTGTTATGAAAAAGATAGAACACAGACACCGGGTGGCATACAGAGCTTATCAGTAAACAACTATCAGTGCTTTTGAAATTTTGGAGGGGCAGAAATAAATGTTGCGGACAAATTTTGTTTGGGATTTGAAGTTATGAGAAATACGCAATTTGAATTTTTGAACATTTTTTTGTAATTTTTATCCCATTCACGCTTTGTAATCTAACATTTTGAGAATCTAACCGGCAGAGAAAATAGTACAGACACGTTCAATTTCTTCCAAAAATTATCAATATAGGCCACTTGGTGTCCATCTTCCTTAACTGTTTGCTATAATTCCTACCTCTCTTTAAAAGAAATCAGCTACAATTTGAACAGATCTTGGTCAATACATTTTCAAAGATCGGCTCGATCCCTCTTAAACATTTAAGCTAGCAGGTCCGCTCTGTTGACAAATTTTCCACCCGGTCCTCCGAAAGGAATTTTGTTGGTCAGCCAACAACCTAGACCATGAACCGATCGTGCAATTTGCCTGCTTATAAAAAACGATATCTAGGCCACCCATTTTTAAATACTTTTTTGCCTAGTCTTAGGTATGTGGAATAAATTCTAGGTCAGGAGGTTGTCTAGGCCACGTTTCCACTCACCTTTCCGGCTGCAAAAATTGAACTGAACAGTATAGCTCTGTACAGCACATTTGAGCGCATTGCTCGTGCGCCTTAGAGTTTTAGTTGACCTGAAAATATTTGACTATTTAGAAATTGAAATTTTGAAAAGCAATGATTAAAGGTCAAAAAAGATGTTATTTATACACATGCAACATTTCAAAATTCTGATAACAAATATTTATAGGAACACTTTTTCCAACAATACGGTGACTAAGGGGGTTTACTGATAGTAACAAATTGGAGCGGTACAGGAGGAAAATTTAAACCGGCTCTACCCATTTTAGTGCTACCAGCCGACAACTCGCAAAAAAATCAATCAGCCGCACACCCTGCTTCGCCTGGATCGTCAATCACAGCGTTTTGGAATTTTCCTAATTTCTAAAATTTAATTTTCTAAAAACTGGGGATTTTTTCTGTAATTTTTTTTTTACTTTTAAATTATTTTTTAGGATCACGCCTTTTTGAAAATAACTTTCGAAAAATTGTTCGCTAAAAGAGTATAAATAAGATCAGGCTTCGAAAATGTTTCAAAAAATATTTTTTCACGATTCTGCAACAACAAAAAACAAAGACTGAAAAAAAGTAAGAAATTTATTTTGAACTTTTCAAATCTACATTTACAACAAAAACAGTTCTTTATAGACAATATTATTAAAATCCAAATAGATTCCCAGTAGATTTTGTTTAAATATTCAGAAAAGGACCAAACTTTCAGTTTTTGTGTTCTTAAAAAAAAAAATTTTAAATTAAAATTGTGTGATTATCAGTCTCAAAAATTCCAAAAAAGAGGCTTTTAGTTCTGTAACTTTTGAAGATTCAAAAAAAAATTGGGGGAGCCAAAAACTCACGCTTTAAACCTGCCCGCGAGAACTGTCTGCAAATATTCAACTTTCTCATTTTTATTAATTTAATGAGAAAATTTAAAAAATAAAAAAAAATTTTAAGGCATGGATGCGAAAGGCACGCGGGTAATTTTAAGCCCAGGCTGGCGTTTTAACTTAGGCTTCCATAGACCAAATATTTTCATACTTGTTGAAACTTCTGTAAAGGTTTGAAAATTTTTGAACAATTTAGGCCCAAAACCTTTGTTCCTAAAAGCATTCAAAAATTCTTTGAACAAATTCCGGTTATACTATCATAATGGGAGGAGGAGAAAAATATAATATGATTCTTCGTCAGACAAAAATAAATTGGTGAAGAGAAAAAAATGAATTGAGAGAAAAAGAGAAAGAAAGACGCGTCTTCCGAAGAAGAAGGAAACCTCCTGCGCGGGATGCCGAAACAATAAGCAGCAGCCGGGAGTGAGGGAGTGCACTGCACTAAAAAATGCGAGAGATTCACAGAAAATCGGGAGAAACCCCCCGTATGTCGGTCGAGAAACACCTAAGACCTACTTCATATTTCGAACCGGTTCATTTTCATTGGCATTCGTATTATTTAAATTATTTTGACAAGGGCAGTCGTCGTAGATGCTAATGTTGCCAGTTTGACGGGATGGCCGTGTCACTTGGGAAAAGATTGGCGGCAAAAATCGGGGGGTTCCTAGCCACCCTTTATCTTCTATGGTCGGAGAGGCGTTTTCTACTTATTTTGGTAGATGTTAATTAAAAATTTCATCAATTTGGGAGTAATAATGTGGCTGCAAATCATATTGAAATTTTCTATACAGTCAGTGCGAGCCAGCCTTATAAATTTTCTAGTGCCGCCCAGAAAAAAAAAATATCCTAGGCCACCAATTTTTGATCATTAATTTTTTGGCTATCAAATTAAGTAGACCACTAAAGTGTTTCGTCATTAAAATTTTCTAGGCCACCAATTTGGCTTGACTACTAACCTTCTTGGCCATCACAATTTCTAGGCCACTAAGTTTTTTGTCTAGGCCACTAACTTTCTAGGCCACAAACTTTGATGTCAGGCCATAAAGTTTTTCCCAGTAGTATGTTTTGCTCTTCAAATTTTTCAGGCCACCCACCAAAATTCTATTCCAACATTTCTCCGTCCCATCAAAGTTTCTAAGGCCTTTTATAGACGACTTCTTAATTGTAAGTCAAAGTGTTTCAAGACCATTATTTTCAATACACTAAATATCAAAAAACCAAATATTTTCCTTCAAAAACTTTGCAAACTAAACTAAATGTTTCCAATACGTGCTTTATTTTTATATGTAGGCGTTTAGACACCCCAGTGGGGAGGAGTAAATGTTAATTCTTATGATTATTTCATTGGGAGTCACTTTTCTTGTTCAACGTCTTTAATATTTTTGAATAGGATTATCATTGGTATTGGCAAATAAATAAAATTGTGAGTGACGTGGTGATATTGGACATTATTTGATTTTAGTTTGCTTTTTGAAATTTCAATTTTCGGCACTTTAATAATTGTTCAAAATGGTCATTTGTCTAGCAAATTTGCATTTTATTAAAATTTTTTTCATTTATTACATTTTCAGTGAAAATTGCACAATCTTTCATTTAAAACTCACTTCTAAAATGACAGATGCGAAAAAATAATTAGGTTTCAATATTCAAATGAATAATTTTTTAAACGATTAAAACAAAATTATAGTTATTACAAATTATTTAAAAGATGTCTATACTTAATCAACACTACAATTTATGTTTTGTTTTCATTTACTCGAAAATCCAGAAATTTTAGGTTTTCGAGAAAACTTATTTGTTTTTAATAAGTGGTTTATATAAATGAATCCACTTGAAAGTGCGAAAATGTACTTAAAAGAGTCCAAAATAAGCAAATATCATCACGAAGCGCCGAACGTAAGTTTTTCGAAATGTTCAGTTATAGTTTTGGTGAAACTGCCAACTTTACGAGGTTAAAATTTCGGGTTTAATTTTCAAGTCTGTTTTTATACAAATATAAATCAGAGTTATAAAATTTGTAAAAAAAAATTTCTTGGTCGGTATTTAAAAATGTGGGTGATAGGGCCGTTTTTGACAGAAAAAAAGTTTTATAATTGTTTTACATTTTACCAACATAGGAGCTGCCTTAAAAAATAGCTAAAGGCTTGGGGTTTTGCCCTAATGAACAGTCCCAAACTACCAAATATAAATGTAAAATTATTCTAAAAATCTTCAAAATTTTTAACGATTAAAAAAATTTGCGAAACTTTAATAAAGCAATATGGCGAATAATTGTTTCATTCCCGCGATTTTTTGATAATAATTTTTTTGTATAATTCTTGCATTTAATGGCGTCATTGCTTGTTTACATGTCACCATGTGTTTTTCGGCAATAGTAATAGAGGTTTTCAGAAAGCGATTTTCTAGTTTTTGAAGCACATTTCGTTCCCGTAAAGAAAACTTGATAATTGGAAAGAAATGTGGCAAAACGGCGCAATTGACCAAATCGACCAAAAAAGTTAACAAACTGTATTTAAAAATAAATTAATAACCAAAGTAAAAAGAACACCCACATAAATGTCAAAAATCACTCACCCATTTTAGCTGAAATTCAAAAAAGAATTCGGTCCTTCCCTTTTTTTCTAAACAAATATCTCTTAAATCATACATAGTATAATTTTATATGACCTTTCTGACAGTTATATTTGGCATAGTGGGACCTTTATAAGGGAAGTCAAAAAACTGAACTCCGGACTTTGACATGCTATAGTTATTTTTCGAAAAAAGAGTGAAAATAATGATCCCTCCAAAAAATTTTGCTTCCGCGGACCAGGTTCAGCAAAGTTATGACGTTTGGAAAGTGCCGAAAAAAATTCCTTGACCGACCCAAGCAAAAAAAAAAGATTCTTCAAATTTTCAAAAAAAAAATTCTGAAAGTTGATAACAACTATTGTAACTTATTCAAAAATGTGAAAAACGTTTATCATGCACGTTTTTTCTCCCCACGGACAAAAAACCACATTGCTTGATCAAAATTTCGTGAGCAAAATTCTAAAAATTACTTTTTCTTGTAGAATTATTGGTTTTCTGTTATGAGCTATATGCATGGCATTTTTCACTCTTTTGGATAATTTACAAATATTTTTTCCTCTTTTCAGAATTTTTTTTGAAATTTTTGAAATTTTTTAAAAGGGTGTTCCAGCCACTTTCAACATAACTTTGCTGAAGCTGGCCCAGCTAATTTCTTTTGGAGAGATAGCGTTATTTTCACTCGTTTATTGAAAAATTACTATGACATGTAATCCGGAGTTCAGTCGACTTCCCTTGTTAGGGCAAAAAATACCCACAGACGGTACTCCGCCTAATATCAAAAAAGTTCCCACTCGAGATCACTTTTTTACCATCTCAAAATCGTTCGGTTTGTTGGTGGGGGGGGGGGGGGCTTAAAGAAAAACGAAAAAATGAGACACTTGTCAATTTGATGGTAGCAAGTGAAATGGAGAGATACCGGAAAGAGAGTGTAAATAGAAGAAGGGAACAAACACAAATTTCAAAGTTGTCGGAAGGAATTAGGGTATGGAGGATAAAATATTGGAAATTGGGTTTAATAGGATATGTATCTAATCCCGAAGAATATTATTAAAATAACCGGTTCAAAGATCGTACTGAAAAAATCGATAAATACGTTGTGATGGTCCTACTTCCGTCCTCTTTACACAACCTCGTCTTCTTCTTCAGGGCGCATTCCTTGTAACAATGCCCCTTTTCTCTCTTGATGGAGTGCCACAAAACAGTTTGGCAGTTACACAATCGGAAGGCGAGGAAAGCAAAACGGGTATCAGATGATGATTAAGTGAAACCGGAACTGATAAGTGAGAATGGATTGAAATACAGATAGCCGTAAACTTTTAATAACCTAGAATATTAGTTATTAAAGGTGTTATGTATGTTTCGAGAACAAGATTCTGCTTTCTCAATTTTTGAATGAATTATGTTTGAAGTAATTTAAAATTGCCGAATGACGGGTTTGAATATTTGTTTTTTTAAAAAGATTTTTCGTCCGGCCGATTAGTATTTCGCGAAATGTTTTTTAAAATCTTTGGGTTTATGTTCTTCTCTTTTTTCATAAGTCTAAGCTTAGGTTTAGGCTTACTAATTCTAATCCGAAGCATAAGCTTAATCCTAAGCCTAAAGCTCTCTCAGCCTACTCTTTTAAGCTTAATGAATGCCCTAGCTTCATTTTTTTTCGCAGGTTTTTTTCTCTAAATCTCAAAAGCGATGCTACGGACCAAAAATTGGTGGTTCAAAATGTGTGTTTCTATTTTTTCATCAAAAGTTATTTTATGTGACTATACAAACGAGCTGACAATCTTTCTTCAAAATTCCGTTTTTCTTACCAAAAATAGTCAATTTTTCGAAATCTTGCAAAAAACCGTTACCGTTTCCCTAAGTTTTGCTTTCCGTAAATCCTTGTACCTTATGTCGTATCACATGGCATTAGAAATATTTCACTTGAACCAATCTTGTGCGCGTGGAGTACAAGTTAAACATCATATGTGGTGGGTGCAATTGCGCTCTATTGAACAAACTATGTATCAACAGAACGCGTTAACATTATAGCGGTTGTGCAGGTGGGGAAAACAGGAAAAACGATTAGGCAAAACAAAAAGTCTATTATATAAGTTTTCTTCTACACATCTCATAAAGGAAATTCTAATTTTTTACAAAAAGAGCGGGGGGCGCGATTGTAAAGGTTTAGACGGAGCGTTAAGATCTTTGTCGACAAGTGGTTCAGCCGACACCCTGTGAATGTGATTGCCGATATTGTCCTTCTCGTTGATTGAGTCTTTCGAGAAGAGCGCCAGAATGACGTGCAGAATGAAGAGACCGGTGGAGAGACCTGGGAGAGTTTTAAAATTTTTGAGTTTCTAGGCCACGAGTGTCGTCCACTATTATGTCCAAGAAGCTAAGGACAAAATGATTGTTCACTACTGTTTCAAAATCAGCTTGAATCTCAGTAGAAAACAAATTTCACTGGAATATTTCAGCGCTCACCAATAGCAACGACCAGAAAAACAGTCTTAGCAAAGCACACGATTGCATAAGTTGGCACAAAAATCAACGGAAGCATGCATAGGCATGTCGACAGTCCGGGCTTCACACATTGGCATTGCCATTCCTGCCAGAGTACTGTAGACACGTTCTTGTGGAGTGAAACCCACGTACACGAAGTTGTAGGCCACGTGAGCGGTGTAGTCGACCGAGAATACCGTGGCGAGAAGGACGTCCACTTGGATTACCGGGTCCAGGTCGGCACTCCAAAGGGAGAGAGACGAGAACTGTAAAAACTTAAAAAAAAGTAACTTTTTCAGATTAAATCCGAAGAAAATAACATAATTAATAAGGATTTTGTTTCAATGGTTTTTTAAAGTGACAACTACTCATTTTCAGGTTTTAAAAACTTTGACTTGATAAAAAAAAACATTTTGAGCTACTTAAAAAGGTTTTGAATTCCCATCCAAAATCTTTGAAGAAATACAAATGATAAAAATTCTTAAAAAAAAATTGTTAGCAACCCAAGCGTTCGCTAAAGATCGTTGTCGTTTTTTCTCAGACAATTTAAAACATATCCCGCCATGATATATATTTTCGGAGAATATCATTTCTCGTAAAATTGTTTTCTCTGCAAATTTGAATTCTCCGCCAATCATTTTTCTCAGAAAATTTGACAAAAAGGATCAAAAACATGAAATTTCCGTATGGCAAAAAATGTTTTCTCAGAGAATATGAATGTCCGCCAAATATATCAGATACTTTTAAAGTCTCGTCAAAACGTTTTCTTCGAACATCTTAGGATTATTTGGATTTGTAGAATTTTGATCTTGATTTAAATTTTTTAAGTTTTCTGAAAAAAAACAACCATAACAGATACTTGCAATAACAGATGTAATCACGCGAGCAACTGCATTAAAATTTGAAATACAAAACAAACGATTGCCATAACACAGCTAGTAACCGCAATCGATCCAAGTAAGTCAGTGGCCAACATCAAGATGATACTGAGAATTGCAGAGTCACAGTCCAAGAGTGTAGTGAATTGACTCATGAAGAAGTTCGGATATGTTGCATTGCACGTGCTCTTTCTGCCCATTCAGACATACGTTTACCGAGCCCTGAAGTGTCAGAACCCTGTGTTGGTCTGAAAATTTGGAAATTATTCGGATTGAAATTGAAAAGTGTCTAGGAATTAAGTTTGAACTATTTGAGAAGTTTGTATTTTAAATTTTGCGCTAAGTTGCCTGAAGAAAAACTAATTTCGAAGTACCTATATACCTACAATATTTTTCAAACTCAATCTTTAAATTTCGCGCCTAAAATATTTCGAACTTAAAATTTGCGACAAAACAATTTAAACTATTTGAGAAGTTTGAACTTTTAATTAACATTTGAACTCTTTGCGCCAATTTTTTTGCTTGGAAAATAACTTTTGAAATTCTAGTTGCAAGGAAATTCAGAAAAATTAAGGATGTAATTTTTTTATATGAAAAACTCTTAGAATCGATTTCGCGAAAATTTTTTACTCCTCGTGAATTGTCAAAATTTAAATTGAGTTTTACAAAAAAAATTGGCGGGAACGTGAAGTTTCATTAGGAAATTCAAATTTGATAGGCGTTTGACTAACTTATTATCATCTCCTGATATTTTACAAGGGTTCCGGGCGATCGCATCTCATCCATGTAGCGTCGGAAGATTATCATAAGATGGGTGGTAATTTTCTCCAACCAGAGTGGATAAAGTATTCATGGTCTTATCAAAATGCACATACTGCCGGAAGAAAAATCAGACTTCGATTGTCTCCACGAATACCTGGCACGTGTTCGAGCCGATCCATCAAATTGTTGAAAGAGGCGTACTGAAAATTGAATGGCCTAGTAAGTAAAAATTAGATCATGAGCTTACCTCTGCTTTGATCTCGATATTTGGAGGTTTGTTCACTATTACTGTAATGGGAACGTAACGGGATAGCAAGACTGGCCTGCAAAAATGATAAATGCTTAAAAAATACAACTTTTTTCTTTTAATAACGTAAAGAGCTTTTTAAATCGATAAAATCAGTAAATCGGCATTGCAACTGTAGACCAAAGATAACAATTATTGATTTTTCTTACAAAGACATTAAAAATAAAAAAAACTCAATAAAATTAGCGATTATCTTTCCAAAAATCTGAAAATCAAGTCAAATAATTTTCTTGTCGGTATCTTTTATGTTAACCTATAAATACCAATTATTGATTGTCTGGAAAATCAGTAAAGATTCAAATAGATTTTTTTGAGAACCTAAAAATCAGTAAAAAATAAAAAAGTTTTTTCAAACGCTTACGTTTCAAACAAATTCTTGATTTTACTTTCAAACCAAATTCATATTCGACAACGAATCCGCTTCGTTATGGGTCAGAAATGCCTTAGCTGGTTCAAAGGTCGTTTTCGTGGTCACATACTCCATCATTGAAGTTGTCAACGCATACATCCCAAGGCGCACCATACTGCACGCTACACGCCCCTTCAGGGAGCACACGAAGCTCGAGGACTTGGAGAGCCACGTGTCGGCTCCCGGGAAATTTTTGGCTCCGTATCATTGGCGATGGATTGGTAATCTGGGTCGTTGCAGAGGAATTCAATTGGAGCTAGGATCGTATGGGTGAAGATGTAGTCGAAGAGGCAAGGCGAGCGAGGCAGTTAGGCAGAACAAGAACATCTGGAAGATGAGTTTTATTCAAGCTAGCCCACGTTCTCACAAACTTGGCTGCGTGCCAAAGAAGGTTACCTGAGGCGTTGGCTTAGAATCCATTCCAAAAGCAATAATATTGGTGAGTGAGGTGATTTTACGATGGTCCAACATCGTGACAATCACTTGTTCCAAACGGCGAGGTCTCAAAATTTCATTTTACGATGCTATTCCAATACCCCTACAGTACTTTTGCAGTTTCTCTACAGCACCCCTATACAACTACGGTACATTTATTTATTTGTATATTTGTTCATCAGGGAACGATCCTAAAGATACAATTACAACAAGGCAGAATCTTTTACAATACAATGCCCCACCCTCTTTTTCCGTGAAAGGAAACTTACGTGTCAGTAATTGCAATATGATGTTTCCATCTGAGAAGTAGAATAAAAGCATCATCAACTTTTTCCAATTCCAAGTACCAAAAACTGGCGTAACACATGTAAATAGAGAACGACGGGAAGCCCATCCAACAAATTGCTCCAAACGAGGCGGCAGGCCATCGGAGTGAGCAATGATGTAACCAGATAGAATGCCATTTTGACAGATGACAGGCGGACAATGACAATGATGACCTGCGTCAGGTGGGAAGAATCCGATTGTCATTTCGTAGCTTCAATGGTTCCTCGAATCTCACGATTTGCTACTTGGTCACTGACAGTAGATGGTGAACTGAACGTGCTCGAAGGCAGAGGAGTTTGTTTTTTGGAAAGTTGGAAGAGCTCGTCGATTGCGCCCTGGGAAGTATAATTACGAAATGCCGAGTGCTTGCCAGTTTTTTTGATTATGTAAATTTGCTTCCCAGAATCCGAAAATTTGGTTTCCCGCAGAAAAGACTGAAATTTAAATTTCTAAAGATTGTTCAGATGTTTGTTTAAGTTTTCTTTAAAGACAAAGATTTGATTTTCCTATTGAAAATACATGGTGAAAATTCAAATTTACAAAAATTGAGTTTTGTTATAAAAACAGACTGAAAAATTGAACTTCCTGATTAAAATTGATTGAAATATAAGAGGCTCCTAAAAATCTTGAAAACTCGAAATGTAAATTCAAATTTCCCGTCCAAAAATTGACAAAAAAATTTGATTCTACTTTCCTGAAACAAGTTAAAAAATCAAAGGTCCCTCAAATAGTAAAACTGACTCAAAATTAATTGAAAATTGAAAGCCGTATGAGTCTTCTAGGCTATTCTCACCAAAGCTTAAACGCGAATTTTCCTTCTGGACATGTACCAGACCTCGAAAAATACCACAGCACCAAGAATTTGGGGCTGAGCCTCTTGGTCGGTGGTTCTGAAAGTGTCAATGTTTTTTCACATTTTTCCGGAACTTTTTATAGTTAAAAAAATGAAGTAGCTGGAAAGTGGCTAAATCATAAAAACCTTACTATTTTTCCATCAACTTTTCATTTAACATTTCAAAAAAAATCTAAAATCCGCATTACTCAAGTGAAGTCCCAGGAAAATATACGTGCCAGTCCGCTACATATCCGGATAGGTGAGAATACACTTGCGTGGCACCATGTATGTTTCTCCGCGTCAAATTCTGAAAATTGCCATCTGGTCGTTGAAGAGTTTTCTAGTCCACGACCACCACCAACAGTTTCGGTTTCGTTCGACTTTTTAGAATATCGAAACTGAAAATCCAACAACTTTTTGAGAAAAACTTACAAAGCTGATAATGTTTTTATTTTAACTTTTTTCACCATCATTCATTGACATTTAAGAATATAGATAAATGGGATAAGACCGTCCAGGTTTCTGTTCAGTTCTCCCTGTTGTTAAATTCATTAAGATTGTGGTCCCCAAAAAACAATGTTTCTTTCTTTTTTCGATTTTCAATTTTTAGATTTTTCAATCTTCACTAAAAACATCAATAATTGAAAAAATCGAAAAATGACACCCTAGACCACCACCTACCTCTAACAAGTGAAAGGGGCTGGAGAGTGGATCGGTAGCAATTTTTTCTTCCTTCCCATCATCGTGGTAGCCGAATGCCGCCGATAGTCGATTGTCCACAGTATAAATCTAAATTTTTTAAATTCCCGCCAGAAAAGTGGGCTTGACGGAGAATCAACTTACGTCTGCCAGTCCTACGCGCCTTCCTGGAGAATACTAATTTTCGCGCTGGGCGGTAAAAATACAGAATGCTCGTGCCGGATAGATGTCGAGTCCGTAGTATTCCATAGCCAGATACGGTTGAGTATTCACTGAAAAATGTAAAAAAAGTTTTATAGACATTTCCGCCAAAAGATTTAAAATAGGAGTTTTAAAAAAATTAACAAAATAGTTACGAACGAAGTTTTCATTTGCTTTAAAGTTTCTTTTTTTTCTTATTTATTTTTGATCAACTATTTATATTGGGTACTTTTTTAACTTCAAGTGGAATCCAAATTTTCTTCCCAGTCAACCAAACATTGACCATATCACAATAAGGGAAAAGGGAGAAAGGGAAATAGTTAGAAAAAGAAAAACATTGCGAAAAAACGTGTTATTTTTGACTGGTGGTGGAAGTAGGCTTCAAGGTCAGTAGTCACTTACTATCCAGCATCTGAATCATGATAAAAGGCTTTGCGAATATCTGGCTCTAAACGTATGTGCTACAAGTCCTGAACTGAGAACTCATAGGATGTATAAGAGCTCACTGAAAATTGTCCAACTTGAAAAATTTCGATTTTTTATGTTTATTAAATTTTTTCTGGTGTAAAATAGCAGAAAATGCCAAAAAAAAATGTATCAGACACAACTTCAATTTTTCAAACTTTTCGTTGTAAGACCATACAAGATACAATAAATTGTCGTTCGAGAGCGCTTTGCCCATGAACCCGTAACGGAGATTTTCATTCGACTACTCTATAGACCGCGTTGGTGATTCTGAAAATGACTTTTTCTTGGAAATTTAAAACTTTTAATCTGGGATTTTTCTGTTTTTTCCAAAAAATTATATTGAAAAATCAATTAATTAAATTTTTTCAAACCTATGGTGATTCATGATTTGATAACAAGAACATAGCTTCCTAGTTATAATTATCCTCAGTTTTCACGAGAGTAAAAAAAAACGGTAATAAAAACATTCTTTTTTCTATTTTTCTCAATTTTTCGATGTATTTACCAAGAAAATCGATTAATTTATCGATTTTTTTTTCAGAATATCTGACCGTTTTTGTTATTCATCGGAAAAGTTCAATATTTTATTTTTAGGAATTTGATTTCCAAACGTATATTGGTGGCCAAGTTTTCCCATTACTGATCGACGCATAAAAGTTAAAACCTCACAAAGTATCGAATAAACCGGATAGGCGGCTAACAGCCGGCACTGGCACGACGGCACTAATCACATCCCATCCCATTGAAACTTCGAAATTTTTTTGGATAATATTTTAACAGAATTTAAAGCAGCATGCAAACTCTCTCCAACAAAGAAAAATGTTTTTAAAAAATTGAAATTCGAAACACAAGCACGTGAAGCAGAGAATGCAGAAAACAATACCACTGTCCCAAAGTAGAAGTGAGGGAGGGAGGGCAATTATTTGCAGAGGTGACCAACGGGTTCGTCGGGTTCCAATTTTTCGGACACGGCGCAGAGGATTTGAGTCATTATTATTGTGTATAGAGAGTGTAAGAGAATTAGAGAATTTAGATGGGAAACTGTACGTACTTCTGCGAAATGGTGCACTTTTAGGATCGGCGGCCTAGAAATTTACATGGTGCTCTAGATGTCTAATAGATAGCCTAGATCTTTATAACTCCAGACAATTACTTGGTGGTCTAGAAGTTTTTTTTGTGACCTAGAAATGCAGATTGTGGACTATAAATTCACTTGGTGGCCTAGAAAATCATTTGGTAGAAATGTACTGGCCTGGAAATTAACCTTGAAGCTTATGCTAGAAGCTTTGTTAAGTGAGCAGACAGCCCAGCCAAATTCACTTGATTGCCTATCAATTCACTTGGTGGTCGAGAAATGTACGTGAAAGCCCAGCAATATTTACTTGGTCTAAAACATTTTTCAGTTAGAAATACATTGGAAAAAATTTCGATTAAGATTTATATTCTGGCGTTGGATGTGGTGACCTAGATATTTGTCAAGGGACTGATGAATTCATTTGGCGTCTAATTTTTTTGGTGACCTAGAAATTGATTTGGTGATCTGAAAATTCATTTTAACATGACCTGGGAATTTACTTGGTGGTCTAAAAAGTCTCATGGTGCCGGTCTTAAAGTGTGTTGCAAAAATTATACTACAATATTTAACTTTGAAATAAAAATTCAGCTCTAGATCTGCAAGAAAAATCTGTATTTTCTCAATTCAGGATTTTGATTAGTTAAAAAAAATCGAAATGATTGTTTAAAACGCGTTGCAAAAAACAATTTTGTAGCTCAGGAATGCGCTATTCTGGGGAGTCAGATTTACTGGATTTTACTTTTTTTCCTGCAATTCCAATGCAAAATAAGGTAAATGAGAAAACTAACACGGCGGTACATACAGGGGCATCTTGAATGTAAGGCAGTGTTTAGTAAGTGGACCGAGTGGACGGCAAACGCTTGTATTTTTCCTGTGTCGATGGGGGATATCTGTACCGCGGTTGCACACAAGAAACAAGTATTTTGATGATGATACGAATAAGAAAAAGAAAAAGGCAGCAAAAAAGTGTGTGGCAGACGACCACCGTCCATCGGATTAGGCTGAGCCGGCTAAGGCAAACTCGTTCTACCGAACAGAGGGCCGTTTGCAACCCCCAAAATCCTCTGAATGTGACGTCATTGTTGGGGCGGCGGGGTGGCGTCCAATAATTAGTGATTTTTTTTTTTGTATTCTGGAAAAAAAGGAAAAAATCGAGAAACATTCTTTTGTGTTTTTGGGGAGTCTGTCATGTGAAATTTAAAAATGTTGGGTACAATCAAAAAATCGTTTTGGTTTTTATATCTTATTTCAGGAATGTTTAAAAATCTCAATCGTTTTTCTTTGAAAAAACAAAAAACAACAAACATCAGCATCATTTTCGATTTAATTGTTTGTTAAAAAAATAGAAAGCGGAAAACACAAAATTTTCCGATCTTCTCGAAATTCACAAACTCATAAAAAAATCGAACTCCCCTTGTACCCCAGCACCCTAGCTGAGTCTTGCTTCCTGGCCAAAGGCATGGAGGGAGGCGGGCACCTCTTTTGCTTGACCTAAATAAAGGTGATATCCCAGTGATAAGGAAGGGTAATGATCCGGAAACCGCCTACCAAAGTGCATAGTTTCTGCGTTAAAAAAAGTGACAACTGACATCACACGGATGCTACAAATGGGGACTCACATGCCGGAGAGGGAAAATTGTAAATTTGTACGGGTAAGGGGATCAATGTTCAGTGGTGAGGTCGCGAGGACGGAGGGAAAAGGTGGAATTAGAATTGAATGGGAAATTGGTGGCAAAACGGTAAACAGTTCTTATTATCAAATGCATGAGGGATGGAGAAACCTAAGGAAACCCTTGCAGAATTTTGGAGGGGGTGATGAAAAGTATTGGCAACACCTTGGTGGACGAGAATTTTAAATTGATGATCCCATGGACTAAAAATTCAGATGATGGCCGAGTTTTTCATATTCGCACCGAAGAATACGGCAAAATGATGGCCTAGAAAGTTGTTGGAGCGACCTAATCTTTGTTCTTACAAATAGATCTCTAATGTTTCATCGAAGTCAAGGGATGTGAACTAGAAATATAAGATGGTGGCCTAGTCAACAATTATATTTATGGTTCGTCAAGAGGCCTAACTCTTCAATCACGAAATATTCTAGAGTTTAATCCTATAATTAGTATTGTGGACTAAAAGTCGAGATAATGACCGAACTTTAGCTCTCAACATCAATTTGGCCTTGAAATTCCGCCATGGCCGAATTTTCGTAAGTCGACCCCAGCGGTGGCTACGAGCCAAAAAACATAATTCCGCATTCATACATTTTAATATGAGGGAAGCCAGAAGTGCGAGCCTCATTATTTTGTGAGTACATTTTTGACTATCGTGCCAAAATTCCAAAATCCTCAAAAATTTGAAATTTTCGCGGCACAATTTCTGGTTTTAAATCTCTTTTTTTTAGTGTGATGTAGGGCTTTCCAATTTGCATAAAATAAAAAATCAACAAAAAGCCAAACATAATGTCAAATGGTCAGTTGCAATAAGAAAACAAACCTGCGTTTAGGATGGCCGAACCAGAAAAATAATTCAAGCTTTCGATTTCGCCCGAAAAAAATGAGGATCAGAATGAGAAGGTGTCGCCTATTAGAGATTGGAGGTTGTTGAGAAAAAGAGAATAGTGGAGCGGGGGGAAAATGATGAGGTAGAACGGAATCGAACATGCAAATAAAACGAATGTATTTGGTAGGAGAGGGAAGGTTACACTGTGTGTTCTGTGTTTGGAAAAGGATTGAAGTGGTGGAGGACTCTGGATTTAATACTACTTACCTGTTCTGATCAGGTTCAGAGGTATTTCAGCAGTCGCTCTTGTATATTTTGTCTTTTTAAGTTTATTTATCAAATCTTTTTTTGTAACTTTGAATCTGATGTCAAACTTTGGGAACTTTGAACTCGATGAAATTGCTCAAAAAGTAAAAGAGAATTTGCGCCCAACTCCTTTTTCGAATTTTTTTCGAGATACTTTGATTCTTCTTAATTTCAACACACAAAACTTCGCCAAAATATTGTTACAAAATTAACATTTTTATTTGTAAACAGCTGCTAAAGCACCACAAATGTGAAATTGATGCCTAAAATTAAAATGGAGTTTTTCAAAAAAAGCTGATTGAAATAAGAAAGTAAGCTAAATGTATATATATGGGGAAGATGCTATTTCGAATCTCGCGTTTTTTTAGTTGGGCATCTCCAAAATATGAAAAAAATACAATAAAAAGCTCCAAAAGATATCCAGGAATTTTTTCAAACTCACCAAGAAGTATGTTTTGATAAACAAAAATTTGAATTTTTCGAATTTTTTTATTCGTATAATACCTGTCACACTTATTTTCAGCATAAGAGGAAAAAATAAATGTTGAACTTTATTTAATGATAAAAATAGTTTGTCGAAAAGTTTTCGTAAATTTAAAAATTTAAGTTCTACCAAAATAGTTTTTCACCTGGAACAAAAAACAAGAATTTTGTTTGAGCTTATATAACACTACAACCACATTTTTGAGAACATGTCTAGCCTCTGTCAAACAGTTTTCCGGTAGTGGGTGTGGTTGCTAGTGATCAATAGATCTTCGTAAAAAATCGAAATTTTCCGTTATAGCCTGCTTTATTTTATGTGTTTGATGCTATAAGCGTTTGGATTGTATCAGTCCATATGATTTGACATTATTCGCAATATTTTTTTAAATCCGAATGTTTTTCGAGTCTCTATTTTTTGTAATTTTCCAGACGGTTTAAGAGCTAAGTTGTAGCTATTCTTTCCTATCAAAAAATGCAGGAATAAATACTAACTCAATTTATGCAAGATAAAACATTTACAGTGGTTTTTTTGGTCGAAACTAAATTCCGCAGAATTTGAAAATTACTGAAAGGGTTTTTCCTTTTTTAATTTGTACTCCCTACAGTACCCGTTATTTTTGAATTACAATTGGATGTTCGTACCTAAAATTGACACTTTTTCTCTAGTATATTTCCGAATTCAAAATTATCAGTTGAAACTAGATCCCACCAAAATAACAAATTGATAAGAAAACGTAGAAAGGGGAACGTGTACCCTTACAATAATATTAACTGTTTTCCCTCCAATTTTTTTTATTTTTCAAGGGTTTTATTCTTAATTCTATTCACAATTTTTCAAAAAATATTCAGCAAAAAAGTAGGCGTGCTGACTATATTAACAGTATAAAGTGAGTCTTTTTTGTGAGCATTAAAAAAATCAATTTTTTGTCCTAGCTTTGCAATAGTGGCAGCTCAAAAATTAAATGCATTTGTTCCATTTTCCGTAAAAAAGACAGTGGAAGAGTTTTTATCCGTACTTGGGCAGGCTAATATTTTGTGGCCGGTACAAATTTTTCGCGTGGTGCCTAGAAACCTTTTTTACGTTTTTTCTCGGAAACTTATTTTTTTCTGGCCGTGAACGAGTTTTGTTTAAATTTCAGGTGCTTTGAATATTTTGATGACTAGTTTATATTTTCCTGCTTCTAGTAATGCTTGGCCAAACGTCTTCACGTGGTCGGGCTTTTCATCGGTTAGCTTGATGCCCTAGGAACGTTTTTAACCTGGCGTTCTCTAGACAATAACTACCGTGGACTCGAAAGTATTCTACGCCACGAAATATTTGTAGCCTAGAAATCAAAGTCACTACCCGTGTGGCCTACGTCTCCCTGAGCATAACGTAGTCCTCGAGAAGTCCAGTCGACGGATACTGTCTACAAGATTAACGGCATGATAATCCTCCTGGTTCGATTACGATGTCCACTCATTCACTAGTCGGCGTTGTTGCAACAATGTGGAAAACTTTTTGGCATTTTTAAAGATTTTTAAACACATTTTTTCTGTCGGAACTGAGAACCGGCTGTTTGTAGAGAAAAAAATTGCATTTACTTTCCTTGAAAAATCTGTTAGCGTTCTTCACTCGCTGATTTATGTACCGTTTAAGTTTCAGAGACAGCGTGGGATTGGGGGACTGGACGCAGACAGCGAGTGAGTTTGCGTCTCCCTCTCCCTCCCACTCTCTCATAAGTTTTGAGTGTTCATAACTCGGAGAGTGGAGCTATCGAAAAATTCAAAAAAAAAAAGCCTAACAAAAAATTAATATAAAAAAATTCTACAAATTTTTAGTTGCTAATTTTTTGATAGCGATGCTAGGTTTTTAGAAAGGATGACGTTTTTAACTTACCTCGACTCTTTTTGTGTTACCAAGTTAGTATTCCTCTAACAAACCGCAAGACCTCACCTCATTGTAGCCTATTGAAATCTGTAAACGCCCAACGCAGGTTGCCTAGATTTGATATCCGCCTCCATCTCAGCCGTTCTCTTTCCATATTCTCCTAACTGTTTGCGTCTATTTTAATAATGGGATTATTCGGATTTCCTATTTCCGCTCAAAAACCAATAAATTTATTTTGTAGAGCGAAAAATTCTACACATTTTTGGAGTCAGCAAGTTTTTCAATGCACCTCTCCTCGCTGAGTTTCGTTAAGATCTATGATAGTAAAAATATTTTTGGGGCTAGCTATTGTTTTAGGATAATCAGGATCGCACGGACTTAAGTCTAGCCTCATTCCGAAATTTGTGAACTCTGTAAGTTATGTTGACTAATAGTATCCCTCTCCAGCTGTTGTTAATCTCCTCCTTCACTCCAGTTGTGATCGTTTTCGCTCTTCTCTCGCTTTTGCGCCCTCTCTGTAGGGTCCAGAGAGTATCAGTTATCTCCAGGACGCCGTGTGACGTCATCGCTGACAAGCCGTAACCTAGATAAAGCGCCCGGCAGAAGACCTGTTTTACCCCGACATGCCATTCGTGATAAATTTAGATTAGTCCTCTCACACTCTACATCTCTCCATGTTTTTTCACACGAACTATTTGTGTTTTGAAGAAATATCTTTAAAACTTTGCTTTGACTAATTGATAGCATAAAATGTATTTTTTCCGTAGCTCAGCAAATGGCGTAACTAAATGGTGTGAAATGTTAGATAGGGGACCGGTTTTGGCGGAAATCTCAGAAGAAATGGAGCCCTGCCTGCATAGAGACCGCTTTCGACTGATGACATCACAGAGTAAGGTGTCACATCTAAACACCATTCTTATTCTCTTTTTGAGGTCCAATTAGACTAGGCGGTCAGCGTGCTCTCGATTGCCCTAGCCGATGACGTCACATATTTGCCATTCACAACTTTCTAAACTTCAAACATTTTTTAATGTTTTCCAAATTTCAGCCGATTCCTCCAATGGGAGGACTCCCCTCCAAACATCACCACCTAACTGCCGTCCACGGCCACTTGTGGCCCAATAAAGGGTAACGTCGGATATGAGCAAGTAGCTCATAAATTGAGCTCTCTAAAGTTAAGATGAAAAGAAAATTATTTAGGAAGACGCTTCAGTGGTGTAGGGGTTCCTTGGATTACCGTACGCCACCAATTGGAGCCTTGCGCTTTAATAAGCCCTCATCGGAAACGGAGCCGCTGTGGATTCTGTTAGCCGCTGTTCGGGCCATATTAGGAGTCCGCAAAATGATGAGCCACTAGGGCAGGTAGGCGCCTAAATCAGAGCAAAACGCTGTCATTTTTATAAGGCTGTTCAGTTTCTAAGGTGAACACAGTCGGGAAAAGGTGCACTGTTTCAGCCTGAAAGTATTCACTCCAAAGTGGGAGTCAAATGAATCCCGACGGCTTCCCAGTGATGGTCTTCATCCATGGCGGAGGCTTCGGTGTTCACTCATCCAGCAACTATGGCTGCGTTTCATCGCACGAAACCTGCACCAAGGACGTCGTCGTGACCACCTGTTTTACTAACGCGTATGCTCGGCGGGATTCTTCACCACCGGCGAAGTGTGCCTTGGAAACCTTGGACTTTGTCCGGATCAGACTTCCCTGCCGCAGTCGAGTGGGTTCAGGAGATTCATCCGAGGAGACCCTGAATGTTACAATCTTTTTATGGCCAAAGTGCAGGTGGAGCATCTGTGGATCCCTTGCTTTGCCTATCGCCGCACTCGAGGGGATTGTTCAATCGGGCGATTCCGATGGAATGGAGAATGTGATGTTGCGAGGCGGACTAGTGAGTAGCAGGCTCAGTTGTCGAGGGAGTTTGCGAGATACCTTGGATGGGAAGTGGTAAGTGATTAACGCTTAGTCTTCAGATGTTAGAAAGTGCGTTGTCATCAGAGTTGGATTGAGTTTTTTTAAGCGTAATTTATACTAAAGCCCTATCGAAGCAGTTTCCTTGGCTACTTGGCCTACCACACTCAGCCGACGCCCGTCATAGCAACCACCTGGAGGCTCAAGACATTTCCTATAGTTATGTTCTATTGCAAATTTAATACGGTGATTATTCCAAAAATCTCATGACGTATTTTACCGAACGAGAAACCAGTGCAAACTTGTTGAGTACCTAATTACTTCACAGACAACGACAGTGAAGACCTTGTCCAATGGATCATCGACCAGAAACCCATAAGATCGAGATGGGCATAAACCCGAAAAGAGGATTCAAGCATTCTCAGGCTGGAAGCTTGTATTTGGTGCCAAACTTTTACGCACAGGCGACTTCTTCCCGAAACCCCCAGCATTAGAAAAGACGAAGCCCAAAGATTCGAATAATGACTCGGCAGGAACCACCAAGAACGGGGGTCTATTTTTCAGTGAATCTTCTGAAAATTTTCTGAAAATTTTCTATTATAGTCGCCCTCGGTGCCTTATCGAAAAATCCGGAAGGAATTAGTTCATGGGAAGAATCTTTAAAGAATGCGACTATGGCGAGCGTGCTGACGCGATGTGCTGCAGATGGTCTACGACTTTTATGTCAAGGAGGTACATCCGATCATGAGAAGAATATGCATTGTGAAGATAGGTCAGGCATAGAGCCTACAGGGCTATCGAGCCAGTGATTGAGTCCATTGGAGACTATTCTATCAACTATGGTACATACCGTCTGGCTAACATTATGACGGATCTTCAACACGATGTATACCTTACTTCTATCAGTTGGACTATCATACTCTGCAGGATTCGGTGTTCCGGTGGCTTCGGAGCTTCCGTGTTTGGGTGAGTTTAGGATGGGTCAGATTTTTCCTAAGCCCGGGGCCACATGCTCTTTGTAGATCAGCAGTTTTAGAAGTTCGAAGCGAGAAATGTATGAGTATGGGTAAAACTTTTAAAGATTGAAAAGAAATTATCCAAATAATAGGACTTGGTAAAAATCCCTTAGGCTACTTGTACGGCCGTAACCTGTCACTAACGATTCTAATAGTGTACCTTATCTGAACAGTATTGCCAACTAATTGAAATTAATTCTGAGACTCCGAGATTAGCTAGCGGTCCTTTTCGCTGTGGCCCAGTGCCCATTTCCTATGGCTCAATATCCTTTTCAGGCTCCACACATTTCACGGAAATCAGATATGTGCTCGGGAATAATCTCGAAATTATCCGACCAAATGATAATGATAAGAAGATGCTTCACGTTATGACAACTTATTTTACAAATTTTGCAAAATATGTTCGAGGTCCACACTTTTGTGTACTCGAAATTAAGCTGCTTTCAGAAACCTCACTAATGGAGAAAGGAGACTAGAATGGCAAAAGAACAACTCGGCACACCTTGGCGTTCGCCATTTCAAGATTGATCTGGACGATTCTGAAATGGTTGAGGACTCTCAGCAACGGAGAGCCGAGCTATGGGATAAACTGAGAGCATTTAATGTTAGCAGGGCTCACATGTTAAATTGCTGTTATTTTTACTTGATTGATTTTACGGTTTTATAAATAGTTTAGATTTGTTATATATTTATTTTTTCTGAGTTACATACATACATCAAGAAACATTTCTCTTGCAATCTAACTGAATTTTATTTTATAATCAGTTGTTTTTATTAATCCTGTACTATGCGGACAAGCGTAAAAATCTGTTTTAATCAAGAACTCACCTACCAATCGTTAACACCAAAAACCAACACGGTTCTGAAACAAACGATGCATAAGCTGGCACCATTATTAATTATCCGCATACAAGGTTTATCAAATAAAGGAAAAAGTCGGAAGCTTCCAACATTCAATATCTCTATTATACTTTCCCCTTTCCATGTATGTGCTTTTTGTGTGAAACCAACTTAACCGCCAGAAAGCACATAATCTATAACAGAGGTGGGCGGCAATTGCCGCTCGGCGAACATTCTGATTTTTTGGAAATTTTCATTTTTGGCTAGAAATTGCCGCTCTGGCGTTCGCCGGATATATTTGCCGAGGCGCAGTGTTTAGAGGATCCTCGTTTTACCGGAAACACTTAAAACTGTGCCTTTTTGAAAATATTTTATTTTTATTCTTTTTTTCGGCAAAGTTGCCGGTTTGCCCAATTTGGCAATACGCCGGAAATTTCAATTTCGGCAGTCGGTGCAAGTCAATTTGCCAATTTTCAGAAAAAAAATTTCGACGCCCATCCCTCATGCATACCGTTTTTGACTCAATTTAAATAGTAACCTTCCACATTAATGTAGTAACGGTAAGTTTGCATAATTTGTTTGAACTTTGAAAGCCGCTGGGCATCCAGCACCTGCGGTAATCGATCTCCTTAAAGGGTGTTTTCGCAAATCTACCAACATAACAGGAGTTTGTAGAAACATGAAACCGAAGGACAACACATTTTGAAAGTCACATTTATGTATCTGCACTTGCTAGCTATGGAGTCAATGAAGCATTACGAGAGACATGTGTTCATTCCCGAATGGAGTATGAGTAATAAGGTTCTTCGTTCACATTTTATTATTACAGGCTTGGGTCCCATATTGATTCATATTTTACTTACTTTTCAATTCATGTGTTTGTAATTTTTTTTCAATTAGAATACTATTATAATAAAATTTCTAATAATGGACAATCGAAATAGTTGCAAGTAGAATAACTATTTGTACAGTGATGCCTATAATTGTGGATGTTTATAATGTGTCTAATATTTCAACGCAATCGTGACACAAGCTCTATAGTATCTCGTGAGTGCATTTTCGGTGAGGTTTCAAAAAAATACTCCCTTGCTCGCCATACGTTTTCAGTTAAAAATTTCTTTAATAAAAAATTATACTGCTTATTTCTCGAACGATACCTTTAATGTTAACTGCGCCTACCATGTCCTTCAATCCCACTAGTCAGTTATTCTTTGCAATTAAATGTCATGGAAACGCTTCTTTAATGTCTAAATCATGGATATCTCCATCTCAACCATCCATCGTTTTTTATCATCATCATTCTCGTGTTCTCGTTCTCCGGGTCGCCTCCGCTTCTTCATCATCATCACCACGACAAAACGTTCTTCCTAATCGACATAATCCCGCATTTAATTTCTCGAATTGTTAGGTATGAATGACACCCAAAAACGGTCTCATATTCGGAAAAAATGGGAAGATTGATTCCTAATTTATTGGTTTTGACCGGTTAACCCCCACACATGTTTTTTGTACCTGCGTCTATTTTCGTCTAATTTTAAGAAGTCAATGCCTAATTGTCTTTTTTATTTTCTGTGAAGTGAAGTATCAAGATAAAATCAGTTTGGCGGTCGTCTCGCTTCTTTCTCATTTTTCGAAATACCCGTCGCAATATGGTTTTTTTATTACACATTTGTGCGCACTTTTTTGCTACCCTACCCCCCCAATTCTGACTCACGCTTGCATTCCGGAGACTGCTCTGAGAGTTATAACAAAACATAATTGTTATATAAATGTCAAAGTTTTTCGCAAGCTGAAAATTTTTGCCAGCTGAATTATTCCTTGCCCCTTCAAAGTAGCATAAGTCTAAAAATGCTCGAGTTATTGGAAAGTTGCTAATTACAAGTTAAAGAGTTTAATTGACTAGTTTCTCGATTTACAATTTTTGAACTTTATTCCTTGAAACTCTAGCAATGAGGGGCAGTAAGTGGGGACTCCCCCACTGGGGAGGGGAGAACCTTGTCAACCCACTAGGGAGGGGAGAACTTTGTCAACTTTAAAGCCACGTCCTTCTGCAGGGAAAAGACTCGCGCTATCAATAGGTCAACTAACAAAATGTGTTAAGCTCCACATTTTTGTAGTTAAACGTTTTCTGATATCACAGTAAGGTAGTTTTTGTGAAACCATCAAATCTGTAGGTTCTCCATTATTATTATCACCTAGCACAGTATTATTACCAGCTGATAAGTATCCGTCTTTTTTGGATGATCTTGTAAAGGAATATACCATTGTACTTCATCTCCTTTTTCTGTGTCTACCCTTATCTTGGGGTCGATCTTCTCCTTCCCGCATACGGTCTCCTCTTATTCAGAAAGTCAGGAGGAATATTCCGAGAAATTTTGTTTTGAACGACATGTGCGATCAATCGCTGGTCCAGAAGGTTTTCCCACTACTTGGCTCGTGTTCTCAGGTGAGTATGCGCCTTTAAACATTGAGGGTACTGTATGCACCATAACGCAGAATTGCAGATTCTAAAGTTGCGCAGGTTTGTTCTACACGGGATAACCGTAAAATTTTTATGTCCCTTTAATAGAAACTCGTCCGAAGAATTGGTAATGTACGTGGAAAACGACTTTTAAAAATGTTTTTTTACTCCAAACGATGCTCTATTGTGCCGAATCGCTTGTTGTTTAGCGGCGTTTTGGGACTAAATATTTATTTACTTATCGTCTTGTTTTTCATAACTTTATAACTGTTTAAACAAAATCGATAATATTTATTTCTAATACGATTCTGAAAATTTTGAATTCCAAAAAAATTTCGGATAATTTTTGATTTTATTTGGCAGATTATTTCTGATAGAATTTGAACACTCTCTTTGGCCAAAGAAATTCTGAAAGTTTTGAATTTCCCGCAAAAATTGAATTTCTGAGAGAATTTGAATTTCTTGCAATTTTTATGTGCAAAATCAATTGAAAATAAATGTGGTCGCCAAAACATAGAGAAAACTCCCGGCCACCGATTTTTTTTTCGCAAATTTTCCACCGCATTCTTTGCTGCATGACTGCCAAAAATTGGCGGCTTTGTATTCTACAGTGTTAATTCACAGATGGCCGAGTTTTCTCAGTTTTTTGCACGGTCACAGGCTTCTAGTTTATTATATTCATCTCCGCGGCGCGCGCACCGTACTTTCTCTCTACTCTCGGATCGTTATCCCTCTCTTCCAACCAACGCCCTCTGCGATTGTGTCATCATCTTTGCGATTTGTTCTGGAATCCCAATTTCCGTTTGGCTTTTCAATACCCGTGCCTTATTGGCTCAGGAATTTCTGGCCCGGAAATTTCCGGTCTACAATTCGGATTATTAACCATTTCGAAAAAAACATCCTTTAAATTATTTTTATTATAGTGATAAACGGCGGTGTGATTTTTTCTCGCTGGTGGGTCCTGGCACGACTGAAACTTTTCAGCTATGTAATTACCCAGCATTGCTTTAGAATTTAAATTTGCCGGCAAATTAGAACTGCAAGATTTTTGTTAGTTTTTAATTATAATTGTTTGGGAAAAGTACAAACTCATCTTTAATAAAACCCACCGTACTCCCATGTACTGCAGCCAAGAGACATAATTTGTTTCGTGCCAAGACCCATTTTTCCCTCCCTTTAAGAACTAGAAACCCCCTTGTTTACAACTGAACTTAAAATCGAATTAGTTTGTTCGCTAAACATGTTTTTCGCGCGAAATTTCGCTTTACAAAAAAGTTTTTCTTCATTCCGTTCGGTCGGCATGCGCCTTTAAGTGTAACTACTATTTTTGAAACCGACATAATGATAGAAAAAATTAGAAAATATTTTTAATTTTCGGCCGGAATATCTTCGAAAAAAAAACTAAATTTCATGGATTCTCAGTAAAAATTCACGGAAATTAAAACTTGCGTAGCGAGACCTCAACTATCACATTACCTATGCGCCTTTAAAGCTACCCTAACCCTATTTTTAAAAATAAAAGAATTTCCTTTTAAAAACGCCGGATTTTCTCCGTCTCTTTTCCCATCTTTTTTCATCTTCGGTACCCATCATATGTAGATGAGAATATCTCTGCACCTCTCCAACCAACCAAGTTCAACACTTCGATGCACCGTCCTTCAACGATGTGATCTTCCTCCTACTTCGACCCCCTCAATTCATTTCCGATTTCCTCGGATGTATTGATCTTTTTGCCTCTTTTATTTCTACGTTCTATAAAAGGATATAGCCAAATGGACTCAAACAATTACAATCCAAAGTTTTGACGTCAGTGAGCTTACTGCGAAAATCTGAAGAGATTATGTGAGTAAAAAGCGGCGGAAGACGTAAAACATATGAAATATTTTTAAAAAACTTTGTTAAAAGCCCCACATTTTCGAGATAAATCTAAATTTTCAAGTTTGTAGCAGCAAATCGCTAAGCAAAGATATATATTTCAGGCCGAGCAGACATAACAAAAATGCCGATGCTTCATCCACGGCATCAATCACTTATCGATGGCGATCGCCGTCACAGCGTCGAGCTCTCGATTTTTATTAAGTAATTTGTTTGCCTGCAACTCAGACCAACCAAATGCTTACGTCGTCTATTAGATCTTTCAACGATATTTGATTAGAATCTGAGAAAAAAGTATAATGGGGACATAATTAATAGGCTTATGGATATTATTTGATTTGACAATATGGATTTTCTAACCAAATATGGTTAAATTCTAATCCAATATGGAGCAAATCTAATCAAATATGGCTGAGATCGTGCCATATTGGATTATTTCGACCATATTGGATTAGATTTGTTTCTAATGAAATATGGAGAAAATCTAATCTCAGCCTTCATGAATTTCTAATCTAATATGGAGTACAGCAGCCTAATATAATGCAATATGGATTTAAAAAATATGGGTGAAGTCTCGTTGAATATTGTTGAAATCTAATTAGACGACTAAGCGTTTAGAGACAGAACTGGAGTTGAAAACCTTAAAAAAATGGGCGTAAAATTTTCAATTGTGTGGAAAAAATCAATGAAAAACTCAATCGTACAGTAATTCAAAAATTCGTTTCACTACTGGAAAAAATCAGTTCCCATTGAAAAAAGAAAAATCAATTTTTCCAGCTCTCAAATGGCAGTTGGGGCAATTCGAGCACTCGACCGTCTTCACCATCGCCGCCTTGCTCTTTCTGCTCGTCATTGTTCAGCTTTTCGTCGCGATTTTCTACCAAATGTACGGAAATCTTCTCATCTGCGACCGCACATCGTCATGCAGGTTCTGCTCGTTTTGTGCTTCCTGGCACTCACATGTGCGACGCTTTATGCGCTTTTCACGGTGCCACGTCTCAGGTGCTCGTCGTGGTTACAATCCGCAAATCGCCGCATTCCCTGGTAAGTGTGGTAAAAAATGAAGTAGATTTGTTTCCTTTGGAAATTCCTTCTTTTTCCTCAATTTTTCCTCATTTTTTTGCTTCCAAAAAAAAGACCCATTTTGCGAAAAAAATTGTTTTTTTAATATATGTCTTTTAAATTTTCCAGACAATTCTCCCGGCGCCAATGATCACAAAACGTGGTTTCCGGATTCTTAGTGGGCCTTCTCGTCATTTTCGCAGTCTCCTACATGCTCATCGCTGTGCTGAATGTGAGCTGTTCCCATGGCGACACCCATGTAACTTTAATTTTTGAAGACCTGGTGCAGTCGTCATCTATAGTTACCAGCTTTTGAGCCAGAATCAATCTTGTACGTCGGTCGAGATTGTGCGCCGAAGACACGATTCAACTCTCCCTATATCCCAATAAATCAGGCCACTGATTTTTAGTCTATATTGTGTAACACACCATTTGTTGAATTTTTCTCGAAAAAATCCGGTAAATTTTTGAGTATACATGTCCCGAAATTCTTCTTTTATCACATGTGTCAGGCTTTAATTTTCTTACTTTATTTTCGACTTCTGTACAAAAATCTTTGATATATTCTATTTATTCTTCTCAATTAATAATCACACGATCCATCTTTCCACTCGTCTCGCCACCTTTGCATCACATCTCGACAGTCGAACTTTGGTTTTCCCGTTTTTTCGTTGACTTTATAGTGTAGCTGGCACATCCATAGCGCAAACGCCTCGCGGCTTTCCACTTTTGGCGGCGATTCATTCAGATCTTTTATCTCTGTTGGCGCAGAAATCGCAGGGATATGTCTGAAAAATTTAGGCGTTTTTGTGTGAATCTTGAGCTTATTAGCTAACTTTTCCTAGAATAGAAATGATAAACTTCTGGCTCGATCCTTATCGTCTTGTAGGTTTTTCCCGGGTAGCGACATTGTGTGTAGCAAAACGCTTCCACATGGATCGCTATGCCTGAAATTTGAAATTTTTGGTGGAAATTTGAATTAAAAGCTTGAACCGAGCTCATCCTTGTTTCCTCTACTGGACATCCGTGCAATTTCGCTCCTGTGCTCGTGCTCGACGTCGATCTCGGATTCTGCAAAGAACTGAAATAATTGAGATTTTTTGCTCTGGAAATCTAGGTAAATCACATTTTTTCTTTATTTTTTCATCAGAGCCATTACTTCTCTGCCTTTTCTTCCTATCCTCTACACTGACGCATGCACGACACGGCTTCCCTCCATGGACCGATTTCCATTCTGAAATTTTTTAAGCACTTGGTTTTAGTTTCGTCTTTTAGAAGCCGTTTTAGGGCGTAAACTTATGACACTATACATAGACTACGACAAATCTATAGAAATGCATAAAAGATAGGTGAAAAATGTGAGAAATTGCGCAAAAACGCTGATGCAAAAACGAAAATAAATTAACTAAAAACATGAAATGCAAGTGCGCTCCACTGACACGCGTTAGAGAGCGTAGACGCAGAGAAATCTCGAAAAGATGAGGGATATCGTGGCGCGCGAGAATCAACCTTTTTTGAATTGTCTTGATATTAAAAGCCCAAAACCCTAATAGATCATTTTTGTTTTTGGTGGATTTTCTTGCTATGCAATGTAAAAATTTATTATTTGTTGCATCTAATCACTTTTAACAGAGATTTACAATTTGTGGCTGAAGGAAAATCCTTCAAAAATCAATTTCTACGATCCAAAAATTCGTTATTTAATTTTCCGCCCCGCTGATCAACTAAATTCTTCTATTTTATCACTTTATTGAAAACCCTCGCCCACCTCATTTTATCACCTGAAACTCGTCACACTTTACAATTTGTGAAATATGCGAAAATGGTTACTCAGCTAAAAAATCTGAAGCACGCGATAGCTTGCGACAACTTCTGGGAGTGGGATGGAACGAAAACGGCGAGAAAGGCAAATTTTTGGTGGAATTTAGCGAAAAAACCTGATATGTTTTTTTGCAGAAAATCGTCGCACGAGGTGCTTCGGAGCTTCTCTAGCTCTGGCCAAGAGCGGAGTCATTAAGTGAGGATAACCAGGAGATGTAGGATTTGTATGATTTATTTCTGCGCGTATATTCAACTTAGCTAAGAAAGTTTGTTTTTTTTTTGTTAAGAAGTCGTAAACAACTCAAGGAAATACCGTTAAAAATAAGCATTAAATAATATAGAGGCTTATGAGAACAAAAAATTCCAGGAAAACGAAGAAGCCAACCAACAATTCGAAAAAGAACGAAAAATGGGCACAAGACGAAGCGAAAAACCAGTCCCAACTCCACTGTTCGGGAGCTAGCTCAATACAAGATGTGCCAAAACGTTGCTGTCAGCAGGGAATCGATCATCTCAATCAGGTGCCATGATAGCATATTGTCTGAGACTACTTGAACTTCCAATCACAATCACCGAGAAAAATCGCACTATAAACGAATATGATCCAACGTGCTCCTAATGAGCTCCAACTCCTCACAGCGCCATTGAGCCGAGCATGCTCATTTGAGCAGCTTATGAAGAAATGGATTTGGAGCCGTGTCGAAACTTCCGCCGATATGGGGGCAATCGCGAGAAATTATATGGAATTGGCGGCGAACTTGCTGGAAGACGTGGATTCACCCACGTGGTTTTGAGAAGTCGCCTATTGACCTGATGGCGAAAGTGATGGGAACACTGAAGAAAAGTGTGGAAATGGATATCCCAAACAATAGTGCGTGGATATCTTGAAATAATGTTCAAAAAATTCAAATTGGCTTGTTAATGAATTAGGCTTAAGCTTAAGCTTAGATTTAGGCTTGCATAGGCTTACAAGTGCGGAAGTATTTCATATTCCCGGACTACAGAATGAAACCTATGTCATTTCGAAGGAGACTCTTTAAGTAGGTCCCTTCAAAAAATTTAGCGGCAGAGGAGCACTTTGACCTGGAAAAAAGTCGCTCTGAAAACTTTTCAGTGCATTTTATCACGGTCTTTCGAGGCCTGTAAAATGGATCCAAATGCGAATTTTTGTAGATTTTTGAAGATGTCTAGGATGCTGTCGCAGAGCACTCGGAACATTTTTTTTGGAATTTTTTAAAATTTTCGAACTGAAATTTCTTTTACTGTGAATAAGTCCATGGCAAAATTTTTCAGTGTATATATATATATATTTTTTTTAATTCAGAAAAGTTGTCAGTTATTTAAGATCAAAATGGGTGTTTTTACACAATGAATATTTTTTTGAGATTTGATTCGGACCTGCAAAAACCAATTTTGGAAAAAAATCGGCGTTTTACCCGGACTCGAACCCCAGTCTTAAAATATATTAATCAAACTCGCTAACCACTCGGTCATTCATCGACAATTTTTCTTGTAAATGAAATGGATGACAAAAAAACGTGACTCATTGATATCTACTTAAATATATAGGGACGTGAGAAATAGCTTTGGAAAAGGAGAGGACGAAGAGAATTCAGAGAGACTTTTTCCAGTTCAAAGTGCTCCTCTGCCGCTAAATTTTTTAGTAGGGGCCTGCTTAAAGGGTCTTCTTCGAAATGACATAGGTTTCATTCAGAAATCCGGGTTTAAGTTCTATTGAACTACTTCCCTGGTTAGGCTCACTAGGGAGTGACCAGAATAAATCGATAAAAAATTGTATCGGAAAGCTGGCATTCTCTACTATAAGAATATGAGTGTTTGCCCGTTCGGGCTGGAAATCTGAAATTTTTACGTCGGAAATTCTACACTGAAATCAGTGCTTCCTATGGTTAACAGTGGATTTTTGTCTCTGGAGCCAACAGAAGTCTCACCACAATGGTGGAAGGGCGAAATCCACATCGGTTCGGTGGTCGAGCGGTGAACGCGTTCGCCTCTTGAGCAGGAGTTTGTGGGTTCGGCTCCCATAGTCATGGGTTAACTTTTAGCCTTTTTTATACAAAATTTTCAGAACGGGAAACAAGTATTTAGAACATTTTTTTGAGGGTTTTACATAATTTTTTTGCTTTTTAATTGACCCATAATTACCCAGGAAACTTTTCAGAAATTTTAAATTTACATTTTCGAAAATTGACTCTTTTTCCTCCAACTCATGAGAAAATATGATCGAAAAATTTTTTTTTGAAATTTTTTTAAAAATGCATGGAATATTTTAGAGTGTCACAAATACCTATTCATTATTACGTTTCAAAGACCAATCATTGATTTTCTGATGCCTTATTAAGACGTTTTACCAAATCGATCTTTCAGGCAAAACATCTTGTATTTGAGGTTCCATATCTCTGCAGTAAAAAATCGCACTCAAATGTGATCAACTAGAAACTTGAGTTAAACACAATGTGATCTAAAACATTTCAGGGGGTTGAACACTTTTTTGTAAAAAACTTCGTTGCCGAGTTGGAACCAATTGATTTGAGATTCACTTATTTTTGAATATTCAAAATATTTGTTCTATATCTTGGCAACGAAATTTTTTACAAAAAAGTGTGCAACTGAAAAGTTTCAGATTACATTGTGTTGTACTTAACAGGTTTTCAGTTAATCACTTTGTAGTGCGATTTTTTCCTGCAGATATATGGAGCCTCAAAAACAATGTTTTGCCAACATCGATTTGGTAAAACTTTATTTCATTTTTTTTTTTCATGTTATTGTTTTTATATTGGGTCAAAACGTATTTGCTCTGCTATCACAATAAGCTGGCGCTAATTTTTAATTTTATTATTTTCATTTTGATAAATTTCACTGAAATTGTCACTTTAATGGTTTACATTCTATTGGTTTTCTTTTATTCAATGTCTTTTGATCGGAAACGTGATGTTTGCCTTGCATGACCGTCATTTTCCTTCCCAATCCCCTCCCATCAAATCCCTCGATTTCGAGACATGAGCAGAAGGTGGCAGATCATTTGGCAAGCATTATAAAGGAATCTTATCTTATGTACCAGTGTGGAAGAATCCGAATTTGGTTGAAGACGAAGAATATGTCGATTGGGAGCCAGAAGTTTTCAGTTGAGGTATGTTGGTTTCGACTCTATTAATTGTCATTTAAAAAACCTTTCAACCGTATGACTGTGTGTTGCCGGATCAAGATGATGTATTGTTCGGTGAGAAAGCTGTATCAAGGGAAGAGTTGGTTAAAGACGTGCGATCACCGTTCTAGCGTAGAAATTGGAAGTAGGCCGATAACGACTCTGCACCATAGTTATCGCTGGATACGAACCGATGCTCATATGTACAAACTGCGGAAGTACGGGAAAGATAAAAAAGCGTTCCAAGAACGGCTCGTTTGGCACAGCTTACACAGGCTTTATGGCCTTAGGAGGTCAAGGTGAAACTGAAATGGTGTACATTAAAATAACAAGTTTTAATATAAATATTTTAGGGGTCTTTGCATGATTCTGGTTTGATGGCTACGGGACTGGAAAACATCACCCGCGAAGTGAAGTTAAACAAAACGAAATGAAGTTGCAAAAAGGTCCGTCACAAACCTGGATAACCCGATGTAAGCAAAGCCACAGGAATGTAAGAAATTGCACTTGTATGTTAGCTATATATATATATATTTATATAATTTCGGAATCGTGAGTCGGAGAGTCGTACCAAGTACATGGAAGTGCCAGATCAATAAAGACGCTAAAAAAACGGGATGATTTTGTCAAGAATGCCAGAACAGAGATCTCAACCAACTATCACCCGTCGATGGTCTTCAAGTGTGAGCAAACCGGAATTCAGAAGGAGCGGTATCCAGCTCGGTCATTAGCCCTTGATGGTCGAAAAAACAGTCGAGATGTTGGCGCACCTCAATCGAAATCGTCGCTGACCCACTCGTTTACGTTTGTCCCGATGATTTTACTCGATGGCTCAATGGGACCCCAAGTTAAGGTAATCGCTGATCGACTAAAAGGCCAGTTTCCTCCGTCTACGTGGTCCAATTCAAAACTGCCCCAATTTTGTGCGGGCTGGATACAGACACACATCATGACGAAGCAATTGATGTGCGATTTTTTCGAATGTTGTGTCTTCATTCCGTCTAATGTGACCGAAAAAACTGTACATCATGCTGGACCGGCCAGCGTTCAAGGACCATACACAAGAACCTGGTTCCAAATGGTCATCATGTCGTCATTCGCAACATTCCAGAGCACACAACTGGAGATGATCCAACCGTTGGATGTCTATTGGGATGCGCCATGGAAGAAGGTATGAATTTTAATCTTTATAACTTTTTGAAAGTATTGTCCAGAGCTGGTGAGCTGCTCAAGAAGTTCACAGCATGCATGCCCTTCGAACCCAGACGGATTACGTCCTCGAGGAACAACCCAATTTGCATGGTATCTGTGTTGTATCTCCAGATCTCGGCAGTGCACTTCCGACCGTTACAGCTTGAAATCGTTGGAAGAAAGCTGGATACGTGGGTGCTGCCAATACTTCATCAACCGTACCACTTTTTGACTCCAGCTCATGCCATATTCCATTGATCATGGTGACCCAGTGATTTGCTATCACACTTATGGGATGTAACCATCACGGAGTCATCCGATGCGCAAGATGCAAGATGTTTGTTTGTTCTTCAACCATTTTGTGGTAACAACATCTTTGTTCATCTCCTGAATAACTAATAAATTCATGATTGCATTACATTCAAGTTTCGCTATGACTAAAATTGTTTATAAGGGGATACATGGTTGTAGTGGTCCATGGTTTAGTTTAAATTGGAAAAGATGTTGAATGAATCATTATGGTCTTGGTCGACACATAGATCATGCTGATGTCGATCAGAAAAATTAAAATTTGGGTTTTTATAGTTTCGAAAAAACACGTTTAAATTTTTGAAAAACTTTACCGTTCTTTAGGGTGTAATTGAACTCCAGATCCCACCATGCATGTCATCCACTCAATAGCCACTCGGCCATCTCCTGTTGCAGGCAGTACTAATTGGGGAGGTTGATAAGTAAAGCACGTCCGAATAATTTCAGACGTAAAAATATCAGATTTCCAGCCCGTACGGGCAAAAATTTCAGTCATTACAGCAGAGAGTGTCAACTTTCCGATACAATATTTTTTTTTTGAATATCGCTCTGCCATTTATTCTGGTCATTCCCTAGTCAGGATCAGCTCTACCTCAGGCCTAGGCTAAGCATAGGATTAAGGGTAGGCTTTGGCGTAGGCTTATGCTCGACGCTTAGGGGCTTGCTCAATCATACATCTTGCTTAAGCACGCAGCTTAAGACAGCAAAGCTTAAGCACACAGATTGGGCTTAGGCTCAGGCTCAGGCTTAGAAACAGTCGAAAAGTTAACTAAGTCAAAAAATTTTTTGTTAAAAAATTGTTTAAAAGGTATTATGATTTTAATAGAAAATTGGAAAAAACCCGAAAAAAAATGAACATAAATCAAAAAAAAAATTTTTTTTTAAAGAAAACTTCTTTTTTTCGAAAAAAATGCAATAAGGTTTTTCTGAAAAAAACAGGACTTTGATTTTACTGTAAAGAGAATTTTTTCTGTTTTCTTTTTCCAAGATTTCAACTTATTTCTGCGCTTCGAGTTTTTTTTTCAAATTTCCTCTTATTACAGTTGGTTACTGTCGAAAATTCTCGGTCGTCCACATTCATGACAATATCGTACTGGGGTCTCGAAGCGAGAGATTTCATTGTTCGTGAGATTTCTCACAGGTAGTTTGTCCAACTGGATATCAGTGGCTCATAAGATGCAGCTGGAGAACAGTCCTTTGAGTTTTTTTTCGGAGTTTGCAAACGCGCCCTAAAAAAGTTTGGAAAATTCCACGTGGAAAATAGTTTGGCGAAAGTTTTGATACAAATTTTTCGTGGATTAATTTTTTTACTGCTCGAAATTCTCTTTTGTTAAAATTAAAAATGTTTTATGGGCGAATTATTTTTCTAAATTTCAGCTTTTCTTTCACCAATAAAATATTTTTTTGAAATATCGCTTCGAGACCCAAAAAAATAATTATTCAATGAAATATCGAAAACAGCCAAAATCGAGAAATTATCGAAAATAATTCGAAAATTGGAACTTTTTAAAAAATATTTTAAATTTTTTTCAAATCAACACAAAGTCTCTCAACTTTTTTCTAAACAAGAAATATATTTCGTGACGAGACCCATTTCTACTAATTTTCTTTTTCAGAAATGCATAATGCGTCCATTGGATTGATGATCTCGCTTGCCATGATCGAAACCGTACACGGCCACCGTACCATGAACGAAGTGACACGTAAATATTCGAAAACTCGCGAAAACCGGAATCCAAGAGTCTCTGAAATTGGAGCACGTAATTTCTCAAGGAGTTCGACATCGATTCTCTTTCCGAAGAATGCGTGAGAGATCTGACGAGATGGTTGATGGCCGAACGATGACTTGAACAGCCGTCTGCGGCGATGAATGAATCGTTTGAATTGACCGTTGATAGCAGTAGTAAGAAGAAGGACGATGCCACGTTTGTTAGTGCGTACATAGAATTCTACCAAAAGGAGATCTACAAATTCTAAAGAAAATCTACGAAAGGAGTTGTCACGGCGCATGCCAGATCGATCTTTTTTCGGCTCAAACTTGGAAAAACCTGCAATTTTTATACATTTTTGGCTTCGAAAAGCAGGGAACTCTGCAATTTTAGGCCTTTTTCGCTAAAAAATTGGAAAAATCTGCAATTTTTATACATTTTGTGGCTCACAAACTGGAAAAACTTCCAATTTACATCTCAAACAGTCGGGAATCCGCAATTTTCCTCACATTTTTAGCTTAAACTAATTGAAAACATCTGCAATATTTCAGATTTTTGGGTCAAAAAATCGGGGAATTTTGCAATTTTTACATATTAAGTTTAACAGTGGAACATTGCAGAAAATCGGCATAATGTTGAACGTTTTCCTTTTTCCAGTTTTCTGTTTTGTTACGATTTTCGTTTTGCATGGAAAATGCTTCGATTGATACCCTTCTTTCGGAAACTAACCGACAGGAGTTTCTCCTGAAATAGGCGTAATCTCAAACCATTTATGGGCGTGGTCTTCTCTCTTATGGTTTTTATAAATGTTGTTCATTAAAACATTTTCAGGCCTTATCAATCTCTCCATTGGCTCGACGATTTCCGGAAAACATAAATTGAACGCGGGATGGTGTAATGCAAATCCTGAATGAGTTGCTAAAAAGTCGACGACTCGAACCTACCTTCACGTCACTAAAAAAATCGTGACAATCCTCTGGGAAAAGCGAAAATCCAACTGAGCCACTCCGTACTGTGTTCTGCTCTACTCTCCACGTCGTCTGCCAGGCCGATGTTCGATTCGCTCATCGGAAAGTGCCGACAATCAACTCGATTCTTAAATATTCGCTGTCTCTAATGCCAAATGTCGCATCTCTTCCTAGTGACGCTGCGTGGTCCGAAACGATTGTCAGATTCAGGACAGTATCACCGAGAGGGTCTCCGTAACACGTGGGATACCGTATCCCGAAACCCGCTAGCTCCGGCTCATAGTGCAGTGTTCGGCTGATTTCGGCATTTATCTCCGTTACGGAATTTGATGAGAATTCGAGATTCGCCAACGATGAGAGAGTTCGGAGTCTCAATGGAGGTAAGTCACTTTGCCACGTGGATGGATTTCCTTTAAAAAGAGTTTTTGGAAAACAAATCAGATTTTTGTATATCACCTTTAAATCGAGAAATTCTTGTTTTTCTGTAGTTTTCGAAAAGACATAATAGAATGGGTATTGCGGGAACTCCGGATGCACATAGTCACAAATTACTCTTCAGTTGTGCCTGTATCATCCAACGTATGGTACTGTTTCAGAAGCTTCTTCTAGTGTAGTTTATACCGTAGGGCTTCCAATTCTGGTAGAGGCGCGATTTCAGGGCCTGACGCCCGCCTGGAACCTGCTGACCTTTCGCCTCTTTTCTCTCATTGCTAATCAATTTGTTGAAAATCAAACTAAGAATTAAAAAAATAGTTCACGGAGCTTGTTCTGTCGTGGATTGGGGCGAGGGGCAGGTGGTGGTGATCTTAAGGTCAGGTAGGCAGGTGTCTTTTCACGCCTGCATTGAAGTCTAGTACCCCATATGCCGAAAACGCTGAATTTTCTCATTTTTCCAGACGACTCCCTGCTTCATAACTCTGAAACTAAGTAAATTAGCTTGCTCTCCAGCTCCTCCCCATCGGCTCCAATAGCCCTCCGAGGGGGCCACTTCTCGAAGAATTGAAGAGATTGGGAGATATGTGCATGGCTAATCTCAAGAGTATGTGAGCCTGTCGTTTTTTGATTTTTGAATATTTAAAAACCCAACATTTTCAGCGACTGATCACTCAGCCTCATTTGTGCTATGCCACGGATTTGCTCTGAAGTATCTGGATAGATCTTATGAGATTAGTTCAGCGGTTTTTTTTTCTAATTTTCGAAAAATTTAAGAAATTTTAGGAGCAATTGAAGAGAGAATTTGAATTTTTAAAAAATTTCGAATTTATGGAAACAGTAAAGTTTTTCGGAGTTTTTAAACGAATTTTCAGAATTTTGTAATAAAAAAATTTTCTAATTTTTATTCCACAATTTACAAAATCTAAAAAACTTTTTAGAAATGAATTGTTTGAGAAGTTAGATTTCCTAATTAAAAAAAAATTTGGGTTTTTATACAATTCTTAAAAGTTTGATATTTTCAAATGATATGAAGTTCACACATTTTTTAAAATATTCAAATAAAGAACATTTTCATTTTTTTGAAGAAATGTTCAAAAATTAACATTTTTTGAGACTTTCAGAAGTTTCTTCTGTTTTTTTTGCGTTTTCAAGTTTTTTGCAATTTGCGTAATTTTTATGGGGGACAGAAAATTTTGAGAATGCGGATTGCACAACCTTTTTGACGCGCAAAATATCTAGGAGCGAAAACTACAGTAATTCTTTAAATGACTACCGCTAAAATTTAGCATAAAAATAAAAATATATCGATGTATCTAGGATCCCGTAATAATCGACAGTAGCGCGCTACAGTAGTCTTTTGAGACGAATTACTGTAGTTTTCGCTATATTTTGCTCGTAAAATGTGCACGAATTCTTATGATATTTTGTTCTCACAAAAGTTGGTCAATTTATGGGATTCTCAAATTTTCGTTTTTTTTTGAAATTTAAGATTTTTAAGATAACATTCTTCAAAAAACTGATTTTTCTCTTAAATTGAAAAGGTTTTTTGAAAATGTACAAAAAGCTCTACTGATTCAAATCATGGAAGATAAAGAAAAAGACGAGTTTCTCCAATCTGCTCGCCATTTCTCAAAATGGCCTCAAAATCTGACACTACCAATTCAAAAACAGACACTAAATTGGCATGGCTGTCTTTTGCGAAGCGCTTGACAGCTCGTCGATCTGGTCTGTCAGTGGAGTGACCGACGATAAGTGCTTGTCGAGATGCTCGCCGAGCTGGCTGCCACAAGCTCTGAAATTCTAGATAAAGTTCCAAAATCGATGCCATTCAACAAATTCGTCACGGAGAGGATAATGCAGAATCGCGGTGATTTGTATGTACTGACAATTCGAGAAATATTCGTTTTTGCGTCTCGTTTCGGATAATGGCTACTAGGATGCTTATAACATGAGTGTTTGTTCTTGGGGATTGCCACGAAAAACTGGCAAAACGTTTCGAAGATTGAAAAAATATTTCTTGCAACATTATAAAGGAATTCCCATTTATATAATTTTGGAAAGTTTTTAGATTATATTAGGTAAAAAATTCGAATTTACAAAAAATTATGAAATTTTAAAAAAAAGTTTGAAAATGTATTTTTAAAAAATTTAAATATTAGTAAATATTTGAATTATCTAAATGTTTGCGATTGTGTTTTAAAAAAGCTTAAATTAAAAATTTTTTTCACCATATGAATAAATTAAAAATATATAACAAAAATTCAAAAAAAATTTTTTTCGAGAAAATTTTTTGCTTTTTTTAAAAATAGAATTATAAAAAAACTGAATAAAAACCTTCGAAAAAAAAACAATTATTTTGAAATTTTCAAAAAAACTAGCAAAATGATGTTAAAAAATTTGAGGAACAAAATTCACATCCCTTGCAGAAACGAAGCCGCCCAACTCCTAGGAGATGGTGAAACAATCAGTGAAACCGATATCTTCATGAAATCGAAAAGCGAATTACTCTTTCAACGTGTATTCGTAATGTGCCGTTTCCGAAGCAAGAGTAGAGCGGTTACACACTGGACCCCTATACCGCTGGGGAGCGGCCAACGTGCACAATGTGCTAATTTAAGCACGATCACATAAACGTCGAAATCAATCAGGAATTGCTGGAAAAGTCGCTATTTTTCGCAGAACCGTCATTGTCCGCCACTTGTTACGGCAGAATGGAAAAGAAGCAGAACCTGATGAGACGTGTCACTGCCCCTGTGCTGAAAATTGTGATGAAAGATGAAAAGTTGCTGGCGGCAAGGAATTTGGAAAAACTTGAAAAAAAAGAATTTCATCGTATTTTTAAATAATTTTTTGAATGAAAAATTCGGGATTTTTCCTTTTCCGCATTAAAAAAAAATTCAACCTATTGACTTATTCGAATTTAATTCTCAGGTGAATTTGTATTAACTACTATTTTCATAGTATTGGCTTAGAAAACAACAGTACTAAGCCTTAAGGTGAGATACAGATAAAAGAAAAAGAGTCCACGTTTTTATCAATGAAATATTCCTGAAAAAATTTCGGCGGGGTAAAAAGGAAAAGTACCAAAAATCAAACTTTCAAAGCTAACAATACGCAAGTATTCAAGTTAATTTTAATAATGGTTTAAATCCGGAATTAAGAAAGTGGTTCAAATGTCATTTGACTCATCCCTATTGTATTGACAATTGAAACGATTTTTGAGACTTGTATTTATTTAAGGAAAAAAAGTTCAGCTGTCACAAAGCAGGTCGTAATTTTAATTTGAATATTTAAAATAAAAAACTTATATGGGTGCTTCATTTTGCAAAACATTGCATTTAAAAAAAAAATTTTCAATGTTCGGCAAATCCGAGCTTGAAAAAAATCCTTCTAATTGTGTTTCCGAATTTTTGGGATTTTTTCTTCGAAAATAGGAATGGTTTAAAACAATTTGAGTTAGATATTGTTGCATATTTTTTTAAAATCAATCTCTTGCAATCAAAAAATTGAAATTTTAAGCAAAATAATAAAGTTTTATCTAATTTTTCAATTTTCAGGTATGGGTGGCCACAATTCTAAATATGGTTCGATCTCTCAAAGTCTATCAGATTCATTTCAGCCCGAAATCCAACGCGGCGAAGTTCTTGTAGGTTTTGTTACTGCGAATATCAAAATTTTGCTCGTCTAATTTGACGCCTGCTCTGTTTTTTTTTACGCGCATTTCAAATTATCTTAGAAATCCGTGACTTTCGTCTAATAACACCATTTTGTAAAATCTGAGCAATTTTCGGTTTTTGCGCGTCAAATGTGAGATATCTAAGTCAAACTTGACGCGCAAAATTTTCAAAAAAAAAATTCAATAATTTTCCGGGCGAAACACCTCGACATGGAATCGATTTCCCACTGCCAAGCATTGCGAAAACAGACGCAACAAAATAATCTGATCACGGCCGCCAACTTTTTGACACTTTTCGGATGTGAAGCGCTCGAGGTTGGAAGCGCCTGATTCTCAGATTTTGGAGCACCGCATTTTCAAGCAAACCGGCTACTGTGTTGCGAGGAAATGCTCATGCTATTTTTGTAAGCAATGATTTTTTGATAAGAAATTTCCCAAAAATTTTGATTTTTTGAATTATCTTTGTTAACTTCTTATTTTTAACTCAGTCTTTTTGCAAACTGAAAATTTCCAATTTTTGGGAAAAATCTCCATTTTTCAGGCTGAAGAATGTGTCGAACTTGGCCTGAACCACCGAATCGCTTCTCTTTTACGCGCACTGACAACCAGTCAATTCTGCCGAAAAGCTCTATGCGATGAATCTAATATCTGAAAATCGCGTTCTGACTTATCGATGGATTTTTTGATTTAAAAATGAGTGCAGGTTGGTGGAGAATAGTAGGATATGTGGAAAAACAATATTTGAAAAATAAAAAAAAAACTCATTGATTTGAATTTTCAAAAATTCCAAAATAAAGAATTGTATTCCAACTTTCATGAAAATGGCAACAAAAAACTCAAAGTTTCCTTGGAAAATTTTTGAAAGTACAAAAAAATTAATTTCTGAGAATAGTTTCAATATCAAAGTCGAAGTTTAGTTTGAGTAGTGTTGTCAACAATTGCCTATTAGAATAGTTGAAAAAATCTTGGAATTTACGAAAAACAATTTTTAAAAATTTCTCCGTCCAAATTTCGAAGCAAAAAAAAAGTCTTCTAATTTTTGACATTGAACAATTTGGAAATTTTTTGAATTTTCAAGAGTAATTTATATTTCGAATATTCAGAACAGTTCCAAAAAAAAAGTTTTGGATTTTTTTCCAATTTTAATAAAATTTTCAACACAGAAAGTTTTTTTTTAATTTTTTAAATTTCAGAAAAAAATTAATATTCATAAAAAATTGAAAATTCATCCATTCTAAAAATAAGTTTTCACATTTTTCCCAGAAATTGTGGAGCTCTGCTATGACATGAATACTTCGGAAGGATCTTCTCCAGCACCACATCAAACTTGTTGCGGCTCACCAGTTGGAGCACTTGAGCGTTACGAAACGAGACTCGTATTTTCTGTTGAGAAATTTCTGAAATCTGGAATTGATGGTATCGATTTTGAAGATTTAGGTTTACAGTCGAGTTTTATAAGCCGTTGAACGAAAATTTGACAAGACGCGATCAGGAGCAATGAGGCGAGAAGTAAGGCCGTGGAATATAAATAGGTGGCCGAGTTTTTTGTAAACTATGCCACCAAACTTGGTTTCTCCGTTCGTGGCCACAAAAATTTTGAATTTTTTGAGCTTCTCTTATAATGCTTAAAAGTGATTGCAAAAATTCATTTCTTTAATTAGAAAACTCCAAAAAATTTGAAAAAAAAATGTAAACTCAATAAAAAGTCCAATTGTTTCACATTTATTCTGGTTTACTGAATTATCAGATTTTTTCTTCAATTTTCAGTTTTCGACTTTTCAAATTTAAAAAAAACCAATTGTTGCCCGAACAAAAACCATTAAAAATCGACAGTATGTCATCCAATTGGGGTACAAAAATTTTAATGTCCAAATTTTCATGACGAACGAAGAAACCTCGTTTGGTGGCCTAGTTTCCGAAAAAACTCTGTCACCAATTTCTTTCAAAATTCAAAATTTTAGTGAATCCCAAAAAAACGAACATATGCGGCGAAAATTTTTCAAAAGCTTCCGAACAAAATCTAAAAACGTTCCGAAAGTTCTGGGTAATTTTTTAAATATTAAAAAAATTCATCATAAAAAGGGCGGCAGATAGCGGTTCAGTCGGTAGTGGTGGCCGCTAGCAGTCTGGACGAGTCAAGTCCGAAGCCTCACCACCTAGGTTCACCCAGCTTCTATTGGGAAGTGGAGCAATCCACGACTGGATTATCGGCCACCCGGCTAGGACGTGTCGTGCATACAACCTAGCCCGAACCACCAGGCAGATTGTACCAGGATCCCCGATCCGATCCAGTGCAACTTGAAGAACGGGTCGTCCTTTAAAGATTCTTTCAAAACTAATTTTTTACTAAAAAAAATTTCCAGACATTCGTCGACAGGGCTTCCTTCTCAACAATTTGGCTCCAGCTCTCAATCGCTTCGTCCCCAAATTCTACCGATTCTCGCCCGCTTCAAGCACATTTCCCCAGCGGGGACTAATTTCCCCGGGCACAGCCGCCTCATATTTCGACAAACGAGATATCATTTAACTTCAACATCTACGATTTCATCTTTATTAGATCTAGAAACGAGGTATGAATATCCGAAATCCATGAAGCAAGGCGAGTATCCACGTGTATTATGATTGACGAGCTACGACTCGAGCCATTTCGTTGCTGATAGAGAAAAAGCAGCTGGGCAAACTGAAATTGCAGCAGAGAGTGAGGAATGTTTTGTGCATTTTGAGCCGACTTTTGAAAGATCAAGCTGTGATGGGTAATGAAGATGAGACGATTATCGATCCGATTCTTTGTTAAGGCAATCACCAAAGCTTGACCGTCGTTTTTGTATGTTTTTATACGACGGAAATCACTGAATTTCATGTCTATGCCGAAAAATCATGAGCAAGTATATACATCACATGAAAGAAAATAGTTACAGGGCCGGTTTTTTAATTTTTCTGTCATACCGGCAATTTTGAAACTACTTTTTGAACTTTTTAAAAATTTGGGTAAATTTGGCAAGTGCAAATCTCTGTATCGATTTGTCAGAATCATAATAGTTGTTTTAAATTGAACATCGCGTTAATGTTTTTAGCATTTTATCTTCGAAGATTTAATGTCTCGCAGTTAAAAATACATCTTTGCAGGAAGACTCCGCCGCGTGCATCGTACCATTTTTGTTCAAAATTTGCTCATGGGGACTTCAAGGTAAAATACGATAAATGTGTGATAAATTTGCTGGGATGTCTTTAGGGAGTTCATGCAGGTATGATTTTTCGTCGGAAATGACTGGAACGCGTTTTGTTCGCATCAATTCAAATTTAATGTAATGGCATTTGGCATATGAAATGTCGAAAGGTGCTGGGAATGCCGAATAATATAATTTGGTATGGAGAGCTGAATAAACTAGACAAAGTTCAAATATTCACAACACTGGGGATTGCTTCACCCGTGACCCGTTTAACCCGTTCACCCATTTTTACAAGGGAAGGTTCTGAACTCGTTATCGGACTTTACGCCCCACTATATTCATTCGATAGAGAATGGTTACAGATGATCCTCAGACTCCAAATTTAGCTGCTTCAGAGCAGGTTCGACCAAGTTACGACACTTTGAAGATGCCGGAGTAAAAAAAGAATCATTGATGCACCCCCTTTGAAAAAATTTCACGATATTCACTGAAAATACCGCTTTTTTTTTCTGAAAGTTGATAAAAATAGTTGAAATCGATTTAAATAGTAAAAAACAAATAATATTTTATACAAGTTTTAGCCCATCACTCTAAAAAAACCCCGTAAATTAATGTACATATCTTGAGCGAAAAATTCCAAAAAGTGATGTTCATGTAGATCCATCTAAGCCTGGAGCCAAGCCTTATGAACTGAAACTTGTATGGTATGACATGTTTCCATCATTTGCAACTATTTGTAAACATTTTATATCAACTTTGAGAAAAATTATTTTATTGAACTTTTTGGAATTTTTAAAAAGGGAAGTATTTTGGCACTTTCAAAATGTCGTAACTTGGTCGAACTGCTCTCAAGCAGCTAAATTTTTTGGGATCATCTTAACTAATCTCTAACTAATATAGTTGACGAAGGAAGTCCGATAACGAGTTCAGGGCCTTGCCACCCTTTTTAGGCGTCTTTACGGGTGACGGGTGACCGCTCGCCCGTTTTTTTTTTCGTTTTAGTTGTTTTCACGGGTGACGGCTGGCTCGTCACCTGTTTTTCAACCGTTTTTGGAAGTTTTCACGGGTTATGGGTGATCCTTGGTTCCGGCAGCCAGTTTAGGTAATAGGTCGTAAATATCGTTTTGGGCCGCGTCTTTACAACTGGGCTGTGTGCAACTGGGGGTGCACTTGGGTTGAAAAGGATCGACCGGCGGTTCAACTTTAGGTAGCATTTGGAGCGACCCCGATAAATAAAATGCCGACCCTGAATGAAAAATTTTAGCAAGGCGGCCATGCTCGTTTAATTTCCATTCTCAAAATTATGAGCGCTCGCCGGACTACTGGTTGAGCTATTGTGAAACGGGTCGACCCTGCTCGACCCATGAGCACCCCTGGCAACCATGATTTTCGGCAACTGGCAATCAGAGTTGCCGCACCCAATAAGTTTCGGCAGCCGGCAATTGCCGAAGCGTTGCCGAACTCTAAAAAGTGCAACCGCCACCGGCAATTTTGCGCAGCCCTGGTTTACACCTACCTGACGACTTTTGGTAGACTAGAACACATGTATTCGAATTCGACAGATGCAGCCGAATGCCGAAAAAAGTATTGAACGACATTAGGCACATGTCCGGGATGGGCGGATACCTTTTCGGATAACCATCTTCACTAAATCAATTTATCAATAAGTATTGATTTAGCTTAGTCGGGAGATACTATACTGACTAGAATAAAGAGTACCTATTGAGCAACATGTTCATATGACAAAAACGTTTAAAATTGTACGCATTCTCCTCGAACCCTGAAACTTGCCGTTCTCTGATCAAAATCGGCTAAGAGAAAACGGACTTGCATACTTTTTATACGGCAAATGTGTAGAATTTTAAAATGAAAGATTTGTGCTATCAAAATGTTGCTCACCAGTTTTTGTTCTCCCGGATGCGCTTCTTCCAGAATTACTACATCAGCACGTATTGATAACTAACTTGAGGTGTTTAATGAAGTTACCCGAAATCCAAAAGTATCCACACCCCGTCATAATAAGCATATTTCATAAGTCAAATATCAAATTTACTGAATTCCGCACACCTCTGCTCTCCATGCTCCAACTAATTTTTATTGCAGAAGACGAAATAGTAGTCCGCTGCCTTGCCGAATTCGTCGACTCTATTGGACTCAACGTGATTGCTGCACGCGTTACGAAGGCCTGAACATTGAGACTCATATTCGCAATTCGGTGTGAAATGGTTCTTCAAATTATCCCGTCTCTTTCTGAAACATGTGGATTTACTACGCATTCCTTCGCGATTGCGAATATATTATTTGACCGACTTTCCCAGGGCGAGAAAACGAAATACAATGATGATTGAGATCGTACGAGATTAGACCGAATTGATCACAGGAACTTATCAATCTTTTGGTGGAGATCTATGTGCCGAGGGTAACTCGGTAGCGTTGTCTTCTCTGCCACCTGCGGTCCAATAGACCGGATGTTGGGCAGGTTATGATTAAGAGTTCAAAGGAATGTCAGTTCAAATTGCTCTCTTCGATTCAAATGAGACGGAGTTGACTATTGTGCAGTGGTGGTAATTGTTTATTTTGAAATTCATTAGAATAGAAAGCAGTTTTCTTGGAATTTTCAGGAAATTAATTTTTTACCTATTCTGCATTACTAGATTCTTCAATTTTTTGAGAAAATATATATTCCTTCGAAAAACTCACGTAACATCTTTTCGTATACAAGAAGAAAGTTACAGTCGACGACTTTAAAAAATTCAGTTAATAAGATTTCAAAAACAAATCGAATTTTTTAATTTGTACCGCAATCTGGAAAATATTTTAAAATGACTCCAAATTTTTCCCTGATTCCAAATATCTATGAGATAAAATTCATAAAATAATCCCTTTTTGATCTTGAAATCGCCGTATTTCACTTGTGCACGCATGAGATTTCGAAGTTTCGCGCCAGAGACCGCATGTGTTAATTTACGAGATTTGTGTATATTTACGAACCCCTTAAGCTTTATCGGTTGCTGTTTGCCGTTTTTCAACGAGTTTTCTTCAGTTTCGTCGGTTTTTGTTAAAGTTTTTGTTTAAAACATTTAAAACTTGACAAAAATGAAGGGACTTCAACTCGTTGAAAAACGGCAATCAGCATCCGATAAGGTTAAGGGTTTCGTAAATATACACAAATCTCGTAGCTAATCGACACATCGGAGTCTCTGGCGCCAAAATTCGAAATCTCAGCACAAATGAAATTCGCGTTAAGCTGAAATAAACCTCCAGGGAAAAACATCCTTTTTCACATAGTTGTTCGAAATCAGGGTCAAATTAAGAGTAACTTTTAAATTTTTAAATTTCTTCAGTGGCATCTAATTCAATGCAATCACCGGCGATAAATACCTGAACATTCAATTCTTCGTTGCAATTTCACGAGTACTCCAAAAAAATCGATTGACCCCATTAAAATTCGTCAATTTACAACTATTCCAGCTTATCTTCGACGAGGCAGTCTGGATATCGAAAAAGCCATTTCTTTGAGCATGCGGTCAATGGCTCCAACAATCGATCAAATGCGGCTTATGATCATGCCAACGCGACGGAACATCTTCGAACCCAATCCGTTGAAGAGCACGTTGTTCGAGCTGTTCGAGAGCTCCGAGAGACGTCAAATCGAAAATCCGGTGGAAATGTGAAGGGCACAAATTAATGAAAAACCAACGAAAATGGTGAAACTAGCCAACTCGAGATGCTCACCGAGAATAAAGCATACGATGGACGGAGCATAATAGAAAAGTTGAATTCATTCAATCATATGTCACAAAAAAGGAAATTTCCTTAATTTTTCGGTTTTTTTTTTCGGAAAAATCTAATTCTATGCAAAAAATTTAATTGAAAATCCGGAGAAAATCGTATACTTTTTGTCGAACCATTTTGTGGGCGGAGCCTAACTAGTAACACTTTTCAATTTATGGCCCATCTCGAACAGAAACGTGAGAAAAAATTCTTCTTTTTCGCGAAAGTCTAAAAGAAAAAAAAATCGGAAATTTTTGAATTTTTCGGTTTTTTCTGAATTTTCCAATTTTCATTCAAAGAAGGTCGAAAACTTTTTCGGCGATTTTCCGGTTTCCTTTTTGAAAAAAAATATAGATTTAAAAATGTGTAGTTTGTAGTTTGTAGTTTTTGCAGTTAATGTCTTCCATTTTGGATAGGCGGCAACAAACCTGCTCGACGTGGGAGCACGAGTGTCTCAATCAATGGACATCTGTCGCTGCCGATTCAATCGATATCGATTTAATACGAATCTGCAAACAACACCTGACGTGTCGGGAGGTCCAATAATGGCGGACATAAAACTACGACAATCACGTGTCCCGTTGATGGAGTGACCTGGCGATTGCCGAATGGTCACTCGCATTAAGATTACAATTGAATATCGTCGAATGATATGGAAGAGGATATTATTTTGGAAGATGCGCAACAAACATTTACAGAATACCACTGGAGAACTTTCTGTAGAGACGAGGTTATAATGGTACATGCGGTCGGGTTGTAGCGAAATAATCATTTTTAAAAATTTGAGAAAAAAATTGTGAATTTTCCGCGTAAAACGTGATTCAATCGCGAATTATTGTATAGATTTTTCCGACAATTCGGAAAAATGCCGGAATTGAAAATTTCCGGCAAATCAGCAATCCCATGGCCGTAATTCCAAATTTCCGGTAAAACGGCACATAGCCAATAATTGACAATTTCGGCAAGTCGGCAAATTGCCGGAATTCAAAATCTCCGGCAAATGGCCAAATTGTCGAAATTCAAAATTTCTCGAAAATCGTGGCTGCTAATTGCCGGAAGTGAAAGTTTTATTGATAGAGATAAATTAGAACTATCACTAGAATATGTAAAACAACTAGGAGTTATCATGTAAACTTGTCATTTGAATTTAACACTAGCAAATAGATTGGGCTTCAGATTTTGAAAAAATTAATATAACAAATCAGGAATTTTTTGAATTTATCCACATTAATCTCGATTCGGTATCAGGAGCATAAATAGGATCTTTTAAGATATATTGACAAGAATTTCCGATCAAAGTTTCAAATATTTTTTACCAATTAATGGGATAGAATGTTACATGAAACATTACAAAAAAATTATTCATCAGGTTCTCGTACAACTCCATTCCGTCTGTATTGGCCAACTGTCGAAACTCGAAGAATATCGTGAAACGGTATCTCCCGTATGAAGCAGCAGGCGGTCACCGCATTCGTACAACAAATTCAAAATTCGTGTCCAAACAGTCTGGCGCAATTCGGGTGACGACTGGACGAAAAAAACGGTGCAACGGGTGAGAAAAGGCATCAGTATGAGAATATGAATGATTTGGAAAGTGGATAATTCGTTGAATTCGGCGGCCCGGAAACTCTATGAACTCCGGGTTTTGTGCAGTTGCAATTTTTGAAGTTTGTGTTGAAAATTCAAAACTTGCACACGAACGGATTTTAAATTCGATTTTTCGCGATGGTTGAGCATTCAATAAAATTTTGAAAAAATGACAAATTTTTGAAATAATTTCCGAGAAAGAGTGTAAAGTTTCAGTAAAAAAAATTCGAAGATTAAAATTTATTTTAAAACTTAAAACATCTGACTTTAAGCGAATTTTTTGACAAAGTATTTAATTAGTCATAAATTAATTCAAAAAAATTATCTAAGATTTTTAAAAACTGTTTTATACAGTTTCAGAAAAATTTAAGAAAAAATTTTTTTTCAGAAAAAACCGGATTTTCTGTTAATTTGAAATTATGGAAAAAAAACCCCAAAGGGTATTACGGAACTACGTCAAAATTCTGAGAATGCGTACCCCGCAATATTTCTGTGGAACTACAATTCTAAATGACTTCTGTAGTGTTGGTGTCGACCTTTACGGGCTCGATTTTAGATCGAAACGTTATTGAGCAGAAAAATTATCACATAATACGAAGAAACGAAGGAAAATGAAACTAAGTTATAAAAAAATTCGAAAATCGAGATCCCGTAAATCGACGCGCTACAGTAGTCAAAAATTAACTTGAAATTAAAGGATTACTGTTTTCGCTCCGAAATATTTTGCGAGTCAAATGTCTTGCGCAATACGCAGAGACTAAATCACAAAATTCTATGCTCCCGAAATAGACTGAGAAAATTTTTCCAAGAAAATTCCGTTTACGTCGAAAAAAAAGAAAAAAAGGCGTAAATACACCAGTTTTAATATTTACTGAAAAAAATTGGTATAATCTAAAAGTTAATCAGCTGAAATTGATATGTTTTCGGATAAAAAATTTTGGCGGGAAACTCACGTTAAAAAAAAAAATTTCAGTATGCATCAGCCGACTGGAAGACGACGACGAAGCGATCCGCGCTTCATCTCTCATTTCCCTTAATCGATGTGATCTACGAATACACGAAACGGACGTCGGAGTGATCCCCTGGCCTTGCTCAAAGAACCAAATCGAAGTTCCAGTCGAGGCTGTGGATAAGTGCCACCTCACACATGTATGCCTCCAAGTGCTTCTCCATGGAAAAAACGCAAATCACGAGACACTTATCACAGATTCTGTGACATCTCATCCTACCCGTATCACGTTTTGCACACAATTTTGATGTATGACTGACGTGTGAGAAGAACGCTTCCAGAAAGGCTTCTTGAAAACGAGATACGCACGAGCTGACCAATTCGTCTTAAGGAGATTGTGATTACTATTCGATGCTCACCAAGCTTATACTCGGTACATACGGCGGCTAAATTTTTTTAGAAATTTCGAAAAAGACGAGAAATTCGATTTCTTATCAGTTTACAAAAATCTTCGCTCCTGTTTCTGACAATTTTAGTGCCGTGGAATCCATTCAACGAAAAAAATTAGGTTCTACTGGTTATTTTTGAGCATATTCAGTAATTTAAGCCATACTCTTTTACTTCTAAACTATCCGGTGACGATACGTGAACAATGTCCAAAATTATATATTATCTAACGCTACAGCATATAATTTTTACCAACCATTTTCATTCATTTTATGGAAAAAAGCATCTAGAACATATGTAATATGTTCAATTGTTCGATTTCAACAAAATTCAAACCGACGGCATGCTCCTTGGTTTGAATCGAAAGTTCAGAACAGTTTTTCATAGGAGAGCAAGAAATTGCAATGCTTGACGTGAGAGGAAACGTACGGATACAACGTGTTGAAATAAACGGAAAAAAACCGATGTACCGATGGCCACATGATTTGAAGATTTTCAAGTAAATTGTCAATTGTCGATTCACACCATTTCGCAAAAAAGGTTTGTTTTTATTTTATTAATAATTATTAATAATGAATACGTATTTGATCATACAAAAATAAAATGTCTTTTCCAGATTGGTTGACCGGGTGACTACTCGACGACTGACCTAATCACATGGAAACGATGAGGTAGAAAGATATATTCACAATTGCCGACGGAATTTCCACTCCAAAAATCAGGGCAATTGAGGGTAGCGATGGAAAATGGTATAAAACTGGAAGAAGGACGACGTACGACAGGATGTGCTTGTTGAGGATAGCAAATGTTTGATGTTACGAATAATATGTTGCCGAGAAGGCGATGCTTCGGACATATAATGTTCTTCCGTTAGACACTGAATGTGGAGTTATAGAGTTTTGCGGTTGTTAGCTTAGGTTCATTTTTTTTTCGTTTTTGCAAAAAACCAAAATACTATTACGATAACTAGGCTGAGAATGCGTTTGTACAACATATTTGACGAGCAAAATATCTCATAGCGAAGACTACAGTAATATTTTTAAATTCCGACCGTAGCGCTTGTGTCGATTTACGGGCTCGATTTTCGAATATTGCGGGGCCGTGATATCATGAGTATGCCTATTTACTGGCGCGAAAATATAGGCACGGAGCCCCGGGGAGAGAGCGTGTGGCGAAGAGAGATAAGACGCAGGTCCCTTCGCTACGAGATATTTCCCGCCAGAAAATAGCATTCTTTTTCATGATCTCATGGTCCCGTAATAAGCGATTCCATCTATTTCACTTCAAAAATCGAGATGCCGTAAATCAACACAAGCGCCAATTACTCTCATTTAAAGAATTTCTTTTAGCTACGAGATTATTTTTCCCGTCAAATATGTTGTGCAATACGCATTCTCAGAAGAAGAAAGAGGCGGGCAGATAGCTGAGTCGGTATTGGTGGCCGTTAGTGGAAGTCACGAGTTCAAGTCCGGCCTCACCCGCTAGGTTCACCCAGCCTCTATTGGGAAGTGGAGCAATCCACCACTGAATTATCGGTCCCAGTCCCAGGACGTGGCTTACATCACCCAGAGGGATCGCCACCAGGCAGTGTACCTGAATCCCAGCTCCCCAGTGCATAGCACTTGAAGAACGTCGTCAACTTTAATCCTTAATCCTTTAAAAATGTAAAAAAATTTCATTGCCAAAATATCAAATTTAACTATGAGACGTTTTTTCTATTATTTTTCAGAAGAAGTTATGTGTGGTGTGACACGAGAAGGCGGTTTCTCCACCGGGAGTTCAATTCAAAAGAAGTTTCGGCGAGTAGATAAGTGTCAATGACGAGACTAGTACAGACAGAGTCCACCAGAGACACGACCAAGTTTTTGTGGTGTCAGCAGTATTCTCCAGTTTTTAGGTAATTTTTCTGAAAGTTGTCGAAGTTTTTTGTTTTGAAATTAACATAATTCCCAAATAATTGGCCTTTTTTCATTTCCAAAAGATAAAATTACAGCCACTTCTTCTACACCAATGCGACGGCGCAGATTTGGCGGCAAAAACTTATAAATTGTGTCACAGGCAGAGCTTGGCCACGTGGCGCGAGTATTGGTAGGTCTCGAACTATGCTAATCGAAATGAATTTTCGAAGAATTCGAACATCTCAGACTTTTTCTGAAAAATACATAAAACGTTATTTTCCAATTTTATCAAAATAAGAATATATTAGTTTCTTGCGAAATGCAGTCTCAACAAATCTTTTTTTTAAAAATCAGATTTTTAAATGCTTTTTTTAAAACTTTTATCGTTAAATTGAACGTTTATGAAACATGGCGAGAAAAACTTTTTTATTCGCTTTTACAAATAATTCTCAAAATAAAAATTCCAGTGTGCTACATCGTTGGCCTCGGCGATCGACACGCGTCGAATATTCTATTCGATCAGAAATTGTTCACATTGGTGCATATCGGGATGATTTTGGAGTATAGTAAATGAACTTACCGGTGCCAGTTCAGCCCGAAGTTCCATGATTCCGTATAACTCTATGGTCGACCCGATTCTGATTGAAGGAATCGAGAATGGACAGTTGGCTGAGGAACGTACGCAGATTATGGCGATAAAATTGAAGGAAAATGGAAAGGTACGGCGGTCTGGGGAAATTTATACGAAAAGAAAATTTTGGATCGCTGACAATTAGACTTGTAAAGCAATTTAAAAATCAATTCAAATTTCCCCCCAAAAATATTTTTTCAAATAATTTGAATTTTAGCTAAATTTTTAAACAAATCTGAAATTCCCGCCAAAAGTTTTCCAAAAAAAATGTTCCCGCCTAAAATGTTTTATAAATTCAAATTCCCGCCAATTTTTTTTACACAAAATTTGAATTTCGCGTCAAAATATTTTCCAAAAAATATTCTGGGAAAAATTCCCTGAATAGTTCAATTGACGCCCCACCAAATATCATTCAGAATAAAATTTTAGAATTTCTCGCCAAACTTCTCTTTCAATTCCGTCAATCCCCTCAAAATTGCCAGGGCTTTAATCCTCGGTGTCGCCTCTGCTCTCCGCGAAACAATGACAAATTGCCAAGCCGAAACCAGCAGGCTGCCGGCCGCCCGTCCTACAATTCTGAAATGGCCATCGGGCGGCTTGGAGAAAAGCTACGGGGCACCGATGACGGTGTGACGGCCCAATCGTCGTCAAATTCGGCGACTTTTACGAGAAGCTACGAGTGCTGAGAATTTATCGCGTTCTGCGGATGGATGCCTTTTTTTTAGAGAAATAGAGAAAATTTATTCTCGAAAATTAAATTTTTACTGTATTATTGATTTCTCGTATCAATTTTTCAGAATTTGCTTTGTTTTTTACGCGCAAAATAATCTTTCTAATTTAGAAATTTTTAAAATCTAGTTTCTGAAATTTCTGCAAAATTCCAGGAAATCAAAAAATGTAGTTTTCCATCCTAATCTTTTTTTTCGTTGATTTTCCCCAGAAATTTCAAACTTTTACTGTATTAATCCCGATTTTTAGGCTCATATCATGTAATGTTTTTTGTTCACCATTTACATGTTTTTCCTACCTCTTATATGATTCCCCTTCCCCGAGGTCTCTTTCTTCACAATGTTTAAAATTGATTCACTGTTGAATCTGTTGTCTTTTTTCTATGCGAATTTTATTAGTTTTATGAAAAAAATTTGTAATATTTTTGAGTAAATTTTGAATCTTCTTACACTACCAGCGCAGTTAACCATTTCAGAGGAGTTTCTAAAATAAATAGTGAATTTTTACAAAAAGTATTATGATATTCTGATTTCAGACGTACATGAATTGCCCGTTTTCAACAAAATAAAACAACTTTTTATTTGTGCCCAATTTTTTTTCAGCCATCTAATGACTGTCCTTTTTTTTTGGGCAAAAGTAATAAATTTTCTAAAAGCGTTTAAAACTATTATATTTTGAAAAAAAACCATTTGGGTTATCAGTTGGCCTTGGCAATTTTAAGTTCTCTAGCTACAAATTGAACCAATAGAGGTTTCAAAATTGTGAGATTTTGCAAAAATTGCCACATTTTGCCACTTAATGCTTTTTGATGGGTTAAACCTAGATTTTCTGAATTATGCATATATAAATTACCCGTTTTTAACAAACGGTATTAGGCAACTTTTTATTTGTGTCGAACTTTTTTTCAATGACTGTCCTTTTTACTGTTTTGGGCAAGAAAAATAATTTATTGGAATTTTTTTCTATGTTCGAAATTTTTGAAGTTTCTTGCAGCACTCCGAAAAACCAAACGACCAGCACTACTTGCAAAGTCCGAAAAAGTTTAGAAATTTTGAAGTTAAAAACTCCCAACTCCATAAACTCACGATATAGAAATTAAACGTTTCCAAACATGTCCGAAAAGTCCAAGAAATATCAGTACAATTTCGAAATTTTTTTCATAACACTTCTGAAAATAAAAAACCGAAACTGCAAAAATTTGAAAATGTGCTAAACTCCAAACTGTACGATTTTCCACATTTCAGAAATTCCAAAATTCGTCTGCCAAATCCCTTCGGCGCAATAATCCCCCGGGGTACCCCCCCCGCCCTAGAACCTTTTGCCTCTATTGTCTCTGGCGCAGGAACTTGAAATTAAACAATGAATCGATATTTTAAACTGGTAATCGTAACCATCTGCTCCGGATGTATAATCGCCTACACGAATCTATTCAATCGATCGTTTTTCAACGGGTACTGTAGTATTAATGCTACGTGGCAACAGTCACAAGGCGAAAACGACAGTCAGTGGCAAACTCGTTGGATTTGTGTCGTGCTTAGTCAGGAGGGTGTGAAGCAGTCTATTCCGCCGTGGATTGGCGAGGTTCCCAAAACAGTTGTATCGGGTGAGAAAGATTGATTTTTAACACCCGTCTCGCCAATTTTTTTCTCAGAAATTGGAATCCCCGTCACAAAACTTTTACAGAGTGAATTTTCGAAGAAATTGGAATGACACCCAAAAATTTTCTGAAATCTAGATTCTCGGCAAAAGTTTTCAGAAAGTTTGAATTCTTGTCAACAATTTTCTCAGAAATTTGAATTCCCGCCAAAATTTAAATGCCAGAAATTCGAGTTACCACCCTTCTCTTCAAGTCTAACAGTATTCAACAATATACAATTAAATAGCTTTTCAAATTCCTAAAAAGTTTGCTGGAGTGATCAATTTTTTAGTTCAAAACTCGCTAAACCACTTGCCCATGTAGACTACATAATCAATTCTGAATAGAACGCTATTTTATCCTATTTTCAGACATCAAAACCGAATAGCCTAATCGCGTGGGTCATTGAAAAATCATTTTCGATCTTTCTGCTATTATGTGGTTTTGACACGATCCAGGCCGTTGATATTGCGCCAACGAACACTGGCTGATATTTTTGGAGACAGGTTTGCGGCAAACGAACTCCGCTGTCGACTCTCGAATTATCAATTTGTGCATAGCTTTGTAAGGATAAAAACCAATTTACCGAGTTGAAGAAGATCGGAAGCTGGCAGTAAATGGCTCGATTTTCACTGTGGTTCGGAATCCGATCGATGGGTTTTGGCGTAACTCAGGCTTCACGGATAAATGTTTAAGAGAAAATGTCTGGAAGTTCAAAAATCGCGCCGGATGTAAGACTGTGCGTTTAATTTGCAATAAAATCTTTTAAACAATTTTTTTGGAATCTTTTATTTTCGGGAGTTTCGAAAGTATATTGGAGTTTTTTAGGGACCAAAACAATTTCAATTGAAAAAGGTTTTTTGAAAGGGGGTAACATTTTTCTAGGCCACTAGGTGCCCTTTGTAAGGTGGCCTAGAAAATAATGTAAAAATCTAGGCCATAAGGGTTGCATATTGCCTGATGGCCTATGAATAAGCTAGGTGCGCCATAACTTTTATCAGGGTTTAGGAACGTTAAAACTTCGGGCAGCAAGATTCGCATAATGACCTAAAACTTTCAATGGAGAACTCGGCTATAAAAATCTTCATGATGGTTTCAAAAAGCGGAACACTCGGGGACCATAATCTTCTAGAATTTTTAGTAAAACTAGGCCATTAAGGTTTCTTCCGTGGTCTAGAAATCGATTCCGGGCCAATACTAGGCTGCCAGGGTTTCTAGGCCACATAAGAAAGGCCTAGGTACAAAAATTATCTCAGAACGGTCTAGAAAAGTGGATAACTAGGCCACCAATTTTCACTTCGTCAGGAGTTTCAAAAATATATGATTTCATGATTTACTTTTCGTAGTTAAGAGTCTTTTTTTTCAAAAATTCTAAGCAAACTTTGACACTAAAATGCTTGAATTTTTGAGAACTTTGAAAAGTGTTTAAAAATAATTTTTTGAAAATTTCTCAATTTTTTTTCTTCGAAAAGCTCAAAAAAACGATAAATTTCCACATTTTGGCCAGAATTTAACATTTCGTCGATAAAATGTACGATCGGAGGCATAGATTCGCGCGGAATCCGTACAAAGGAATCGTTTTCGACGACAGTCACTTTTTCCCACAATCTTGGTATCGGTAAACGCGCTCGGCATTATAGATAAAGTTGGAGCGCATTTGCATTTTGAATTTTGATGTCTGATATTTCTCGTTATCCGTCAGGCGATGCGAGTTCTCGTACTCTCATCTTGGAGTCAAATACCAAATTTTCCAATTAGCCGGTGCAAATTTCACAAATCGTGTGAACTTCTTGGACTGCTGTCCGAGCGGGGAGTTGATGAAATGGAATTAACTTTATTGTGAGTCTTAATCAAGTTTGGGTCTCATAATACCGCGAAAACCGTAATTGATTGGGACAATGGGACCCAAGAGAGCACCCCAATGGAGCGGAATTGCAACTCCTATTTTTCCAGTCGGAAGTCTCTGCCATCACCGGACCCCACACAGCACAAAGGATTCCGTGGAACGGGCGGCCGTCCAGGAAACTGCTGAGTAGTCCCCAGTATTTGTTGCGAAAATTCAAATGTATAATTTTGACTTTTTGCAAGATATTCGGGTATAAGCTTCCTGATATTGCAGTTGGAAATTAGTAAAAGCGTTAGTATTTAAATGTTGTTAAATAGTAATAATCGATAAACTTCTTGAATTTTGATAAACTACGGCCACGTCAATTTTTAGATATTTAACTGTCCGGGCAAAAAAAACCTAAAATTCCCGCGTTACAAATTGAAAACAAAAATTTCACAAAACGAATAAAAACGTCTAAATGTTTATAGCTTAGGCTGAGGTGAGATTTAGGCTTGGGCAGGTTAGTTTTTAATTTTCAAGGTTTGTCATTACGTACTTTATTTCCGAAATACACAACAGAAGTCTCACAACGAGTCAGGGGTCAGTGCGTGTTGGTGGGTGGGGTGGGAGATTCTGGTGGGGACCACCACTCACAAACAAAGATCACAACAGGGAAAATGTACACGTGGCAATATGGTGAAGCTATATGTATATATAATGAATAATGATATGAAAATTTGCATAATAGCAGGAACAGTACCTGATTGTTCCCTGGGGCGAGTAGAAGATATGTGGGTTATCTATCGATTACCATTACACATGAATTACGCTGTTACGGTTAGAATTTTGTGAAAAAAGATGAGTAAAACGCTGGGACGGGGCTATAAATCATATCTATAATTGTCGAAGATGCTCCACGAGCCAGGAACGAGGGGAACATTGCGTCAAGGGCGGTCATTCCATTGTAGTGATGATGGTGCAGCTCGTGCATTGATTGCTGTAGCAGTAGGGACTCCCCTCATCACCGAATTGATAATCTTCTTTCCAGATGAGAAACGCTCAAGACGGGAGGCGTGTTGGAGCACACGCTGCTTCATTTAATTCTCGTACCATCCAGAGTAATAAGAGAAGCAGAATAGCTGGTTGAACTTGACGTCCTCTGGAAAAAAACAATATTTTCTCTAGTTGCCCACTTAACACTTGGACAGAATTAGAAATATTTAAATCAGGGCGGGCGGCAATTTAAGGTTTTTACACTGGGGCAAATTCAGCAATTTGCCTATTGCCGGAAGTTTTTAAAACAGGCTCTTTAAAAGACGGATACACTTAAAACTGTGCCTTTTTGAAATTTTCTCCCGATTTTTTTACATTTTTTCATAGATTGTACTGACTTTTCACAATAAATGTAGGCATTTATAGGATGCATACAATTTTGCCGATAAAAATTGAAACTGTGAAATTTTCAGAAAAAATGTGCCCACAATTTGCCGAAAATTTTAGTTCCGACAATTTGCCGTTTGCCGGTAAAGTTGAAACCGGTTCCCAGGCCACGTACGGATCAGTTTTTGAAGAAAAAAATACGGCAAATTTACAGAATTAGTACCATGTGGATTTCTTAAGAACTATTGCCAAAGTACGTAGAATGCAGAAAGTTTCTTGCCTTAGTGAAATTTTGGAATTTTTCGGGATTTTCGGAAAAAAAAATTTTTCCATGAAGACGAATTTCTTTTTCAAAATTTTTTCACGAGTGTAACTCTAATAATACGCCTCAGACGCGAAACGTTTTCCGATCAAAACACGGCCGGGGTCTCGAATCGACATGCAGTATTTTTCTCGCTTTGTCATAGTTTACTTCTCGACAAAAATGGATTTTTTTGAATTACAAAATCCTTAAGTTTATCTACCCAGAGGGAGAAAAAGAAGACCTCCCTATAAAAATTTGAAGAGTACTCATTAAAGGCGCCCTTTTTTCGAACTTAACCAAAAATTGTCGTGTCGAGGCCTGGTACCGTATTGTGGTGCGAAAATCATCTAATTGCGGCATTCGATTTTTGCGTTTTTTGTTATTTTAAAAAAATGTTCAATTTTTCAAAAATAGCTTTTAGATAAAAATAATAGGTTATTCCTTCTTTTATTTTACGGTCTTCTAAATAATTTTAACATTTGGCACTTACGTTTCATCACAGAACAGAAACTAAAGACTCTGTGCCAATCAAAGGGGCGGTGCAAATCGAAATCATTTGGTGAACAACATAGTTGCCATACTGGTGGAACAGAAGATTATCCCAAACGCATCACGATACGACTCGACATCAATCTTCACAAATCCACACTATGAAAATCTCCTCCATCATCTCGTGAAGCAACGGTCGGGCGGTGCAAACAAGTACGCTCCCTCGATGACGTGCGACGCATACTTGGTGACAATGATAGCTAGTTACGGAGCAGGCATATATCGATGATAGTGTCTCTGTACATTTCCATGATACGTTCACCGACGATTTGATGATCCATATTGGAAGACGTAGTTGGCGAACTCGTTGGAAGACAGCCGGTAGCAATTACGGACGATACACGTCATCAGAGAATGCAACAATTGAAGATGGAATTTGAAACACGGGAGCTTGGGATTCTCGGGGGGTCTCTCGATGACCTGTTGCACGAGAAGACATCCATACTTGTCATCGGGACTGGCACACGGCCATCGGTGAATCTCCTGAGGAGAGGAAATGCGCGAAAAAGGTCCACATGTCGACTGGACGGTTTTCGAAGTTTGACGACACGTTGAATCACGTGGATCGAGATTTGATCATCATCCACAAGAGATCAGCACATTGCCGCCAGGCGAATGTGCTTAGCTCTTGGATGAGCTGGAAGACGTTGGCATGGTCGAATTTCTGTTACAAATTATTGATTTGTTACACCTCGAAAGGCCTAAAGACACCAAACATAGCCCTAAAAATTTCGAAGCAATGGATTAATTTTAGCTAAAACGTAATTTTTTGCCAACCTTTCTGTGTCTTTTTTAAACCAAAATCGAACAATTTCGTTGTACGATATTTTGAACACATTTCAATTTTTTCGGGGATAATCGTATATTTCTTTTCCTCTAGGAGCCTTTTATGTGTATGTTTTTTTCATCGACAAAAAATTTTCGTTAATGTGTGGACCTTTAGGTAGTACTGTAACTTCATTAAACTTTCATTGCTGCGGAATTTTTTAAAATTGATTTTCAATGTTTTTCTACAGTTGTCGTCCAATTTCATCAAAGAAAAAAACAGAAGGAAAAAACATCGATGTGAATTTAAAAAAATTGCGGATCAGTGAAAAGTTCGGAGTTTAACAGTACTCTTTGAAGGCGCCTGTAACACCTTTTTTGTTTTAAATTTGTCGTGATGAGACTCGGGACAGTTTTTCGTTGCGAAAATCGCTGCTTCGGCTCATATCGAAGAAAAATCAATTTCCGACCGCTGCGACACCTTAGCAAAGGAAATTGTGATTTTAGCCAAAAATCAATTCAGTTATATATCGGAATTCCCTGGCGAGACGTATTTCTCCCACAGCAACTGCACAACGACATGCGAATTTATCCTTGCACATGGCAAAGGCAAAAGCCCACCGTCGATCATTTGACAATCCCCGCTGCTCGGCCGGTGTTGCGAGCTCGACGAGCTCAGCTCTGAACCATGAAACGATATTGCACTTCGACTGTGGCAGAGCCCCACGAAGAGCGTCGTGGATTCGCTGAGCTTCTCGAAGCCGGCTGTACGAATCTGATCGTGGGAATCCAGTGGGTAGTTGGCTCCAAGAACTTCACGCCCGATGGATCGATTGCGAAATCGATGATCTGCCCGTTGCAGCACATCTTCGAGCGAAAAGAAAATCGGAGCAACTGGTGGTGGGGTCTCATCGTCGGAGGAACCCGATCCACTGGTAAAGATGTTGCTGTCGAATCGGAGAGTGTTGCTTCCGTGGCGGTAGGGAAGAAACTTGACCGACGGCTTCGGATAAATTCGAATTTTAAATTTTTATTATTTTCTATTTAAATTCGAATTCCGTTTTATGCGTTCGAATATTCCGCGTTGTTCTTGTGAGTTTTGTTCGACAAAGCGAGAAATCCGGGTCGAAATCGAACGACGCGCCGAGCATGTTGGGCTGTGCTTCTACGAGTCGGGGTCATTTAGACGGAAATGAATGAATACAGGTTAGTAGACGCTGAAAAAATTTGGGAATTAGGATTTTCAACGGAAAACAGAGTGAAAATGAGAGGAAAAAATGTAATGATTTTTTTTCAACGAAAATCGCGAAATTACATCAAAATTCAACATTGAGGCCATTTTTCGCGGTGGCCCAGGTTACGGTGATTTTTAAGCATGGTTGTTTTGAGTAAGGTCTTGACCCGTTTAAAATTATTGAACATTTCATCATTTTATTTTTAGTCATTTTTAGAGAACAAAATGATTAAAATTCGATTTCTTAAAATACATTTTCACAAAAATTGCAAGAAATCGCTGGCCAAAATTCGAAAATGAAGAGTTAGGCGGTGCTCATGGATTACGGATTTAAAGGCACATGGCTTTTTTTTTCACCACGAAAGGAGGATAGTTTGCTTCCCATTTTGGGGCCGATTTCTTTTTTTAATTTGGCTTTCGCTCGATTTCCACACATTTTCACTCATTTGCACTCAATTTTTTTGCAGAAAAATGTCAATGGATATGTTATGAAGTCAGATGAGCCGGCGTTCATCTCTGCGCCGGTGCAATATGACTTTAAGTAAGCTCAAATGTTTGTTATTCTGGCCTAAAATTATTTTTATGATTTTCAGAACGTTCGCATTTTTCGCCAAAGATCCGAAGAGGAATGCAAACTTATCTTCGGGCTCGAACGCTCGAGAAAGTTTCCAGCAGGCCACGGGGCGCTCGGAGAAGATCACGGAAGACATTTCCGCCAAATTGAGTAGGTTTTTCGATTTTTTTACCCTTAAACTACTATTATTTTCCAGCGTCTCCCACATTTCGTCGACGGCCTTCAAGAGAGATGGTCGGTGGCATCGAGAGAAATCGGCTCGGCTCGCAAGCGATTCTGCTCGACGAGGACTCCAGGCGCCGCAGTCCCAGCATTCTTCAAATCGATCACGCTCCGCTCTCCGCTATGATTCGAGAGAGTTGGCAAGGAGATCGCCTCATCTGATGCCTCCGACTTTTATCGTAAATTATGGGATGATGAGCTCGAAGAGGTGAAGGAAGAAGTGGTTGCCGTTGGAGAAGCCGTCTTGCCCACGCCAAAAGTCGAACTGAACTATGGACCCAGCATCCGGAAAAGGACCTGATCGTCAGCATTTCCGTGTATCTCGGCTACACCCGTACCCTTCAAATACCACGTGATTCGCGGACGTTTGATGAAGATCACGGATCCCGGCTCGAGCTCACATCAGAGACACGCTTCGCTGAAATACGCGTTCCCCCATTCTCGTTTTCCGACGATTATAGCGAGAAAAAGCCGTCGAAGAATTCAAGGATATGGCGAAAAATCAATGGCAGTCGACGATGTTCTTCATTCAGGACAGGTTTCATAATATAACTGGAAATAATTTAATATTTTTCGAACAAATTTGATATTAACCCATCTTATTTTGATAAAACTCCGCCGCTGCTCTCTGAAGCAATGAACTGCAATCCGACATCAGCGAAGGGATCAGCCGAACTGAGACGGAACCACTGCCATTGAGCTTCTAGCGAAGGAGAATTAATTTATTTGAATTTATTGTACGCAATCGTTCCCATATCTGTGAGCTAGCAAGCTAGCTAATCGTGATTAATTGTTGGGTATTCCTTCTCGTTCTTCAGCTTCTCCACAAGCATCTTGTCTGCTCATAATCACACAAATGATGTCATCAGCATCGCTCTGATCTTGAAAATCCTGAAATTATAACATTCTAGAGGGTTTCTGTTGAGTATAGTTACCTTACAACCAACACCAAATATGTTCTTCATTATGGCATCCGGCAGCTTTCCATGAATCGCAGAAGAAGTGCTCGGCATCAGATCGGATGCTCTACTTGGGAAATATCGACCGATGCGGCTAGACACGAACCATGTTGAGTGGCCGAGAGAGGGATCATCTCAAAGATCTAAATGTAAACTAAACAAGAGTTTAGAAAATTTAAAACAACCTCCCTGATAACGTAGTTAGCTTCTCGCGGAGTGAGCTTCTGCTTCAAAATGAAACAGAATGAAACAAGAATCAACTGTGTATTGTACAAAGTGAAGTATTTCAGACATTTTCGCTAATTTTGGCAGTAAAGACCTATAATTTTGGTAAAAATCGCTTGTATTCTGAAAAAAGAACTCAATATTTAATTTTTTATTTTTAACTGATTTTAAAGAGAAACAAACGAAATATATGAAATCGAAGAAATCCCTGAGAAAAAAAAGGTGCTCCTCCGCAATATTTGTGATTGTTAAAGGGACAACGACTGTTCATCGAATGGGTCCCTCCACGATTGTCCATGTCGAGCGCTTTTAATCGCGATATTTTACTACTGTAAAAAAGTGTACTAGGAAAAACCTGTGTAATGTCGAAAACGTCACAAATGTATTTAAATACATGTTTTTATTGCTTGAATAAGCCGGCAAAGTATGTATTTAAATACACTTTAATTTTCCGACATTATTTGAATAACCCCAAACCCCGAAATTTATTTTTTGTGAAAGTGATAACCAGAAAAATACATGTTAAAACAATTTTGTGAACAAAAAACTAAAAAATATTTTTTTTGCAGAGATGAATCCCACGTGAACGGTCGAATTTCCACGCAGCCTCGTCGAACGGACTTTCAGAAGAATCGCATGTGACACGTAGGAGGCGCCATGTCGGCTCAGTGAGTACAAAAAAATCCATGGGGATTTTATAGAAAGTCGGAATTGATTCAATAAAATCGATTTTTATAATAAAAAAAAGGATTGATTATTGGTTTTTGAAAAATTTAAAAATTACAAAAAATCTATAAAATCGATTTTTTAAAAATTGAAATTCAATAGATTTCTAACTTTAGAAAAATCGAAAAATAATGTTTTAAAAATCACCCAGTCAGAATCGATCAAAAATTCAATTGTCATCGATTTTATTTATTTTCAAAAAAACTTAATTTTTATGAACATCGATCATATCGGATTCCAAAAAAGAATTGGGAAAAAAGTAAATTTTCAAGAATCGAAAAATTTTAATTTTGTACAAATAGTTATTAATAACTCATTTTTTAGGTTTTTTTTCAAAAATTTGAACTAAAAACACTTATTTCTCGAGCTTTTTTCACAAATTGACCCTATTTAAATTAAAAATTCACAAGCCAAAAACCTTCTATTTTAACCAAAAAAAAAACGAAATTCCTCTCCCAAAAATCATCAATTAAATCCTTTTCAGCTGGATGATCGTAGACCACGACAATCGGCTTCCCAACTCGCCAGGCTATCTGTGCTCTTCGTGCTACAAGGTTAATTTCCTCTGTTTCGACGTGAACGGCAACAAAGTGTGCCATAAGGCCGTACCGTATTGTGATCGAAGGGAAATTGGCCACGGACGCCAAGTCTTTATCCAGCTCGATCTTTAGAGAGCGAAATTTAAAGTATCATTTTTTCTTGTTTTTTTTTATGTTTTTCGATTTGATTGTTTAATTACCAATTTTTGGCCTGTAACTGTGTATTGGTTGTGCAAATTTCGTTTTTTGAAGGTTTTAAATTTCTGTTTGGGGCAAAAAAATTTATCCAATAAATAAACGGAATATATCGATGATATGGCACGTAGGGGGAAACGGACGGGCAAGACTATTTACAGCAAGGGCGCGCACCAGAGGTTTCTCGACCCCCGAGGCGGGTGGCGGAGCCTCAAATCTGTCGGAAAAATGTGAAATGAGAGAAGAAGTAACCTCTAGAAAAGGAGATGAGAAATCGGAAGTTCTGGGAAAAAAAAATCAACTTTTGAACAATTCACATTGACGATAATATTGATTTTTTTAAAATTCTCTAAGATCGAGAAATCTGGTTTGGAAAAATCAATAAAATGAATCTTAAATATCTTTTTAATAAACTATTTTCAAAAATCAATAATATCGATTTTTGAACAATTTGAAAAATCGATAATGTTTATTTGTAAATTTAAATTTTATTGATTTTTTGATTACAAAATCGATTGTTGATTATTGATTTAAAAATCACCAGAATCGATAAATCTGTTTCGGAAAAACCATTAAAATTGATTTTTACAAAAATCAGCCAATAAAATAGATTTTTTATAATCAAAAAAATCTATGTGCTTTTTAAAACCGAAAAAATCGATATTTCAAAAATTGAAAAAAATCGATCAATAACTAAACAGTCAATACATAGGTGAGCACGTCTCATCTATTTGTGTTTTTGCGATTGGTCTCGACAGTTTTGAGACCGCTAGGCGTTGTTCCGCATTCTGGAATTTTTTTGTGTTGGGAATTTGGCACGCCCACCAAATGGACGGTGGCGGAAATTCAATTATTTTAAATACCTTTCTGGATAAAGTGCAAAAATGGATTTTTCCACTTTGTCCCTTCGAGTGATTCGGAAATTAAATAAAACATTCAAATTATTTAGGGGCAACGAAAAAACTCTCAATGCACCCACTGTTATTCGGAGTGTCGTCGCGGTGTGTTGCTATGGATCGTGTCCATGCCCAGCTTCATCGTCGACTGACGTAGCCGTTTTCTGGTGATCTGAGCGAGATTTATTTAATTGATTTTTAGGAAAGGCGCATGGCCTAAAAAACACAACACTTCGGCCAGGGACTTTGGCGGCCGAGCTAGGCCATGCTGCGGCATTTAAAAGCACATACCCTACCATGATAAACTACTGAAAATCGCCAATCCGAAAATGATGACCAATGCGAAACTGATAACTGCTTACAATCATCGATGAAGGAATAAGATGAAGTTTGCGTGGAAATGGAATCGATGTACGCTTGTGAGGTCATTCCTGGAAGTTATTGATTTATTTTTCGAAAAAAATAATTCCTTAACGCAATAGTCACACTCAGAGTCAGCGAATTTTGTTATCCGAAATCATAGAGGTATTGCGTGAAAATGCGGCTTCCAACCTGAATGTTAAAAAAAAAATCTATAATATCGATTTTTTGAAAGTTTTTGGCGAAAAATTGATAAAGTTCGATTGATTGTTTGCCCATAGAAACAGATAAAACTCTATATAACTTAATATCGATCTTTCGTTTTTTTGCGCACCTTTAAAGAGTACTGTAACTTCAAACTTTCATTGCTGCGAAATTTTTTTATCGGTTTTTACAATTTTTTGTACAGTTTCCGTCCAATTTTACAGAATTGAACAACAAGAAAAGTGAAAAATCGTAAAAAATGTCCGCAGCAATGAAAGTTTGGAGTTACTGTACTCTAGGCTTTAATGGCGCACACCTTTTTTGCTTCAACAAAAATTTGTCGTGGTAAGACTGGGGACTTTTCGGCGTAGAAGTCGCACAATTTCGGTATGGAAGAAAAATCATTTTCCAACAGCAGCGATACATAAAAATTAGCAAAAAATTGTGATTTTAGCCTAAATTTAGTTATTTTTCGGAATTCCCGTGGCCAGACTCATTTCTCGCACCTGTGATAGAGCCAACTGCACACCTCGACATGCAAGCATTTTATCCTTGCAGATGGCCAAAAGCCCTCCGTCGATCATGACGAAGCAATGCCCGCTGCTCGGCTGTTGCCAGCTCGACGAGCTTCTGAATTAAGATTTGCGATTTCGATTGTGGCACCCCACGAAGAACGTCGTGGAGTCGGGGCGCGAAGACGGCTTTACGAATCTGATCTTCGGAATCAAGTGGGTAGTTGGCCTCCAAGTACTTTACGCCCGATGGACCGATTGCGAAATCGAGCTGCCCGATGAGCAGCACATTTGAAGCGAGATGGTGATCGGAGCCACTGGTGGTGCAGTCTCATCGTCGGAAGATCCAGATCCGAAGGCTGTCAGAGTCGGAGGATAGTGTTGCTCCCGTGCGGCGGTAGGTAAGAAGCTTGACGGGCGGCTTTGGTTTCTGGAAATTCTATATTTGAATTTGAAAAGCAAGAAAATTCAATATTTTACCCTCGCGTCTTGTGGGTTCTGTTTGACATAAGCGACAAATCCGGGTCGAGCTTAATTACCGCATGAAACGCCGAACATGCGCGCCAACAGAAATGAATGAATACAGGTTAGTAGACGCTGAAAAAGTGGGCAATTAATTCAGGATTTTTTAACGGAAAAATAAGTGAAAGGAGAGGCAAACACATCTGCAAATTAAAATCTCCCGAAATTACCGCGCTTTAAAGGGACTCCACCGATCGGACAGACGAGGGAAGTGGAGAGACGCAAATCGAAGAGACGCCTTTCAGATCATTTTTTCGTGATAAGTTTGCATGAATTGGCAAGGAGAGCTTACACGTTAGGCGAATCATTGATAAAAACATCCAATTGTTGTTTGTAGTGTACTGAAATTCCGGAACAATAGCTCTCGTAGACCCGAAAGTCGCTCGTGGCAGGAAAGTGGAATTTGGATAATTTTGTTCTTTTTTTTAAATATGACGTTTTTGAAGGCTTGAATTTGTCTCATAATTCATCAAATTCATAAACGGAATTATCCAAATTCCACTTCACGGAGTGACTTTTGTGTCGAGTCACGAGAGCTATTGTGCTGGAATTTCAGTACATATGTAGCAACAGAAAATGTTGTTTTTACCAACGATTCCCATCATGTGTAAGCTCTGCTTCGGTTGCCACTTCATGCAAACTTATCACGAAAAATGTCTGAAAAGGCCTCTCCGATTCGCGCGCGTGTCAGGCCTCCACTTCCCTCGTCTCTCCGATCGGTGGAGTCTCTTTTGAGATTCGACCCAAATAAAAAGTGCAGGGCGCCCGGGTTACGGGAACTTTAAAAGCGCATCACGGTTTTGAGTGCAGGTCTCGACGCAAGATTAGCCGGCTACTTTTTGAAGATTTGTCGTTTATTTTGGCATTTTTGAAGGAAACATAAGTGAAAAACAATTTTAATCTTAATTGAGAGAAACTTGAAACTAACATTGTTACACATAAAAAATTGGCCAAGAAATTGCGCCACGTTTTCAAATAGAAGTATCGCGGCGGTCAAGCCGTTGATTACAGCCGTTATACACTCATATAACTATGCGATAATGTAACTCGATGATTTGTTGATGTGATCTTTAAAAAGGTTGAAACTGCCCCTTATGTGCCGGAGGCGCTGTGAGCGGCTGGTTACTTGTATATAAAAAATGTCGGGAAAAACGCACTTCCGTTCCATTTGTTTCTTTGTTGACGTCACTGAGAATTATGGGGGTGCGGGCCCGTCTTCGTGGTAAGACCCATCTTGGCGAGACATAGCGTGGTGATATCCTTCGTGGCGAGACCCATCGTGGTGAGACCCATCGTGGCGATGACCCATCGTGGTGAGACCCATCGTGGTAAGACCTACATCGTGCCGAGACCTTTCGAAAATTTGGTGGGAATTCAAATTTTCTTAGAAACATTTTTGGTGGGAAGTCAAAACGCCTTTTCAAAGAAAAATGGCTGGCGGGAATTCAATTTTTCAATAAATCATTTCGGCGGGAATTCAAAATTTCTAAGCATAATTTTGACAGGAAATTCAAATTAGTTGAGAAACTCGAGTAAATGGAGTTCTAGAACCTTCCTGGAGATTGGGGAAAATTTTGGTATGTTCTAGAACCATCGGCGAACTTAATTCTGGAAAGTTCTAAAACCTTCTAGAAAATTCGTGACAAATTCTGGATTGTTCTTGAAATTTTTAGAAGAATTCGAGAAAACGCTGGAACGTTCTATAGAGCCTTCTAGAAAATTCGGGAAAATTCTGGAATGTTAAAATCTTCAATGTTTGCGCAAACGCTCTCGGAAAGAACCGGAATGGATTCTGTTGTATGTTTGAAGAACGTCTAGAAACGTTCAAGAACTAATTTAGAAGTAGTTCCGAAACCTGGTATTCTTAAGTTGTAACTCTTGGTGACAACTTAGTTATATAATATTCATGTTGCGTTAAAAGCTTCTGGAGCAAACTGAGAACAACGTTCCAAGGCTTAGTAATTTTAGAATTTCATGTTAAGTTCGATTACCAGTCGGAGCACGCGCATTGTTCGGAACGGCTGGTATACAAACAATAGTCAGTCAATCCCATGGATCAAATCTTGAATTTTATGGGTCTAAAACTGAACTGTTCAACTTTGATATGCAAAATTTTATAAAATTATTATTGAAAGACATGAAACAAACTTGAATTACGCGAAGTAATGCTGTGAACTGAACTTACTATTAGATTCCTTTTTAGCGAGCACACTTGAAAACGAATGAAATAAGGTATGTGAGAATACCGTATCAATCAGATACGTCTGACACTTCCCCAGAAAAAACTATCAGAATATGAGTACATGTTAATGCTAGTGTGAATCTTTCCGCGACGACCATCATGGCTCAGCAGGTAAGACTTCGGCGACGCCTCGAGACGACGAGGTAGTTGACGACTTTTCTCAGTTTTTTAGGCAGCGCCCAACTCGTTGTCCGAGGTCTACAGTAGCTACATGTTTCGGACGGACAGAGTATTTGCTTTATTAGTAGTAACAGAAATACACATAAAATCAATTAATAAGACATGAAATGCAATACTGAACCAAATCCAGTTTTCACCCACTATGTCTCTCATTGAAGAACGTTTTAAATAGCTTTTGGTATAGAATATATTAAAATTCATTCTTCGATTTTCTGTGGAATTTCCTATTTGAATTTTTCCATTCCAGACAGTCACTTCTCCAAATCCGTGCATCCTTGAAATTTTCTTTGGGGATATTTTAAATATCATCGAGATACCAACAGTCTACAGACTGGTTTTTCACTTACAAGACGTGCTCTTGACTTGAATGTCTGGGATACCCTCTATGTTTTTCTCCTTTGTCATGCTGATAGTATAAGTTGAATGTGACACTTCGATTTCTTCTGGCTGTTTTGTTCAGTCGATCGGATTAGTTGGAAGCCTGTGACTCGGTCCATATTGTTTCTACCAGAGTAATGAGCGTGGACTAGGAAGTAGAACGGTCATACTCTTGGCTGGGAAGTTTCGTTGAACATATGGAGACAATCACATTGTCCATTGGTGAATAATAGTCGTTTGCCAGTTGTTCGTTCATTTCGAGTAACATATCCTCAGAGTATTGTAAATCAATCTCCACTTTTCCCAGAAGAACCCTCGAAACGGGTTGGGTGTTGAATGGTACATTGAAAACGGCATTTGAAACACTAGTCTATAGACGGTTCCAAAATTAGGAATCCAGATTTGAACTAAACATAGTATTAACATTACCACTGTTTCGATCCGGAACTCCATTCTGAATTCTTTAACCTACCACTTTGAAATAAGCATCACTGGTATAAATCTCGGATTGAAAGGAACTCTATTCCCTGTATTAAAACGGTCAATCTGTGGCATGTTACCAATTAATTGGGGCAATAATTTGCTCGAGCACCAACTACGTACCTCCCTAGTTGCTTTTCGTATATGGTCCGATAAAACAACCTGTAAAATGTTGTTAATCTTTATAATGTTCCTGAACATATCATGTCAAGAGTGTCTTCTGGAGTTTTTCATCAACAAAGACAAAATTTGATTTTTTAATTATCTAAACAATCCGATTTTTGGTTTTCCGAGGAGGAAAATTGAAACATGGAAATCCGTTTTTCTCCATTATTCGATTCTCCGATTTCCTCTCGAACGAAAAAAACGAGAATAAAGTTTCCATGACATCTCAGTGGGCTGTGGTTTTGGGATAACTTTAAGTGAAGGAATGGAGAGACTATCTAAGTATGAAAAACACGAGAATTTACTCCCTTTTGATAACCTGTTACAATACGTGGACTGTTATACTAGAAGAACTAAAGCAGTGATTCAAACATCCTGTTCAACGGTGTTCATTACAATGTATCAATTTACACCCTCACCAGTCTTTCATTTCCAGCGCTTTGTAATGTTAGTACGTGGAGATTTCCTCATTTGATTTATGATTTCTATTATTCTTAATTCTCCAAATAGCTCTTCTCCCAATAGTCGCAACTCATCAATTCCAAAATTTATGCTCAATCGAAGTGACATATGCGAATTTCCCGAATAGGTCGTTTAATCTGTCCATAAATCCATGCTCATCAACTCCAAAAATTCAATATGTCATATTCAAAACTGCTGCGTTATCGAATTTCCACATAATGAAGTTGAGTACTATGAACTATACAGTTTTTATTTCTATGAATGTCTCGACATATTTGACGACGACAGCAAACTAAAATCATTTTTTATATTCTTCAACGAGTCCATCTATGAAAACATGAATGTCATGTTAATCAGTTGTTCAAAAGCCATATATTTTACTCAGGATTCTGAACAGGCGCTCATGTCAAAAATTGACTTACAATCTACTCCAATCAAGCAATCGGGTAGGAGATCATTGAGTATAATTCGAGCATCCACTCCGCACGAAATTTCGTTTTTCTTAATCGGTGCGACATACGTAATCTTGTAGTCTTTCAATTTACCGCATTTTTTAAAAGTCTGAAAAAAATGTTACAGCTGAGTACAAAACATTAAAAATTGGGTTATTGATTGAAATTTTCACCACTTCTCATATTGTCGACCACTGAACAAACAAGCATAAAAAGCTTCAACAGACTCATAAAACACTTTTAAAGGCAAGTGTTGAACCACCTATTTTGATAAAATTGTCTGAAACACATCACAGATCGACTTTTCCGTAGCTCAAAGTGATCCTCTGCCCCTAGCTCTTGAGTGGTCATTCGAAAGTCGGGGTTTAAGTTGAAATATTTCCCTAAGCGGTCAAAATTCCATCATCAGGCGATCAAAATAAAATTGAATTTATTGGTGCTACAGTTAACACATGAAGCGGCGAGCAAAAAAACCAGGTTTTGAACAATTGAATTCAACTTACTCGAATCTAAGTGTTTCACCTGTTTGTTATCCACATTCAGTGGACATTCAGGTATAAGAAACGCAAGTGCATCGACGAAGCTGTTGCGTAAGTTCAGGATCAACTTGATTGTTAATGACTATTGATCTTTTCTTCAATTTTTAAAAGTGTTGAAACTGAATTTGTACGATGCTTCGAAAATGTTGTAGTGCAAAATCGCTGAACAATGTATTTAATAGATCAGCTGAAAAAAGAGCGAATTAGAGCAATATTGAACACAATTTTGATACCTGTCTGTAATTAGGAAAATCAGTCCGCTGTATTGATTGTTTGAAAAACTGAGTTTTTGTTAATTTATTTGCAGTGGCAAATTTTTATTATCATTTTTTTTGATAAAAGTTCATCACCAATGCCATCAGTGTTGTGGCACCACGGAGTGTGGACGCGGAAGACCGAACCCTTTAAGTCTCAAGAGGAGCCGAGCAACGAAGACTATGTCAGAGGTGGCATAGCACCAATGGCATCGTCTATTTGTATATGTATTGGGAAGAACAGACATTAAATTTATTACTCCCAAAGGGGAGATAATCAACAGAGGGGGGGTCGTACACAAGAGTGAGGGAATTGTCAGGGAATATGCACGTCCTGCCACGCGGGTCTTTAGACTAGTCTGCCAGGAAAAGGTCGAGTTAGGTATGAATAGTCGGGGTCTTTGCAGCCTCGTAGAATAATATCTTAGGACAACTACACTTTCCTAAAGGGAGGGAAAGGTAGGAAACGTCGGCAATTAGTCTGACTGGGAGGTCAATAACGGGGGGGGGGTCGGGGGAAGAGACCAAGGCAAAACCGAACCAAGAGTGGGGAAAGGAGAGATCCTTTTTTCCTGGTGCCACCGACGCTGCAGCTCGCTCCGTATCCCCCCGTCGCTCATTGAGTCGCCGCGCAGCCAATCGTTGCTACGGGGTGCGAGTGTAACTCTCTTTAGAGAGCGTGTCGGATCAGACGCAGACATACAGGTAAAACTTCTGCGACTCCTAACTGTATGGTAAGCTTAAGAGCTGGTATTAAAAGGTCGAATTGAATGTACCCGTCGCTCGGAGAACATCCTGCTGAATCTAAGTCGAGAGCGAGACTGCATTGTGAAATGGGCGATACAGCAGAGCCCAGTTCACAACTCTCCCGGGGGGCGGGACTTGTAGGCTGGTTCACGTAGTGAACCCGCTTAAGGTTCGTTGAAGCCTTCCTTTGCCGTTCTTGGAATGGCGGAGTGGAAGGTCGTACGTCTGAGCTCCTGGCTTCTTTTCGTGAACGCATTCACCTTCTTTTGAAGATCTAGTATTAGGTGAGCTCGGAGCCGGTTCTTCTCTAAATGTTGCTTCGTCTGAGCTTAAAGCTTCTTTCCTGGATTTAATAAATTTTAAAAATGGAAGGACATGTAGTGAGGGTTCAGGAAAGTCGGAGTCCGTCTCTTCGTTTTTTTGTTGAGATGATTTTTTCTTTATTGTCTATGTCTTCCGCTGTAACCTCAAGAGGATACAGTTGATTTAGTGATCGTTCCAACGTGGAGATTGAAACGAACTCCTGATTCAATGTTTCCTTCAATTGTTTACTCGGAATGAGCTCCACAATTCCCAGAGGCCATGTGCGTCTTGGCAGCATTTCTTGTCCGACGAGAACAATATCTCCTTGTTTAGGATCTCGAAGAGCATCCCTTGTATTAGGCCTGTCTTTTGTCTTTCCAGAAACAGGAGATATGAGTCAATGTCGACCAGATTTGCCACAACTTTGCAACTGTTGTTTCAACTCTGGCTAATTGTCTTCTCATTTGCTCTGTTGATCGAGTTCGGAGAATATTCCATCGGTTCGTCTAGATCAACATATTCGGTGCATCTAGCTGATTTGGTAGTAGAAAGTCGATTGTGGCGGAGAGCCGTCAGATCATTGGGATCTGTGTTGTCTGGTGTAAGTGGACGGTTGTTAATCATCCCTTGGTCACCTGTCCGTGCTGGGAGAGCTAGAAGAAGGTTAATTTTTTTGCCAATAGTCTTGCGAAGTTTAGGTGCTTCGCAATTCAAACAATCCTCTCGTACACTACCTCCTTACCAAGGGGCGAATGGAGTGATGTTGTGTACGTGAATTTCGTCATTTGGCTAAAAAGCAAATCATTGAGTAGCTTGGACTGCATTAAGTCTGATGTCTAGGTTGACCATTTGGTGGCCTAGTGTAATGTTGGTGCATTGTCACAGTAGATATGGGGCGGTACACCACATGAACTGGAGATTGCTTTGAGTGCGAGAAAGTAGTTGGCTGTAGTAGCGTCTGGAATGAGTTCAAGAAGGCTAGGCTCTAGTCTTCAGACAAGTATAGATTAGAGCATAGGCTTTACCTAGCTTGTCATCGTCTGTCTTGTATTGTATTGTACCCAAATAGTCGAGTCCTACATGGTCGAATGGTGCAGAAGGTCCAGTACTGCAGTTTTGTAGTCGTGTGTCGTAATTGTATTTAAAGGGTCGTGCTTTCACCTTTTTACAGTTCACGCACTGAGTAATTGTAGTTCTTGCAATTTTGCGATCATCTCTGATCCAAAAGTGCAGTCTTACTGTAGTGGTTGCCAAATAGTGTAATGGGAAGTAGGTATTGCGTTATCTGACATCTTCCACAATTAGACACAATCAGATGTCGGATGGGGTCCCCCCACTATCCAATGATGTTTGTTTCCGTCCTCGTCTACTGGTTTACGCAATGTGTCTTGCAAAGTGGAAAACGTCTGTTACAACTGGAGATTTAAGTTGTGTCAAAAAATGGCTGAATCAGTATGATTTTGTCTCGTCTTTGAATTCGAGATTCGGTGTTTATTGTTGCATTGACTTAGCATAAGATTTCCTGTTATATGACTCGGTGACGAGCAAAGCATGTACCATTGTTGATGCAGAAGCGTTTGACTTCATTCGCACCCATTGTGCTCGTTTGAAGTGGATGGTCTTTTTTGAAGGGAGGGCACGGATCTCCATCGAGAAATTCTTGCCAGCGCCATTCTCCACGAGTCTGGAAGTAGTATTACCCGGTCTTTTGTTGAAAATGCGGGTTCAGGAGGTTTTCCTTTGGTTTTCTGTCCCGTTGGACATCAACCAAAGTACGTCTATGCCAATCTTCCGCGCAGTTGTCAGATGTTTTTTGAGGCTTACGATTGGATAGTCAGCCCGTCTGGGTCGTATTACGTCACGCGGAGTCAGCTCGGTATCACCTTGAGAGTAACCGTATAGTCTTGATCTTTAATTATCATGTCTTTGGATTTTACGCCGCTGAATTCGGGTTTAACAGTTTCCCCAACAACAAGTCTTTAATCGTCGATAGTTATGTCTGTCACGCACAAGAAATAACTATCATTTTCTGTATGGCCAGATTAGTCGTGGTTCGTATGATATCTAAATTCAAAATTGGCGTACCTGTATCCTTTGCCTTCTCGACGCCGTCCTTGAACATCTCATCGAGGGTATCCGGCAATGAATTGGCTTCGGCAATGTATTTCAGTTTGTATTGTAAAGATCCTAAAATGATGTAATCCATATGCTGCTGCATGTCACAATCGATATTGGCGTCAATCCAGTCGAAGACTTTTTGCTTCAAGTCTTCAGTCTTAACAACGGTGCGGCGTCAGACAATGCTATGGATGATGAAGCGGAGAATGGGGTCCTGGATTCCCTTCCCTAGCTGCCACCATCCCGGAGTCGGGATCAAGACTAGTTCCCCGCGACCTCCAAGATGAAAAGTTATTCTTCGTTGAAAACCGAGAAACTTGTTATCTAAAATCAATAATTGGTTAAGAAGAAATAGACAAAATGCATTTTGAGATTAAGTAAAAGACTTAGAGATTAGGAAAGAAAGATGGGGATGAGGACTCAACTTGAGTGATAAGAAAAAAAGGCATTTTAATATAAGATTCTACAATAGGGATTGGGAAAGGTGTGCCGTGGCCTAATATAGGTTTGGTGGTACAATAAATAGGGGAAGTAATGACCCAATATGGGTTCCTTGGGGGGATTATTAAATGTTAGCCAATATGGGTGAATTATTAATTACTCATATTGGCAGGGGAATGTCGGTGAGGGCTAAGAGTTCCCTGTATCTGTTGCTTGATAGTCATGTTCCGGAGGGGACTTGTGTAGAGTAATTTGGTTTAAAGTAATTTGATGTAGAGTAAGTATTTGGTGTAGAGTAGGTTTTGGTGTAGAGGAGATTTTGGTGTAAAGTAATTTGGTGTAGAGTAATTGCTGAAGAGGAGGGATGGAGGGATTTCAACACCGACTGGTCGTGAATTCGGCCCTTAATTGGGAGGGTAGGGGACAATAGAAAGAAAGAGGCTACCGTGTGGACCAATTTCCCCCAGCAGGGACCTAGTTGGGATTGTTTTCACTTGAACACGAAAAGACAATGGGGGTTGGGAAAGTTAATAGGGACAAAGGAGCAAAACGGAACGCCCATTCCCGCATCGAATTGATAGGCACCGAACCCAAACTCTCCTGCCGCTGCAGCAGTCAGGGATCCGACGCTCCACGCTCTCTCATCGCGACTGGAGACCAAGTTTTCTCTTACAGTCTTTTTTTTCTAGTGGCGCCGGTTACTTACTCCATTGCCAACTAGCTCGAGTCGGTGGTAGAAGTCAGAAGTCAAATGCTTGCGGACGTGGAATATAGAACATGTTTGAAATTAAAGAGGGTGGTTTAAGTCTTGTTTTTTTTGAGATCCCTATGGATGAATTTTGGTTTATTTTTTAATTTGAAAGGTTAAAAGATGTACAACAAATAATTTTTAATGATGTATAATTTTTGGTGAAGGTACTAGTTGAAAAATATAAAGAATTATTGAGAGTTTAAAATTGGGAAGTGGTGTAGAAAACGATTTTGTTAAAATATATTTTTGGAATTTATGCAATTTTATAATTTTCAAGGATTTTTTAAATTTTTTAGGAAGTTTTAAAAGGGGGTAAATAATCTAACTGTTGGGTCCCCGCGTCCTCCAACGAGCAAAACCTCTATCCATCCAGAGTTCTTGTCTACCCGGCTTGTCGCCTCTTCCGCCTTTTCTTCTTGTCGTTCTAGCACACAAGAGACTGTGCACTATAGTCTTTCCGTTGCAGTCAGCGAGCCGCCAGCAGTCGCATCGTTAATGGCACCTTTGCCACTGTATTGAACGCTGTGAGCTGTTTTAAGTGCTATTATAGTCTGTAAAAACAGGAAATTTTGTACTGGATCGTCTTTCGTCTTTCGACTTGAACCATATTAACAGCCGAGGTTTATTAAATCAAGGAACAAATAACTCAACAATTTGGTATCAGATACCGGTGAGGAGTGGTGAGGGGGATTTCAAAAAATTTAACTCCAACATAAAAATTTCGTGATCGAATAACGAGATATTCGATGGGGATTGTCCTCGTGCCAATCTTGGTCCTTGGTTGGTATCGGCGTCTGACCGGCTAGTGTTGTTGCTATAGCTGTTGCTGGAGTTGGCGGAGGTCCAAATCAGTTGTGGAGCAGGAACGCGATGAGTGGTGGTGTGAACTCCTGTCCGGCTGGTACGAGTTGTGGTGGAGGTTGCTCTTCGGATGGTGATGGCGTGTGCCAGCATCGTATCCTCCAGGGAGACTTCCATCGCGAGGGATGTTGATCGTGCGTGCACCACCGCGCATCTATTCCCCTGTCGTACAGAACGACGTGATCCGAGGATTGGATCCACACTTCCTGGGAGCAAGATTGTGGAGCCGTCGCAGTCGTCGGGCCATTTGGGTCGCGGCCGGTCTCGGGGGGCTGGGCCCGTACTTCCAGGGGCAACGTTGAGAAACCAGTCTTGGAAGAACTCGGATGGAGATGTGTCTTCGGTGCGAGCGGCTCGGGTCGAACGGTCTGAGAAGATTTTACCGAAAATTAATAAAGTATATGGAAAAATTGGATAAATTTTTAGAATTTTGAAAGAATTGATTGAAAATGTGGATAAATTGAATTTTTTAAAATGAGAAAATTTTTTAGAGATAATAATAATTTTTATATCCAATTTTTAAATAAAATCGACTTCCTTCTCGAGCAGTCTGGCGCTTCGTCGATGTTACTGGTAGGATCCACTCCCACACAAGCTGTCAACTTACGTACTACCAATGAATTGCAGTATAATGTGTCTATGAGATGCAAAACGACGAGAAATAGCGAATCATAAGTCGGGGAAAGTCGAAATTGGGCTCTATATCGGGAGCATGAGTTTGCCAAACATCACCTCCCTCGCGTCTGTGGGCTCGCGAGCCGCCCTTGTGTACGATTTTAGGGGTAATTTTGAATTTTTAGACTCTTAAATTATTTTTAAAGAAAGTTTGGTAGATAATGGGACGGGGGATGCTTAAATGATGTGTACCTGTCGTCTATCAAGTCTGTCGACTATCGAAAACGTCGAGTCGTCGAAGTTCATATTGAATCGTCTCTTCACGGCCCGGCGAGGGGTACATGAGAATTCTCTACCGTATATTTGGCTGACTGCGTGCTCAACGTTGATTCCACTCAGTTTCAAGTTTGGTACACTTCACGCGTACTGCACACAGTTTAATTGACGAAATTTCGCGAAAATTAACAGAAGATTTTTTTCGGAATTACAGAGCTGAACTCTATTGATAAAAAAACTATCAAATTTTCATCGAATTTGTGAAACATCGTAAGGAAGATCTTTTCTTCACTATATTCAAGGAAAATCGATATTTCGCTTTTCACAGACGAATGTTGTCTCATTTTACTCGATGAAAGTTTCTGATGAGCTTCATCGATTTTTGAGATAAAAATGCGATTTGTTGATAAATGGATCAGTTATATAAAGAAACAACATATATTGGACACTCTGAGATTACTTTTTGAGAATCAATTCTTTATTTTTCTGTCATTTTAAATTAAACATTGAAATAAAAATATTAAATAAATAATAAAAAAAACAGAAAATCGATATATTACTTTCTCTTCGGAATTTCACCTTTTTTGGATTTATTCTGTAATAAACTCTCTTCTTCGAATTTGGTGTGTCCACGTGGCAGACGAAGAAGAATCTGCTGCACTCCTTCTTGCTTGCCCACAACTTTCTCGAATTTTCTAAAATTTTAAATTTATGGAAATTGTCATTTCACCATTCCACTCACTTCAGCTGATACTGCATTTCGGAAGTTGATCGGATACTGGTGGAGCAACGGATGGCTTCCAGTGATTGGCTGGCTTGTCGAGCAAGTTGTGTGCTTGCCTGAAATAATTTTTGATTTCAATTTTGAGTTGATCTAAAGCAGTAAACCTACCACCGGGTTCGTACGAGAAGGAGCATTACTTGGTAGACCACGGAATCTTATCGTTGAACTGCCTCCAAATGCAATAGAAGTTTGTACGTTTGGTGAGAAGTCGGGCTGAAAATTTTCAAAATTTGACTTTTCGAGAAAAATAACTCACCACAGCATTTCGAGATTTTGTCGATTGTGGAAGCCTTTTGAGTCCTGGAGCAAGAATTGATTTTTTTGTCGCTAAATTTTTTCTTTGTTGTGCAGCCGTGACGTCCCGAATAACTACTTTTGGGTCCCGAAGATTATTTTGCGAAGAGTCAGAATTGGCAGAACTGTTGCATGGGTAACACGACGGAAAGAGCGGGAATGGACGTGTTCTGAAATAGTTGTGTTTTTAAGAATGCAGAAATGTTTTTCTGTACCAAAATTAGCATAGTCTTGTCATTCATCATGTTAAGACACATGAGCTCTCCCAGAACATGGATGTAACGCCTTTTCTTGTCCCGGTAATTGCAAAATCTCCTCTCAAGTGCATTAAAAATCGCGTGGACAGATTCAACTCCTTGTTCTGTGATCCTTCCAATCTCACATCTGCCATTTGTGGTGAATGGTAGACCAACGAGCAGGTGCAGCTTTAAAATAATTGTTTCTTCGGGAACCGCTACTTTCAAATACTCCACAAATCCCCGAATCGAATTTTGAAGTATTAAGACGTGGGAATCATTTAAAAACTTGTTTCCCGAAAGTGACATAATAGTTGAAAGCTTTCCCATTGCTGATTTGTGCTCAATCCGAGCAACATTGGTCATAAATTTGCGCCAAAAATTTAGAAAGACCCATCCTACCAGCCGGCGTTAGCAGCAATTTCAAATAGTTTCCGGAAAAGGATTGGCAACCAAGCCTGCACCTTGTCCGCTCCAAACTTAGCCCAACCAGTCCCATTTTTTCAAGTCTCCCTCGGGAGTACTATTCACAATTATCTCGAGCAACAATTTTTTCGATTGAAGTGCTTTAGTTCAGCATGCGACTCTTCATTCCGGCGGCTCCTTGATACTTTTCTTCCGCACTTTTAATTTAACAGCGATTTTTAGAGTTGCTTTTCGTGTTTTCAGGATCGGAAGTAGTGTTACCTATCTAGATTATCAGAATATAGAGGTGATTGAAGACCTATATTTGTCAAAAATACCCATGATAATGCGCAGAAGAGGAATCAAATAGGATCGCAACAGTGTGTAGGAGGAGTACATCCTTTGCGAACACACGACATTTTCACAACAAGCTTTAAGATCGATTGTTCGTGGGTGGACATATGATCAGTTCTAACTCATCAACATTCATATCCTTGATTTTCATCCTCTCTTCAGCTCCACTTTGGTTATGGACTGTGCTGCAAAATCCATTTAGGAGAAAGGTGCGAAATTGTGGGATGAATGTCCTGTTTGGTGTAATATCAGATTGAAACTTGCTATCTCCAGTTTCACGGAATTTGCACAATTACTTTTGCGGTTTTTTGAACTCGACGTCTTTGTCCAAATATCAAATTTTCGTTATCTTGACCTGCTCAAGAACGTCCGCCGAATGAACTTTTTCAGAGACGAATACTTGTCGGATCCGTCATATACTGCAATTACCATAACGTGTCTCGAAGAATACGGTCGAGATACGTTTCCGATTACAAATGCCAACTTTGTGCTTCCACCTCCAGCGTCACCAACGACTCCAATCTTACTCCTTTCGTGTCTACGTCGTCCCTACAAATTGATTTGAATTGCATAGAAGCTCTATACGAAAGGACAACTGTCTGCAATTTTCACTGCACAATGGTAATCACTTTTCCTTTATTGTCGAACGAAGTGGAAGCTTTGAAACTGGAGATCATTGATACCAAATGGATTGACAAATCTGTGGTGTTTACCGATGGAAGCAAATCATAGAATGGCAGTATCGTCAAATAGTTTTTGATTATTCTGTCCATCTGACTTAGAGATAATCCGCATTGTTATTGATAAAAAGTCAACGGCGTCAAACTTTGAAGCGTGTGTTTGTAGATTTTTCTGATTCTCTTCTGAATTCAGGAATTTTGTGAATTTGGTTTCGAATAAATGGTCCGACCTCATAGGTTCGTGTTGAAGCAAGTGAAGAGCTTTGCGAAATCGATTTTTGATACAACTTCTAGTTCTTGCTTCTTAGATTCGATTAACTTTAAAAGCTGATTTTTTAAGGCTAATTTTCAACTGACTATCTTCGGCGTTACTCAGAACCATGGCTTTGCCACTTATCTTCACATCTGCACAGCTTCTCACCAATCGACCCTAAACCACTGACGATCGTTGGTATATTGTATACTTCCATCTGCACGAATGAATTAGATGCTCTTATAGTGAAATTTTCATGGCGGACTATTTGCATTTACTCTCTTCCGAAAACGCCGCAAACTCATCAATCCGCTTTTTGTAGATTATTTCTTATGATATTTCATTTTTTTCATTTTTCAGTCGTTCTATCGTTAGTCGGAGCATTTTGATCTGCGGAATTTGCTCAACATTGGAGATTTGCATATTCGAACCCTCGGTGGAACGAGTTTCGTACAGGTGTCGGTGGAAATACGGGATTGGAGAATCTCTCCAGCAATAATATTAGTTTTGAAATATTGAAAAAAATTACATTGTGAGAAGAAGTCGGAATTTCGTCATACGAAAATCCATTTCCACGTCTCTCGTCAGAATTCTAGCTTCGTATATTGAAACAATTCTGAGGACCGGCATGTAGTTGCGGAGCATACTGTAGAAGCAATGCACTCGGGATGGTTATTTGGGAGTTTCGATCCTCTGAACTGATTTCACCCTGATTAGCCTGTGGCGACGCTACACTCTGAAAATCACGTTTTCGGAGTTAGAACAAACTCCAACTTAATTAAAGTTGACAAATTCCAATTGAGCTGAACGAGCCTCCACCTTCGAATTGTTCTTCCTCTTCAGTTTGATCTTTTGAAACTCCATTAGTACTGTTCCTTGCGCTCTGGGCATTTGCTAAAAGAAGGCCTGCACAAGATTTTTCTTTTCTTTTTTGTTTGAAGTATATCCGCTTTTGTCATCTGGAAATATTGCATGAATATTTTAAGGGAAACAATTTTTAAATATCGATTTTCACGAAATTTGAAAAAATCAATATTTGGGCGCAGATACTGAGCTGAGTGTTTCGAATCTCGAATCAGCATGCTTTAATTTCCATATTTTAGGATCTTTTTAAAAAATCTGCCAACAGTTTTTGAAAAAAAAAATACTTTTCGTTCAGAATGTACTGATTTTCCAGTGATTTTCACGAAATTTGAAAAAATCAATATTTTAGGCGCATGATATTGAGATGAAAGTTTTGAGAATAAGCCAGCATGCCTTTAGATTTTAGGATCTGTTTTTAAAAAATCTGGACCAACAGTTTTCGAAAAAATTTAATTTTTGTTCAGAAATGTGAATATCTAACTATCGAAAAAAAAAATTGCAAAATCCGTCGGCTGAACATACAAAACTTATCAATTGGTGAATCATCAGCATATTTCAGTGTATAGATTAAAAACGGTTTCAAAAATTCTGAGACTAATTTTTGTTGAGAAAAATAATTAGTTTTCGTTCGAATTATCGATTTTTCACGAAATGCCAAAACATTAATCTTGGGGCCCATGCTAAAAGCCTGAGTCTTTCAATATAGCATGATTTTTTCGATATTCTAAGACGTTTGAAAAAAATCTGGACCAACAGTTCTTGAGGAAAGTAATCTATTTTTTATACAAAAATTATGTGCTGTGATTTTTTACTAAAAAAAAGAATCAAGTTGAGCCCATGCTATACGCCTAAATTAAAATTCAGAACCGCCATGGATGTATTTATACCATAGGCTCTTCGCAATAAAAAAAATCTGGACCAACAGTTTTTGAGATATGAAAAAAAACAACTCACTTTTTGACGTTTTAAGGTTTTTTCCCGGATGATGCTGTCGATTTTGGCGACTGGTGTCTTTCGCTGAAAATATTATTTTTATTTCAATTTTTAACGAAGAAAACAAGAAAAAACGACGAGAATCAAAAAACACGAAAAAGACGTCGAAAAACTCCCGCTACCTCATGAAAATAAAGCACTGCAGCCGCTGGACTTGTTTTCTCAACTTGCGGTATAGGCCATGTCCCGTTCAGAAGGCGTGCCGTGTCTTGTCGTGGCGGTGTGAAGTGTGTTGGTGTTAACGCAGCGTGTGAATACGGTAGGCTGCTGCAGATGTGGTGTGAGCTGTAAAAAATCGAAATAATTCAAGAAAAATTTACGACGATTTTCGTATTTTGAGAAGAAGAAAATTTTAGAAGGAATCACGAAAATTCGAGAGAAAAAATGATCAAATTCAGTCTCAGAAGCGAAAAGTGAACTGCTTTGTCTAGAAAACAGCGGTTGCTCGTGAGAAAAAATGTTTAAAATTGAAGAAGATCAACAAAAAAAAGACACGTAGACGTGTTTTTAAAGTTCCCGTCGTGGCCGCGTCGCCGCGCCGAGTGCGCACTTTTGTAGTAGACTCCGCCCCCTTTTTTCTTGGCGCCGTGCTTTTTAAGGGGAGCGTTTGTGGTTGAAATAATCGATTTTCGACGAGAAAATAGACTAAATCAAGACCTATGGTGAATCTGATTAAAGGCATATTAACTTTGTAAACACAATTAACTAGAAGAGGAATCGTTCTATAACCGAATATACTCAAAGGGTCGCTGACTTCCCCCGGTCTAGAGTCCCAGGTTCATCTTCGAGCTGTTTCCTGAGAAATTGTACAGGATTTGTCTGAGTCGTGAACTGAACACGCTTTTCAGGTAAACGTCGTCTGGCTGTCCTGGAAATCAAATGTTAGTCTTTGTATCGATGGCAAACATGTCTCAAGGGAGGAAATAGTCGTAAAGTCGGTCGATGCACCATGTTGTGGCACCACGGAGTGGCGGAAGACCAAACTTTAGCCTCAAGAGGAACGCAACGTAGACTATGTCAGAGGTACAGCATTCGTGGATCCAATTTGTATATGTATTTCTGGAAAGAACAGAACACAGTGTTAATAATGTTTATTACTCCAAAGGGGAGATAATCTACAGAGCATAGCGAGTGGGTGCCGTCGTACACAAAGAGGGAATTGTCTGGTGTGAGAATATCACATCTTGGCATGCGGCTTTAGTCTGAAAGGGTCGAGTTGATGTATGAATAGTCAGGGTCTTTTTGCAGACTCGTAGAATAATGTCGTCAACTACACTTTCCAAATAAAGGGAGGGAAAGGTAGGAAACGTCGGCATTTAGTCTGGCTGGGAGCTGTCAATAACGGGGGGGGGGGGGTGGGGGGAAGAGACCAGCAAAACCGAACCAAGAGTGGGGAGGAGTGTTCCTTTCGTGCCACCGACGCTGCAGCTCGCTCCGTATCGTCGATTGAGTCGCCGCGCAGCCAATCGTGGCTACTGGGCGCGAGTGTCACTCTCGTTAGAGAGCGGCGCAAGAGACGCAGAACTGAATACAGTAAACTTCTCCTAGCTGGTAAGCTTAAAGCTGGTCTTAAAAGGTCGAATTGAATGTACCCCTCGCTCGGAGAACTGCTGAAGCAGTCGAGAGCGAGACATTGTGATGGGCGATACAGTTTCAGAGTTCACAACAAACAAACTTACTGGCACTTACGTATAAAATATTGGGTTTCGTCGCGCCCCCTCCAAATGTTTTAAAACGATTTAAAACATAATTTATACTGTTTCACTACCAATGAAAGTTCATGGTTGATAACATAAATCCCCACATTTCAGAAAAATGGATAAGCAGACAAAATATTAATGAACTCATAATTTTCAATTAGCCAGCTATTGTTTCGGTGTATTACCAGAAAACAAATTTAAGTGATCTTACTCTCAACTCCAACCGAGTATCTAATTGATTAGACACATTTTTTACAATCTTAGCTGACAATTGTGCGATTTTTTAGATGAAGATTTTGTCAATAAGCACGCTGAAAATAAAAAAGCGAGGTAATTTCACGCTCGCGGAATTGTGAGCCAGTGGCTGCCTCCTTAGATTAATTTGTTACATAATTTTTCAGCCATACTTGGACCATAAATTTTGGCGACCATTACGGCATTATAATTTTGAACTGCAAACAAAACATGCAAATATATACGTTTGATAGGAATTCGCACTAAAGCTAAATTATTGAAATTCGTCAGCTTTTATTTTCATTTCTTATATTTTGACTAATTTTCAAATCGAATTATTGAAAATGAGAATTTTTAATTCATATTTCGTCAAAATTAGTGAACGCGTGAACGGAGACGGCGAAGGCGGGCCGGCGAGAGGCCGGCGTGGGAGAAGGCCGCCCGCGTTTAGCGCGCTCACTTAGCTGGAAACCCTAAGTTTCTCCAATTAAATGAACTTTCAGGTGATATACATTTTTCCTTTAGGATAAGAAAAGAACATTTCCTAAGCCTGACAATACAAAAACGTGGTTTTTAACACGTTTTTATTTTTCATAACTTAAAAAAATACTATGCATTAACGCTAAATGAGGGCATGGTAATACACAAATACCGGCAAACGGTGTTTCGCTAAATCAAATATTGAGACAGAAAAAACAAAAATATGATGAATTCTCTTTGTTCTTACCAAAATCCATCAAAATTTAGCAATTTTTTACAGTTATATTTGGTCATTACGATATGCCCATTTTCTATTAATATGAAAGAAACAATTGAAACTGATACACCTTGTCCGTCGACTATTGGGCATCGACAGATGGTCTTCTCAAAATCCAAAAAATTGGTGGAACTCTCTTGCACGAGGAGGACGCTCTGCAGGGGTCGTTCTCCTTTGCAAAGGATGGCATTCCATTCATTTGTCTATACAACCTCTCATCTTTCATGCAAACCGACATTCCCCACATACTCGAAATCCCAATTATGTAGGAAGTTCTTGTTTCTTAAACTAAAATTAGCCAACTATTTTCTAGAAATAATCTATGAAAGACCGAAATACCTTTTACCCTTGAATGACATCAAAAGTTGAAAACTGTTTTATCTGGTAAATATTCAGTCAATAATAACAGGGCAAAAATTTCCTATTTGTAAGACGGTTTGCCAGCAGCCCTACTGATGCAATGTAAGCTAGAGGTCCTACAAAAAATACCTGAATTTTGTGTCTGGAGCCTTTGCTAACTACAAATCGTAGGCAAAAGAACACATTTGTGTACAAAAAAGTATGCAAGCAAAAGAGACACCGTAGGCAGGCAAAAGATTCACGCCATAAAAGAGAGATAGCACCCGCGGTGCTAATCATTCTACTAGTGGCTTGAAGCCTCTGTTTGATAAAAGTAACATTTTAAGCATTGTTTAGGGTTCGATTTTTCTAACAAATAAAATTCATATCATTACTTATACAGTGCGTGCATGTTGTTCATTCCACGCCCAAAGTTTTTAATCATGGCAGTTTCTGAGAGTGAAATTTCAGGTGAGCAAAAAGTATTGAAAACCTATTCACAATGAAAAACCTAAACTCAAGAAATGTTGCGATTATATCTCGATGTGAAAAATAAGACAATCAAAAATTGGGCATGGCACTTCTATATGCCACCTCGGATTTTTTTATGATTTCTTATGATTTTAGACTATTAACTTTTTATTCAAACAAGTAATTCGAATTCGTATACATTCCTCAGTGCTAAATAACTATTCCTGTAACTTCTCCCAAAGACGATAGGATGATCAAAATATGGGGATATGTTCTAGGAGTTACTAATTAAACATAGTTGTGAATATTGGTTCACATTTGTGGATTTTTAGCGTCGCCGCTAAGAGGGTCATATTTGCCCCAGCCGTTTTTGGTGAAAACACTATTTCTCTTTTTTTTCGCGGTGCCATTCAAGTTGAGAAATTTCAGGCATCTCTCGAACCTGCACGGAAAGATGAATACTGCAGATAAACCTCTAGACTAGGAAAACAATTGGAAGTTTCTTAAAAGTTTGGAATTTTAATACTAGAATTTTCTGAAAAATTTCAGAAAAAAAGAGACTTTCAAGAAACTTCTGAAAACTTCGAGAAAGTTCTGGAATGTTCCAGCGCCGATTTTTCTAAAAAGTAACATATGCCGTTCCCGGTAGAACAATGTTTTGAGTATATGCCAGAATCTTACTAAAGTAAAATAGTTTGTTTTAAATAAGAGTCTGATACTCCAAAAATATTATGAAATTTCAAAAAAATTAAATTTAATAGGTTTGCAATTCGATTGAAGACCTGAAAAAATGTTAGAAATTTAGAAATTGTTCATTTTGAAAGTATTCGAAATACTGTTAGATTATTCATGAGACTGATAATGTTATCAGTTTTTTTTATTTGAAAGCTTTCTAAGAGTTTCATATGAACATCGAAATATTTTTACTTTAAAGAAACAATTGCTCCTGGAAAATTTTCACTGCGAAAACCTGGCTACAGACATCTTATGATGCTCATACACTTCCTGGACACTGAAAAAAAAAAACGTTTCATCTGCAAAGAAAAACTTAGAACATATTTCAATAATTTACTTTAGTGCAAATTCCTAGTATACATAGATGTATATTTACTTGTTTGCAGTTCAAAAAATTATAACCGTAATCAAGAATGGTCGCCTTGAGAGTTATGGTCCACGTTATGGCTGCAAAATAATGTAATAACTTGAAAATCTAGGCAGCCACTGGCTCTACTCGAGCGTAAAATTACTCACTTTTTTATTTTCAGGCGTGCTCTTATTGACAAAATCTTAAAAAAGATGTTCGCACAATTGTCAGCAAGATTGTAAAAAATGTGTCTTAATCAATTAAATACTGTGTTGGAGTTGAGAGTCACTTGGATTAAATTTGTTTCCTGCTAATACACCGATAAAGCTGGCTGATTTCGTTGAAAATTATGAGTTCATTAATAACTTTTTTTCTGCTTCTCCATTTGTCTGAAAATGTGGGTTTAAGTTATCAACCATGAAAAACTTATTCTTTCGTCAGTTGTAAAAAAAACGGTATAAATTATGTTTCACATCGTTTTTAAAACATTAGGAGGGGGAGCGACGAAACCCATAATATTATTAATACGTAAGTGCCAGTTAGACTGATGGCATTGATAACATTTATCAAAAAAAATTAATAAAAATTTGCCGCCAAATAAACAAAAACTTAGAGGTCGCCTTTTCAAACAAAAAAGAGAATCAGCCTGATACAGCGAACTGATATCCCTAATTATAGACAGGTATCAAAAATTGTGTTGAATTTTACTTTTATTCGCTCCGCTTTTTTCAGCTGATAAATAAATTGTTCAGCGAAGAAAGAGTTTTGCACAAAATTCGAAATGAGCAAAATACAAATTCACAGTTTCAAGACTTGTAATGTTAATTGAAGAACTCCAAAAATCAATATTCATTAACAATCAAGTAGATCCTGAACTTTCGCTAATTCGAACAGCCTCGTCGATGCACTTGCTCGTTTCTTATAAATGCACTGGAGATACAACAAGGTGAAACACTTATTCGTGTAAGTTGAAGTCAATTGTTAAAAACCTGGTTTTTTTTCTCGCCGCTTCCGGATCTGTTAACTACCAAAAAATTTAATTTTATTTTGATGTTGATCGAATTTTGACCGGTAAGGGAAATATTTCAACTTAACCCCGGACTTTCGAATGACGACTCTAAAAAAGAGCTAAGAGCCGCAGAGGATCAATTTGAGCTGGGGAAAAGTCGATCTGAGAAGTGTTTCAGACAAATTTTCATCAAAATAGGTGGTTCAGAACTTGCCTTTAAAAAGTGTTTTCTGAGTCTGTTGAAGTTTTTTATGCTTTTTGCTTGTTATCGTGGAAACAATATGAGAAGTGGTTATCAAGCAATTAAACCAATTTTTAATGTTTTGTACTCAGCTGTAACATTTTCAGATTTTCAGATCTTGTGTAAAAAAGTAAATGTGAAAGTCTACAAGCTTTTTGTCGAACCGATTAAGAAAAACGAAAATTCGTGCGGAGTGGATTCTGTCGAATTATACAATGATCACTTCGATTGCTTGCTTGGAGTAGATTGTAAGTCAATTTTTGACATGAGCGCCCGTTTTTATTCTGAGTAAAATATATGGCTTTTGAACTACTGATTTGACATTCGTGATTTATGGACTCGTTGAAACAATCATTTTTGCTGTGGTTGTTAAATATGTCGAGACATTCATGGAAATAAAAGCTGTATAGTTCATAGTATTCAACTTCAATAGGTGGAAATTCGAATATACCGCAGCAGTTTTTGAATTTGATGTTGGAAAACTTTGGAGTTGATGAGACATGATCGGTGACAGATTAAAAGAACTACTCATGCGCATATCTTCGATTGAGCAATTTCGGAATTGAAGAGTTGCGAATATCGGGGTCCAGAAGAGCGAGTATTTGGAGAATTAAAAATAACTAGAAATCATAAATCAGATCAGGGTATCTCCACATCATTACAAAGCGCTGGAAATGAAAGACTGGTGAGTCTAAATTGATGCATTTGTAATGAACACCGTTGAAGAGATATTTGAATCTCTCCTTTAGTTTTTCTATTATAACAGTACACGTATTGTAACATGTTCTCAAAAGAGTGAATTCTCGTGTTTTTCATACTTAGATAGTCTCTCCATTCCTTCACTTAAAGTTATCCCACAAACAGCCCACTGCGATCAATGTCATGGAAACTTTATTCTCGTTTTTTTCGTTGTTCTCGCTGAGAGGAAAAAAGCGAATAATTGGATAGGTTGAATAACGGAAAATTTCTTCAATTTTCCGAAAAACCAAAAATCGTTTAGAATATTAAAAAAATCAAATTTGATGAAAAACTCAGACACTCTTGACATGATATGCTCAGGAACGTTATAAAGATCTTTTTACAGGTTATCGGACCGACATATACGAATGAAGCAACTAGGGCGGTACGTAGTAGGTGCTCGAGGAAATTATTTCCTCAATTCATTGGTAACATGCACCCACTTTCACCGTTTTAATACTGGGAAAAGAGTTCCTTACAATCCCAAGACAGACTTGTGAATACCAGCTTATTTCAAAGTGGAATAAGGATTTCAGACTGGAGTTCCGGTTCGAAGCTTACAGTGGTCATTTTAAATGTTTAGTTCAAATATGGTCTATTTCATTTTGGTAACGTCAAACGACTTTTCGCGAGAAATGCCGTATTCAATGTACCCTTCAACACCCAACCCGTTTCGAGGGTTCTTGGAAAAAGTGGAGATCGATTTACAATTCTGAGGATATCCCGTTACTCGAAATGAACGAACAAATGAAAACGACTATTATACACAACCAATGGACATGTGTTTGCAAATGTTCAAAGAAACTGCCCAGCCATGAGTATGACTGTTCTTCCTAAAACGTATCTTCACATTACACGCCCGGAAAATATGGACAGAGTCAAAGCTAATCCGATTGACTGAACAAAACAGCCAGAGAAATGGAAGTGTCACATTCAACTACTATCAGCATGACAAAGGAGAAAAACATATTCCTCTCTAGAGGATATCCCAGACATTTTCAGTTCAAGAGCACGTCCTGTAGGTGAAAAACCACTAGGTTGTTGGTATCTCGATCGATATTTAACAAAGAAAATTTCAAGGATGGATTTGAGAAGTGACTGTCTGGTATGGAAAAAGCTTTCAAAAAATAAGAAATTCCGAAAATCGAAGAATGACTTTTGATATATTCTATACCATATATCTGAAAAAGTTCCAATGAGAGACATAGTACATGGGTGAAAACTGGATTTTTATTGCATTTCATGGATCTTATTGATTGATTTTATGAAGTGTATTTCTGTTATTACGAATAAAGCAAACAAATACACTGCCTCCGTCCAAACCATATAGCCTACGTCAGACAAGAGTTGGGCGCTGCCTAAAAAATGAAAAAAGGCGATCGTCAACTACCTCGTCGTCTCGAGGCGTCGCCGTCTTACCTGCTGAGCCATGTTGGTCGCGCGTAAAGAAGCACACTAGTAATAACATATCCTACTCATATTCTGATAGTTTTTTTTGATTAGGGGAAGTGTCAGATGTATCTGATTGATACGGTATTCTCACAGACCTTATTTCATGCGTTTTCAAGTGTGCTCACTAAGGATTCTAATAGTAAGTTCAGAAATCACAGAATTACTGGTAATTGGCAAGTTTGTTTCATGTCTTTCAATAACAGACAATTTTAAAATTTTGCATTTCAAAGGTACAGTTCAGTCTTAGATTTAAAATTTGATCCATGGGATTGACTGACTATTGTTTGCATACCAGCCGTTCGCAAGTATATGCGAGTGCTCCTACGGACGCGAACTCGAAATGAAGGTGAAATCTAAAATTTCTAAGCCTCGGAACGTTTTTCTCAGTCTTCCAGAAGTTTTTAAAGCAAATATTATATAACTAAGTTCTCAAAACTCGGTTACAAATGTTTTCGGCCGAAAGTAGACTATTTTGCAATATTTTGTTTTCGCAGAAAAATGGTACCCATCAGAGAGTGCGGAATGTGCCGAACGGCATGTGCCGATGTGCCGAAACAATTATTCCAGCACATCGGCATGTGCAGACCTCTCTTTGGTCGGCACATTTCGGCAGTCATTTCGATTCGGCACTGTCTGGAATGTACCAACCGTAAATTGATTTTTTAAAGAATTTTAAAAATGCAAAGAAACTTCAAAAAATTGATTAAAATTAATTTATCATTTCAACTTATAGTTTACTAACTTCACTATTAAGAAAACGCAGCATTTTGGGGTTATCCAACTGAATGTTCCCGCTTTTTCCTCCTGTGTCCCCCCTCTAGTCGCGATCCCACTGGGAGGAAAAATGCTTTTTCCTCTCAGACGGTTTTCGCATTTTTTAGCTGCGAAACTTCAGAACTGGGCTTAGGGCGGCGCATATATAGACTTTTTTTGATTTTTGGTACCAGACAAAGTTAAGGCCATTTTTATACTTATTTTACCAATTGGACCTGTGTTATATATGAGGTATGATATATCTTTGTGGTAAGCCAGATTCATGGTGAGTGATTAACGGCCTACAGAGTTGTAGCAAATCTCCTTCTGTTTAAAATTTTGTTAGTTGATCAATTCTTGGTATCATAGATTTTCACAGACTAACATAGCTGCGAAACTGGACAATTTCTTTATGGAAATTGCGTACACGAGACTTCTCTATTTTCCGCGTGGAGTATTAATACAAAAAATTGATCAACTAACGAAATTTAAAACAGCGAAACCTTGCTACAACTCTGTAACTAGTTGATCACTTACCATGACTGTGTCACCACATAGATATCATAGCTCAAAGTTTCCAATTCATTTTAAAAAAAACTATAAAAATTTAGAACTATTTTACTGGTCAAGCTGCCGCATTAAAAATTATGTTATTACAGCTTGGTATGTCAACAAATGTCTAACTGTGAAAATTAAAAGTAAGTTTGATTTCTTTAAAATATTTTTTGATAATTTTTTCATGTCCTGTGCAGATTTCAAATTTTGAAACAATACTTTTAATTCTCATATACGTTGAAAAATTTTTTATGACAAAGTGATCAATTAATAGCAAAGTTGTACTTTTCTTTGGATTAAGAAAAAAAAACTTTGTACTTGATCATTTTGCACATAAATTTATTCCACGGAGATATACGCATCCGAAGTGAATGAGTTTTCACTATCAATTATACTACGCGAAACCCTATGTTTTGGTCTGAAATCGCCATTGTTCAAGAATCCAAACTGAAAGAAACAACAAACATTGCAAGTAATTTTTTGTTATTTATTTAAATTGATGAACTTTTTGTTTTTTTTAAGAAGCTATATAGTATCTTTGCAAATGTGCCGAATGTACCGATTTTTTTTGGTTCGGCATGTACCGCGTGCCGAGAATAAATTGATTCGGAACAACCGCATGTGCCGATGTTATTAGCCGACATTTAAACAAGTGCCGAGCACATCTCTGTTGTACCCATCGTCTCGTCCAGATTTTTGTTAAATTCGAGTATGTGTGCGTCCAACCTTTTAAGAGTACTGTAATTTGAAACTTTCGTTCCTAATTTTCTTTGAACCTTTTCATTTTTTCCACTGGTTTTTATCCAATATTCATAGAAACCTTAAAAAGATAAAATTTTTCTAAAAATCGAAAGTTGAAGTTCCAGTACTCCTTAAAGGCACGTTACGGAATATCCACAACAAAACTTTGTCGTGGCGAGACCTGAGTATTATTACAGAGGAACGCAATAATTCGGAGAATGCGTTTAACACAACATATTTGACGCGCAAAATATCTCGTAGCGAAAACTACAGTCATTTTTTAAATGACTACTGGAGCACTGGTGTCGATTTACGGGCTAGATTTTTATTCATTTCTAAAAATTGAAGTCGGCACCCGGTAAATCGACACGACTGTAGTTATTTGAACAGGATTACTGGTTATCGGTACGAGATAATTTGCGCGTCAGATATTTTGTGCAATACGCAACCCTTATAAAGGACAAGTTCTGCTGGCCAGTGAATTGTCCCAAATTGAAATCCTTCTATTTTGAAAATTACTCAAAAGATCAAAGTGTCGATTTCGCCATTGCGCATGAGTAATTTCTGAATCTTGTTCGTTCTTTTGCACTTGGGTAAGAAGTTGCGCAGCCTTTGTTTTAGAGGGAAGTCAAACAATAGGACGTTAATTTCGCATTTGTGGCAACATAGTTGAAACTACGGTACTGTGTATGGGTACACCGTTTAAATTTTAAACAAAAATTTGTCTTGTTGAGACCGCAGAACATAGCTATTCTCAGTGTGTATTTGTCTAATAACCTGCCAATATTTGTAAATCTTTCAAAACTTCAATATTTGGCTCCAAAAATTATATTTTTAGCAAATGATCTACAAAAAGAATCCAATTTGACTGAAACTGTTAATATTTAAAAATCAAATGTATAATTTTTTTGCTCCAAAAACTGATTTTTCAAATAATCACAATTTCAATTCATTTAATTTCGATAAACACAAAAAAAAAGTATAGCATTTAAGAATTTCCTTGTTTAAGCTTCAACCGCGTAAGGGAAGGCCTCGTTGGCAATCGTCCTGCGTGTAACTTCGGCGGCGCTGAAAATTTTGAGGTTTTGCTTACATGGTATGTATTACTGATCCCTCAACTCCGCCATGCTCCGAGACGAAGTGGTATCTCTCCAGCATGGTGAACTCTGACGTGAGTCCAGTGAACCAGCCGTGTTGCAGTATACGACATCCCTCAGATACCGCAGTAATACGGATAGGGAAGGGTATGCAGATTTGGTAGACGTGGCGAGCCCTGTTGGATGTTGAGACTGACTTTTTGAAATGACTGGAAAAATAATTACAAGTCAACTTGCTGTCCGAAATTCATCATTACAAGCATTTGAATTGTTGAGCATGAGGAGATTCCGATTGCCATTCCGATGGGGTTGAGGCTCTTCCATTTCCTGAAAATTGTAATTTTAGACTTTTTAGATATCACAAAATCTGTTTAGGAAAAATACTAAGTTACAGTAAGAAAATTTTGCTCTGAATTGCTCATACAGGTTTTTAAGCTTGCACCCTGATTTGTTTAAATTCTTCAATCTTTGGATTCCTCGTGTACAAAAAATTCAATTCAGTCTCCTGGGCGTCGAATTGCGATGGAGCGCGTTTGCCGTGCGTTGGCGCAGCCGGTGGTTCAGTTGTAAGATGGGTGCAAACACGCTCCACAGAGTTTTCGATCCCCAGGAGACTGTGTCCAAGTAAACTGAGTGGTCGCTTTTTTGTTCAAAAAATGTGCCCCGCCCATTGGAAAAGCATGACCTTGTAATCGAAAATCCTTCAAATACGAATTCATTTACGAAACTGAAAAAGAATTAATTAACACTTTGTCCATTCGGTAAGATTCTTTCAGGTGTGACATCGTTTTCTCTTGTTACGAGCAATTTGGCTCAGGCACCGCCATCTGACCGGCCTAAGATAAGAATGTTTAAAAAAAGACGTGCATTGAGGAAGTTTAATATTCAAAACAGAAGAGACACATTCCAGATGAAAACAACTTACATTCTGAACGTTTCCTACGTCCGCCGATTCCTCTACGCCGTATCGATCGATTGAAAAATCGATCAGCTGACCGTTGAGCAGTACCTGGAGCGAGATGGTGATCGGAGCCACCGGTGGTGCAGTCTCAACGTCTGAAGAACCAGATCCGAAGGCATAGCTGTTCGATGGTGTTGGGTCGAATTTCTGAAAAAAGAATTGACCAATTTTTCATTTTTAATAGACTTCTAGGAAAAGGCCTAAAAAGGACAAAACGAGCCCCAACAATTTGAACAAAAGGGGTGAAATTTTATATTTTGTTAATTTTTCTGTATCACAATTTTGATTTTCAATCTATTGATATTTTGAATTCAATTTTTTCGGGAAAATATTGCAAAATTTAGCCATATTTCCTCAAAATAAACCAAAATTTGATTTTAAAAGTTTCCCTGGAGAATGAATTGTGAACTTTGGAACACCAAAATTAGCTCTAAAATTTCGAAAAAAACTGGGGAATTTCAACTTTCCGTATCTTTTAAGTTTGTCGGAATTTTTAAAAAATTTTATTACAGAAAACCACCAATAATTATAATCTTTTTTTTTTTAACCCGGGGTAATTTTTTTCGAGAAAATATCTTAACATTTAGTAATTTTTCCTCTTTTTAGGAGCTATTTGTTTTTTACTTTGATTGTTCCGTCAAAAACAATTTTAATTGTAAAGGCTTTTTTTTATGATTTTTCCAGAAAAACCGGTAAATGACACTATTACGGGAACAAAAAATTTGGAAAAAGGCACGTACTGAACATATCTGACGCAAAAATATCTTGTAGCGAAAACTACAATAATCCTTATCAAAAGGGTACTGTAGTGTCAAATTACGGGGCTCGATGTTCAGAAATTATTTTTTTGATCGAGCCCCGTAAATCGACACTACCAGTAGCCATTTGAAAAGTATTACTGACAATAGTTTTCGCTACGAGACCCTATTTTGCGCGTCGAAAAGTATGTTGTACAGTACGCAATTTCAGAATTTCGTGTTCCTGTAATAATAAAGATCTCCTGGCCACGACAAAGCGAAAAATTTTTATCGATTTTTCAGCAATTTTTCTCTTGTTTTCATAAAAATTGGGCAAAAACCGGAGGAAAAAAGTGACCAATTAATAAAAATCCCATGGCAACGAAAGGTGTTTGAAGCTACAGTACTCTTTAAAGAAGTGCACCTTCTTGGATTAACAAAATTTTGTCGTGGCGAGACGCTGGCATTTTTCCGGCGGAAAAGTCGCAAAATTAGCGATTTTGGGAATTTTTCGCGAGACAGCTGCAAACTCGACATGCGAGTTTATCCGTGCAGATGGCCAAAAGCCCTCCGTCGATCATATGACGAAGATTCCCTGGTGTTGCGAGCCCGACATTATGCTTCTGAACTATGAGATTGCCCGACTGTGGCACAAGACATTGCCCCACGAAGAGCATCGTGGATTTGGTGAGCTTCTCGAAGTCGCACGGCTTTACGAATCTGATCTTCGGAATTGAGTGGAGAGATGGTCCCGCCTCCAAGGACCTTACTCCCGATGCGCGGATAGATTGCGAAATCGATGAGCTGCCCGTTGAGCAGCACATCTTCGAGCGAAATGAAAATCGGAGCCACTGGTGGTGGGGTCTCATCGTAACGGATGAAATCCCGATGTTGAATCGGATAAAGCTGTCCGAGTCGGAGGAGGGGGTGTTGCTTCGTGGCGGTAGGGGAGAAGTAGCTTGACCGGCGGCTTTGGATTCTGGAAAATTTTAAAAAACTTGTTTATTATATTTTTATTTAAATCAGAATTTTTTATGCATTTATATTTTACCTTGTTCTTGTGAGTTTTTTTCGACAAAAGCGAGAAATCTGGGTCTAAATCGAACGACGCGCCCAGCATGTAGTACGAATCCGTTTTTACGATTCGGAGTCATTTAGACAGAAAAATGCATGAATATAGGTTAGCAGACGCTGAAAAATTGCGAATTTGGATTTTTTAACGGAAAAACGAGTGAAAATGGGACAAAAACATGTAAATTTTTTCAACGAAAATCGCGAAATTACCGCGTATCGATTCAAAATTGAATTTTTCGCTGTGGCCCGGGTTACGGTGATTTTTAAAGGCCCATGGTTGTTTTGAGACTGGTGAGGTATTGACGCGTAATTTAGATCTAAATTATTGAATATTTTTTTCTTTTTACATTGAAGAAAAAAATGATTAAAATTCGATCATTTTTTTGGGAAACTTAAGCACAATTTTCACAAAAATGAAATCACTCGCCAAAATTCAAAAATGAAGAGTTTCGTGGTGCGCCGGGTTACGGTGGATCTTAAGCATGGCTGTTTTGTATTAGGTCTCACCACGAAACTTGGAGTTTTTGATAGTTTACTTCCTATTATTTACTGTTTTAATTTTCGCTCGATTTTCACACATTTTCACTCATATTCACTCAATTTTTTGCATAAAAAATGATTCAATGGACATTGTTATGACGTATATGAGCAGCCGTTAATCTCTGCGCCTGTAAGCTTTTAGTAAGCTCCAATTTTTCTTATTCTGGCCTCAAATTATTTTTTTGATTTCCAGCTCAACGTTCACATTTTTCGCAAGCATCGCAGAGGAATGCAAACTTCTAGCTTCGGGCTCCAACGCTCGAGAATCCAGCAGGCCGCGGGGCTATCGGAGAAGATCACGGCAAGACATACCGCCAATTTCAGTAGGTAGTGTTCTTTTTTTACCCAACTACTTTTTTTCTATTTTCCAGCGTCTCCCACATTTCATCGATGGTCTTCAACAGAGAAATGGATGGCATCGTGAGAAATCGGCTCGACTCGGACATGTGATTTTGCTCGATGACACCAGGCGCCGCAATCCACAGTTGAAATCGATCGCGCTCCGCTATCTCCGCTACGATCACAGCGATCATAGAGCGTTGGCAAGGAAATCGCATCATCTCCTCCGACTTATATCAAAGAGGAAATTATGGATGATGAGCTCGACGAGGTGAAGGAAGAAGTGTGTGTTTCCGTTGGAGAAGCCGACTTGCCCACGCCAAAAATTGAACTGAACGTGGACCATCCGGAAAAGGACCTGATCATCAGCATTTCCGTGTATCTCGGCTACACCCGTACCCTTCAATACCACGAGATTGGTCTCGGACGTTTGATGAAGGTCAGGGATCGGCTCGAGCTCACCGGAGATCACACGCTTCGCGATCAGAGAAAACGCGTTCTCGTGCCCCATCGATTTCTCGTTTTCCGACGATTTTAGCGAATCTAGAAAGCCGTCGTTCAAGGATATGGCGAAAAATAAATGGCCGTCGTCGATGGTCTGCATTCTGACACGCTTTATATCGACTCGAACACCTGGCGACAAGTTTGTGGATCCGTCGATGTGAGCAAGGGTGCCGGCTAAAAGTTTTTCAGTGTTTTTTGAGCGAAAAGGAACAATTTTTTTCCCGCTTGAAAATTATTGATTTTCCGTTCTTCAGTAAAAATCCTGACTTTTGACGCCGCAAAATCGTGAAAAAACAAAAACTGAAAATTAAGGCACCGGATTTTCGGCCGTTGATAAAAAAACCGAATTTTTAGGTTTTTTCTTTTCAGAAATATATTATTTTTTGCTTGTTTCAACAAAAAAAACCCAAATTTACAGCACAATCCGAAGTTGGGCCAAAAAGTGACTACATCGGTCCGATGCACGTGCAGATGTCGGTGACGAGGATATGCGGGCGATCTCACTTGTCGGCTCGGTGCCATACGTCTACATTCATCAAGGCGTCTGCGAGCACCTCATCGTCTTCATTACTTGTGCCTGAGGTACGGAAATTCTGGAAAAATCGAAAATCGTTTTGATTTAAAAAAACGCAGATCTTTATGTGTTCTTTTTACTAAAGATTTACAAATTGTTTATGATAAAACCACTATAAAATAAGTTTTAATGATTTAATCACAATTTATATTTTCCGATTATCAATATTTTTTTTTTTCAAATAAAATACCCCGAAAAATATATATTTTCTATTTTTTCTATTTTTTGAGTACAGAGATGTATCCCCAAACGTTTCCACGCCGCATCGTCGAACGGAATTCAGAAGAATTGTGTGACACGTGCAAGGAGGCATCGGCGCAGTGGGTAGTAGCATTTAGAAATTCGGACTTTTTTGTGAAACCCCCGAATAATCTAGTTTCCGCATTATCGGAGTTCGAATTTTCGCACAAAAAATCCAAAGAGAATCTATTAAGGCAAAAATCTCAATTGATTCCAATTTATTCAGCTGGATGATAACACGACAATCTGCTTCACAACTCGCCAGGCTATCTGTTCGGCTCTTCGTGCTAAAAGGAGTTCTGTTTCGACGTGAACGGCAAAAAAGTACTGTGTCAATTTAAGGCCGTACCGTATTGCGAAAGGACATTGGCGACGGACGTTGCCAGTTCTTAGCTCGATCTTTAGAGAACGAATTTAAAAATCTGTCATTTTTTGTTGGTTTTTTTTAAATGTTTTTCCATTTGATTGTTTAATTACGATTTTTGGCCTGTAATTTGTTGAAATTTCAAATTTCTTCATTTTTTTAAATAAAATTTTTGTTTGCTAAAAAACTTATCAATAAACGGAATTCGAAGATGAGGCAAGTAGGGGGAAACGGATGAAGCGGGAAAATGATTATTTACAGAATAGAGCGCGCGCCAGAGGTTTCTCGGGGGAGCCCCGACGCGGGTTGCCGAGCTTGGCTCATCTGTCGGAAAATTAGGTTAAATGGGAGAGAGGTAACCTAGAAAATGAGAGAAATTCGGAAGAAGCTATTTTGATCAAATTGAATCCCAAATCGAAATGTTGAATTTGAAAAATAAATTTATTTTATTGATTTTTTGCAAAATCGATTCTATGATTATTGATTAAAAATCCCACTAGAATCAATAAATCTGGAAAAATCAAAAAAATCGATTTTTTATAATCATGAAATTCAATTTTTAAAGAATCCAAAAAAGTCGATATTTAAGAAATTGATAAAAAATCGATAAATCAATGGAGAGCTCGTCTCGTCGATTTGTGTCTTTGTGATTCCGGCTGCTTTTGAGTCTAGGTAACGTTGTTCCGTAAGTCTGGAAATTTTTTTGGGACGCAATGAGCACGCACAAAATGGACGGTGGCAGAAATTTAATAATTTTAAAAAATTTTCTGGATAAAAAAATCGATTTTTGCACTTCGCTTTTCTAGTGAAGAAAATTTAAAAAAAATAGCATTCAAAAGCTTGTTCAGGGTCTCGTCACGAAAAACTCACAAATGTTATCACGTTATGCGGAGCGTCGTCGAATTCCGGTGTGTTGCTATGGATCGTGTCGTTCCATGCTCAGCTTCATCGACTGACGTCGCCGTTTTCGCTAGTGGTGATCTGAGCGAGATTTATTGATTATGTCTTTAAAGACGCATGGCCTAGATAACACAACACTTCGCCCACGAACTTGATTGGTGGCCGAGTCTTCTAGGCCATGCTGCGGCTTTTAAAGGCACATAACATGATAATGACAAGATCGCCAACGGCCTAAAATGATGACCAATGCTAGACGGTTGAGGCATTACAATCAGCTGATCAGCGATGATAGGCCAGGAATATGACGAACTTTGCGTCGAAATAGAATCGATGTACTCTTGTCACGTCATTCCTGGAAATTATTGATTTTTTAGGAAAAAATCAATAATACAGTCAACAGTAACCCTCAACGAATCAATCTTGTAATCCGGTGAAATCATAGAGTAATTGCGTGAAAATGCGGCTTCGAACCTGAAATGATAAAAACATTCATCAATTATCGATTTTCTTGAAAGTTTTTATTTTGAAAGTTTTTACGCCGAAAATCGCGATTGATACATTAACTTGATAGATTTCCCCCCGTCGGAAAACCTATGAATCAATGAAAAAGTTAATATCTACATTTTTTCGAAGAATTGAACTAAAGTCGATTATCCAGCAGAATATCGATTTTACTAATCATTTGAAAAATTATCATTTAGACGATTCCTACGGAAGCCCAGAACAAATCAAAAATCGATAAAATTGACTATCGATATTATTCTAATTTTACTTTTTTCGATAAAAGTCGATATCGTTGATAATCGATTTTTTAGAGTTCTCCTCAAAAAATGGTAATAAAATATTTCTACGAACTCACACATTAACAGCCATTTGAGCATCACCAGGTGATTTTTTGCAGGTTCTTCGGCTCCGACAACCACTGATCCTTTCAGTGACTTGATTTCAACATTCACTCGTCTCCTGAAATGGAATTGATGAATTCTCTGATCTGGAAAAAAATACAATAATTGTTTAAAATTGATTTTTTTCAGATCATTTTTAAAATAACTAGTCTAAATCTATATTGAAGTCTAACTCAGCAAAATTACCACAGGCAAAGGATACGATTAGGCTTAGGCTAAGGCTTAGGCTTAACAGGCTTAAGCTTAGGCACACGCGAGATGAAAACAAAAGAGTTAGTGAAAACAAGAAAACTTTTATAAAAAAGAAAAAAAAAAAAAAAAAAGTGCAACACGTCGCCAAGCAATTCTAAATAGAACAGGTTCAAATACTATCTGTGACTCAAAAATCAGTTTAATATCGAATTTTTCCCACATGTCAATAATCCATTATCCATTCACCTTTGACTCGCTGGCACGCACCAAATCTATTTCTCGGTACCAGGGCCACTCTGAATATCGTTGAACTCCTCTACAAATTTCCAGTTAAATAATAGTAAAACTATTGGTGTTCGAATGGATTTAGCCCGAAGGAATACTTTCGATGTTTTGAAGTGCCACCGGCACAGTTGAAATATCTTCAAAAGTCGTGGATTCCTCTGATGAGGTGGAGGTGTTCGGAGGAGGTAGTGACGTCAGTGGAGAGGGTTTGGCTCGGGTTTCGGCCATGGTGGTGTCCATTGTGGTTTCCATAGTTTTTGTAGTTTCCTTGAAGTTCATTCTGAGGATGAAATATTTGTGCGAAGTTTTGCATTTGTTTTTTCCTGCAATATCTGAAGACTTCCGAACCAGCAAAACTCACTAGGTAGTGTTTTAACTATACGGTGCGTACAATCAAGTAAAAGTGTCATGCGAAAGCTGGCAAGGCTTTAAGAATCTGTAATTTGTTCCGGCGGAAGACCTCTGTTGAGTCTGGAAATTTTCATCTGAAAGTACTGAAATCTGCATTTCCTATGGATAACAGTTTTGTGTCTCTGGCGCCTACAGAAGTCGCACCACAATGGTGGAAGGGCGAAAACATCGCTTCGAAGCTGTTAACCATAGGAAATGCAGATTTCAGTACGTGAATTTTCGTCTCAGCGGGGATGAAAATTTACAGTCTCTGACAGAGGTCTCCCGGCGGAACAAATTACAGATTCTGGAAGCCTAAGATGCCAGCCTTGCTATCGCATGAACGATTTACTTTTACACGAGCACCGTAGAGTTAACACTCCCTAGTCAGATATGTGCTCTACACTTTTAAATTTTGAAATCAATTTCAACTTGAATATAAAATTAAGAGATTTTTGAATTTACTAGGCCACCTCGAAAATTTCCAGGCCACGGCAGGTTGGTAAGGTGAAGCTGCAGACCCCATAAACCTGTGATAAGTGAACGCTTGCAAATTTTTTAAAATCAAACATTTGTGAAGAATCTGAATATTATCAGAACAAAAAATAATTTCGACAAATAGTAATAAATTTTTTTATCAATATAATTTTTAACTAGTTCCCAAAAAACTCAAAAAAAAACTCACCGAGACAGTCGTAGTGCTCTCATCTGCCTCGTAGTTTTCCGGGTATTCGACAAAATATTTGACTCTTCCTCAGACATTTTCAGAATTGGGAATGGGGGGCTCTGACCTGTGCTCAATTAGCTTTCAATAACACTTCCATCCTGCTCAAAAAGTCCTTCCAGTGCACTTTGATCAAATGGGGTTTCTACCTACAGCTTCTGATGGGTCGCTTACTGGTTGGATGGTATGGGTTTTGGTCACCTCTGTCTAAAAATTGGCAATTTGGAAGAGAAAAACCGCCTCGGCCATTGGTGACGTCATACTTTTGCCACTTCTTCGACCAGCTATAACCCGCTTTTAGGAAGTTTTATTTTTGGTAAACCAAAGAGACCAATTTTAAAACTGTGTCTCCACGTTTACCGCCAACTTAAGGGCGTGTCCGTACAGGGTTTGACCGTTTTATCGGGCGTCTTAATAAATCATTTTCAAGTTTTCAGTTTCGTGGAAAATTAACATCGGAAATTGAGTCATCAGGTATGACGTCCGCTGCCGCGCGGCTTCCCATCACGTCACTCCATGCGCTCCCCCGACGTCCCTCTAAGACGTCACCACCTCTCACCTGGGTGTGTCATCTCCTTCTCAAAACTCGTCTATCAGTGACCTCGTCCACCCAGTCAATCGGAAGGGAGCTGAACGTAATCACCCCGCCCACAAGGGAGTGGTTGGCATCATTTCAGTTATTTTCAGCGCCGAGAGTTTTCTCAGTGGTCATCCTGATCCTCCATACTATCATCTTCGATTCTTGTGTGTGTTAAAGTTCTGAACATACCGCCGTCAAACGGAGTTATTGGCTCTAGGAGAAGACCGGACGTTTTCTGGTTGGGTTCACTCCTAGGGAGGTGTGGTTCGGCGAGAGATTTTTCGATCATTTCTGTACTTGTCTCGAGGTCTATCCGATATGAAAGTTATGACACATATTTTTGGTGGCCTGGGACTAGGCCTCCTGTCAGCCTAGAAATCTCAAACCTCGGCCTCCAGCCCTCACTAGCTGACCTAGATTTGGTAAATTACTAAACATCGGCAAGACCTCTTTTCGACTACTCCCTTACAAATTTAACAGTTTTTCATCACACAATTTTCCGATGCTTAACACTCATCATTTCTTCATTCGGAACAGCCAACCATATCATCATTATCAGGCATTACGGTGTCGTTGTGTCTTTTGCCAGCTGTTTGTCGAACACTTCTTCTGAATTTTCGTGTTGCGCGAAGGAAAAAAAGTTAAATTACATTTTGTCTAGGCCACCAGTTTTTGCATTTAACTTTGGCCTAGAAAATGAAATGAGAAGCTAGACCATGTGGGTTTATTGCGAGGAACGCGCAAGCTTACATATCCCACGAAAACTTTTATAAGCGTCTAGTAAAGTAGAAACCTCGGACCAAGTTTTGCACTGTGACCTAAACAATTTTGGTAAAATAGCAGCAAAATTTCCATGATGGCCTCAGGAAAACTAGGCCAATAAGGTTTCTTCCGGTACCTATCCGTTTTGTAAACCTAGGTCACCAGTTACTAGGACAAGAAAAAGCTAAAAACCAACATTTCAGATTGGTCTGCAAAAGGGCAAAATATAAGCCACTAGGAATGTTTGCATGGTGGTAAAATATCGTTGGACGTGAACCAGAAGTTTATCGGTCATCAACTTACGTGTCGTTGAAAATGCAATGAATAGATAAAACAAATGGTAACACTGTGCATCGCTGAAATATTGCAAAAATTAATTTATATTTTGGAATATCAGAATCGGAGAGTTCATTTTTTTGGGTCAAGATAAAAAGAGTGAAATGGAGAAAATTTATATGATATATCAGGTCAAAATGACCTTCGGAAATTGGGAAGGAGAATAATCCAAATTAATTCGCGTGGAACTGGTTAAGATGATCGAAGATTGGAGCGAAAATTTTGACAGAAATTGCAACAATACTAATGCAAAAAGTTGTATAATTCTTTCAGTTTTCAGAAAATCGATAGCAAAAGTCTTTTTTTTTAAATAATTCAACTGAAATATTTTCGCTGCGAGACCTAAGGTTACAAATTGGATTAAAAATTTTATGTGCCCATTAAGAGTTTTTCTGGAAACTGAAGAAGTCGAAAAATCTATAATACCCTACTTAAATTTAAAGGCGCACGAATAATTGAATTTCCAGAAAAATAAAAAAAAACACACAAAATTTGATACTCCAAGTTTAGAGATGCATGGGTAATCAATGTGAATGAGAATTTTGTTAAATTTTTGAACTGCAATTTCAGATATTATGAGAAAGCACAAAATTCGAATAATGCGTATTGCGCAACATATTTTGCGCTCAAAACGGCTATCTCGTAGCGAAAACTACACGTATTTCTTTAAATAACTACTGTAACGCTCTGTGTAGATTTACGCGCATCAAAAAGTATTAAGATCATACATTGACCGACAAAATGTTAAAATTAGGCAAAAAATAAACGAATAATGAATTTCGTAAATCGAGCACGTAAATCGACACAAGCGCAGTGGTCATCAAGAAAAATCACTGTACTACGCGTTACGAGATATGTTGACGCGCATAATATGCTGCGACGCATTCTCAGAATTTTGTGCGCCCGTAATAGACCATTTGTAAAATGCTTAAAAACTTCAGATTTTATTGAAAAAAATTTCTATTTGAGCAAAATTTTTCGAAAAACAAATCTCGGAAATATATTTTTCCATCGAAAAAGTCTCGTAAGGTGTGCTTGACATAATCTTGGTAATGGCATATTTTGTAAACAAGGTTACAACAACCCCTTCCTTCAGCCCACCCGCCCGGGAAGCCTGGGCATGGCGCAAGTGCTGATGTTTTGTCTGTTGTTGCTTATGTATATGCTTATTATTTACACATTTGTGTGTGTGTGAGTGACTACACTGCACACCTCTTGAAACGGATTATCCGGACGTGGTCGAGCAACGGAGGGACGCCGAATTATGCACAATGCTATGTATTGTGATATGAATACTTCATTTCAATAACTTTATATATGTTAGCACACGATTTTTGAAAATTGGGGTTGTGGAAGAGATTTTCACACTGGCCTAAAGTTTTTGAGTTTACTTTAATACTTCTAAATCACGTGGTGTCGGGCGGTCTGCTGCAATACTATTTGATCTACAAAAAATGCGGGCATTTTTTCCCAGAAAAAACGTCCGCACGCTCTAAACCATAAAAAATCGAGATCTGCGTCTCAACTCCCGTATTTTTTGAAGATCAAAGCGAAATGTTTCTGCACTCCACGTGCTAAATGAATATGAACGTTATAAAAATTATCTCTGGAAATTTGAACAGAATTGCTCCCCCGGGTGGAGCGCGTTTGCCGCTTAGTAGCTGAGAGACTTAGCTGCGCCGTGAAGGGAGGGAAAAGTAAGGAAGTTATCAAAACCAACAGACGCACTTATGAAAAGGAACACAAGAAAGAAAGTGTTCTTTTTTCGATTTTTGTGATTTAGTTCGTGTGTGATAAAAGTTCAAATGGCTCGGTAGGACAATAGGAAGGAAAGTGGAATTTTATATTTCATCTTTTGTTAAAATTTACTTTTGTAGGTGTATGATTAGGTAGTGTTAATAGAAATCGGGACTCGCGGCTTTCATTTTTTTGTGGCCGAGTATAAAAATCTTCCCGTCAACCATACGTGTTAAAGGTAATCAATAGGATATCATATTGGTAAACTTTAACAGAAATCCTAAACCTAGGTTTTCCGAACTATGGAGCTCTGAAGTAGGCCCCTTTGGGAAACATAGGCCACCAACCTGAGAAAGGTAAGGTGAGGGCAGGGTGCATAAAATACAACTTTTTCTCTGAAGTTTTTAATTAAGCGAACAAGCCGATATAAATTTTTCAGTCATGGCCTGACTTGACATTGGTGGGCGGATTTTTTCGAAAAAACTCTCACGATTTAGAACATGAACTTGGCAAAACTTCAAACAAATCCTAGAGATAGGTTTTGAATTATGAAGCTTTGAAACTTCTAGACAGGGGCGTTGAAAAAGCTACCCCTTCCACTGTCATAAACTTATAACAATTCACAATTCGGCAAACAAAAGTAGAGATTTCTTTCATATGTAGAATTAGCTCAATTTTTCAATCCATTGCACGGCTAGATTTGAACTCATAATTTGAAATTTTTCGGCCACGCAATAGAAAATTCTAGTTCATGGGAGTTGAAAGCTCGGACAGGAGCTAATTTTAAAAGCACAAGAGACAGGAAAACCAAAAATTTGTAAAGTCATAAAAATCAAGTTTTTTAGCTATGAGAAAAGGATTAGAATTTCAACACGGCCACCGATCGCCGGAGCGAAGATACAATCATTTTGGGCATAGACGTCGTTTGCGCATAATCTTTCTCACCAAAAAAAGATTGAAATCTTTTAATACGAAAAAAAGTTGGAAAAGAATTAGAAAAATGCTGAGGAGAAATTTTTTTTATGAAAGCTTAGGCTTACAATTTTAGGCTGCTATTTTTTCAGTGTTTTCCATGTGCAGAAAGGAAGAAACCGATCCCGACTTTCTATCACACACTGAGGGGAATTTCACCCCCCCCCCCCCCCTCAATTCCCGCTACTACTTTTACTGTACACTCTCACCGAAAAGATATTGTGTCATCACGCATCATGCCAAAAACGCAATCGTACAACCAAGGAGAAATAATTGATGAGAAAACGCAAGTGTTTCTTCATACACTACATAGTGTTCAACACCCCTGCATGATATGGCCGCGTGAAAACTCTTCCACGGCCAGGAGTAAAAGAAAGTTTTACGGAACAATCTAGCAAATTTTCATAACAATCGGTTGGGAAACTAGTTACAGGGGTTTGAATTTTCTAGGTGGGCCATGCGGAAAAAAACTAGGTTCGGCCACGTTTTGGTTAGGGAGGCGGTGTCTTCAAAATAAATCTATATACACCTCGCACCTAATGATCCGCCCATGAATCTTCATACAGGGGGAAACAATGAGGTATAATCTTAGGTGGCCGAACTTTTGGTTCGTGAAGAAATCTCGGCCAAGACCGCGAAAAACGTATTCTTTTTTTGAATCGTTAATTGAAAAACTGAAAACAAGAAGTTTCTAGGCCATGTTGCTTAACCTTGGGGCAGTAAATATTTTTCCTAAGCCATTAAATTACTACACTGAAAAGGCCCTAGGCGCCCACGGCTTCAAAACATAGGCCACCAAAAGCTGAAAGAGGGTTAGGACCGGAGCCTGCTATTATGAAGCAAAGTGTTTGTGGAATAAAAAGTTTCAGAATTTCCACCAGTTTTTACAAACTATTTTTTCTCTGGAAATTATAAACCTGAAATTTCGAAAGCGGACGAGATCGTCAAAGAAAAATAAGACGAGCTTGCAATTCGGAGGGCCAAAAAATGAGAAGAATTTGAGAACAAGAAGAGGGTATGACGTTGACCTATACGCGTATTGTCTTTTTTGTTTTCCTTCTTCAGAATGTGAAAGAGAAACTGTCATAGCTAGTCGTAGTTCTTCGATCACCTAATCACGTTATTGCGCCCTTCGAGCACAGTTTTTTTTAGGAAATGTGTGAAAAATACACATTCTTTGCGCTAGGAAAAATTGTGGGAAAATTGAGGTTATTGAGGTCCCTTGCCACGACACCGTGGCCTAGGATACCGCCGTGCTCTTGAAATCTCGCTTGTAGCCTAGAAAGTTCCCATGGTGGCCTGGAGAAGTTTAGCGGGGCCTAAGACTTTTAATTGTGAGTGAGTTTTTTTGGCCTAAAATGCTATACGTGGTTAAAATTCCTCATTGTTGAAATTTTTAGCGCGGCTTAGGATTTTCTATAATGGCACTGGATTCTCGCCGTTACCTAGAATTCCGTAATGTGGCCTGAAACTGGAGTTTAAGGGTGAAAAGTTTAAGTATTTTCAATCGTTGCCTTGAGATTTTTTACAAGAATTCCTCATTGTGGCATTTTCTATTCTGGCCTAGAAGTTTGCATCGTGGCCTAGTAGAAATTTGCAGAGCTTGGTTTTGAAATTCGGTTTGTTACCTAGGGTGCTATATCGTAAATTCTTCCATCATAACGTATTTCACATTTTGACCTGAAAATTCTTTGCGTGGTCTAAGATTTCTCATTCTAGGATATTCTCGAAGTTAAAGACACTATTGTGAGAAAAAGTTCGTCATGGCCTAGAAATTGCTCCCGTGACCTAGGAAGTTTCAAATTTTTTCAAAAAAATTTCACCAGAAATTCATCAAAATTTTCAATTACGGAAAAAGAATCATTAATGATTAACCACTGCAACTTTTTTCGAACTAAGGACGAGGCAAAAAGATTAGTACACTAGGCCATGGCCGAGTTCCCGACAAATTTCAGCGGCCCACACGTTTATTTTGCTTTGTTTCTTGGTTTCTCTCGTTTTTCACCGATTTTTTCCGCATTTTTTCCTATCAAAACTAATAAATAAATTTTGGAGATGCTAAAACAATCAAATAAAATTGTGAGTTCAGTCGTGCTGGTCAAGTAGCGGTAAAAGTGGTCAATGTAATATGGATTACGGCAAAAAAAAACCCAAACTTTTTCCCTAACATGATACATATGCTGTTTAGAAACGGGAAAAATCGTGTGAAAACAAGAAAACAAAGCAAGAACTGTCGTAATAATGCGGTGTATTGTGTGCAGACACCGATTTTTCGCATTTTTTCTCGGCCCTCGAATTCGTAAAAAGTAGCAGTGTTAACGGCGGTAAGAGCTATACCTACAAAAGGTGGCCACAAAAAAAATAGAAGAAAGGATCTAAAAAGAGCAGGGAAGAGTTTCTCAATTGGCCTCGTTATAGAAAATAAATACAATAAATATGTTTTTTGGAGAATTAAAAAAACAAAAAAGTTCAAGAAAAATTTAGAATATTTTTTCAGTTTTTTTCCTGATATTCATTAAAATAGAATAAATGGAAGTTCCACAAAAAGCAGGAAGGTGAGCTAAATACTTTAATACACCTCCTCCTCTCAATTCTTCAGAAAAAAGAATAGGCTTCTCCTCCTCCCACCTCCCAGACACTTATCAACACTTTACCCCATTCCTCCCGGCCCCCGGCTTTTTCAGATTTTTCAACCTTGAAAATGACGAACATTTCAGATAAATGTTTCTGAGTGTTATCTGAAATCAGGGTGTTGAAGCAGCCCCAACCGCGTGTAGCGTGGCCTAGAAATCCGAAAAGTCTTTTTGATCTTCCGCTTTCTCCAACTAGCAAGTTAGGTCTTAAGTCAAATGGACTCTCCATGACCAAGTTATGACGATTTGTAGTTTCTAGGCCATGGAGTGCTCTCCGAGGGGCTGAGACTTTGACCCCCTGACGCCGGGATTTGTAGGACTTTTCACCTGTTTATGCTACTGTAAGCGAACTATATACGTTCTTCACGCCAAGATATCCGTCAAATTGTGACCACCGTTTCAGCACTTTAAAATTTCTACTTGCATTCGCCACGCTGTCGCCATAATGGAATATTTTTCTCACGAGGAATAGCATAAATTAAAAAAAAAACAGTCTTCAACTGGCCGATATTTGGAAAACAAATCCTAACGAAAATGTTGCAGAATTATTAAAAGCTTAATTAAAACAAACCACAAAAGTTACCTAAAATGAAATAAAGAAATAGGCGTACAGAATTATAAAACCTATAAGCATGGGTGGGTCACAGGTAAAGATTATGGAAAGTTTTTGAGGGAACGTAGGAAGATATTACTGTAAAGTTATGGGGGAGAAGCGAGCGGCTGAAATCAAAATGGACTCGGTTGAACGCGTCGATTTGAATCACGGAGAATCGTTTGTAGGGCTTCCAGATAAAAAATGTTCTGCCTGCATTGTTGGGCCAAAACACATGAATCATTCAAAAACAAATTGGCATAAGAAAATACATACTTCTCCAAAAAAAATCAAAAAATAGGCGATAGGTTTTTAGATACAGTATAATTTGAGCAGTTAAACTATTCACCCCCTACAACTGGCGGGCCCGCAGGGCCTTCTAGTCAGGCAAAAAATATACGGCCCACACTCACAGCAATAAGAAAAGTTAGGGGATAGTAGAGACTTTTACTCAAAAGGAAGGCCGCATTACACAAATGTTTAAACATTAACCTCAAAGCGGGAAATTTTTTTTAATGCGTACTGAAGAAATCGACGTAATGAAACTCAATTCCTACCACCCCGTAAACCTCCTTCACGTCCAAAGTAGTCCATAGTGACATGAATCCTTCCGACCAACGTAAAGATTGGAGATGACGAAATTTAAGATGTACCAGTATACTGGTACATACAATTTCTACGTCACAACATCTTGACAGTCTTTTTCCCTCAAAGAGATGAGCCCCTTGTGAGATACAAACGCTGCGTCCTATCGTGGGTTCAGTTGTGGTGAAAAATTGTAAAAACTGTAAGTACCAACTATGCTGATATGCCAACTACCAACCAGCATAATTGGTGCCAAGAGACTTTTGCCACCTCGAATCTGTATGACGTTGGTCGGAAGGCCTTTTGTCACTATTGATTAGTGGGAGGCTTACGGGCTTGAAACAATCGTTTATTAAAAGACGTATCTTATTCAGTACGCAATATTGGTTCCCAGCAGTCATTTTTTCCGCTTACGTAGATCTTTAAAAAATGCTGGAGAAGATATGCAGTGTTCTCAACTAATTTCGCAGAGTTAAGAACGTGCTGACGTCACTTAATTTTTTTGAGCAAAAAATTCCGGCATTTTTTGTAGTTCATTCATATCCGTAACCCTTGGACAGCCTGGCACCACGTGTAAGAGATGTACACGATGCCTTGCCTCTATGTTTGCCCGGGAGTGTGGGAAAAGTTGTAAGCTGTAGAAAAATGGACAACAAGCATGTTGTCAGTTATCGCAGCATTTTATAAGTCAATGACAAGTACAACAGAGAGCTTAACTGAAAAGTTTGAATGGAAAACTTTCAAAAAACAGCGAAGGTTCTTTGATGGATGCAAGGGCAGAAAGTGACTAATGCATGTGTTTGAACTTAAAACAAATTGGCTAGTCTTTGACTGAAACTACCTTTTATAAAAATGAAGAAAATGAACCATTACGAAAATGTTAAACTGAAAGTTGGTGTGTTTTTATTGTCGTTCTGTAATTAAATTCCTTGAATGATCGCTCTTCTGCAAAGAACAACCACAAAAAATAATTCGATATACTCAAGTATCGACGACTTTGATTGGAATGCAAACATATAACAAATTAAAATAAAAATTCTACGGTCATTATATTTTAGGAAAATTATTGGAAATTTTTTAGGCTTCTGAAGTGTCAAAAACTTTCAGAACTAGTAAACACGCAACATTTTATATGTAATAAAACACTCAGCGAGTTTAAACTTTGCAAGACATTTTGGGACATAATTTTGGCCTTTTAAGAACAATTAATTGGAAAATAAAATAGTTAGAATGATCGTTCTTCAAACAACCTGACATAACAACAACACACCTACTCTGTTATAATAAGAAAATGTAACTACTCATCCGAGTTGTCAACCTGCAAGACCGCATAAGTTTATACCACTCGAACAAAAAACAGTCTTCGTTCTCTTTCTTGAAAAGAGACATAATTGAAATGAACTAATCACCGCTGCCCGGGATGGAAAAAAGAAAAGAAAGTCCTATCATCCTTTGACCTTGTTATTTTTGCAAATCATGTCTGACTAATACACTTTGTGTTCGATACATATTTCACTGAATCAGGCGTGGGCGACAACCAATTTTTACGGCAAATCGGCACATTGCTGGAAAATTTCCGGCCTTGCAAATCGGCAACAAAAATGTTTGAAAATCGGAGAGTAAAAAGGTGGAAGTCACCAGCAGTGAAGTACCTACTTTATTTCACATGAAATTAAAGTATACACCATCTCTCTTTTTTTTCCTTATTTAACAGTCTTTGGTCTGTGTTCTGACTGTTGAGAGATCAGGGATCATGGACGAGTTGTTTTTGGGAAAACAAATTCTTTTTGGACTCCTTTAGTTTAGTAAACGAAAAATTTAAATTTATAAGCATATAAATATTTTTGTGGGAATTTGAAAAAAAAAGAAATTAAAGAAGAAACAAAACTAGTGTTCAACATGTATAACTGGGAGAAAGAAAGAAGTGCGCTTCCAATTTTCAGAACTTTTGCAAAATTGTAGAAAGTAGTTCATGCTTCAGATCAAAGTTGTAGGAAAAAATGTGGCCATCCGAAAGAGAAAATTCTGCCACGACCAAAACTCAGCACTAGACTGAAATTTCAGTAGTAGCTGACAAAACCATCCAAAAGATATTGTAGGTTACAATATCTACCGTGAAAATTAGAAAACTCGAATCAGATATCCGTGGGCAAAGCGAAAAAAAAATTAGAGTTTTCTAGGCCATTCGAAAAACTCGTCCACGTGTGCATGAACTGTCAAGTCGCCAACGTAAAAGGTGTGAAACCCTTGAGAGCACTGAGAAAGAAATGAGATAAAGTAGCAGGTGAGACCTCCTGTCTCTGAGAAGCAACGTTCGAAATTCTTTTCCCTACATTCCATCTATTATCATTATTATTATTATTATTAGGACGGTATGGAGCCAGGAACTGGTTGTTTATACTGACCACTGCCTCTTCCCGATTAGGATTATGTGATTCGGATTTCGGGAATTGAGAATGGCAGATGGTTTATGTAATTTAATCATATTCCTCAAAAAGTTAAGAAACAAAAGAAGGAAGATATAGATCGCTGAATCAGTGAGGAGCAATAACATAGCATATATGGAATTGGTAAGACTGGTTTACAGTTACAAGGGAAAAAAATTTGAAAGTATTCGTCATCTTATCTAGGTAGTTGAGACACTTGATTACTCAGTTGAATGAACAAATGGATGAATACAAGTTCGTATGCTGAAAGCATCTCTAATAACATAGTATTGGTTTTAAAGGTGGAGTACGGTCGTGGTTTTAACCTAACTGACAAAACAGTCCCAATATACCGTAACTGTTAAAGATTTATATAAATTTATTCTGGCAAATTGTTTATAATTTGTAAAAAAGTTTTTTTTTTAATTTAAAAATTTATTAATTTCCAAAAAAATAGTTGATTCAAAACTAAAAACCCAAATTTTCTGAAACTTTACCAGTTTTACTTATTGTCTTAACAATAATATACACATATTAACGAAATACTCACCGTTCAAAATTTGACTTCTTGAAATCTCCAGTTTTAACGGCAATTAGAGAATTTGTTCAAAATTCCAATCTCACACCGAACGTTTTTCTTCGTTTTTCATTTTAAAACAGTTCTATCCAGTTTAAAAATTTACCAAATAAAAATGTGTCTATACCTCTCACCACCAATCCCGTGCATGTGTTCATGTTTACCTTGAAAAGTGTGTATTACTATATAATACAGAACAAATATCAAATGGCCACTCTCCTCCAGCAGAAGGAATGCTTAGGTGTACGAACACTGCAACACTTCCTATTACTCTTACTAGTTTTGCGCAATTTTCTGGTCCTTTTATGTAATTTTTTGTCTGGAACAGGAAGTTTTGTGTTGTTTGGAAAATTAATGTTCTACGTGAGATTTTTAAGTGATTTTTTGAATGGAATTTCAATTCATTATTTCATTGCATTTGTCTTTTTTTCTCACCGAAATCCACTTTTTTTATAGAAACAATTTTTTTTTCTACATTTTTTCCGATTTTTGTCATTCAATTTTTCAACTTCTCCATTTTTTCTACAAAACACCGACAACTACAAAATACCTAAAAATTGCAAATTAAAACAAATTTAAACATTTTTGCCGCAAAAAGTTGTTTTTTTTTACAGAACATCTAAAACTCCCTTAAAAATATGCTAAGTCATTTTTCTGAGAAGCACTTAATTTTTCGATAATATTATTTTTGCTATATTAAATCCAGAGAAATTAGAAAAAAAGAACGGTTTTCTACAGTACCTACCCTCCCTCTCCCTCTTAAAATCATTCCTACAGTGTTCTTACAGTAGTCTTACCTGCACCACTCCTACACTGCTCTTACAGTGATCCGATAATACTTTTATATAACCACACACTCCATACCTATACCTTACACTACAGTACCCCCGCCGTACCCGAGGCCCCCCCCCCCCCAGTACCCTTGCCACTTCAGTATCCTACATTATCTACAGTTCTCCTACACTACCTCTACAGTACTCCTACAGTACCATTACCAACGAGAAATTTGAATAGAAGTGAAATTATGAACATTTTTTCCTGTATACCAATTTTTAAAGTTTTAGTTTTGTAGTTGTTTTTGACAACGTAATCAATTTCAAAGTATTTTTCTTTAAACAATCGTACTTTTTGCGTACCGGTGGTTCTTGCACGGGGATTTTGGAATAAAAGTGCCCTCCGAAAAAAGCGAGTGCGGAATTAAAAGCACAAAAACCGGATAGAATGAGGAGGTGCGAACGATGGAATGAAAAAAGAAGCAGAAATTAGATTTGGTTCAGAGAATTCTGTTTCTTTTATTTGTCGAGATTTTGGTTTTGGAGTCTTGGCAAAATGTTTTATTTTTGTCCAAGAGTCCTAACGTTTTTTTCCACCAAAACTCCCAATTTCAAAGTTTGGAAATTTGATTCATCGATCTGCCAAAACTTCCGATTTAGAGAAATTAAATGTTCAGTTTCCCGTAACAGGGTTTCGTATCAAAACGAGTGTGAACCGCCTACCTATGTTTTTTAAAAATGATCATACTCTAATTTCCCTTCAAGCACTTTTTTTTTTGAATGACTATTTGAATATCCCAGAAAATTTTAAAAACGTCATGAGTTTTTTGAAAATTCAATTTTGCGTGTTCCTGTAAAAAACCATAGAAACTGTTGACCTATAACCTGCCCGACGTTCTTCCTGTCTGTTTATACCCCATCCGCTCTGCACTCCAGAGACCCCTCGTCCTAACTACACTGATTATTAAACTGTTACCCCGCCCCCCCCCGTTTACCCCTCATTTGTTTTTTATTCGGTAGTGCATCCCTTCCGTGTAACCTGACACTTTATTCAAGAATCCCGCATTTAGGAGGATCAGCAATTTTTCTGTTACTTAATTTTCCACACGGTAGGAATCGGAGACAAAAAGAAAACGTCATAGTTAAAAAATTTATGCGTTTAATTTTCAGTTGCTGAAAACTCAATTTTGTGGAACCGTGTTTTTCGATCTTTGTAAAACTGAATTTTTTTGAGGAAAATTTGGATTTTTGCTGGAAAGTCAATTTTTGTGAGAAATGGCGGGAAATTTAAATTTACTGAGAGAAATTTTAGCGGGAAATTAAATTTTTTGTTTGATAGTGAGAAAAATTCAATTATTTTTGTAATTTTTCATAATATCTCAAACTCAAAAAAGTCTGAAATTAACTCGAAAATATTGTCATTTGATATTTTGGCAATTCAAAAATTGCTTAAAGTAAATAACGGAACTCGTTTTTTTTCAAAAAACGAAAGGTATTAGTAACATTTCCGGTAACCAAGGTTACTCTTTCCCCATCAATCTCCCATAAGCATGCCAGAAACAAAAGAGTGAGAGAGAGAGATGCGTGTATGATTATTTGACAGTGCGCAACTGACACACATAAAACAGCTTACATCTTCTCTTTTTATTTCAACTGATTTTTTTACCTCCTTGTGTTCTCCGAGTCTCTCTGATTTATTCAGTTTCTCGATTTTCTTCCAAATTCATTCCCTTATATATTTTAATCTATGCGTAAAGTGGAGGAAGATTTCTTCTACGAATTTTGATCTTTTGCAAATTTCTCGGGTTTTTCAAATTATGGATTTTGAAAAAAAAAATTACTGAAATTTATTTTTTTCATGTCACAAAATGACTGTCTACCCTGAATTTTTCTATGGAATATAAAAAAAATTCTGAATTTTTTTTACTTGTTGATGTGTAAAACAAAAAATTAGAAAAATCAGATTTATCTGACGATTTTTTGAACTTTTTTTTAAAATCAAAATTAACTTCAAACAAGATTTTTTTCGGAATTTTGAAAAAAAATGTTGTTTTTTTGAGATTTTAGTACAACATTTTCGTAAAATCGAATTCATTTTTAATTTTTATTGTGCAAATGTTCTGACTGATTAACTATGAGAAAAATTTAAACAGTGTGAAGTTTGAACCCCCCCCCCCCCCCCCCCATTATTTGGACGGAGATACGAAATGTGAATTCTCAGAGAAGGAGGTGAACACTCTGATTGATGTGCATATTGCTCATTATCCATATTAGTTTGGGGCATATCGCACAGCGAGCATGACATGTACTTTTACCCATTTGCGTAGGCTCCGCCATTTCACGATTTTTTTTTTCCAATTTTTGAACTAGTACAAAAATTTCTGAAATTAATTTCTGCAATCTCACATTCCATTGTATTTGTTGCTTACTTCTATTGTTCCACAAAAGAAATTTTCGAATTTTCGTAATGTGTCTTTCAAATATACCATATCCACGCACATATGTCCCTTTTCCTGAATACTAATTTGGTGTCCAAGAGGAAATTTGTTTTGTCGAGATTACTCAGTTCCATTACGGAATATTTTAGTCTCTGAGAAAAATTCACTTCCTAAGTGTATAAGACTAAGTAAGTAAAACGATACTACAGTGTCAAGAATGGTTTGTTTTTTGTTACAGTCTTTACTATGTAGCTTTTGTTTTGTGTAGTTTTCCAACTTTTTTTTTGCCAAAATGAAGGCTGAGGATAAAAAAAAGTCAAAACACAGATTGGTTGCTGAGGCGGTATTATTGGTTTACTGTAGCATTACGGGGTTACTCTAGTTTGGCCCATGTTTGGTGTCGTTAGTAGTAACAACATTTCGCTCATTTGTTTTTTGATTTGGTAACTTCTGGTGACTAAACTTTTAATGTACCTAAATCTTCTGTAGCATTATTGATTTGTTGTTTTCTTCTTTTTAAGTTAAACATGCTCACATTAAATTGAAATTGAAATGGGTTGAAAATATTATTATCAACTTGAATACCAAAAATTTTGGACGGTATTTCAACAAAATTGATTTCAAGCCTCTTCGACCTTCGACACAACAAACGAATGCTAACTTTCCCAGGATTACCCAAAATAGTTCAACGGAATCCCGTTTTATCAATTTTTAGCACATACTTCTTCATAATCATGATTGTAATGATCGATCCGGTCTTCTATTATTAGATGAGAGAAGGCAAGAATATACATATGTGTCTTTTATATTAAATTAATTATATTTCGACACATTCTGCGCATATCACTACTGTACTAGAATTACATTTTGAGTAAAATGTAACCAGAAGAAACAGTTGTTTGCATTTATTGTAATAAACAGAATAGAACATGATGTTAGGAAAGTTATTAAAACTTGCAAAGTGACACAATTCATACCGATTTCTCTGCAATAGCTACTTAGTTCACTTAGTAGGCAGAGTTTTGATACTGATACGGATTCTTAACGGATTTTTAATTTAAATCACTATTGCTTTAATAACCTTTTAAGATTTTTTTGTTTCAGCGTGCAATTGTACTATTTTTTATTCTCTTTCCCCTAGAATTTTAATAAATAGAAAAATTTTGAATTATTTTACGTTATAATTCAATAGTAAAGAATCACACATCAAGCTGCCCCTATTCAGTTTCACATACTTTGCCTGATAAACATGACTCCATAGTAAAATGGACACTTTCATCTTATACAGACACCCGCCCCCCCTTGCTTCCCGATTAAATCCCAATAGTGTGGCAGCATTGTGTTTCATTGAATTTATTATCATTTGTCATACAGTACATGAAATTACAAAACAGGAGAATTCCTAGGTTAAACTTTTATACAATGAAGAAAAGTCTTCCCTAGAATCAATATTAAATTATCAAATGACTACGGTATTTACGTTTTTCAACGACGGTATTAGTTTTTATACTTACTAGTTATTAGTAGTTAGAACATTACATTTTTAAATGCAAGGTGATGCTGTCAAAATTTTTTTAGGGTAGACGAGAAATTGTCATAGTTTCCAGCACCATCACTGACAAGTCGGCCAAATTTCAAACTTTAATTTTGGAACGTCAGTTGGGCGGCCATAACTCTTTTTTTGAGACGTTTTCGGAAGAAGTTGAAATTTGGTATTTTCAGCATAGCGTTGTATCTTATTTAAAATGAGTATTCACTCCTTTTACCTGCTAGTCGGCAGCCTCGTTTTCTCCTATTTTTCACTAATGAGCACACACCACTATCATCAGTATTTTCACCACCTGTTTTCTAATAATAAACATTCCCCTCACTTTGTTTCCATATCGATGCATTTTATAGAAAATGTTCCCCCTTTCTTTCCAATTAGATTCACCCTCTGATTGCTCTTTCTTGGAGGGAATGTTCCACAATTCCCCATCATCTTATTACATATTTATGCAGATTTTATAGCATTTTAGTGCGCTAGATTTTTCATGGGATATTGCTATGCAATCACGCTCTAACTGGATAAAATTCTCAGTTTATATAATGTTAAACCCTACTGTGTGTAAAATTTACAAACATAGTTGAATACATTGAATAAGTATGAACATTTTTCGAGGGATCTATAGAAAATTGCCGGCTGTTCCTAAATAGGGCCCTTTCACTGGTCACCAAGTTCCTGTTCATGCAATTCAAAAGAAATGTTCAGCCCCTCAATAGTCGCCCGCACCACAAAATTGAAAAGCGATCACATAGTTTACTAGTCGAACGTTTGAATTGAACATATTTGGAGTATTTTAAAGAAATTTCAAGTCCACCAAAACATATGCCAAGGGCCACAAAAATTTCAATTTTCCGCCAATTTTTTTCTCACGAAAGTTGAATTTTCTCGAATTTCCGATAATATTCGATTTATTTGAAAGTTATTGAAGTTTATATTTTCTAAAACCACTTCCACAATAACAAATATTAATAGATATAATCCAAAATTTGAAATTCCCATGCAACACCTCAAAAAGTGGCTCGCTTAACTGAGTGCTGTCGCGGAGCACTACCCTTGCATTCTTTTCCCAACGGAGTCATGAACATACGAGCATTAAATGAGTAGACGACATGTGTATACATAGGACCCCCCACCACATGTTCCTTTTATGAGTAGACATGTCATACACACAATGTCTCTCCTTTCCGATTGGAAAATTAAAATCATATAGGAGCGGGGGGGGGGGGGTCTTGACATTTCAATTATTACCCCCCCCCCCCCCCCACATCCGTTACGTTGCATTTTGGTAGGCTTGGGGCCGAATAAGTCTCCCATGCAGGCGTCAAAACGTCTGCGGACCTACGCCTGCACGCCGATCGCGACAGCTGTACAGGAACCCGAAAAGTGGAACGCGGCTAAAGAACCATTCGCACTATGCGGTGTAAACACAAGGTTTTGATTTGTAGTCATAGTGCGTATATGATGCGGGACGCTGACAGGTAGGAGGCAAGCGTTCAACCGCGAATGCACACCATGGAAGCGCTAGAGCCTAGTTTTAGATGAGTTTCAGCATTTTTGATCTACAAGATTTTGAAAGTTTTACAAAAAGACCAAGATTTTTTGTAATTTATGAAGAGATTTTTCTACATTTCATAAACCAGCAGAGTTGTTTTTTTGGTAATTTATCATTAGCGCGTTCGCGTCATGAAAACAAAATGGCGGCCGAACTTTGACAGATGGCTGAATTTTTCGAATCGAACAAAAGTCCGTAGCTATAAAGCACAGGCCTACCTTGGTTTTTATTTGCTTTTAAATGATATAGTTTTCTAAAAAAAAGTCTATGGCCGAATTTTTAAATTATGAATAGGGGCTATTTCAAAAAAAATTTGAGGCCAACCTACTCTACTCAATTATAACTTGCCATGGCAGAACTTTTGAACAACTATTACAACGTTTTCAAAAAATTGCAAGTTAATTTTTTCGAATAAAGGTTAAATGTAGCCTAGTTTCTCAAAACAATAAGTGAATAAATATCGATGACCGAAGTTTATATTTGATAAAATAGTATTTGACCTAGAACTTTTAACTATTCTTCCAATGTCTGAAGTCTGGCTTCTGAGAAAAAGTTCGTGGCCTAAGTGTACCACGATGGTCTAGTTATCTCGATAGCCATAGCCTAGTTTTCTCAAAAAAATCTGGTGGGTTCCTGTATGTAGGCTTGTAGGTATTTAATTCTTATCTTCCAGGTATCTATTTCTACTTGTAACCAGGAGCAATAGTTTTGAATTCCCTCTCCCTATTCACGCTTCTCCCCTCACACTCGTTTTTGGTATTCTAATGTTCTCACGAAACTCCTCTTCCCAATCTACCCCCATTTCTTTTCCTCTTGGAGACCTGTCTCTCTCTCTTTGTATTGCTCTTTTACGTCTTCGAGTAGGCTTTTCCTTAAGGAACTTGTGTGTGTCTTGAATCATCATCGCGTTTACGCTCTCGTTCCAATTCCCTGTTGCTATTTTCTTGGAGACATTTGGAAAGTTTCAAAATTCCTACGTACACCTGCGAGGCCTCAAAATCTGGTTGTATATGGCATGACATTGAATTTCTAGTGCACACAATAGAATTTTCCGGGAAATTCAAATTTCGCGATCTGATAATGACTGAGGAAAGACTTTGGCGGAAATTCAAATTTTAAAAAAGTAGGCGGGAAATTCGAATTTCGAATTTTCTAACCTTTTTGGCCTTGGTTTCAAATGTTCTGAAAAATAATTTTGGAGCGAAATTCATATTTTCTCAGAAATATCTCAGAAAATTTGAAGTTTCTCCCACTAATATTCTTCTCAAAAAACAGTTACGTGACCTATTTATGTCCTATTTATTGGTCCATTTATTACGTGGCCTAGCGAAAAACATTTTTTCCCCTGCGATCATTTGAGATGGCGTAGAAAACGCAGATCCGTTAGGCCATCAGGTTTACGGGTTATAGTACAGCCTCTTGCAGGGGACAGGTTCAGAAAAACTACAAATTTAGTTAATTCCCTACCTACTCTTGCAAATCAATAACTAACCCAACTGTGTTTCAATCCGGGGAAATTTATTCTTAGAAAAAGTATATCTCCGCAAGTACATATCCCTCCTTCAAAATAATAATAATGGGAGGCTTCTGCTTCTCTTTTTTTAGACCAAAAACTTGTTGCACAGTGCCCTAATATGTACGGTCGTTGAGTTTTGTTGTTCAATAATATGTTGACCGTAATTCGCGCATCTGAAGAGGGGAGGTGTAAATGCTGTGTCTAAATGTTGCTGTCACCTCCAAGTGGTACAGGTGGCCTAATTTGGGAAAACTCTTCCACGACTATATTTCTCAAAAAATTACTCATAAAATTTGATTTTCTCACATATTTCTCAGAAATATTTGAATTCCCAAAATTGTTTAAAAAAATAGAATATCTTGTCAAAATTTTTATCAGATTTGAGTTCCACTAAAATTTTGCCGAGCGATTTTGTTTTCCAACTTAAAAGAGTTTTTTTTTAATTTGACAGTGAAAAGTTATCTCGGTCAGTATGCTTATACATTACAGGTGGCCTAGGTCGCATTATACAAGCCACAAATCTCCCAAAGGGGTATTGCCACACCTAATTGACACCTCCCCGGGGACCTTTGAGCACTAAGTATGGACACCCACCCCTCACCTATCAGCTTAATAGCTGCCTTTGACCGCTAAGGAGCATACCAGCCATATGTTTACTTAATTCTCTCACTCTCTCTCTCGGCTTCTAAATTGAATCTCCCCCAGTCACGCCTCTCGTTACGTGAGGAGTGTTCAACATGTTCCATTCCCTTCTCCGATAATCCGTGTTTTTGGTAGGCAGGAGCGTGTACTAGTAGAGGACATTTGTCGCTTCTTGGCCTTTCGCCTCCATTTTCCTTAATTTGTGACTTAGAAAATCGTAGAAAAAAGCATTAGTTTGTAGGACAACTTTTTATACCTCTGAAAAAAATGAAACTCGGCCACCGACTTTGTCTGTCACTTTTGTGTAGATATGATCACATGCTAAACTGTCGAACCGATGAGGTCAGGGTGGCTGAGTTTGCACTTTTGCGTGTTCTATACCATTTACAGAAGCTAGTCCCCCCGTCATTCTTCTTCCAGCAAAATGTTTTTTTTTGCCTCAATAGCGGTGTCTCATCAACAGCACAGCAGCCAGTTCATATTATTTGTTTTTTGTTTCGTCTTTCGTCTTTTCGGAAACGCTCTATTCTATGACAAGGTGACGTCATTGGACTCGTGGCCTAGAAAGTTTGGCAAACTCTTCCACCATTCGATTACAGGAGCCTCAAAGCCCCACATGGCTAAATCTTGACATTAGAAACATCCATTTTGAAATTTTTCGAAATTGGTGCAACCTAGCGACCTCTAGAACTTCTGACCTAGAAGAAAAAAAACCTCAAAATGTGGACTAGAAACTTTTAAAAACTCTTCCATCGATTTTGTTTTGTGGCGGCGGACGTTTTCCAGTTTGGCTTTTCACATAAAAACCAAAAAAAAACAAGACGTAAAGCTGTGAAAATGATTAGTCACAAAAAGAAGAAAAAAGTGTCGTTACTGCAATTTCATAGATTCCTTCTTGGCTTCTCACGACACGAGGGGGGTAGGGTCTAATTGGCACCCCCCCCCCTACTGAGGTGAGAGAGCAAGCTTGAGACTCACCCGTCGCTCTTGTTTTATGCATTTTTGGCACAAAGTGAAGTGGGCGAAAATTGTAGTAGCTGTGTGTGTGATGTGTGTATGAGCATTTCGATTTTTAAAATAGTTTTTTAATGTACCGCAGGCCACGTGGGTTAAAGTTTTTTTTCATAAAAATAGGATTTGTTTTCTTGCAGATAAGTTTTTCGAATTTTGAAATGAAAAGGATAACTGGGAACTCGGAGAAAAATTATGTTTTAATTTCCAACTAGGCCACGTACCAATGACGATGAGCAGTCGTTCTAGATCACAAGGTCATCTAAACTTTTAGGAAATTTAAAAAGTTGGTGATTACTAGAATTTCTAAGCCACGCCGCATACACCGGCGCGTAGGCGTTTTTACACTTTCTAGACTACTAAGATTTTCCTAGGCCACGTCCAAATCAGGGCTGTTGCAAAAAAAAATTTTCGACCAAAAAACAAAAAACAAAAAATTTTTTGGTGATCTAACTTAAGAATAAAAAACAAAACACAAAAAAACAAAAAACAATCGCAAAAAAAATTCAATGTTTGATATTGAACGGGACAAAACGGAATTTTTTCGTGAAATATTCTGGTGAATTTTTAATATTGAAAAATTGAACGAACAGAAGGTTTCTTGTTAGCTTTTTTGCTGAATCAATTACGTAATCTATTTTTTGGTTGTTTTTGGTTTTTTTTTCTCAAAACCAGCGATAAAAAACCAATCAAATCAATTTTTCCCAAACATACCAAAAAAAACCAAAAAAAAATGCCCAGCCCTGGGTCCCAATGTACAGGTGTTGTGGTGTGTGAGCTCTTAGGCCAGCTGGACTTTTCTTGGCCACTTGTAAATCAATAGCTTTTTTTCGGTGTTCTAGGCCACCTGTCACGCCTAGACCATTGACCTAGTAATGTTGAATAATAAGTCCAAGTACTCACATACCCGCAAATGCACATATCTATCTTCATTTCGTGATCTTATCTCTTCATCTCATCTTATTTTCCATTTCGGTTTACCCTTTTTTTCTCTATGAATATATTTTTCATGTACTCGCTCTTCATTCCCTCTTTGAAAAGCAAGATTCTTTTACACTTATTTTTCCTTAGGCAGTTGTAAAGAACTTGTCATTAGAACTTTCAACATCAGAGTACGATGGCCGAATTTTTTCTAGGCCCACGGCTTGGGAGCCAAACATGGCTAAACATTCACTAACTTCCTAGGTCATCTAGAAGTTTCTAGGTCTTATGGGTGAAAATTGGCAAATGACAGAATTTTCTTAAGTAATAGTTGAATTTCCCGCCAAACCGATTTTTTTTTGATAACATTTAAATTTCCCGCCAAAAATTTTTTGAAACTAAATTTTATGCCACACTTTTTCTGAGAGAATTTGGTTTCGCTCCCAATTTTTCTCTGAAAAGTTTAAATTCGCACCTGTGTAAATTTTTCGAGAGCTTTTTGAAGTTCCCGGCAAAATTTCGAAAAATTAGACCAACCTCCCCGACCGTCAACTATGATAGAGAAGTGTCCTCTGTACCCTGGCCGAATTTTCAATATATTTCTAGACCCGCCACATATTGCCAGCTAAATTATGTTGTGGAAGAGTAGTGACGTCACTTGGCGACCGCGACCATCGAGGAGCGTGAGGGGAGATGTATCCCGGCCTTCCCAACCCTAAAGACCTCGCTTATCGCTCCTTTTTGTTGTATCCGTTTTTTGGTGTCTCGATTCGTTTTCTCCTGTTTGTTGTCATTTCTGAACTCATCTCTACACTTCTCTCGTCTTCTCTGCGTCTCTCCATCCTGCACACTATTTTTTACCTCGATGATCTTTCTTATTGCGTGTGTGTCACTGACGAACGAAAGGCTGACACAGACTATGTATTGTTTGTTTTGTTGTTTAGAAGTAGTTGTAGTATTCCAATCGTTTTTCACACTACTTTGCATTATTTCAGATGGCTCAGGACGGGCCATCACATTTTTGTCAGGCTCCGCCGCCGCCGCCACCTTCCTCGTGGATTCCAGCTCCATCGCAGGTAAATTTAAGGTTGCAAGCGCGCTATAATGACCTTTTTTGTGCCTACGCCTCCTGGGTTATTGCCAATGCCCCCCAATTCGAATTATTTTTACTTTCAGCCAAATAGAAAAGGAGCCGCTCATCGATGAGGAAACTGTTATTTACGAATCCCGAGCCACGTATTGGAAGGGATGTGAATGAAGGCCTCTGGCTCGTACGACTCGAGTAAATGTAGTGAGTTGGTCTAGAAAATTTGGTAAAGCTTCCACGAAGTAATTAATTAGGGATATTACTGCCGACACCCAGGAACACGTATACCACGGCAAATTTTAATTTTTTGAAAATATTTTGGCGGGAATTTAAAATTTTAATATGAAGATATTGATTGGCGGGAATTTAAAATTTAAATTTTTTGAGAATATTTTGGCGGGAATTTAAAATTTTAATTTTTTGATAATATTTTGGCGGGAAATTTTATGAAATTTTTTGAAAATTTTGGCGGGAATTTAAAAATTTTTTGAAAATATTTTGACGGGAATTTAAAATTTTTATTTTCAAATTGGCGGGAATTCAAATTTTAATTTTTTTAAAATATTTTTGCGGGAATTCAAATTTTAATTTTGAAGCTTGAAAATATTGGCGGGAATTTAAAATTTTAATAATTTCTGAAGGTAATATTTTGGCGGGAATTTAAAATTTTCATTTTTTGAATATATTTTGGCGGGAATTTACAACAAATTTTAAGATACTTTTTTGAAAAGATTTTGGCGGGAATTGAAAATTTTATTTTTTTGAAAATATTGCGGCGGGAATTTAAAATTATAATTTTAAAATATTTTGGGAATCTAAAATTTTAATATTTTGAATATATTTGGCGGGAATTCAAATTGTAATGTTTTGAAAATGAATTATTTTGGCGGGAATTTAAAATTTGATGTTAATTTTTTGAACGGAATATTTAGGCGGGAATTTAAAATGGCTTTTAATTGTTTTGATGAAATTATTTTGGCAGGAATATAAAATCTTAATTTTTTGAAAATATTTTGGCGGGAATTTTAAATTTTAATTTTTTGAAAATATTTTGGCGGGAATTCAAATTTTAAGTTTTTGAAAATATTTTGGCGGGAATTTAAAATTTTAATTTTCTGAAAATATTTTGGCGGGAATTCAAATTTAGATTATTTTTTCTGTTTCTAAATATTTTGGCCGGAATTTAAAATTTTAATTTTTCTGAAAATCATTTTGGCTGGAATTTAAAATTTCTGAGAAAAACCTTCGTGTCGAGGCACTCGGTGAGACCCTTCGTGGTGAGACCCATCGGTGACATCCATCGGAAGGTGGTGAAAATAGACCTTCGTAGTGAGACCCTTCGTGGTGAGACCTTTCGTGGTGAGAGGCTACCCATCGTGGTGAGACCCATCGTGGTGAGACTCATCGTGGTGAGACCCTTCGTGGTGATACCATCGTGGTGAGACCTTTCGTAGTGAGACCCACTACGGTGGTGAGACCCATCGTGATGAGACATCGTGGTGAGACCTTCGTGGTGAGACCCATGTGAGACCTTTCCTGGTAAGACAGGTTTTCGTGGTGAGACCCTGCATCGTGGTGAGACCTTTCGTGGTGAGACCTTTCGTGGAGAGACGTTTCGTGGTGACGTAGGACCCATCGTGGTGACACCCTTCGTGGTGAGATCCCCATCGTGGTGATACCTTTCGGCGTGGTGAGACCCATCGTGGTGAGACCCTTCGTGGTCAGACCCATCGTGGTGAGCAGACCCATCGTGGTGAGACTCCCTTCATGGTCAGACCCATCGTGGTGAGACCCTTCGTGCTGAGACCATTCATGGAGAGACGCAGCGTTGTGAGACCCTTCGTGGTTAGACCCATCGTCGTGAGCTTTCGTGGTGAGACCCATCGTGGTAAGACTCATCGTTGGAAACCCTTCGTGGGGAGACTCTTCGTGGTGAGACCCTTCGTGGTTAGACCCATCGTGGTTAGACGCATCGTGGTGAGATCTTTCGTGGTGAGGATTCCCCATCGTGGTGAGACCCATCGTGGTGAGATTTGGTGAGACCCATCGTGGTGAGACTTTTCGTGGTGAGACCCATCGTGGTGAGACTTCTTTCGCGGTGAGACCTCCCTTCGTGGGGGACTCGTCGTGTTTGATATTAGGCGAGGAGCTATGGAGCTGGAGTGGGATAATGTCAAGGTACTATAGGCGTCTTGTGGATTGGCTGTAGGGTTACTGTCAGTTCAGAAAAATTGACTTTGTGCTTTTGAAGAGGTATTGGCTCGAGAGTTAGAGACGCGGAAGCTTCTGTGTTTTTTACATTCAATGTTTGAAAAAGTAATTTCCAACAGTTTTCATGTGACTTGAAAGATTAAGATATGCGGTGTTTTAGGTGTCGAACAATTGAGATTTCGGCAGTCGTTGGCCGCGCCGTGGGCGCGGTCAGCGGCTGGTTTTTCCAGAAGAGGAATAAGAAATTTTTGTGGAAGTTACTAGGACCCTGAATAGAATTCTAGGCCATGTCGAAAAAGGGGCTGGGTGCACGTGGGAACCTTCGAGTGTTTGGATATTTTGGTAAGAAGTAAGAAGAAGGAAGGTCATAAGAAGTTGTTAAGAAATTGACTTTTCTAGAGTAAGAATGACTTTTCTAGAGATCATCTCCCCCTATTATTCACAGCGTCACCTAGTTATCCGGAAAACTCTTCCACCAAAAAATGTGCTCGCGAGTCCAACTGAAAAATGCGTCATAAAACACACGGAAAAGGTACTTGTGTATTACATGCCCTCATTTTAATAGTAGTTTTTTATGAAATAAAAACGTGAACCATAATTTGAATTTTTAGGCTTAGGAAATAACATTTTCTAAGCCTAAAGAGGAAAATGTGTAATACACAAGTACCACGGATAATTTTTTGAAATCTTCCGAATTTGAAATAATTTAACTAAAACTTTCTAGGCCACGATGAAAATAGAAACAATGTGTCCCGATTATGCTGAAAATTTCTGAGCTTCCATAGTTATATCGAGTAAAAAGATTTTCGAGAAATGAGTTTCTAGGCCACCAGAAAAGTTTCTAGGCCATGATCCCTTCTTGATCTCGTTTATCATTAGGATTATGATATTTTTTCAACGATTTTTTAGGCCACCAGGCGCAAGGGAAAGTCCGTGTCAAAAAAAAAAGAAAGGGGGTATTCTGCGTTTCCTCGTCACGTAAAAATCCCGTTGGCCTTTTCAATCAAATTTCTTCAATTTTTCGCATAAAACTTACCTCCGGCTGTGACAAGCCTCCTCCCGTCTCCCAGTATTCTCAATTAATCATCACCCCCAATGCCCTCATCCAACTACAGTATCCCTGCAATCCCCGTCTGCAAATATGTGCCGAATATGTCATACTTCTACGTCAAGACTACGCAGTCAAATCCGCTCATCTAATCACCGTGTCGATGCTCTTGGGAACACTGCTCTGTGTGCATCGTGTGTTGTGGTGAGCTCTTTCTTTGTAAAATTCAAAATAATAATTAAAACTTAAAAAAGAACGTGACTGGAATTTGCAATATAAAATCGTGGCTCTATACAAAAATTCAAGTTATACTTCCACATTGTCGTTCCAAAATAAAAAGAAATAGCCAAGCCTACAAAATGGGCGGCGCTTTCATAGCCACGTCCATTTTGTGGGCGGAGCATCAAACTTTTTTCAAAACCCTACTATAAGTTGAACACGGATTTCTGGCTTCCTCATCATAAATCGACAATGGCTGAGTTTGACGAACTAGGCCATTTTGGGTCGGAGACATTTTGTGTAGATTTACGGCGTGTTGCGTGTCGCGTCGCTCGTTTTTAGTTGTAACACTGCTTGTGCCGTGTACATGATTCCAGGTTTTCTCCACGCGCTGTCCCACGCGTTGTCAATGAGGAGCGTAAATTCAATGCGAACAGAAGCCCGTGGTTGAAGTTTGTTTTCAATACTACAGAAGATTTTAAAGAGGAACAAACAGCTCATGTTGCCTGGCTACAAAATGGGCGGAGCGTTGGAGGCGTGGTCTAAGAAGGTGGTCATCGCCCTTTTCTTTAAATACTTGTTCTGATGTACAATAGAGCGCATTTACATCAAATTAATAATTAGTTTTTTAATTTTTCCAGATGGCTGGAAACATATGTCGACTCGAAAAATGGGCCCATCACCACGTTGCGAACTATTCGCGGCTACGATTATCGACGTGAAATTCGGCATACTTCAAATGAAAACATTACATGTTCCACACGTGGATCGATCATCTTGTCTGCACAATTTATGGTGCTTTTGATCAATCGTATTAATTATGATATTTTGGTATTTTACGATTCGATTCATTCAGGAGAATCCTAGTTAGTCCGCTCTTAAAACGAAGGTGGGCGAAGTTTTCTGGTGATGACCTAGGAAATTGGAAAACTAGTGCCACCCTCGCAAATGTGGCTAAAATAAATTTGACTAATGGCCTGCGGCCTAGAAAAATAAAAGTAGACAGTATATAATAAAGTCTCATCAACCCTTTTGGAGAATGAACTGGAAACCCAAATTTTTAAGAAAATATTGACCTCCTTTAAAACGGTGGCCTACTTTTTCTGATGGCCCTAGGTTTTTCGACCAAGAAGCCACACAGCTCCATAGTTTCAGGAAAAAAAATAAAATAGGCTCCGCCCACATCTTCTTGCACGTTGAGTTAGAATATATACGAGCCATTTTTGCTAAGTTTTGAATGTTAGCTCCGCCCACATAATGATTTGAATTTCCCGCCCATTTTTCTCTCAAAAATATGAAGTGCCTGCCAAATTTTGCGAAAAACTCAATACTTTCAGGCTCTTCGCGCACGACAAACAGCGTACACGTGGAAACGGCTTGGCTAGTTCAGCGGAAGCGGGAATGGAGACGGGCGGTAGTTCGGACGGATATTTCTCGCGTACACCTGTCTCATCACTTTTCGACATAAAAGTGGTCTTGTGTGCCAGCATGTTCTTGGTCTCGTTCATTTTGGCCCTTCATCAGTATAAGTGAGGGCTTTTTTGACACGTGCCCTGGAAAATGATAAAACTCGGCCACCTATTTTTTCAGCCGAATTTTTTTAGTTTTTAGCGGTCACACGGGCTTCTCATTCTCTCTGCATTGCAGTTTCGCGCTCCATTGGCACTGGCTTGCCGGACAACGTAGGAAACTCGTGTACTCCACACGATAAAATTGTTCAGTTTTACATTGAAAACCGAGCCGTGACAAAGGTCGCCGTAACTGTACCCCGGCCGTGGCCGGTGAGTCAAAATGGCATAGTTCGGCAAATTCTTGAATTTCAAAATATGATGGAAGCCTGATAGAGCACGTGCGGTGATAAAAATGAATAAAGTATCCTGTTTTTTTTTCCAGAGGCGAGTCCACGATATTCCGATGTATTTTCCGATTCGCTTTTGTGAGCTCAATAAGTATCGGCGCGATGATCAAAAAGATATCAAGTTCTGAGTGGGCGGAGTGTATCGGCGGGAAATTCAGGCAACTTTGATCTTTCAAAATTTTCATAAAAAATTCGCGCAAAGATCAAAAACTCAAAACTTTCGGTTAATTTCGGCGCGAGATTCAAAATGTTTTTGGGAAATTTGGGAAAATCTAAAAAACGTTTAGGCGTTTGAAATTTTTTTAATTTTCAGAAATGATCCTGGAATGGCTAATCGCCGCGGTCTCCTGAAGTCTTCATATCACCCGTTAACCGTACTTCTGATATGTGTATCCGCGTGGCATCCTAGTCATCTACGAAATAAACCATTCGCTCAGTTACAATTTCTCATTTCTTTACCACTTTCGGGTTTTTTGCAAATTAAAAAAATTTCGATATTTTTTTTGAAATTTTAATTTTCCAATATTTTTATTCCACAACTCAGGTTGCTCAACTGTGCCTAAAATAATTTTTATTTCTTTGATTTTTTATAAATTTAATACAATAAAAAAATAATATTACACATTCGTGAAACACGGAAAAAAAATTCAGCCTATTTACATTAAAACACGTGGAATTTGAAATTTTAGCGATATATCGATTACCCCTTCTCGGAAAACTCGTAATAAATGTGAAAAAGGCGAGGAAATTGGAAGAATTAAATGCGGGTGTGGGTTTCTAGAAAAAAAAAAGAAAGTAATTAAAGAAAAATTCAAAATAATGCTCCGGTGTCATCGTGTTCCACAGTGGTTAGATTCTGGTATTTTGTGCTGATGGTGTGCTCTGAAATTTAAGAAAAAAGTAAAAAATTGAAAAAAAATTTCTTAAAATAAAAAAAATGAACTTGTTTTTAAAATTTAGATTCAAAAATAACAGTTGATATATTATTCATACATATGTTATCAATTTTAGAGAAACTTCAATTTTTCAACTGACTAACGTATACAAATCTACTCGAAAAAGACCTCGGAACTAGTTTCTCACTTGGTGGCCTAAAAATCGCCACTAAAACCATCGACCAATATGAGTTTGTAGGCCTCCATATGAAAAAAAAACTCGATCGGGGACTAGGTTTCCACATGTGGCCGATTATCAACTTCAAATGTTTTGGTTACCTAGATTTGTCAGAACTTGGATTACTAGTCCACTAAAAGATTTTCGGTGGCCTAGAAACCAAATTTGCGTGAATTTTTCATAATTCTATATCAATTGACTAAACCGAAAATAATGCGATGCTTATATTTCATCAGTTGGTGACACTATCCCACGTGGCGACGGGATTACGGGCGACCGTGCCATTGATTAGAGCCAAGGGAATTTTGAGCATACTCGTCGGCGGTGCACTTGGCGCAAAAATTTTTTCTCTTCCGTTAAAGACGCATGGTGGGTCTTGATCTAAGAAATTTCGTGATTATTCGAAAATTTTTTCCTTGTCCTTATTGACAATTTGTGTTTTCACAAAAAAGGCGGAAGTCCTAATTGCCAAAAATGTAGGTTTCTAAACTAGGCCACGAAAAATAATTCAGTTTTTTGCTTCAAACATCCTGCTTTTTGTCCAAATTTCGCTTTAAATTGGAAGTGGTGTCCGAACATTATTAACAAAAGTTCAATTTCTAGAGAACATCACTTTGTTCTAATGGGTATTTCCTCACATTTGGATTTCTAGCCCACAAATAACGTTTTTATTTCATATTTTTATAAAAATCGAATTAAAAGTAGATGATGACCTAGTTTTTATCAATAATTTGGGTTTCTCGGCCACCAACTTTTTAAACATTTTCTTAATTTTCCATAACCAAAAAAAAAAAACAAAATCGATGGCCTAACTTATTGCGCTTCCTAGGCCACCAATAACTCTTTTATTACTGATTTACCTCACTCTATGATGTCGATATTTCTAGTCTCGACTATCGCTTCCCACAGCCATCACACTCAAATGCTCCATTCGTCTCATGAGTGAGCGAGTGTTGATTGAGCCCATGCTTCGGAAAGTTTTCTCGCAGTCCGTTATAAGGTTGGTTCCATTGTTGGGCTGGGGTGAGCCGACGACGGGGCCGCCCGTATTGTCGCCCTTTTCCCGGTTTTTTCCGGTGAAAAAGTGTCGAAATAAACGCGTTATTGTCGTCTAATTTTGGTACATTCGCCGACATTGCGAGATTCTCCTGAGCCACTGTGACGTGTAATGTGATGGTGCTGATAGAGGTCTGGTGGTGGCTGAAAATGGGGAATATTCCCGGCCCCGAACATTTTCAGAAGTTCCAGGTCGAATCGTTGTTGAGCATCCGCGTCGACTACTTGATTGAGGGAGACGGTTCAGTTCAGGAGACTGGTGGATGGCAGTTTTATAGACATAAATCCTGCAAAAACTCAGGTTTGTTGCTAAATTTTTCAATTTATCATTCTCATTTCCGAAAAATTATAGCTTAATTTTAATAGATTTTTCGCTTGATTCTCAATTTCTCGAATAGTTTTGTGTCAATTTTTTTTTGTTTTAAATGTAAAACTACGGTATTCAAAGGGAGGAACACTAATTTATCCCGATGGGGCTCGCGGCGAAAACATTAAGTGCCTTAATTAAGCCTTGCGCCTGGAAGGTAACTGTAATTTTTATTGATTTGATCGATTCATTTCATTCAATTTGTGGTTTTTGAAGGTTTTCAACCCATTTTGAAAGCTGAAATTTTAGATTTTTATTTCTGACAAAAAAATTTTAAATGTTAAAATAATTTTTTTTCTTTTTCACACAAAAATTGTAACCGAAAATTCCGAAAAAATGCAATTTAAACAGCTCTAAAATATGAAAATTAACGCGATTTTTATCATTTTTTGCTTCAACTGACTTCTGGCAAAAAAAGGAAAATTCAGCAAAAATCAATTTTCCAGAAAAATTTGATTGATTTTTAATTTTTCTTAATCCGTCGTCCGTACCGTATGTAGCTTCATCTAACACCTTATCCAGCAGATTGCTTACATCTAATTGCACGTGGTTGCAGTTCTGAAAAAAAAATGTTTTTGAGTTTTAGAAAACTTATTTTGTAAATGTTCTAGGTGGGTTTTAATTGTATAATTAAATCAAATTCTTATTCAGTTTCTCCCATAAATCGCTCCAATTCCGCTTCTGATTTTCCTGAACTTTCTCCACTTGCCATCACGGCCAAATCCTGCTGCTCACGCAAAAATTATTTGACAAGACACGTTAGCTGGTTTACATTATAGATTGCTGGCATTTTTATAATCTGAAATTTGAAATTAAGGATTTTAGTTATTTCCGCAAAACGTAAACTTTTATCGCTGGGAAAACTCACATTTTTCGAACTTCGCCCCAATAATCGTCTAGTGAATTCTTGAATAAACCGTTTGCTTTCTTGACATAAAATTCTGAAATACCTCATTTCCCATGAATTCGCCCATTTTCCCATGGAAGAAAACCAATGGAAACACGGAAATATTTGCGCACAAAATCGATGCTGAAGTGTCGTCGGACCCAGTGTTTCGTGTGCAGTACACGCCTACGACAAATTGCGGACTTTTTTGTTATTGGAGAGAGTAGAATAGAGAAGAAAAAAGAAGATAAAATGGATAAAAATTGCGCGTTTTTCTCATTGTTTTTTCTCTGAATCTCTCAATTTTTAGGTTTTCGGTCCATATACGTCCCGAGTGGAGATGAAGCGATAAATTTTTCGCTAAAAGTTTCTTGCCCCTCCAAGTCGCTTATTCTTTTTTAATATGAAAAAAAAATGCTAAGATGCTTATCAAACCGCAAATTTTTTATTGGAAAGTCCCCAATATTTTGCAATTTATTGCTCAGTTTAAATTCAAGGTGCCATTCTGCAAAATTGCATTCATCTTCATATGTTACATTTTTTAAGTAAAAACTTGAAAACTCTGCTTTACATAATAGTACTGGAATTTTTCAATTTTCAACATTCAGGATAATCTTTGACCATTTTTTATTGAAATTTTCAATAAAATATTTAAAAGATGTGGCTTTCCAAGCAGATTTTCCAATTTTTCCGAGTTGAGTAACTAAGTTTCAACCAAAATGATGTCACAAGTCAGAAAATTTCCCTAAATTAAACAAATGGTGAAGAACTTGATATAGGATTAGAACAAAGATTGAGTCTTGAGATAATTTCGGACATTTTCGGAAAATATACGTTTCCTGTAGTTTCAAATAGGCAATTTGACTTAAGGTTGCTAATAACATTAAGAAAAATCTATAGTCTCCACCCAATTCAGATTGGTTTTGTAGATATTTTCAAAATATCGTGTAACGAAACTACAGTAATGCCCACTTTGAAATTAAACTTAATCCTGTATTGCTTTTGTCCATCTACGGGCTCGATTTACGAAATTAAATTTAATAATCTTTAATCTATAGAATATTAAAATTAAGCTCTAAAAAATGAGAATATAATTACGTAGAAATGAAAAATGGAATCTCGGTGTAAATATCCGAAATAAATTCATTTAGAAAATCGAGCCCGTAAATCGACGTTACGAAGAATTACTGTAGTTATCGCTACGAGATATTTTGCGCGTCAAATATGTTGAGCAATACGCATTTTAAGAATTTACTGTTATCGTAATAGTTCAATTTCGAGATAATAATTCCAAAAACAATTGTGAATTTAAGGTTTTTTCCGTAATCTAAAATTGATTATCACTACACTGGACACTGTTCAAACTTAACCATTCAGAACTTGTATAATCCATCTCGGATAAATTGTTGGTGAGACAAAGTGTAATCTGTTCTAGTTGGGTCACACGATCCCTTTTCCACTCACATCGCTTACCCACTCAACACTATAGACGATACACTCACACAGGAAATAGTATTGTTTACCTGTTTTCTTCTGGACACTGTTTATAACTTTTCCCTGTATCTCCGTTTCTCTACCTTTAAATTTATCCAAAATTAATAATTTTTTAACTCCACATTCAATACTCATTTAATGACCGGTATTTGCAGAAAATATTTTATTTTTATTTAGTTATTACAGGAACAGTATACTCTAGGAATTCGTATTGCACAACAGATTTGACGCGTATCACGTTAGCTGGCATAATATTAGGCATTGTCTCTACAATCTTGTAATGTATAACTGACTCTTTGAAATAAGTTTGTAAAAATTGTGAGTAGGAAAACATTGTGCATGGATGTCGCGTTTCGCGCACGCGCTAGAGTAGTCATAAACCGCAAGATTACTGTTGTTCTCGCTACGAGATATTTTGCGTTCGGCGTCAAATATGTTGTGCAGACATTTATGCATTCCTCAGAATTTTGTGTTCACGTACTAATAAATTAACTTGTTAAAAGATATAATAAAAAGTGTTAAAAGATACAGAGATCTTTTCTCCCTTCCCTAATATGTTTAACTGCATATTCAATCATCTTAAATTGTGCCGAAAATTTTTCGTTGTCCAATTGTTCGGAATTTTTTCGGTTTTGCTCGAAAAAACCAAAAAGCAAAATTTTATAAATTTCCCTGGTGTTCAAAATTTTCCCGCAATTTTTACCGATTTTATTTGCAAAATATTTTTATTTATTTGAGTTCCCCCATGTCACACCGTTCGATGTTGGAGAAATGGAGATAATTCCGCTGCATTACGGAGCACGTTGGGATTTAGGACTTGACGTCTTGGCGAAAGGTTGGTAGATTTTAATTTGTTTTTTAAATCCTGGCCTTGCACATTCTAGCAGGGAGACGTCACTCTGAACATTGTTCAACATATGTAAATTTTAAATTCAAACTACTTAAAACCCGGAAATCACTTTGTGTCAGATACACAGAAATAAACAAGTTTTACCTTTTAAAAAACTTAAAACCATTGAATTTTTCACAAATGTTCTTTGAGACTTGAGATAATCTAAATCCCAAACTTTTGGAAAAAAACTGAACATAGGTAGCCTAGAAAATGAAAATTTTCAATAGTTGTGTTTTTCAAGTTCAAAGAAAAAAAATTGAATTTTTAAATCGTTCTTTTTTTGGCTACAAGTCAATAATGATATTATATTTAGTTTTTAAGAACATTACTAAAATGAGTGCATATTTAAAAAAAGTGTTTGTTTCGGCGAAAACAACTATTAGTAATTCCGTGCACTGCAATCATCAGATTAGTGAGGAATTTAGTTCTATTTTTTGCTTGTTTTTCTGTTTCAAAGTCGTTTTTTCATGAAAAATAGACCTTAGCTACAGGTTCTTTTGAGAAATCCCGCATTATTTCAATTTTCAATTTCATGATGAACAACGTTTTTGGTAACACATTTAATTCTAGTAGAATATTATCAACTTTTTCTCTAATTTTTCAAAATTTACACTGTTCCTAATAGTTTTTCTGATCAATGAAGGACTACCATTTTACGACAATATTGCCTTCAATTTTTTCTTCTGAAAATTCGAAATTGATCTGAATCAATGGTGCCGGTTTTCTTATTTCATCCCTGAATAACGAAATTGATTTTTATTTATTTTTCAACAATTCCCGGAAATTTCTCTATAAAACAAATGAAGTGAAAATCGATTTTTTTACTTCGAAAGTTAAACATGAAATTCGATAAATTTAATCTATGATCTTTCAAGCTCCGAGTTTGAGGCGGGATGTTGATAATTAGAGATATGCCGGGGGAGAACACGACTCTCCAATTATATCTTCGGTCGAGAAATAATTTTAAACATCAATACTATACTAGATTCTAAAGAAAACTAATTTTTTTCAATAAATAAGTGTTATTATTATTCAGGAGAATTATTTTGCTTCTTGCTCGAAAGAAAATAAATCCGAATCAAAAACCGACGCATTTACAAGTCCTGAATTTTGTAGTTAGTCAGAGATAGATTTTTATTTAGCCTCAAATTCTAAGAATTCAGACCTGGCTATTTGCCGAGCCTAGAAAATAGAACAACTAGGCCACCGATCGAAGATTTTGTGTTTTGCCGTTGTCAGGCTACTGGCCTAACTTTCTCTATCTTAAAAGATTCCCAAAGTCAAACTACTGGCTTTCCAAAACCTTAATGTAATGAACTTGTGATTCCAAAGATCTGATGTCAAGAATGTCCATAGTTCATATATACTCCAACGACACTTTTGGAATTTATTTTAAATCTTCATGGTTTTCAAAAAGAATCCACCAAATTATTAAGCAACGGGGTTTTCCTTTCTAAACAATTGTGTGACACAAATCAAGGAATTCTCCGTCACTTTGTACAATTTTTCTAGTTTTGGTGATTTCCCCTGATGAGCTCAACGCCAGGCGGAATAGCTCTTTCCATGCAGGCGTTAAAACGCCTGCCTGCCTGACTTTAAGGCGGCCTCCGCCTGCCTAACGCTTTAGTCCTAGTCATGTGCTAAACCATACATGAACTATTTTTCTAATTCTTAGTGTCTTAAAATTGATAAAAATTAGGAAAATCCTTTTGAAATCTGAACTAAATTTCAAGTAAATGGGCGGCAAACTTTGTATAAAAAAAAAAAGAAAGCTCGCCCACCACTTTTTCAAAATTTCTTGCCGCTATCTTGACTCGAAGGCGCAAAGCCCTAAAACTTTAGAAAACATCCCCGAACAAAAAAGTAATACATCCTTCAAAGTGTATGCCCCCCCGTGTATATGTCACCTGTAGACTCGTCGAAAACGTTTGTGCCACCCGGCTCTTTACCTCGTCTCCTCTTACTCATCATTTTATGCCCCCGTAGCTTTACCGTCGGCTAATGTGGTTCTTAGGGCGTAGGACGCCATTGATTTTGCTCTTTTCAAATTTTAGAATTTATTTCCCGGTCTGATTTCACTCAATTATCAGACACCACATCTTAGTTTTTTGACATGTTCAATGCTGGAAGCAATTTTCGATTTTTTTATCGACCATGGCCTACAGGTAAATTACGGGTCAATTTCCTGAAACGGACGAACATTTTTGAAAGCAAAACAGTTAGTTTCGCTAGAATTTCTGATTTATCGAAATAAAATCGGGCACACCGAACAAAAGTTCGTTTGTGTCAGGAACTTAACGGTACGCACTTTTGCTCGGACAAACCACGTGTGGCTGATTCAAAAATGTCCAACTAAATTGACGTCTTGAAAACATTTTTTACCTGAAAACCGCTAACAATGTCAGGTTAATCCGATTCAAGCGCTATTTTTATAAATCCTGAAAGTTTAAGATTCCACACGTTGTGAGGGAAATTGACACATTTTTAGAAAACCTGACCTCACGGTTAATTTTTAAACACTTCGAGGGCCCAGAAATCCTAGTTTTTTTTCGGGTTATTCATAGTTTTTCTAGAATTTAATTCCACATCTACATTTCTAAACAAAACTTTTGAAGGTCCTTGTAATTCTTCTCTAGTTCTTTATTGTTATGTCTTCTCCAAACTAGGACGAAGCGATAATTACGGGGTTTGTGAGGGAAGTTTGTCGTCGGTCCATTTGTTTTGAAAATGAGAATCGGAACTTTCCTGTCTCCCGTAGAAACCAATTAAACGACAACTTTTTTTTTTCATTTCGTTCATTTTGCAGGCATGCTAGCCTCGTCTATTGGAATTGTTTTGTGAATGCTAGTTGTGATTAAAAAATTAATCGATTTTTTTGTAGTATGAGTTCAAACAAGCCGAAAAAATAGATCAAAACTGAAAATTTTATAAGAAAAATTTCCGTATCTAGTTTTCAATTGGCCAACTTATAATTTATATACTCTCGAAATCAAAAAAAAATGTACTTCCTATATTACCCACAAACATCGAAAGGGAAATCCTCTATTCCCGTCAATTATAAGAAATGTGAGAAAATCTTACTCGATTCATGGTTGCTATGAGACAGATTGCAGATGTTTCACCGGATAAACAAGACGTTATCATTACTTTTCAGTAATGCTCGTTTATTTTTCTATTCCATTTCTCGAATTTTGATAGATGTTGTATTATTTAGAGAGCACTAAATTCTAAGAATGCCATCGTATTGCGCAACGTATTTGCATGAGGCACAAAAAATCTCACAGCGAAAACTACATGACGTAATCCTTTAGCTACTGTAGCGCTTGTGTCGATTTATGTAAATCTTGTCATATATTCGTCGATATAAATTGAAAATTAAGATAAATAATAGATAAGCGAAAAATTAATATCGAAAATCGAGATTCCGTAAATGGACACAAGCGCTACAGTATGTAAAGAATTACTGTAATTTTTGCTACGAGATATTGTGCGCGTCTAATATGTTAATACGCATTTTTAGAGTTTTGCCTGATTATGTAATGCGTATTTCCTCTGCATGCAAGACTAACGATTGGTCTGTAGAGGTCAGTTGGCTGGCTGACTTTTAATACTTATGTTCCTTCAAATGTTCAAGTACGATTAGGAACCCTTTCTCTCATTTCACTAGTTTACCTTAATGTGTGTCTTTGGCTAGCTGAGACGATCATCATTTCTTTTGTTTGTATTTCGCAGGAAAATTGTGAAAAAAATTGCAAAAAATTGAGAGCAAGAAAAGTAAGTGCACACCGATTATGACTCGTTGTACCACGATTTCCCCCTTCGTTTTCCCTCTAATTACCTATACGTATAGGATTAACTAAACATGATCCCGGGGATCACCAGTTCATAGTTTCCTTATCAATTTTATATTACTCGTATGCCTTCCTCGTTTTTTTTTCTAAAGCCATGAAAATGTATCGCAGCGGGTCGTAGCAGGAGCACAATGTACTCGAGCTCGTCACGAAGGCCGTACGGCTGGTTCCGCTTATTAAATGGTTAAAGAACTGGGTCTTGATTCCTACCAAATTCATTTTGATAAATAGTCCCTATAGATCATGTAATAATATAGGTTGACCCTACCGTGTTTTCCAGAATAAAGTTTTACAATAAACTTTATAGCATGGGTGTGCGGCAACGATTTGGGCGACTTCCGTTTTCCGAGATCAAATCCGAGTTTGCTGCACACATGAAAAATGTTTAATTAAGATTTTGCGCAAAATGTAGCCCCTGGTTTACACCTTTTTACGATATTGTGAGTACATTCGAAAAGGATGTTTTGATTGAGTATCCCCAAATCAAAAAAGAAAGTTGATGAGAATTTAAAAACTTTTAAAGAACACATTTTCAGGCACAAGGCCGAACGGCAACCGACTACGCGGGTCAGAACTACGAAGAATGTTATGATAGGTTAGATTCTTTTTCTATTATTCCATTCAGAATATTACGAATTAATGCTTAAAAAAATTTCAAATTAATTTTCGCCGAAATCATCTGCGCCTTAGCTCCACCCAGCTCTCTAGATCGCAACCCGCAATAAAGCCCATAAATCAATGGGCAGCTGCTGCATGGTCCGTAGTGTATTAGTCTGTCGTCTGTCCGATCAGTGCGCTCCCGATAATACTCTCCATTTGTTTCTCGCTTTTTGTAAACTATGTGGTCGACAGACCGTTGAAAGTCGTATCAATTGCACTTTTGTAGTTACCGATAAAATTGCCCAGATCGACGAGTTTTCCATAACAATTTCTCTTCCATTTTCATCTAACATCTGTGACCCCGCTCATTAGTGTTTCTCTAGCCGATGCTATTCCAGGTTCCCATGGCAATGTGTACATGTGTGCCTCGTCGAAAGTGAGCCAAAATGCTCTTTGTATTAGGTTCATTCATCCTATGTTTTTTGTCCTCAGTGACCTGCAACTGCGCAGAGTTAAATATTAATTGGCACTGAAGAGAGGCCGCTCGGGCAAATAATTTTACAAATTGATTTATATTTGAAAAATGAGACACTATGTTATTATCGCCGAATTCGTTCTCTGAGTATCGCTGCGTTCATATCTTTGCACAGCTGCTCTATGAACAATTAAAATAATTTGTGGGTCCTGTAACGAAAAACCCGAAATAAGTCTTGCCTATACAGGAGTTTGTGGAAAGTTTTCAAAATTTTTGATCAACGAAGGAATTTGGAGACGTAATACGATCACTAGCAATCTGAATTTCTACTTTTGTGCCCCAAAATGCTTTTTTCATAAGTCCCATTATCCAAAATCCGGCCACCTTGCTAATCATGATGTCCATAATAGGCATTGAGGCAAATCTAGCGCACTTTTTTGTCCGATGAAAGACTTTTTGATAATACCAAGCTTAAACCTTATTCATATTGCTTTTAGTAATCCTATAAGTTTTGTTTGCAGTGGTTCAGAATTGCCGAACATTCCAAATTTTTTGATAAAGGTTTTACATATATGTTGAGAAAATAAACTCAAAAAAATTAACAATTAGTTCATACGTTATTAATTCCAACGAGTTTTAGTGTAAATATATATGTGGTCCTCTATATATTTTGCGTATTACTATTATTATTGATTCCCTCCAAAGCTGAATGTCAGTCTCAAGACTACCACGTACTGCTCAACTGTGTTGATTCCCTAGTATTTTCAAACGAACAAAAAGTGACAATACAGTATACTTTAAACTAACAAAAAACTTTGTCGAGTCTATCGATCAAACTAGCGAAATCCGCCCGTTAAATCGGTTCTGTTTCCCGCCACCAACACTTATTGTGTTTTCATAGCTTTAACTCTTTGACGGAATTTCCTTTCTTCCGATTTTTCAAGCGATATTTAAGCCCAAAACTTACTTCAAAGAATCTTAAAAGGGATTTTTACAACACTCTGGATCAGATTTTATGAATTGTTTCATTCGCAAGAGAAGAGCGACTCAGTGCTATAAATGGAACATTCACCACACTATCTCCACATTTCATCTCTATTAATTCATACAAGGACACTAAAATAATCCCGGCCCACTTGCTCAGACTCTGTCTCGCGGGGGACAAATTTGAATCCATTCTGTCGGTCGACCATTGAACCCCCACCACACAATATGGTTCAGCGGGGGGAGGTCCAGTTTTATGGCTTGTTATTACGTATACTGCTAGGGGAACCCAATTTTACCGGACCCCGTGCGGAATATTCAAATTGGAGTGTGTGTGTGCAAAAACTTTTATGGTCCATGTCCAGCAGACCAGCCAGCAGCTGCTCCGATCAATTGCCGCTTCAACTTTCTCCACTTTCCCATGGGACATCTAACCTTATTTGTCGTTCTTCTAGTTTCTCCTCTTACTTCTTATTCTTCTTCGTTGCCCAAATTGTGCTCGAAGAACTAGAGATCCTGAATAGAAATAGGAAAAGAGCACGAAGACATTATTTATGTCTTGTTGTCCATGGTTCGCCTCGAGTAGTTGATTAGGAGCTTCTCCTTGTTGTCTTCACTCGGTCGTGTTCTATATTTTATGTCCACTCTTGAATTCCTGGAGTTTTCAGTGCCCGCATTTCCTGGTTGAGCAGTTAGAAAGCTGCAGGAGTTTCCAGAATTTGATCGATTTGCGGAGTCGGCTGTCGTACTACTTACTTCCGGATTATAAAATTCTGAGAATCTCGCGTATTGTACACCATATTTGACGCGTCAAATTATCTCATGGCGAAAACTACAGTAATTTTTACGCGAGAAATAGTCGAGGCCCCCTAAATCTAGAGTTCCAAGAGCTACAGTAGTAATTTGTTCTAACAGAATTACTTCCGAACCTTTCTCATTTTTCAACAATTTTTTAACTTGCGTAGCGGAAAATTAGCGCTAATCGCGTCAAGACCCAAAACAAAGCGCCAATTTCATCAAGAAATTTGATGTAAAAGTTTGTGAAAACAACCGTCACTACTTCTGATGACGAATCCCTACTTCGACCCGGGCCCAGTTCGTTAAACATTTTTGAATTTACTGCCACCACATATCTTACTTCATCGACCAAAATTCAACGTGCTGCGATCATCATCTTCATCTCTGTCTCATCATCTCGCCCAAATTCAATTCCGTCACTGCGGCTCGTACTGATTTTTTTTCATTTGTCAATCATTTAGAGGCCAATGTTAAAGACCTCCTCTCAATTTTTTTCTGTCTGTCATTGACCCCTCTGTTGCGAACCGATTCAGAGTTTACAGGGTAAACAAGCTCGCTTTGTATATAATGTTGATTTATGTGAGCGAGATAGTGAAAGAGAGAAGAGTCTTGTAGCAGGAATCTAAGCGTTTCCTTTGTTTCAAGCTCTGTCAAAGTGTCAATCGCTTTCTAGCTAGATGATTCTTATGAAGCTTTGAACATTCTAGATTTAGTTTGTTACCTTCAACATTGGTGGTCTTTCTTGTCCAGAACTGGATAAGATTTATCGTAGCCTTTTGCGAAACAGTATCAGATTTCCTGCAGGTTGTACAAGGGCTTTCGCGAGGCGGTAAATCGCCTGCCTGACTTTAAGGTGACCTCCGCCTGCCTCTCGCCTCAATACGTTATGCACAAACGGGAACTTTTAAAAAAATTTTTTCAACAAATTGATAAAAAAACAATTTGAAATTTAAGGTCCCTGCCTGCCATAGAAGCCCTACCGTGTTCCACTATTGATGCGCTTCATTCTATTACAAATCAATGTAACGAACTCCGAAGTTTGATAGCCCGAGGCGTTTTCCTTGTTAAGTTGATATCGATTATCAGTTTGACCAACCAAACTCCATCGAGTTGGGTAGATTTTCAAGGAATTTATAGAATTTCGTAGAGTTTTGGACTATGTTTTGCAACGTTGAATGGAATTATATTTGAATAGGATATTGAATAACTTGTTAATGGTTCAAGGATTTTAGCACCCTTTCCGAAGTCTAGAAATGTTCCACCCTCAGGTGCCGATAGTCGGCTCCCGTGAGAACTGTAAACCGATAATCAATCAATATTGCGGGTATTAATTGGCTAATATACATAATCCCCCTGAAAAGTTATGTGAATAACGGCAAACCCCAAGAAAGAAACGACCATTTCCGAGGTGTATCAGAATTTTAACAAGACCTACTTAGGGTACATAACCCTATCAGTTTCAAAAACAGCATGTCGGGATTTTGTGCTACCATGGTAGACAGGCGCGGAGGGTCTGATGCTTGCCTGAAAGCCGGGCAGACAGGCGTTTTAATTGCTGCATGGAAGCCCTAAAATTCCGCATATACGGAACCTAAGCCAATTATCAAATTCTACTTAAAAACTCATTCCACAGGTGTTCCTGTTCTGCTGCATCATCGTCACACAGACACTTACACGCGGCTTTTCTCATTTCCCACTTTTTCTTCGTTTTTCTCGCTTTTTCTTCTTCTCGACACGACTTAATATTCGGATGGATGACGCCGAAAGCCAAAAGTGTTTCCGTCGGCGTTTCCACGCGCACTCGTACTACAAGTGCCACACTTACACACTTGAAGCAAATAGAGAGAGGTGCAGGAGGGAAAGGAGGGGACAACTTCTGTAAGATAAACTACCTCTATTTGAGTAAAGAGTGCAAGAAATATATGCGCGTGTGTCTAATGAGAGGGTCTTGGAGCGATTTTTAAGCATGTACAGTCATGAATCAGGCGGCACGTTCCAGCTTTCAGGCTCTGAAACCGCGTCTGCATACCAGGCAAACCCAACGATGGTTTTTCTTTGCCCTCAGGGATCCGTTTCTTGGATAGTTTTAGTCTTCGTCCTTTTTTCTTTCGTACACTTTTTGTAACTGTTCAATAGTTTCATCTAATCGTAGAAATTCGAGAAAAAGGATTTTTCGAGGGTCTGATAAAAGATCCCAGAATGTGTCTAATTCTAATTCTCTCCAAATGCCCAAAACGAAAATTTTTCGACAGATCCTCGTATTTCGAAATTCAGGAAAACATTCGGCAAAGCTGAAAATGTCACAACTTGCCAAAATGAACAATTTCGGCAAATCAATAGCTGTATTTTTCAGCAACTTTCGGTAAACCGGCAGTTCGCCAAAAAAAATTCGGCGATGGTCTCGACTCTAGAGTTGGGCGGCAGACAATTATTTCGGGCAAACGCAAAAATTAAAAATGGAAATTGGTGTTCGGCAAATCGACAATTCCGGAATTGAGAGTTTCCTGTAAATTCGGCAAACCGTTTGCCGAAGGGCAACTTCTCAGAACTGACACCCCTTCCAAAAGTCCGAAATTTTTTTAGCTTCACCCCCTTCCCTCCCTTCTCCGGGTTTTTTAAAAACCGGACGCACCTCTTACAATTATTACAAACACCACTACCATCGTACGTATTAAACGTCTCTCGTAATAAGGGGGGCCATAATATAATGGTTTTTGTTGTGTTTAGTTAGCCTCCTCTCTACTTCTCCACCATCATCAAAGCTACCCACAATAACATTACGATCATCAACTGACTACTTTTGTCTTTCAATATTTGTAGTTGTTGGGTATTTGAATTCTTATCCACTATATAGCTCCATCCCTATGTTGAAAATTTGAAATTTTTGGTAAATTTGAAAGATACCAAGTTTATGTATATTATAGTATATTATCAAAATTTCCGGTAAATTTATATCCTGCAAACCGCAAACCGACAATTCTAGCCGGAATTGGAAATTCCCGGAAAACCGCAATTTGCCGATAATAAATTTGCCTTTCTTGATTCTAGGTAAAATTTAGTACGTGATCCGTTTTTTCTTTGTAATATTAAAATAGGAATATCAAAATTTTTTATTTTTTTATTGCAACTGCAAATTATGTTCAAATTTTATAAAACAATTGTAAGTGTGAATTTGCACACTAATTAATTTTCTTATTGATAGGTATCAGTTTTACTAGCGGGCTATCATGTATGTACCAAAACGCCTACGGCGCCTTCTGATCTAGTGCGGTGTGACCCGAAAAGTGTCGGAATCATCTTTCGCAGTATGTGGTGCTGAAACCAAGCTTTTGAGTTCTCGCCATAGTGCGGCGAGAGGACGGCATGAGGCGGGAGACAGGCTAGTAGCAGGGCAGGCTTCAGGTACTGTGTCGCGTCTGCCTCCCAATCATTTTTTTTCAAAAAGTTGCAATGGAAATCAGATTTTCAAACGCAACCTGTCTTCCCCTTGTACTATCACAACTTTTACTTGATGATAGTCGATAAAACGCTGGTGTGAACGCGGCGAGGTGTAATCGTGTGACAATACAGCATTATTCTTTTTCGCAAAAAAAAACATTCTTTTGGGTATTATCATTCTACCAACGTATCTTATTTTATCGATTGGTTTTTTCTCCGGCGCGGAAAAGAAAAAATTGAAAAAAAACGTCAAAACAAAAACATTTGGAAAATATAAAGGTGGATATAAAAACGGTTTCGAACTTTTTTTTGCCGCGAACAGAGATTCATTTCCTGTTAACCATTCCTACATCTTTTGACGCTAAAGCAAAACAGAGACAGTCGAGACTGTCACATAAAATATACGTTTTTTGGTATACTTAATTATTCACAGGTGCCCCTTTCTAAAAGTTTAATATTTGTCGCGAAAAAATGCAAGAAATGTTTTTTTTCTTAAAACTAAAAACTCGAACTCAAAAATAATAATTGGGTATTTAAACATTCCGGCATCTGGGTCCAATTTCTTCCCGTTCCTGCCCTTCCATTTTTTTCTTCCTGCACTTACTCGAGTATTCCGGGATCCTCTTCTATTGCTGCCATAAAAGTTCTTCCGCTTCACAGAACTGCAGCGTATCCTGCTTCATATCTCGTTGCTGAACTCCATATAGGTTGTCATAGCTCAGTTTTAGACGGATTCAGGTAAACTCGAACTTAATTTCTGTAGGGTCTCTAGGATGAAGTACAGTAATAAGTATACGATGTGTCAAAAATTTGGCCTAAACTGTCATGACGCTGCTATAGATTACGGTGATAGAAATTTGAATATGTATGAAATAAGTGAAAAAACAGTAGACTGAGCCTTACTCAAATTCACATCCGTTCGAGGGTCCATATTCCTGAGTTGTGAATTTCTGTTGGTTGCAATTGCCGTAACTTATAAGGAAATTGAACAATTTGGAATTTACAGCACAAAATTAGTTTGGTGCTTCTAGAGCCCATTTTATAAAATATATACTTGACACGTGGCACTAATAACAACATCTCAAGAAATTCAGGAACCACAATCGTTTCAGTCCGAAGAAGAGTGTGGCGATCGGCAGGCGTGCCGCAGCGAATGGATCGGGTGCTGCTCAACTCGAGTCGGGAAGATCGCCATCCTGGTCATGTCAATCATTGTATTATATCTTATCATATCAGGTTGGTTTAAATATATTACTCAAATTTATCTGAGTTTACAGGACAATGAATGGCTGTCAGCATTAACGCCCTCCGACTCACCACAGGCAGACGGACCTCAACGAGCCGCGGCCTGGTATTAATTTAACAAGGTGTGATTGGGATATTACTATTGTGGGAAATTGCTCGATAATTCCACACTTATTGAGTTCACAATTAATTTCTACTTTATTAACTGTGTTTTTGGTAAAGACACTTTTTCCCCTCCCAACGATAATTCTCCTAGATTTTTTATAAACTTACGACATACTTATGAAGCAACGACTTGATGCGCAAATCGCAAAAAAAAAACAGAAAAATAACTATTTTATGAATATTACCATTATCGTATGGTGTCGTCTGTTTTGTTGTTAGTTTTTTTTTACTCGAAATTTTCTTAAAACACCGAATTCCACATTGAATCAAATTTCTTAATAATTTATTAGACAATTGGCGACTTTACAGAGCCAATCTCGGCAAGTACTCACCGGATGTATTATGTGATGCCTATGAGCGAGCAGACGTTTCCGGAGACTATTGTAATCGACTTTGCTATGATCGAAACTGGAGTTACTTGTCACTGACTAGTTTACGAAGGGCGGAACAAGACTGTGGTCATAGTGAAAGATGGCGGATAGATTGCTGTCTATAAAAGCACCCAATGTTGATGGATCACTTCGACGAGCCGAAAGACATCTGACGGATGCCCAGAGTTCTCTGATCGAGTAGTAGATATGGTGAATGATGAGCTGAGATTCGGATGGCCGAAACACTATCGACGGAGCAACATTTAATGGGGACTGTGGCCGACACACTGTTACGGACCAGGGAGAAGCCATGTCGAAAGCGGATCGATCCTTGTGGGCTTTGTTCAAGCAGCCTGAATTCATCCTGTGCCGAGTGTTACCGTTGAGACGTGTCACGCCGAAGCTCTTTGGGACGTGTGAGTATCAGACTGAGTCACTGGTGGTGTTCAAGATGAAAGGGTATTATACGAATTTGAAGGTGGTTGGGGATTTTTTTTTAAATTGATTTTAAAAATAAAATTTTCGCTCAATCCAAATTTACAGGCAAAAATCTTGGTGCATGTCATGGGAACCCTGAAGCTCTTATACGAATTTCTCGACGAACCCCCAATGGTGTGTTCGATTTGATCTCGGGTTAGCAGCAGCTTATGTCCGAAAAGGTAGGTCCGCCTGTTTTTTTATTTGATTTTTTTTTCCGAAAGAACCTCCATTAATTATTCGAAACTTAATTTAAAAGTTATTATGAATGATTTTTTAAACAAATTTAAAAATTGATGATAATCCAACAGGCCGGAAACTCAAACTGTGAAAACTGTCCCGTAAAACTCCATATTTCTCAATTTTTCTGCAGATTCGTTCTAATGGACGGTGACATACACGAAATCGACTGACAATTGGATTCTCTCCTAAAAGGACGTCTGTGTGAAAGTGATAATGATTTAAGAGTAAAGTACTTGGAGACTGTGAGGCGAGATGCATTTCTAATATGGTGTGGTCGGCGAGGAGTAACGGGAATGGTAAGCTTGAAAGTTGTATGAAGTTTGGAAAAATTGTGAAAAATCAATAAAATCGGCAAAAATAACTAGCTTTTTTCCAGATGGCCGAACTTGTTTTGCATCGTCACCTGTGGAAAAAATTGCTAATAATGCAACAGCATCTTGATGTTTTAGTATTCATAAAAAAATAAATTCGACAAAAACCTTTTTGATTTTTCCAAAAATCAAAATCACATTCTGATGCTCAAATTGAATTTTCAAAAAAAAATATAGAAATTTCTTTTTTAATGCTCAACAAACGAACGAATGTCAAAAAAAAAAGAAGTGAATTTTCCGAATTTTTTCGCTTAAAGAAAAACTGAAAATTTGAGGAATTTCAGTCAGAAATATTTTTTTTTTGATTGAAAGGATTTTATTTTATAGAATTTAACTTCCACTATTAGAAATTACCTATTTACTTAGTAATAGGAAAGTTGTGAAAATGTTAGGAAAATTTTTTTCAACTGTACAATTTCCCGGACAGGCCTGTCGTTCCTTTTTTTCACAACGTAAAAGAAAAAATTAATTAAAAAGTTCAAACTCCTAGTATTTATACATTGATTTTGCTTTAAAACAAAGTTTTTCTTGATTTTTTTGTGTAAAAATTGCAAAAAAATCCAAATTTTGTAGGTCTTCAGCGATAAACTGGTCAACATTCGCTCGTTACAATGGTCCAAAAATAAAAAATATTTGGTCGCATGCCGGGATACAGTAGAAAACAACTGGACTCAACGAATTACGGTTAACAGGGTGGGAATCTGCCGGATGTTTAAAGGAATCTAGCTCTATTCTTTTTTTTTTTCTTCTACTCCATGTGTCAAAAAATCCCCATGTCTTATGATTTTCTGGTGCTTTTTTCCATATTTTGCTTTTTTTGTGTTCTGGTTCATTTTTCCATGGCTCACAGAGCCCGAAAGGAACTTAGGATTTTCAAATTTTTCGTTTTTTTCTCATAAGTCTGTCATCATTTTTTGCTCTGCATCATCATCGTCATCGTCAACTTCATCTTAAAGGTTTTATTAAGGGGTATTATTACACTTTCCTCGAAAAATTTTGACGAACGTATATGTATGCTTCCCCTGCACTGTCTCCTTGCATTTGTACCTTCATTGTTACGGGTTTCAAGTTTTAAAACTGTGAATTTATATCGAAGAATTTTAATTTAAAAAAAAACTTTGTTTCCTTTTATGAATTGTTACAGACAAATTTTTTCTCGGCTTGAAAACTGAAGAATCCTAACCCTGACTAAACTAACTATATGTGTTGGGTATCAGCGTGTATTGGTCCACCCACGACGTCATGGCTAAGAAGATCGTACAACGTGAACTCTATGAACTAACTCTTTATTCCTTAGTTTAGTACACGCTAATAAACTACTCGTCTTTTCCTCCTCGTCTCCGAATACACAACATTATGAAAAGAGTTTTTCTTAAGATAAGAAATGTTCTAAAAAATCGATGGCCGAGTTTCCTGTTTACGCGGGCGCAACAGTAAAAAAGTGTTAACACAAGTGAGAAAACTAGACGACATTTATTTTCAAATTTCACCCGATTTCAAAATGTCAACAAAAAAGTCACAAAATTTAAAATATGAACAATCAATATCCCGCTGGCGCTGACTCCTCCCCTTATCCGAACTGTTCGCAGAGATTTGCCGTCGGAAAGTCGTTCGGCGGCGGTAACAATTGTCAAATTGTTCACTACCTCCATTACGTGGTGAACCACGATCGATCAGGGATTTCAAGACGTAGGTTCGGGAAGTATGGTACCACGTGTAATTTGGCTAAAAAATGAGAGGAAATTGGGAAAGGTTTTGATTTTATTGATTGAAAAATTTCATGTGAAAGTGGAAAATTGATTGATAATTAAATTCAGAAGTTTTTTTTTTGAAAATTATTGATTTTTATTTTTGAGAAATCCACTCTTTTACTTATCGCTTTAACGAACGAAAAAACAATCAAATTTCGCGGGCTCTTAACTGCTTGTGCATCACTTGGAGCATCAACAGCTTGTTTAACATCTGCTTTCAGCCATAACCAGTGCAAATCCAGCAACACCCGAAATAATGGTGGATCCACCGGCTCCGCGACCGCCATAAGCTCCGCCCCTTTTGTGTTAAAGATCACTAATGGGCACTTTGACTACTCGCCTGATGCGTTTTCCAGGGCGAATGAAATTGGCGGGAGACGGTGGGAAACCGAAGAAAAAATTCGGAGGACCGGGAGTGGAACGTCCATTCGTTATTCCACAGAATTCCCGTCGATTCGGAGGATACTAGGCCACCAAGGCTGGAAGAATTTGAGATGGTGGACATAGAGTTTTTTTGGCGTGGCCGAGAAAATGTCTTCATATCCGAAAAAGTAAAAGCGATGGCCTAACAGAAATTTATGTGGCCACCATATAAACCGATTTGAACTGAATTCTGGCCTAAAAATGAAAGATTCGTCGTCCTAAAAATGTTTTTAATGATTGGGCCTAGAATTGAAAGGCATGTGATGGCCTCCAAATTTCAGGTGGGCACCTATATAGACTTTGGTTGATAGAAATTACACGTGGTCCAGATTATGAAATCACTGCGGTATAAAATCCAGGTCTAGGAAAACAATTTACTAAGACTGCCTACCAAATCATCCCCTGGCCTAATTCGTTTAAATTTTTGGTGACGACCTCGAACTTGTTCATTTTTATCAACTGCAGAAGCCTTGCTAGTCGACTGAGGACACCTTCTCACTTTTGGCGCTGGCCGAGTTTTCGAAGGTCGGCGACCAAAAATTTCCTTTAAAAAAGCAACTCACTATAAGTTAATGGTTAACGGTCGAAACGGCATTGCTGTCTGCATCGATAATCGATACATGAGTTGTTCCATCCTGCGGCGGTGCTCGATCCTCCATAGTAATCATCAGGATGCGTCGTGTCTGTGATCTTCGACACTAACCCAATCCGCCCACTTTTGACGTAAAATTTTTTTTACGTCGTTTGCCACAGAATTTCGGGTCGCCAAGCCAGCTTCTAGCCGCATAACTAAATTTGCCGACTTACATTCCAGATAATGATGGGTCGTATAACGTTGCGATTTCGTTGAAGACTTCATGTTATATTCGAAGCGGGCCATCCATCACGTTAAGTATTGCCTGAGCCACCGCTGAGCCCGAGGGAGGCGGCCGCAGACCCCGCACCCGTTTTTCAGCTTTGTGTAGATCACATTTTTTGAGTCCTGGACTATTCATTTGTATTTGTTGATGTCCTGAAGCCGGATGATCCCACCGTTGGCTTCGAACTATTTGGCGAGTTGCTCGGCGAGCCGACCTGTATAAAAGTCGGCGCCATGATGGGATCTGTGACTGAGTTTGCGAGCAGCCGGAATGTCTCTAGGAGCTTTTTGGACGCGGGTTTTTATCTGGTCTCCTGGTTGGAAGACACGCTGAGTTTCGGGGTAGATGAAGTTTTTCATGGTGGGCTCCGCGCGGATTTGGTTAGGTGCTCGTTTTGGTTGAGATGCTTTTGCAAGGTCATGGGTGACATTGGGTAGCCTGGAATTTTTTAGGATGGCCTAGAAACGCCATGAACCGATAACATAGTTACTTATTTTGTGACCTCGAAATTTTCATGATGGCTTAGAAATTTTATGATGACCTAGAATTTCTAGCTGACCTAGTAATTTTTTGATGTCTCGAAATTATTAGTAATGTAATAAACTACTCGTCTTCTCCTCCTATGCAAAAATTTGGGCCCATCTCCCTTCGTGGTGAGACCGATCGAGGCGAGACCTGCCCATCGTGGCGAGACCCATCGTGACGAGACCCATCGTGACGAGGCCTATCGTGGTGAGACCCATCGTGGCGAGACCCTACGTTGAGAAACCCATCGTGATGAGTCGACCCATCGCCATGGTGAGACACGCCGTGGTGAGACTTATTGTGATACTGTTAACGTACACAGTAATTGGAGAAACTTTTAAACTGATTTTTACAAAGAGTTCAACATTTAACTTACCAAGAGCTCAATCCGTTGCCTCGCTTTTTGTTGCGGGATTATTGTTCTGTTGCCTCCATTTCCGTTACCCCTGTTGTGTTGCCTTCGACCAGCGATGAATCCGTTGACCCCCCCCTTTTTCGTTGTCCCCGGGGAATATTAAATCGGTTGCCCCCGTTATCCGTTCCTAGGGCTTGTTGGCCGGTCTAAAAACGGCCACCAGAAAATTTATCAGAAATGTTCTACCGTTAGGAGTTTTTTAGCAGAAATATGCTACCGTCGCAGGAAAAGTGCCCACCTTCAGCCAAAACCCTAATCAATAGTTGGTTTCAACAACCCGAATGTCTCCACTCGTTCCATTTCCGAATCTCTCGAATCCGGAGGCCGTGAAGCTCTCCGGGCACCGCAATCGCCTTCCATATTCTCGACTGATTCCACGTTTGTCACGGTACATTTCCTCTGTTGCGCGGCGACGGGGCAATCTCCCAAGCATCGATTACCGTACACTCTTTTGTGTTCTGGAAGAATTTTAGAGGTTTATAAATCATTGATAATATTTATAGGCCACGGCACAAAGAAGTTTCTAAAGGACACACGCGCTCCTGGCATTTCCTCATAATAGATTTTGAAATGGAAGAGTGCCGAGTTAGCCCGTTTGGACTACGTCCGGGGTAAATTACGGAGGGCGTGCAGACTTGTTAATGGAGCGCGAGAAAAACGCTTGAAGGCCAGAAACCAACAAGGTGAGGCCACAATCATGATGTTTCCAAAAATGTTATTAATAGGAAGATCATTCTTTTGTCTTCCGAAATTTTTCTTCTTTGTTTTCCTGTATTTCGATTATTGACTTTTAGTTGAAGAATCAATACTAATTATCTTTTTTAATTATTGATGTTCCGCTCCAATTCGTGGCGAGACCAACAACTCACGCATTATAAATGTCATAAAATTTCCGCCGCCAATTCCGGCCGAATGTGTATCAATTGCACCGATACAGAAAAGTGCGGCGATTGCCGAATCCACCGCATGTCCGCCTTTCAGCAAAATATTCCGACCGATTTCTGAGCAAATTTCGTTGTCGGCGGCGACGGCCGCTTTCGAATATTTTCGAGTGGAGAAAGTGCTGGTCCAGGCCAACGGGGGAGGCGGGCATTGTGTCTGGAACCTTGCCGAGTTTTATTTTTATGACGGCCACGTAAAATCCAGCCATGAACCGACAGCGGACTATTCTTCCTTTCACCCTCGTGGCCTAGCTTTCTAACAAGCCGGCATTAGTAAATCGGAAAATACAATGAAGCGAATGCGAGTCCTTTGAGATTAACATCGTTCGATTACGAGAACCGTTAAGCCGACCGCCGCGCGGCCTAAAGTACGGATTTTCATGGGTTGCTCGGCCTCGATAAGCGGCTCAACTTCATCAAATGGTCGATATTCTGGCTGTAAATTATCATCGTCCGGAAACGTGTTGTAGTATTGAACAGGAGGTGGGTTACTGCTGAAAAGTCGAGTTTTGGGCGTCAAATTTGATGCATTGAGTGGCCTGATCACGATAATTACAAGATCGCGACATTTTAAGAAGGCGTATTGCACAACATTTTTCACGCGCAGAAATCTCGTAGCGAAAACTACAGAACTGTTTAAATCACGGTAAAGCTTGTGTCGATTTCCGCGGTTTCGGTTTTTTCATTTTTTTTTGTGTTTTTTAATTTAAAACAATTTATCGACTAATGAATGATTTCCGTAGAAATAGACACAAACACTACAGTCATTTAAAGAATTATTCGTAGTTTTTGCTCCTAGATATTTTGCGCTTCGAATATGTTGCGCAATACGCATTCTCAGAATTTTAGTGTTGCCATAATAATTCTAAATTTAAAAATGGAATTTTCAAAATCAGAGGTTTCCCAAAAATTTGAATATTCCACCAAGCATAAAGATGAATCTGAGAGTATTCAATTTTTTGAGCAAATAATCGATTTTCTGGATTAAAAAATTGCGTTGAATTTATAGATTTCTAGTAAAATTTGAATCTGTGCAATCTCAGACTAAAATGTATCGATTTTGATCGACTTTTCATAAAATTTAATTTAATTTTCGAAATTCCCAAAATATTGCCTGTTTTTCATCCCAAAAAAGTCGTATCAGTTTTTTCAACAAATTAGCGAAATTTTAATCGAAAGTTGTTTTCAGAGCATCATGATTTTTGAAAGAATTTGCAAATGTGAGAACTAAAGTACTCCCTTAAAGGCGCACGCTTGTTTTATTTTTAAAAAATTGGTCGTTTCGAGACCTGGTACCGTATATTCGCATTTGGGTAATATTCCCAGCATTATAAATTGTAAAAACAATGCACTTTTTAAATCTTGAATGCATATATTTATTTTTTTCAGAAACTCATGTCGCCTTCGGTCTCGATTCGAATTTATTCTCACAAACGTATAATATTTTCTCGAAAAACCCGCGAATTCTTGTAACATTATTGATTCTCACCGCGTAGATTGCCCTTCATCATTAATCAGAATTGAGTATGAATTAAAAAATCATAGAAAAGTCCAAGCGCTGTCTATTGGAATAGGACGAGAATGCCAAATTGCAACTTTGGCTTCAAGATAACGGAAAATCTTCTATCGCAAAACGCACTAGATAAGAGCTACAGTTTGCTGCGTGTAAGCGCCCTCCACGACAATGACAAACGAGAAGGGAAGAGAAGAGGGGGTAACCGCCAATAGCTCTCTGTATCGAGGATAGTCTTCAAGTGACAGAAGTGAGATATTCTGTGGGGAGAGAGTTGGGAGGAAGGGGGAACAGCGTATAAGGACTACGGAAGAGTGACTTGTAGATTTGGTGTATACGAGAAAGTGGAGGTTTTGGCTGAAAGTCTTTTATTTTCAAAAACTTTTACTTGTAACAACTAACGAGTAGATTTGACAATGAGGATAATATTCAACACAACAGAAAAAAAGTCGATGGGTAACTAATATAAATTAGAGAAAATGTGGCATCGGGGAGAAGTGGGAACAAAAGAAGAAACTGATGATGATGATAGGAGGATAGCCGCGAAACAAGCGATTAACAGAGAACAAGATTCATTTCGGTGAAGATAGAATAACAGCAAAAAAAAAAACAACAACAAAAGTCTAGGTCTTATTGCCCATTGAGAGCTATGCTGAAGGACACTGGTAAGGTGCTCGTCGATTACATCTTGCTGCGCGAATTGTGGGAACGATGCGTACATTCAGGATTGTGACAATTCTTTGCTTGGTTTGGTTGCCGCTATCGTCGTCGCGAGGTTGAAAGAGCCATCGTTGGTGATTGAGAGCAAGCCTGCAAAATACAAATAAATAAAATAAGTTACGGATTTTTTTAGATTAGAACTTACAAACAACGAAGATTCTCGGAAGATCTGATTTTCTGGTCCAAAAAGTGCGGCGTTTATCAAACAATTCGGCGAGACAGGTGTATATGTAGGGGCTTTCCTCGGTGTCTGAATATGGTGGCAACCAGCTCAGGAACAGCTCTACGACCTGGAAATAATATGGAACTTTTTTCTTAACTGAAGTTCTAAAAGCAACCTTTCCGTAGGAAGGTCTTCAGAAAGGCAGGAAGTGGCACATTGCGATTTTGGCTAATGCAGAAATCGCGTTTTCCGTGGCAATTTACAGTGCTCTCCTCGGTGGCGCGTCCTCTCGTTGAATCATGGCGGCCAGTGGCCCCAAACAGCCCAAAAACTCGTTTCGTGGTGGCTGATCTGGCGCTAGTTGATGGACATAACTCCGAAACCGTAGCTCGCTTCTGGTCTCACTTCAGGATACTCCTGATCTCCCAACAACATGTACATTATTGGGAAATAAGCTTCGGGAAGTGAATTGGGATATGTCCGTAACACCGAACTCGATGGCGTCATCGAGTCTCATGGCACATTCCCCACTTGTCTCTCCAAGTTGTTTGAATCCCTCGATGAGTTGAACGGCACATTTGAACATGTTGATCATTCCCTCGAAGATAGTTCGCTTGGACTCCTTCATAAGCTGAGAGAGAGTCAAAATCGATGGCCTCTCCAAGGCCTGAGGCCTCCATTATTCCATGAAATAATCGAAATGAGCTCCTCATTAGCTTTACAGCATTCCCTATTCATCGTCATCTTCATCTTCAACTGGACGATCGCTCATTCTCTTTAGTTTTCTGCTCGAGCAGCACCGAAATGATGAGTTGAAACTCTTCTAGATCTCGGCGATCCCCTCAGTTTTCATCCTCAATGAGCCGATGGTCGTCATGTACGAGGCGAGAATCTCGACATCGTCCTCCTCCTCCGACGTCAATGCCTTCAAGAACTCGCACCAACAAACGACGCTTGACAGCCAATCCTTGCCAACACAGGTCAACAAGCATGGCATGATTTCAGCGCCCGTACGGAAACTCCGTCGTGAAGCCCGAAATACATCCGAGATTCTTGATGGCGTGCTGGTAGTCGACGGCGTGTGGCATGAAAGCCTCTGGCCTTCATGTCCTTGGAAATCGAACGCGACAAGCATATCGCAAGCAGTTGCCTTTTCCTCAACACCTCTGGTGCGGATTCCGACAGTCTTTTCTCCTCCGATTCAGTGGTATTCAACTCACTTCCTCGTTTTCGTGAACATCTTCGTCTGAAATTTATATATTTTTTTAACACGTAAAACTAAAAAACACTCACTGTTGAATATATTGAATTCTAGGCGGTAACGAGCGGCAAGAAATGGATCCATGACACCTGGGAGGAATGGTGCGAAATCGGCTCCAAGAAAAGAGCAGAAACGAGTCCATGAGCTGATCATGTAGCTGTATTGTGGATCACCGATAGCCAAATCACGACTTCATGTCTCCGAGAAGGTTCAGGATCTCTTCGATTGCAGTAGGGTGGAATTGTTCCTTTCCGACAGCATATCCGATATGAGAGAGATGCATTCGATCGTCTTTCCTCTCAACTCCTTGAGCTCTCCGACGTTTTGAAGAATGTGAACGAGGTTCGGGATGAGGCGAGGCCATGATGTTCCTTGAAGAGCTCCTCGGCGGCTTCAGCGACGGAGGCGATGGGCAACGGTGACGATGTTCTCAACGACAACCTGTTATGTCTTGTCTCCGACACGAATTGAACAGAGCGGAACAGCATCATTTTCGAGTTTCTGAAGAATGAGTAATGGAAGCTATTGTCCAATGATTTTCACTCCTCAAAGTTGACAAGAACCGAAGCGGCATGAACAGACACGTGGAACATCGGTTCTCTAAACTCGACAAGAGCTGGGTATGACGGCGGCGTGGCACTTCTTCTGAAGAGTTGGAACGAAGTCAGAAGACATTTGTCCGATGGCGTTGCAAGCCTCGTATTGAACTCTTGGATGAGCTTGACGTAATTGGTGATATGAGCCATAATTTGCTCTATGTGCTGGTTCCACAGATCTCACCCTTAAGGCGGACAGGCGAAGAGCCGCGTGCTTCATCTTCCAGTCTTCGCTGGTCAATAGCTTCTCGACAAGTGGAAACACTGGGAGCACCACCTTTCCGTTGAGGCAGCAAGCAACACGGTAGATGACGCGCTTTCGGCGATGATTGGGATACTGAAAAATAATTTAATTGAAGAGAAAAACTAGAAATCTTAATCTTCATAGTCTTCTTCCTCTTCGATCTCGTTGAGCCACTCATTGAGCACATCGTCATCCATTTCGGTCATGCAGGAAAGAAGAGTCTCGAGTTGGTCCAAGAGTTCACTGCTGGTTACGCGTATTTCTTGAGTCCTTTTGGTGCGCCAAGTACGGGCAAATATACTTCGATGGCGTTCTGACGGACCATCTCGTCCTTTTCCTTGTATCCAGCATGAAATCTGAAAAAATTAAATTTTTAAATGGGGCCATTTATATTACTTACAGCAAGAGTGACTTGAAGAACCTCGGCTGAGACCATATGAGTGTTAAGGCATTTTGGCAGAGAAGAGGCGGGCTCGGCGAACTCTCCGAGTCGTCCATGTGTCCGCGTCGCTGGTTTCATCGCAAACTTGAAGGCTGAACATTGGAACAAGAGAGGTAGCCTGACACTTCTCCTCATCATTATCAACAGCGAAAGCGCTAACAGCACGGACGGCGGTGGCCCTTGATTTGCAAATCCGGTGTAAGCCATCAGCACTTTTCCAAGCTTTTTGGAAGGATCTCAATGGGCCAGCCTGTTTCCAAAAATTATTGAGGATCTGCGAAGAAGAAGCAGGGCTATGTAGTTTCCGGTAAGATCCTCTTCAAACCATGATCCATCAGCGGATCGAGGACTCCTCCCCATGTCATATCTCTCGTGCGATGAGGTTTGAAGCGATTTACGGCAGAGGTATCAAATCAGCAATCTTCTTCTTAACCGAGAGTTCGGCGTGAACTATGCAGCCATCTCGAGAACTCTGTCGAGAATGTGCTGTTCTGCTCGTTCTGCGCAGCGTTTCTCGCATCCCAGTCGCTGGCGAGAACTCGTCGCAACCAAAACTGATCTGGCCTGAAAATCGAAAATTCCTGGACTATATACGAATTGAGTGAACTAACATCAGAATTATTCGTGTGGTGGGTGTAGGCCTGGAAAAGTGCAGCTACTCTTCCTTGGTTGGTGTCCTTCAGACGCATCTTTTCATAGACTTCTTCAGCTTGTTTTCGGATATCATTGTCTGCTGACTGCAGTTCTGTTGAGCTCATGCGTGAAACCTTGATTGACGTCCATTGTAGGGCACCCTGAAAATCAGAATATGTGCTAAAAATCCCTCTTCACAATTGAGAAGGATACTAAAGGATGAAAGCTAGTCGGTTTTGCAGATTAACGCCAGACCGGGAATACGCGGAATCTCGATGAGCACTCGAAAATAGATTTTTACTATAAGAATTGTCATTTGCAACAAAACCTATCGTAAAATGTGAAAGATAGGCCAACAATTATTGATTTGGGACAAAAACGCCTCGAGTGCACGATTCTTAACGGAGCGCACTTGCTGCGTCACACGCACCTTAAACTGTACACGGCGGGAAGTTCCAGTTATTAAAAGGATTCCCGTGATTTTCACGACATTTACTGGTTTTTTCAGCGAGTTTTCGCATCTTTTCTGCGACAAGCGATGATTATTAATGTTTGGAATATATGATATGGTAGCGTGTTGCGATATAAAAAATCGATGGAATGAGTCCGCATCAAGAGAAACTAATATCTGCATAGATCGCACTGTTTGCAATTTTGGCTACATTGGCCAGTTCACTGACAAAAAAAGAAAAAAAAACGGCAACATGAAATCTCTAGTACCTATTCCAGGCAACCAGTGTCTGGCGACGATGGAGTGTAATTCTGAAAGACGCAGTATTGAAAAGAGTGTGTTTTTCGCTTTTTTTTTCAGACAGACGAGTCAAAAGAGTAAATACGTCTCAGTAGTACAAACAATGTGCGGCTGCGAAATCAGTAAAAATTAACGACTTGTGATACAAATTCCTCAAGGAATGAAGGAGAAAGTGTACTTATTTTTGAGACCCGAAGAGCTCGGGGGATGTACAATTGGGGGGATTACCAACTCGATTGGCCCCGCCCACAGAACCCGACGTGGCTTGCAATACGCCCATTTCTGCAACTGCCGCACGGTTTTAAAACTGTACTTTTCTCAATAGAGCGAGATTAAGAAGAAAAAATAATAAACCGTGCGGCAGTTGCGGACATGGGCGTATTTTGGGGCAAGCCACGGTTCTGTGGGCGGGGCCAAACTCCCGAATTGGTAATCCCCCCAATTGACATCCCCCTCTTCGGGTCTCCTGTTTTTTAATTTTGAATTGAAAAATTGTCCAAGCGCACACGTAGAACATCAAAACCAGTGGAGGGGCGAAATTTGATAGATCGCATGTGCAAGAATGAGCATTCTACGAGTTGAAGTCGCGCCACTGCTGCGTAATCGGGCGCGCACAATATTGTGCAATAAATCTCGGTTATTTGCGTACATGCATCATAGCTTAGACGCGCAAATCATATTAGAAATTTCCCCGAAACACGGGGAGGCAAAGCTAACGTGGCCGAAGAAATTGGGTCTACAGTAGTCCCATTTGGCTACTGAATATTCAACGCGAATAAGTTTTGTACACTATTGCGTACTTTGCGTACGGTAACGCATTTTATGCATTGACGACAATTCGTCAATTTCAGCTCAGCCTAAAAGCGCTTTTCGTCATTATGTGAGCGAATAAAAGTCGAAAAAAACTGTTGTTGTAGAGAAAGTAATTTAATAAATAAAAAAGTGCATGTTTTATGTTTCTCATTATGTTTCCACTGATTTTCTTAGAAAAACCGACAATTTCCTCGTTTTTCGAAGAATTTCCGCTGAATAGTTTGTTTTTATCTAGTTTTTCTTCCGATACTGAATAAGACATTTAATAACATCAAATATAACGTTAAAAACATTAATTGTCTCGAAAACCAATATAAAACTCGTCAGAGAGGGATACTTAGTAGATATGCTGAACAAGGAAAAGAGAGAGAAGAACATTAACCTGAGAGGGGGGAATAAGAAATCTGAACAGGAACGAAATAAGAACATTATTAGAAAGAACCATGGTTCCCTTGATCTTCTTGGCAGTCGTCTCCTTATCCTATCACTTCTTCTCGGCGTCCTTCTGATCACGCTACCGAGCAACGTGGCACGATCGAAGGGTTTCACAAGCACGGTTCGATACCGCTCCACGAGGGGGCTCCCAATTCAGCGAGCCATGGTCCTCTCACGAAGTTGAATTTTTTAAAATTAAAAAATAAGTAACGTCAAGAATTCCATCGAATTTGTGCTCCTTTGCAATAAGACAAATTTTTTTTAACGGACTTGAACAGGATCATTGACGGCATGAAAACGGCTTCCTCGTTGAACCATGTTGAAGCTCCTTCACCAATGCACCTGAAACAACTTCTAAATTTCAATTTAAAGAAAATCCACACACTTATCCGTCGGAAACGAATCCAATATTCTGGTTGCTGAGTGGAATTGCTTCAATTGATCTGTTTTTTTTTGAAATATTCGATCACACATCTTGTATCCACCAGATCGCTGAGTGCTTTATGATTCAGAGTCGCGCTTGCCAACCTCTTCCATCAGCACTTCTTCTGCTTGGAATTTTGATTGCTTTCGGACCGATTGACTTGTAGTTTCTTCTAATAGTCGCTGATTGAGCAGTCGACCTTGCAGTCCTACCGAGTTCTTTGGCTTCTCCTGCGGCACTTGAGCCCTTGTAAGAGCAGTTGAAATTGCTGCTTAACCTTCCTTATTAATAACTTCTTCTTGTTCGCATCTATTTCGAATTTTGTCTTGAAATCTTCCAAAGCAGCGACAACGTAATATCTGGAAATTATAAAAACATTAAAAATATTTTGAAAAAAAATCGAAAATGGCTGTATTCCTAAATTTTTTATTAAAAAAAAAAATGAGATACGTGAGTTATCATTGAGTTTTGAGAATTAAATCAGCATATATTTCTCCATATTTGAGTAGGTTATCAGAAATATTTACCATAATTTTTGGAAAAATGTAATTTTTAATTCGAAATTCGCACCGAATTTCGCGAATTTTTCACTAAAATCGAGAAAATAAATATGAAATACGCGTGTTTGAGGTTCAAGGCTTTTTAATTCGGAATCAGCATATATTTTTCGATATTTGAGTAGATTTTCAGAAATATTGTACCATAATTTTTCGAGATTGATAATTTTGAATAATAACTTACTCTACGATTTTGCCTTTGTCCGTTTCAATCCTCGAATTTCGAAGCGGTTTGCGTAGATTAGCTGAAATCATTATGCTTATCCCACGTAGTAACAAGGAAAAACAAGAAAAAATAAGCAAAAACGTGGAAAGAAAAATAATAGCATATCAGTCAAATTAAAAATGTTTATTCGATCAAAATTCTTAACCATAGGAGGCGGTGGACTCTAGCGGGCGCACTCTCGCGGCCACGTTAGCTTTTCCCCGTGGAAAGGAGCCATGATAACGGAAACACTATTTTCTGAGCACCCGAAATATATCGTAGCGAAAGCTACAGTAACCCTTTCAATGACTACTGTAGGGCTGGTGTCGATCTTTACGGGCGTTCATTTTTAAAATCATTTTTTTAATCTGTTTTTTGTGTGCGTCACTGTCGATGACTAAATTATAAATTAATTTCCGTAAATCGACATACAATCGCTACAGTAGGTTCATTTAAAGAATTACTAGTTGTTCGCTACGAGATATTTTGCGCGTCACTCCTTAGGTTCAGGCCACCAATTGTCTTACACTCAAAATCGACGTGAATTTCTGTGTATTTGACAGCAAAAGTGACGTGACAAACAATTAAATAAGGCAATTTGAAGAGTAAAAAACTGGGGAACGATGTGAGATAAGCCAAGAAGAAGCGGGGCTTCGACAACGTATACTAATCAGAGATGGAAAGTAAGAAATCAACTTGAAATTTAAGACAAAAAAGTCAACGGGGGATTTTTTTTAGAGAGAAGCGAGTAATCGGGCACAGCAGGCCAGAGAAATAAAAAGATAATAAACAATTGAAAAAATATATATATCGAAGGGGGAAATTATTGCTGAATAGACTGCAAAGAGGTGATCGGACGGTACAGATAAACGAAGTGTCTCTGGACAATTCCGGGTCCACGGACAAGAACGGCCTGCGCACAGTAGGCCTTGTGGTTGACGATGTTGGCAGCGACGGCCGGATGCTTGGGAGCGTAACTCAGACGACAGAATGGGTTCACAAATTCTCCCCGGCGTTGTACATTGAAGCTTGCTCTTCTTCTGCTGATAGGACGGCTTCGCGGAGGCTGAAGCAGCTTCCAGCGGCATTGCCACCTCGTATGACAAAATGTTCCGTATTGACCAGTGCAAAAAAAATTTTATGAGAAATTGAATTTAAAATGATTTTATTTGTAATTTACTTGTTTTGTTAATTGGTTCGATAATTGTTTTTTTTTTGGGAAAAAACCGAAAAAAAAATTAAAATCTTTCATTTTTCATTTAATTTTTTTGTTGAAAAATCGGCAGTTTTCGATTTTTTTTGAAAGAATAGGGAAAAGTCAGTAATTGTCGATTTTTCAAAAAACTGAAAATTCCAGATTTTGTCAGGACAAAAAACGAGGAATTCGACAATATTTCAATTTTATTTTTTTAAATTTGCGTTTCTCAAATTTTTTTTTGATATGTGATTTTTCCGTAACTTTTCTCTGGAAAAAAACCGACAAATTTGCAATTTTTCAATTTTTTCCAAAAAAATCTAAAAATAGAAAATTTTCGATTTTTCCTTTTCTGAAATATTTAAAGTAACTTCCTATTTTTTTTAAACGCGTATTAAAATTTAAAAAAAAAATCGGAGAAAAAAAATGAATCGAAAATACGATTTTCAATTTCCTTTGAAAAAAATAGAAAAAATCGTAGGAAAATTTTCGTTTTTCGATGTTTTTTCTGGTTAACCTAAATTTTTATTACTAACACAATGCTGTCGGCTAGCAAATTACCCATTCCAATGGCAATAACGATTCTCACCCGCTTTGTCGTTTGTTTCAGGCAAATCAATGCATACGACCTTCTCGATGAGCATTCCGAACATGCCATTCTGAATATTCTCACACGAGTGAACAAGATCCTGTGCACTCCGGGCGTTCGTAACTCGACACAAGAACACGACGAATAGCTTCATAAAGGTTTCGCCAACGATTGAACTCTTCGAATAAACATTGTATTGAGCACCAATGTTATCGCGGACCACATCCTCGGAGTGCTCGATGGACAGAATCGTCGCCGTCAACTGTAAACCGTACATTGATCCAAGGCTAGTTTTGGAACAAAAGCCGCCCACATGGCTCAAGATCAACCCAGAATTCTCCGAGACGACAACTCGCTGAGCATTCACAAGGATCACTTCGATAGAGAACCGATAGTGCCGCGGGAACTTCGCTGATCTCGCCCAAAGACGTTCGGATAGCAGAAACGGAAGAACGGTGAGAATTGATTCGATGAAGGAGTTTCTAGCGATACATGAAGACCGAGAACTCGCGTGATTTGGAGGGCATATCGGATCTTCCCCTCGCGGAAGATCACTTCGTTCACTGAATGAGTTGAGCAACCAGAGAGGCGCCGATTGTTCGGTTCTGGAACAGGAAATTCACTTGTTAAAAAATATAATATGTTCTTAAAGCTATCACTATTTTTTTGAATAAGAAAAAAAATCACAAAAACTGGAATACACGAAAAAGCAGACAGAAATGTTTTTTCCCGAATCAGTTCCATATTGCAATTTTTAATTTTTTTTTTTCAGAATTAGCGATTTCCTCTTTAAAAAAATTCAGAAGATTCTATTCGATTTTTTCGGAAAAAAACAGGTCGAAAAATTGAAAAAATTCCCAAAAAGTTTGGTGTTTTTTTTCAGTGAAAATCTTTCAATTTATCGGGGTTTGTTTCGACAAAAATAATAAAAACCAGATTAAAATTTTTCAGTTTTTAGTTTTCTTTTCAGAAACATTGAATTTTTTCAATCCGAAAAATTAAAGAAAGGTATATTTTTTGAAAACACAAAAACGGTGGAAAAGTGTTGGTTTTTTGTAAATTTTTGCGTTTTCCAGCAAAATTGCCAATTTTTCCGAAAATTTTCAGATCGAAAAAATATCGATGTTTATTCTCCGAGTTTCAGCGATTTTTTTTGCAGCAAAATTTCAGATACCAAATTTGACATTCAGTTATGTTCCAATTTATGAAAAAAAACTTGAGACCAAAGTGCGGCACGGAAAAATGGGCGCAGGTTGAGTGGTATTTTTCTCTCAAACTAGTCCTTGCCCTGGTGATCACCGTCTCAAAAGTGCGTGTGCAACGAACTCCGCCGGATTTTTCGTCGCCGACTCCTGGCAGACCAACTGGAGCTTGACCGCAATCGCGGCCGCATGCCGAATCGCGTCGTCATCGAGAATCACTGATCCTCAAAATCGCCTTGATATCATCAGCTACGGCGAGTTGCGCTTTGGCATCATTGTCGAACGCGGAGGTTATGAAGAATCGAGGAGACTGGAAGAGAGCCGCGAAGATTTTGTTGGAATCAGCGAGAAGGATCTTTTCAATAGCGTAAGCTGCGGTACTTGTGGAATCGGAGTATTCGAGCTGAGAAGCGCGTCCGCCGACTTGATCGCAATCGGTAAGGTGCTCTGGAGCTGTTTCCTGAAAGTGACCGCAAACTTCAGTGCATCAGCTTTAAGGATCGCAGTCTGATTGAGATCGGTGTTGAGGTGTGTCTTGTGTGATGAAAAAATGAAGTCGTTGATGTCCACCAGCGGGTTCGTCGACGTTACTCCACTCTTAGCAGTCTCCGTCTTCACCGCGATCGCCGTGATCAGCGAGTAGACAATGTCGATCTTGATCCAATCACCACTTGCAGGTTCTGCACTCCCCAGACATGGAAGCCGCCTCGAATCTTCCGACAGAGACCTCGCGCAAGATCGATGGCTCAACGGCGGAGTTCCTACATCGGTACCCTCGATGTCTTGCCGCTTAATATAATCCAGTGGATCAGCCTCGATCAGTTCCATATCCTGTTGACGAAGCAGAAGCTTCTGAACGCACACGTTCTCGAGAGTCTTCAGAACGCTTTCACCAGTGAAGTGTGTAGTACTGTCACTGGCTGACCATCGACAGCAATTCCAGCGCGGCGCACACCATAGTATCGTATCGAGTGTCGGGGCCGGTAGACTTGAGCAGATTCCAGACGGCAAGGAGGATGTCGGGCACGAACGGAGATCTCTCGTTGCGTCGCGAGTAGTGCGCGCAGATCTCACAGATCTCGTGCTTAAGCTCGTCCAGAGTTGTAGGTTCTCCCGAGTTGGAGGTCTGCGTCGGCGCAGTCGATTTGCACGAGATGCAAGAAATGTGGGCATCCAGTGAGACTCATTGATCCTCGAAGGCCTATTCCGGAATCCCTGTGAGCACAGAGAATGGTAGACTTTTGCAATAACTAAGACTCGGAGCCATTGGGCGATCACGTCGGCTCCGAGTTGATCCTTCCGCTGTCTCACCTCCATCATGTTCCGTAGCAACAGAGTAAGAGGCGATCTTGGGGCTGAAAAGGTTCTTTTCATTTGTAGCAAAATCTGGGGACAGGTTTTCGGTCCAAATTCGAGACTGACATTCAGATTTCTTCAATGGCTCACCTAAAAAATTTTGAAAATTTGTCCATTTTTATAGAACGAAAATTATCAATTTTCGCCAATAATTCCTCATTTCAGCGTTGCTTTAGTTATAATTTTTGACTAAAAAATCATAAAATGTTGAATTTTTCACGATTTTTCGGAAAAGGCCAGCTTTAGCTAGCTTACAATGTCTAATTTATTTTTTAGGGTCAAAGCGGACAAAAATTCACGACGGCTGCGACGATTGTAAAAAAGTGGCCCGAAAATAGGGGATTTCGATTAGCTGAGCCAAATTTTGAGCCAAGCAACTCACGCTCTGTAGACACTTCTGCGTTCAGCTCTTTCCAAAGCTCTGCTGACTTGGATTCGAAGCGGAATTTGCGGAAAATCTGCTCCATGCCAGCGGTAGGACACCAGGTGATCGAGATCCGCTCCGTTCAGGCATTTCGACAAATAACCAAATCTGGCCATTTTTAGGGAAAATCTCTCTGAGCGATGTGATACAGAGCATTGGACAGGATGCGTTCCTGAACACTGGATTTTGTATTGAACATCGCTTCGAGAAGCGTGCTTCTGAACTCTGGCTCCTTGTCTTCCGGGCCCATTTCTACCTCTGGTGCCGGGAAACAATTTCTAAATATTCACGGATTTATTCAAATTTTCCAACCCAATTTCTATTCACAAAATATTTCAAAGGGACAGCCGCGGCGATTCGGATCTGTGGAGCTTTGTTGCTGTTTGACCACCAGTTGAAGACTTTGAATGATATAGCGTGGATTTGAATGCAGCGAGCGGAGCGCTTCTTCTCTTGCGTATCGCAGCCTCCGGCTCCAGAGTCTGCTGGAGAGCTGCTTCCCGATTTGCTTCATCGGGCAAAATTACCTAGGGAAAAATAGCTGTTTTGGGGGTGAAATAGGGAAGAATTGGGTAAAGGACAAAGATAGTTTAGCTTAAAACTTGGAATCATATTCCGGTCAAATATTAAAGTTTTACGCAACTTTTCGCACCCGAATAAACTCGCTAAAATTCGCAAAAATAAGAATTTACAAAAGTGTGAAGTGTTTACAGCGCACCCGACCCGACGCGCAAATTTTCTTCAGTATGTTTCCATCGTTTTCACTGATTTTTACTGTTTTTTATCCTAGTTTTCCCTTGATTTTCTTCAAATTTTCCACTTTTTCAGAAACGTGTATTAAAAAATAAAGCGTTAAAACATTTCAATTCCTTCAAAACTTTGCAAAATAAAGGCGTCGTTGCGTACAATGCGCACGACTTGACGCGCAAACTTCCCAATTTTTAGTCTTAAATTTTCCTGGATACCACTGGTTTTTTCTCTGTTTCCCCCTTTTCGCATTTTCAGCAAACATGGGTGTTGATAAAAAGCAAAAGAATAACCAATCCATGCGAGTTAAATTTTAACAAATGCATAGCATGTCGTGAGTTTTTCAGAATTTTGACGAAAAAATCGATTTTGCTCGCAGATTCTCGGCCGGACTAAAAAGGGCGACAAGGAGCACCGACTGCGTCACGAAAACGAGCTCACGAGCAACGTGGACAGACGCTAGGCGTAGAAATGACCGGATAAGATTAGGAAAATTGTCGACAAACGGGTCGGCAGGGAAGCAAAGAGACGGTCTTGAAAAAGCGAGCAACGAGGAGAAGGGCGCGATTAGATTCACAGATGAAAGAGTCAAATGAATTAGAAAAGAGCATCGAAATTCAACTTGACAGATGATGGATATGAGGAGGAAGAAGGTTTATTCTAAATTGAGAAAAATTTTAATAAAGTAAATTTCAGCACTTACTCACAAGGGAAAAGCGCTCTCAGACATTGAAAAATACGACAAATGATTTCCGACTCGGAGATTGAAGAGGCAGGAAATTTGGGCTCAAATATCGTAAAAGTGGCTCTTTTCGGTGGTGGAGAGAAGACCGCCGAGGAGCAGTCCGCGAAAAAATCACCCGAGAGGATATGATTTCGAATTTCATTGCGAAAACGAAGCTGGCGCGTCACGAGAACAGCAGCGTGAAGGATGAGCTCGAGCTGATGACAGAGTCGTTGGATCCCAAGTATCAGGCATGGGCAAAATACCGGAGGCTTCATTTGGGCCGACCGGGCGCCAGCCGTTGACAGAAAAAGATGATTACGACACAAATTGTACGGGAAACATCCCGGTTTTCTCCCCGGCAAATTTTTAAGACAAAAGATAATTATAAATTTAGAGTGAAAATCGATTTTTTTCACAATTTATGAAAAGCTAAAACCCAAAAAACATGATCTGAAAATGCTAATTTCAATTTAACCATTTTTGCGATGGAAGATTAATCGGAAATTTTCATTAATTTTGCTGTAAAAGTTGAAGAAATCCAAGTTTTAGCTCTGTAATCAGAGAAAACACTGTCAAATTATTTCGGAATTTGTGCAATTAAGTGAAAAATAAAAGACATGTAACTAATCGCGAAAGAAATTGAGCTGAACTGAGAATTTTTTTGACGAAAAATCATTAAAAAGTCAATTTTTTTGACAAAAATTCGAGAAAAGTAGGTTTTTCTTTTCACAAAAATGACTGAAAAAGGCAATTTTTAATTTAAAAAAATAAACCCATTTTTCGCCTAAAAATAACTTTAAAGAAAGCCGTCGTTTTTTTACAAAATACAACAATTTAAAATAGCTATGTTTTCGACATAAAAATTAAGAAAAAGCCAATTTGTTTAAAAAATGATAGAAAACGGCTTATTTTTTGTTTCGTACGCCTAAAAAATCAAGCAAATTAGGTTTTATTCCATTTTATATCAAAAAATTATTATTTTTCCCGACAATCACCGTGATAACCGAAGCCGCTCGTGCCACCCCAGCAGATCGTACGCTATCCGAAGAATAATGGAGAAGCTCTGAAAGAAAAAGAACGTGACTCTCGAGGCCGCCCGTTCGATAATGCATTTTTCAACGCATCTGATTTATCATCGCCGATGCCGACGTTGATATCGGACATGCGTTGGATCGAAGGCCGACGCCAGAAAAGTTCAGACGGCGAAAAATGCCAGATTTGAGGTTTGACGATGAAGGTGGCCTGATCGATGAGGATACGGTGGAAAATTCCACGATTTTAAAGAAAAATCTGGATGGTTCTGTTGAATCTGAGGATGACGAGGATCTAGAAGATGAGGAAGAGGATCTGGATGATCTACTGGAAGATGATGATGAGCTGGAAGAGGTGAGATTCCGATGATGTGGAAAGTAAGCCCCAAAGGTCGGCAACATAGCGAAAAAATCTGCTTACCAGAACCCGCTGAACTCTGCCATTCGTATTCGAAATGCCGAAAAACTATACAAAATTCTGAGCTCTTCTGGAAACACAGGAATCGATGGCTATTTAGTGCTGCAACTCGACTCGTGAAATGTCATCATCCGAGCCTTAAAGAAAATAAGAAGCGTCTGAATAAGCTTTTCCTCTTGTGTTTAAGATGGTTTGATATGTGTCGAAGGAGGAATTGACAGCGGAAAGTGTGAAGGAAATGAATTTAGCGCAGGAAACTTATGGGAGGCATGCGTTGTGGTATGAAGGTAGCGATTGGGGCTGGAAAAGCTGAAAAATTACCGCACTTATTAATCTGAAAATTGAAAAAATTCCAGAATTTTTGACCTAACATTATGAAAAATTCCCGATTTTTAAACCCCAAAAATTGCAAAAAAGTCCCGATTTTTTACCAAAAAATGTTTTAAAATCCCCGAATTTTTTACCTAAAATTGAAAAGTTTCGCTATTTAGACCCAAAAATTGCAAAAAAGTCCCGATTTTTACCAAAAAATGTGTTATAATCCCCGACTTTTTGACCTAAAAAATGCAAAAAGTCTCGATTTTTAGACCCAAAAACTGCAAAAAAGTCCCGAATATTGTTACCAAAAAATGTTTTAAACCCCGAATTTTTGACCTAAAAATTGCAAAAAAGCCGGTTTTTTTACAAAGAAATGTTTCAAAATCCCCCGATTTTTTGACCGAAAAATTGCAAAAAAGTCTCGATTTTTAGACCAAAAATTGCAAAAAAGTCCCGAATTTTTTACGAAAAAATGTTTTTAAATCCCCGAATCAATTTTTTGACCTAAAAATTCTGCAAGATAAATTCCAAAAACTTTGGCCAAAAAATTAAAAAAAATACCCGAATGTTTGACCCAAAAATTGAAACAGAAAAAGCCCCGATTTTTTCAGAAAAATCATGTGAAAAAACCTTTTTGAAAATCAGTCTCGAAAAAAAAAAGAAAAACCAGGAAAATCCTGAAAATCAGAAAAAAATCATTAACAAAAACTAGGAAACGATCATGGAAATATTTTTAAAGAAACATTATATAAAAAATCATTAAAATTTCAGAAAAACAATATGGAAAATCCTGATAATAAAGAAAATAAAATGCTCTATTAAAAATTTAAAAAACCAAAAAATTCAACAATTGAAAAACTGCTAATTTCAAATTGTTTTTTGCATTTCGACATTCAATACGGAGTCCGATGTGTGCATGCTCTAATCTGTCAACACTGGAAGCTAGGCCGCCAGGACAACCAGAAGAGTAGCCCAGTGTTGGATTAATCTCTCAATTCGTCTTGTCTACGGCCTCTTCCCAGTTGCCGATTCCTGGCAGCCAGTAGTGGTTCCGGCTCTTTTTTCAACTGAAGCACTTTGCTCGGCGAAATGTGCCAATCTGACTGTGATGCGTTGGCTAAACAAATTCATAAGTTGGCTAATGCTATTCTTGGATTGTGTCTGAATCCAAGAGGTAATACTTGGAAACGAACATTTAAATAGGCAAATTTTGAAAAAAATACTGAAAGCTTTGATATAGAATAGGAAAAGAAACGAAAAAAAAAGCCAAAACCAAAACCCGCAAAAATATTAGTTTCAAAAACTAACGAACCTCAAACCCAAAATAAATTCAGAATTGTTGCTTAAAAAAATCGATTTTTCTCGATGAAAAAAGATCTATAAAAATTCAAAAAAGCAATTTTTTAAAATATAACTTGATTTTTATTTCTGAAGTTAATTTTTTAACAAGTAATTGCATTAACTTTCCATTTTAATGTTAAAAAAAAGCGAATTTTTCAAAAATTGATATTTGTTTTGGCAATTGTTAGATCAGAAAACATTGAAAAATACAAAAACCCCGTTTTGTTTTAAATTAATGGTTTTTTAGAAAAAATTGCAATTTTTCAAAAATCTTGGTCATTCTGTCTCTAATATTAAGTCTCCTCGTCTCTTTGAAAAAACTTTAAAAAACCTCCGAATTATCTAAGCGTATCAAAATTTTTGAAATTAAAAAAAAAACCGTACTCGACATTTTTACGAAAAGTTGAAAATTGTTTTAAATAAAATCAATTTCAGATACGTCCCCGAGCTGGTCTTGCTCGAAGTGCACTTCTGCTTGCAAGTTACAGAGAAAAGTGAGAAATTCGCGACAAATGGATTCCCGATTTCCAAGCCGCACACGGTGTTATGGAGGAGAAGGTAAATTTATAAAATTTGTTTTTTCAATAAAATGTTTTCTTTTGGTTTTCTTTAAGAAGATTTGCTTAAAAACGCTCAATATTTAAAAAACTGGCAAAATCGAATTTTATAATATAAATTAACAATTTTGTTCAAATAAAATTTTTTTTGAAAATTTATTTTTGAAATTTAAAATTTTGAGGAAATTTTCACAAAATTGCCAATGATAAAATGTTTACTTTTTCTTGTATAAAACTGCTTTTTTTTAAAAGCAATCCGAATAATTTTTTAATAGATTGCAGAAAAACCGAAAGACCTCCGTTTGAAAAACGAAAATCAGAGTCAGTTTTTTTCCGAATTTTCTATTTTTCAAATTAAATGTCGATTTTGCAAATACAAAACGGTTAAAAAAAAACTAAAAAAATTGCCGAGAGTCCAAAAAAATATTAGTTTATTTTGAACTTTTTTTTTTAGTAAACACGGCCGCCTTGGCAACGAAGGGGGAGGGATTGCTTGCGCGTTTCGCAATGCGCCTTACGCGTGCTGGCGCACTTCTGAAAGCCTTATTGAATTATTTTTGCGGAAAAAATTCATTTCTTCTATGAAATTTTCTTGAGAAAGCTAAGGAATGATGAAATTTTATAAAATAGTTTTCTCAGTTAAAAGGAGAATACCTTGCTGCAAGAGGTTAAATTTATTGAAAGAGAAAATAAGAAGTTTATCTTTGTTTTGACTACATAAAGTGGGGAAATCGCAAAAAAATTTGAAGACAATTAAGAAATATAATTAAATATTTAATTGCCCGAAAGTAAATAAGAAAGTTTGGTCACAAACAATTTTATTTTTGAATTAGGGAAGTGTTGAGAAATGAGCATGTGCCAGAATCACTAAATCTGAGACATTCAGCCCAATTTCTCTAATTTTCTTTGATTTTATCATGGAAGTGTGGCTTTTTCTGTGGTCTTGCCCGTTTTGTTGAAATTGGAAAATCCCTTGTGAACTGGGAAACTAGCAGTGAAGCTTCCATAAACAAGCCTTACTGCCGGAAAGGAAAGTAGACAATTGGAAAACTAAAACCGAAAGCAAGCATTAAGAAGATCCCGTTTTTATATATTTGATTTGCAAGCATTTTACAGTTTTTTCAAGAATTCAAACTTCTAGATTAAGTTGAGGCACAGAACTCTAAGATGGTAATACTAAGTTTTATGTTGAGAATAGCCAAGAAAGACTATCTGGAAAACATTGCTTTCAATCATTTTTTGTAAGTAATGTAATGTTGAAACTCTTAATAGTTCAGCACTTTGTATGGCTTCCTAATTTGACCCCGAACGTACAGTAGTATGTGGCAAGAAATAAAATATATTGTGCAAATTGGAGCCGAAAAACCCGACCATGATAAAATGTTAAATACGTGTATTGCTCTATTAAAATACCAAATATTAATTAGATTCACTGTCTCGGAACTCTTTTTAATTCAGATTAATTTTTAGCTCCTCTTTTTAACGTAAAATCTGGATTTATAGAGTTCGATCCTGATTTCAACAGGTACATAGACGAATTCTATCTTAAAATGACGAGAAAAGTTTGCTCTATAAACTTTGAGATCCAGGTTATGAGAAAAATAAATAAAAATTTAACTATTTTAAAAAAAAAAATCCGAAAATTCAGCTGTTATTTTCAAACAAATGGTTCGTTATGCATTTCCTCGACCGAACGATTTCCGAGAATTCTTGTTACTTTCGTTTCAGTCTACTTTATGAACACCTTGTTATCATTGATTGAAATAGTAACTAAATCGACGAGTAAAACTAGTAAAAATAGAGGGAAATCACTCTTCAACGGTTCTCGGTGGTGTCGACGCAATGAAGCTGCAGCAAAAAAATTTTGCAATTTCGGTCATTTCAGCTTCAAAAAGGTGTAAAACTTATTAAAAAATTAAATTTCATTTCAAAAAATTAATTAGTCATATGTGCTAAAAAATAAAAATTAGAAAAATTCTAATTTTCAGCGAAATTTCAAATTTATTTTTATTTCAGAAAAGGATTCAAATTTTGGCTTTCAAAACAGCTTACAAAATATTTATTTTTAAAAAATCTAAGAGCTTTCCCATTCTACGGGGGACCCGCACTCCAGCCACTCTCCCTGACCACAATAAACGCTTCAACAATTCCCCATCCGACCAATTACGACTCTATAGAGCTTCACGTTCATCGTGCTCTGCTCTCCCTCATAATCCAACATCTCCGTTTAATCTACGCCAACCAAAATGACTATTCTATCGTTTTCAAGTCATTCCTCCGGATTTTGGAATCAATTCAAGCCAAAAATCTTCAGCCGAGGTCCAGGACTGAGAGCTGGAGACTCTGTGCGTCTCAATGAAGGCTGAAAATGGAGCCGTGCCGTTTCTGGTGCACCTATCGCTGGTGAAAACCGCAAAGAGCATGCTGAAATGCTGGAACCTCGACTGCGTGGGATTTCGATCCGGAACGCCCCCATCACGTACCCAACAAACGAGAAGAAGAACGCTGACGAAGACTCTGAGGAACGAAAGACGTGGAGCCATTACTCAAGGAGAGCTGCTCAGAAAAGGATACTTGGGGCATTCGTGGCCAGGAAGCAATTGTCGAGTGCCAAGACGCTAAGGATCGAGCGAGAATTGCTGTGGCCACGAAACGTGTCATGGGCGGTCTTATGCAGGACAGCATGGGCGAGTGGATTAAGGAGAAGCGTACGGCGGATGTTGAGATTAGAAGAATAAGGATACTTGAAGAATTAATTTAAATTTTCCTATTTTTTGTTTGTTGAGAATGACTTTGGTATCTGGCAAAAAAAACCACTAAATTTCAGTTTTTCTCGATTTGTTGAAAAATACTCATAAAACTGATTTCTATGTTATTTTTGGCAAAATTTGCCTTTCCCCATTCAAACATTTTTTTTGCCATTTTTCCTCCATTATTTTTTTGTTATTTTCTTTTTTTTTCGTTTTTGTTATGAGATATGTTTCTGTTCTGTTGCCATTTTTTATTATTGAAAATTAAACGAGTTTCCTGAATTTTTTTGTTAACCCAATTTTTTTGAAATTTTCCGTTTCACATACGTTTGTCAACCTATCTCGATTAATTTTTGAAGTTTTCCAATTGACTCGCGCATTTTTTAAAAAGTTTTTAAACTGTACATTGACAATTACACCCCTCTAACTCGATCTGATTTTATTCAGATTTTTAGTTTTTTTAGGTGAAAAAGTTCTTGTGCTAAATTCATCCATTATAGTTCGTAATTCAGCAAATTTTGGGTCCGATTAAACTTTGAGCGATTTCCAATTTCATGGGAGTTTCTTGTTCAGAATATGTCTCGAAATTTTCTCATTTCTGGAAATTTTGAGTCTGTCACACAGTGTTCCGTAATTAGCTCGATTTCACTTACATCTCCTCAACTCTGCAAACTCTCAAACTTTCGGAAGGGTCTCGCCATGAAATCACGGGTGGGCGGAATTGCAGTTCGGCAAAGTGCCGGTTTGCCACGGATATTGTCAATCCCGGATTCCGTTTGCCGGAAGTTTTTAAACGGGATCTTTTATAAGACAGACGGAAAGACTTAAAACTGATTTTTAATTTTTTGCCCGTTTTCTCTAAATATTTTCATAGAATTTACTGACTTTTTAGGATAGATGTTTTCATGGGATGTGCACATGTTGTTCCGGCAAATCGGTAACTGCCGAAAAAAAACGACAATCCAAAAAAATCGTTTGCCGTTCTGTATTGTACCCTTTTTGGCGAATGTGCGTAAATTTATATGTGCTTGCGTGTGTAATATTACGTTCATATATTCTAAATATCCGCACCTTTTGAATTACTCATAATCTATGCATTTACGTACCGCGAATATATTTTGGGAATACACATTTATCATCATTCCCACCCGTTGCCATAGTATCCTCATCCCCGCCCCGCCCCGCCCCTTTCTCTCTTTCCTCTTCCAAATCCTTAATGGCTCATCCGGTCATTGGAGAGAGAGATATGGCAGATGTGGCGGTTTTGCCTAAGCAAATGCTCTGGAAAACTCGTATTTTATATAACTATGTAGACAATTTCGATATTAAAAACATTTATATGTAAAATTTTCATTTTTATATGTTGAATTTGCTCGCCGAATTTTGACTTACATTCTGACAATTGTGTGTATTTAAGAGGGTTATGTATATTTACGATATATTTTTAATCAGTTATCGAATGCTCATTTCCGTTTTTCTACGAGTTGTCTTCATTTTCGGTGGTTTTTTTTTGTTTTTTTTTTTTGAAAGTGTATTTTTTAAGTTCAAAAAACTACAAAAATGTTTTCAGTCAGGATCAATTTATTAGGTTTTTTCAATATTAAAAAAGTTATTGGGAAAAATGAAGTGAAACTCGTCGAAAAACGAAAATCATCATTCGATAAAGATTAAATATTTAGTAAATTGACACACATGTAAGTCTCCGCCGCGAAAAATCGATAAATTTCATAGAGGCATAAAAATTCACAATATAGTTTTTTTATTTTTTATTTTAATCCAAATCCCTATGCATGCTTAGTGCGAATTTTTAGCTGTTTTCTGTAAAAAATCAAAATATTGTATATTACATATCATAAATTTTTCCCATTTTCTCAAACGGATCTCGCCACGACAATATTAAAAAATTCCCGTACTTTTCTCCCGCAGGAATGCCGACAACGGAAGAAGCTGCCAAATCGCCGCTTTTCCGACGCAATCGACAATAATGACACTGAAGCAGCGCTGGCACTGCTGAAAACGAAGGAACAGGCCGCTCACGGGATAGTGGAATGAGTGCCTGCTGGCAGCTACTTGCCGCGTATAGGTATGCACTTTAAAGCGGCGACGGTTACTTTGGATCCTCGCAGATTGTTTAAAGGTACATACCGTAATCCATTGAATTTCAGAGGAAATCTTACGTTGGTCGAGAAAGCGATTGAGCTGAAATGTGAATGAGAAAACCGATGGAACTCTGTACACTCCACTCATGTTTGCCGCCAGGTAGGCAAAAATTTTTTAAAAAAATTCCGGATTTTGCGTCAAATTTGATGCAAATTCTGGTTTTTTTTCCGATGATTAAAGTAAAAAAAAATTCCGAAAAAAATCGGATTTTTATGCTAACAACTAACTTTTAAATGAAAAATCGTGGAAAATTACAAATCACGTAGTTTTGATCTCAAATTCAATTTAACGAAAAGTCAAATTTTATGGTTTTCGCGGTGACCAATATTCGCCAATTTTTTTTTGCCCCAAATACAACACATTTGACGCGCAATTTCATTTGAAACTTTTTCCCGTTTTTACACTCTTTTTAGACTGAACCCCAATATTTGAAGGCGTAAAAAAACAAATAGGACCAATACACTATATCTTACGCGCAAATGTTAAATTTTTATTTAAAATCCTCGTAAAGTTCTATGTTTCTTTTTTTGATCGTTTTCAAGCTCAAATCAAGTTTCAATCCGAAATATTACCGGAACATAATAAATGCGTACTGGTCAACATATTTGACGCGCAAAATATCTCGCGTACAGTAATTCATTAAATGACTACGGTAACGCTTGTGTCGATTTACGGGCTCGTTATTAAAAATCATTTTTCAAAAAAATCGAGCCCGTAAATCACCACAAGCGCTACCGTAGTCATATAATGAATTTTACCACTGTAGTTTTCTATAGGCGAGATATTTTGCGCGTCAAATATAATACACAATCTCAGGACTAATTTTGCGTTAACGTATTACTCTACTTTCTTAGTTTTTCCAAAAAAAAAATTCGAATACACCATATTTAGACGCGCAAACTTTTTTTTACGTTCAAAGCAAAATTGTCAAACGTTTGCAGGAAAACAGGCACGTATGCCGCCTGAATGGACTCCGCAGCCCGTATGTATTTGGTGAATGGAATCGGAAAAACCGCCTCTGAACTGGCGGAGGCATTTGTGGGTCATCACGAGTGTGTGGCAATTATCAATAATCATATAACAATTGATGTGATCGAAGATCTTTTGCGGCCAAAAGTGAATGGAAAATATTATCGAATGAGCTGAGGAATAATGAGCTGGCTGTATTTATTCATTCCTTGTGTGGATCACATGAGATTCATCCTGTTAAAATTATTTTTCGATTCAGTAAATATCCAGCAATTCGTTGAAGTACAAGAAAAAGGTACATAGCTGTGTAGTTTGGAAAAAAAATGAAAAATCTGAAAATTTGAGAAATTTCCTTAAGCTTTTTCAAGATGCGCATTTTTGTTCATTTTTATTTTCAAAAGAAATCCAAAAAGTTTGTTAAAAAATTTAATGAGCATTCTTTTTAATTTCAAAACAAAAAAGTTATACCAAATAAAAACTTTTAGTAATCAAAATTTTTTTTCTCGGTTTTTCTCATCGTTTTTCAAATTTGAGATCTCTTCCCGAATTTTGCCTAAAAATTGATTTTTTCAAAATAAGAACTGATTCTGTGAAAAAATGTATGAAAATGCGAATCGCAAATATTCGAAACTAAAAAAACTTTTATTAAAATAAATTTTTGAAATTTTTCAGAATTTAAAAATTGAATCGAATTAGGTCTCAGTTCAGATCACGATTTTTTCGAAGTTCTGAATCTGTTAAAAACGAGAAATTAAAAAAAAATTTGATGTTAAATGTTTTTCGAGATTAAAACCGAATTGACAACCCAAAGAAAGTGTATCATGTAAAATGTTTTTGTTATAATAAACCAGAATTTTCTCGAAATTTTCAGAAAGTTCTAGAATATTTCAGAATTTTAGGCTCTCGAAATTTCCAAAAGGTTCTAGAACATTTTCAGAATTTTCTCGAGATTCATTTTTCAGAGGGTTCTAGAACATTCCAGAATTTTCTCGAAATTTTGGTTAGAAGATAGTAGTTCAGAATTTTCTCGAAATTACCAAAAGGTTCTAGAACAGTACATAATTTTCTCTGAAATTTCCAGAAGGTTCTAGAACATGCCAGAATTTTCTCGAAATTTTCAGAAGGTTTTAGTATATTTCAGAATTTTCTCGAAATTTCCAATCGTAAAGGTTCTAGAACATTTCAGAATTTTCACGATTTTCAGAAGGTTTTAGAATATTTCAGTAGCAATTTTCTCGAAATTTCCAAAAGGTTCTCAGAACATTACAGAATTTTCTCGAAATTTCCAAAAGGTTCTAGAACATTACAGAAATTTCTCGAAATTTTTAGAAGGGTTCTAGAATATCTCAGAGTTTTCTCGAAATCTCCAAAAGGTTCTAGAACAATCCAGAATAATGTTTTCAAAAAATTCAAATTTGTCCCGCCAAAATGTTTGCAAGAAATTAAACTTCGAATTGCCAAAATATGTACAGTACTCCTACAGTACCTCTACAGTACTACTACGGTACACCGAACGTCCCATATCCCACTACTAACCTAACCTATATCTCTTCAAAAGACTAGAACACAATTTTTCCTAAACTACAGTAATCCTACCGTACTCCTAAAGTACTACTACAGTACCCCCACCATACTCCACTGCTAACCCCAAACCTATATAATCATCAAAAAAACACAATTTTTCCTAAACTAGAGTAATCCTACCGTACTCCTACAGTACTGCCCTACGGTACTACTACAGTACCCCCACCATATCCCACTACTAAGCCCAAACTAATATCCTCCATCAGCCAAAAATGCCTTGCCCCAAGTTTGTAAACAATGAGGTCTCTAGTTGATTAACAAACGGACACTATTTTTTTATTTTTTTCAAAGCAAAAACCATCCATTTTCCAGATCCTCTATGTCATGGGTATCGTGTCTTCGAGAAACAGCTTCGATGTAGGGCAAGCAATGAAATAATGTCGCTCAAGCTTTGGCTAATTCTATTTTCAAGGCGTGAAACCTCGAAATTTGTGGAGTCGAACAAGGAAAAGTCGCCAGTAGTACAACCAGGTACGCAAAACTGAGTTCCACGTGGCAAGAGGTTGGCGATGAAACTAGGCGAGCACATGAACCCGCGTGATGAGAAATACGGTTGCATGCGTACGTTCCCTAACAGTATAAACATTCATTACTTCATGATACTCTACAAAAAGCACTGCAAAAAAGTCAAATTGGTGCGAACGATACACCCAATGTGCCACGTATGAATACATTGTTCAGGCACTTTTCCGACAACGAATCGCTGCCGTCTGCCCGTTTTGCTCGGGGGTCTTTGCGGACATCGGAGCCAAGAAACGGTGCTCACAGTGCAAGTAGGGAGTTTTGTGCTAGGGTTAAAAATAATTATTTAATAATTTAATAAAGCTCGAATTTGTGGAAATAATCAATCTCCAAATTTTAAAAATATGTAAAAAATTTTATTCCGTTATATGCTATTTTATAAATTTTCCCACAAACTCGGCATTTGGCTCTAGCTTCTTGCTTTAGCCCAAATAATATTAACTTGAAGCTGTCTAAACACGTTGGGAAAAGTTAGACAAAGACTTTGGCAAAACTTGGATTCAGCTTTACCAAGGTCTAACCCAAGTTTCACCCAACTCTTGCCAAACTTTGGCCCAAAGTTTTCTTATTTCGTTTCAAATTTGGGCCAAAGTTAGGGAAGAGTTGGGTGAAACTTGGGTTAGACTTTGGTATAGCGTGAAGCCACGTTAAAGTCTTGCCTAACTTCCCAAGTTTAGACAGCTTCTGATCCAAGTTAACATTTTTTGGGCTAAACTTGGGTAAGAAGCAAGAGCCAAATGCCGAGGAAATCCCGCCGAAAATTGAAAGTTCAAAATTTCAGCTTCGTTTTTAATTATTCTGCAAAATTTGGAAGTTCCAACAATTGTTTAAAGATTCTTTAAATTAAAAAAAAGAATTATTAAAACTTTTTAAACACCAAAATTCATTGTAGAAAATTCCGAGCGTAAAATACTCTTTGAAAATCCGGGATAAAATCAAAAAAAAAATAAATTCTAGACATTCTGCCATTAAATATCGAAAAAAGAACATGTTGTCTGTAAATGTATTAGTCAAAATTAATTCTGTTTTTCCAATCAAAATTTTAAGTGTCTGTAGAGACTTATTTGAGTTTCCTGTTTTTCCTCGTATTACTAAAGTTTTCTATAATATGCTGTGTTTGAAAATTAACTATATGTGAAAATATCGAGGCACAACGTTTTCAAGATCTGGTGAAATTTCGGATCTACGTTTTTCGGATCTACCATTTCCGGATCTACGTCTACCGGATCTGGCACCGTGCCAACGCGCAAAACGCTTTTTTGATCACTCGGCGCACGTTGTTTTTTGTAAATTTCTTCTAGAAGAAACGCTTAACCACACGCGACGCGTAACAACGGAGCATCGTTATCACGTTTTTCTCCGAGATTAAAATCTTCGAGCGTTTTATCAAGAGTCACGGTGCAAGACGAAAATGGTAGATACCTCGGGAAAACGGAGATCCGGAATTCCGCCAGATCTTGAGTGGTGCCTCAAAATATCGATTAATGAATTTTTTCCGAAAACCAATTTAGCTTCAACAACAGAATAGCTAAAAAGTGATCAAGAAAAACTCAATTCTTATAAATTGCAAACACTTTCCAAATTTTGATAAAATGGAAAAGATTTTAAAAATTTCAGGCAACACATTTTTTAACTCTAATAAACGTTTTTTAAATTCCAACAATTTTTACAGCTCGCCTACTGTTCCCAAAAAGAATGCCAAAAATGCGACTGGCCAATTCATCTCAAAAAAGTGTGCTCATTTCTGAAGAATTAACGCTACAAGAAGTGTCGCCCACCGACGAGACCGCCATGGCGCTGGACTCGGCTCAAATCGTGGCGCCAAAATCGAAGTGTAGAAGTGCCGATATTCGATCTCAATATACTTTTTTTCTGGTAAATTTATTTATTTTTATATTTCGGCTTCATCTCATTTCACGCAATTTTAATTTCATTTTCATAGATTCATTTTTGAAGTCATTCCTTGAACAGGAAAATTCACTAAAACATGCATTAAGAAATATGGAATCCAAAAATTAATCTAAAAACCTTTTCAAAAAACCACTTCGTCAAAAACTGATGATGGAAAACTCGTTGACAAAAACGGAAAGAGTATCCAATAAAGATTAAAAAGTTCGACATTTCGTAAATCGACACAAATCTCGTCGACAAAATCAATACCGAAAAAATCAGGAACCCAAGAAATTCAATATTCCCATTTGTAAAGACAACTCGTAAAACATTTTCAAATCAAGAAATTATTTTTTTTGCCCTCAAAATTGATCCTGAGTGAATACTATAAAAAAGAAAACTATAAAAAGTGGCGAAAATTCGAAATTTTAGCCCCTCTAAATTGGTTCACTTTAGTTGTCTAATGATACAACAAAGTAGACATAGGTTACAATATCTGATATTGGACTTGTCTAAACAAAAGTGTTTTCGTTTTTTTAACGGATTTTTAAAATCCAGAAGAGTAACGAAAAAAAATTATTTTAAGAGAATAGAGTAAACTATAATCATGTTCGAGAATCAAATCCGCCTAAGAATATGAGGTACGGACCCAAGTGTATCATAATTATTTAATTTCTGTGTATCAGAATTATTTTAGTTTCCTTACTGTGATAGGTTCCCAAACTGCTTAAATTTAGGAAATATTTCTTTACTGGACACTCTTAGCCACTGTACGCTGCCGATCCCAACGCATAATAAGAGAATACAGAACACCAATTATGCCCGAGAAAAAGATACTCAGAATATAAATATAATTTATCGGATGGATCGGCAAACATTGAAGACACTTTCTAATTACCCAAATTGTTCAGTATATTCTAAATCTAATTCTCTTAAACTAGAACCCTCTTGGCCAATGTACGCGGACGAACGTATCATAAGTAAATACAGAACACCAATTATGCCCGAGAAAAAGATTAGCACTCAATAAACATTAGTCAAATTCGGATGTATAATGATTCCCGAAGACACTTTCCAACCCACATTGTTCATATTCTAAATGAAATTCTTTTACTAGAATTGTCCAATGTGTGCTCCGAACGTATCATAAGGTGAATACAGAACAACAATTATGCCCGAGAAAAAGATCACTCAGAAAATAAACATAGTTGAATTTATTGGATGTATAAAGATTCCCGAAGACACTTTCCAATTACCCAAATTGTTCATATTCTAAATGAAATTCTCATACTAGAACACTCTTGGCATGTACGCAGCCGAAGGTATCATAAGTGAATACCAGAACACCAATATATGCCCGAGAAAAAGATCCTACTCAGAATATAAACATAGTCGAATTTATCGGATGTATAAAGATTCCCGAAGACAGTTTCGAATTACCCTAATTGTTCATATACTAAATGACAATTCGCTTACTAGAACACTCTTGCCAATGTACGCAGGCGAACGTATGTGAATACAGAACACTAATTATGCCCGAGTAATCCTACTCAGAATATAAACATAGTTAAATTTTGGATGTATAAAGATTCCCGAAGGCACTCTCCAATTTACCCAAATTGCTCATATTCTAAATGAAATTCTCTTACCACTCTTGGCCAATGTGCGTGACGCGGCCGAACGTCTTTTATGATAAGTGAATACAGAACACCAATTATGCCGAGAAAAAGATCCTACTCAGAATATCAATTAAACATATTCAAATTCAGCGGATGCATAAGGATTCCCGACTCTTTCCATACCCAAATCATTCTAATTGAAATATCTCTTACTAGAACACTCTTTATTGGCCTATGTACGCAGCCGATAACGTATCATAAGTGAATACAGAACACCAATTATGCCCGAGAAAAAGATCCTGCTCAGAATATAAACATATTCGAATTTAACGGATGTATGATTCCCGAAGACACTCAATTACCCTAAATTGTTCATATTTTAAATGAATCTTACTAGAACATTCTTGGGCCAATGTACGCATTGCCGAACGTATCATAAGTGAAAACAGTACACCAATTATGCCCGGGAAAAGATCCTACGCAGAATACAAACTTATTCGAATTTATCGGATGTATAAAACAAGGATTCCCGAATACACTTTCCAATTACTCAAATTGTTATTCTAAATGAAATTCTCTTACTAGAACACTCGGCTTGGCCAATGTACGGAGCCGAACATAAGTGAATACAGAACACCAATTATGCCCGAGAAAAAGATCCTACTCAGAATATAAACATAGTAAAATTCTGATGTATAAAGATTCCCGAAGACACTTTCCAATTACCCAAATTGTTCATATTCTAAATGAAATTCTCTTACTTGTCTAGAACACTCTTGGCCAATGTACGCTGCCTAACGTAACATAAATGAATACAGAACCCCAGTTATGCCCTAGAAAAAGATCCAACTCAGAATAAAAACATATTAGAATTTACCGGATGTATAAAGATTCCCGAAGACACTTGCCTTTCCAATTAACCAACTTGTTATTCTGACTGAAATTCTCTTACTAGAACACTCTTGGCCAATGTACGCAGCCGAACGTATCATAAGTGAATACAACAAGAACACCAATTATGACCCGAGAAAAAGAGCTTACGCAGAATATAAACATAGTCGAATTTATCGAATGTGATTCCCGAAGACACTTAATTACCCAAATTGTTCATATTCCAAATGAAATTCTCTTACTAGAACACTCTTGGCCAAGCAGCCGAACGTATCATAAGTAAGGAATACCGAACACCGATTACGCCCGAGAAATAGATCCTACTCACTCGAATATAAACATATTCGAATTTAACGGATGTATAAAGTCCCGAAGCACACTTTCCAATTACCAAAATTGTTCATATTCAAAATGAAATTCTCTTACTAGCACTCTTGGCCAATGTACGCAGACGTATCATAAGTGAATACAGAACACCAAATATGCCCGGGAGATAGATCCTACTCAGAATACAAACATATTCGAATTTATCGGATGTATAATGATTCCCGAAGACACTTTCTTACCCAAATTGTTAATCTTCTAAATGAAATTCTCTTACTCGCACACTGCCAATGTACGCAGCCGAACGTATCATAAGTGAATAACAACAATTTACCCGAGAAAAAGATCCAACTCAGAGTATACACATATTCGAATTTGATCAATCGGATGTATAAAGATTCCCGAAGACACTTTCCAATTAACCCAAATTGTGCATATTCTAAATGAAATTCTCTTACTAGAACACTCTTAGCCAATGTACGCAGCCGAACGTATCATAAGTGATTACAGAACACTAATCATGATCGAGCAAAAAGATCAGATCCAGAATATAAACGTATTCGAATTTATAGGATGTATAAAGATTCCCTATTGGGAAGTCGAGCAATCCACGGCTGGTTTATCGGCCACAGTCCGCGGTTAGGACATGGCTTATATTATTGGGCCAAGCGGAGCACCACCAGGCTGTGTACCTGACTTCCAGATCAGCAGTACATAGCACTAAGAAAGGATCGTCCTTTATATCTTTTAACCTTTTAAAAAGAATCGAAGGAACTCTCAGGGTCATGTGGTTCTGGGGACAAAGAGGGAGGCTTACATCAATACCAAACACTGGTAGATAACAATACCTGTGGTAGATCACAAGCCACCCTAGCCACAAAGAAAATCTGTGGACGTCCTCAAAGGAGGCCGCCGGCGCCCTTGAGCTGGCCAACAAACCCTTCGAGCAGGGTGGAGGACTACTCCAGCGACTGAAAACGGCGGTATTAACGCCACGTTGTCGCCCAATAACAAAAAGCCCTCGGGAGAACCTCAAGAAGCCCACGGCTTAATTTTCAAATCAATTACCTTACTATGAATCTCCTTTTGGCTCTACGAGTCGTCGTTGATGTTACCATCCATTCCGTCCTACCTGGGTCCCGTCAAACAGTCCATCTGACGTCCAACCAACATGGGTGGAGTGTCCAACGCATCTGAAATTGAAAAGTATTTATATCCACTGATTTTTTAAATGGAACCATTTACAAACAAAAACGGAAACGCTTAGGTAACCAAAAAAAAAAACAATTAGTATTTAAAACAACGGAGACAAATGCTCTCGCGTAAGTTATATTAATTTTCCAGTCGACTGCAAGGCATCTGCTCCCACGGGTTTATATAAAATTATGTACCTATTTTTCTTGAAGTCGACTTGTCTTGAAATCTTTCAATCAGTACTTTTCAAGAGTTTTTGGTAATTTTGTCCGTCGATTTTTCAGAAATTTCAAAAAAACGGCGAAATTCCAGTCAGAAGCCTCATTAATATATCACTAGTCCAGCTCGCTGACCCAAAAAATTATTTTTTTTGAACTACAGTAATCCGACAAAATTGCTACAGTACTATTACGGGACAGCCACATAACAAACTTTTGAAAAATGCGTATTGCGCAACATATATGACGCGCAGGCGCAAATATCATGTGTAACGAAAACTACAGTAATAATGTATGACTACTGTAGCGTTTCTGTCGATTTACGGGCTCAATTCTAATCGTAATGTTACACGACACATTTTCGCCAAATGCAAAAAGGTGTGCGCCTTCAGATTAAAAAAAAGTTGATTTTTGTGCCGGCTTTTAACACATCGAGAAAATAAAAGAAACGAAAGTTTGTAATTACAGTACTCTTCTTAAACGCGAACACCTTTTCGCTTTTCAGAAAAACTTGCGCCGTTTCGAAACCTGGTACTATACTTTTATAATTAAATCGATTAAAAATAAATTTTGCGGTGGAGCATAAGTCATCAACTCGAAAAGAAAAAATCTTGCATGCGGTAAAAAAAAAGCAGCAGTACTCCAAATCACCCATTGGAGAATGGCTGGAAATTGAAATCAAGTCTGCACTTTGAAAAAATGCAGCGTTGAATGAGAGAGGGACAAATCGAACAGCATTTTATAAGGAGTCCAAAAAAAATGTTTGTGGTAGGTCTTGAATCGTGCAACTCATCGTTTTAAAATCAATTTTTAACACTTTTATATCATAAAAGAATAGTCTTTCATCATCAATCGATTAAAATACCAACTCTCGAAAATTAACAGCTTTGTTAACAGCGCCGTCTACCTGATTTGAAATTGCTCGCAATCGGTGCCGCTCAACTAAATGTTTTGCGCGTCACTTAAAATGCGCCCTTGTACGTTTCAGAAGCGCGTCTCCTAAAAAATAAAAAGGCTAGTCCAATTTTATTAAACGGGTATTTAATTCATGTAAATATATGAGCTGCAAATTTAGGAAATCTAGGTTTAACCTATCAAAAACTATAAAGTGGCAAAAATGGGCAATTTATGGCAACAATTCACGATCTTGAATCTAAAGGGTTCATTATTATTGGTAAAAGAGGACTAAGAAATTGATATCCGAACCCTAAAAAAATTGTTTTTCAATATTCAGAAGATATTATGAAGTTAGTGTACTTCCATTTTTTCGATTGTACGGTAAATCAAAACTAAAGGTGGGCACGGGCGTATGATAAAGTTACGATCGTTCCAATCACCAAAGTCGCATAATCACAGCCAGAGCCTCACATGAAAACCCAGTGTGTGGGAAATTTAAAAATCAGTACAAGAAAGCCTCAAAAAAAAAACAAAATTACAGGAAAAAACGGAAATTTTCAGTAAAAAATTATAGGGTATGTACAATCGATAAAAAATTTATTGAAATTCAATCGAATTCTCCGTTTGCGGCGTTCGGATCGTTCACTGAGGAAGAGTAGTACGGGATGTCGAAGTTTGAAATTGAAGAATTCGCACCAACCGGACCCCTGGAAGTAGATCGTAGGAGCTGCAAAAAATGTTCGTGGCCGCGAAAAAAATCGGTGGCCGATTTTTGTTTTTTCGGGGCCACGATGTGACTAGTCGGCGAAATTAAAATTTGTTTTTTGGTAGTGTTCAAAACTGTTGTTCTGGTTGAAATTTTATCGAATTTTTTTTTGTGGTTTTTTCAACTAATTTTTTTTTCTGAAAATACTTTTAGAACAGTTCATTTTTTTTTCAATTTTGTTCAGACCCTTACTCCCTATCATAAAGCCTCGGAAAATCGGAATCCCATCCCTGAAACTCGTGAGAACCGTTCTAGCGTGTACTTCGACGGAGGCCGGTGAATATCCAGTAGGTCTCGTTTTGGACGACGGCTTCAAGGACACGACCGAACAGTGAAAAAGTTTTATTTATCAAAACCATTTTTTTGAGGAAAAAATTTATTGAAATGTTTTTTTTTTAATTTTAAAATTCCAAAAAAACGCAAAAGGGCAAAAAAACTTGAAAAAAATGTTCATTATTCCGACTCACAATCAAAGATAATGTGTATCAAAAAAAATTAATTGTTTTCTTTTAAAAATTAAGGAACTTATTTTTCTAATGGTTATTTCAAAAAAAGTTAAAAATAAATTTTTCAAGTGTTTTTCAAGAAAAAATTAAAAAATTTCGAAATTTCCGGCAAATTTTAATATACTTTTTATTTTGCCAGGGAAAATTTGTATAAAGCTCCGCATTATATGGATTTTTTGTATTGAATAATAAAAAATTTTTTTATTGGAAAAAATGATTTTTATAGTTTTTTTTTGTTAATTTGAAAAAATTTTATCACGGCAACTCAAAATTCTGAGAATGCGTACTGCCCAATATATTTGACGCGCAAAATATCTCGTAGCGAGACGACAGTAATTCAGAATGACTACTGTAGCGCTTGTGTCGATTTACGGGTTCATTATTTAAATGACTTTTTCGTATTATTTCTAATTCTTCATTTAAATTAATTTTAAAAATTGAGCCCATAAATCGACGGTACCGTAGTCATGTTCAGGAATTACTGTAGTTTTCGCTACGAGATACTTTGCGCGTCAAATATGTTGTGTAGAACGCATTTACAGAATTTTGAGCTGCCGTGATAGAATTCGCATTTTTCAAATTAAAAAAAAATTTAGTCAAAAAAATCACGATTTATTTTTGCAAAAAAATTTGTCTAATTTATAAAAAAAAATAAAAATAAAAATTGAGCAACGCTGAGAAATCGGGCCAGATTTTTTTTTGTTATTCTTTGAAAAAAAAAACTTTTGTTGGAATTTTAAATTACATAATTTATTTGGTTCAATCAATTTTTTGGTTAAAAAGCGTTTTTTTTTCATTCAAAAAAGCCCCTCAAACATGTGCCTTCTCTCCTTGTTCGGCTACGGCCTAACTAGCATCTCATCAGGAATTTTTTTCCGCCTGGCTTCTCCATCAAATACCACACACTTCCCACTTGAATTTCCCGGGCTCAGTGCCATGCAAGCCGATCCAGCTTGATTCCGAACTTCTCAGCATAGCCGGTCACAGGATGCATAAAATGTTTAGCAATATGAATTCGGAAGGATTCATCGTCCGATTCCGTCTCATCAGGCGAAATAATTAAAAAAGTCCAGGCGTTTTGCATATGTTTCGAATTGTTGAGACGCAAAATGACTGGCGTAGGTCAGAATGCTGAGTGGATCCAAAAGTTCAAATTTGTGGCCGACTTTTAATTTAAATTTGCAACAATTTTTCAGCTGAAATGTGGTTTCCCAGCAAAAAGTTGCTCGAAAGTGACGTCATCTTAATGATAACTTCCAGAACCTTCTGCGATCCGTCTGGAGATGTTCGAAATAACCTTCCGTAGCCTTAGTCCGCACCATAATCAATTAAGCATCATTGCAAGAATCCGACTGGAAAGAGGAAGAAGCTCGACTCATTCTACCCATCAAAACTCGACTTTTTCAGGCTGAACCTGCCGATCTTTGGCCTCTACGGAGATCTTCGGGATAATCGAGCGGTGACCATGACCTTCAGACGGCGGCCAAGGATAGGATCCATGCGACACGGATTTCTGGCTCCGAGTACTTGAGTCGCTCGCTTGATTCAGCCGGAAAAGGGCAGTGGGCAGTCAGGAGGCGGAGTTGGTCGAAGATTTTTGGATCATCATCAGAGATTCGATTTTCGTGCAGCCCGGCCTTGCCTGCCGGAAAATTTTTTTAGGTAATAGGAAAATCAGAAGGGTTTTTTGGAGTTTTTATTCAGTACACCTTATTTTTTTTGTTGTTTTTTTGAGGGTTATAAGTTTTTAGGTAAATTTTTTTTGTTGATATTCTTGGTTTGTTTAAGAATAAATCATTTAAGTTAGACAAAAATTCGTTTTTAAATATATTTTCGGTTTTTTGCTGGTTTAGTTAAAAGTTTTGTTTTCGGATTTTCATTTTGATAAAAATTGAAGCCTTTTTTTTTTGGTGTCTTTCTTAGGTTTACGAGTTTTTTTTTTGGTTTTTGACGAAAAATTTCTTTTAAAAAAAACGGACTTTTTAAAAATATGGGTTTTCTTAAAAAAATAAATTTCAATTTTTTTTGTTGGATAAAAAACTGTTAAAGTTTCTTTTATGGCTGAATTTTCGCCTTTTTTCACATTCTCCACCAGAAAGAACATGAAAAAAAACATAAATGAGTAAATGTTTTGAGTATTCAGGCAGTTTTTCCGCTCAGAAAATAATTTTGGCCGGATTTTCATGGTTTCTTACATTCAGAATCTCCTCTCTGCTGTTGGCCGTGGTACGGGCGGTGCAGGCGTAGATCCGCGTCGACAAAATTTCGGGCATGGTCGGTGTCAGCAAGCTCAGTGGCCTGTATTGAAGCTCAGCCATTTCATGGATCCTTGAGACCGCTGAAATTTCGCGTTTTTTTTTGGAGATTTTGTTGAAATAACCTTCCAATATGAATCGAAAATATTTCCCTCTGAAAGCATATGAAACCAGCAGGGTCTTCTAGTTCCCCCACAGGCGAATTTAATTGCCACGTAGAAGCCGCAGACAGCAGTCGCTTCGCCGAAACAGCCAGGATTCAGTTCTGGAGATTTAGTGGTTATAGTCCAGAGACGGTCGGACGACTACTTCTAGCTGAAAACATTAATCCAGATTATGGCTTTAAAGTTTTTTAACAGAAAAACCAACTCGAAATCTAGGTTTTAGGTGCTGATTTAGCTTTTCCAGCTAGGCAAACAACCCTCCAGCGCCTCGACAGGTAAAAATTGACTATTTCCATCATAATTACAACGGAGTTCATCTGTCCATGTGAAAGTTCCTTCAATTTGTGGCTTTGGAATCCGCTATCTCAGATTTCATCTGTTCGACGATACTGGAATAGCCGTTCTGATGTGAAATATCGGTAGTCTGCTTCATCAAGTTTGTAATTATATTGACGCTGAAAGTACTAAATTATGTTTTTTCGATAAAAATGCTTTGAAAAAATACGGAAGCTTTTTATTCGAATAATTCAATTGATTTAAATTAAACATCTATTTAAATTGTTTAAATTAAAAAGTTCCACTTCTGTACTTATCACGTCGAGACCCAACACATACCAAATGGGCCTTTATATAAATTTTAAGAAACTCAACATTTTACAAGAGTTTTACAGTTTTTTTGTCGTTAAATCGTTTTTCGAAAATAAATGATTTATACTCACAGTTAACTTGCTTCGTGCGCAACTTGAATATTAGCTTAAATTTCACAGTCTATGGGTTAAATTTCAAGTCCGACTGATGATACGGGAGGTGCGTGGAAGTACGGTAGTTTGTTTTGTTTTTTTTTATTTTGCCGCCGAGTGATTCAAAATTGAATTTATATCATCCGATTTTTTGATTTTTTCTCAATACTTCTCGATTTTTCAGGAATCTTTCAGTGTGATTTTCCAACCGTAGCTCGACCCCAGACGAAGAAAGCCTGAGGCTGGTCGCCAGAAGCACTATGAATTGCGGTTTTTGATTTAAAGCATAATTTGCATTAATCTTCTAATATTTTAGCCACCCCACACCGTCCACGAACAAACTCCGAAACGAAGCTCGGGGCTCGCGAGCAGCTTCTCCGGGACTCTATACGAGTGGGTTTAAGTTCTTAATTTCATAGAATATCACTTATTCAAAAATTTTATTTTTTCGCTTCAAGCAGCTTCGGAGCCGTACGTCCACATGACAAAGGAATCCACGTGGGACGAGGCGAAAAAACTGGCTCTACGATCAGTCTAAAAGAAGCCGGACATTGTCCGTAAAGCGATATACAATCGTCGTCGCTTCAGGGAGTCAATGAAAGGATAAAAAGTTCGCTGGTCAATAGCGCGAAATCATCGACCCAAGAAGCCCGGCAATCAAATGCAGTGCGGCGGAGGTATTTTAAAAGAAGACAAATTAATATCTAATTATTCCCTTTAATCTTTCAGACAATTGCCATAAACGTTGTGCACTGCTTGGAGACTCATCACACAAAAATACTCGCTCAGAAATCAAAGCGGCCCCGCTGCTCGGGAGCCAGCGCCCAGCACTGCATGGAGCGAATTAATTCAAATTAATATTTTACAATAAACTCATTGCTCGTTTCACACATAATCATTCATGTGTTTTTCACTCTCGAAACCCATATACCCCACTCTAAATATCTATATAATGCCACATTTCTCATAGTTTTAATCTGCCCTTACCAATTAAATCTTGTCCCACCTATTTTCCGCCATGATCCCTTTTTCCATTTTGAATAAAATACGACGACGATTTTTCCTCCATTAAACCAAGGAGAATTATATAAATAGAGTCAAAAGTGGCGCTTGTGTCGCTCAGCGGTCTCCTCCACTTGCAAGCACTATCTCACCGCGGCCTTCCAATTTCTCGTCCATTTCAGCTGTAACAAGTAGTTTATAAAAACTGAAAAAAATGCAAGTTTTAGCAGAAAATCGCTGAAAATGGCAAATCGTCGAGCTAAAGTCGCTTTTGACTTCGGAGCCAATTAAAGCCATCGAGTTCTTCGATAGGCTCGTTGGACAAGGTTTGAGCCGAAAATCAAAACATTTAAGCTGAGATTTCTTTTAAAAATATCCCTTGCAGATGCCGACACAATCATCCAAGAAGCCTGTGGTGACAACCCTCGCCACCTATATCCGGCATCCCTATAAGTGTTTTTAAGCGACGGCTTCTGTGAGCTCCTAATCGTTTTTTGCGAAATTGTGCATTTCGTTTCAATTTCACAGCTTTGAAGACAAAGTTTTGCGGCGAAAATTGATTGAGCATTCGAACGATTCAGCGTGTTTTGCGGTTAACTGGAAAAGGACAAGCCACATGGGGTTTCGTTTATTGAAAATTGAAAAGATTTTTGCAAAAAATTAGATTTCATGTAGTTCAAACTAAACGCTGCTCGATTTTTAACCGAACCTTTTTCTTTTTTCCGTGAAAATATCGGTTTTCCAAGTTTTTCGAACATTTTCCAAAAAAAAATTACGTAAAATGTGAAAACGATTTTCAAGTAGCCTACAAATCCGGAAAAATCAAACTTAAATGTTTTCGAAAAATTTCATAATTTTCTTCAAATCTCTTTGAAAAGTAGATTCCACTTCTGGGAAATTTGAATTTATGTCATTTCTTTAAAAGCGCATGCTCTTTTGTAGGGTCTCGCAACGAATTATTCAATTTAAACTTTTCGATATTCGCGCCGAAATTTGGGTCTCGGCGCGATTTAAAATAAATGAAGAATATGGACTATTAATTTTTCCTTGAAAATTATTGATTTTTCGGAACACCGGCACCACGTCACCGCTGTCGGATCGAATCGTTTCTTCATTTTGACTACTTTCCGATGGCAGCCCCGTCTAAGAACCCCGACTGGTCCCCGTGCCACGTGTAATGAAATCAAATCGAGATGACAAATACACACACAATATTTTTGACTGCTGAAAATCAGATTTAAGGCTGCGGAACAGCTTCATCTTTTTTGCCGGCTAAAACGGAGAGCTGAGACGGACGGTGGTTATGTGGCACTGCCCACTTTGGTAGAATTCCAAAAGTTACTGGATACGTGGCAGATGTGAAGGTGTTCGAGGAACAGTTTTTGATTGGCGACAAAGCCCTCTACGGTTCTAGAAAATTGGTGGCGGAGTATTTTCTCGCGGCCACATGACTATTTTCTAAACGAAAAGTTGTGTAAAAGACAAGTCGGAAAGGGCGCCCTCATGGCTGTAGCTGAAACGTTTTTCATAGATTTTTTGGCTTTAAAAAAATCCTTAAAGGTGCATTTTCGTGTCGAGAATCCTAGTTGTATAATTTTGCTAATTTTGCTTAAAAATCTTGTACAGTACCAGGTCTCGACGCACACGAATAGTTTTGATAAATGCAAAAATGTATGCGCCTTTAAGGATGTAGTAAAAAATAAGAATTCCTTAAATTTGATAATTTTGTGAAGAAAAATAGAAGAATAATTCTTTGAAAATGGATAATTTTTTGGAAAAATTAGCTTTGTTTTTTATTTTTTCTAGACGTACACCTTTGTTAAAAGATTGTCGCGCCGAGACCTGATACCGTATTTCTTGAGCGCAAGATCGTGCCGAGACCCAAATTCGTGAAATCTGTCAGTTGGTAGGTGTGGAAAATTTCGATTTCCGGGGAAACGCGACGAATCTCGTCGAATTCTAGCTTTTTGTTCTGGTAGAGGAGGAAAACGAGGAGAAATTGGAGAAAATGACGACAAAATATCGATTTTTACGTGGCAAATGTGCCGATTGAGGAAAGGATTGTGAAGGCGGTTTTTTTTCTAAATTGAAAACAAAAAAACTAAAAAAATAAAATTTTAATCGTAGTTTCTAGAATTCAAGCCAGTTATAATAATTTTTAAACTAAAAATTGCATCGGTTCCGAACTTTCAAGGTTTTTTTTTCTGAAAATCGTTTAAAAAAATATCTGCTTGAAAAATCAAAATTTCAAAAAAACAAACAAAACTTGAAAAAAAAAAACGTCTTTAGCGGTATTTTTTCTATAATTTTTCAATTTTTTCAGCGATCCTTAAGAATCGAAAATCGTAATTTGACTTCTTCCTGGTATATCCAAAAATGGACCAAGATTCTGTGGGATAAAACGAGCGATTTCTCAGCGGAAAAGCCGTTTCCTTCATAACCAGTGGATTTCCAAAAATGGCAATTTTCGAATCATTTCAACTTTTAAAGGAACTATTTATGGCTGATCGAGAAATTGACTTTGCACAGGAAAATTGGAGCTATGCGGAAGAACAAAGATGACGGGGTGTTTGTGAAAAGCGGAACTGTTTTGGAGCATTTTGACACAAAATATACACTTAGTGCACTGATGGAAGTGGTCCCCGGTACTATTGGAACAACACAGAGTGTTTTTCAAAGTTTCACCAGATGGGCAGATTGATTATGAAGTTTCGTTTTGTTTGGAATTTGAAGGAATTCGACCTTAAAAATATAAAAAATTGCACTGATGATGATTATGGATTTTTTTTTCAGAAAAAACGAAAAACGAAAAAATTGAATGCTAAATGACAGAGTCAAATATGCCCCTGTAACTTTTTTTTTTTGAACTAAATTTTATATTATTTTTTTCAGTTTTACGCAAATCAAAGAAACGGGTCCACCGAATTAAATTTGAATTCCCGCGCACCAAAGAGTGACGTCATTTTTTTTTTCCCGATTTCCTGATGTGTTATTAGGTTTTTATAACGGTTTGTCAATTTTTGCAGACATTTTTTTTTAAGCTTGGTAACCCGAAAAAAGTGGCCTAGAAATCGGCTTTAATTTTTTTTTTAAATCGACAAACTGTGTTTCAAATTACGAAACAAGGAAAAAACGAAGAAGAAAACAGCCGGAAAACGCGAAAATCTCGAATGACGTAAATTGCGCGGGAAAAACTTTAGAATTTTTTTTTAATTAACAGCTCTAACATAGGGTCGAATCATCCTAGGGCTTTTGTCAAAAACCTTATTCCTCGCACAAATTGATTTTTCGTTTTCGTAGTTTTCACATGGAACAATCGAAAAATTTTGTTTCTCAAAAAAAACAAAAAATTTTTATTAAAAAATTATTTTAATCCCAAAAAAAAATATTTAGCAAACTTTAAAAATTCATAAAACATTTAAAAAAATTTTTTAAAAATTGTATTGGGACTTTATTCTAATACTTGGACTAAAAAAAACCCACATTTGACAAAAAATTCAATTTAAAATGAATATATCGTTTTGGGATACCAAAACGAACAGAAAACCGAGAGATTCGAATTCGAGTCTCCCAAAATTCACAAAATCATCAAAAATGGTGACAATGTGATCCAGTTGATATGTTAGACGCGACTATTCATATTCATCAAAATTATAGACTAATCAAGACGTATTGAAATTTCAATCGAATCGATTATTATTTGGATCTAGCCGAGTTATTTGTTTCAAACCGATGAGATGTTTTTCAACTGAACAAGAGACTGTATTTGCTGTGGATTTGGAGAATTTGGAATTGTGGAGGGTTTCTTTTATTAATTAAAATTTTTTTAAGTGGAAAAATTTTGGTTTCTCTTTTCAGAAATTATTATAATGTTGTAACTAAATATTACGGGAACACGAAATTCTAAGAATGCGTATTGCACATACACAATCGATTTGACACGCAAAATAGTAGCGAAAACTACAGTACTTCCTTTAATTACTGTAGCGATCGTGTCGCTTTACAAGCTCAATTCTTTTTAATACTTTAAATTAAAACTTTTTCTTTAAATTTTAAAAAAATTCGACTTATTTTTTAATTTTTACTTTATGCCAATATTCTGTCGATAAATAAATCATTTTAATAATTAGAAAATTGAGCCCGTAAATCGACATGCGTGAATCCATTTAAAGAATGTAGTTTTCGCTACGAGATTTGTACTCCTAATTGCGCGTCATATATGTTGCGCCGTACGCACCGTTCTCAGAGATTTGTGTTCATATAGAATATTAGGACTAGTATGTTAAAATTTTTAAAAAGTTTGTTTCGACTTTTACCCAAAGATCTTTTTTTGCAAATTTTTAGTGAAAATTATTATTTTTTACAATTCCGCACGCTAAAATTTATTAAAATTATATTTAATTTAGACTGTATTCTATACAATCAAAAAACAACAAACATCAATAATGAATGTTCAATGAGTTTAAAGAAAAATTTTTTTGTGTAGACTTTTTTAAAACTCTTCTTCGTTGACAAAACGTTCACAAAACTTAAAATATCTTTCAATTTGCTTAAATATTAACAAAGAATTTTTAAAATTTTTCAGCCCGAAATACCAACCTATATCACCAGAGGAATTCGTTCCCACCGACACTTCTCCCTCCGATATCTGGTATTTCAAATCCCGAAATTGAAATTCCCTTCTCACAAGTACCCTCTCCTACTACATTCACGTCAAATTGGAGCTCCAGAGATTTCATTCAAATAATGGGAATTTCGATATGTAAGGATGGTAAATCAGAAAATGAAGTGGAAATTGAAGCGAATGCAGTGTTGAAACTGTGAAAAATGCGCTGAGAGTGATGCTCAATATTCGACCTCTTCTCAAAATTAAGACTATTGAGGTAATTGGATATTTGGTGAAATTTGAAATGAAAAAATATTTATAAAAATTGAATTTTTTTTCATTATTTCAGTCACCATAAGTCAATAGCCGTTTCCATTAACTTAGATAAAAATTGATATTTTCTTTTTCCAAATGCGATAAAAATTGGAAATTCTATAAATTCCGGAAAAATCGATTGATTACAACAAAATCGATAATTTCCGGAAAATTGATAAATTCCAGAAAATCGGTAATTTCCGGTGTAAAAGTCGATAATTACCGGCAAAACCAATTAATTTCCAGAAAAATCGGTAACCCTTACCGGAAAAATCGATTGATTATCTACAAAAGTCAATAATTTCCGGAAAATTATGATAATATCAGAAAAATCATTAAATGATCGATAAATTCCAAGCAAAACAAAATCGATAATATCCTGACAAGTGAATAAATTCCTAAAAATTGAGGAATTTCATAAATTCCCGGCCTTGAATATTTTTTAAATTTAATCTTTAAAAGAATAATTCTTTAAATCTTTAATCCTTATCTAATTTATTCAAAAAAAAACTGATCCACAAAATTTTTTTTTTTCAAAAATTAAATATTTTTGCCTAGTTAATGTTTCATCAACTTGATTATCATTTACTCGAGAAATGTTCAATGATTCAATGCATTCTAATGGAAACAGCCATCACTGAATTCACACTTCCATTTCTCTACGAATTATTCTGTCGTATTCGGGTTATGAGGACAAAGTGTTGGATGGACTTTTGCCGAGGAAATCTTTGATCATTTATAACAACTCGATTTCCAGTGTTTTACCGCCAAATTCTTTGTACGGTAAGTGAGTTAAGAAATGGAAAAAAACACATTTTTGCTACTGTTGGAATTTTTTTTCTAAATTTCACAAATATCTTATTTTCCATTTTAAAAGTAGAAGTTTATTTGCTGGATTTCATATCAATTTTTAAATATTTTGATTTTCCAGTGCGGAATTTCTGTGTTTTTTGAAGCAGGAAAAAAACCACAGAAAACTAACTAAAAGAATTAGCAAAAATGAAAAACATACGTAAAACGATGTAACTTGTCCACGCCACGTGTAGTACAAAAAACCGATGTGCACCAACAAATTTTTGCAAAAGCTATTTTTCCATTCAAAACGGCGCCCCAACAGTTGAAATTTTATAGACGAAAATTTGCGAAACTGTTCGCTTCTCCGAAAATAAAAGTCTCAGATCCCATTCTTGGGTCTTCCAGATAATCGTTGAACTCCAAACTGGAGACCGGTTGCCGCCGACACCAGGAGCACATTAACAGTTCCGTCGAAATTCAAAAATCTAGAAAATCTGAGCACCTATGAGCCCCAGGACATTGTCAAATATTTTCTGAATCTCGACCAAGAGTCGGAGGATGTGACATGGCGATCGATACGTCACGAATTCCACGACACACTTGACACGTGGCACGCGGAAGCTGTGAAGAAGAGAGACGAGAGACGTAGGAGCAACACGGAGCAGAAAGAGTAGTATTCGTAAGGAGAGCTTTACGAAAATTCAAAAGGCTTCGATGACGGCATCGCCGGTAGGAATATCGATTTTTATGTATCGAGGAATTTACTGGAAAACAAAGTTTAGGAAAAATGTCGATTTTCCAGAAATTTATCGATTTTCCTGAAATTCGATTTACCTGAAATTTATCGATTTCCACCCTGAAATTTATCGATTCTGGAAATTATCGAGTTTTCTGGAATTTATCGATTTTCCTGTTTTTTCTGGAATTCGATTCTTCTGGAATTTTTCGATTTTTCTAGAATTTCCACAATCGATTTTTCTGGATTTTATCGATTTTACTGAAATTTATCGATTTTTCTGGTATTTTTCTGGAATGTATCGATTTTTCTGGAATTTATCGATTTTTCTGGAAATTCGATTTTTCATATATCGATTTTCCTGAAATTTATCGATTATTCTGGAATTCATCGATTTTCCTGACATAACAGATTTATCAATTTCTGGAATTTATCGATTTTTCGAATTTATCGATTATTCTGGAATTTATCGATATTTCTGGAATTTATCGATTCTTCTGGAATCGATTTGTCTGGAATTCATCGATTCTTCTGGAATTCAGTTTTTCGAGATTAATCGATATAATTGTCTGTAAATTTTACTCCCCAAAAAACAATATATCGTGCCGAGACACGAAAAACTCTAAAGAATTACAGATTCCAATCGGGGCGGCCGCTCGAGTAGAACCCGAAAGTTTCTAAAAATCAATCAATAGTCCTGTCATTCGCCACTCAAGCTCTCCCTCACCAATCAAAGGAATGCCAGAGGTAATCGTCGAGAACCAGCACGCCCCCTGAGCATTTAAATTCCACGTTGTAGTCCCTGAGCCACGATAGTATTTCCAATTCACTGGACGCCGAAATGAACATTTCACCGTCACCCTCGACACCGAAATCCTCTTCCTGTGGCGGAAGGTCGCATCGCACACCAAAAGCGATTTAAAAAGTGATTTCGAAATTCCGAGGTCGTGAAACCTTCCCAGTCACCACAGAATCCTGGGTGGAAAATGGGCGGAGCTTCCGCGTCGATTCGCGAAGAAATTGATCCGCAGGAGATACGCGACGAAGTTGTGAAGAAGGAACAGAAATTGCAGACTAACGTGCGTCATTTGAAATTTTTGAAAAATCGATAATTTTCAAAAAAATCGACTTTTTTTGGAAATTATCGCTTATTCTTGAAAATTATCGATTATTTTAAAAAATTATCCTCGAATTTTCTGAAAAGGATCTGTTTTCGGGCAAAAAGTTCCGAAAGTGTTTTCTCGAAAAACAACGACTTTTTTTTTGAAAGTTATCGATTAAAGAAATGTCATCTATTTCTTTGGTATTTATCGATTTATCTTAAGAAATTATCGATTTAAATATTTTAAGGAAATTATCGATTTTTTTAAGGAAATTTTCGATTTTTATTTATCGACGTTTTTTTTAGGAAAAAGTTTCGAATTTTCTCGAAAAATAACGACTTTTTAATAAAATTTATCGATAAGAATCTATGTTTTTTGAAATTATCGATTTTTTTTGAAAATCATCGAAAATATTTTAAGGAAATTATCGATTTTTTTGGAATTAATCGATTTTTTAGGTAATTATAGGCCGTTTTTTTTCAAATTTATCGAGTTTTTTAGGAAATTATCGATGTTTTCTGAAAATTATCCCTCGATTTCTTACAAAGGAAAAGTATCGATTCTTGGAAATTATCGATTTTTAAGCAAGTCTCTTATCGATTTTTCAAACGAAGAGTAAGGAAAATTTTTTGAAACTATCCATTTTTCTTTATTGATTTTTTTCCTAAGAAAATATCCATTTGTCGATGGCTAAAAATGTGGATTTTTCTGAAAATAATCGATATTCTGTTTGGAAATAAAATATCGATTATTTCTAAAAAAAATTATCGATTTGTGCAGGAAATTCTCGATTTTTAAAATAAAAACAGCGATTTCTTTTTTGAAAATCGATTTTTAGGGAGATTATCGCATTTTTCTGATTATCGATTATTTCTTCAAAATTATCGATTTTTAGAAGAAAAGTATGGATTTTTAGATATAATCTATTTTTAATTATTGATTTTTTCACCTGAAAAAATATCGATTTTCTGAAACAACATATAATACCACACATTAATTTCAGGAACCGGAGTTCAAAAAAGTGCAGCTTCTACCACACGTGGAGACGGAAGAGCTCGACGGAGCTCAAACTTTGGAGGTTTTTCGACGAGAAAGGAATTCACGATGAGGCGTTCATACGCTTGTGTAGGAACTTGTGATGGTTTTTCTCTCAAAAATTTGAAATTCTTCAGTTGGAACTGGTGTTTGATGCGACGATTTGGAGGGGAGTTGGAAAACGAGCAGATCATCTGGGGAAACATGCCGGGACTTGTTCGACGTTAAATTTTCAATTTTTGAATTTTTTTTCTCTTGTAACTTGCATTTTTCGTTTAACTTAGTGTTTTCGGTGTTTTTTGGACTATTGAAATATTCGGGTTGTTAATATTCAAAAATTAATTACATTATTAATAATAAATGCATTTTGAAATGGTATAAATTGAAAATTTTCAAAAAACCCCCAACCCAGTGGTTTAGGATGAAAATCGTGGAAAAGCCGAACGAGAGAGTTCCGAGTTGGCCACGTGGGACTGAAGCCTAATTGAGTGAATTTAATTTTGGATAAAAAAATTTTGGAGATCTCTTCGACATTTTCTCAAAAAATGATCCATAGCTTTTTCCCATTTTTTTGTTGCTTCATTTTCAAGCTCTTCGGTTATATCGCAGACGTTGAAGCAAGGGCCTTCCGGGAGAATTTCCTGAACATTTGAAGCGCCTTTTTGGGTGAACAAAAGCAGCTTAAAGGCATTTTTTGGTATTTTCAAATAATATCGGAAATCTGCGTTTAAATTTTTTTTTTAAAATGAATTTTTTCAAATAGGTTTTCGAAAAATCGAAAAAAAAATTTTCGGGTTTCCGGTGGAAATTTTAATTAAATTATGTGTTTATGATGATGAGAATAGTTGACAATAATTTTTTCCGATTTGTCAACACGTTTTTCAAAAAATTTGTCAATATAATTTTTTCCATTTTTATTCCTGAACAGAAAAAAATCGAAAAATTTTCGGTTTTAATAATATTTCGGAAAAATTTTGAATTTACCGTAGTTGTGTGATCGTTAAAGAAACTCACAATATTTCTAATCGAAGTATGCATATTTTTTAAATGAATTTTTGGAAAAATTTCAAACTTATTTTTTGTTGAATTTTTCGTTTTCTTTCGTTTTTTTAAACAGAACCAAATTTTTCACCATCTTTTCTTCAAAACAAAACAAAAAAAACCAATTTTTGTTTTTTGAAAAGCGAGAAAAATTTCGAAAAATTATTTTAAAAGTTAGAAAAATATCAATTTTGAACGGAATTTTTTCAAAATTCGATTTTTTTTTTTTCTAATATGTTCGAGAGTTTGTCGCCATTTTTATTTTTAAAAAAGGCTTTCAAACTACAAATTTTAAATGAGAATTTAGATTTTTTTAACGAGTAATGTTGAATATTGGAGAAAAAATAAATCAATTTTAAATAGAAAAGTTTTCTTATTCGTAACATTTTCAGTGTTCTCAAAATACAAAAAACTCGTACATCCTCCTGACAAGTACAGTAATCCATTGGATCCCTCCTGTCCAACACCGTCGCTTCCCGAATGTGAACCAATTGTTCATTTTCATAAGAACCGAGCTCACAGTCAATTTCCCGACCATATTTCCCTCGTATTCCTTCGAAAATGGCTGAAGCCCGATTCAAATTTCAAATATCACGGTGGTGGAGAGAATACGGACAATAGATCCGTAATTGATTTAACTTTAAAATTTTTTTCATTGTCATAATCATGCTACGTGGTCTGGACATGATCTGTTAAATTCTCTCGTTTCGGCGGAGAATATAATCGATATTCCAGTGGCACGAGGTTGTCGAGAAATCTATTAAAATTCTGATAATATCGTTCCAATCTCATTTCGAAGCTCGTCAGTTTCGGCTTCAGCTTTTGAAGCCAGTCGTTTTCAGATTGTGCTCCAGCGCGTCTGAGCTCTGAAAGTTTGATTTCAAGCAAAATTTTGTGTAAATGATTCAGACAACCCCATTTTTCATCTAATTCGAAATTAGCCACATCTAGAAATTAACCACATTGACTAATTAGAAAATTTTCTAATTAGAAAGGATGAATATCTAATTAGAAACGCTGCACAACACATCTAATTCGAAGGGATGCCTCGTCGAATTAGAAATGACATCGAATTAGAAAGGTGGCGCGTTGAATTAGAAGTTACGCGTCTAATTAGAAAGGAGGCACATATAATTAGAAACATATTGCGCACGTCCACATCTAACTAGAAGGGATGCTCGTCGCATAGTACTACCTTTTAATGTATGTACTACCTTTTAATGTATGTACTACCTTTTAATGTATGTACTACCTTTTAATGTAAGTACTACCGTTTAATGTATGTAGTACCTTTTAATGTCTGTACTATTCTAATGTATGTACTACCTTTTAATGTAAGTACTACCTTTTAATGTATTACCTTTTGGCTCTTTGGAAATATATCGATCAAGAAACAATGCCGAATTAGAAAAAAGGCATGAACTGGTGCGCGTTAGTTGACCTTTTTTTCTAATTAGATGAGAGGAATATGGTAGTCAAGACTGCAAATTATCAAAATTTTTTGGTTCAATTTGTTTTTGAAAAAAGTGAAAATTCCTGGGTTGCAATTTGTCGATCAGTATTACGTAGACGTCGAAATATGCGATTCGCCATTGCGGTCTTAGGGGTCTCGCCACGCCGACAATCAATGTAGTTCATGTCGATTTACCACTGTTGCATCGTAATATTCCAACAAATTTGCCGCCGAGGTGAAAAAATTCAATAAAAGCCCGTAAATCGACATGAACTGCAATAGGGTTGTCGGCGTGACGAGACCCAATTCTCATCTTTCGTACCGACGTCCACGTGATATAGAACTTTTTTTTTTGAAAAAATACGATTTTGCCTAAAAAAAAAACTGTAAATTCAACAAATCCCACAAAAAAAAAGCGAAAAGAAAAAAGCATCGCGGAAGACAGTGGCGCCAGGCTGTCTCAATACTGTTTGATCTACAAAAAATGCGGGAATTTTTTTCACAGACAAAAATTGTGACGTCAGCACGTTCTTAATCATACCGAAAATGAGATTTCTGCCTCTGCCATCCCGCATTTTTCCAAGATCAAAGTGGAAGGACTTTCACCTGAATAGGACTTTCTGATTCCACGTGGGAAGGAAGAGAAATCCAAAATTGCGATATTTCACTAATTTCCCTGCTTGAATTTCCTTCCAATCAGCGTCTTCAAACTCCGCGGCCCACTCCATCTGTGGATGAAAAATGGGCGGCGCAAATCGCTCTGATTGGTGGCAGTTCTTATTGCCCAATCATTCAAGTTCAATATCTGGATTTTTCATTTTTGACCACCTCCAATTTCAAGCTTCTTCCTTACCTTCAAATCGTAGAATATTGCCGATTCTCTCGGATTGATTCCTTCCTTCAAAACCAGAACATCTTTCAACTCGAACCCCGAAAGCAGATATTTTTTAACCTGAATTCTCCTAGAATATCCTTCGCTCGTAGCAACTCTCCAACGATTCCTTCTGTTTGTAGAAACTCTTGTAGAGTGTACACTGCCTCGTCCAGATCTTCGCAAGATGCCCGTAATTCGATCTTCCGAGCTAGTCAAAATTGCATATGTTGGTGTTTTTCGTTTCGAGCAACACATGCCAATGAGGATATAATCCGAAGTTAGACTCGTTGTTGTTAAAACGCTTTATAATGCTGGCGAAGATTTCCTCGAATTTCGTTTTTCTTTCTTGAAATTTTATCAGTCTGTATAGTTTTGAGGGTACAATAAAATCTCGGGACAACTTTTCGATATCTATCATCATCGTCATGTTATAGAAACCTATATACTACAGTGTTTTTTGAAGAGTTTACACCACGATACGGATTTTGATCGGTTTTTGATGATCAATTTGACTAATACGCTCGTCTCCGCAACGTCTTAATCGGTCCTAATGCAAGGCTGTGCGTTGTGTACAAGTGCCTTGCTTAGCTCTTCAAAACCGGAGCGATACATAGACACGAATCGTTTCATGCGCAGCGCAGCTGCTCAGGGCTCTCGAAAGTTTTCAGACATTCCGTGAAGCTCTCAACAATGCTGTTGAGGTTATCCTTTGGCACATTTTCCCGAATTTGATTAACTTGTGATAGATATTTATCTGATATATTCGATATTTTTATGATATTTTTCCGTGTTGTTTAGGATGTTTTGCCATCGCAAATTCAAATTCCACATAGTATTCCAAAAACTTATTCAATGGATGCAGGAAGTGAATTGATCCTTTGGCAGAAACGCTTTATATCCAATAATTGCTCTGCACTTTTATCGTCGAATAATTTCTTCACGTTAGATTAGGGAGCCCTAGAGATCCACGAAGTATCAATTCGTTTTTGGGAAGGAATAATTCAAAAATACCCAAAAGAAAATAGCCTGATGGCCTGGAAGAAAGCCGTCCGAGGATTGAATACAACGAATAACGTCCCTGACCTTTCGCACCCAATTTGAAAGCCCCAGTGTCGTATTGGTGTCGCGAATAATTTCTAAATCAAACGCCCCTTCGAAATTGTGTCCCACTGACAAGAAGTCTCGAACACTTTTACTCGCTTCATTTTTCATTATAGTCGTAGCGGGTTCGAGATAAAATGGAGATCTTGAGCAATGCGAATACTTTCTTGGCTCGTTCCGGAAGCTAAGAAATTTCTGTAGTAGGCGCCAACCTCTTCGTCCGTTTCATATTTCCGATCTGTACGATCATTAAAACGGCAGAAATCTGGGGAATATTTCTAAATAACTCCAACTTTGCTCCTCAATTATCCATGTGAAAAAATTCAACCCGGATTTTGAATTTCGGCTTGAAATTGCCGAATTCCCTTGGTGCACACATGCAAATTTTTCAAACGCGCGGCCCAAAAATTATTATCCTTGGAGCGCGTTTGCCTGCTCATTTGATTCTCTCCCGGAGCACGGTAGCTCAGAAACTAGATGGATGCTGGTTCATTCTAGATACTCAGTCTGGATATATTGGCTACTATCTCGACCCGGAAACCATCCACATAAAATCGATCTTTGCGATGCAAATAAGAAATGACCGCAATGAAATTATCTATCTCCATTCGTGATGAATTTTCGATTTTGTACTTCCTGGCCAAGTTTATGCACGTTTGTTCGGAGCGCGTTTTCACCCATCTAGCAACTGACGGTTCAGTAGCCAATATAGGTTTCACTGTATCATGAACCACTCCATCTAGTTGCTGTGCTACCCTCGTGCTGAACCACCGTGCTCCATCTACCGATTTCTTCCATTACGATATGGCTGCAATACTATTTTTTGATGGTCTTCCCGCTTGGTCAATACTAATAGGGAGTGCAATACTAATTTTCAGAACATTTTTCTGCCTTTGAGACTAGTTTTTTTCTGAAAAAACTCGAATTTTATGTAAAAATTCAGTCCAAAATTTGTTTTGATTGTAACCTATTTCAAAAATTAATCTCGTAGAAATTTATTTGAAAAATTGCTGCAAAATATGCAAAAAATATTGTAGAAGTCCTAAAATTAGCGAGAGGGGATTGCAATAAAAAAAGTAAACGAAACACTATTAGGGAGTTCAAGACTAATAGGTGCCAGACTAATTTTCCGCAGGTCTCCGAGGGGCAATACTAATAGGGAGTGCAAATCTAATAGGGAGGCCATGCATACTAATAGAAGAAATACGGTATTTTTAGTTCCTTTATTTTGTCAACGAGAAGAATCAAATGAGGGCACCAAACGCGCTGCAATAATACTATAATTTATTGTGCGCGCAAAAAAACTCATTCGGCACGCAAAGAATATTCACGAATTTATGCTGAAATATAATATCAGTTTTTATGTTTTTTTTTAACATCCAGATATTCTGAAACAGAGGAATTTTTTTTAGTTATTTGACAATATTTCCTAGATTTCGGAAATCATGTAAACAGCAGCTTTTGTACAACAGCTTTTTTTTAACTGTGAAACTTGTTTAAAAAGTCAAACCACGTCCATTTTGAAAATTAATTTTTAACATATAAAATAAAAACATGTGGAAGGCTTTTGATTCATGTACATACAAGTTTTGAAAAATACGGCATTTAAATTTGAAAAATGTGTTTGCTAAAATCTGATCAATTTTTTTGTTATTATCTATTAATAGCTGGACTTTACTTTTAGACAAAAATTACTCTAATTAAAATCTACCTTCAAACCATTTTTTCAGTTTTTGCAAATTCTCCTCGGAAATCAGTAGGACTAGCGATCGAGTGGCAAGTGAAAATCACGGAAATTTTTCAGGCGATTTTTCAGGCCCCATGTTGCCACGCCAACCATATTTTGGTTTCATGAGAGATCGGAGCTCATGAAATAAATGCAAAGCAAAAATCCAGCGAGGTGGTGATCTTTTAGTCATTCTCGCTGTACTTGAAGATGTGGGAGCTTCTTTAGTAAAATTTACAGCATTCTTCTCTATCCTTATAAACATGTTAGTCATTAGTGTTCTTTTTTCCCGACAATCTCCTTTCGAAAGCTCTCTGCTCATCCCATCCCCCAATAGCTTTTTTTTTGTAGAAACTTGAAATCCTATCAAAATCTATCCCGATCAGCTGATTCGTCAGATCCGTAGAAGCGATTTCGCCTCTGAGAAGCCCAGCGACGATACGATAGCAGTAACACAGGAGCGGTGGTAGCAGGTGAGCTCATCCAGTGAATCCGTTCGACAGGTTTATAGAGTACTTTCCGTAGAATTACTGAAATTATATTTACTATTAAAGTAGAAAAAAATGATTATATAAACTAACTATACGCAGGAAGACTCGCATTATGTTCCAGATTTCGACCTAAGAATTGTGGATGGCGTCCAGCCGGAAATTTTTATTTAAATTTAGTAAATCCTTTAGTGAAGAAAGTTTTTTAATAAATACCTGTCAAGCGCTTACCCTTAATGTGCTCCAACATTTGAATACCTTGCCGCTCCCTTTCCGAAATTTCGAGATCTCCGCATCAGCGTTTACCCGGTAACAAGAAGTAAGGGAATTATCGTTATAATCATCTTTATCTGGGAAAAAATTAATTTTCATGGAATATATTTCAAATTTTCGACAACCAAAAAAATTCACATTTTTTTCAGGAAATTTCGTTGAAAAATCTGTTTTTCATAATATTTTGAGAATAAAACAAGCGTAAAGGTATTCAAGAGCGCATGCAATTCACTTAAGCCAGGGTGACCCTCTAAGCGAACATAAAACATACGGTATTTAAAAATATTCTTGTTTTCCGCGGAAAGTCGGAGAATTTAATTTGATTTTTTTTAAAAAAAAAGAAAATTAACCGTTATACGTTTTGAGCAAAAAATTCTACAATAATAATTTAAAAAAATTAATTGAATAAACATTGAAAATAAAAGTGCTTAAATTTCAAGGCGCTGCGCGTGCATCAACCGTCACTTTTGTTTGGGTATCACCCCAGCACCCCGAATGTAAAAAGTACCAGGGTAAGAGTGCGCGCTTTTTTTCATTTTTCGAATTTGTGCGACCAGTTCTCATTATTTGAACGATTTTTGCGGTAATTTTGGACAGCCATTTTTTCTAGTTCCCACCGACAAATTGCATTATATCCGTAATTTCAAGAAAATTTTGTTATAAAACCAACAAAAATCTAGAAAATTGCTGAATCATTTTGCGTATGAATGGTCAGGCGGATCTGCTCGCTGCGACCGAACCGCCTATCGGGTCTTCAGCCGACAATCTCTACGACATAGAACTGTTCGAGGTGTTCAATCGTGTCGCTAACGTCGTCACAGAAAAGGCGTTCTATGGAGCCGCCCGATCACGCTCTCGGATCATTTGTTTTCAAGTTGGCATTTTTTTTCAAATCATTTGTCCTCACCTAAATCTCTAATTTTCCTATTTTCAGAATTCAAGGCCTGTATCAAGCTCGTAAACTTTCAAGGAACAACTCTTCACGGCCGTGCTGCACATTCGTCCACTGCGAGAAAGTTCGCACGCGAACAGCGAGGCCATCTCAACGATGTTCGAGAAGGTCAAACATAAGGGAAATTCCGGGAATTCTTCGTAGCGTCCAGAGCACTCGTTCCCCGAGTACCGAAACCAGAACCCACAGGCTTCATCATACCTTCCAGTCCACGTGGTCATCGTCGACGGGCAGTCTCAATGGTGGCGGCGGGGGCTATCGACGCCGACGTTCCGCCGGTGGCAATCAGTACAATCAGAACAAGTATCCGAACGAAAGGTACCAGGGATGACTCGATAATCATCCAGTGCAGCAGTATTCGGGCTTCAATCCCAGCGATTTTTGCTGTGATGACTATGTGGAAGGAGCCGAAAAGGTGCAAAATTCGCCAAATTTCGCTAAAAGAAATTTCGCCGACTTTTCCCGTAGCGCAACAGTTTTTTCTTTTAGGCACATTTCAGGCATTTTGGGCATATCAATATTTTTCCACCAGATATGTTCTAGATTTAGATGGACTAGATTTTATTCTCAGACGAATCAAGTGATTTTCTATATTTTTACACTATTTTTTCTTGAAATATGACCATAAAATGCAACAAAGTCTTCAGCAGCTGATGGGAAAAGGAAAAATCGGCGAAATTTCGAATTTCAGTCTATTTAATATGTTTAAGCAAAAAGAAAACTAATTGTTGAATTTCAGACTCGACAACCTTGCCAACCTGATTCGCTGGAGCACCTCCACGGATCCGTTCGCAACCTAATTATCAAAAGTAATTTTGAATTATTTTGAAAATCAATAAATTGTTTGTTTTCAGACGTGAATGCACAAGCACATCTTGTTCTCGTACGAATTGAGCTAAAGATCAAAAGCATGGCCCGCCAACGTGGAAAATGGAGCTGCAGATTAAGAAAGATGACCACCACCACTAGGGCCGGCGGCGGAGCAGCAACCACAGGACAGAACAGACTGACCCCACAACAGTTTTTGGCTCAGATAGCTCAGAGACAACAATCGGAGCAAAACGCGGATGAGGTGGCCAAGAAGAAGCGTCCGAACCTTTCGGGTATCAATCCAGCGCTTTTCTACATGAGCAATACCCGAGAACATCGCCAGTTGTTTATGCTTAAAATCTATAGAGTAATATGGAGATTTTGGGAAAAAAACATATTTTCTCGAAAATACGCCCGAAATAGTGTTTGTAAATTGGCGAGACCTATTTCTTCTGAAAAATTATAATTTTTTCGATTTTCACGTGAACTTGCAGGTTTTTGGATATTTTTCTCGAAAAACGTCAATTCATCGATTTACGCTAGTATACTCAGCAATCGACCCATTTTTTCGCAGACAATTTGGTATTTTTCTTAACTTGATTTTTATTCGACTTCTCGTGTAATCACTTATTCAAATGCGCGCCCTAAGAATTTCTCATTGGAGCGTGCTTGCTTCGTGTAGATTTCCGAGAGCTTTCCATTTATTTTAACTTCTTTCGTGCTTTTTCAGTTTTCCAGCGACTTTCTGGCTCGACCCCTCGGTATATTTTGTGCAAACACCGTCACGCGCAAATGCATGCCCTTTTTCAACGCGCTGCGTGAAAATTCACGCGATTTCAAATATTTTTTCCCGTAGTTTCCAAAATTTTCGAGAGCGGGGGGGTCGAGCCAGAACACCTTGGTTTTCCAGCGAGCTTCCTTCATTTACGTCGATTTTTTTTTTAATCTTCGTTAAATCTAAAAAAAAACGACTTAAATCATTTTAAAGTTTCCAACGGTTTTCTGCATAAAAAATCAATTTCCAGAACCGTCCGGCCACTACGACGACAAACATCTCCACACGGCAGTTCTCGCTTACGGTCGCCTTCGTGTACCTCAATCGGCCTTCGAAAGTCTCTCACCAATCGACAAATTGCTCATTCATCACATAAAACACGACAAACAACCGGTGCTGAAGCGTGATTAGTGACGACCGACGAGTTGTCGGATGCGAATGATTGTAGTCTACTGGAAATCTCCGAATCAATCCAAACCACGATCATCATGACGAACCGGCACCAAGCTCTCCGCTGAAACGTCTTCGCGCCGAAAGTGGATCCCTATCAACTGCACAAGGCGCATCGCCCGAGTGTCTCACCGACAAAGCAAAGACAATAGAGTTCCACGAGACTGAGATAATGTTTTTGAAACTGGACCACCAGAAGACCAACAACTACAGCTTATCCGAAGGAAACGAAAACGCGGATAAGATATGTGTTGAGCAGCCGAAAACCAGGTAGATCAACCGAGTACGACGACATTAATAATAGACGTCTTCCGTCGAATTCTCATTCGGCAGCACCGAATTCCGAGAAGAAGCATTTCGTTTTTCCGGCACGGGGGCTTTTTTTTGATTACCTAAAAAATTCCCAACTTTTTAAAGTTCAAAAAAGTCAAAATTTTTGTCCATCTGGGCATGACTGCTTATGCCCCGCCCCCCTTTTTCGAAGTTTCTGCTTTTAGGAAAATGTATTCCCAAAGTGCCAGTTTGGATGCCCCACGAATCAAAGGGAGCAGAACGAAGGAGGCACCACGTATTCAAGATCTGGTGCGATTCCGGATCCGGCACCGTACAACTTGAAAACGTGGTGCCTTTCTGAGGGAAAATTTGCCTGCCAAGGTTGAAATATCGAATGCATTACCCGTAAATCGACACGAACTACAGTAACCTGTTATCCGCGTGGCGAGACCCATGCGCGTCATTTGTCGAATATTATACTAAAACCTTTAACTTGCAGAAAAACTTAATTTTTTTTGTTAAAAATTGAGCCAAAAGACTCAAAAATTTCATAAAGCGAAACTTTAAAAAAATATAATTTGTTAAAATTTCAAGAAATATTTATGAATTAATTAATTTTTCCAGGAATACCCCATGTGCCGTCTCTCCAGTTCCATCGGTTTCTCACTTGGTCGGTGATCTGACTTTTGCCTACACGATCCTACAGCCGACGCCATGAGAAGATGCTGCTCGACGAGGCGTCTTCAATCATCGAAAGTACAACTCTAGCAGTGTCTACTGCTCTGTTCTGCTCCAGGAGCTACAATGCTCCAAATATAGGGTCACATATACAATCATATAATCTTATTGCATTTTCGCAATTTCTCTCCACACACATACACACATCATCCCAAGTATTCGTGTGCTGAATCTCAGTTTGAATGCAATGTTTCGATACCGTTTTTATCCCACTATTGCCTTATCGTTTCCTGTTTTATTATATTTCATATATATTGCCACCACCACCACCAACACCACCCTCTCTATCTTTTTTTGTTCTTTTGCTGCAACATCATCACCTAGTTTTCTGTGAATTGAATTTTTTGTTCCCCCGAGTCCCCTCTGATAGGATACATGGTAGGAAAGACAATGAAAATACGAGTTTTTTCAAGGAAAAAAAAATACAAACTAGGAAACTATAGAAACAAAATACTGAAAAAACATTTGAGGCGCAGTAAACCTCTGCAAAGTTCGCAAATCCAAAAGAAAATATTTATTTTTCTAAATTATTTTTCCGCCACTCCAGCCTCATTCTCATTGGCGGGCGCAAAGTCATGTCGATTTACGAGATTAAGATTTTCAACGAGTTTATTGTTATCGATTTGCGTGTAAAGTTAACTAACTTTTTTGAAAATTTTCGCAAAAAATTTTATAAAATGTTCAATTGGCACGAGCAGATCTTCAGCAAAAAAACCGACAGAAATGTGTTAAACTGAATCTCGTAAATCCACATGGCATAATCCAATGAGAATGTTTTTAGCGAAGAAGTTTGAACAAAGGAATATCAAATCAGGGCCAAATTTGGAGCAATTTCTAAAATATTTTCTCAATTCTTTCGGTATTCCACATTCAAACAATTATTCGGCCGTTCCCAAGGTGATCAATCTTTCGATGGGATCCCTTGGTACTGCAGCAGTCAACAGCTCAATCCCCAGCTTCACTATTCGCCACGTCATCCTCGATACGGTATCTAATGGAAACTCTTTGACAGGCCAATCCATCCGAACCTACACTCCCGGCTCAATGGTAAATGGCACATTCGGTGGTAGAATGTCTCGTGATACTGTTGGACGATCGTGAACATCAATTCCCAGATAATGACTGACGTGGTGGGGACACAGCTTGTCCGCCTGATTTGATGAATCATCTCCTGGTGATGATCGAATCAGGTCGAGTTCGGTGAAACTTGCCGCGACAAGTTCGTTCATTCGGCGTAACAGTGCGCTTAGGCGGACTTTTTCCCTTGAGTGGACGTAGGTGAGCAGTTCTTCGTGAACGTACAGAAGCGCTTCGTAGAGGGATTGTTGGGCCTCTGACCAGCTGCAAAAACGAATTTTTTTTTGGGAAGGGTTTTTGAAACAATTTTTCAAATTTCGGTCGAAATTAAACTTTAACCGTAAAACGATTATCCACGGATTTCTGGCTTCCCTCATAAATTGGATTGGAAGAGTTTACCGAACTAGACCATTTTGGCTCGGCTATATCTGGCGCCGAGTCGCGATTTTAGTTGTAAAACTAAATGCATTTGTACATGTGGAGTACACGACTTTGCCACGCGTTGTCCGGCGGGCGATTGTCAATGGATCCTGCATGCAAAAAAAAAAGTTCACTGAGGAAGAGAACTCCGTGATTAGCACCCCCTATTTCTCTTACGAATCTATCTTCGAAATCTTCTATTTTTTAACAAGTCCTGAATTCTGAAATTCATTATAGTAATTTTTTGGGAATCCTTCCATTCCTACGGAACAACATCTCGGATTGGTGACTCAAATTATCTGAATTTTCAAAATCTCCAGAAAAAAATATCATTTTGCCTGAATTTTCTACTTTTAACGGAATAAAGTGCAAAAAAGACTCTTTTTGAGGCACCACCGAAAGGAGAAAGGAGAACACAAACCACGCCCATTTTTTCCTCGTGCCGCCATCGCGCAAGTTTTTCTGCGCGCAAATTTTTATTTTCAACCGAGACAGCAAAACTCCGAAATAACGCATATGTTCTTTATCATCAACGATACTGTTATTTCGGAGCTTCGTTGTCTCGTTTGAAAATAAAAATTAGATGCAGAAAAATTTGCGCGCGGCACGGAAAAAATGGGCGTGGTTTCTGGCGATTCTCCTTTTTCGTGTCTGTTCTCCTTTCTGGTGCCTCTTCTTTTTATATGTTGCGTAATTTTTTAGCCATCTTGGAATAGCCCCGCCCATTACTCCCACAAATCCATATCTACGAAATCTCGAACATTTCCAGAATGATTTGTAGTCTCTCAAACGGGAATATTTAAAATTTCTAGAAAAACCCCATTTTTCTTGAATTTTGGACGAACTTCTGTAATTTCTCAAATTCTGAGAAAAATTTTCATTTGAGTCACCACAAATACTGGAATGCAATCGTAGAAATAGACTTGTGGGCGAAATCAAATAATGGGAAAACATTCATTATTTTTTAATTTTTTGGGGTCACTTATAGCACCTACAATTAACCCCAGAAATCGGAAAGCCAACGTGTCACATCTGACTCATACCCATTCAAACCACACCCAGCATCCACGAGAACACATTCCCGGGGATTCGGTTAGGTCGGATTATTTGCGTCCAAATAGTGAATATTGGCAGGAACACCACGGGCAATCACTGGTGGATATGCTTGCATTTCTGATCCACGACGACGTCCTTCAAACTCCAAGAGCCCGCAAATCGCGTTCTCGTTGTGTACATCACGGGATCCTGATATCATCGAGCTCATTGTCTGAGCTCTGCCACGTTGCACGCGTCACGCATTGAGCTCATTTCGGATGGAGATTTTATTACTCGGCTACGTTCGATCTGCTAGGAAAACTTGAAAATTGGCAAAAAAATACTTTTTTTTTTGAAATTTTAGAACGATTTTTCGGGTGTTCAGAAATATTTTTTTTAGGAAAAAATTGGAACTTTCCAAAAGTTTCAAAAAAATAATTTACAACTTTTTCCTAAAAAAAAAATGAATATTGACAGCTTCGAAAACAGTAAAAATTGTTGGAAAATTTTATTACCGTTAAAAAATTTTTTTTTTTCGTAAAAAAAACTTTCAGTTTAAAATTTGGAGCGTTTACAATTTTATTGATAATTGGTGAAACAAAATAAAAGGTAATTAAAAAGTATTTTTTTTTAAAAATTTGAAAAATTAGATTAAATGTTTATTCTGGGATGAAAAAACCTCCTAAAACCATTTTCTGGAAAATTTAGCGAACTTCCTATTTTGTTAATTCTTTTTTTTCAAGAAAAAATTTTCCACTAGAAAATGGAAAAAAATTGACGTCGTTTAGAGTCAAAATTGGAAATTTGAATTTTTACTAGCCCTTGAAATCGCGCTCGAAAATCGGATTTTTTTTTCAAAGCTTGAACAATTTTCTGCAAATTCTATCTCTAAACTCACAAAAATGATTTATTTCCCGAACATAATTAGCTTTAGCCTGTACTAACTTCTAGAGTAATCAGTCGAATCAAAAAACACTGCAATCGTTCCCTGCGTATCTCAAACTTTTTCCACTGTTAAGTCTTTATCCGGCTAGTCGGATTCCGTGAATTTTGCAGTCTTTTCCCATTCGGATTCAGTTGGTAGGGCGCCTTCCCATAGCTCATCATAGACACTAGTCAGCAAAAAGAATATTCTTTTGAAGATTCGGTATTCCTAATTGCATTATGTAATAACATTCTGGTGTGGTGATTCCGTTATGTGCAAAAAAAAAAACTTATTTATCAAATTTTTTTTTAAAAATTTAATTTATTTTTTTTATCAAACAATTTTGAATTTTTCCCAAAAAAAATCCGAAAATTGTGAACAAATCTTATTATTTTCGTTGAACAAAAAAACAAATTGACACTTTTTAATTAAATTAATTTTCGTTGAGAAAAAGAGATTTGTCGATTTGTGTTCGTCGCGGCAATGATTTTTTTTAACGAAATTTTCCTGAAAAATTCAATATTTCAATAATTCCTGATTTTCTAGTTTTTTGAAAGAAGAACATGTTAAATTTCTATTAATTGTATAACAAAAAATTTCGGGAAAATCTAGAATTAAAAAAAAATGAGAAAAATTCTAGTAATATATTAATTTTAGGTGTAAATTTCGATAATTTTAGGTTATTTTTCAATTTTTTTATGCCGGGCGAAATTTTGATTTCCAAAACAAAAATATGAATATTTCTGACAATTAATTTTCATTCTAGATTTTTTGCACAATTTTCAATTGTTTTCTGAAGAATTTGGTACTTATTGTGTAGTACATGCCCTCATTTTTAAATTAAATTAAATGTTCATTAATTCCTTATAAATTAAACGTGATATACATTTCCTCCTTTTTAGGCTTAAAAATTGCTATTTTTCTACTTAGTAAAAATTAAAAATGAGGGCATGTAATACACAAGTACCAAGAATTTCAAGCCCGTCAATTCTTGTTTTTGAAATCTTTTTTGGGAAAAATTCCATGACATTTTCGCAGATTGTTTCTTCGTTCAGAAAAAAATTTTCTAAAAATTATTTGTTTGAAACTTGGGTCTAAAAAAATATCTCTAGAGCACTTTTTATCCTTTTTCAACTTTTCTGGAAAAAGCTTTTTTATAACTTAAAATGAGTTTCTGTGGCCGCGTTTTCTCTCAACATTTTCACTTTGCGGACAGGGCCACCAAAACCGAACCTGAAATGGCTTTTCTGTCGGAACGCGTGTGGAACATCCGGTGCAACATATGATTTCCGAGCTCCTTTCATCACAACGACCACTTGCTTTTCTGAAACTTTGAGAGGTCATGGCCCACGATAACTTTTAAATGGTTTTCTATGCATGGTGATTTTATTACGGTACCGGGTCTCGACACGATGAATTTTATAGAATAAATTTTTCTGAAAAATTTCATTTTTTTTTTTAGAAAAATCAAATTTTCAAGATACATGGGCAAACATTTTTCAGGAAAAATTTAATTTCATAGAGAAAAATAGAATTTTTCCTATAAAAAAATCTGAGCGTAAATTCGGATTTTTGAGACTCTTTATTTGGATTTTAAAATCCAAATTTTCAAAAAAAAATTTAAAAACCGGAAAATTCCAAAACTTTTTGAGAGTAAACTAGCCTTATATTTTTCAATTAAAATTAATTTTTTAAAAGAAAATTGGAATTTTTAGAACACCAAAAAATTGGCAATTAGTCCCGAGTTCTTCAACGGAAAAATCTGAAAAATCCGAACTTTTGAAAATCTTTAAATATCCCAATATTCAATTAAAAGCGAAATTTCGGATTTTTGAGAAAATTTCAATTTAAAAAAGTCTTCTATTTGTACTGCACACATTTCTAAGACAAATGCATGGCCTAGATAACTTTTTCAGAATAGGCCACCAGGCCATTTGCGACTGACATCTGCCTCTTACCCCCAGTTTGGACCTCTTTTTTTAAATTCATCAAATTCGTCCTTCTCATCGCATATTCCGCATTTGGAATTCGCGATGGCCACATTGGTAGGCTCCGCCCACTTCTGAGCATTTTTTTCTTGGATCCGATCTGTGTTCAGTGGGAGGGAAATTCGAATTTTTTTAGAAATGATTAAAACTGAAAAAAATAGATTTTTTGGGAAGGAACCTGAATTTACGAGAGACTAGTAAAAAGGAGGTAAAACAAAAAATTCGACTTTATAAATTGAGTCAAAAATTAATAGAAAAAATAAACTTAAAATTATGAACAGAAGAACCTACTAAAAAAGTCTAAAAAATGAATGAAAAATTGCAAAAAACATCTTCAAATCTATACGAGACTCCTCCTCCAACAATGCGGTTCACGCGGGTGATGTACCTGAAAAAAAGTGATTTTTTTTTGAAATTTTAGAAAACAAAATTATGAAATAAAACCAAAAAATTTCCGAATAATCGAGATTTTTCGGAATAGTTTGAGGTTAAAAAAATTTTCCCAATTTTTGATGAAAAGTTTTTTTTCCAACAATTCGGAAAACTAAAAGTACCAAAAAATTTTAGTTTTTTCGATTGTTTCAATATGATAATGGTTTTTTTAAATGTTTAAAATTGTATTTTTTCCAAAAATATTATCAATTTTCATACAATTTTATGGTTTGGAGATTTTTTTCAAATTCAGACCAAATTCGATATTCGAAACGTTTCTCGAAACAAAATTTTTCAACTGAAAAACTACAAAAAATCCTCTTATGGATCTTTGAAGAAAAATCGATATTTTCTCAAATTGTTCAGATTTTTTCTGTTTTTACCCAAAGTGCCCAAATTTGAGTTCGCCACGAATGTTTAAAATTATTTTTCCCGTTTTTTCGATATTTGCGGGTTAAATTTTTTTAAATTTGATTCAATTTTAATAAGTTTGAGTTTTTTTACGATTTTTTGTCCTAATTTTTTCCAATTTTTTTCCATTGGTAGAAGGCAAAAAGTGCGATTTTTTTCCTTTTAAAAATAATTATTCAGTTTTTCGACTGTTTTCTTCTCGCTTCCAGATTTTAAGTTCTCGAATTTTTTTTATATTTGAATTGTATCTTTAACTATTACCTAACGAAAAATTAGTTTTATTTTTAGATTGGAAAAGAACGTTCTTTTTCGTAAATTTTAGTGATTTTTGATTCCAAATTTTTGGATATTTTTCAAAATTTCCCATAGAGAAAGTTTTACCAGGCTTTGGTAGAAGCCAGAAATCGATTAAAGCTTTTTTGGGTTTTTCGACAATTTGTCAAGTTAGGAATTAAACTTTTAAAATTTATTTCAAAAATTTTAAAAAACTAAAAGTATTTCTGAGAATTTTTCTGATATTAATTATTCAGTTTTTCGACTGCTGCTTGCTTCCAGATTTTTTCTCGAAGTTTTTATATTTGATTTTTTTAAAAAATACTCTATAAAATTCATTTTTTTTAGGCATTTTTTCTGGATACTTTCTCTTTTCGAAATTTTCGTAAGTGTCAGTGTTTTTCGATTTTTGATTCTAAATTATTGGATTTCTTAAATTTTTTCGGAAAATTCTACCTGGCTCTGGTAGTAGCCAGAAATTATTGAAGAAGCTTTTTTTTCGATTTTTTAGACAATTTTCCGAAGTTTTAGTTAGGAGTTAGACTTTTTCAAATTTTTTTTCAATTTCAAAAACTTTACAAACAAAAAGTACTTTAATTTTTGCGAAAAACAGCATTTTTTTTCTCGAATATTTGAACTTTTTAAATTTTTAAAGCTTGTTTTATATATATTCGAGTATTTTACTCTTAATCAATGAAAAATCTTTTTTTGATAATTTTTTTCAAAAATGTAAAATTCGAATTTGAAATTATTTTCATTCAGAAAAGGGAAACTATTTGAAAACAATTTTTTGTTGAATTTTTCGTAAATTTGAGTGATGCTTTTTGATTCCAAATTTTTGGATTTTTTTTTGAAAATTTTCCACGTTTTGGTTAGGAGTTAGATTTCTTGGAATTTTTTTGAATTTTTTTCCAAAATTTTAAAAAAGAATTTCTGAGAAGTATTTTTTCCTTAAAAAAGAGGAATTTTTTAGTTTTTCGACTGATTTGTGCGTGCTTCCAGATTTTTTCTCCAAGTTTATAAACTTAAATCTTGAAATTTATATTCTAATATTTCAGATATTACCTAATCGATAAAAAACTTCGTTTTCTTTTCAAATTTTAATTGAAAAAAATCGATTTTTTCGATAATTTTTTAACGGCTTTTTTTATTCGAATTTGTTCAAACACTTTTTCATTCAGGAGAATTTGATTATTTGCAATTTTTAATTTAATTTTTTAATCCTTTAAATTTTCGTAAATTTTGAGTGTTTTTTGATTTTTTCCAAATTTTTTTTTTGCAAATTCTCAAAATTCTTATTTTTGCAGAAAATTCTACCTGGCTTTGGTAGACGCCAAAAATTCGATTTAAGAAGCTTTTTTTTGATTTTTTTTGACAATTTCCCAGGTTTTAGTTAGGAGTCATTTTAAACTTTTTTCTTTTCTTTTGACTTTAAAAAAAAGTTTAAAAACTAAAAGTGTTTCTTAGTTTTTCCTTAAAAAAGAGGATGCACATTTTTTTCGCTAGTTTTCCTGATCGACTGACTTCGTTTTTGAATTTTTAAAAATTCAACAAGTGTATTTTTTAAAAATCTAACCGATAAAAGAGTCGTATTCTCGATTTTTGTTTTCAAATTTTTGGGATTTTTTTCAAACATTTTTCCAGAAAATTTTACCTGTCTCTGCTAGAAGCCGAAATGTGTGATTTTTTTCCAAAAAAATGCTGGCTAGTTATTTAGTGCTTGTTTCTTTCTCGAACGTTTTATTATTTGAACTTTAAAAATTTTTATATAATATTAAAAATTTAAATAATAATATAGAATTTTTTTGAAAATTCCTTTCTGATTATGGAAAAAACATTTTGTTATGTATTTGAGAAACTGAAATTTTCTGAAATCTTTTAAATTTGGAAAATTTCGAATTATTTTTGTTGATTATACTCTAGGTAATCGATAAAATTTTTTTCCAATTTTATGAAAAAAATGATTTTTTCGATAATTTTTGATTTATTTTCGGGAATATTTGAAAACAAACACTTGAAAAATAAATCAAACTTTTTTTTTGAAATTTTCGTATTTGAATTTGAGTCTTTTTCGATTTTTGATTTTTCTAAATTTTTGGATTTTTTCCCTCCAAATTCTTCGTCAATTTTTAGAAAATTCTACCTAGCTCTGGTAGAAGCCAAACATTGATTTAAGAATCTTTTTTTTTTCTTGGATTTTTTTTTGAAAATTTTCCAAGTTTTGGTTAGGAGTTAGTGGATTCCCTCAATTTTTTTCTTGAATTTTTTTCAAAAGTTTTAAAAACTGAAAGAATTTCTAATAGGAGATTTTTTCCTTAAAAAGGAGGAATTTTTTAGTTGTTCGACAGATTTCTGCGTGCTTCCAGATTTTTTCTCCAAGTTTTTATAAAATCCTTAAAATTTATATTTTTAAATAATATTTCAGATATTATACTCATAATCGATATAAATTCGTTTTTTTTTCAAATTTTAATTGCAAAAAAATCGATTTTTTCGATAATTTTTGAATTTTTTTTGGGTTACAAATTCGAATTTGCAATATTTTTCATTCAGAAAAATTTGATTATTTGAAAACAATTCTTAAGGATTTAATTTTTTAATCCTTTAAATTTTAGTAAATTTGAGTGTTTTTTGATATTCCATATTTTTGGATTTTTTTCCAAATTCTCCGAATTGTTATTTTGCAGAAAATTCTACCTGGCTTTGGTAGAGGGCAAGCCAAAAATTCTAAGAAGCAACATCAGACGGTCTTCCAAGTCTTCCCAACGGAATCATCGATTCCAAGTGTTGTTTAATCTGGCGAGCTTCTTCTCCAGAAGCATGATCCCATACAGCACCAGTTTCCTTTTCAATCATTCCAGACACCACACTAATCACGCGGACTCCTTGTTTCGCGCACTCGCTACGGATTTTGTAAGTGGGACACTGCTAGATGCAACTGAGTAGAGGGACCCATATCGATTCATGGAGTGAAGCCGAAACATGACGTTAGGTAAATGATACTGCCGTTTCTGTAAAAAATCGATTTTATTTGGACGGGAAATTTTGCCTGCCTACGTGCCTACCTGCCGGCCTATTAGCCTATTTTTCATATTTATTTTGTTGTTCTACTTTTTTGCCGTTTTTTGGGAATTTCATGAGTTCTCGGGTCGGCACGACTTCATGCCCACGTGCCTATCTACCGGCCTAACATGATATTTTAATTCCATGATTTAGGTAGGCAGGTAGGACGAATACCTGCCTGCCTACCGCTGTTTTTTTGAAATTTTTTTGTGTGAAAAATTAAAATTCAAGGGAATGCTTTTTTTTTCAAAATTCAATGATTTTTAATGCAGACCGCGCCTATCTGCCTACCGCCTATTTTTGGCATTTTTTGTGTGCAAAACAAAATCAAATTGGAATAGATTGCCTTATCTTTTCGTTTTTCTAATCTGTTTTCCATTTCAAGATTTTTCGGATAGGCACGACTTCCCACCTACTGTGCCTACCTACCTACCGCCTATTTTTGGCATCCGGTTTTTGTGAGTAGCAAAAAGAGATCAAATTAGCTTTTTCTCCTGTTTTCTCCGATTTTTTTGGCAATGTAGGCACGACTCCATGCCTAGTACCTACCTACCTACGTCTCCTATTTGTCGGCATGTTCTCGTACAGAACATAATCAGATTTTGAAAACACTAATATTTTTGTTTTCTGAATTTTTTTTCCAAATTTTGTGATTTCTAGGGTAGGCACGGACTTCATGCCTACGTGTCTACCTACCTACCGCCTATTCTCGGCCTTTTTGTGACTGAATAAATTAACATTCTTGAAAATCCTTTTTTTGTTCCCTTTACTTCAATTTTTTCAAGTTGCATGTTCTCTAGGGTAGGCACGATTTCATCCATGTATCTACCTTTTATCCCCCTTTTTTGGTTTAGGTCGGCAGGCTTGAGTCAGTGATGCACGAAAATCTAGAAACATAATTTTGATTCTGTACGGTAAATTAGGCTTTCAAGACAGTTTGAATTTCTCGAATTTCTACCAGCAAAAAATAATATCTGAAATAACTTTCGCAGCGAGCCCCAAGAAACTGACTGATGGCGATAGCGTCGACATAGCGGCTTTCGAAAGACGGGAACGGTGTTGTCAGATTGTTGGCGAAAAGCTGAAATTTCGAGGTGAATTTTCCACGTGGAATTTTCAGCACGCTCGAACCTTATCAAAATCCTCGCCGGATGTCTCAAGAATCTTGCCGAGCACCTCATTCTGTGGTGGAACTGTACTTAAAGTGTCCAGACCGCCGAGCTTCTCAGCCACTTTCGTGATCAGCTTCCGGTCTGTCCTCGGCTTTTGACACGTTGAGAAGGCTGTGACTCACCTCCAACCTGAATTTATTCCCGAATTGATTCATTGTCAAGTTCTGAAAATCTTCCTAAACCTTTATATTGTCCTCTCCTTTCCCCACTATTCGGACAGTCTGCGGCGGCGGCGACCTAGTAGCCGGTGAACGCGAGTCTTCTCACTACGCTGCTTTGCCCAGTGTGGACAGCAGTTGCCCCGGTGCTTACGAGTGCACATGACATTACTCTGAAAGCCCGATGATGTGGAGGCACATTTATAGATACACCTAGACATCAGGTAGATTTATTTGGAAATCCGTAGAAAATAAAGATCGTGATAAATCATTTTATTAGAGGGGAGAGGGAGGGCGAGCAAAGGAGATCGCTGACAACTTTCGAAAACCGGTTATTTACTCCAGTTGGACGGCTTATTCATGCCATATTTTCCAAGTTATTTACACTATTCTGTTGGTATTGAGAATGTTGATTCTGCTTAGCTGGCGGCTTCGAGCTAGACATCTTTGTAACTCGCGCTCGTCATCCTTCCGTAGAGTTGACGACCTCCAGCGCTGCTTCCAACATTCCGGGGCATCATGTTCATGAATGTAGTAGGGAACTAGTAGCAGGTGACTAAGAGCCTGCTCCATGAACAACGGCGACAAGTTGTTGGCTGCTGCATATAGTTCCTGGAACCCTGGTGGTGGTCCAACATTCGACGCCTGCTGTGGCAGCTGATCCGGAGAGCTTTGAGATCCAAACTTATTGAAGTCCAGCGATAAATCCTTGAGTCTCTCTCACCAGATTGCACTTGTTGCGCAGAAGCAGCCTGTGACAGACGAGCAGTTCGAAGCAAGCTTGTAAGATCAACTCCCATTCCGTATTGCATAAGAGGTATATTGCTCATCACGAACTCCTGGCACTGGATTGTACCTGTTCATGTAGTTGTTCATGTATGGTGCATATGGGGGTTCTTGAGTGAACATCATGATGGGGTGCTGTTGTGGATTTCCAGTCGGTTGTGATTGAGCTGGCGGAGTTTATTACTGCTGCTGCACTGGGCTGTTGTGGGGCTTCTTGCTGCTGTGTGGCTGGTGCTGCTGAGCAAATTGCTGTGTTAGAAGTCTGGTCCAGAATTGTTGAACTTGCGGCGCCATCCTGTCCGTTGGTACTGATATGAAGCGGACGAAGTGTCCTAGGACAATCCTCAGTTAGATTGACCATAGGAGAATGGAGATGAAGTCGATTTTAAGTGTAATCGCCGTCAGGAATTGACGTCCTTTCTGGCAGAAAAATAATCGAGAATTAGAAATCGTCTTTGCAACAAATTTAACTCCCTCAACTTGTTTCGGGATTATACGAGAAGAGTTAAATATATAGAATTTCACTGTGAAATCGAGGCAAATAGGCGGAGGATTCAATAGAAGGAAGCTGTGGGCTTGGAGCAGCCTCAACAATACAAATGAGTAGTCATGAATGTTCGTTGGTGCAGTTGTGCGAACAAATTCCCCTACAGGATCAGGAATAATCTGGACTGGTGCTGCACTGGAATTGGAGATAATCCTAGTCCTGGTGCTTCACTCAGATCTATTCCTAGATCCGTCCTCAGTTCAATGGTCCATGCTTGATTAGGTTCTGGGGTGCTTTGTACATTTTGATCGTGATGAGTCGACACATTACGCGTCTGCTCCTCAGCCAAAACTGATGATTCACTGCAAATTAAATTTTAAAAAATCTAAATAAGTAAAAGGACAGAACAACTTACTTTTTGAGGAAACCATCTTCATTCTCCGGCTGGTGCGAGGGTTCTGGCTCGAATGCAAATAAAGGCCGGCGCTCTGGCTCTTCTTTAACTGGTGCAACTGATGGAAGTGGAGGTCTATATGTGAGAGACTCCTTGGCGGAGCTGCTGGTTGAGGATTCTGTGCCTGGTACTTTCGGAGTGCTGCTTTGCGATGGGCAGGTGCTGCTACTGCAGCAAATGAGATCGGTGCCGGCGCAGAAGATGTGGGAACAGTGGCGCTGACGGGAAATTCCTCTACTGGTGGTTGTACTTCTGTGACTGTCTCCACTTTAGTCTGCTCCTGGAAAAAAAACACGTTTCGTCATTTCCTTCTTCAAAAAATTCTTACCTCATCAAGATTAGCCGTCTGAGCGCATCTGGGTCAAGTGCTGATGATGGAGCAACAGTTCGGGAATATCCACCTCTGGCGCCACCTCCACGTGCTCGTTCCCACCAATACGGTTTTACAAATCCTCCTCGAGTCGTCCAGCGTGGTGCTCTGCTCCTTCCTTCATTATATCACGGTTATCCTGATTATTATCTCGACTTTCTGGAGCTCCATTGGATCGCCCGCGGCCTCCTCGATCGTCGAAACCGGTGACTCCACCTGAAAAAGACATATGAATATTTGATCTATTTAAGCACGAACCTCTGCCTCTTGCTACAAATCCTCTGTTGTTATGACTGCCCTCTTCCGGCTTCTTCTTTTCCTTTTTAGCTCTTTCTGTTCTGTGCACGAGTCAAGTTTATCTCCAGCATCCAGAATGTGATCGAAAGTGTTGCGCCGTAAAGATTGTTGTCAGTATCCAATAGCTATCTCAGCTTTTGCTTGTGTACATCCGGTGGTTTTGATAATCTGAAAATGAAAAAGGACATGAGCAGTCTGAAAAAACCTCTCTTGGGAATGCGCGAACACTTTAATTAGCCCAAATGAGTAGGGCATGTGGGTACTCTTACTCTCGCTGCACCATCTCAAGCGCGCCTGCTTTTGTCCTGTTCAATTTGCCATCTGGCCCCGTCTTATCGATTCGAAATTCCTATTGACACTGCAAAGCGGACACTAGAGAAGTTCAGCCTAAACAACAAAGTCACGTGCGTCATCATGTCGGTGTGTGTCGAGCGTTAGCGTGAGTGCAAAGATTCACTATTGAAAAGCGTCATTTCCAGCTTGGAGACTTACCATCTTGATCATAAACTGTATGTCCTCCTCATTTCCGGAATTTCCTTCTTCAGTGTCGTAGGGGGCAAGTCTGATCGCTGGTAGCTTTTTTGTCGCCTTTAATACCCATTCTGAAAACAAATTATAAATAAAAAGGGTCAGTCATGTGAACGCAGACTGAGAACTAGTTGAATGAGAATCACGTCTTAGAATACAACTATCAAAGGAACGTTGAATGAAAGGAAGCAAATAGATGACACACCACTAGTAGGACGAAGAAATATGGAACCTTCCATCACAAAAACATTATCAAAAGAAAAGCCTCGTACAGAAGACTCTAACACAACATGAATATATCAGTTCAGCAATACATCACGTTACGCTTTGGAGGATATTCTAGAGCAGAAAACCCCGACTACAAAAATTTCGAAATGGAAAATTCGAATGAACTGCTATACAATGGAGAATCCTATTGAGCGATGATAAAGTGTAGGTGTTACTAGATTGAATCAAAATTTCGAAATGTAACAATACATTGAGTGAAAATTTGGGTATTTGCAGAGTGTGTATCACAGCGGTAAAATCAATGTTTCCACTAAACTCAAAAGTTCTTACGCTGAAAGATCAACATTAAAAAAGTGAATCACCGCAACCTAGACGAATCGCGTTGCCGTCAAATCTCGCAAATTCCCGGAGTTGAAAATGCAGTCGACCGCGACGCGAGCGGCAACGCACCCCGACCTCCAAGCGGCATGGGTCTCGCCACGACCAAAAGTACGACGACAGCCTCTATCTGGCAGTATAAAAGGCGACCATTTTCCGCTATTTTCCGGTAAATTTTGCGATCGAATGAAACTGTGTTGCTGAGGGGGTGCTAATTTTCCGGAAGTTTACCTATTTAATGTAAAAATGTGAATTAAACAAAAGAAAGTGGGTAGGATTATCAAGGAAACACACTGTTCTGGGAATTCGATTTTGTGTATGGACTCTTATGGCGTCAACATTATCGACACGAACACTCAACACCTTGTCACATTTCTGAGAGGGAAATATCATTTTCAACATGAGTCTTCCCAGTTCATTTCGACTCGTCGGTTCAGGTAAAGGCGATCGGCGAGCGATCAACCAGGAGCACACCAGAGCCGGTAATTGTTCTTTTTTATTTCAAATTTCTACAACAACAAAAAGAATTAACAATAAATTCCTTTGAGGCCCCTACCCACATAAAGTAGGAAGTCGACTACCAAGATGGTCATCAAATGGCTCCGGAACCCGTGGAAGCACCAATGTATAAAAATTTAAAAAAGTTAGAAAAAAAATCTGAATCCCAATTTCCAGAGGCTCAAAACGATGAAATGTAGCCACCTCAACCTAACCGCAGATGCAGAGAAGCATTTTAGCATAGCCAATGGCTCCCCACAAAGGCCGCCCTGGACTCCACTAAACTCTGCAGCGGCGGCCGCCGCTGCTTGAGATGACAAAAACGTGAAGGGAATGCGTCCGCTTTCTGAAAACTTTAATTAATGTGTCGAATAACGATGATCCAGAAATGTCGGACAAGGCCGCACGTCTCAAAGAGCTTATTCGAGTGAGGAATTGAGCGAAAAACGCGATAAAAACCGGACAAATTCGGATATTTCAGGGTGATTTAACTGGAAACGACGGCTGAAGAGTTTACACGAAATCTGCAACAGATCAAATCCCAGGCTCAACCGCATCTTTTACCTTGAGAATACTCTTCCGGCAAGGAATGCTGTTCGAAATGGTTCGGTTTTATGTGCAAAAAAATTAAGATCGCGCATATTCAAAAAAAAAATTATCGAAAAACAGGTCGAGTAGCATTGCGAAAAACTTGAATTAAAGGTAACATAAAAAATTGCAGAAAATCCGTTGAATTACATTTTTCCAGATTGTCTGTAGAAATTCCATGATAAAAATTCAAAATTTCCAAATTTATTGGCTATTTCTAGGCTCAATTTCATTAAAATTCCATTTTTGATAGCGAAAATTATCAAGTTTCTAACAATTTCAAGCTATGTTTTTGGTGATTTTTTCAATTTTTCGGCTTTGAAAGTCCATTTTCCGGATTGTCAGAATATATCCGAGTTCCACAAAATTGAGTAAAAAAAATTAAAAATTTCCCTTTATTTAAAAATATTTTCAGCTGTCAGTAATAAATATGGATTTTCCGCAATTTTCTCACAATTTTGAGCAAATTCCTCAACCGATTTTCAGCCAATTTATAAGGATTTGCACCCAGGGGGTTGTCATAATTTAGGGTTCAGCTGAGAAATTAAGTAGTAAGTTTCTGAGAAAATTTTTATAGATTTTCTCAAATAATTTCAGCTCAAAAATTCGATTTTCAGAGCGCATTTCCAGGTTTATTAAGATTTTGCCACCAATTCTTTTAGCTTAAACTTTAAATTTTCCACATTTTTTGTCTATTTCCAGTATATTTCTTTAAAATTCTATTGTTGAAAGCAATAATTATCAAGTTTATCGCACTTTATCAATTTTTCCGCAGTATCTTTTTGTGATTTATCCAAGTTCCACCAAAATTGAGCAAACAATTATTTAATAACTTCCCTTTATCCTCTTAATTTCCACAAATTTTCTCGCAATTTACACGCAACTTTCATAATTCAGGGCTATTTTCAGCTGAAAAATTGCAATTTAAAGTTTTTAAAATGTTTATAGATTTTCTCAACATTCAGCGTCAAAAATTCTATTTTTAGAGGCGCATTTCAAGGCAATTTATGAGGATTTTTAACTATTTTCTAGATGAAGAATCTTTTTTTTTCCTCTTGGACTATTTTCCCTTATTTTCAGATTTCCAGCACTGCATCAGTTGAAGGCGTAAATCCACCGCCTGGCTACGTTTGTCAACAATGCAAGAACCCCAGGACCCCCTCAGCCACCGACGTCCACCTCAACAACAATCCCAGCAGCAGCCACCACTAGAAATGCGTTAATCCGAATCAAATACCCCCACAAATGGTTCAAGGGGGTCCCCATAGGGTTGTAGGCGCCCGGCCAATGATCAGGCCTTCGAATGGGCCGCGGCGGCCCTAGCCCGGCCTACAATGCGGCCCCGTACGAGGGCCGATGGGACATCAGATGGTCCAGATGCATCCTCCTCCCCCACCACAGCAGATTCAACAGCAGCACCCGGCTCCCCCTGTAGAAATGGAGGTGGAAGAGAATTTACAGCCTACCGCGGCGAGGGACCGACGGCCAGCAATATAAGGATCGCTCAAACCGTCGCTTCTGAAGCGGGATGAGGTGCGGAATAGGATCACGAAACGAATGATGTCATCGTGTTCGTGGAAGAGGAGGGTGCGCTTGTCGCGATTTCAGCTGTTGAGTCGCATTAACTTTAAGGAACTTATTACACTGATGGCGTTGCAGAACATCGGGTGGAAGAGTTTGAGGTATTGAGGAGAATTGATTTTGCTTCAAAATACGGCAGCGAAAACAGCAAAAATTAAGGAAAAGGAAATTAAGACGGCTTAACAACAATTTTACATTAAAAAAAAATTTAAATTTCAAAGGTTCCGAACTATTTATTAAAAAAACATCTAGATTTTAAAATCCAAACAAAGTGAAATTTACGCTGAAACGCGTTAATTGTTTTTCAAAGTCCCAAAATATAAAAATCTGAGAAATATTTTCAAAAATATCTCCAATTTTCCCCAGATTCCGAATATATTCAAATTCAAAAAAAAAATTTCACCTTTATATTTCAGCTTGAAGCTATTCGCTTTGTGCATGCACACCATGACCGACAAATTTTTTCAAATGCGCGCCCAGATAAATAGCTTCTCATCGGGGGGCTTACTCGCTTCGTGTCGATTACGAGTTCATTTTTTAATTTCTTTTAAGCTTTTTTTTTCAGTTTTTCAACGAGTTTCATTGAAGATTCTTCGTCGATTTTTTGTCATTTTTTGAAATTTTGTTTTGTGTCAATTTGACACTTTTTTAGGTCAAAACCCCTGTGTTCGTCGATGACGTAAAAATATAAAATTCCGGGACTTTGTTTGGAGATATAAAAAAAATATTTTAAAAATTACGCACAAAAAAAACTGACAAAAAAGCATAGACAAAATAAAAGAAACGAAAAAAAAAAAGAAACTGTAAAAAAGCACGAATAAATTTTTTTAAATAAAGGAGAGCTGCCGTAACCATCGACACGAAGCAAGCATAAAATGGCTTTTTTCCTAACGATTTGTGAAAAATCCGAATTTTCCATCCTAATAAAAAAGCAGAATTCCGGAGAACTACGTGGCAATTGATGACGTCAAACGGCGCGTGATTAACTTCGCTTCCTTGAAGATTTGGATCGTCAAGAGGAAGAATTAAGGGAAAGTCGAGAAAAAGAGTCGCTAATTCGAATGAACAAGAATAAGAATAGTGGCAAAGAGACGATAGAAAAAGCGAAAGAAATGCAACACAGGAGATGCAGAAGCGAAAAGGAATATTCGAATGCGGCTGCAATTAGCACTTTCCAGTAATCTAAAACTGTCAAGAATAAGTCCGTTTTGAGCGTGAAATGTTCAAAATTAATTATAAAAAATAGATTTAAAAAAAACAATTTCCTCACCAAGGGCCGTGTCATTTTTCGATTTTTCGGTCTACAAAAATTCGAAAAATGAGTAAAGTTTCGTGTTTCGATTAAAAGTCAGAACTGAAACACCGACACCTTTGTTTCTGAGATTTGGATTATTGGAAATGAGCAAAAAAAAATTATTCAGAAAAAATTGTTTTACAATGCTGAAAAATCGATGAAAAAATAAAATAAATCAATAACTAATTTAAAAAATGGAGAAAAATTTCGATTTTTTCGTTTGTATTTCACAAAAAAAAATTTTTAGAGATAAATAAAAATTTGCAATTAAAAAGAATTACTATTTAAAATAAAAATTGAAAAAAATAGAAAATTCAGAAAAATAGCGAAAAATAAGTTTTTTTCCAGAAATTTCGTTAAAACGATCAAGATCTTAACCCTAAAATTTAGATAAAATCAATTTCTTGTGGTTCTTAATTTGAAAAAAAAAACAGTACTTTCCATTAATAAATCACTTTCAAGCGAATAAATTCGTTTTTATTGCGAAATTCGCAAATTACGAAAAAGTGAAAATAGAAGCTGAAAGGAAAGAATGTTTAATAAAGAATATTTTCGGCATTAATTGGTTTTTATACATATTTTTTTGTAGAAGTAAAATAATTACTAAAATCAGTGAAAATATTGAAAAAAATTTTAAAATCTGGAAAAAAAGCAACAAAAACTTAATTTTTCCAGAAATTTCGTTGAACTATTCGGTATTTTAAGCCTAAAATCAAGATACAATCAATTTGAACAAAATTTGCATGCTTTTACTAAAATTAATTCGGAAGAAATAGGAAAAAAAAGAAATTCTCGGAGAAATTTGAATTATTGGAGAAAAGCTGAACACTTACAAAAAATTTTTTACTCCGTTTTGAGAAAAATTTTTGAATAGAAAAAATTTTAAATTTTTAGAATTTTTTAACTATAATTTTTGAATTTCAGTGACTTATAATCACTTCCAGAAAGACAATGAACGAAAAACAAATGCTTATCGGCAAAAAAACGTATTCTTAAAAAAAAATTTAAATTTCTAGTGACCTTGAAAAAAAAACCACATTTTCCAATAATTTCCAGGAATAAACTAAATTTCTTTGGAGAAATTGGAAATTTATTTCACATTTCGAAAAAATTTATATAGAAATAAAAATTTATATGAAAATAAAAAATTTGCAGCTCCTTACAGCAATGAAACCTGTCATTTGTTGAAAATTAGTTTTTTTTTAATTTAGAAATTCTCTTTTCGAAAAAAAAGGTTTTTTTAAAACGTGATTAAAAATTAATTCATTCATGTCATTTTTCGCCAAAATAAGGGAAAAAATAATTTCTAAAATTAGACAAATACCTTTTCTGTTGAAAAAAACAACATTTTAATTTTCTTGTTTTTTAAATTGCTTCCACTAAATTCACTTTTTGAAGAAATGTTTTGAAATTTTTACTGAAAATTGTTGGAAAATTATTAAATGTGCATTTTTTTGCAATTTCCAGTTGATAAACTAATTTCGGTTCAATTATAAAATAAATTTTGAAGTGGAACCAATTTCAAAAAGATACATTTTTTACAATGTTTGTTTTTGTTGATAAAACGAGCTTGTTTCTACATACCGCTTTTTTACATTGAAAATAAATTCAGTCAGATGGGAACACACGGGAGCCGCAACGACGCACCTCGTCCACGAACAGTACGTGTAACAACCAATCGTGAACTACATCTTTTATTCACGGCATCCGGATAGCCGATTCACAGGGTAGCGATTTTTTTTGTTTAAAAAATTTAAAAACACCGTATTAAACATTTCATTGGAAAATACTGATTCAAAAAGTTTTCAAAAAACTTTCAAACGAATGGTAGTTTATTTTAATTTTAAAAAATTCCAATAAAAATCAATTTTTATACGATTTAAAATTTTGAAAAGTTATCCCATTCGCTTCTCCTAATAAAACTCATTTTTTTTCCAGAACATTCATCCGTGAAAAGATGTCATACGGTGGTCCGGTGACAGTCGGTACAACTATCTGAACTAAAGAAATCTCATGGAAAAAGGAGCGAAAATTCTGCTTTCGCTTTTTCGTTTTTTAAATTTAATTTTATTTTTCCACAAATTAATCACTTATTTCCAGTCAAATAATAATTAATTTTTCATTTTTAAACGAAATGCTAGACATAGAAAAAAGCTTCTTTCAGCAGAGATTTGCAGCCAAAAATTTCAGATTTTTCACGAAGAACAAATTCAACAGCTAAAAATTGGCAAAGTGCAAAAAAACCAGAATTAGATATTAAAAATACAGGAAAAATCGAGAGAGTTACAATTCAGAAAAGTAGGCAATTTTTTTCAAAATGTCTCAAAAAGAATATTTCGGTATTTTTTATTGTCCCTCTTCTTGAGCACTGAACCTCGGCTCGTGTTGCACCAATCGAACATTTTGAGCGTCGGTGGAAGTGGAAGCTCATCGATTATTCGCGATAGACACCGTCGGCACCGGCGCCAGATTTCTACGGGCGAAGGTGGATGTCACGCGCTGGAAAAATTTCTAATTTCGAGCTGAAAACTCTTTATGAAAGCAATATTTCATAGTTTCAATTCAAAGTTCGAATTCCTCGTAAAATTAGTCGGAAAACCGAAAACTAGAAGTAGGCTCTTGCTCTTTGAAATCAAGGCGTACGGTATCCTCGAAAGTACGCAAACACCGAATTTTGTTTGTTCTTTTGAAGTTTTGGCGCCAAGAACACAGTACGAGCCGGGGTCTCGACACGACAAATTTTTAAAATTTTGAGGACCCTGTAATTTCAAACAAAAAAAGGTTTTTTTCGAATAAACTTCGAATGATACGATAAAAAACATATTTTAATAAAAACCTTGGCAACGAAAGTTGAAAGTACAGTACACTCTTCAACGGCGCACACCTTTTACGCATTTAACTTCCGTGGCGAGACCGGATGTAATTTTTGACTAAAAATTAATCGATAAATCCGTTAAAATATTATTAAAAATTTTTAGATATTTTTCAAAAAGACTGTCGAAAAATTGTTTTTGCGGTTCGATAATTTTTCAGAATATAAACAAACAGTTTAAAAATTCCAACAAATTTTGTTTTTCATACCGAAAAGAAGAAAAATGGACAAAATAGTAAGCTATTTTTGTGTGTCAAAGTGTCTTATTTCGTCTTGATCTGACGTAGACCGATCTACAAAAAATGCGGGAGAAGAGACTCAGTTTGGATTTCTCAACAGAGTTTCGCATGGTTAAACGAACGTGCTGACGTCACATTATTTTCAGGCTAAAAAATTCCGCCTTTTTTAGTAGACCAAACCGTAATGGGACAGCTTGGCACCACGTGACACCGCCCGCTTCTCACCTGTTCGTGATTTGGGAGGGCGAGCTGCCAGTTCTTTCGAAATAATCGTCTAGCGGGGGACTCGATGCCGAAGGAGTAAAAATGTTTGATTCCAGTTAGAGGAGCATTCTGACACATGCGTATTGCACAACATAATTGACGCGCAAAATATCTCGCAGCGAAAACTACAGTGATTCTTTTTAAGTGACTACTGTATCGCTTGTGTCTTTACGTTAGGCATCGATAGAATATTTTTAAAAAAGAAGAAAAAAGAGGGAATGATACGAAGAAAAAAAGGAAAAAAATAAATGCATTTATCAGAAATCGAGTTCGTAAATCGAGACAATCGGTACTGTAGTCATTGATTAAAGACATCCTGTATGTTTTCGCTCCGAGATATTTTGCGCGTCAAATATGTTGTGCAATACGCTTTTTAAGAATTTCCAGTTTTTTCAAACCTTTAAATACATTTTCGCGGTTGTGCTCTCGGATTTCGGGGAACGTATACGTGTATCCGCGACGTTGACGGGGTTGAAGCAGGGTCCGTCGAACACCCTAGCTCTTCGTCTTCCGATACTTATTCTGTTGATGTTGACGGTGATTCCTGCTAGGTTCCTCTAGAGCATCTGAAAGCTCTTGCTCATCTTCTGATAAATCTCGATTGGGGCGTTCAACCAGGCCGGTGGTGGAAGGATCCTTGATGAATCATTACAATCTCCATTCTCGGAGTATTTGGAGTTTCTGGTCGAGCTATATCGAGGCCCCAAAGTATGCTTCTGATGATGGCGGGGTCTATCATGATTAATCGTCCATTCGAGCACATATGCTGGTGCTGGAAGGATTGAAAATTGTAAAAACTAAGTTATCGATCTTTGGCCAAAAAAATAATATTTTCTCAAAAATTTTGAAATTCTCGACAAATTTATTTTCACTACTGCCGGTACAGAGAAAAATTGTAGATAGTTGAAGAGACACAGATATCCCGGGAACCAAGGGACGGGGCGGGGGATGTCTGTGTCTCTTCAACAACCTGCACTCTGTGCAATAATATACTTTTTCCAAAAAAAATACATTTCAGAAGTAAAAATGGACAATTTCGGAGTATACACAATTGGAAATTTTAATTTTTAAAAAATTAAAAATTGTTTTAATTCGGAGTTTTAGACGGAAACAATTATTAAACTCTAAAATTTTTAAATCGAAAAAAAACAAGTCTGAGACTGAAAAAAATTTCGAATAAATTTTGTACTGAACAGTATATATTTCGATTTTTTTTTGAAAATCACATTAAATGTTTTCTCGCAAAATTCGGATTTTTTTTACCTGCTCGATTTTCAGTAGCCAGAGCTGTATTTCCGAGATTGGCACCATCCAAATGTGCTCGGGGCGCTGCAATTTTGACATAAAATTTCACTAAAACGCCAATTACCTCGGTACTTATACAAATTTGCTACTAGAAAGAAATACTACTGTTAAGATAATCGAAAGTTTGGATTGACAGAAATCCAATGTTTCAGCTTCTAGAACCAATATTTTTATTTAGAAAAAAACTTCCAGAAAAATGACTTAATATTTTTTTTTAGAACTTTTGAACATTTTTCCTGATTTTTCTTTTTTTTCCATGTTTGGAACTTGCTGGGAATTTCTCTTTTACATTCCTTCATCCCACAGCTTCGCTTCCTAGGCCTAAGCCTGAGCTGAGCCTATGCATAAATCTAAGCCTAAGAGCCTAACCCTATGTCTAAAACAAAAGCGTGGACAGGCCCAAGTCTAACTAAGTCTTCAAGCCCACGCTCAAATTTAGATCGACTCAAGTAACTACTTTAAAGTTGGCAGAGATATTTAAATTCAAAAAAATTTTTAACGCAAAAAAAAAATACATTTAAAAGAAATTGTTTTTTTTAAATAAAATCTTCACCTTTGCGTAAAACCTTGGATTTCGGTCTCCAATTGAACATTTCTTGAAGGACGTCAGTTCTTGTTTCATTCCATCGACGGACATGATCTGCTATAGTATTTCGAATATTTTGTATTGTTTGCCCTTCTTGTACTCTGGGATGACTATTATTACGACCCAAATATTGATCCATACGTCATCCAAGTGATTACGGGTTCTTCTACTGGGAATGTATATAATCACTTAATTTAAAACATATTTTTTAGTTTATTTACCTTTGATTCGAATTAAAAAAAAAAAAATAAACGGTTAAATCCTGACGGGAGCCAAGAATTGGGCGTGTTTTAGGACGTACTCTTCACTTACGCTTTGGTCTACAAATGCGGAAGACGTTTGCCCCAATCACGTCAGCACGTTTTTAATCATGCAAAATCATTTGACTGAGTTCTGCGTCTCTCCTCCCGCATTCTTTCTACGTAGATCAAGCCTAAAGGAATGACAGCTGGAAAATAAAAATCGAACCCATTTTCAAAAAAATTACTCAATTGATTGTCTGCTGGAGTTAGTTGGTCGATTCTGAAAAATATTAAAGTGTTACTAAAAATTTTCCTTAGCAAAATAGCGCGGTTGCATCAAGAAAGGCGCGATCTGATTTTTATAAGCCCGCCCTTTAATGGAGGATCATCAATTTCTAGGAAAAATCGATATTTTACTAAAAGTGATCCAAGTAAATCAATAAATCGGAAGATTGATGTTCCGTGCTTTTTTGCAAAGATTTATCGAAAATGATTTCCATTAGAGCAAGCTTGCAATCGTTTTTTCACAAATATTCAAATTTCTTACGGTCTTGGATCAAAAAGTTGGCGGGGCACGCCGATAACTCTTGGAATTAGCTTAATGCCTTTGAACATGATCCATATACCGTATTTCTTCATCACCATCATTGATCCGCAAATCTGACGATTGACACGTGGATTGTAGGCGTGTGGGAACCGAATGTCGCGGCGGCCTGACGAGCCAAGTAGGTCAACGTGCGGGGACCAACTAAAAAATCCGGGTTATTGTGATTTCGTGGTGAGACCCGAAAATAGTAGAATTCCCTCGTACATCCTGTGCCTAAGCAGGTATTCAGTTCTTGATGGGTTGATGCGGTACCTGCATACACCTACCGTCTGCCTTTGTCACTGCCTGCGTCCCCGCCTGCGACTAAATGTGTGTATCAAAGGCCTACCTACAGTCTGTTTATCTGCCTCAACGTCTTCATACCTACTTGCCTACCTTGATTACATACGTGCCTACGCGACTACCAATTCGGCATACCGGTTGGCAATTAGAGAAGGCTAACGTAGGTAAGCTGGCAGGCCTGAAATTTGATTTTTGCGAACCGAATTACCTTTCGAAATGCGTGCGTTGAGATTCCTCCTTCGGCAGCCTGATCATTGGAGAAAATGTCATACTTCCAGGGACGTCATACACAGTACGATGCTTGGAAACTCTTCTTTATCGGCACTGAAACCCTTTAAAAGTGGAGGAGCCAACAACTAGACGGAGCCCTATGTAAGGAGTATTGTTTCCGGAAACATTTCAAATTTTAGGCTCCACCCACTCACCACGGAAAATTTCATTTTTGGCCGCCCAGGAACAAAAATAAATGTGCAGAAATAATGTATTTAAAATTGTAAGGAAAAACCATGAAATAGGGTGGAGCCTGCCTGCCTGCCGGGCTCCGCCCACTTCTGGCCAAACCATACCCCCTGTATACGTGGCATGACGAGTCGTCTTCCCACATTCAACATTCCAAGCATTCGTTGCAACAACTGAGAATCATCGGCAACGAATCCGACAAATATTCGATCATATCGATTTTGATGAGATTCAGGTGAAAGTTGTGCTTACATCGGTGATGTCACACACTTTGAGCTCCGGCCGAGCCAAGCGAGCTCGCTTCGGGTGTAGTTATCCATTGATCCATGTTTCCGGGTAGGTGACGAGACTCGTTCTCGTAGAGTTCGATCCCATGGTTCGCTATATACCAGTTTCACCTTAAAATTGTTGTCAGGCCACGCCCATTTTTAAAAAATGAATTAAAATTTTCTGTAGAAGAAAAAATTTCAAACTTTGGTGGGGCATTAAATTTTTTCACACAATTCGGCGGTAAATTCAATTAAAAAATTCTTTTTTTTTTGGCGGGAAATGTGCCGCAAAACAGAAAAACTGAAATTTCTAAAAAAAAAGTTGGTGGCCGAGTTTCCTCATTTTCGTGGTCAGAAAACTCGGCTACCGATTTCTTTTGCGTCGCGCCCTGTGATTACTTAAAAAAATCGGTGGCCGAGGATTTTTATTTTCGCGGCCACAATGAGTAATGAAGATTGCACAAAATTGAAAATAGGGAAAACGCGGCAGTCTAACATGTGCCACGTGGCCCGCCGTTAAAGAAGAGCCCTTGGTGGCCGAGTTTTATTATTTTTCTAGGCCACGTAACCAGAACTACACCCAATAAATGCCAGCAATCGTACTTAAATACCCTGAACCAGTTCCAATATGAAGAAACGAGTGTCCCTTACGCAAATCCAAATAAGCGAAGAATTTCGCTTAAATATCAATTGCTCCAACACGAAGAACTTGCTCACGGATAGAATGGACCGCCACCTCGGTTCGGCTGTGGAGGTCAACGACGGAGGACGTGTAAATTTCTGTTCACTAATCGGAAGAAAATCGGATCGATCGACAAGTCGAAAGGCTCGTTCGATGTTCGACGACGGATTGTGTCGTTTTTTACGAGAAAATCGATAAGATGTCGAGTTTTGGCTTTCACTATTGCCCATTTCTGGAAAATCGATTTTTTAAAATTTTAGATTTATTGATTGATTTTAAATAAATAATTAGATGTGAGCAGTCATGTATTTTTCCTTGTATATTTACGAGAGAGATCTCAAAAAATTATTCAAATAGGAAATTTTACGCCAATAAAATGTACAGTTGTGTGCGCCTTTAAAAAGTACTGTAATTTCAAACTTTCTGGCGCAATGAGTAGTTTTCTTTAAATTAAAAACAAAAAAAAAGCAAATCAAGATACATACAAAAGTTTAAAATTACAGTACTCTTTAAAGGATGCACAACATTTTGCATTTAAAATTTGTCATGTCGAGACCGTAATTTTAACGCAAAAAATGAATTTTCGCGTCTGTGTAAAAGAAGTGAGTTGAGGAGAAAAAACAATTGAAAAATCAACAAAAATTGAACTTTAAAAATCAAAAATCGTTGCGAGTTAATTTTTTAGCCTTGAATAAGCCTTAAACTAAAAAAAAAATAATCGACTCAACATCAATAATTTCGTTACAAGACCCAAATTAAAATTTTTTATTTTGGGATAATCTATTCCTAAAATTAATAAATTCCAGAGAAACGAGTAAATCGTGGCGAGACCTAGCATGTACCTTTAATATCGCCTCAAATTATTTTGGCCCGTACATCTCGAACACACGTGTTGCCTAGCTATCGAACAAAAAACGAAAAAAAAAACAGGTTTCTTTGAAATGAAGATAATCAGCGACACAGTGTGGCAAGATGTCTCAAATTATTGGAAAAAAAAAACGTGAAATTCTCAGAAAACGGACCGTTCTGTGGCAATGGAATTGTGAACGGCGTGCAAGGCCACGACCTGTGAAGAGGGCGTGAGAGTGTAGAAAAAAAGGAGGCGAGAGAAAACGGCTGACCCGTGGATAGACTTATTCAGGAGACGCAGAGCGACCGTGAGAGACCTAAGCAGGAATATTTGAAAAGGCGTGCAATAGTGTTGGAAATTCCCATAATAAATGGGTACGGTAGGTATGACCTTACGGGATATTTGTGGGTCTCGCCGCGACGAGTTTTCAAGGTGCATAAGCAGTTTTTGCGATGGGTCTCGTCACACACGGGATTATAGATTAAAATTGTTGATTCGAGATAAATGGAAATTCGAAGACGTCTAAAACAGTTAGAACTTTATTTTAGTTTACATTGAGCTCAACTGTCCAACCCCTTCAAACTTTTTCCACTTTTTTCTTGATTTACTTTTACAATGCCTTTATGCTTTTCGGCCGTTTTCCTGGGGGTTACGACCACGAAATAGAATCCTAACTTGGTAAAGCCTAAGCAAGACTAAACCTTGGTCTTTCAATTATACATACACATCCTTTTTAAACGATATTAATTAATTTACAAAATACCAAAAAAATATACAAAAAATGATTTGAATATATGCGTTTCCCGCTAAATACCTACCCCCAACTTTTGGTCCCGTGGAGCGCGCTTGCACTTAAACTTCAATTGTTCACATCCCCATCTTGTTTTAAATTGTTTTTCCCTTTATTATTATTATCCTTATCACGAGATGCCCTTGCAAAACACATTGTAAAAACAGTATTCTACCTCAACTGATAGATTAATAAGATTTTGTGTACCCCACAGTCCTTCAGGACCATAAAAATATTGATAATTGCTGATAAGCTCTCTCAGTGGTCTGTAGTTTTGGTGATATTTTGGGCAACAAATTTAGATTATGGAAACACGGAAATTCTGACAATGCGTTTTGCGCAACATATTTGACGCGCAAAATATCTCGTGGCGAAAACTACATACGGTAATTCATGACTACTGAATCGCTTGTCATTGTTTTACGGGCTTGATGTTGGAAATTAATTTATTTTCGAATTGTGACAGCAACCGATATTCAGTTTTCCTTTGATTTTTTGTTCCGTATTATTTTGTTATTTTTATGTGTTCTTTCTTTTAATATTTTATCAATTAATGAATGATTTCCGTAAATCGACACAAGCACTACAGTAGTCATTTAAACAATTACTGTAGTCGCTTCGAGATATTTTGCGCGTCTATGTTGTGTAATTCGTAAAGAAAGTTTGAAATAATAGTTTTTAATTAATTTCTTATTCATTCACTGTCAATTCTCACCGAAAAAAAAAATCCAAGTTCGCCGACTTGCGGCACGATGCCTCTCCAAAAGGTTCTCAGGCCCATTCATGTCATTCAATCCATCCAAATGAACGACTTTTCGTTCAGGGCCGCCCTTCTTCTTTTTCCGGTTTAGTACTTTTTCAAACCGAATAAAAAAATCCGAAATTGACTGCAAGTGTGCTCTATTTGAACTTAGACTTCACGCTATTTCGGAATTTTTTCCGATTTTCTCAAAATCTTTAACACTTTTCTAAATGCATTGTTGCATTAGTGACATTTTCCTAGAAATTCTACTGCAAACGCGCGCATCAGTTGCGAAAGTTTTTGGGTCTCACAACGATTTCGGAAGAAAAACGTTTTATCCGAGACCCGGAACACCATGCCCGGATGGAGCGCGTTTGGAATTTTTTTGGTTAAAAATTTTGCGCAACGACAAAATAACCGCGAATTTTATCGTATTGTTAAATTATGACTTTTCCCGGTCCCAGAACGAATTAAAGCAATTATTATGAAAAATCAAGACCACAAAAAAAAGCGCAATAGAGCGCGTGTGCACCTTTTTTTCTTTGAAAAGTCTCGTTTTTTTCTCGGTAAATTCACTGTGACATAGACCTTTCTCGGAAAACGAAAAGTGTAGTAATGGAAAGTGAACAAAAGTGACAATAATCTGAATTGCGTTGTTGTATTTATCTTCTTTTCTTTTTAATCTGCGAAACATAAGTTTTGGAGAGAAAGTGATTTTCGACGAAATTTTCCTGATTTTGCTAAAATTGTACAAAAATCATCATTTTCTGTGGGGTTTCTCATTTCTTATCCCAAAATTTATGCGCCTTTAAATTTGGGGGATTACTGTAATGTTTGTATTTTTCAACTGTGTTTCGGGAACACAAAATTCTGAGAATGAGTACTGCACAATATATTTGACGCAATATCTCGTAGCGAAAACTACAATGGATTAAAATTTAATGAAATATCGTTATGACTATTCGAAAAAAATTTCATTATGGAGCCCGTAAATCGACACAAACTCTATGTCCTGTAGTCATTTAAAGAATTACTGTAGTTTTCGTTACGAGATATTGTGCGCGTTGTCCCCGTAATAGTTTAACTTTTACCACGTGGTCGCCAGAAGGCAAGAACTTCTGCTACCGGATTTCATTTCCTCTGCCACAAACCCTTTGGACCCCCAGTAGAAAAAGTACATAAAAACAATTCCGGGGACTGGGTCTCCAATCTCTCGCCCCCACTCACTAACAAGGGGGACACCCTCAGAAACGAATGCCGTCTAAACGTCTGCACCCTCTCTCTCGTCGCTCCAAATTCTTGGATCAATGCGAACTAACACGCAGTGACCCCCCTCCACCTTCATCCACCCAAATGTTTCATCAGTTCCCGGCCACCGCAGGCTTCTCTCTCTTTCTCTAAAGCTCTCATATAACTACTGTCTCTCTCTCTCTGCTTCTTTTGCTCAATTGTTCTTCTTCATCACTACTATTTGCTCAATTTTCGTAAAATGATATTTTATTTTAAAATATTCATTTTTCCTCCCCCCGCCTCTGCTTTTCATCGCTTGACGCGCCACATACACTACAAAAACCGGTTTTTTCTATCTCTTCCGCCCGATCATAGAATAGATAGTGTGTGCTGTCAAATTTCCATTTCCTGGAAAAATCGCGCCGAAATTCCAGAAAATTCCACTTTTTCTAGAATTTTCAGGTCGTGCAGTTTTTTCGGTTTTTGAATCTAATACAAGGCGAATTCCGTGAAAATTAATTTTTCCTCATTTGACGAATAAAAAATATTAGTATTGTTTTTCTTTCAAGAACGTGTGATTTTTTCACAATCTTCTATGGTTTTTACGTGGATCTTGAACTTCCACAACTTGACAAGTCTTTGAAAATTAATAAAATTTCACCGTATCTGCCGATCGTTGCAAGACACACTCCACATAAGAAGTCGTGCGCCTTTAAACTGTGTACGGTAACTATAGGAAACTGATTTAATCCACTTTTTTCTTCGAGCGCTTTATCCGTCTATTTTTCCAATTTTTCCTCACTCTGATTTCGAACGATTTTTTGCATCTTACCTCAAAAAAATTAATTAAATGCATAAAGTGGAATTGCTGATTCTTTACCAAAAAAACACTTAAAAAATCTTCTCATCAATTTCAGTTCTTTCTGGCATGGCTCATTGTTTATCGACACCTGCTTGTTTTGCTCCGTAACTCCGCTCCCAAATTTTATGAGTTTTTCTTCGAAATTTCTCCATTTTTCCCGTGGTTCAAAAACCGCCAAAATTCGCTTTTTCCAGAATTCGCCTACTAGCACTACTAGATGTGTTAATTTGGGGCGGAATTATTTTACAAAAAGCAATGTATCCGGTTGTACGGGCTTACTGAAAATGAGAAGCTCAAAGACCTTGAAGGAGCTGTGCATATGGTCAATATATCCGATGAGGATGCCATTCAATTTTTAAAAGGTGGATAATTAAGCTGAAAAGTGGAAAAAAAAATGCATTTTTTACTTCAAATTGACCTAAAAATTGGACTAAAACGTCATAAAATTACTGAAAAGTCAGAAAATTGTCTAAACTTAATTTTCGCTAAATAATTCCAGAAAAGCCGACTGGGACATTGCAATGTCATCGCGAAGAGTGTTTCCGAAACAAATGAGGATAAAACAAAGTGTAGGTTCCGGGCACTTCGAGAGGTAAATTTTTGAAAAATTTCAGAATCAAACTGAAAAATAGATATATTGTGTGAAAAAATGCTACCATTTTCTCCGTAAAAAGGGAATTTTGACCGGTTTTTCAAATTTTAAACTGAAAAAAAAAATTATATCTGAAATTTTGCTCTTTTCGGCGCGTTTTTTCTCAAAATTTGATGAAAAAGTTCTAGAAAACAAAAAAGCCTTTATCAAATGTACTTGTTTCTGCGATTTCTCAAATTTAAAATTTTACGCGTCAAATCTGGTGTTTTGACTCCGCCCACTAAATTTAAACCTTTCGTGAAAAAACAATGTTTTTCTCCGATTTTTAATAATTTAGGCAAAAAATATACAAAATTTGCCTAATTCACCTATTTATTCCAAAAAAATATCACAAACTTCCTGCGCGTAAAATCGGGTGTTTATGCTCCGCCCACAAAAATTTCTTAGAATTCGAGTTTCGGCGGATTTTTTCTCAAAATTTCATGAAAATTGTGAGAAAAACTACAAAAAGTCTTTGAGCTTTACTCTTTCTCTGCGATATCTAAATTTGAAGATTTGCGCGTCGAATCTGGTGCCTTGGCTCCGCCCACAAAATTTGAATCGTTTAAAAAAATGTTTTCACCACTTTCCCCGCTTTTTCGCCTGACTACCAATCCCAATTTTTTTGCAAATCGATTTGGATTGATTATCGTGTCGTCTACGTGTTCTTAGCCTTCTATCTTCTAGATTTTGGAGGTTTCCCTGATGAATGTCGAACGTTAGAAAGATTTGATAGAGACGCAGACACAGAAGAGCCTTGAGTCGCGCGTCCAGTAAGTTGTTTTCTGGAAAAATTGTAAAAAAAATTGAATAAAAAAAATGATATTTTTAATCGAAAAAAAAAGTTTTCAAAAATCAAATTGGAAAAGGTGAAAAAAATTCAACAATAAAAAAAGAGCGACAAATGAATAAAAAAAAACTTTTTTTTTTTCCAAAAAAAAGAAAATGACCAAATGTTATTTAATCGCCCGAAAAAATAAAAAACGAAAAATGAAAAAGGAAATTTTGTTTTTACAATTAGAAAAAAAAAATTAAAAATGTATTAAAAATTTTTTTTTGACATTTTCTTTCGCTTTTTAATAAGTTTTGACTAGCGGGGCCTGCGGGCCCGCCAGTTGGGGTGTAGATCGGGCGAGTCCCCCAGTCGGGCGTATGTTCTCGTCTTCGCCTAGAACGTCAGAGGATTCGCGACAATTGCAGTGAGTCAATGGGAGGGAGACCCACTCATATTTTATAAAATCGAACATTTGTATTTGAATCCCGAGCACTCAAAAAAAAACGAAAAAGGTGTTTTGTCTGTTGGGGGAATCGAGCGAAAGAGCAAATTATTCACAGCTATACGCACTAACCAGCCATGCGGGAGAGACCTCTCACAGAGATGTAGGGAAGGAAAATTTCTGGGGGGAGCGCGGGGGGGGGGAGTTGTCTTTCGCTTCCGTTTTATTCAATAATGACAATTTGGGGGAAGCCGTTTGAAATAACCGTTTATCACTGATAAGTCAGCAGTAAACCAATTTTTTGAAAGTTTTTTATAGCATGATTGTACTTATTATTTAATTCCCGAAAGAGAGCCGAAAAGTTGAAGGTGTTATCTTGTAAATTGTTTTATTTGAAGAAGAAACCAGTTTTGGCTGAAAATTTTGAAAAAATAATATTGGCAGATCGAGCATTGCGTAATGCGACGAAACTCCAGCTTCCAATTGATAAAATCAAAAACTATGAATCTGAAATACATTGCGCAAAACGACTTTAGTGGACAAAATTTTCAGCAGATAACCGAGGAAACCACTCCCCCCAGTACTAAATTGAATTATTGTTTCTTGAAATATTTTCCCACGGAACTTTTTAAATTTTATATGCTCTCGATGCGTCTTGATGAGACCTACACATCAATTTTTGGAAAACTAAAAAACTTAAAAACTAACCGCTTAGTTATGAGTGAAAAAGTAGATTAGCAATGGGAAAGTGTGCAAAATTTGGCACTTATTCGTCTTGCTCGGCGGACTCATATTACTTTTTCCAATTCTGCGTTAACAATCGTGTTCCGTACTTTTGTACGTGGGATAAAGATAAAATATAAAAGATGCAGTAGAACTTGAGACAAAGAGGAAAAACTACTTTTTCGGAAAAAATTTTTTGTTGGCAAAATGGCATTTTTTGGCCTTTAGGTGTTTTAACACAACTTTTTAGCCTTTTGCCACTTATGAACTCAAATTTTCTTCTCACTCGCTCAAATATCCACCTCCCTGATTGTAGTATCTTGCACATAAATTTAACAAACCCGAGCAAAACCCGAATTTTTCAATTAAAACATGGTTTTTTGGGGGTAAAAAAAGCAACATAAAATTTTTTCAAACGGGGGAAAGCCGCCCTGAGCTCAGCTTTGCTCCAAACTTTGTGCAGTTTTGCTCCGCCGTGGGGTGAAATATTACTAGTAAGCTGTCTAATATTACAATATTCAGTCAAACCGCTCTGCGAGTTATTAATGAAAACGCAGTGTGACTTTTCGCAAGCCTAAAAAAAAAACGCGAAAAAACGCGAAAAAGGGGCGGAGTCTGTACACTCGGCATTTAGTAGAGACTGCTGGCAGATTTTGAAATATCGGAAATACTTTAAAAGTTCGTTTTTTTCCACGACACCTAAACTGGTGGCATCATGTTGATTCGGCCAAAAACCCGCTATCAACTACTGGAGAAGGAAATTGCCTTCCTCACGTCGCATCGTTAGGTAAAAGGTTTTTCAGAGGCGAAAAATCCGAAAATCGCTAACTTACTATTTCCACTGAAAAAATTGTACGCCCTTCATAATTTCACTATTTTCTGAATTGAAAAAGACGACAAAACTATTTCAAAGCTAAAATTGCCCCGAAAATTGTTTTTTTACTAAATTTATTTTGCTCGGCGAAGTGCAAAAATAAATTATTGAATTAAATCTTTACATGTAATCTTCAACAAAATTTAATCGTAAATTTTCAGGTATGTGGGGAGTACGATCGTCCTATCACTTCGTGAAACTCTGTACCTACGAACTTCTTACATGGCGCCAGAAAAGAAGCAACGACTGCGGGAATCGGTTGACAATCATATGAATCAGGTCAATTGGCGGGAGAACAACCTGTGAAAAATTTCTTAAAATTCGGAAAATGATCAAAAATGAGCTGAAGACCGGTCACGTAGTTGAAATCCGCGGAAAATTCCCAGAGGAAACAAGTTTCGGTCAAGTTCGCTTGAATTTTTCTCAAAAAGCTCGAGTAAAAACACGGAGTTGAAATCCGCAGAATTCGAAATTCCCACAGGAAGCAATTTTCGTGGATTTCAACTTCGCGAATTTTGCTCAAAATGCTTCAGTAAAAACTCACGGAGACATGTGAAATCCGCGGAATTCGAAATTCCCAGAGAAATCCTAATTGTAGATTTCAACTTCGCGAGTTTGTGTTCCCAAAAAGCTTGAGAAAAAACTCACGGGGTTGAAATTCGCGGAATTCGAAATTCCCAGAGAACACAATTTTCATCGTAGATTTCAACTTTTCTAGATTTTTAGCCAATTTTTTATTACATTATGTTACAAAAAAGCTGTAAATACTCACGGATGAAATCCGCGGAAGTCGATTTGATGTTGTAGATTTAATCTTTTCCAGAATTTTCCAACAAAATACGTTAACCGGAAAGAATTATTGCCGACACTCCAGGAATCTAGTTTTCAGGAGATGGCTTTCAACGTCGAGAACTTCGCACATTTTTTTGCATTTTTAAAAAATTTCACCAATTTTCCAATCAAAATTTTTTAAATTTCCAGAGTAACGGTCTCGCATTGACCCGTCTCTCGGAAAATGAAGAGTAAAAACTCACGGAGTTGAAATCCGCGGAATTGTATTTGAAATTCCCAGAAGCACAACCATTCTCGTAGATTTCAACTTCGCGGAGTTTTCGGTCAATTTTTTGAGATTTTTTCTCAAAAAGCTTGAGCAAATACTCTCGTAGTTGAAATTATTCCGCGGAATATTCCAGGAAATTCGATTTTCGTAAATTTCTTCTTTCCCAGAATTTTCCAATTAAAAAAGAACGGAAAAAATTGTCCGACATATCCTCCATGGACTTTAGCTTTAGATTTCAACATCGAGAACTTTTCTCGTAGATTTTTTTGCATTTTTTAAAAATTTCACCAATGTTTCAATTAAAATTTTTTTAAAAAATTTTCAGCGTAACGGTCTCGCATTGACCCTGTCGCGGAAAATGAATGGGGACTCGAATCGGATCGATGTTGTACTCGGATAAAATATCATCTCAGTACCCCGTAAACAAGAGGATAATGGCTGGATTCAAATTCCACAGAATCTACGAGAGTCTTGAGGCAATCCACGAGAGGTGTTCGCGTTGGCTCATCTGCTCTAAAGACCAGTTGTGGTTGTATCGGACACGGTAGGGAATTTTCCATTAAAATTTTTTCTTCAAAAATTCATTGAAGAGAAGCAGTAACAAAGAATTTGGTTAATTGTGAATTTTACAGAAATATAGAAAATTTTAATTTAAAAAATTTCGAGATTGGTGAGCAAGGGTGTCAAGTCCACCCGTGTCCCGTTTGTCCCGTGGTCCCGTTTTTTGAGTGTTTTTACGGAACTGGACGTCTTTGGTCCCGCTAATTTTTGAGCGTTTTCACGGGAACGGGATGTCCCGTTGTCGCGTTTTTTGTTTTCGCGGGAACGGACGTCCCCCCGTTGTCACGCTTTTAAAATCTGGTTTTGTATCACGGGAACGGGACATCCCGTTGTCCCGTCTTTTGTCTTACGGTAATATTGACACCCTTGGTGAGAATAAATCAATAATACACATAATTTTTGGAAGAAAAAACGATTTTAAAAATGAAGCTTAACATTTTTTTTCGAAAGAAAAAAAGTGTAAGAAGTTTAGCAAAAAAAAAATGAAAAAAATATCTTCAAAAATGTTCAATATTGTTTTAAGGTGCAACTATTACAAGAGCACACAATTCTTAGAATACGTAATGCGCTACCTATTTGACGCGCGAAAGCTACAGTAATACTTTTATTGTTTACTGTAGTGACTAGCTTGTGTCTAGATTTACGACTGGAGCTTGTGCAGATTGATAGAATATTCAAAGGGATAATTTATTTATCGATTTAATATTCAAATTAGGCAAAAAATGAGAAAAAATATACATGTGAAAAAATTATTTAAAAAGAGAGCTCGTAAGGCATCGACACACTAGTACATTTAAAGGTTTACTGTAGTTTTCGCTGCGAGATATTTTGCGCGTCCAATTTGTTGCTTAATACGCTTTCTTAGAATTTTCACATAAGACGGGTTTTCTAGGAAAAATTTTAATTCTTCATAAAATTCGTCAATAATAACTAAACCGTTAATCAAAAAAAAGTTTTTAGGGTGTCATCAGAAAAAGTCTCAAAAAAAGGCGGTCATCAAAAATCCATCAAAAAAAGAAAATTGAAAAATTTGAATTGAAACTTTTTCGAATTTTTGAAAAAAAAAGTGTTTGAATATTAAACGTAATTAAAAAAAAAGATTTTCCTTTTTTAGAAAATTCTATTCATATTAGAACAGTCGATTTTATAAAAGTATCGATTTTTTTCAGAATTAATTGGATTTTTTGTAAAATAATAATCGATATTGAAAATAAAGACCTTTCGCCTTAAAATATTGTATTTGACAGAAAAAATGGTGTAAAAAATTTTTACCAAAAACCCTAAATAAAATTGCAAATAATTTTCACCTACAAATTAATTGTTTATTAAATAAAGTTTAAATAAATTGCAAGAACAGGAGTACGTGTTTTCAAAATTATTCTTTAAAAACGCGGGTTCTTTTAATTCAGAAAATTCTTTTACAAAAACTCAATAATTACGGATTTGTCAAAAATTCGGATAATTTACCAGGAAATTCAGAAGATTTGGATAACATAATTCTAGTTCACTTCCAAAAAAATGATATGCGACTTACTTAAGGTACAACTAACATTAATTTTCCAACACTTATGCTGCTTAAAGACACGCCAATGGGGTCAAAATGACCGAATATTATGTTTAAACAAAAAAAATTTTCTGATTTTATATATGATTTGAAAATTGGAAAAGTAACAGTTTTAACCTAATTATTTTGAAGTTCTGCCAATTGGATTTGTTCGGTGCAGCGCGCTTGCAATAGTTTCATTTATTTATTTATTTATTTATTCTCGTTATTTCACGGAGGATTTTGCACTTCCATTTTCGATGTTTTTTTTTCTCCGAACGAATGAAAGAAATAAACAAGACAAATGTGAAATGGTTGTTAAAAAGTAATTGAAAATGCTTATAAAACTGTGATATTCTTAGTTCGACGAAAAGACTGAGATGAGGATATTTCTCAGTGTCACTCATTTTCAATTACTTTTAAACAAACGTCATATCGCATTTATCTTTTATTTCTTCTCCCGATTTTCTGAAGAAAAAACATAGAAAATGGCAAGAAAATCAGTGAAAAAACGAGAAAAATATATATAATTCATTAAATAAAAATAATGCAAGCGCGCCCCTCCACCGAACAAATCTAATTGGCAGAAATTCAAAAATAATTAGGTGAAAACTGTGATTTTTCCAATTTTCAAAACGTAAAATAATATAAAACCTAGAAAATTATTTTGAATTTTTTTATCATAATTTCCGGTTATTCCCATGGGCGTGCGTTTTTAAAACAATTCCCACTGAGCGTAGACCTATGTTCTCAAAAAATGAAAACGAGTAATACTAATTATTTTTTAAAAATCCAATAGTGTTTAAATTTTTTTTTTGCAGATTCTGCGAAACGCGGGGAAAGGCGAAGATGACTGTCTCCAGTGGCTTTTGGTGGAAAATATATTCCATAAGAATGCCCACCATCACAATGTCATCGATGACGACTTGTTTTATGCTATGATTCTGCTCATTTCTCACCGGACTATTGTACCATGAAAACAGAGACTAACAATAAACTTAAGGAGTTTTTTTATATGAGCAAAAATATTTTCAAAATCTTTTAACTGAATTTTCAAATTTCCCCCTAGCCACCGGCCCCCCCGTTTTTTTCGAAAAGTGAATTGGAATTTTCGAAAGTTGCACAAATTTTTCTTTGAAAATTCAAATGTTGGTCAATTATTTATTCGAAAAATCGACATTTTTCCAACTTGTAATCTTTTTATTCTAAAAATCCCAATTTGATTTGGTAAAATTTCTGTCAACAATCAATTAAAAATCCAACATTTTCAAAAAAATTGTGAATGTATTCGGGAAATTCGAAATTTCCTATTTATTGGATAAATAGGCTAAAAGTTTTCGATTTTATAATTTTTAGGAAAAGAAGTTGTCAAATTTTTTTTTATAAAGTTTTTTTTTGAAATTTCACTAAATGAGCCAAATTTTAACAGTGGAGCACCGAAATTTGCGACTTTGCTTTTTTAGACTCAGGATCCAAAACTAACGAATTTTGTAATGATACATCTGACAATTTCTCAAAAAAAAGTTATGGCTGTTTAAAGTTCGGGCAAAATAAGGCCCATTTTCAGCTAAAATCAAAATTTTTTCCAACTTCTAGGTGTCGCAACGTCTGATGGACCCTAATTTTTATCTATTCATCACTTTAATAAATATTGTGGCCTTTGATTGAGCATTTAATCGTTGTTTTAAGTTCATTTATGATCTTTGGAGTACAAATAAACGTTACATTTTGTACCACCAAGACCATAAATGTATTTAAATCAACGATTAAACGCATCATCAAAGACCACAATTTATTAAGTAGAATAAATTAATGCGAAATGTTCCACACGTCTTGCGGCACCTAGCCAAGTTAAATTTTGATTTATTTTAGCTGAAAATGGGCCTTATTTTTCGCCGAACATTGCCATAACTTTTTTTTGAAAAATTTTCAGAACGTTTCATTACGATATTAGGTAGTTTTGGGCCACTTGGGTCTAAAACAGCAAAGTCTCAAATTTCGGTACTCGACCTTTAAAGAATTCATATAATTTTCTAAAACAACATATATTTACACAAATACTTAATTTAGTATCAATATGAATTATTTGAAAAATCAAAAAATTTATATGTATTTTCAGAAAAAATTCCCATGATCGATGTGAACCGTAACCTGCTGCTCCTGTCCATTCTATTTACAGTTGATCCAGGAGAGTCAATTGGTCCAAATAGAAACAAATAGTAATACACAGACAACTACAGATATGTCACAAATATGGGTGATAAGCTTGCGTTGATGTAAGTCATATGGATATTGTTAGGTAAGAAAATGAGAAAAAGGATTTTTTCAATTTTTTTTTCTAAATAAAACATTCAATATATCGTTAACAAGCCAAAAATGTGTACATGTTTTAGTTTAAAAAATATTAAAATTTTTTAGTCCCAAAATTAAAATATCGAAATCAAAGTGTTTCCGACATTTATATAGACGAATTCTATTTTTTTAAAATCGAAATCATATTTTTAATGAAAGTACAGAAAACAGCGCCAAAAAAGAAAAAAACGTTTTTTTTTTTCGAATCTTTCATTACAAATATTTGAAAAAACGAAAACTACAATTATGGGAATTTCGCGAAAATTTTTTAAAAAAACTTTAAAAAATTCTTAAAAACAGCTATATAATCACGAATGAGAAATATATCGGAAATCCGGAAAAAATTAAAAAAATTTTGTGCGTATTTGTCTGAAGTTATTTTACAAACACCAAAAATAAATCAATTATTGTTGGAAAAAATTGAAATACAACGGAAAACGAATTATTTATATTTAAAACGAACTAAAAAAAATCCCGCATCACAAAATTATTGGAAAACGAGAAAGCTGATTTTTCGCTAAAGTTCAAAAAAATTTACAAAAAAAGAAAAAAGTATTAGAAATCGGTAATTTTCCGAAAACTGAAAAATTCGAGTTTTCTAAAATAAATTAAAAAAAAAAATCAAATTCCACACTTTTGGAAAATTACGGAAAAAAAGATGTAGTTTTCTTTAGCTTTCAGCCAAAATTTTACATAAAAATTTCCGCAATGCATAGTTTTAGAGAATAATTTTAAATTGAAACACTAAATTTTTTAAAAAACTTGCGTTTTTTTTGAAAATCCCCGAATTAAAAAAAAATAAAATTTGAATTTCAAATAAATATTTTGCTAGCAAAAATAGTTTCTAAAACAAAAATTTGAAAAAAAAAATATTTAATATTTATTTCATATCCTTTGATTAAAAAAAATCTAAAGAAACATTTCAGACTAGACGTCGTCGTGGCTCAATACGCAGCTCGCGGAGAGTTCGAACGTGCTCACGCGCAACTTCTCACCGAATCTCGTGGTGAAAATGGGCAAAATTTGCCCAAAAATTAATGAAACCAAGAGAAAGTGCACATTGTTCTAGTGATGAACAACTATCAAATAATGCAAAAGGAATCACATTAGCATCAAGTGGCATTGGTTCTGGAAGACATGAGAAATGGAGATTAAGCAATAATTAGGGAAGCATTGTTTTTTTTTTTGGCCTAAAAATTTTAATAAAAAATCTGCTTGAACAGAATTTTTGAATCTTGGAAATAATTAAAAAAAAATGTAGTAATCAATTTTAATTTTAAAAATTAGAAACTTTTCAGATAAAACATTTTTATTTTTTCAAAAATCAGAGTTTGAATCATTTTCAGAATAATCATAACGTAATGAAATCAAAAAATTCAAACTACAATACTACGGTAACAAAAAAAATCAGAATGCGTACTACGCAACATATTTGACGCGCAAAATATCTCGTAGCGAAAACTACAGTAATCCTTTAAATGCAATACTACTGTGTCGATTTACGGGCCTTGATTCTATTTTTTAATTAATTCATTTTCGAATAGTGACAGCCATATTACATTTTTATTCTCTTCTTTTTTGTATTATTTTCCCTTTTCTTTTGCCTAATTTGAACAGTCTATCAATCGAGCCCGTAAATCGACACAAGCGCCACTATAGTAGTCAATTTTAATGGCAGAAGTACTGTTGTTTTCGCTACCAGATATTTTGCGCGTCAAGTATGTTGCGTAGTACGCATTCTCAAAATTTTGTGTTCCAGTTATTTGGTAGTTTGTGAATTTTTTTAATTTTCATTAATGATTATTCTGAAAATGAAACTCTAAGTTTCTGAATAAAAATGTTAAAAAATTTATTTTAAAAGTTCCTCATTTATTTAAATTAAAATGGATTCTTTTAATTTCCAAAATTTGTTTACAAAAAATTCGTTTAAAATCGAAAAATTGAACTGTTAAATTTAAACTTTTCAAAAAAAAAGTTCAAAATTTTTCTAAAGTAAATTTTCAAAATGATACATGTAATTTAGATTATAATTTAAAAAGACAACCAAGACAAACATTTTTTAAAATATTAAAATTTTGTAAAATATACAAATGAATGTTTATCCGTTAAACGACTAAGCCTTAAAAAGCCTCAGTCTAAGCCCAAGTTTCCAATGCCCCTAAGCCTAAGGTCGAACTGCAGTTTTTAAAAAAAAAGTCCCAAATCCGCTTTCCTAATATTGGTACCAAACCTCTTATTTGCCAAAATGAAGAAAATGTTTTTAATTTGAAATTTGTTGATCTGAAAAAAATGTGAATTAATTGCCTTTGTCGGCTGGATTTTTTTTTTGGAATCTATTTTAAGAATAAAAATTGATTATCTTGCGTTTTAAACTTTGATTAGGGTATTTTAAATTCGATGGACGGCGAGTTTTGGTTCAAAAAAATTAAAAATCTCGCCGTCCATCGATTTTTAAATACCCCAATCAAGTTTAAAACGCAAGTACTTAACTTGCATACTCGAAAGTTGACGATGTTCAAAAAAAAATCGTTTCCAGCCCTTCGACATCGATAAGTTGGTCAAATTTCCGATTTCTTATTTTAGGCCATTGTTTGAGCCGTCATAACTTTAGTTTCCGTGATTTCAAGAACGCGTTTCATTATTAAATTCGGTGTTCTCGGACAATTTTGAGTCTACGAAGCGAATAAAACGACTTCACCACCTTTAAAGCTCAAAATAAACGTGCACAAATTTAATTTCCTATACAGAACCCACGGGCTTCGAACTTTTCGTAATTCCTCATCAACACGTGGCAAAGAAAAACTAATCGATACGGACGATCGTATTGCAAGAATGAATTCGACGTGCGTTCTTCGCATCGGAATTATTGCCAACTCATCACCAATACATGGACAAAATGAATCATACTTCGAACGAAACAACGTGCATAATTCCAACAGAATCAACGAACACAATCGGATAGTCGGAAACGGATTAGTCGAAGTGTCTGCAGTGCAAGCTCACTAATGCTCGTGTATCGGTTGTGATTCGGTACGGGACCTACTTTTTGATGTGAATTTCGAGAAAAAAATTGTCAAAAAAAACGGAGAGAATTTGGCACAAGTAGCCTCAATATTTGAAAGAAAAAACCGAACAAATTGATGAGGGGAAGCCAAAATACCAGAATTTACACCCAATCTAAAGTTTTATTGATTTTTTACAAAAATTTGCTCAGTTTTTCAGTAAATTTGCCAGATCTGACCATTTTACTATTAGGAACCGTCATAATTCTGGGTTTTGCCAGACAACTTCCTGAAAATTTAGAACTAATTAATTTTTAATTTTTTGTGGGGGGATCATGTTATTTCCTAACAGAATACTTTGATTTGAATTTCGAAAAAAACCGATTCTAAGCTTAAACATTGACAAAAATAGCAATGAATGTCAAAGAAATTGCTAATACATAAAAATTGTGAAAAAATACACAAATAACAATTTTTATTTAAACTCGTCATTAAAAATTTTTTCAAATTTTAAAAAATTGAAAAAATAAAAAATTTCTAAATTAAAATTACTGTAAAACATTTTTTGTTAAAATTTGAAAAAAATTCTAGAAAAAAAAAATTTGCATTAAATTTCGTTTCTTCAAGCCGGCATCTCAAGTTACAAATATCAAGTGTGATCAAAGTTTTGCTTGGCACAAAATGAGTGTTCTCACGTCGAATTGCGACCAATTTATGGGAAATGCTGGGCCACCGTGCAAAATTTCAACACTCCCGTCATTTGGTAGTAATGATAGTAATCAGAATGATAAGGAAAATATTGTGGAGGTACTTAACGTGGTGCCTAAAGATGGAGCCAAGACACTTACCAGGTATGGGGATTTGAAATTTTGAAAAAATTAGAAGTTTCAATGAAGACAGAAAATATTTTAAAAATTTATTTTTAATTGAAAAATAAAACTCCCAAAAAACAGTTTTCCCAAAAAAAGTGTTTATGTTATTTGTTTATAATATTTACGGAATTGATTTTAAAAATTACGAGAACACAAAATTTGGAGAATGTGTATTGGTCGCTACATATTTGACGTGCAAAATGTCTCGTAGCGACAAACTACAGAAATCCTTTAAATGGCTACGCGCACTAGTGTCGATTTACGGGCTCTATTAACGAAATGAATTAAAATGATTTAGTTATCGAACAAAAATCATTTCATTAAATCGAAAATCAAGCTCGTACATCGACAAACAAGCTACAGGAATAGTCCTTTAAAGGATTACTGAAGTTGTCGATCCGAGATATTTGCGTAAAATATGTTGCGCAATAGCATTCTTTGAATTTTGGCTTCTCGTAATATACGAAGGATGAAAATTTCAGATTTTTAACAAAAAACTTGTGAAAATAAAATTTATGAAAAGTATAAAAAGTTGAAACAGAAATTTTTTTGAGAAATATCGATGTCAATTTCTTCACAAAATTTTTCAAAAATCGATTTTTCTTTCGAAAATTTTTTTTTGTAATTTTAAATCAAAATTTGGCGATTTTCAAAATGTTTATTTTATATTTAATTTCTAAAATTAATTATTTTTATTAAAAAATATATAAACTCAATTTTAAGATTGTAAAATGAATTTGGTATGCCGTTGAAAAATAGAAAACTTAAAATCTTTTTAATAACTGACACAACTGAAAATGTTGTTTGAAAAATTACATTTTTGCAAATCGAACATTTTTGACGCGCAAATTTGTAAAAAAAAATTTTCCGATTAACAGAATAGGGAAAACTGTAAAATAGGAAAAAAATTTACCTAAAAAGCGTATGTGCCTTTAAAATGTGCAGTAACCCAAAAAAATCGATTTTTTGCAGTATGCGAGCTGTGGAGGAAAGCGAAAACGGTGTGGAGGAATTCGTCCACTATTATATGGACGATGAAGTAGCGGATTCATGATTCTATTATACCCATCTTCGATTTTTTTGAAAATATCTTTACTAGAGACCAGTTTTCATTTGAATTTTTATCGATTTTTTTTGGATTCCAAATTTTTGTTCTTTTTTTGGGACCTTGCTTGTGTGTTTTTTGCCGGCTGTCCTTCTGTCCTGCCAGCCAACGGTGACCTTTTCTCTTCTTTTTTCTGTCTGAAGAACTCAATTTTCCCGCCTTTGCTTTCTTCGAGATTTTTGCTTCCATTTTTCATATCCGCGCCAGCTTTTTCTCTCCCCTCCAGTTTTTTTACCCATATTTTCGAGCTTTTTTCTGTGATTTTCACCCCCAGAAATTTTTTGTACCAAAAAATTGATGCTTTTTTTTTTTCTCGTTATTTCCAGCAAAATGCTTGGGCAAAGAAATAAACTCTTTTCTAATTTATCATTCAAAATTTGAGACCAAATTGAAATCCCACGCAACTGCAAAGTGGCATTTGACAATGCACAGCATGGCACGCCTTTTCGTCTCACCCGGGGGAACGCGTATTCTGGGACCAGAATGAGGAGGCGGTGGTGATCGGAGAAAATGAAGTATGGACCACATCTGGAAGAGACACCTGATTTTACGCGCAAAAATTTTGAAATGTATCGATATTTTCGGTCAAAAATCAATATTTAGCGATTATGGGCACATGGGCTTCTGGCCTTCCTCATTGAATATTCGCGCTCCATTTACTACCAACTGCCTGCGGACACTGACGCGTGGAAAAGTGTGGTGTACCTCCACACGGGGGCCACAAACATCAGTTACCGCTTACAACTAAAATCGAGTCGTTACGCGACACGCAACTCGCCATAAATCTACACAAAATCTCGCCGACCCATAATGGCGTAGTTCGGCAAACTCTGCCATGACGTTCGAGTTATGAGCGAAGCCAGAAATCCGTGCTATGAGGGCAACGATTGAACAATCTGAGTGAAATCGTTTCCATACAAAATTTTTTGAAAATTTTAGTCTGAAACTGCCTAAAACTCGAAAAGTTATCTATTTTCAGGTCTAATTTCTGAGGAATATTCAAAAATTGCTAATATTCTCGAAACAAAAAATCGGAGCCAATACATTTGACGCGCAAATGTTGAATTTTCAAATTTACAACCCACTAGCGGGATTCTGGCTTCCCTCATAAATCGCAGTGGCAGAGTTTGACTAGGCCATTTTTGCAAGTGTCGGAGAGGTTTTGTATTTACGGCGCGTTGTGTGTCACGTCGCGGCTCGTTTTCACTCAGTTGTAAACTTGTTGTATTTGCCCGTGTGGAGTACACGGAGGACTTCTTCCACGCGTTGGGCATTTGTCAATGGAGCGCGAAAATTCAATGAGAAGGCCAGAACCTCGTGAGAATCCTATACATTCTGAGAATGCGTATTATGCATCAAATCCGACGCGCAAAATATCTCAAAGCGAAAACTAGAGTAATCCCTTCTATAACCCTAATGTAGTGCTTGTGTCGATTAAATTTACGGGCTTTCGAAGAAGTTACTTTTTTAGTTACTTCGTATTTTTTTTCATTTGTCTAATTTTAATATTCTATCGATAAAGGAATGGGTTTTTTTTTATTTTTATTATCGAGCCCGTAAATCGACACCAGTGCTACAGTAGTTATCACTACGAGATATTTTGCGCAATATATTTATAAGAGTTGGCGGGCCCGGCGCGCCCGCCATTTGTAGGGGTGTAAGGCGAGTCCTTGCGTAGGTTGTGCGCTCGACTTCACGACCCTTAGAGGGTTTGTGAAAATTTCAGTAGGTCAATGGGATCCGGTCTTCTTGTTTTTTGAGTTCGGTTAGGACCAAAGACAGATGCACCCGATGGATAAATCTGAGTTTTGATTGTGGAGTTTGGGGAGGCTTTATATTAGGGGTCGTAGACGTACTATTTTGTATAAAATTGAGTATTTCTATTCGAATCCCGATTACTCACAAAAAAACAAAAAAAATTGACACTTGGTAGAATTGAACCAACTACCAAAATTTCTGCAGTCATACGCACTAACCACACGGACATGCGGACGGAGACACCTTAAACTGGGATGTAGGGAAGTTGTTCTGGAGGAAGTCGTCTTTCGATTCCGCTTTCTTCAATTATTACTATTTGGGGAAGACGTTCGAAAACCGTTTTAATCACTGATAAGTCAGCGGAAAACCGAATTTGTGAAAATGTTATCACAGGATTGTACTCATTGTGGAATTCCCGAAAAGGAGACGGACAGTTGAGGGTTATATCTTGTACACAAAGACAGATGTATACAATAAAACAAGTTTTGGCCTGAAAATTAAAAAGAATAATATCTCTTGGCCATTGCTAACGCGCCGAAACTTCATCTTCCATTAAATAAAATCAAAAACTATGAATTAAAAATACATTCCGCGAAAGTGGCAAAAAAGTGTTCAGGGGACCCAGGAAACCACTCCCCCCAGTAACATATTTTTGAATTATTTTTTTCTTGAAAAATTTTCCCACTGAACTTTTTACAAATTTTATGTCTCGATGCGCGTCTGGATGAGACCTACACGTTTTAGAAAACTAAGAAAACTTTAAAACTGATCGAGTTATGATTGAAAAAGTAGATTCTAGCAAAGATGGGAAAGTGTGCAAAATTTGGCTACTTATTCGTCTTGCTCGGCCGACTCATAGTACTTTTTCCAATTCTTGTGAGTTAAAAATCGTGTTCAGCGTACTTAGGTTTTACGTGGGATAAAGAAAGAAAAATATCAAAATAGATGAAGTAGACTTGAGATAAAGACGAGAAAACTACTTTTTCGGAACAAAATTTTTTGGCAAAATGTCATTTTGCCTTTTGTTTTATCACAACTTTTTTCCGTTTGCCGGACTTATGAACTCAAACTTTTTTTCAAAAAATCAGTCTCTCTGAGTAGTATCGTGCACAAGAGTTTGAATCAAAACAGAGCAAAACCCAAATTTTAACTCAATTAAAACATACTTTTGTGGGGGTAAAAAGAGCAACAAAAAAATTAACTGGGGCAAAAGCCGTCCTAGAGGGCTCAATTTTGAGCCTCCTGGAACTTAGTGCGCGTTTTCTGCTCCACTGTGAAAATATTTCTAGTAGGATTTCACAATATTAGAGTGTCATGAAGTGACACGGTTCAGGAGTTGTGAATGAAAACGAAGTGGGACATCGCAAGCTCAAAATAAACGCGAAAAAACGCGAAAGAGGGGTGGAGTCTGTACACTCGGCATTTATTAGAGGCTGCTTGGCAGAACCGACAATTATCAATTATGTATATGATACTATAAGAATTATATTCGAATTTCACGCTTAGGTTTTTAGCAGCATAGCCGCCTGAAGTTCGACATTTAAAATAAAAACACGAAATGTTTAGTACGTGACAGCCAACGTGGCAACAAATGGAATCTCATCGACAAGTCCTTCAGAATTGAATACCATGGAATGCAGCAATTGACGTACGATAAATGACCACGAATTCACGTTTTCAAGCGATAATTTTTTATTGAATGACGTGGTAGTTTGGTGGCACCTGAGCGCTGTTAGCCAAGCCACTGTTGGTAGAGTTAATCGGTAAACACCACCCGTCTCGGTTACTCCACGCTTCTACGCCGCTAAAATTTGGTTTTGCATTTCCCATTGGGTTACGTTTTTGAAACGGGTTAGAAATGTAGAAAATGGGCAAATTCTAGGCCATCAATTTTCCTTTTGCATGTGTGCAGGAAATTGGCTAACATTCTAGAATTAATTTTATAGAAAGTGAAATTTTCGCAAAATCAATAATCCGAGAAATCGATAAACTTTGATAGAATCTTGTTCATCAAAAACAGATAATGTCCGAAAAATTTCAGAAAATTATTATTTACAGTCTCCGTTCATTTCGTGGCCTAGAAAGTTATCGATTCTAGGCTATCGAAGAGTTTTTCCAATTAGATTCACGACCACACGTACATTTGCATGTAACAATTGAGCGCGACAGGCTTATTTGAAGGAAGTCGAAGATCTTCAAATTTTTCGCGACAGATCCGACACTGTGAGCTTTGTCCCGCCGAGTTTGAGTCCTGATGTTCCGATTTGCCATAAAATTAACCTTATTACCATCCTCGGTGCCTGATAAGAGCCCGTGACGACAAATTTCTAGGCAAGTTACTGCTCCGTTGGTTATCTGGAATAGATCGATCATTTGGAACTTGTCGATTTTAAGAAACATTTTAGTGTACTTTTTTATGGGCAGAAAACATTGTTTTTTTTAATATCCCTAAACAAAACTACTGATAATTGTAAAAAGATCAATTTTTTATTGTTTGAAGATCTTTTTTGAGTTCCCTAGCTACAAAATAAACAATTTTAGAGTTGCAAAATTGTGAATTTTAAAAATAAATTGCACAATTTTGCCATTTTTTAATGGTTTTTGTTAAACCGAGTTTTTCTGAATTCAGCATACATGATTTACCGCTTTTTGACATAATTAGACAACGTTTGATATTTGTCCAATTTTTTTCAGCCATCTAATGACTTTTTTTGGGCAACAAAAGAAATTTCCTAAAACGAAACTTCAATATTCTGAAATATTGTGAAATAGTAGATTTTTAGGGCTCGGAGATCAATTTTAAGTGTTATTCTCTGGCTACAAAATGCGGAAAAAAACGTAAAAAAGTTTCGTGGTACTTGTGGATTATACCCCCGCCATTTTCAAAATTAATACAATTTCCAACAATAATTTATTTCTTTAAATTAAACGTGAGACCATTTTTCCTTTTTTGGTTATGCTTAGGAATGGTTTTTTCGCCTGGATTTCCACACGTTCTTATTTAATGAGTTAAAATATTAACTTTTAAAATGGCGGGGGTGTAATACAAATTCCAAAGTTTCTAGGCCCCATTTGCTGGGCCACAATTTATAGGCTACAGTTTCTAGGACTTTCCCTGGGAACATTTTCAGAGTTAGGCCACATTTTTTAGGCCCACATTTTCTTAGCCAAAAATGTACTCACAAACTTAGCAACGTGGCAATTTCATAAAAAACCTCATACCTTCTTCTCGAAAATTATTTTTCGAACACATTGAGATATTTCCGGAAACGTCGCCGAGAATAAAGTGGGTCGATGAGTAGAAATCTGCAGAAATTGCACAAACCGGTAGAGGAATCGAGAAGTCTGAAATTCTTCTTTTTTAATGCAATTTTAATCTCGGACCAATCAGCGTTTTGCCACGTCTTTTTTTTTTCGAACCAATCAGAGTTTGGTGGGCGTGGCTAGCTGCTGATTGCTCAGTTTTTTTACCAAAAGGCCTACCGTAGAAGAAGAGCAAAAGTGCTCTCGCCTGGTTGATGGGAACAGAAGAAAGTTTCATTAGAGATACCGCCGAACATTAACGTTTTTCGTGAAGAGCTTGAAATCATTAAAATGATATTTTCATTTCTGAAATAATTCATTTTTAAAGGTATACGCCAAACCACCGTTTCCTCTTCGACATGGTACTTCTGCACAGTTTCCAGCGCAACTTTATCGAATTTGTGAAATTCCAAAAGCTCCTGTCCTAGTTCACCTTAGAATCGTCACGCACGAAATCGTAAAGGAGGTTTAGGACCTAAAAGTTTGAAAAATATGTCCAAATCAAACTGTGAATTTCTACGCCAATGATGGAAATGCTCGTATGAAAAGCGACGAGCAACCTGTGGCCTATTAATTGTGGCGTAGTATCTGCTGCTCACCTACAAGATGTGGCCTAGATAAAATGTTCCTAGAGAAATTGTGACCATGGCCTAGAAATTTTGGCTAACCGACATAGAAATGGTGGCCGAGAAAGTGTGGGGGCAAAAGTTTTTAATTTTCATTTCGGTTTTTTTTTTCACAAAATGGAGAATTTTTTGATTTTTTGAAATTGAATGGGAAAGGTGGAAATATTGCTAATAACCACCTCTTTGCTAATTGTAATATCCTTTTCCACATTCTCGCCGTACACCATCATGCACAGAATCCGTCTGAACTTCTTTATTTTCTTGAAAGTTTGCCACGCATTCTACGTCTCTGCTTTTTTATTTGTCTCTATCGTCTGCGTCTTCCGACGTCTTATACACTATTTCTCCCTGAGGCGGATAGGTTTTCTCGTGAACTGGAAGAGTATGACGTCTGCCATTATTAGCTGAAAATTTGAGTTAAAACTGCTCTATCACACTAAACACGACGACACTCGTGGCCGCGGAAATTGGGAAACTCGGCCACGTAACTTGGTTAAATTAATGAAGATATTATAAAAAACTTCCGAAAATTTGAAACATTTTAACTTTTTTTAAAAAAAAAACACATAATGTTCCTAAACTGGCTAAATGAACAACGCCGCGGCGGAGCTCTCCCGGTTTTCCATGCAAGCGAGAATGCGTTGAGCGGGCCAACGGATGTCAGTGGAGTAGAGACGCAGAGCAGTTGTATAAAAGGGGCGGCGAAGAAATAAATTTCTATCCCAGAGTTTAATCTGTACAAAGTTGTTTTTAATTACCGATGACCGAGTATGAGATTTGGTTTTCTAGGGCACGGAACCAAATTACGGCGGAGTAACGGTCGGTTGAAAATATCGCTTAAATGTTTTGTTTTTTCTATGAACTGACTGAAAATCCACGAGCGTTTGTTTTTTCTAAAATTAAGTTCTTACAAAAATCACCTGAGTGTTCCTTGATTTGTTTTCGTAACTTTTTTCTCGCCAACTCTTCTTTACACTACGGTTTGACAACACGATAACATGTCTGTTCAGTTGAAAGACTGACAAGAGTCTCGTAGTCTCTCGCGGACTAGCTGACGCCCTTGTGGTCTAGAATATTGAAAAACTTAGTTTCATTATTCCGCGAAATTGGAAAACTCGGCCATCGATTTTTTTCCCACGCCCTGGGGCAATATGCACTAGACCTTTCATTGTAACAAATATTTCAAAACTAAGAATTAAAAAAATCCGCTCCTACGCAATCTCCCCAGTCTTGGCGGACGCTCCCTATTTCCAGAACCTCATTTGAATAACTTGCTTCTCCCATGTGTTTTGGGATGGGATAATCTCTTTTTCTACCAATGTTTTCTCCTTACTTCTGTTTAACGGCTTTTTTTCATATTTACTGATTGAGAATAGGTCAAGTGACGACGTAATAGAGCGCGTCGAAGAGGAGAGACGCGTGGCCTAGGAATCTCTGCGATCACCACATGAAATACGTTTTATTTTCTAGGCATCTCGACCGTGCTTTGTCCTTCTATGTTGACAATTTTTTGCAAGTAAATTCCCGTCTGCAACAAGGACACCGCACACAACACAAAATAGGTGAAGGTTCGATCGGATCTCTTTTTTTCCAGAGTCAGACAACCAACACACAAATGATGTGGGTCTCTTCCATTTTCCGGTCGTCAATTTGTTCACTATGCGCTTCACTAATTCCTGCTTTGCATTTCAATGTCCGTGCCCTCTCGGGACTGGAACTGACTTTCACCAATGTTTCTTTAGGTGGAAATTTAGATTTGGATAATTGCTGGAGCCAAAATTTGGAATATTTAGCGACTTGACCGTGCAAAAATTTTGGTGGCCGAGTTTTCTCTTTGCGCCGGCCACGTTGAAATAGTCGCCAGGTGCAAGTTTTTAAAACGACCGAGTTTTCTCTATTGCTTGACGACCAGATCTCGCTTCATTATAGCTGTCCGTCTTCCCACTTGCGTAAAAGTGCGACGTGGCCGAGAATAAATGTCAGTGGCCGAGTATGCGACATTTTTTTAGTTTTTTAGGAGGTGCGGCCTAGTTTTTTAAAACCATTGTTTATCTCCACCCAATCTAAAAAAATTTCTGCGGATATTTTAAACCATGGCCGTAAAAAAAAGCCACTCTCATATATGTTTTCGACACCTTTCGGTTTTAGAAATATATTTTTAAAAATTAAATAAATGGCCGTTATTTGAAATCCAAATAGAAATAATTTTCCAAAAAAAGTGGGAAAATTGGCCACTTGAAATTTTTTCCGAGATCTTTTTTGCGAAAAGATTTGAGGCCTAAAAAACAAAAACTCGGCCAGTATTTTTTGACCTTCCATGTGACGTCACTTGTGACTTACAATTCCTTTTCTCAAGTTCCTTATGAGAAATCGTTTTTTTAAGACCTTTTGTGACCCTTTTGTTGCATTTTCTCCCAGTCGGAAATTACGCCACGTGGAAATAGTACGGCCACACTCTTATTTTATTCCTTTGGCGTCTTTTGGGACAAAGTAACAAGTGAAATTCAAACCATGTAAATTAGATAGCCTAGACTTAGCGACTAAGGCTTGTTGAAATATTTTCGTGGTGTGGCATAGAAAAATAAATATTGGGCCATTCCTTTTTCTTCTCATAGTTTTGTCAGAAGACGTCACTGAAACCTAGAAATCTCTGTTCCAGGGCTGCAAATGGGTATATCCTCCATACCTTCGTCACAGACCGGGATCTTCCACGTCATCGACCGCGCCGAACATTGCATTTTGCTAGAGATTACATGGACCACTAAGGTAAGCTGCCTAGAAAAATAGAAAGTTCGGCTCTAATCGATTGATGATGTTCAGTTAAAAACGCGAAAAACTGCGGACGGCGAGGCGACGATATCGATTTCTCCGAAATTCGCGTGACAGTCCACCAACTTATTTCGTTTCAAGGGAATATTCGAATTCATGCCACTTCTGAAATGGTAAGGCTTGTTTTTGAGGTAGGCCACGAAAGCGTATGGTTGCTTTTAAACACGGGCCGCGGACTGAAGTATCAAACTCGGCCACCAAAAATTGAAACTGTGAGTCGCCCTGATAGAATTTTTTTTTTTCTCGGCCAAACAGCAAAGGCCGACACAGTGAAGTTAAAAAGGGAGGGTGCATTTTTTTAAATAAAAGACTAGACTCCTAATGCAGAAATATCATATTTTTAAATGAAAGATCTAGTCGGCTACGTCCGCGGTCGATTGATACAGTAGTCGCGGCTCGGTTTTCATTGATTGAGCACTGAGAAGTTTCACTTCTCCAATTTCAATTTCAGAACGATGAACTAAGAAGTGGACTACGTGGCAGCCAGTTGACCTTTACCGGATAGATGGTCCTGTAAAGGAGGTGAACGTTATTGCCGAGGTGGGGGCTCTAGAGAAACATCCACAGCATTGGGCAGCCTTCGCAGGTCAGTCCCTAAAGAAGCAGAGACTAAAATGCAAAAGTGCTCTGGTTGTGAGATAACGGATGCGCCCACGAGAATTGTCGAAGTGTTCTGAGAGAACGTGGAGAATATCATCAAAAGCTCCATAATTATAAATATGGAGACAAGACTTTACCCTCAACCTATTTGGAAGACTGACTCATCTCCAACTCCTCGAGCATCAGGCGTTTTCTAACGGCAAACTAAAATGCGAGAGTAAACAGTAAGGCATGGAAAAGGCGATCACGCAAACGGAATTGAAGAATCGAGCGAAGATAAGTGATAAAGAAGACTAAGTATGAGAGTAAAGTACGAAATGATATTGGATGAGGAATCACCGGGAGAAGCTGTGTGATAAACGAGTGTTGTTGAAGGAGGATGATGGTGGATCGAGAAGAGCTTCGCTCTTATGATTTCTCAGTTCAGGGAGAAAATCAACATGAATCTGTGTTGATGATCATATGTTCAAGTCGGAGTGAGGTCTTGATTTTAATTTAATGCCTAAATAACTTTGAGACTGAGGCAGTTCAATAGGCTATATACATATAAGTCTGGACCCAACAAGTTTGTTACAATTATTTTTTCTAGATCCTCGTTAGCTGCTGTGAATCTTCGAGCAACGTCGTCTATCGTTCATGTGTGACAGTCGTACCTAGGATGTTTCTGAAGGGGAAGATTGTGGGCGAAAGACAATGAAGAAGATGATGGAGAAGGGGGCTCCGATGAGGAGGAGATGGAGGGGAGCCTGGTCTTGAATGTGATAAGAGTGATTAGGAGCATGTCCAGGATGTTCTTAGGTCTCCATTAAAATATCGTCGATGAAAAAGCTTAATTTTTTAGATGCTAATTGGCAAATCTATACTTCAACAAAAATAAGTAGTCCTTCCCGAAGTGGAATCATGCCGAGGATTTTGTTGATTTCTTAATTGAAGCGGAGCTTAATGACTTGCCAGTTCTCAAAAGAGCTTGTGAGAGGTATTTGTGCTGAGCTGAATTCGGTAGGCTTCTGTTCAAAAAAATATAAAAATCTAATCGAAATCTTTTCTAGAAAAAAGACATCGGAAGGCACCTGTCCCTGTTGGACTTTTCAACTGGATTGTATTCAACTTGCCTGTCTGGTTATGGAGAAGTCGATGACCGTGTTTGACGGAGTTGGCGAATCGAACGCAAGAGTTTGTGGATGCTGACACACTTTTGGCCCATATCAGGAAGAATTTAAGTGAGTAGGGTGTGAGGCAAAATTGCCGAATTTGCCGAGTAGGGCATATTGCAAAAAAGTAGATTTGCCTAATTAGCCGGGCAAATTTCGAAACACTTAATCACCAGTGTGTAAAGAATCTCAGTAGTTTTGGTGCTCCAAAAACATTAAAAAATATTTTTTCACTTTGTCAAGCACGGCAAATTTGCATTCCGAATTTGTCTACAGGTTCGGCAAACATTAAATAGATTTGCCGAATTTGCGGAGTTCGGCCACGAAATTTTGAGATTTGCCGCACACCCCTGGCGTGCACCGTGAAAAGTTCTTTTTTTCCAAAAATCTAAAACTTGAGGTTTATAATGTGACCCAAAAAAAAAGAAAAGAATTCGCCGCGCATTGCAAAACCATAATCCGCCAAAAGTTTCTTTGTTTTTTTTTCGAAGTGCAGACCGGGTTTCCTAAAGTCAAAATTGGAAACACGACAGGACTTTGCCGAAAATTTAATTTTTGAGTGATCTGTTGATGCGAAAGGTTATTATACGATTTCAAAAAGCTCGGTCACGTGTAATTTTAGAGTGGGATTAGCTATTTAATTACATTTGGGTGTAATGTCCAGTAACCTGGATAAAAGAATGCAAACGCTTTCGGCCGAGAATCGGAATCTTGTGGAGCGCATCGAAATGTGCTACGTTTCGTGACCAAAAAGCAAGAGTTCGCGTTGTACCGACCGCCAAATCATTTGATATTCGGCTTAACTATTCAATAATATTGTCACTGTTTTCCTCTCTTTCTTCTTTCTCATTTTTAAAAATGAATACTTTTTTCTTTTTTTTTACTTTCCACACGACTAACTCCACAGCCGCGCCTTTTTGTCTTTTACCCCTGCTTGCGATTCCACACATTTATCAAAGCTGTAAAGACAGCGAAGTAGGAGTAGTAGTGCTTTTAGAGTACACTTTTGGCAACTCTTTTCTCCAGATATATTATATGCTGTGGATGGAAACTTTCCCAGTTTATATATAATATTATTCATTTTACATATTCCCCTTCTTATACTGCTCACCATCCAAGGTGCATCTGATTACAGCTATTCGCCGGATGGGGCGAGTTATCAAAGCACAAGTGGGGCTCTTTTGTTCATTTTCATTGCTTTTTTCATTTCCTTTCGTTTCAACATTTTTCCATTTTCGAAATTAATCGGCTTTTCTGACCCAGGACTCACGGGAGATGAAAATAAATCTCCTTTAAGAATTGTGCTTTGAAAACAATATCATACAATTCAAACTTGAAACTTCATTTCTCCGTTGTTCCCCGTAAATTCCAAGCTGTCATCCATCAACTCTTTGAATAAAAAATAATCATTTGGTCCGTCCGTCGCGATAAGGATGTGAAAAAAGGTAATACCGGCATGTTGAAATACACATTTCGTCGCGGAGTATAGTTACGCTTCGATTGCTCAAGAGGATTCTTCTTTCCCCTATCATATTTTCGGGCAAAGAAGAAATCTCTGTCACCCCCCCACTAATAGAACAAAATGCAGCGTTCATTTGGTGCGATTTTCCGTTTCAAAAAGAAAAAAGTGTGTCAAAAACCTATCAAAAAGTAACCGCCTAAAGTTAGTTAGCACCTTTTTCCATTGTGAAGTTTTCTTCTTCAAAACAACTACTACAGTTTGTGTGTGTCGTCCTATTGTTGTGGTTGTAATTGTTCGATAGAGCGCGCACAAAATCTCTCGAATTAATTGATAGTGTGTTGTAGTGACCCTTGACTCCTTTGTCAACACCGTAATTAGGAAGGAGTACACCGCCGGGCGGGCGAGTACAGTTATTATAACGGTGGAAGATTTGTTTGTTTACATGTTATTAATAGGTTAGTTGTGTACTTTAAACGTTTTTTATTTGAAAAATATTCTGTTAATTAAAAAATACGTAATTTAGAAAAATGATGACTTTTTTTCACTTTTCAAATTTCTCAAAAACCGAACCCATGGGGTTTATTGACAAAAAATAAGAAAATTTTTCTAGTTATCAAAAAATCTATACATTTTAATATCTGTAAATAGTAAATGTGGAAGACAAAATTTTGACAATGCGTGACTAATGAATTTGAGTTTATTTAACTTAAAGAAGAGGAGTAGACGATAATCAACTATATATTGCGCAACATATTTGAACAATACATATATTTTTCGTAATATTTATTTTGAAAAATGATTGAAAATAAAACACGAAGAAAACTATATTTAAAAACGTCGGTGCTTTTTTTACATCCTGTTTTTAAACGAAAAATGCAAACCAATTTTCCGAGTTTTTTCTTCAAAATATTAGTCCCTGTTCATGAAAAATGTGGCATTCTCACTTATGTAAGTAGTTGTCACATGCACTTTTTGACCAAAAATTATTTTCCGAGTAAACCCTATAATTTCCAAATCCTCTTTTTCTGAAATTTTGAACTTTCCGCAAATCGGGAAAATGTCATTTCAACTCGAATTCATACTAATTATACATCTGTATAATTATTTAGATTCGTACTTTTTCCTCCTTTTGAAAAAGTGCACAGACATCGCCGATCTTTACAACCGTCTGGGCGCAGGACCGGTGTTGTAGGCATTAAATAACTATTTTACCATAAATTTCTTATAATTTTTAGCTGAAACGGTTTTCCAACAAAAAAAAACGCACATTTAAAAGGGTTACCGTATTTCTTCTATCAATATGGCTGCAATACTATTTTTCAATGGTCTTCCCGCCCTTGCAATACTAATAGGGAGAGCAAGACCATAGGGAGTGCAATACTGATTTTTCAGAACATTTTTCTGACTGAGCTTACTATTTTTTTTGCTGAAAAAACTCGAACCTTGTGTGAAAATTCAAAATTTGATTGTAATTGGAACAAAAAGGTGAGTAATTACTTCAATTTCATGCTCGAGAAATTCATTTCATTGTTGCACAGTAGGCAAAAAATGTTGTTAACATCTCAAAATTAGTGAGGTGATTTTGTACAAAAAGAAAGTAGACGTAAGACTATTAGGGAGTGCAACACTAATTGCGAGTGCAATACTAATTTTTCGGAGGGCGTTCAAGGAGCAATACTATTTGGGATTGCCAAAAGTCTAATGGAGAAGGAGGTCATATTAATAGAAGAAATACGGTTAATTATTCGCGAGGTGCATTTTCATTTTAAACTTTGTTTGAAAATCAATTATCTTTAAAAATCCTTTTCTTCAAATTTGTAATTATAAGAAACCAAAAAACCTTTATTTAATTTTCAACAAGTGTAGTTTATAATTAAAATATGAAAATTTACAATAAAAGTTCAGGACTGAATCCAAAAAAACTTTTTAAAAAACGAAACACCTTGTTTGAACCTGATAAGCCTGGAAATAACCTGGAAAAATAACATCGATTCAAATTTTGCAAATTTTAAGCGTTTTCTAACTTCGAAAAAGTTGACCTGGCAAAAAATAGGATTTTTCAATGTATTTTATAAAAAGGCGAAAAAAAGCAAATTTTTTGAGAAAAAAATTGCTTAAATTTTCGACAAATCATTTTCAAAACTATTCTCGATTAAAATCCGTTTATAGCCATTTCTCCTTCAATTCTTCCAGGTTCGAATACTTGCTCAGAAACTAAATTTGCTCTTTTTCGTATCCACTACTATACGACTAGTAGAAGTTCTTCATTCAGTGGGTGGCCGGACTACTTTGAATCAAATCACAATTGTAGAAGGAGGTCGTGCATTTGCACGGGTGTTCTGGTCACTCCAGAAATTGAAGAAATTGAGCACCTCAAGTTTTGGATTATTCCAGGCAACTCGGTCGTTTTTGAAAACCTATTCTATGAAAAACTGCAAACTATGTGGTTGCATCTGTCTGGCTGGAATTTTTGTTTCAAATTTTGACCCAGGACATTTGAGAATCAACCAGTTTTCTTACCAAGTATGCTAAAATCCGAGTCAAAAAGTGACTTACACGGGAAAGTTTCAATTCATTGTCCGTGAGGACGTTCGCCTGTCCAGCTCATTCCTTTCTTTTGTCTCCGCCAGAACCGTCTGGGGAGCTCTGGCGAATGAGTTGAGAGCAAGCACATTGCATGAGCTAGATACCTCCAAAAGATATGTGCAGGCGGGAGATAAATTGGACGATGAAAAATCGCCATAAGCATAATTTTGGTGCGGCGAGACCCGAATAATGAGACATTTACGACTTTTTGGAACATCTTCTACGGACAGAATGGCATTTTTGGTAATTTGAGTTGTAGTTTGAGGGGCTTCATTTTTTTCGATTTTTAAATTCGTATAGACGCTTATACGCAAAAACAGAGAACTGCTATAGGCGCACGTGTAGTCAAAATGTCTTTTTGATCTTCAAAAAATGCGGGAGTTAAGACGCAGACATATCATCTGATTCGCATGGCTAAGAGCGGGCTGACGTCACAATTTTCTGGAAAAATGTTCCCGCTTGTAGATCAGGCTATGATGTGTGTGAGTTTTCAATGAGACAGCCTGGCACGACGGTAGTCACATGCTGGCAGTTTTTTTCCTGAAAAAAGGTACCTGGATTTTCGTTTTTTCTTAAGTAGTCAAATTATCGAAAGCTACTAAGCTACGTGAGGAACTTAGGAAAAGTAGGATTTTAAATTGTTTTCGGCCTCGCAACGAAAGACTCACTACTATCACCTCCAAAAAACGAAAATATTTGTCGTGCCGAGCCCCAAGGCTCCGTTGAAGCGAAATTCCTAAACTCCCTAACCGCCGAAATTAATTTCTGAGTTGATTTTCCCATCACCTTCTATATACAGTCGTTTCGCCCCGAAAACGATTTGAATTCGGCTTCTCCTCAAATCCTCATTGCATCCTCTTTCTTATTCGATTTATTTCTAGCGGACTCTCCCCTTCCCATCCGTGGCGTTATTGTTCGGTTACGATACGCTTCTTGTGAAGGTTATATGCAAACGACTACTTGCCATTCGATTCTTTCTCCACAAACGAGGTTATTCCATTTACTTCAACTAAGGAGCTGTTTTTTTCTTGTTTTTTGTACCTACATTCAAGGTCCAAGTAGTGCGGAAAGTCAAAAATCACCTCGCAATTTAATTTTTAATAACGCCCGAATTAGTGCACGATAAGTGAATAAGAACAAAATTCTAGTCCCAGAGTCGTGACGATTTAGACAGCATATAAAAAAAACGATTTTATTCCAAAGTTTGAACTGCCACTACATTTCATGTATTGAGGTTTTGAATTTCCATCATTTAGTTTTAACCACACTTTTCTTCCGATTTCCACCGCAAGCGAAAGTTGTCTTGTTTCCGAATATCTGACCGCCATAACTTGGCTAGGTTTTTTTACGACCGTGCTGCCGAATTTTGAATAGTTTATCAGCATAGACACTCTCTCTGTCCCCTTTCCAACCTCGCAAACCCTTATGTCTGTAGTTGGCATCTGTTGCAGCTTGTTTTTGGGGCAATTTTTTGCCAGCTTGTTCTACATATTAACATTGCCTGACCCACATATCTTGAGCAAAATTCCAAAAAGTACGTTTGTGGCCTAGAGTGATTTAATTTGTGGTTTTTTTTTGATAGTTTTGAGCTAAAACTTGCATGGCTTTTTCACTGTTATAAATCATTTACAAATTCATTTTTTGCTCTTTTTAGAAAAAAAATTGTTAAAATTGTGGAAAAATTTCAAAAAGGTGTTAATCATTATCCACTTCCAAAACGTCATAACTTTGGTGAAACTGTACCGGGCAGCAGCTAAATTTTTCGGAGTGATCGACATTATTTCTCTTTTATCGAAAAATTACTATGCCAAGACCGGGGACCCATTTTTTCACTTCCCTCGCGGTATAAGCCGAAGCCTTAGTCTAAGTCTAAGCCTATGACTGATCAGCATAAGCCTCAGCCTAAGCCTAAGCGTAAGCTCAGCCTAAGGCGAAGCCTAAGAATAACGGGAAACTTTTTTTGTTGCTTTTTTTTGTTTTTTTTCAAATGCCGAAAAATAATTGCGGGATATGAATTATGACTTTGTTTAGCCGTTCCCAGAGATGCTGGTTTTCAGGCTACCATGAACCTTAACGATGTTCTTCTGCCCGCCCTTTGCACACTCTGAAGTTTCCCGCCATGTCAACCTTTTCGATCGTTCGGCACGATAACGTTCTGAGTCCCGCGGTGCCCGTTAATTTCCATCGAATCGTTAGGTTTTCTCCTTCGATTCCTAGCGATCAAGCCATAATTTATCCGTACAAAATCGGATTTTCTCCCTTTTGAGATAATGATGATGATGGCCTCCCTAGACACCTAACAGTGGAGTGATGAATGTCTTCCTTAACACGTGTCCGTTTATCATTTATCACTCTGTGCTGAAAACCGGTCTCTCTCTTCCCCTGACCTTTTCGGTTTTTTGAAACAGTGAAACAGAAACGGAAAACAGGCGGTGTCAGATGTTTGACACGTTGATGTCGTAATCCATTTCGTATTAATGGTCTGCTACTATGTACGCCATTTGCTATATATGGCCATATTTTCAATAGCTTTGAGCACAAGCTTTCAGAATTGGCAATCCATTTTTAAAATTTTAAAATCGTTTGAAAACCAATATATGGGTGGAGCCTATTTCTTAACTGTCCGTAGCTACCGAAAAAGTCGGAAAGCGCCGATTATCTAATATTTACGACTTCGGCAAAACTGAAATTCTTCAGATTTTTAAGATCTTGAGAGAAAGAATTATATTTCTTTCAAAAAACATGTATTATTTAAAATTCGTTTGTTTTATTATATTTGAGCTCATTAACTCTGTATCAAATTGACAAACAGATTATTTCATTCGCAAAAATGCCTAATATCGTAAATTTGAATGTAAAGGCAATTCCCGAATTGCTGCACATCTTGGTTTTTTGAGCTTATTAATTGAATTTTTAAGAACTTTTATTTTGGTAATCTAAATTTTAAAGTTCTTACTGAATTCCGAAAAAAATTTCTTCAGAATAGGGCTTCCATGGCGTCAAAAAGCTTGCCAAACCTTAAGACGACCTCCGCTCCTCTGCCTACCTTAATCTATGTGCTGAAACATATGCTTTTTTTGCAATTCTTGATTGTTTCCTCTAATTGATAGAAATGAGAAAATTTCATAAAATAGAAAATTTACGCACAAGTACAAGGATTTAGGCAGGCCAGGCCGTGAAACCCCGCCTGCTTACCATGGAAGCCCTACTGCAGAAAATGAGAATTCTGACTGTTCAAAAAAAAAAAGAAACCAGCCGTGTTTTTCCTTGAAATTCGAAAAGTTCCCCGATATTCCCCTCATTTCCGGAGCGTTGTGTTCCCATGGTGGAACGGTAGTTTCAACACACCGTCAAAAGCGATTATCGTGTCTATTTGTCTGTCGTCGACGCGACCCATCACACCAAATCGGTTGAATTGGCATGTCGCTACCCCTTTTTTAAATCGGCAATATATTTACTTTTTATTTGACTAAGAAGTAAACACTAATAGTTTTGACTGCAAGAATATACATAACACCTTATTTCACTTGGTAAAGTAATTGAACCGTTGTAATTGAGCTGAACATGATTTACCTACGAAAAAATGCCTGTGACCTAGGGCTTGCATGTATGGTTAAAAGGGCTGCCTGCCCGACCAGGCAGCATGCGCTTGCCTGTGCCGGTTTATGCTAAAAACAAGGTTTATGCTACGGTTGAAATTATTTTTTCATTTTTAATTTGATTTTCAACTTTTGTAATCTGAAAATTCACAAAGGTAGAAAAGAGGGGGAGGCAGGCAAGTTGGCACGGCGTCAGGCCCTGAATCGGCGCCACTGCCTATCATGAAAACCCTAGTCTGAAATCGATTTGGCCCAAAGACCAATTTTCGAGAATCATTCTCCTTCCGTCCTTTTTACGCACTTTTTTAATGAATTTGAAGTGAACGTGTAGTCGAGGGAAATTTAGTGAAACTACTACAAGTCCACGGTTTTCAGCAGCAACTTTTTTAATTTCGTAGAAATAGGTGCTTTTGTGTTAAAATTAATAATAGCTGAACTATTGGATAATGTACTTTAAGACGGGCAATGTCACTCCATATTTTATAAAATGTTGAAAATTTTGGTCAGAAGGGATCGACGGAAGATTTTTAGAAATCGAAAATTTTCAATTTCCGATTCCCATCAAACATTTTATAGCTCAACAGTTTATTTCGAAAGATACAAAAAATCAGAGTCATCTGTTCGCACACCGTTTTACCCCTATCAACAGATGTGTTGCCCTGCACATCTGTTAGAACTTCTCACTATTCTCTACAACAGATTTTCGGAACAGAAGGTGTGATGTTTCTACCTGACTATGAGATTCACGTGCAATTCAAAATGATTTTTTGAAATTTGGAGATTTTTGAGTTATCCATAATTCCGTCAAAGAGAGATCACAATTTTTTTCGTAGATTGACAAGAAAATTACCCCAACAATACTCAAAACAATTGTAAGTACAATTGCATTATTGCTCTTCAATTCTTAATTTGTGCTGAAACTTTCTTTTGACGTTAACCCCTGCAAAAATGCAACTAAAATTGATCAACACTCGTCTAGTAAATCTACTAACTCGCCAAGGGAGAAGTCTTTGAGGGGGTCCGTACATTTGGGGTTTTCATGCTAAAATTCCTACAGAAGAGTGTTAGTTATGATCTCTCATTTTTGCGCATTTTTAAAGTGACTTTATATTCGGGAACCTTCAGACAATCATTGTCCGCACTTTATGGAAATTTTTTTTCGTTTTCGCTCAAAATCACTAATTGATCAACTCCAAGCATAAAAAATCAAACCCCGGTTTTTTAACAAACATTTTGTTAGTTGATCATTTTTCAAAATAATTTAGTACTCTCAACGAAGTTATGCAACTCCAAACTTGGTTGAATCAGTATTTTGCACAAAGTTCGAAGTGAGATGTAGTTCATTCCGACGGTTTACTTGCGAATGGCGAGTTAAAACTTGTGTAATGTACCATACATTTCTGAACATTAAAGAAAGTTCATACATTTTTACAAAAATAAAAATTTTCCTATTTTTGCTAGGAGTTGATCAACAAATTTTGAGAAAAAAATGAAAAAAATAATTTCGAAAAAGTGCGGACATTCTAGGTTCCCGATTAAGAATAAAATCACTTTAAAAATGCTCAAAAATGTTTGAATGAGTTGTGTAAAACTTTACTTACAAAAATAAAAATAGAAGGAATCGAACCAAACCTTAAATATTATCAGACGCGCGCACTCCCAACTCGGCCACCGCGGACAATTTTCAACTGCGTCGATGTGGTGTCACCCGACATTTTTACTTCGGTGGTCACGCAAGCTGAGATTTGCGTGGACTGATAGTAAGACAGTCGATTTCAATGGGGTTCTATCAACCTAACTTGCTGAAACACATTGACCGGGGCAGCTAAATTTTTTGGAGAGATCACAACTCACTCTTCTGTAGGAATTTTAGCATGAGAACCCCAATTTCACGGACCCCCTCAAAGACTTCCCTTGTAAGTCAAACAAAAATTCTGAGATTTTTCAGAGTACTATACGTAGTATATATTTCTGAACAATTCCCTCAACAAAATCCTTTCCACTTCCTCATTTTCCCACGTAAAGTCAGAATACATTTTACTTATTACCATTAATACCTAAATGAAATACAGGTCGATCTTGCAATTCTACCGTCTCACGGCTTTTGTACTTGTTCACCGCCACTTCCCCCATTCTTTAATCCAACCACACACTTTTGGCACACAAAGTGTTCAATCGAAATGGGACACTATTTGCTATTGCTATAATCGACAGGCTGGTGGCAGGAGGAAAGCAGCAAACGACGAAAGGCATAAAACAACTGGGCGTTGTGTTAATCACCCGTATTAAGCATTCTATATTAAGCGGTCGACAAACAGTTCATTCATGTTGACTCGATTTTCGATCATTTCACAGAGTTTTGCTTCGAATTGAAGGTTCATGGAGAGATAGCCACTCTGTCTATTTTCAGATTCCGCTGAATTTTAAGATGTTTAATACTTATTTGCCACCTTTTCGACGGAATGACATGTACCGGTCGGCTAAATCATGGACAGAATCGATCTGCTAAGAGATGACAATTTTTAATGTATATACTCAGGGCTCAAATGATCGAATTGCGTAACGAATTTTTTAAAAACTTTTATCAAAATTTTCTATTGGTTCAATGTTTCGAAAAATAGACCGGAACATGTAATTCCGTACAAAAAAACGCGCTTCTATCGTGTCTGAAACAACAATCTTTTTCATAATAACTTTCAACTACAAACTTGTTCTTTACAAAAAGATCAACAATTCGATTATTAGGTGAGCACGCTGGTTTTCTGTACAAAAAATTTTCCGCGCAGATGTGATCTACCAAAGTAATTTGGAAAACCCGTCAATGCTTCGTTGCGTTTCAGTGCTATTTTAGGATCTTTGAGAGCTCACCTGCCGTGAGCTTGGCTCTGGAGATTCGCAGCTAAAAAGGAGTGACCGTTTCTTGAGGAGCCGTTTCAAGGGGCTATCGAATGGCATAGGTCTCATATGCAAGCCGATGGGCACCTTCTGACGGTTCCCTAGTCAGATAGAAGCCAAAATTTGGGCGAGGTATGCCCATTGTCATTCTAACGAAATGGCCTCCGACGTGATAACTTTTCTCTGTCAATTACTCTGGGCACACTCCCAATAAATCCTACACACCGGGGGATTTGAATTGAGTCATTCAAGTGTCAGTGGTTCAGTTTCTAGCAGTTGATACGTGTTGGGTTGTGTGGTGGTGGTCAACCTGTCGCCCGATCACTCACACACACACATACTTTTCCTGCCATATTCCTCCCCACGAAGAGAGAGAAAAAGAAGTTGCATCTTTTCTTTTCTATAAAAGTCTCTATCCACCAACACACCCTTATTCGCATGTTCTCGCACTCCATTTTCCAAACAACGCAATCAGTGCATCCAAATCTACATAATCGATTCAGGGGGAATAAACTGTGATAGTTTTCTAATACTTTTCCTTAATTGAAATTTTATATTTTTGAAATAATCGACCGAATATGCCTAATTATAATTAAAATTTAGCGAATTAGATTTGAATTTAACAACTATTGCGATGTTTTGAATTTTTGACCGGAGTATTTTTTCAAGAAATTCTCTTTGCTAACCATAAGCTGAAAAATTTTGATTTTCTAGTTTTTGGTTTGCCCGGTCAAAAAAAATCTGTAAAAATTTTGGGGCTTTTTTCTCAAAAAAAAAAAAAGAGATTCAGGAGATTTGATTCATAACTTCAAAACTTAGATGCAAAATCTTTTACGTGGTGTCGATTTTTTGATATTCGAAAAATCCGGTTATTAAACAGCTCTATTAAGAAAAATTATTTCCTGGACCTATTTTCTGAAGAATTCCTCGTGCTTATCCCACTCTACAATTTTTCGATTTTTCATAAAATTGAAAGTTTCGCCGTTCAGTTTACCCTTCAAAATCAATTTTCGACGATCCCGAATGTTCAGAATGTTGACAAATAAATTTAAGATTTTGTCAAATTTTCCCACACGTACTTATCCACCAAAATTGACAAAAGACCCTTAAATTTAATTTCTAAAATTTTCAAAAAATCGTGATCCATTCCTCCATGTCATGTCTTGCAAGCGTTGCCTCAAAGTCATCAATTGAGCTAGTTGTCATCAATTCAGCGATATTTAGAGATTGAAAGAATGAGTAACTCATCCTTGTTTCTTCTTCATCTCCTCACTTCACTTCCAATTTTCTAGGTCATCTGTTACTCAATTTGGCCTGGCGATTAGTCATCTATTTGTTCGTCAGACTTTGGTGCAAATTGTCGTGTCACTGAGTAGTTATTTTTTCTTTTTGGTTGATAAGGTTACCTGTTAAGGTCATATCCTTTTTGGCCTATTTTTCCAGTAGTATGATTCCTCTAATGGTCGTTTAGAAGTTACTAAATGTTTCGAAGTTGTTAAAGTATTAGATTTTTTTAAAATCATTAGGAATGTTTTTTTAATTAAAAACAGTGTTTACAAAAAAAATTTTATGTTTTAAAAACTTAAAATAAAGTTTAACAAATGTCTAAATTGTTAATTTTTAAAACTATAAACAGCATTGGCATTCATAAAAAACAAATTTCGACAAAAAATTCGTAAAAATTGCTGAAATCGCAGTAAAAATACTCACAACGCTGAATTTCTCATAAAATCTGGAAAATCAAGTCGTTTTACTTGATATTCGATGCCATAGGAAATTAGACAAAAAAAAAGTGATTTTATTAAAGGCTGGTCAAAATGTCAGATTTCAACAACGTTTTATAAAACCGCTGTCAGAGTAGAAAAATATAGGTGTAAAATGTAGTTAAAAACTATTCTTCGATTTTCCTTATTTTTTTCTGCTAAGTGATTGAAATTTTCACGTGTAGAACAAGAAGATTTAAATTTAAACCAAGTTTTTAAATTTTCAATTAAACATACAAAAACTACTATTTTCGAAATTTTTAATACAACAGTTTAAATTCCAATTTTTCTTTAAAACATATTTTCCAATGCTGACTCTGAATGAAGTCTTAACACTTCAATTTCAACATTCTGTTGCGACAAGTCGTCCCATCCATTGACCGATAACAATGGATCAATCACTGACGAGGGCCCCCGGGCGCCGCCATCATTTTCTCTCTCTCTCTATCTATCTGTCTCTCTCTCTCTCTTTGTTTCTAAAAAGAAGGAAAATGAGCTGCAATTTATCAAATCCACGGTCTTTTTCCCTCAAATTCTCTGCCGTCTCTAGTCTTCTCTCATGGTCATTGTCGCCCTAGGACATTTGTGACTCACAAAATGTGCCGTATTATACAAAAATAATTAAAGTTCAATGCGTATGCGTGGGTGCATTTGTTGCATGGGTGAGGGCAAAAATTAGCCACCCACAACAAACTTAACGTTTTTTTTTTTGTATTTTGCCTTTTTCTTCTTGATGAATGGTGCACATTACACCTGTTCTTTGTTACGGAAAATTGGGCGCAGAGAACTAACTGAGGTGTGAATACTTTGTTGGTTTTTTTGGCTATACCTATTAGTAACCTTTTGAGTATTAAAAAGAAAATTTGAGGCATGTTATTTGTCGAGTTGTTGGTAGGATGTTGATAATTACTGTCATCGTGATATTCTATTAGAAATTAATATTTATTTACACGTTTTAGAAGAATTGGGGATTTTTATGCAAATGATCCAAAATAATCTTTCGACAAATCACGACGGCCCACACTGTTTTTGTCTTCAGCCAGCAATCAACGTATTCAAACTCCGCCTACTCTGTCTGATTGGTAGGAAAAGTGGGCGGAGCAAATTGCTGATACTTTTTCGAAGTTCTCGACCCTTAGCAATACCAGAGTTCATCAAAACTGAAATATTGCGTTTTTAAAGGATATATTATTAGTATTATTATTTACTCTCGATTTTTTTATACTATTCTGTGGTTGCTCTGAATTTCAGATTATTCGAGATAGTTTTCGATAAAGCGACAAGTGATTGTTCAGTTTCTGATTTCCATAATTTATCCTCTAAAAGGTCAAGGTTTCGTTTCTTTGCAAAAAACTCATTTTTTTGAGAGTTTTCGGAATTTTGGCTAGCCTCTCCAATAAATTAATTCAAAATTTCGGAAATTATTCTTCCATTATATCAATAGTGTTAATCTCACTATTCTAATTTGATACAAACAAATTGACTCTTCATCGATTTCCAGCCAAATACTTTACATGCTTGGCAACTGAAAATTAGTGTTGTTTTTCAAATTCTCAGTTTCCAGCCACTGAAAACATGAGCCTCCATTGGGTCCGTCCCTCTCCTTTAGCCCTTCCGAAACTCATTTCCCAGTACTCTCTCCAATCTGGTCAACATTTGAAAGGCTGTTGGGGCGAACGAAAGCCAATTAACAACCGAACAATAGTTTTTTCCAATGTCATCGAATCCTGGCTTCTCATAGCCAAAAATGCTGATGACTCGAAATTGCTTTTCGTTTGATATACACACACATCATCCTGTGCCACACACTCTTTTCCCCACTCTTTTTCACGAGCTTTTTCATTCGGAAGGCGACAGAGATCAATTACCGACATATGGAACCAATCGAAGTACTCTCTCCGCTGCGACTACCTAATTAACCCTTTATTGAAAAAATGAGAGAGAGACAGAGAGAGGATATGAACGGAAGAAGGAAAAAGAGGCAAAGCAATTGTTTATTGTTTTTCGAAACAATTCAAACTTTTGTTTGGGCTGTACGCCTTTAAAGATGGAAAAAAAACGGAAATTTTCCAGCAATCCGTAAATTTTTTTGTCGGCAAATTGTTGGCATTGGTAATCGGCTAATTATTCGCCGATTTGCCAGAAATTCATAATTTCGGCTACTTATGCAGGTTCGCCTATTTGCCAAAATTTTTCATTTTCGGCAATTTGCCCGTTTGCCGTTGCCGGAAGTGTTTAGAGGAGTTGTTTATGAGACGGAAGCACTGTGCCTGTTTGCCAATATTGAAATTCTGAAATTTCCAAAAAAATGTGCACAAGCACCGCCAAAAACTTTTTCAGTTGCCGGTTTGCCGGTTCGCCGGAAAATTTAAGATCCGGCAATTTGCTAATTTGCCGGAAAAAACCGGCTACCGCCCACCCCTCCACCGAATTCGGAAATTTTGTAAAAAACAAGTTTATTTTTGGGCCAATACGATACTACTTTTCCTAAAGAAGCTTACAGTAATCAATGTATTATCTTTTCCATCTCGAATGGTACCTGTGTTTAACGGTCACATAACTGTGACGAGTACTTGAGATGACAATACTCTTATCATAAAACCTCCCCGCTCGTTATACCCCTCTGCTTCTCGGGTGTAGGGTTACCGTGGTTGCTGACGGTTTCGTAGGGATTACTGATGTCAGAGAATTGGATGAGTAGTTGGGATTAGGAGATTAGGGAAATTGGAAGACATGTCTATGCACTCCATATGTTTCTAATAAGAATCCTTGGAAATCGAATTGCATATAACTCAAGAATGGATAGCTACTGGTCCTGTTTCGTTTTGTTATCTTGATTCTTCGAAATGGTGCTCACTCACTCGAAGCCCCAGGACGCTAGTTATTTTCGTAATCGTCGCGTTCGTTCTCGAGCTCCTCCTCGAGTTGGAAATGTTAAGTTGTGAGGGCTATCGCGTCCACAGATTTATAGAGTCCGTCGTGCGGTTTCGCTGGGTTCTCGCAGCAACCCCCTCCCCCCGGCACCCACGCAATATCGGTGCAATCGCGTAAACTTTTTGGAGCACGCAGCACACAATGTGCGCGGCTCAACTCTGTCTCACTCTTCGGACATCCAACATATGGCACTCCTCAAAGTGTTCACTGGCCTCCGCTCGGAAGTCAGGCGAATTTATTCATCTCTTTGGAGATTGGCTCACAATTTTTTTGATTTGAATTCAGTGACTATTTATCGATTTCTAGGGCTTCTATGTAGGTTGCCTGTGTGCCTGTCGTCTGACGTTAAGGCGTCCTCCGCCTGCCTCTTCGCCTCAATCCGTGCCTTGTGCCAAAACATACGAATTGTAAAATGATTCTCAAATTGATAAAAATGAGAAAATTAAGAATTTGTGAAATTCAGACAGGCGGCAGGCAGATCTCAGACAGGCATCAGGCTCAGAAAACGCGCAACTGTCTCCCATGGAAGCCCTACTGATATGTAAAGGAGATATTCGGTTCAGATAAAATAAATTGAAGTTACGCGAATTCTGAATTTTGAATATTTTCCAATAGTTTCTAATAGTATGGGTTAGATGTTGCATTCTAGATACTTACAAAATTTTTAGAAAATTCCGTGGTAAAGTTCAAAGGACACTCTTTGGCTCTGAATATTGGTTAATAATATGAATCCGTTCTGCTTTGTTTTCCGTACTCCAATTCTTGACGTTGATATGAAGCCAGCTCGAATAATAGCCTCGCACGTAGTCAGGCTGTCCCAATACGGTTTGATCGACAAAAAATGCTGGAGTTGCCCTTCAAAATGTGACGTAAGCGCGCTCTTAACCATGCACTATAAAATCAGTTGAGAACTCTGTCAAATCAGCTCCCGCATTTTTTGGAGATCTACGTAGATCAAGCCGAACGGATACTGGTACTCTGTCACCACGAGCTCCTAAGCACTATTGTGCAAGGACACGTCTTATTTTCTGAACCGTCAAAAATTGGCACCGTTTGAGAATGAAAAGATCTAAAATTTTCTGAGTCTGTATTTTTTTCTGTATATAAGTCCTACCGAAAGGGTCCCCCGCGCTAATAATTACCCGCTTCAAAACAATGTGTACTACTAGCCGAGATAAGAGTTTTGTTGTCATGATACAACAAGATTTCGATCACCGCCCATTTTTCTTGTCAAAAAGTTCCGCTTATAATCTCGTTTTCTGATAATCAGAGATACTCTATGGGAATTGGTTGAGATCCACGCCATTAGTGAATGTTCCCCCAATAACCATGGAGCGTTAGAACAAAGACGAAAACCCGCCAGAAGACACACATTCTCGAGAGCAGGAGAAAAACGAAGAAGTGGGAGGGGAGCCCGCGGGGGCCGAGACTTCCCACTTGCCGATTTGTGCAACGCAATATCGATGAGGAGTGCTCCGTCCATTCGATACAGTCTTGCACCATGTTTGTTGAGAAATGCTATTTGGGTGGCTGGCAGAAGTTATTGGTCCAATTTTCTTGTCAATTTGATCTGACAGATTATAGGTTCTTGGAATTCGACTCTTCACCGAAAAAATCGATAATTTTTCGGAGTTTGTTCAATTTTTCAGTTGAACATTTAAAAGTTTTACTAAATTCGATTCTAAATTTTAAAGCACATTTTGACCTAGTAGGACTTTCGGAATTTTGTAGCCTGTATAAAAAATCGGTGGCCAATTCTATAATTTTTTTTCGTTTTGAAATTGCCTTTTTATGAAGTTTACAATGTGGAACATTCGACTTTGAATGACTTAGTTTTTCAAATTCCACCTAGGGTCAGAGTGTCCCATCCCAGTTTAATCGACGTTGATCTACAAAAATCGCGGGAACTGGTCTGACGCAGAGCTCGCCACTGATTTTGGCAGGGTTAAGACTTGCTGACAGCACATTTTTTCCTGGAAAATTTTCCGCATTTTTTTGTAGATCAAACAAATTTGATATTGCCTCGAGTTGTTCGCTATAGTTGGCTAGTTTTGAAATCGTTCCGGAATTTCTTGAACTTCGAGTTCTTGAAACATTTATGTTTTCACCAGTTTTCTCTGCGTGTTTTTTGACTGTTCGAAAAAACGGTTCTTAGAGACTGCTTTGCAAATTTCGAATTCATCCAAAAAAAAGTGAACAAATTCTTCGTATTTTGCTTCTAGAATTTTTGGAAATCTCATTTAAAATGAGTTTTTGTGAAACATTTTAATCTTTAAATAGTCAGAGTTACGTCAACCAATTCTATTTTTTGAGGAAGTTATTTTGAGAAGAAATACAACAAATCCGCAATTTTTTCCTTCCGAATAATTAACACAATCCAAGATCCCCCCTCAAACCGGATGGCATTTATTCGGATCCCGGCAGGTGTTCGAATGAGATTTGTATCCATTAACACATTGTGCATCACATAGACACATTGTCAACGTATGCACACAACAAAATAACTGCGCTCGTTCGCACCTCAATCCTTTGATGTTCTCCGCCGGGGGCTCCTGTAAGGTCAGGAGTTTTCTAAAAATGTTGCCTTCTTCTCCGTCTTCTTCCTCTTCATCATCGAATATTCCAGAGGGGGGCCGACACGCTTCACTTGATTTTCGATGGCAATTTGTTTGAAGAATTCATGAATTCGAAGAATTTATTTGGGAATACTCTATTTTGCTTTACGTTTACATCCAACTTTTGGCAACTTAAGCGCCTCCAACTGCAACCATATGGTGCTCAATGAGCCGAGAGGGATCATCTGTGAATTTGGTGTTTTTTATTGGTTCCCTATTTGATTGGAGAGTTCATTTTGCATACAATTACCTCTATTTGGCTCAGGGGTGGACGGGCACAATCCGTTCGGCATTTATATTTTTGCCGACAACTAGGGCAAATCGGCAATTCGCCGATTTGCCGGATTGCCGGAAGTCTTGATTTTCGGCCAACCGGCAAACATCAGCGTCCTATTTTACTATTCAAGATAAATGTAGGAACATTCATAGGATGCGGATACAATATTGCCGATAAAATTTAAATTCTGATCAAAAAAAATGAACCACAATTTGCCGCAAGTTCTAGCCGTTGCATTTCAATTCCGGCAATTTTATGTCCGTAAAAAATTGCCGCCCACCCCTGATTTCTATCAGTCTGTCACCGATTCTAGTGAGCCGGGGGGTCTTCCATGCAGGATGAATCGGTGTCTGCTACATTAATTGCGCAATCCACATTGATACAGAGCAACCTGCTTGCAATTGTTTTTCTGTGGCCCGTTCTGGTTACACCTATAAAAATGTGGTCGAAGAATCGTATAATTTGGGTCATGAGATGGTCCCTGGGTAATTGGAGAAGTGCCGTTGAGAGAGAGAGAGCCAATTACGTATGAGGTCTGGTTCCTCTGCACTCGGGAAGACGCTATAACCCTTCGTGGAACTTTTGGCGGGAGATATCAAGAGATATTTTCCACTTCGGTAATTATCGCACTTATGGTACTCTCTTTGTGAATGATTTACCTATAATTTATTGAGCAGTTGTGATTATCCTATTTTGAGAACCTAGAAATGTCATAGGAAACGTTTAATCGGTGAGTATTGTTTTACGTTAAGTTGCTCCGTTTTTTATTTGACTAGCTCGACACAGCACCTTTGAATTTTACATTGGTTTTGGCCAAAGGTTTTCTGTTTACTTTTATTTTGCAGTCTTATTGATCTGGCCTGCTTTACCGAGCTAAGCCTAATCCTGTCCCGGTTACAGTCCATAAGACAACATCAGCTTTTGAACTCAATAATTGCCGAATTGCCAAAATGCCAAAAAATTACGATTGCTGCCCGTCTGAGTAAGTCTGAAACAGTTGTGATTGAGCCGAAACCTACTCGGAGTGGGCCACTTCCCTATTTAATTTCTCGGTTGATTTTCACACTTCCCGCCGAGAGCCCGCAAGCATCTGCGAGCTGAACGGTTTCGTCGTCGTTTTTCATGTCTATTGCTAAATAGGTACGTGCGCGTTACACACTCATAAACATCAATTCTTTCATAAAGTGGTGGATAAGTCGAGTGGATTGCATCTGACACCACACTTCCGATAATCGCTTCGTCTTCTTGTCATCATCGTCGTTTTCTTCTTGTTGTCGTCCGGTCCCCACACACACAAACGGCTACTTCCGACGCGTCGGTGTTGTGTGTATGTGTCAAACGGCACCACCACAAGTGATTGCCCTCGGCCGTGTGCTAACTCGCATTTTGTCTTGTAATCACGCAATAGTGATAACAATCGTTTCCGGACCATTGCTAATATAATATATTGGGGCTACTGCGGGCACGTCTTGGCAATAACCTGGATGCAAGTTTTATCGTTAAAATGTGAAGCCCATGTATGATTGCGAAAATCCTAGTTGAAGTTTTCCCATTCAAATAATGGCATATTTGAAACATTTCGAACTTGAAGATTTATATCTGTCGTAAGTGGAACGGTTCATTTGGTTTCTTGCGTCTCGTCGCGAAAAGCTTTCACTATGGTATGAAGCACGAATGGGGAAAATCGAAGTCGAAGGTCGGCTCGATTTCGGCAATTATCGAGTTCAAGGTTTCGGAAAAACTCAAAAATAATTTTCAAATCTATTTATTAGTTCTGACACGCGGACTCGGCAAGTCCCATTTCGCTTTGATCTACGAAAAATGCGGGAGTTGAGAGACTACCGCAAACATCTCAACTGATTTCGCATGGTTAAGAGTGTGCTGACGTCACTTCCGGAAAAAAATACCCGCATTTGTAGATCAAATCGTAATGGGATAGCGACGTAGAACAGACTCGCCAAATCGATATATGCATAATGAAAACTCTAGAACACTGCCACCCTCATAAAGTGAGTGACAAACATTTCTGCTTTGAGGAACTATAGAACCCCCTTTCAAGTCGATCTTCACGAGCGCAAATTCTAGAAAGATCTGACAGTGGCCGATTTTTTAATGTTTCTAGGCCCACGTAAAAAAGCTATCTGATGCCTTGTTACATTCCAATTCGAAAATATCCCTTTTTTTAATTTTTCGGCAGCAGCCCGGTCCGTGCCAACAACTTACTAAACCCTTCAATACCCTGCCCTCCAAACTTCTGGCCTCCCGGCTCCGTGTTGTTCAGGGTGTTGTACCCCCCCTAGACACCCAACTGACCATTCACTCGTCCTCCCCCTCTACAAGAACCACCACCACCTGATCCATTCCGCAATTATATTCCGGATACTTGTCATACAGAGAATACCCGGTTTGCTGCTGCCAAACGGTTTTCATTTACCATTTCTCACTCCTTGATTGTTGTCTATTCTTCGATTCGATGCGGCAAAACTAGCGCCTGGTTTGGGATTGCTTTAATAGTAAAATTTTTTCTTATTTAAATTTCCTATATTTTTTGTATAAGATTTTCTTTTTTAATTGCCAATCCATGGGAACGTCTCAAATTGCATAAAATTCCAATTTGAATTCCCTCCAAGATTTCACGATGGAGCGCACTTGAATTATTATAATTTTTATCAATGAATTTTTAGAGTTATCATCTCTGACTGATTTTTTTCTTTGTTAGTAGTTTTAGAGGAAAAAATCCAAGTTAAATGGACATTTCCTATTAGTTTTACAATTTTTGGACTACTTTCCCCGCCGCCACCGCTAAAAATCCCAATGCAAGTTTTCACCTGCTCTTGCACGACTCATTTCCGCGAGCGCGCGCGCTCGTACTTTTTATCTTTACTATTTATATATCTCAAAAAAAAATCCCGTTAATTTTTTTTCCCTTACAATCTCATATTTTACTCATTTAGTTTGGCTTATAAAATGCTAAGATTAAAATTTTTATATTTCATTTCCAGATCACATACACAACGAAACTGAGGGGAAAAAGTTATTCCTGATTGATTTTTATGATTAGTAAATAACATAGTTCGGCCGCAGCTAACGGTGACGAACGCCCGCAATTATGAGTTTTTCGCTTAAACATCAGATCTTTTTCGAATTTACTGTGAAAAAGCGGGCGTTTTGAATTTTCCGACTTAAAACTGCTTTTTTTTGCAAATCCCGACTTATTCAGAGAAAAATAATTCAAACTCCATTTTTCAGCTGTAAATGTGCTCCGGATCATTCCGGTGGAGCCGACGTCTAAACTCCTATTATGCGACTATTCTTTGAAATACACGACAATTACAACTATTGCGTCGTCGAATTATGATCAGGTTGCTAATATTCGGTGAGGTTTTTTGATTTTTGAATGCAAAATTTGAGTTTTAAAAATGGAAAAAATGCGATTTTTAAATCAAGATATCGGAAAAAAAAAATTTCCAAGAAAATGGTGGTTTTTATCGGGGTAAAAAAATATTAGAATAGAAAATTTGGATTTTCGAGTTCGAAATGAAAAAAAAAAAGTTTTGTTTTACACTAAAATCCCCATTAAAATTGGAATTTTTTTAAGAGAAACATAATTTTTCAATTTCTAACTGTAAAAAGCACACAAAATTTCTTGAAAATTGGCATTTAGTATTTTTTACACGAAAAATGCATTAAAATTGAATTTTTAAAACAATTTAAACTTAAAAGCTTAAAAATTTATTCTACACCGGTAAATGACGAATATTCAAATAATTAAAACTTCGAAATTGTAAGTTAGAAAAAATCAAATTTCCTCCTTATTCTCAATTTTTTTTTGACAGCAAAATTTCAGTTGAATTTTCCCATAATTTTGAATTAAAAATGTGTTTTATTCCAAAAGAAAACTATTTTACAAAAAACTAGATTTTTTCCCAATTTTCTATGAAAAATTTAATTTAGGCCAATAACTTATTTTCTTTTTCCAGATCACTAATCATATCTTGTGGTAATAATAATTTCCAATTTCCGGATGCCTACTTCAAGTCCTTAACCGCGTTGCATCATCTGCGGATAGTGATGAGTTATGATATTATCAGCTGGGGGTGTACAGAACATCTGCGATTTTTGCGTGGAAATTTAGAGGTCAATTTTCGGAAAAATTGGAAAAAGTGGGGCCTAAATCTCAATTTGAAGTAGATACGTGTTCAAAACTTTCAAAAAATTCAATCAAAAATTCGATTGGAATACTTCAAAAAAATTTGATTTTCTTCGCGAAAGCCGGTAAATTACAAAAAAAATTCGTTGGCGATTTTTTGGTTTCCTCTAGTCAGAAAAACAAACGAAAATTTTAATTTTTAATTATCGTTTTAATTTTTCCAAAAAAAATTTTTAAAAATACATATGTTCATTTAAATTTTAAAAATATCGGAAAATATTCAAAAAATGAACTTTTCTATCGCAAATTTAACAAGAAAAACTGACGAAAAGTTCTTTCAAAAAATTAAAATTCTTCTATATCTTAGAAAGGCTAACAGTTTTCCCATTTTTTGACTCTTTGAGCAAATGTATCACGGTCTCATTACCATAACCATCCAAAAAGAAAGATGTGTCGTCTTCTATTCATCCTCCTCTCGACACCAAATTCTTAAGATGAGCCCCAAGCCACTCGATGTCTCTAATTAGGCAAGTGCCCCGTGCGTCATTTTGCCATTTGTACGGCGACATATGACCTCCGGTGTGCTTGGAGGACTGCGAGAGAGGAGGATTAAGGGGATTTTTATGTTCTACAATTGATTTTTCTTTAGGTCAAAAGTAGGGATTTTAACGCCAAAAATAGAGATTTTTTAGGTCAAAAGTAGGGATTTTAAAGCAAAAAAAAAAATTTTTCGGCCAAAACAGTGGTTTTTAAGGAAAATTTAATTTTTCCGTTTATGACACCTAAAATTGGGGTGAAATTTTTTTGGATAATCTAAAATTGCAATTGTTAATTATTCCAAGATTTTTTTTTGCATTAAACGTTATTGTAAATACATTGAAAATCACTTGATCCGAAAATTTCATTTTTTTCAGAGAAATATGGTGTTTTAATAAAAGATGTGTTAAAAAACCTAGTGCATAGATATATAGATAATTTTGTACTTGAAATTTGCAATTTTTAACTTCCGACCCGAGTAAACAGAATTTAAATCCAATTTTAGGTGAACGGAAAAATCCCAATTTGCGTCTTGGCCTTAAAAAATCCAAATTTTTCGGCCTAAAACTCCTTTTGGCCTAAATCACCCTATTTTTACCCTAAAAAAGTCCCTTGTTTTTCCATCCCCAGGAACACGTAGATGAACACGTGTTAGGCGTGAAGAGGTTAAGACCATTAGCCATGTACAATACTGGAGTATAGAAGGGCTAGAAGTAGCAGCAGCATGGGGTGCTCCAAGAGCACAACCTCAACAGATGTATAAAGTGGTTTTTGAGTAGATTTGTGGTTTGCACTCGGTGGAAAATCTGAAATTTGAATTTTTTAAAGCCTCGTATTTTTGTGCTGAAAAATGTACATATGAAAACCGAAATTTCACCACCCTTTAAGTACGGGAAATCTCCGGGGAAAAGTGGAGCTCAAAAATTGCATAAAAATGGAGATTTTAAAGCTAAAAATAGCTATTTTAACAAGATTTTTTGCAGGGGAGACCACATTTCTCTGTGAAATTGTTCGAAAATGTGGCCGCTGCGAATGATTTGAACTCGATCAGGTTTTTCTTGGAAAATCTAGAAAATTTTGCTGAAATTGGCTCAGAAATGTCCTAAATAGTAGAATTTTTCATTACATTATAACCCTCTCAAAATAATATTAAGTAAAAACAATCAACATTTTTTCACAGATCTACACCGCCTCAACCTCTTTCGAAATGACCGAAGACGTCCTAATGCCGTTGGCTCGTCTCCTCTCGTAAAGATCTCCCCCACGAGATCACGGAATATCGAGCTTCCACAGCGACTTATGATTTGTGCTCGCCGCATTTACAGGTATATTTTTGGGTAATTGATAATTCGCCAAAAAGAACAGCAGCCGAAAACTCAAATTTTTCACGATATTTGCCGAAAAACTAGATTTGTAAAGTAAAAAGAATGCAAGAATTTTTAGCTTAAAAATCTCAATTTTGAACGATTTTTAAAGCAATTTCAGTATGAAAAATCTATTTTTTGGGTAAAAATTTGGTGAAAACGCGTTAAAACCTGCATTTTTAAATTCGCCAAAAATCAAGACTTTGTTTGTAGTGAATTTTACTGTAAAGAATATTGTGTACCTATTTTCTATTTTTATGCGTACTGCGCAATATATTTGAGCGCAAAATACCTCCCTTAGCGAAAACTACTCTTCAATGACTACTGTAGCGCTTGTGTCGATTTACGGGATCGATTTATAGAATATCACAATTAGAAATAAATGTGACTGCGAAAACAAAAATTTACTTCAAATATTGAGTCCGTAAACCGACACTACAGTAGCAATCTAAAGATTTACTGTAGTGTTCGCTACGAGAGGACTATTTTGCGCCTCAAATTAATGTGTTGCGCAGGATGCATTCCCATCTTGTTCTCTACATTACCACCACGTCTCACAGAGAGGGAATTAGTTGTTTATTAGTACGTGGGGGGGGGGGGGCTTTAAAGCTTTCTACTTCTTCTTTCTTTCCGCTTTCTGACGTACAACCATCTGGTATTCCTGGCGGTGGGGCAATTGAAAATGAGAACAAAACATCGATGGAGGGAGAAGAGAGCTTAGAAATTGTGATCTAAGAATCCGCGCGGAAGGAGGACGTCAAATATCACAAGCGACGGAAGTTCAGCCAGAAGCAATAAAGGCCTAATTAATGATGATGAACAACCTCCCTGAAAGAGAATAGCGAAAATGTGAAGTTTTTATCCCATCTCAAGGAGCGATTTTTTAGTGATCATGGAGGAAGTGTGCACATAGTCTACGTGCCAGAGGCCCTATGCCTGCCTTATGCCTACTCACATGCTCACCCAGCCAAACTCTCATCAGAGTTCTACATTGTAGAATTTACAACACTGGAGTTTTATCCTGCCGTAACGTGGAAAATAGGCACCCTACGAATACGTGCCTGATCAACATGGATGCCATATAGTCCAGGCTGTATATTCGTAAAACAGGGGGCTATTTTTTAGGCTCATGGGTTTTTGTCGGAGAAAATCGAACATTGAGAAAACCAGAAATTTTTCAAATTTTCGTATATCCACGAATGCTATCGTTTCACCCGATTATCGAATCTCCACGTCGCTCTGTAATTTTAAGTTTAGTTAGTCCATTCGCCCAAGAAACTCCAAAGTTACAAATGCTTAGTTGTAAGCATTTTCAAGAAACCAAGAATTGCAGTTCCTGGCATGTTTTGGCGCATTCAATAATGCCGCTAATAATAATAATAGCATTATGCCTCCTATTATGATGTCGCGTTGTCATCGTTTGCTTCATGCTGCTCCGACATATAGCAGCTTTATGGGGGTTTTCTCCCTCCGCATCAAACGAAGTTCCTCTCTTCAAAATGATGATGGATATACATATATCTATGTTTATAGAAGGATTGAACCCCACACTTTACATATGAATAGATGGGGACCTTGTTACCTTGACTACATTCGGGAAGAGATTGAAGGTTCCAAAGACGGCTGGCTGTGGCTCACTAGGCTAAATGATGCGTGATATTATTCGCTACGGCACGCCTCTATGATCCAGGTATAGCAGTCTCAACAAGAGTCACAGCCAACAATACTCCGCTCCGACTGTTTTGCGGCCAACTCCCAGAATTTCTATTTGAAATTCTAACTGGGTGTTGCAGATGGGTCGAGGAAATAAGATAGCAATAATAATTGTTACGTGGCAATTGTAATCCGTCAGATATCGTCTCGAGACATGTTGACTCAAGAATGTGAAAATGGACAAATTTGGAAAATAGGTAGCGGAAAATTTTCGCAAGGTTTGAAAATTTCGGTGAGCATGATACGATACGAACTTTCCTCTTGATTTTCGCAGCCCGACAAGCCGTACGCGTACGCAATTTGTCTACCGTATACCTGGACGTTCAGGCTCGTCTATCTCGAGATGGTCCAGGCAAGATTTTTGTGGGGCATATAAAAAAGGTCAGAAAATAAAGTCTAATATTTTTTGGGCCCTAGCTTGTTTCGTTATCACGCGCCCAAACCTGATCTACACTCAAATTATCAGTCGAACGCATTTGCATGGATGTACCACTTGGCTTCCGGGTCGTGAAGAATTTTGAATGGAAAATTCGTCTCACGTCACTCTAGTGAAACTCCGCTTCTATATGCTTAACTCATCAAATTGAATTCATTTTCGGATAAGGCAGTTGAAAACAGTTGTGTGTGTGTGAGTGAGCTCATCCTTCATAAAATGAATAGAGATAGAACACTGACACTCTCTCAAAGTCAAGAGGAATTAATAAATATGAGAGCTCATTAGTTGCTCTTCTCGTGACTACTAATTAGGAGGGTGGTGTACATGAAACAGTGTATGTGAAAAGGGTTCCCCGCCGCCGCCGGCCAATGTCCTTGGGTATATGGCATATCCGACGTGGTGTTTCTCGTTTTGAAGAGAGTATTAGGATGCAACGTATCAAGGAGAGACATAGTTCAAAGATTGGAGGATTTGAGATATATTAGGTGTCGAAATAAATAAGCAGGAAATAAACCTAGAAAACGATCTACTTAAATAGCAGTAGTTATTTGAGTTCTTACTGTAGTCTGTCTTCGCTAAGAGATATCGCGCGAATAAACTGCTCTACGTACGCATCTTCTCATGATTTATCCCGTAATATAAACATGGCAAACATTTTTAAAAATATCCTCAATGCTATATTGAAATTCAAATTAGTACAAAGAAAGCAATTTTTCGATTTTTTTAACGAGAAAACTAAGTTTTCATCGCTCAAAAAAAATATGTAGATTTTGATGAAAATAATATGACAATTTATTTAAACCTATATATTTTTTTCTCATGTCCAAAACCACTTTACGAAAAAAATTTTTTTTTAAATAAAATTATTGGATTTTACGTCAACTTTACTAGAGATAAATTCCGAAAAATTAACAATAAATATAGGAGAAAACAATCCGACATTAACGAAATTGTTCCCGGTTCTGATTATCTCGTACCCAAATCAGCTTCCATCACTGCGAAGAGAGGAATCGGGTGTGTCGCTCAGCAGCTTCTGATCGTCGATTTGTCGAGAACTCGGCTCACCAACATCGAGTAAGGGAATATCCGGATATTTTATAATTTTGATCTTTAAAAAATTTGCTTGTGAAAATGTGAAAATCTAAAGTGAAACCAATATTGGTTTTATTCCAGCTATTTAATACCCCAGTTAGAATACTTTGAGATTTTTCCGGTGAAAAATTGAAAATTCGAAAATTTAGATCTCAATTCAGGCAATAATCCTACGTGGCATCCCGCAATCCGGCAAATTTCGGTGGCTTACAACTCGTCGCAGAGCTCGATTTATCGCTGGCAACTCCATTTCCACACCAACTCGATGCTGAAGCCAATCGAATCGTCGACTTGACGTCACCCTACTTCCAGGCATGTTGTACACGTGAATTTGGCTGGAAACACGCTGAAAAGGGTGCCGGATGCGGTAGCCGAGCTGGCGTTGTGGCGTTAAATGCGTCGAGAAATGAGATTGAAGCCGGAAATCACAATCGTCGGTTTTTTAGTGGGTTTTCAGATTTTGTTTTGGAAATTTGAAATTCTGAACAAATTCAATTTTTACAGACAATTTTGCGTGAATTATTGATCATATTTGTTTTAAAAGAATCGAAAAATTTAAAACAAATCAAATCTCGCTTTTCATTGGAGAATACATGACAAAAGTATTTTGTTTCGAAAAAGAAAAATAGCCAAAATTTAATGCTATTTTTTTGAAAAACTTCGATCTTAATTCTCTTTTTGAAAAACTACTGAATAATTTCATCAAATTTGTTTTATTTTGATAAGATAATCACGTGAAAAAATGAAAACAGCAAAATTGAAAATCAGACAAAAGAATAATCAGATTTATGCAATTTGGCCTGAATTTTCAAAAAAAAAACTGGATTTTGGAAAATTTCATCAAATTCTGTGTATTTTCGTGCAAAAAAAGATAGCTATGAATGTCCAATTTTCGACCTTATTGAGAAAAATTCGTAAAAAATTGTAGAAGAACGTTTCAAAATCTCGATTTTCTTCTGACAATAATTCTCAAAATCTTCATATTTTTCCAGCCAGAACTCGAAATGCTCGACGCCTTACGACAAATTGTACAGTCTGCCCAATTGCTTCAAAAATGCGATACACGCATTGGGCTCACCTCCATTTGGAGCACAATTCGATTGAGAAGGTGACTGGTGGATTGCTGGCGTGCGACTAATTTTCCTACAGACGGTTCGTAGACTTGTTTTTTTTTTTTTTCGTTTTTTGAAAAAAAACACGGTGAAAAATAATAAAAGCGAGCCCAAAACATTTTTGTTTAAAAAATATGAAAAATTGTTCAAATTCATAGGTCCTCCTTCAATATTTTCAACAAAAAAAATATTCTAGAGCTTCCATGGAGGCAGCCGCGGTTTCAGGGCCGACGCCGACCTTTCGCCTCTTTTTTGCATTTTTACGGGAATTTTCAAATTTCAAATTTTCCCCATTTCTATCAAATTATTGAAAATCAAATTAAAAACGCGAATCGGCATTGAGGCGAGAGGCACGCAGAGGTTATTGCCTTAGGGTCAGACAGGCAAGCTTTTTAACGCCTAACGTAATTTTAAAACCTGAAACATAGAACTTCCCCACGTTTGATTCCTCTGAATTTACTGCACCTCTTCATAAACAATGTATTTAGATCAGTGTAAGTTTTAAAGCTGCTCTGCAGTGCCCAAATTAAGGACTTTGCTTTTTTAGACCAAACTTAGTCCTAAATAACCGAATTTCGTAATGAGACTTTCTGAAAATTTCTCGAAAAAAAGTTATGGCGGTTCAAAGTTCAGGAAAATAAGGTAAATTTTCAGCTAAAATCAAAATTTTTAAAATTTTTTATTTATCACTTTTTGATAAATATTGTGGTCTTTGATTAGGCGGGGCACCACTAAAAGTTACATTTGCCCCACTGACCATGAATGTATTTAAATCAGGACGAAAACGCCTAATTAAAGACAAATATTTATTAAGAAGTGATAAATATAAAATTTAAAAATTTTGATCTTAGCAGAAAATGGGCTTTTTTTTCTCAAACTTTGAACCGCCATATCTTTTTTTTTGAGAGATGTTCATTACGAAATTCGGTAGTTTTGGACCAATTTTGTGGAAAAAAGCAAAGTCTCAAACATTCGGTACTCCACCTTTAAAGATTCTATACTGTAATTTTTTTTTATTTTCCAATCAGTGCAACTCCAATACTCTACTTATTCGATTCAATAAACTCGAGGCACAGTGTTTTGAATAGGCGATCGCGTGTCAGGTTTTAACCAAAATAGTCATGATGACCTTTTGTTCACCTTACAGAATCTTCTCAGGTTCATGCACACACAGGTGTCATTTACTCTTTCAAGTGTATATGTGTTATCCCGGAGTATCTAAGATAAACGGTAGTTAGACCACCCTTGTGGTGCGCGTAAGTTGTTCGTATAATTGTAGGGGTGGGGATCTTACCACATTTATACGGCCCCCCTCCTATTGTATTGTATTGCTGCCACCAGTCGTCTTAGAGAATCTCTTTGATTACGGGGTGACAGAATCATACTTTTTGGAATGTGTAATAGGTGGGTCTCGAATGGATATTGAGCACTAACAGCTGTGAAGGGATCCGATGGTCTTTCTAGGGTAACTTTCCACTATGCAGTCAATATTATTAATCTTACAAGGAAAGGGTTTTAGTTTAATACTTTTAAGACATGTGTGATTTGAAAGTGTTCCATAAGTGTATGTCACTCTAAAATTTCAGGCGGCATAAGCTCTAGTCTCAAACCCTCTAGCATCTATCTGAAAACGTTTCAGTGCGTTTTTCACTACTTTGAGGCAAGTAGAATATCTCCAAAATGTTTTTTTTGCAAATCTTCAATGATTTTAGAACGTTTAAAAGAAGGAAAACAATCTGGGAAAATTTTGGAAAATTTTTAATTTTTTGAAAAAAATCTGAAATTTCTTGGACCTGGTGGCGTGAAGAAATTTTCAGATTTTATTCAAAACTTAAAAACTTTCCAAAAATCTCCCAGATTGTTTTCCTACTTATAAATGTTCTGAAAAACATTGAAGTTTTGCATGTTAGTAGGGAGCGATTTGGTAATCGTGTTTAAATTACGTTACACATAGATAATAATCAATTGAAATATACAATTCTTAATTCCATATAACCTGAAATTGAGATTAGATACCTTATACAACAAATAGAATGTCGAAAGTTGTCTTCAGCAGACCCCCATTTGTGAAAAATGCCTTCTAAATTTTATTTTACACTTCTCCTAGTAGATGAACAGCACCTGCCAATCATTTCCTTGACAGCCGGATGGTTGCTCCTCTAAGACAGTATAATCCGGTCTCCCCCGGGGGGATGTAGGGTGTTGTTGCAAATAGCTTTGCGGAGCAGGTGCTTTTTTAATGGATTTAGCTTATTGGTGACGGAAAAACCCTAGAATTGATACAATTTGGTTTTCAAGGGGATTTGGGGAAGGGTTTAGAGGGGAACTGAAACTTAGTAGATCTTCGTCTGTCGTGGAGATCAGAAGATTGGAAGTACTGGGTTTAAGGGGGTCAAGGAGTACTGTAGCGCATTTCGACTACTGTACTTTAGATAGTTTTGTTATTATATCAATCGGATAATATATAATCAAGTTGCACCAAAATTGGAGACATTCTAGTAGGCATTTTCTTTATGCTAGGTATGTATAAGTTTCTACTAAGTGTATAAACCTACTATGTACCTAGGGGGAGTAGAGTTTGTGGGTATTTGTTTGCTTAAGTGCAATAGACTATAAAACGTGTCCAAAACCACCGAATTTCAAACTGAGATAGAACTTCACAAAAAATTTCCAAAATTTTTTTTATGGAAAAAAGAGCAAAATTTAACTAAAATCCGACATTTGGCACAGTTTTCTTTGTTGTAGCACAGCCGCGGGATTTGAATTTCTCGGAAATTACTTTAATCCTACATAATAATTTATCTCGAAATTCGTTGATTGAGACAACTTTTAGGCCGATAGGCATCCCATCTTGATCAGGATGCCTATCGGCCTAAAAGTTTTTTAATTGCAGAAAAACTAAAATCCAGCTGTACTGTGACAAAGGAAAGTGTGCGAAATCCAGATTTTAGCAAAATTTGACTCTTTTTGTTCGAAATTTTGAGTCGCCATAAAAATTTTTGCAAATTTTTTGTGAAGTCTCATTATTAAATTCGGGGGTTTTGTACTAGTTTTCTAGTCTGTTTAAGCTAAAAATACCCACAAACTATTACACTTTACTTTAACACACAATAATTCACTAGCATGGTGTAGTATCATGCCGGAATTAATATAGGATTGATTGAAGAGCGAAATTTTAAATAGATTATTGCAGACTATCTAACACTATTTGTATAAACTAAATTAACATAGTGTATTGAATAATGACTTTATTGAAATTAATACAGTTCTTTTGATATCCCCATCTTCTATGAGTATCCAATACTAATATGTCATATGAATTTCACTTTAATTGTTATTTCCCATGCGTCGTGTTTATACAAATGCTTTATATACTCGAATAGTCTAAAATCCAATTAAACTCGAGCCAATACAGAATATAGAATGTAACAACACTTGTGTTAATATTCTAATATACATGCACACACACACCCACACACCGGTTTTACACCAGTTCTACTAATATTTGCACAATACCATTGAGATAGCTGAAGTTCCATAGATATGCACGGGTTCGTTTCCGGCACTGCCACGGAAAATATTGAAAATGTGCGGTTTACGAAAAACAACAGAAAAAGCGATTTTCCAGAGAAATACGAAAAAAAAGAAAATATTTAGAAAATTAACAACAAACAAAAAAATTTTTTTTTATTAAAGAATAAAATGTAGGAGTTCACTTCTTTTTTTCCCCTTTCGGTTAAACTAGGGCTTCGATGGTAGGCAGGCGCGCATTTCAGGCAGGCCTGCCTGAAACCTGCGCTACGCCGGCCTCAGGTCGCCTTAAGACGGCTCCTAACAAAAATTTGAAAAAAAAATTTCAAAAATTGAATTTCCGCGCTTTTCGAATTTCTAGAACGCTTTTTTTTAATTAAAAAAAAATTTCAGTTGGACCTTTCATCGAATCAACTTCGAGTTTTTCGAGACGAAGTACGAGAATTCAAAAAATGGAAAGAGACTTGCTGTTCCAACCACTCTTTGGAGCTCCTCGAGCCGTCGGGCCTTGAGCTTGAAATTGGGTAATCTAAATTTATACGAATTTTGCAAATTCTAAAAATCCTAATTTTTTCTAGAATCCCTTGATCTGAGTCAATAAGCTAGAACTGCCCTGCCGCAATTGGGAAAGTCTAGCAGCTGAAAAAAGTGGATTTGAGCCATAACTAGAATTGCGAAGGTTTATCAATTTGTGCTCAATAATATTAAGCAATCGCAAGCATACTGTTGATTTGTCGAATATCAGTTGCAAAGTGTGAGTTTTTTGTTGATAAAAATTATTTGAATTTTTTCTTTTTTTTTAATTATTAATTCTGAGTTAAAATTCATCGTAAGTTCCGAAAATTTCTAGAGTTGAAATTTAAATTTTTATCCAGAATTTAGTCGATTATAAAAACGGAAAAAATAGGGATTGTCGATTAAAAAAATTAATTTATTTTAAAAGCACACAGTTTCGATAAAAATTTAATTAAAATAAAAGTTCCTTGCTAAAAAACTATTTCCTCAATTTTTTTTCTGAAATTTCACTCTTTCATTTTTTAATTCTTTTTTGTCTATAAATACGAAAAACACGAATTTTCGATAAAAACGCATTTTTCAAGTTTTTAAAATAATTTTAACTTGGAATTGTTCTTTAAAAAATTGTTTTTTATCAAATTCCAAACACATTAATGCATTTTTTAAAAAATAATTTCTTTAAATCTTCCAAAATCGGTTGTAATTTTAGCGAAAATAACTATTTCTTTCAGTTTTTATTTAAAAAATCCCTCGAAATTTGAATTTATCCAGAATTTAGTCAATGCAAAAAAATATACGAATTTTCGATTAAAAAAATTAATTTATTTAAAAAACACTCTCGAAAAAAAAATTTTCAATAAAGAAACTAGTTCTTATAATTTTTTTTTTCAGATTCACTTTTTCATTGGCCTTTTTAATTCAAATTTGAAGTAATCTGCAATTTACTCTATAAATACGAAAAAAATACAAATTTTCGGCAAATGAAAAAACACTTCAAATTAATAAAAATAAAAAACATATACTAAAATTTTAAAAAATAATTTCTTGCAATTTTCCAAAACCTCGAAGGTTTTAATCGCAAATAACGATTTTTTCAGTTTTTATTCTTTTAAAATTCCCTTGGAATTTGAATTTCTCCAAATTTTTTCTTGAAGTTTTTAAAATTTCCATCATTTTCTATTGGAACTTTCAAAAAATGTTCCTATGGCAAAAATCTTTTCCGCTAATTTCTACGTAAAAATTCTGCCAAAAAACAATGACAGTTCATGTTTTTTTGTTAAATAAATAATTTTCTTGTTTCTATGGAATTCGATCTTTTTTGAGTTTTACCCCAATAAAATGTATATTTAATCTAAAAATATATCCCAAAATTCCAGATCGGCACTACATCTTCTCTGACTGTTCTGAACTTCATTCCCTGGACGTGTCGAATAATGAGATTTCACTGCTGTACAAGCTTTTGCGAGCAACAAAGCTGAGGAAAATTTCGATGAAAATGAATAAAATTAGTGAGTTGAAGCACGAAAAACTGCAATTAATATTTTGAAATTTTTGTGTTTAGAAACGAAAATCGAGATAATGTAGGCTTAAAGTTGCTCAAAATCCGCAGATTTTTTGAAATCGATTCTGAAAAGTGCACAGGGAGCTAAATCAGACTTCAAAATTTTCAAATTAATTGCATATTCACTCGAAACCCTCTGAAAACTGCCTTCAACTTCCTATATTAAATCAAATTTTCTTTCAGATCCCTCGACAAAGGTCTCGCACAGAAGCTTCCGGCCTCCACGTCTCGACGTAACTCATAACGAGATCCTCGTGCTGAAATGGTCGGCATTACCTGAAAACCTGGAGATTCTCAACGCTGATAACAATGATATCAATCCCATGACCGCCGTCCATGTTCCCAAGCACCGCAAACCTGAAGTCCGTTTCGCTTTCCAACAACGGCATCACCATAATGACTGCGGACCAGATTCCGAATTCGCCGAGTCGCTGGACGTGTCGAATAATCGACTTGCAAAGCTCGGAAGACAGCGTTGGCCGCGACAGTTGAGAAGGCTCAACTTGAAGGGCAATCTGCTTACCGTAGTGGCCTCCGAGTCGATAAAAGTCGTAGAGGCTGTGCATCCGTTGAAAGTGGAAGTCTCGGAGAATCCTCTGATCTGTGATTGTCAGATAGGATGGATGATTGGTGCGAAGCCAAGGGTCCTCATTCAGGACTGATCTCTGAAACCGCAAGCTGTTCCCATATATGGCCGGTGAGGCATCAGATACAGATTCAAAGTCTCAGCAAGAAGGATCTACTGTGCCCATACAAAAGTGTATGTGAGCCGAAATGTATCTGCTGTCAATACGGAAATTGCGATTGCAAATCCGTATGTCCCGGAGCCAATTACCGATGCTTCAGAGATCAGTTTATCAACATTGTCAGATGCCAAACATCAATGGTGCCCAAAAGAGAATTCGTGGTCTCCGCGCCCCCGGTCTCTGCGACAGAGATCATTCTGAGCGGAGTCACCCTTCCACAGCTCCGAACTCACAGCCTCATCGGAAGACTTCGTCACCAGAGGCTTCATATCAATGGAACCGGGCTCCGATCCATCCAAAAGGTTCCATACTCTTCCAGCACTGAAGACGCTGGATTGGCAGTGTCGGATAACTCTTTGATCTCGCTAGAGCGAGGGGGAATTTCTAGTGGAGAAGTCTCGCACTTTCAATGGAAATCGATTTCTATCCCGTGGAATCGTCGAGAAGGTTCCGAACTTGAAATATCTGGCACTTCATAACAACTCCCTCCGAAGACATCCCTAAACAGGTGCTTCACTCGACGGCGCTCTCCAAGATCTCCCTGTCATCGAACCCCTTGACATGCGACTGCTCGGGAGGATCCCAACAACACCTTCAACATCGTCGTGACCCATGAAAGCTAATCCATTCTGGTAGCATAATGCGGCCTAATTGAGTGGTTCTCGTTGCATCGGCATTTCGTTGATTTCTCCAAGGTTGAATGCTCGGAGAACGCCGCGTGACGAACTGGGCTTCCTGACGAACGATACGCCAGTGCTGAGCGCCTATCCACCTAATATGGGAAATGACGTCTTTGTGATGCCTATTGAAGGTTGGTTTATTGAAATTTTTAAAAAAACGCGCGTCAAATTAAATATTTTAAAGTCTTTGTTCGAAAAATAACCATTTTACAATATGTAGGATATATCTATAACAGCTTCTGTACAAACGTAATCCAGATGTTAATTTTTTTAAAAATGCGGTAAATATTATATTGATTACATATTATTATTACACCGGTGTATTTTGTTCCACTACTACGACTTTTAAGGGGGGCGCATTTACGCGCGATGGTCCCAGCATTAGTCTCGCCACGCACCCCAAAAATCAATGGGTGGCCCGGACACCATCGCGCGTAAATGCGCCCCGCTTTGATAGTCGTAGCAGTGGAAAAAAATTCACTTGTATAATTATTAGTCAAATGATACTTGCATTATGATATTAGAAATTAAAAAATTGGGTTTGAACATTTTTTTTCCTCAATTTTTTTACGGTATTTCACCATGTATGCGTTATAAATACAAATATGATCCCTACCTTTTTATAACTTTAAAATAACTTTGTAAAAAGGAATATAATACATGCACAAGCACCATAAAATTTCGACGTTTGCATTTTCTGGTCCGAATTTAGTTCAATACGTTTACTTTATATATCACATATACAAAACAATATACTGAGAATGCGTATTGCGCATTATATTGGACGCGCAAAATATCTCGGAGAAAACATACAGTAGTCCTATAAATTCCTACTGTACTGCTTGTGTCGATAGAATATTAAAATTGCAAAAAAAATTTAAAAATCGGCGAAAAAAAACCAAAGTATAAGGGAATATATTCAAGCTATTCCAAAACTTTAAATCAATTTCAAAAATCGAGCCCAAGAGAAGGACTTACTGTAGTTCTCCTACGATTTTGCGCGTCAAACATGTTGTGAAATACGCATTCTGAAGATGTAGTGTACTCGTAATATATATTTTAACAATTCAAACATTTCCAGAATTCCTGCGCGACTACAACTCAACACTTTGTGTTTTCTCATCTGGATTCTTTGGACAAGACCCTCAGAATAGTATACTCTTTGTCATAATAACTAGATTGCTGTTCTCCTCTGCGCCCTCGTTATTCTCGCAATTTTATTCGAAAATCTCACGACGCAATCAATCAACGAAGATAAAAAGCATCATCTCTAAATTGTGCAACATCTGCCGGCTCGTCGCCTCTTCCGGTTCCGCTGTTGAGTTAGCACTCATCTTTGTGAGCTATTCGAAGAAGGACGAGAAAAGGGTGATTCATCAATTGTGTCGACCGCTGGAAGATGACGATTATCAGTTGTGCCCGTTGCATCGGGATGTGCCGACTTGTTGCTCGAATTTACGCGATATCTGATGAACTCATAGCTCAGACGGACTCGTCGCTTGATTCTTGTGTTGACTCAACATTGGAAGTGGAAAACGCTGCAGATTAAAGACTTAACAAATTCAAACTTTCAGTTTAAAATTGCTACGTATTCGTAAAAATGATGTTAAAATTCCGAGAATGCGTGTTACGCAAAATATCTTGTAGCAAAAGCCACTGTAATTATTTTATATGACTACCGTTCAAAATTACTATCCAAATATTTGATTTTTTGGCATGTTTTAAAAAATTATTTACGATGGAATTTACTCAAATATTGAAAACAATATTATCGAAATTCCCGAAAATTTGGTGGAAATTGAAAATTTCAATTTTTTCGCTAATTTTCGAGAAAAAAAAAATTAAAATTTGGATTATCTGAAATAAAGTTCCCAAACATTAAATTAAAAATTTGTTTTTTAAACGTTGGATTTTCCAATCTCGAACCCTCAAAAATTGAGTTTTTTTGAAATTTTTTTTCGGACAAAGTAAAAAATGCTCGCAAATATCGACAAAAAGTGGAAGTATTTTTTTAAGTTGTAAAATTGTTGGAGATTTTTGCAATAAGATATAAAAAATCTGAATTTCCATTCAAATCTTGAACATCAAAATCAGCAAAAAAAATTGCTATATATTCATTCAAATTAAGATCTAAAAAGAGTAATTCGCTATTTCAAATTTTCAAAAAAAAAATAAATTTTAAGTTTTAATTTTTGAACACTATCAAAAAATTTGTTTTTAAACCTAAAACTGATAATTCCGAATTCTCTGTAAAATCTCAAAACAAACATTCCTAGCCAAATTTAATCGAATATGATTTAATAATACTAATTTTAAATCATATTCAATTACATTTCTAGGAATTATTTTTGCTAGTTAAAAGTGTATGAAAAATTAACACTTTTTGAAAGAAAAACTGTTCTTATAGGATTTATAACACCGGAAATTCACTAATAACACTCCACATTTTTCCAGACCTCCCACCAACTCTTCCGCCAAAAACCGTGCAAAACGAGGTGATCGCCGTGCTCGGCGACGGTGTGGACGCGAATCTGCTGGACGACGAGCTCGGACAGAATCTACGGAAGCACACGAGAATCTAGATGCGGAGCCATTTACGGTTTATGCACACTTTAGCACGCATCACTTCCATCACGACTTCGATTGCGCACATATCTCGAATAGTGGCGATGATTCGTCTCAACTATGTTCGGATTGGAATTGTGCCCGAGTGTTGTTTAGCTTACAGTTTTCCCGTTTAGGTCACAGAGTATTTTTTATCCTCTTCCAAATGTACGAGCTTCCATTATTCACTTTCTTTTTCACCCCCAATTCTGCTGTGCACAATTTGCCATTTTTTGAATTTTTACAACAATACCGGTACTATTTTTCGATTTTCTTTCTTTTTCTCGCATGAATCTTGCCATCACTTCTCTAATAATTGACCAGCGATTATATTTTTGATTTAACATAATAATTGAATATTCTCGTTTTTCAGTTCAAATTATTGCTTTCTGTGTCACCACAAATTCAAATTCTCGTCCTAACCTCGTGTGATCTTCAGTAATATATATAGATTAATAATCGTCGTTTCTTATTGTTGTCATTTGCGGATGCTTATGAAGCTTGTAATTTTTTGTTTTGTTTTTTTGCCTGTTTCAGCTGCAAACTAAAATTCGGTAGAAATTCTTGAAAACACGCAAAAAATGAATAAAAGAAATAGTATATTAGCTTTCGAGAGGAGTTCACAAGCGGGTGGCACATCTCCGCGGCCGCCCAGTGGTGTACTCGTCTCGGGTGAAAGAATTACTTTATAATCTGTTTTTCGGCCTATTTTTAGTTTTTCGCAACTAAATGAGTAAATTATCTCTTAAATAATGTCGAAATTAATTTAATTTACACTTCCAATAAAATTCCTCTCATTAAATTACCCCTTTCTAATGACTTTGCTCTCAAAAATTTTTCATCGATTTTCAATTCTCAAAATTCTTGAATCTTCAGCGAAGCTGGAATTCAGCAATCAGAAGAGGGAAATATCTGTCAAGAACAAGGTGGCGGGTGACAGTAAAAAAAGCGCAACGCATGAAGGCAGACGCTAAAAATACAAAAGACGGTGAGGATGTTCAGATCGCAAGGCGTTAGGAGGGGGCTTGGTGAGAGTCAGAGGACGTATCGTCGCTCTTCAGGGGAAAAAAAAAAGGAAACGGCGAAATTCTTGATTTTGATTTGTTTTTTCAGAAAAAATTGGCCTCCGGAGGGTGCAACACCTGCCAAAAAGTGAACGGAAGATTAACCGCAAGACAGAGCTTCCGTTCGAGAGAAGTAGGATTTTGTCGATCACTCCAAACAAAAATTGTTTTTTTCAATTTCAGCAAAACTGGACGCTCCGACTGGAAAACGCGGCTGACGTGCACCACTGCCCAATACATCACAAAAAAGAAGGCAAAGAAGATGTACAAGAAGAGGACACACGACGCACGCGACAAATATCGAAAAATGGCGGCACTGGCCGGAGACGGTGAAGATGACGAGGAGAGTGAGGCCGAGGTGATGGAGCAGGATTTTGGATTTTTCCGCGGCATTTTTAAATTGTTTTTTTTCCTTTGTTGATTTTGTTACTGTTTTTCAGTTTCGACATAAAATAATCGAAAATTTATTTATCACAAAAACTTTTGCAATTTGCTTAGCTGAGTGAGCCAACTGTTTGCCACGTGTCACGATTCGATGCATCCATCCTTTGGGCGCCTCGAGCTCCGCTTTCGGAGCCTGTTGTAAGCTCCTTTAGAATTATTGTCCAGACCTTAGAAATGTTCATCGAGTACCGGAAACTTCGACGAACTTGCACTTGTGTACTTTCAAGCAGGCTCCTGCCGGATTAAAATCAATTTAAAAATCGATCATTTGAATTTCCACGTGGCGCGACGCGGCACGCGTTGCATTGTTTTTTCAAATTTGGTTGAAAAACATGGTGCATCGAAGAATTTTCTTTGACGATTTTATACGCAGAATCACATTTGACGAACAAAAATTCAAAATACTTTACTTTGCAAACGCGCTCCATTGATAAACTTATGAAAAATCGATAATGCTCAGATTTCACCAACGAGAATTTTCCTCCATTTGAAATTATAGTTAAACAAAATTAATATAACCAAACATTACGCAGTTCCGGTAAAAATTTCGATAGCTTTAATGCAAGTGCGCTCAATTCTGAACAAAACCCACCCATCCTTTCGACACCACCGTATTCCGACAATTTCAAATCGATTTTATTCGCAGGCCAATCAGTATAATATTGGCTCCGCGAGCAATTTTTCGATACAAAAGCCGACTGAGCAGGTCTGTGGCACACACGAATAATTCTCGACTTGTCAACGTTGACACTATTGCGTACATTGTCAGTGATGACGCGAATGGAGAATGCTGAAAAAAAACAAGAGTTTAAAGGGTGAGCTCTCGCACCACGATCCATGTTTTTTTGTGGGAATAGTGGAAATTTGGAGTTAGTGAAAAAATCAAATTTGTGCAATTTTTAATAAATTCGGCAAATGCGCTAGAACATCAGATTTCACGAGCAAATTTCATTTTGTGAGATTAAGATATGGGCATTTGAACTGATTTTTTAATGGTATACACACGAAAAAAAATACATAAAGTCGATTGCGAAAAATTTTAGGTTTCACCCTCGGCATTGAAAGCGCAGTAGTAGGAGTGGCGATAGGGCGCCCTGCTAAATTTTCTATTTTTATGGTGTTTCCTTTCGTTTTGTGCTAATGAAGAGTTAAGAATCTGACGCGACAAACGTAATCGTGTCAACGCTAAGACAAACGAATAATTGTATTTCTCAACGGTAAAAAGATTCACTCCTGCGCCAAGGTGCCAGCAAGTGCGCCCCAGCCCAATTCGACACTATGGGAATAAACTGTGGGTTTAAAAACTTAGAGAAGTCGTTTTTGTTCAAGATATCAGCCTAAGATATTAAACACAAGCGCGTGGTCGTCAAGGTGTCCCGTTAATTCGCTTTGATGTACCAAAAATGCGGGATTTTAGACGCAGACTTCTCAGCATTCGTATTGTTAAGAGTGTGGCTGACGTCCCAATCATTGCATTTTTCTGCAACAAATTCCCGCAATTTTTGTCGATCAAGCAACACCAAAATGGAACTGTTTGACAGCACGTGCACAAGCAGATCACAAGTGGGATTCTCTTCGAGTTATCCTCCCCAAATCCTGTCCAGTACAGCGACCTCCAACGTGGCTTGCAACATTTCCAACTCGATTTGCTCGTTATTCAACAGGAGATTCATTCGATGAAGTGTCATCTCCCTCATTTGACTCATTATTGTATTGGGTGACGAGCCGGGTGGAAAATTGGTTAATTGTTGACATGCTTTCTTCCCGCTACCTTGATCCATAGACACGTAGAACCACATGTTGCATTGGAACATTCGACGTTTCTTGGCGAATAGCAAGACTGGACACGTGCTCGGCGATCTCATTCTTAAAAGTTTTAAATTGTAACAAAAATTTGGTTCAAAATTTCAAAGGAAAATCAATAATAAAGCTACTCCAAAGTTTTCAGCCTGATGGGTTGGAGAGATGAGCAAGTCCTACAGCGCTTCAAGAATTCTAGGCCACGGTCAGAGTGGTGGCCGTGATCCTCGTACTTATTTCTTTTAGATTTTTTAAATGGGAAACTCGAATTTATGTGAAACACCTAGAACATTCCAAGAAAAATTCAAAAAAACTCTCTAAGGAGGACATCGATAACCCTCCCCCAATTCGAGATGTGACGTCATCAAGGGGAGCCCGTGACCTCGCTTCAAATTTCAATTTTTCAACGAAAAGTGTGAGATTAGATGTAAAATTACTAGGAAATTAGAAGAAAGAGTAGAAAAGAAATTTCGGGGGTGTCGCTCACCACCCCCACCCCCCATTTTTCTAGTGTGACATAGAAAGTGGATCGGCCCCGCTACCTTCCATTGGGTTCAAGTTAGTTTTTTTAATTTTCCGATGATTGTATTACTGTAGTCACTGTAATTATGCGAAACAACTGGTTGTCCAGTGGAGCACGTGTGCTTAATTGTCCGTCACAATTCCATTCTTAATTCCAAAACTTCGAAGACTTCCCTCCGGTTGCCGTTTATCGACGTGTCTTCGATGTTGTTTTGGTGCATATGTAGATTGGTATTCCTGGAATATTAAGGGGAAAATGGAGAAAAAATTCTGAATTGTACAGGTAATCGAGAAAAAAAGTTAAGACTCCATTTTTTTCAACTAAATTTTTTTTTCAAAATTTCAAAAAAAAAATTTTATTTGGAAGAACTTTTTTATAATGTTCAGGATTTTCTAAAATTACCTTTATCTCTCAAAACTTGCTCAACTGAGTTTTAGATTTCTGAAATTTTCCGCGTGAAGTACGAACACTCCCAATATATCGAAGGACAGGCGCATTTGCGAACTAATCTTATTTAAAAATTTCACAAATTTATTTTTTTTATTAACCTAATATTTCCGTTTATCGTATTTTCTAAATTAAATAAAAAAATTGTCCAGGAGGAGTACATGGCCAATTTATCCGAAGAGCTCATATGCACACTTCCTGTTCAAAAACAAAAAAAAAACTTATTCACCTTGGCGGTGGGTACCTCTTTTTTACACGACGAGGCGAGTTTTCCGAGCTGAAAAATGATCCTTTTGGCTGGGCAGTTTTAGAATTGTGGGGAAGTTATAGGCATTTCCGGTGAAAAAAATTGTTTTTTATTGGAATAGTTTTTAATATTCTAGGCCATGTCCTAAAGACTTGAGTCAAGATCTGAATTAAATTTTTGAGGTACGAGCTTCCAGTTCCCTCCACAATTCCCCCTATGGCCTAGAATTTCAGAAAGCTCTACCATCGATTCAAACTGTTACCCGTTACTTTTGCACAGGTTACGGGTTCCGGACGCCCAGCCAAACTTCCGCCCGTGGCCTTAAGAACTCCCAACTTGTTCCACCGACCTGGACGTGTTGCTCGTACTGGCAACTCATCAACATCTGGCAGTAATTCAACCGTTGGGGACACGGTACGCGGGGTCGACGGTAGACTTCGGCGACTGATCGGCGATGTAGGAGGACTTCAAAAATCAATCAATAAATCAACGACACTCTGCTCGTTTTGCAAGGATCCGCCCATCCGCTTGTTGTTTACCAATTTCTTTTACAACAATTCTAATGCGCAAAATTAATAGAACTACCTTACTTATAATTTTTTTTTAACTCAAAATTTTCAAAAAAACGACACTCCGCTTGTAGAATCCGCCCACTTTCCAAAAAACAATTCGGAGTGTCGTTTGAAAAATATCCTATAATTTGAAAAACTCATTAGTCTCAAATTTTAATGAAAATTACGTGAAAATCTATAAAAACTACGCTTTTGGCTCCGCCCAAAAACGTCTTTTGGCACCGCCCGAAAACGGGACGGAGCCTAGCACTAATATTACAAGATGGTTTTTATTTCCATAAGTGATTAAAAAATCAACAAAATATTTAGAAAGTATCTCAATTATTGAATTAAATTTTATAAAATCTACGACACTCCGCTTGGAACCCCCTCCCCTGGGCTGCCAAGAATGGGGCGGAGCCTAGAACAAACGTTTTTACAAGAAAAATGTTTCTTGAAATTTTAAAGACGATTAATAAAAATCCGAGTTTTTAGAAAAAATTGGGCCAAATCGAATAATAAAAAACGTTACTCCGCTAATAAAACCAGCTCATTAACAAGATAGGGGCGGAGAGTATCCAAACGGAGCGTAGTTTGAAAAAATATTTTTTGGAAAACTAAAATGTTCCAGCGGGAAAGATTCTGCTAAAGGCAATCTAATCCAGGTTTTTTCCGGAAATTCAATTTCCTCAGGGTTCTCTCTGCAAATTTGTTCACGAAAAAACTCGTGTGTGCTGGAAATGCGCTCTATTGCTAATTTCATCCAGAGAGCGCTATTACATCAAAAATGGAGGGTTGTTGCATACCTTCTCGTTGCAGCGGGACTGGTGACGGAGGTGATAGCCGTGATGAAAATTGTTGGGGTATCGACAGCGCAGAAGGGAAACACGACGATTCGACATTTTTCTAAAAATCCATGATAAAACTTGTAAAGATAAAATAATGTAAAAGGGGAGGTGGCTAAGCGGGGACACAAATACGCGGGAAGTCCGCTTATTTTTGCTGGATTTGACGTAAAAACGAATCAAAAAACTGGCACTCGTCGCGTTTTGCAACAAGAAAAAACTAAAATTTCATATATTGGTGGCAAACACAGTTCGAAAACTGTTGAAGCTTACGTAAAGTGTGTATATTCCATATTAGAGAATAAGATTGGAAATGGAAAAATAAAATCTTGTAATTTCTACCACCGCATAACTTCTAAGTCACCTATGAAATATCTAAGCTACCGTGAAAATTCTAGGCTATCATAAAAATAAAATTTATATATGTTTGTCCTGAAACGAAGTCCACTTCCGCCAGAAATAATAAACAAAATAGACAACACAAAAAATTGAGAACTCTTAAGAACAAAAGAAATCCGACCCGAAATCGAATACCCAACGAAAATTTTCGGAATTTAGAAAGAAGAACTATGAGTTTTGGACACTTTTCACTTTCCCTTCAAAAGGAGGAACTTTGTGGCGCGGCCTAAAAAATATAAAACTCGGCCACCGATTTGTATGCGGCCACGGGACACTCCGCAGTTGCAAAGGGTAACTACAGCTGCAAATACTGTAAAACTAGGTCACCAAGTGGAAACCTTGGTCATCACGTGGAAAAAAACCTATTTGACAAAAAATTTTTGAAAATTTTATAAATCTTAATTCTAGGCCACCACCTGTCCAGGTCACCATGTGGAAGGCTAGATCAGCTAAGTGGATCGTAGACCAGCACATAGGCCTCTAGGCCACCACGCAGGAAATTAGGTCACTGGAAAGCTAGCGAGCCTCCACATGGTCAATAATAAGTCATTGTTAGTTGGAATTTCGTTTTGACCAGAGAAACTTGTTTTTACCAAAATATTTGAAAATTCAAGGCCGTCCGGTGAAATCTGTTTAACCCTAGGCCACCTAATTTCGAGAAAGTCAGGACATCTAAACTGGCACGTCACAACTAGAAAGCTAGGCCATCAAGCAAAAACCTAGAGCCCACTCTGCCAAAATAGATTCCTTAAAAGTTTGAGGGAAAAAATGTTTTTCAACAAAAATTTAATCGGCCGAGTGGACTTTAATAAATTCTACTTTTTCAGCCACATTGTGTGGCAGAGGGATATCGGAGCATCGTTTGAATTTTCTAATTTCTGAAAGAAAACCGGAACACATTGCAAGAATACGAAAAATATAACTGAAGCCGACATATGAAATGAGTTCTATGCTCCCCGCCGCGTATTCTTCTCATTTTTCTGCATATTTTTAGCTTGGCGGTGGGGTGCGAATGCTGGTATCATACTTCGTCCCCTCTTCATTCATTGCCCGTCTATGTATTAAAATTAGCGTGTATTCCTATTGGATTCTGACGGTCTCCCCGTCGTTTTTTTTTCTATGCGAAATAGAAAATACGTGGTGAACGGGAATTTTCATGAAAAAGAACGAAGAATTTGATTTCTAGGCCAACCAAAAAACATAGGCCAGAAAACGGATCTCTAGTAAAAACAACCACAATAAAGTTGAAACTAGGCCACCTACGAAAAATGGGAGATACCGCTTGTGTGTACAAGCATTTTTATAAAATTCTAGATTGTTTTAAAAACTTAATGTTTCCAGTACAAATCGATTTCCGTGAAAAACAATAAATATGTCAAACTCGTGACGTTTCGACCGTCAATAGAGCGCGTTTGCTTGTCAAACCAAACATATTCGGTGTAGATTTACGGGGTTTTCAGACAAAACAAAAAACCTTCACAAGGATCCGCGCCAAATAAGAGCTAGTAAATGGAACTAATTCCCGTTTTTTTTTTGTTGGTGAGTGTCTTGTGAGGAGGGGACCGCCCGTGTCTCTACCTAAAACATTGTTAAATTAGTGTGACGTCACCACAATTTGATAAACGACAAATATAGTTCGAGTTTTGAAGAAAAATTTTGGAATTTTTCTGGTAATAATTTGAAAAATTTCAATTTTTTATGTTTTTATCTTAAAAAATTTTTTGATATATTTTTAAATTCAATGTTTGATCGTCCTGATAACCAAATTTTCACACAAAAAATCTGGTTTTTGACGTCTAAATCTGCTTTTTTTCACCCAATTACGAGGTTCTCCGTGGGAAGGTGTGTCACTTGAGCTTTTGCTTTTTTATTTTTTTTCTGATTGAAAATGATTAAGCTAGATATACTTTCTCGTCTTTTATTAATCAGAATTGTATTGTTATTGAAGATTTTAGATTTTTACACTCCCGTGCAGCAAATGCGCTCCGATGTATGGAAATTTACAACTGGAGATTTTCAAAATGTTCATTTATAGGCTCTTTTAAAGGTTCAAGAGTCTAGTAAACTAGGAAAAGGTGAAGCTGTGACGTTATCGATGACGTCATCACAATTGTCGCTTGAAAAACTTGGAAAAACGATGTGGAAAGAGGGTGATTATTTGTGCTTCAAATAAACTTTTTGCTCTAATTAATTCATATAGTTGTGTGCTTCTTTAGATTTTAAGAGAAATTGCGAATTTTGCACCCAAAAAGCGTACTAGGCCGAGTAAGTTATGGGAAAACTCTTCCACATACCGGACACAAGACGTGGAAAACTAAAAGTTTCTGTAGTTTTTTATACCCCCGCATGGCACATCCCCGCCCCAACACTGTAAATTTTCAGGTGTTCAGGGTGAAAACATTCTTTCAGCTGCTGGGCGGCTTCTCGTGCAGCTGGAAATGTATTTCCAGACGGGTTGGAACCGGGATTTGTCATTCAACTGTTGCAATTACGCTCTACCGAGCTAAACCTCGTTAGGACTCCAGTGGACAACACGGGCCTTATTGTAAATTTCGCTTCAATGTCCACAATTTCAGAACAAACCGTCGCTTTTATTCCATAATATTATAATTTTATTTAAAGAAATCTGGAAACATTTATCGCTTTTTGTGAAAATCTATGTGAGATTATTGCCAGAAATACAAGAAAATCGATGCAAACTTGCTCTATTGCTAAATAGTTCGTGTACTATACGTCGACGACACGATTTCAAGTTTCGTTTTTTGAACAAATAAGCGTCTGTTATTATTCCAAAATTCGGTACATTCACTCAAAAAAAAACAATCATTGATAAATGTAGAAACATACATGCAACCACGGCCTCTCCGATGCAAATTTTTGATTCTCCAACTTTTGTTGTTAAGTTATCTTGAAAAAAAAAATGATACAACGAGAAGTCCTTGGTGGTATCGGGCGCCTAGAAACAGATGAAATGGAAAAACAAGTATTACGGGCGGCTCCGTCTAGGCGTATTATGGGGGGTGGGCCGCAGATGTTCCTTTAGAATAAGAAAAATGTCTAGTATTTTGTGATACTTGTGAAACATAACCCTAAACTTCACAAAAAATAAAGGGCTCAAAAATGGTATTTTACTAATGTAAGCCTACAAGCACAAAGGAAATCAATTTTTTCAATAGCTAAAAAATTAATTTTTGTGATATATAATACTTACACAAGTACCAATTTAGTTTTAAACGATAAAATATACCATAACTTTTGGGTAGGATCTGCACAGCCTCGAAAAAAACGGGATTTTCAACAAACGGAATAGTCGGACTTTTTAAAAACAACGAAAAAGTTTTGCTTGGGACCAAGTCTCATCGATTACAAAAACTGATTCTTCCAGTCAAAGATTTTATATACTCACGACTTAACAATTCTTTCGTGTTGCCTACCTAGCAAGTTCCGAATTCAGAAAAGTTGAATTTCCCTCCAACAATTTTTTACTATCATAGTCAGCCAATTTGCAATATTTCCCGCGACAAAATTTACGGATTCCCCACAATGGGTCTCCAACCAATAAAATGAATTATTCATTTATCTTCTTAGGTCACACGAGATGCCAGCGACCAAGACAGGGCAAGTGCGACCACTATCCCGAAAAAGACACCTACAGAACCTAACGAAGGCTTCCAAAATTAGCATAGAAAGAGACATTAGCAGAATATCCCACTTGATGTTCTGTCACTTTCAGCATCATTCTGCCTTTTTGTTCCCTTGTGTATGGTGACTATAATTTGATTGTGCTGAATATGATGTCTACTTGTGTTGTGGACAACTATTGATTTTTTCTGCTTTGGTTAATTTGAGGTATTACTTTTACAAATTTGTATATCATCATTTTACAAATTTCAACAGTGTTTCCTATTAATCCGCTAAACCGCAACTGAAGAATAATAAAAACTTTTCTCAAAACTGTATGGGAAAGCTCAGTGTCGGTTATGATAGTATTACAACATCGTTAATGCAAATTAGGTTTCGCAAAATTATATTCAAAAGATTTTTTAAATCGTTTATTACGGTACCAAGTAAAGTTGAGAATGCGTATTACGAGAACATATTTGACGGGCAATATCTCAGAGCAAAAACTACAGTAACTCTTAGAATGAATTCTGTAGCGTTTGTATCGATTTACGGGCTCGATTTTCGAAATAATTTATATTTGTAAAGTGAAAGCTATATTCAATTTTTCTTCGATTATTTGTTGTTTTGTTTTTGATTGTGTTTTTCTTTTATTTTAATAGTATTTGTCACTTTTCAAATAGAAATTGATAAAATGGAGCCCGTAAATGGACACATATCCAGTAGAGTCATTCAAAGAGTTACTGTAGTTTTCGCGTCATCTGAGATATTTTGCCCGTCAGATATGTTGTGCAATACAATGCGCATTCTCAACATTCCTGTTACCGTGAAAAACGAAATTTTTTGTTAAAACTATTTTTGTAAGTCGAACAAAATTCACAACTCGATAAAACTGTCCTAGTCATCAGATTAATATAATTGAAATAAATAATATGAATTAAATTAAATTTTAAATATTAAAAATGTTATTGTTGTTTTAACAAAACGTTATTGGACTTTTCAGCAAAAAAATGAAAATAAAAATCGATTATTTTTTGAATTGTTGATTTTTCGGTTTTTAAATGTTGTTGAAAAGAAACGAATTGTATATACGTCAATTAAAAAGGCCGTTTAAATTGTTTTTTAAAATGTTTTATTTTTTTCAGATAGATCAACAGGAGTGAACTTCATATACTTCAAAAAGCCAGTATGGGATGTATCTATCCAACCACTCTATCAGCCACTACTCTTAGCACTAATCACAATGTACGACCCCGTGAGAGATTGTTGTCTGTTTTTTACTAGATATCTACACGAGTGGTAGAATATAAAGAAGAGTGGTGACAAGTTTGGGATCTGAGTCCCGTAGAAAAAATCATCCCACCGAAACTCTAAACTATGAGGGACTGGTCAACTATGCATTTGACGACGTCTACCTGTTTTAAGTTATTGATGTGGTGAAGAGTGATTTGCCTTTTGAAGAAGTCGCTCGACCTCGACCTTCTTCGACCTGATTGAACTGAAAGATCCTCGGGAATCATTTTTAGAATTTAGAAGACTGTACCGACTGTGGATCTTTTTGTTTGCTCGAGACGATAGAATACAGCCCCATCCGAACAGGGGTGCGCGGCAATTGCCGTGTGGCAATAGAATATTTCGGCAATTTCGGCAATTGCGGCAACTTAGGCAATTGCCAAAATCGGAAAATTCAGAGAACCGGCAATTGCCGAAATTGCCGACTGCCGGAAATCCGAATTGGAAATATAAACTTGCTTTTTTTTTGTAGTTTTAAGAGATTGAACATGCATTTTACTAAACAATTTTCTCTTTTTAAAAATGGTATTTAATTCCTTTGAAGATTGACCGTTTTCTTTTAGAAAACTCTGACTGACAGAATATCACAAAACAATGTGACATTTTTCAATTTTCGATATACATTTTTGAAAATTGCCAACTGCCCTGCAATCGGTCGGCGATTTCGGCACTTGCCGAAATTGCCGATTGCCGGAAATTTTGAAAACCCGCAATTGCCGAAATTGCCGTGCACCCCTGATACCGAATGTATCTTAAAAAATTAATTTTTTTGTTAATTTTTTGAAAATTTTCATAAAAGTAAAGAAAGGGCCAAATTATGTTTCTTGAACTACTCGTAGTCTGTGACTTCATTTTCGGCCTTTTTCCGTTTTTCAGCAATAATGATTGGTTTTCTTTGCTCTCTAATTTTAAACATATTTCTTCACAAATGTCTCAAAATAACTTCAGTTCAAAGTAATAAAAATAAAATAAAGAGAAAAACATAAAGAAAAACCAGTGAGTTTTTTCAAAAATAATTCAAAAATAATTCGGTCCTTATTTTTTTTTTTTTGCAAAAAAAAACAAAACAAACTGCCCTATAAAAATTTTCCAAAAAAAAATTGGAAGGTTATTTTAATTTCAGCGGTCTATTTTTGGAAGTTGTCGAACTAATCGATCAAAACATTTTTTCATTTGTTTAAGTGTTATTATGCTTGAGATATTCAAATTCCAACATACCAGGCGTGATTCAAAATCATCGCTTTTTGGACATAAAACCGTAAAACCCAAAATTTATGAAAAGTTTTATTATGATAGAGTCATTCAATAATATTCCTAGTACTTTCACTAAATAATCAAACAATTTTTGTTGAATGGCTAGTTTCAAAATCGGCGGCTTACATAAAACATGCACAACAATAAGAAAAATAGGTATGACTTCGATCTTCAAAAATATTAAAAACAATATTTTTAATTTTACAGTGTTAGCAGTTCGACGAATCAATGCAGCTGAAGTACACTTATACAATCAAATCACGCTTTTTATATTAATTTTTAAATCAATTGAACCCATAAAAATTACAATTCCTCAAACCACGTTGATCCTAAACGACTGCATTAAGAAAAGGGAAAACATAGGGCTTCCCAAAATGACTGCCTCCCGCCTTGTGGCGACATGCTCCTGCCTCGTCCAGGCCGCCTCTCCAGTCAGTGCAGTGCAGAAATTTTTCAAAATCAAAAACATGGAAAATTAGAGAAGGATTTTAGGCCTCGGAAATCAATTTTAAGTCCTCTAGCTACAAAATGAACCGTTTTAGAGGAGTTTCAAAATTGTGAATTTTTAACAATTACCCAATTTTGCCACTTTTGAATAGGTTTTTGATGGTTAAACCTAGATCTTCTGGATAATTCCGCATATATGAATTACCGTATTTCCTAGATTAGTTTTGCATACAAGACTAATTTTCAATTGGTCTGTAGGGGTACAAGACTAATAGAGACTGCACATTTAGACTATTAGAGGCTAACTGCAAGACTAATTTTTGAATGCTATAGAGCAACGTGACCAATTTTTGATTGTAAACTCACCTTGATATCGTTTAAACAAAAATACATCCTATTGCAATATTTAATCAATTATTTGAACGCTTTTAATCAAAAACTCGAGTTCAATTTGCCCAAAATGGGTCCAATTTATTAACGTTGCAGCGATCTATGCAAGATATTGCTGGACTGGAAAAAATGGTCGGGTGCAAGACTTTTAGAGACTGCAATACTAATAGAGGCTGCAAGACTAATTTTCGATTTGCCCGTAGGGGTACAAGGGCCCATAATAGGGATGGAATACTATTAGAGGAAATACGTTACCTGTTTTTGACATAATTAGACAACATTTTATTTTTGATAAATTTTTTAGGGCTCCATCATTACTTCCTTTTTTTTTGGACAATAAAAATAAATTTTCTGCTTAAAAGCGTTTGAAACCACTATATTTTGCAAAAGGACAATTTTTTAGGATTGGAGATCAATTTTATGTCCTCTAGCTACAAAATTAACAATTTAGCGGAGGAGTTTCAAAATTGTGAGTTTTTACAAAAAATTGCCCAATTTCGCCACGTTTTTTATTTTGGTGGGTTATAGATTTTTTAAATTCAGCATATATGAATTACCCGTTTTCAACCTTAAAGTTAGACCATTCCTTGATTTTTGCCCAATCTTTTTTTCAGCCATCTTATGGCTGTTCTTTTTTTGGGCAAAAAAAGTACAATAAATTTTTCAGCAAACGTACAAAACCATTAGAAATTGAAAAAAAGCAATTTTTTAGGGTTCCCCGATATCAATTTTGGGTCCTCTAACTTCAAAAATGATATTTTCCAATAGAAGAGTTTCAAAATTGTTTTTGTGCCATAAATTGCACCCCATTGTTGCCACTTTTAATGGCCACTTTTTGGTGAGGCATTCCTAGATTTCCTGAATTCTGCATATATGAATTACCGTGTGTATTTCGACAAATTAAGACAACTTTTTAATTTAAAAAATTAAAAAGGATTAAAGGACGATCCGTTCTTCAATGCTATGCACTGCGGATCTGGGATTCAGGTACACTGCCTGGTGGTGATCCCTCTGGGCTGTAATTTAAGCCACGTTCTCCTATCCGCGGACTGTGGCCGATAATCTAGTCGTGGATTGGTCCACTTCCCAATAGAGGCCGTTAGGGTGAACCTAGGGAGTGAGGCCGGACTTTTATCTCGTGGCCCCCAGAATGCTTGCGGCCACCACTACCCTGAACTGCTATCTGCCGCCCTTGGGGAAATAATTTTTTTTTTTTTTGGGCAAATAAATAATTTTTTTATTGGAAATGGTACAATTTAAACCAACTACTATATATTAAAAAATATTATCCAATTATTCCAAAAATTCCAAATAATCCAAATATTCCAAATTCCAAATATTCCAACTGAATATTCCAAATTTATTCCAAATAATTTTATGAAAAAGGCCCTTTTGTTAGGGCTGGGAAGTTTGAATTTGGTTACAACTATTGCCCAATTTTGCCGCTTTTTAAACTGTGGTTTTTGATAGGTTAAACCTAGATTTTCTCCTGGGAATTCTGCATGTATAACTTACTTGTTTTCAACTATCTAAACTAGTTCAGACTACATTATTTTTGTTTTTTCAAATTTTTTCAGCCAAATTAAGGACTTTTTTGGGCAACTCTTTTTTTTTTTGACGGGGATCAAAAAAAAATTAAATTAAATTGCCCAAGCTTTTTAACAATAGTTTTTGGTCCCGGAAACCTAGCCTAGTGTGGCCCGGAAAATCGAAAAATCGAAAACGATAATTTTTTGAAAATTTTTAAAATGAAAAAAAACAGACTCAATTTTCTTCCAAAATAAAAAAGTGGGAAACATTTTGAATATCTTTCGAATAAAAAACATAACTTTTCAAAAAATTTTGATTTTCCCACAAAAAAGTGAAATAAGAAGCAGGTTACTGTAGCTGGGATAAAGCTTCAAAGGGTGCGTACCAGGACCTGAATTAAACCGCCGCCCGAGTAAATTTCATCGACATATTTAATGTACCATCAATCACCTGATCCTCCTCTTCCTCCTTCTTTCAACCATTACACCACACAGAGTTCCTTTTATGAAGGTCTCAATTCCCCTTCATAACATTCTTTGTAATTAATGCACCAACAAGCTATGCGAACAGCACTTAGACACCCCCCTCCTACACGCTCTTTGGAGCTCCCCCGTTCAACTCTAATGGACCTGGTAATCCCTTGCGCCGTGGGATTTTTCGGGTCTGGCCGTGTTTTTTATCCGATTTACTTCCCGGAATACCGGAAATGGCGATCGATATTGCAGACAAAGCAAACTTTTTATTTTCAAAAATCCGCCCACTTTTTTTAAAAGTGATTCAATCATTTTTTCTAAAGTTTTTTTTTTTGAAAGCCCGCGCTGGCTTCCCAAATATTTTGGAATGTAAGAGATTGCCGAGTTAGCATTTGGACTCGGCCACGGCCGGGGGCGATTCACGTCGGCTCGGTTTCTGTAGAAAACTAAATGTATTTGTCCGTATGGAGTACAAAAGCTTTGCCAGGCGTTATCCGGCAGGCGATAGAAGCCGCGACGCAACACGCAACTCGCCCTAAGTCTACCCCGGCCGTGGCTGAGTTATGCCTACTCGGCAAACTCTTGCATTTGAAAATAGGAGCGAAGCCGAAGCAGGTGAACATGGCGATGTCTGGCTTCCCTCATAAATTGAAAAGGAATAGAGTTTACCGAACTAGGCCATTTTGGCTCTGGCCATATCTGGGGGAGATTTACTACCGGCGCGTTGCGTGCCCCGTCGCGAATCAGCTCGTTTTTAGTTGTAAAACTGAATGTATTTGTACGTGTGGAGCACACGACTTACCCACGCGTTGTCCGCTAAAATGTTAATGGAGCGCGAAAAATTCAATGAGGAAGGCCAAGAACCCCGTGTGTGATTTTTGCAACTACAGCCCAGAATTAGAACGGGATTAATACAAATTTAGTTTGAAATTCGGATTTCGCAATTGAAAATGTTGACCACGAAATTAAAATTTCGAAAACCCGAATCTCATCTAAATTAAATTCCAAAGTTTTCATTCAAATTTCAATGAGTTCTCTATTGAGCCGAGTTCCCGCGCACGGGAGGTAATGGACCCCTCTTGTAAGTTTAGGGGTACAACGACCCCCCACCACCCCATATGCACAATACAGAACTCTCAAGACCCGCCAACCCTAGGCCCCTCATCCAAAACATATCCGAATATACCCTCTACTGTACTTTATTTACTTGCTCCGTTTTCCCGGGTACCAGGGTACTCCCTAAACTAAGTGAATTTCAAAGGTGGTGGCCTAGAAAAAGCTCTTCCACTGGTTGTGGAAAGAAATGATGATTCGAGGTACTTGTTGATGCCTTTTATTGCTTATGGTAGGGTTTTTTTGCCACGTCGTGTCCGGGCAAATTTTTAAAACTATTTTTCTATTTTTTAAAGGCCCAAAACTTTGTTTTTTTTAATGGTATCGTTTTTTCGAGAAAAAAATTACACAAAACGGGGGTTTTAGGTTTAGGCTAAGGCGTAGGCTTAGGTTTAGGCCTAGGCTTAGGCTTAGGATAAGGCTTAGGCCTAGGCGCAGGCTTAGGCATAGGCGTAGGCTATAGGTTTAGGCTAAAGCGTAGGCTTAGGTTTAGGCCTAGACTTAGGCGGCTAAGGCTTGGGCTTAGGCGTAGGCTTAGGCGTAGGCGTAGGCTTCGGCCTAGGTGTAGACTTCGGCTCAAACATAAGCTCAGGGGCTAAAAAAGGAGAAACGCCCACAAATTCAATCCTGAAAATTTTTTTAAATCTTAAAATAGTCAATTTTCAGTGGAAATCACAGTGAGCATTTTGAAAATCCAATAATTTTCAGTATTGCTATAAATATTTTCGTTCGGATTGGACAATGAAATAATCGGTGAACCAAAGCTACAATGCAATCCGGAAAGTATTACATTCTATTCTCCTTCAACACACGGAATCCGTGTATGTTAGTCTTGGGGTCTCGACACGAATTCTTCCCGCAAAATTAGTTTTCCGACATACTGAGTACCCCGCAAGTAGAGCGCTTATCAATAAATTATAAATAATCAATAGAGCGCACTTGCCCCAATTTCAAAATTTTCAGAGGACTTTTAACGTATATATGGCTTTTACAGAACACCCGGCTGTCGTCGGCAATTCCTCGCACCGAATCAGGCTGGAGGCTCATTTGGTAGGCTCGGTGATTGCGGGATGCGGCGATCCAATCAGGGGAGATTCGCCACATGGCGTCAATCAGCACTTCACTTTTAATATTGCGAACTTTCGAATCTGGCGAGAGGAACGTTCATTCAATATTCGATGCTTTTATGCACAGTGGATTGGCTGTTGTCAAAGCTGATCTGGATGTCAGGTAGGGAGGCAATCGATAAATTCCCCGAAAATTGATACATTTTCCAAAAATCAATAGATACCCAAAAAATCAAACAATTCCCAGGAAACTGGAAGAAAAATCTCAGAAAATCAATAATGTATTTGTTTTGCAGCGCAATGCCGGAAGAATCGTTCGAACGTGACAATCGTAGTATGCCCCAATGCACATATTCCCTTCGTGAAGGGACATTTGAGGGCCCAAAAGTGTCGAATACACGTGTGGGAATGACAATTGTTCATCCATGGGACTGTGATACATCGGGGAACTATGAAATACTGCTACGTGGAATGGACACCATACTCGATTCACGTGGTGTTATTATGAATCTTTTCCATTGCTTGATGAGAATGGGTAAGAGTAGGGAAGTATCGGCCGGCTACGAAAAGAAAAATATATCACTAGAGCAGGATTTCTAAGCATTTTTCTCAATAGAGCGCGCTTGGTCAAATCCCTTAAATAAAATTATGGTGCATCGAAACGGGTTTACGTACGCTTCTGATAGAGCTGTAGTACTCGAGGAAGCTGAAAAAAATAATGAAGAAAGTGAAAAAAAACAAAAGTGTGAATACAGTCGCAGCCTTCTCAGATAAATTTCAAAAAACTGTGGATGGTCGTAAATGGCGCGTGAAAAGTTTTTTGAAAATGGCCCTCGAGGACATTTCAAAAAAGAGCGATTTTCGCAAAGCCCCCTTCTTCGATGTTTGCTTTAGAAAAACAATGCAATTTTGTTTATTTCGCAACAAAATTTTTGAAAAATGAGTTAAATTTGCAACTGCTAAGAGCGCGATTGCACACACACAGACACACCCATCAAACGTCAGAGACCCCACTGATTTTGTAGATTAAGGTTGAGAGAGAACATGGAAAACGTCACGAACTTTGTTCCGTCAATTCCCGTTGGGTTGGCGCTTGATCATCAGAATGCAATGAAAGTCTAAAATTAAGCCGTTTCGCTAAAACGTAGCGAATCTCATTCCACCGAGTCTATTTTCGTGAGGCGGGTCTCCAATTTTTCAAGTCTTTGCTCGTTATGGTGCATCGAAGGGTAATTCAAAATTTCACATAATTGTTAGACACTTTCCGACCAGTTCCAAATTTTTTATGGTGCATCGAAAGAATTTTGCGTAATTTTGCAATAGAGCGCGGCCTATTACTACTCACCTCTAAATTTCTGCAAACTCTTCCAGAAGGTTTCCCGTGACTTCCCACAAGTGGTATACCTCCCATCACTGACGTCAGCCACATGGCAATCGAAGCCATCTCATTTCCTGACCAACCATCGATTTCTTTCTCGTGCCAAATTAAGTTGTCTGAGGGTTAGGGAAGTATGAGTTTCGGGGTATGAGTCCCCCCGCGTGTACCCCATTACACATGTCCCCATCACGGGACAAGTACCAATGCCACTTGATAATACAATTGGAAATACGTTAGGTGAGTTATTTACGGCCGAGAAAACCTGCAAGAATAAAAGTTCAGCCACCTTTTTGGCGGATTTTTGCGCAACTGTATGTCGCACAAGACTTTACGTCAGAAGCAGTGGGCGTGTCCGCCTGCAGGCCCCGATGTTTTAGATGTAAAAAATTAGATGTTTTAGATGTAAAAAATTGAAGTTTGACAAAAAAAAATTCGGCCACCGATTTTTTTTGCTTTCATGTTTTGTCCATGCATTTCCAATTTTTTTCGTGAAACGTTTTTGTCAGAATTGTGCCGGCGTGTCTTGTAAAGTCCCGCCCAATTTGTGGGCTTGTTTCGACCAAAAATACTGTTTTGTTTCACAAAAACAGAGCCAGATATAAGCATTTTGAAAAAAACATCCCTGTCCTCTCCTTTCTCCATTCTAAAATTTGAATTAGATCGTAAAAAACCCCCGGTCTTCAATTCCAGTGAAGAATTTGGCGGCAGAGCGTGTTTGCTTGTCACAGTTTTTTTGTCGACACTGAGCAAACTTCAACTCTGCTTCCAGCTAGAAATCCTTTACAAGCAAATTCAAATTTTCAGACGGAATCCCAAGCGACTGGAGCCGTGGATCAAAGAGCCCTGCTCCTCCCACTGATGACGTGGCAAACATCACCTCAGAAGGCAGAGTGCCTCGGCATCGTCATCACCGAAGAAGAACAAAATGACGAGTCGAACCATGTTGAGGCGCGAAAAAAATCGATTTGCTCATCGATTATTCAATATCACATCGGAAGATCTCTATGTGTCAGTGAGCCAACCGTCGAGCCAATGGAAGTAGAGATGCCTGGAGCACCGAGAGAAACTGGTCGGAGGGTGTCTGAGCCATGTGTCTCGGTTGAAACTTTCGATATTCGGCCCTTGCTGTACTTTTCGTTTTTGTCGTTTCGTTTGGACGGTCTGTTTCTTCGGAAGTCATATGCTTAAAAATTTTTTATTGATTTTTTTTCCTCCCACAGGGTTCTCACCTTCCTCATGCGGTTGATTTTTTTGCGCTCCATTGACACTCGCTTGTCGGAAAGAAGCACGCATGGGAAGGTTGTGTACACGGACAATGCGTATACATTTTACAATTTCTAAAATCGAGCCGCGCCGCAACACGCAACCCGCAAACCCAGCTAGCCGAGTCTAAATGGCCTAGTTCGGCAAGCTCTTTCAGTTCAATATGAGGGAAGCAAGAAATCCATTTGCCACCACAAGATTTTTGCGTGGCCGTCGCAGTTTTCTAGTTTCTCGGCCACGTTGTCAAAAATTATTTTAAATCGTACTGGGAAGACTAAATTAGATATCTCTCCTGCAGATTGTGATTCGCGGAAAAATTCCATGAATGTTTCTCCCAGTCATTTTTTTTTTGTAAATCCAACAAATCAAATGAGCGCCAAAACCTCACAAATCTCATACTCCAAAATTTGCGGAATTCCTCTTTATTTCTTAAGGCCTCCTCTTTGGAAAATTTAAAAAACTCGTATAAAAACTTTTTCTTCCGTTGCAGCATACGCACAGAAAGTCTTTAAAGTCTGAAAATAAAGTCCCAAAATCCCACTCTCATTCCACCGAGAGGTCATTTTCCGTGAGGTCTCTTTCTTGGGTCGCGACGCGAAAATACTGTAATTTTATTAATCTTTTCAGAACTCAAGACTGTGAAATGCCGATTCCAGCCAGAAGGATATTAGCTAAGCGAACAGTGAAACTCTTGTTTAAAAGTATTCTGTTTCCCATCCACGTGCCATAATTCTTGCATTTTTTTTTTCCCTATTTTGATTCAATTTATTTACAATTTGTTCAATTGCCTAAATAATCAGTAAATAATAATTTAACATTAACACAAGGCGTCACATTTTCGTATCACGCGTGGAATGTAACGGTGCCGTTAGTGTCAATGGTTCCGGCTGAAAATTAGTTATAATTGGAGCGCATTTGCATTTTTCTCGAAAAATAGATGTTTTCGTGTGATCCAGAATGATTTATCGATTTTTCTTAACTTAGTGGCCGAGAAAATGGAATCGAAACGGGCTCAGACCTCGACTTTTATTTACCTGGAACGAAAATTTAAAGTATGATCAACGCGCTAAAGCCTCAATTATGCAAAACGCTTTAAAAACGGGTTTTGGAATTTCCTCGAGACCACTGGTGACGTCACTCCTTTTCAATTTATTATTCTAACGTTGTTTTCTAGGCCACTGATGTCGATATTTTTCCACTGGTTTCTAGATCGCCTGCGATGTCATTTCTCTTCCATACCCTGCTCTAGCGGGTTTCTAGGCCGCTGAAGTAATTATTTTTCTTCCAAAAATAAATCTAGGCCATTAATGACGTTATCTCTAGTTCTTTTCCTTAGGATTCCCTCAGGTTCCTCATATTTCAGATCCATACTCGCCACGTTCATCTCATGAACTTTTTCCACGCTTTTTCACTGCTCGTACTCTTCTCATCTACTGTATCCGGCACCACAACGTCGGAGCAGCAGCTTGCTCATCAATATGCTGATGTCTCCTGGCGGACGTGGTGTATCTGGTGCAGTTTCATAGTGATTTTGCTGCTTCTCCATGAGATTCTGTATTAAACTGGCTGAGGGAGGATTACCACGAACGGTGGCATCGGAGGCGGCAGAGGAGCCATAGATACGGGAGTCTGAGAAGCCATCATGGAGTTGGGGGTAATTCCTTTGTTCGTTGGGAAATCTGTGGTGACATTTGTGGGGCCATAGGGGACGGGGACATTTGGAATACCATCGGAAGCATTGGCGGTGGTGGGGATGCCGGAGCCATTCGTATCATTGGAGCCATCACGTAAGATGGTGGAGATGGTGGGAGACTGGAAGGATTTTTTTTTTGAGTTTTTTTCGTAACACGGGCGTCTGTCCTTCCTCATTGCACTTTTCGCGCTCCGATGATAACTGCCGGACGACGCGTGGAAAAGTGGTGTACTCCCCACGGAATACAAATACATTTAGTTTTCAACTGAAAACCGAGCCGTGACACACGCTATCCATAAATGGTGTCCTAATTTCTGTTTTTTAATCTTGAGTTAAAAGTTTAATAATTATTTCTACAGAATGGCTGGGAATGTGACGACCCACGTGGAACCGAGAATTCTCCTGCGTGGACTCTTAGACAATTCAAAAAAATATTGGTGGTTTTGATAATAAAGGATTTATACGGATAAAAATCTATTATAAAAGCCGTGAAAAAATCATCATCAACCACTGCCTAAAAGATTGAAATTATGATGGCCGAGACTTCTCAAGTGTGGCCTAGGTAAAAAATCTTAAGGCCTTTGAAAATTTGCTCATTTCGAAAATTAAAAAAAACAACTCAATTGATAGGTTGTTTAAAATTAAAAATTAGTTGGTCTTTTTTTCTCAATTTATGCAAAATCAAAAATTATAATCAATTTTTAATCCAGAATTCGTCAAGTGGCCTAGAATTCGACTGCTCGGGTGGCCTAAAATTCCCCCAAAATTTAAAATTATTGATGCTGGCCAAAAAGTTGAATAGTGCCCGAGGTTGTTCGTATTTCACTTTTCTCAGGCGGCCTACGGAAAAAAACTCGGCCACCAATAGTTTTTCCTAGGCCTCAAATGCCCTAATTGTATGTTAATTACAGTATTTTCTAGACAAGATTTATTTCCTTAAAAAAACTCGCGAATAGCACATGGAGCTCTGACTCTTGCTCCCACCAATACAAAATTCCGAATTTTTTAGAAAAAACCGCAAAACTATAAGAATTTGTGGTAGAAATTGGGGCATTTACGTAATAACAATAATAATGTCCGCAAATTTTTTTTCATAAATTTCATAGTCCAGGACGAGGTAAGCCTAGAATCCATTCAATTTTATTGGGCCGCCGATCTTCGGAACACTTTTACAATTTATACAGTATACAACTTTTACCTGCAACTTAATAATATCATCAATACTTCCAGAATATTCTTCTTTTTCCTCTGGCTCAATTGCCACGTCATCATCTTGTAATCTGGTCCATTTTGCTGGCGAGGCGTCGGCAAACAGCATTTAGTATTTACGGAGCAAGATCTTTCAAGGCCCGCATGCGACAGGAACAATTACGCCAGTCTGTGAATCTGAAAAAAATAATCTTGTCTTTTAGGTGACCCTGCCTGCCAAAGTCTGCCTTGCAAGGGACCTTTGACCTACTTGACGTACCTTCAAGTGAGACCTATGCTGGTTTGCCTGCATTTGGGTTTTGTCAGTGCCTTCTAGGCCAATGCCTACCTTTCAAACTATGTAGGTCAACTGTTTTTAAGGTAGCCTGGGTCAGCGGTCACTATGCTATCTACGTCTACAATGCTACCCCGTGCCTATCTACCTGCTTTTAATGCTATCTGCCTTTTCAGCCTGATAGTTTAGGGACAATCTACGCCGGTCCAGCTCACATAGGTTATCTAAATGCCTATCGGGTTTCCTTCCTGCCTGGGCATCCAAAGTGACCTAGGCTTCGTGTTTTTTGTTCTAGATCTCACCGTATATACCTACTTACATGCCTGCCTTTAAGTTTACCTATGCCTGCCTGCATTCCTCGTGGTGCCATGAATGCCCTAAAAACTCACGTATCATAAGTAACAATCATATTGACGAACAACGGTTCGATGAGTTAATATCGTGCAAGCCCAGATCATGATCGGGTGAAGAGAAATCGTTGGCCTAAAAATTTACTCGGCCACCCCCTTACCTGCTGCATTGCGAAATAAGCGTACTGCTGGGAGTGCAACGTGGCACACTTATTGAATCCCGCCGTATTGCCCCATCACACTTTCGGCGAAAATTTGGAATGATGGAAGAGAATAGGATAACCAGGCCATGGATGTATGTGCGCTATGTTGATAATCGGTTATTTTCAACGTGGATTATCAATTGAGCGCAGTTGTCCCACTGGAAGAGTTTTCCTATCTAGGCCACCACCACCACCCACTCACCATTATAATAATAGCCAGCAAGTGTTGTTCATGTGGAATAAATGCTATAACGATGAAAAACACGGCGGCCACGGCCAGAGCTATTGTGTTGAAAATTTTAGTTTGCAGAGTTTCTGATGAACATCTGGAATATTGATTTTTGGTGGCCGTAGAGAGTAAAAACTCGGCGACTGAGTATTTTTCACATTTCAAGTATAAAATTATTCCAAGAAAAATCTGCTCCCGATAAACTCACTTAATATAATCACTAATAATTCCCGTAGCCATGAAAATTTCGTAAAAAATAGAAACATAATGGTAAGGCGGCCAAAAAACAGCACGAAAGTACGTCATAGTTCAAATAATTTTTCATATATTGCGGATTGAATTGGGATACCAATTGACCTGTTAAATCTCCAGACGTGCGATCCAACAAGGCCACAGGCTTAAACTTGTCAGAATATGACGGAAATACATGGAAGATTTTTCCTGGCCGGCATACCTGCCGAAAAAGTAACGGGCTGCGAATTTGCCCCCTCATGTTTTCAAATGGAAGAGGGTGGCCGTGAATAAAGGTAACCTCTACCGGACCTGGGTCGCGACTCGCGACAATCGGGAAAATTTTCTCAAAGAAATTTCGTACTCTCGCTACTTTTAGTTTTCCTGTTTATGGCATCCCCCGGGTCGAGGTACGCTTTTTTCACGGCCACCTCCTCTTTCCATAGTTTGAAAACATGGGAAATTCGAAGCCCGTGAAAAGTTAGGCCCAATGCGATGTGGTGGCCGAGGTTTTGAAAATTCGGTTACTCTCATGTAATAAATCTTGAAGTCGAAGCAAATTTGCGTACATCAAACCCATTTACCTCGTTAGCAGTTTTAGAAAAATTTGGGATTTTCTCATACTAATGAGGGAACGTCATAATTGTCGACACATTGCGTACCCCGAGGAACCAACTAATTCAGTCCTAGGTTTAGGCATATGGTAAGGCATAGGCTTAGGCGTAGACGCCTAGGCTTAGGCTTAGGCTTAGACGGGGTGTCAGAGTGCCTTATTTCGGCTTCATCTACGTACATCTACAAGAAGGGAGAAGAGACGCAGAGTTTTCTACTGATTTCGCAGACTTGGTTAAGAGTGTGCTGACGTCACATTTTTTGGGGCAAAAATTCCCGCATTTTTGATAGACCAAACCGTAATAGCACGGCCAGGCATGCGCTTAGCCTTGAGTCCGTAGTCCTTCGGGCGCGTTTTTCTCAAAAATGATACGTTACCATTTCAGGTTTTTCCGCTCCAAAATCTAGTTATAATAATTTGTGTGCCCGTGTAGAGCGCGTTTGCACTGACTTTCTTTCCCTCGATTTCCCTTATCGAATCCTCTCCAATTCCTTCTCGCAACCCCAACTGTGCTCACTCGGCGGTAAGGACTTGAAAAATCCCAGGAAAAAAAAAAGTGACCAACGATACCCCGGCGTTAGTAAACCGACGTCCATCCACCAGACGAAGAGCGTAATCCCGGAACTGTGTAAATATATTTGAAAGTTGATTTACGGTTAATAGTCCAATGAATACTTCGTGCTCGTATGGAGTCGCCCAATTATCCCTGCTGTAAGCCCATCGAGCCAGCGAGGGGATATGTGGCTGAAAATGCCATTCCTTGATAAATACGCGGCCACAAAATCCGAAGCCAATGGTACTTGCCAACGGGATAAGGGCTGTTGAATACTGGAAAAATTGCGTGCAATACATCATATTTGACGGGCAATTTTAGAAAATTTAAAAAAACGCGCTCTAATGATGCTTGGTGTACTCCTCTCGGACAATAAATGTCAATAATTTTCGAAAATTCGATAATTTTTGTTTAATTTCAGAAAAATGAAATCTGTTTTAGCATATTTTGAGCGCGTAAAATATGATTCTTAAATACTTAATTCAGTATTTTACGCAGGCGTGGTATCCGAGTGTCACCTCTCTAGGCTTGATCCTTGGTACGTAGATCTACAAAAAATGCGGGAGAAGAGCAGACGCAGAGTTCTCAACTGATTTCGTATGAGTTAAGCAAGTGCTGACGCATTCACATATTTTCGGCCAAATAATTCCCGCATTGTAGATTCAAACCGTTATGGGACAGCCTGACACCACGTGCTTACTCGGACTTTTTCACAATTTTGTGCTTCATGCACCATTTGTTTTTGTTTCGAAAAATCAGATTATTTAGCGGGCAAATGCAACGCCCACTGTGCAATACACCATATTTGACGATCAATTTCAAAAATTTTGTATGCTTTCGTGCTTTTCGGGGTACTGTAGCTTTGAAAATACGCATGCACTGGATCTGACGGCAAAATGCACAGTTTTTATAAAATTAGTCTAGACTAGAAATTAGTCAGTTTTCACGAAACAATGAATAAAAACTACAGAAAACTCGGCCACCGATATTTTTTTTTTTCGCGGCCACGATTGACGTCATACCTCATAATTCCGCCGACAAACCTCTGGAAACAGGATTATGCGGCAAATGTTGAAAAGAAATGGAAAAAATGGAATCGAGGCGGCAAGACTATAGCCACACACGATTGAAGAAAATTCGACTCTGATGGTTGGGATCGGAATTCACTGAAACAACTATTTTGGCTGGGCCGCCAGAGAAGACTCGGCCAACGAATTAAAAAAAAAACCTTTTGAAGTTGAAGTACTATTATCATCTTGCATACAAATTAAAATTATAAGTTCATATTTGAAAGAATCGAGGTCAAACACAGTGTGGCACATATTAAAATCTGCAAGAAAATCGTGAAAATTCAATTTTCCGGGTTTTGAGTTCAAAAACCAGAAATCGGACAGGAACCGGCGCGTTGACCATGGTGCATCAGCAACCGGAATTTTAAATAAGTAAAAAAATTTACGATGCTCTGATAACCAAAAGTGCAGTGATCCATTTAAGGGAAATACTGCTGGTGGATTAAACGTTGACACTGTTAACTTGATAGTTTTAATTTGATCAATGCTTGGTACTTGTTTTTTGCAGGAATCTTTGAAAATTGCCAAAACTATAATACAGTCTGAAAATTGATGATAATCTAAAACTTTAAATTCCGTTAATTATCATTATTTTTACGAAATTTTAATATAATCTCCTTAAAATTTAATTTTCTAGGCAGCGGTCTGTGAGCTTAAATTTTCGATTATCCCTCGCCAAATTAAAGAGCAGACTTTTAAGCTTATAAGCTTATTTCAGTGAGAGGAGAGCATTGTGCAAGAAGAGAAACGCAGACTAGGCTTGCGCGTTTCTCGTGCTCTGACGCGAGTCTCGATTTCCGTGGCTTGCGCATTTCTCGTGCGCGCGACGTTCATTTTTTTCCGATTTTTTTTCAGTTTTGCTGAACTTTTCTTTAATTCGTGATTTTTCATTTATTTTTCACCTCTTGTTGCTCGAAAATAAAACTGATTTTTCACACAAAATATTCGACTTTTCAGGTTCCGGCAACATGGGAGTCTTGTACTGAAAAACTCGGAATTAAGCAAAGTGGGACTCGTCGCCGGCGCAGGGCGTCAAACTGTCAATCGATAACGATATTTGGTCGACTAACAATGTTAAAGTATTAGTTTGTTTCCGTTTTTCCACGAAAATTTTCATTGTCAGGGCAGCGAACTGTATCAAAAGCTTCAAAAGTATTCCCGGCACCGTCGTCTTTCCGGAGCAGCTTTTATCGATTTTTTGTCTGAAAATGCAATTTTTTTCTAATTTTCAGCTCCCTGAAACACTCGAAGATGTGCAGCTGAAGGCCGGTGGAAAGTGGAAAAGTGCTGTTGACTCGGTAGGCTGCATTTTTGATACAAGAGGAAACGGAAAAATTTGCGAAAGGTGGAAAAAAGTCCTAAAATGGAGATTTGGCGCCGAACGTCATTCAAGAAATTCCATAACTTTCAAAAATCTATCTGAAAAATTGAAAAATATAAGACCATTTTCAGTCATTTTTAGTAAGTTTCAGCTAAACGTCGAAGAAAGTGCCTAAAACTAGGAAAAATATGAGAAAAAGACACAAATTTTGGAGAAAATTCCTGAAAAATGCAAAACACTTTTTTTCAAAAGCAAGTAATTTCAAAAAAAATCCCAAAAATTAATGCAAGTACGCTCCATCGCCCTTTTTTCCAATTTCTGACTCGAAAAGTCAAACTTCTGGTTTTGTAGGAAAGGTTATGCAAAACGCAATTTTTAGTCCAAAATTCCGAGAAAATTCTGAAATTTAAAAAAAAAATGCAAGCACACTCCATGGCACTCCGTTTCCTTTGCAAAATTTCGCGTAGATAAATTACAGACATTAGCAAAATTCCGACGATTTCGCTGACCATCACGGAAATATTGTAGGAAATTCAAACATTACACTTCCGAAAATAATTCCGCAAACGCGCTATCGCACTTTTCTCCAAGTCCCCACTCAAAAAGCATAGAACATACCTGAACTTGCCGTTTTTTTACACCAACTTCAAATTTACGCGATTTCGCTGCGAGACCCAAGCTAGTGCAGTTGCGCGCATTTCCAACAATTTCAAACTCAATTTTTTTCAAGTATTCACCACAATCGAGAACGTCCCATCAAGCGTGAACAGTGCAAGCCAGGATCGACTCATCAATAATAAATAAATTCCCCATAAAAATTATCGATTTATCGATTTTCTTTGACCCCCGAATCCTCTGTATTCCTTCGTTAGAATGTACTTTTTCCCTCCTCATTTTCTAGAAATATGTGTGTGGTGCAATTCTATGAAAAAATGCATTGCAATTTTTGACTTTAAACGAGACGTACGGTGCATTATTTTATTTTATGTACAGTTCCCGTCGTTGATCAAGTTACTCCACTGATATCAATTCACTGATAAGCCCACACTGACTGCCCAGCCCAACACAATTCCGCAACTTCTTCTCCCTGCTTTGCCATGAATTCGACGGTGGCTTCCCGTTTCTCATGGGGATTCATTCTGACCATGCGTCGATCGATTTTGTTGTCGTGTTGCCTACTGTTTGCCTGCCTGCATGATGGTTCAAATTGAATTTTACTCCGCAATTTGGCGTTTTTTTTTTAAGAGGTTCGATTGATTGGCCGAGTTAATTTTAGGGCACGAAAAATGAAAAATGAGCCGAGTGTCATTTTCGTTGGAATTCTAATTTTCAGTGTGTAAAAATATAGAAACCTCCAGCAAAAAATTTTGAACATCCCCGCCAAAACGTTACGAGACCCAAGTACAGCGAATGAGAGTTGCAAGAAAAAATTTTTAATGATTTGCAACTACGCTCCACAGTCCTTGGGTCTCACAACGTTGTAAAATTGTGGTATTTCTTCCATTACTTCTTATAATAACGATATTCGGTGGTCTCGACACTACACATTTTCATTAAAAATAAAACGGGCGCGATGTGCGCCTTTCAAGAGCTACATACTGCAGTTTCAAACTTTAGTGAAGTTGCTAAGCGTATTTTCAACAACGAATTTGAACTTACAGTACTCTTTAAGAGGCGCACGCCCGTTTTTATTAACAGAAACTTGTCGAGACCGGGCACCGTAGTTTTGACGCTAAAAATAAGATGTATGAAAAAGCGGGTTTTCAGAAAATTTCACTTATCAAAGATGAATTTGAAGTTTCCAGCCAAAATCGCTGCGAGACAGTGTAACGAGTGCAGAGCGCGAAATTGCTGTAAAATTTGATTGAAAAAGTTTAAAATTGAGATATTTAAAAACGGATTCTGGCGTCCCCCGTAATTGAATGAATTTCCCGAACTAGGCCACTTTGGCCGCGGCCATATGGGGTAGATTTACGGCGCGTTGTCGCGACCCGATTTTATGTTGGAAAACTAGGAATGTTTTTGCCCGTGTGGAGTACACGACTTTCCCACGTGTTGTCCTCTAGGTGATTGTCACTGCAGCGCAAGAAATCCAATGAGGAAGGCCAGAACCAAAAAGGACGCGTTTTTGAAGCAATTCATCGAAAGAAGACAGTAAAAAAAAAGTCAAAAATTCAAATATAGAAAAACCACCAAACCAACATCCAGCACAATCGACCTATTCTTGATGCTGCTATTTTTTTTGCACGTATGGATGTGCCGGCGGAAATCCACGTGGCCAAGAAGGCGGACACGTTTACAATGTGGGGTCGGTGGCCGACGCCGTGGCCTAGAAATCCAGCCGAAAAGTTTCCGTCAAATTTTCTGCCAATTTTCTGCTCGGCACTGCTCATCTGCGCGGCGAGCCCCACAAAATTCTTGCTCCTCCTCACAAGCTGAAGCCCGATGAGTTCCTCACTTTCGGCGACCCTGCCTTCCTTGTCTGGAATTTCGTTTCCGCGATCATTTTTAAGTCCTCGTGGACAAGATGCTTCTCGCGAACTCCGTCTTCATATATAATTTTGAGGATGAGGATGGAAGTGCCCTCCGCTGAGAGCCTAAAATGTAGTTTTTGATCACCCCCACGATTTTCAGCTCGAGGCGGCTCCAAAACAAACGTTTGAGCTTATTTTCCGCCTGCTCCAATACTACAAATGTGAATGGCTCTGGCATATTGTTTCTAAAGTCGTGGCTCTTTATTCATTCGATTAAGAGAATATCCATCGCGTCGGGGTTTTTTGTTTCGAATTTAAAAAAAAACACAAGTGGAAGAGTTTTTAAGATTTCTTGGCCACGCACACTCCAAAACCCGAAGTTTCAGCCCGTATCTTCGTTGTCCCTATTACACGGGACAAGTCATCGCTACCGTGGTCGCCACAAAATCGTACCCAGCCCTCTCCAACGCTGTCTACATCATGACAATCATCTCCTTGGTGAGCGCTGTCGCCGCCGGATTCCGAGGAGGATCCTTCGAATACGCCTCGCATACAGGATCCAGACGGCAATCCGCTATGATTTGACGGACTCGTGAAACAGGATCGCTTTCTATGATGCTCACAAGACCGGAGTGACTTCTCGTCTGTCTGCTGATTGTCAGACTGTGTCGGATACAGTTGCGTTGAATGTTCAAGGTTTCCTCAGGTAGGTGTGGGTGCGTGACCGAAGTTCCCAGATCACACCTAATTTTCCCAAATTCTTCCAGAAACTGCGTTATGCTCCTTGGATCGATGAATAAGCTTTCCGCCTCTCCCTCTTCACATTCATCCTCGTCATTATCTTCGTCGCCTCCAAAAGCTTCGGAACATATTTGTCATGTAAGTGCGCTCCAGCGAAAATGTTTTTCTAAAGTTTTGAACGGACCCCAAAATTCTGTCAAAGTGCCCCATTTTGGTTTTTGATCTTCGGAAAATGCCGGAGATAAGAGGCGCAGGCTTTGCAACTGATATCACATGGTAAAGATTGTGCTGACGGCACATGTGACGGAAAAATTCCCACATTTTTTTGTAGCTCAACGCACCTGACACCACGTGAAATTTTTGACAAGTCAAGAAAAATTTCGGCAAATGTGAATTAATTACCGCCGCACGTCGTGCCAGGCTGTCCCATTACGGCTTGATCTACACAAAGTGCGGGATGACTTCTTTTTGCCCAACGCGAATTTGACGTGAGCACTAATCGTTCTTAGTCATGCGCTAAATTAGTAGATAACTCTGAGTCTCTTCTCCCTCATTTCTTGTTGTTCTACGAGATCAAGTCTAAATTACCCAGCGTCTCTGTCACGTGCACGCCTCCCACCCTCCGACGAGCAATCAGCGGATTTACTTACTCAACTTGTTTTATTTCAGCTCCTCTCCGAAAGAACACAGGACAGAATTGCCGCCAATGTGCCGAGGAAGTTCTCTCCACAATGCGTACAGTCCGATCCTTTTCCTGCGAGAACGTCGACCGATCTTCTACGGGGAAGCTCACCCACACACTTGATGTTTGGCCACCAGAACCAAGCTAGCGATCGCCTATATCGGATTCCTCTGCTGGGCTTTTCCAGTTGTTCATTATTGTGTCAGTCCTCTGGTATGGAGGCCATCTAGTGCTGCACCAACGCAGAAAAAGAAGGGAGATCTTCTAGTGTCATTTTTGCTCTATCTCAAAATGCAACTCCGAGATAATCTTCGTCAAATGGTAGAAGTCAGGAGGCCACAGGATTGATGCAATCTGTTGGAGCAAGTCGTGAAGTGTTCGAGAACATTGATCGAGAGCAAATTCAGCACAACGGAGAGCATATGCGGAGAATGTTGTTGGAAAGATCGAGTTCAGAAATGCTCGCTTCAGTTATCCAACTCTCCGGTCCGATCAGCCAATCCTTAAGGAACTCTCGTTTACCGTTGAACCAGGAGAGACTGTTGCATTGGTACCAGCCACCCTGGCTGGAAAGTCTTCGTGCATTTCTCCGTTGCTTGAGAACTTCTACGTCCCGAATGCTGGACTTGTGGATGGAGTTCCGCGTTGCAAGAGTTCGAGCATCATTATATTAATAAGAAGGTACGTTGGCGTCAATTTCGGTTCGACAAATCGTTTGCCGGTTTGCCGTCAATTTTAATTTTTGGCATATTGCCAGATTTGCCGGAAGAGTTTAGAGTGCTTTTTTATAAGACGGAAACACTTGAAACTGTGTCCGTTTTTTTTTGTGCCGGTTGGCGATTTGCAAGATATTTTCACCGGCAATGTGCCTTGCCGATTTGCCGGAAATTTTCCATTATGGCAAGCTGACACCGATATGCCGGAAATTTTGATTTCGAAAAATTGCCGAGAGGCCGGAAGTTTCAAGGCAACTCGCCGATTTGCGAAATTTCAATTCCGGTAATTTGCCGATTGGCAGGAACAAATCGTTTGCTCGCAGTCTATTCGGATAAAAATTGCGCCAACTGGTCATCCGTTTGCACAGAAAAAGCATCTCCGCGCTTCGCTATTGGCCAATTTCATAGGGCAAATGTGACGCAACAAATCACGGGTGTTTCTTGCTTTCCATTGCTGAAACTGTGACTGGTTGGGCCCAATTTTTTGAACTTGACCTAATTGCGAAGCGAAGACTCTGGACGCAAGAAACGATTAGCTCCGTTTTCTCCTTTAGATCGTCTGTCGATCGAGATTCTCTGCTTTAAAAACACATTGCCCATCTTTTCAAAGCCCCTGTTTCAGCAGCTAGTAACAACAAAAAACCTCGAAAACTTCCAATTTTTCAGTTAGCCTTTGTCGGCCAGGAGCCCGTCCTGTTCGCTCGTTCTGTTAGATAAAATGTCAGAAGTCTTACGTACTGTGTCGAAGTGGCGGACGGTAAGCACGATTAAATGCACCATGAGCCGACCAAAAAAACTTGTTCAGGAAATCATTCGCGTGAATGGCGAATGCTCACGGATTCACTAGAAAACGTTGCAATACGAAACGTCGGAGAGAAGGGAACACAAACGTCCAGTGGTCAGAAGCAACGTGCAATTGCTCGGGCTTGTTCGTGAGAGCGTTTCTCTTGTTCCGTGGATGAAGCCACGTCGGCTTTGGACACTGAGTCCGAACATCTTGTTCAGAAACTTGACCATATAAGAATTTGGATGTGGAAAGAGTGTCATTTTGATTGCACATTATTGACTGTAGAGTAGGCTGATAAGATTGTGGTTATTAATAAGGTGAGTTGCAATTGCGCTCGAGGACCGAGTTTTGGTCGCAAGACACGGGGTTCTGGCCTTCCTCATTGAAATCAGTCTTCCGTCTATTGACAATCGCCTGCCGGACAATACGCGTGGGAAAGTCGTGCACACGGACAAATACATTTAGTTTTACAATTAAAATCGAACCGCGAAGCGACACCGCGCGCCGTAAATCTACCCCAGATTGTATGCGTGAACCGAGGCAAAATGCCCTAGTTCAGCAAAAACTCTTCCATTTCAGTTCGTTATGAGGGAATCCAGAAATCGGTCCGAGGGCCCTTGGTTACTCGCGGATAACGTGCTGTCAAATTATTTCAGAATTGAGAGTTTCGCTAAAAACTGTAGAATCGCGTTAAAAATGAGAGCTCACCAAACAGGATTCACGAAACAAGAATTCACAGAAATAGTATTCAGTGGGCGCAGTGTGCGCAGTGTGCGCGGGGTAAGCACACTACTTCTGGTCCCGCCCGCTAAATCCCGTGTTTCTCGTGAATAGCTGAATGAAATATCAAAACTCGGCGAGTTGTTCTGTGGCCGGCACACACACGTGGTTTCAGGCTGTCTCATGGCCCGACAATGGGTACATCAGTGAAAATGCGCTACTGAACAGAACGCATAACGCACGTGGTGCAAACAGGCTGTCCAAAACCATAATGGCTTGACCTACAAGAAGTGCGGGATGTTTTTGCCCAACAAATTTGATCAGCACGTTCTTAGGCATGCGAAATCAGTTGAGAACTCTATGACTCTTCTCCAGCATTTTTTGTTGATCTACGTAGATCAAGCCAAAATGAGACACGCTGACATCACGTGATAACCTGGTTGATACTACGCGTACGGCTTTCCCGGCGGGGCCGTGTTTCTCATTGCGGTTTGATCTACAAAAATGCGGGGAATTTTTCCCCCAGGAAAGTGTGACGTCAGCACACTCAGTCTGCGTCTCTTCTCCCACATTTTTCGAAGATAAACCAAAATGAGACATTTTGTCACCAACACACACACACACACACACACACGCACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACATCATATTTGACGGGCAAAATCGGCCCCATAATTACAGGGAATAGTCGAACACATCGGAAATCACGAAACCCTACTGAACCCCATGAACGGAATCTGCCCTACGCAAAGCTCGTTCAACGACAAATGATGGGAGATCAGAAGCCACGGAGGCCGGCGGTCGAGCAGCCACATCCCGGTACCTCAGCGCCGCGTCAACCAACGTGGCTTGCAGGACCATCGCAGGGTAATGCAATGTCCCTGTTTTGTCGACTTCTTTAAGCCAATCTGCCAGTAGTGTTACTTCTCATGATTAATTGTTTTTTGTTCTTGTTAGTAGCCAACATTTTTTGATGGACTTGTTGGGATTAATTTGTAAGAATACCTAAGGGATACAATTATTCATTCATTATTAAAATTTGGGCACACAAATTCGATTGTGGAAAAACTGTACAAAAACATTCTTGCAAAAACGTGGAAATTACTCAAATAAACTCCAGGTAGTCGTTGTCGACATCGTCTCGCTTCCGCATCGCTGAAAATCCATTTTTCACTTTTTTTAAAGCAGATGCTAACCGGGGCCTCTCCGTGACCGGATCGTGTTGTTCCATCCGCGGATTATGAGAGTAGGAGCTTATGCCACGTGTCTCATTGGCAGCTTGCCAATTGTTCGCAGACAGCCTGTACGAGTCGGTCAACAGTGGACCGTTTAGAGTCTGAAAATATATAACGGGAACACTAAAATTTTAGAAGCGTATTGTGCAACACATTTGACGCGCAAAGTATCCAGGTAGCGAAAACTACAGTAGTCCTTTAAGTGACTGCTGCACGTGGTGCCCAGCAGGGCTGGCAATTTTTTGGTTCTTTGGTTTTTCTGGTTTTTTGGGACCAAAAATCCAAAAAATCAACAACAAAAACAAGTTACCGTGTCTCTCGACTCGAGACTATTCTGTATTAACATACATCGAAACATGTATTTTAACACAGTCGTCACGTCATAACCAATGAAATACATTTGGCGACATTACTTGATTAACCCCAAAACACCTATAAAACATTTTCTGGTTTTTTTTTGGTTTTTGTTCCAATTTCAATTTTTTTGTTTTTTGGTTTTTTTGGTTTTTCAAAATAACTTCAAATTTTTGTTTTTTGGTTTTTTGGTCCAATATTTTTCTACTTGGTCCCTGGTGCCCAGCTGTCCCATTACGGTTTGATGTACAACCAAGTTAGAATGCGGTAATTTTTTGCCCGAAAACATGTGACGAGGTCAGCACGTTTTTAACCATTGCAAAATCCATGCTTCCCTATTGTTTGTAGTTCAACGTAGATCAAGCCGAAAGAGACACACTGTGAGCGCGTGCTATTGTAGTGCTTGTGTCGATTTACGGGATCATTTTTCGAAATGATTATACATATAATAATCGATAGAATAATAAAATTATGGAAAAAATAATCGGAAAATAATACGACAAAAAGGAAAATTGAAAATCGCTGTCAAAATTCGAAAAAATTAATTGCGAAAATTGAGTTGCCGTAAATCGACACAAGCGCTACAGTAGTCATTTAAAAAGGATGGTCTACTGTACTTTTCGCTACGAGATATTTTGCGCGTCAAATATGTTGCGCAACACGCATTCTCAAAATTTTAAACTCTCCGCCTATCACAGCTGTGTCTCGTTAGCCCTGTATGGGGGCGGATCTTTCAGCGGTGGAGCCCGATAGAAAAAATATTTTTTCTTCGATTTTTCAGAAAAAATATCGATTTTTTCCGATTTTTTAGAAAAAAAATTTTTTTTTTTGATTTATCACAAAAATTATCGATTTTTTAGATTTTTCATAAAAAATATCGATTTTTTTTTCAGATGTCCAGAAATCCATTATTTTGATTTATTTTTAATGTTTTGAGTTCCATTTATCTGAAATTTTTTTTACCTCATAATGATTGCCCTTTTCTTCCACTGCCGCCTCGCTTAGTTCAGGGTAGTGTCGAGTAATTCGTATTCGATACTGTGAACGTGTAAGCGACAGTGGAATAACCCGGTAGATCATAAGTAGTACAATATGGCAAAGTGGATTACTAACTGAAAATTATTGGATTTTTCTCAAGTAATAAAGGTGGGGAGATCCGAAATATGTGAAAAATATTTTTAATTAACAAATTTTCCCCTGATTCCCAATTTCTATATGAAAAAATTCAAAAAAAAATTTTCCAGATTTTATATTTAAGCTTGAAATCGCTTGAGCCCGCATCACTATTTACAAAAGCTTCCCCAAAGAAATTTGAGAGCGCGCTTGCTTAGTTTGTTTTTCTGCTCATGCTAATATTGTATTTATTACCGCCAAATTCAATTTAACCGGTTTCATTCATTTTTGTCGAAAAAATATATTTTTCAGGAAAAAACCGGTGCAAAAAAACCAAAATCGACAAAAACTAATGAAATGCTGGCTGCTAAAAATTGAATTCGGCGAACCGAATAAAAATAAGTTTTAAATGAAGAAAATTCTATTAGGAGCAAACGAAATTCGCCATTTCAAGCTTAAATATGGGATATAATCAGGGATTTTTGTTTTATTTATATTTATTTCACAGCTTGATTTTCTCAGGGAAACATTTGGGGTTAATATATTTCACAGATGTCGGTAAGACAAATATGATTATTTTTTTACAAAAAATAACCCCCACCAGTAACAGCGTAGATAAATTGAGATAAATGCATGATTAACCCGGAAGAACAAAAGTCGGGATTCTGTTGGGCAATGCTGGAGTAGAAGATCGAGATGCTTGTACAATAGTAGGGCAGGAATGAATCAATCATCTGTAATTTATTTTTTTAAAGCTGGTACAATCCACGTGGTTCAGAGTGTCTCATTTCGGTTTCCGAGCTACTGTTTTGTAGATCTACAAAAATGCGGGAGAAGAGACGCAGAGTTCTGATTTCGCATGGTTAAGAACGTACTGTCACATTTTACTGGGAGACCCCCAAAATTTCGCCGCTTGTAGATCAAGCTGTGACGGGACAGCTTGGCACCATGTGGGTGCCGAGGGGAGCTTTTTGGTATTTTTTGGAATTTCTCGAAAAAAACTTTCATCGATTTTTTTGAAACTAGCTCTTTTAGGTATAGAAGAAAATAGTTTTTTCTCATCAACGCAATTTTTAGATCAATATTTTCGATTATCCGGTGAAAATTGAAAACTTTCTTTTTCTATGTTCCATTTTGATTTTATAAATTTGGGAAAACCTAATATTTCGATTTTTTTTGAAAAAAAAACCAATTCAATAATTTATATATTATAGGCCACTCTTTTTCTCTAATTTCTTCTGAAAAACCTTAACAAGAAATTTTTTTTTTTTTAAACCAATTTTGAGTAATTTTTTTCTGTAAAACATACGATTTTTTTCCAATAAATTGCTAGTTTTTTCTCTCTTTCGGGTACTTGGACTGTCTCTAATTTTGCTTGCTTTTTTCTATATTTTTTCTGCGATTTACGATGAAAAGTACCAAAAAGTCGGAAATTGTTTTTTTTTTTCGATTTTTTAGGAAAAAAAACGATATTTCCTATAAGTGTTTTTTTCATAAGTAAATACTTTTCTCCTTTTCCTTTTGATCTACAATATTTCGACTTTATTCTGGAAAAAATTTTTTAAACGTTTCTTTCTGAAACAATTTTCAGACCCAAATTTTCAATAATTCAATAATTTTTCTAGATTGTGCGACCGAAATATACACATGGTTTTCAATAAATTTATAGTGTTCTCCATTTTTGTTGATTCTATTTTACTACTATAATTTTTTCAAATTTTCGAAAAAAAACATTTTTTTTTTGGAAAATTTTAATTTCAATTCGATATATATAAAAGTTCATATTTTCATCTTTCATCGAAATATATATTTTTTGATTTTTCAACCTTTAACTTGTTTCATTTCCTTCTCTCTGAAAAAATCGGAAAAATTAACAGAAAAATCGAATTTTTTAAAAATATATTCCGATTCGCCCTACCATAATTTTTATGACAAAAAATCGGTGTGCTCGTTATTTTCTACAAAGACTCAAAACCTCAAAAAACATGCTGGGCAACGTCAAAATCGCTCGATATCGAATCTTCAGCTCAGTCTCATACCAAATACACCGCATACAGAAACATCGTGCAAGGAGCTTGAAGAAGAAAATGAGCGCGGTAGATATGCACACTTTTCCACGAAAATTTCGGCCGAAATCATGAAACAGGCGTGGATTGAGCACAATTCGATGGAGCCAATAGCCGGGAAGAGCAGCCGAACCTTTCATTGGGATCTGTGTACGTTCGTCTAACCGATAAATGTTCCTGCATTGATCGGATACAGTAGACGAGCAGCCGGACAAATGTATTTTGCAAGTGGGATATTCTGAAAATTTTTGAATTTTTTCCGAATTTAAAATTTTAGTTTCTCGATTGTTTTGAAGTAAAAGAATTGATTTTTTAGAAAATTATATGTTTTGTTTAATTTATTTAAAAATCTTTGAGGTAAAGCGCAGTGGAGTAGCGCTAGTGGGGACTTTAAAACTGCCTACGATACCACAAGGACCGAATATCATGATAAAAAAATTCAAATGGAAATTTTTCTAAATTTTATAGGTTTTTTTTTGAAAATTGAACAATCTCAGTTGTTTTTGCCTAATTCCAATTTCAATTACCGCTAATTTGTTCGGTGGAGCGCCACGTTTTTATATATTTTTAATTTTTATGTTATTTACCACCGATTTTTAATGTTTTCGGTGTATTTTTGCTCGAATTGAGAAAAAGCAAGACAAATGCAAATTTTCAATTAAAAAGCACGCTTACAGGCGTAAAAAACATGACAAAGTGCCGATTTCGATTTCCAAAATTAATTAATTTCATTGATTTACGAACCTGTAATCGTGCCGCTTTTTTAATTGAAAATTTGCATTTATCTTTTTCTCTAAAAGATAATTCGAGCAAAAAAACGAAAACATTAAAAATCGGTGGAAAATAACAAAAAATAAAATAAATAAATCTTGTTAAAAACGTGCAAAAAATCACGCTCCATCGAATGAGCAAATCCAATTGGCGGTAATTCAAATAGTAATTAACAAAGACTGCGATTTTTTTCAATTTTCAGAAAAATCGTATAAAATTAAGAGTGGTAAATATTTAAAAAATTATTTTATCATGATATCCGGTTTGGTACCGTATTTTAAAGCAATTTCCCCACTAGCGCTACTCCACCTTTAAAGTGCTAATGAATTTTTTGTACGTGGTGTCAGAAAGTCCCATTTCGGTTTAATAAAAAATGCGGAGAGACGCAGATTTCTCAATTACGCTGCTATCGTTAAAAACGTGCTGACGTCACATTTTTTTGGGAGAAAAATTCCCGCATTTTTTGTAGATCAAACCTTAATGCGACAACCAGGCACCACGTGTTTTTACAATTACACATTATCCTGGAACTTTCCAGAAAATTTGAATTTCGCGCCAAAACTTAGGGGTAGGTCCCATCATGATGAGTCACTAACGTCAAACCGATATATGTAAAAAGAACCAATGCCAAACTCAAATTTTCTTAAACTACAGTAATCCTACAGTAATCCTGTACCCCTACAGTACTACTACAGTACCTTGGCATTGTCCCCGACCAATATACAACCCAAAAATATACCTTCAAAAACAAACACGTAACTTTTCCCAAACTACAGTAATCCTACAGTTCTCCCACAGCTGCAGTACTACTGTACCTCTTTAGAATATTTTTCTGTTTTTCGATTTTTTCAAAAAAAATTCAGTTTTTTCAAAAATTGATTTAAAAATATTTCAAGTTACTTTTTAAAAGCTTTTCAAAAGTTTTTCAATCTGTAAAAATAAAATTTTACGGATTTGTATTTTTTAAATTATCTGAAATTTTTCTCAAAAAAGAAGACTTTTTTTTTCCAGTTTTCAATTAATTTCGGTAATTTTCAAAAGTTTTAGGTTTAAAAAACAATTCAATTTTTATGTACCTTAAGATTTTATCGACATAAAAATCATTAACAACTACGATTTGTAGCGGCAAACCTTTGTTTTTGGCAGTGGAGCGTTGCGCCTCGTCTTCAAAAAGACAAAATGGTGAAATCCCAAAAATCAAATAATTGTTCCGCTACGACAAAATACCGCTAAATAGTAATTTTTCATAGTAAGTTCCTTTTCAAAAGTGGCACAGACCTGATGAAACGTGTCGTTCACCTCCTCCGAGTCCTGCCACGTGAGCTGGTGCTCCGGCATGGCTGATACATTTGTGAATTTCGCTAAAACAGAAAAATATTATCAATAAGCGGAAAATTTCGTGGTCTCAACACGACAATAAATAATAAAAAGTATTCGTGGTGAGACCCGTGTTGTTTTGGAGCAAAATTCTCAAAATTGGGGTATCACGTTGTCAGCGTCCCGTTTCGGTTTGATCAACAAAAAATGCGAAGTGATGCAGAGTTTGCTGACGGCACATTAAAAAAAATGCCCGCATTTTTTGTAGATCAAACCATAATACGACAGCCTGGCAGCGCCACGTGCGGGGATTAAAACCCGAGCCGCACAGAAAAAAGGCGGGAGTTTTTTCGCAACATCGCGGCACGGGGCGGTTTTTTGTTGACCTTTATCAATAGTCTAGATACTTGCGATTTTTGCAAATTCATACAATCAACAATAAACCGACCGTGGCGCAGGGTTGCAAACTCTCTTTTTCTGCGATGCTGATTTTTTGCGAAATTCACGAAATCAAAATTACAGCACACGTGGTGTCAGTGTCTCTCATTTCGCGGCTTGACCTATGTAGATCTAAAAAAAATGCGGGAGAAGTGACGCAGAGGTCTCAACTGATTTCGCATGGCGCCACACATTTTTGGACAATTCTCGCCGCATTTTTTGTAGAGCAAACCATAACAGCCTGGCGGGGATTAGAAACCGCGCCGCACAGAAAAAAGGCGGACCGTAGTCTAATTCGCAACACCGCGGAACGGTTTTTTACTTGCATTTCAGATTCAAAAAATCAACAAAAAACCGTGCTGCAAGGTTGCGAATTCGTGCTCCGCTCCGCATCTTTGTGCGATGCTGCTTTTTTAGCGAAATTCACGAAAAAAAAATAGAGAATAAAAGTCCATTTACCGATACAAGTGACTGCCGATAGACTTCGCCGATATACATGGAGAGAAGTGTAGAGAGTGAAATGTGAAGTTTATTAGAAAACAATTTTTTAAAATTATATGTTCATGAGGAAGATTTGCGGTAACTGGTAATCGGTTTTAATTGCCTTTTCGAGTATATGAACTATTTTAATCACTTGATGATCGCTAGTACGGCTTTGCGCTTCCCATCTCTAGATGACGGAATCCACGTGGCGATACTGATCGAGTGTTGTTTTGGAGTGGTGGTGCTGTTGGTGCTGGTGGAGGGGCGGAATTGAGGCGGTTGCAGTGGATATTACGCTGATTGGATTGGTGGAGGAAATGAGAGAAATTTGCGAGCATAAATTTTTAAAAAACGAAAGAAAATTCTTTGTTATTTGGGGAGCAAGGCGAAAACGGTGTTTTTTTGGGTCAAAAAGTAATAAAAATTTACAATTTGACAGAAAAATGCGGCACTGAAAAGCTGTTTTTAGGGTCGAAAATCAAAAAAAAAATTTTTTTTTGCTCATTATTGTGGCAGAAAATGGCGAAAATCGGTTTTTTCAAGTTACATCAAAACAATTTTTTTGCATTTTACAGAAAGATGAGGATGTTTTAAAAGTTTAAAAAATTTTTTAAAATTTTTTTAGCGAATGGAAATTTTCTGAAAAATCGTGCAAATGCCTAATTTGTGCAAAAATCTTATCTGTTCAATAATTTTTAGAAACCACCGGTTTTAGAAGGGTAAAAGGCAAAAAACTGGATTTCCAGTGAATTTTATACTAACAATGGGAAAAATTCGGAAATTTTTTAAGGAAAAATCAGAATTTGCAATTTCTACACATATAGAAATTGAGGAGAACTCCTCGGATTGTTTGCGGAGTTACGATAATTTTTTCGGCTCAAAATTAACGATTCAGAGAAACTTTAAAAAAACACAATTTCAGTGAATTTTACACGAAAAACGGAGTAAAAAGCGTTTTTAGGAATTTCCAAGTCAAATTTCCGATCCTGCGATTTCAACCCTGAAAAATAGCGAAATTGAGGAAAATCTCGGATTTTTGCAGATAAGTAATATTTTTTCCAAGTAGCTGATTTCCGTCGCCAAAACCCAGAATAATTTACCAATTCGACGGTGGTGGGAGAGCCCAGGCTCTCGTTGGGCCGTGAGATCCGAGAACCAATTGTGCCTGCAAAAATCGAGTAAACGCTAAATTGATGTTTTCCGCTATTAAAGTGCATATAGAAATACGAAAAAGCAAAAAAGAAAATTTTTTTTAACCCCTGGAATCCGAAGAGCAGTTAGCTTGCGGATTGGACGAAAAGGGCCTAAAACTTCATTTTCCTGAAATTCCTCGAAAAACCCACTATTATGGGTAGTCGGAGATGGCTGATCGCCTCGTCGCTTGTAATATTGCACGCCTGGCCACCGTAGAGAAAATAAATGTAGACTGCACACTAGGATGATGGGAAGAAACGACAATCGGCATGCGTCTGGAGTGAAGAAATCAAGATTTTTCAGAAAATTAAAGATCTCTAAAGGTGTACTACACCCTTGTTGAAATGGCTTTCAAACATGCCTATGGTTCCACCCAAATATCATGATTAAAAAATTAAAATTCTAGAGTTTGTTTGAAAATCGAAAAAATCTCGGTTTTGGGAATGCCTAATTCCTATTTGAATTAGAGAACCGCCAATGATTTGTTCGATGGAGCGCCCTTGCACGTTTTTAAATTTATTTATTTTATTTATTGTTATTTTCCGATTTTCAATTTTTTCCGTGTAGTTTTGCTTGAAAATTTTAGAGAAAAAGTTAAATAAATGCAAATTTCCGATTAAAAAATCCACTGAAAATGCGTAAAACTAATATGCTAGTTTCAGGTTTATTGTCGTCGAAAGTCATTATTTTAACAGTTTGACGTATTTTTCACGTTTTTACTTTTTAGCAAACACATTAATCTTGCTTTTACTTTCCGATAAAAATACACAACTAATGAAGAAAACAGTGACATAATAATAATAATAATAATTAAAATAATTTACACTATTACGCTCGCTGGGAGACATGAGGGAATACAGAATACATTATCATTGTTCGCTTGAACTTGGTAATTGGTGCAGGGATCGTTTCCATTCCATTATGTTGTCCTTGTACTTGCGTTGTCCTTGAGTAGACTCCCCCATAGTGGGCGGGCGATTAGTGTAAAACAACCACGGAATGAAAAAATAGAAGAAGAATAGAATATATTAATAAAAAAAATGAGGACTGCAAGCGCGCTCCAAATAAACGATCGCGTTCAATTGGCGGTAATAGTTTTCAAATAGAGGCAAAAACTTTTTCAGATTTTTTCAATTTTCAAAAAATCATATAAAATTTATAATTTTTTTTTGAAGCTTTTTAACGTGATATTTGGTCACTGTGGTACCATAGGCGTGTTTTAAAGCCCCCACGAGTCCACATTTAATAATTGAAAATTAAAAATTCTACCTAACAATATCGAAAATTCCAGAATCTCCTTGATTAAAACTTTATTATGCCTAAAGAGTCGCGTCCACACGGAGAGCGCAAGAAATCTGAAGAATATTTAGGATTTTCAAGGGAAAATCAGATATCGGTTTTTTTTAGCAAAATACCACAGAAATTGCGTATGGAATGAGTAGAAGAGCCGGGTTGACTTTCCGGGGAAAGTTTCGACGTGTGATACTCGTCTCAGAGAGCCTCATTCCCAAGAATCCGGTTGCGATGCTGAAGAAAATCGATGGAAAAAGTCTAAAATATTACCCCCTGAAACCCTACCTAAAAATCAGAAAATACGAGAAAATATTGATTAAATGAGCCGGCACATAATTGGACCAGCACTCCATTCAAGTTTCGAAACGTTTCGCCGTTTGAAGTCCAGAAGCCGGGAACGGATAGTGGCTCGAAATGCTCGTCGACACTCATTTGACTGGCCCTGTAGAGCCCGATGATGGCAATGGCGAGCATTCCCACTTCCACATGGTGTCAGGCTCTGAAAGTTAAAATTTAGCTTTTAGACGGAGAAAATCGATTACTTTAAGTGACATGAACTTGATCGAAAAGCCAGCGTTACGGGTATTTGCGGTGCAGGCCCGATTCCCGACTACTCGACACAGTATTGGAATTCGAGCGGATACTAACATCTGCCATTTTTTCTCTGAAAATTCAGAAAAAATAAGTTTTAAAACAGAGTCTTAAAAATTAACGGAAAAATTCGAAACTTTTTTTTCCGCCATTGACAATGTGCCTTTAAGGTACCGTAGCTCTTCGTGTGAGACCACTGCGCCGGGCATCTGATTTCTGGGAAATTTGTTTCGAATCCTACGTTCTTTCTTTCTTTTTGTTTCGGTCATCGTTTTTTTGTTGCTCAAAAAATCCAATTTTCAGACACAAAATGTCAGAACGCCAATCCACATTAATTTTGACTATCAAGGTATCGTCATTTCCTCCGGACGATAGATTCGGTGACGGACCTCGTTTATCCAGTTCATTTCAGCAAGCTCTGTACGTGAATTCCCTCCGATTTCATATTTAAAAGAATAAGCTCGTTTTCAGGGAAAAGCGGCCCAACAATGTACGGTGTCTCCAACGCATTTGATTTTCCAACAAACTTGGAGAGGAATCTTGATAATATCGAAGAGGGAAAAAATCTTGAGACAGTATTTATTTGATTTGGGCCCACTTTTACGATCTGTTAACTCCTGATTAGACGTCGATCCAGAATCCCGCCCTGAAGTTCGGTGAAGTCATCCTATGGAACGAATCGGACTGTGATCACGATGAGAGGATAATCCTTCATATCAAACGAGAAAAACCAATTTATGAAGCGTCTGCCAGCCAACCGTGAAATGGAGACTTAGTATGAAAGTCGGTCGCGTCATCCAGCCCACCGACCTCGTTCTGGACGCCAGTATGCACCGTCACCATGCGTATGTTTCTTCTTGATTTTCGTCTCTCTAACCATATAAGTATTTATTTCAGCAGAGACAGAGGCGACCCGAGCGGAGCCAGACGTTTGGCTATACGCCTGGATTCGATTCGAAACTACCATGAAGGTCTAGACCCTTTCAATATGACTGCAACATTCGAATCTTTTGCCAGTTGCGATCTATCCGACCCAGCACGCGTCTGTGAAGCGGTATTTCCTTTAAATTTTGTACGGGATTTTGAACAAATAACTTTCACCCGGGCATGGAACGCAGGCTCTCCTGACTCTAGGAAATTCGGAGTTTGGCGCGGATACCAAAGCCTGCTGATAGCGACGGCGAAATTGATATCGAGCAGAAAGAATGCTGGAACTTGCCAGAAGACAAATGCCGATAAGGTTGCTTTGTGGATTCTCGTAATTAGATTTTGCATCAAGATGCAGCTTGGCCTGTAGGTCGGGAACGCCTACCGACTTGCGAAAACTCTCGCAGTTCGACTTTATTATCCCACTGCAGAAGCCATTTTCACCCGAGGAATTTCACGGACAAGACCTTGATCTACCCAGCCGTCGGAGAATAATTTTCATTTCAGTGCTTTTGGTCGATGCAGCACAACGGTTTTCTGATCTATGAGCTTCAGCCTGTTCTTCTCAGACAGCATGTAACCTCTGTCAACGGAAATTTAAGTTATAATATTCATTTCTTTGTCCAGAACCTAATTTTAATTACGGCTCCTTACCCGCGTCGTTCCTGCCAGTATCACCTGAGGTCTCTTCCGTTGACAATGAGGGCACTCTAGGATTGATTGATGACCCACACCATCTTCTTTCATTCTTCGTTCATCATCTACAGCTGGTTATGTCCTTGAAGGCTATGGTAATCATGAGTGGTTCTTATTTTGAAACAAACGCTTTCAACAGGCCGAAGTTCGTGCTGTTCGAACCTCAGAAAACAAATCTGTCCGTTACCGCATTGTTCGTACATCGGGATGTCCATTTTTGAGGCCCAGGGTCCTTCGTTACTCAGGTCTCTAAAGTTAAATTAAACTCGTCCTTTGCACCCCTGAATTTTTCAGTTCGTTGTTGGTCCAGTCAAAGGAATCACTCGAATCAATGAAGACTCATTTGTGCCAAACATCCGAATGTCCTACTTCAAGATCCCCAATAACTTGAAGGAAGGAATCGCTATTGAGCGGAGGAGTTCAATTCGTTGGAAAGTGACAAGCTGGCGACAGTGAAATTATGAACACCGAATCCATGTCCAGCGTTCCTTGTAAACTCCGGTCTCTGGTGATACGGTGAGTCTTCAATTATTATAGTTTTTATTCTACGAGGAAAATATTCAGCGCTTGTTCCAAGTGTACTTGAAGCCACCAAGCGATCATGGCAGTTGGCGGAGAGTGATTCGATGGGATTGGATTTCAGCCAGATTACAGTTGGAGACTCCTTGGTAGAGGAAAGTGAGGGTGTCAGCATGATAATTGTAACTGAATTTCGAGTAAGGTTCCTGGCATGGGTGCTCCGTCCATTACTGGCTTATCAAGGATTGCCGTGGCTACCATCATGGACGTATGCTCGACAGCCATCTGTCCTCCGTTGATTGCGATGAGTATCGCCGTCGAGCAAGAGCAAGATCGGCCAGAACTACGCCAGCTGGTAGTTCCATTGAGAGCATCAATTCAAGCACATCAAGAGCATCTGCAGCTACTTCGAGGCTCAAACGTAAGTTTTTTTAAGGTTGGAAGATGATAAAAACAAGTTTTTCATCGATTCGTTGGCACTTCAAGCAGAATTCCATCTGGGTACTAAAGCTCAACATCTTCCAGGGTCTAATTAAATATATACGCATCCCGTTTTCCCCCGTGGGTTTCAAATGTTCTGCTCATTTTTAATCTACCCGTTATCCAACAAACATATGTTAATTTAAACGTCAAGTTCACCACCATCCCATTCCGCACAACTTTTCTCTCGTAATTTTCTCTTAGTGCTCAAATGAAGGAGGTAGGTTATTCTAGTGAATATACCCATGTTAAGCCGCGAATACATCCAGAAAGTCCCGGCATCAAGCCGGGAGATACTCCCGCCATAATGATAGTTGAACGGTACATCCAAGATAGGGTAGCATCGCGATAGACGTGAGCAAGTTCGTTATGCACTTGAAAAACTGAAATTTCAGAAACGAAGATTAGGTGATCGGCAGAAGGTTAAAAACAAACAAATGAAATATAGAAACGAAGACAGTGATCGACGTATTCCGAATACGAGAAGCCATTCCCGGAGATACAGTGATAAGAATCTGATCGAGAACACAATGAGCACACTACCACCGGGAACATGAATTCCATGGAAACACGGAGACAAAGGTCACAGTACTGCAAAAAATGCGAAATTTTTTTGCTTTAAAAAATGCAGCACTGCCGGGTCCCACCACGACAAATTTGTTGTCAGTTGACCAATAGAGTGTGCGCCTTTAAGGTACTGTAGTTTCAAACTTTTGGCAATAGATTTTCCACAGTTTTCCCGTGAAACAAAAGTTTGATACTACACTACTCCTTAAAGGCGCACATCTTTCCGCATTCAACTAACAAAAGGTTGTCGTGTCGAGACCCGCGGCCACTGCAATTTTCGTAGCAGAAAAAATTTGAAATTTTCAAGTCTTGAGGATAATATATAATAGTTTTACCTGAACAATGGGAATTTGCATTTACAAACTATCCAGACAATCGCTGAACCCGAAAGTATCACTAATAACGATCGAAAGTGTCGCGGAATGTCACGTATCGATTGGTAGATCATGAATATGTTGCCAAGTAACGCGAAAATCTTGAAAAGTGGGGGATTTTGCTTTTAAAAAAGCCAAAAAAAAAAACTTAAATTCGCCAATTCCCAGTTTGAATTCCCTCCAAAATGAGAACTGCAGGACCCATCAGCGATTTGAGTGGGCGGAGTCCGAGGGCGCTGATTGGTCGTGCAGTTCTTATTTTGGAGTGAATTCAGCCAAATTTGAAACATCTCGTTTGTTTTGCAATTCTTTTGTGTTATTTTCGACATGGGGTTCATTCTGGCTTTCCTCATCAATGGTGTAATGTCGTATTTAAAACGGGACAACCGGGACGTTTTTATGAAAACACTCAAAATAGAACGGGAGTTACAAACTGGGCGGTTAGAAAAAAAGATAGGGCGTAAATTTTAGTGTATTCGAGGCAAATAAAAAACTGCATGTTTCCAAGTCATTAATCTGCATGAATTGATTAAACTGACTAAACTCACAAACAGAACTTTAAAATGTGCAACTGTAAAATCATGAGGTATAGAAATTGTCCCGTTATCCCGTGATAATTTTGAGAACGCAGCGGGACGTCCCGTTCCCGTGAAAACACTCAAAAAACGGGACTACGTGACAAACGGGACTCGGGACTTGACACCCTTGGGCATTCCTCATTAAATCACGCTCCATTGATAATCGCCCTGGTCGTGTACTCCACACGGACAAATCACATTTAGTTTTACCGAACTAAAATCGAGAGAATTGGCAGAGTATTTGCCGCCTGGCCTACGCCCGGCAAAAACTTCCATGGATTCAAAATATGGGCGAAGCCAGAAATCCGTGATATTTTCAGCACATTTTTTTGCTTCGAATCTCAGTTTCTCACCACAACGAACCACTTCACATTCGGTTGCCGCCCCCTTCGAAACGTGGACTTCCAACTGCATTCACCGATTCGACACTTAGCTGGTACTGACATCATCATATTTACCAGCTCATACTCGAACTCCGGAATATACGGCACCACATAAATCGGTGAATGGCTGGTTCTGGCGGTGGCGGCTCAAATGACACTGTTCCTTGATCTAAAATTTGTTTTTTTCTAAACAATTGTCACTACCAAATCAAAAAAAAAATCTTACCAGAACTCATAATTTTTGGATTTTAATTTCGTAAATTGCAAAACAGAAACTGTATTGGAATTTTTTCGCTTTTTATTTATGGGAGGGGGAAATTCTTTGTTGTTGTCAATAAAGTAAAACAATTACAGTAAATGCCAGTACAATAGATTTTCACGTGTAATATATTAACCAATTACTATATTTTCAATAACTCTGTCCTCTAAATAGGTAGTTGGGGGGAAGGTGAGGGAAAATGGAAATAATGAAGTGAACTGTTTTGCGTACTTGCGATAAAAAAATCAATAAATGGGAACAAGCCGATGATAAACTGATAAACGTGAATATCGAGAGAGGGAGGAAGAAAGCACGTATACCCGTTAATGAAATCAAGTTAATGGAATTATTTGGTTTGTGAAACAAAACAACGAAAATGAATATCAATGTTTGAGCATAAGGAATGAGGGAATGGCACTCTGGTGGTGGTGGATAAATGAATCGGGGGGAACGGAATCTATGGAAGTCTAGAATACATCGCATCGAGTTTTCGGGTGAGTAGTGATCCTTCAGGTTCGCCAGACGCTTGCTCTTTCCACGTTCGCGTGAGAAGATCATTCTCGACGCCGAATTGCTCGGAGAGACTGATATCGCGCACTTGCTGGAAAGACAAGAGCCGGCTTCTTGCCAACAACCATGTCATCGAGGATCGCCTTTCGAGTTGGTCGTTGTTGCACGAAAGCTCTTCGAATGATCCCTTGATTCCTTGGTCGGCGCAACATCGCTGGGACGAGCACCTAAGGGAATTGAAAATTACATATATATATATATATATACACTCCTCAACGCCGAATAAATATTAGAGCGCGCTTACTGAGCTTCGCGTTCATCCGCGGCATTTTTGACTTTACACTGAAAAAAGCAGATATTTCAGATTTATCGAATTTTTAGCTTTGTTACAATTTTTTTCATTTTTCGAACACTTTTGTTAAACAGTGAAAACTGAATTAAAATGACTAAAATGAACTTTTTTCGTTCACTGGTTAAGGTGAAATGGTTGGAATTTGAAGAAATCAAAGGGATTTTTCTGAATTTTGTAATAATTTTCTATTAAAAATCGGTTTTAAACCATTTTTTGACCCTAATGTCACAAATGTAGAAACCGGTTTTTAACGGAATAGAAAATCTTTAGAAAATCACAAAAATCCCCGTTGATTTCTTCAAATTCAAACCAGTTCACAACCAGTGGACGAAAAAAGTTCATTTTAATTGTCATCAAATTCGATTTTCAGAGTTTAACAAAACGTTTGAAAAATGCAGAAAGAAAATTTTAAAAGCTAAAAAATCGATAAGAAAATATGCTCTTTTGAGCTGGAAAGTCAAAAGACCGAAGATGCAGAAATGCGAGGCGCAGCAGAGGATCGCGCTCTAATAATCGGCTTTCGAGGAGAGCGTGATATAATATATTTTTTTTGAGAAATTTTGCAAGTATGTTAAAACGAAAAAACCAACCTCAGCATCAGGTACAACAATAGCAATAAGACGTCTTCAGGCTCATTCTTCATCAACAGATGATTGAGCGACATATTTCGAGCGGACATACATTTTCTCAATCTTCCCGGTGCCACGTATCCTCCTTGCGAGAGCTTGAAAATTCTTGCGATCCAAAATTTTCAGCGTTCCCTCAGGAGTCCATCGTCCAATGTCTCCAGTATGCAACATCCTCCTCGATCGTCTCCTTCGTCTGTTGCTCTTATAGTATCCCTTGAAGACGATGTGTTCCTTGCGAACAGACACCTCGCCGGCTTGATCCTTCGCGTAATAGTTCAACTCGGGCACGTCGACCAGCTTGATCTGACACGATGGGATTACCATTCCGACGTGTCCGGCTAGCGAACTCTCCTTTCATCGAGACAGTCCAAGCGGCGACACATTCCGGTTGACCGTAACCGTCGACGGCGACCCATCCCATACGAGCGGCACGAACGAAGGTGAGCACATGCGTCGAAAGTGCGATCGTGATCATCAGACGCACACGCCCTCCGAATCCATCGCCAATCTTTTCGAATACCAAATTGTCGAAGAATCGGCCCCGTCTTTTCTGATATTGAAGCTGGAAAAAAAAAGAAGATATTAAATACTATCAAATCATTCAGATCTCTCATGATGCCATATAGTCTCTGGCCTTGTATGAGATAGCGAACTCAAACAACATCTTCTTCAAAGTACTTCACTTCCGACATCACTGATTATCGTAAAGCCGATTAAAGACACGAGAAATCGGGCACCATTGGCACAGTCGGCCTCAACTCTTTGATATCCTCGGCCAACACACGTATGTGGTCACCGCGTTGGAATCCGACTTTCGCGCCGACACAGAAGCACACACTCTCGATGACTCTCTCGGAGCGTCATGTGAGCCAACGGAAGGAAGCTGATCATCGAATCGGTCGCATGCCACTGTGCTTGTAGAAGTCCATACACACACGTCGGCGATCACGTTCGCGTGAGTGAGCATCACATTTCGGTGTTCCAGTCGTTCCTGACGTGAAGCATATGGTCGCAAGATCCTCTGGTGACGTTTGGTGGACTGTGTGCTGAACGAGTCTTGCGTTCTTTCCTGTCTCGAGATCAAGTGAGCACCTCGACTCCGAGACGATGACGCAGTCGTTTTGAGCTCCTCGGTGACTGGTTCCATCAAGCGTGCTCAAACTTGGGCATTGCTCCTTGAACTTTAAGAGACCTGAAATCAAATTTCCTTTTGGTTTTAATTTCCTTATCTAAACTCACCAGTGGCCTTTGAAATATCATCACAGACAACTTTCGAATCTTGATCTCTGCCTGATTCAAAATGAATATCCAACCGCTTCTATGATCCAAGGGTCTCGTAGATCGGCACAGTCTCATTCGAATAGTTGTAGGTGATTCGGTGATGATCCATTCGGCGCAGAGTTGCTTCGATTAGATCCCAATGTTCTCCGCCGTTGCCAGTCGGAACGCCGGAGCTCACGGAACGCGACGGACACTTTGTCGGCTGGCTCAGAATCGTATTGTACGACTCCCACACGTACGAGATTGAACCATCCGACTGTTATGACTCGACGTCCGAACATCGGCCCGGTTCGAGAAAGGGGCTCCACGGCGAACGACCACCCTGGTAGAGGGTGCGCGCGTCTTCGAACAGGAAGCCTCGTCAGTTCGTCGTCCTTCAGGTGGCGCTGATGCGGGTACCATCCTGGAAATTAACATTCTAGTCGGGGGGTTTTTGTAATTTTTTTTTCGCTCTTTTTCTATTGTAAACCGAGCCACGACGCGACACGCCGTAAATCTACAAGCCCAAGTGGCCTAATTCGGCAAAATCTTACATTTAAAAATATGGGAGGGAAGACAGAACTCCATGATTTGAGAATAAAGGAGGTAACGGTTCGGGCGACGCCATTTTGAACGCTCAGTATCGACATGAGCTCAACAAATGAGATCGTAATGAAACTGGTCAAAAATTTTTATGGCGGTTCAAAATGTTGAAAAACCTAAGTACACTGATTTTTATCCGGCTAAAATCACGAATTTTCCCATTTTTCCGTGTCACATCTGTTCGAAGTTGGATTATTTTCTTGGAATTATCGTTTTTTATTACTATTTTAAATTGGTAGTTTATCTCATTTAATGTCGTCGATTAAGTACTTTTAAAGCCGATAGATAACCAATTTCGATATTTCGGGTCACCTATCGGCTTTGATAAAAGTACTATAAGACAAAATTAAATTAATTACCAATATAAGTAATAAAGGACATTTCAAAAAATCCAATTTCGAACAGATGTGACACGGAAACAAAATGAGAAAAATTCGTGATTTTCACCAAAAACAGTGTAATTTGTGCAAAATTTCTGTGAACCGACATAAAAAATTTTTGAAAATTTGTGGATTTGAGCAGCTTCATTACGAAATTCGTTCATTTGAGCTCATTTTTGGTCTATACGTTCGAAATTGGAACGTCCGAGCCGTTGGTCCTCCTCTCTTTAAGTTTAAAAAAAAAAAGACGGCATTATTTTGCCCAGTTTCTCTCCAAAACTCACCGGCAAAATGCGACTCTGATTCATAGGATCCGTGGCTGACATTTCCCGAATAGGTGACCCCTCTGAACGAGTAGGATCCCGACGGTCGATGACGAGCTACAAGTAGTATCCGAGGCCCTTGGTGACTGCGGCGGCGGCTCCGATATTTGAACGTCCGGTGGAAGGGAAGAGTTCGAGCTTGGTGCCGAAATGAAATCGACAATACTTCTGGAACTATTAAATTATATATAGAGAGGACGGGTGATGATGAGTCATCCAGGTTGTTGTTGTCGCGCTGTGCGCACGCCCGCACTGATCCCCACAAAACAAGACAACTTATTTGAAGTTACGAAATCGAAGTTTCTTTGTTATTTTATTTTTCAAGATGGTTTTGGTTTATATACCATGTAAAAAATACCTAGGGGTTTTTTGCGCGTTTGGACTCAAGTAGAAATGTTGAGCCTTTTCTGAAAAGTTTAATCCGATCAAAATTTTGGAAAAAGGTGAATTTTAGCGACGCCGTGGTTTTTCGAAATATTGATCTGCCATTAAAGCCCGTGGTGTAGTCAAATTTTTTTATTGCTTTAATTAGCGACGACTCAAAATTGTCCTTCTGTAAAGAAAACACAATTACCCTTCATAAAAAAACTTAAATGTAAAATTATCTAAAGTTTGAAATTTGACCGTGGTCAAGCGGCTGGAAACGTTTTTTTAATAATCGTCAAATAATATACAGTGCAATGATCTCATTGCGTTTTCAACTTTATTTAACTTTAAAGTCATGAACGGCGAGATTTGTTTTTAATTTTTCACCTAGAAATCTCGCCGTCCATCGGCTGTAAAATACCTAAATGAAGTTGAAAACGCAAGATAATTGCACAATATACTCAAAATTTGACGTGTTTTCAAAAAAAAAAATACTGTTTCCACCGTAGCGGCGACGTCGGTCAAATTTCAATTTTAACTGAATTTAGGCCATTCGCTTTGTCATAACTTGTTTTGAGGAGTTTTCAAGAAGTTTCATTATGAAATTCGGTGTTTTCAGACAATTTTGAGTCTAACTATAAAAGAATCGACTACACCACAATGTCAGATCAAAGTTAATTTCGAAAAAACTCGCGAATTTTCGCTAAAATTCACTTTTTTTCCGATCGGTAATTTTGATCTGCCATTAAACTTTTCGGAGAATCTCAAACATTTTGAGGATAAACGAGCAAAAACTAGTCATTGTTTGAGTTGCCAATGGTATATAAAACATGAAGACCATCCTGTGAAAAAAAAACAACAAAAACACTTGAAATTCGCAATTTCATAAGTTCTCCAAAAGGGAAAACATACACACACCTCGATTGAGACTGTACCCACGCAGCCGAGTCTGTGATAACCATTTTCTGGTGTTTCTGTGTTTACGTGGTTAATAGTCTTCTGACAAAAGAAGACATGAAACCGCTTCTAAAATGAGATTAAATTGAGGAAACGACGACGACGCAATAAGAGGTGCAAGGAGTGAGGGTGAAAATCGAAAAACAAAGAAGAGATCAACGTTATTCCATCTTTAGAACTTTCTTCACTGCCAGCAATTGTTAATAATAATAAGGTTTTTAGGTCGATAACTCTTTCGGTGATCAATACAAAAAGGGGTGAAAACCCGCCTCGACAAGCCTTTCGATCAGGCCAATTTCTTTATCACACTCTCCGCAGATTTAGGAACAAATTTCACCTCCCCGGCAAGGGGGCAAAAGTTTCGAGAAGTTGTGTTGCGCGCGAAGGGGATGGAGAAGATGGAGAAGATAGGCAAACACGTACACCTACTCAAACAAGTAGTAGTGATAATTGATTTGATTAGTGATTCGGGTGGGCAAAAGGAGCGAGAGAGAAAGTGAGAAAAAGCGAAGAGGGAACACGTGTAATCAACAGTGTGCCGTTCACGCCCTTTGGACTAATGCAGTTTTTTTGGTGGAAATTCAATTAACACTGAAAACTAGTTTTTAAGTGTTTACGCTGTAACGGGCCAGGTTTATGAGGCAAAACGATTGAAGAACTTTAAATGTGGGGTCCGAAATCTGAAAAATATTTTAAATTGACTCCAAAATTTCCCCTGACTCCGAAGATGCGAAAAAATTCAAAAAAAATTTTCCTGACTTTATATTTAAGCCTGAAATCGCCGAATTTCATTTAGAAATTCGCATTGGGGACAAGCGCACTTGCATGGTTCGATTTTTTTTCGTTTAGTTTATTTATTTTCGCCGAATTCAATGTTTTTGAAGCCATCATTGACCATTTTTGTCGAGTTCTCATGGAAAATTTTTTTGAGAGAAATTACATGAAACTGACTAAAAAATTAAATTCGGCGAAAATAAGTAAAATAAACGAAAATCTTCGCAAACTTGGATGCAAGCGCGCTCCAATGAGAGATTTCTTTGGGCGCTAGGTTGAAAAAATGGGGGCACGAATGAAATGTCGGCGATTTCAAGCTTATATATAAAATCAGGGAAATTTTTGAATTCTTTCGCGATATTCCGAACCAGGGAAAAATTTGAAATCAATTAAATATTTGGTTCAGGTTTCGGTACCCCGCCTTTAAAGGATTTTTTGGCTTAAAATTGGAAACTCTTGGTTAAAACTTGTAGAAGAGTAAAACTGTACACGTTTTAGACGATTCAAAAGTATCCAGGGAAGTATGCAGAAGTTGAAAAATTGCGAAAAACAAATAAGGCATTTTCTCAACGCGTGAATGCTTAGACTGAAAATAGTGTATTTCTTCCAATATATACGAAAATACGACTCGCACTGGTTTTCGATCGATATTTATAGGTGGAGTTGCTATGCATAACATTCCGGAAAAACACGAGATTTGAGGAATTTGAGCAACTGTAAAGCCAACAAAACATTTTGTACAATTTTCTTGTTGGTCTTCCTCAGAAAATTATCAATCAAAAACCAACTGACGCAGAAATCGATATATTCTGCTAGTTTTAAAAAAACACATGATTTTTAATCAAAAATTGTTAAAGTCATGCAATTTTCCTTCAATAGTTTTATACGAACTATTTTTTCTCTGGAATTCACATGCTTTAAAGCAAACGGCCGTTTCTCAAGCGGTTGTTGGCTTCCACGCGATGCCATAGAAACACTGGGGCACCAGAGAAACCGGGGTCGAAGCAAATGACCAAAACAACAGACGTATGTGAGCTTTCGTTTTCGTCTTCTCGAGGAACCACCACGCTGGGACTACAACTACGATTGATAACGAAAAAAAAATAGAAGAGATGATGATAGTTTTTGTAGCAATAAAAAGAGTGACAACAAGATACACTGTATCTCACCCACACCTTGCCGTACTTCTAACGCAGATAAGGAAACCTAGTAAGATTCGGGGGGTTCAAAGTGTTGGAGCCAAAAACGGAAGCCTTAACGGAGGGAGCAATTGTTCGTTGAACGAAGAATAAAAAACCATCATCTGCGTCTCAAAAATCACGAGATGTAAGTGAGCGGGTGGGTGAGTGAAAGTGCCGGGGAGTAAAACAAGTTATAAGACACAACGAGCGACGTTTGGCCGCTGCTGCGTTTCCTCACTCTCTCCTAGTGGGCGTGTGGGCACACTCACATGGAGCGCATGCAAGGGTGTATGCGCAAGTGGTACATCGACTCGGTATGAGAACAGAGCACAGTAGGAAGGAGCTCACGTGTTGCTCCACTACTCAGTGTTGCGTACCGTCTACCCATCTGTGGGCCACCGCGGTGCAAAGTACCGCACAGTGGAAGGAGGAGAGTTGAAAAATTGGTTTTTACATCTAGAACCTCGTTTTCCTCGGGATTTTGAAGAGAATTGGTTGACTTCTTGAATTTTAGTCGCGAAAAGCGCGGGAAAAGTCTAAAAAAGATGCGACGAGTGAATTTTAGGGCAAAAATGAACCGACACAAATTGCTTATGAGCAATCGGCTTCTCGATCGGAAAACATATCACAGAAAAATCGGAAAATCAGCAAAATTCGAAAATTATGCAATTTTCTAGAATTCCAAGCGAAATTTTCTAGAATTTGAGGCAAAATGATACGGAAACCAACGGGAAATCCAGAAGATAAAAAAATCTATCGTCGAATTCTAGGTAAAAAGCTCTGTGAATTACTCGATTCTCCGTCTCATGGGGTAGACTCAAAAATTATGCAATTTTACCTTTCTAGGCGAGACATCGCAGGATCGCCTACACAATTTCCGGAGAACGATGAATATCGGCAAATCTGAAGTAGGAGAAGGAAGAGGCTTCGGATCAGTTTTTCTGAAGAAAATACAAAACCTTCGCTTTCGCAAAACTTTCGGGAAAATTCTCAGAAAAGGCGCTAAATCAAAAGCTCAAAAAATCGACGTACGATTTGCGACGGAAAAAGCTATCGAGTAAAATATCCGAATTTCTGTTTAAAACTGGAAATTGCCCAAAAATCCGTTTGTTTTCGCCAAATTTCTCCTATTTGGCGGTCACAAGGCGAGCGGGAGCCGCCCGAGATGAAGAGCTCCACAGAGCCCCTGTGCCAACAACACACCGGTACACTCACCCAAACATATTGGAATTCTCCTGAAGGAAAACGTCAAGGGTACGACGACCGCGGCGGCGACGGTGCCATTTTTCATGGGGAAAAGAACCTTGATCGAATTTGTGATTTATTATAATCGAATTTCGCTTCTATGCCACCCCAATTACGTGACCCACCTGATTAGGTGCGCGAGTATTTCAGTGCGGTCGGCCGATCCCCCGAAAAATGGAGAAGTTGTCTGAAAAATGCGAAAATTCTATAAAACGACGGAAAAAGAAATGAAAACAAATAAAATGAGGCCGAAAAGGTGAATTAGTTTATGCAATTTTAGAAATGTGAAATTGTGGCGAGATCGAAAAAAATGCGAAAAACACGAAAACAGGTCGAAATTTCGCAAATTTTGAACGACGACTAAAATTCAAATGCACAACGTTCGCGCGTTCTCGCGCCGAAGTACGGTCGGTGAAGCCCGCATTTTTGCGCGCGCGAAATTCAAATTTTAATTTTTAATATTTTTTCTTTCTTCTTTTCTTTGATTTTTTAAGAATTGCAAAACGTTCAATTCGTTCATTTTTCGAATAAAATTGTTAAAAAAGACGAAAAAAAAAAGAAAAAATAAGACAAGTTATCGGTGCAAATAAATGCAAGTTATTGTTCGGGAAAAAAATCACAATTTTAAGTGCAAACAGATTTGTAATAAGATCAATCATTCTTTTATTTTCTTCCAAATCCCGACATGGTTTTGGGCAGCCGATCATGCAGCAGCGACCTCCACTCCCCCGAGACACGCCAACGACTCGCCGGTTGAGATGGCGAGAGGCACGAACCAAACGACCATGACCTGGAAGAAAGTGTGTGAATGTTAAGGTCTCTGAATATTCCAATAAAATTAATTGGTTTTTTTTTACCGGTGTTCTTGCCAGAAAAGCGCAAAAATTAATTAAAACTCTAATCGTGGCGAGACCCATCTTCTGAGAAACGAGGTAGGTATGCGCCTTTAAAATTGGGCTACCGTAATCGAATATTTGCATGCAATTGTTCTGATTTCCGAAGAGCGAACAAGAAAATTTGATAGAAATGACACATGAATTAGGTCATAAAATTTGCTTTTTTTTTAGATTCATATAATTCAGATCTCTATTTTGGACACGGAGTTCCATGACCTTCCTCATTGAATTTTTCGCGCTACATTGACAATGGCCTGCCGGAAACAACGTGGGAAAGTTGTGTCCTCCATGCACGGACAAATACATTTAGTATAACAACAAAAATCGAGACGCGACGCGACACGCAACGCGCCGTAAACCTACCACAGATATGGCCGAGCCCATAATGGCCTAGTTCGGCAAACTCTTCCATTACAATTGATCGATGTCAGAGTGTCACATTTCAGCTTGATCTACCTAGATCTACAAAAGCGGGAATCATACGTAGAGTTCTCAACTGCTTTCGCATGTTAAGTACGCTGACGTCACAATTTTTTGGCTAAAAATTCCCGATTTTTTTGTAGATCAAAAAACTGTGATGGGACAACCTGACACCACGTGATTTATGAAAAGCCGGAGAAATGTCATTTGGCGAGCACAAAAAATACGAAATTCGGCCACTGATTCGCGGCCACGAGCCAATGTGCCTTCACAAGACATTGCACAGTTAATAGGGTGATACCCACAAAGGTAAAGGCGCATGCTGAGCATGACTGGCCAATCTAATAGCATCTACATTGATAATTGAAAAAAGAACACACAATTCTGTTTGGCAACGTTTAGCGACGAGTGACATAATTCTCGGAAAGCTTCAGCTGAACAATTTGAGGGATTACTTAACTTCCTGTTTCCCATCGCTTCACCGTCTTAGATAGTGCCATTGCCGATTGGCAAAATGGGATCTGCCCCCAACTGCCAGTTGAATAGGATTGTCTCTCTGCGTCTATCGGTTCTCCAAGATCTTGCGGCGGTGAAGCCGTGTGTGTGGGAGTGTGGCTCCTTCATGCTAAAATGTGTAACACTGCGGGCAACGCATCCGATTGGTCGTGTTTGGCAGCGCACGGCGGGAAAACGAATCCGGATATACTACATACACAAACACACACTCACACACACCGAAGGAACGTTTCCGAGACACCTGAACTGGAGGACTTTTTATGATTTAAGTGTTTCTGCTGCCAGCAGGATGTGTGTGTGTTGTCAATAGGATATGCTATTTTAGTCCACATTAAAGTGATGAAACATCAAACCGGGTAACTTAGTCCACCCAACACTCTGTGAGCGATTAACCCTTTAAGAGTGCACTTGCACTTCTAGGCAGGATTCAATAGAATTGGGGCCTTGGAGCCTAGTCGACTTGCGATGTGAGAGGCAAGGTTGGCAGAGCTAGGATAAGCTTCTGTAAATGTAGGTCTGTAACAAGCAAGGATCTCGCTCTGGTACTGTAGCGAAATTTGAGATCAAATTAGGTTTTTCAATATTTCCAGTAACTGGCACTGTTTCCGGCCCAGATCTTAGAAAGAAAAGAAAAAAAGTATGTTAACCAAGGCGTGGGCGGCAAACGATTCCGGCAAATCGGCAAATCACTAAGTGAATTTAAAATTTCCGGGAAATCGAACTGACACTTTACGCCAATCTGCCGAACGATTAGCAATTGCCGCCCACACCTGATGGATACGTATATATGCTTTCACTCTTGTGGTGGCAGATGTATCACTGCGGTTTAATGAAAAATGTGGGAATATTTTTACAAACTTGCGGCGTCAGCACACCGCTCCAAACCACGCAAAATCAGATGAGATGTATGCGTCTCTTCCCGCAGATTTTTCGAGGATCACAGCAGAACTTTCTAACTCCACCTGTCTACTGAGAAAAGAGCCAAGAAAGCATATTTTCCTCGTATCAGGGATCGGAATCCCACGGCTAGCTAGTTGATCCTATTGCATCATTGAAGCATCTGATTCTCCACTTTGTTCGCTTTAAATCGTTTCAAACTGAAAGCGCTCTCAAGGCCGTCTTCCTCCGATTTTCCGATCATCCTACCTTTTGTTGATCAACACGTGCCCGGCGATCACAACACTGTTCAACCGGAATATCGTGTGAAGATGTTCCACCAAATGGATCGTTCGCTTTTTGGCTCAGGACGGAAGAATGTGTTACTAATTTCCATAAAGTCTGTTCTGTTCTAAAAGTTATGAATCTTCTGAAAAAATTTCAATCAGACTTAGATCCTGTCAATACATTCATGGGGAAAGCAGTGGAGTCGAAGATTTTTTATCAAAATATATGGCTACGTAGTCAGGGAGAGACTGGCTCCTTTGTTACAATATATTAGGTTTTGTTCCTTAAAATGTTCAAATGAAGCTGAAGATTGGCTAAAAGTATATGATTTTTCAATGATTTTTCAAAAATTTCAAGGTATAAATCTACGGAAACTAGTCAAATTTAAAAAAGAAACTAAATTCGATTTTGTTTGTTAGTTTGTTAACAGACAGAGCAGTTATTTTGATAATTGTAACCTGAACTCTATTTGTCTAGTTGACATCGTGAAGTAAGAATGTTTTAATGTGGCATTTATTGAAATTTAATTGTAATAGAATATTTTATTATCTAAAAAAATAGAATTGGATTATAATGTTAATTATTTTACTGTGGAAAAGATCAGTATTTTGTGATAGTTTTAACCTAAAGACATTTCTGAAGATCGTTTTTTGTGAGAAAAAATTATTATAATATGTGTCATTTAAAGCAAATTTTAAAAAAGTGCGGTCTAGAAATGTTCAACTATCAAAAAAAAGTACATTGGATTTTGGTGCCAGTCAATTTATCAACAGAAAAAGTTGAGGGTCCTAAAATAATTTCCAAACTTATTAATGCACGTGAGCATGAAAGCTAAACACTTTTTTGGGATTTTTTGCGCAAATGAATAGTGTATTTACAGAGACAATGGTAGATCAACTTAAAAGAACAAGAAATTTGCAATTTTTCCAGGTAGGACACTTTTTACTCGAATATAACTAACCTAAAATAATTTCCAAAAGTTTCAATGGTGGTAGCACAAAAAAAAACAATTTTTTTGATTTTTGAAATGAATGTAGTTACAAAGACGGTGGTACATTGACCCAACAAAAGTAACGAAATTTACTACTTTTGTCAGGTAGGAAACTTTTTTGCTACTCGAATATAACTAACCTAAAATAATTTCCAAACGTTTTTGTTGGTAGAATGTAAAATAACTTGTTCTTTTTTGGTTTTTTGAATAGTGTAGTTACAGAGACAATGGTACATTGGCCTGAACAAAAAATTTAGTTAGCTATTTCTCCATTTTGACCTATTGGTCCCCTACAAATTAGTAAAAGGACCCACAATCCAGTTATTTTTGTCGGTGTTTAAGCAGACTACAACCTTCGAATTATTTTCAGAACCAGATGTAAAGATTTTAGTTCGGTGCTGCAAAAACCATCAAAAAATACCAAATTTTTCGGCCTTTGTGAAGCACGGCAACGAGCAATTTTTGAGATCGTCTTTGCCAGCTGCACACCCCAGGTACAGAGACTCACTTTTATATCACGTGAACGAACAAAAAATTTGCAATTTTCTCACGTAGGCCACTTATTTACAGCTCTAATTTCACACACCTAAAATACAAATGTTCATCCTACCCATATATGTAGTAAGAATATTTCAAATTCAAATTTTCATGTACAAATCAACTCGTCGCCACCGTCTTATTGTTTCCCTGGATTTCCTGATCTGACCTTGTCACTCCACGTATGTTTGTCTTTGTGCCCACCTCTCGTGCTCACCTTGTTCCAAATTCTACCGTGAAAACTCATCTGAACGCCATTTTCGTATGTCCTATGAGTTTTTCGGATGCGAAACTTGGAAAAACGTCAGACAACTGCAAATGACCTCCCGGGCGTCGCTGAGAATCGGTGATAGCCTTGTACTGCTTAGATGAGACCAGATACAAAGTGCACAACAAAAAACAAATTCGCTTGAGAAGCGCTGGCGAGAGATTCGAAGCGAAAACGAGTTGATTGACAATCCGGAACATATAGACACACCAGAAGACAAAGTGGGGGAAGAAAGGAAACAAAAAAGATAGAGAGGAAGGAGATTTTGAAAAACGCCAATCTCTCTGTGTGTGGGCACTGGGTGACAGGTGAAAAAGTGAGAGTGAGAAAAACGTGGTGGGTACTGTATTGATGAACGATCCAAGTTGCATACTCAAATCTCGTTGATTGGCTTGTGTCCTGGTCGGTTTGATAGAAGGTGAAGTTGGATTTTGTTCACTGAATTATTGGATTTCGAGACATGAGCAAGCTAGGGTCAGGATGACTGTAGTGGCCGGCTAACATTCCGTACACCCTTTGGCCGACTGGTGCGTGCAACCAGGGCTAGTAAGGAGGTACATCCTGACCGTAAGCTTTTTAAAATTCTGAGAACACCCTACAAAAGATATTTGTAAAGTTCTCCAAGACAGGTGCTAAAACTTCTGGAAAGAGTAGCTTAGAGTCAGAATGTATTATTGCGATCTGATCTACAAAAAACGCGGGAGTTGAGACGCAGTATTAAGTCTATCTCATTTCGCATGTTTAAGGTAGCGTGCTGAACAATTTTTAACAAATATTTCCCGCATTGTTTGTAGATCAAACTGTAATGAGACAGCCTGGCACCACGTGGGTAGGTGTCGGGATGCACGTGGTGTCGGAGTGTCTCATTTCAGCTTGATCTACTAGATCAACAATCAGAAAACAATGCGGGAGACGAGACGCAGAGTTCTCAACTGATTGTGCATAGGTAAGCTCGCGCTGACGTCACATTTTTCTAGCAAAAAATTCCTTTTTGTAGATCAAACTGTAATGGGACCCCATGGCACCGTGGGGATGCATTAGTGATGTAGATAAACCTTGAACAATAAATATACATTAATTTCGTCATGCTTGAAACTTGGACCCAAAAACAACTATCTGTAACTAGAAATTCTACAAACAATGAGTTTGCGACTTAAAGCTGGAAGTATAAAAGTTGCGCAAAAAGAGACCTGTGGTCGGGCGCTACCACCATAAAATTTTAAATTTGCCGGTCCCCACACCTCGACATCAAACGTGCAAGCCGGGCAACTTGGTACATCTAGTTCACCAGCACTCCAACTAGCTTCCCAGAACGCTAAAAACATTGTTAAATTATTACTTGTTCAGTACATTTGTCGACTCGACACACCATCACCCCACCTAAACCCAATAAGGAAGTCGATATCTACTCATTTTAGGGACCTTTTTTGCCGCTTTTTATTGATTTGAACAAAAACTCAGCAGAGAAGTCAAAAATTGCCAATATCCAATTTTTCAGTTCCCAAAGATTGTGAGTTTCAATACCTACTAAATCCTCCCGTTCCGCCGTTCTTGATATTATCTCCATAAATGTCCGCTTATCTCCTCTCTTGTACTAAACTAACGTTCACTTATCCACATAATAAATACAATAAATGTATAATATACAAGAATAAATACTACACTATATATAATATATATATATATATATATATATATATAAGTATATAATATATATATGTATATCTATCAAAAAATCAAACAGGATCTCTATTTTCCTCCAGGAGAAAAAGACGATGTCAGGTTGTGCGCAACAATACTCTCACTCTCAATACCGCGACGACGTGGCATACCTCCCCCCATCCTGCCTTTCTTCCCCGTTTCTCCTGATCGAAATTTCCAGCAGCACACCGGAACTTCTTGGTTGGCATGTGAAGCCGACGTGGATCGTGACGGTGATGATGTGGCGGATTGTGATATGGCGGAATCGTGTTTTTTATCCGGCGAGTACTGCGAGAATTGTCTGAAAGAGTGGCACGGCGCCTGTGTTTCGGCTCTTTTCAGCATTTTGACGTGAATTTCATCCCCAAATTTCTTTTCTCATCTATCAATTTGAAAATAAATCAAAGAAATACAAAAGCTAAAGTTCACTCATGTTTTAGCACACGGCGCGAGAGGCGGAAATCGCCTTAAGGTCAGGCACAGAGCAGGCGTGTAATGCCTACATGGAAGCCTAGACTTCTCTGAAACTGGGTAATGTTGTTCCGAAGTGCAGTGCCTGAAATTATACAATGTTGTTCTAATTTTTCGGTGTATATCAAGCGCTTATATCCGTGTGTCCATAGTTGGTAGTCTATGTAGTCTCAAGTTTTGGCTTCTGGTAGGATAGTGAGTTGGGGTCAGTGTAGGGATATGGTCGGCGAAATGTAGTGGTACAATAGCGGTACGGTAGCAGTACTGTAAGATTATGGGACTCTCAGAAAAAAAAGTTTGCCACAGAAGTCGAGGTCCGTGCCGGAGGAGAACGGCTGGTTATCAATAAAGAATACCGACACTTTATGATATCACCGGTAAGCGCTAGACAATAAAAATTCGCATTCTGAGAAGGACGACTGTAGCAGTTTAGCGTGTGTCCGAGTAGATCTGGCGTCTCTTAATTTAAGTTGTAGTTTCCTGGTGTCCCCTGATCGCGAACTTCCCGAGGTAATTAGTAAATATTTTAGTGTGGCCTATGTTTACTGGTTTTACGGACTAGCCCGAGAAAAACTCTGGAACGAAAAAACCCAAATGGGGGCTCTTATCCAAGACTACCAAAGTTTCTATTCTATGCAATTCCCTAGTTTTGCATTTCCTCCGCCTAATAACGCATGTTGTTTACCGTCGACTATCCCAATGCTAAAATTTCGGAATCATGTGAAAATTTACCTGATCGAAAGTATACGGTAACCGTAACATTTGGAAGAGGAGAAAGGAATTCGTTGCAGCCTTGGCCCATTCTCCCCACAGGCATAATTCAAAAAAATATTTATCGCAGCAAGAGTGTGGATTTGCCACAACCCAGCGGGTTCTCCCATCCAGCATCTCTACCTTTGCGGAGGCAGACACTGAGGACCTTGATCTGCCGCCGCGTTCCGACAAATGTAATAGCAGCCCCCCGCGCGATAGCTTTTCACTATTTCTTCTCTTTCTGGCTACTGTGCTGCCTCCTCCTGCGCAAGGATGATGCTGCTAGGATGATACCCTAGAGATGACGGAACGATCCGATAATTATATTATTGATGGAGACTAGAGATGTGAGATAGTCCCGCAGCGAAGGAACCTGATCTTGTTACAGTCTTGGAACCCAGGAACAGCGGATAGCGTCGTCGTATTATCGTTATTCATTTCGTAAATAGATTTTCTCTAGGATTGATTCCCGGTTGAGCTACGTCACTGTCCGAGAACATTCCGGAATGTTATGTGCAGATGTTCTTTTAAATAACCTTTCTCCTTCCTCCCGCAACAACTTTCATTTCTATGCGTCGAGATACGATATCCAAGGCCACAATCAGTATCTTTTTTCGCTGCTGACTCTCTCTCTCTCTACTCGTAACCTTCGCCCATCTCGTCAATGGTTCAGAATCACCTACCGCAAAACAATTGAAAATAAGTGAGTGTGGAAGTCACGTCATGAGCGCCCAATAGATAGAAAGAGAGAGAGAGAGAGAAGTGCCGAAGACAGTGTCGGAATAGAAAAGTGGAACCAGCGGCTGGATCGTCATTTGTTGATGATTCCTCGTGCCTGCCATTGTTATTCGATATTCCGATATTCGATTCTTTATTGCCGCCCCCGCCTAAGAGCCCGTGAGAATCAGAACGAAGCTTGCGCGCTCCCTATTAAAAAAAAAAGATTATCAAATTTGAGCAGAAGCGGAAATGGAAATAATAGCGGATAACGTTACAAAAAGAGCGAAATGTTTTGGGCAATAAATTTGTAGTTTGATGATAAGAGTGGCATTTTGATATGAGGAAGCTTGCAGAATGTAGTGGTGAACAGGAAGCTTTCGCTATGGAGCAAAATGGATTCCGTCATTTTTAACTTAAAGAATCGGAGTCGAGATGAAACACCCAGCCGGGCTGAAAAATTATTCTGCTATCGAGGCATGCTTGAAAGTACCAGGGCCTTACACAAAAGATCAGGGATCCTAGTTCTGCAAAAAAAATTTCTGCATAATGAAATGGAGAACAGGGCGGTGCGGCAACCAAGAGTTTCGGCAACTTCGGCATTTGCCGAAGTTGCGGAACCCACAACATTTTGGTAACCGGCAATTGCTCTCGAAGTTGCCGAATTCAAAAAAGTTCGGCAACCGGCATTTCCGCGGGCGAAATCTCCAAATTCAAAAAATTTCGGTAACCGGTTGCCTCACAGCTCGGCTGGAGAAGCCGGTGGTCAGCTCATAAGAGTATGGTTCACCACAACCCAGAAATACCATCTTTCAGTGCCTTATACTGTAAAAACACTCTGGCTCAAAGTGCCCCAGAGGCCCTGGGATCTATCCTTACCCTGGAAAACTTGTGTGAAATTTCGAATATTCACAGCTACTAGGTTCGTAGCTCTAGCTCAATGTTCCCACTCTGCCTTCCACAGGACGTATTTCTACAATATTTTGCACAACTTGGTACAGTACTCAGCTTTCCCTTTTTGCACCAAAACATTATTGATCCTTACGATTAGCGTCCTAGATAGGCTACGCCATCGAGATCTCGAATATGCTAATTCTTAGGAAAGAGTGATGTTTCATCATCTCCTGGGATTAAAAATTTCGGAGGAAGAACATGGCAAAAATCAGGTTGATCGTGACACTCGTCGGGGGCTCCTCTCACTTCTTCCCCATCTTCATCTCTCCTTCTCTTTCCCGATCCGATCTTTTTTCCTTTCTTCCATTTTGTTTTTCCTTTCCATTTTTTCTTCCTTCTTGTGTTTGATTAGCCATCCTCCTTGGAGCCCTTTCACCTTGTTTCATTTTTCTTTATTCAGGATTGAATAGAGATATGGTTCCGTAAAATCAGTAATTCCAATACTAGAAGAATTAGTAAGACATTCGAAGGGGGGAAAATTCCGCGCAAAAATCGACAGGAGGTTCGTCCGGATTGGGTAATCGTCGGAGAAATGAAAAATCGCGCGCGCTCGCCCGCGCAGATGAGATATATTCTAAATCACATGGTCAGCGAAATGATCTACGATGGATTGCGTGATCTATAGGCGTATCAAGGAGATTAGCACTGCTGGGCGTCGGGATTCCTTGAAGGAACACGATCTTTGAAGGAGACGAGGAGGTTGTGAAATTTAATTGTGATATCATTCGATTATGTACTGGCCTAGAATATACATCATCTTTGAGAATTCTGGTCGGCTGTTTTCGGGAAGTTCTCAAGGATCGGCGCAGCCATGTCTGTAGGAAGTGCTTATGCCAACCCCAACACGTCACCTTCTCAATCTACTACTTAGAAGTTCAGTCCTGCCAATCCGCACGCTCCCACCACAATGTCTTCGTCGCCTATCCGTTTCTCCTGTCGAGTCTCGGGTCAAGGCAAGTGTGCGTGTGTCCCTTCAGTCGTCGAAGTCTTAATCATTTATTTTTGCTGCTAAAGTCCGAACAGTTTTTTCTAGCCGTGTCGGCGAAAGGGTTCTTATTGCGAATTCACCTCCTCCCACCCGAGAAATGGCCCCCCTGCCGCAAAACGTGACCTAGCATTAAATAAAAACAACACAAAGCGCCTCCTGCATCATCACGCGTATATATGTATTGTTGAAATATAAGATGGTAGGCGGGAAGAGGAAACGACGATCAAGATCGACTGAAGGTTGCGCAATCGAGATGGTCTCTTCCCGGCACGAATACCTCCTCCTCGTACAGCGTACCAGGCACCCGCATATAGCTAAAGTTCTCCGCCCATTTTTACTTTTTTGTGCTTTAACATCGCAGCAGCGCTTTTGCCATTGCGCCCGACCCGATCCAACTTCTTATTCTTGTTCCTCTACTCCCCCGCCCATGTCCTCCCGATATCAAAAAAGTGGGAGGAGCATGCATAGTGAGAGGGCGGGGCCGGGACACACACAAGGCTGGCTCAACCCGAGAAGAAGGAACAACAATTATGCCGAGGACAGTCTCGACAGGCGGCCCGACCTGCGCCTTGATTACCCCGCCCGTCCGCGTGCCCAGCCGTGCACGGCTATCTTGTTTGCCATTCATGTTCCTCATTCGACGTTCATCATGCTTCGGTTATGCTTCTTCGTGTTGGTCCGGTTTTTCTCTCTCTCTTCGGCCCTCTTTCTTCATTGGACCAGATGCCATTCGCCTTTTTGTCGCCTAGATAAGCGCATATTTCTCATCTCTTCTTTGTTTTCCATCATTCATTATATATCCAATATCCCACATCCTATATCCTCGTTCTCTAAGTCCCTCATTTTCATTCATATGCCGATCCATTTGGTACTGGTGGTGTCTTCTTAGTTTTGCTTTCCCATTCCTAGACAATTCCTTCTATTTCCACTTTTTTCTACACAATGCAGACAGCCCATCCCCACGCGCTGCCCTTGCTCTCTCCGATCTTCAGCCACAAACCGGCGCCTCGATCAACGTTCTCAATTGGCAGTGGATCAGGCAACTGGTAAGTCGAGTTCTTATGTAACTAGTAGGATGGTAGACATCGAGCTTAACGATGTCTGGCATTCGTTACGTACGGGTTCTCGCGCCGCCCATCGAAGCGCTTGAGCGCCGATTCACGGCTTTATCTCACCCCGGTCTAGCAAGTTTTCCAATCCATCCCAAATTACAGGACAAGCGGTGTTGGTGATGGAGTTAATGGTTACATGGACAAATGCGGAGGAATGTTCGGAAACAGCAGAAACAACGTGAGTTATAAAAACTGGGGGGGGGGGGGGGGGGGGAAGTGCTGTTATAGGCGTCCACAGGGACATTGAGAACCGCGTGATGAAGAGTACTTTTATCCGAATTAAATCATAGGCTAAACGAAAACAAGCATCAGGTTCTTGTGCTTTGCACATCGGAATATCCATCTCAATCAAAACGCGGGAAACACGAAAGCCTAAGCTGGACCAACTAGTGTTAAATGCTTAAATGCAACCCAAAAATGAACAGTCTATCACTTTCATCTTCCTGTAAATCAGAGAACCTGAAGCGCTGGCAATGCGCACACTTACAAAAAGTGAAAGCCGATATATCAAGCTTATCACCTAGCGGGACTTCGCCCATTGTCTCATTGTCTCTTGGCTATCCGTCCCACCCCCCCGGATCATCCGCCCCCTTTTATCACTCTCGAACAGTTTCGCGCGTTGATTCAAGGACCGATTCGCATTCGGCAGCAATAACCCGTCGTCCTGCAAGCTGCTTTTCATCGAACTTCGTCAGGCGGACTTTTTTCCAGTAGTTAATATGTGAGTTTTTTTTGTTTTTTTCTTCTCCGAGTTTTCTACAAGATCCATTAACATTTAGAATGAGATTCGGCAGCCGGTTTTCTTGATTCTAATCTCAATAATTATTTCCCAGTGTATATAGTGACACGGACAAGTTGCCCGATTGCGAGGAAATACCAAAAGTCTTGTGCTGTACCCACGTGTCTGATAATATGTCTGTCTGGTCGAGTTGTTTCACTGAGAAATACCCCCACAAATTGGAAAAATACGAGACGACCGATGAAGAGCCACCGATTCGACAAGAGCTCACTGCAAAGAAGCAGATGAAGCCAGCTAAGGCAACTAGCAACAGAGTTGTCGGAGCAGTGCTTGACGTAGACCATGAAGCCAAGGAGCAGTTCATCGACTCCAAGGATATCAGAAGAGCACCACGAGTCGGTCAAGCTTCTCAGCCAGGAGTACCCGATCACGAGGTCAACGACGGCGACCGCCGAGTGCGCAACCGAGAAGTCTCAGCCACCATTCTCACCATGCTTGTCCCGCAAGTCGGCTGACGAAGTCTTCCTCTCCTGCTGTCGCCAACAGGTTCCATGCAACTGTCACTGAGCCTCTACAGAGCATCGTAAGAACATGTCGCCGCTGAAACTTTGATCCAGGCGATCCAGCAAGAGCACTGATGAAGGTAAGAATAGTTCAATCTTCCTATTGAGTTTTTTTGAGTTTTTCCAAAATTAATTCTTTCAGTACTTCTCCAAATGCTCTACTGTGCGGCCAACCAAAACCGCGACAACCGCGCGTGCGCTGCTCCAACCTCGGCATGTCAAACGCGGAACTCGGCGTCGGCGATCGTTGCCTATGTGCAACATATCCCCGGCGGGAGACTGTGTAAGCCCTATGGAGAAGGAGGATCTCGTCTGCCGTCCAACTGGAACGTCGTGATTCATGTACTGTGCCAGAGGTGGTCTTCGTAACTTGGATCAACTAGACCATCATCCCCGTTCTCTTCTCCCGTAATAAGCTGGATCAGGTAATAATCAATCGCCGATCCTCGTCTTAATAATTTTCGCCCAATTTCCCATCTCGTCCCCCCTTTTCAACTCTACAACATTTCTCAGTGATATTCATCTGAACCGCCCGACATACATCAGTTCCTCATATTCCTAACAGGGTTAAACAAACCCATCCACACCGTCCCCCCACGTTTCTGAAGACCCCCCCCCCCCCCACTTAAGGACCCCAAGTCCTAGTTACTAAATGTGAAACATAATGGCGAGACTGCAATACTTGTCCCCTGAATCCATGTTATTTACATGATAATCTATGACATATACTTTTTTTTTAAAACACAAGCCCCCTTGAAAACGAACCTCATCATTGTATGTCAAACGGAACCTCTTATTACACGATTAATTGTTGAAGTTTAGCGAATAAATCAATCATTGCTCTCGTTGGGTCTATGCCCACAGCGAAATGACCCGGTGCAGAGATAGATAGTTAGAGGGTCATAGACATCCGGGACCCAATGGGGCCGCCCGCGGAAGAGACGATTTGTGTCGATTTACGAAATGATGACAACCAGGAAAATTTCGTATAGAATCGACACAAATCGTCTCTTCCGCGCGCCACGCCCCATCGGGTCTCGCGGTCGCTCTATAACTATCTACAGTCTCTGTACCGGTAATACTATTGCAGTAATCGCAGGTCTTAGCGATTTTTCATAGCTTCACGTATTTCTCGATTTCCTCATAAATTGAATTGGATGCCTAGTTTTTGCTGAACTAGGGGCCATTTCGGCTCGTCAGTATATGGTGGGGTAGATTTACGGCGCTTTGCGGTTCGATACAATTTAGTTGTAAAACTAAATGTATTTGTCCGTGTGGAAAGAAGTACACGATTCACATGCGTGGTCCGACAGGCATCAATAGAGCGCGAAAAATTCAATGAGGAAGGTCAGAACTCCGTGCAACTTTACTCGCGAACTCTGGTGCGTGTTATTGTCTTTATTCAGTTTTCTGAGACGTAATGAATATACTTTTTTACAGCAAAACTGGAAAACTGATACAAAAGTCTCCAGAAACTAGATATTGAAATTACAGTACACTTTAAAGGCGCACAAACCATTTTCACAGTAAACAAAAAGTTCGTGCCGAGACATTTCATCCAGATTCTCAGTTAAAATTTTACAACACTCATTTTTCCTTGAATATTTAATGAAGTAGGTTCGAATGGAAAAGAGAAGAAACCAAAAAGTGAAATTATTCTCAAAAACTTGATTCCCAAACCGGTATTTCGATTTGGCTATTTTCGACCAATTTCGGCAGAATTTTTTAGCAGAATTTTACAAATTTTTTAGAGTTAAAGCTTATTTTAATTATTTTTCTCTGAATTCACCTATATATGAATATCTTTGCTTTCGATGGATCTTCCTCAAAAGTACACATTAGTTTTATTTTTCTACAAAACTGTGCAAAGTTACGTCGTGGTGTTTGTGCCTCGGATTTAAAGAGAAATGGCATTTTTCAATCTTTTGTCGCAGTTTTTCTGCTTTTTTTTTCACCTGTTTTTTCGTAGTTTCCTAATAAAAAGATCGTCAAGTGTTTCCAGGGGTCATGGCTGGATTTGAAATTCAAAGAGTCGAGTCCAAATTCTTCGACTTGGACGACATATAATCGCCAAAGACTCCACGTCTTGAACATTTGAGATTGGTGATTTGAATCCAGGTCTGAAATCGCATTGAAGACCTAAAAATTCTAGTGATTTTCGTTCTGATTTTTTCCAGGAAATGTTGGGAGTTTTTCGAAGCCAACTCAAAATGCAGACGGATACGGCGTTGATGCTCCATACTTGCTGCTGGAATCCGTTAGGAGTTCATTGTCCGTGAGAAGTTATATTTGCCCCGAATTTTAATTTAGAATTCCAGATTGACCCCCAAAAGCTAGTGTGAACATGCGAAATGTCTTTCTGAACGCTGACAGCAAGAAATTGTATCTCTTGAGTCCGGCTTCGCAGCAACACTTTTACGGCAACGGGGTGCAGTCGTCTGCATGCATGAAGAGGGCGAAGGAATCCGGACGGCGCGCTGAGCCTTTTCCCGCACGCACATGCCTTGTACTCCACACTTACACCACTCAGGGCTTAGGAGGTATTAATTAATATAATAAAGCACTTATAAAATACAATTCCTGGTTTTTTTTTGTTGCAGAAATTGTGCTCAACTGCAACACATCTGCAAAGGAAAGGCGAGAAATTCGACAGCCTCTAGACAAAAGTGAGTTCCTGGAGGGTAAACGGTGCAAAGATTGATACTTGGCTGAGACAAGACAATACGTGCTCGAGCAAGAAGCAAGAGACTTTCGTTATAAACTTCAAATTTCTTATGCTTGAATCTAATTTTATTCTTTTTAAGTCGACTGCTCTGTGAATATAATTCAAATCCCCATTCTGTAATATTTATTTTCTACTTTTTTCACACTCATTTTTGTGTTGTATTGGTGTAATTAACCTGGTTTCATGACTTTTTTGCAAGGAAGTTTGTTGAAAACGCTGCTGCAAAATTTGCCAGCAAAAAATTTTGTTCAAGCCCGCTCCATCGCACAGTTTGAACGTCGCGGTTCGAAGTTAGATGTGCAGGTCATATAGCAGAGAAACACTCCCTTTTTTTCTCGAGAAGTTTCACCAATTTTGCGCGATCACCTATTTTTTTGCTTTTTTGGCCTAATTCTCAGATATTCCTCAAAAACTTGAAAATCCAATCTAGAATAAGTGGTAATGGGTATATTCTAGGATTGTGCAAAAGTTAGCTTGAATTGGAATCCTCGATTAAAGCTTTCCTACCAAGAAAAATGTGTGGATATTTTGTACAAGTTTTTCATCTTTTTTTAGTAATATTCTCTGTGAAACTCCTATGGTTTCTCTCAAAGTTGTAAACTTCATAAACGCTGTCAGGGTTACCAGATTAAACAATGACCGGGAGCAAGCACCTAAACTCACCAGAGGAGAAAAGTCAAGGAGGTTGGTAGTTCAACATCTAAAATATTTAAATTTCTATATTTCAGCCACAAGTTGACGTTTCGATTCCCGACAACGAGGCCGTCGAGCAAGCAGCTCACCGTGGAGCAAAGACGTCTGCCCGAGGCTGCTGGACTTGGAGATCAACAAGCAGGCCAAGCAAAGCCGCTCCGAGAAGAAGGCCCGCCCTTAAAGCTCTTACGTCTCCAAGCGCGGACTCGAGCAAGTGACTGGAGTCTCCCGTGTCTGCATTGCAAGTCGAAGAACACCTCTTCGTCATAAACAAGCCAGACGTGTTCAAGTAGCCCAGCATCTGACACATCATTTACTTCGGAGAAGCCAAGATCGATCAGCCAACACGCCCAGTTGTATTGAGAACTGAAGCCAACTCGTGAGACCCCACAACAAGACTGTCGAAGATGAAAAGTCGAGAATGAGGATGTTGAAGTAATTCAGTATCTTAATATTTATTACATTTGTACGGTTAAGGAGGTTTCCACCGGCATTGAGGAGAAGGACATCGAGCTTGTCATTTCCCAAGCCAACACCACCCGCAAAGGCCATCAGGGCGCTTAAGGAAACTGACAATGACATCGTCAATAGGGGCAAGCATCATGAGCCCTATCTTGTAGCTTGTTTCCTGATGACTGAGCTTGCAGATACTCTTGTTATCGTTGTATCTCTTGCTTATCCCGTTTTCCGTTCCAAGAAAACGTTTATTCTTTTTTAACCTTTTTGTTATGTTAAAAAACAATTGCATCTTCGATACGAATTGTACAACCTACCTTTTACAGAAAAGAACAATAAAATCGCTGTTTGTGTAAAACACCCCTCTATTGATCCAGAACTCTCACTTCTTACAATACTTTACTCGTATGACTGTGATTCATCTCACCTGCTATCACTTTATCATGACATTCAAGTTTATATCAACAGCAAGATACCATTGTGTGTATGTGAAAAATGCTATCGAATAGCAAGCGCGCCCCAACAAATTTGAATGCGCGGGCGAAATGGTGTTAGATGTGCAGTCATATGAAACGAAACGCATCGACCAGCAGCCAATGGGGTACAAGTTACTGCGAGCTGTTAGATTTTTTCACACGGTTTCCAGTGTTATCAGGTGATGGGAAATCGATCCATAATACTGACTATTCGTACTTAACATCTTAAACATCCCCACCGTTTCGCTGTCATTTTTACCGATGCGGATTTATATTTCCTTTCTCGCCGACTTTTCATTTCTAAATCTTCTCTGAAATTGCGAAATTTTCAGCCTGTTTCATACGAGATCGAACGGCTCGTAATGAACCATCATCTCAGCAGCCGTGTAGTACCGGGAGTAATGCATGAACTCCAGCAGAACAAAACGGGTCGGCAAAACCTTCAAAAGTCACAGTAAAAGGTAACAATTGATTTTTTGCATCTGTGCTAATAAAATTTCCCCCTCTTCCCTTAATCATAGTCGTCAACGCGCTAGTTCACCAAGGCAGCCGACTCAGCTATTGTCGAAATCACGGACACGTCATCGGCGGCGCCAAAAATGACGACTGCAAAGAAGAAGACGATGGCGCCCGAGTGGAAAGAACATCTCAACGTTCATGCAAATGAATCTTCGACAATTTCGTTTCGTCTATTGCAAACCGTAAAGCCAAGCTATGACACGTATCTAGGGATGGCGAAGCTGAAGCTCTAGTTTCGAGTCTCACAAGAAATGAGAATGGAGTAAGTGGTTTTTGTGACTGAAATTTTCTCAAAAAAGCTATTAGTTCAGTCAAAAACGACATCAACAATATATCTTTGCTGGCCAAAGACTCCTCGAAAATCGGAACTCACTCTCGACATAATTTTCTCCGGATATCCAGAGCGGAAACGAAGAAGCGCAGGAGTACGAACTGAAACCGCCGCGTCTCCAAGTTCAGAGGCAACGTCAAATGGCGTTGCCACGACATCCTCGGCGCGGACACCTGGCCGGCGTCAGCGAAGCGTGACACTTTGGCGGCTCCAACGGTACTCGTGACGAGACCCATTTTGAATAATTTAATTATTCATGAAACGCTCTACGGCAGTGTTAATAATTATTAGAGCGCGCTCGCGCGAAAGCACCTCACCCAGAAGTCGCGAGGACAGCAGTCTCTGGCTATATTGGCTGCTATGGAAATTATTATTTTTTGATTTAAACTATTGTTGAGAAGCATCATCCAAATTGAAAATGTGTAAAATTATGATTTGTCCGAAACCTGAAGGTTTTACAGAGGGGAGTCACCACGGCTTTCTTAAGTATCAGTACCGTCAATATTTCGAGTTCAGAAAAATATGTCATTTTGTAGAGAAACTCTGTTACTTCACAAAAATTTCCATGTTTGATATTTTAATTGTTTAATTTCTAATAAAATATTGCAAATTTAAATCAACAAGTATACGTTAAAACCGAACCTTTTTCAATCGTAACCTCAGTTTTTAATAAGAACACTTTCATAATTTCAAACATGGATTTGAAACAGACTTTTATCTACAAAAATGACATATTTTCCGACTCTGGAATCGAAAAAACTGACGGTACTGAAACATTTTAAAGAAACTCGTGGTGACTCAATCTCTCTGTATACCGTGGTTCACTTTTTGTTAAAAATATTTCCATCCAAAAATAGCCAAAAACTGCTGTCCCCTCCTGCGAAACGAAATCCCTCGAGTTCTGGAGTTCGTGAGGTACCGCGCGAGCGCGCTCTAACAATTATGAACACTAGAGGAGAACGTGAATGAGCGTTTTTTATTCTTTTCTCTGCTTAATGCTACAGAATCGTACACTAAATGTTGTCAAATACATGATGCATTACTCCAGTCTACTACTATATGTTTACTTTTCATTTGTACCGCAGCGGCGGCAGCCAACAGCATGCGGCACCCCGGCCGCCGCAGCAGAAGAGCTTCCCGATGGATGGGAGATGCGTTTCGATCAATACGGACGCAAGTACACCTGTACGTGGCTCACACCACCAAGAGCGCCACGTGGGAACGCGCGTCTTACTCATCCCTTACAGGGCGATGGGAAATCCGAAGAGATCCGAGAGGAAGAGTGAGTTTTCCGAGGCTGTAAAAGCAGATTACTTAGCACGAGAAAAGCGTTTCTGATTATATTTTCGATGCGAAAAGCATCAAAATTAAAACTATCTACCGTCGCCGCGGATACCTGGACCAAAATGCCGAAAAAAGTGACTAAATTATTTTATAAAATCTAGATTTTTACATAATTAGTGTTATTTGATGATTTCTTGTCAAATTTTTGTAATTGCATCGAAATAGTCCAAAAATAAAGTAAAAATCCACTTCCAACACAGAAGAACTGACAAAATTGAAGATTTTTGCTGAATTCAGGCAATTTTTCGTAATTATTATGATCCTACATAAGTTTTTGTTTTCGAGATATTCGAAAATTTTTTTCTTTAAATACGGCCTGAAAATTAGGAAATTATAACGACGGATAACGGTCAATTCTGATTTTCTTTATTTTAACCAAGGTCTCCGCAAATTATTTGATAATCGAAAATAAAAAAAAAACTTTCCAGTGATTTTTACTTGAGGGAAAAATGTCTAAAATTCACGCCAGGTGCACAATCCCTTTTCAGGTGTATTACGTGGATCAGAACACGCGCACGACCCCCTGGTGGCAACGACCGACAGCCGATATGACTTGAACCACACGAACAATGGCAATCGGGAAGAGATCAGGCGATGCTTTAATGGGAACAAAGTTTCCTTCTCCAGCAGATCAACTTTGCATCCACTCGTGACCATTGCCCGAAGGATGGGGCGTCAGGATCCGAATACGTCGAGATTGTACTTTGTGAATCATTTAAATAGGACACAATGGGAAGATTCGAGAACACAGGGGTATGTGAAAATTTTCAATTGTCCAACATTATTTCTATCAAAAATCACAGTTTTAATGTTTTAAAAGTTTCAGAGGCCCGACCAACCTTCAGGATGGTTTGGAAATGCGATTCACCGAGCAAGGGCGTTCGATTCTTCATCGATCACTACTCTAAAACCACCACCTAATAATGATCGAAGAAGCGGAAAACCCGTCGGCCCGCTCGCCGTCGTCGGTGTTCAAATGGCCATGGAGAAGAGTTTCCGGTGGAAAATTGCACAATTCAGATATTTATGCTTGGTAAGGGAGGGCGAGAAATTCTTTGCTTTTAGCTATAAATTGATGAAAATTTCAGTCAAACAGCGCCTAATCATGTCAAAATCACAGTATCCCGTAATAACGTGTTCGAAGACTCATTCCAAGAAATTATGCGTAAAAATGCAGTCGGTCTACTCCGGCGTCTGTACATTCAATTCCGAGGGGAAGAGGGTCTCGACTATAGAGGCGTCGCCAGAGATGTTAGGGTTCTTCCTGCCGCACGAAGTGTTGAATCCAATGTATGGGCTTTTCATGTATGCTGGCAATAACTATTATAGTCTTCAAATCAATCCACCTTCATTTGTTAACCCGGTCTTAAGTATTTCGAGTATATTGGAAGATTCATTGCCATGGTGAGTATTTTTTTTTGCAATTGTAAATCAGTTGAGAATTGGATGAAAAAATGCGATCGACATGGGGAAAAGCGAGTTTTCCGCTTTATACCATTGAATTTTAAAATTTTAAACGTTAAATTGAAAATTCAAACAAAAAGCACTTCTGGATCTAAAATTCTTATCGTTTTTTGAGGTCCTTAAATATCGATTTTTTATATTTTCAGCACAAAAAGAAATTTCGATGATCTCAAATTTTCAGATCAATATATTTCATTTTCTCGGGCCTAAAAATGTTATTTTTATTTAAACAAATAGTTTTTCTTAGAAAATTCCTTTACTTTCAAATTTCCAGGCGCTATTCCACGGAAAATTCATCTACAGCGGTTTCACGATGCCATTCTACAAAAAGATGCAACAAGAAGATTGTTTTAAAGGGCATTGAACAAATCGATTCGGAAATTTATAATTTATTGATGTGGAACCTCAAGGATAACTATATCGATGAATGCGATATGGAGCTCTATTTTGTTGCCGATAACGAGCTACTCGGCGAGCCCAAGACTTATGAGCTTACGGAGGGCGGTACAGAGATTGCTGTTACCAACGAGGAGAATAAGGTGAGACTTGGGATTAGCTAGAGCTTATAAAAATAATTTTTAAATAAAATAATTTAATTTAAAAAATCCCAATTTTCCAGCTTCAATCCATCGAACTGCTCGTTTGGCGCCGCTTCAATCGCGGTGTCGACCGCGAAGACAAAAGCCTATCTTCACCGGCTTCAACCCGGTCTACGCGTTGGAATGGATGGAGTATTTCGATGAAAGAGGCTGGAGCTCGAGCTGTTGCTCTGCGGAATGCGGGACGTTGATGTGGGATTGGCAGTAGAAATTCTGACTACAGACATTATGCTCCACAGAGCAAGCAGGTAGGGGAGAACATTTGATTAAAACCTTTATTTTTTTTTAATTAAAAAATACATTTATAGGTAACCCGGTTCTGGCTATGGGTTCGAAGACCAACCGTGAAAAACGTGCCCGGCTCCCACAATTCGTCACATCGCGGACCGTGCCGTGTGTCAGTCGGTGGATCCTGATTCGACGGGACCACAGCTATTCTGTATCGAGCGTATCGGCAAGGAGAACTGGCTCCACGGTCGCATATGTGCTTCAATCGACTCGGCTTGCCGCCATACAGAAGCTACGATCAGCTCGGTCGGGAGACGAGTTGAGGATGGCGATCGAGATGACGGAAGGATTTGGAAGCGAGTAGTCCATGTCCCGTTATTTTTTTTTGGTTACTTGCTGGCCGCACGTTCAAATTGTTGTCTAACCCTCATATTTCTTCCCACCTATTGAGGACCTTTTCCTTTTTTTTCTCTCCATCACTTAATGTTTCTTTTTTTCGAATCGATGTTGTGTGATAATTTTCGTGTAGTGATAGCACTTGTGCTTAGGTTCTCTCTGCCTCTCATTCCTTTCCTTCGCGTATGTCTACCTATAATGTTTTAGAATACTAGACAAATCGCATCTAGTTTTTTTATTTAATTTCCAAATTTCCCGTTTAATTCCAACAACAAAAAAACAATTCCACCTAGACACTTTTCAAATATTTTTGCGTCCATTGCTTCATTGCTTTTCTTCTTCTCAACCATTTCAACAACCACCACCCAATCTGCGCCTTATCCTCTTACTTGGTCACTTGTCATTCTTACAATTTTTTTCACGGAAGCAGCTCTAGATTATTAATTCAAATGCATCCCCCCAACCAATCCGTCACCCCCCGATTAGAACAATTTCTACTTTTTTTTTTGAAAACAAAAAAACACCTCGATTTGGTTGTAATCAATGGGAAATTTAATTTTTTAATCTGAGCCTTCTTTGTTGTTTTAGGGTTTCTTAACTTTCAGAATTTCCATGCGGAACACACGGAGAGCACAAGATCAAGATTTTGAACCCTGCAGGAGAACGGGACCCTTAGCGTGGTCACTCATGTCTCGGCTGTCTGTGGTTCTCTCCTCTCTCTCACCAGCGGAGAGGATGGATACCTCATTCGCTTTATTTTCGGACTTTCGATTTTTCTTATTGCTCCACGTCTTTTATCAGATTCGGGGAGCTTTTGCTTTTTTCTTGATTTTTTCGTAAAGTGTTCCTGGGTCCCGCAGCGAGAATTAACTTTAAAATGATTTTTTAAAAACTTTCAGTTAAAACTTCATTTTTTTTTCCCATCATTTTACGACTAGAAATTTCGAAATTTGAAAAAAAAAACCGTGTTGCAAATGCGCTCCAGCGTACAAAACGAAACCGCCACCAAAAGCTGATTTTAAATAACTGAAAAAAACGAGATGAAATTGAATTTGTTTTGCCATTTTCCGACAATGATTTTTTAAATAAAAAAAACTGTTGCACAACAAATGCGAGCGAACTAACCTACCAATTACCGAAAAAAATTATAAAAATTGAATATTTCCGATTAACCCAAGAAAAGAAAAATTCAATGATTTTCTTGAAAAAAGTTACCATTTTCTCAATTTTTCGTTAATAATACTCAAAATTAGACTTGAAGAAAAATTGTGTAGCAAGCGAGCTCTAGCGAACCAAACAAACTGCTTCTCTCCATTGAAGAGTTTCAGAGCCGAGGTTCTGGCCTACCTCATTGAATTTTTCGCGCTCCATTGACAATCGCCCGCCCATAACAGAGGGCGTGGGAAAGTCGTCTGGTACTCCACACGGACAAATACATTTAGTTTTACTACAAATATCGGGCCGCGACGCGACACACGCGCCGGTAAATCTACCCCAGATATGGCGAGCCAAAATGGCCTCGTTCGGCAAAAACTCTTCCAGCACTTTCAATGCATGAGAGACAGAAATCCGTGATACGAGAAAAAATAATCCCAAAAAGTTCAATTTGCAAGGGCGCTGCATTGAAAACGCGCCGATCCCAACTCACGGTCGAATTTGAATTTTTAGTTGCAAAAAAAATCCACCAAATTGTGAACTAAATAATTTTGCAATCAATTCTCTCCCTAAAATAAATGGTTCAGAGGAGTTTCTCGAATTCGTAGTTGATACCCGCTCGTCAGAATTGGAAACTGAGAAATTGAGAGAGAATTAGAGAAGGAGAGGAAGAAGAACTGCTCACTGGTCCCCTCACTCCCGGAAATTAGGGACTTTTTGCTCCGGCGGGCTCCCACTAGAAGACGAAGAAAAAACGACGAGCAGAACACAATCAATTTCTTCTTTTTTATTTTTTTTTGGATTTTTTTCTTGTTGATACCACGGATTTCTGGCTTCCCTCATAAATTGAAATGGTAGAGTTTTTGCCGAAATAGGCCATTCATTCGGCTCGGCCATATCTGGGGTAGACTAACGGCGCGTTGCGTGAGTCGCGTCGCGGGAGTTTAGTTGTAAACCTAAATGTGATTTGTCCATGTGGAGTACACGACTTTCCCGCGCGCTTTATGTCCTGCGGCCGATTGTCAAAGGAGCGCGAAGAATTAAATGAGGAAGGCCAGAATCCCGTGGTAAAACATGGTGCATCAACGCAAAAATTTTTCATCTTTTGGAAAAAGTCAATTGTTTTTTTTTCGCGTCGGGACCACCTAACCGCAGCTCGTTTAATTGAATTTCCCAAAAAAAAAAAATTTGCTCTGTTCAACCAAATTCGAAATTCAGTTTTCATTCCCTAAAACCTATTAAAACGATCGTGGCAAAATGCTGTGAGCTTTGGGGCTAGAACGATAGGCCTAGAAATGTTGAGACAGTTTCCTCTCCCAGCGCCCTTGCCAATATAGAAATTTCAAATTAGTATAGCTCGGCCATTTTCCATCCGCACGGTTTTCGCCAAAACTACACCCCATTATAAGATTTAAAACTTACTTTTCAATCATTATGATGATAATACTTATCCAGTGGAAAAATTTTATTTCCACCAAAACCTCTCCACCCGCCGTTTTATCAAACAAATGATATCACTATGATTTGTGTTGTAAGTGCACCATGTGATTGCACTTGCGCAATTAATTAAGACAATCTCAAATGTAAGTTTGATCGAATTAACCCCATGTACATATAAAATACAAGCTTTTTGTGTTCTTCAAACAGTTTTTTGTCGTATTTATATAGAAGCAGTGTACACCTAAATTTGGCTTATTATGACCTTTTTTTCCAAGGAATACTCATTTTTAGGGTTATAAACGGCCCTTGATTGAGGAGAGAACTGCAAGCGCTTTTTCCTGGGAGTTTTAGGCCACCAGTTAGAGTCTTGCAAAGACGGACTAGTTCTCACAGGACCCAGAAAGGCTTTACTTAGTCCATCACGAATTTCTGACGACGCCTAGAAATGCAAATCTTCGGCCACCTCATAGACATTCTAGGCCACCCTTTTTGACGTGGCCTAGAATCTTTAACAAAATTTACGTAATGAGAAGTAAATCCTAGGCTGTCCCACTATTCAGTTAGCTCTCATTTTTGATACTTCGCCTAGCGATTTTTAACACGTGGCCTAGATAGTTTCTATTTTAACACGGGGATTAGATTTTTATGTTAACAAGCTGGCCTAGGTTTGCTACTAGGCTTAGATTTTTTACATGTGAGCTAGATTTTTATTATAGCTGACCTAGATTGTTGGCATTTAGCCTAGATTTCTGTCATGTGACCTAGATTTTCTAATGCACCAAAAATTCTCCATACAAATTGATTAACTCCTACAACTCTAATTGAGGTAATCAGAACCTTCGATAAGAACATGGAGCTACTGCGGTTCTCAACTTCCGAAAAAGCGGCTGAAAAACTGAGGTATACCTGCTTTTTTCGAAACTGATAAAAGTCAGCATAACTCACGATAACTGAACGTCCCTTGGCCAGGTTGTAGGGGGTAGTGGTGGCCGAATTTTAGGTAGAAAAAACTGGGCCACGAGGTTTACGTGGTGTAAAATGTGCCCCATTTACTATTGGTTTGACCTTCGAAAAATCCAGGAGACGAGACGCAGACTTTGCTTCAGCTGATTTCGCATGGTTAAGAACGTGCTGATGTCATTTTTTTCCGTGGCAAAATTCCCGCATTTTTTGTATATCAAACCACAACGAGACACTCTAACATGAACCACCGTCCGGCCTCAAACGAAAATCTCGGCCACGGCCACTAGGGTGAAGTGGAATGCCCTCCCCTTCTCTAGAAAATTCATTGGAGAAATCAACCCATGCTCAAAGAAACAGTGGCCGAGAAACGAAAAACTAGGCCGCGTTCTAGCAGCTTTGTACCTCTCTTATAAAACACTGTCTGTTAGTTCATAAATCAGAATCTGCGCCCTATCACTACTCTCTCGTTTACCTGCCCCTCTTAAAAAACAATCAACCCCCCCCCCCCCTCTAAATCGACTACTGTTCCCCGTTGTACCTGTCTGCGGCTAGCTATTTCGGATTTTTGGAACGAAAAAGTGGTATGTGAGAATGTACGAAACAAAGCAAACTAATAAGAGGGTCAATTGTATGCATTTTTTGCCCCCCCCCCCCCCCCCCTCCACCCCGCTAGCCTGGGAGGTCTCAAACCGGTTTCCCCTTTTTCACCTCAATCAGCCCCCCCCACCCCCCCCCCCCCCCCAATTTCATTTCACTGTACATTTTCCTTAACCTATCTGCGTATCTACTTTTGTATTTGTTCCTTACTTATTTTTCTAATTATAAACCCTGCAATTTGCAAGAAAAATTCTAAAACCCTAGTCTGGCCCCTTACCCCGTACGGGACCGTGGCCGAGAAATTTATATTTCTTATAAGACCCCCCGGCTCTTCCAGTTTTTCATTTTTTTTCATTGAAAGCCTAAATTTTCATATTTTCTTAGAGATCAAAATATTATGGGTTTGTCAAAAATTTCGAAACAACAAGCTCCCCGTGGGCGGAAGAGTTTTCCAAATTTCTATACTTAGGCGTTGGGGTACGCTCGTCGCACCCTCCCGGAGTACAATTGTAAATTATAAAATTATCATAAAATTGGCTCAACGCATTTGAAAATAATAAAAAAAACTTTAGAAAAAAAAACACGAAAAAAACCCCTTTGAACATGGTTCATCGACCGGGACATATGTACTGTGAAAGCTTATATCTCTGCGCTCCATGTTTGTTTCATTAAATTTTTCAACCAACTAAGTGTTTATTATCTCTTTTCTATATTTTTGTAATTAAAAAGCTTTTTGATACTTCAAAAGTAACTGAGATGCATGTTGTGAAACAGAGCAAACTTTCCTAGCTTAGCCCAATTATTTATATCTGTGTTTCGTGTATAAACTTTTCTAAAAGTTTACGGTTTTTTTAAATTTCTAAATAAAATTATTACATGACTCTTTGGGAGGTCATGCGTTGTAGATAGCATGTACAAATAAAACTGAGGAACTAGGACGAACTGAGAAATTCCTAAACCATTATTTACACATGTGATTCTTGCCTTTTTCGGTGGAGGGTTAAAAAGGTTAAAAATTATTTAAGGCTTGGAATGAGCATTTGTGCGGCCGAGGTTCCTTTTTATTTTCTAGGCCATAATTTTTACAACAATGGCCAGAAGCACAAATTTGTAAGTAATTTGAATTCGCCAAAATTTTTTTTTCCATAAAATTTAAATTTCCACCGTGGAAAATTCTTTTCGGAAAATTTGTATTTCCCGCCCTCAAAAGATTTTTTGTCTCAAAAAATTGAATTTCCCGCCAAAATGTTTTCGTCGCTCAGGAAAAAATTTCCCGCCATCAAACATTTTTTGTCTCAAAAAATTTGAATTTCGCCCACCAAAAATTTTGTCCCAAATTTTATCGAATTGGTGGAAAGCCGAATTTCCATTTTCTAGGACACTCTCAGTTAAGTCATCAAATAAGTTGACTTAAATTAAAATTAACAATTTGTCTCCTACCATGAAAATTTAATAATAGGCTGTATAGAGCATCATGGGCGGGCGGGGTAGCATGAGTGAACTTACCGGTTGACCGTCTATACATAGTAACACCCGACCATTTTCTGCCAAATACATATAATATCGCTTCGAGACCCAACTAATGCGCAGTTGTGCTTTATTTCGGTTGACAAGACCCGTAGAAATATTAATTTACCTACAGGTGCTAGAGCGTTTTAAGACCTAAAAAACTAAGCAATGGCCCAAAAATCCAAACTTAAGAAGCGCCTATAATTGTGCCTCGTGTTCGGGACCCAAAATCCAACTAGGCCATATTGTGAGCTTGGTGAGACCCACCTGTCATAAATATCACTTGAGTCAAAGTGAAGCTCCTACTTTTTTTTTTCGACAGCCTGTAGAAAAAATATTGAGATTCGCAAAGAATTCACGGCTCCCCCTTTCAATGTTTACATACACATTACGAACGAGAAAACGAAAAAGCGAAACGAGAGAAAAGCATTGAGTGAAATGGAAAATGTGTTTTTACTTTTTATGAAAATTTAATCACATGGCGTAAGAGTGTCCCATTTCTGCTTGACGTAGATCTACAAAAAATGCACGTGGGTGAAGAGACGCCGAGTTTTCAACTGATTTCGCTTTTTTTTGGGCGAAAATTTTCGCATTGCTTGTAGATCAACTAGAAACGCAACAGTGGATAAGCGCGCTCTATCGACAAACCCGGTGTACTCGCGGACAACCAGTATAGTTTGAAATTTTATTTGAATTTTTGTTCGAAATTGAAATTGAAAAACGGTAGATGCCAAATTTAAATTTAAAAAATAACAATTTTTGGAATTTAATTTTTAAAAAAGTTCCCCGTAAATCTACACTTAAATCGTCTCGTAATTCGACAACGCTATTTTTTTCAATTGTTTTGCCCATCGCCAAACTTTTTTTGCCCAATCAAGCATCGTCAATTGATCCATTGATCTTCTTCTTCTTCTCTTTCTCTTTTCTCACCACCGAAAATTTTCATTTTATTTTTTGAGCACAATACTCACCTGTCTGCGTCTCTCTGTACCCCCGATCTCTCGCCTCTCAAGTATTACAAACGAAAAATTTGGGGAGAAGCCGTGATTTTCATTTTAGTAGGATATGAAAAATTCTAGTGAAAATGTCAATAAAAAAAACATTGTTTTTCAAAAAACAATCCCCTCGAAAATCCACACCAAATTCAATATTCACCTTATTACAAATTGATTATTTCTCCCAAAAAACACACGCCATCGGCCGCGCCAGGGCATCTATTGTCGCCTTTTTACTCCAAAAAATTTCTGCAACTGTCTGGCGTCACCGGTTAACACTGAGAAACAACAAATTTCATTTCTCGAATAACATTCATTTTGAAGGTTTTTGGTTACAAATTCGACACGGATTTCTGGCTTCCCTCATAATTTAAAATGGAAGAGTTTGCTGATGAACTAGGCCAACATGTCGGCCATATTTGGCATAGGTATTTACGGCGCGTTATGCGTGCCGCGTCCCTCGATTTTAGTTGTAAAAATGTGAAGTGTCCTCGTCGTGGAGTACACGACTTTCCCACGTGCCCGGTGAGAGATTATCAATGGCAATCATTCAATGAGGTAGGTCAGAACGCCTTCGAAGAAAATCGAGAAAAACATATCCACAACGATACTCCGCAAGGTGTGCGTGTTGTTAAATGATAAATTCAAAGCAAATAGCGATTTTGTTTCCAAAATATGCCGAAAAAAAGGAAAAAAAATAAAAATAAAAGTTCAGCAACTTATTTCTCGGCCGTGGTTGTGTCGTTGTTTATTTTTTTGCGATCGTATTTTTTCTAGAATAAGACTTAAAATGAAAAAACATGAATAAAAATCAGTTCTCCATGGCCACTGTCAAAAGTCGCAACGACACTCCCCTTCCAGCTCCCCCCCGCGTGTATTCTTAGCATGTGTAAATTACGCGATGTAGTGTATAAAACCCTAATTTTTTAGAAGATTTGAGAAAAAAAACTTTTAAAATATGGGATAAAATCTCCTTTCCCTTTTTTGAAATCAAGAACTATCCGACAAAAAGTTTAGCCAAAAGTCCAAATAAAACCAATATGTAGAAAAAATCAAAAACTCGGCCCTCCAAAAAACTAGGCTACACGTTGTTTCGACCTCGCCGTGCTCCCCACACCTATGCATATCGTTAAATGTCTCCCGGACCCCTCATTCCGTCACACATTTCTCAAAGTGTCTTTTTCTCAAATTCGCTGTCGAAAATCCCTGAACATATCTCTTCAGTGTTGAGAACGACCTGACAGTTTTATTTCGATTCTCATGATCTCAGTGTCTCCCGGATGACTCGAATTCCTTCGATATATTTTTCTTTGAAGTTTTCAAAATAATTTTTCCTATATATAGACTTGATTGTTCGGTGGGAATTTCTCATTTCAAAATATTTATTGAGGTCGCTTCCCTTTTTATATGGTCGTTAGGTTTCTAAAACTCGGCTTTCCAAGTTGTAGCTTAGAGCTCTTTGTCTCGGAGTATAAAAAATTCACAAAATAAATAAAAGTTCACGTGGCCGTGGCCTAGATTTCCAAACTCGGCCACCATTTTTTTCTCTGACAGTAATCCACTTAGATCTCCTTTTTAGCCATTTTTTAACTAAATTTCCCACATATTCGTCCGTGGCTCCATATCAATTTTACTGATAGTAATTTCCAATAAGGTATTTTCGGGAAGATAGGAACCCTTTTTCATCTAATTCGTTTGTTTCTACTTTATCGGTTTTGCCACTTTCCCGCATGCCTACGAGCCTACATATCTGCCGACCTAATACAGCTCGTAGGCAGACCTCGGCCGCCTTGTGGTGAGATGAGTCGCTTTGTAGGCAGGCGTAGTGTGTGTCTTGCTGGTATGAGTAGGGCCTGTCAGCCGCCCAGTAGGCAAGCGTAGGCATGCAGCCGTAGCAGGCTTCTTAACTAGGCATCTAGGCTGCCTTGTAAGCCGGCGCAGGTAAGTGAAGGTTTCCTCGTGGCTGGCATCCTTGCAGTCAGGCACAAGTCGTCGGCTTGAAGGCAGGAAGAACATGCCGCCTAGTAGGCATATTTTACTTATAGGCCCGAGGTATTAATGAGATCTAGGCTTGCGGGTTAGTCGGTTTGTAAGCTGTCGTAGGCTGCCCTGTAGGCAGATTGAACTCTCAAACCAAACAACACAAAAATTCCAATATTTTTTGTACCTTCTGATTTTGATCTCTGACTCACTTGATCTTACTTTATCAATCAAGAGTCATAACTTCCATTTTTAGGAATAAACAATTATCCTTCAATTCATTGACGTTAATCCCTTTCAATATTCATTCAATACACAATGAGACGAAAAACTCTTATCTTTTTTCACTCTATCACATGGTGCAAAATTATAGTTAGATTGAAAAAGCTCATTTTATCATTTGTCACTTTTCCACCACTCTCAACGTGCTTTTTTTTAAACACAAAACGTTTCCCGTCATTTTCTACAGTACTCCCGCATTTTCACATTTTCCAGGTGACACCTGAGATGGAGGCCGACGAGTTTCAACGTTCGTATTACGGTCCTCTCAACGACGGCTTCTGCCACGTCACGGCCGCGACACAAGACTTTTGAGCTGTTGGGACCGGTGAATAATATCTGGCTGATATGTGTATAAAGTGTAAGATAATTGGCAGCCCGATTGCATTTATTATTGCGACGGTGATCATGTGCAGTGGTGGATCGTTAGTTTTTTTTGACGTAAAAGATAGTATAAGCGTCTTTTTTTAGATCAACCGAAAAAGAAATATGGAAAAAACGACATTTAAAGATTTTTTAGAAATCAAAAAATGTATAAACTGTATGTTGCTTAGGGCCTCCATGGTAGACAGGCACGGTTTTAGGGCCTGACGTGCGCCTGCCTGAGACCCACGTGGAGTCAGAAAGTCCCATTTCGCTTTGATCTTCAAAAAATGCGGGAGAAGAGACGCAGATATCTCATCTATTTCTGCATGGTCATTTAAGCGCAGACGTCACAATTTTTCTAAAATAATCCCGCATTTTTCGCCACGTAGAAACCGCAAGGAGACAGCCTGACAGCTATTAAGCCAAAGGCAAAAGTGTTTGGCCGTCTGACTTTTGAAACAAAAGGCTCGGTGAAAATTGAAAAAAAGTCTAATAATAATTAATATAAAAGTAGAACTATTTTCAGTAAAGGCCAAATGATTGTTTTATAAAAAGACTTAATTTAATTAAGCCCAATTAGATCTCCTAAATGTTTCAAGCAGCACAACTTTGCATGTGACGTCAGGCTGTCTCATTACAGTTTACAGAAACCGCGGGAATTTTTGTGCTCCCAGGAAAATGTGCCATCAGCACACAATGCATAATCAGATGAGATTTCAGCGCCTCAACTCCCGCATTTTTTGTAGATCAATCTAAAACAAGACTCTCTGACACCACGTGAATTTTCCAACCATCAAACTATCAACAAATTCGCGCCAAAAAAACTTCTTTAAAAACTTATCATTCCCAGTGGGAACAATCGGTCTCGAACTGAGGGATAATCTGCGACGGGTACACGCCAAAAAACTTCCCGACTGGAAAATCGCCTTTATCGAGAGTTCCTGAGTTCCGAAGGTGATCCGGTGATGACTACAGTTCTCATCATGACTGCCAAAGACGGAGGATCCATGGATCGGACCAAGTATTTGGAAGTAGCGGGTGAGTGGCATAACATATCTGATACCGTATTTCCTCCATTAGTAAGGCATGCAAAACTGATTTTCGGACACCCAATTTGCTTGCAAAACTAATAGGTGCAAAATTTTCGAACAGGTTCTTTCTCATTAAGTTATATATTATCATCAATTTCAATATCAACTTCTTAGGAACCAAAATGCGCGAATGTTACGACTGATACGCAAAAATTGTCCGAGTGTACTCATATTTAGCCTTGACCTGTTATACTCAAGAGCCGTCTGTAAGAGTTTTCCTACAGAACGATTTAATAGTGCAAATTTTGAATCTAAACTTAGGGAACAAACTCGTTAAGGGGTGGAAAAATATTAGAGGTGCAAAACTAATAGAGAGTGGAAAACTAATTTTCGATTAGTGATTTTTGATGCAACTAATGGAGGTGCAAAACTAATTGAGGTGACTAACTAATAGAGGAAATCGACGGTATATTTTTTTGGAATAAAAAATTTCAGCAATGGCTACTGCTACATCTCCAAAAACCTATCCGCACGTGGCCGGTGGAAACGGCAAGTTCATGGAATTCGAGATTTCGTTGTGGCCACTACTGCCAAGCCATTGCAACGACATCATAGGATACCTGGACGCCTAGAAAACCAAGTCAGCTAACCCAAAAATTGATGGCTACCAACTCTATCACCGATTACCAGAGTAATGGGTTATCAGCTTCATCTCGAGCGATCCGGGGTTACTGTGAATCAGTCGGATCCGGTCACTAATATTCAGAGTATGAAGGTAGTTCTGACGCTTCCTGTGTTGTCAGAGGTACGGACGATAGAGGATATCGTACGGATAATCTGAACAAGTGGGAGCTGGCGGTTTATAACTATGCTACAGGATACTCTGCACTCCGGAGGGTGACGATCATTTGGTGGAGATTAATGTGAGTGGCGAGAATAAATTGGACCATAAATTGGGCCAGCCCTAAAAAGACAGCGGGCCGGCCCATACCGACCCACTTAAGGTCAATAAAGTTTAATTCAGGTGTGTGCCGCAAATTTTGACTAGAATTTGCTCGGCAAAATCGGCTTTGGTAATCGCATAATTTCTCGCTCGGCAAATTCGACAAGATTGAGATTTTGCCGTTTTCGGCAAACGGCGAATTTGGCAAATTTGCGCTTACACCCCTGGTTTAGGGGTTTCACCGTGTTTAATTTTCAAAGCTTATAAACCTCTTTTCCAGGTGATCGGAAGTCGTCGACACCGAAATGAACAAGGACGCTCAGAAAATGGTGCCCAGTCCTACTTCATTGTCGGAATCGTCTCGATGATCATCTTTATCTTCTGCACCGTATCGTCTCCCTCTGCCTGCTACAGCAGTTCTAACGGATACTTCTCCAGTCGATCGGACTCATCGCCCTCGCCTGCCTTTGCCGATTCTCGCAATTCTCACTGCATTCGGAATCAATAATATGCTGGGAAATCGAACGAACTCTCCGATGATGATCATTCCGTCCTTGATCAATGGAATCAGAGTCAACGATGCGTTTTTGACACCCAGTTCAATTGGTTGCAGCATAGCACCCGGATTTTCCGTCAGGGAAGCGGTTGGCGTATCTGTTGGCTGAAGCTGGTCCATCGACGACTCACTACGACCACTTTGACAAATCTAATTGTATTTTTGATCGGGTGTATGAACCCAACGGAGGGAAAGGTGTGGTGGACGGCAAACTACTTTTTCCGGCAGCGTTAATCGGTAAATAGGTAAATTGCCGGAATTGAAATTTCTGGCATATCGAACCGGCAATTTGTCGATTTGCCGAATTTGCCGGATAGCGAATAAAAAATTGCCCAACAGCACCTGCGCCCTGTTAAGGAGCTTTGGCCTCTAACATAAATTTGTCTATTCATCCTTAATTCCCTCGTAAAACGACAAGATGTATTCCAGGGATGACGATCTTCTGCCTTGTGCAATCTCCCTACTCCTCGCCGTCTACACCCTCACGTTCTTCTGTCCGGTGCTAGTTCTTCTGCTTAGCGAACGCGTCAATACACGAGCCCAGCTGGAAGCTCGAGGGCACTTTCAGGTTCTCGGATTCTACAAAAATCATATGCAGCCGATGGACATTTGCACTTCTCATCATCGGAAGTCTTGTCTAGTGGGGTTTCCGTATCTATGGAACACTGGGGATCCGCGCCGGTGTTGAACACTGCAAAGATCCTTCCCCTGGAGACGCCGATCCGACCGAACTATCGAGGAGACCGTGTGAAAGCGTTAGGTCAACCCAGTCACCGTGATTGAGAACAGCCAAGTTGATATAGGCAATGCAAAGGCTTCGAGCATTTGACAACCTCGTTGCCATCGACTTCTATGCAAAAGTGCCGGGGATCCGAGTACACCATATCTCCAATCAGAGACTCTACCATCAGATCTTACGGTGGAGGAGCCGTGGACTTTGATTATGAGGAAGAAAGCGTGAAAAACACTTCACATTCCCCTTTAGACTCCAGTAAGATAGCCGTCCACGCGTTCCTATTAAAATCTACATATATGCCTATAACGTGGTTATAGAAGAAAAATAAAACGCCATAACCTTCTGCCGCGCAAATGAATCCGCGGGAAGAGACAAAACTACTGTAGTTTTTAACCAATTTGTGTAGGCATTTACGAGCTATTGCGTCATCGGTTGTATTTAATTTTGACAATTACTTTTAATTTTCAGCGTTTCACTCGTTTTTATATTGAAATCTTTTGTCGGTATTGAATAAATCTTAAAAGAAAACACAAAAAAATTAGAAAAATTCCGAAAAAAGCCTGAAAATTAAAAATTGCGGCTTACAAACTTAAAGTCAACGATGACGCAACTAAAAGCTCGTAAATCTACACAAATTGGTTAGAAACTACAGTAGTCTCTTCCCGAGGTTTCATTTGCGCGGATGGCGATTTTTCTCATGGATCACACACGTAATCGGCACCTACATATTTTGTGTGCCTAAAAACACGGTCATCCTAGCAGTGAAAGCAGACAAATGTAAGCACTTAACAAACGTGAGTAGGGCTTAAATGGTATGCACTGTTTTAGGGCCGCCTGTCCAGGCCTGTCTTGTACGTTTCAGCAATTCAAGCCGTATCTTTCCAGAGAGCTAGTGTCACCCATTGCCAGCTAACCCTATCTACAAGCATCACAAGGGAGGACTAAAACTTAACTTTTCAAATCCGTTAGTTTCAATCTGCCAGCCCCCTGACCCTAAATCGAGTCTACCATTTTCAGTGATCCAATCCGAAAAGTACAACTGATATCCGCGCTTTTATGAAAACGTAACCTTGTGGGATGAACGGATTTATGCAGGACTGGCGGACCAATAATCGCAAGTTCCCACGTGGCCCTAAATGTTTCAGTGTGGTTCTAATGTGAACGCAATGTGTCGTAGATCAGATGCTGAGTCTGGTTGGCGATCACGGTAAGATCTCAATGGTTCCAGCGCCCTATAAATACCGCTTATTCTTTCAGAATGCCCTAGTCACCTTGGGATGTATGGCTGCCTTCTGGGTAGTCTTCATCCGCAACCCCCTCTCAGTTGGCCTAGCGACCGCTTCGATTTTATCCATCTCCAAGTAACTGGATACCGGTGCTTCTGGGACTTGGATCTGGACCCTGTGACCCTCTGCGCAGTAATTTTTTCTTGGATGTCCGTTTATGAGACTTTGTTGCCCATGTGGACTCCTGTCTCTATCAGGTCAGGTATGAAGATTTCGAGGAGAAAGGAGTATTGAAGAGGATTGAGATGAAAACTCCCGAATCTTGAGTCGTCAACTCGCTGTCCAATTTGTGTTCCCTGGCCAATGGTCCAGTCGGCGTCTTCAACTCGTCTATGTGTCCTCCACCTTGGTATTCTACTGGTACCTACGAATACCTATACTTTACCGATAACCCTACCCCTCAAACCTTCCGGAACTATCTCCCAATGGTATTCGTGAAAACCATCCTGCTTACGTCGTGATTTGGACTGGGGAATGTTCCACGGTCTCGCGCTGCTCCCGTGCTCAATTCCTGGATTTTCCCCTGTCAGTGTTCAACCAGACGTTCGCCGACTTGTTGTTCGGCAGAACATCCTCTCTCGTCTTGCTCTTCGGATTCCGGAAACCGACACTGGTGATGCTCAGGAGATGGTACCGCTCGCTGGAACCGAGAAGCCTTAAGACCTGAAATTAGTTGTTGTTTGTTATTATGTACAGTTGGGATACAAAGTGTATTATGTAGTCTGTAGTGTCGCAGTGATAGAAACTACAAATTCAAAGCTACAAACTATAAGCTTTGAGATCTGGCAGAGCTTTATAGTTTGTAGTTTTATTGTAGCAGCTACAAACTACAAATTTCTTTTGATGGCGCACAAACTACAATGTACATTTTGCCAGTTTTCTAGATTTTTTCACTCACACACACACACACACACCGTTTTGCTACGTGGCTGCGAAAATGCAAAACTCGGCCAGGTCGCAAACATCGCCAGAAACTTCTAGCTTTACCAGTAGCTTTTCATGATCTAGTCTTCTTTTTTTTCCCCCCTCAATTTATATTTTTCTCGAAATTTCAGAACGGTTCCCTAGTCTTCTGTCACCGTGTCCTGCCCTCCCGCAAGCGGGTCCCCTTTTCCCCCCACAGATCGTACGGCTTCTCAGGGTTCCTATAGCACTTTTTTCTTCGATTCGTGCCATACAAAAAATTATACTTCCCATCGCACGCCGTGTCCATTTTGTCTTGTACTTTTTAAATGCATTTTTTGATAAATTTGATTTTTTATATCATCCAGAAAAGGGGCAAAAATTCAGATTTTCCTGGCGAGTAATTTTGCTGGAATTTTTTCAAGCATCAGACATGCAAAAACTAAAACGACACAACACTATCGATGGGGATTCGACTCGTTCACCCCAGTCATCCTAACTATTTTTCACTATTTTTTTTAACTTCTGTTTTTTTGGTACTTTTCTGGCCGTTTTTATGAAATTTTTTAGCCCGACATAGTTTACCTTTTTTTGTTCTGGATTTTAGGAGTTTCTGCGACCTTACTCTCACTCATGTTCGTCCTCCAGCCCCGCCTAAGCCTATGCCTTAACTCAAGCCTAAGCCTAAGCCTAAGCCTAACCTAAATCGCGTCAGAGAGAGCGTAACGCTCGCCACTGACGCCAAGCCTCAACCTAAGCCTAAGACTAAGCCTAACTCTAAGGCTAAGTATAAGTAAATCTAGGCCTCGGCCTAATACTAAGCCTTAGCCTAAGCCTAAACCCAAGCTATCAGAAGACACTCAAAAAATGTTCAGATCATTAAAAAATAACTACATTCAACAGTTTTCTTCAAAATTTAGCTTTCGACTTTCCAAGTAATCAATAACATGATTCCAAAATCTTCATACATCCCTCCCCTCTTCACATCGTTCCCGACAGCTTGTACTATTTCTCCTCCACCCACTAGGCAAGGTCTGCGTCTCTCGGGTTTCATACGCTATCTCCCTTTTGTGGAATCAGTTCATCGTTTCGGATCGTGGCTTACTTCTCAATATCCGCGGGCGTCGCTTTACTTTGATATAAAGTTCAGTTTTTTGAGGCCAAAATTTAATTGGTGGAATCACAGCGTTTGGCGATGAATTAATTATCGTGTGTATTCAACTTTAATATACGTGTACATTTTACCGATGCATGTAAGTTTTGGTGTATCAAAAAATGCCCCTAATAAATTTCTTAAGGGTGGAGGAGCGCTAGTGGGGAAATTGCGAAGTTTTATAACATGCCTATAGTACCACAATGACCGAATATCATGATAAAAAAATTCAAAAAATTTTTAAAATTTTATATGATTTTTTTTAGAGGAAATTGGAAAAATCTCAGTTTTTACACTGCCTAATTCCAATTTGACTTACCGGTAATTTTGTTCGATGGAGCGCGCTTGCACGTTTTAAAATTTATTTTATTTTTTGTTATTTTCCTTTTTAATGTTTTCGGTGTATTTTTGCTCTAATTTTAGAGAGTCAAGATGAATGCAGATTTTACGATTAAAAAGCACGCTCACAGGCGTAAAAATGACAGAGCAACGATTTTAAACGGTATCGAACCTCATCTATATTAATTAATATCACAGATTTACGACTGGTGCTTTTTAATCGAAAATTTGCATTCATCTTGACTTTTTCTAAAATTCGAGCAAAAATACACCGAAAACATTAAAAATTGGTGGAAAATAACAAAAAATAAAATAAATAAATTTAAAAACGTACAAGCCCACTCCATCGAACAAATTCGATAATGTGATTCAAACTGAGAACTAGGCAAAAACTGAGATTTTTCCATATTTCGAAAAATCATATAAAATTTAGAATCTTTTAAAGAATTTTTTTATCATGATATTCAGTCATTGTAGTACTATAGGCATGTTTTAAGAGCCAGCAACCCACTGGCGCTACGCCTCCTAAAGTTTGGAGTTTTAGTAAAAAAAGATCGGTTTTTTAGTTAATAATATTAATATCCAGTCGCTCCTCCGGAACAGTTCGACCATTTTTCACCACTCTTCCAGAAGTACGTGGAAGAAATGTTCCTATTATGAGATTATTCGAGAACTATGCTGCATCGTGGCCGACCAAAAAGTCTCTTAAAAAGGACTTTTTGATCAGCTGGCAAATGTCGGTTCCCGCAAAAAGTCGTATTTCGTGCAAAACCGGCAAAAGCAAACATTTTGATTACCGGCAATTGTCGGAGTTGCCGATTGCCGGAAATTTGCGGAAAGAATGGTCGTTTGATACTCTTTTTTAGATTGCCTAAAAATGCATTTTAATGAACAATTTTTAATTTTCAAGCTCAAAATGATTTAATGCTTTAAGGATTGTCCGTTTTCTTTAAAAAAGACTAACCGAAAACTATAAAAAAAGGTGAAATTTTTTCAATTTCCAAAATATAATTAATTTTGGCAGCCGATTGCCGGAAATTGCCGATTACCTTACAATACGGGACGGCAATTGCCGAAATTGCCGATTGCCGGAAATTTCCAAAAGTAATTGCCGGATTTGACGATCGCCGGAAATTCCCTATTGCGCTCCCTTGTATTAAAGGATACGGCAAACGATGTTTTCCCGCAAGCGTATCGGCAATTGCCGAAATAAAATATTAATTCGGTGCTCAAACGGCAAACGGCAGTTATAACAGCAACAAGCCACTTCTCCAATTTATAATCGGCAATTTCGGCGATAAACGGTCAATTTGCAAGAAATCAAAATTGTGATCTTGCACATTTTTTCTGGAAATTTCAGAATTTCAATTTTAAACAACAACATGGTACCCTATGAACATATCTTAAAAAACCCGGAGTGAATTCTATAAAAACTACCTAGAGAAACTGACCAAATACTTAAAAAAGGGACGGATTCATGTGATTTTGATTAAGATAAGTCTTTGAAAACTTTCGGAAAATTGAAATCCGGCAAATCGGCAAATCGGCAACTTGCCGATTTCCCGAAATGGCCGCAGCAATGAACTACACTGTTCCAAATCGAATTCGTAACCGATATTATACTTAGGGATATTTGTAACTCGTATAAATATTAAATAATATATATATATTCCAGCTGCTCCAATCTCTCCAAATGGATGCAGTAGCCACAGGCTACAACTCCCTATTATTCTCAATGGCTGATATGCAAATCGAAAAGGTCATGGGTAAATGGATAGACATTTGTTTATTCGAAAGAATAAAGAGGATTGTTCAATCTTCTATTGTTAGTTTATTTTCATTCTGAAAATGAGATGCAATTTTCAGTCGATATGGTACTTCGAACTCTATACACCGCAACATTCACCTCAAAGCAGGTCGGAGTGATTAATAATGATGTCGTCACCAATGTGGAGTACGGTAGTATGGTTGGTCGAGAGCCCGCAGCCGTTCTCAACGTAGTGTAAGGGATCAGTCTCCATGTAAGTATTTTAAATATCTTTGGTCCGGTGATGATTAAGATACAAGTTTAAATAGTTCCCGTTTCAAAACTTCGGCTAATTTCCCGCCAAAACTTTTCTCTGAAAAATTTTAATTACTTTCCAAATTTTTTTCTTTGAAAATTTGGACTACCCGCCAAAATTTTGTAGTAAAAAAATTGAATTTCTTTCATGGCTCCAAGAATGTTTTCTCAGAAAATTTGAATTTCCCCGACCGCCAAATTGTTACTGTCAGAAATTTTGAATTCGATTTCTCGCCAAAATTTATTTTCTGGAAATTTGGATGTCCCAAAATTTTTTTCTCAATAAATTTAAATTTCCCGCCAAAATTTTCTGAAGATCTAATTTAGCGGATATTCTTTCCAAATTTTTTTCATTGAAAATTTATTGAATTTCCCGCTAAGACGAATTTTATTGTCAAAAAATTTGAATTTCTCACCAAGACTGTTATCTCAGAAAATTAGAATTTCCCGCCAAATTGATACAGAATATTCTAATTTCTCGCCTAAATTTATAAATTACTGAAAATTTGGATTTCCCGCCAAAATTTTGTTCTCAATAAATTTAAAATCTATCTCCCGCCAAAATTTTGTTCAAAAAATTTGGAATGCTCGCCAAAATTTTATTGTCAGAAGAAACTTAAATTTCTCGCCAAACGCAGGTCTTTTCCAAAATTTAATTCCTGTCAAAACTTTGTAATCAAAAAATTTGAATTTCCCGCCAATTTTTATTCTCCGAAAATTAAGAAGGATTTCCCGCCAAAACTTTGTTCTAAAAATTTGAATCTCCTTTGTCGCCGAAATTTTATTGTCAGAAAATTTGAATTTCGAAATCTCTATGAATAAAACATTGGCAGTGTTCCCTGTACGAATCGGTGGCTTGAGTGACGAAGGAGAATATCAATACATGATCTTAAGTACACCCACTGTAAGTATCCAACGATGCTCTTGACAGGCTAAGATTGCCTTAAAATTTGTTTTCTAATTATTCCAATCTAATCTTCATGTGATGTTGCGAAAAATGCAAACATGTATTTTAATACATTTTCCCCCTATTGATGGCGTCGAAAAATGTAGAAAAATGGAATCATTTTTGTGCATGTACATTTTCGACATTTTTGACATTTTCCGACATTTTTCGACGTTATTAGACATTTTCACGCATTTGACCGAACTAGGCAATTTTGGGTCCGTCTGGGGTAGATTTAAGGAGCGGCGCGTTGCGTGTCGCGTCGCGGCTTGATTTTAGTTGTATAACTAAATGTAATTGCTCCGTGTGGAGTACACGACTTTCCCAGGCAATTGTCAATGGAGCGCGAAAAATGCAATGAGGAAGGACAGAACCCCGTATCCACAGAAAGAATTTTCTCTGCGTCTCTTGTCTTTAGCATTTAAACTGGGGCGAGATGTAGAAAAATGCTGAAAAATTTCGAATTGAAAAATAAAATGATGGCAATGTTACATTTTTCTGCAGTAATTGCGGTACGCAAAAAGCATCACATGGATAACCCCATAAAAACTCCCATTTTTCCAGAGACCTAACACTATTCGAAAGGAAATGGAAGCGTGTATGATGATTTGTTGAGAAGAATGGTTTTATAAGCGCAAGTCCAATGGCAGCACTGAACACTCGTCTGCATTTTTGCACAGATGTCTATGTTTGCAGAAAAGTGAATAATTTATATGAGAATGGAAATGTTTGAGTTGAAGATTATCTCTTTTCTGAGGATACGGGAGAGTTCAAGTTTGACGGGTTGTGCAGTGTTTACATTTCTAACCTTCATGTGTTAAAAATAAAGATTAATGATTAATTGGATCTGTATTTAAAATGAACTTTTAAAACACAAAATTTCAGATCTTGGTTTAAAAACGTATACACTTGAAACTTTGTTGAGTGTAATGACGTAATTTGAATTTCGCGAAAAAATGACTGTGATATGATTTTGACCGTGTACACGGGCAATAATATTTTAATATTATGGATTATAAGCGTTTTTCAGTAGACTTTCCATATTTTCTCATGATTATTACTTTTATGACCCAAGAAAAGCATTGTTTGGAACTCAAAATTATCAACTTTAAATGTTTAAAAAAATTCAGGAAAACATAATATTTGCGTATTAAAAAATTTCCCAGTAATTTACCACAAAAAAGTTTCTTTTTCTTTTTTTAATTTTTTCTCAGAAAAATCAAATCTCCCTACAAAGTTTTTCTCAGAAATTTTGAATCCACCGCCAAAAATTTTTCTCAAAAAATATGATTTCCCACCAAAAAAATTTTTCTCGGCACAGAAAATTTAATAACAATTTCCCACCAAAAATATAGTCTCAAACTAGAAATACTAAGAGCATTTTCCCGCCAAACCACTACTTTTTTTAAAAGAAGATTTGAATATACCGCCGAAAATTACTTACCAGAAAATTTCAATTTCCCGCCAAAAATGTTTTCTCAGAGAAATTTTTAATTTTTGGTCAAAATTAAAATACTACTACGGTACCTTAATCTTACACCTCCACCGAAAAAATCATTTTTCAAAAACTACTACAGTACTAACAGTACTCCTACCGTACTGCTAAAGTACTCCTACCGTACTCCTACAGTACTCCGGCAACCGTACTCCTCTACAGTATCACTACAGTTTACTCAAACCATATCACTAACACCAATCCAATATCCCGTCACACGACGATAACTTTTTTATTCAAAAATACAGTAATCTTACTGTAGACAATCTTTTAAAGTCTGCATCCAAAACTATATCGGATCCCAAAAGTAAACGACAGTCAGAAAATTTGTATTGGATTTCGCGTAGTTTGCTCTTCCGTGAAGGCAACACACGTAGCTATATTGATGCGATGAAAAACGAGAGGAATCAGTCGAGGTGTCTGATCTACTTCCAGGAGACCGCTCTTCGACTCCTATTGGCTCTTGCAGCCACCTCATTGGCGGCTCTTCCAGATTTGGGATATCCCGGATGGCAGTGCGATGCATCGCTTTACCATCCGAAGTAGCTTACTTTAATTACTAAATTTTGAAAGATTTTTCCTCGCTTCCATGAGCAAAACTACCCCGACTTCTGCCCACTCCGTCCGACTCACCGACATAAAAGTTTTGGGAGGAGCTCTCGTTTGGAGACTCCTTGTCCGCCGCCAATGGAGCCGGAGCACCAAAGGGAGAACCCTCTGGCTGTGATCCTTCCGTCAGTACAGAGCACTAGCCTTCCAGTGTGGAGCGTGGTGACCAATCTCTCGACGAGCATGTCACTGTTGAAAGTAAGCCATTTTTCTGAAAGCGGGAATTGGGAAAAGTGAGTTGTTGCTAGATGTACTGAAAAAGTTCCTAACCTAATGGGATACTCCACTGGAACTAGTTCGGAAGCGCCAACGTTTGGGAGGTCTCAAACCGAACCAAGCAGTTCCAGGAACTGAAGCAATCGATACCATCACTTAGATGCTGCCAGAGCTCTGGTGCAGATTATCCAAAGCCACGAGGAGGTGATCTAGCAAAGTCCAAACTAAACATCAATTCCGATGCATTTCCAGATTAAAGATTACAAAACTGATTGGAAGTTTACGTATTCATTGGAGCAAACGACATGTGCGCCTATTGCAACGACCGAGAAAATGTAAGATAGTCAACGATCATTCCACACCCGGTTTTATTGCATTTCTATAGGGCCTCAAAAGCAATCTGCAAAATGTCACTGCCATTCAAATTTTAAAAGATAACTTACCAAGGTAGGTAAACTATAGGAACATAACATTATAACAAGTAAATAACTATAATATTATGAAATTGTCACATACCTATACCTACGTATAAATACCTAAGTAAGGGTCCAGAGCGGTGTGGCAAAAATTTTGAAACCAGCAATTCGGCAAATTTTCCGGGGTCGGCATACTTGGTAAAGGGATCGCAACATTTTTTGGAGCTCAAAAAGTGCCAAAATTAACAGAAAATCTAAGTTGTTAAACATTTGTGGCAAATTCCAAATTTGTCTAAATTTTTGAAATATGCCTTGCTCGGTCAAAGGTATTTCCGCAAATTTGCCGTGGTTGTCCTCGGTAAAGCGCATCATTTTTTGGTGCTCAAGAGTACTGAGTTGATGGAAAAGCACTTGTTTCAGGAAACATTTGTGCGAATTACAAATTAAGTCCAAATTATTGAAATTTCCTTGCTCGGAACCCGGAGACCAAATTCGGGAAATTTGGCACACCCTTGATCCCATAGCAGTGGCGCAAAAAAATCTTTAAAAATAGCTTGTGGCCGTTTCCGTGCCAATTATAAATTAAAGTTAAACATATTATCGAAAAAATACGATTGCAAATTTTTGGCACTCGTAACTTTGGACAATCTACCTTACCTGTTGACTAGGCTCCTCCCCTTCCTTCGACAAGACCCAAAATAACAACGGCAAAAAGATTATGGGCAACGTGGTGCCAGGCTGTCCCATTCCAATGTTTGATCTAAAATAAGGTGGGAATTTTTCGCCCAAAAAAAAAGTGACATCGGCACGTTCTTACCATATTGCCAGTAAAAGTACTCTGCGTCTCTTCTCCCGCATTTTTTGTAGACCAGCGTAATTGAAGCCAAAATGAGACACTCTGACACCACGTGGGCGGAGTCAACTTCCACAGGTAGAACAAAAATTAATGATGAAAAAAGATTTGCGATCGGATTTTTCGATAATAAGAGCCAACATTTTCGGCTTTTTATGGAAATTTTTTTTTCAAAAAGAGGTACTCAGTACTGATGGTCCATAACTATGCCATCAATACCAAGTCCTTCCAGAACCATCGTATCGATGCCCGAAATGATCGACATGGCCATGATTCGCGAAATCGACCACCACAAGTATTTCTGCGACGGATGTGTACGAGTGATGCGAGAAGAACAAGGACTTCCCGAATACCGACAACTCGGCTGGCTGCCATGTTTACATGGATGCTCAGCAGGAGATTCAAGCCTCGGGCGAGTAATCTTCGACTCAACAGTTGACTTTACATTTGTCGTCCGATTCAACCATTCTTCAATGGAATCACAGTTCCACGACCGCCTCAAGACCGTCGGAGAAGTCAATCTGGATTGGTTTGCAACGGATTGATTCCATTTCTCAAAACTAGGCCACGCCAATGTTGGCAAGCACGTTGTGGAACAATTCAACCAGTCGGATCCAAGAACCATCAAGTCATGTCAGATCCTACCATTCCACTAAACTGCCCAGACACCAAGTGCCCTCTGTACAACTAAGAGTTGACTGCTCGAAATATAGGACTGCCTAGACTGTAGGAAATTGAGTTTGTGTGTGTAATTTGACGTACTTATCGGGTCTGCAATAAAATGTTTTAGTAATCTTTAATTTTTAACGTGTGAGACATAAAAGAGTACCCTCAATAAAAATATCCTCGTGGACACAATATAGTTATCCCAATAGAGTCAATCTAATTTTTGCAATTATTATTTATTAAGAATGGATATCAAGGTAAAGGAAGGGATCTAGATTTTGTAAAAAAGATACTGGAAATACGAATTGTTACGGGATTTCATAGAAGGGGATATATCACGACTTTTTCTTTGAAAAAACAACATAAAATGATTGCGGCTTCACAATCTGATCATCCGGTATTTCTCCAGATCCCTTTTCCGATTCGATCTTACTTGATACGCCGGTTTTGGACCTACCAGATTTTCATCTGGAAGAAATTTCAGCTATGCGTTGAGTGCAGCGTTACGCGTTGCGTGCTGCGTTTACCGCGTTGCGTGCCGCGTTGCGTGCTGCGGCGGGCTTCGTTGTCTCGTGCCGCGTTGCGTGCTTGTCCGCGCTGCGTGCCTACCTTGCGTCTCCGTGACATCCAATCGTTTTGCAGCTCACTTGTCTCACTACTTGACAAATTTTCGCCTCAAACTGCTTCTCCAGTTCGAATACTTGTTTCCCGGAAAATGAGCATCGTCCGCGCTCTTTCTTCTTTCTCTTTGTTTTTTGACAGTTTTCTACAGGAGACTTTTTGGCTTGGTCGAGGCTGGATTCTGAAAAAATATTCTCCTAACGGCTGATTAGTTTTCTACGTGTAGCATTTTACTGTCGTCGAAATTCATTGAACAACCCTGTTAGTAAATTTCCAAAAAATTTTTTTCATAATTTCGAAAACTGCGTATTTTAAATTTTTTCACATTTTCTAATATTTTAAAACAAAATTGAGAGTAAAGGAAAATTGTGTCTTGTAATTTTTGTAATTTTTACTCAAAAAAAGGCCAGTGAAGTACTATTACAGAAAATACGAATCGATAGCGCAGTCAAAACTAGAGAACATCAGTATTTCACCTCAAATGCACCATGCCCAAAACTAGTCTATTTTTCAACTGCAACACTTCATACACCTAATCAAAAGAAATCAACTTACTGATCTTCCAAATTCATCAATTTCTCCATTAAAAGAGACATAGGTAAGTCAAGTATATCCTTTATCAGGTGACTAGTTATTCTCTGCGGCTTCACATCAGACGTCAACAGGGCTCCTTAAAATAGCAGGTTGAAGTAGTTAGAAGAGCAAGTCAGTTTCCATTTTGCACGACTGAAAAGAACTTCTGAGAGACTTCTCAGTACGTCTCGAGGTCCCCGCCTCCTCTTCAATCAAACAATTGTAAATTCTGGACTCACGGGGGACTTTTGAAGGTTGACGACGACGACAATTTGCCCAAGTGCGACAATCATTGCGCAATTGGTGTGCAAAGAAGAAGATGGGAGATATGAGTTCTGAGATGATGACAAAAGCATGAGAGCACAATGAATAAAATGAGACCGGATTTCGAGAAGGAGGAGGGGGAGAGGAGGATTGGTGGTAAGGGCTGATACTTGATGCAATTGAGGGAATGCGTTTCTCATACTTGACTATTTAATACTTTTCTTGAACCTTAATTATTTGGATTGTAATTTTGTAGCGGAGGCACATGTGATATTATTGTGCTAACTTGGGTAATCCTTAGACTTTCAAATATAACCTTCATTATTTGAAAAAAACTTTTTGAATAGACCTGCAAGGTTGATCTACAATTTTTCATGGAAATCGAATTAATTTTGTAAGGATGTCTACTGAGTATAAGCTTATCGTTAGGCTTAGGCTGAGGTCTAGACTTAAGGCTACACTTAAATTTACTCAGGATCGCCCTAGGCTTCGGCTTCGGCTTAGGCTTAGGCTGAGGCTTATGCTGAGGCTTAGGATTATTCTCAGACTTACGCTTAGGCTTACGCTTAGGCTTAGGCTTAGGCTAAGGTGTTGGCAGCTTAGAATAAGCTCAGGCGGGGGTGACCGCGGGTAGAAAAAAAAGGAGAAACTTCCAGAAATTCACAAAATTCAGAAACATACCTTTCATAAGTTTATTTTTTTACTAAAAAATTACTCTTAAAATGTATGCGAGAAACCCGCATGCAAAAACACCTTTTTTTTTTTGAGCAATTTCTACCTTTTTTTTATTTAATTTAAAAATACACTAAAAAAACCAAAAAAATTTTCCGAGCCCAAATTGCTCCCAAATGCTCTAAATTTCTTTTGAAGTCTGATATATTCCTATTAGAACTTGAGGAAAATGTAAACCTAGAGAAACAATACTACGCATGTTAAATGTAAATTATTAGTTTTAAAAAGTCGTACGTTATTTTGGAAAGTTTGAGGTTTTTGCATTTTTTCCGTATATCACTGAACACTTTTATTTAAATATCATCAATTATCGGAAGTAGGTTGCAGGAGAAAAAATATATTCTAGCGGGGTAAATTGAAATGAGACGGGGATCATTTAACTAAAATCGAAAGTTAATAGTTGGTGATCTACAAAAATTCTTAAGACAGTATAAATTCACGACTTCCATCTTGGGAACATTCTTAAAAAATGTCAACGAATAAAAATCTGACATTGTGGCAAACAAACTTCTAAATGTTTCAGACCTTATATAGCGGACATGACAGTGGCTTGCTTATTTGATATGACTTGAGTTTATTTTTTTTTTATTTCAAGCGTGGGGAGATTTATTTGCCTAGATATATATATAATTATTACTGGAACGAACTGGAAAATAACTTGGGATCAAAATCAAAAATTCAAACCTTCAATAGAGATTCAATCTTTTCGAAACTTTTTCTATAGCTTTGTCGAGAACCAACAGACCACGTAAATACTTATAGCTAAAATTTTATTAAGATTCTAAGTCATGGTGAATCGAGAGTTTGTCAAGTTCCATGTGGTTCCTAAAAATAAACCGATACACGTGGTGTCAGGCTGTCTCATTGCGGTTTGATCTACGAAAAATGCGGGAATATTTTTCCAGAAAAATTGTGACGTCAGCAAAAATAAATAAGGGTCTAACCACAAAACTGGTACTTGAATCTTGAATATTTTTAATTCACCCTAAATTACATTCCCCTGATTCCGAATATCTATGATGACTGAAAAAATTCAAATACAAAAATTTCCTGACAAAGATTTATATTTAAGCTAAATCTTTCATCAAATTTTTTTTTTAAAAATTTCATGTACTCGCATCACTTTTTTCAAACTGGCGCCCAAATAAATTAGCGCGCGCGTGCATCGTTTGACCTTTTTTTCGTTTTTTTTATTTCTAGCCGAATTCAATTTTTTTAAAACCAGTTTCAGTCATTTTTGTCGGTTTTTTTTTCTGAAAAAAATGTAAAAAAACGACAAAAAATCAAACAATGCATTAACAGCGCGCTCCAATGCTAATTTATTTGAGCGCGTATTTAACAAAGAAAGAGACCGGGATACAAATGAATAATCATTCGGCGATCTCAAGCTTAAATACATGGAAAACTTGTTTTGAATTTTTAATCTTTTCACATACATACTCGGAATCAGGGGAAAATTAGGATTCATTCAAAAATATTTCCCAGATTTCACTCGGTACCCCACCTTTAAAATTTTTACATGTTTTGGGAAAACAAGGGAAATTTCTAGAACCTATTTTATGCCAATACCTAAAATGCTGAACATAGATAAAACACACACACCCGTATGAGTATTATATACTTCCAATGAAACATTTGAAAAATAAAGAGTTCTCAGCTTTGATCATCCACTTGTGATATTCTCACGCGTAATAGCACATGGCACCAGCTCAAAGTGCTCATTTTGGCTATATATGAAGGTATATGAAAAAGTGGAAATTGGGAGGAAAAATGGCATGTTGACTTCTCTACGTGGCCTATGTGTGAAAAAACCCTTCTATGACAAATTCAGTTTAATTTTTTAATTTTTCTTTTTAAAATTCTAAAAATGGCTAAACGTTCAAAAATTTTTTAAAAGCCAAATACTATTAAATTTCTTTGTTGATTTCTTAACCCAAATTTACGATTTCAGTCAAATTTTTGAAAATTACAAAAAATTTAAAATACAGCTACTTGTAAGATGCGCAAAACAAGAATTACAGAGTTTTCAAACTATACAACAGACAACTCTAGTGGCTGAAAACTTCCAAAGTTAAATAAAAATTCCAAAAAATCGATAAAAAAATGTATCTCGAAAAATTACCGCTATAAGAAAATGGCCTTCTCTATCCCAATGAAATTATGGAAATAGATTTTTTCAAAAGCGATCTAGTTGGACGCTGTGCAGGGAAAAAAAGTTCAAGCGCGCAAAACTTTCGCTAGAAACTCAAATTTGCCTCATCAGACCTTGTTGGATTTTTTTCCCAAAGAATTTTCAAATGCCGAATACCGAAACTCCAGGGCTCACGTTTAGACCTTAACATGAAACTTTTGCCATTTGAACGAGGCTCTTTGAATCTCTGTAAAAGACTTAGCGGCAGACGAGCACTTTGAACTACAAAAATGTCGCTAAATTGCTATCATGGAAATTTTTCACTACTATAGGAGCCCGGTAAAATTGCTCCAAATCATAATTTAAAATATTTCTTCATGATTTTTTTTTGATTTTTTCATGATTTTCGAGGTAGGAGCAAATATTCAGTTTATAGGATATATTTTTTTTGGAAAAAAAAATCTGAAAAAACCCACATATCCAATAAAAAAATTACCAAAAAGCTTTCAGAATACTTGTCTACCTCGAAATATCGTAAAATTCATACAATCTCTGTTCAAATAAAAATATAATTTGGAGCAAATTAATGGGCAATTTCAAAGTCTAAAGTAGTGAGCTATAATGCATACATTCCAGAAAATGGAATAAAAAATAAACTGAAGTCAAGTTAATCTAATCTCAAGTTACCTCCTCCTCCTTCCCCCAACAAATACTGCTCAATAGCCCCCAACCAACTCGTTCCAATTTGAATAGTGTATTATTTAACAAGCTCTGTCATATCTCTCTCCTATTTTTTTTTTTAAGTCATTTTTATCGTCGCACCCCTCGACCGTTGTTGTATTAGCCTCTCTTCCTTCTTCTTCTTCTTCATGAAAACGAATTAAATTTCTTCATCCAATTCACTCAAATCACATCCTCCACCGACACATTCAATTAATCAACCGGTCCTTAATTGAACACAACAACAATCACTATTTCATAAAAATTAGTGTTTTTAAATGTACATTCAAAAATTGCGACGGCTGGAAGAATTATTATTTACACCAGAAGAGTAAAATTTGTAACCATAGTTATGGTAGCTACGGTAACTCAAAAAATTAGGGCATAATTATGCGACATGTTCTCATGAGTGCGCAATAAAAATAAAGCTGATCCAATACTCTTGAAATACTCCAATAATCGTTTCTGATTCCGGGATTCCTTCTCAGACAAATGGAGCTCGGAGTGCTCAATTGGTCAATGTCGCTGTCATGGCACCAGGGTTGTGCGGCATGGATTTTTTGGCAATCGGAAATTGCCATTTGCCGTTGGAAACTCTCGGATTATTTTTTTTCGGCGATCGGCATTTGACGGTTGCCGAACATAAACTCGTTTTTTCGTTTATTCGCTTCCGCATTGTTCGGCCGACAGTGCTTAATCTCCTTGAGGTAATTTTTTTTTATATTTTCTTGTATTTTATAAACAGTCTAAATAATTCAATTCCAATGATAAGGAGTGTCTTGGTTTAAATTTTCTAGCACAGATAATTTCATTTATTAACGATCAGACTGGTAGGATAGTCAACGATACCACCCCAGAGGCTAGTATGATTCAAAATAACACATGGACATACAGCAATAGACAAAAGATCTTTGAATGGAGTTTTATGGTGGGGTGGCGATGTGTCGACCTAAAGAGTATGTCCTAAATATACGGCTAATAATTCAAATATGTTGTATTTTGGAAAGTGTTAGAACACAAGTGACTGTTTTCGGATACAAGAAGACACAGAGATGTCCCTTGATTGTTCACAGAAAGCGTTTAAGGATCCCGTTTGACTACAATATTTGCGGATTTATGTTTCAACGAATAAATGTAAACTCGAAATTTACTATATATACAGCGCTTTCATATTCCGTTTTTCCATAGTTTGTTGGCTATGTAGTCTTTGTTTGAAAAGCGTCGTCGTTTCAAAATGGTTTCTGGGATAGTGAGTCGGGGTTAGGGATATAGTCGGCGTACTGTAGTGGTACGATGGTGGTACGGTAGGAGTACTGTATGATTACGGGTTAGTCTCAGAAAAATTGGATTTCAGCAGAAGTCGGCGGCCGCGCCAGAGGTGCAGTCCACGGCTGGTATATACATATGTATATGTATGTATATATGAATACATATATTCAACTATTTAATTTAAAAAATAAAAAAAACATTTCTCACAAATGCCGAAAACACCGAAAAATCGAACATATTTAGGCATTCGCCGATATTTTGACCAACTATTTTTTTTAGGCGAACGGCATTCGCCTTTGCCGCACAGTCCTGCATGGCACCCCGACCGGTTTCGTGACCACAATAGTTTTGATCTGAACGCAATAGGAGTCAGGAAGTTAGGGGTCATGGGTGCTGTAATCGGACCCCCAGTAAAAAGCACATATATTGACAACAAATTTTGATCGCTGTTTTTTGTCTTAATTTTTTGTCTCCCCTCGATGCGCATTACTAGTAATGATGCTTTATTTTTTTTCATGTATCTAACAAATATATCAAAAAACTGAAATTAAAGCGCTTTTGTTCAAGTTAGCAAGATAACCATTATAAAGCATTCCAAATAGATTTCAAATTAGCAAAATAAAGTGGAGAAGCTAGGATAAGATTGGGGAGTATAATTTTTCGGGCACACCTTCAGACTTTGTGGCCATAATAGCCCAAACCCACAGTTTAGTGAAAACTAGGGCTTCATTTGCTATATGGTACCCGGCACCTAACCTCTTTCAGCAATCGAATCCCAAGCAACCTTCACATCTGTAACCTTGACAAAAAACACGCAATATCAAATGGAATATAGAATTCTTTATTCAAGAATCATCATCATCATTTTTTTCAATTTTTACCGAAATGCCGAGCATATTTTTTGTCACAAGGGGAATGGCAACGGCGGGGAGCCAAGAAAATCAAAAAACAATATGGACAGAATAATGTGCCAGCGGAGCAACCATGCATAAATAATGAGGTTGGTGAGATGAAGAAAAAACAGATAAGTTACGACGCGAGGAACTACGATTTTGAAAAATAAACTGCTAAATATGTGCTTAATCCTCCCAGGTAAGCGATTATAGGACGGTTCTCGCATCTTAGCTGGCAGTTTCTCTTTCCGTATTGTTCCAGTTGACGTTGGCGAACCCGGCGTCTGAGACGATGGTGTTGAATATCAGCGTCCTCCGAACTCGGAGGCGTCTTCCTCGATCTTTCTGGCGGCCTCGAGGTTGGAAGGTATCAGTGATTGGATTTGATTTATAGTTCTTCTTGAGTTTTTTTCTTTATTTTCCTGCTTGTAATTCTAAAGCAACTAGAAAAAAAAGTTTCGGAAGGCATCTATCATGCCATGATTTGCATACCCGGTATGGGTTTGCGCGCGCGGGGGGCTTGCAACATTTTCGTAAATGACATTACGCTATGAGAGGGGGGGGGGGTGTGTAAAATAGGTATTTCTTGTCTGTCCCCGTTATCAAGTTTCTTGACGCAACGCGAGAGAAAACATACCTTCTCGTTCCTGCAACGCGGCCTCAACGATGGAGCTCTGGATGGTCGCAGTTTCCCTCGTCTCCTTCCTCATCCGTCGGCGTACTCGACAGCTTCGTTGGTCACCTGGAAATTAGAAATTAAATTTTTCTCGATTAGTTTGGCCGAATATAAAAAGTAATACTAAGAATTTCCCCATGAAAGGCTGAAAAGGGGATTGAGGTTTCCTGGGAAAAGTGAAATCCCGGTCTCAAAATTTCTTTTAATTTTTTTGAGCTCCGTTGAATACCGACAACAAAAATGGCTCTGGAATTTGAAAATTACGGGGCACCGAAACACAACTTCATCTACTGCTGCCAGTATGTCACTCCCGCATTTTTCGGAGGCTCAATCGTAGATCAAAGGTTTCCGAATAAGTTTAGATTTTTATCGAGATTGGTAACAACTAGGATTGACAAATACCAAATATCAAATATTTACCCAGATGCAAGTTTTCTGGGTGCTTTGAACTAGAATTCCTGGGAACTGATTGTAAGTGTCAAAACGCCCTCAGCCAACCGCCTAAGCCTAAGCCTAAAAAGGTGTCTCGAACTTAAATTTCGACTGGCATGGCATTCAAATGGGTATACCGATGATTTTGTTTCAGCTAAATTTTTAGGGTCGAATTTTCAAGAGCAAAATTGGGATATTTTTAAAGACTATTAATTGTCCAAAAATCCAACAATTCCAAGTTCAAATGAGCTTTAACTTGAGATCACCTTCCCAAAACCTCAACAGTATCAACTTGCGGTGGCGGTCTCGTGGCGGTTGATGGCTGCTCCTTAACAATATCCAATCAAAGGTGCCTCATTGGCGCTAGGGCAACTGGAGCCTGAGTCCTCGACAACTGGAGCTGGAGTCTCTTCAACAACTGGCGCCTCGGTTTCCTCGATCACAAATGGAACCTCAGTCTCAACGACGGCTGGGTTCGCTTCTGCAGCGGCGAGGTGCTTCAGTCTCAGCGTCGATTTCTGGAACGATTTCCTCTTGGACAGTCTCGGACTACGGTTGGCTCTGGTGCTTGCTGTCGTTCAGATGCCGTGCTTGTTCTGGTGTGCTTGCGCTGTGGCTCGACAGGCTGACGACCCGCTATGCTCGACGGGTTTTGGGACTGGCCCCTGGGTGTATGTGGTGGTCCGACTATGCTCGACAACTGAAGTGTGGGTGTGAATATGTGGGTGGGAGTGGTGCGAATCTGACTAAAAACTGTAAAAACTAACCATGAACAGCCTGGTGTGTCCTGTGGTGGAGCTTGGTAGTCGTCCTTGAGAGACTTGGGTCACCTGGATAGAGCTGACTGGTTCCGATTGGTACCCTCCTTGTTGAACTTGCTCGACTGAGAGGGTGCGGCGTTGTCTCCTCAGGTTGTGGGGCGACTGGGGTGGGAAGCTCCAGCGTATGAGGGTCCTCGAGTGGTTGGTAGCGTATGGATTCTCCGATGCCGCAGCTTGGGAAGCTCCAGCGTATGATGGTCCAGCTTGCGATCCAGCGTCGCGAAGATGCTCCTCCTCCGATTGGTCCTGAACCAGCGTAGGCAACCTCCACCGACTTGTCCTTCGAATCCTTGTCGACTGGTCCCGAGACGAGGCTCCTCAGACTGGTCCAGGTCCTCCGAAATGCATGGAGCGGCATATCCGGCTCCTCCACCGATTGGTGCCGGTGCTGGTTGTGGTGGGGGTGGAAGGCGCGGCGGGATAGCTTCCGCGTCAACGCCTCCGGTTGCGTAACAGTAAACACATGGGGTTAATAGTATGGAGGTGGCTAAAGGGAAGCAGGTTTTAGTTTTGGCGGCCAGCAGCAGGAAACAGGACAGTGATTTTGCATGAATGGTGGCAAGTAGAATGCTTTGTCCTAAGGAAGACATCAAAAGATCTTCAGAAAGAAAGAAATTATTTTTGGAATCAGGAAAAAGCATTTGAATAGCAGTAGAAAAAATATAACAATAATGTATAGTCACTAAAATACAAAAAATAATGCAAAATCATCGTTAGCTCGAGCTAGAGCATGGTGGAGCTCATCCTCCGCACGATGGCTGTGATGATGGGCAACATCCACGGGAGCTGCCGGCACCTGTCTCCGATACACGCTAACGCAGCGCGACACGGCAAATAAGACGGCTACGACATGACTCTCATCGTATTTGAGAAGGCAGAAATCGCAATGGAATGCTGAGTAACTGTCGTCGAAAGGCAACGTAGGACGTGCGTTTTCTAACAGCCACCCCAACTATTAAGTCCGCCCATGGCCGTCTGGAGGGGGCACGCGGCACGAAGCTTTCCGAAAGACGCCCGATCGCGTTTGATCGATGATGATGATGATGAAGAAGTGATGAAGCCCTCTCTCTCCGACGGAGGACACCTTATTCACCTTGGGTGCGTGTGTGTGTTGCAGTATAGGTGCAAGAAGAAGCGATCTACAAATGGGGTTCGTGGTCATTTCCGAATGATCCAATGCTGGAATATTCCTATTAATGTGACTCGTGCCACCTCATTGTTACTACTTGCGTGATTGGATATGTACCGTTGTTTCCTTTTCTAGTTAGATTCCTGAACAGTTCACCTTTACCTAATCCGGTGATCGATGTTCCAATGCTCTTCCTTTCACTTCCATTGCAGCACCTAATCAGGCGGAATATCATGCTTTCACTACTCTGCAGGTAAAGTGTGAAAATCCTAAGTTTTAGATTTCAAAGATGTCAAAAACGATCGTTGATCCTACCGCGCTTCCGCATCAACTGATATCAGGTTTTTATTAATGACAAGATTGTGGCAGAGGAATGAACTGGTTAACTTTTAGGCTGATTTAGTCTAACCCCGTGGAAAAACTTCCAGCTTTTACCTAGCGGTAACTGCAAACTACGGAGGATTAAAATACATACATTTTGTAAAAACATACATCACTTTCATAAAAATTTCGGTTTAGTTCAAAAAAGAAAAACACATTTCTGTTTTGAGATTTTTTTTTTATACACCCAAAAATGTCGATGCAATTTTGATGTTGATGCACCTAAGGGCGATTTAAAGGAAATTATGACTTTGCTGAATATTTTTGTTGTATGTCTTGATTATGGGTTTGTAGGCTTCGATGGCAGGCGCAGGGGCCGACGGGTCCTGGCGCCCGTCTGAAACTTACGCCCGCTTCACGCCGGCCTTTTGCCTCTTTTTTGCATCCCTTTTACGTGGTGCCAGGCTGTCCCATCGCAGTTTGATCCACAAAAAATACGGGAATTTTTCGCCCAAAAAAATGTGATCGTCAGCACGTCTTTAACCATACGAAATCAGTTGAGTCTCTTCGTCTCCGCATTAGTAGATCTGTGTAGATCAAGCCGTGTAGCGCGCTGACAGCACGTGTGTTTCTCATTGGAAATTGGAGGCGAAAATAAAAAGTTAGGCCATCAAAGTTTCAGCAAAAGGCGCGGATTGAGGCGAGCTCGCTTTGCTAAAGTCAGGCAGGCAGGCGGTGAACGCCTACAGGAAAAAGATTTTAGGTTATATCTGTAGGTTTCCCTTTTGTGTGTTTTTTAGACCGTCCAAAGAATCGTATCAAAATGAATAGGTATTTTCTCGTTTTAGGCAGATAGGTAAAGGTCTGTAACCTGAAAATCCAGAGCCTGATAATCCACACCTACATAATCATCAATTAAAATATTCAGATAACTGATAATTTCCTGAAAATAAGATATCTGTAAATTGAATCAACACCAATTTTAGTGGTCCATCAAATGCAACATTGTATTGATATATAAACTTTGGTAGTCAATATATGTTTTCTTATGCATTCTTCTCACTACAGTGCACCTTGATCATTGAGTACTTCATCTATTCTTGACCACTTCCTAAAAAACAAGAAATCAATCACGGCGAATATCCAAAAAGCATTAAAAAAGTACATTTAAACGAATACATTATTATTGCCCGTTCAATCCTCGTAATGTATCTTTTGCAAGTTCCTTCTTCCTCTGTCCCGTTTTGCTCCAATTCTCCGCCATACCTGATATGCTCGACTTTTTCGATCATAGACGCGAGTTGCGCAACGCGCGAAAATATCTTGCGCAATGAACAAGGAGAAGAAGAAGAAGAAGGAGTAGGAGGAGCCAAATAAAAAATAGGTGATAACCCGGGAGATGTTAAGCCAAGGAGTAAAGTGTTATAGCTTGAAGAAGGCATATTTTTGTTTCACTCCCCCCTCTGACAGCTTCTTCACTTTCACTCCAACCGTTTTTACTCTGAATGGTAATAGTTGACGGATCGCAAAGGCAAAGCCCTAATGGTCATGATTTAGAAGCAGCGGGGGTCTTGAAGGACGATCGGACAACTGAGATATGAAGCGTGAAAAACGGAACGCATGCTTATAAGAGGGGGAGATATATGGAGATTTGTTGGGAAAGAGCTATGGTACCGATTTTAATCCGGTATTGTGCTGGATTATAGTGTTTTGAAGTAGTAGCTAGGCACTGAAATTCACCCTCTAAGCCGTTAGAATTGCACATATTTTAAAACTATGCACCAGTTTTCTTAAGAACTGCTTGAAAGTTGAATTTGAACTGGTAGTTCTTGCAAAGAGGTTGAACTATCTGGTTTAGTTGCGTCCATAGTGCTTTGATAGCCCTTTTTAATTCCGCCAAGAGGAACGCCGGATTACCCATTTGCCGGGGATTTTCTTTGGCAAAGGAAATCGCCGATTTGCCGTTTGCCTAAGAAAAAATTTTTAACAGACGGAAAAACTTAACTGTGTCATTTTGAACTTATTACCGTTTTCTTGAAATATTTTCATAGAATCTAACTTTTGTAAATTGGAGATGAAGGAACATTTATATTATTTGAAATTGAAATTGTGGACCTTAAAAAAATAATTTGCAAAACCACAATTTCCCGAACTGCCGTTTTCCGCAAATTCGGCAAGTCGGCAATTCGCCGATTTGCGTAGCGAAAATTACAAGCAATTTGCATCGGAATGACAAAGCAATGTTTCCTAACATAAAATTCTAATTTTCAAGAATGATTTTTTTACTCAAAGTATTTTTATAAAAGAGCCGAATTATTTTAAATGCCCGCGCAAATAAGTGACCCCACATTTTTTACATTATTTGTATTTTCTGGCTAAATTAATTGCGGTTTTTGAATGTTTTTTATCTTTAGTATATAACTTGAGTAAAATTCACAGTAAAAATTAGTTTTGACAAGTCGATTTTTAGTTTAATTTCAGTTTCGGAGTTTCGGCAAATGTATTCTCAATTAACAAGTTTTCCAAAAAAAATCTGACAGAAAATTGACAAACCACGGTGTATCAAGCCGAGAAACCCTGACACCACTTGTGATTCCCCTTGGAGGCCCGCCTAGATCAAAAGTTGGGCCACCATCATTTTTGTTCGAACTCAATTGGTAAACTTTGCAGACTAGGCTGACACGTGGTATTTAAATACAATTTTCCACATTTATTTTCCACAAACCGAATAAAATCCTTATCTGAACAGTGTTATATAATTTTTTTCTTCAGATCACTCGACAATTTAAAATATATTACAGCATTCTTCTTTAGATGTTGAACGTTGATGCTTAGGATAAACATGAAAACCAGATCAGCTTTTCCGTGACCTCAAATACTCATTTTCTCAAATTCTCAAAAATGTTCTGCCTTCTCCAACGGTCTCTAAAAAAGCTTGGAAAACCCACAAAAGGTGTCTTGGGAGGGACACTCTCTTTTATCGATGACCGGAACGCCGGTATAAATGGGTTTTGCGGACTGACACCAGCAGGTGGAAATGGGCGACACTAGTAAAATAAAGAAAAATAATAATACTGAAAAAACAACACGGTATGCGAACAGAGAGTAGTGGCAAGATCGGAAGAATGGTCGGGGGGGGAGGGGGGGGGGATTACATAAAGATGTCGGCATAAAGTGCGTTTCATTAGGGTTGGGATTTTTATAGGGGGAAACTTTGATTTTTTTGAAAAATAAATTAAATAAGAAAGAAGCGACAACAACCAACAACAAGGTCATTTTTAAAAGGAAAATTTGGCTTGAAACTTAAACATTTTGGGATGAATTATGAGGATATACTCATAGATTAACCTAATTTAACAAAAAACACGTCGTCGAAATTTTTAAAAATGAAGCTACTGCAATTTTGAAATTTGGTGGTCCTAAGAAATCTATGGTTTTGTGGTATTTTGACGATAAACTGATTTTTTGTGTTTTTTTTCTGGTATTTTGAAGCCGCTGTACTTCAAACCCTTTTCATATTCTCAAAAATATCTTTGCAAAATTCGGTTTTCTCTAAAGAAAATTTCAAACTAAACCACTATTTTCAATTTTTAAAAATCTGCAGATAAGATATCGGAAAATTCCGGCAATTTGCCGATTTGCCATAAAAGTTCCGGCAACTTGCAGATTTTCCTATTTGCCGTAAATTTCAAATTCCGGCAAATTGGCGAATTCACGCCGGTCCTACCAGTGATGAATAAATCTTGTTTTTTTCTGGTATTTTGAGACCGCCGTACTTCAAACAATTTTCATAGTTTTACATATCTTTCAGCGAGCGGTTTTTTTTGAATATCAAAATAAACCAAAAGTCTACTTTTTGTGGTTTGTTTTTGTAATTTTTTTTTTAGAAATTTCAATTTTAAGATATCGGCAAATTGGCAATTTGCCGGTTTGCCGGAAAATTTTAATGTAGATCTGGCGATTTGCTGCTTTGCCGATTTGCAGGAAATACTCTATCCCTGATGTAAATTACCAGAATTAGAAATGTGGTATAGCACGATTGGCACACAATTTTTTAGTACTAAGGATAACACGCTGAAAATTAAATTTTTGAAAAAAAAAATTCTTGAAATTGTTTTAGTAATTTCGTAATCAATTTATATCATTTTTAGCCTTTTGCTCCAAACTAGGTTTTCTCCCACGTGGCATCTCTCATTACACATAAAAATCCCTGCTAACTCAAAACATTAAGTTGTCAGAGATTCATATCCATGTCCGCTTCACTTTCCAACTTTTTCCCTCTTAGCTTATCTAGATATACGTATATCTATCTACAAGTGCAACAACGTTCTCTTTTCAAACATCCAGTTTATCTTCTGACCTTTGCAACATTTTTCCTTCCAAACTTCCAGATTGCATATTATTCTTACATTCAAAGAGTGTCTCAAGTTTTGCTTAGAAGAAACATAAGGTAAAATGTCAGAATATCTGTTTACAGCATTGTAATGGCAATTTATTGTAAATATTCGCAATTTTGAATCTCCCTTAAAATGGTTAATTTTGTAGTTAGAGGACTAAATTAATGCCCAAGAAAAAGTTGTCATTTTTCATTTATCAATGATTGTACATAATTTCATGCCAAAGAAAAAATTTTGCCAAAAAAAGGACAGTCATTAGAAAAAAAAACGGAAAAATGATCTGGATCAGTGATTCTTTTTTATTATCTAAAAATAATCAGCATAGTCAAATGTACCAGAAAAAAGCAAATAAAATGTACTAGATTGACCGGAAGATTATTTGAAAAATTGCAGAAAATGCACCAAAAGCTGCTTTTTTCAAAAATTCACAAGTAGGATACAATTACGGAGCTATTCTTTTTATTTCGTAAAACTCTTCGCATAGTCAATAATACCATAATATGTCGATGAAAGTATAATATCTTGTAGTAAGTATCTTTTTAAAAATTGATAAAAATATATAAAAGCTGTTTTTTTCAGGGAAACTGAAAATCCAAATGGAGGGAAAAACATAAGGCATTCTTTTTTATTGCAGCTCATAAAACTCTTCAGCATAGTCAAAAATACCAAAATATGTCAATTAAAGTATAATAGCTTGTACGGAAGTATTTTTTTAAAAATTGATAAAAATATATAAAAGCTGTTTTTTTCACTTGCAAAACAAAAGTATGGGAAAATCATATGGAGTCATTCTTTTGTATTTCATAAAACTCTTCAGCATAGTCTCCCAAAAATACCAGATTATATCAATCAAAGTATAATAGCTTGTACGGACGTATTTTTTTAAAAATTGATAAAAATATATAAAAGCTGATTTTGTCAAAGACCAAAGTCAAAAGTACGGGAAAATCATAAGGAGTCATTCTTTTTTATTCATACTCTTCCCAGAGGTCCATAGCCAAAAATACCAGAATATGCCAATCAAAGTATTGTAGCTTGTACGGAAGAATTTTTTTAAAAATTGATAAAAACAAATAAAAGCTGCAATTTTTTGAAAAATTCAAAAATTCAAAAGTATAGGAAAATCATATGGAGTCATTCTTTTTTTATAAAATTCTTTACGGAAGCATAGTCACAAATACGAGAATATTCAAAAGATAATAGTACGGAATTTTTTTTTTTTGATAAAATATATAAAACTGAATTTTTCAAAAACCCTTCAAAAGTAGGGAAAACTATATGGAGCGCTTCTTTTTTCTGTAAACTGTTCATCATTACGGGTAATACCTGAAACTACCAAAAAAAGTAAGCTAGCATGTACGGAAGATTATTTGAAAAATTGCAGAAAATGCACCAAAAGCTACTTTTTTCAAAAATTCAAAAGTATGGAAAAATCATATGGAGCGATTCTTTTTTCTTTTATAAAACTGTCAGCATAGTAAAATGTACCAGAGAATACCAAAAAAAAGTTGGTATGCTAGATGTTCGAAAAATTGTTTTTATGGCGTAATTTCTGAAGAGGAGTTTCGAAAATGTGAATATTTCCCAAAAATGGACATTCTTGCCACTTTTTACTAATTTTTGATGGGCTAAACCTAGATTTTTAACGCTAAATTTTACATTTATGAGTTACCCGTTTTATCGACAAATTCAGGCAGATTTTTATTTTTTCCTATTTTTTTAAGCCATTTAATCAGCCATAATAGTGAATGTCTTTTTGGGCAAAAAAAAATTTTTTAAGGCTGACCAATTTTAAGCTCTCCAGCTATAAAATGAACCATTTTAGAGGAGTTTCAAAATTGTGAATTTTTACAAATATTGCCCCAATTTTCCACTTTGTAATGGTTTTTGGTGGGTTAAACCAAGATTGTATTCTGCATACATGAATTACGCGTTTTCAACAAATCTTAACAAATTTGTTTCTATTTTTTCCAAAATTTTTTTCCCTCAGCCATCTATTCCTTTTTTTTGTCTGTTTTTTTAGGGCAAAAAAACCTTTCCCACGTACCACCTTTAATAACACGGTAAACTGGTCTAAAAATCGGCAAGCGGAATGAAACTTCAAGTAATATAATGCGATGAATTGAGTTTTTTTTTCTATTTTCTTTGTTGAAAATATCAATATGAAAAAAAATGAGTAAAATTATATTGACATAGTTAATCGGATATAAATAATAAAACATCACAAGCACATTTAATTTTTCAAACCCACTCAGGAGTCATGAAGAAATCCTTCTCTGCACATCTAGCTTTCTCCACATCCAACTACTTTTATTATCTCCAGCAAACTCCGTGTAACTTTTATTGCATACACATTCAAAAGTTTTGTATGATGCTTCAAGTCCCAAGTCGATTACACAATCCCCGAAAAGAGCATCGCTGCGAATTATGTCAATTCCCTCTTCTAAATGCACTTGTTCTACAAACTTCACTGATTTCCTTAGGATGCCACAGTCCCCAGGCAACAGTTTGTGCAAATTCTCAAGGTTTGATTTCAGTGGGCAAGCGGCAGGTAGCGCTCATTTTAAATTATTGATTTTTTTAAAACATTATTAACTCACTTCGTCGCTTTCATGTGCTCTTCTTGGATTATGGTCATATGGTAACTAAGAATCTCGAAAGTTGTTTAAATCCCAAAAAGATCACATTTTTCCTTTCAAACGCATTTTCTCGTTTACAATGTGACATCTCTTGTTCAGTAGTTGGAGTCGGCCTCTGTCGCAGATAGTGTGACCAGAGCAAGTGCCTATTCAAGGGATTTGGGTATATCATGATCTGGAAAATTTGGTATGTAGGGCTTCCATGGTAGGCAGGCGCGGGGCCTGGATGACCCGCTCCCACCGGTGAATTTACAATGATTTTCTCGTATAAATTTTGTCATTTTGATGAAACAAAATTGAGGGTACAGGCAGGCGGAGGTCGCCTCAACTCGGCGTTTGCCGCCACCAAGATTCAATCTACCTGTCCAAAGCATAGCAACTTCTAACCCAACCGCCTTGCCTCAAAAAAAATAAAAAGCTTAAATATCAAAATTACTCAATTTTGTGTCAACCTATTCTACTTTTCTGAGACAATTTGAATTCCCTCCAAAAATTTTATTGGAAAACAAGTTTGAACTTTCACTGGCCAAAATTTTTTTTGGCTGCGCCAAAGATGATCAAATATTCTCGGCAAGATTTTTCCCAGACCCCAATTGAACTTCTTGCCAAAAATTTTGATAATTTGAATGGCAAAAATTATCTTGCCTTATGGTGAGGACACAATCAATAGTTGTCAAAATTGTATATGTCTGTCAAATTTTTGATGTGTGTTGGCAATTTTGGCAAAGCATTTGCCGAGCTGTCTCGGCAAATTCGGCAAATTTGCCGAGCTCGGCAAATTCGGCAAATCTACTTTTCGAAATTCGCCAAATTTGGCAAACGGCAGAAAAAAGTACAGAGATTTGAGGTACACAAGGCTTACATCGAAATTAATCTAATTAAAAGAATGATCACTTACCATATATAGCATATACTGCATATTTCAGTGACCTTCTTCGCAACAATAGTCTAGACACTGCCCAAACACTACACACTTGATGCTATTTATGTACTTTCTATGCTGAGCAAACAGAACATGCGATTTGAGGAATCTTAGGTAGCAGCAAAAAGATTGACATATGATTAAATTCCTAATTTGTTCCTTAGCTTCCCGTATGTCAATTAATTCGTAGATAGTTGCTATTGAGAAAAGTTTTTCGAAAATTTGTAAGATATCAAAATAATAGTCCTCATTTTTAATTTAATGATAGAGTACTTTGAAAATTTCAACAATTTCAACACTTTTGTAACACCTATGTTATCAATCAAATACAACAGTTTAGTACAGTAATCCTACATTTCCAGCCCACGTGGTATTAAGACAGTGTTAACCTTGTTATTTTTTAAGGACTAAAAAAATTTAGAAAATTTTTCTTCCCATTTTGCTTACTTATCAAAAAAGCATCGTGCCCTCATTTAAAAAAGAAGGGTCGTCGCTGGAAAATGTTAAAAATTTCTCTCATGATGCGCTAAAATTACTTAACTGTTTAAAAACATTATAAGTATCGTAGCGAATTTCAAAAATCTTCAAAATTTAGATTTATTTATAGTCAACAGTTTTGGAAGTCAATTAAAAACATTTTTTACTATTTTTAATATTTACAAACGTTATAGTCAGTTGCTTGTAACTTTATAACTCCGTTGCCTACCGTACATTTAAAACAACCGTAAAAATCTAAGCTTTTCTCCCGATAAAAATCTTTACTCAGGCGCGCGACTCTTTTCTTACATATCTTTCTGAATCTAATCAATATTGAGCTCATACTAGCTGTAAAATTGAACATACATATAACTTTGAGTGCAATTTCGACCCATAATTTCAGAAAATTTTCACACACAGAAATCTTTATTGAGAATGATCAGGACAGTTTGACCTTTCATGAGAATTGCTTGGAGAAAATTCCAATCGCACAAAATTCCTCATTGCCAAGTATTTCCTTTAGTTTGTGGCCAACGCCTTAAAAAATAGAAGACATATTAAAAAAAAAACTCTGACACCACGTGATTATGCAATCCGACTCATCGTCAACACACGGGGTTCTGCCCTTCCTTATTGAATTTTTCGCGCTCCATTGACAATCACCCCACGCCGTCCGACACGTGTGAAAGTCGTCACTCCACAAGGAAAAATACATTTAGTTTTACGTTCGAACTAAAATCGAGCCGCGACGCAACACGCGACGCGCCGTAAATCTACACCAGCTACTCTATGGCCAACCGAAATGGCCTAGCTCACAAACTCTTCCATTTCAATTTATAAGCCAGAAACCCGTGCGAACTGCGAGCCTAACGCTCTTTTTCAAAATATCGTATAACTCGGATAACAAGCCATATTACCAATTCCTGTTTTATTTCGAAAAACAGATAATACAAAAGAAACATATCTGAAAATTAAGAATAGATTACATGTTTTTATCAAATACTTCTTTGTCTATATTCCATAAATGACCCCCATGCGAATGAAACACTCACTATACATTCAAAATGAATTTCGCACTTGTCGCTTTCCTCGCTCTCGCTAACATTTGAGGACTTGCACAGGGTGATCCAGGACTCTCATTTGAGAGAAGATTCAGTAAATATTGTAAGCTTTCGGATTAATGGTTACAACATCTATTAGATTGAATGGCAAAGTGCCAGTGGGAGCAGTGAAGACGTTGGTTAATGATCTTGTGAGCCCTACTACTATTTAGGGGGTGGAGAAAAACAACATTATCCTCATTGTCAGTTTAAGGAGCTACGGGAGGGCTCCATCTCAAATGTTTCAAATAACTCATATTGTACCTTTCTCTGGTGAGTAAAATAAATTACATATTCGGAATCCTTTTCTTTTTGATGTTAACCAAGTTGCCGGTTGCCAAATTTTGTTGGGTTCGGCAACTTGGGCAACTGGGTATCAATGTCAAACATTTTGAAGCTTAGAAAAAAGCATTCAGAGAGCCTGAAAAATTCTATAATTTCATTCTAAACGAAAACTACTTTTTTACCAAAACGCTGAAAAATATAATTTCAACAAAACATTGAAACGTGGTTGCCCGACTGAATATTTTGGGGTTCGGCAATTGCCGGTTGCCCGTTAACCTCGGTTGCCGCACGGCCCTGATGTGGAACTCGCCTAGTGTGTCGCATACTTCAATGTGAAGGCGTATTGTATTTTTTTAAACATAAATTAAAAATTCGCTAAAACCGTCATAGCATATATAAATTGTTTAGACCGGTGAATAAAAGGATAGGATGCCACGCGAGTGCGAACGCTTTTCTCCGAAGATCCAAGTCAGGACGTCGATGGGCGGGACCCGGTGGGCGGAGGTTAGTCGGATAGAGCAGCAGACAAAACATCCGGGCGGCGAGATCAAGTGCGTACTCCTCGACGGAAAGGGAACTTGAGGCGCGTGGATTGGTTCTCGTCAGATGAGGAAAGATTCTAAAGGGAGGCGACCGGAGCCAGTTGTGGGAGCTCCTGTCAAAGTCGTTCTCTTAAGGGAAACAAATAGTGGTGTTAAGGGGAAATGCGATGGGAAATCCGAGTAGTTGATGGCGGAATTTTCTCGCGGGTTTCATCCTGGAAATTTAATTAGGGCCGCGGATTTCAACTTGCCGAGTTTTTATTCGCTTTTATGAAAAAAATTACTCGACAAATGGTTTTTTTTAATTAAAGTATCCGAAATCCCCGAAAACAGGCCATTTTAGAGAGAGGTCACTAGAGGTTTCGCGACATGGAAATATGTATTCAAGGATTCTTAGGTAACTACCCAATTTTTTTACCTCGAGTTTAATAAATTTCAGGTAAATCCTCTTGAATAATTCTAGTTTTGTTGTTTTACACAAAAATTCGGTTCCTCTTTATTCCGCGGAGTAGCTTTCCAGAGGTTGAAATATTTTTCCGGAGTCAACTCCTACCCGAGTTTTTTATCTCGATTTGAAACATAATCGGCATAAGAAACTACAATTATTTGTTTTCGGGGTTAGAAACTTTAAAAAATGGCCCCAGAAAGTTGCTGGAAATTAGCTTTCCCGAGGTTTCATGGAAATTTGTTTTTGCGGATTTCGACTACCCGAGTGTTTTACATCAATTCATTTCTAATCGACATAAGAGACTACACTTATTTGTTTGGGGCGAAAGCTAAAAAATCCCCGGAAATCTGGATTTCTAGAAACTAGATTTCCCAGTTTGGTTCATGGAAATTTGATTCCGCGTATTTCAACTACCCGAAATTTCAATCTTTAAAAAACATCCAGTTTTTGTGAGATGTTCTTAAAAATAGCTATCAGACGTGATGGAATCCTAAATTTCTAACTATAGTTTCCGCGGGTCGAATTTCTAGAAATGACCTTTCCAGGTTTCATGGAAATTAGTTTCCGCGGATTTCAACTTCCTCGAAGCATTGGATTGCAATATAATTCGCACAATAAAAAAAGCCAAAAGGCGAGGATCCCTGGTAGTTTAAATCCGCAAGAATAGTTTTCTCTAGTTTGAAAAGTTAATACTGAAACCCTTACTTATGCTTTCATTAACCAAGAATTCGATCCGTCGAACAATTGCTTTGCAGTCCCAATATTCGGCGAAAATTTCGATGGTTATTCCGACGGTGCTCTTCGATTTTTCGCAGGGTTTGCTGATACCTGAAAAATCGATATTTCAGACTATCTATGCCAAAAACTAATTAATTAGTTTACCTTCTGACTAGCATCCTCCAGCTCTACAATGTAATGAATGGCGGCTTTATACTGTTTCAGCTTCTTCTCAAGTAAAATCTGAACACAACCCGTTTGCCGTGCCATTACTCAACCTGAGCATGAGCACTATCTTGTCGGCGCACACATGGCCCGAAGTTGAGAGCCAAGTTGAGCCCATTTTATGTTGACGGCGTCCTGTCGGCGCCACGTGCCAAATGATACATTAGGTGATCAGAGCACGGCGCGGTTCGGTTGTGGGAGAAGCTCGTTCATTACGGAAAGACAACCGGACACGTTCACCCATATCCCACTTCTGTAATTTTGTTTTTTTGGACGAAAAAAAACAACAAAAAATATCATTTTGACAAAATGTTAACTGTCAGAAAATTTGAAAATTGATTTATTATTTTTGTTTCAATTTTTAGTTTTAAATGAATGAATGGATTCCGATTTTTGTAGGAATTGTCGAAATTTTTAATAAGAGCCCTAGTAGGCATGTGTGTGTGTCTCATCGGCTTGACCTACGTAGATCTACAAAAAAATGCGGGAGAATCAGAGGTCTTAATGGATTTCTCATGGTTAACAATATGCTGACGTAACTTCTGGGTAAACACATATTTCCGCAATTTATTGTAGATCAAACCGTATTGAGACAGCATCTCTGCCTGGCTGGGGACGCCTCTTTTTTCCCTTGGAATTTTTTTGGCGCGAAATTCAACTTTTTGCAAGTAAGTGCGAATATTTTCAAGCAAAGTGAGACTACGTACAAAATTATTTTGCTGCCAAAGTTTTTGAGTTTGCAAATAAATTATTGAGCAAAATTCAAATGATATTTTTCTTTCGAAACGTAATGAAAAAACTCAAAGTTACAAATAATTTGGCGCGAAATTTGATTTTTCAAAGATTTCTAGCGTGGCAAAATTTGAATTGGAATAATTCTGGTCCAGAATTCAAAAATTAAAAAGAAATTAGTTTGAACGATGCGATGCCCTGGTTTTCATAGAGCTTCCATGTAGGCGTTAGAAAACGCCTGCCTGCCTTATGCCGCGCCTATGCTTGCATATACGTAAACTTTTTTTCATTTCGTATCCTAATTTGATTCAGTTGACAAGTTGATAGAATTGAGAAAATTATAATTTAACGCATTTATCCTCTTAAAAATGCAACAAAAAGGGTTCAGGGCAGGTGCCAGGCCCTGAAGCGCCTGCCTACCATGAAAGCCTATCGTAAATAATCCAAATTTAATTTTTAATTTTACTAAAATTTCGATGGCTCGTTTTTTTTCAAACATCACAAACCTGAACAGTCAAAAAATTTTCGAGACTCAAAAATGATAATTGGTTCGGCGAGTTCTCGGAAGTCTAACGCCCATTATTGACAAGTGTAGCACATGAACTCCAATATCCTCAAGATTCATCATATCCGCCTGAATCTCCGAATCACGCTTGATTTTTTTTTGTTCAATTTTTCTGCAGTTCAACTCCAATTACCTGCAGTCGATTCAATCACTTGTCTGATACTGCGGATGAACTTGGGGTAGAGATCAACTGTTTCTGAAATTACTGGCGCAAAAAATTCATTAGATTTCAAAGACCAAGTATTTCGGTACCTATAAACTCCTTCCATTCTCAGAACCCCCAGGGACGCCACGTGTCTCAATTGCAAAAAAGAGTCGGTCCCAGAAGTGTTGGCACAGTATGCTCATCATCGACGATTGATACTAAATAGGCACCAAAGCTTCCACCAAGTTTGTCTGAAATTCAATCTTTATAATAGCATTATAAAAGCATATTTGTTGCAGTAGTTTGTAACAGGGGTCAGACAAATTGCCAAGCAAATTTCCGCTGGCAAATCGGTAAACCGGCCTCCCGGTCTGGATTTGCTAAAAATTTTTGGCAACCTTCTTTTGGAATTTTCAGAAAATTTACATTTTTATCGGCAACCCAATTTTACGCATCGTATGAATTTTCTTACATTTATTTTGAGAAGTAAGCAAATTCTATGAAAACATCTGAAGTAAACGAGAAAAAAAAATTAAAGGCACAGTTTTAAGTGTTTCCGTCTTATAAAAAATCCCTCTAAACATTTCCGGGAAAACTGATATCCGACAATTGCCGGAATTGAAAAATTCCGGCAAATTTTGATTCTGAAGCGTCTTTATCAAAAAAACTGTTGGTAAAATACAAATTTTATTTGATTTTCAAATATGTTTTTTTTTTCAGAAAAGTGAATTTTTTGCCGGGAATTAGGCAAATAATTCTGCTCATGAAAATGTTTCAAGATTTTTTTGCCACGAAATCAGACGGTTTGAGAACAGTTTTAGCGGAAAGTTAAAAAAAAATTTCAAAATTTTTGGCAATGGAAGTAAATATTTTTCAGAACATGTATCCGAACAGTTTTGGCTGTAAATTAATCAAATGTTTAGTTTTCAACAACTCTTCGCGGAGGATCCAATATTTTTCAGAATTTTGGAAATTAAAAATTTATCGAAAATAAATTGCAATTTATAAGAAAGCAGTTGTAATTTTTTTTCAAAAAGGTACCGAAAAAATCTGGCGAATTTGGCAAATCCTTGAGCTGAACAAACCCGGAAAAACGCAATCATTTTATCCTTTGACTTTTTGGATCAGGTTCAAAATTACTGAATTCCTACAATGAGTCCACGTCAGATTTTTCTATAAGCTCCGTTTGGTCTACTTGTATAAAGCTCGAAATATCTCAATGTTATGTTATTTTACTAGATTTTTTCAAAATCAATAAGTTTTTTTCGGGTAAATTATATTGTTCATTTTGTGGTGTGTGCGTGCTCTGAAATTTCACACTTTGCCGAGCTCGGCAAATGCAAATTCCCGCACACCCCTGTATTACTCACCTTCGGAAATCGCCTTACCATCTGACAGGGATGTGTGACCTTCGGCTGATACTTATGACACGATATCCGGACCACGCAACACAAGTTTACAGCTTCTCATGGAGCCATATTAACTGAATACACACTTCAACAATAAGTCCAACGGCACATGGACTGCTTCGGCACGAAATCGGTGACCAGCATGTACCTGGAATATTGGAATTGCGTGGGCAGGGTTCCTGACACTAGTTTCATTTGTCTAAAAAATTTTTTTTTAACTGCCTGAAATTAGTCCAAAATTACATGTTATCTTTTCTCAAAATGTGTGAAAATTGCACACTGAATTAATAAATAATATTACTTTTGTAAGAACATAAAAAGGGGAAAAGTCAGCGGTAAAAAAGTAAAAACACTCAGAGTTAGATCTGTTGACCTCAAAAAGTTCCATGAAAATTTCCTTCTTTTTTTTCAGAGATGTGACGTCGTAGCGGCAATTTCCGTTCGGTAAACATTTATTTTCGGCAAATACGGCAAATAGCTTCCCCGATTCGCAGTTTGCCAGTAGGATACCAATTTGCCGGAAGTTAAAGTTTTAAAAATTCCAGCAACTTAAAACTATTCTAACATTTTTGAAATGTTTTTTTACTATTTTCTCTAGATATTTTTAGAATTTACTTACTGTTCAAGCCCACAGCTTGCCGAAAATTTCCGGCAAACTGTCGGTTTGCCAAAATGGCCGGAAATTTGAGAAACGGCAATTTGTCCGTTTTGCCGTTTTCTAAAAAAATTTTCGCAATTACTGTATTAGCCGTTTGCCGAAAAACTAAATATGCCTCCCATCGTCACACAATACAAAAAAATTGCGCGGCTTCTGGAGATCAAATCTGACAGCTTACTGTACTTATAACTACAAATTCACGCTGTGTTTTTATCTAATTCACGTGGTGTCAGGGTGTCTCAGGCTTGTTCTACGTATATCTACAAAAACGGGGGCAGAGACGGAGGAATGTGCTAACGTCACTTTTTTTTTGAAAAAAAAAAAATTCCCGCATTTTTTGTAGATCAAACCGAACCGTAATGGGACATGTTAACCTGGCGCCACGTGCTAATAGTAGTCACTACATTCTTACCGCCGCTCTGATATTACACGCCGATTCTTTCCAACTTTCTGAATACCAATTACACCATTTTCTCGGATTTTGATATATAATACCGCGGGCTTCAGACTTCCGTCTCATATTTTCAGAATGTAAGAGTTTAGCGAAAGGTCATTTGGGCTAGGCTACGGCGCGTTGCAGCTCGCTTTTCTTTGCAAAACTAAATCGGCGTATCTGTCCGATTTTCATTGGAGCGCGAAAGGAAAACTAGAAGCCCATGTATTAAAAAATGCCGACTTACCTTTCGTTGATGAACTCATTTCTCCTTCCCGCTTCTTTTCCGATTGCACATGAACCTTCGTTCAGGAAACTTCTGGAATTGCTGAGAGTAAAAAATTGTTTTGTTACGAACGCGCCCAGCCCTAATAAAAATTGATGGTGTATACCACGTTGGAAATTATACAACAATACGGAGCACTTTGCTCGAAGCCTAACATTTTCTAAATGTTTTCTCACCTAAGACAAAAACTCCAAGTATTGTCGGAAAGGATACACTGTCCTCGAGACAGACTTTCGTTGAAAGTACCTCGAACATTGTGATGAGGGTATTTTAGCACGGATTGCTCGAGCTGAAAGCTGATATGTTGCTTATTACACTTGCGTGGCCGTGAACCCCAAAAACTAGGCCACCTTTTGCGCCCAATTACCGATAAAACCCCAAAGCCTCATATCGCAACAGCTCCATCATGGACAGCTCTTAGCGACTTTTTTAAGACCGCATCCACTACAGTATCGCTTTTGGCATTACTCTCGTTTAGATGACGTGTCTCGTTGAAAATAAAAAACTGAATTGTCGGAGATAGGGACGTCGGTGGATTCTACTAGCATGTTTCCAGGATCGATCTGTAAGTATTGTGCTTTAAGTACAACTACTGCTTCAGTTTGATACGCATTGTAGTTTATAGATTGTGGTTTGTGTTTTGTAGTTTGTGGAGTTTTTAGCACTATGTGTGAAGCTTGATATTCATTTTGCAGCACATTGACTTGGATTGGGGTGTGCTAAGATATAATATCAAAGTCCAGAACGTCACGAATAAAACATCTCAATCCGGAAACTACAAACTAAACCCTACAGACACTTACAAACTACAGACTATATCCTACAGACTACAAACTACAAACTAGAAATCACAAACTACATCTACGCAAAAGAACGTTACCTACCTGTTGCTTGACTGGTTTGTGTTAAACTGAACGTGCCGGTCGATGGAATTGGTGAGGAGGATTGACGCTGCTTGTGGGGCCTGGAGTTTTCAATATTTTTTTGTTTCAATTAAGAATTTCCTTAAATATACCTTACATCAAATCCCATGGCCGTTTCGGTGAATGCAGCCGAGTTGGTTATCGAACTGGTGACGTGGGATTGCACGGAATGGAGGACTGGCGGCGAAGACGAAGCATTCCTTGTGCAGGCACATTTTGCATCCTGGTAGAGGTCGTCAAATTACGGCTTCTAGGTCATTGTGGCCGTGGCCGATGCTTTAAGGGATGCTAGGTCATCTGACGTCACATTTTTTGTGGTTTTTCTAGGACACGTTACAAAGAGTTCGAAGCGCCCAATTTTCGGAGAGGTTACTAGGCCATGCAAATGTTTTTGAGGTTTCTAGGCCAGTAGAATATTGTTTCTAGGCCGCAGTAGAGAATTTTAGGCCATATCTGACGTCACAGTTTTTGGGACGCGGCCTAATAACGATGGTGGACCTCTCTTCTGGGAGGAGCAACAATACATTTTTTACGAATTTCAACAATAGAAGATGCAACTTCACTATGACCACTCATGTGGTGCGAGGTCTGCTCATTACGGTTTTATCTACAAAAATGCGGGAACTTTTTTCCCAAAAAAATGTGGCGCCGCCACGTTCTTAAACTTGCAAAATCAGTTGAAACCTCTGTGTCTCTTCTCCCGTGGCATTTTTTTTAGATACGTAGATCAAACCAAAATGAGACCACACACACACACAAAAACCACTCTGACACTTGTGCGCCTGGATGAAGTTCGTCAGGTGCCGGCAATTGCAAAGAGCACATATCTCCTGCCCATGGGAAGTCGTGACATCATGTTTGAATTGATGGTTTTTTGGGACGACACGTCCGGCGACAGTTCGGCAAAACTTGTGTCCCGGAGACGGTTCATCCTCGTCCTCGTTCCTGCCCAAAAGTGCCTTCAAATTCTTTTTTGCCTTCAGGAATCCCAACTTTCAAGCGCTTCCTTTTTGGAATGTGTTGGGCTTGCTGAAAATATTCAAAAGTTTTATTATAAGCCATAGAACCCTTACCGTGATCTTCACATCTTGACATTGAGAAATTGTTGGATGCGGTACTATTAGCTGACCTTCCGTAACATTTTTAACTTAGTGGTTGAAGCCGTAGGGGCCAGAGATTGCCGTCTATGATGGGACCTAGATCAGCTCCTTCAATGAGCTTCAACTTTGTGTCTTCCGGGATAACTGGTCCACGTCGACGGCGTCATCGCTAAAAAGGTTTGCTGTGTTACGGTAAGCGAGAATTATGGCAGAGGTGGGCATTGCCGTTCGGGAAATTTTTTGTCGAAAAATTGCCGGTTTGCCGAAAATTTGAATTCCGACATTTTGTCGGCGTAGTTTCCCAGAAATTTTCAATTCCGGCAATCTGCCGATTTGCCGGAAAATTTCAATTTCAGCACGTTGTCGATTTACCGGAAATTTAAATTGCGACAATTTGCCAATTTACCGGAAATTTCAATTCAGGCCATGCTGTCGGAAATTTCAATTCCGGCAAGACAATTTGCCGATCTGGTTTCCGGAAATTTCATATCCGGCAATTTACCGATTTGCTTGTGGAGAATATCAATTCCGACAGTTTGCGAATTTTCCAGAAAAATTTCAATTGCGGCGATTTGTAGATTTGCCTGTAAATTTTCAATTCCGGTAATTTTCGCCGATTTACCGATAAAATTTCAATTCGGCAATTTGTGAATTTTCCAGAAAATTTCAGTTCCGGCAATTTGCCGATTTGCCTGGACAATTCCAATTCCGGCAACTTACTTTACCGAATATATCAATTCGGCAATTTGCGAATTTTCCAGAAAATTTCAATTCCGGCAAGTTGAAGATTTGCCTGGAAATTTTCAATTCCGGCAATTTCGTGCCGATTTACCGAAAAGGCTCTGCAAGTCCTTCGGTAATTTGTGAATTTTCTCCAGAAAATTTAAATTCCGGCAATTTGCCGATTTACCACTGGAAAATTTCAGTTACGTATGCCGATTTACCGGCAATCTCAATCCGGCAATTTGCGAACTTTCCAGAAAATATTCCGGCAATTTTGCCGATTTAAAGGAAATTTCAGCATAATTAAGGCTACGTTCGCCGCTTTACCGGAAATTTCAATCCGGCAAGACATTTTGTTTTTCCAGAAAATTTCAATTCCGGCAATTTAACGGCCGAGTTTCCTGTTTCAATTCCGTTTGCCTGCCTGGGAAATTTAAATTCCGGCAATTTGCCGATTTGCCGAAAAAATTCTGGTACATTATTTCCTAGAAAATTTTCAATTCCGGCAATTTTCCGCTTCACCGGCGAATTTTAAAATCCAACAATTCTGGCACATTGCAGATTTGCCAGAAAATTTCAATTCTGGGAGTTTGCCGTTTTACTGGAGATTTAAATTCCGGCAGTTGCCGATTTGCCAGAAAATGATTCAATTCTGGCAATTTGCCGCTTTACCAGAAATTTAAATTTCGGCAATTTGCCGAGAGTTTTGCTGAAAATTTAAATTCCTAAGAAACTGTGACCGAGATCAGTTTTGACGTCTCTTCCAGAAAATGCACTAAGGTGATGTGACGTCATGACTGAGTTTCGAGGCACGTTTCGTTAACTTGGCGGAGGACCTAATATCCAAGGGAAATAAATTCTTTTTAAATTTCATAATTTTCTGAAAAAAAACTCACTCCTGAGAAAGTCAAGTCTCTCTTCCGGAATCATCATAAACCAAGCCCATCCTGTGTAGACTTATCACTATCTGTATCATCACCCGAAAGAGCAAAAGCCGCCAGAGAGCTCGGAGCACTCAAGTCGAACTTTGTTAGCATTGCTCGAACCTTCGTCTACGATCTATACGATAACTTCTTAACGCTCAAGGCTCCATTGCCCTTGGGAATCTCGCCGACTCGCTTGCGAACCGATGCTCCGAGATACGCAGACTGCAGAGCTATCACCGATTCTCTTATCATAAATATTTCTGTCGTTGCTTGTACTTCTTCCAATTACACTGTATCGTTTGAGCTGCTAACGCTTTTTTCCAAACTTCCGCACCTCTCAAATGATCGAAACAATCGCTTGATCTTGATAAGTAATCTTCATTCTCAAATATCGCTTTCTAGCCAATATTGTCCTGAACCATCGTTGAAGAGTATCGATTGATTACATAATGGTCCGATGCAAATGATCATCGAGAACTTTTCAGCGTCTCTCTAATAAAAATCTTGGCAATTGGTTCCATATTGAGTATTATCATTACAATTGTGCAATCGTTGCATGGGAATGTATGTACTCTTTCACATCGTCCACAGTACTATCCCTTCCGTTTCGCAAAAGAATTCGGTATTGTTGGACAAAGCTTGGATACGAATTCAATTCTCATCTCAGTACCCGGCTGTCCGAATTCGAACGGTCTCGATAGCATTCCGGTGTAGGAGCTGGCGGAGGGTTATGTTGTAGTCGTCGCAAGTGGTTAGCGATCTATAAAATTTTAGGTGGTTTTTGATAATTTCTACTTATATTCAGTCATATAAATAAACACATATAAGTACCAAAAATTTCGATCACCTAATTTTTCTTAATTTTTTCTATACTCTTACTAGTATGAAAGAGCAGGATACAAAAATAACTCCACAAGTGATAAACCAACTTTAATTGGATTAGTGTGTATCACTTTGAGTAAACTAATATTGAAGGTTTAAATGTGGACATACCTAGCCTATAAGCAAGAGAGGTCCTTGTAAGTAGACTTCAATAGATTATGAACATATTATAAACTAACGTTGGTCAAAAAGTAGGTGTTCAATGATTCCACCAATACAAACTCACCTTATCATTATTACTCTTAATACACCTTAAAATACGGCGTCGCGTTGGCCAGTGCGCTCATCAACCTCGTAGTCTCGAACTGCTTTGAAACCGACGATGGCTTCTTGGCAACCCTCCGTCCTCCGATAGCCTCCGTCAGAATTTAGCGATTTCCAAGCTCCACATTTTGTCGTCAGACTTTCCCGCCTGGGGACGCCGTGCTTGATTTCGACTCGTGTTGAACATGCTGGTATCACAAAAGTCTGGTACTTCACAGTTCGCCACGTAGAAATGCGGAGTGAACGTAGCAGATTCCGAGCCGACGAGAGACGTTACGATGTAGTCCATTACTCGGAGAGGCGGATTCTGGACATGTTGAATTATATTAAGGGCCCAAGGATAGCTCAGTCGGTAGCGCGGCTAGCATCTGGAGGTCACGAGTTCAAGTCCGCCTTCAACCCCTAGGTTCACCAAGCCTCTATTGGAAAATGGAGCAATCCACGACTGGATTATAAGCCACAGCCTTCGGCTAGGACGTGTCTTAAATTGTAGCCCAGTGGGAGCACCACCAGGTATTGTACCTGTCTCCCAGATCCGCAGATACACTCAAAATAAAAAAAATGCGAGGTGTGTACTGCAGAAGAAAACCTAATATTTAGGCCCCGACTTTTTCTCGTCCACGCATGGAGAATAGGCAACAATTTTGCCAACCAACAGGCGGCCGACATTCTCGGGATCCGCGCGCGTCTGCGCTGCGTTTAACTCTCTGTGGGCGTGGCGACCTGTCTCCGCTTGCTGCGAGTACATTGCGGCCGGAACCCGTGAGATGTCGGCGGCCTGATATTGGTTGTGGTAAAAATTTCTTGCTTTTCCGTGAGTGGACGTGAAAAAGGCGGTGCCTAAATATTAGGTTTTCTGCAGTACACGCCATTTTATTATTTTGAGTGTACTTACGTCGAAGAACGGATCGTCCTTTAATAATTGTACATTACATTTTATTTTCCCTTCTACGACTCGAAAGGGCGCATTTACGCGCGATGGTCCCGCTACCCACCCCAAAAATCAATGGGTGGCGTACCGAGACCACCGCTGGTAAATGCTCCCTCCTTTAAAGTCGTGTGGAAAAAATTGCACAAATGAAGAACCATACTTTTTGTAGCAAGTTTCGTAGTTTTTTGAGTCCGTTTATATAATATCGTAGTTGTCCATTTATTTAATGTGACACTTCTTCCCACTTACTAAGGACTTCTAACACTTATTCCAGTTATTGATTGCAATTAAATCTACGAACACTGGCCACTTCCCTTTCGCAGTTCCTTGTCGATTGCTTGAACGCCACTGGTTCATCGCCCGAAACACACTTCTCTGCACATTCCCTGTGCACCGCCACCGGATCGAATCCCAGCCGGGTCTTCATCGCTTTGAGCTCGTACTGGACTTTAGAGCGTTCGACACATCCCTCATTAGGTCCTTATTCTTTTGTATTTCTCGGAAACCCTGAGCAAATTTGTTGACGTGATGAGATGAAGACGTTTTTTTTGTCACGAAGTTGTGTGTTTACCGTAATTTGATACTTGACTTTTCCAGCATAATGGGCCACGATGAATGCCGGCTCCTTCTTCTGTGGGTGTCTCATAGTATCCGTTGTTCTGGAAATTTAATCATGGAACTAGGCATGTAATAAGAAACATTGAATTAAGGTATGTCCCGGAGGAGTGACCATCTTAGGCCTGACTTAAACTAGAAGTGGATCCAAGTGGCAGACTGGCCTGAATCCTAGTAACAGGCTGACCCTAGATGATTAAAGGTGGATTAGCGCCAGTGGGAATTCTGTATAAACACACTTATAACGATACCAAACGATCGAATATCATAAAACACGCCAAAAACTTTTAGATTTTTCAAATTTCCGGTCAAAGTTTTTGGAACATTGACAAAATTTTGACGCCAAATCTGAGCTGTTGCGGACATCAAAATCAATGTAACATTTTTCTGGTCCCCTACAATGTCTTTTTACGAAAAATTAAAACAAACCAGATTATATAACAAATAGAGAAAAAAATATTTTTTAGTCGAATTTGTGTCACTTTTTGACTGTAAATAAAAACATTTTGAAAAATTTTTGAAAACTAGTTTTATCATGAGATTTGGTCATTTTGGGAGCATAGGTCGAGTGGTTTTTAACAATTTCCACCACCGGCGCTACTCCACCTTTAATCGATAATCGATGCATTTCATACCTTCAAAAACTGATTTAACTTCGCCAGCATTGAGTCGTCTGTTCCATTATTGATATTACTCTCCTCATCGACTAGCCTGAGAATTCCATATGGTTTACTCTGAAAATTCATCTTATATACATGGATATATATATATATATAAATATATAAATATATATATATGCATAAATATACATGTATATATATATATATATAACAGTATGGGAAAGCCATAGGACACCCCCTAATTTGAAGGTTTGAGGAACTTCCGAAAATTTTTTTGAAAAACTGCTAATGCCATTTGTTTTTAAATTGAAAAAAACCTATAGATTTTAAATTTACAAAAAACTTAGGAGGTCGCGCTGGAAAAAACGTCAAAATCCAGTATGAAACTTCTATAGGACCCCCCGTAGGGGTTTTTTTCACGATTTTTCTAAAATCAACTGGCATATTTTGGAATTGACAAAAGCTCAAATCAAGTTTGAGTTAGCAATGAGTTCAGATAAGCAGTTTTGACTTTAAAAAAGTATTACGAAATGTTCTCGTGGGATCTCCAGACTGGTTCTGATTCTTTCGAACTATGTTAGTCTGTTTCAAGCTTCCTGGTGCTCTCGGTAATGCCAAAACTTGATACACACTCTTGAAGAAGTTCCTACTAAAATTCCTAGCACACACACGCTGGCATAAAAATTTTTACGCCATCCCCAAGAAACCAGTCAGAACGCTAACAGCGGATTATAAAGCCAAGTTGCAGTTATTTTTGATCAACAACAGAATATTCATCTACTAAAATCAAGAAAGGATCAATAGTTAATCGTGTTTCCTTGTGTGCGGATGATCTCAAACAGTCTGTCCTCCATTGGTTTGACCAAACTTTTCAGCTGGTTGTCCGGAATAGTGCGCCCAGTCGAGAATTCCTTGCTTCATGCATCTGTTGAGTAAGTCTTGTTCTGGAATAGCATAAACGATACGGACAAGAATCCCCCACAAATTTTCGATTGGATGAGATCAGGACTTCGAGCTGGCCAATCAAGAAGGTTGATCTTGTCGATATGAGCTTGAAATAGTCGCGGGTTGAGTTGCTCACATGGATTGTCGCATTATCCTGCTGAAATCTAAAGTCTTTGCTGGAGTGGTCTAGAGACGAAGATACTTGGAGAGCTCTCTCAGTTCCAAGACGTTCTGATAGTCAGTGCTGTGCATCTTGAACGCTACTCGAACTTCTCAAGCTTCTTCTCCGTGAACGCTCCCCAAACCATCACCGTTCCTCCTGCAAAATTACGTCTCGAAAAAACCCTTGGTTCTTTGCGAAAATCCCGCCGTACACTCGGGAGACTACCGTCAGGCCCATCGAGATTGACTTTCTTTTCATCGGAGAAGACAACCTAAAACAATGATCCTAATTATTCACTCTTGCTTTCTTTAAATTCTCACTTTACTCCAATTCCTTCCCATATTGTTACTTAGCAAATTCCAATCGCTTGGACGAGTTTATGCAGAGAGTAACGAGCAGGGCAAACAGTTTCTGACAAACTATTACACCAGATCGTTAGATGACATTGAGGGTCGAATGGTCCTTTTTGAAGCAGACAATTGAAGCTCATTGCGAATATCTCTTGCCGTCTTACAGGAGTTGGAGGCAGCAGGAATAACATTTCGCTCGCATTTCAGGCACGGCGGAAGAGACCTTTGCGACGAGAAGCTCTTTTAAATGTACCGCGACTTAGCTCACCGGATCCCTCAGATACTCGCGAATACAGTGTCGAGAACGGGAAATTTTCCTACTCCAATTTCATGCAGGGACACATTAATTTCATAACATCCAACTGAGCGCGTTCAGTGTCCGAAAGGGCAGATCGTCGCTCTAGGTGCAAGTAAGACTGCTTTCGAAGTATGCCTATATGTGTGCCACAACACATGCCACAATTCCACAATAATACGCAAAAAATAGTAAATAACATCTGTGAGGGACAATTTAATCTTGAAATATTGTCCCATGGAACCTTGTACTTAGATCAAAGAATAACGATTTGATTCCTGATAAGCGTTCCATTGTTTCGTGCTGCATATTTTGCCAAATCACCTTGACTCCACAGACGAAACATCTAAAGTGCGTGCTAGGTATTTTAGTAGGAACTTGTTAAAGAGAGTTTATCAAGTTTTGGTACCCATTACCGAGAGCACCAGGAAGCTTGAAACAGACTTGAACATCAAAGATCGGAAGAATCAGTTGAGAGCCAGTCTGGAGATCCGACGAGAACATTTCGTATTAATTTTTTAAATTCTGACAAAACTGCTCTCACCTCAATTCTAACTCAAACTTGAACATTTGAGCTTTGTCAAAATTCCAAAATCTGTGTGTGAATACATTTCAGTTAAAATCGTGAAACGGGGGGTCCATTTATAGAAGTTTCACGCGCACTGGATTTTGACGTTTTTTCCAGCGCGACCTCTGTTTTTATAAACTGCTGGAACAAAATCAGTATATAGGTTTTTTTCAATTCAAAAACGAATGGAATTAGCAGTTTTTCAAAAAATTGAACTTCGTCACCCTTAACCTTCAAATCAGAGGGGGTCCTATGGAACTTCCCCACACTGTATATATATATCTATATATCTATATATATATTACGTTTGAAAAAACCCAAAAAGGAAACTTATTGGACTTACCTGAAACAGCTGCACACACTCCGTATTATCAGTATACTCGATATTGGTCCAAGAAATCTCCTTCAAGTACTCCTCTTGTTCTACAAAAAGTGGAAAATATGTTGATTGAAATAGGACTGAAGTTTCTCAGTGGCATCGTTGATACATAACTGGCTTCAAAGCTGTTGCATGGAGACCCAACGTCTTCAAATTCCGAAATATATCCTAGATACTTGAAAATTACTTCAATTTTTAACAATTGATACTCATTAATCTAACCTATATAATATCATGTACCTCCCAGCTTATTGAGAAGTCCTTCTTCAGCAATGCCTTATTAATCCTGAGGATTAAGTGAAACAAAGAGTTGTATATGCACATCCATGGCAGTCTCGGGTGTTGGTGGCGAAATTAAATTATCTTAAATTCTCTAATTTCACTTCTGTATATATATATATATTACCTCAGACACTATATCGCAAAACTACAGTTTCTGTCTTCATAACATGTCGTTTCATAGTTAGAGCCTGCATGGGTGTCGGTTGATGTGAAGCAGATTTGCGACTAAATCCACGACTTCTTCATTTTCAATATACCCACGTTCAACGCGGGCTATGGTAGCCATGTCTCTGGAAAATTGCATGGGAAAAATAAAAAAATTTCAAGATGTTATTATATTAGGAATCCTCTAAACAAGTGTTTTCAGGTTTTTTGGTTTTACGATTATTCAAATTTTTATGATTCGGAAATTATTATAATTCAAATAATTTTCGTCACTATTATAGCCATGTTGTTGAAATATAGAATGCTATCTTTTTAAAGGTGGAGCACCGAAATCTGGAAACTATTTTTAAATGAGTCCAAATTTTCCCGATTCCGAATATCTATGCGAAAAAATTTTAAAAAATTCATTTATCGACTTTTTCAAATTTTTCAACCGGCGAATTTTCGCGCCAGAAACCCCGTGTACACGTGGTATCAGTGTGTCTCATTTTGTCTTGATCTACGCAGATAAAAAATGCGGGAGAAGAGACGCAGAGGGGGTTCTCAACTGAGTTCGCATGGTTAAAAATGTCCTGACATCACCTTTTTTTGGCATTTTTGATCAAACCGGATTTGGAGAGCCTCTAGGCACCACGTGAGTAGGCAGGCATTTTTTGCCTGACTACTTGCGGGTGCCTGCCGTTTTTTTCTCCTCAGAATTTTTTCGCGAAACTCAATAATTCAAATAATTATGAATATTTTCGAGTGAAGCTTTAAAAAGTTGTTTGTGCCAAGTTTGAGTTCGTAAATTAATTAGCAAAAAATGTTCTCACGTCACGTTTTTGGGCAAAAAAATCTCGCATTTTTTGTAGATCAAACCGCAATAGGACAGCCTGGCACCACGTGCGTGTGTCGATTTACGAGATTTGTGTATATTTACGAAATTTTTTATCTTTATCAGACTCTGATTTTCGTTTCTCAACGAGTTTTCTTCATTTTTGTATGTGATTTTTTTAAGGTACATTAAATATTTTATCATCAAAACCCTAGCAAAATTTTTGGTTTTCAGTCGGTAAAATCATATAGGTAATTGCATTTGCCGTCAATTTGTGACCTAATAGTAAGCATCGGAAATATTGCCAGTTTTAAATAATTAATTGACCCTAAAACACACATTACAAAAAAAAACCGATAAAAATTAAAAATTAAATTAATGCACAAATCTAACGACACATGGCTCTAGCGCGAAAATTCAATAACTCTGTACAAATAGCGATTTCAAGCTCAAATATAAAATCGTGGAATTTTAAAAATTTTTTGCACATAGGTAGTCGGAGGCAGGGGAAATTTGGAGTCAATTAAAAATTGCAGATTTTACGGTTTCGGTGGCGCTCCGAAGAACTGTCTGAATAAAATTAAAACTTTGGGAATAGGCAATTATTCGGTATGGTTAACTTTTGCTCTTGGTGAATCTAAACCGTCCCAATCATTTACCTTAATATATGTGATATTGCCAAGAAGCAACACTGCTGAAATAATCCCGAAGAAGGTCTGCTGGGTCTTTGCATGTCCAAAATCCGAGGGAGCTAATTGCATGCCTCAACCTATCAAGCTCATCTCGTACACACCTTCCAGGCAAATGGCTCGTTCTGGAAATTTCATTAATTTTTTTTTAATTTTTTAAACAAAAATCCCTTTGAGGTCAGCGAATGTATCCCTTATTCGCTCCTGTGAAACTTTTCCCAGCTCACCTGATTCAAATACTTATAATCATGTGGCTTCAACAAGAAATATTTCTTCCTTTCTTCCTCGTCTGGACCCTCCAGAAGGTAGTAGCATACGTGGTAGTTCCTGAAAAATATATAAGTCCAAGATGGAAGACTCCAAGGGAGTTTAGGTAATCGTCCGTTCTCCTTTAGTTTGAAATATGATGCGTGATTTTTCCAGCTACCAGGTAGATCTCCACGTTTGCTCTGAAAACTCCAAGTATAAGGCCTTTTTTGTGGTATACACATCAGGAGAAGGCTTCAAATTTTACGTTCGCTAGGTCAATTTAGGTCATAGTGCCTAGTAAGTAGGGTACCTATAAGCTGTGATTACTGCCAAAGTAAAAATTTCCCGATTCCGGCAATTTGTCTGATTCGATGCCAGGCATCCCAATTCCCGCAATTTGCCGATTAGCCAGGCATTCTCAATTCCGGCAATTTTCCAGTTTGCCGGATTGCCGGAAATTTAAATTCCGGCAAGTTGCCAAATTTCTTTTTCGGCAATATACTGGATTGCCAAAATGTTACGGCAACATGCCAATTTGCAGGAACTCATGTTCGGCAAATTGCCGGTTTGCCTATATCCCAGAAATTTTCAGGTCCGGCAAGTTGTTGATTAGCCGATTTTCGGAAATTTCAGTTCCGGCAACTTGCCGATTTGCCGGAAATTCTCGAAACCGGCAATCGCGGGAAATTTAATTCCGTCAAATTACCAACATGCCGGATATTTCAATTCCGGCAATTTGCCAATTTGCCGAGCATTTAAATTCCGGCAATTTGCCGAAGAAAGTATCAATTCTGTTGGCAATTCGCCGGACATTTCCGACAATTTGCCGATTTGCGGATTTCCCAGAAGTTTTCAATTCGGTCAAATTTCTAATTTGCCGGAAATTTCAATTTTACTAAGTCGCCTGCTATCCTCCTAATCTCACCACACTCGGAAACCATTCCATTCTCCCAAATAGTTGATTGTGATGAATTTTCCAAATCTGCTACTATTTTTGTACCGTCGTTAAGGGGACAGCATTAAAAGCCTCTAGAACAGGGCCAGGTGACAGAAGGGGTGTCTGCTAAGTACTGCAGCCTGTTGAACCTTTCGCATGACACTGTTAGCGATATCAAATGGGAGATCAGATGATTCGTGCAATGACCGTATTTCCCGAACCACCCCGGGAGATTACCACGCATTGATTTTTCTTGAGTACGGAGAGAGCATGCTGAAAAACTTGTTATGTGGTTTAAAAATTAGTAGTGACAGTTAGTTAATCCAGCATCTGCAATGTATATCTCTTTTTTTTGAAATCAAAAGTGCTTTGAGGGTGTTGAAAAAACGAACACATACCTGCTAAAAAATTGGTGGCTTCCGAATAATCCGGCCCTTGGCAAATATACAAGCCAATACACAAAGTGAGCACCTACGTGGCCGAGTGAAGAGAAGGCCACCGATTTTTTTGTGGTCACCTGAAACTTCAAAAAGTAACTGGGTTCCCCTGGTAAGAACGTAGAACTCACTTGTGGTAACAGACTTCGGCGATTGCAAAAATGTGCGGTGGTAGTGAGCCGAGCCGCTTACTTTGAAAGTTATCGCCTGCTATTTTGGGTTGTAGATCGGAAAGAAGCAATACGGAGCGGGTACACGCTACTAGAACTGGACCGATGTACGTATAGTAAATATGCCCATTCGCGAATCATTGCATCCCGCAAATTGTCCAAGAAAAGAGGTTTGCTCCGTGAGCTCAACTGGCAAGTGACAGAGTTCGGGGTACTCCCTGAAAAATTTTAAGGGTTTAAAATTTTTTTAAATATAAAAATATTTAAAGGTGGAGTACAGGAAATTTAATTACACCAAATTTTCCACTGACTCCGAATCTGTAAGTAAAAAATTTTGAAAAAATTACCCTGATTTTGTGTATTTATGTTTGAAATTACTATTTTCAACCCTTTGTGCCCGCACCACTTTTTTCAAACTTACGCCCAAAGACTGATACGTAGATCGGGTTTGCATCGTTTGATTTTCGTCGTTTAATTTATTTATTTTCCACGGGGTTGTGGCCCTCACTTCTTCATTGACGGCATTTTCGCGCTTCATTGACAATCGCCTGCCGGACAACACATGGAAAAGTGTCGTGTACTCCACTCGGACAAATCACATCAGTTTTACAACTAAAGAGCCGCGACGCGACACGCAATTCGCCGTAAGCCTACAAAATCTCTCCGACCCAAAATGGCCTAGTTCGACAAAGCAATTCCGATTTATGAGGGAAGCCAGTTTGTGCGGCGAATTAAATTTTCTTGAACCAGTTTCAATCATTTTTGTCGAGTTTTTGCTAGTTTTTTTTTTGACAAAAAAATGAAACTGGTTAAAAAAATTTGACAATAAACAAAATTTTTAAATGAAGGAAATCAAAGCGCCCTCCAATGCGGATTTATTTGGGTGCTCATTTGACATCACAGAAAACACGTGGTGGCAGAGCAAGGATGTCAATGTGAGTCCCGTAAAATTTTCGTAAACGGGACAACGGGAATTCCCGTTCCCGTGAAAATTTTAAAAACGGGATAACGGGAATCCCGCGGCGTTCCCGTGAAAACTTAAAAAACCGGACAACGGGAATACTGCTCCCGTTTTTTTGAAAACACTCAAGAAAAACGGGACAAACAGGGCATTGGTTTAAAAAAAAGAGTGCATAGTTGGCGTATTTAGTGTCTTCGAGGCAAATTATAAAAAAAAACTGCATTATAAACATTATTATCTATTTTTTCATTATTAAACAGATATTTAAAAAGCCAAATGAGTCGGAAAATGTCCCGTTCCCGTGAAAATTTTAAAAATGGGACAACGGAATACCCGTTCCCGTGAAAACAGCCCCAAAAACGGGACAACGGGAAAAACGGGAAGAATTGTACACTGTCCTTGGTGTCGAGGCTGTCTCTTTATCTACAAAAACAGGCTGGAATAGTTTTCCAGAAAAATTCTAACGTCTCTTGACTATAGGGACCAAGCGAAAAAATGTCCGCGTCTCTTCACCCGCATTTTTTGAAAACAACAAAAGAGACCGGGCTGCAACAAATTAAAATCAGGGAAAATTTTTTCAATTTTTTCACATCTAAATTCGTGATGGGGGGGCAAATTTGGAGTGATTTAAAAATATTCAGATTTCGGTACCCCACCTCAAAACAAAATAATGAAAGAATTGCCTTACCCGTGGCTGATCCCAGAAGTTCGTAAGAAAAGCGTCAATCGATGAGGCGACCTCTGCACTTCCAAACCGAGCGCCGCGGGTTGCCGCCCGATAATCGGCCGGTGTCAACATATCGATTTTTTGGAGTGGCACTGTCCACCACTACAGGCAGCCGACCAGAGGCCTGTAAACATCCGCGACTGGGTATGTTTCCCCGGGGTATCCCTAGGCAGCGTTCGTTATAGATTTCTTAGACCGACGGTGGGGCCCATCATTTCGAAGAGGTCAAAGTCTACCGACTGGCCTCCTAGTTCTGGAAATTTTGACTTTAGAAAAGAAATCATTTTTTTCCATTTTTTTTTAATTAGCCCGTTGCTTTTTTAAAAATTAGAAGAAAATGTGAAAAAACTTTGCATTAGAGCGCGTTTGCATTCATTCCATGCAGTCCAATTTTGCTGGGAGCTTGAGTGTCTCGACTTGATCTACAGAGGTCTCTAAAAATGCGGGAGAATAAAATCCACTGATATTGTATGCCTTTAAGAATGTGCTGACGTCACATATTTTTGTGCAAAAAATTCCCGCATTTTTTGTGATCAAAGGCCATGAGGGGACAGCCTGGCACCACGTGAGATTGTGTCGACAATTTTTTGTTGAAGATGTATGGCCAAAAACGGCACATTTAAGTAATTAATCAGCAGAGCGCGTTTGAAATTTTGTTAAAATCTTTTTAAAAGAGTTCCCACTTCCCGAAGTCCTCCGATTTTTCTAAAAACTAAGAGTAGGGAATCTCCGACCCTGAGCCTTCTTTAAAACCTTACCAGCTCTGCCCGGAGAGCACTTTTTCGATGAGTCCTCCGTCGTGCGCCGATCATGAACCTGCAAGTGTACTGTATCATTTTCACAGAGCTGTCGGGATTGAAGCTGTGCATAATAGACGGCTAACGTATGTTGCATCGACTGTCGCGTTGGTGAGCACGTTGGGGAAAACACCCCGTCGCTCCAGCTGATATTGAGTCAAATGACATCATTTTAGTGAATCCAGCATCGGGATGAATACGTCTGTAAAAAAAAATTTTTTTTGAAAGAAAAAGTGCCTGGAGAATCAGGCAACGAACCGGACAAAAACACAAGACCGCGAAAAACCAATTGGTGGCCGAGTTTTCTCTCTCGCGGTCACTTAGGAAATACTAAATTCGCACGGATTTCTGGCTTCTCTCCAACATAAATTGAAATGGAAGATTTTCGGCCGAACTAGGCTAACTCCGGGCCCTATCTGGTGTATGTTTCCGACTTTCCCACGGAGCGATTGTCAATGGAGCGCGAAAAACTCACTGAGAAAGGCCCCCCGTGAGATCGAAATGAAAATTTGCTAAATGGCCGAAAATTGAATACTCGGCCGCCAATTTTTCGACACGGCCACAGGATAAATCGTAAAAAAAATTGAGAGAAATTTATTAGAAAAAATCTGAAAGTAATGTTTATTGCACCGTGGCCGCAATTAATGTAAAAACACGGCCACTTTTTTAATGTGGGGAAAAGGTTGGCCGAGTATTATACAGTTTTTGCGGCCACTTAGAAAATATTTAGATCGAAGGGAAGTTGAGAAAATACGTCTAACGAAAACCAGTCAATTTTTGTTACATGACCGAAAAATGAAAACTCGACCACGGATTTGTTATGCTTTATAAAAATTTATGAACCTATTATTTTTTGATTCAGAAATCTTTAGAATTGTAACAAGAAAAAGTCGGCATCTTTTTTTCTCACGGTCGCAATTTTCTTTGTGATCGTAAAAATGGAAGCTCGGCCATGGTGGCCGAGTCCCTTTTTTTTCGCTGCCTACTGGTAACACGTGGTTGGGTGAAGAGAAAACTCGACCACCGGTTTTTTTTGTCACTGAAATTTTTCAATTTCAAAATATTTTAAATCTTGCTGCACTCTTTCAGCACAACCGCGAAAAAATGACAGCTCGGCCACCAATTTATTTATTATCTGGGTGAAAAAATTTTGTTAGCCAAGTTTTCTTCATCTGGAAATCAAAGAGATTTTTGTTACGTGGCCGTGAAAAGGAAAACTCCGCCACCAATTATTTTTAATTTCAGGCACTGGCGTTGTAAAATCTTATAAAAAAACAGGTTTTTAAGTACATTGAACTAAAAAATAAGGAAGATTTTTGGAAAAAAAATTGCTGGCCGAGGAAAACTCGGCCAACAACTTGTTCCGGTCACACAGCAAAATCTCTCGATTTTCGATGATTGAATATTGAAATCTGGGTTGGATTTTTTAGTATCATTTCATTTGGTCGCCGGTGGAGAAACGAGGGAGAGAGAGAAAAAAGATTTGTAGTGTCCCGGGAATCTTCCTCAAGTGTTGTGGAAGAAAGTGGAAGAAGCTTCTGCGCAGCAGCAGCAGCGTGGAAGTGGTTCACGAAAGAGAGAGAGAGACATGTTGGACTTGAAACCAGCATGATGAAAAATAAGAAGATGAAGAAGAGAATTACACACTACCTCCACAACACAGATTATTTTTATCACGTTTTGAGGGGGCGCTTCACACAATTCATGGCCTAGAAATTAAGTGGTAATTTGGTGGCCTAGAAAATACTATATTTATATTAATTATTCTACGTCAATAATTTAAACGGGAAACGAAATTTATTTTAAAAAAGCCATAGAAGAGGTTTTGAAATTGGCTAGGAAATGAAAAATTGTGTTTTTGGAATTTTCTAGGCCCATTTGAACTTCTCCTGAACACTGCGCTTTCAAGACTTCGAATTTGAATTGTGGCCTAGAAAATCATAAAAACTAGGAAATCAAGAAAAAAACATGGATGAAATTTTGAATTTTATAGGTCATTTGAAATTTCTGGCCTAAAAAATGAAAAATGATTTTTATTTTGAATTTTCTAGGCCACTTGAATTTCCTGACGTCGACAATTTTCATAGCCTAGAAATTTAAATGTGGTGGCCTAGAAAATAATTAAAAGTAAGTAATCGAGAAGAAACGCGTGAGATTCGGAGTTTTGTATTTTCTAGGCCATTTGAATTTGGTGTTGGACATGAAAAGCCAAAAAGACTTTTCAGGAAATTTCTAGGCCATTAGAAGTTGATTGGCCTAGGAAAAAATTTGTGTTTTTGGCATTTCCGTCTCTAGGTCATTTGGATTAGGGCCTAGGAATTGAGTAGTTGTTTTGGAATTTTCCACCCTAGGCCATTTGAATTTGGTGGCCTAGGAAATGAAAAAAATATTTAAAGGAATTTTCTCCATTGAAGTAGATGGCTTGGAAATAAAAAAAGGTTTTTTAAAGGAAATGTCTAGGCCCTTGAATTAGTTGGCCTAGGGAATGAAAAATGATTTTTTGCTTAAAATTTTTTAAACGCACTTGAATTTGGACGGCCAAGGAAATGAAAAATGGTTTGTTGAGTAACTTCTACTTGAATTTGGTGACCTGGGAAATGAAAAATGATTTTCTTGGAATTTTTTAGGCCACTTGAATTTGACGGCCTAGGAAATGAAAAATAGTGGTAATTTCTAGACCACATGAAGCGATTTTGGTGGGGAAATGAAAATGATTTTCTTGGAATTGTTTTTAGGCCACTTGAATTTGAGGGAGGAAATGAACAACAGTTGTTTTGGAATTTTTTAGGCCACTCGAATTTGACGGCCTAGGAAATAAAGATTTTTTTGGTAATTGCCACTTGAATTAGGTGGCCTGGGAAATGAAAAAGATGATTTTCTTGGAATTTCTAGGCCATTGAATTAGGGGGCCTAGGGAATGACTCCAAAAATTATTTTCTTAAGATTTTTTAAGCCACTTGAATTTGACGGCCTAGGAAGTGAAAAAAGGTTTTTTGGTAATTTCTAGAAGGCCACTTCAATTTGGTGACCTGGGAAATAATGATTTTCTTGGGATTTTTTAAGCCACTTGAATTTGACGGCCTAGGAAATGAAAAATAGTTTTTTGGTAATTTAGAGGTTGAATGTGGCCGTGGCCTGAGAAATGAAAAATGACTTTCTTGGAATTTGTTAGGCCACTTGAATTTGACCGGCCTAGGAAATGAAAAACTGTTTTGGAATTTTTTAGGCCACTTGAATTTGACGGCCTAGGAAACGAAAAATAGTTTTTAGGTAATTTCGAGGCCAATTGAATTCGGTGGCCTGGGAAATGAAAAAAGATTTTCTTGAAGAATTTTTTAGGCCACTTGAATTTGACGGCCTAGGAATGAAAAATCGTTTTTTGGTAATTTCGAGGCCATGGCTAATTTGGTGGCCTGGGAAATGAAAAATGATTTTCTTGGAATGTCATTTTTAGGCCACTTGAATTTGACGGCCTAGGATAGTTTGTAATTTCGAGCCCACTTGAATTGGTGGCCAAAATAATGAAAAATGATTTTCTTGGAATTTTGACCACTTGTGATAAATGTGACGGCCTTATTAGGAAGACGCATGAAAAATCGTTGGTAATTTCTAGATCGCGAATTTGACGGGCTAGGAAATGAAGTTTTTTGGTAATTTCTAGGCCACTTGAATTTGACCGCCTAGGAAATGAAAAATACCAAGGTTTTTTGGTAATTTCTAGGCCACTTGAATTTGGTGGCCTGGGAAACGAAAAATGTTTTTCTTGGAATTTTTTAGGCCATGAATTTGACGACCTAGGAAATGAAATTGTTTTGGAATTTTTTAGGGCACTTTTGGGTTCGCCTAGGAAATGAAGATTTTCTTGGAATTTGCGAGGCCAGCAGACTTCAATTTGTTGGTCTTGGGAATAATGATTTTCTTGGAGTTTTATAGGCCGCTTGATTTAAGCCCATGGCCTAAGAAGTTCAAAATAGTTGTTACGGAATTTTCTAGGACATTTGAACTTGGTGGCTAAGGAAATGAAAAACTTTTTTGGAATTTTCTAGGTTTCTGTAATATATGATTTATTCAGTTAAAAAATTAAAAAACATTCAATTTTTTTTAAATTTCGTGTTAAAAAAAATCAAATTTGCCCAAAACTTAAAAAATAAGCTAAAAAATTGTAAGACGATACAGAACGGCAAAAACTTGAAAATAATAAGCGTGATGAGCCCTGTCGGACGTAAGGGCCGCCGGCTGGTTCGACCTTCTTTTTCTCTTTTTGTTACTCCTCTCCCGTCCCGAGCAGGAGCAACACAACGAGAGCGCACAACAAGAAGAAAAAGCAGATAGATATACTTAGATATAAGTTGTCTTCTGTTCATATTCTTTCTTTTAGACATCTTTTCATTCGAAACAACACTCCATTCTCTTCCGTTGGACGGGGGGGGGGGGGCGACGCGGGAGACGAAACAATAAAGCAAAATTGGGAGGGGTTGGAGAATGTTTGGACAACAAAAAGATTGACTGATCAATCGATTCGCCAGCCTCGGCTATTTTCGGAAATCGGAGCTATGCAAATGCGCCCTACTGATCAAATGGACGGGTGTCATTTAAACTCCTTGGTTAAAAAGCAACGCAAAATGGCATAGTTCCAGTTTGCCGATTTGCCAGAAATTTTCAGGTACAGCAATTTTCCGATTTGCCGATTTGGCGGAAATTTCAATTTAGACAAATTGGCGGCTTGCCGAAATGCCAATCCAGGTCCGCCAATTTGCCAATGTTGATTTTTGGCAAGTTTCTGGTTAGGCGTTTTCATTTTCGAATTACCGTTTTGCCTAAACGCCAGAAATGCTAAGGTTCTCTAAAGCGCTGGTTTTTCCCGTAAAAATTTTTCATTTTCGGCAAATAATTTGCCGGCTTCCCAAAAAGCCGGAATTTTTCAGCCGGCAATTTGCTGAATTGCCGGGATTTTTTTTTCTACAAATAGCCGGTTTGCCGAAACGCAAGAAATGCTCAGAACCTTTGCCGATTTGCCGGATATTTTGATTTTCGGCAAATTGTCGGTAGTTGCCGATATGCCAGAAATGTCTTCAGGAACGGCAATTTGCGGAATAGCCGGAATTTTTTTTTTTTGGCAACGATTTGCCGAAATGCCAGAAATGTTGCGGTCCGGCAATTTGCCGAAATAAATGTTCAATTTCGGCCAATTTGCTGATTGCCGGAGTTAAACAATTTCGGCAAATTGCCGGCTGGTCAATGATGCCGGAAATTTTCAGGTCAATTTGATGATTTGCCGAAAAATTTATTTAAAAAAAAAATGTACCTATTTTTCTCCAGACAGGAAGTCTCTAAAATCTCATTTAATAAGAAGAAACAAAAGAGAAACAGAGAATGGCCTAACAAGTTTCGAGTTACAGAAACCTAGGCCACTTTGAAGGCACCGGCGTAGCCTAGAAACCCAGTTCCACAAAAATAAGAAAAAATTAAAACTCGGCAACATAATCTAGGCCCGGAGCATACAAACACTCCACGAATATTAAAGACTCTTTCTAGGTTACTGGATACCGTTAACGATGGAAAACTCGGCTCGGCCATCTGCGAATTTTGTTGCTTGAAAATGGGAAAAATAAAGTTTTTTTAACTTACGGTCAAACAAAAAAGATCAAAAAGTGAAAAGCGGGGATTTATCTTATCACACAATTTATGACATAAATCCGTAGGCCGAGTAGCGGAGAGATCTCGGAGCTCAATGTTAGGAATATCTATTAGGACGACACATCATACTCAGCCACCCCAACCCAGTCATCCCACCGTTGTCCACTGTCTTTTTTTTTCGCTTTTTTATTATCAACCAGCAATAACTTATCGCCTTTATCTTTGTGAGGCCCCGCGCAAGAACGAGACAGAGAGAGAGAGAGCGAGAGAGTGAGAGACAGAGACGCCGGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAAGGGATATAGGTGCAGCGGACAACTAGACGTCACTGGGCTCTTTCACACATGTGATATTGAACGATAAATTGCGCTCCTAGGCCACAAAAAAACAGTGTATTCGATCTCATGATATGGGAGAAGCTGGCACCGTGCCAAGTTTCAGAAAAAATATGGAATTTTTGCTTGAAGCATGGTGAATCAACGTGCTTACACAATTCTTCGGGATAAATATTCCCGCATTTTGTAGATCAAAACGCAATGAGTCATGCTGATACCTGAGGTTAATTAAAAGTACTGATCGAGATTTTGAGCGTCATATGGTGTATTTACCGGCAAACCTGATGCGCCTGATTTGACGCGCAAATCCTTCATTTTAATAAAGTTGGGCTTCAAATGTGATGCCTCAATTTCTATTTTTTGAAATGTTTTGATTTCGTGAAAACTAACGGCGAATTTCAGAAAATTTATAGAAAATGTTCATTTGTTGCGACCAAAAACTTAAAAAAGACCAAATCAGGAAATTCACATTTTTCGCCGAAAAAACCATTTTGCGCGTAAATTCTGATGTAATTTGCCGTAGGCTATTACGTGTGAAAACACTGCCGGTAATACGTTATATGCTTGAGCGCACCCAAACAAATCTCGTCCCAAATTATTCCGGTTGCACAAAATTCTGAGAATGCGTAAAGCGCAACATACCTGACGCGCAAAATATCTCGAAGTGGAAACTACAGTAATCCTTTTCAAATGATTACTGTAGCGCTTGTGTCGATTTACGGGATCTCGACTTTCGAAATGGATTTAAATATATTATTTATCAATAGAATATTTCAAAGATGAAGAAGTTAATTTCGTGAAGCCCGTAAATCGACACAAGTGCAATAGTAATTTTAAGAATTACTTAGTGTTTCGCTACGAGATAATTTGCGCGCTACTCAAATATGTTGTGCAGTACGGGCATTCAGAATTTTTCGTTCCCTTTCACAAAAATCTCATCGATAAACTTGCGCGTAAAATTTGGTGGTGCCTGTGAGTGGTTCACCTATACAAGTGGTGCCAGGGGCTGTCCCATTACGGGTTGATCTACAAAAAATGCGGGATATTTGCACAAACCATGCGATATCAGTTGAGAACTCTGCGTCTGTTCTCCCGGATATTTTGTAGATCAACGTAGATCAACACTCTGACACGCACGTGGGCCGAAGATGTAAGTGCCAGATTACACGGCGCAAAAACTGAAAAAAAAAAGAAGCGAAAACTGTCAACGAGCATTTGAGCGAGTTTTTTATCATCCACGAATCACAAGAAAAATCAATAGAAAATCGATAATCAAAAAGTGAGTATCATATTTTCGACCAACAGAATCATTCCAGGTTCATCAGTGAGCATTGTTTTCAAGTATACGATGAGCCAACGACGGACACGTCCCGTTCTCTGCCACAAGTTCGCCAATCTCTTGAATAGGCGAGTAGCCCATTTTCGAGTATTTATCGATTGCGGCAATCGGATCATTAACGTTCGAGAGCACGTCGCTGAGCATCCGACAGCCGATGATTGTTTTGAGCATTTCACCAATCCGTGACGATTTCCGAGCGACTTCCAATCACAATTCCCAAAAAATCATCGGGGTTTCATGCTTTTGATTGATCTACAAAAGAATGCAGGAATTTTTTGCCCAAAAGATGGTTATGGACATCGTCAGCACGTCTTACTTTTAACCATGTGAAATCAGTTGAGAACTCTGAGTCTGTTCTCGCGCATTTTTTGTAGATCTGCGTAGATCAAGCCGAAGTGAGACCTTCTGAGTCTTGACACGACAAACTCCCATTACATACGGATGCTGAGCCTTTGTTGGATGTGAGAGAGTTTCCAGGTTGTTCTCGAAACTTTGCTTAAAATTTCATTCATAAAAAATCATTTTTTAACGAAAAACTACTAAAAATCATCCGATAAACCTGGAAATCCATGAAAAACTCTGTGACAAATACAGTACTGTTTAAAGGCATAGTGTACCCAGTCTGTGTTCTGAGAATACGTATTACACAACATATTTGACGGGCAAAATATCTAAAACCGTCTACAGTAATTCTTCAAATGACTACTGTAGCATAGGCGCTAGTGTCGATATACGGGTTCGGCTAGGTTTAATTTCTTACGAAAGCTCGGAAATCGACACCACCGGTACAGTAGTAATTTTAACGGCTGAATTACTAGTTATATTTTGCGCGTCAAATTTGTTGTGCTGTACGCAGTCTCAGAACTTTGCGTTTTCGTGATTTTTTTTTTCAAATTTTAACTGCGGTAAAAAAATAAAACAACATAAATTTCATTTAAAACAAAAACGATTTTACCGCTCTCCGCTTTAAAGGCGCACACCCGTTTGTGGATAGTGGTTTAAACAAAAATATCGCGTCGAGACCAGATTTCTGCAGATTTCGCGCCAAGACCCTACCTTATCCCCCTGATACTGTAATTTGTGGCCTCCTGTCCCTCCTATGCACCACCACCACCGCCCCCATCAAAGCGGCGAGCTTCTTCTTCTCCTGTCTCGCCAAACTTCTCAAGTACTGAGGAGTGAATGGTGCCAGCGCGGCGATCGTTTGTATCGGTTTGCAGAATTTGTGCCACGATGTTGCTCGTAGATTTGCAGCGATAAATTGTGCAATTTCTTCTTTTTCGCAATTTCTGCCCTGCCGAATGAGACGATGAGGACTGTGCAGCGGCCACCGTTTTGAAATCCGGATTTTTGCTGGAAAGATAAAATTTAAATAATGAGGAGATTTTTTTCTCGCAGCGATTTCTCTGGACCCTGTTTATTCCCAATACGGTTTGATCTACAAAAAATGCGGGAATAAGAAAATGTTTGCCCGTTAAAATGCTGACGTCAGCAAAGTTTCTGTCTTAACGCTGCGAAATCAGTTGAGACTGCGTCTTTCTCCCGCATTTTTTGTAGATCTACGTAGATCAAGCAATGAGAACCACACTATGAGTGCAAACACTATCCACAATACATCATATTTGACGCGCAATCTTTAATTTATTTTTTGCGAGACCAAATAAATCTCAAACTTTCCACTGAAAAGGATTTTCATGATTCATTTTAAAAAAGTTGCGCCTCAAATGTGATGTGCCTGAATTTTCGCTTTTTTGAAATTTTTACTCCTATTTCGTTAAAAATGAAGGAATTTCTCGAACATTTATAGAATTTTAAAAATTTTCATTTTGGGTTAAAAAAATCGAGTTAAAAAACAACCATAAATTCAGGAAACTCAAAATTTTCTCCGAAAAACTTTCCCCATTTTACGCGTGAAATCTGGTGTATTTTACATCCGTGCCTAGGCTGTGTGAGAACACTGCCCGTCATACATTATATTTGACGCGCAAACTGCAAAAATCGTCGGAATTATTTCGGGAACAGAAAATTCTGAAAATGCGTAACGCGCAACTTATTTGAAGCGAAAATATCTCGTAGCGAAAACTACAGTAAACTTATGTAACTGACTACTGTAGCGCTTGTGTGTCGATTTAAGGGCTCAGTTTTCAAAAAAACGAGATCCCGTAAGTCGAAAGTGCTATGCAGTAGTTGCTATTTCAAGAATTACTCTAATTTTCGCGACGAGACATTTTGCGCGTCAAATATGTTGTGCAATGCGCATTTTCAGAATTTTGTGTTCCCGGAATAATTCCGACGATTTTTTGCAGTTGCGCGTCAAATATGATGTATGACCTGCAGTGTTTGCCCACATCGCCTAAGCACGGTAAAATCCGCCAGATTTTTCGCGCAAAATGGGATTTACGGCGAAAAATTCGAGATTTGCTGAGATGAGTAGGTCTTTTTTATTATTTCTTAATCCAAAAAAAAGTATTATGAAGATTTTTAAAGTTTCTATAGATTTTCTGAAATTCTCCGTCGTTGTTAATAGAAAAATTTCAAAAAATTGAAACTTCCGCCAACATTTGACGCGCAACTTTTTTGAAATGAAAAAGCCCGAATTTTCTGGGAAATTTGAGATTTATTTAGGTCTCACAGTGAAAAAAACATTAGAGTTTGCGCGTCAAATATCATGTATGACCGGCAGTTGCCCACATCGCCTAAGCCCGGTAAAATCCAGCAGATTTTTCGAGACTCGCAAAATGGTTTCGGCGAAAAATTCGACTGAGAATTTTGGTTTCGTTTTTACTATCTTTTAATCCAAAAAAAAATGAAAATTTTTAAATGTTCTATAAATTTCTGAAATTCACCCGTTTTTCAAATAAAAATTGGCGCATAAAAAACTTACACGATAAAATCCAAAACATCAGATTTTACGAACTGTTAGCAAAAAAATTGATTTTTTGGTTTTTTCGGGCTAAACATTAGAAAACCTCCAAGACTATACTCCAACAAAATTTTTTTTCAGTTTTTTTTTTGAAATTCTTTTTTTTTCAGTTTAAAATGTTTTCATCGCTTTGTTCGTGTTTTTGTTGATGATCTTGTGCGAAATTAATGATTTCCATATTCAACACTGTTGTGTGATTAATTTAGTACGGATAGATACACCGTAACTATTCAGCATGTTGAGTTTAGTTTTCGTCGTCCAATTTATCAAGGTTTTTTTTGATTTTCAGTCAAGTCTTTCGCGCTTACTTTTCTAAGCAGTAATGACCATCGCATGATTGCTAAGGGGTGCTTTTAGTGTTTGGTTTACTTCTGCTATTTCATGAGTCACTCCTTATCACTAATATAAATGCAGCATAATTCCCGAGTGAGCAAGCCGCGAGTATTAAATCACAGAAGCGCTGTTTTAAACTGATGATGATTGCAGTCTCCTTCATTGTTCTGACCGAAGGCTACCATTTTTTATTCATTCCCAGAGTCTCCTGACAAGTGGAAAGACAACTAAAAGCTATGTCCGTCTCGGACAAACCCGCTGCCCAATCAGGTGCCAAAAGCTTGGTACCGCTCCGCGCGCTGAAGAAGAGAAATGAGGAGTGGGGAACCAAGGTCAATATCGATACCAACATTCGCAAATTGAGTAAGTTTTTATTTTAAAATTACCAGTCGTTCGAGCTTATATATCAATTTTAGCGATCAAACCGACTCAGCGAATTTGTATACAAGTACGCTGTGCAAGTGACGTGTTCCGGAAACCTGATGGAACTGAGGCGACAATCTAAATCTCCAAATCAGGCAAAAAGGGAACGGAGCACGAGAACGACAAAACACGCTGCCAGAACGTTTACAATGAGGCGATCAAGCGTTACGATGAGCTGAAAACGACCGTCTTTCTACGATCGTCAAGCCTCTTTGTACACTTCTGACCAAATTGAAGAAAGGTGAATTCGATTTATTGCTTAAAGTTTAATATTTTAGCGTTTCAGAGCATCTCTTTCGTTGTGTACCGACAAGATTTGGTTCCAAGCGACAAAACTTCAAAGAGGCCAGTTTGTTCTCAAAAAGGTGGATACTATCAATCGTTGCAGTCAACATCGAATGACGTCATCAAGACAATCGTGCCCAGCCAAGACTGCCGACAAAACTTTGCTTGAGGCAATCAACATCATTGTCTCGGGTATGACCCCAGCGTTCCAAAAGAATGCCGCTTTCAGAGAAATCAAACGGCTATTACATCTCGCGGCAAAAATGTGAGCATATCACCGTTGGAGCATGCGTTCATTACCTCATCGACCCAACTGTAGTCGAGTAAACTGTAAGAAATAATCATATTAGTATTTAATTGTTTTTTCGCGTCGCGTACAAGGAATACACTGAAGGACATCTCTACTCAAGAGTCGGTGTTTCAAAGTCGGTGAAGACACAATTTGGCAGGAACGGCAAGAAAGTTCCATCACTCTTCAAGTGAAAGTTAGTTTTTCAGAAAATCTAGATTTTTTTCAAAATGTTATAAAATTGATTTTGAATGAAGACAACATTGTTCCCCGGTTTATGCCCCACTTGTGGAACTTTTGCAAACGTTCAGAAGTTTCACCACCTCTCAAAGCGAATGCTCCAGCCCTGGCGCAGAGAATTAAGCCTCTCTGTTGGACTGGTGTTGTCTTGAACTTTACGATGTGCACAAGGCGTCTCGGAGAGGATGGTGTCGTTATGAAGATCCGTCGATTCCACACGTCAGCTAAGGAGACATGTTTTGAAGTTGAGAAGTCAACTATTCACGAACGTCTTTGACTTCTTCAAAAAGAAGTATTGAATCACTTTGAAGTATCCCGATTTATACACCATTGAAGCGAAAGGGAAACAAGGCAAAATTCATTTCCCTGCGGAAGTTCTCCTTTTCTGTCCGAACCAGACAGGTCACGAATGATCAAACCCAGTGATCAACAATGAGCAGGCGGAGATGATTAAGGTAATTTGATATTTTAAAATCTGAATAATATCCCGAAATTTCCTTTTTCAGAACACCCACATATCAGAAAGACGACAACTGATACTATCGTGAGAAACGTCAGATTGGCTTCCAACAATATCTATGGCTTCTTCAAAGTTGAAGACCCTGTCAACCTTGAAGGAATGGTTCTTCCAAAACCTAGCGTTTGCCGGTAACCGACTCGCTGATTTGGAAAATCCGAAGTCTAGACCCCACCGACTTCAATCGTGCTGGATAATATTACGATGCCAAGGAATTGACGAATTGGGAACTGGTCTTTGTTCAAAACGACGAAAGAAGTCCAGTAAGTTTCAGCTTGTAATTTTTCATTATATTGACTCAATTTCAGTTAGGACTTGCTACGCAGCCTATCGCCGATGAAAAGGTGACTAAAGGTATGAAATAGCAACCCAACGATGAGTTTCATCATTAGAGGTGATTTGGAACGAATCGTCAAGAAAGCGAAGGCTGCTACGCAACTTCTCTTGTTCGTTGACAAATCTTGTACCATTTCAACTATCATAAAACTGCAAATCAAGGCGTTGGAGCGTATGACCTGCTCACTCAGCAGATTCGCGGTGAAACCGCCAAGAAAGTCTGCCGTAAACCAGACACAAACTCGTCTTAACATTATCAATAAGACAAAGCATGAAACTCGGAGGACTGAACTATGCTAACTACTTGTGAGTGAGGCGTTCAACAAGCCAAATAGAATATTGTCGTTGGATTTGTTACTTCTCAACGGGTTGGTGGAAATCCAGATGTGAGTCATGACAGCTGCACAATCATATTTCATTTTCTCCAGTATCCAATATCAGTTGGATTTGCTGCAAACATGCTCCGGCAAGCATCATCAAAAGTTTGCCCTGGTGGATACGGGTATGTTCATCGCGATAGGGATGTTTTCGCGATCCATCAGGCATAGTCCAAGGATCTTGACTATCTTCGTGCAAAACATGCACTGAGCAGCGCGGAAGACCAGATGGTATCCTTTTGTATTTCAATGGAGTTTCCGAAGGGCAATCACAATGATCAACGAGGAATTCAGTGCCCGAGTGAAGGAGGCGTGCATGGCATTCCAAAAGAGAGGGAACCGCCATTCAGACCACACACCATCATCGCCTAATCAAAGGCTCACAACGAGCGTCTGTGACAACAAATCCGAAAAGGGACGTATTGTTAATTTGGAGCCATGGGGGTACTGTCGTGGACCATACCATTGTGTAGCAATATCTACATTGAGTGGTATCATGCCTCAGCTGTAGCGCGCCAACAGCAGAGGTTACCAAGTTCACTCTCATCTTCACCACTAAAGCCGGCCCACAAGCTGAGCCATTGTGGCATCTCGGTACAAGCAATTGACCAATGATCTTTGCATCATCAGATTGTCTTCCATCCGGTCGGACTTCCCGTCCCACTGTACATTGCTGATCGTTACAGTCAACGTGGAGCAATGGTTCTTGCCGCCAATCAAGGGTAAGTTAAAATATATACGACATCTATTTATTATTTTCAGTCCACTACAATGAAGGACAAATCGATCTCGCGGCTACCAACAGTGCATATGGCTACGGAGAGAAGAAGCTCTTCACCCCCTACTCGTTTCAATGGAAAATTATCTGTACTTTCCTCTGTTTCTTTTACTCTTAGTGGCTGTATAATGTTTTATTTCGTCAACCCAGACTACTTTCGCTATGATTGTATATTTTTCAGCATTTGGTCATTGTCATTTGTAATTATTGTCGGAATGAGATAAAATGATTTATGAAGAATCAAATGCATCGCTTCTTGGTCAATTCCTGTTGATAAGAATCTCATTCAGATATTTTCAAAAGTTGTGGTTTATTGATATTAAAAAATATCCACGTTGCACGCTGCTGGGTCGCTGTGACTGGAGAAGTTGATGTTTTATGAATTCTTCCGTAAATTCAGCTGTTTGTACCTGTTTTGTAATGTTATCACTTTCTTTCGAACAAAATGTCGATTTTTCTGGCAGAAAATTCCACTTTTTAAAATTATTTACAACATTACAGATGGATACCTTCTGTTGTGTCTCGATTGGAGAATGTTACGAATCGAATGGAGAATGTATTGCTGAAATACGACTCGAACAAAGGAATTAAATAATTGTTCTCGAAATTATAAATTTCAAAATAATCGCTCTTTAGAAACTCCGGTCGGCGCGACGCCTCAAATCATTAATCTTAATGATGATGTGATCTGTAAGAATCTCGTCTCGTTTTATATTTATCTGCCAAAATAGGAGGAGATTTGAATCGCCTTGGATGCATGATAAGGACATATATAATATTTAATTCAAATTTTATCGAAAATTATTCAGTCTAAGAATCTATTTTTCAAACGCTTTTTTCGATGTTGTTTGTGGATTGCAGTGTGGGCGCAAAAACGCGAACACTACGACGAGTTCGCGACTCTTGTGAACGATTTGACGGCGGAAATTGTTGCATTTTCCGATTTCAAGGAGAACCGAAAATCCGAATTCTACTATAATTATATTTGTGGACTTGAAGCTGCTAGGTGGGACTGGTGGAAATTTGCCAATCCTGAGTCCGAATATCTATGTGAAAAACTCTTCATTATTTTATATATTTCAGCTCGAAATCGCATGTTCATACTTTTTTCAAGCACACGCCATATTCTCGTCGCGCCGTGTTGTGTCAATTTACGAATTTACCAATTGTTTTCCAATTTAGTTTTTAAACGAGATTTTTGTGGGCTTTATTTTTGTGAGTTTTGTTTGGGTCAAAAAAAATCTTACAAAGAATCATAATATCCTTTCAGGAAACTCAAATTCGCCGAACAACTACCCTATTTTGCGCGTGAAATATGGTGTATTTTACCTAGACTATCTGTGAGAATAATGCCGGTCATTCATCATAACTTTGATGCGCAAACTGCAAAAAACGTCGGAATTATTTCGGGAACACTTCTGAGCGGCGCAACATATTTGACGCGAAAAATACCTCGTAGTGAGAACTACAGTAATTGTTGCGTGTAAATGACTACTGTCGAGAATCGCTGTGTCGATTTAAGGGCTCATCGAAAAATAGAGATCCGGTTAAACGACACAACTGCTATAGTATTTGAAGAATACTTAGTTTTCGCTACGAGATATTTCGAGCGTCAAATCTGTTGTCAATGCGCATTAGAATTTTGTGTAAAAAGTTTTGTGTTTAGTGATTTTTGGAGTTTGCATAGCGCGTCAAATATATGACCGGCAGTGTATGCCCATCGCCTAAGCACGCTCGGTAAAATACACCTTTTCGCGCAAAATGGGATTTTCGGCGAAAAATTCGAATTTCCTGAGAATTTTGGTCGGTTTTACTATTTGTTTACAATGCAAAAAATGAAAATTTTTAAATTTTCTGAATTATCGGCACCGTCGTTTTTCACTATATAAAAAAATTTCAAAAAATTGAAAATTCCGCCACATCACACTTTGACGCTCAACTTTTTTTACATGAACAAGATCCGGATTTGTCTGCGGGGAAATTTGAGATTTATTGTGTAGGTCTCGCAGCGAAAAAAAAATTAGAGGTTCCGGCGTCAAATATGATGTATGACCGGCATGCACATAGCCTAGACACGATAAAATACATCAGATTTTACGCGCAAACTGGCAAAAAAATATTTTTTGGCTTTTTCTAAACATTTGAAAAAATGGATAGATATTCCAACAATTTTTTTCAGTTGTGTTTTTTTTGTGAAAAATTCCTTCTGAAGTTCAAATAAATATATACTTTTTTAAAGTTCGAAAAATTCACATTAGCGCGTTAAAAACGACGTAGTCAGGCATCACATACATTTGACGCGGAATCTTTTTATACAAGAAGGATTTGCGCGTCAATCTGGCGAATTAGGTTGTCGGCGGAATACACCGGGCAAATTTCACGCGTAAAACTTCAAACCCTGTTTCAATAATAATCGGAAAGAGTATTCGAGGAAATTACGTCTTTCAACGTCTCCGCTGGAACCACGACAGCAAGTTTTGTGTTGACGGAAAAAAAACAACATTAAATTTTTCGACACAAAAAATTAAATTTTTCAACGAAAAATAATAATTCTAAATTTTACAACGCAAAAAAAAATTAAATTTTTCAAATAAAAATTAAATTCGATTGATTCAACAAAAAAAAATTAAATTTTTCACCAACAAAAAATGTAATTTTTCAACAAAAATAAATTTTTTAATGAAAAAAAATTAAATTTTTCAACGAAAAAAATTAAATTTTTCAACAAAAAAAAATTATTTAAATTTTTCAACAAAAAAAAAAGAAATTAAATTTTTCAACAAAAAAAATTTAAATTTTCAAAAAAAAAAATTACTGGAATTTTCCAACAAAAAAAAATTCAAATTTTTCAACAAAAATTAAATTTTTCAACAATAAAAAATTAATTTTTCAACAAAAAAAATTAAATTTTTCAACAAAAAAAAATTCAAATTTTCAACGAAAAAAAAATAAATTTTTCATCAAAAAAAAATTCAAATTCCCGCGGAAAGTGCAAAAAATTTACAGAATATTTTCAAACCCCTCGCTTTTTCACTTGTCTCCCGCTATCATCTTCACGCAATTCAGCCGACACCTTTTCGTCGCCATTCGATGCGGGTTCCCAGCGATGTATCGATTTTCAGTTGATTAGATCGAGTTTTCGCTCCACGTACAGTACACTGAGTTCTGCTTCGAGGCCATCTGAAATTTTTTATTTAATTTTTTTAACGATTTTTTTTTCAGAAAATCAATAAATCTATTCAGCTTTTTTATAACTTTTACACAATTTTCCGTTTGAAAATGTCAAAAAAACCTCGTGTGTTTATGGCCACATTTTATTCAAAAAATTTTGAAAAAAGATTCCCTGCATTTTCCCTGTGGGACTCAAGAGAAGTGCGTGTGCCTTTAAGATTTCTATTGTTTTAAAAACTTAAAACAAAGATTTAAAAAATTCTGCTTTCTAAAAATACATAATTAGTTATTTTTTTGTGTATTTGTTTGGAAAAAATCAAATTTATCGATTTCTGTGAATTTTTTTGTGAAAAAAATCAGTATTTAGCGATTATTGTGCAATTTTTTCGGAAAAATCAATTATTATCGATTTGTATGAAAAAAATCAATACTTATCGATTCTTTGTGATTTTTTCGGAAAAAAATCAATAATAATCGAATTTTGTTAATTTTTTAATCAAAATTCGGCTTTTTCCGGTAAAAACATCTAAATTTCGCAAAATTAATCTGATTATATATTCTGCGAAAAATTTAAATTTCTCATACTTCGAAAAATCGAATATTGTAAAAATCAATAATTTCGATTTTTGGTTAATTTTTAAAAAATCAAGAGGTAATTAACGACTTTTTGATTTTTTTTTTGAAAAAAATCAATAATTATGGCGTCGTTTTTTTTTAATTGATTGGAAAAAATCAATAATTATCGAATCTCAAAAAACTTTTTGTAAAAATCAATAATAATCGTTTTTGTGTGATTTTTTTCGGAAAAAATTAAACATTATCGTTTTTTGAATTCTTTGAAAAAATTGATAATTATTGATTTTGAATTTTTTTTTGGAAAAAATGCAATAATCATCGATTTTTTTGTGAATTTGAAAAAAATCAATAATTATTGCCACGATTTTTCCGATTTTTTCCAAGAAACAAAATAAAACAATAAATTTTCCTTACGCCACGTGTCAATTACACCCCACGTGGCAAATCGTGTAGAGCGCGCATTTCGAATAGGGTGCCGCCGAAGAAGATTTCGCGTTCGATTTTTCGAGTTTCCTTGTCTTTCTGAAATTTTTTTTTTCTAAATTTTCTGAAAAATGTTCTGCTGTAAAACCTCTTTTTCCTCTCTTCTCCGCGCCATTTCGCATTGCTCTTTTTTTTATCCTTTTCCAGCGTTTTTATCTCTTTTTCAACTTCCCGCTCGTTGCGCATTTTGCGCGGTCCTGAAGAAGGTTTAAATTTTTAACAGGGGAAATTTGCTAGGAGAGTAAATATATTCGCTGTGAGACCCGTGGACATGAAAATTTTTATTTTCCGCTTAAAATAAAGACAACTGAATTTCGCTTATATTGTGATGTTGTAAGCTGAAAAAGCTGAATTTTGATAAATTGAAAAAAATTATCTTTAAAGGCGCATTTATTGATTTTTCCAAAAACAATTTACAAAAAAATTGATCATTCTTGATTTTTTCCAAAAAATTAACATAAATCGATAATTTTTTTTCCAAAAAATTCAGAAAAAGATTATGATTTTCAAAGTAAATACTGAACAATCGATAATTAATGATTTTTCAAAAAAAAAAAATCACAAAAGTCGATCATTACCGATTTTTTCCAACAAAATTTTCAAAAAAAACCACAATTATTGATTTTTTCCGAAAAAATTACAAAAAAATCGACAAGTACTGATTTTTTCTGAAAAAATTACTAAAAATTGATAATTATTGATATTTTACAAATAGTTAATTATTGATTTTTACAAAAAATTCACAAAAAAATCGATAATATTTTTTTCAAAAATAAAATTACAAAAAATCTCGGGGATCATTATTGATTTTTACCAAAAAAAATCACAAAAATCGATAAATCTATTATTGATTTTTTCCAAAAAAATTACGACGAAAATCGATAATTATTGATTTTCCCAGAAAAAATTCACTGAAAAATCAATTATTATTGATTTTTTCCGAAAATAAAAAAATTGATAATTTTTCAATTTAAAAAAAAATCACAAAAAATCGATAATTATTGATATCTAACAAGAAAATTACAGAAAATGGATAAGTATTTTTTTACGAAAAATTCAACAAAAAATCGATTTTTGATTTTTTTTCAAAAGAAAAATCACAAAAATCGATAATTATTGATTTTTTCAAAAAAAAATCACAAAAATCGATAATTATTGATTTTTAGGCGGAAAAGCCGAATTCAATTTTTCAAAAAAACAATCGATAGTTTTAAAGGCGCATGCGCCTGGATCTCACAGCGAAAAGTGTATCTTGCAAATTTTTTGGATAATTTCGCTGAAAAACGTATTTTTTAGACAGTTATCTCTTACAGGGAAAATTGTCTAAATCAAAAAAAAATTGTTTGTTAAGCAACATTTTTTCAGTTTTCATAAATTTCAGTTTTTTTTTCGCGAGAAAAAAAGCCAGCGAATTCTCGATTGAAAAATCAGAAAAAATATTTTGGTATCAAAATATTTTTGGTATTACGATATTTTGGGTCCCACCTCGAAAAGAGGATTTTTCAAATTTTTAAGATTTTCTTTGCAACTTTTAACAATTTTTTTTTCGGATATAAAAATCGATTTTCGCTGCGAGACCCAAATAAAATAGATTTTCTCGATTTGCGATGAACTTTTGAGTTTTGGTGAAATTAGATTCCAAAAAAATCGCAATAATAAATGTATCAAAAAATCAATACTTTCTGCGTCTCCTTCTCATCGTCAGTTAGTTTCCGCTTTTCGGGTCTCCCACGCCACGACATTTATGTCAGTATTCTCTTGTGAGCTGGAGCACAACGAGAATGAGCTAGTCGTCTGATTCTGACGGATCATTTCGTCAAGATTAGCCTTCCCTCCATATCCTGCCGTGGTTTTGCCGCAGCTGGAATTGCATCCTTATTCACTGCGTCGACGATGGAAAAGCTCGCTGGAGTACCTGGAATTTATCGATTTTTTATTGATTTTTTATCGGTTTTTCTCGATTTTTTTGATAACTGGGGGAAAACTCGGAAAAATCGATATAAATTTCGATAGGAAAATTCAAAAAACTTCGGGTCTCACAACGAAAATTGATTTTTTGGATTTTCAAATTTTTAAACTTTTGTTGTAACAACAGTGGAAATTTTTCGAAAAAAATTCAGTAATCGATTTTTTGGAAAAAAGGCAATAATTTTCGATTTGTTGAAAAAAAAAATCAATAATTATCGATTTTTTGTGATTGAAAAAAATCAATAATCTTCGTTTTGTGATTTTTTTTCGAAAAAATCAAACAATTATCGATTTTGGATTTTTTGAAAAAAATCAAGAATTATTTTTTTGTGAATTTTATGTAAAAAATCAATAGTTTGCTTCGTTTTTTTTTGGAAAAATCAGTAATTATCGATTTTTTGTGGATTTTGTGAAAAAAATCAATAATTATCGATTTTTTTTTGTATTTTTTGAAATGACAAAAATCAATAATTCTCGAGTTTTTGTGATTTTTTTTCGGAAAAATCAAAAATTATCGATTTCTTGTGTATTTTTTTTTGGAAAAATAAATAATTATACGAATTTTGTGATTTTTTGTAAAATATCAATAATTATTATCGATTTTTTGTGATTTTTTTCGGAAAAATCTTATCAATTTTTGTGATTTTCTTTGAAAAATCTATAAATATCGATTGTGGTGATTTTTTTTGGAGAAATCTATAATTATCGATTTTAGTGAACGAATTTTTTGTAAAATATCAATAGCCAATTATCGATTTTTTTGTAATTTTTTCGGAGGTAATCAATAATTTTCGATTTTTAATGATTTTTTTGGCCTTGGATTTTAAAAATTTTAAACTTTTAGAATAAATTTTTCCATAGTTTTTTGTTGAAAAAATCGTTTTCTGAAATTTTGAGATTCAATTAATTTTTTCTTTAAAAAAATCGTTGAAAAATTAATTTTTTGGAAAAAGAATCAGACGAAGATAGATTTCGCTGTGAGACCCAATTGGGCTCCGCAACTAGTGCCTGCGCCTTTAAATAGTGGTCGTGATTTTTTTTTTTGTTAAATTTTCCCGCGAAATTAAATCAGATTATTTCTGCGAAAAAGTGAAATTTCTCAAAGAAACTTTTGAAAAATCAATTTTTAAGACAACCCCTAATTTCTCCGATTTTCCTGCTAAATAAAAGCATCTAAAAAATTGGAAAATCCACAGAATTATCGCTGTGGGGCACAAAGTTCGGCATGCGCCTATAAGATTATCGATTTTTTTCAAATTTTTCAATCGAAATCAGGTTTTATTTTTCAGTAAAAATCATAATTTTACGAAATTAATCGGATTTTTTGTGCAAAAAATTCAAATCTTTTTTTACGTTTTTTCGCCAAAAAAACCATCTAAAAAATTCGAAATTAAAAGTCCCGAGCAGGTTATCTTCGCTGTGAGACCCAAGTCCGTGCTTTAAAAATATCGATTTTTTGTTAAATTTTGCAATCGATATTTGGCTTTTTTTCCGGTAATGAAAAAATCATAATTTTGCGAAATTAGTCTGATTTTGTGCGAAAATGCGCAATTTCTCATAAAACTTTTGAAAAATTGATTTTTTTTTTCTGGAAAAACCTATTTTTGTCGTTTTTTCGCTAAAAAACATCTAAAAATTCGAAAAATCTCCCAAGATAGTTTCGCTGTGAGACCCAAGGCTCCTGAAAGTCCCTGGGCCTTTAAAACTATCTTTTTAAATTTTTAATCGAAATTCGGCTTTTTCCGGTAAAAACATCACAAGTTCGCAAAATTAATCTAAGATTTTTTCTTCGAAAAATTCAGATTTATCATAAACCTTCGAAAAATAATCGATTATTCCGCTAAAAAATCATCTAAAAATCGAAAAATCCAGACAACGTTCGCTGCGAGACCCAACATGCGCCTTTAAAAATTTCGATTTCCTGTGAAAATTCTCACAATTTCTCCAAATTTCCCGCCGTCACATTCGTCGTTTCCAAATCATAATCCTTCATCATTGAACCATCCGAGAGGACTACAATCGTCCATCTGAAGTGGGAAAAGATCGATTTTTTGTAGAAAATCATATATTTAAATTGATTTTTTTTACAATAAAAAAAATTTTGGTACAGGATTTTTTTGGACAGTTCTGGTAAATCGTGAATCGTGTAATTTGGGCTAAATTCATTTTTTTCAAAAGGTCAGGGGGGGGGGGGCACTGAAGAAAAAATTTACAAAGCGTGGAGCGAAAAGGAGTAGATATACAGTCGCGAAGGAACGATCGCTCCGCCAAATTTGCACGCGGCAAAGGGGCGTGGTTTATTGGGGGCGGGATTCCGGCGCAACCCTGCGGCACGCTTTTTTCTCTCTTTTTTCGCTCGTTGGGTAATTTTCAGTTATTTTTATTCGTTTTCTGTTCGAAATTTCATTTCGCTCGATTTTGTTTTTTCGGATATAAAAAAGTGTCCAACCATTTTTTAAATGAAAAATAAACAAGTTTTCCTAACAGATTTTACCCGAAAAATGCTTTGTTGGTCTCTCTTTGTGAAATTACGTTTGTTAAGAGAGAAAATGGGGGAAAAAAAGTAAAATGTGAATTCAGAGGAAGCGTTTTTTTAACGTTTTGCTTCGTATATGGCATACAGAAGAGACAAACGAAGCCTTTTTTCTAGAAACTGATAAAACTTGGTTATTTTTTAAAAATAGACACTTTGTTATCCAAAAACGATTCACAAAGCGAAATCGTCAAATTTCGAACAGGAAAGAATAAAAACTGAAAATTGCCGCATGAAAAAAGCTAGAAAAAAGCGTGCGCAGGGTTGCGCCGGAATCCCGCCCGCAATAAACCACGCGCCTCCACGTTGCCGCATGCAAAATTGGCGGAGCGATCGTTCTGTCGCGACAGTATGTCACATGTAAGGTAACAAGGTTTGGTTTTCAGTTGAGAAAAGGGGGATTTTTTCTCCCGATTTTTCGCAGAGTCCACGCTCTCCTCATAGCCGAATACTAGAGCGCGCTTGCAGCGACTCTCGTTTCTGCAGCCGCGGTATTTTGATTTGCCACTAGAAAGCAGATATTTCATTTATCGAATTTTTAGGTTTAAAATTTTTTTTTTCTGTATTTTTCGAACACCTTTTGTCAAACAGTAAAAATCGAAATTAAAATAACTAAAATGAACTTTTATTGTCCACTGATTCTTGGTGAAATGGTTTGAATTTGAAGAAATTCTACCAACGGGCTCTCTCGTATTGTCTGGATATTGTTCTATTGAGATAAAATTTGGTTGTAATACATTGTTGAATTAAGGGTGAAAAAATGGTTTAAAACGATTTTTAATAGAAAAAAATTCAGAAAATACGAAAAATCTGATCATTCTAAATTCGAACCATTTCGCAACCAGTGGACGAAAAAAGTTGATTTATTTTAATTTCGATTTATACTGTTTAACAAAAGGTTTGTTCGAAAAAAACAGAAAAAAAAATTTAACAGCCAAAAATTCGCTAAAGCTAAAAAAGCTGCTCATTACATTGGAAAGGCAAAATACCGCGACGGATGCAGCAACAACGAGCGAGAAGCTGCAAGCGCGCTATTTCTATTAATTATTCAGGCTTTAAGGAGAGCGTGGTGCAGAGCCCCAATTTTAAACAAAAAATTGCGGGGTGAAAAAGTTAATATTTAAAAAAACGAGGATTAAATAAAAATTAAATAAGGTCAGCAATGTTCATTGGCATCTCATTTGTGTCGAGAAGTACTGCTCAATGTCGAATTCGTACGTCGTCCGTTTGTTTGACGAAATTGATGGCGACGCCCTTGCGGCCGAAACGTGCCCGACAGGCCGATACGCAGTATGGATGTAGAGCTCGCGGACTGTTGTTCGGCAAATCGTAGTATCTCCTGGCAAAGTTTTAAAAGCTGATTTTTGCGATTTTCGCCATTTTTTGACAAAAATTGGCGAAATTCGGAATTTTTAAACAGATTTTGACGTAAAGTAGAAAAGGTTCCAATGCCAAATTGTACGGTTAATAGCCTGAAATACTTTAAATTTCCTTTTTTGCACAATTTTAACAATGAAACCCTGTACTTTTCGCTACTTTTAGAAAAAAGCTTCCAAAACGATTAAAATTGCGGCAAATTTTATCTGAAGATTTTCGCAAAGTTTTCACCTACAAATTGAAGAAATCGGTATTTTTAAACAAATTTTGGCATAAATAGGTTAAAATACCAAAATTTTACGGTTTTTAGCAATTTTTGAGTGAATTTTCAAAATGTTCCAGTATTTTTGCAACTATTTGGTTCTTTTCATCTATGTTCTTTGAAAATTCTTTTTTTAAGGTGAATTATGTTAGAAAGGGGTCGATTTTGCAGAATTTTGACAGATTTCGCATGAAAATTTGAATTTTAGGCAGGCGAAAATCATCAAAAATATAAGATTTTTTGCGACTTTTAGTTGAAAAAATTGTACAAAACGAGTAAAATTGACAAATTTTTAACGATTTTCGCCAGTTTTTCACCTAAAATTTAATTTTTTTTGTCTAGTGAAAGTTAAATTCAGTGTTAAAATGTATCTATTTTCGCTCAACCTGAAATTTGAAAATTTTCAATTTTTCACTAAAATCCACTTTGAGAAACCAGTGAAAAAATTTTTTCAATTTGATGAAAAAATTTGCAGTGAATTTTATTTTCTCTGCTAATTTTTCGTTGAAAAATGCACTTTTTCAAGTAAGAATTAGCGGGATTTTTGGATTTTCATCTTAGGTCAATTTTCAATAATGTTGCTCGCTGAAATTGATTTTTTCTCAATTCATATTTTGTATGAAAAATTCCACCTTTTTGCAGAATTTTGACTAAGAAATTGCCACTCGCCAAAAAGTCTGAATTTTCTATTTTTCTGTGCTGACAATCATCAAATACGATTTTCAACAGAAATGAAATTTTCGTTATCTTTCGCGGAAAATCATTGATTACCTGATTTTTTCGCTACTTTTAATTGAAAATAGTTTACAAAACGAGTGAAATTGGCAAATTTTATCGATTATCGCAAGTTTATAACCTAAAATTTAGCTTTTTTCTAGTAAAGTAGGGAAATACAGTGAGATTTTTTAATTTTTCACTGAAATACATGAGAAATTAGTGAAAAAAACATATATTTGGCCAACTTTTCATATTTGATATGAAAAATGCCGTTCTGAACAAAAAAAGTGTCTGGAACCATTCAACTTATTATCAATTTTCAGCTGAAAAATTCATTTTTTTTTCTCAAGAATTCGCATTAAAACTGCGGAATTTCTTGTATTTTCAGAAAATGATGATGACACGCTATTCTTCGCGGAAAATCATTGAAAACCTGATTTTTTCGCTACTCATAGTTTAAATCAGCATGGTATTACATATGAAATTGGCAAATTTTATCAATAGATTTAAGTTTTTAACCTAAAATTTGGTTTTTTTTTCAAAGCGAATAGGGAAATCTTCAGTGTCAAAATTTACTGATTGGGTAAATGGAAATTGTGAATTTCCATTGTAAAAATTTCTGCTGGATTCATTTTTCCCTAATTTTTCATATAATTAGGCTAAAAAATGCAATTTTTCACAGGTTCGCATTAAAACACCGTTTTTTGTAGTTCTTATCAACGAAAAATGCTATTTTTTGCGGAAAATCACTGCAACTTTTTCTGCAGTCTCTCGCGGGCCAAGGAAAAGTGGTTTCTAGGCCTTGGCCGAGGGGCCGACAAGTTTCAGCGGCCATTCATCTTGCTTTGTTGTTTTCGCCTGTTTTCTTTGTTTTTCACAGCTTTCTCCCGTTTTTTCTCATTAAAACTGATAAATAAATGCACTATTTTTTGCAGATGCTAAAACAAGTTCCAAGTAAAAAAAATTATGTATGTCAGTCGGCAAGCAGCGGTGAAAATGGGCAATGTAAAATGATGGATTACGGGAGATACAAAACCTGAAATTTTTCTTAAACATGATACATATGCTGCTTAGATGCTGATACTGATTTTCATAACGAGACCGCTGAAAGTTTTGAGGTTTCCACAATTCAACTTTTTTGGTGATTATAAATCGAGATTTTCGCACAAAAGGTTGAATTGGTCTGAAAACCTCAAATCTTTTTCAGCGGTCTTGATATGAAAACCAGGTAATTTCAGCCTGGAAGCATCATATGTATCATGTTTCAGAAATTAGGTTGTGTATTCCGGTAATCCACCAATCATATTGCATTGACCACTTTCACCGCTGCTTGCCGCCTGAATACATAATTTTTTTACTTGGATTGTTTTAGCATCAAAAAATAGTTAATCAGTTTTACAGTAAGAAAAAACGGCAAAAAGCTGTGAAAAACCAAAGACTAAACACGGAAAACAACGCAAAAATGGCCACTGAAACTTGTCCCATCGGCCATCTCATGGCAACCACTAGCTTTCTCCCTTGTGAGGATAAAAATTTGCAGTAGGAAAATGCTATTTTTCGCGGAACATCGAAAATGCCTACCAAGGACACTTGCGGAACATCAAGTCATCTCGCTCAAACATCAGTAGAAATGAGCAGCTGACACGAGTGGTTCCTGCTCTAAACTCCTTCATAACCTCATCACGATCCTTCTGCTCCATATCTCCATGCTTCGATGAGACTTGGTAAAGTCTGCTGGGCTCCGTCATCTTATCAGTCAACCAGTCCACCTTTCTACGTGTATTACATAACAACACGGACCGCCTGAGTGATGGTTAAGGTGTCGTAGAGATCGATAAGCGTGTCGAACTTCCACTCCGATCAACTGCTACGAAGACAACTGCTTGATGCCTTCCAGTGTCAACTCGTCACGCTTCACAAGGATCCGAATCGGATCCGTCATGAATTCTCATCATCTCCAGAATCTCATGAGGAAGCGTCGCGGAAAGCAGCACCACCAGGGCTCCAGGCGGTAGATAGCGATAGTTATCGGAAATGCTCCTTGAACCCCTTGTTCATCGTCGGCTTCATCGAGCACGAGATGCTTGATGGCGCGGGTGCGCAGGTTTCGACGGCGAATCATATCGAAGACGCGTCCCGGAGTAGCCCACGTGCTGGTCGTTCCAATCGAGCTTTCGGATGTCCTCGCCAAGACATTGGTGCCTCCGAAACAGGCCTGGCACTGGACATTCGTCGCCGAGCGCCAGCACTTTTTGGAGTTTCGAGAACTGCCAGCTCCGTGTCGGCGAAACAGAGCTTGGGTCTCGCGGACGGGTGTCTAGCGATTGGAGAACGGAGATCGAGAATGTCGCTTTTTCCTGTTCCGGATTGAGCTTGAGCGATGACGTCACGAGCCTTGAGAATTGCGGGGATTGCGCGTTCTGGATGGCAGATGGATTTTCGAAGCCGTACGCGTAGATTCCACGAAGCAAGTCTTCTGCTGGAAATCGAAAAAAATTTTGAAGTTAGTTCTATATTTAAAGCCTGTGGTGTAGTCGAATTATTTATTTCTTTATTAGACTCAAAATTGCCTGAAAAAAAAGTGTACAAAACGAGTAAAATTGGCGACTTTTATCAATTTTCGCCATTTTCTAAAAAAATCGACGAAATTCGGATTTTCAAACAAATTTTGACGTATAGTAGGTTAAAATTCGATTCCAAAAACGGTTTTTAACAATTTGGTCGTTCTTAAAGTGTAGTCGAGCAATTATTTTTTTCTTTATTAGACCCAAAATTGTCTGAACACACCGAATTTCAGAATGTAACTTCTTGAAAACTCAAAACTTTTCAAAAAAAAGTTAAGATTAGCCTCTTGAAAAAAGCCCTAAAATTTAGTGAAAATTTGAAATTTGACCAACTTGTCTCCTGTCAAGCGGCTGGAAACAGTTTTCTTTGAAATTGTCGTATAATTTTGGGTATACAGCTCGATTACCTTGCGTCTTCAGCTTAATTTAGGTATTTAAAAGTCGATGGACGAAGAGATTTGTCAAATTTTTTTCACCAACTATCTTCGTCCATCGACTTTTAATACCTTAATAAAGCTCGGAAAACGCAAGGATACGTATACCCAAAATTAGACGACAAATTCAAAACAAATTGTACATTTCCAGCCGCTTGTCAGACAATTTGGTCAAATTTCAAATTTTCACTAATTATAGGCTATTAGCCGCCATAACTTTTATTTGAAAATTTTTCAAGAAGTTACTCATTATGAAATTGAGCGGTGTTTTCAGACAATTTTGAGTCTAAAAACGCAATAAAAAAAATTCAACTACCAACGGTGGAGCGAAAATTTATTAAAAACCGTATAAATTCTGGAATCCTACTTTACGAAAATTTGTTTAAAATTCCGAATTTCAATATTTTAGATGAAAAAATGGCCAAAATCGATAAAATTTGCCAATTTTATTCGTTTTGTACACTTTTTTCAACTAAACTCAAGTAGCGAAAAATCATGTTACCATTTGATGATTTTCAGCTGAAAATTCCAATTTCAGGCAAAATTCTTGTCGGTACAAAAAGGGTAATTTTTCAGAGAAAATATGGAAAGAACTGATAAAAAAAACTGTTTTCAGCAAGAAAAATGTTTGAACAAATTTACCTGTTAAATCTGCTTAAAAACCGTAAAATTTTGGAACGTTTATAACCTACTTTACATCAAAATTTGTTTAAAATTCCGAATTCCGTCGATTTTTAGATGGAAAAATGGCGGAAATCGATAAAAGTCGATCGCCAATTTTACTCGCGTGGTTTTGTACACTTTTTTCAAAGTAGCAAAAAAATAATGTTTTGACGCGAAAATTTGTTTTCAGCGACAAAATTCGCTGCAGAAAAAGTTCATTAATATGAAGCTTTCTGCTTAGTTATAGAGAAATTTGTTAAAATCGATAATTCAATACCTCAAGCACCACTTTGTCAAAAGTTGGGATAATTGAGACCTCGTCAGACGACCTTCGAACTCCACAGCTCGCCAAATCGTCGTTTTTCTTCTTATTTTCCGCCATTTTTGAAGGAAGAAGTCTGTAAAATCGATAAAAGGAATATTTTCGAGCATTTTCCGTGCAGAGTAATTCAGCATTTTTTGGAAATTATCAAAATCAATGTATTACAAAAAAATCAAGAAAAACGAGGAAAAACGATAAAATTGATTCGGGCATTTTGCAGATCAAGATTTTTAGAAGGAAATTAACATAATAATTTACATCGAAAAAATTAAGAACCTGTAAAATCCATAAAAAACTAGTAAAAGCAAGATTTCGAATGTTTTCGAAAATACCCTGTTTGTCGAGCATTTTTGCAGAGAATTTCAGCATTTTCAGGTGGAAATTTACACAATAAACGAAGTTACATCGAAAAAATCAACAAAAATGGTGATTTATCGGCTATTTTCGCTCATAATTCGTAGGATTCGATTCGAAACTAAAAACTTTCGAAATTCGAAAAAAATAGCCCTGGCCTAGCGTTCCCCTCCTAGTCCACGGCCGCGCCGATTTACGGAGAGTACGATTATTGATCGATGACGCATGGTTTCCGACTGTTTTTACTATTAAATTACCCTTAAATCACAATTTTCCATAGAAAACGGGTGGAATTCTCTCGAAAAATGAGAAATCACCAAAATCGGCGCCGGTTTCCGATCAGGATAATGCGATTTTGGTTTGTTTCATGAGGTTTTTTTAACATCGAAATGATTATTTTTTTGGTAATTCCAGGCGCTCAAAACACAACGGGACAAAATGAAGAAAATGATCAAGCGAAAAGAGAATTGTTTGGAGAAGGAACCACAATTGGCAAAGCAGCTAAGGATGGCCGGAAAGAGTAAGAAATTTCAGATAATTCAGTTTTTTATATTAAAAAAAAAAAATAGATTAAAATTTCGCTTTAGCTAATTCCAGCCGTGCTTTACTCCCGCTTCAAGCAACGCCACCAAGAGAAGATTACATGAGCCGATCAAACCTTGAACCCTGCACCTTAGCAAGCTATAATCGAGCTAATGGTATTGAAAAATCAGAAAAAATTGAAGTGTAAATTTTCCAGCAAACAAATCAATAAATTTCCTGGTAAATGAACCTATTCGCAGAAGTGCAACAGCAAGTAACCGATGGCCTTCGAGAAATGAAGCGCTGAAAAAGATTAATCAGAACTTCGAGATCAAATCGACAGGATTATGGAAGAAAAAGAGGCGGCGGAATATCAGGAAGAGATCGAAAATGCTGTCCGGCCAGCTTTCCAACACGGATCTCGGGTAACGTTGAGAATGGAGGATCTGTTGGCGGGCGGAATGGGGCACAGTTTCAACTTCCAGAGGCTCCGAGCCATGAGCCGCCTGAAGCAGAGCGGGAATGGCAAAAAGGTTGTAGATTTGCCCGACGAAAATTCCTAAATTTTCCCTAAATAAATAATTTTGTTTTCAGATAAAGAGAACGTCGCGAGAAGATTGCTCTGGAAGCCTAAATATTGCTTGTTACTGTGAATAAAATAAATTCATTATATTGTTATATTTTCTATACAATCTGGTCTTACTGGCGTTGTTCTGCACGTAAAATTCGTTTAAATAACGCTGTAACAAAAAATCTCAGTTTGCGCGTAAAATTGAAAATGCCAGTGACGCAATCACCACGACGAAAAATCCCACAGTTTTGGAAAATTGCGGTTTTTCAAACTTTTTTTCGCGTTTTTTCGGATGCTATTCAAGCGGCTATAGACTGTTCAAATAAGAACGGTCAGAAAATGAGAGACGTAGACAAATAAAGAGATATTGACTTTTTAGGCTATTCTGTGATAGTAACAAACCAACAAAGTTTGTGTTCCCAGTCTTTTCTTTGCAAATTCTCAAGAGTTCTTCTTTGCAGATGCGTCGACGTGAAGCTCTGGACAATTACGAGCATGATGGTAAGTTAAAAAATTGGAAAAAAAAACTTCGGTTTAAATTTTATTATACTTATTCCCTTTTTTTAATTAAAGGCGTCTATGACGGCTCATTCATCATTCACGACGTAGTTGACGCATTCCTCCTTGCCCGAAGGGCCTAGTGGGTTAACGCGCCATCACTCAGAAGACCACAAGTTCAAACCCAACGAGGCTCCCCCGCTTTTCTACCCCTAGCTTGAGCAATCAAATCCGAACGCGTCGGAGCTGTCTCGGAGACAGAAGCCTCATCAAATATATTGATTGCTTCCAAACCTATCGCACGTTTGCGCTCCTCATTTCCGTAATGGCGTTGCATGCGTAAGCTTGATCTTTCCAGTTTTCTACTAAGGTGAGTCATTAGAGCAATGGAGTGAGCAACTCGTTCCGATAATTCGTATCTCATGAGCAAATGCTATGCGGGACGCGGGGCTTTATGGAAAGAAATTAAACAAATATTATTCGTTTTCCACATGTGTGGCTCAATTTACTTCTTCTTTTTTTACCTCATTTTATAAAATTGTCAGCCCTTTTTCTCATTCATTTGATTTTCTGTGGCTCTTTCAGCTCTATGTAGTTCAGTTTTTCATCTATTTGTTTTAACGTGGAGCAAAATATGGTTGAAATTTGTCTGGTAGATACGGTAGCTTTAAAGGCGCATACTAAATTTAACAGTGACAAAATTAAATATTTAGTTCCATATGGAATTTCAATTTGCCAGGCTGTCCCATTACGGTTTGATCTACAAAAAATGCGGGTTTTTTTTAGGCCAATAATGTGACGTCAGTCCGTTCTTAAATGCGAAATCAGATGTGAACTCTGGGTCTCAACTCCCGCATTTTTTGTATACGTAGATCAGACCCAAAATGGAACTCTGACACCAGGTGTTCGCCGCGGAACCAGTTTTATACCGAATTTCGTATGCGCCTTTCATTCTACCGTACCCGGTTCTGGAAGTTTGGGTAAGTTTGAAAAACGAACTTTAAAATAGAGTTTATTAATTTTTGTTGACATATTACTTTGTGCAATACCTCAAAAAATATTATAATCCAGATAAACATGGTTTTTTAAAACGTTTTGCACAAAAAGCGATGATTTCGCTTCGAAGCCACTTTTATAAAACGCCTTGTGCGCCTTTAATTCCACCGTACTCGCCAAAATTGAATGAGCGAGTGAACTATTTTAGCGAAAAAATCGTTCTGATCGGTCCTGCTCTTCCTCTATCGGCTCTGGCAACGTCTTCCTCTTTGAATCTGCTCCATTGACAATCGCCTACCGGACTGGTTCTGGAAAGCCGTCCACACGGACAAGTACATTTTTACAACTAAAATCGAGTCGCGACGCGACACGCAACGCGCCGTAAATCTACACCAGATATGACCGAGAAATGCGGCCTAGTTCGGCCAATTCTTCCATTTTAAATTATGAAGCCAGAAATTCGTGTATTTTTACAAACTGAATGTGAAAAAGAAGCTAAAATTTCAATGAAATAGAGATTTTTCCCGTAATCTCACAGTTTCGCAAAATACTATGGTCCCATTAAAAAACGCTGAAACCTAAATTAGCGCGTAAAATTCAATGTATAGCGAACATCTCTCACGTATTTCTGGCTTTTATAACTCCCCTCAGATATTGCGATAGAAGCGGTTGCCGAACTAGGCCATATCTGGGGTAGATTGACGGCCGCGTTGCGGTAGCGTCACGGCTCGATTTTAGTTGTGAAACTAAATGCATTTTCCTGTGGAGTACACGCGATGTCCGGCGGGCGCTTGTCAATGGAGCGCGAAAAATTCAATATGGAAGGCCAGCACCCCGTGTTAACATTAAAATTACAAGATTTGCCCCCCCAAACATCCCTGGAGAACCTAGAAAAACCTGGTGTGCTTGCCTGACAACAGCGTTCACCGATAAAAGGGTGACGGGGAGGGCTGCAACAGAGCTTTTTTCCTCGTATAGCAACTCTTTGAGAACTGACAGCACTTTTCATATAACTCATCACTAATCGCTGCTCGTGGCGGTTTTATTTTCTAGTTCCCCATTTAGGGCTAATGAGTCAATTTTGTCTGTTGCTCAGAACTCTCAATTACCGATGCTATTAGCAGAAGTACTTAGCGCCAGAACCAGAGCAAAATCATTTTTATTTAAAAAATGAGTGATGTTTTCTTCAGTCTCTGTTTTTCAGGTTTTTCTCGTTATTAGGCGGTAACTTTCCACATACACTTGGTGTCAGAGAGTCCCATGGTTTGATCTACAATAAAAGTGTGACGTCAGCCCGATCTTAACCTTGTGAGTTGAAAAAAACATCTGCGTCTCGTTTCCCGCATTTTTGTCCGAGATCACACCGTGATGGGACTCTCTAACACCACGTACACATCTACCGAAAATTTCGCTGAGAACAAATTTTTGCGCGTCAAACCTGATGTTTCCGCCGTATATCAATACATTGAATTTGACGCGCAAACTCAGTTTTCATGGAGAATTGTTGAAAAAATTGTTTAATTTCCGGAAAATTAACATTTTTCAGAGAAAATCAAAATTATTCTGTTTTTCCATAAATTTCTAAGAATTGTGGCAGATCTCAGTTTGTTCTACGACAAAATTCGAATTTCCACTGAAAAAAGTGAAAAAAGAAGACGCTGTGTAAGCCTAAAAGCCTAAGACTAGGTGTAAGCCTAAGCCTGAGCCTATCCCTCAGGAGAATAAGCTTGAGCCTAATCGTGAGCCTAAGTCTAAACCTAAGCCTAACAAGCCTAAGCCTGATCCCAAGCCCGCATGGTGCCAGGCTGACCCATAACGGTTTGATCTACAAAATATGCGTAAAGCGAAATTTTTTGCCCAAAAAGTTTGACGTCAGCGCTTTCTCATGCGATATCAGTTGAGAACTCACTGCGTCCCTTGTCCCGCATTTTATGTAGGTCTACGTAGATCAAGCCTAAATGGGACGACACCACGGGAAGATCCCGAAGTATTCAATTTCCAAAAAATCAATAAAAATGCAAATAACATAGATATTCCCGCCTAGTCCAATAAATTATTTTTTTTTTGAAACTTCAACCTTTTCATGTTAAACTCGTTTTGTGGGAATGCATAGTCCCAAAAGCCATATTTGACACGCAATTTTCTTTGATAGACTTTTTTTTGAATTGATATGTCATGAGCATCACTCAGGTGGTTCCCAAATGGCGTCTAGTACTTGAGCCCTAGCCACCACCGTCTCGAGCGGCCGAAACCCAAAAACAAATAAAAATGAACAGTTCTCTCTGTTTCAAAATCTATATGTTCCTGTTCTTTCTAGTATCTTCCCTCTTCAGCCCTCTACTGCTGCTCCAATTCTGTTCCATGTTATTTACCGTACCGAACGATTTAGACGAATAACAGGACCCCCTTTTCCCGTTCAGCCGATGAGCCAATGTGTTGTTGGCTAATTCTGGGTGTTTAGCTCATTTGGAGGAACACTAACTTCCCTCTCTAACTACACACTACATGGAAGAGTGTTTTCAGATTTCTAGGCCTCGCAACTTTCCTTGGTGGCCAAGAAAAACTAAAACTTCAAGGTCAAAACGTTCATTTTTGTTGAAAACTACGAAAATCGGTTTTTACTTGATTTTTTGTAAGCGGAAGATTTCCTAAATTTCTAGGCCATGTGCTTTTTCCTGCTTCTCTGAAAATTTTGTTCAAATTTTCTTTTTTCAAAATATTCCCCGAAAATCTTGTACAAAAAGAAATTTTTGAGCATTCAGATCATTTTTTTAGAATGGAAGAGTTATCCAGATTTCTAGGCCACTGTATGGCTTTTCGTGGTGGCCTAGAAAATTTTCTTGGAAATCAGGTTTTGACTTGAATTTTCGTAAGTGTAAGAGTTTTTTACATTTCTAGGTGATTTTTTCCTGATGGTAGGAAACTTGTTTTCGTTTAATTTTCCCCTATTTTGGATATTGAATACTTGTTTATTGGTGGAAGAGTTTTCAGAAATTCTAGGCCACGTGGTTATTTTTGTAAAAGAAGATGATATTTATAACATTAACATGTGGTGACTTTTATCAGATTTTTTGCCCAAATACCATTTTTACAAGGTAATTTTTTGTTATATGATCTTTGTGGATAGAGTTTTTAAAATTTCTGTTAGGCGAACCCTAGATGCACGTGGTGTCAGAGTGCACTTCGGTTTGATCGACGTGAATCTACAGCAAAAATGCGGGAGAGGAGACGCAGAGTTCTCACCTGATTTTACATGGTTAAAAACGTGATGACGTCACATTTTTTGGGGGCAAAAAATGCCGGCATTTTGTAGACATCAAACCGAAATGGGACAGCCTGACACTACGTGTTCGTGCAGATGGCCTATAAATGCTAAAATCTGTTTTTTAAATGTAACTTTCAAAGTAAAAGAAACAATTAGAAACAAGTTGGCTCTCGCCCACAACGAAAAGTCTGTTCTAGCTATGGGTCGCGAAAAGACTCGGCTACCAATTTTTTTCGGCTCCAGATCAATGACGCTGGCAGACAGGGACTTATCAGCTTGTTTCCGATTTACACACACATACACGTACACTTTCTCCGTATAACTTCTGATAGCTTGAAACGAGATTAATCATCATTCCAGCTATTCTGTTTTATTTATTAGGTTAATGCCACTACTACTAGTATTTTTTCATATTAAAAATACAATGAACTATTTAGACATAGATTCAAATGAGATGCCAGTGAGTTCGCACTGGTGTAAGTGTTTTGAATTAATAAATTTTTCAAAAATATCTCAGTAAATTTCTGAGAAATTTTGATTTGAATTCCCGCCAAGCATTTTTTTGAAAATTTTGAATTTCAGCCCATTTTGCCTTTTTTCCTTCAGAAAAGGTGAAAAAATTCAAAATTTGAATTCCCGCTACAAGATTTTTTTTGAAAAATTTTCGAACTCGCGCTAAAGTATTTTCTAATAGCCGAAGGATTAGTAATTGGAATCCCCGCCAAAACATAATTCAGAAAATTTAAATTTCCGCCGAAACTTTTTCTGATAAAATTTAAATTCCCGCCCATTTTGTCCAAAATTGCAAGAACATATTTTCAGTGAGAAAATTTGAAAATATTTTTTTCAGAAAGTTTGAATTCTGTAGCACCAAAACATTTTCTAAGAAAATTTGAATTCCCGGCAAAACTTTTTCTGATAATTTTTGGAAATTCCCCGCAAAAATTGAGGATAGTAAATGAAGATGATTTGAGCAAAGTTATGACGTGGCCGCGGAAAAAATTGATGGCCCAGTTTTCTCTTTTCGCGGCCACGTAGCCAGAACAGACTTTTGGAACCGTACAACCAACAAATATTTCTTCATGTCCCTTTCAAAAATACATAAAAGCCAGATTTTGACATTTCTAGGCCATCTAGACGTAGACGTGTAGGCCTCGAGGCCTAGAAATTTGAAAAACTCTTCCAGAAAATTTGTTCAGTACTTGAAAGCGCTCCAACAAATCTATGCTCAAATTGTAAAAACGTTTTATCAAAATATTTATTGAATAAATTCTTTTGTCGCACAAAGAGGTATCAGACCACCAGATTCGACCTTTGATCATTGTTTCAGTTGATAGGTATGGCAGGCGTGGTTGCGCCTCAAACCTGCCGGCCTCAAGCTGGGCAAGAGGCAGCCTAATGTCAGGGGCAATGCCCACATCCAAGCCCTACTTCTAAGATTATCTCGAAATTTAGCGAGTTTTTATTTGTCCAAAAAAAATCGGAACAGGTTAACAGACAAACATGAAAAAGCCGCCAAAACAGAACTTTCATAATAATCTGTCGGTAGTTTGTGGCCGTTTCTTGCGTCTCAGGCTTAATCCCTACTGTAATTATGCTGAGATTTTCTAAGGATCTATGATCCTTTCACTTTTTGAAAATTTTTGGCAATTCTTTTTAAGTTTGTTGAGATTAACTTATGACAAACAGTAACTAAAAAGCGTGTGCTGCCGCCAGATTTTCTAGGCCATCAGTAATATCAGTTGCGTCCTTGACCATACTGGACCGAGACAACAAATATTCTAGGACTTGAGATTGCGTTCCTCGTCCATTCCTAGTCCCAAAAATTCCAAGCTAGTTTGGCCGAGAAATAATCTAGGCCATCGATGTTAATGACGCCATTTCATACCCGAATTCGCCAGCCTAAAATTCTTAGGTCATCAGTGACGTCACAGCTCTTCCAAGCCTTGGAATGAGCATTTCTAGGCCCTCTAATCTAGGCTTGCAAATTTCCTAGGCCAGGTGACGCCATCCCTCTTCCGTGCTGGACCGGTCAAATGACGTCACTTCTCGTCCACCTACGTCGCACTTTGATTACCTAGGCCACCATGTAACGTCACTTCTCTTCCATCTAGGTTTCCCATGCCCTTCTCCTCTCACGTTTGGTATCAGTGTGTCATTTTGGCCTTGAATACTCTAACGACAAATGAAATGCGGGAGAAGAGACGCAGAATTCTCACTGATTTCGCTTTTCCGGGTTACGCGGTAGACGTGCTGCCGTCACATGTTTTTGGGCAAAATTCCCGCATATATTTTGTAGATCATACCTTAATGGGGTGTCCTCTTGTTAAATATCGAAATTTCACTCAAAAATTTTGAACGTTGACGTTTTGTCTCTGGTCAATTGGTCAGCCGCGCAGTGTTCCGGTGTTTGTGCTCATGTTTTCCATTTGTGCTGCTGCTAAGGCTTATTTGTTCCGGGCGGGGACAGGGGGGAGAAGAGGCGCAAAAATGTGTCATTATGTATATTTTGCCATTGATATTGTCCTTCTGCTCAGAGGATTTCCTCATTTTACGCCGTATGTGCAAAAGCATAATCACCACAATAATTTTGAATATAAGTTTGCAAACGCGCCCTATTGACCTCGCCCGTGTAGTCTGCGTGCACGTGGTGTCAAAGTGTCCCATATTGGTTTGATCTCGAGAAATGCGGGAGAAGAGCTGCAGACTTTTCAACAGTTTGATTTTGCATGGTTAAGAGTGTGCTGGCCGTCGGTCACGTTTTTCTGGGGGCAACAAGAAATTCCCGCATTTTTTGTAGATCAAATTGCAAAGCGGCCTATTGTTAATCTTAGCCCGTCTTTTGATTTTCTATTATTCTTCGGCACCTAAACTGTAACTACGACACTAAGTTACACTGTTAAATTCCGCCCACTTAATGGCACCTTTGTTGCAGAAATGTACCCACGACAACGAGCAGACACGACCACATAATTGAGACGAGAATTCGGCGGAACCGGCTGGCGCAGGTCGCCGCCACAATTGCTGCCTTAGCGTGATATGACTCTTGTTGGCAGGTAAGTAAAAAACTACGACACTCCGAGACCAAGAAGAAAATCGATAATCGAAATATTGAAAATTGCAAAATTTATTTCGCCGGATCATTTTCCATATCGATTTTCTGAATGGTATGGTGATAGCAATCCTAATCGTAGGGCGTCCCATCCCTGGTGAACCACGGACTCTTGACCTGAAAAATAGGTTTCGTTCGGTGGAGCACATTCGCATACACTGACATTTTCGGGTGGCGACACGCTTTACACTTGCAACATGCAGTACCATATGCCAGTGGACATTGAACGCCGACACGCATCTCTCAAAAGTTAGATCGGAAATTTCGTGGCATTTTGGTGATTGGCCGCCCGGTGACAGTCCGCGCAACGGAGCGCGTGACCGTACGGCCCGGGCATTGGATAACACGGAGTCATGCCAATGACTGTCTGGAATTTTGGAGAAATTTATTGATTTTTTGACGGAATTTAATGAAATAAGGAAAAATCAATAATCGACATATTTATTTCGTAAAAAAAAACATTCTTTTCACGGATTTCTTCTTCAAATTGCAATTGAAGAGTTTGCCAAACTAGGGAGCCATTTTGGTAACGCTCGGCCATATCTGGGGTAGATTTACGGTGCGTGTCGCGTCGCCGGTTTTGTAGTAACACTAGCAAAATGTATTTGTCCGTGGAATTCTGGCTACCCTCATAAATCGAAATGGCAGAGTTTGCAGAACTAGGCCATTTTGGGTCGGAGTGATTTTGTGTAACGGCGCGTCGCGTGTCGCGGCATCGCCGCTCGTTTTCAATTTTAAAACTATTTGTCCGTGTGGCGCACACAACACTTTTCCACGCGCTGTCCGGCAGGCAATTAGTGTTGGGCGCAAAAATAATTAGGAAGGCCAGAACCCCGTGTCCGTGTGGAGTGCACGACTTTCCCGCGCGTTGTCCGGCGGGCGATTGGCAATGGAGCGCGAAATAATCAATGAGGAGCTTTTTGCAAAAACAAATTACATAGGCTTCTTGGCCTTCCTTATTGCATCTTTCGCGCTCCATTGACAATCGCCTTAAAGCAGGGGAGTGTGTGTGTTTGTACCTTCTCCACACGGACAACTTAAAATGAAAACCGAGCCGCGACGAGACACGCAGCAACGCGCCGTCAATCGACTCCGGCCGTGGCCGAGTCAATATGCCTTACGGCAAATTCTTACATTTCAAAATATGAGGGAAGCCAGAAACGTGCGGCACATGTTATAAAATTAATGTTGAAAAAAAACTATTAACCCATATTTCGCAAAATAAATTATCGCTTTTTGTAAGAAGGATCTTTCGTGATTGAATAGGGAAAAATTTATCGAATTTTAGCGAATCAGAAAATATCCATTTTCACTAAGAATTTATCTAATTTTTCGATTTCTATTCGCTAAAATTATCGATTATTGCAATACCTGACAAACCGAGCATTTCAGTCATGAAATAAGATACATCTCGTCTTGAAGTTTGATCACTTTTCCCTGCAAAGAAATTTCAATTGAATGTATTTCGAAAAATGTGCTCACAGTTTGAGCTGCTTGACGAGTCAGCAGGTTGTTGTGCAGCCTTTCCAATGGATATTATATGGAAGAACAATCTTATGGACGTTTATTGTTCATCGGGTCGAGAAAAACATTTTTCGAATTTTCGAGATTAATTTACCTAAAATCTAAAAAGGAGAAAATTGAAGAGAAACGTGGGAAAACGTATTGATTTTTCAAAATTTTGTTGATTTTCTAATCACGGGGTTCTGGTCTTCCGAACTCATTAGTTGATCTTGTCGCGCTCCATTGACAATCGGATCTCTTTCCGGACAACACGTGGGAAAGTGGTGCACTCCAGAATACACGGTTAGATAAATACAAGTTTTACAATTAAAATCGAGCCGCGACGCGACACGCAACGCGCCGTTACCCCAGAGGCCGAGCCATAATGGCCTAATCAGTTCGGCAAACTCTACCATGGGAAGCCATAAATTCGTGTATAATCAGAGAACTTGCGCAATTTAACAAAATCGGTAGTAGTAATTTATCGATTTTCCTTCAATCGTCTCGATTTTTTAAAAGCCTTATCGATTTTTATCACTAATTTATTATTTGAATAATCAACGTTTATTGATTTTTGAATCTACATCATGATTTGTCGATTTTCTCAAGTACCTATCGATTTTTGCTGTCGATGCACCATGTGGAAACTTCGGCACGTTTTTTCGCGGCGAGACCCAAATTTTTTGAATTTTCAGTTCTTGGTCTGGTATACGGTAGCTTCTACCTCTACCGTCGATATGTGACAGATGCAAATAAACGGTATAATGATGATATTTGCGAAAACTCGTTCGTCAAGTCAATGACTCGCCGGAGACCACGTGGAAAGCGAAATTCGTTTGGTGTCAAATATCCTTACGGATTCAAATAAACTTGAGAGGCAATCAGACGGCGGTCGAGGAATACGTGGAACAAACTCGAAAATTCAATTTCGAGTCAACGTGATGCGATGAAGCGGTTAGAGTGTTAACTCAAATTTGAGCGGTAAACAACGATGCTCCGCACTCTCGCCGCAAGTTATGTAGTTTAACGCGTAAGCTGTGATGCATACGATAGTCCTGGAATGATATTTGTTAGCTCTCGCAAATGAAGGAATTACCAAATTTCGAGAAAAATCTATATTGATTAGCCTTTTAAAAATTATCGATTTTTTAAACAAAACTTCTGAATAATTCGACGGATTTTTCCAGAAGTTTAAAAAAGTTTTGGGTACAATTTTAAAAAGACAGCAAAGCTAATGTACGTAGAACACCAGGAAAGAATTCTGCGCTAATATCGGATGCTTCGTAAACTCCACGGGCTTGCGGCATTAAAATGCCGAGCTACGCGCCGTAAATCTACCCCGGCCGCAACGCGCCGTAAATCTACCCCGGCCGTGGGCGAGCTCAAGTGGCCTAGTTCGGCAAAGACCAATCTTATCGATTTCTCCTAACAGATGAGTGAAGCCAAAGGCACGAGAATGATGACTTCCACACGGTTCGGTAGAGCGCATTTACACTTATGTACCCTTTGCCGGGCTGCGTTCAAAACCTAAAAATTTGAATGCGCGTAAGACCTGGTGCATTGGGTCCTGAATTATTTCGACAAAACATGGTGCATAATCCCAATATTGCAATTTTGCAGTGAACTTGAGCACAACAGCTCCGATGTTCCGAAAAACTTCGACGCTCGTCAGAAATGGCCGAATTGCCCGTCAATTTCGAATGTTCCAAATGGAGGATGCGGGAGTTGCTTCGCGGTCGCCTCGGCCGCCGGTGTGTCGCCACCGACCTTGCCGGTACTCACTCGAATGGAACTTTTAAGTCACTTTTGTCCGAGGAGCATATTATTTGATGCTGCTCGGAGTGCGGAAATTGGTACGGCGGAGATCAACTGAAGGCCTTGACCTATTGGGTTAATCAGGGACTTGTTACAGGTAAGCGGTGACGTCATTGGCCTAGGAACCTTTGATCTGCATAGATGTGAAATTTTATTGTTATCACGCAATTTGTAATAATTTCTAAAAAACTGTAATTATCGATTTTTAAAATTAACTTGTTCCAAATTTTGAATCAAACGAATTTTCTAGACGCGAGATTTTTGCAATTTATCGATTTTCGCAGGCTATTGAGTTTTCCCACAGTAGTCGATTTTTCTAGAAAATTATCGATTTTTAAATTTTTTTACCGCATTGATTTTTCTAGAAAATTAACGATTTTTCTAGAAAATTTTCGATTCTAAAAAAAATAATCGACTTTTTTCTCAAAACTATCGATTTCTGCAATTTATCGATTTTTTGAAATTTATCGATTTTCCCTGCCAATTAGCGACTTTAAAATATTCCCCAAAAATTTGAACGAGTTTTCTAGATATTATCAACTTTTGCAATTTATAGATTTTTTTTTTGCAACTTATCGATTTTTTGCAAATTATCGATTTTTTACGGCTAATTCCTTATCGAGTTTTTCCAAACAATAACGATTCTTCTAAGCCCGTGGAAGCGTTTATCGAAAACCTAGGCCATCTCTATTTTCCAGGTGGCCGTGACGGTTGCCGTCCCTATTTGACCTGTCGTGTGGCTTCAGTCCAGTGGTCGCCGGCCACGGTCTTTGAGGCCGAGGTTCGAGAAGACGGACATTCGTATGAAGAGGTGTCTGAATACCTCTTACCAGCAGAAATATGAGGACCCGGATAAACATTTTGGCTAGAGATATTTTTTTTTAGAAACTAAATAGAGAAAAATTTCTGGGATCTATTCAAAAATGGCAAACTTTTTGGAAATTATCGATTGTTTCCGGTAAATAATCATCAATTTTTTTCTCGGAAAATCTAGATTTTCGGAGATTGACCGACATTTTTTTCGAAAATTGTCGATTTTTTCCGTTAATGATCGATTTATTCGGAAATTATTGATTTATAGTTCCGATAATTATCGATTTTTCGGATAATTATGGATTTTTTCCGATAATTATCTATTCTCCGGTAATTATCGATTTTTTCCGATAATTATCGATTTCCCTTTCCGGATAATTATCGATTCTTTTGGCCGATAGTTATCGATTTTCCCGATAATTAGCGATCCGGTATTTATCGATTTTTTCCGATAATTAACGATTTTTCCAATAATAATCGACTATTCTTCCGATAGTTATCGATTTTTCCGATAATTATCGATTTTTCCCTTTCGTAATTATCGACTTTTCGGGTAATTATCGATTTTCCCGATAATTATCGATTTTTCCGGTAAGTATCGATTTTTTTAATTATCGATTTTTCCGATAATAATCGACTTTTCCGATTGTTATCGATTTTTCCGATAATTGTCGATTTTTTTCGATAATTATCGACTTTTCGGGTAATTATATTTTTTTCCGGAAATCATGATTCCTATAATACATTTATCAATTTTTTCCGATAATATCAATTTTTCCGACAATTATCGATTTTGGTTATCGATTTTTCGCTTCCTATAATTATTGATTTTCCCGATAATTATCCATTTTTCAATTATCTTTTTTCCGATAATTATCGATTCCGATAATAATCGACTTTTCCGATAGTTATTTTTCCGATTTATCGAGTTTCTTTCGATAAATATGCGACTTTTCGGGTAATTCTAATCGATTTTCCCGATAATAATCGATTTTTCCCGTAATTATCGATTTTTTACGGTAATTATCTTCCGAGACTACTCGACTTTTCCTTACGATACTTATGGATTTCTCCCATAATTATCGATTTTTTTGGCCGATAATTATCGAATTATTGCGGGCAATTATCGCTTTTTCCCGACACGATAATTATCGATTTTTCCGATAATAATCGACTTTTCCGATAGTTATCGATTTTTCCGACAATTCGATTTTTTCTCCGGTAATTATCCACTATTCGGGTACATTTTCGCCCGATAATTATCGATTTTTCCCAATAGGTAATTATCGATCTTTGCCGATAATTATCGATTTTTCCGAATAACTTTTCCGATAGTTATCGATTTTTCCGTATCTAAGATTTTTTTCCGATAATTATCGACTTTTCGGGTAATTATCCATTTTTTTCCGGAAACGTCATGAATTTGATTTCCAAGTAATTATCAATTCCGAGAACCTAATTATCAATTTTTCCGATAACTATCGATTTTTCGGATAATTATCGATTTTTTCCGATAATTATCGATTCTCCCGATAATTATCGATTTTTCCGGTAATTTTCGATTGTTTCTGATAATTATGAATTTTCCGATAATAATCGACTTTTCCGATAGTTATCGATTTTTCCGACAATTAACGATTCGATTTTTTTTCGTAATAATCGACTTTTCGGGTAACTTATCGATTTTGCCCGAGCATAATTATCGATTTTTCCGGTAATATATCTATTTTTACCGATAATTATCGATTTTTCCGATAATACGACTTTTCCGATAGTTATCGGTATTTTTCCAATTATCGATTTTTCGATAATTATCGACTTGCATTCGGGTATAAATTCGATTTTTTTCCGGAAATAATGAATTTTTCCAATACTTATCAAGTTTTTCCGATAATTATCAATTTTTCCGATAATTATCGTTTTTCGCGATAATTTACGTCGATTTTCCGATAATTATCGATTTTTCGGACCATAATTCTCGATTTTCCGATAATTATCGATTTTTCATACGATAATTATCGATTTTTCCGATATTTTTTTTCGGAAATGGCTGCGCCATCGCGGTTTGATCTACAAAAAATGCGGAAAATTTTAGCCCAAAATGTGACCTCAGCACGTTCTTAACCATACGAAATCAGTTGAGAACTCTGCCGCATTTTTTGTAGTTCTACGTAGATCAAGCCGCAATGAGACACTCTGGGACCAAGGGTCTGTAATTGACTTCACGGGAAATGATATTTTTATTTAATGCGCAAAACTAAAATTAAAAATTTCGTTTCGACCAATACACCATTTTAAGCGTAAATTTCAATTCAAATTTTTGCAGCCAAAGCTTTGGCTATTCAATGTATCCCCGCTCAATGACAGTATCCCTTACCGATGGAAAGGAACGAGTAAAGGTGCCCGAGTAACTATCATCGGTCACTTCAACGAGAAAACCGAGAAGCTGAACGTGACCGAGTACGGTGACATCATGACAAAACAGAAACTTTATGGTCCAGACACCACGATGGCGTTCCGACTTCCCGAAGAATTCCTTCATTATTCGAGCGGAGTGTTCCGCCCGTAGCGAATCCACCTGATGGTTTCGACGATCGAAATATAAGTGTGTTGGCACGTGGTTGTTCGATTGATCGGGGAGAATCAGATGATGGAAAACATTATTGGTTGGCTGTTAATAGTTTTGGTAACCATTGGGGTATAATGGTGATGCGTTATGGCAAATTGCGCACGGCCCGGCAAATGGTACATCCATACAAATACGCTCTGATAATTCGGGGTAAGTTTAGCCAGGTTTGGTTTTAAGGAAAACGCGTTGGTCCAAAAAAGTTAGAATTTGATTTCGGACATTTTTTATATGCATCACAAAAATGGACAAGCTTGAGAAAAAGCCCAGGTATAACACCGGTATACAAATTGTGTACAGGTGCCACTTCCCGGGCCGGGATGCGCGTTAAATATAGTGCTTTTTAAGAATGCGTGTTGCGCAACATATTTGACGCGCAAAATCTCGTAGCGAAAGCTACAGTAATTTATCAAATTACTACTGCAGCGTTTATGTCGCTTGTTACGGGCTCGAAAAAAAAGTTACCAGGACATTCTATTTTTTCTGATTTTTTGCTTATTTTTATATAGGAATATTCTCACGGTGTGTCATTCTGATCCCATAACGGTTTGTAACAAAGAATGCGGGAATTTTTCGCCCAGAAAAATGTGACGTCAGCACGCCCCTATCGATACGAAAGTTGTTGAGAAATCTGCGTATAAAATCCCGCATTTTTAGTAGATCACGCCGGGGAGACACTATGTCACCACGTGTATTCTATCCAAAAATAAATTATTTCAAAAATAGAAGCCCGAAAAAAAAAATCGACAAAAGCGCTACAGTAGTCATCAGTTAAAGCGAATTACTGTAGTTTTCGATACGAGATATATTGATATTTTGCGCGTCAAATATGGTGCGCAGAACCATTCTTAGACTTTTGTGTTGCCGTAAATAAATTTGGACGTCAAATACAGTGGATATTGCGGGCGATCGGCTACAATGTATTGCGAAGTTTATCAAGAGTGCGTCAAAAATATGATGGAGCCGCATCGGTCATGTTACAAAACACCATATTTGACGCGCAAAACTTTAACTTTGGACAAAAAGTCAGAGAATTAGGATTGCGTAAAAAACTGGCATTTTTTTTCAGAACATTTCTGAAATCAGTTTTATATTCTCAAACCTTTCGCGTCAAATATGGTGCATCAAGTCCCGAACCAAATACACTCTAACACGTAGTGCCAGGCTGTTCCCTATTAGTTTGACCTACAAAAACGCGGGAATTTTTCGCCCAAAAAAATGTGACGTCAGCACGTTACCATTGCAAAATCAGTTGGAGAACTCTGCGTCTCCTCTTCTCCCGCATAAATTTTGTAGATCAACGTGATTCAGGCCGAAATGTGACACTCTGACACCACGGCCCTAATTAACTCGTAAAAATCACCGTTTTTTTTCCAGGACTCTTCAAAATCAACCCAGATGACATGGAAAAATATGGTCTAGAGTATGAAACAGCAGTCGTCTAATTAATTGTTAATTCGGCAAAAATTTTTTATAATTAGTTAAATATTGTCCACCTATGTCATTCCCGCCCGATTGCATCACACCTTGTCCCATTTCCGACAAAAATCAATTATATTTATATTCGGCCATTTTTTTAGCTCACTCATTCCATAGTTTTTTTTTAATTAAATTTTGGATGCTAAAATTTGCCATTCTCATAGACATTTTCAATATCTGTGTAAGATAAATCTTTTTTCTGGTCTTCAATTGATGGAAAAAAACAAAAAAACAATGCGCGTCAGGTTTGGTGTATTGTGTGCAAACACCGAGCGCATATTTTAAAGGAAATTTATTTTTTTTTCGATTAAAGTTGCTGATTTTCTTTAATTCTTAAAAATGTAGGATTTTGTGCCAGAAACCGAGAAAATTGAAGAAGTCCTTGTCAAAAAATCGATGAAATCCCTGAAATCCCGGCTCCTTCAAGCAATTATCATCGACCAAAGTAAAATGCTGACTTTATCAATTTTCAATTACTTTTGCATGCATTTTTTCTAGGTTTTTCTCGAAGAATTCTCAACAAAATGGTACGGAAAGTACGGCGAAGATGGGGAACTTCTGGAGCACATCGACGAGGACTGGGAGCCCGTAGGCCTCGACGGTGAAATTTCTGCGCCTACTGTGGTATGGGCAGGAGGATCAGGAGTAAAAAGCTCATAGGCTCTATGATTGGGATGAAGAAAAGAAGGAATGGGTGCTGAGGGAGGCCAAGCAGGAGGAGTCAATGAGGAATCACAGAGTATCAAGCGAATTTCGGAACGAGTATGATGATATTTATAAAAAAATGGACGAAGAATTGCAAGAAAAAGCGGCAAAAGCTCAAAAAGAAGATGAAGAGAAGAAAGGGCAGAAGAAGCGTAAGAAATAAGTAGGCTTGGGAGGCGGGTGGAAGGCGCTAAAGAGGTCTGGTTGACCTAGGAGATAAGGTTCATGCGGTTATGAGTGTGTGAAATCTTCCGGAAGCTATTACAGACCAGGAATTCCAGAAATTTATGCCAAGTGGAGTTATTCAGCCGGCTATTCGAACGAATAAGCCGAAATGCAATGGCTTTACCGGGAGGAAAACGGCAAACTCAAAGGCGGGGGACGGATGATGTTGTTATATTAAGAAGGAATCTGTCGAGCTTGCCTGTCACATTATCGATCGAGCGAGCTTAAAAACGGGAAAGTGAAGGTTGAGGAAGCTCGATTTGAGATGAAGAGTCTGATCCGGCGAGGAAGCGGCGGAAATTGACTGCGGCGCAGAAAAAATATGGAGCAGCAGAGTAATAAAAAATATTTGGTGCAAAATTTGAAATAGCTCCTAAATCGACATTAACTAGGTGAAAGAAAAGCCCAATGAAAAAAAACCAAAAAAAATCGTATTACGTGAACACAAAATCCTGAGAATGCGTACTGCACAACATTTTTTTTTTGTTTGACTCGCAAACGGGATATCTCGTAGCGAAAACTAAGACTACTGTAGCACTTCTGTCGTTTTACGGGCTGCTCGATCGAAATGATTTAAAAGAATTTATTTATGGGATATTTAAAGTGGGCAAATATTTACCCGTAATAGGAAAATAATACAAAAAAATCTAAAAAATTTATTTCAATAATCGAGCCCGCGTAAATCGACACAAGAGCGCTACAGTAGTCATTTAAAGAGTACTTTTCGCTACGAATATTTTGCTCGTGAAATAAGTTGTGCAATACGCATTCACCGGTCAGAATATTGATATGTTCCCATAATATTTCTACCCGCGGAAAAAATTGGCCCAAATCGTGGATTGTTTGAATTTGATGACAAATGGCTTTGAAAATCACAAAATTTCAGAGAAAAATTTCGATTTTTGTTTTAAAAAATCAAAAATTGACTAAGAACCCAACAAAATAGTTAACTTGAAAACATGTCTCCTGAAAATCTTAGAATTTTCAGAGTTCACCCGAAAAATACCAGATTTAACTGGATAATTGCGAATTTTAGTGAGCCAAATTCCTTTCATTTTTCAAATAGAATGTTAAAGTTAAACTAACGACACAAAATCAAATGAAATTGACTAAAAAACTATTGAATTTTGTATAAAAATCCAAAACGATTTTTGTAAATTTGCAACAAAAATATTTTATTTTAGCATTTATTTATTAGTTCTTATAATTTTCACACTAAAAATTACGAAAAAAGACAAAAAAATTTTTTTCATTCAACAATTTTTCGGGCTAAAAGGTGTAATTTTTGCAGAAATTGAAAAATTATTAAAAATCGTAGAGACTAACTGACAATCAATTTTTTAAGGACCAAAAAGCCAACTTTTGCCGTTTTACTCTTTTTCCGTGAAAAATCCGGTTTTTTTTATTTAATTGCGAAATCACTTCACACCTAAAAGGGTAATATGCTGGTCTCGACACGACAATTTTTTTGTTAAATTCTTAAAAAGGTGTGCGCCTTTAAAGAGTACTGTAATTTAAACTTTACGGAATTTTTTTTTGATTTTTCAAACAAACCACGAAAAATCGTAGAAAATTCCACAAAGTTTGAAATTACAGTACTATTTAAAGGCGCATACCTTCGAGACTTTCTTGTACAAAAAATATGTCGTGTCGTGACGATTACCCTAATTTTTGGCGTAAAAGTCGTAAACTGTCCGGATTTCACTACGAAATTCAAACTTCGAGGAAAATATACGAAAAAAATACACTTGTTGTTTTGGTTAAAATATATTCACTTTTTTTCTACCATTTTTTAATAATTTCACGAATTTTTCCCTCAAAAATTACAAATTTCAACCAAAAATTCTGATTTTTCCTTTCCAGAATCTTCGAATGGACGCCCGATAATCCACGTAACTACCGTCCAAAGTCGGACTGTACGGTTATTGTCAAAAATTGTTCACTCAGTAAATGATGAACAAGGATGCGGTGATGTTGGTTTGAAAGAGGAAAAATGACACATAGTTGTCAGAAATATGGGATTGTTAAGAAAGTCGTCGTTTATGCGGTTGGTATGAAATTTGTGGAAATTTCGATTTTTGGCAGGTAAAAGAAATCTAAAAATGCTAATTTAAAAAAAAAAGCTTTCAAAAAATGCTAATTTTCCAAAAATTGAAGCTAATTTTGGAAAAAACCCAAAATTTTTTTTTTTACAAATGTTTCGATATTGTCATAAAAAAATATAAAAACGTGATCAAAAATTTGAAGCTATTTGTCGGAAAAATTTTTAAAAATGTAAGGCTAATTAAAAAAACCCAAAAGAGGTTCTTGGATTTAACAAATTTTCAAAAAAATTGTCCTAAAAAAGATAACCTTTAACATTAAAAAAATTATGGCTATTTTTCGAAAAATATTAAAAAAACAATTAGTTTTTAGCTTTCCGAAAAAAAACCGAAAATTTGTGGAAATTGTCGATTTTCAAAAAAAACTTATTCTAAAAAAAAATAAATTTTTAACATTAAAAAATCTATCTTTCGAAAAAAACACCGAAAATTTTTGGAAAGTTCGATTTTCGAAAAAAAAGTATTTTAAAAAAACAATTATGAGAAATGGTTATAAATTGTTTCAAAAATTTTTTACAGCTATTTTTTTTTAGAGTAATTTAAAAAAAACAATTTAGCTAATTTTAAAAAAAGTAAAGATAATTTTCAAAACCCAATATTGAGGATTTATCGATTTTAATAAATTGTTCAAAAAAAGCTAAATTTAAAAAAATTATTGAAATTTTTAAAGAGGGTTATTGGATTTTTAATTTTCAAAAAAAAATCATCAAAATGTATAAATAAATAAAGACTATGGTGCTTATTTCGCGAAAAATTGGAAAAACAATTTTTAGCTAATTTACGGAATTAAAACAACAAATAATTTCGGAAAATCGAAAATTGTTGGTTTTTTTTTTCGAACGCTTTAAAAAAATCCAAAATCATCTGAAAGACATTTTTAAAATTTCCAAAAAGAAATTATGAGTATTTTTCAAAAATCAAATCGAATGATTATCTACCGCTTTGTTTGACATTTTTTGAAATTTGAAAATCATTAATTCATAAAATTTTTATTGAAATAATTCAAATATTTTTATTGAAAAAAAACGAAAATATTTTCGCTTTGGAATATTTCGGAAAAATCGATTAAAAAAACAAGTAAATAGGTCAGTTATTTTTCAAGAATGCTATTTTTTGGAGAAACCGCTGATTTTTTGTCAGTTTTGTCGATTTTCGTTGTAAAAAATTAAAAATTCAAAATTTCTTATTAGGAGTGCACAAAATGCTGAGAATGCGTATTGCACAACATTGACGCGCAAAATATCTCGTAGTAACCATACAGTAATTCTGACATTAAGTACTGTACTAAGCGTCTTCGGAAAAATTCCACTTTTTTCAAAAAAAAAAACGAAATATTTAGTTTTTATTAAAAAATCGAAAAATTTTGATTTTTTAAAGTTAAAAAAAACGAAATATTTTGATTTTTTATTTAAAAATGAAAAATATTTTCCAACAAAAAAGGCTCCTAATTAAAAAAAAAAAATTTGCGCTTTTGATACAAAAGTGCAGATTCTTGTCTTAAAATTTAAATCAAAAATTTTTAAATAGACTTTTAATCCATCAAATTTCCCCAATTTTCAGGACCACCCGGACGGCGTCGTATCGGTTACCTTTCGTGCAAAGAAGAATCGGATATGGCTGGAGGCTAAAATATCTTCACGGACAAGTAGTTGAAGGTCGGAAATTGACAGCCGAGCTCTGGGATGGCCGGACAAAGTTTAAGTCGAGGAGACGGAAGAGAATGAGGGCGTCGGAAGGAGTACGAGAAGTATATTGTGGGTGAAGTAGTGAGACGAAGGAGGAGAGGGACGACGATGATGACGGCGAAGATAATTGATTGATCTAAAATTTTTCTGAAAAATTATTTTTAGTTCATACATTTTTCCGAGAGGAGCAACCGGATTGATCAATTTTAAAACTATGTTCAAAATCGCCCAAAATTAAAATTAGTGAACTTCCGTTTTCATGGATTTTTCGAAAATTAGCTTTAAAAATGTTTGCCAAATTTTTCGACGATATCGCGATGTTTTAAAAAGTTCGAACAAAATTTGCCTAATTTCAATTAAAATCCCTTTTTTCGAAATTTTCTAATTTTCTGGGCCAATTGGGCCGTTTAAAAGAAGACTAAGAAAAATGGCCAAAATTTGAGAGTTCAGCGTTAAAAAAATTCTAAAATTTCAATCAGACTACGTTTCCGGTGGAAAAAAATTTTCTTGGAAAATTGCTTTCTTGTTTGAAAAATTATTTTAGTTTATACATTTTTTTTCCGAAAGTAGGAACAACCTATCAATTGAAATTTTCAAAAAAAAATAAATTTGAAAGCATGTTCCGAAAAATTACGTGTTTTCGGTTTTCTGGAAAAAAAAAACGAAAAATTTCACCAAAAATCAAATATGAACATACTTTCCTAAAAATATGAAAAAACCAGAAATTTTCTTAATTTCCCTATTCAAAAAAATTCAAAAAAAAAACCAAAATTCAGTTAAAATCCCTTTTTTCGGAAAATTTTAAAACTGCTTTTCTGCGCCATTGTGTCGTTGATTTCAAGGAATTTTTTTCTTAAAATCCGTGAATCGTTTTGAAATTAAACAAGAAAATTTGAAAAATCAAAAATTATTTTCACGAAAAAAAATCAAAAATTTCAATCTTACGGTTTATGAATCCTAACTAAAAAAAAAATTGAAGTAACGAAAATGTTCAATTTTTTCGAAAATTTTCGAGGTCATTTAGTTTTTTCTGTGAAAATTGTATTTTATACGAATACTCTTTTAAATTAATTTTTATATATTCCTTTCCCGAAAACTTCAATAAAAAAACCCAGTGATACAATTAAAATCGAGATAACCACAGTCAAAGTGGCAGTAAGCAGGCAAAAGCACATATTAAGGGAATACAAAATTACTGATAGCGTAAGTCTCATCGCGCTCAACAGATTTGACGCGCGAAATATCTCGTAGCGCAAACGATAATTCGTTAAATGGATACTGTAGCTAGTGCCGATTTACGGGAATCTTAAGAACCTAAAGTAGCAAAAATGGAGATCCCGTAAATCCACACTAACACGCTACAGTCTATATCCGTTTAAAGAATTATTGTAGTTTTCGCTACGAGATATTGTGCGCGTCAAATATGTTGTACAAGAACTACGCAATTTTAAATTTACGTCATAATATACACAATTAACTAGTAATGGATCTACAAAAATCTACAAAATTTCTTCATCAAACTCACTCTTCCACAGCTCGATCGTCCATGAGTCTCCTCGTACGCCCACCAGAGAGCACATCGCCACGGTGCATATTGTCGAGACTTCCTCATTCTGATATCTGTGACGACATGCGTGGCGTAACTCAGGTTATCCCTCGCAACGACTACCGACGGACGGCCTCATCTGCATGGGACGAAGACGGTCCACGTTTCGAGCGTTTCCATCCGGCTTCGATCAGTGCGGCCGCTTCGATGACTGAATGAATTTTTATTTCAACTTTTGCAGAAAAAATTATATTTAGCAAAATTAACGGGGAAAATTGGCTGTTTAAAAAATATTTATTATATTGCGCGTTTAATAACAAGTCCAGATGAAAATTCTGCAAAGTTTGAAACTTAGTACCCTTCAACGGTGCACACGTTTTAGAATTTAGCACAAAATTGGCGTGTTCACGATGCTTTTTGGTTAAAACATTCAAGAAAGTGTGCGCCTTTAAGGAGTACTGTAATTCAAACTGGCTGATTTTTCATCGATTTTTCACTTTTTTTCCAATTAGTAAATTTGTGTTATTGCAGATTTTTTAAATCATTCATACCAAATTTTCAATCGAAAAATACAAAAAGAAAAAATGTAATTTCGTTATTTTCAAAAAAATAAATTGAAAAATTGAAAAAAAATCCAAATATTCGAGTATATTTTTTGAAAATAAAAATGAAAATCGGAACAGATTGTTTTTCGATTTTCCAAAAAATTTAAGACATTTAAAAAATCTAAATTTTCGATTTTTTAGAAAAAAAATTAAAAATCGCAAAAAACCAAAAAAAAATTGGCTGATTTTCCATAAAAAAAAGGAAAGATAAACAAGAAACAAATATTTCAAAAAAAAAAACAATTTTTTCCGATTTTCGGCAGAAAAACAACTGTAAATCGGAACAATCATAATTTGTTTTTTCTATTTTTCACAAAATATTGAAAAATAAAAGAAAAAAGGAAATTTTCGATTTTTTTCCGTTCCAAAACAAAAAATTCATAATCTCACAATAACCAAAAAAAAATGAAAAATCAAATAAAAACGAAAATTTCGTTATTCTCAAAAAAATAAAAACTTTTTTTTCTTCCGGAAAATCTCAAAAACACTGGCAAAAATGTCGGGTGACGAACATTAATTTTTTTCTATTTTTTTGGCCACGATGTTTCGCGAAAAATTGTCAAAAATTAAAATTTTTATTTTTAAATCCAAATTTTCACTTCCCCCCCCCCCCCCCCCTCACTAACAACTTTCCGACATCTTCACAATCTCCATAGCTTTCTCTTTAACCTCCGGCCAAAGCGGTCACTCAGCTCGCGGAGCCACCTTATCCGAAAACACAATCGTTCCAAGCTTCACCACGGCGGTCTCACCTAGAACTCCATCGACAACGACATCCTCTCCAAAATGTTCGCCGATTTTTCGATTCAACGAGCTTCGCCGTTCATAGCACGTGTGTGCGAGCTTATCACCATCGATAACATCGAAATTATGCGTTTCACGGAGATATTTCCCGATATGACTTTGACGAAATTCCTCCGGCGAGCCCAATGATGTGCGAGGTGCCCGTTTCTCTAGGAACCACCCGAGCTGGACGGAGCATGTGACCCGGATCCTCTCTTCGTCTGGAGCTTGAGCTGATCTTTGTCTCTTTCAGGATCTCATCGGATCCTTCAGGCAGCTCGACAATTATCACATCCAGCTGCGACATTCCTTGCTCATTTCTCTTTTTGTTCGAGTACCGCATTGGCACCTTTAATAGTCTCCCGGGACACTACTAGCGCTTCGAGGTTTTTTATTTGAAGGACCGAATGGTTCGATTAAGATTGGCTCCGCGAAACATTTTGCCTGGAAAATTATGGGGGTACTATTGAGCAAAAATGACCTGCATTTTTGGAAAATTAGAAAATCGGAAAAAAAATTTTCGTGCCGAAATTTTTTATTTAGAAAAGTTTTTTCTAAAAACAGAAATTATATATTTTTTCAGTTTTACAAAAAATCGAAAAAAAATATTTCGATTTTTCGGATTTTCCAAAAGAAAAAAAAATATCGAAGTTTTTTTAGATTTGCAATAGCCAGCAAAAATTGATTAAAAAAAACCGGAAAATGTATTACGGGAGAAGATTCTGAGCATACGTTGAACAGCATATTTGACGCGCAAAATATCTCGTAGCGAACACTACAGTAATTCTTTAAATGACTACTGTATCAATCAAGCCCGTAAAGCGCTACAGTAGTTATTTAAAGAATAACTGTAGTTTTCGCTAAGAGATAGTTTGCGCGTCAAAGATGTTGTGCAATACGCATTCTCAGAAATTTTGTGTTGCCTTAATTTTCCGTTTTCAATTTTTTCTTTTTTTGAAAATCTGAAAATTTCGATTTTTTCCAATTCTTTTGGAAAATCCGAAAAATCGAAACAAAAATTTTTCTATTTTTTAAATTTTTTTTTTTGGAAAATCGGATAAAAACCAAAATTTTAGTTTTTTAAACAGAATATTTCATGGACCAAAAATATCGATTTTTCCTAAAGTTTTAGAGAAAACTGAACAATTTAAAACGATGTTTATTGTTTTTATTTAAATTTTTATGGAACAACTTTCGATTATTATTTTGAAAAAAAAGCTTTTTTAAATTTTTCTTTATTTTTGGAAAATCGAACATTTGCTATTTTGCGATTTATTAATTTTTTTGTTGGAATTTCTAAAAATCGATGTTTTATTTTTTCAAAAATCAGCGGTTTTTCCGAAAAATGGCAAAACTTTTTTTAAAAAACATTTAGTTCTTTTCCTATTTTGGTTATCGAAAGATAAATAATTTTTTTGGCAATTTTTAATGAATTTTTGATCGTAACCTCTTACAGTCCCGGAAATATCAGTCCTGTACAGAATCGACAACTGCTTCTTAACATCCGAAACTCCGCAGCAGCTCAATCATCTAATAATGATTGGAAAAAAACCAATTTTTTGTTTTACGAAGCTATCATCTAACCAAGAATCATATCCTGATTTCCATTAGGTGACCCCCACGACAATAAAATCAAAAGCGAGCTCGGCAGCCATGTTGAGCAACACTTGGTGCCCATTGTGAAGCGGCCGATCGCATGTGCCGCCAACACAGACTTTTTCGTACTTTTTCGCCGCCGTTTTTCCGCATTCTCCAGCAGCTTTTCCTCGCCGATCACATAATGATTCTCGGGATTTCCGCGGATTTCGGACACAACTAGCCGGACGTAGAGCTTCGGGCATGAGTTCGCCGATGTTGATTTTCGAGACTAGCTCGTCGGTTCGCGGCTCGTCCGGGTTTAATCTTGCAGCAACAGGAATCCTTGTTCACCTTGCATTTTCGAGCCGGGAAAAAGCCCAAAGCACTCTACCTCACATAAAGCTTCGAGCTTAACGCGGCGGCCGCAGAAGTGTGCAATTGATACAGTTTTCATTTTTGCTATTTAACACGAGAAGTCCGTATTTCGAGCTGATTTAGAATGATGAGAAATATAAGGGGATTGAATATTCCTCAAATAAATAGAAAAATTCGCTGCCACGTTCGCTGCTCTTATCGGCTGCGCGCCTCTATTTCACATACTGTCTCTTCTATCTCTCCTCTCGCGAATCTCGCTCTCTAACGCGTGCCGTGGAGCGCACTTCGCTCCTTTTTGCTGGAAATCTTTCAGACATGCCGGAAACAAGAAAAACAATAAATTATTGAACGGAAAATAAAGTAAACGTACTCATCGTATTTTTAGCTTCATAAAAAGATCTCTTAGAGCATATAATATTGCTTCTAAACACCAAATAGTAACATCGCTGAAAATGTTGTGAATTTTATGAAAATCTAGGATCATTTTTCCCATTGTTAGTTTATGAAAAACAACAATAAAATGAGAAAGATTACATGGGAAAACCGAAGAAACTCTCGCGGTCAAAATTCGAATAGAATTACTGTATTTTTCGGTCGGGCGCTCACGGAGATATTTTGCGCGGGTCAAATATGCTTGGCGCGGCGTGCATTCTTCTTTCAGCGTTTTTTATTTAGTAAAACAGTAATAAAATGATTAAATGCATTTTGTGTGATTTTCAGCCCAAGATGTTTAAATAAATTGTTGTTGTCCAACTGCCAGCCATTTTTAAAAACTTAAATATATGGGAAAACCATAAAAATGAAGACAAAAGTTTAGCATAATTTTGGAACTACAGTACTCTTTAAAGGCGCAAGCCCTTTAAGACGAATTTGTCGTGTCGAGACCGGACAAATATTCAAAATTTCTTCTATACATACGCAGATTTAATGTACAGCAGAATATGAGCATTTGCACATTGCGCAATTGCTAAATTTTTTCAAGGATCACAATAAAAATTAAAAGTAAACCAAAATACTTTATTCAATACCACAAATAAGTTCATTTATCTTAGTCAACCTCTTGCCGACGTCGTAGCTTTTGTTGTTGCTTCCCCTTCTTCTTAGACATCTGAAATTTTCTCATATATGGAACGCGCTCCGATCTAACAAAAAACCTTCTACTTTTGGATTTTCTTCTTGTCTACATCTTCCTTCTTTGGCTGCTGTCCAGATATTTTTGTCCCCCGGCTCCCGGATCGCTCTCAAAGTCCATCTCCGGCTGCAGCCCAACCTCAGGCGGCGCGATCATCAGTACCTGCTGTTATCCAGGACCCTTGAAATACGTCATACAATCCCAATCTGGTGGCTCCTGGGTATTTGACTTATCTCAAACAGCTTCTCGCTGGATCCCATCAGCGATACGATCGTACTCCACAACAACTCAGCGACATCCTTGGGCTCGATGATGGTCAGAAGATCAAGAACCCTGAAGTAGTCTCCGGAGTGGTTCTCCCAACCGACGCGACCATCTGGTGGGTGCAGTGATGCGACGTTTCACGAGGAGCACGTCCTGTTCGCTTTCCTTTTTGAGCAGTGCCACACATGGGAGAGCCGTGAAAGAACCCGAGCACCTTATGTACCACCAGGACTCTGACCCATGTCGTTCCTTGTAGCCGAGATTTTCTGGGAAGAAAAACGTTGTCTTAAAGAAATTGTGAACGGTAAGGTTACCCCCTGGTGAGCATGAACGCTCGCGTACTTGACCACTCCTCATGTAGTGAATCCACTCTTTCTTCCATCTGCTCCTCAGCTTCGTCGTTCATCTTGACGAAGCAGTTAATTTTAAAAAAAGTTTTCGGGGTAGATTTACGACGCGTTGCGGATCTGACGCGTCGCGGTTCGATTTTTTGAAAAACTAAATGTCACATATTTGTCCCTGTGGAGTACCGAGCGACTTTCCCACTCAAAATAGGATGGAATTGAATTCGGAAGTGTCACCGTAGCAACATTCGGATTGTCTGAATAAATATAAAGTGAGATTTTGATTTTTGCTCCACTGATAATGGAGTTTTTTTTAGAAATTCTGCAAACATTAATTTCTAGAAAATTTGAGTTACCTCCAAAATTTTTCACAGAAAATTTGAATTCCCGCCAAAATTTTATTCTCAGAAAATTTGAATCCAAAATTTTTTCTCTGAAAATTTGATTAATTCCCGCCAAAAGTTTTTTTTCAGAAAATTTTGAGCCACGGTCGCATTAAATTTTTCTGCACTAGGCTATTTTGTGGCAATACCAGGGGTTGTGGTTTACGGCGCGTTGCGTGTCGCGTCGAGGAGTTTAGTTGTAAAACTAAATGTATTTGTCCGTGTGGAGTACACGGAAGACTTTCTCTCCACGCGTAGTTCCTCAGCAATTGTCAATGGAGCGCAAAAACTGCCGACCCAAATAATTTTTGCACTTCATACACACAGCAGCTCGCGGCGTGGCATGAGGCCCGCATTTCGCGCCTCACTGGAAGCCCCAGATGCCAAAAAATCTACCTGTCAGCGGTCTCTCTCCACCGAAACCCAACAGGCTGATGGTGCGGTCCGTCAATCTCTCTTCCAATACCGAAAGGCGATGGCTTGATGTCGCGAATGAATCCATTCCGGTGGAAGTCACGAATCGCGGATGGCCAGGCTCGGCAAAGTGAAGACCTGCTGAACTTGTCCATGTTCATATTCATCATCAGCTCGTATATGGAGGGCCATACTTAAAAATTTGGCTTAGCCAACGAAAAGTGGTACCAATGGACCACAATGGAAGCGATTTCCGTGCCACCTTCCTCAATATTCGTGTAGAAGATGGGTGGTGGATCGACGCGAGGACAACTGACTTTTGACGAAGAAGCTGGAATTTTTTTTGCTCTCTAGAAACGGTTTTCACGGCGGCCGTCAATTCCCGAGTTTGGAAACTCACTTCGTCATGTTATTTTATAATGAGTGGCTAAACTCGGAAATTGTCGGCCGTAAACCACAAGCCAGTTGGTTCCTTCGCCGCGACCGACACTTTCCGGGTTCCGCGCCGCCCTATACAGAAGGCTGGCTGCGCGAGGCAGGCTTGACCGCGGCAGGTGTTTTGGCGTGACCGCTGCATGGACCTGCTAGCTTGTCAACTAGGCAGCCTAAGCGAGCCTGCAAAAGGTAGGCAGGCGCGACCCTTCTAAAACCGTCCTCGCAACACACAATACCTCACTCTTCATGTTTAACGCCATTTGACCGCAAAAAACTTCCCATCACTCTCGCGTTTTACCTTGTGAATCGAGCCGGACGTGCCCGTCGCCAGCGGTTTCGTGACTTCATAGGTGTTTTGTGCTCGAATGAGCTCCTTTTGCGTTGTCCAGGTCCGATAACTCATTGATTTAGAACACCGAAATGTCACGATTATACGCAGTGAATCGCGTAAATAATCGAAAATGAGACTCGAGTCGAAACTTTTCGAAACCTGCTAGATTTTCTTTGTAGGGTTGTTGGAGTTAATGATGATAATGAGGAGGGGGGATTTTATGTGGATTAAGAGGCTACCAGGAAAATATTTATTTTTTAAATATTTTATTGTCATTCTTTTCTTTTTTAGATTTTCACGTTTCTTATTATTAAAAATAGAAGAGTTTTTCAGTATTTCAAAACGAACACAATCTGAAATTCAGAATTACTACTAAAGAAACGAAAAAAAAACTGAGAAAAATGTTCCAGATTCTCCAGTATTGTTAGGCGTACCCCCCCCCCCCCCCTACCTACCTACCATCCTTCCTAGCCTACATGCATACCTGCCTACCTAGACGCCTGCGGCCTACCTTCCTGCGTACGTTTATGTCATACATTTTTTGCCAGCCTTCTGCCTGTATTTTACGTGTCTTAATTACGTGCCTATCTACTTACCTTTCTTCCACGACTACATGTATACCCGCCTACCTATACGCCTGCGTGCCCGCCTCCTGCCTAACTACTCACCTACCTGTTTGCATACATGCCTGCCTACCTTCTTGACCATGCCGAGGCGCCTATACGACTTGCCTACCTACACGCCTGTCTATTGCCTACCTGTTTGGTTACATGTGCCTGTGCCGTACCTGTGCCCAGATCCTGAAAAACATCGTTATTTTGTAATAAATAATTTTAATAAAACTTTAAAAAACAAAAAAAATACGAAATTAAAAATAACCTAACAAAACGTCTTTTCAAACCCCTTCGTACTGCTTGATAAAAATTCGTGTTATATCCTCTTCAACAACTTGAACTGCACTCCTAATCCGATTAGACACAGCTAAACTTTTTGTCGCTTTATTCATGGACAAGTGCGCTCCTGGGCAATTGAGACTATTCGAATCGGTGTAATAGGTGGTGAAGCTCTTTGAGCATCTTAATGTAGAGTAATCTTCTCGAAGACGGCCCAGAATTGCGGTGATTGAGGGATTTGTGATGGATCTGTACGGGATTTGATGTAATAAATTTAAATTGTGTGGTTTAGATGCAGAAAAAAGTTTAAACTAAGAATTCAGACTAAGACTTGAAAGAGAGCCGATTAAAGAAAAGGGCTGAGCTGGCTTACGATTTTTCCCCCTAAGTTTATCTTCACTTATATAGTCTATTATCCCCCCAATACTAAACAGTATATGGTAATAAATACTTTGACTGCAAGAAAAATGAATAATAGGCTCTGCCTCTATATTTGTTTTTTTCGTTTTAAACCCAAACTTATTCTACGCCGAAATTCTTTGATATTTTTTGGAATTATATATCCTTCGATTTATATTCATGATTCCAGCTCAAATTTTTTTTTCTCAGAAAAATTGAGTTTCCCGCCAAAATGGGTTTCTCAAAAAATTGGAGTGATTCTGCCAAAATTGTTTTTCTCTTTAAAAATTTCCGCAAAATTCTGTTTTTCTCAGAAAATTTGTATACTCCCCGCCAAAAACGTTTTCTCATAAAACATGAATTTCCGTCTTTCTCATGAAATTTGAATTTCCCGCCTAAATTTTACGAGAAAATTTGAATTTCCAGCCAATCTTTTAGAAAGTTTGAATTCAAAAGGCTTTTTTTCAGAAAATTGGAATATTCCGCAAAAATGTTCTGAGTAAAATTCTCTAGCCTATTGCTTTTCTCATAAAATTTCACTTGAATTTCCGGTCACCTGTTTTCAGAAAAAGTTTGAATTTCGCGCAAATTTTTTTTCAGGAAATTTTAAACCTCTGGCTTTATTTATCTGAAAAAAATTAAAATGTCCTGCCATTTTTTTAAAAAAAAAATTCACAGAAAATTTGAATTTCTAAATTTAAAATTCACTGAAACTGACTTCCTTATCGACAATTGTCACACGATCCGATGATTTCAGAGCTACACCGCTCGTAAAAATCCCACGTATTGAATCCACGTCATCAGAGTCGGGAATTTCAAAAATTTTACTATCATCCATTTGTTTGCTGGAAGCGTTAATTATCGATTTTTATTTTTTTATTCGATATATTAATTTTATTGATATTTTATGAAAAATAAAATCAATTTCACTCTCGGATTGGTCTGGCTTTGTTCCTTCATAAAATGTAAAGAAAGAGTTTGCCGAACTAGGCCATTTTGGCTCGGATATCCGGGGCAGATTTACGGCGCGTGGCGTCGTGGCTCGTTAAAAATAGATTTATTTGTCTGTGTGGAGTACACGAAAAGGCACTTCTCACGCGTTGTCAGGCAATTGTCAATGGAGCGCGAAAAATTCAATGAGGAAGAAAGGTTCCAGAATCCCGTGTCCCTGAGTTTTTGAAAATTTTTGAATCGAATAAAAATTTTAATTGAAAAGATCGATTTTAAACAGTTTTAAAATTCTTTTAAAATTGAATTTAATATTAATCCCATTTTAAAAATTATTGATTTTCGAGCATACCTTTTCAATTTGTTCGGATGGTCCCCGTGCTAATTGAGCCAAACACTATCGATTAAAGATGGGCGTGTCACCACTTTTGCCACGCCCCTTTTATTCCGATATTCCAATAACCCGACGAATATCTCTGGTTCGTAATTTTAGAGTTGGCGAACACTGTGAAATAGGAATCGAACGCTTTCGGCGAAGATCAGACCACTCGAGAAATGTGATGAAGCTCCCCGGAGCTCTGAATGTTTGGATAAATAGAGTTGTGAGCCTAGTGCAAGTTGAAAAAATCGATAAATTATCGAGTTTTCTGATTGTTTTAGGCGGGAATTCAAATTTTCTGAGAAAAATTTAGGCGAGAATTCAAATTTTCTGAGAAAAATTTGAGGCGAGAATTCAAATTTTCATAGAAAAAATTTTGGCGGGAATTCGAATATTCTGAACAAAAATTTGCCGGGAATTCAAAATTTCTGAAAATAAATTTAGAGAATTTACCTCAAATTTTCAGAGAAAAACGCATTGTGGCGGGAATTCAACTTTTCTGAAGTCAAAAATCTAGTCGAGAATTCAAATATTCTGAGAAAAATTTAGGCGAGAATTCAAATTTTCAGAGAAAAAATTTTGGCGGGAATTCAAATTTTCTAAGAAAAATTTTGGCGGGAATTCACATTTTCTGAGTAAAACTTGGTGGCGGGACTTCAAAATTGTATTTCTGAGAAAAATTTAGGCGAGAATTCAAATTTCCAGAGAAAAAATGTTTAGCGGGAATTCAAATATTCTAAAAAAAAATTTGCCGGTAATTGAAAATTTCTGAAAATAAATTTAGGCGAGAATTCAAATATTCAGAGAACAATTTTGGCGGGAATTCAGATTTTCTAAGAAAAATTTTGTCGGGAATTCAAATCTTCTGAGTAAAACTCTCTGAATTCAAATTTTCTGAGAAAAAATTTAGGCGATCAACTTTCAGAGAAAAATTTTTGCGAGAATTCAAATTTTCAGAGAAAATGCGAAATTTGGACGCGAATTCTAATTTTCTGAAAGGAAAAAAACTTCGGCGGGAATTCACATTTTCAGAAAAAAAATTTTGGCGGGAATCCAAATTTTCTGAAAAAAAATTGGCCGGGAATTCAAAATATTCGAAAAACATTTTCGGCGAGACTTCAGGGGTTCTCATAACGAATTCAAATTTTCTGCAACAAATTTTGGCGGGAGTTCAAACTTTCTGAGAAAAAATTTGCCGGGAAAAATTTCCGAAAGTAAAGTTTGGCGGGAATTCAAATTTTCTGCAAAAGATTTTGGCGGGAATGCAAATTTTCTGCAAAAAATTTTGTCGGGAATTCAAATTTTCTGAGAAGAATTTTGGTGGGAATTCAAATTTTCTGAGACAAATTTTGGCGGGAATTCAAATTTTCTGAGAAAAATTTAGGCGAGAATTCAAATTTTCACAGAAAAATTTTGGCGGGAATTCAAATATTCTGAAAAACAATTTAGGCGAGAATTCAAATTTTCTGAGTAAAATTTAGGCGAGAAAATTTCGAATTTTCAGAGAAAAAATTTTGGCGGGAATTCAAATATTCTGAAAAAAAATTTTGGCGAGAATTCAAATTTTCAGAGAAAAATTCTGGCGGGAATTCTTTCTAACAAAAGTTTTGGCGGGAATTAAATCAAATTTTCTGAGTAAAACTTTGACGGGGCAAATTCAAATTTTCTGAGGAAAATTTAGGCCAGAATTCAAATTTTCAGAGAAAATATATTGGCGGGAAAAAATCATTCTGAAAAAAAATTTGCCGGGAATTCAAAATGTCTGAAAATAAATTTAGGCGAGAATTCAAATTTTCAGATAATGGAAATCGGTCGAATTCAAATTTTCTAAGAAAAATTTTGGCGGGAATTCACATTTTCTGAGAAAAATTGTGTTGGCGGTAATTCAAAATTTCTGAGAAAAATTTAGGCGAGGAATTCAAAATTTCTGATAAAAATTTTGGCGGGAATTCAAAATTTCTGAAAATAATGGCGGGAATCCAAATTTTCTGCAAAAAATTTTGGCGGAATTCAAAATTTCTGAAAATTTGCCGTGAATTCAAAATTTATGAAAATAAATTTTGGCGGGAATTATTTTCTGCAAAAAATTTTGCCGGGAATTCAAATTTTCTGCAAAAAATTTTGGCGTGAATTCAAATTTTCTGAGAAAAATTTTGGCGGGAATTCAAATTTTCTGGGAACTGTCAAATATTGGCGGGAATTCTAATTTTCTAAGAACATTTTGGGCGGATTCTAATAGCTTGAAGTCTGAGAACATTTTTGGCGGGAATTCATTTTCTGAGAAAAATTGTGGCGGGAATTCAAATTTTCTGAGAAAAAAGGCGAGAATTCAGATTTTCAGAGAAGCTCAAAAATTTTGGCGGGAATTCAAATTTTCTATAAACCAATTTTTTCAGAATTTCAGAAAACACCACCCATCAGAGCGCGTTTTCAAGGTCTCACTGTATTATTCACTAGGCTCCGAATTTACAACAGTGACACCTCCGAATTCAATTCCATCCATTATTTGACTTCCTATAAAAAGAAACGAGTCAACTGATATTCCTAGTATTGAGACGCTTCAACTCTTCTAGAAATTCGAAAAACGGGCGACGTAATAGTTGCCACGTATGTTTGGAGATGGCCGCCGAAACTGGAAAAAAAATCTCGTTTAAAATAAACTGACAAGTCTATATATTTTTTCTTTAAATTTTTTTATTCGAAAAGCACCCCTATTATATAAATTCTTTTTTAACCTACCATTTTTAATATTTGATAGCCGAGTCTTTGTTAGGCCATGTGCAAAAAGCCGGTCGGTACCGGTTTTTGGTGACCGAATTTTCAAATTTTCTAGGCCACGTAGAAAACCAGGTCTTCTTTTGACACATTGATTGTTTAATTTTCTCAATACAGGACCCTCTCCTATAAAATCACGGTTAATTATAGGCGATAAGACGCCTATGGCCGAGTTTTGTTTATCTCTAGGTCATGTAGCAAAAACTGGCGATACCCTTTTTAACCCCAGAATGTTCTCAAGAATCATATTTTTTAATTGTGGTAAAGGCCCAGAAAATTATGTCTGCTGAAATCACAAGTCGGCAGCCTTCTCGCTTGCCAGGTCGTCCACGCTGCAAAAACTCTGTTTACATATAGACCTTTTCAAATAATTTCAAATAAAAATTAATCACTTATAAAATCATTTACTTCAGGATTGAAAGCTTTTGCTGGTTAAAACCGGAAATAAGTCGATACGGCCGAGTATTCTCTTTTCTAGGCCACGTACCAAAAGTGTTCAGATTTTCCCCAGAAAGTTGTCAAAAATCGTATGATTTGTGGAAAAGCTCAGCGTAAAACTATGAAAAAATGAGTCAAATCGGTGGCCGAGTTTTCTCTTTTTAGGGCACGCTGCTTAAACTTCCATTTACATTTTGGCTTTTAGATTCAAATAAATATTATTCCCTCATAAAATCGTTTACTGTCATTGTGAGAGCGGTTGAAAACAAAAAAATGGTGGCCTTTTTTTCTAGGCTACATAGCGAAAAACTCACCTAGTATACACATGAGCAGCTAACGACACATTCTGCCATCTAACATTATTATAAATAGGCGGATTACATACCAAATCCTTCGGATTATTATCCGCCTGCAAATATCGAATTTTTGCGGTATGCCCATTAAGAAGCTCCGGCTCCGTGAGCTCTTCCTCAAGCACTATATTACCCACAAGTGTCACGTATTGGTAATACATAAATTATGCGGAGTTGCTCTGTGGATTTGAAGTGGTTCGAGTACGGTTTTTGTGTCGTCACTTCGGTTTGCGATAATTACGACGTTCCCAGCATCCCCAGGGGCGATAAAGGTTAGTGTTATTTGGTTTTTGTAGAGACTGAAAGAGTGGTTTCAACTTGAAAAGTAACGTAGTTTAAAACATATTCTTCTTTTTTTATTCTGAGATATTTTGATTCTGAAAAAACAAAATTTTTTTTAAATAAAATTGGCAACCTCACAAACTGTGAGTTTGTTGAAATTTAGTTTTTACAACCAATTAATTTTTTAAATTAAAAAAATTTTACGTGTAGTCCTCTAGAATAATTTTAAAAATATATGAATAAGTGTTGAATTCTGCCCAGTTGTTTTTTTTGCCGGTCGCCGAGTGGACTAAGTGCAAAAATTTGGAATTTTTCAAACGGCTTTATATTCAAATCATCAACAACTTAAAAAAATTTAGATTAAAAAATTTTTTTTGGAAGTTTTCGAAAAATTTTGGAAAAATTTTTAATTTGATGTCAGAAAAAAAAACCAGTTTGATTTTATTTTTCTTAAATTCTTTTTTGAAAATTTGTTGAAACTTTTTTTTAAATACTAGACTTTTTTTTTGAATTTTCACGCTGTTCTGGTTTCCCTATTTTGAGATAGAAGAGTTTGCCGAACTAGGCCATTTTGGCTCGGCCATATCTGGGGTAGATTTACGGCGCGTTGCTTGTCGCGTCGCGGCTCGATATTAGTTGAAAAACTAAATGTATTTGTCAGTCGGTACACGACTTTCCCACGCGTTAGGCGATTATCAATGGACGCGAAAATTTAATGCAATGAGGAAGGCCGGAACCCCGTGAAAAATACATTTTAAAAAATACATGAAAAATGTTCAAATTTTCTTTTTAATTCATAAAATTTGAAACTACGTTTTGTAACTTTACAAAAAGATAATTTTTCGAAATTTTTTTGAAATATTTTTTTTCGATTCTTTTTGTTGATTTCAATTCTCTTTTCTAAACATTCAATATTCCTTACCTGTATCCCTCTAGCCATAATAGTACGCAGAAACAAAAAATGTCTTCGTACGTTGTTATCCAATTCTTTAATCTAGTGTATGAATTTCGAACACGTCTTAATGCAGGCAAGGGATGTATTCAAATATCAGTACAAATGCTAATAATATTACGATATAGGGTCCTGCAACGAATTCTCAACTGCTGGTAGAGTACGGAATAGGGTTTGAATTGAAAATTCCTTCGTACAGTTTCGTGTCGGAATTCATTTTTATTATGGGAGGAAAACAATCTAGTGGTGGTAGTGGTAATGTCAATCGCTAAATCGATGTTGAATAGCACACTTCCGATAAGTATCGGGCGCCAGCGTGGCCTAGGATTTGGGAAAATTCTTCCACCAGAAGGTAGTCCCAGGCTTTTAAATATGATTATTTCATCAAGAAATTTACAACTAAATTGAAAATCAACAGTTAATACATTTTTTCATAGACTTTTCGAAACATATCTGATTTTTACATATCAAATAACCCGGTACGCATCTAACCGTCAGTTGCCTCGTGGCCTAGAACGTTTGCAAACTCTTTCACGAGAAGACATTTCACCGTAGCCTAGTTACTAAAGCTTTGAAACTTCTTGCGTGCAGTTCGCTTGGAATTTTTGCTTGTTTTGTCAACTAACTAGGATTCAATAGCTATTAAAAAGTTTCAAAATTGGGCAATTTATGTAAAAATTCACAATTTTGAAACTTCTCGAAAACTAGACGATTAATTTTGGTAGTGGACTCAAAATTGATCTTCAAACACTAAAAAATAGCACTTTTGTAGAATATATTCCCATAAGATTTTTTGCAAAATTATTTTTTTTTACCCAAAAAAAAGGACAGTCATGGCTGAAATAAACTTTGGAAAAAATAAAAAAATTGTCTAAATTTGCTGAGGGTAATTCATGCATTCTGAAAAAATCTGGGTTTAACCCATCAAACAACATTAAAAGCGGCATGGGTATTTCATTGTAAAAATAATGCATATACAATAAACAATGTAGAGGTAGGTGCAAAATCTGTAGTTTCTTTGAAAGATTTTTTATTTATTTTTTTGTTATTTTTTTTGCAAATTTTCGTATATTTAAGTAGTTAGTTTGCATGTTACATGCTAATGAAAAGTTTGCATCTGCTGATACATATAAAAAAGCGCCGAGAAATTCACAATTTCAGTAAACCATCAGTAAGGTATTTAATTTTTGTAAACTTTAGTCTTCTGCTCCTCTAAAGCTTCTGGAAGAGGACACTTTCTATATCTTCAAAATATTTTTGTGCGCCACTTTCCTGTCAAATTTCTGGCATTATTACATCCAAAAAGTCCCCATAAAAATCGGAATTCCATGGCTACGACAACGTCAGCAAAAGCGGAAAGAAATTTTATATGCCAGTCTAACGAGTCACAAAGCATACACTGACGTTTCTATCAGAAAAGACAGGATATCGTATCAAAACAAAAATTGGGTGCGATTGCTCGATGCACCATGTGATATTTTGCTTTTTTTAAAAATTATTTTGCTCGTTAGTATGGTGCACTTATTCCGTGGGAATGCACGCGGTGTCATAATGCCCATTTCGTTGATGTGCGTAGATCTACGGCAAAAAAAAGATTGCGGGAGTTGAGACGCAGAGGTAGGGCTCAATTCGTGTGGTTAAGAGCGTGCTGACGTCACATTATGGGCAAAAAATTCCCGCATTTTTTATAGATCGAATAAACCGAAATGGCACATCCTGACACCATGTGAATGCAAAAGACTTTACGCGGAACTTTTTAGATTTTGTTACTAATAATCTTAGGATTACCAGTGCTATGGTTTTATAGAAAAATATCAAAAGCGTTCAAAAAGAAATCAAAACATTTTTTCAAAATTTTAGATTTCCACTTTCTATTTCAACTTTAAAAGACTTATTCAAATTTTGTTTTGTTGATTCAACGATTTTTCCGCATTGATCTCACCAAAAGAATTCATCACATCATTCAAAACTAAAAACTCACTTGGCTTTCATTCCGCTCAGATGACAAACTTTTTGGTGGCAAAGGTTCTTTGGGGGCATAGTATCCAAGGAGACAAGCATAAGTATCCAGTAGACAAACTGGGGTGTATCTTGGGGGGCATGTATCTTTGGTGACAACCTTTTTTTCCGACTAGATTTTTATATGTACCTTTTTCAACTACTTTTCTATGTTCACATTTTTCTGAATAAGTTTTTTAATGCAATTTTCAATCGATTATCGGTGATAATTCCCTCACCATTGAATGTATGAACGATGGATTCTTTTGGGAAAAGCTCTAGAACGTCCAACTAACTTGGAATGATCGTGCTAAGTCTTCCCGATGGTCTGATCCTTCAGCTCCGAAGGATCAGATGTGTCCCTTCATGTTCTGATCCTTCAGACATAAGTAGGATCGTAAGGGTACCTCCTGATGGTCTGAACCTTCAGATCTCGGCCAAAGGATCACGGGGCTCTTCCTGATGTTCTGTCAGCTAGGATCACATGGGCACCTTCAGATGATCTGATCCTTCCTGCAGATAAGAAGGATCGTAAGGGTGAACCACTTGATGGTCTGATCCAGCTCCAAAGTTTGAGATCACGACGCCCTTCCTGATGTTCGATGATTTCATCTTCGACAGATCATATGGATTTTTGACAAAATTTGAAAAAAAATTTTGAAAAAAAACTCGAAATTTTTTTTTGTTATTCTCCCTCTGCCATTCTTTAAAGAATAGTGCAAATTTATCATGATAGGACCGAATAACTTTCAAGAAACAGTATAACTATACATGATAATCACGCTTCTACCAAATAATGATAAATTCTCCGCGATGACAAACTTTTCGGTGACAAAGTTTGGTGGAGAAACAAAAATTACCGATACTAAACTGGTAGGTAAGGAGAATAGTGAAATAATAGAGTCCTACAATGGACTATTAAACATGTTCAGTAGGTCAGGACTCGTCCGTCAAAATAAAAAATTTGTCAAACGAAGTTCGAAACTGGGCCCTGTAGGATGGAACAAAGGGCGCTCACTACCACTACACCAACTATGCGAAAGTCGAGCCTCATCGAAGGCTATTATAAAACATAGTTCGAACGAGTATGATCGACATTCCACAAACAGTAATATCTCTCAACAAGAATCTCTTCAGGGAATTGAGGTCATTTCCAGTGACTATTAATTTATCGGTTTTTTCTCAAGTTGAGCATAGGGTCTTTTAATTTTTTGAACATAGAAAATCACGAAAGCTGCCTGTGCCCTGTATCCATCACTGGATCGAAATAGACGTAGCTCTGGCCTAAAATATTTCCTGAACAGTGATCATTTCATGTCCATTGTGTGTTTCTCTGTATTTTGCACCAGAAAGTTGAACAAAAATGATAATATTATATCGAATAATGGAACAAATACAAATAATTCTGACTAATCAAATTTCCTCCGGATATTGTTTTTTCTGTCATGATTATAAGTTTCTAAGTTTTTTATAATGTGTTTACAACGTCATAATTACCTTCCTTTCAAGCAAAAACCGTTCGAGGCGTCTTAAAAATAGATGTGCAAAAAACTTAATTCGTTTCGATGAACACCATACTACGGTCGGTGTGACTTGGCGTGGCGGTTTGCTTTTGAATCATACTATTTGACCCACCAAACTAAATTAGCAATGAAATTATTTACTGCAAATTCTGCATCGAAAAGGACATTACGATGGAAAAAATGACGATTTTAATTATAAAGCAACACATTATAAAAAATTTAAGAACATATAATCATGACAAAAAAAACAATGTCCGGAAAAAATTTGATTAGGCCTAAAATAAGGTTATTTACTCCTTTTTTTCCAATGTTTATCGATTCAATATCAACATTTTTGTTCGACTTTCTAGCTCAAAATTCATAGAAACTCACGATGAACATGAAATGATCACTCAGGAAATTACTTTAGGCCAGATACGTCTGTTTCGATCCAGGATACAAGGAACAGGCAGCATTCATGATTTTCTATGATCAAAAAATTCACAAAACACCCTATGCTCAACTTGAAAAACCGATGTCGTAAAAATAGTCAAATGACCTCAATTCCATTAAGATATTCTTGTTGATAGATATTACTGTTTGTTGAATGTCGATCATACTCGGGCGAACTAAGTTTTATAATAGCCTTCGAGGAGGCTCGCCACTTTCGCATAGCTGGTGTAGTGGTAGCTCTGAGCACACTGGTTTGCATCCTACCGGACACCAGGTTCGATCTTCGTCTGACAAACTTTTTTTTATTTTGACGGAAATCAGTAAAACACCTACTGATGTTTAATAGTCCATAGGACTACTCTATTTCACTATTCCTTTACAGTTTTCGGTAATTTTTGTTTGTCCACCAAGATACTTTGTCACCGAAATGTTTGTCATCGGCGAATTTATCATTATTTGCTAGAAGCTGATGATCATGTATAGTTATACTGTTTCTTGAAAGTTTTCGGTCCTATCATGATAAATTTGAACTATTCTTTATAGAATGAAAAAAACAAAAAAAAATTTCGAGTTCTTTTTCAAAACTTTTTTCTTTCAAATTTCGGTTGTCAAAAATCCTTATGATTCCGTCGAAGCTGCGAAGGATCAGAACATCGTAGAGGAGGTACCCTGATCATTCGGTTATCTCTGAGACAAAGAGATCATCAGGCAGAGCCTCCTGTTCTTTTGGAGCTGAAGGACACAACATCACGAAGAGCCTCATGATCCTTCTGAAGTAACAGACCATCAGGAGGTACCCTACGATCCTTCTTATCTGAAAGATCAGATGTCCCCATCAGAAGGTACCATGTGATGCTTCGGATCGGAAGGATCAGATAGGACATCAGGCAGAGCCTCATGTGCTTTTGGAGCTGAAGGAGAACATCAGAGCCTCGTGATCCTTTGGAGCTAAAGGATCACACCATCGGGAAATCAGGTACCCTTACGATCCTTCTTATCTGAAGCATCAGAACATCAAAAGCCATGTAATCCTTCGGAGCTGAAGGATCGACAGACCATCAGGACGAGCCTAAACATGGTATTCCAAGTTAGTTGGACGTTTTATCAGCTATTACCATCGTTCATACATTCAATTGTGAGGGTAACCGAAAATCGATTGAAAATTGCATTAAAAAGCTTATTCCAGAAAAATGTGAACAAAAATTAGCTGAAAAATACATATAAAAATCTAGTTGAAAAAAAGGTTGTCATCGCCAAAGATTATGCCAGATACCCCGTTTGTCTACTGGAGACTTTGTCTTGGATCCCCGCCAAAGAACCTTTGCCACCTAAAAGTTTGTCATCTCGAAAGAAAGCCCCCCGACTCTGCGCGTTATGGTGAGACCCTAATACGTCATGTTTGACCCGCAAAATATCTCGTAGCGAAAAATACAGTTATTTTTTAACCGTATACTGTAGCGCTGTTGTAGAAGTTTACGGGATCTCTATTTTTCTAATGATTAAAATTAACAACAAATCAGAAGAATGACCCTCACACGAAGAAACGAAGAGAATGAAATATCGATGTCACTTTTCGGAAAAAAAATTAATTTCAAATGAGCCCGTAAATTTACACATGCGCTACGGTAGACATTTAAACAATTACTGTAGTTTTCCGCTCCCAACGAGAAATTTTGCGCGTCAATAATAATATATCGCACAATAAGCATTCTCAGAATTTTGCATGTTCCCGGAATAATTTATTTAATGGTTTTTTTGGTTGTTTCCTATTGGTCCCAAAAATCAACAAAAAAAAATTTGTTATGAAAAATTTCTGTTTTCTTCCGTTTAAAATCAAAAGTTTTTTTAGTTGCTTTTTTTGATAAATTTTTGCAACCACCCTGATTTATATCCCGATAAATGTTTAATGTCCCGCTTATGATATCTGGAACTGCCTCTTTGCACGTAAAATTCCTACCTGCGGACCAAACACACCATACATCACGCGCACTTTTTTTTTTTTCATCTGGACAAACACATTTTCCGCATGATTTCACTGACTTTATTTAACTCTCATCACTCGTATCGTTAAAAAATGCCCTAATCATCAACCTATTTTCATTGTCATTCAAAAAAAAAAACTATTTCGTACTCGGCGATCGTACTAATTTGTCATCATTGCGTTCCGTCGAGCAAAAATCAATCGGGAGTACTTTTACGTTTTCCGTTGAAAAAAAATCCAAAAAAAACACCATCCAAAAAAGATCCAAAAAAATTCCTAGTTAATTAAAACCGGGAATAAAAAATTCAAATAAAAAGTTCAAACGTTTCGTTATAAAAATGTACACCGGTAAGCTGAAACATATACATTTCATAAAGATTCTAACAATGTGCGACGATACGCTCGCAGTTTGTAGTCCAGCTCCATTCAGTGATGATGTAGAGGTTATTAAACAACAGGCGATCGATTATCCCATACAAATCACTCTGGTAGCGATTTCTGGGAACGGTAAGCCGTGCGCTCCGTTGTACTCATAGTTCGATGAATGAAGGCATCCGTGTAAGTTCTCAAATTTTCAAATGAAAACTGCCAAAAAAGGTTTTTAGTTATAATCTAAGAAATTATCGATTTTTAAATTTTATGAAAATTTTTTCGAAAAATTTGGGTTTTTTGTTTTTGTTTTTGATTAATTGATTGTTCGGCAAAAATGTCAAAAATCGAAAATTTAGGTATTTTTTCTTGGGATGAAAAAAAAAAAACTTTATCCGCCCGGCTAAGCGAAACTTGTGCTTTTTCGGTTTATTGATTTAAACCTTTGATTTACTGGAAAAACTTGAAAAAATCAATACTTTTATCACTGCGATCTGGTCTTCCACTTTAAACCTCGCGCTCCATTGAGAATCGCGGACAACGCATCGCGGGAAAGCCGTGTACTCCACACGGACAAGAATACAATTAGATTTACAACTAAAGTGTGACGAGCCGCGACGCGACACAACGCGCCGGAAATCTACCCCAGATATGGTCTGGCCTAGATCGGAAAAAACTCTTCCATTTCAATTTTATTATGAGGGAAGCCAGAAATCTTTGTTTTTATTTTATGCGATTTTGCTCTAAATTATCGATTTTTTGGAAAAAGTTTGAAAATTCCATAATTTTTTAATGATTATTGGAACTAAAAATTAAAATTTTCACAATGCTCAAAAACAAAAATTACTGATGTTAGATAAAAAAAACACGGCATGCAATTTCTAGACCACCGAAACTATCAAAAACCTCTTCCAGTGACTCGTCCGGTCCGTCTCTACGCAGACGGTGTCTACGATATGTTCCGCTACGGCCACGCGAATCAATTCCTGCAGATCAAACAACCTCTTCCGAATGTCTACCTTATTGTTGGCGGTGAGTTCGGCCCGCGCAATTCAAAATTTTTAATTTAAAAAAAAAACGATTTTGTCCAGTATGGTCCGAAGAGTCTATGAAGAATAAGGGGAGAACTGCAGGGCAAAGGAGAGCGGTTCGAGGCGATTCGGCATATTGTGCCGGTACGTCGACGAGGTGTATCAATGAGGCGTCGCCGTGGATATCTCCGATACCGTTTTTTGAAGGAGGGAGGTAAATTGCGCGTGAGATTCGGTGTTCGCACAGTTTTATGTCCAAGAACGAAGGAAATTTTATACCTAAATTTCGGAGAAAAATCATCAGTATAAATTATTGCCTTTTTTAAACGTCACTCACAAAATCGATAATAAAAGTTTGAAAATCACAGTCAATTTTTATTTTCAAAATTTCGTTGTTCTATCACGGGAACGCAAATTTCTCAGCATGCGTACTACACAACACATTTGACGCGCAAAATATCTCGTAGCGAAAACTACAGTAATTTGTTTATTGACACTGTAGCGCGCTACTGTCGATTTACGGGCTCTATTTTAAGCTCTTTCTATCGATACATATAGGATACATATTGATCCCGTAAACAGACAGCGCGCTACAGTAGTCAATTAATGAGTCACTGTAGTGGTCTTTCACTGCTACAAGATATTTTGCAGCCTCAGACATGTTGCGCAATAGCATCCTCAGAATTTTCTGTACCCCGTAACAAAACTTCGAGTTTTTCGAAACAAAAAGTTTAATTTAAAAAACCTCTAATCTTCGAGATATTCGAGTATTGATCTATTGATTTTTCGATAAATATTTATTTTTTTTTTACGATATTCGAAACAATTATCGAAATTTCAGAACTAACAAAAAACATTTGCGGAGGAAAATCGATAACATTTTCAAAGTATATTTTGTGTCCATAAAATTGATTTTTCCGTAAATTTAATTTGTTTGATTTTCGGGTTGGGTTCGTATTCCTAATTTCGGTAATTTTGAGTCGATAATTTTTTGTTTTTTTTTTTCAATTGAAACTTTTATTGATCAAGTTTCTGGCCAGTGCTCTTATAAATTGAAATGAGAAGATTTGGCCGAACCAGACCATTCTGGCTCGGACATGTCTGGGGTAGAATTACGGCGCGCGCGTCGCGCCTCGATCCTTTTAGCTTGTAAAACTACATGTATTTGTCCGTGTGGAGTACACGACTTTGCGTTGTCGAGCAGGTGATTGTCAGATGGAGCGCGTACAATGCTATGAGGAAAGCCAGAACCCCGTGATTGATTAGTTTTTGACTTAAAAACCTGATTTGAAAGAAAATATCGGTAATTTTTCGGATTTTTAACAAGAAAGGTCTTTATTTCCGGAAACTTTCATTTGATAATTATTTATTTATTGGTTTCTCGGAAAAATTTGCCGAAATCTATCGATAGTCGGACAATTGGACGAAAAGTCGAAAAAAAAATTCTAGGCCACGAATTTCCTCTTCCAGGTTGACTTTATGTCACACGACGCTCTGCCATACCAAGGTACCGCCGGAGAAGACATCTACGAGAAGCACGGCACTGCTGGCATGTTCCAGGAGACGCAGAGAAGCGAAGGAATATCGGCGAGCGATTAGATTTGTCGAGATTATGTCAGCGACTACGACACGTATGTCAGAAGAAATTTGCAGGTGAGAGGATATTCGGCCACCGATTGGAACGTTGGCTTTTTTACAGTGAGCCTGGCCTAGAAAGGGGTGGCCTAGAAACAAGTGGTGGCCTAGCAAGACTCTTCCATTTTTTTCAGACCAGCAAATATAGTCTGCAAGACACCGTAGTGGTGAATAAAAGAATTGGGCCGTGGCCTGCTGCAAACGTGGAAAACGTTTTGAATTTATTGATTGAAAGAATCTTGACGACCATTTGCCATCGTGATCTTCAGCGAAACCGTTCGAACAACAAAAGGGCCGATGAAAATGTGGAAAATAGGGAGAATATTGAGTTTTTAAAGAAAATTCGAGTAAATTATGGGAAGAAAAATTATACTCGTGAAAGTTAACTGAATTTATGCAATTTATTTTTTGAAATTCTCAATTTTTTTGGAAAATTTTTTTTTCTTAGGGCTTAGTCGAACATTTGGCTTTGTTTTAGGATTAAGGCTCATGCTTAGGCTAAGGCTTAGACAAAAACTTAAGCTTAGGCTTAGGCTTTTGATTAGGCTTAGGATTCAGGAGTCGGTGTCTTTCACTTAGGTTTGGCGTCATTGGCGAGCGTTAGCTCGCTATTTAGGCTTGGGTTAATTAGGCTTAGGCTTAGGCCTAGATTTAAACTTTTAGGCTTAGGGTTAGAATCACGCTGGCTAGGGGAAAAAAGAGAAATTCCAAAAATTCCAGGTTAAACGTAAAAAGGACAAAAAGGTACATCCCGAAGTCGGGTCAAAAAATAAAGTGATGAAATGTTCGGGATACATGAATGAATATTTCTGAGTCTCGCGGATTTATTTTCATAATCATATTCTGAACGTATTATTGACTCGTCGTGTGGGACATTTCAATGGATTTTCCATAGAAATCTCTGTAGAATTCCGCCATCGGCCAACGATTCTTCACAAGAGCCAAACTCGGCGAGTCGGTCAATGTTTGAGCTCGTCTGAAGAGTTTCAAAATATATGAATTCATTTATCTTGCAAACCTTTCACCGTTTGTGTTCAGTAAAAAGTCCGTCGGGGCAGATTTCCGTATCATCAGACGATTTGCATGTATACAATCCACATGAGGTTTTGTTCGCCTTTAGAATTTCTCCCAGTTGCCTGGAACGTTAGTTTTTCTGAATTTTTTGAAAGGTATAGAGATAGCAACAAAAAAAAAAATATACCCAAATAATGAGCTATTTAATCTAGGGGCTTTATTACAAATACTTTTCTAAGAACGTCTTGGTCTTGATAAATGCGTGCTTTAAGAAAAAAAAAAGTCAAAAATAATAGCGAGTCCTCAGATGTCGGGCGTTGTACTTATTAAACTCGGGGTCAATAAGTTCCGGGTCAAAATTCATAACTTTTGCGTAGCAAATCGATTTCCTTAAATGTGGGACTTTATGTTATCAAACATGGTCTTTTATTTGACGGCACTTTCAAAAAGTTTTGCCCACTCCATGTACCCAAGCTCGGATCCACTTTTTTCAGGCGTATGCCCGATCTCGCATTTTCTTTGTAACTTTCAATTGAGACTTTTGTGCGGATTTTGATTAATTAAATATACAATGTAAGAATACAATAAAAATTTGAGAAAAAATTCGCTCAAAAAAACAATTTTTTTGATCGGCAAAAAACTTAACCCTCGAAAAAAATTTTGTCGCCCAAATCTCTAGGTTTTATGGAATGATGCAAACAATTCTGAACAATTATTTAACACATAAAAGTTTTTTGGATTTAAGGCGTCACACACAAGCGGCAATGGAAAAAATGATTTTTTAGTGAATTTTTTGAAATTTTTGAGAAATTCTCGTCTAAATATTAAATTCTCAAATGTTTTGTGTGTCGAAAAATTGTTCAGAATTTTGCATAATTAGTCTCCTGTACAAAAATCCAGAAATTCCGACAAAAATTTCTCCGAGGATGTTGACGAACCTAAAAAATTTGTTTTTTTGAAGGAATTTTTTCTCTTTATTGTATTCTTACATGTATACTTAATAATTCAAAATCCGCACATAAGTATCAATTTACAGTTTCAAATAAGCAAGATCGGGCATACGCCTGCATAAAAAAGGATCCGTGCTAGGGTACACGGATTGGTCAAAATTTTGAAAGTGCCGTCAAAGACCATGATAGATAACATAAATTCCCACGACTTTTAGAAAAATCGATCAGCCACCCGAAAAAAGTTATGAATTTTGACCATGGTATCGAACTTTTATCGTGTGCTACATGCTTGTCGCGAAATATACCTATTTACCTATACCTGTACCTATACCTGCTTCATCTTTCGATATACGCCGTTCAAATTGTGGAGCATCTTGTCCAAATCGTCGTATCCTCTTCCAACTCCCAGGTAGATTAGTTGTTGAATCTACAATTTTATATTTAATTATAAATTGTATATTTTTGTAATTTAAAAAAAAACCTTTCGAAATGCGGCTAAGTAATCAATAATATTGACCTTAATGCCATGGGTCCTCATGGAATTTTCTGCCCATGCACAGTGTAGGAGAGCTCTTCCACTCCGTTCCGATCGATCAGCACATTACTTAGATAAATTAAGTCCCTGTGCTCGAATTCAAGAGCTGCTTCAGCTGCAACCATTGAGAGACCACGAGCTGGTGAATGATGGAAAATAGTTCATCTTCACTTTCAAGGACAAAATCTGCCAGCGGGGAAAGATTCCACCATTTGCCGAGCCGGCTGAAAAGGATAAAGTTTTGATGTTCCTGAAGAATAAACATCTGGCCTCAAATGTTCGGATTCATTGAGCTTCTCGTAGGCATCCCAAGCTCTCAGTAATCCCTTAGGATTTTCCCCTATGACTATTTGGGCTGAAATCATTTCGATAAAATTCGGCATAGAATTCCAAGAATTTGGGTCTCGAGTATCACGCCGACAGTGATTTCCTTGCCCATCACAATCACCTCTGACAAAACGGCGTGGGTTGTTGGAATCTCCACGGATTGATTTCCATAGAAATGCACGTTGTTTTCGAATGGCAAAACCTTTGTTAGCAACCGGTCTACCATTCGGCGCCAGACAGCTGAGAAGACTTCACCGTAGGCTCCTTCGCCGAGCTTCCTTCACTTTTCGAGCATCTAGCGCCGACGTTGATAGGCTACCCCATGGTTTTGCTTCTTTTTGGGCCAACAACACGGCGAAGTTGTGCCATGGACGGATCTTTTTTGTGAAATGTGATACTGCCAATGGGGATATTTCTAGAATCAGGATGAGCTGACCGAGCACTTGGAGCTCATTTGTTCCAGTTCAGCAAGCATGCACAGTTCGAAAGGATGGACAGTCCGAAAATGACTTTTCTGAAATTGTCATAGTTCATTGTGAAAATTCGTTTCGGCTAAAAATGCAAATGCATTATGTTTCTGAAACTCACCAGTTGACTCTGAAATCGTCGTTCGTTGTCATGTCGAGTGCCAAGAACGGTGGTGGTCACCACTGCCGTCTTTGTGAACCGCATCCAAATCGACAAATGTCTCGGGAGTTAACTATAGAAATGAAGTTTTGAAAAATTAAAAAACTCACAATTATTGAAACACGTTATTAGGCCAATAACTTCACACGTGAATTAATACATTCATGTATTCGATTTTCTCTGACTGTTATCACGGGTTTCTGGCTCACGGTAGTTCAGCCACGGTCCCAGCACAGAAAATAGATGTCACGTTCATGACGAATAATCAGTCTGAAAGCTATATTGGCTGCTATCTCGAAAACTCTCTAAAAACGCGTTTTGAGAAATTATATTATGATTTTTTGGAGAAAATCAGAAATTATTGATTTTTTTGAAGGAGAAAATGGGAAATTTTTCATTTTTATTGGGGAAAATCAGAAATTATTGGTTTTTGGAGAAAATCAAAAATTACGATTGGTAATTTGAAGCAGGGGTGGGCAGCAATTGCCGTTCGGCAAATACGCAGATTACCGGCCGATTTTCCGGGTTTTCATTTACGGCAGTTTGCCGGTTTTGCGTTCAATTTGCCCGACATTTTTCAATTTCTCCGGCAATTTGCCGGTTTGGCGATTTGCCCGAATTTTTCAATTTAACCGGCAATTTGGCGGTTTGCCAATTGGCCCGACATTTTTCATTTTCGGCAATTTGCCGGTTTGCCGATTTGCCTTACCCGAAATTTTCAATTTCGTCAATTTGCCGGTAATCGGTGCCGATTTCCAAAAATTTTCATTTTCGGCAATTTGCCGGTTTGCCGATTTGCCGGAAATTTTCATTTTCGGCAATTTGCCGGTTTGCCGATTGCCCGAAATTTTTCGATTTCGGCAATTTGTCGGTTTGCCGATTTGCTACGGAATATTTCATTTTCGGCAATTTGCCGGTTTGGCGATTTGCCCGACGTTTTTCAATTTCGGCAATTTGCCGGCGTTTTCCGATAATTTGTCGAAATTTTTCATTTTCGGCAGTTTGCCGGTTTGCAGATCTGCCCATTTAAGTTCGGAACTCAGATTGGCGGTTTGCCGATTAGCCCGAAATTATTTAAACGGCAATTTGCCGGTTCGCTTTAGCCAGAAATTTTTCAATTTCAGCAATTACAATAGAGGTCGATTTACCATTCAGCTGCCGGAAGTCTTCAGAAGGAATTTTTTATAATAAGGAACCACTAAACACAGCGTTTTGAAACTTTTCCACGTTTTTTAAAGATGATTTCATAGAATTTGCTTACTTGGTTTGTCGAATTGCCAGAAGTTTTTCAATTACAAGTTGGCAATTTCCGGAATTTTTAATTATGGCAATTTGACGGTTTGCCGAATTATTTGCCAGAAATTTTTCAAATTCGCCAAATTGCCGGTTTTCCGATGGAACTTTTTCTCGGCAATTTGTCGATTTGCCGGAGTCTTAAATTTTTCCAATCAATTTGCCGATTTGCCGGAAAAAAAATTGTTTCCCGCCCACCCATCAGTTGATGAATTCATCGTTCTTTTGTGTGTTTGTACTCCCATCAATCTTAAACTCGACCCGGACTGCAAAGGCATATTTACAGTTTTCTCTTCTGGTAGTGAAATGGTGGTCTTAAGTTTCGAAGACTATGCCCACGTAATTTCTAAAGTATTTATGTTTTGCAATTGTTTATCAATGACCCTAAAAAACAGACAAAGCATTTCCGCGTGGCAAATTATCAAGTAACTTGCCTAGGCGAATAGTACTGATGTTATAATTTTTTTTTAGAATCAGTTTGGAATTTCGAATTTTTCTGAAACAACCGCCGGCAAAATGAATTACTGTGAGCACTTTTGATTGTTCCCCGGTTTTCTTGTAGATTTTTGTGCAAAAAATTTCGACTTTCAGCGGTAAAAAAAATACAAAAAGGTCGAAGAAGAAGGAAACGAGCAACACTGCTTCTTGGTCAGGAGGCCCCAAAACCAGGGGGAGCAAAACAAAAAACCAAAACCATCGAAAGGAAATGCGACAGGGGTCGCGGCGAACCGGAATTGACTGCACATCGAAAAAAACCAAGACAGCAAAAAAAGTGAGACAGAAGAGAGATATAAATGCACCGGAGTTCAATTTTAAGCTCGTATTATAGATATACGTCATTGTATCAGGGGTGGGCGGCAATTGCGTCGTTCGGCAAATTGACCGCCAAATTCGGCATATCAATTGCCGGTTTGTCGATTTGCCGGAAATTTTCAATTCCGGCAATTTGCTGGTTTGCCGATTTGCCGGAAGTTTTAGGGTCATGTTTTTCGGTCAAATCAGTTTTGCCGGAAATTTGGTTATATAAGAGACGGACTGTCTTTTTGAGTTGTTCCCGTTTTTTTACATATTTTCATAGAAATTCATCGAGATAATTTGCCGAAATTTTTCGGCAAATTGCCGTTTTGGCAATTTACCGATTTGCCGGAAATTTCCATTCCGACAATTTGATATGCCAATTCGCCGGAAAAAATCGTTTGCCGCCCACCCCTGAATATAGAGCCCTTTTTAGTCTCATGTCACCTCGATCACGTGAAATGCTGTCAGACAGCAAAAAGACGACCGTTGATGATGATTCAGCAGTTCCAAGAACAACAAATGTCGCTGGAGCAGTCACTTCTACGATTCCTGCTCTCACCTCTGAAAACGTCCCGTTCTAATTCAGCCACCCAAAGACCTTATATGGTGCGGGACGAAAGCCAAAACGGTGCTCCGGAACTTGACGGATCTGGCAGCGTTTCACTTTCACTCAAGAGCTCACTGACTGGAGGTGATAAGTGGCTTGGAGAAGCCGTGGCAAGGAATTGGATTCGCTCGGTTAGCATCCTTTTTTTATTGGAGCGGCGGCGTAAAAATCGTGCCAGAGTTGCGAGAGGGGGCGTGTTTTTTAGTTTTTCTGTTGTTGGTGGGGACTTATTATTATTAGGTTGGTGATTTTATTTTCACTGGTGGAAATCAGCTAATAAAACTAAAAAATAACTTCGGGATATGCAAATAAAAACCCAACTTTAAAAAGCGAACTCCGATCAGCAGTTTGCTCGGCCCACTATTCAACCAATCCAATTGGTTCGTTGAAATTCTTGGGAACTCATTGTTAGAGGATAGAATTCAAACGAAAGATTAGCAAGTTCACTGGTTATTGCTTTCATTAGAATATCATTGCTTATATATATATTTCAATAAAAAAATAGTGTACGTCATCAATGGGCGGAGCCTCTTCCATCGTGGAGACCCATCGTGGTGAGACACGTGGTGGTGAGACCCATCGTGGTGAGACTTCGTGGTGAGACGTGGTGGATTCAGACCCGTAAATAGAGACCTGCGCATCGAGGTGAGACCCCTCCTGGTGAGACCCATCGTGGTGAGACCCATCGAGGAGAGACCCTTCGTGGTGAGACCCATCGTGGTGAGTCCCCCATTAATTTTGGCGTGAAATTCAAATTTTCTAAGATCGATTTGGCTTTTTTTCGTTTAACGAAAAATCTGGAAAGGAAATTCTAGCATTTTTTTAGAATAATCTGATGAGGAAATTTCTTACTTTCCAGCGAAATCTGGAAACTCCAAGGATTTCCTAACATAATCTGGAGACTTCTAAATAAGATCAGGAAATTTCTAGAACTTTTTTATAATCGTCTGAAAACATCTTTCTAGAGTATACTAAAAACTTCTAGAATTTTAAAATTCCGCGAAGATCGAGGAAGAGATTTGCCAAGTTCAATTAATGTGGAGCCAGACGGAGCACGCGCTTTGCGCGCGCGAAACGGCTGGTTTTAGATATTTTGTAGTATTTTTCAAATCTTAAAAGAGCAGAGGTGAAAAAAAAACGAACTGCAATAACAGAAAATCGATGTCGAGAAGGACTGTAAAACCTGGAAATCCAACTCGCGCCAAAATTTAACCAATCGGAAGACTTTCCTGCCTTGGACTTCAATCTCGTGAAACTTGGCAAAGACTAGGTGAACATCAGTCTTTTGCGTAGATGTTCCATTGGGAAGAAATGTTCATCTAGGTCAAGCTCCGGTCACACGGAAGATACATTAATGTTCGACAAGCGAATCACTCACATTGATCTACTCGGCGGGCCTGCGATGAAACCATCGAATTCTTCCCTATAAAAAAGGCAGAAGATTATACAGAATTCCGTATGGTCAGATGTGGATCAATCCCTTAACCGCCGTGTCGAGTATGTCAATGACGATGTGTACCGATTTGCAATTGAAGGAGTGCCCCACGGATTCTCCAACTCGATCAACTGCAATGTGACTGTTATCAGCATTTGGAAGGACGCTGTGCCTTTGAAACAAGCAATCGCCTCAGAGAGGCACTTGGTCTACACTACTTCTTGCTTCTGAAAGCACCCCCTGACGAATGCGACCGATGATCGTCTCACCACGTGGAGCTTGTAGGACGAGCTGGCTACTTTTTGGCACTTGCGGTTGCAGTCAACACGATTGATGCAAAGCTGGCCGAACCTGTATTGCGGATATTGTCCAATCGATTAGCTCCCAGAGACCAAGAGCCGTGGATTCTTGTCAGTATCTGCTCCCTGTGCATTTCGTTGCTCTACTTCATCAAGGAATTGGTTTTTGAGTTCTTGTAAAATGAGAGAATAATTCTCTAATTTACAGAAGAAAGGGACAAAACAATCAGAAGGGGAAGCCAACACTGAGCAACAAATACGTCTACAACAAGTCGGTTGAGTTGACGAAGCAATTAACCGTTCTCCTTCTAGAAGCCAGGAGAGTGTGATGGGACCTGGATAGTTCTTCTCCATTATGAATATGTGAAAAGCATTTGAATTGATCTGGGTTTGGAAATGAAGAATTTTATAATGGATTCTTTCCGAAATCTTCCTTCCTGCCTGCTGTTAACTCTGCGGCTTGATCTGCAAAAAAAGCGGTAATATCTCCCCCAGGAAGACGTCAGCACACTCTTAACCATGCCTTAGTTGAAACGTTTCTCGGTATTCTCCCGCATTTTTCGAAGATCACACCAAAATGGGATACTTTGACAACACGTGCCTGCCATCGCTTCCTGAACGGGGATTTTGTTAGAAAATTCGTGGAAAATAGGAAGAATCATTTCGAGAAAATGGAATTATTGACTCTTTTCTGATTTTCTCAAACAAAAAAAAATTAAAATCGAATTGATTTCTGGCTTACCTTACCTAAATAGAATTGAAATGGAAGAGTTTGCCGAACTAGGCCATTTGTGGCGGCCTGGGGTATATTTGCGGCGAGTTGCGTGTCGTCGCGGCTCGTTGTTGTAAATCTAAATGTGATTCGACCGTGTGGAGTACACGACTTTCACATTCGTTGTGCCGCGGGCGATTGTCAAAGGAGCGCGAAAAATACAATGAGGAAATCGGCCAAAACCCCGTGTATTGATTTTTCGAAAATTTCGGAAAAATCTGCTAATTTTATTCAATATTTACATTTGTCCTAATTTCTTAGAAATGTTCAAAAAATCTGATTTTCTTTTTCCCGATGAATTTTTGTAAAATAGTTGCTATCCGTATTTCTCGAAAAGAATCGATTATTTTTTTCCGGTTTCCTGGTAAGCTAATCACTTCAGAAAAAAGAATTAAGTTAATATATACTTATAAAAGTCGTAAAAGGTTGGAAATATAAAGTATTTAAATCAGAACAGCGATTACTGACTGAAGCATCTCAACTACCAGGCAAGTTCTTCTTATCGAACTCGACAAATGAAACGAAGAGGTCGGAGCTATAATTGTGCCGATCATTTTCCGGGCGCCCGTCTCTTCGAACTCGGATACGGTAGCCTGCCCGACGTATGTGAAATCGGCCATTAGCACTCAATCGGCAAGCGCCGATTGATGCTCCGTGGCCGACGATAGGGCTTCCTGAAAGAAAATCGATAATTTGCGGTGTGTTTTTATTGATTTTTATGTGAAAATTGGCAAATTATTGATTTTTCGGCTAAATCATAAATTACTGATGTTCTAACCCGTTAAAATCAGTAATTTATTGATTTCTTCGGCTAAATCAGGAATTATCGATTTTTCAGTGAAAATCTGAAAATGATTGAACATTTTACAGCTCTGCGAAAATCAGAAATTAGTTTCGCAAAAATTCACCTTCATATTTCTAAATCGCCACGCAGGGTCTTTCCGACACGTGGCACACACGCGTCATCTCCACATCCTTCGCGGGGTAGTGTGTTCTGAAAAAAAAGCCATTCGGTAATTTTTATAGGTCTCGCACCGGATTGCCGCCACCGGTTATCTTCATTTTTCCAACTAAAGCGCCAACACCGGCGCCGGCATCTTCTTATTTTTCCACGTAGCCGGCGCCAGCCGCGCCAAAACTATCTTCAAGCGGCGCCGGGCAGCTTTTTATTTTCCCCATAGCGTGCCAGCGGCGCCGCCGGCATCTTTTTATTTTTCCACGTAGCACGTCGGCGCCGGCAGCCGCGCAAACTATTTTCGCCGCCGCCGGTTTACTTTTCCACGTAGCGCGCCAGCGGCGCCGCCGGCAAGTTTTAATTTTCTTCCACGTAGCGCATAGGCTAGCGCCGCCCCCGGCATCTTTTCATTTTTCCACGTAGCGCGCCAGCGCCGGCAGCCTCGCAAACTATTTCACTGTTCGCCCGCCGGCATCTTTTTATTTTCCACATAGCGTGCCAGCGGCGCCGCCAGCATATTTTTATTTTTCCACGTAGCGCGCTAGCGCCGGCGCCGGAATTCATTCTTTTTTCCACATAGCGTGCCAGCGGCGCCGCCGGCATCTTTTTATTTTTCCACCTAGGGCGCTAGTGCCGGCCGCATTTTCATCTTTTCATGCAGTGACCGCCAGCGCGGCCGCCGGCCTCTTCTCATTATCCATGTCGCGCTAGCGCCGGCGGCAGCGCAAACGATTCTTCGCCGCCCCCGGCGCGTTTTCCTTTATTAATTAGTGCGCCAGCGCCGCCGCCGGCATCTTTTGATTTTTCCGCAGTGCGCCAGCGCGGCAACGGCGCAATTCTAATCTCGGTCTTTTTTGACCGATACCTGAAAACGCCTAGGAATATAGTGGGGCCAAATCTACAAGCGGAAATTTCTCAGCTAGTTTGTCGGTTTCCCAGATTCCAGGAGGCTTATCACAAAGATAAAGTGCCTCACAAAGGCCACCGTCCGCCTTCACTTTCATTCCTCTATCCTCAATAATCGTCGAAGCTGTCTCAATTGTCCGTCGAACGGCGAGGCAAACGTATGCGAGATTGCCATTTTCGAACCCATATTTTGCACTCTTTCGCCTGTTGCCGACCGCGCACGCTGAGCATCGAATTATCCGTCGTGAGACCGTCGGCTCCGTCGAGTAAATTACGCCAATTTCGATTGATATTGTTGTCTCCTCGCTGCAACGCAAAAAATCAATAATTTCTGATTTCCAACGTAAAATCAATAAGTGTTCTGATTTTTGTTGAAAAATCATTACTACCGATTTTAACTGAAAAATCAATAAATGCTGATTTTCCTTTTTTTTGCACGTACAAAAGTCGATAATTTCCAGATTCTCATCGAAAAATCAATAATTTGTGATTTTCGCCAACAAAAAATCAATAATTCAGATTTTTACCGAAAACACAAATTGATAATTTCAGATTTTCACCGAAAAATCAGAAATTATTGACTTTGGATAAAAATCAAAAATTTACTGATTTTCATCTAAAAATCAATAATTTCAACCATTCGCAGAAACATCGGTCATTTTTAATTTTCACCGTAGAATCAATAATTTCTGATTTTCACCAAAAATTATCAAATAATTTTAATTTTTTTTTCGAAAAATCAATATTTTCTAAGTGCTTTTTATCGGAAAATCAATAATTTCCGATTTTCACCAAAAAATCAATAATTTCAGATTTTTTTCGCATAAAAAAGCTCTGTAAATAATTTACGAAGTTGACGAGAAATCAATAATTTGCTGATTTTATTCTCACAGAAAATCAATAAATTTTTTTTGTTTTTCGTTGTTTTTTTTTTCTAAAAATCAGCGTTTTTAATTTCCCCAAAAAATCAGTAATTTTTTAGGGATTTTATTTTTCGAAAAATCATTTCAGATACCGAAAAAATCAATAAATTCAAAAAAAAGTATTTCATTTTTTTGAATTCTTCAAAGTACCGTTCCACGTGTCAGAACAATCCAAATTTTCCGTGGATAAGTTATCGGCATCCTATCGATATCGGTTTTAGCTGAAGAAAAAACTTAAACAATTGGAAAATTGTGTCCTCCTGTCGGACAGGTGCTCGGTGCTCTCCCATCACGGCTTGTCTACAAAAAATGCGGGATTCTTCGTTCTTAACCATACGAAATCAGTTGACTCTGCGTCTCTCTTCCCGCATTTTTTGTAGATCAACGTAGATCAGACCAAAATGAGGAGCACACTGAATGAAGACACCATGATTTTTCGAAACAAAAGAAATTCTCAAAAAGTGACGTCAAGAGGTATATAGGTAAATCGGATACTTGGTATCAAATGACGGAAAAACAAACGAAAGTTGCAAAATTTTTAGATGAAATTAATTAGACTTTGGCGGGAAAAACAGATCAAATTTACATTAAAATACCGGAAAAATAGGGGGAAAAAAGCCTAATTATTGCCTAAAAAATTCAGGATTAAACGGGTTGTACTTTTTCTTCTTTCCACGCTTCTCCTCCGATTCCTCGGCGGCTTTTCGTTTCTGCAGCAGCTCAATTTCCTCGGGATGTAGCAAAGCATGGGCTCTCGCTTTCTCGACTCGTTCCCGGCAGTTTCTAGACGCTTCTCGCATGCTCGCCAGGCCGTCGTTCTCGATCGTATACCTCTTCGAGTTGACGTTCTTCAGAGCTATCACGGTGGCGGTACTGCTTTTTTGGAAGAAAAATTGGGGGGTTTTTTTGTGGTTTGTAGTGGGCACCCTATATGCGCGAAAAAAGAGTCGAATTTTTTTGTAGATCAACGTATGGTGAAGAACGTACTGGCGTCATATAATTTTGGGCGAAATTCCCGCATTTTTGGTAGATCAAACCGTAGTTGAAAATTTTTCGGGAAAAAAAATTACGAATTTCTGGCTTTTCTCAAATTGAAATGGAAGAGTTTTTTCCGAAATTGGCCATTTTGGCTCGGCCATATCTGAGCTAGATTTACGACACGTTGCGTGTCGCTTCGCGGCTCGATTTTAGTTGTAAAACTAAATGTGATGTCCGTGTGGAGTACACGACTTTCCCACGCGTTGTCCAGGCGATTGTCAATGGAGGGCGAAAAATTCAATGAGGAAGGCCTGAACCCCGTGGTAGTCCGATGCACAAAACTGATTTTGTTTTTGAATTCTTGGGATTGAAGAAATTTTGCCGATAAAGCCGATAACTCAAAAAATTCTAAAAAATTTGGATAATGTCTGGAGGAAAAACCCCAATGCTGAAAATTTCGAATAATTTAAAATTTTTGCGCATGGCCGAAAAGAATAAAACTCGGCCAATTCTTTGGCGGCCATGATGCAAGACACCATATTTGACGCACGCAAAAAAAGGTGTTTTTGGATGTTATTTTCTTTTTCCGCCAGAATCTTTAATAATGGTATCTATTCCAGTGACAAAAAATCATAACCTGTTGCAAAAAACGGATGTTATTTTTTTCGAAAAATTCAATTTTGCGCGTCAGATGTGATGCTTTAAGCTCTGTGGCCGCCCAAAAAGAGAACACTCGGCCCACCAATTTTTCGATGACTCCATTGACAATAGCCTGCTGGACACCGGGTGGAAAAGTTTCGTGTACTCCCATGGGGCACGGACAAATACATTTAGTTACCATTTACAACTAAACGAGCCGCGACGCGACACGCAACGCGCCGTAAATCTACCGTGGCCAGATGTGGTATGGCCTGGCCTAGTTCGGCAGGAAGGTTTCTCTTCCATTTCAATTTATGAGGGAGGCCAGAAATCCGTGGCCGAAAAAGAGAAAACTCGGTCTCCATCCGATTTTTTTTTCTGACGGCCATGACAAGTTTGCGCGACAATAATACACTTCATCATATTTGGCAAAAAATTTTTTAAAGTTTTTTCGAATTTTTTTGATTTCCGAGCAGAAAAAAAAATTGTCTGAGAAATTTATGTGGCCGCGGTAAACTTCGGCCACCGATTTTCGAAGATTTTGACCGTGTTTGAGGGAAAAAGCAATTTGACGCGCAAATTTTCAAAAAAAAAAAAGCCCAAAACACTTTTCTTCTTCTTCTTGTCTTTTGTTAGATGCCGTTTCTGCCTTTTCTTCACTATCACTATCCTCTCGTTTCCGCCTTCCCCTCCTCTTCCAGCTTCCGCTCCGCTCAAACACGGCAGAGCATCGCGCGCTTTTCGTCGATCAAGTGTCGGCGGCTTTACGCAGCGGAGCTCCTCGTACCACTCGTTTTTGTTGTTTAAATCGTATTATCCGCGAAATACACCTGAATTCACATTTACGTCGACTCCCATTCCTTCTTCTCGGCCGCTTTTTCCGCTTCGTAGCCGCGGTTTCCGGATCCATAGTTTTTTCGTTCTTCACGTTCGAGATCCTACAAAATATCATTTTTTTTGGAGAGAAATTTAGTTTTTTTTTGGAGAAAATTATCGATTTTCTGGAAAAAATTATCGATTTTTCGGGGAAAGATTAATTACGATTATTTTAAAAGAAAATTATCGATTTATATTGGGAAAAAAATCACTGATTTTCTGGAAAAAATTATCGTTTTTTGTCGGAGAAAGAATATTAAATTTTTTGCAGAAAATTATCGTTTGTTTTTTTGAAAAAAATTTCCGATTTTTCAGAGAAAACTTTTTTATAAAATTATGGATTTTTAAATATAAAATTAACGGTTTTTAGACGCTGGAGTCTTCAAAATTGCGAGATCGATTTTTTTCTGGAGAAAAACATATTGTTTTTTTTTGGAGAAAAATTTCGATTTTTTTGAAGACATTTATCTTGGTGATTGTTGATAAAATTATCGATTCTTCGGGGACAAGTATAGCTTTTTTTGGATGAAATTATCGATTTTTTGGGAGAAAAAATACCGATTTTTTCCGTTTGGATCAAATTACCGTTTGAAAAACAAGTATCACAATTTTTTGAAGAAAATTGTCAATTTTTTTGGTAATAAATATAGTTGTTTTGGATAAAACGAGATTTTTCAGCTAAAAATATAGATTTTTGCTTTTAGATAAAATTTTGATTTAAAAAGAAAATTATCGATTTTATGGGTAAAAAATAACGTTTTTTGGATAAAATTATGGGTTGATTTCTTCGGGGTTCGTATAAATATTGATTCTGTCGGGGAAAATATTTTTTGGATAAAATTATCGATTTTTTGGAAAAAATTATGGGTTTTTTTTGAAGAATGATTTTATTGGTGAACAATATCGAATTTTTTCGGGAAAATATCGATTTTTCGGAGAAAATTTCTCATCGATTTTTAGAAATTATCGATTTTAAATTGGGTAACAATCTCGATTTTTTGAAGCAATTCTGAGCCAAATTTTGAATTTTCGAGCGGCAATTTTTGCACAAAGCATTATAGGTTTGACGCACAAAATTCGAATTCTTCAGAATTAGTTTCACAAAAAATTCTATCACCTAAAACTAGTTCACATGTCCCGTTTCATCTGAAACGCTGACATTTTTTGGCTTCTCCACGCTGAGCTCGAACCAGCTCCTCCACTGAACATCGTCTCCATTCGTTCATCGGCTCGGGCTCTCGACTGCATAGCCTCAGGCGCCGCGCCTCGTTTTCCGCCTGAATTTGCCTGTCGAGCAGACGCTGCGCATCTTCGGCGGCTTTTCGCTCGTCTCGGCGAACCCGTTGTTGGATTTTGTCCGAACGTGCCATGATTTGCCAAATGATGGAGAATGTATCATTCATCTGGAAGCGGAAATTATAGAGCAAACCAGTTGATAATTGTGCTCGAAATTTGGGGAAGAAGCGCAACCAAAAAATCAATAATTACGTCCAAAAATCTATTTTATTCAGAAAAACCAGAAAGCGATTTTTTTTCCAAAAATAAATAATTTTCGTGCAAAAATCGATAATTTAGACCGCTTCTAAAAGTCTCAATTTTTCCAACAAAGAAAACAATCTCGAAAAACCGATGTTTACAGAAAAAACAAAAAGCAAAAATTCATAAAAATTAAAAAATTAAAAAAAAATCAATAATTTTTCTAAAAGCGATTTCTTTTTCTAAAAATCCTTGCGTTTAATTTTCTTCTGAAATCGATATTTTCCGTTGCTTTTGGTTTCGTGAAAAAAATCGTCTATTGAACATTTTGCTAAATTTCGAAAAAAAATCTTGAACGATGCACCATGATTTTGAAAATTCTGCTCTGGATCAATTTTTCGAGAAAATCGATTTTTGGAAACTATCATACAAAAATCGACTGCTAGTTGTGCTCGAGATTTGGCTCTGAGGAAAAATCAAAAATTTTCTTCTAAAAATCGATTTTTTATCCAAAAAATCAATAATTTCGTCGGACAAACCGATGTTTTCAGAATAATCAAAAAAAAAATTAAAAAATTAAAAAAAAAATTTCAATACTTTCTAAAATTTTGCGATATCTTTTCTAAAACTATTTAATTTTCTTCTAAAATCGATATTTTTGATTTTTTCGTGAAAAAAATCGTCAATGTTATTGAAATTTTTGCTTAATTTCGAAAAAAAATCTTGAAACTTCGATGCACCATGATTTTGAAAATTCTGCTCCGGAACAATTTTTCGAGAAAAATTTATCGATTTTTGGAAACTATCATACAAAAATCGACGGTAATTGTGTTCGAAATTTGGGAAGGAGGAAAAATCAATAATTTTTTTCTAAAAATCGATTTTTTTTCTACGCGAATCAATAATTTCGTAACCGATGTTTTCAGAATAATCAAAACAAATTTCAAAAATAATAAAAAATCAATAATTTTTTCTAAAATTTTGCAATTTTTTTCTAAAAATCGTTTAATCTTCCTCTAAAATCGATATTTTTCCGGATTTTTTCGTGAAAAAAATCATCAACTTTATTGAAATTTTGTCATACTAAATTTCGAAAAAAAATCTTGAAATTTTGATGCACCATGATTTTCAAAATTCTGCTCCGGACCAATTTTTCGAGAAAAATTATCGATTTTTGGAAATTAGCATACAAAATTCGATGTGCTCGAAATTTGGCTCTGGAAGGAGGAAAAATTAATAATTTTCTAAAAACCGATTTTTTTTCCAAAAAATCAATAATCACGTTCGGCTAATGGAAAACCGATGTCCTTTCAATCAAAACAATCTCAAAAATAATAAAATCACTAAATCAATAATTTTGTCTAAAATTTTGCAATTCTTTTTTCTATAAATCGTATTTTTCCGATTTTTTTCGTGAAAATAACTCGTCTTTTATTGAAAATTTTGCTTTTCGATAAAACGATGATTTTGATTTCGATGCACCATGATTTCGAAAATTCTGCTCCTGAGCAATTTTTCTTTAAGAAAATTACGATTTGTGGAAATCATCACACAAAAACCGATAATTTTGTGAAAAAATTCGGTTTCGCACCATGATTTCGAAAATTCTCAGAATTTTAGAAAATTTATCGATTTTGTGTAGAAATTCGAATTCCAGTGGAAAAATTTTCTTTGTATTTCTCAAAAAATGTTTGATTTAAAAAAAATCGATTTTATGATCTGAAATTCAGGCATTTTTGTAGGGCAAAGTAAAATGGCAAAATCGATGATTTCTCTGATGAGAATGGGAATTTTTGTCAAGAAAAATATAAAAAATTCTTAAACAATTAAAGTGTTGTCAAAAAATTGAAATTTTGCGGAAAAAAAATATATTTACAGATGAATTTTTTAGAAAAATTCTACAAAAAGAGGTTCCATCTAATATTATTTTGTCGCATTGGGAGTTTATATCACATAATTTTTTTTTGTTTCGGTTGCCGTGGAGAATGGGGGTTGCAAATACCAATATCACATTTTTCAGAGGAAAATCACAACAAATATAAGGAAAATTTAAAAAAGGCGCGGGGGGAAATTCACCAGATTATCGATATTTATGGATAATTTCCACGATTATTTTTATAGCAAAATTGATCCGGAGCAGACTTGGGATAAAGCAAATGTTGGAGGGGGAAAATGAACAAATTGATAAATTATAATATATTCGGGGCAAAAAATGGGAAATAATTAAATTGTCGGAACATATAAATGATTAATTGATTGAGGCCAATGGGATTGGTTTCATGTGAGCCAACGCTTCATTACAGACCACTTCCTACCGATGACGTAGCGGCCATGAGAATGCTCGACACGAGCAAGACGGTAGGTTCTAGAGGCGTTTATCTGGAAATTTTGTGAAAAAATGAAGAAAACAAGCTTTCTTCGCTGAAAATTCCAAGATTTTCGGTCGTTTTTTTTTTGCTAATTTTTTTTAAATTCGCCTTGAATTAAATTTCCAGATGTTCAGTAACACGTTTTTTTCTCCTTCAAAAATCGGTTTTTCAATTAATCAAATTCAGAGTATTAATAATTATTTTCCTCCACCAGAATTTGAATATTTTATCCACATTCTGAAACCGGCTCACAGAGCGGCTATTACTACGTGGCCTAGAAAAATCAAACGAACTCCGCCAATGATTTATCCCGTGGCGATTTTTGTGGGATATTTCGGAAACTTGACGAGAATGTTCTCGAATGGTCGGGGGTGCTACAGTTCCACCGTGGCGATTTTTGAGAATATGTTCCGTAGTTATGAAGGTGGCCGAGGGTTGTTTTCTTATTTTACGGCCACGTAATAAAAACCGATCTGTGGGCTCCTGAGCAGAATATCGAAACATATCATGGTGCATCGAAAATTTCAAAATTATCGATTTTTTTGTTGTAGCAAAATTTTCAATAAAATAAGAAATCATGGTGCATGGACAAACCAATTTTTTCCTTTTTTTCGAATTTAAAATAAAATTTAAAAAACAGTAAAATTCTTGAATTTTACTTTTTAAAAATATTTTTTTCAAATTCTGGCAGTTTTAAAATAATAAAAAACGTTTTTTTTTCCATTTTTTTCAATAAAGTTTTTTTATGCCATGATTAGTACTACTAATGTAAAATTTACAGGGTTTTCACAGATTTTCAATTTTGTTGATTGGCTTATTCGTTCTTCAAAAATTCTAAATTTTCAGGTTTTCTTTTCCATTCGCCTTTAATTTTTGGGAAAAAACAATGTTTTTAATTAATTTTTCAGAAGGACTTAAAAAATTGTGACAACTAAAATTGTTCAATTTTTTCCGCAAAAATAATTTTTCGGAAATCCGCGTTCAAATGTCCTACAAAAAACCCCTTACCACAGTAAGCCTAACCAACTGTGAGAGCTCTCTGTTCATCGACTAGGGCTCCGTCGAAAAGCCGCCCAAACTCTAGAGCCGACGCCGTATCGACGCGCACTCGAACCATCTGAAAAACCAAAAATGGAAGAGCTTCTAATTTTTCGTCCAAGGCAGGCCATTTGATCTACGTAGATCTAGAAAAATTGCGAGAAAGAAGAGACGCAGAGTTCTCAACGCTTTCGCATGATTAGGAGTGTGTTGACGTCACATTCGCAAAAAATTCCCGCATTTTTTGTAGATCAAACTGTAATGGGATGGGACCACGAGCAGTGTTAGGCTGTACCATTACGGTTTGAGCTACAAAAAATGCCGGAATTTCTTGCAGAGGTCAACACACTCCTAATCATGCGAAATCAGTTGAGAACTCTGCGCCTCTTTTTCTTGTCCTGCATTTTTGTAGATCAATGTATATAAGCCTCTCTCTCTCTCACCTGAAGTATCACCGCTTGCTCCAACACAATCAGAACATCACAAAACTTGCTGGCAATCGTTTCGCGGGTGTACACTTTCCGTGTGTTCTCACCACACCACATGCCCTCATCGTTTCCGATATGCTTCCCTTGTGGCTGCTGCACAGCCGTTGAGTCGTGCTCACATGGAATATCACCTCAGCCTCGGCGTCTGCAAAGTACGGAGCCCGTGTCTCTACGGGCAGCCACCTGTGTAATCATCGTGTCCTCGACCCACTTTGACCTCCCATCCGAGCTCCGAAGCTATTGCGCGGGGGCGGATGCGGTGGTGTTGGACAGGATCGATGCTCGATCCTCCGGCGATTGTCCTAATAGATCACATCGACTTTGTGGACTTCACGAGAACAAGTCTGATCTAAATGCCAAGTCACGGGGAAATTCTGCCGTGAACCTGAGACACAAGTGGGACAGGAATCCCCGGGAAGCCGACAGCGATCTCCATTCGACTGTCGCGTTCGGAGTGAACGCTGGCAAGTGATCGTGGGGCGCCGACGATGTGGAGGCTGTGGCTGCCGTCTAGACGTCTCAATCATCGATGTAAACTGTGCGGCACCAAGGCGGGCTCGTGACGGGGGATAGGTCCGGTATATCATCCGAACGGATCATCCATCGCGGATCCCCTGGCTTTCCGGACCGGGACGTTTTCCCTTGAGAGCCTCTTTGCGTAGCCAATTGGTCACATTGGTGGCAGGCTTGCGGACATCCGGTTCTAGATCCAGATATGCCGGCCAACTAACGTTCGGGAAGTGATTTCGCAGGGGAATTTGGCGTAGAAATCCTTTTAGACGGGACACCGAGATTAATCGCCGATTGCCTATTAATATACACGGTTTTATGCTCTCCTTGTAGTGGCGGTGCTCCTGCAGAGCTCCATATCTGAACCTCAAAACCTCGCACCGGATTCTGACCACCGAGCGTGACAAGCTCTCCATGGGAGCACCATATCCTATCGGCCAAGATACCACGAATGACGATTGGCATTTGAGGTTTTGGCCATTGATGGGCATACAAGGCTTCACCATCTGCCACTCGATCTCGGTTCTCGTACGCTCATCGCGTAGGTGATGGAGCGAGGCGGCTCACGGAGCAGCGCCTGGAGCAGTGCTCGAGAACTGGGCTAGCGAGGCGATCGGCAGAAGAGCGGAATGGGCCGCATAGCGGACTCGATGGGTTTCGATGGTTAACGCGGTGAGCACCAAGACGAGTTGGGACGTTTTGCACGTTGAGGATGGCTAGCGAGTTACCACGATTACTAGGGCATTCTGCGATACGTCTGCATTGACAAGCTGATCGACAAGGATTGGCTCGGCTCCATGATACGATGAATCTAGCATTGAGAAACTTCAACGAGTGCGAGGACACCTTCGTGTCCTTCGAGCTCTTCGCCGCCTGCAACATCTTCGGCAAATGCTCCAGAGCTCGCGTACGGAGCAACATGAAGTGATACTTCGTGTGCCAGAGAGCCCACAGATCGCCAGAGCCACTAGTTGCACCTTGGATAGGAGTGCATAAGACGGATGAAGCAGAAAAGAATGTTGTCCGAGAGCAGTGGCGGTGGCGGACGGTTCCTTGATTCGTCGAGAATTGCACTTAGAGCCGGAACATAGCGGGGCAGCAGGATTGGGGGTACGGTAACGAGGGTGCGGCACGCGAGCCTTACGAGTGGGCCAGTGGGTGCAGCTATACCGGGAAAGCAATGTAATTTTTTTTTCGGGCTTTTTTTCAAATCGAATTTTCACTTTTTCTAAATTTTTTTGTAAATTTTCTAAAAATAATTGTTCGATTTCAGAGTACCTCATTTCTCCGTGCGTGATCTACGTTGATCACGTGACAAATAATGCGGGACTGATTGTCCATGGTTAAGAACATGCCGACGTCCTATTTTTTGGGCAAAAATTCCCGCATTTTTTGTAAGATCACCACAAACAGTAATGACAGCCTCACGTCGTGCCAGAAAGTCCCATTTCGTGCTTCGATTACGCTGATCTCAAAAAATGAGTGTCTGATTGTGCATGATTAAGAATGTGCTGACGTCACATTTCGTTTGGAAATTCCCCCATTATTTGTAGGTCACACCGTAATGGGACAGCCTGACACCACGTGATCTTCAAATTCCGGCCAGCGTGAAACCCAAAAGCAAGATCTCAATCGTCAATGACATGACGCAATCGATTGCCACGTGGGCACTCGAGTTGGTCTACGGATCCACGAGTGAGATGCCACGACGCCATGAAACGCCAATTCGTCGCCCGACAAAGACTGAAAAAGGGAAAAAGGGTGTGATATGCGCACGAGCTGTAAGAAAGGCTAATTAGTTGTCCACCTAAACAGGATAAAATGCTGAAAAGGCATTTTTCAGGGTCTATTTTCACAATGAGTTTGGGTATATTGGAGAGTTTTCCATAGATAATGACTGCGCAACTAATTTTGACGCGCATAATATCACGTAGCGAAGACTACAGTATTTAAATTACTACTGTAGCGCGCTGTGTGTCGATATACGGAATTAATTAAAATATTAATTGATAAAACAGAAACTATGATCAAAGAGACCCGTAAATGGACACAATCGCTACAAATTCAAAAAGTACTGTAGTTTTCGCCTACGAGATATTTTGCGCGTCAAGTATGCTAAGAAAATATGCAGTTGTGGTAGCCTTGTGAATTTTTAGAAGGTTTTTTGAAAAATAACTCGCCACTATTAAAAAAAATATATATTGAGGCTTTTCAAAGGGTTAAAGTAATTTTATACGTTTTTAAAATCGTTTTTTTTTAAAACTAAATTTTGAGCGTTTTTAGGACAATTTTCGTAACTTTTACGCTTTTTTTATGGCCATATTGTGTAGTTTTTTACACTCTGATATTCCAGAAATCGTCAGAAAAAGCACTTAAAACGGGCTAGAAAAACGGGGTTTTGGCTTGCTGCGAAACTTTTTTTTTTGAACCAAACTTACCGCGCAAAAATATATTGTCATTCAAGTAATGTTGCAAAATGTATAAAAAACAGGTTTTTAATGTTTACGATTTTAATACAGTTGTGACGTATTTTTTCTATTTCAATTTTTGCAAAATAAGAAAAAATATGACTGGAAAAAAGTTGGAAAGTTTTTAAAACACATTTTATACAGGAGCGGTCATTACGCTCTAAGATTTGCTGGCATAAGCGAGAATGGTCTTTGACACTACATATATAATATTAAGTCTCCAAATAAGTCCGGGTCTAAAATCATAAATTTGTTCGCTGTGTATCGATGTTTATGAAATTGTGGGAATTTGTGTTATCAACCCTGATCTTTCATTTGATGGGCAAGAGTCACAAAATTTTTTGGCCGTCGGAAGTGCCCCGCCGGTACTCGCAGCCAATTTTTTCAGACATGTTTCAGATCCCGCTTCTTTTCAGTTTTCAACTGAGGATGGTGTGCGGAAGGTCTATTGCTTAGTTTAGTACACAATGTAAGAAAACAAAAAAGTTTGGAAAAAAATCCGTCCAACAGAAATAAAATATGTTTTTTGTCGCTCGTCAAAAAATCTACAAAATTTTGTCGAAAATTATTTGAATTTTTACACCCAATAAAAATGATGTAACCGTGTGCAAACTAATTTTAATCACACAAAACGACTTATGAAATTTGGATCGAGGAATACTCCATTCTAAAACTCGATAATAGTTCGAAAAAGCTGTGTTTTTTGTTATTTTTTTTAGTGTGATGCACCAAAGTGAAATTTTTTGTATGTGAAAAAATAGTTTGCATGGTTACATCATTTATAAAAAATCGAGAATTTTCGAAATCTGATTTGTTGAAGATTTTTTGACAACCGACAAAAATAATTTTCTTTGGACGGATTTTTTTCCAGACTTGTTTGTTTTCTTACATTGTGTACTAAACTAAGCACACGCACACAAAGCTCGATTGAAAACTGAAAAGAAGCGAGATCTGGAAAATGACTGAAAACTGGCTCCGAGTTAGGGCGCTTCGGACGGCCAAAAAATTGTGACTATTGTCAAATGAAAGATCATGTGGTTGAACATAAATTCCCAAAGTTTCATAAGAATCGATACACAGCGAACAAATGCTGTTATGATTTTTGACCCGGATCCTATTTGGAGACCTAATATATATACATAAAGTATACCTACCGTAACCGCAATCGTAATATCATCACTGTCATGAAAAACGTTATCCTCTGCAATTGTATTCGACGAGGACATATCTCCAGTCTCTGACAATCATTTACTCGGGTCTTCCATCATTGCCGATTCGAGAATTGCCTGTCGTCGACTGTTCTGTGAGAATCCGGTTCTGTCGCTTTTCGGAGAGCTTCTTCACAGAATATGTCGATATGGGCGAGATGGAGGATTAATGCTTGCGTTCCACTGTTCACAATCTGAAGACGTTTTATTTTTTTGATTTTGGCTGGAATAAAGCTATGCTTTTGTTGAAATTTCAGTTTAAAAACATAAGGTTTTTGAACTGAAAATTGGGATCCGGAAAGAATTAGAAAAAAATTTGTTTTTTCTCTAAAACTGCTGTATCCATTTTATTCAATTTTTTAAGATTTTCACAAAACATAAGAATTTTTGTAATTTTTTTTCCAAATTTTTTGAATTTTCAGCAAGAACTGGACAAAAAAGGCACTAGTTTTACTAAAATTGGCAGCATTTAGGAAGCGGTTTCTGAAAAAAACAATTAATTTTCATTATTATTGTCATATGATTACAGGAACACACTATTCTGGACGTAGTATGCGATTACACAACATATTTGACGCGCAGAATATCTCGTAGCTTACAGTAATTCTTTAAAAATGACTACGTAGCGATTGTGTCGATTTGCGGGCACGATTTTTTGATATGAATTTTAATCATATTTTGAGCAAAAAATGGCTCAAAAAACAAGCCCGTAAATCCACACAATCGCTAACATGGTAATTTAAAGAATTACTGTAGTTTTCGCCGAGATATTTAGTGCGTCAAATATGTAATACGCATTCTCAGAATTTTTTGACTTTTCCTATAAAAAAAAATCGTGATCAAAAAAAATTTTTAATTGTATTTTAGGATGAAATTACGATTTTATTCGTTCTCTATAAATTTTGAGCAAATATATTTCAAAAAAAAAAAAAATTCTTTCTATATTTAATTTTTTTTTCGAGTCGAGCTTTTTTTTCTATCTTCTGTACAAAAGCAATTTAAAAAAAAGGAAAAAAGATTAAATCTAGAGTTCTAATTTTCCTCCGGGTTCTGGCCATCCTCATAAACAGAATGGAAGAGTTTTTGCCGAACTAGGCCATTTTGCAAACTCTTCCATTTCAATTTATGAGGAAGGCCAGAGCCTCGTGGAAAATTAGAAATTAGAGTTTCGAAAAATCTTAAAATTTTGCCCGTAAATTTCTTATTAGTGTGTTTTGTACAGGAGATTGAGAAAAAAATCGGCAATTGTATACAATTTAATTTTAAAAACTTATATAGTTAAACATAAATTCAATGATCTAACTGGAAAAAAATGTTTACTTTGAAAAGTTAAAAAAAATGACAAAAATGTAAACTCAAAAATTGAATAAAATGCGGCAATTTCATAAAATAGCTTTTTTCCATAGTTTCTGTCAATTTTCGGCTAAGATTAATTTTTTCTCATCAAAATTTACGATTTTCATACTCTCTTACCGAAGCCCATTGACATCGGTATCCAAACACCCTTCTTCATGACGTCATGATACACCTCATCCCACACCTCATCGTCAATTCCGAGTATGCGTCTGACGCAGGATAGCCTTAATCACGACTGGGATATTCGAGATGAGTGTCGACGTAAAAGCAGCCGACACATTCTCGGAAAACGCGTCCGATTGGCAGACAGATTTTCGAGGCCCATGTGCTTAAAGTGTCGCGCCCTTTCTGAGCCGGAGAATTTTTAGGGAAGCGGTTTAGTGTTTTGAATTCGATGCGAAACCAGCTGCTTGCACGATGTTAGAATCGCAAATGCTATGGAGATAGCCGAGGAGTGACTGGAAAATTTTTTCTTAATTTTTAAATGGCCGATTTTGGGAGGGTTAGTCGAAAAATTTAAAACTAGGATCTATGAAGTTTTTGTCACACGGCAACTTCTGGTTTTTGGAATTTCGCCACTTTTTAACAACCCTGGCAATGCGTGCAAATTTTTGGAAAACCGGCAATTTATGGTGACCTTTCGGAATTTTGCTAATATGAAAACCGGCAATTTGCCGCTTTGCAAATCTTAGGAAAACCGGCAATTTGTGGTTTTTGGAACTTGGCCACTTTTTATCAAGGACCTACAAATTGCTTGCAAATTTTTGGAAAACCGGCAATTTCTGGTTTTTTTTTGGAATTTTTCTAACATTTATAAACCGGCAATTTGCCGATTTGCAAATTTGTGGCAAACCGGCAATTTGTGGTTAAATTCGGCTTTTGGAATTTTTCTAAAATTTTAATGAACCGGCAATTTGGGTTTGCAAATTTTTGGTAAACGGGCAATTTTTGATTTGGAATTTTGCTAAAATTTTTAAAAACCGGACAATTTGCAAAATTTTGGAACAGTAAACCGGCAATTTGTGGTTTTTGGACTTTTGCCACTTTTTATAAACCGACAAAGTCATTTGCCGATTTTCAAATAGGCCAATTGCAGGTTAACCTAAAAAAACATTCCAAAAAAACCAGAAATTGCCGGTTTTCCAAAAATTTGAATATCGGCAAATTGGTAGGTTTATAAAAAATGGCAAAATTCCAAAACCGAACCACAAAATGCCGGTGTTCCAACTCTTTCAACGAGAGTATCCAATTTTTTAAATAGAAAAATTGCCGTATTCCATACCGTTCTCCACACATTTGCCGATTTTCAAATTTTTGGAAAACCGGCAATTTTTGATTTTTGGAAGTCTGTAAAAATTTTTTATAGCGGTTAGTGGTCTATGGATGTCTGTCACCTTTTATCTAAACTTCCACTTGCCGGTTTCAAATTTTTGGAAAACAATCTTTGTAGATTGTTCAAGTCTGCTAACTGGCAAACTGGGAAAATGCCTTAGTTTGGAAGTTTAAGGTAAATTCTCAGACACCGGAATTTTGACATTTTTCAAACTTCCAAAAACCACAAATTGCCGGTTCGCCAAAAAATTGCAAAGCGGCAAATTGCCGGTTCTTAAAAATTTTTGAAAAATTCCAGAAAAACAAGAATTGGCGGTTTGCCAAATTTGCGAAATTCCTACAACTGGAAATTGACGGTTTTCAAAAAAAAACAAAGAAGGGAAATCGGACCAAATTACAGACGCTTACATAAAGTGGCAAAGTTGCAAAATCCAGAAATGATCTTGCCGGTGTGTCAAACTTGCGAACACATTAAAATACCACAAATCAAATTGCCGGTTCCGAAAAGGTGCAAATCGGCAAATTGCCGGTTTTTGAAATGCAAAACTCCCAAAATTTACAGAAAAAATTCCAATAATCAAAAATCCGAATTATTGTTCCACAATCTTCGGAAAAATTATTACAAACACAATCAATTTTCCAACTTTTCATCAAGCGTATTAGCGAAATACAATCGCAAAAATTTCTCGTAATTTATTTTTGATCTACCACTTGTCGTTGACTAGCCTCCGCCCCTCATCTTGTTGCTGTTGTTATAGTTGGTGGCTGTCTAGTTGAAGGAAGGGGCGGAGCCTATTCAACGAGGTAGATCAAAAATAAATTATGAGAAATTTGTGCGATTGTATTTTTTTTGTTCGATAAAATACCCCAATTTTTTAATGGAATAACAATTCCCTACCGTACTACATTGAGCCAAATACGGACTGTGAAGCCCAACAAGATATTCGAGAGCAACAGAATAGCGAGCACGTTCAATCGATATTTCTCCAGACGCTACGAATGGTGGAATTTCGTACTGGAAAAGCCATGCGGAGAGCACATTTACCACTATATGAGTGACATTTGAGCAAATGCCAAGGGGAGTCCTATTTCATTGCTTCACGCATTAGTGTGAATGCTACATTTGTGCCTGGAAAAGGACAAATAAAACTATTTTATTAAATGTAAGTAATTAATTTATTTTTTGAAATCTCTTTAAATGCGGTGTAGTCGAATATTGTTTCAATTGCTTACCCTCAAAATTGTCTGAAAACACCGAATTTCATAATGAACTTCTTGAAAACTTCTCAGAAAAATCTTAGTTATGACGCCTCAAAAAATGAAAATTGGTTAAAATGTGAAATTTGACCTACTTGCCAAGCGGCTGCAAACTATCCAGCTTTTTTTTGAAATCAATGTCAAGTTTTGAGTATTCAATTTAATTATCCGTTTTCAACTCGATTCAGGGGTATTTTAAAGTCGCTATAAACGAAGAGTTTTTTAAAAATTATTTACCAAATCCTTCTACCATCGATTTAAAAATACCTAAATTTAGTTCAAAACGCAAAATAATTAAATTGAATACCCAAAACTTGACCGTGATTTCAAAAGAAACTTAGTTTCCAGCCACTTGACAAGTTGGCAAATTTCAAATTTTAACTTTAGGCAATTTTTTAGAGCGGTCATAACTTTTTTTTTTGGAGAATTTTTCAGGAAGTTTCATTATGAAATTCGGGTGTTTCGATCAGATAATTTTTAGTATAATAAAGCAATAAAAAAAATTCTACACCAACTTCAATCGAAAATGTAAACAATTTTGTTTTGAAGGCGGTTTTCTTTTACTTTTCTAAAAAGAAATATTCAATTTTACGATTTTTTGCGTAAAAAAACACGGTCAAATTTTTGTTAAATTCGAAAAGATTGGCGTGTCCATTACGGTTTGACCTACAAAGAATGCGTGATTTTTTAGCCAAGTGTGACGTCAGACACATTCTGCGTCTCTTCTCCCTCATTCTTTGTAGTACGTAGATCAAGCCGAAACGGGAGAGCCTGACACCACGCGCGTGTGCGCCTGTAAAGTGAGTACTGTAATTTCAAAAAATCCACAACATCCAGAGTTTGAAACTACAGTACTACTATTTAAAGGCCACACACTTTTTCGAAACAACGATAAATTGTGGTGTTGAGACCGTATTTAGGGCTCAAAAAAAAAATAATTATCGTTAGAATATGGTTCGGGAAAGTTCCTATGCAGTTTCACTGAAAATTTGAATTTCCCGCCAAATAACGAATCTTCATCCGAAAAATTTGAATGCCAAACAATTTTTTTAAATCATAAATTTGAATTTCCCGCCATAATCGTATTTCTCAGAAAATTTGGATTTTCCATGCCAAAAATAAAAAAAAAAATTTTGGCGCGGCGAAAATTCAAATTTTCTGAAAAAATAATATTTCGGCGGGAAATGCAAATTTTCAGAGAAATTTTTTGGCGCAATTTTTCCTCGAAGGAATTTTCTTGATGTGTAAATTTCCAAAAATTTCAACGAACCCAAATCGCATTTTTCTTATTTTTTCCCCAAAATTTTCAAAGTTTCTCGTACAACGGAATTTTATGCGACGAAAAAAGCGCATTTCGATACAAAATCATCGATGCATGTGTAGTTTGTAGTGTTGGTTGTCCAGCCGTTGGGTGAGTTGCCGTTGCATATTATTTCCATAGAATTAGGCAATATCTTGCAATTACCACCGGCTGTATTCACCAATGGTTCCCTACCATTCTCATCGGCTGCTTCCCAGCCACCGAACGACTCCGTTCGTATCCAGATTGAAGCATTCGCCCATGTGTAGCCACTTTATTACTCTGAAAATTGAAGAGTTTTATAGGCTCCTCTTACATCGGACATTGAGGTGATTTTTCGAATTCTTTAAAACAAAGATTTCCTGAAATTGAGCTTTTGGAAAATTTTAAAATTAGATCAAAATTTCAAAATCAAAAAAAAAAAAACAAGCGTTTGTACAAAATTTAAAGTGGAGAATTTTTTTTAGATTTCAAATTTTTTAAACATTTCTGAGTGCAGAGTCGCAAATCTCAGGCCAATCGGCTTCGCCGAAATTGAAAATTTCTCATATATCGGAAATTGCCGAAAATGAAAAACTCCGGCAAGTCGGCATATTGCCGGAATTGAAAATTCCTTACAAATCGGCAATTTGCCGGAATTGAGAAAATATCCGGCAAATCGGCAATTTGCCGGAGTTGAAAACTTCCGCCAAATCGGGAATTTTTGCCGAAATTGAAAATTTCGTATAACTCGCCGATTTGCCGGAGTTGAAAAATTCTGGCTAATTTGAAAATCGCCAATTTGGTTGGCCAAAGTTGAAAAACCGGGCAAGCCAATTTGCAGATTTTTCGAAATTTGACCGGCAATTCCTGTCGCGGACACCTTTTTTCCGAGAAGAATTAACTTTCCATTTCTCATTGAAAAAGTCAGTAATTTGCCGGACTTGACAAATTTCCGGCAACTGGACATTATGCTGAAAATGAAACATTCTGGTAAATCGGCAAACTGCCGAAAATGAAAAATTAAATCGGCAATTTGCCGAAGTTGATAATTTCCGCCAGATACAGGGAATTTGCCGAAACTGAAAATTATAAATCGCCGATTTGCCGGAGTTGAAAGATTATGGCAAATTTGCAAATCGGCAATTTGCCAAAGTTGACAAATTCCGCAAATCGCCAACTTTCTGCCTGTTGTGTATATTATTTTCACGAGTAAAAATCGTAATTAATTTAAATTAAATTTGCTTTTCGACCGAAATTTGCCTACCGGCAATTCCTGTCCTTTTTGCCGAGAAGAATTTAAATTTCCAAAAAAATCTTTAATTTGCCGGAGTTGTTTCTGGCAAATTTGCAAATCGGTGTCATACTTTGCCGGAGTTGAAAAATTCTGGAAACCGGCAACCCGGCAAACCGCCAAGTTGCATTTTTCGAGCGAAATTTTTTTTTCCGGTCGCCCCCTTTTTCCCTGAGAACAGTTAAATTTCCAAAATTCTCTAAAAACCACAAACCTTTTCTCAAAAATTCGCACACTTCACTCCTGTCGCTTCCCCTCATCATTCCACTCAATCCGCACATTTTCTCGAGTACAGCACTCCAAAAACTTGTCCAAATAAACTTGGAGCTTTTGAGCCCGTTCTTTCGAAGTCTGACGCCCACGCTGTTAATCGGCCCATTCCTCAGTCGACCAATCACCGGCTCCCGACGATTGACAGTACTCGTTGAGCACATTCCGCATTTTCACCAGTCTGTGTAACGGGAAGACATATGGTAGAAGCCAAAGTAAGACACGATCCAGGTCTGGTGTGGCTCTTCCGTACACTCCGAGACAGTGATAGAACACTAGGAAAAAGCGAATCGCAATTCTTCGCACTGCCATAATTTTTCGGGTACGACTGCTTTTTTGAGAAGCGATTCGATTGCCGTTGCCAGCCTGTGAGAAAAAAATTTAACTTAATTGTTATTTAAAGGTGGGGTCGCGCTAGTGGGGAAATTGCTTTAAACCTAGGGTACCACAATGACCGAATTTCATGATATAACAATTCAAAAAAATTTTCTAAATTTTATATGATTGAAAATTGAAAAAATCCAGTTTTTGTCTAATTTTGAATTACCGCCAATTGAACTTTTGTTCTATGGAGCGCGCTTGCACGTTTATCTATTAAATTTATCTACTTTATTTTTTTGGTAATTCGTTTCTGTTATTTTTCCACCAATTGTTAATGTTCGCGGTGTATTTTTGCTCGAATTTTAGAGAAGAAGTCAAAATAAATGCTTTTCGATTAAAAAAAGCACGATAAAATCAGTGAAATTAATTAATTAACAGGTTTGAAAACGTTTAAGATACATTTGTCATTTTTACGCCTGTAACCGTGCATTTTAATTGAAAATTTGTTTATCTGGACTTTATCTCTAAAATTCGAGAAAATACACCGGAAACATTAAAACTCGGTGGAAAAACCTACAAAAACTACAACATAAAATAACTTAAAAAGCGTGCAAGCGCGCTTCATCGAACAAATTCATTTGGCGGTAATTCTAGAAATTAGGGGGGAAAACTGAGATTTTTTCAAGTTTCAAAAAATCATATAAAATCTGGAAAATTTTTTTGGATTTTCTATCATTATATTGGGTCATTACCATAGGCGTGTTTCAAAGCAATTTCCCCACTGGCGCTACTCCACATTAAATCTCTGACGGTTTTTTTTCGGTTTTCCTTGAAAATCCTCTAAAAATCGATTATTTGTATTGCGTTGTTTTTCCGGGATTTTTCTCGGATTTCCCACGGGGTATCCGGCCTTCCTCACTGAATGTTTCGCTCCATTGACAATGTCTCGCGTGTACTCCACACGGAAAACAAATCACATTTAGTTTTACATAAAATTGACCAGAGACGCGGCAGCCAACGCGCCGTAAATTTACCCCAGATGCCTGGCCTAGTTCGGCGAAAACCCTTCCAGTTCAGTGTATGAGTGAAGCCAGAAATCCATGTTTTCCTCGAAAAAAACCTCTAAAAATCGAGTTTGTAATAAAAATTGCGTTGTTTCTTCGGTTTTTTTTACAATTTGAGGGTTTTTTGTCTTTTTGTTTTAACACGGATTTTTGGCTTCCCTCATATCTTGAAATGGAAGAGGCCTTTCTGCCGAACTAGGCCTGGCCATAACTGGGGGAGATTTACGGCGCGTTGCGTAACAGTGCCACGCGTCTCGATTTTAGTTGTAAAAGTAAATGGACTCATTGTCCGGGTGGAGTACGGCGATTGTCATTATGGAGCGCGAAAAGCAACGAGGAAGGCCAGAAGCCCGTGCGGAAAGACGGGGATCTCAAACGGGGACAATCTACAAAAAAATTAGTTTAAAAAAGACTTCCTCAAAAAAATTCGAAAATTGTGGTTTTCTCTTTTTTTCATAATTTTTTGTATTTTGATAAATTTTTTGCGACATCAAAAAATGGAAGAACTTTGTTCGCTTTTTGAATTTTTGGTGAAAGAAGAAAATTTCGAAAATTCGTTAGGGAATCGATAAATTTTTATCAAAAATCGATATTTTAAAATTATTTTTTGCAGTTTATAAAAAATCAAGATTTTTTCGCATTTCGCGCGTAATTTTCATTTTTGTCGTTTTTTTCTTAATTTTCCGAAATTTCTGAAATTTTTTCTTTTCTTGTTCTGAAGCTTATGCCTAAGGACCTAAGCCTAAGCCTGAGCCTAAACTCCTAAAACGCACCACTTCCAACCAGCTCCGGAGCACAGAGCACCTGCTCCAGTGTACAGAGCCTGGATTCAGCCTCAATTGCACTCGATTTGGCTGACGTCGCTGACGAGCAGAAGCTCAACGAGATGAAACGTCTCGAAACTATGCTCATCTTGGAGCAGTGGACCAGCTTTTCCTGTAGAAATGTTGTGGTCGAATTAATGCGAAATATGGGAAAATTCGGGTTCAAATCGATGAAAAATCGTGCAAAAACGAACATTCGTCGTTAATGTGTCGAGCTCTTTGTTTCAAGGCACACGGCTCACACAATCCCTGTTCAAGTCGGTGAATCTTGAAATGCTCACCTGCACATCTGACGATTTGCCCTTTCGGGCAAACATTTTCCTGTGATTTTAGGCGATTTTCTGCAAATTTTCGCTGTTCAAACGTTTAAAATCGACGGGAAAATGCGTATTTTTTACGAAATATGCGAGAAATAGTGATTTTATTCGAAAAAATCAATATAAATAAGGAAAAGAACTACAGGAGTAATTTAAAGGCGCATACCTCGAAAGTTAAAATCGTGCCAGGACCCGCCGCAATTTGGAATCGGTTTTTAAATGAAAACTTTTTGCTTTACTAAAAATTAAAATTCACTGAAAATTTCGGTTAAACTCTGACTATTAACACGAATCTTATCACAAACTATGACTTTCTAGTGACAATGGCCAATTTTGTGTGTAAAAAATTTTTTCAGTGTAAAATGTTTTTTTTTGAAACTAAAATTTCGAGCTTGAAACTAGAAAATGTCAAGTAAAAAAGTCGTGCATTTTTAAGCGAAAAATAACGTTTATTTCCAAGTTTTCGCCTATAATTCACACAAAAAATACTGACTCAGCAAACAATGTAGGGAGCATCCCGAAAATGGTGATGGTAGAGCAAAAACGAAAAGTCGATGAATTATTTTAGAGAGAGAGGTAATTTTATACAATTTTTCAGGAATGGAGGTTAAAAAAAAGAGTAGAAACCATTAAGGCAAAACGATCCAGCTTGAAACCGATTTAGAAACTGCAACTCCCAGAAAACGAAGCAAATAAGAAAATCCCACAAAAAATCCGAATTTCATTGCAGTTTTCGACCGCCGTAATTCAGCCAACCAGGGTGAGTGTTCAATTATTAAAGAAGAAGCACATATATACATATAACATTATTCAAAGGACATAATCCATATAAAGTCTGTCAAAACGGTAAAGGTTCTTGTATCCAAAAACACATTTGGCCCCCTCTTTCGAAAAGAGAGAGCATGGGAATCGGAGAGGACGGTGCGAAAGACCCAGACATCGAGATGACACTTTTTGACAGTCCAACAGCCTGTGTGTGTCTGTGGTGTGTGTGAGTCTCTGTGATTGAGTGAAAGCGCTTTTGGGAATATATAGTACCTGGTAGAAATTTAATTTAAAATGATAAAAAATTTCTTGGGATTTTTTTTTTTGAGTACTGTAGTACACCACAAAAGGACGTAATGTTCAACTGCGCCCATGGAGTCCCAATGACGTAATATCATGATAAAAAAATTTTGAAATTGGAAAAAACTCAGGTCTTCCCCCCCCCCCTAATGTCTTCCAATTAGAACTTGCGCCAATTGAATTCGTTCGGCGGAGCGCGCTTGCATTATTTTTATTATATTTAAATTTCGCTCTGTGTTGTAATTTCACTGATTTGTGTTCATTTTTTGGGGGTTTTTAATTGGCAAAAGAGAGAAAAATGCAAGATCAATGCAAATTGTTCACTAAAAAATCACTGAAAATAGGTAATACTGTGAAATATGCTAATTTCAGGCTTGGTGTAGTCGGAACTCATAATTTCGTAGTTTTACCCATAGTCTATCATTTTTTAATGAACATCTGCATTTATCTTTTTTTTTTAAATTGAATTGCTATTAAAAATCCCCAAAAAATGAAGAAAATCAGATAATTAGAAACAATAAAATAAATTTATAAAAATAATGCAAGTGCGCTCCACCGAACGAAGCCAATTGGCGGGAGTTCAAATAGCGAGAATTAGAGGGAAAACTGAGATTACTTTTTCAATTTTGAAAAACATCATAAAAAATACGCATTTTAGCTTAAAAACTCGAAAAATCATACAAAAATTAATCTGCACCAAGTTGTCCACGAGTAGTACCTTGCGTCGCCTGGTTGCAGAAATGGCATAGATTTCGATTAGATTAAAAGCTTAAAAATCATTTTTTTTTACCCAATTTCCATTTAAATATCCTAATTCCAGCTTAATCTCAATTTTCTTGAAAGAAGTGCAAATATAGATTAACGTAAAAATTCTACGCTGCGAGACCCATGCCCCCATAAATCGCCTGCGCCTTTATTGATGATTTATATTTATTTTCTCTCTCAACCAGCGATGAACATCACGTTTTTGAACGAATTTTCGAAAAAATAAGACAAATTTCTATTTTATAAACCACTTTATACCGTGGGTCGTCGCTAAATAGCAAATTTTGACGCAAAACAAAAACGAACAGACAACGGAAAATCGATTGAAAACAAGTGAGAACACAGCAAAACTAGTCCTAATTAATTAAAGGCGCATCACGTGGAAAAGAAAACTGTTGTGGAAGAATAAAAAATGGAACATGAGGGGAAAGATTACACTAAAATAGTAAAAGATGCAGCAAGATTAAGATTATTTCTCGTGGAAAAATCGAGTCCCCTTCCGCCCAGGAATTCATCATAATTTTCGACTTTTTTTCGGAGATTGCTGCACTTTGTCGGCTGCTCCGGTGGTTTTTGGCAGGTTTTGAGAGCGCTGAAAGATTTGAATTTTTTGGAATTTCGAGAAATTTCTTGTTTTCTACCCGAAGCGCTTTGAATATGGCCAGCTGCATTTCCAGCTTGCATTGTCCGTTCAGTGACTTTGACCCTTCCAGTTTTCTGAAAAAAAAACACGAGTTTTTGAATTTACTTTCTGATTTAACGATTTCTGGTTTCCCTCAAAGAATTGAAATGGAAGAGTTTTTGCCGAACTAGAGGCCATATCTGTAGATTTACGGCGACCGTTGCGTGTCGCGTCGCGGCTCGCTTTTAGTTGTAAAGCTAAATGTGATTTGTCCGTGTGGAGTACACTACTTTACCCTCCCACGCGTTGTCCGGCAGGCGATAGCGCGAAAAATTCAAAGAGGAAGGCCAGAACTCCGTGATTTTTCTTTTTCGCGTAGATTTCGCAGTTTCGGACTGTTTATCAGGTCTAATCAGCGGAATTTTCGGTGATCCCGCCAATCTCGGTTATTTTCTGAGCCTTTTTCGCTCAGGTTCTGGGATTTCAGCTGTTAGAGCAATCTTTGTATATTTAGACAAGTTTCTTGAAGTCCAACGCAATTTTTTCAGTAGTATTCACAGTTTCCGGCAATTTTTCAGAGCAACTCTTCGAAATTTCGACAAGTTTTCTGACAGACTTTGTAGATTTCGTCTGACGGTTTTTCTGCAAATCCCGGTATTTTCGGCTCGCGGAGGACTCCCAGCTGCTCTTATTGTTCAGCATTGTCTGCTCAGTAGCGGGCGCGTCTTGATTTTCAGTAGAATTCGCAGTTTTCGGCAATTTTTCTTAGAATCTTCAAAATTTTGATAAGTTTTCTGTTCCGGCGTAGATTTCGCAATTTCTGGCGGTTTTTCCGCAAATCTCAGTGATTTTGGGCTCGGGGAGCCCCTTCCAGCTTCTCTATTGTTCAGAATTGGCTGCTCAGCAGCGGGGGCGTCTTGATTTTCAGTAGAATTCGCATTTTCCGGCCACTAATTGTTCTGAGGTAATCTTTGGAATCTCGGTTTTCTGACTTTTGGCGTATACGCAGTTTCTGGTGATTTTTAACCCGGCACGATGAGCTCCCAGCTTCTTCATTATTCAGCCTTTTCAGCTGGGCTTCTTGAGAGCTTGTAATCACGTCCGTCGTAATTGGCCTCTGAATCATCATCCGAAACCAAATTGGCGTCGATTATTTCCTGAAAAAATCGATAAATTTTTTTGCTTTTTTTTGCTTTCTCATAGTCTGCTTTTCCCACTTTCCCGCAATTTCTCAAAACACGGCGTTGGAACGTATCCTGGTCGCCGATCGAACTGGATAACTGGCCGGCTGGCGATAAAGAGATCGGCGAAATCTGCTACTTTCTCGTCAGATGAAACCTCGGTTTTTCTGCTAAAACCTACTCAAAATTTCCACTGGCTAAAATCACCTGATAACATTACATTATCATCATTTCCGGGCATTTGTACTTGACGAAAAAAAAGCGGAAAATATTTAGGATTTCGAAAATGAAGCGAAGGTTACGGTACACTAAGGCACATGGCGTAAAATATTCCGCAGGACTCGCCGCGATTTAGGATTTTCACTATTTTTTTTGGGCAAAAGTTGACATTTTACAGAATAGAATACTAAATTGTGTTGATAAATTGTTTATTTGGTTTTCAAATTTAAATCTAAACTGTAAATTTTAAATGTTCCCCCAAATATTCGCAAATTCCCTTCAAACCAAGTTTTCTAGCACAACCGTAATCCCCGAGCAATCGCGCTCCACCAACCTACACACCGCGAATTTTGAATTACATCCCTCATAATTAATTGTTTTTGCCATTTTTTTGCTATTTCCAGTGGATTTTAATGAGTAAAAGCCTACAAACCGACGAAAATGGCGGTGTCAGTGTAAGTCCATCAAATACATATTTTGCTACACGCTGGAATGCTCTCTACGCATCATACACCTCATCAAGCAAGAAAAAGACTCCAATCTCCTCGAAAAGCGCTATAATGACTGTCTATACGGCAGAAATGAGCGCAGAGGTTTTAGCGAATGAATGCCTGTTTTAAGAGCAAGTATAAGAATTCAGAAAAATTCACCTGCAAATCGTGCTAAATACCACCGCTACCGGACAGCCCGCAGTAGTGTGCCATGACGTCACAGCAGTTGTACACTTGCAAAGCGTTGCAAAATGGTAAGTGTACTGTCGAAATTCGCTGTAAGACCTAAAAGACCACAAAAATGGAAAATATCTGAAAACCTCACGATGCTCGTTAATGTTCCAAATGTTCAATGCGCGCCGCGAAAGCTCAACGTCTTCATGAAATCTCTCCAAGCAAAGTTGGATATTATGAAAATGGAGAAAAGCCCAATTTCAGCAGTGTAAGATAAATTATCGAAAAATCAATAAAAATCCCAACTTTCAGACCCCGGCAATTCTAACACGTCCGCCGGCAGCAGGGTGCTGAGCCCGCTGACGCAGCGAAATGCGAAAAGTGAAGATTAGCTACGCGAACCGTCGGCGCTGGCGAGACCTTGAATTCGAAAGACCCACACCGAAGCGGCGGTAATTTGAAATTTTCACATTAAAAAAAAATCGCGAATTTCAGCACTTCCTCAATGAATTTGCTAGCAAGCACGCTTGCGGCTGAAAATCGTTATGAACTCGATCGATTGGGCTGAAAAGGACGACCGCTGCAGTTTTGCTAGAGATGATCGTGAAAAAGCCTCTGCAGCTTCAAAAATCCGTGAAAAATCGATAAAATTTCGTTTTTGTTCCGTGACATTCCAGGTGTTTTAGTCCAAAAGCAGCCTACGGATTTGCTTCCCTCATAAATTGTAATGGAAGAGTTGCCGAACTCCAAGCCACATCTGGGGTAGATTTACCGCGCGTTGCGCCTCTTTAGTTGTAAAACCAAATGTATTTCTCCGTGTGAGGTACACCACTTTCCCATTGCCCGGCGGGTGATTTTCAATGGAGCGCGAAAAATGCAATTAGGAAGCTCAGAAACCCGTGACAAAAGTGTCACGCGGGTTTCAAAGTAGAGGTGCAAGTTCGCGCTGCACCGCTCCACGGTGCTTGGCGGCAAAACCAGAATTCGCTGATTTCAAGCATTTTCCGTCGTTTTTCATGATTTATCATGTCGAAATAGTGTTTGAAATATGTCTTTAATGCTGGGAAAAGTGAATATTAAAAATTTTGACACGTTGAAAAACTGAAAAAATTATCGGAAAAGTGTATTTTGTGAGTTTTTACTTAATTTTCTCGGGGTTTTTAAAAAAATTATTTCTACATAAAAATTGATGAAAACAGCATATGAAGTGCAAAAAATAAAGAAGACTTACATAAATTTTGACAAAAATAGATCACGAAAAACAATAAAAAAAGTCGAAAAATGATTGGAAACGGAGAATTTTTCCATTTTTATGTAGAAATTTTGAATTTTTTAACAAAATTTTCTCAATTTTGAAACACAAAACATGATTTTAAAAATTATTGAAGATATACTCTTGAATTTTTAGTTGCGCCAATAACGGGACTCACGGAGTGACCATGGAGCGCTTGCATCTCGATTTTAAAATTGGTATGAATTTTTCGCGCTCCATAGACACACCTGCCTATAGGACAACGGGTAAGTGTCGTGTACTCCACCCGGACAAATATTTAACTAGAATCGAGCCGCGACGCGACACGCAACGCGCCGTAAGTCTACTGAGCCAAAATGGCCTAGTTCGGGAAAAACTCTTCCATATTCATGAGGGAAGCCAGAAACCCGTGTTTCTAGAAAATCAAGAATTTCTTTGGGAAAAAATGCCAACAATCCCAGACCTAATTCTCAGGGCTAATTTTTCCCCGAAACAGACAACAGACCCTTGTCTCCCTGTTACAAAATCATTCAAAGATGCTCCTGCGATTTCCGAACGTCAGCTGTTGAGCAAAAGGTGGTCCGATGTGTGATAAATGTAATTTTTCGAAAAAAAAATTTATCGAAATTTGCAGTCACGAACGCGAGTGTCTTCTTCAACACGGGATCCGCTGGAACCGGAAAATCTGTAATTCTCCGGAGTATCATTAAAATGTCCCGCCACATATCACCGCAGCGACAAGGTAGGGGATCACTTTGAAATATTTGCAAAAAATTTCTCGTATCAAGACCTCAAAAAATTTTCATGTACCTTTCAAAAATAGAACGACCTTTTTTAATTAAAAAATCATTCAAAAAGGAAAATTTGGGAAAAAAAATCATTAATTCTTTAATTAATAATTGTTTATTTGTCACAAGAAATAGCTACACCGGAAGATAAAGAAAAAAAGTAAATAAAAAAGATGTGTGGACAAATAAGTAAATGTCCAATTGGACCAGCTTTAGCCCGGGAGGTTAAGTTGGGGGGAAGAGGGTGTCAAATGGGATGGAGTCTAGGCGCGACGCAAATGCATTTGGAGTTAACAGTATAGGGAATGAAACGTTTTGCTATTCGATTCCACAACGACAAGTTAACATGTAGAAAACATTTAGACGGAACACCACAGACAACAAGTAGATAGGGGTGAGGAGTAGAGCGTGAAGCTCGAACGAACGATATAAGGTCGGGAAGTAATACTCACTTGAAATAATATTTTTATGGAAGGTTCGGAAGATTTGAAGAACCCGTCTATGGTGGGTGGACAATAAATTAAATTGGGAAAGCCTACTACCGTATGACGAGTAAGATAAATTGCACCTTTGAAAGACACACATTGAGAAAAACCGGAGGGGAGATTCTAGTTATTTCGTGCGGCAAGTTCGGTAGAGTTGGGAAGCGGGAAGAGCTCGCAGCGATATTCGAGTACAGGGCGGTGCTTATGTAAACATTGAACAGTTAAAATAGAATTCGGGACTTTCCTCAGAGCGGAATGAACGATGGAGTTGGCACTTAACCACGGAGTATTAGAAACCAGTCTGATTAATATGATTAACAAAAAATTTGGTATCGACAATGACTATGCTTCCAAGATCTCTGATAGATAAATCACGCGGTTTAATTTCCACCCGATTTAAACAGTATTTATGACGCCCGGGGGTTCTTTTTTCCGAAATGTAATACGGCGGTTTTGTGCTCAGCAAGATGACGCCATTTTTTACACAAATCAGCGACTTGATGCTTGTTTGGATAGAGGTATCAGGGGGTCCGCTCCGAGTAATTTTAGATCGTCGGCAAAGGCTGTAACATGGACATCAGGAGGGAACAAATCGCTCTAATAACCCATTAATATACAAAAGAAAGCGGAATGGTAAAAGAAAAAACCGTAAAAAATCAGCAAATTTCGAAAAAAAATCGTAAAAAATTGAGACCTTTGGAAATAAAAATCTAGCAAAATTTGAAAAAAAAATAGTTTAAGATTCAGAAATTTATTTTAAAAAATCATTAAGAATTCAGCAAAAAAATAAAACAAATAAATCTGTAAAATTAAAAAAATAACCAGTAGAATTTCAAAAAAAATTGTTTATTCAGCAAATCGTCTTCTAAAAAAAAATCATAATAAAATGATAAAAATTAAAAACGTAAAAAAATTTAAAATCTGCAAAATTTGAAAAAAATCGTTTAAAATTCAGCAAATTTCGAAAAAAAAAGCATTAAAAAAGCGAGAAATGGGAAAAGCACAATTTTTTAAAATTTATTGAAAAAAATTAAAAATTCATGGAAAAACCTGCAAAATTATTTTTTAAAAACCGGTAAAAATTCAGCAATGGAAAAAAATCTTTTAAGAAAATCAGCAAATTTCGAAAAAATAAAACATTAAAAATACAAAATTAAAACTTTTAGAACATCATTAAAATAATAGCCAAACCGTAAAAAATCAACAAATTTCGGAAAAACTTTACGTGTTCGTTAAAACTCCAGCAAACGTCTAAAAAAAAGCATTTAAAAAGGAGATACAAGAAACATCAAAAATCGAGACAATTGGAAAAAAAATTCGTTAAAAATTAACCCAAATATTTGCTGAATTTTTTAGATTTCTTTTTTTTAAACTAAATTTGCTGAATTTTTTAAAAAGACAATTCAGCAAAACTTAATACAACTAAAAAATTCAGCAAATTTCTTTTTTAAAAATCGTTAATAATTGCATCGGGAAAACTTGGAAAAATTGTGCAAAATTCAGAACAAAAATTTCAAAATTTTCCCAATTTTTATTAATTATTTAGTTTTCAGAATTGATTAATAGTGAAAAATTCATAAAAAATTCAACAAAATTTAGAATTCAAAATTTCATTTTCATGGGTCCCGCCACGATCCACTCCAACCTACAAAAAATCATGTAATTTCCAGGCGTTGCGGCATCCCAAATCGGCGGAATCACACTTCACGCGTTTTGCGGTTTTCGCTACGAACATTCGACGCCGTAAGCAGTGCCGAAAACATGTTGTTACGCCAAAATCACATGGTCCGACAGTGGAAACAATGCTCACACTTGATATGACGGATTTCATACCATGATTGATCGCTTTGCAGGTTTGAAGCTCTCGAATATGTGAGCTCATTGCGTTTTGATCTACAAAAAATGCGAGAGTTTTCGCAGCATTGCTCATTTGATCTACAGAAAATGGGGGAATTTCGTACTACCAGTATTGCTCCTTTGATCTACAAAAAATGCGGGAATTTTCCCAGCATTCCTCCTTTGATCTACAAAAAATGCGGGAATTCTCCATTGCACATTTGATCTACAAAACATGCGGGAATATTTCAAGTGTGACGTCAGCGCACTCATGCGAAATCTGCATGAAAAGTCTGCGTCTCTTCTCCATTTTTCGGAGCTCAAACCAAAATGGGCGGTACCCGAAAATTCCAAAAAAAAAACGATAATTTCCCGTCCCATGTCGCCCGTACGTCCGTAATAACGATAAGCCGTTCGGTAGAATTCAGCTCATTAGGTTCACTGGAGATTTCTTTCAATTACCGCCGTCTCGAAAGATGAACCAGTCTTTTGTTTTGAGGTGTGCGGAATTTCGGAGCATTTGGACCGTCTAACTATTAAAAAAATTATTTTGCAGAGCGCAGCCTGGAGCCGATGTATCCAAAAAACGATTGTCCTGAAAAATGTGAAACGACATAATGACAATGTTTTTGTAAATAATAACGTTAGAGTTGGAAAGTACGTAAACTACTGGATAAATTTAAAAATTTCGAATTTTTCAGGGTTTTTTAGTACTGGAAATATTGATTTTTCAGTGAAATTCCAATAAAAGCTGGAAATTTTCCACAGAAAAAGGGAAATGAAAATATGAAAATTTGTAATTAATTTCGAAAAATGCAGAAAATCCCAAAGCCTTCCAGAAAAGCTGGAAATTTCATAAAAATTTCGGAAAATCTGAAATTTTCAGAAAATACAAAAAAAGCAAAAAATCTCGAAAACCTTCCAGATAAGCTGGAAAATTTTAGAAATTTCCAAAAAAATAAATTACTACTGAAAGTTTCATAAAATTCACTGATTTCTGTCTTCCTTCTTGTAATGGATGAGTTTTGCCGAATCAACTAGGCCATTTGGTTCGGCCAGATGTAGATTTACCGGTTTGCGCGTTGCGTGTCGCGTCGCGAGCTCGATTACTTAGTTGTAGATAAAATGTATTAGTCAGTGTGGAGTACACGACACTTTCCCATGTGTTGTCCGGCAGGTGATTGTCAATGGAGCGCAAAAAATTCAACGAGTCCAGAACCCCGTGATAGAGCGGCCAACACGGGGTTCTGGCTTTCCTCATTTCATATTTCGCGCTCCATTGACAATCACCTGCCGGATAACACGGTGGAGTGTCGTGTACTCCACACGGACAAATACCTTTATTTAGAACTACTAATTGAGCCGCGACGCGACACGCTACGCGCCGGAAACCTACCAGAAATGGAGATGCTAGTTCGGCAAAAACTCTTACCATTTCAACTCTTTATGAGGGAAGCCAGAAATCCGTGTGATTCCAAAAAGAAGCTCCAAAAAAAAATTCCAAAAAAATCTCCATAGCCTTCCAGAACCGCTGGAAATTTCAGTCCCCTAAAATTGATAAAAATTCGAATAAATTCTCAAAATTGTTAGAAAATCAGTGAAAATTTGGAAAATTCGGAAATTAAACAATTTTTTTTGGAATTTAAAATTTAGAATTCTTCGTACGAAAGATGCTCCAGAAAACTTGTAAAAATTTAATTTTTTTTTTGAAATTTCCAAAAAATTTATTTATTTTCAGATGCGGCTTCAAATCAGCTGATATTCTAAAGTAATCCTCGAAAAATCAATTCCTGAGCCATCCAGCGTAATTCCAAACAAACTGTGCACCAGATGACGCCGATCGAATTAACAGCTCAAGCATCGAGACAACACAAGCGCGAAAACCTTGCAGAGCGCCTACGATGACGAGAGTGACGCACGCCAAGGTCCGTACGTTGCAGCACAGAAGAACCTTGTAGGCTGAAAGTTGGAGCTCAGGTGATGCTCATCAAGAATATCGATGTGAGGGACTTTGTAATGGGTCACGTGGATCTATGGTGAAATTTTCTGTGAAAACGGGAATCTCTATGATCCGATTTGTATCGCAAGCCGATGCTTCCATTGAGGCACGTTTCACAGAAATGACCATTTTATGGGCGTGGCTTTCTTTTTCGAAAATTTATTTTTTCCAAAATTTCTACATGGATTTTTCTCTACAATGGAAAAAACCCCCGAAATATTGTAAAAAATTTGAAATTTATCGGAAAAAAATAAAATTTTCTCTCTTACAATTAGGCTTAGGCTTAAGCTTCTAGGCCTGGGCTTAGTCTTAGGTTTATGCTTAAATTTGAAAAAAAAAATTCTTGCAATTTTTTCCAGATTTTTCCGTTTTTTTTTTCACAGAAAATCTAAGATTTTCGATTTCTACTTTCAAAAAAAATGAGTTAAAAAAAATTACGCAAATTTTGTAGAAATTTTTCTTTTTTTTTTCTTAAAAATTAGGCTTAGGAAGCTTAGGCTTATGCTTAGGCTTAGGCTTTGGCTAATCGCAGGACTATGCTTTGGGTTAGAAGACTTGCGCAGACAAGCCTAATCCTAAGCCTAACCCTCTTAAAAAGTTACAAGACGGTTTTTCCTTGCGCTGGGAGCTCAAAAGAAGAAAAGAAAAAGAGCTATTCGGACTTAGTGTGCCTATCTGTAATAAAACATTGGAAATCCCTATGACGCACTTAAGCCTACGGCCCGCAAAACATACTAGGATGCCCAACTGGAATAAAATATTAGAAATCCTTATGACACACCGGCGGTATGGCGCGGACTTAAGCCTAAATGGCCACTTTTATCAAAATACATTTGAGCTCGTCTTGTGTTTTACGTTGACTCCTCTGAGGCAACTCAAAAATATTCTGTGGATATTCTGCAGAAATCAGTTTAAATGAAGACAAGAGATTACTAAGAAACTTGGAGATTTCATAATATTTGGGGGGATGCGAGCATCCATTGGAAATTTGCCATTTGATACTTTTAGAGGCAAAAGTCCAAGTCGTAACAAGCTCACAGTGGGCTCTCAAATCATCAAATTGTAACGAAGAAACGATCGATATAACGAAACAATTTTACAAAGTCACTTTGGTAGCTCATATCTCCGTGGATAAAATTTTTACAGACGTAAAAGTCATCAACTGATATGTTGTTGATATGGTTGTAAAGAACAAGTTTGTTTGAAAAGTTTTTTTTACCAAAAAATTTTCGTCGTGTTTCAAAGAAATAGTAACGGAATAGCATCATAAAAATAACAACAGCAGTTGCGCCGCGCACTTCACGCGGTTATTCTTAAACGGGAGATGAGCTACCAGAGTGAAATTGGATGGCCCTCCAATGCTTCGTTAAAGTTCACGGCCATTTTCAGGATCTTTGAGAGCCCGCCGTGAGCTTGGTTTTCGAGGAGTTATATAAATTGACCCCTCCAGATTAAAGGAGGACTTTTATATAATCACGATGGTATTTAATTCCGATGAGTAATCCATTTTTCTTTTCACATTTGTCAAACAAAACTAAGTTTTAAATTAAGGCGGGATATACTAAGGTGTGATAACATATGTTATTCATGTTTAAGTTTAAATAAAGTTTTTTTTTAATTTTTGCTAAAAAACGAATTACAACCGCCTCGCTCAAATGTATTTTATAAAAGTGGCTATTTAGGCTTAAGCCGCGCCATACCGCCGGTGTGTCATGAGGATTTCCAATATTTTATTCCAGTTGGGCATCCTAGTATGTTTTTCGGGCCTTAAGGCTTAAATGTCATAAGGATTTCCAATATTTTATAGTTGGGCATCCTAGTTTTTTTTTTTCAGGCCCTTAGCCGTAAGTGTGTCATAAGGATTTCCAATGTTTTATTCCAGTAGGGCACCCTAAGTATAAATAGCTCTAGGGCTTTTCTTTACTTTTGCGCCTCCAAGCGCAAGGAAAAACCTTCATGTAAAAGCTTTTTAAGAGGGTTTCATCATTATATTTATTGAAATCGGGGCGAAGCCCTGATTTTGAATCCATATTTTTGTCTTTGTCTTCCACTTGATCCCTGCAAACTAGGAAAGAGAATGTTTTCTTTCTGATGAAGTAAAAATCATCATAAAATCTTGAAAACGAGCAGGAGGTAATATTTGAATATATTGGGTTGTAAATGTGTGTCTCCCCTTGTGGGTGGGGTGGCGATGTGCTGGCAGCCAATCTGCCTTCAACGTGTATCTCCCGCCTGTATCGCCCTTCAAAGTGAGAATTGGGTTACCAAAATTTGAGGGAATCTGATGAGAAAAGGTGAGGATTTCAAAAATATTATTGTTGACACACCAGACCAAACTTTAGCCTGGGCGAAGAGACAGAAAATTAGGAATTTTTTGAAAACTTTCAAACTGGCACAAAATTATTTCACAAACAAAACTCTTTTCACATATTGTTAAAACAGATGCCATTTTCCAATAATCAATATTGTCCATTGAACACAGAAAAGAAAACGAAGATTCTATCAAAAAATGAGTGAAAAATCGCAATTTAAAAATCGAAAAAATCCGTGCTGAACTCGAGTTTTGGCGGTGCTGAAAAGAAAATTTTCACTAAAATTTTTTGGAAACTTAGTTTTTCGGATTTAGCGTCAAATTTTGAATCTATACAAAAAAAAAATTTTGAACTCAGATTGAGTGGATAATAAACGCTCAAAGTTGAAAATTGACAACGCAAAAACGGCGTGAGTAACTTGCTTCAAGGTCGGCTGTCTCAGTGAGTTTTCACCCAATTTTCCCCAAATTTTTTTGCTCTATCGCTTTAGAAATATTTTCTTTGTGGTAATTATGTTTTCCTCAAAATCAAGATAATATCTTAAACGACCGCCATCCTATTTTACAAGAAAAAAAAAGTCTTTGGAAGAAAAATCAGAAATTTTCGGCGTCGATTTTCAAAATGACAAAATCACTTTTTCGTAATAAACTTATTTAAATGTATTTTGATAAAAGTGGGTATTTAGGCTTAAGCCGCGCCATACCGCCGGTGTGGGGGTCATAAGGACCACTATTTTATTCCGATGGAGTTGGGCATCCTTGTATGTTTTTCGGGCCTTTAGGCTTAAGTGTGTTATAAGGATTTCCACGATATTTTATTCCAGTGGGGCATCCTAGTTTTTTTTTCGGGCCCTAAGAGCGGCTGTGTCATAAGGATTTCCAATGTTTTATTCCAGTTGGGCACCCTAAGTCTGGGTGAATAGCTTTTCATTTCTTTTGGTCGCCCTCCAAGCGCAAGGAAAAACCTTCTTGCTTAACGATTTTTTAAGAGCGTTAGGCTTATGCTTAAGCTTAGAGTTAGGGTTGGGGTTAGGCGTAGGCGTAGGCTTACGTTTACGGCTTCGGCTTCAGGAATATTTAAAACAAAAATCGAAAAATAGATTTTGGGAAAAAAAATCGTGATAAAGCCTGCTAAAATTTTCACAAAAATTAAATTTTTCAAATTTTTCAAATTCCTAAGTGATTTTGGTCTCGCAGCGAAAAAACATCCAACTACAGTAACCCTCGCCCTCTCCAATTTTCAGCTCCCCGGCTCCAATGTTCTCGCATTCCAGGGTGTGATACTCCGTTGATTCGCCGTGAACTCCCACTCCAACTCGCCTGGGCCATCTCCATTCACAAATCGCAGGGAAGCTCGACAGTCCGGGAATGTTGAAGCGCGTTTTCGCCGACGGACAGGCGTATGTGGCGTTGTCGCACTCAAGATCAATGGACGGCGGCAATTAATTATCGGCTTCGAGCGTTGTGTCCGAGCGAATTCAAAGGTGAACAGGGGATTTTCGAGATGAAATCTATGATTGCAAATCAGAATGGATGGATGCTGTTAGATATCTCCTTTTCGTGGGTTCTCTCACGTGGTAGAGTGCTCATTTCGGCTCTACTGTGTAGATCTACAAAAAATGCGGGAGATGAGGAGACTCAGACTTCTCAACTGGTTTCGCATGGTCTAGAACGGCGTTGCTGACGTCACTTTTCTCTCGGCATAAAATTCCCGCATTTAACCGGTAAGGGATCTCTCAGCTACGTGGAAAATTATCGATGTTTTACCGAATTTCAGGTTATCTAGCTTTTTACAAATCCATCGAGGCAGAATGCGACGACGAACAGGACTGGGGAGCCCCTGGTGCTGGGCCTAGTGCTCAAGTCGAGTTCGATCGATTTTTTATTTAAAATTTTTTTGTGATCTCCAAATGTTTCTGTCTTTCTATCTTCCCCCCCACCCCACCAAAATAACCGTTTTCACAACACTCTGTATCATCATAATTCTCACATAAACTATTTCAACGTTGACGTCGCCTCAATTTTTAGTGCTATAAGCGTCATCGGATCTGAAAAAAATGTAAAACTTGAACAAAAAAGCAGGGGGTGGCCTAGAAAGCACAAAAAAAACTCGGACACAGTTCAGGAGCCAGTTTTTGGAAAAAAAAAAACGTCATTTTCGTATAGCCGTCCACACTGAAATTGAAAGAATTCTGGCCGAGTTTTCCAAATTCTAGGCCACCATGCAAACCGACGTTTTGGACGGCAACGTGCCGGTGGCCGTGGCCCCAAAGAAGGAGGGAAAAACTCGGCCACTCTTCTATGTACCCCTCTCGGGGAATTTTTACCATGGCCGAGTTTTTGTGTCTTCTAGGTCAGGCATTTTTCTTAGTCAGTTTCAAAGGAAATACGATACCTGGTCTCGACGCGAAAATTTAATTAAATCCAAAAAGACGTGCGACTTTAAAAAGTACTGTAATTCCAATATACTTGCGCTGTTGGGAAATTTATCGATTTTTCGTATTTTTCAAAAAAAATAATCAAATGTACACAGGGTTCTGTTCTTCCTTAAATTTGATTTATTCGCGCTCCATTGACAATCGCCCGCAGGATAACGCGTGGGAAAATCGTGTACTCCACACGGACATCGACGCGACGCGACACGCAAGTCGCGCCTTGAATCTACCCCAAATATGGCCGAGCCATAAAGGCCTATTCGGCAAACTCTTCCATATCGATTTATGAGGGAAACCAGAAATCCGTGAGGATAGTGAGAAAACAACGAAAAAATCATAAAATTTCCCAACAAGACGAAAGTTGAGATTACAGTAGTCTTTAAAGGCGCACTTTCTCGCATTTAACTTAAATTGGTCGTGGAGAGAGTATTTTTAGCGCAAAACTTCGCATTCCGGGTAGATAATAGAAGAATTGAAACTGACAAATCCGCCGTTTCCTCAAGCAGCAGCGGCACAATAAACATGAAATACACGGCCAACACGAAATGAAGCGGCACCATCGACACAATGAACAACGACATTCGGAGCATGTGCTACAAAACTGTCGGCCGCAACTTTTTCGACGGATTCTTCCCAAAGACGAGATACCCTTGCATCGGGCTACATCGGGGCTTGAACCGACTTCTTCTTCATTACAGCGCTCCCTTCTCTGGGCAGCAGGTAGCGTGTCCACGTGGTATAGGGTGACTCAGTGGTTCTGTGATTAATCGGCGCGAGCTGGAGCATTCTTTGCAGAGTCGCTAGGCGTGAGGCCACGGTAGCGGAGGTGTTGGCTCTGAAAGTAGATTTCATACAGGATGGTTATTTCGGGGAGTACTGTAGTGGTGTTATAGTGGTTACTTGTAGGAGTACCCTGTAGGGGATACGAAATGCAGGGGTAGCAGTACTGAGGGGGGTACTGTAGGAGTACTGTAAGGGTGTGGGGGTACTGTAGGAGTAATGTGGGGGTACTGTAGGAGTACTGTAGGACCACTGTAGGGGAAATGTAAGGATGCTGTAGGAGTAATGTAGATGGTACTGTAAAGGTACTGTAGGGGTGCGCTAGTGATACTGTAGGGATCATGTAGGAGGACTAGGTCCTGAAATAAGGGTACTGTAAGGGTACTGTAGAGGGTTAGTTTTATGTCCCTGTAAGGGTACTGTAGGGGTACTGTAGGTGTACTGTAGGAGTAAAAGTGGATTCACTGTAGGACAATAACGCCAGAGGTACTGTAGGAGCACTGTAGGCGTACTGTAAGGGTACTGTAGATGTACTGATTATGTAAAAGGTCCTGTAGGGGTACTGTAAGAGCACTCTAGGGCCATTGTAGGGGTACTGTATGTACTGTAAGGCTACTGTGATGTACTGTAAGGGTACTGTAGTTGTTCTGTAAAGGATACTGTTGGAGTACTGTAGGGTTACTGTATAAGGGTACTGCAGGGGTGCTGTAGGGATACTGTAGGAGTACTGTAGTGTCTATAGGAAGACGAACTTTTTTTTGAATTTACTCATCGGAGAATCTAATATTTTCTGTCTCCAAATCGATACACCATAAAAATTTTAGGACCCAGAGCTAAAAAAAAATACCAACTTCTCCAATATCATCTCCATCAATTCCAGTTGTTCTGTGCAGTTCGCCATCCCTTCTTCATTCCATCGGCCGATTCTCCAAATCGTCCACCATCTTCACACCCCGCCGACACGCCGGTGTCTCCACATCGTTCCGTACCAGCTTCCGCAATTTTCATAAGATTCTCGACAGACTCGTTAAACTTGCGTTGGCTTGAACAAGTGGGAACCTAGAATCGCCTCGGGAACCGGATTTCCACCCCCTTCCACCAGGAGGCTGACCAGTGTCGTTTTCTGCCTGACGACCTTAGCCAGGACGTGCTCATAGTTGATCATGTAGATTTGCCCGTTTTCAGATATGTTGAATGTTTCAGATGAGGACAATTGAAAATTACCGATTTGATTGTGCGTGTTCATGCACGACAGTAATGAAGGCGAGGCGGCAAATTAAAACTCTGAAAGTTTAGATAATTGTACTTTAGTTGAAATCCTTTTGTTGACAGTCGACTAAAAAAAAAAGCAGGTAGGTAGTAGGTAGGTAGAGTAGGTAGGTAGAGTAGGTAGGTAGGTAGGTAGGTGAGTAGGTAAAGAGAGACACGGTGCATCGATCTGACTTTAAAAATCTCAATCTCGTATCTTAAGCGTCTTTGGTTCCTGTCAGGCAGGTAGGGGGGAGAGTAGGTGTGATCAGGTAGGCAGAGCTCCGGAGTTAATATCTGGTGGATTGTGAGTTGCTAATAGGTAGTGTAGACAGGCAAGCAAGCAAGCAAGCAGTCAGGAAGGTAGGTAGGTAGGTAGGCAGGCAGGTATCAGTTGTCAACTTTTTGATGAATCTAACGGAGCCGAACGAGTTATAAGGAGGCCCAACGTTGCACCAGACATCGGGAATCGACCTAACTTGCAAAACAACTCGTAACTTAAGAGTGTCTTTGGTTCAATTTGGGAGGCAGGTAGGTAGGCGCTTAAGGTAGGTAGGTATATCTTACGCTTCTTGTTTCAAAAATAGTTATATATTAAAAAACAATAAAAATTTTTTGCAAATTTTATCAGTCGACAACTTTTCTTGTTAAAACTAAAAAGAGACGAGATATTGTAAGTGTTGCAAAAGTTGAACGAGACATGGTGCATGGAAGGATGGCTAGGCAGGTAGGTAGGTATTAAGGAGGTAGGTAGGTAGGTAAGCATTCCGTATTTCTCTACTTGCTTATATCCTGGTTGTTATGTGTTGTATCAAAAAATGTTTAACAAAGATAACATAGACTGAAAATATTTAGCACGTAGCAAACTTAAAAAACTAGGTTGGTAGGTAGGTAGGTAGGTAGGTAGATAGGTAGGTAGAAATGCAGGCATGTAAATCTGGTGAAGGTAGGTAAAAGTACTCACGATGGAGAACATCAAGCAAGAAGATCGCCAATTGAAAGTGGTACGGAAGCGAGTTGAGCAAATATTTTAGAGTATTTGTCTAGAAAAAATATTAATAAGTATTCAAAGTTTAAACTAATAATAAAATACCAATTCCGAAAAACTTCATTATAAACAAAATCGTCAGAATCCCACTGGAGAGGACTAAAAGTCACTCGTGTTGGCAGACGTCTGATAAACATCGAGGGTGTGTCCGGGTGGTAGGAGAAGCACATTATCGTGATACTTTGACACTGATAGATTCCTCAATAGAAGCCAACGCTTTTCCGAAAACTGGAATCGAAATGTTCAAAGCATTGAGAATTATTTTCTGGTACTCTTCAACCAGGCATGTTGTACTCCGAGTTTAGATCCGCAGAAAAATCTAAATTTGTATTAGATTGGGCGATACCGTACTTGCCTACCTGCCTACTGGTAGGTAAGCAGCCTACTTATTTTCAACTTACAAACCTCCTACTTTGTAACGTTTATTTCGCAATAATCGATTTCTCGAAATATTTGCATTTCCCCTCGACAAATGATTTCTTTGCGGGAATCTTTAGGAACAGCTGAAAATTTTTTTTTCCGTGTGGCCTTTTCACGGCCACGACGTACCTTAACGCTTACACATGGTGCAGTTGACGTAGTCATGCAAGAACCAATTTATTCGGCGGCGTTCGTTTTCGGTGACGGCGAAGTTTAAGCACGGTATGTAGAACCTTACGGTGGAGACGTTCTTTGATGGCTGGAAGTTATGACGTCATGTATAATTAGGGATGAGATTCCTAGGCCACGTGTGACGTCACAGCAATCCCCGAAACCCTGGCTTTTTCGATGGGCGATTTTTACTACATCGATACTTTCTAGGCATTCATCGAGCGAAACTTTTGTGATACTTTGGCAATGGTCATCAGGTAGACAAACAACGTGATAATTTCTAGGCCACGCTTGCCTCTGTCACGTGGCCGAGATTTCGCGCCAGGACCTAGAACTAGACAGGGTGCATCGACCTAACTTAAACCTCGTATCTCAGTTGCCAGGTAGGTAGGCAGGCAGTCAAGCAGATAGGTAGGTAGGCTGGTATTTTAATTTCATTTCTGCGGCTACAACACAATTTCTCTTCCAATCAAGGACAAATTTCTAGCGCCACACATGCAGAGTGCGGACTAATAATTAAAGTGTTTTACGACAAGGCCGAGAAAAGAGAAACCTAGGCCACTAATTTGTAGTGAGGTGTGATGTAACGCCACTATAAAACTATAGAACTCGCTTGACGCATAAAACTCTGATCATTTGCGGTTTCGAACTTGCATCGTCCTTCCATAGACCGCATCCTGAACGTACACTCTCGTAAATTGCGGCCTAAATTGTATAGACCCATTAAAGGGTACAAAATATGGGAATAATGGTGAATCCGGAGCGATTATCATCCAAATACACGAGAGATTACTTCGATACATAACCTCGAAGAGCAACAATTTCCCCACGAAGAATATCAGCAGAGCTGTGAGCAGGAGAGGCGATTATTATCTGGCGGATTGTGCGCTGAAAGTAGGAGGTAGGTAGGTAGGTAGGTAGGTAGGTAGGTAGGTAGGTAGGTAGGTAAGTATCGGGTGGTAGGTAGGGAGGCAGGTATCAGCTGCCGACTTTTCGATAAATATTAGACGGAGCGCCGAAATATAAATTGCCAAAGTTGTACCAGACATGGTGCATCGACCTTACTTAAACAACTAGGTGGTCTAGGTAGGCAGGCAGAGGCAAGTAGGTAAACTCACCGAATGCCTTAAAACAATTGCTAGAACATCGGCATAACCCGAGCTTCTCCCATTCTACGTCGCGACCACAAGCGCGCGCACACTTTTCCGCAGGTTCTCATCATCGCGATCAGCGCAAAAATCCTCGATTATCTCGAATCCACTGGCTCTTTTTTGTGTGCGACGTCTAATCGTTTATAGCTGATCGGCTCGGGAAAACCAATCGTCACACTGCAGCTTCGCATCCTCCAAGCGGAAGCCGTGAGAAAACTGGGCACTGCATAGGAACTAGAAGTAATTTCAGTCTTATTGTTCTGGAAGAAGGCTTTTTTATGGATGGGGTTTGAAAATAATCACTAAAAAAAAAACTTACAGCTGGAACTTTGTTCGATAATGAAACAATTAATCTATAAAAAGCAAATTTTTGACAAAATTTAAAACTTTAACGTGTATGAAGGTCACGTGAAAACTGAAAACAAAAATGTCGAAAAATAGCAAGAAAACGGCCTAGGCACACGTAGACTTATGGTAGGCAGCAAGGCGTAGGGGTTGATCCAGGCAGGGTCACGTCTTGAAGGCAGGTTAGGTATAGGTAGGCATAGGTAGCCATATGTAGGCGTAAAGGCAGGGGCATCTCTAGATCCTTTTTGTATGTGGCAGATTGGCCGCTTTGCAGGCAGGTTGGCAGGTGTGGGTGGCCTAGTAGACCGAAGTTTAAACAAGCGTAAAGTTCCTATAGTAGTAGGTAGGCCAAACCTTTTTTGTAGATGATGAAGTAGGTGTAGGCTGTCGTTTGAAGGCAGTGATGCAGACAAGGTTAGGTCGTCGCAAAGGTTGGCTGGAGGGTAGGCACGTGGGTCAGCAGATAAGCGTAGGCAGGCATAGGCAGGAAGGCATTAGGCAGGTAGACGTAGGCAAGTAGACGTAGACAGGATTTCAAATATGACGTGAAAAGGGGAAAATTTCTTATTCTGCGAGGCGATCCAGTATGCATAGGCAGTTATGGCGTTGGCCGGTAGGCGTTAGGTAGGCGTATGTAGGTAGGCGTCGATGTAGCAGGTAGGCGTAGTCAGGTCCTAGAGATAAGCAGGTAGTCGTGACCGGATAGGCAGGCAGGTAGGCGCATGCAGATAGTCCTAGGCAGGTGGGCGTAGGAACGTAGGCGTTGGCAGGTAGGTGAGGTAGGCGCAGGCAGAGACGTAAGCAGGTAGGCGTAGGCAGGTAGGCGTAGGTAGCTAGGCGAAGGCACGTAGGCGCAGGTAGGCAGGCATAGGTAGGTAGGAGTAGGCGATGCGCACATGAAAACCTTATAAATGTTTCAACCGCATAATCATCATCCCATTTTTCTCTCGATCAAAACGAAAAAATGCCAGCAGCAAACACAATTTGCATCCATTTCTCTCTCTTACTCACTTATATATCCTCACTTTATCCCCCGTTATTCAACCTTCCAAACACTTCCAAAACCTCCAGAACTGCTAGAGAGTAACACGGAAAATATTTGAACTTTTGTCTCGACCAAGTTTTTTTTTATTTTTTCTTTGGATTTCAACAAATTTGATGTCTGTATTTTTTCCATTTTTCGTGCAAAATACGGTAATGAACTAGGTTTTTGCTACGTGGCCTAGAAAATCTCGGCCACCGATTCTGATCTGTTGCAGGCGGCGGCCGCGGCCGAGGGTTTTTCACTTCAATTGATACCAATCCCTCTTTTACGCAAGGAATCACGTGGAGTGTGTCTCTTCATCTTGATTTACGCAGATCTACAAAACATAGCGGGAACTGAGTTCGTATCGTTAAGAACATGCTGACGTCACAGTTTTTTTATCAGCGTGTAAATGTAGAAGCATTCCGGCATTTTTTGTAGATAAAACCGCAATGGGACAGCCTGGCACCACGTGCTCTTCAATGGCAACCGTTATATTTTTTTTGACAAAATCTTGAATTTTCTAGGATTTCAATGAAAATCCAATTTTATACCAAAACTTAAAAAAAAAATGCTAAATTCGACTAGCAAAAAATGCACCCAGTTTTACAAAAAATCTTTATTTCTGAAAAAAAATTCAGTGGAAAATGTCTATAATATTCAGTATTTCATACTACGGAAAACAATTTTTACAACAAGTTTTGATGTGGCCGCGGCCGAGGTTTGCTTTTCCACGTGGTGTCAGACTGTCGTCTCTCGGCTTGATCTTAGATCTAAAAAAAACGCGGAAACTGATTCCTCATGCTATGTTAAGAACGCGCTGACGTCACATTTTTTTGATCGGAAAATTCCCGCATTTTTTGAGCGTTTGAAACCGTGATGGGACAGCCTGGCATTACGTGAAAACAAACAATGCAAGCGCGCTCAAATGTAGTCGAATATATTTGCTCTACCACCAGATAAATTCCACTTTTTCACAATAAACCTAAATATTTTTTGTGTCAAAATCTTGAGAATTCTTAGCATTCGAGAATTTCCGCGTAAACCTACGATTTTGTTATTGTTCAGGGGAACAAGTGAGCCACAAAGCTTCCACTGCTGCTCCGAATTCGATTCCCCTGAGGCATTTTTGTTCGAAAAAACCCTCGTTTGTCATACTCGTCGACTTTCTTCGAAGTTTTTGTTCTAGTTTCAAATAATTTTTCGTCAATACTTGTTCCTTCCGACCCAGCAGATGTTGTTGGGGGGGGGGGATGGGAGAAAAAAAATAAGAGAAGAAGCAGAAACTCGACACTTTTGTGTCCGCATTTCTCGTAAAGTAGATTTTTGAGCTTTCCAAGGCTCAACCACCTAGCAAATTTCGCCGCAGAGTTGATTTCTCCGGGATAGCGTGGGCTTTCTACTGGAGACCTCACTATTTTTTTGCCTTTTAGTAGAGCTTGTTAATCTTTTTTAATAATTTATTGCAGCTCTATGGATTTTCCAAAAAAAACCACCCAAAAGCCCGAAATAATCAAAATTTTCGTTTTTAAAACGCTAAATCCCGTACGACATGCCGTCCAAAGAACACTCACATAACAATGAAGAGATTTCGCCAAAAAAGTGAAATCCAATTCAATTTATTTCAATTTTGAAGAGTGCGTTCGTCTTTTTTCGACAAAAAAATAAGAAAATGTGTACCTTGTGTAGTTTTCAACAGATTTATTGTTTTATTAATTATATAATAGAAATCAAACCTTCTTTCTGCCGACCTGTAGATGGCTACCTACATGCCTAGTTGCAAGTAAGGAGACCTGTGTATCTATCTAGGTACTTATCTCACACCACCTACATACCTACTACTCACCTCCCTACTCATGTAGACATAAGTGATCCTCAAAAAGGAATGCGGTAGATCAAAAGTTTATGGAAATTTATTTCGATTTTCAGGTTTTTAAAATTGCGGAAGATGTTTTCATTTAGATTGAAGATTAGTTTAAATTTTTTTTTAATTCCGTAAGAAAAAAAAATTATTAGTTTATTATTACTCTTTCTATTCCGAATATCTATGTGAAGCTCTTTTTAATTCCTTGGTTTTATATCTAATCTTAAAATCGCTAATTTCTTGTGCACCCAAGAGATTTCGAATTTTCACGGGGTTCTAGCCTTCCTCCTTGAATTTTTCGCGAGTCGCTCCATATAATAGAGAACCGGGCAACGAGTGGGAAAGTCGTGTACTCCACACGGACAAATACATTTAGTTTACAACTGAAACCGAGCCGCAAACACGCAACGTAAATCTACCTCAGATATGGCCGTGCTAAAATGGCCTAGTTCGGCCAAACTTCCATTTCAATTTATGAAGCCCAGAAATACCGTGTAATTTTTGCGCCATCAGAGACGCCATGTGTCGATTTACGAGATTGTTGTATATTTACAATCGGGAATGCGTAATATTTACTAGAATGCGGATTTCCGTTTTTTTTTTATGAAAAACGTCATCCACAAATTAAATTCGGCGATTTTAAAAATCGCGTTAAATATAAAATCAGGGAAATTTTTTAAAATTTTTTCACGTAGGATATCGGAATACAGGGGAAAATTTGGAGGCAAAAACTAATGTCACCCTGATCATGTTTAAATTCTTTAAACTATTGATGAGAATCCTTTTTTCCTAAAATGAAATAATTTCTGACTTTTTTCTCTTTTCAATAAGAAGCTAAAAACAGACGAACCTATTCCAATTTCCCACCACACCAATTCATTCTTTCCGCATTCTTCTTCTTCCATTATTTATCTACCTTTTCCTGCATTCTCTGTGCTCTTATAAATAGTTCCATCATCCCATTTGCTTTCTTGTTGTGTGGTATGCACTTTTTCAGGTCCATAACCTATACGAAAATTCGATTTCATTTTCCATTCTCAATTACATTTTAAAAATTTTTTAAAGCAAATCTCGCCCTGAGTCCATCGATTTTAAAATACGTTTTTTGGTTTTCAAGAAATTCCATTATGAAATTCGGTGTCTTTCAGACAATTTTGAGCCTAATTAAACAATTTAAACTTTTGACTACATCACCTTAAACTTAATGCCGTTTAAACTTATAACTTTTTCAGAATCCCATATGCTATGGAAGTATTGCACTTGCTACACCGGCTAATTCTCATGATCCTGGTCCTAATCCCATGTTTCTGGCAAGCTTACGATTATCCCCGTTCTCGATTCTCCGATTCTCTGATCTATCAAGAAATTCCGCGCAAAAGAGCTGATGATTTCAAGGGAGTTTTATGTGTGCTATAGCTTACTGACAGGATTTCAAAAAACAGTTACGGTAAGATAGTTTTTTCGAAAAATTCTTTCACGGATTTCTTGCTTCTTGCCGAACTAGGCCATTTTGGTTCGGCCATATCTGGGGTAGATTTACGGCGCGTCGCGTGTGGCATCGCGGCTCGATTTTATTAGTAACTAAACTAAAGGGATTTGTCCGTGTGGAGTACACGACTTTCCCACGCGTTGTCCGGCAGGCGATTGTCAATCATGGGGAGCGCGAAAAATTAAATGAGGAAGGCCAGAACCCCGTGCCTGTATAGGATATTTTGAATCTCGAATTTTAACGAAGATTTGATTGTTTGAGTTTGAGGTCGGAAAATAAAAAATTCCTTTACGGTAAATTTTCGGATGCAAAAATGTGATTCTGCTGTAAAAAATCCGAGAAAGCCAAGAAATGTGCGGAGCCTATTTTCCGATTTTATATTACGTGGTTGGTATTTCAAAACTTCAAAAATATCAAATTCGGAAAAAAAACCGCTACTTGGTAAAATTTCCTCGTAAAATATTCTCCGCTTACGCCGCCCCTCTCTGGGCATTTGGAAATTTTTTCGTTAAATTTGTTGGAATCTGAAATTAAGTCCAAAAAGAACCAAGAAACGGGCGGTATTATGGGATTGAGACATGGTGCATCGATATGGAAACGGCTTTTCTCAATTTGGTTTTTTTAAGGATAAGAAACTAGCAAAACTCAAGTGGCCTAGCTTTCAACTCTTCCAGAATTCCATGATACATTCAAACTGGTCATTGCTCATTGACGCTCTCTCTTTATGTCATCACCATAACGAATCCACTCAATTTTCACTCAAGCTGTCATCTCCAGCAGTGTCTCTCAATTTAATCATGCTTGAAATTGTTTTTATAAAATGAAACAACAGCGACATACTCTGTAAAAGCTATTATTAAAAAGTATATATATACACGAATTCCTGGGTGGGGATTGAGACAACGGAAGACATGGAGGAGAATTTGAATTTCATTAAAAAAAAAAGACAAAGAGGTAGGTTACTGTAGCATCCAATCTGGAAGTGGCTGCACAAAGAAGAACCTCCACCGTCAGCAATATGTTCGACACACCTGGAACGTTGAAACGGGGTATTATTTCCTTAAAATTTTCTTAGTCTAAGCCTGAGCCTAAGCCTGAGCCTAAGCCTAAGTCTAAGCCTAAGCCTAAGACTAAGGCTACCTGAACCTAACCCTAGGCCTAATCCTAAGAAAAATCCTAAGCTTGAGCCTAAGCCTAAGCCTACTAAAGCCAAAACCTAAGCCTAAGCCATAAGCCTAAAGAGCTCCCAAACCTTAGCAAAACCTAAGCCGAGCTTAAACCTGAGCCGATACCTCCTAAGCTTCCCTATGCCTATTCCTAAGCCTAAATATAAACCTAACCTAAGCCTAAGCCTACGCCAAGCGCGTCAGAGCCTAAGCTGAGCCTGAGCCTAAAATTAAGCCTCAGCCTGAGCTTGATCTTAAGCTTAAACCTAAGCCCTGAAAATTTTTTTTTGAACTCTCGCACAACAAAATTTGTAGAATGTTATGAATTTAAAAATTGAGATTCTAAAATTCCCCGCCAAAACGTTTAAAAACTTCACATAATTTATCTGTTTAAAATCTATATCCATCAACGGCCATACCTCTTAGATTTAGATTTTCGCGGCAAAACTTGTAGATCATTTCAAAAATTTACTTTCGCGCCAAAGATTGTTCGGCTCGCGAAATTTACAATTTTATAAAAAATGTATTTCACAGAATTTCAAAAAATCGAAAATCGCGCCAAAAAATCCATTTATAAAATTTTTTAAGTATTGTGACGTCATAGACTACAAACTAACCCCTCTATTGCCCCTCACCGTGCTCTCCAATGAGTTCGGCTCCACTTCATCAATCCCTGGGAACAGGCCCGGGTCCTTTTTTTCCTCGTGGGCCTTGTGCACCAATCGGGCAGTCGATACCAGGCATATCAGACGGTCCTGGCGTGCCCGAATTCTCCTCTCTCCGATCGTACCTGCCGTTGGACCCGATGGATGAACGGTTTCGTGTGGCGTCCGCACCCGGGTCGCCCATTTCTCCATCCAGTCCTTGGCCTGAGTGCCTTGTAGGCCTTTGGGTCCCATTTTTCCTAACCATTTTCCGCGAGCCGAAGTCCATTCTTTCCGGTAGTCCTGGCTTACCAGTGCTTACCCTTTCACTCCCTGAAAATTTAGTTTGGGGTATAGGCCTATCAAATAGGCTTACCGTAATCCCAGTGGTTTGTACTTCTCTCGGACACCGGATCCGCACACAAAGACTTATAATTCACAGGAGGCCCACATGGCAGGCGCGCTGGAAGTCCAGGCGCACCTTCCGATCCTCTCGTTCCAGGAAGACCGTCTCTTCCTGGGATCCCGGGGGGCTGTTCCTTGTGGATGACGGCACTCACATACTCGGTGGATCTTGCGGTTTGGCCGGTTTAGGAAATCGTCCATTTCATCTCTTTTCTGGCGGGTTATGTTTTGGAAATCGTTGGCGACAATCGCATGTTTTTCATCTCGAGGGCGCTCGGGTCTTTGGACATTTAAATTTGCTTGAAATTTTCAAACTTGTTATATTATAATTTACAAACTACTGACTTTGTATGTTTTTTTTTTATTACAGGAACACAAAATTCTAAGAATGCGTACTGCACAGTATATTTGACGTGCAAGATATCTCGTAGCAAAATCTACAGTGACTCTTAAAATGCGATGACTACAGTCGCGCTTGTGTCGATTTAGCTCGATTTTCGCAACTTTTTTTCTTTTGGATTTCCTTCGTCGTGTTGTTTTCTAACATCTTTTTCTTTCAAAATTTCAATAAAGCTTTCTATCGATAAATAAATCTTTTTACTTTATTTCGAAAATCGCCCGTAGATCGACTCAAGCGCTACCGAGTCATTTAAAGGTTCACTGTAGTTTTCGCTACGAGATATTTTACGCGTCAAACATGTTGATACGCATTCTCGAATTTTGTGTTTCTCTCCATCATACTGTGTTTTTTGGATTTGAATGGAAGGAAAAGCCCGAAACTTTTAAAATTTTTCGGTGCATTCGGTATCCAAAAAGCTGAATAAACTAATGTGTACAAAAAAATGCCACATTTTATTGAAAAGTTGATAATAAAATAATTTGTTCTAATTAATAATGTTTTGAATTTCTCAATTTTGGAATTTTTGGATTTTTTCGGGCCAGAAAGTAGGCATTCTCTGGAATGATGTTTTCTTCATAATTATATATTCAAAAAAACGGACTCCCACAAAAAAAGGTCCGAGAGGCGAACAAGGTTGTAAAACTTGCTATTGTTTATTTACAACCGCCATTAGACACCTATAGGGGTTGTAACAAGCCACATAACAATTTGATAAGATGCACACAGTAGGGAGAGAGGACCTGATTTAAAAATATAAGGAATTTTCTCATTAGATACAATTTTTCTCTATTTCTTTCACGGTGGAATATCGAGAGGAAAATCAGCGAAATTTGAAATTTTTGAGAGGTTTTTTTCTAAACAAAAAAAGATTTGAAAAATTTCAAGATATTCTGTGTATTTATCGATAAAATTTGAGAAATCAAGGGGGTCGTATAGTAGTGAGACGGTCGGTTTTTCTACTTTCAGCTAACTATATGAAATTTCATTTGTTCAGAGACGGTTTTCTGACATTTCAAATCAAATGGCATTAGCTGTTTTTCATGAAAAGTTTCAGAAAGTATCAAAGCTCGAAATGTTGGGAGGGTCGTATAGAAGGTGGACGCACTAAAAAAAAAGGAAGTGGTTCTAATTATTACGGAAACACCAAATTCTGAGAATGCGTATTGCAGTCAAAATATGCGCAAAACTTCTCGTAGCGAAGACTACAGTAATTCTTTAAAACTTTTGAAGCGATCGTGTCGACACGTGGTGCCGGGACAGATTGTCTCAATATTTCGGCTTGATCTACGTAGAACAAAAAATGCGGGAGAAGAGACGCAGACTTCTCAGCTTACTGATTTCTCATGGGGAACCTGCTGACGTTACATGTTTTCGGGCCGAAATTTCCCGCATCTTTTATGTGGGTAGATCAAACACACCGTGATGGGACATGGCAATATGTGTGTCGATTGTTGGGTTTTTGAAATTGATTAAAATAATTTAGTTATCGATATTATATTGAAATTAAACAAACAGTGAGAAAATAACTCGAGCACGTAAATCGACACTACAATAGTCATATAAGCTAGAATTACTGACCGTTAGCAATGCCACAAAATATGTTTGCGCGTCTAATATATTGCGCAGTACGCATTCACAGATCCGTCATCCAAGTCAAACTCCTGACAGTACTCGGCATCGTTGACATTGAATTCTGAATAGCCGAGTGTCGAAGTATTGAGGCAAGGGGTCTACGAAACAATGACGACATCGTGGATAGCGAGATAAATAGTGAATCTATGATTCACGTGGCGTGCTTTCTCGAGCATTCTCGTTCATTTTCCAGGAGAAGCAAGAGAAGCCTATGGAGAACGAAAAGTGAGTAAAGAGGAATGATGCGCTGGCGCGGAAAAACGAGAGCGTTTATGTATGGGAGTGACCCAAAGACACGGAAAAATAGATAACAAGAAGAACAAGGGGGCAACTTTCTCTATCTCAACATATCATCATCACCCATAAATCATTATCTCCTTTCTCCGGGATTTCATGAGAATAAATCCATTTACTCGTTTTTTTTGTGTCTTAAGTCTGCAATAAATATGTAGCTAATTTCAACTTTAAAATAAAACTTAATGAAACTAGTAATTCTATCATCTCTCAGCATACCCATTCCTTTCTTTTATATATAACTTTTATTCCACTCTGTATTTAAAGAAATTTCAAGTTTAGAGTCTAACTTGAAAATTGACAGTGATGAATATAAAATTATACGCGTAAAGAATATTTCGAGAGAAGTTGGGAGTGTAGTCTTGGAGGAGGAGAGAGGAAAGAGGTGAGGAAAAATTACGTTTTTTTGAAGTTTTTTCTTTAATTGTTCGAAGGATTAGGCTTAGGCTTGGGCTTAAGTTAGGCTTAGGCTTAGGAATAGGCTTAGGCTTAGGTTCAGGCTTAGACTTAGGCTCAGGCCAATTTAAGCTCAGGCTTTTGTTCAGGCTTAGGTTTAGGCTTAGGCTTAGGCTTAAGCTTATGCTTAGGAAGAAGGGTATAGGCGGCCTAGGCTTAGACGTGCACAGGCGTACATTGGCTTAGGCTTAGGCTTAGGCTTAATCATTAGGCTTAGCATTAGTGCTTAAGGCTCAGGCTGAGGCGTAGGCTTAGACCAAGGCGTAGGCTTAAGCTTAATCTAAGGCTTAGGTGTCGACTTAGGCTTTAGGCTTAGGCTTAGTCTTAGGCTTAGGTTACTCTTAGGCTTAGGATCTCAGGCTTAACGTAGGCTGCGGCCTGGGTGAGGTTTCGGCTTAGGTATAGACTTAGACTAAAGACTTAGGTTTCCTAGAATCAGACTAAGGCTTAGGGCTTAGGCTTGGGAGGCGCTACCGAGGCTGGGCGGATCAGAAAAAGAGACCAAAATTCCAGGGAAATCCAAATAAAATCCAGAGAAAATAATAAAAAAAAGGAAACAAAAAACGTGAAAAATGGGCATTCCGCGTCTTCCGCGTCAAAACCCGTTTTCCTTAAAAAACGGACAGAGGAAAGGACCAAATTATGAAATACCAAAGTTTAACAAAAAATATTTAAACATTTTTTTTGCCGGGGTTGAGCTCACCCAGCTGAGCTCACTCCATAATTGCACACAAAGTGATTCTCAAAAAATTAATTTTAGAGACTACGAGGCTAGCAAATGGAATGCACATGCTCTGATTTCTCAGAGCGGAAATGCCCGCCAGGCTCCAAAGAGCGTGTGCTCCAGGAGCCGATGGTCCTGAATCCCCGGCTCCAGAGGTCTGAATGGTATGGATGGAGAGGCTGGGCACAGTAATATGGCTGGTATGTTCACTGTAAGTTGCCCAAGATCTTTTTTGTAAATTCATACTCCAGTCATGAACAGGATGCATCCGTTGCCTAGCGGGTCCTCCAGGTTCTCGCCTGGTGATCATGGATCTCCTGGTAGGGTACCCCGGGTCAGGACCTCCAGGGGAACCCGGTTACGCAACAATTGGGCTTATCGGGCCACCTGGGAGCGACTCGCAGGCCAAGATGGTCTAGATGGAGCTCCTGGCGAGATAGCCGCAGTGGAATGGATGCAGGGGAGATTGTTTCAGTTGATGGAAAAATTGGAAGAAGAGGAGAAGCGGGGAACAAAGGAAGCAAAGGATCTCGAGGAGGGGTTGGAAAAGCTGGAGGGCCTGGGGTGGCTGGAGAAATGCGAGAAAAAGGAGTAAGAGGTGAAGATGGAAAGCCTGGAGAGTCTGGAAAGGTGAATTTTCAGAAGTTGATCGATGCACCAGGGAAATTAACGCGGTTTTGCCGATTTGGCCGGAAACTGTCAATTCCGGCAATTCGCCGGTTTGCCGATTTGTTGGATCTCAAATTTGGCGGAAATGTTTAGAGGGGTTTTTTAAAAGACGAAAACACTTAAAACTTTATCCCCTTTTTTCCCGTTTACTAGGGAATATAGTTAATAGGGGAATTGCTAGGAAGAAAATACAAACTTTAAATGACTGATGAGGTCTTCTGGCTACAAAAATCATTTTTTTCATTATTATCATTTTCATAGAATTTGCTCTCTTCAAAATAGACGTAGGGACATACATAGGATGCTTAATTTCGCCGTTTGAAATTTACATTCTGAATTATCCAAAAAAAATCGGCAATCTGCGGTTTGTTGCCGGAAATTTTCCATTCTGGCAATTTGCCGATTTGTGCCCGATTTGCCGATTTGATGACCGGAGTTAACTTTCAATTCCTGCAATTTGCCGCCGTTCAATTTGCCGATTTTCCGGAAATTTTAATTCCGGCAATTTGCTGATTGGCCGTTTGCCGGAAAATTCAATTGCAATTTGCCGGTTTGCCGATTTGCCGGAAATTCAATTCCGGCAATGGTGTTGGGTTTGCCGATTTGCCAAAAATTTTGGAATTCCGGCAATTTGCCGGTTTACCGGCCAAATTTTCCAATTCACCGGCAATTTATTGATTTGCCGATTTGCCGGAAATTTCAATTCCGGAAATGTGCCGATTTGACGGAAATCTAAAACATTCTCCGGCCGAATTTTCCAAAAGTATAATTTTTAAGCCCGGCGCACCTGGAATCCCTAGAAGTAACTGCCGATGTCCCCAGTAAATCGTCACGATATTTCTCCATATAGAATGATGGAAAATCTGATAATAGTAATAAAGATAATAATAAAATAAATACAGGCAGGAAACGAAAAGCGAGCACTGACGATTGTATGATACCCGAAACATTCAGGAGGAGCACAAAAAACACAATGAAAAGACACAGCTCAGAAAAATTGAAATTGAAAAACTGGTAACGAGACTAGAATCGTCATGATGATCTTGTAGAAAAAATTGGAAAAAAATTAAGAATCTAGGAAATTGATTAGGTTGCACGCAGACTTGACACGAGCTCGGGCACCGAATCCGCATAGGCCAATGTTTTCGCATGCTCTTGAGCCCATGACGGGCAGAGGGAGTCATGATCGATGCATCTGAAATGGGGATATTATTTTTTACGCTTCAGGTTTAGGCCTATCGACCCCCGTTTGGATCTCCGGCTCAGGTCCTTAAATTGTGTATTCAAGCGTAGGCTCTCTCGCTCCAGCCTTTAGATTTTAACTTCGATCTTAGCCTTACACTAAGCTCTACGACTGATCTAGGATATCATACTAAGGGCCACTTTGGGCCTGAGGCATAGGCTAGTATCTCAAGCTTAGGATCTCACGCTTAAGCTCTCTGACGCAGGCCCATAGATTGCAATGTAAACCTTGGCCTTAGCCCCGACTGATTTAGGATATCAGACTTAGGGCCTAGGAGTTCCGGCCTGAAGCTTAGGCTCTCAGATTCAGGCCCTCAGACTTAGAGTCTAAGGCCGTTAGACTACGATTTTCAAGCTTACAATTAGGCTTTCACTTGAAATCAAAATCCAATTAAGTTCTTTAAAAATAATCAAACATTTCTAAACCGCATACAATTTTTTAAAAACTACCCTAAATATTTCAAATTTTAGAGGTTAGCCTGGACTTAAACCTTTAAACTTTTGGTCTCAAATTTAGCCTACAGGTCTGTGGACCTAAGATTTTGGACCTCGGACTGCGGCCCTTAAATCTCATGCTTGGGCTCTAATGTCCTGGCACGCTAAGTCCTAAATCTTTTGATCGTAGTTTCAGGCTTTCATGCTTTCAGGCAGGCTTTCAGGCTTTCAGGCTTTCAGGCTTTCAGGCTTTCAGGCTTTCAGGCTTTGAGGCTTTCAGGCTTTCAGGCTTTCAGGGTTTCAGGCTTTCAGGCTGTCAGGCTTTCAGGCTTTCAGGCTTTCAGGCATTCAGGCTTTCTGGCTTTCAAGAGGCTTTCAGGCTTACAGGCTTTCAGTTTCAGGCTTTCAATCTTTCAGGCTTTCAAAGGTTTTCAGGCTTTTATGTTTCAGGCTTTCAGGTTCAGGCTTTCAGGCTTCTTTATAGGCTTTCAGGCTTTCAGGCTTTCAGGCTTTCTGGCTTTCAGGCTTTCAGGCTTTGAAATACTTTCAGGCTTTCAGGCTTTCGGACTTACCGGCTTTCAGGCTTTCAGGCTTCCAGGCTTTCAGACTCAGCTTTCAGGCTTTCGGGTTGTCAGGCTTTCAGGCTTTCAAGCTTGGCTTTCAGGCTTTCAGGCTTTCAGGCGGGCTTTCAGTCAAACTTTCAGGACTTTCAAACTTTCAGGCTTTCAGGCCTCACTGTTTCAGGTTTCAGGCTGCTTTCAGGATTTGAGACCACAACTAGACCGGCAACACAAGTGTTGTCAAATTACTCACCTCTTTGCCGGCGCTTTATCCGATGCATATTTGATGGTATCTCGATTGTCTTTGAAGCTTTTCAACCCGCCCCAAGTTTCCAGCTGTTGGAATGATCGTTGTAACATCAAAAATCATCATCAAAAATCGTGGTGACCCAAAATTACCTGATTCTCAGCCAAGAATCCATCCAAACTTGCTCTACTCAACTCGGAGACAGGAATGAAGTACTTGACGTGGGCTTTTCCCTTTGCCCAATCTTCTGAGCCACCGGATGCGGGGTCTGGAAATATTTTGAAATTTTCTCACATACATAGGAGCCTTAAGAAATAAGCGCTTACAAAGTGTATCTGCACCGGTTCCAACTTTGTACTGCGTGTTGAAGACACTATAAGCCTGAGCTGACTGAGAGGGCAGTGGATCTCTGAAATATTCAGTAAAATATGACCATGAACTTGGGCAATTCCCGTATTTTTGTAGATGACACCGTAATGGCTAAACACGGGGTGCCAGAGTGTCGCGTTTTGATCTACGTAGATCTGCAAAAAATGCGGGAACTGATTTCTCATCGGTTAAGAACGTGCTGACAAATTATATTGAGCGAAAAATTCCCGCATTTTTTTGTTAAGATCAAACCGTAATGGGACAGCCAGGTACCAACTAAAAAATTTACTCCAACCAAATCATTTTTCAAATCATTGGAATAAGTTCTGTTGATGGCCGAACGGATACATCAAAATTTGACTGAGAGTCCGAGTGGAAGGTGAGGAATGTCGAAATACGGTGTCGCTGCACGAAATCTCACCGCCGCAGTCTCGGGCAATATCCGAGAAGGCTGGTTTAGAGGCTCCCTGATAGATTTCCGAGGAAGGATTGATGAGCCGACTTGTCCGTAGAACCAGTCAAAGTTTCGACTGAGGTCGACACCTTCAAAGACAGCGGGTTGTTGAGGGAGGTTGGGAGAGTCCTGAAAGGTTCTTATTTTTGAGATTTTTAACGTTCACAGTCGGAGAATTGCCGCAAAATCTTAGTTTTCATAGCCTGTGTGACATTATTAGGGCGTATCTAAAGTCCAGAAAGCGTATGCCTTGTGCTGTTTTTGCAAAAATTGTGCCCAGTTTTCCCACTTTTTAGTGGTTTTTGATGGGTTAAACCTAAATTTTCTGAATTCAAGTTTTTACTTTTTCCAACTGTTTTTTCAGCCGTCGAATGGCTGTCCTTTTTTTTGGGCAGACAAAAAAATAATCTTTCTGAATAAGCTAATCGAAAACAATTATAAAAAAGGCAATTTTGTAAATTTTTTCTAGTAAATTTTGAGTCCTCTACAAAATAAACTATTTTGGACGAGTTTCAAAAATGTGAAACATTTCTACAAAAATTGCCCAATTTTTGCCCTTTCTGGTGGTTTTTGATGGGTTAAACCTAGATTTTCTGAATTCTGCGTATATAAATTACACGAACAAATTTAGACATTTTTTTTATTTTTAATTTTTTTCCAGCCATCTAATGATGATTAGTTTTTAACAAAAAAAATTTCTGAAACACAATTATTATAAAACAGGGGTGTGCGGCAAATCTCAAAATTTGCCGAGCACGGCGAATTTGGCAAACGGCAAATTTGGCAATCAGCTAATTTGTTGAGCTTTACAATTCCGCAAAAATTTGATACTTAATTTGAACCACCTAAACTACTAATTTCTGAACAAAACGTGTTCAATAACTTGATTTTGTGCCATTTTTCTAAATTTTTGGAAACCAATAATTTTGACAATAATTTTTGAGGCTAAACTTGTATTGTCAAATTTTTGACGCGGGCGGCAATATTTCAAAAATTTCTGAGCTCGGCAAACAGCAAAATCGGCAAATTTGTCAAATTTGCCCCACATTTTTTTTTGGTTCATAATAAAACACTAACATTTTAGATTTTTCATAATTTCCCGTCGAAGGTTTAGCAATTGCTAAAATTCTGAAAAATCTGAGTATTTTAGGAAACCCAAAGCAATGCGGCATGTTCCGACCCCAATGTATTAATACAAATGATTAAAACAAACGAAATTACAGTAGACAAAATGTAGAAAAAAAATTATTTTTGGTCGACTCCAAACGAATTATGAGTGGCAAAAACTTTGTAATAGTCACCTTTTGACAGTAAATAAATTAGAATTTTTTTGAAAAGTTTTATTATGATATTCGGTCATTGTGGGACCAAATGAGTGGTTTTTAACTATTCCGGCACTGGCGCAGTCCAGCATTTGCCGTAATCTTAGTTTACATAGCCGACATATGCGGGCCTAACTGAAGCCCAGGAAGCTTGTTTACAAAAATGAGCAAGCAGAAAAAGATCAATCTCCCCAACAAACCTCTTGCCTGTTTATTACACTTTGGTGGTGAGCGATTCTTTCTCCATAGTCTGATCTCCGGATGTACATAGCTACTTCTACTGTACTCATAAGCATCCGGATTCAGCAGTGGAACAATATTCCATTCGAGTTGATCTACGAATTGCATGATTTGAACATTTGTCGTACTGGGTGACCAGTTGGTGAATGAAATAGAGTACTGTCGATTGTGACACCCATTCACGAGCATGGATTCCTCCGTCCACCCAGATGCCACGTTTCGTACGTTACGCTTGTTGGTGATCTGGAAGTGAGGAAAATTGGGGTGAGATGGGATCACTAAATTGTTAATAGTTTCTGTGCTTCTGTGTTTATGTTTTTTGCGCTCCATTGGCAAGAAATCGCCTGCCCATCAAAAACCGTCAAAAAGTGGCAAAGCGGGGCAACTTTAAATTCCCAATTTTGAAACTCCTCTAAAATGGTTTAGTTCGTAGATAGAGAGGACTTAAAACTGATTTTTCTATAAATTGTCTAAATTTGTATTGAAAACGGGTAATTCTTGTATATCAGAAAATGGTTTAACCCATCAAAAACCATCAAAAAGTGGCAATAGTGTTCTCGGCCATTTTTGCGTGATAAAAATTCACAATTTTGAAACTCCTCTAAAATGGGCTATTTTGTAACTACTCAACATTTCCAAACTCTAAAGAATTGTTCAGAATATAGTGGTTTCAATAATTTTCGAACAGAATGTTTTTTGCCCAAAAAAGGATGGCTGAACAAAAGGCCGAAAGAAAAAGAGTTTTACACTGAAAGCAAAATCGTGACGCGACACGAAAGCTAGGTAAATCGACCCCAGCCGTTCCAGGCCGAGTTCAAATTGCCAAATTCGGCAAACTCTCACATTTCAGGCTATGTATTTCAAGCGAGAAGCGCGTGCGATTTCTCAAAAACCGGCAACTCAGTTGGGAGGACTTTACGAAAAAAAATTCCAAGGTATAATTGGTAGGTTTAGTCATGTTGCATGGTACTTAAAATGTTTTTTTAACTTGCAAAAGTGGCTTTTATTTTGCTTCTTAGTTTTGCAAGCCGAATAATAAAAATATTATCCACGTTTTTAATGCTTCCATGGTAGGCAGCCGCTCGCCAACATGGAAGCCCTACATGTCACGGATTTTTCGCCAGAAATTGAAATGTGGAATGAGCTATGCCGTACGAGGCCAGGCCATATCTGTGGTAGATTTACGGCGCGTTGCATGTCGCGTCGAGGCTCGATTTTAGTTGAACAACTAAATGCATTGTCCGAGTGGAGTACACGACTTTCTCACGCGGGCGATTGCCAATGGCGCGCGAAAAATTGAATAAGAGGAGGGCCAGAATCCCGTGATCCCGTCCAAGCAAAGTTAAAACAACAAGCAAACCTTAATCAACGGGATCTGCCGTCCTTCGTGAGTCGAAGTTCCGATTGGCTGCAGACACATCCGGATATGGTTAATGACGTTCAGGTAGTTGATAACATCATCAAACGATTGGTGATAGGCGTTGTGCAAGGTTAAATTGAACCTGCAATTATTGAACTATTATCATTGAGGAGAACGTGGTGTCTGGGTGCCTCATTTTAGATTGATCGCTGATCGACAAAATGCGGGTGAAGAGAATGATTTCGAATGGTTAAAAACGTGCTGACGTCACATCTTATGGGCTGAAAATTCCAACGCATTTTTTGTAGCTCAAACCCTAATGTGACAGCCTGACACCACATGTATTCACTCACTTTCTGCGGCTCCCTCCAATCATGCAGTCGAACTTGATTCCGAAGCTAATCCCGCTTCCTTCTGCTCGACAATCACTGTGAAATGATCGATGAAAAGATAAGTTGGGCTTAATAGTGTCCCCCCACGAATACACTCATCACGCGTAACGAGCCGTGATGCGCGGTGGTTTGAATAAAGAGTATTTGGACTAGTGATCCCCCGCGAAAACCTGTATCGCGACTACGTGATGCCAGGGTGTCTCATCACGCGGGTTGATCTACAAAAAAAGCGGGAATTTTTTGCCCAAAAATGTGACGTCAGCACGTTCTTAACCCTGGAGCACCGAATTGAAGCAGTTCCCGCATTTTTTGTAGATCTACGTAGATAAGCCGAGATGACACACTCTAACACCACGTGGTATGCGCCGAAAAACTCACTTCTGAACGGCACCAATCATCGTTAACGGAATGCTTAATCGAAGGATCATCGAGCTCTTTCATAAACTGCCGTGTTTTCTCATCGGATATCATCACATGAAACTCCTTGCAAGCTAAGCTCCGACGGGGATTTCCAAAAATCTAGCGGAAAATTTTAGTGTGTCCGGAGGCACCCTAGTATACTTATATTTCAAAATTTTTCTCTAACCCCTCAAAACCGTACTCTACATCGCCGTACTGGCCGAGTGGTCTAACGTTCAGGTCGCAGTCTCCGGAGGGCGCAGGTTCGAATCCTGCGGACGGCAGATTTCTTTTTAAATACTACTCTTCAATGCATGATGAAGAAGAAGAAGAAAAAGAAAGAACGTATTGGCTTTTACTTTTACACTTTTGATAATCCCTAGGAACAGGTTATAAACAGCGATGCAACATGAAAAGCAGCAGTGAGTGAGATGGACAACGAGCTGATTTTGTTCTTCAATTATATGACACCGCTATTTTAATGGTTGGTTTGTTGCGTGGAACATCATACCTTTAAATGGTTGAATTACAAATCATGTAATAATAATGTCTACTTGATTATCTTGGGTCGTCGGCTGCACCATCCATACTGTGAATTTTCTGAAGAATCTTTCTGAGAGTTTACCGGCTGTTGGGGGAGAGTTTACGATTAACGTTTGAGTTTTTGGATAGATCTAAATCTAGAGAAGATCATGCGGCGGTTAGGTATATTTGAAATAAAAAACAATTGACCTAGATATGAAACATGGAGATCTAATGGATTTGGTAAAGTTGAAATTATTATTTTTTTGAAAATTTGTTCATTTTACAAGAAAAGACGAATAAATATTGACCAAAAAAATTTTTTTCAATCAAAAATGTATAAAAATTAATCATCGTTCCTTTTAGCTTTTAAACAGCGGTGGAGTAGCCAGTGTGGATTTTGTCTCCCTAAATACAGTCAATTATTATGAACCAAAATTCAAATATCGTGTAATACAACACTTCAAAAAACTTCTTTATTTCAGATTTTTCATAATTTCTGGCCAGACTTTTTGCAAATTTCCAAAATTTTTCAGAATGTCGAAGTTTCCGACCCCTGCAATGTTTTAATAGAAATGATTGAAACAAAATTACAGAATAAAAAATGTAGAAGATAACTTTTTTTTTTTGGTCGACTTCCAAAATTATGAGTGGCAAGAACTGTGCAATTGACACTTTTGTGAAAATAAAAAATTTTAAGAATGTTTTTGAAAAGTTGTATTATGATATCTGCCTCGGTCAGTTTGGGACCAAATATGAGTGGTTTTTAATAATATTCAGAAGCCACTGGCGCTACTCCCCGTTTAAAGTTCTATGGTTTTTAAAACTCACGTTTTTTTTTATGAAGTCTATTTTAAATCTGGACTCTCAGTCGACAGAGGTTCAGCATTTTTCGAAATTTCAGAAATTTAAAACATAAGTCGGGTCCTAAAAGCTACAAAAAAATTCTCACAAAATGTTTTTTTGATGAAAGCAAACTTATATAGGAGTGCCAAAATGACCAAATTTTGGTTTTAAAAATGATATTGAAAAATCTTTAGAAAGTCTCTTCTGGTTTTTATTTATTTTTAAAAAATTCATATTGAAATATTATAGTGCTTTAGATTGCTCGGAAAAAATTCCACACATTTTTTAATTTTTCATTAGTTTTATAATGATATTTGGTCATTTTAGCTATCTCGGGTAATACTGCAAAGCCACGTGGTGCCAGGATTTCCCATTAAGGATTGATCTACAAAAATGCGGGACTTTTATTCCGCTTAAAAAGACGACGTCAGCTCATTTTTAACCATGCGAAATCAGTTGAAAACTGTGCCGCAATGATTTTTTGTAGATCTAAGTGGGGAGATCAAACCGAAATGGTGAGACATACTGGCATCGTGTCCACCTTCATAGTTAGTAATTGCATAAACAAAAAATACTGAGAATGCGTATTGCACAACGTATTTGACCGAACGCGCAAGAATATCTTGCGTTGCGAAAACTACAGTAATTCATTTACTACTGTAGGTTGGTTTGCCACGCAGGCTGGATTTTTTGAAAAATAAATGAATTAAAATAGTTAATGGAATATTACTATCTCTATGTATTAGTAAATAAGGTTGAACCCGTAATGAGACCGCTGCCTACCTGCCTGATTATAGATGGCCGCCCTAAAATTAGGCAGGTAGGTTTTAACGCCTAGCCAGATACAAAACTTAAAGAGAAATGCCTAAAATAACAATAACTTACATCCTTTCTTATCGTCCTCCCCGGCGATCGCCTAAGATCATAGCTAACAACTAGCCGCTTTCGGTCATGCAATTATTATATTATAATTGATGGATGGATGGGGGATAATCCAGAGAAAGGGGTGAAAAAAGAAACATACCTAGAAAACAGGTTCCCCTGACTCAAAACCTACTTTTGATGTGCCACCACGGATGGCACGACGAGATACGATGATCACGTGTTCATCTTCATCATTTTCATCGTAGTAAAACTTGGGGGGGCTGATGTGGGAAGGATGCCCTCGTCAAGTGTTCGTTGAACAATCCGACACGGTTATCAAAAAAGCAGTGGTGTCTCCGCCCAACTTCCGCGCGTCAGCCGCCCTGTGTACTGTCTTGTCCTATAGCTCTCTTTTCTCCACCCCGGCTTGCGGGTGAGATTGTTCTCATTACTAGGTGAAGAACGTCTCTAGTAGAAGAAGAAGAAGAAGAAGACGACGATGGAGAAGAAGCTGAAGGCACGACGCACTGTTTGCGCCACGATGTTTGTTGTGTTTGCGAGCGTGAGCGCCGCAATTAAAACGTGTAGATCGGTTTGAAAAGCGCGCGCGCGCGGTCATCTTTCTCCGCTTGCGCGCACGCATTGACAAAAGACCGAGACAAAAGGTTCAAAATTGAAGAGGCAAACGTTCGTCCTCTTAGCACCTAAATGTGGAAGCATAAGATTTTGCTCTGAAAATGAAGTTGGGTAAGCTATTCCTGGGTGATGTTCTCAAATTCCGGGGGCATTGTTGGGAAAGTGAGGACCAAAATAGGCCATAAAAAATGCAGATATACATGCTAAGGCTTTGGGGGCTTAGGCGCAGATTCAGGCTTAGGCTTAGGCTTAGGCTTAGGCTTGGAATTAGGCTTGGCGTCAGTGGCGAGCGTGAGCTCGCCACGGACGCTATTTAATTGGGTTTATAACGTTTTTTTTTCGAGTTCCCGTCGAGCGAAATTCAACTGAGAGTCGTATAGGCCGCCGAGAACCTGACGTTCCAAATAGGTGACTTCATTAAAACTCTTAGGCTTAGGCTTAGGCTGTCACTAGGCTTAGGCTTTTAGCCATGCTAGCTGATCCCGAACATATTTTTAAAAATTGCAATATGTGACCAAAAGCTGTATTTTTCAAAAATCCAAAAGTACGCGAAATCATATGAAGTGCTTCTTTTTCTTTCAATAAACTGTTCAGAATTGTCATTTTTACTAGAAAATACCACAAAAATATGCTAGCTTGACCGGAACATATTTGAAAAAATTAGAATTTTTGACCAAAAGCTGTTTTTTCAACAAGTTGAAAAGAACTGGAAAATCATATGCTTCTTTTTTCTTACGTAAAACTGTTCAGAATTGTCATTTATACCAGAATATATTAAACAAAGTATGCTACCTAATCCGAAACATTTGTTTCCAAAATATTTTAAAAAAAAGATTTAGCGGCTCTGACTAAATTGTTTGTTCGTTTTTTCTGGTTTTTCCACTTTTTCGGTGAAAAATTTTGTAAAAAATTTGACCGAGGTGCGTGTTAGAGTTGAATTCATCAAGTTTTGACATTATTTTAGTACGGGCACAGTTGCTGCAAACGAAATTTCCAATAACGCTTATTTCTCGGGATAAAGTTATTCTATTTTTCTTTGCAAATCTGCTAATTCTACAAATCTACTAACCGAGGTGGAGTTGAACACCTTTCCAAAAAGAAGTAGCAGTCCTGAAAATGTTTTAGTGAGGCTTCTCATTATTCTAGAGCCCGAGCCACTAATGTAATTGTTCCAGAAGTAGTTTATAAATTTTTGAACTGATTTTATCCTCTCCATGATAGAGGAATTGTTAAAATTTTCAGATCAAATTGGAATTTTCACAGCCAAATATTTTGGTAAATTTTCCACAAAAAATTGGGCGGAAATTGGAATATTAATTTGATTTAATTCGATTGGAGCAGAGTGTATAATTATTCAAAGTTTCCTCCCTTAACAGCCATTCAAACGCATTCGGCTTTTTTCTTAGTTTAGTTTTTCTTATATATGGCCTGCAGGCTCTCACCAAGTTCCGTTTTACCGGAGAGTTTAAGTGCACAACAAATCCTGAGATCCCATGTTGTAGTTTGTGAAGACGATGAGGTGTTTGAGTAGAAAAATGAGAAATGTTCTAGTATTTAAATATTATAAATTGTTTCAGCGAGAACGTTATCAGTAAACACCATTACGTGTTCCATACATATGCACCACATATGTCGCTATCTCGTTAAGGCTGAAGATACCAATGACGGATTGCCAAAGTTTTTGGATGTATTACTTTTTTTCCGTTTTCTCTAGTATTTCTCAGAAAATTTGAATTTCCCGGTCACCAAAATTTTCCGAAAATTTGAATTTCCCACCAAAATTTTTTATCAGAAGATTTGAATTTCCCACCAAAAGTTTTTCAGAATTCAAAAAATATGAATTTCCCACCAAATTTTCATTTTTTCTCAGAAAACTTGACCGCCAAAGACTTTTATCTGTCTCAGAATTTTGAATTTCCCGCTAAAAAATGTTTCTTAGATTAAAAGTCCCGCTAAGTAAAAAATTTTCGTGAAGAAAACTAAAAACCCCCGCCAAAACTTTTTCTCACGTAGGAGTTTGCATTTGCCGCCAAGAAGTTGTTTTCCATAAAATCTGATATGAAATTCCCACCCAAATTTTTTCTCAGAAAATTTGAAATTCCCGCTAAAAAATTTTTCTTCAGAAAATTTGAATTAGTCCCGCCAAAAAATTTTTTTCTCATAAAAATTTCGCTAAGCCACCAAATTTCGCAGAAAAAATACCCGCCACAAAAAGTGAACATTCTAGGAGTTTAGACTGACAGTTTACCGAAAAACCTTGACTGACGATTTTGGAAGATCGAATAACCTCTTAAATAAAACCTCTAACTCGTAAAAATTGAAAATTTAAATATATAGCTTTGCAGTCCTATTTAGACGTGTTATACATGATATCGTCCACGATTGCACGGAGAATGGGAAATATAAGTTGTTGAGTTGACTTGGGATCTTATTATATCAAGGATGGGTTAGGTACTTTAGGGCAGGCTAGCAAATGGCTTCCACGTGAAGCAGAAGCGGTTTGCCGGCTTCTCGCCTGATTCCTGCACTTTGGCAAAAATTCCAAGCCTCGATGCTCACACATAGGGCTGGCTTGGACGTCGCGTCGGTTTTTGGCAAATTTTAAATCTTTCCGAGATAGTTTTTTTTGTACGGCGACGTCCGACAATTTCCGAGTTTGGCCACTCATGATTATATTGGATTAAGTATAGTGCCCCGAGTGGCCAAACTCGGAAGTTGTCGGCCGCCGTAAAATAAACTACCTCTCGGAAAATTTTAACATTTCAAAAAACCGGACGACCGGACGCCATATGTCAGCCCTACTCACACCAAATAGTACGGTCTATAAGCGGTTTTTTTGCCGCAGGCCGACACTTTATGGTTTCCACGCCGCACTGTACAGAAGGCGCGGCCCGAGGCAGTTGTCAGGCGTTTTAGCGCCTGTGTGCAAGCTCTAGGGCAGGCATGTTTTCAAAAAAATGAACATTTTCAGGCAGTACGATGAAACCCGCAACCTTGATCTGAACACTGCCGGTGGGACGAATGGACATACGAAGTATCGGAAGAAAGGCGATAGTGATGTCCAACATATTTATTTGCAATGTTTGATAATAATGTTCATCAATATTCGAGCCTACGTAGGCTTACCTGCCTACAAAGTAGCCTACATATATTATTTTTGCTAATTAACAAAAATAATTAAAACATTATTAAGATTTGCTGAAAAAGCAAAAAGTGTTTTTAAGTTCGACTTTTTGCCCAACAGGTTTACGTTAGGCATGTGACAAAGCCTACATTCAAGGTAATCTACGCCTGCCTCGGTACATGGTGCATCGACCAATACTTACCTCTTAGCTTCGAGAGGTTATAACACGGTTACATTTCGCTCTATCAAAATAAGTGGCCAACTGCAAAAACTGTTCTCCAATGCTTTTTCTACAATTTTGTGGTTAAAATTTTTTTAATATCTACACTAGCAAATATAAGCCACCAACCCGTACAATCCGCGCCGCCCCCCGAGAAAGCAATTCAAACCCAAGTTTATTGCAATAAAAACAACACAGTAGAAACGAAAGAAATGAGGTTGATTTTGGAGACTTTTCAGTTGGCACGGGTTTTACATTGTTGGCATTATTCAGATTCGATTGAGAAGGAGAAGTCGTGGGGAGGCTGAAAAGTTCTAAAGTTGTTGAAAAAAGTAACAAATCTGCACTTTTTTAAAAACCTGATTCTTCAAGACTTCCATCCATGGCCATAAGTGCACTGAACAGTCTGTTGCTCTTGCTCTTTGTGCTCCGTGTCCTCGGAGCAATCATCAACCTTGTCTGGAACTGTCGGTGTTGGTCAGTTGACGAAGCCAAGGAGGAGGATGGTGTCGCAGTCTTTGGTTTGGGAGATGAGGGCGGAGCTGGCTGAATAGCGGTGGAATTGGAGATGCAATCTTTTTGGGGTTACTGCAGACTGTTTGCTCAAACTCTTGCTCCGCGATTTTGTGCTCTTTTTTGGTTTCTTCTTTGAGGGCTGGTTGTGTTGCTTCTTGCTTTTATCTGAAAATTAGAGTTTCTAGGCAATCAAGCGATTTTCTAGGCGACCAGACATATATTTAGCCATGTCGGAATTTTCTAGGCCAACACAAATAGTTCTAGGCCATATAATTTTCCTAGGCCACGTAAAACTTTTCTAGGAGACCACCAACAGTTTTCTATGACCGCAATTTTTGCTAGGCCACCAACAAAAGCAAATGAACATAAGACATAGGCCACCAACAGAATTTCAAATTTTTCTAGGCCTTTAACTCACATATTTCACAATGGAAGCGGCGGCGAACACGATGAAGGGTACAATGAGAATGCCAATGATTATGCATTATCACTACTTTGGTCCTGGCGTAGTCGATGTCGCATGCTGCAAAAATGGAGGTACAGGAAATCAACATGCAAACGCGCTACCGTGGCACTAGCAGTGCGGTAGAGCGCGTTTCAAACTAACAGCCAGAAGTTGGCGCCGGTGCTCGCTGAGTGGAGGTGGCCATTTTATCGGAAATGAATGAGAAAATGGAGAAATTTGGGAAAGTTGATTAGAGACGTGGGAGTTTTTTGAATTTTTATAATATTTATGAGTAGGGGGAAGGGGTGAGGGTCACAGCAGGAAAAGACCAAAAATTTGTGATTTTTCCATTAAATTGGAGGAAAATTGACACCATACCTCGTGGCCTAGAAACTGCAGAATTTCTAGGCCACACACGTTTCGTCATAATTTACCTGTTAAACCAGGTAAACTATCAAATAAAGAGTGATTAATCATCTCCTATCTTCTTTTATTGCTCAGTTCCTACTCCAAATGTTTTCTTTTTTGTAATTTGTGATCACAAATTGTTGCATTTTAGTACGCCATGTACGTCTGTGTACTACTTTTTTCTGAAAGAAAAAATGTTCGCTTTCAAGAAAAAATAGTGAGAGGTACAACCGAAAAATACGGGGGACTAGAAATATGTGAATAAGAGTTCGACAACCTAGGCCGGTAGGCAGGCAGGCGAGTAGGCAGTTAGGCAGGTAAGCAGGTAGGTAGGCAGGATAGTAGGCAGGCATAATAACGTTCAGATGCAGGCACGTAGGCGGATGTTTCGAGCAGGCATGAAAAGTCCCGGGGGTAGGATGTGGGTATGTAAGCAGATGTCGGTATGTTGACAGTCATGCTGAAGGCACGTGGGTAGGTAGGCAACTAGGCTGAGGGAGTAGACGGTCGGGTAGGCAGGCGTGAGGCAGACGCGTAGTAAGAGTAAGCCAGGTTGCAGGCACGTAGGCAGATGTAGGATGCGTATGTTTCTTGTAGGCATGCTGAAGTCATGTGGGTCGGCAGATTGGTAGATGTAGTACGCAGAGTAGGTATGTTGCGGGTATTATGAAGGCACGTGAGTGGGTAAGAGCAGAAACCGCAGGTAAGGCAGGCAGGTAGGTAGACATGTAAATATGACAGGCATATACGGAGGGAGAACAAGCCATAATTCAGGGTGGCACTTAGGCAGATTTAGGTATGTTGTAGGCATGATGACGTAACGTGGGTAGCAGAGAGGCACGTAGGCAGGCTCGTTAGCTGGCAGGCATAATAAAGACACATAAGCAGGCATGTAAATCTGCGGCAGATACGTAGGATCACAAGAGCAAGATGTAACTGGTAGGCACGTAGGCAGGTGTAGGTATGTTACAGCCATGACGGTGGGTATGCAGGTAGGTAGGCAGCCAGGCAGGATAGGTGGGTGCATAAAAGACAGGTAGGCTCTCGGGTAGACAAGCATGTAAAGGTGCAGGCAGATACGTAGTAAGAGCAAGCTAGGATGCAGGCCCGTAGGCAGATGTAGGCATGTTGCAGGCATGATGAAGGCACGTGAGTTGGTATGTAATCGGTGAGTAGGCAGGCATGCAGGCACATAGGCAGATGTAGGTATGATTAGGCAGGCAGGTAGGAAGACTCAATGCAGCCGTGGTGCTAGAGCGCCCCTTCCTAGTTAAGACAATCTCGTTATTCTAATAATAAGCTATTCAATCATGTCACCGCGCCGCATACACAAACTACCTGTTTTTTTGAGTATGAGTCTCGCCCGTTCTCTGACCAAAAGCTTCTACAGAGTGATTACACAGTATAAGGGGTAGAGAGGTTAGATTCAATCATGTCTCACTTTTTTCCCTTTCTCTGATTCTTCCTTCTCCCTTTTTTTACAGGGCGCTTTTCCCTTTTTCGTGCGTGAATATGAAGAGAGAGAGTGCATACAGGTGTAGAGGACGCCCAGACATCGAGACGGAAACAGGTTCTTCATCGTCTTCAGTTATTTGGAAGCAGGAGTAAAAGGTGACGGTGTGTGTTTGGAGACGTGTAACCATCATGTTTTATAACACTTCCTTGCTCATTTTTCTCTGCTTCTCTGCCGTCTCTCTATACACACAGTCTTTCGCCGTTTATTTATTACCCAATCACAGACGGATCAGCTATACAGAGGTTATACAAAAAGCGACGGCGGATACCCTCATGATGTGAGTTTTGTTTTCGCTTTTGCAGCAGATACAATTTCTAGGCCACCAAAAATTTTTCTAGGCCGTTGAAAAAATCACTATTTCTAGGGACGTTCACAATTTTGAGCAAGTTCTAGGTTGATGAATTAGATTATTACGCCATGGTGCATATTTCTAGGCCATCAGGAAATTTTGCAGGCCACCGTTTCTGATGCAGTTGAACTAAGTTAGTGGCCTAGAAAACCCTTTGCCCGTTAGCCTAGAAATAATTACGGCGCCCTAAACACATTTTTGGAGGCCTAGAAACACTAACTTTTGGTAGCCTAAAAATTTTCTGTGACCCACATGGAAACATTGTTGGCGGCCTGAAAACATTTTTGGAGGCTTAGAAATATTCTTGGCAGAAAACATTTTTGGTGGCCGAGAAATTTCTGGCCTAGAATGTTTTTGTGGTCTATATTTTGGCCGGCATAAAAAAATTTGGAATGGCTTAGAAAAATTTTTTTGGTGGTTTACAGCCACTTTTCAACGACCCGTAAAGAAACATTTTTGGTGGCCTGAAAAGATTTTTGGTGGCCTAGAAACATTCTTGGTGGCCTGAAATTCACATTTTCGGTGGCCTAGAACCATTTTTGGAGACCTGGAAATGTTTTGGTGGCCTAGAATATTTGTCGTGGCCAAATAGAATATTTGTTTGTTTGTCTAGAAATATTTCTGCGTAGAATGTTTTTTGGTCTATAAATAATTTTGGTGGCCTAGAAATATGTCTTGGAGACCTGATATCATTTTTGGTGACCTCGCATAAATATTTTTGACAGCCTAAAAATTTTCGGTGGTCCAAGAAATATTTCTGATGGCCTATAATGGTGTCGTGGTCTATAAATATTTTTAATAACCTAGAAACATTTTGACTGGGGGCCTTGAAACATTCTTGGTGGCGCCCTAGAAATGTTTGTTTCCTAGAAACATTCTTCGAGAAACCTGAAACATTTTTGAATCTGTGGCCTAGAGACATTTTTTATGGCCTAGACACATTTGGATTTGGTGGCCTAGAAATGTTGCTGATGGCCTATAATGTTTCTGTGGTGTATAAGTATTTTCGGCGGCCTACAATATTTTTGATCGGTGACCTAAAACATTTTTGGAGAGCTGGAAATGTTATTTTGATTGCCTCGAAACGGCTTATTTGTACTGTGCTGAAACATTATCGGTGGCCCAGAATGAGACCTGAAAACATTTTTGGTGGCCGAAAAAATTTTAGTGACCTAAAAACTTTGGGAATTACCTGGAACCAATTTTGGCGACCTAGAAAAATTTTCCGGGGCCTACTAAAAATTCCCAATAATTAACAAATTTAGCTAAACTACTTCTGGAAAACGGGGACAAGCACGGGTCTTGGCATGTGATGGGGATATGAAGAATTCGAAATATTTTTTGGACTTTCTACAAGTAAGATATTTCTTACATAAAGACGAATCGTGGAGGGGTGAGCTTTTTCTGAAATTTTGAAAATTACATGATGATTGGAATATCTATTGATAAACGGTTAGGATCGCAATTTAACGATGATCGACAAGAATCTCCGTAAATACACAACGGCACCACATCTCAAAAATTCGTAGGCCACACGTGTGACGCCATTTTTCTTCCAGAATAACAAAGCCCGTGAGAACAACAAGACCCTCTCGAACATGTGTGGTCCCCCGTCTGTGGGATGACTCCTCGTCTGTCATCTCATTATGACTTCCACACCTATGGATCCTATCAGCGAATTACTGATTGGAATCAGCTGGTGGTGAAGTACAAAGATGGTTCAGTATATATCGATTGGAAAAATACGGAGGGCAGGAATATCGGTGGAGTTGAGGTAGGTCTAGCAGGCTTCGGTCTAGGTCGAAGTCTAGGTTTAGGTCTAGGTCTCAGTCTAGGTCACTTAGGTCGAGGAATCTAGGTCTAGGTCTAGGTACTAGGTACACTAGGTCGAGGTCTAGGTCTAGGTCTAGGTCTACGTCTAGGTCTAGGTCTAGGTCTAGGTCTAGGTCTAGGTTTAGCTCTAGGTCTAGGTCTAGGTCTAGGTCTATCTAGGTCTAGGTCTAGGTCATGTCTAGGTCTAGGTCTAGGTCTACTAGGCCTTCTAGGTCTAGATCTTTATAGGTCTCGGTCTAGGTAGGTCCTAGGTCTAGGTTGTCTAGGTCTAGGTCTAGGAGGTGTACGCAGGTGTAGGCCGATCGATTTCTATGTGTATTAGGCCTCATAGTGATTTTCTGAGATCGGCGGAGACTCCCGCACCAAAAAGATTTTCTGGATCGATTGAAGTATTCATGCTCGAGAAGGGGCGGCCCCGAACACGCCGGTCCCTTTGTTATTCATCCATCAGGTATGTGATCCGGCCCCGTCAGAAAAAGTGTGTTCCGTTTAGCTCCGCTTGACACAAATGTTGGCAGAGACAGAAAAAGGGACACCTTGATAACAAATGGGTTGGAAAACAAGGTAATCGGATGATGCAATCGCGCCCTATTGCACTACCTCAACAAAACACTTTTCCCAGTTGCAGCTTACCTCCAGGGAAAACGCGCCCGGAATCAAGAAATTGCTGAACGACGTAAGATCACATTTGTAGTGGTTCCCTGATTGAATCCAGTATGAGTTCACGAGGTGCTCCACCCACATGTAGGTTGGGGTAAGGTTACTGTACCCCCCCCCCCCCCCCTCCGCAACTCAGGCGCAAGCACTCCCAGCGATTGCAGGTACCGTTCGTCTGTGGTTCCGTAAGCTCGAAAAAGCAATGCCGTAAGGACATTTGGGAACGCAATCACTGCTGTCGCGGTGACGATTTGAATCGTAATTTCGATTTACACTTTAGAGATGAGAGAGAGGGTGAAGTGGTTTTTCTGAAAGTGGACTTGAAAATTAAGAGTCAAAGTTTTGAAAGAAAACTTTGACTAAAAAAAAACACCCTTGAGAATTTGTTCGAATATACGTAGTTGCTGAAAATTAACGTTGTGGAACATTCTAAAACCATTTGAATTTAAATAATTTTTTAAACATACCAAAAAATCATGGGTTCCAAAATTCACGAAAGTTTCGAAAGGTGATTCCCTACTCCTGAACAAACCTCCCCTACAGTATCCTTAAAGTACCCTACTCCAGTACCTATACAGAACTCCTGTAGTACCCTTACAGTCCTAAAGTATCCCTACAGTACCCCTACAGTTGCCCTATAGTACCCCTACAGTAATCTCGCAGTATCCTTACAGTAGCCCTACAGTATCACAGTACCCCTACAGTATTCCTACAGTACCCCTATGAACAGTAGCCCTACAGTAGCCCAATCGCACTGAGCCTTACAGCATCCCTAAATTATCCCTAGATAATCCCTACAGGTGTACCCCAACAGTACCCCTACAGTACCCCTACACCATCTCCATAGTACCCCTATAGTAGCCCCAGTAGCCCTACAGTTCCCAAACAGCCCTTATAGTGCCTATACAGAACCCTATAACATACAATACACCTACAGTACCAGTACGTAAATTACCCCTATAGTACCCCTACAGTACCCTGGCGGTACGTACTCCAACAGCAATACCCTACAGGACCCCCATCCCTACAGTACCCCTGAAGTACCCATACGGTTTCCTTACTGTATCCCGTGAGTATCCCATTACAATACTCTCACAGTACTCAGTACCCCAAAAGTTCCCATACAAAACCCCTACAGTACCCCGACAGAACACTCACGCTACACTCCCGTATCCCTACAGTCCCTGAAGCTACAAAAATTTCCCCCCAACAATTCAAAAAAGCGGTACAAGACGAGCCCGTGCTCAGAGATCTACCAGGGATCCTCTCGATTCAGTGAGCCCGAGGCAAAAGCCGTACGGGACGCGTTGTTGTCGCAGAGATATTAGGGAAGAACCGACGCGCGCCTATATCACACTACACACTTATTCACAGGGAAATGCAGTTAAGCAGTCGTCTTTTTCTCGGCCACCGATCACATTTTCTCGGCCATCGATATTTTCGCCATCGAATTATTTTCTCGGCCACCGAAATTTTTCGCGGTCATCGATATACTCTCGTTCACGCGATATTTTTCCCAGCAACAGATTTTTTTCTCGGTCACCGATATTCTGCCACCAAAATATTGTTTTTCGTGGCCATCTATCCCATTTTCATCGGCCATCTATATTTTCTAGGACACCAATTGTTTTTCTCGGCCTCCCCGATACTCGGCTACCAACATCGTTTTTCTCGGCCACCAATTTTTTTCGGCCTACATTTTATGTCTCGGCCATTAATTTTTGACGGCAATCCGAAATTATTTCGGTCACCGATATTTTTCACGGCCATCCGCCAGAATTTTTTGAAAATTTGATTTGAGCAAAAATCTTCAGATTTGGATCACACGTCCATATGGTCACAAGAAGGATGCATATCCAGGAGATATTAAGGATTTGGTGAGTTGGATGACGCGTCATTCTTCTTGAAACGTTGAAAGTCAGATTTCCAGTACGAAGTTGGCATAAAAGCTGCTCAGGCTCTGAAACGGGTTTACGGCACAAAATACGTAGTCGGAAGCGGTGACACGCACAACCCGGCGTCTGGAGATCTGAAGCTTGGGCAAATATAGGCGCGAGGCGAAGGTCAAAGTTGTGTACCTTCTAGAATTGAGGCCCGACGAGAATATAAAAAAAACGTTCAAAGTTCCTGAAAAGTTGGGCGATAATTTCAGCCTGGGATGGGGTCATAACGAGAAGGAGCTGATCCCGACACTCGGGTCTGGTTGAAGGTGTCCGAGTTGTGGCGGAAGCTGTGCTCGATCGGATAGTAGCCGGCAAGTCGACGGATGCTCCAAGAGGTAGGCAAACTTTGATGTGCCTGCGTTCCTGCCTTGTGCCTATAGTTTACGAATAGGCACGGAGCAAGTAGGCAGCAAGCGAAATGTGGACCGATAGGCGTAAGGTTAAGGGCTTGCGATGCTTTTGCGTAGCGAAAAAAAGAAAAATTTTTAAATTACAGTGCTCACGGCCTAAAGGAGATGGCTTCTTAGGTAGTCACTACGATGCTCCTTGACTCTCTGACCACAGCCCCTTGGTTTCTCGATTTTTCGTTTTAGAAATTACACTTGTTTATTTTATGATTGTTGACACGCTAAATGTTTATTTAAACATAATTTTTCTTGAAAAAACAATTTACATTTAGAGAAAATAGCAGCGAGTCGTGGCCGCGGAATGAAAAACTCGACCACCAGCTATAAAATTAAAACGTATAATAATTTGGTGGTTACTCAGTTTTGCAGAAAAGAATGGCTGGCCGAGTTTTCACGTTTCTAGGCCATCGGTTAGCAAAGTTGCTCTGAAGCGCTTTCGCGAATTCGTTTCCAAATAAAAACTGTAGGTGAAAACTCGACCGCCCACGCATTCTTAAAGCCACGAAATCGATTGGAAGTTCATAATTTCTCGGTCACCAATTTTTTCACGGCCACCGATATTTTCTCGGCCACCGAAGTATTTTCTCGGCCAATCAAAAGTTTTCTAGGCCACCAACTTTTTCTCGGCCATCTATATTTTCCCGGCCTCCGACATTTTTTCTCGGCCACCGATATTTTTCGCACCCGTCTATATTTTCTTGGCTACCAATTTTTTCTAGGTCTCCGATACTTACTCGGCTACCAACTTTTTGTCATAGATATTTTTCGCAGTCATCTACCTATTTTCTCGGTCAGCGATTCTTGATAACCCGTGTTTTTCTCGGCCAACGATATTTTTCTCGTGACCATCGATATTTTCTACCGGCCATGCCAAAATTCATTCTCGGAGCCACTTATATTTTTCTCGGACACTAAATTGATAATTTTCTCGGCCACCTATATGTTCTCGACGACAGATTTATTTCTCGGCCATTACTCTACGGCCTCCACCGACCTTTTTTTCGGTCACCGATTTTTTCTCCGCCATCTAGATAATCTCAGTCACCAACTTTTTTCGGTCATTGATATTTTCTCGGTCACCAATATTCGTTTCTCAGGCATCAATATTTTTATCGTCCACCGGTATTTTATCGGCCACCGAAATTTTTCGCGGTCATCGATACGTCACGGATATTTTTCCCAGCAAAGTTTTCTTCTTCACCGATATTCTCTCGGCCACCAAAATTTTTCTCGGCCCCGATTTTTTTTCCACAGATATTTTTCTCGGTCATATTTTTCTGCCATATTTTTTCTCGGCCCTCACCAATTTTTTTCTCGGCCTCGGAGTTTTTCGTGGCCATCTATATTTTCATCTGCCGTCTATATTTTCTAGGCCACCAATTTTTTTCTCGGTCTCCGATACTTTCTCGGCTACCAACTTTTTCTCGGCCACCAACTTTTTCTTGGCCACAGATATTTTTCTCGATTAATTTTTGACGGCCACCGAAATTTTATGGTCACGATATTTCACGGCCATTGATATTCTTTTTGCACGGTGATACTTTCTCGGCCACAAATATTTTCTCGGCCACCGAATTTTTTCGCGGTCCTATAAATTTTCTCGGCCTCAGCAATCGATATTTTTCTGTCTAGTTTTTTTTTGGCGGCCGTGACCTCCAAAGAATTACAAAAATAAACGATACATCTCATATTTTGTGCAACCTCAAGTACCCCCCCCCCCCCCCCTATATATATTGTTACAGAAGCCCCAAAAGCTCGCGCATTCCGATTCGGTGCGGCACCGAAGGAGTCTATGATGTTTCGATGTCCGAAACGCGTGCAAACGAAGGGTTCAGGAACGGCATGAGGCAGGACGGTGCCAATTTTCATGCGAGAACTGTGCCTACTCTTGCAATTTCTGTTGATTTTTTTGGTAGCACGTGGCACTTCTTATTTTCTGTATATCCATTTTGTCTTCTACATACAGGAATATATATATATATAGGATATGTTTAAAAACCTAAAACCTAAAAAAAAACCAACCTAATACAGTGTTCGACGAGCGTCCCCCGCCGCCGGCGGACACTCATTATTTGCATTGTGCTCACCGTGAGGTCGCGCGGGAGCCCCGGTGATGAGCATCTCTTTACGATGTCCACACGAATAATACAATAACACGGGCTCCTCTTCAAATATGACAAAATGTCTTTGGCGTTCTCTCCTGACTTGGAGCTTCTGGGTCTTCGACCCGTTCTTGTCTGTGAGGCGAGATGCGATTACCCTCTATATTATTTTTGGAGATTTTTTGGTTTTCTAGGGGCTGCGCCATTCATAATACAGATGATAATGCCGGCTATCATAATAAGTCCACAAAAGTACCCATATGGCCTTGAAGGAAAACTCTTCTTCACTCTTGGCGTGGGGACATTTGGTTGTCTGTGCTAGGTTTGATGCTGAACATGGTAATTTAAATTTCCGAGGCCATTGTATATGTTTTCTTCTAGGCTACGACATACAATTTTTTAGGCCACAAAATATTTTTTTTTAATTGTATAAAAACGGAATGTTCCATAAATTATCTATTTTTGAATTACAGTTAGTCTGAAAATTTTTTTCAAGGGCACCTGTCTAGGTCAAGAACGGATTTTTTACTGCCGGAGAACATAGGCATCAACTTTTTCTGCCACGATTAGACAGATGGAAGAGCTTTTCGTAAAAAAAGCTCGGCCTCCACCCCACCTAACCCGGCAAAAAACTTGCAGCTACAAACTAACGAATCAATCCGGAAACTGACGGAAGTAGGCGTGAGATATCTTCGAAGTCTGTAATCCCTCTCGATCTGGATTTCTGGCAGCCTCCTACGAATATCGGTTAGTGTGACTTAACCTCGTGATGCTAGCGTGCTCCATTTATAGTTTGGTCTACGTAGATCTACCAAAAATGCAGGTGAAGAGACGCTCTCAACTGATTCTGTATGGTTAAGAACGCTGACGTCACATTGTTTTTGGGAAAAAAATTTCCGCATTTGTAGATCAAATCGCGATGGGACAGTTTGCCACCACGTGCTTACCCAGGAAAATCTGAAATCGGTGTTCGAATTTTCAGGAGCTATCGTAGACTTGACAGTTGCTCCGCCGGATGCTCCAAGATGAAGGATTTAGAAGAAGGTCAGCTACATCGTGGCGGTTAATCATTTGTCGTTCGTTTGGTTTTTTCTAGGCCACGGCTATCTGTGACGTCACTAAACTAGTTTCCAGAGCAATCGAAAACGAGGGAGAAATTCTACAGTGTCACCCGAGAGTGTCGCTGGTTTTTCTGCATATTGCCGACAAGTCGGACAATGGAGGAGATACAAGCAGAAATGAAGCGGCTTAAGAAGGAATACCCGACCCCTTATCGATATCGGACAAAGTAACGTCCGTATAATCGTACGCTTTTGGTGATGGAAGGTAAGACATGCGAACGCGATCTATTGGGTGGGCGTGGTCACGTCCATTTGCAAAGTGGGCGCACGGTTCCTTTACAGTGGACGCCAGCTTTTGAAGTTTTGAGTAATTTTTATGGGAATTGCTACGATAAATTCATTTAAAAAAAACCCAAGAATACTTTTAAAGTCGTAACGAAAAAAAACAACCGTGCGCACGTCTTGCAATAAGTTAGGGCGCCCTAAATTTTAAAAACGAAGGAATTTCATTATTTCTAACGCTCCAAACTCATTTTCACTACAAAGAACACGCCTCCTGGGAAAGCCCTTACTCATTTGCTGGATATATGACGTCACTAAATTAGTAGAGTGAAACCAGGTGCGCTCCATTGTACTACGCACACCGACGTGGTGTCAAACAGTGTCCCATTTCTGTGTGATCTTCCATAAATGCGATCGGATTTCTAAACAGATGGCGTTCGCATGGTTAAGAGCGTGCTGACGTCACAAACTTTTCTCTGCAAGAAATCATTTTTTGTAGATAACACTAAAATGGCACTTTGACGCCACGAACCTGCGCTCTCACTTTCAACACTCCCATTAAGCATTTCATGTACGCGCCAAAACGCACGGATTTCTGGCTCCCATTTACATAAATTGAAATTTTGAAAAAGAGTGTGCCGAACTAGGTCATTTTGGCTCGGCCATATGTGGTGAGATTTTCACCGCGTTGCGTGTCGCGTCGCGGCTCAATTTAAGTTGTAAATCTGAATGTGTTTGTCCGTGTGGAGTACCCGACTATTCCACGCGTTGCCCGGAATGCTATTGTGGATGGAGCACGAACATGAAAATTCAATAGAAGGCCAGAACCCCCTGAAAACGCCTGCCGCGCCCCCGCCTGCCTTGCAGCGCGGAACCCAAAAAGTGTTCACGGCCGCGGCGAAAGGCCCTCGACACTATGTGGTGTTAATACCTAGCTATTGACGCCTTAGTGTAAAACAAACATGAGATAACCGGAGAACGAAACCCCCTCGGGTCGACAATCTCCATGTGGATTGACGCTGGAATTCATGCTCGAGAATGGATTGCTACCCGGCGCCCGCAATGTACATTGGAGCTTCTCCTCGGGTATGAAAACGACGCGACGGTGGCTAAGCTGATGGACCATATCGATATTTGTGTTATATTCTACCTGTGATGAACCCAAATGGGGCCATATGAGTATTCCAGACCTGCGAAAAGGTTGGTTTTTGAACCTTACAAAAGCCTTAAAACTAGTGTTACTATTTCAGAACCGCATGGGAGGAAAAACCGGAGCCCCGCGATGCGCCTGGCAAACGTATGCTGCTGTGGAATCGACCTCATCAGGAACTTCGATTGGTTCTCCTGATAAGTCACGTGGTCTGAGAAAGTCTCATTGAATTGATCTACAAAAAATGCGGGAATTTTTTGTTGATCGAAGCGAACTGGGACTTCCTGCTCTAGTCGTAGTTAGCTCAATTACACCTTAAAAAGTAACTTAATCTTAAAAATTTCCAGCCACCGCTTGTTCGGGATCCGTCACGACACCTAGTTTTTCACGGCCCGGCGGCCTTCCCGGAGCCTGAATCACAAGCTGTCAGGGATTTCCAGACCTGGAGCAAAACACACCCGTTCATCTCGCTGCATTCCTACTCCCAAATGTGGTTGATACGCCATATGGACATCAGAAAACAGAGTTATCCACAAGACTACCATACTGGACGGCGGCCATAGGCTCTGCGAGTAACTAAGGCGTTGTATTGTATGGGACGAAATATCAAGTCGGGACCGGCGCTGATTTGATGTGTAAGTAATATCCTTTTTTTCCAATTTTTAAATTTCTAAGGATTTCAAGCAATTTTCAAATTTTGAAAATTAAAAAAACAATTTTTTTCGGAATGTTTTAAAATTAAAAAAGAAATTTTTTTAATAGATATTTTAAAGTTTTTTTTTGGAAAATTTTGGATTTCTGAATGGCGTAATTTTCTTTTCAGCTAACTGGATGAGATTAGTAAAGATTTTTTTAGGACTTTTTAATTTAGACATTTCCGGAAAAATTTTTAAATTATTAAAATTTCGAACTTTTTCGATATTTTCGGATTTTTTTGCAACCATGGTGAATTTTATTTTTTTGGATTTATTGGAATCACTAGGAGGTGGGCAGCAAGATTTTTTCCGGCAAATCGGCAAATCGCGCAATTTGCCGGAATTTAAAATTCCCGCCAAATCGACAAGTGCCGATTGAAAATTTCTGGCAAAACGGCAAATCGGCAAATTGCCGGAATTGAAAATTTCTGGCAGACCGGCAAACATGCTAATTGCCGATTTGCCGAATTTATCGATAAATCAGTTGCCAAACGGCAATTTCCCCCACCCATTAATGGGATCTTTGAAATAAAACATGAAGAAATTTTAAATTGTTGGAGTTGAATTTTGTATTTTTCGGGAATTTTAATAAAAAAACGCTGAAAATTCTAAATTTTGTAACAAAGTTATTTGTGATTTAAAAAAACATTTTTTGGACTTTTCTGAAATTTCACGGATTTCTGGCATCTCTCATAAATTGAAATGTGACGAAGAGTTTTTGCCGAACTTGGCTATTTTGGCTCTGCCATATCTGGGATGGACGGCGCGCTTCATGTCGCGTCGCGGCTCGTAAAACTAAATGCACTTGTCCGTGTGGAGAGAAAATTCAATGAGGAAGGCCAGAACCCCGGATTTTTGAAATTTTGAAGTTCTGAGAAACCTGTGAAAGACTCCTACCTAAACCTGAAGAATTTGAGACGAAGCTTCTGGAGATCACATGATTTGGCTAAGGGGAGCAGCTTAAGGTCCCCTATGCCTACCTGATTGAGCTCCGACCAAAGAACACCATGATTGGGTAAGCGATGGATCCTATCAAAAATATTTCATTCTAGCCACGGCTTCCTTCTCCCCGAACGAGAAATTGTGCCCACTGGACTAAACCTTCTAATCCATCAAAGTGGTTTATGTGCCGACGAGCTTGTGGCGCATAATTTGTGGATCCTGTGATTCGTATTGAACCAAGCTGACCACAACTACCACAAAGCCCGCAATTCCCACCGTATCGGTGTGTGGATGGTCACTCTATAATCGACACCAACTATGGCGGTCGGAGCTTACACAGAAGCCTACGGAAGCTCCAACCAGGCACCACCACTACTACGAAAACCTACTACTACCACAACGACCGAGGAGCCTACCGAAGCCCCAACAGAACCCAGTCCGACTACTGTCGAGGCCACCGAGGCTTCTACAACTACAACGAGAACCTTCCACATGCTCTGATACAAGTACCACAGAGAATTCTGAGGAGTACCAACCAGAAGACATCCACACCAGGGGCACCTGAAGCAAGCACCAAAGTGAAGAGGATGGTTTTTGAGTCTCAGGCTTAGGCCTATGGCTTAAACTTAGCCTTTCTTAGACTGAGGTTTAGGAGCTTAGGCTTCAGCTTAGGCTTAAACTTAGTTTTAACTTAGGCTGTGGCGTAGTCTTAGACTTAGTTTTGAAGGCTTAGAGCTTAGGCTCAGACCTCGGCTTAGGCGTAGGCTTAGAATAAGGCTTAGCTGTTTTAGGCTTAGACTTAGTCTTGGGCTTAAGCTTCGGCTTAGGCTGTCTTAAGCTTAGGCTTAGGGATGCTTGCACTTGGGCTTGGCTTCATTGGCGAGCGTGAGCTATTTAGGGTTTTATGGGAACTTCCGCACCTTTAGACTTAGGCTGAGGTTTAGGCTTAGGCTTCGGCTTAAGCGTTCTTAGGCTTATGCTTAAGCTTAGGCTTGGACTTAGGCTCATACTTGGGCTTAGGCTTAGGCTTGCACTTGGGCTTAGGCTTACTTATGCTTAGTTTTAGGCTTAGATTTAGGTTCAGGCTTAGGCTTATCCGTACCTATGCAAATACATTTTCTGGCACAACTGATAGTTGCCAGCGACCTATTTTAACTTCGAAATTCCCACGAACCATTCCAGGAAACAATCACACCGATCAAACTGCGTCGACTACGGTGACTGCCACTGTCGTCTTTGGCACTGGGGGTCTTTCAGCTCTGCTATCGGATCAGGTCCAAGTTGTGCCCCAAAGACTTGCGACTCGCGGTGCTCTTTTTCGGTGTGAGGCGCACGCTGGAAACTATCGTATGACAAATTGTCAATGTATTGTATAAATGATTTCCAACTTTCGTAATTGTGGACTAAAAACTACGTTATATTTTTCATGCCTGACTGCGTGGCAGCGTGTCAGCGCCCGACATTTTCTGAGTTCCACGACGGGATCCTGGCAGGCGTAGGCGTTGCAATTTTGACTCATCAAATTGCTTGGAATAATTAAGTACTGCTACAAATGATGTCACTAGCTACAAACTACAACTAGGAATTTCACACTACAAACTACAAACTACAATCTTAGCTCTTCAAGCTATGAAATACAAACTAAGAAATTTTTATTTTGCAATATTTTTTAAACGAGGTGTAATTTGGGTATAGTAAAAACTGGAATGACAAAAGCAAATCACAAACGACAAACTAGAAACTAAAAGCGGAAACTGCAAACCAACTACAAACCACATACTACAAACACAAACTACAAAAATTACGAAGTACACTACAAGCTACAAACTACTGAACTCTGAATAAAGTTGAACGTTTTTTTTGGTGCAATGATTGGCGTATGAATTGCGAAATAAGTGGTTAAACACATACTACAAACTACTACAAACTACAAACTAGAACGATCCTAGAAACTACAAACTACAAACTACAAAATATATTACAACCTTAGAAATTTTGAATTTTTAAATATTTGTGGAACAATCAGTTTTAATTATTCGACGACTAAAGTCAAAGCTGAAATCATAAAATGCTAACCACAAACTACCAACTAAACTACAAACGGCAAACTACAAGCTACAAATCACTGAACTCTAATAGAATTTGAAAGTGTACTCATGGTTTGTGCCATTACTGGACGTATGAATTACGAAACCATAAGTTTTTAGTGACCCACTACGAACTATAAATTTCAGAAAACTACAAACTACTAATGAATGTAACTACAAACTACAAACTGGAACAACAGCAAACTACAACCTACAAACTACAAGCTACAAACGCTTATATATGATTATTCGATTTTAGTTATTTCCTGTTTTTTATTCTTTTCCAAATTCTCAAACTCTACTGAAATAAAAATACCTCACACAAATGTTTCTCATCATGCATCACTGACTAATTATTTTCCAATAAACATAGCGTTTTGAAAAAGTATGGAAACAAAAAATGGAAATCAAAGGCGGAAATATGCATTTTTCTTACTCATTTTCTTGAAATTGGCTTCATGTGATTGGACTTTTTGATTTTTTGTTGGCCTTGTTAAAAACGTGGTAGGCAGGCATTCATGCCTACGTCGAGTGCCTGCCTACCAGTCGAATTCGAACCCGCAAGATGTCGGCCGCTCCCTTCGATTTTGGAAGATTTTACTTATTCCTCTTCTGCTAACATATTAGACAATTATTTTTCAACCCGTGTACACAATAGGGCGGCTAAAAATTAGGTTGGAAGATAGAGGTGTACAGGAAACGTTTATAAGCTCTTTATGCGCTTACTACTGAGTACCACTTATTTGCCAATGCATTTTGTTTCTCAACAAGTTGGAGATTCCAGAACAACCAAGGTTTGGCGGGGCTTACTTTGAGGCAATTTTGCGACTGTACAGTAGATTCATATGTGCGAATTTAAGTAGACTTTGAAAACATTTAGGCGGGAATTCAAACATTTATTTTTAAAACCATCTTGGCGGCGTGATCAAAGTTTTCTAGTTTTTCGAAAACACTTTGGCGGGAATTCAAAATGTTAATTAGTCTTAACTTCCTGAATGCTCTAGATCAACCTTCTGGAATATTTTAGAAAACTCTAGAATGAGAACCTTCTGAAAAATTCGAAACAAGTCTAGAATGTTCTGCAGAGCCTTTTGGACAAGGCTTTTCGAAAAAAATCTGGAATAGACTTTTGGAAATTTTGAGAAAGTTCTGGAATGTTTTGGAACCTTCTGGAAAATTCGAGAAAATTCTGGAATGTTCTAGAACCTTGGAAAATTTGAGAAAATTCTGGAATGTTGTCGACCCTTTGGAAATCCGCGACTGGAATGTTGTGGAACCTTCTGGGAAATTTTTAGGGGAACAATCCTGGAATTCTCGATAGCTTCTGGAATTGAGAAAATTCTTGTCACCAACGTTTTGTGAAAAAATTTAGCTGGAAACTAAATAATTTGAGAATTCAAACTTTAATTTTTCCAATTTTTTCGGATTTTTTTTTTAGCTTTTAAGCTTTTTACATTTTCCATAAATTTTAGATTTCAAAAACAAAGCTTAAATTGGCAAAGTTTTGACCAAATTTTTTGGCTTTATAGCATACAAAAGGTTGAAAAAGTCCACAAGGTTCTTGCTCCACACAGTCCCCAAAAACACATCAATTTGGTGGAAATTCAAATCATGTTTTTTTTTCAAAAAATGTAATGGCCTAGAAAATATTTCAGATTCAAAGCAGTAAGGCCGTCAATCCTACCTCCGTTCAATCCGTAAAATACCTAAAAATCAATCCCCAGGAATTAGTCTCATCAAGAAAGAAAAGAGCTCTGCTTGTGCCCACTCCTCATCTCTTCTCATTTATTTGTTTGCAATTAAACACATCCTACTCAGACTGCATAACGAAGGAAACAAAAAACGAAAGAATAACGAAATCCCAGAGCATATTTCCTTTATTAACCCTATTCATTATTTTTGTATTCAGGTGGAACAAAAAACCGGCTCGGCGGGTTTATCTGTCTGTAAATCTTCTACACGCCTACCTACAGCGGCCTGCCTGACTGACTATGTGCCTAGTGTTTTTTGTCCTTTTCGGTTGGTTTTTTTGAAAAATTTTTTTTCCTGATTTTTTTTGTCGTTTTTCCATTTTTCTGAATTTTTAGGAATTTATGTAAGTTTCTCTTTTTTCTCCCCCCCGCCGGAGCCTAAGCATAAGCCTAAGTACGCCTAATGGTGCCTAAGCCTAAGCCTAAGCCTAGGCCTCAGCTTAAGCCTAAGCCTAAGCCTAAGCCTAAGAGGCCTAAGCCTAAGTCTAAGCCTAAGACTGAGCTTAGGCTTAAGCCAAAGCCTTAAGCCTACTCCTATGCCTGCGCCAAAGCCTAAGTAAGCCTAGGCCTAGTCTAAAATAAGCTCGGCCCCTTTCTGGGCCAAAATTTGTACATGTACCTCCTAAAATTGTTTCATCGTTAATAGCCATAAAAACTAGGAAAAATCTATTTCAAATTCTGAATGTCAAAGATAAAAATTCACAGAAGTGCGGGAAATTTGACCTCACCAGAAATGGGGCGGAGCCCATTTTTGGATAGGCTCCACCTCTTTCTAGGTTCTCTAAAATCAAATTTAGCTGTCAACTTTCCTGGTAAGCTTTAGTGGTTTCATTTTTTGTATTCATCACATTTCTTTTTCATTTTTTACATTTTTTCATAATTAATTTTGATCTACTTGTTTAACTTGACCCTGCCCCCCAATCTCCTCAAAGTAATGGGAGGAGTCTAAACAAGGTAGATCAAAAATAAATAGAAAATGAGAAAAATTTGCCATCGTGTTTTTCGATAACACTACAGTTTAATCATACAATAATCCCACAACTTAAAATTCAGCAAATAACCAGGAAATGGGCGTGGCTTAGATTTTCAAGGTTTCGCTGTTTTTTCCAAGTTGTTTCTGATATGAACCGGCCCCGACAAAAAATGCCACAAAAGTCGTAGTAGTGATGTGTGACGTCTGTTCTGATGACTAGAATTCATATTATAAAGGTCGAAAAATCCCTTCCGAACGAACCCCCCAAGATCATCCTAACATCCCAGATTTCTTCACCCGCCCGCTCATATAGCTTTACCCACCTAATCTTTTTGCTTATTTCTCAATCTCCGTCTTTCTTGCGTTTTTAATTAATTCAAGGAATCAAGCAGTTGTGGTTAATGGCTATGAATTGCTTTTTTATTGATATCTTTAATTATTATTTATTTAGTATCTAGCCATGTACATGTGTTGAGTCGAATAACCTGAAAATTTTGTGCCAAGTTATGAAGGCGGGGTCTTTCATACATTTTTTAAATTGTTTTTTGGCTAAAATTGTATGTATTTTGAAAGTTGTGTGTGTTTTCCATTTTCTTTAAAAAAACATCAAAAAAAAAAATTGGTATGTAGTAACGTAGGTAGGCAAGAAGTAGTTGTGTAGGTAGAGACTTGAAAATAGCAGCTATGAATAGGTGCGGTACTTTTGTAGTTTAGGCAGGTTCGTAGGCAGATAGGTGAGTAGAAAAATCATTCAGAAGACATTCGGCCAGGTAGGATCACTGGTAAACAGGCATAATGTAGACGTACGTAGGTTAACACTTACGTACGAGGCAGTAGGCATCAGGGCTTTGTGGCAACCGGCAACCGGCAACCAAAAACCAGGTTGCCGGTTACGGAAAAATTGCCGAAATTTCAGCAACCAAAAGGTGCTCGCCCGAATTTTCTCGAATTTTCCAAAAGGTTCTAGAACATTCCAGTTCTCGAATTTTCCAAGAAGTTCTAGAACATACCTAACTTTTCTTGTCGAAGTTTCCAAAAGACCCATTCTAGACGCAACATTCCAGAAAATGATATTCTCCGAATCTTTGCCTCAGACTAGAACATTCCTGAATTTCGTCTCGAATTTTCCAAAAGGTTCTAGAACATTTCAGCATTTTCTCAAATTTTCCAAAAGGTTCTAGAACATTCCAGAATTTTCTCCAAGTTCCCAAAAGATGCTAGAACATTCCAGAATATTCTCGAATTTTTCAGAAGGCTCTACGATGAATATTCCAGAATTTGCTCGAATTTTCCAAAAAGTTCTAGAACAAGTTGCATTTTCAGCGTACGGCAACTTTACTCAGCAATTGCGGGTTGGCATGTAGTCGCAGGCAGGCATGTTAGTAGCGCAGTTTTGACAGTTTTGAAGTTAACAATCCTACCTGCGATGCACAAGAAAATGCGCGGCAGTTGCGGACCGGCAATTCTACCAAATGAGCTAGACGGTAGGGCATGTTCTTCCGAGTATTTTTTAAAAAAATTTGGCAAAAGTATAGCATGCATAAATCTTTGTTTTATTTGAAAGTTTTATTGGCTAGGAACAACCGAAAAAGTACTCAAAAATTGTCGGAATCTTGAAAATGTGAAAATTTCCAACATTTCGACTATTACTGGAGATTTTTACAATTTAGTCTATTAAAAAAAAACAGTTTACTTTCAAATAAAGCAAATTTTTCTATATTGTGTGATAAAATTTTAATGAAAAATAGGGGAACATGCCCAACCGTCTCATTTTGCCTAGAATTGCCGCGCACCGTGTTAGTTTATCCCCGTAAACCTCCAAGCAATATGGCAGGAGTCCTTCCGTCCGTCCAAAACGTCATAAAAACTCGTTGGAGATGGCAAAATTGGAGATGTGCCAAGTTTGCTGGAGAGGTGGGGGGAAGGAGACAATCATGTTGTCTGCGTACCTGAGGCCAGACTCGTCTTGTTATCTCTCTGTACCTACCTGGCAAATGGGACCTCCCCAGACCGGTGAGTTTGTCCTTTCAACACCTATTGTTTCTGTTGGTTTGATACCTTTTTTTCAACGCTACTTTGCGGGAATTTAGACTGATTTCTCATGGTTAGAAACGTGCTGACGTCACATTTTTCGCGGGAAAAAAAACCCACATTTTTTGTAGATCAAACCGTAATTGGCTAGCCATTCCAACAATTCACTGTTTTTTTTCTGAACAAGTCGAAGTTTTGAGTTCCGCACACGCAATTCTGTCTCTGATAAGTTTGGAAGTTTCAAATAGAAACCTCTCAATTGTCGGACCAGCGCGCTACTTCATCATACCCCGCAAATTGAACTGCTCGCGGCAAAATTTAAAAATTGATGCTTCTCCATAAACATACCAAAACTACCTAAGACTGAACTTCATTATCTTCTTTTAAACTTAAACATTACCTTAAACGAAAAAACGTTTGTACGAGTCAGAGTGTCTCATTTCATTTCGATCTTCATTGATCTACAAAGAATGCGGGAGAAGAGGCGCAGAGTTTTCAACTACTTTCGCATGGTGAACGTGCTGACGTCACATTTTTTAAGAAATTCCCGCATTTTTTGTAGATCAAACCAGCCATGTTGGCAGTCCACGTGGCCGGCGTTTGTAATCGTTCAGTAGGTAGGTAGACACAGGTCAGTAGGCATAGGTAGGCGGTCGGTCTGAGGTAGGATGTTGTTGACCATCATCCAACGTAGCAAAACATGCTTGACGACTAGCCTCAGGATAATCACAAAGTTCTACGTAGTTATGATTTCAAGCAATGAGCACATTATATCACTGACTAAGCCACAGCTATAAGACCCTCCTCCGAGTATATTCTGAGGATCACCAAACATCTAGACGTAGGTTTGCAGTCTTTCTGTTGGAACATTAACGAGAGTAAATCTCATCTGTTAGGCAAACGACCAATTTCAAGTTCAAAACTATAAATATAAATAAAGCTAGTAATTGAGCCAGTCCTACTTCAAATTTCCCACAAGTTCATTACAAACCGTCCAATTCCCAAGCCCATGTACTCCCACTAATCAGTTTCTATCCTTGCCGCCCAACTTTCCAAATTCATTTATCCGCTTTGCATAGTTTTCGGTAATCTTGACGATTTTCAGAGGTTGAATTTTTTATTTTTTCCAAGAGTTACGCAATGCCAAAATAAATTTTTTTTTGTATTCTCAACAGAAAATTGCTAAATTTGTCCAACTTCCCATTTCTCGGAATTTGACGTAATCAGTTTTTTGAATTTTTTTGAAATTACTGATTATCAAATTTTGTTGGAAAGTTTATTCCTTTAACCTACACAGCTACCATATTCTGTCTAGGTGCTTACCTACACGCCTGCTTCGTGCCTACCCGCATACCTGCAGCTGGTTTATCTTCAAAAAGTGCAAAGAGCCAAAAGTTTCGAATTGACAAAATACGTGCTAATTGTTTGGAGCAAATTTTGCAACATGCCAAAGTTATCAAATTTCCGCATAATTCCAAAATGGCAGCCCGACATCATGTGCCTACATTCCTGTGGTCTGTAGGCCTGACAAAATGTCCATCAATGTATGTACCTATTTCATACTTATCTACCCGTATAAACATAGTTCATCTCTACCTCAAACAGCATGTTACAGGCTTTCTTCTCTCCTACCTACCTACCTTCATTAACTGCTCTGTTTATTGACTACGGCTGCCTACCTTTAGCATGCCTGGCATGCCTTCATACCTACCTCATTTATCAGATCCTTATAAAGCGTATGTACAAGTTCGCCTACCTATTGTGTTAATAACGATCACCGTCTCTAGGCTAACCTGCCTAATTGTGTCTACCTACTTAGCTATCTCATGCCTGCCTACTAACCAGCTCAAGTACCTACTTCATGCCTACCGGCCTACGTTCCTAACAACGTGCCTACCTGCCTGCTCACTAGCCTAAGTGTCTGCCTACATGAATTGTTCGTTAGCACACCAGACTTATCATATATACAAAACATAAAAAGAAGATAAACAATAATAACAAGTGGGTAACTCAAAAATGAAATTGGTTTATCTCCCTGCTCCGAGAGCACCAGCACTTTGGTTTAGATTCCGTCACTACAACTTCAAATTTTGCTTTGTTCGAAGGACCTTTTCCTGATACATACTAATTTTTTCGGATCCGGTTGGCTCTGGATTTCAAGTTTTATAATAACTTGGGCTCCCAGTGACGTCATCAGTGGAAGGTGCAATTTTAGTAACTAGACAGCTTGCTCCTAGTTTACTGCTCCTCTTCTCAACGCCATGAAATAAGCCAGAGAGAGAGAGACCCCTCATCGAAAATTAAATTAATCGCTAAAACGTAGGTAGGAAAGAGAGTGGGAGGGAGACTCCAAAAAAAGAGTCAGGGGGGCTCTCTCTCTATCTCTCTCTCTTCGAGCGGCAAATCCGCTTTCAAATTCATTCAAAAATATGTGCGCAACCACCACCACTACCACCGGCTCCAGGTGGTAATTACACTTGAAAACCAAGTACTGGTTTTCGTGGCCGGGCAACTTTTAAGACCCCGGTGGAATTTTGTAGGTCTATTTAAAAAATTGCAATTGCGCTTTTTTGTACTGTTTTTTTTGACACAACAACTTTGAAGCTTCATGTAAAGCTGGAACAGCGCTCTAATGACAATTTTGACTGCATACTCGCACTGTTGATAAATGGTCCGTGTACTCCACGGGGGCAATTAAACTGGATTTTTTTCGATTAAATAATATCTTGATTTTTTGCAGTTTTGGCTTAGGCTTAGCGAGGCGTAGGCTTAGGTTTAGTTTTTTCTCGGGCTTAGGCTTATGGTGAGGGTCAGGCTTAGGCATAGGCTTGGGCTTAGGCTTCGGCTTAGACTTAGGCTTAGGCTTAGCCAGGCTTTTGTCTTAGGGGAGCCTTAGGCTAGTTGTAGGCTTAGGCCTGAGGCTTAGGGGCTTAGGCTTCCCTAAGGCTTAGGTTTAGATTTAGACTTGGGATTTAAAAAAGGGGCTTAGGCTTAGGCTTAGGCTCATACACAGGCTTAGGCTCAGACTTAGGCTTAGACTTAGGAGGCTTTGGCTTAGTCTTAGGGATCTTAGGCTTAGTGGACTTAGGCTTAGGCTCAAGCTTAAGTTCAGGCTTAGGTTTCGGCTTAGTCTGAATATTTGGCTTAGCCTTGGGCTTAGGTTTAGGGAGGGCTTAGGATTAGGCTTTGGCTTGCCGGCCACCTAGAATGTGGTTTGACAGCGGTAGGCTATCCAAATTCTAAAAAAATCGGCTACATAATTAATACTTAGATGGGCCTATAAACCATTTCTCTAGGCCATCCTGCGAAATTACCAAGACAAAAAATTTCAGCCGCTAGGGGAATAGAGTTTCCGTTTTCCAAGGCCACCTCAAATTTACCACAGTCATATGTAAGGTATCGGAGGGCACTGTAGAAAATTCAGTATCAAAAATCAGCGAAGTAAGCATTAAGAAAGTTTTTTGTGTGTGTGTGTTTTTTGTGGGAGAAAACATTTCCCCTCTCTTTCCTGCCTGCTCATTTGGATACCACCGCTAACCCATCTTGACTTTGATTACCCATTTCCGTCCCCCTTCTTCGTCTTCTTCTACCCGGGATAGAGAGAGAGCTCTATATATTTTCGTGTTCTTGATCTGTTACCGCGCATTGAATTTGTTTGAGCTGCCGCCGGCGAATATATACATGCATGTCTAATTTTTTAAGTAACTGGAAAATCTAGGAATTTTAACGTAATTTGGTTATAAGCGTACAGATCGGCCCATGCTGGTGATTGTACGAAATTTTAATTTCATAGTGTCTGCAGAGAAGCTAGGCATATCCACAAGCCCCTACGTGGCCGTCAAAATTGAAAACTAGGCGATTTTTTCTCGGACTTTTTATCTACTTTTATTAGGCCCTGTCTTCTTTTTTGCAACGTTTTTCTACTAGGTCACCAAATTGTTCTACGCCAAGCTGCCTAAAACTCGGCCACCGATTTTTATTTGCGTCGGTCTGTAACATTCAGTCTCCGACCAGCTCGACTTTTGCTACCTGGTCGCCAATGTTTCGTAAGCGACATCGAAAATGGCACTCGCTGTGACATTTGTACTTTTTTTCACCCGGCCTAGAAATTTTGAAAAAAACTCGGGCACTGATTTTATCGGCCTTGGAATCCTAGTGTAACTTTGTGGCATGATTTTTTATTTATTGTCCATCCAGTTTTTCGTCTGAAAATTACAAAATGTTTTAGTGACCGTTGAAGCAAAAACTCGGTCACCAATTTCCCGGCCAAGTTACTACGGGATTGTACCGTCTCTACCATATTTCTGTCTCAAAACATACTCTCCTTCCGTGCTGCCTACGTGGCCGCTCAAGTAGAAAACTCGGCCATCATTTATTTTCTAGGCCATGGCGAAAATATGTAAAATAGGCAAAGAATAAGCGTGGTGGTTAAAGTAATTTTGGGAAATGGATTTTAAAGGCACAAGTTGAAAAAATAAATCAGATGAAGCTAAATACACGCATAAACCTTAAATAGGCCATCAATTTTTTTCTCGGCCAGGTTCAATCTACAGGTAACCGTCATGTTTCTTGCTCAAATTTACACCCTATTCTCGAAAAATTTTTTTTACGTTGAGTATGCTCTCCTGCCTAACTCGGCAGTGGCCGCAATTAGAAAACTCCCGGCCACCCATTTTTTCCCGCTAGGTCATGTCGAAAATGCGTAGGCGATGTAATGGGGTAGTTCAAGGTTGCGTAATGAATAACCTGGAACCAAAAATGTTGTCAATATATGGCCGCCAAAAAAGAGAAAACTCGGCCAACAATTTTTTCTCGCCCAGGTAGGCTACCAATGAACGCTACGGGAACCGTCCCTATCTCAGGCTCAAAATTACGCCTTTTTTCTCGAAAAATTTTTGCATGCACTCACCTCCCGTGATTCTTAATTAATGTAAGACGTTCTTTTTTCTCTTCGTCTAACGTGTGTATATGCAGAATTCAGGATACTTGGTGCGTCTTCCTTTCGGAGTTCTTGTCTTCTAAGCGAAAAAAACGTCAAATCTCTGTGTGCGTTGTCATCGGAAGACTCGCCTTCGAAGAAGACGCTTATTAGCTCATTTCATCCACTCGCAAATGCTTCATTAATTTTGTGCTTCTTCGCCTGCCTTCCGACGTGTTTACTCACACCACCACAACCACCACTCCGTACCTCCTCACTCACCGTGGAGAAACAGGTTCTGGATTGTTTTGTAAGCTTTTGAGTTTTGTGTCCTAACTCACTTTTTAAGCTCCGCCCACTTCTTGGCCTGTTCGGTTTATTAGAATTTGTGTGGTGTACTACCATCTGAAATTCGATCCGAAAAATGGCAAAAAAAATTCAGCTGACTGATTTTTTTGAACTTTCAAAGGTTCAGTTTTTGCAACCTAAACCTCTCTTAACATTAACTTTTCAAACCCCGCCCAAATCTTCTTTTTCCAGAAATCCACCAGTAATTTTTTGGGCAATTTATGGTACAAAGCTATCAGAACAATTTTTACCGAAGTTTTTTTATTTATTTTAATTAAGTCTACTGAAATTCCTAATATATATTGAAAAATGCTTTGGATGATCCCGAAATTGGCCAAAAAACGTTGATCGATGGTTATTTTTTTGAACTTTCACAAAAGGTTCCGTTTTGTATTCAACCTTTAAACCCCCCCATTTCTTGGCTGTATTGTATTCAAAGTTAAAAGTTGTTCATGTTGTACTAAAATATGCAAGTAGCATAAAAAATTAATAACTTTTTAAGCTCCACCCATTTCTTGGTTTTTCTGGAAATCCTTCCTGACTACAGTAATTTTCTGGGACTGTTATGGTACATTTAGGTATCAGAAAAAAAGGATTCTTGGATTTATGTCCACTGAACTTGACCTGAAAATGTTTTGAGAATTCAACAATCTTAAATATTTTGATAAAGGTAGAATTTGTGTAAAACCCGCCCTTTTCTTGGCTGCCCAACCCAACTTTGCCCTTTGAAGATTTTCTAACTTCGGCCTGCTAAAATTCCAATTCTAGGCGATCTACCCTGATAAGAACTTACTCCTGAGTTATTGTTTGAAAAACATAGTCCATCCGTTGCCTAGAAATCCAAAACTAGGCCATCAGATTTTAGGTTCCTAGAATCACAAAGGCAGTTTTATGTTGTCAAATTTCAGTGGCATAACCTCATAATTTAGACCTATTCTATAAGGTCAGCCTATTTTTCTGGCCTAGAAATTTTCCTTGAGTTTGAGCCCCCTACCCCCACACCCACATGGCCTAGAAACCCAAGCCTAGGCCATGTGTCCCCGCATTCTCACTCACTTTTAATTTCTTAACCCACTTACACAATTCTCTCCCCCTTTTCCAATTTCGAGACATCGCGAACCTGGGAAAGCTCATTAGCTCATTTGTTGTGTGTGTGTGAGTAAGAAGCGGGGGGAAGGGGAGCCCCCCTTTTGAGTGGGCGGGGAGCTAGTATGGAAAAAGAGAGAAGGAGGAGAGCCATTTTGGATGGGTATGCAATGATTAGGAATCGAAATTAATTAAACAAACAACGGAATGAAAGGGGGGGGGATCACGGGCAATCGCCTGCCCTTCACTACATGTCCCCTGCTGGAAATGTGGAAATGTAAATTAACTGTAAATTAGAAAACTAGCAAAAAAGTGCGAACGTTTTTTATCGTCCTACTTGTTAATTAGTTTAAATTTCTATATATGTATGGTTAGACATGCCTATTTTGGCGTCTAAGGGTAGATGCGGGATACGGATACCATGGTTAAATGGGCGATGCATCATGCCAAATAGTAAATGCACCACTACACATTGAAAATTTAGCATTATATCCATATCACTGAAATTGTCCGGGGCCCAATCAATAGCCGCCGCCGACTTCTCAGGACTCCACGCGCCGTTATGTTTAATTCGCAGCGGGCGGAGACAGCTGGCCGCGCCCACAACGAGTTAAACCGCAGCGGCGCGCGGTACTCGTCAGATGTCGGCGGCCTGATATGATTTGGTTGGGTCCCGAATTTCAGTCTTTATTATTTGGAGTTCGCGTATAATGCTAAATTTTGTACCGTGTTAGGAATGGTCGATGCACCATGATAGTGCTAAATAGTCCAGCGTCTAGAAAACGTTGAGTACTGTTGAAACAGTGCAAAATAACAGTTCCGGAGGCGGATTCTAATTTCTTGAATTTTTTTTTTTCAAAAATTGTTTTAAAAGTAGCACTGTGAATTCCACCTCAAGCATTTTTGGTGTAAAGCAAATTTTTCACGCTCAAAATTTTGCGCAAATGGTTCTGAGGCTCCGTTGAAAGTGGATGCTCTTAATCAAGAAAGAAGTTAGTCCCGCCTATTGGAGGAACTGATCAAAACTGGGAGGAGCTTAAGAAGGTTATAAAATTTTGCTAATTAAAACACCCAGCTCCGCCCACTTATATATTAGTTGACTCCGCCCCACCCATTAAAAGTGGGCGGAGCTTAAAGATATTGACCACCTTTCTTGGGTGACAGTGCGTTTTAGCGTTTTTCATAGAGTAAATTTTCCGGCGGACCCCGGATCGATGCAGTCCCATGATTTGACGCGCAACGCCCGCTGGTAGTATGACGTCACTCGTGGCCGAACTCTTGCGGGGGAAACTTGTACTTACAGCAGTAAATTTCGGTGTCTCACGGAGCACCTGCACACGTACCGATCATGAGTGATGCTTCCCACCCAGACATACACATACACACAAACGTACTAATTAAGACAAATTATAGAACAAGTGGGGGGGGGAGGGGAGAAATTTACAAAAGTGTGCAGTGCGAGAGAACACACGTTAGAAGGAGAAGCTGCTCTGGGAGACGTGGGCATATCAGTTGGATTAGTTTACTGCTCTTTTCATGGGCAAATCAAGTGAGCTCCAAACATTTTGACTTTGATTGGGTTTGATTCTGAAATTTTTTTGTATATGGATATGCAGAAAAAATACGTTTCTTTTTTATTTTGGAATCGCACCAATACGCTGCGTTGCTACAGTGCAACTGAGCCGGTCGCATTTCTCTTCCATAACTTTTTTTCCTTCTAAATTATCAAAGATTAAAACTCATGCAAAAGCTCAATTTTATATCATTAAGGATTAGTAAAGTGTGGGTGATCGTCGAGGGGGATTACCATAATTCATTACTCATTTTTCAATTTTCAGCTGTGTTTTGTTTGATAACCTAGATGACCAACTAGTTTTCCCGTTACAGGGCTGGGACCAAAAAAAAAATTTGGACCAAAACACAAAAACAAAAAATTGAAGTTTTTCAAAAACCAAAACCAAAAAAAAACAAAAAAAAACAAAAGTATAATACCAAAAAATTTCTTATGCTTAAGTTGATTTTTAATGGGGTTAATCAAGTAATGTTGCAAAATGTATTAAAAAACACTATGACGTCACAACTGAGTTAAAATACATGTTTTAAAGTATTTTAATACATAATAGTTTTGCTCGAGTCGAGACTAGACATGGTGAACACTTTTTTGGATTTTTTTGGATTTTTTGGTCCCAATAAACCAAAAAAAACCAAAAAATCGATTTTTCGTCAAAATACCAAAACCGAAAACGACAAAAAAAAAAAACCACAAAATTCTCAGCCCTGGTTACCTGTCAGCAAATTTTCCCCTATCACCACTTCAGGAGTAATCAACACCCCAAAACGGCAATTATTTATTATTCTCCTCACCTCCTCAACACTCCATAGCGCCAGCCACCCTAATTTGATTGTTTAATTCGATTCAGGGCACCCCACCACACACAAATTTATTAATTTTTGGCTTTCTCGCCATTTTCCGTTAATATGCCCGGCTTGTGTTAGCTTTATTATAGAACTTTTTAAAGCGATTTCTTAGGAATTTGTGGGAAAACGTCATATGTGGCCTAGAAATTTGACGATCTCGGCCGTCGGGGTCGATGAACCATGTTGTGATGTATGAAAGGTGGCCTAGAAAATTTTAGGCCACCGTGATAGTCGTGGCCTAGAAATTCGGGCGCCTTCAGGTGGCCTAGTATGTGAAAAGTGACGTGTGAGTTCTTTTGCCGGTACGGTCAGGCCAATTTTCCAAATCCTTCGGAATGCTTTTGTTTTAATTAAGGTCCGTCCATATTCTACAATTTTAGGATCCGCCCATATCTTGGTTAAACATTTTTTTTGTGCTTCCTTTTCTGGAATATTCATTCAATCCATCATTGTTCTCAAAATTTGATGCACCATGTACTATATCTGTGGCCTAGAAAGCGCGACGTCACTTATGGCCTAGAAAATTGGATCTTGAAATGGGAGAAAGTAAAAAAGTAACCAAAGCCCCCTTCTGGACGGTCGTGGCCTAGAAAGTTAGAAGAAGGAGGGGAGTAGGAGATCGATCCATGTACAGCTGCAGCATTTGACGACTCGACGGCGCGTAGCTTTGTCGCAGGCCACGGCCATAAAAAAATGTATGAGATCGATGCACCTTGTTCGCGGACTAGAAATCGAGAATGTGGCGCATGTCACGCATGGCCTAGTGACTTTTACGGTTCAGGCCGAAACATAGGACGTGTCCTAGAAGTCATTCTTAGTCCAAGACGCTACTAAAAACTCTCAAAAAAGGTGAGCCTATGTGCCAGCCTACTAATCTGCCTACATTCTTGCCTACCTGTTACTGCAATCACCATGTTGCACCTACAGTACCCCCTTCCGCCCCCGTAAAACTTTTTCAACACGGCTCACCCAAAAAGTGCAGAAAACACAAAAAAACCAAGCCCAATCTACAAAAGCTCATACCCATTCGTGCTTGGATTAACAAATGCGCCACCATTAAAATGATAATTAAGAGTGTGATCGAGACTATTGTTGAAATCTGATCGGATTAAAAAGCGACTGGTCCGCGAATGAGCTTTTCATGCAACTGATGAGCCATTTCCTGTGCATGTACACTGATGATAAATCTCCCGATTTTATCTTTTCCGAGACATACCAAGTAATCTCAATGTTCTTCATTAGTTTCTTCATTTCCCGATTCTGGAATTAGTTGCTTTGATTTATTAAAATCTGTCACACCTTATGTCCATAAATCGTGATTAAATTTTTTACAGTTTTTTTTAAATATAGAAATGTGATAACTTTCCAACCAGGCTGTCCCAATACAGTTTTGATCTACAAAAAATGCCGGAAGTTTTTGCCCAAAACTCTGAGACGTCGGCACGTTCTTAACCATACAAAATCAGCTGAGAACTCTGCGTCTCTTCTCCCGCATTTTTAGATCATCGTAATACAATAATGAGAGAAAAAAATTTGAAAAATGAAAAACCTATGCCAAAAATTTGGCATTTCCCTCGGATTTTTTTTTTCGAGCCTAAGTTTCGATAAATTCTAGATTTTTTGAAAAACTGTCTGAATTTTTTTTTTTGAGAACAATGATTATATTGATTAAAGATCAGTGTTTCATGTAGCGTAGAAAAGGTTAAAAAAAAGATATGGGCAGAGCCTAAAATTACAGAAATTGGACCGTAAAGTTTTCAAAAAACTTTTTTTTTTTCAAAAACCGAAATTTTATTTTAATTTCAAAATTTCCGCTTCGGGGTTTCTTGATTTTTTCAAGTTCAATTAATTTTTTAGATTTTTTCCCGTAAAAAACCCAAAATTTACTGAAGCTTCACTATTGGATTAAAAATTTATAAGGTTTTGCGGGAAAATTAGTAAAAAATCGAAAATATAATTTAAATCTGAGAAAAATCAAAAGTAATTACAAAAAATTAAGGCTTCCATGGAGCTAGGTTCGCGTGGTGCCAGGCTACCCATTATTTTTTGTTTTGTTTTTTCCCCAGGAAAGTGTGACGTCAGCACGTTCTTTATAACTATGCTCAGTTGAAAAGTCTGCCTCTCTTCTCCCGAATTTTTCGAAGATCATACCAAGATGGGGCATTTTGACGCCACGTGTAGACTGTAGGCCATAAACCGCCTGCCTTCCTGATTTTCAGGCTACCTCCGCCTGCCTGTCTTTTCGCCCCAATCCACTCCTTATGAATATCTAAAACACATTCAGGAAATTCCTTAATTTGATTTTCACCACAGTGATAAAAAAGATAAATTAAAAATCATTCTCGTCAAAATGCAAAAAGAGTCGTAAGGCAGGCAGGTTTCAGGCAGGCCCTGGCTCACGCGTGCCGACGAGGCAGGTTACTAAATTTCGAAAATACCTTATTTACTCTACAAATCCTCTTAATACCCCGACATTACATCAAACCTATTAATTTCTGCCTTAGGCGATGGGACTACTAATTGATAGGAAAAGACGACTTGTGTGTGTGTGTGTTGAATTATGATACAAATTTGATTTTAGGCAGGTCCTCTTTCGACAAAAAACTTGTGTCACCACCCCACACCTCCCACGTTTTCGGTCAGTGAAGCTTCTGCTCGCTGTTAAGCAGATATTCCTAGGGAAATCATAAATCCATTCAAGTACTCTTTATTTTCTTCTCTGCGACCAAATTAGTATACAGATGTCATCATACTTTTTTGTTTCTTTTTGTGGGGGCTGTTCATTACAGTTTGCTCTACAAACGGGAATTTATTTTGCTTTTTGCCCAAAAGAATGTGATGTCAGCACGGTTAGCCGTAACCATGCTCAGTGAACTCTGCGACTCTTCTCCCGCGTTTTTTGTAGATCTAGCATTCCTGTAGATCGAAGTGGGAAACTCTGACACCACGTGCTTTGCGAAAAAATTTGAAAAAAACCTTTCTTTAAAAATTTGGCATTTTCAGCTGGGTTTTTTTTCTCTACAAAATTTTTTTTTGAACGAAAAAATGTTTCGATAAAAAGGTTCTAGATTTTTTGAAACTGTCTGAAATTTTTTTTGAGAACAATGATGACTTGAATATTGTAGAGAAGCGTAAAAATAAGTAAAACCAAAAAAAAACGCCTTGGGCGAAGCCTAAAATTACAGAAATTCGACCATAATGAAAGTTCCCAATTTTTTCTTCACAACTTTTTTCAAAATTGCTGAAATAACCCAACTATTAACTTTAAATTTAAATTTCAGAAATCCTAATTTTGACGCCGATTTTTACAATTATAACCTGGATTTGTTTTTCCTGCAAATTCTTTTTTAGCAACTTACAGTTGGTCGGTTTGTCGATAGAGCGTGCTTATTCACCAGGCGCTACTTCCAGTTTGTTCTACAACAGTGCGGGACTTTTGCTTTTTGTCCAAAAGACTGTGATATCAGCACGTTCGTAACCATGCAACAATCAGTTCCGCATTTTTTGTAGATCAACGTTGATCAAAATGGGGCACTGAGACGCTTTGGGGGGCGTAGCGGGCCCTTTCTCATTCCCGAAAGTGCTCTCTGTTATGAGGTCTCCGTCCACGCTTTATGGATTCAACTTTGTACAGTTCACACGAGCACCCACGACATGATTATTCATACAACATTATACAGAACTAACTATTCGAATCTCAACATGTCTTCTTGCCGAAGGGTTTTTTATCAACTTTGACTTCCTTCTTCTTCGAATTCTTTATACAACTACTCATCTTCTAGTTGCCCTTCTAGTTGCCTCACACAAGCAAAATTTCTTTTGAAATGAATAAACTCTCGAATTGACTAGTCAAAATTTCATCAATTGCTCCTAGAGAGAAGTCAGTCGACGTGTTAGACTTATTTGGCAGATATAAAGAGAGAGGCACCGAAAATGAATTGGGTTTAACACAACAACGCGTAGATGAGTTGTGTGTGTCAACGATGCTGAAGATGATGAAAAGAGCAGAGGAGCATGAGTGATTTCTGGCGGTCGCGGCGGATGAGCATGAAGAAGGCTTACGAGCTGTATGGCGATGCGGCTAAAAATTATACGATGATTACTGTAGATTTGGAGCTTTACACCGTTTAATACGTACATACAGACTTGTTTTAGAATATTTTGTATTTGAAGCTAATAATACAAATCGCCCGTGTGCCGATTTGTCGGAAATTATTCCGGCAACTTGAGGGCCGGTTTGCCGATTTGCCGTTAATTTTCAATTCCGGCAACTTACCCGGTTGCCGCTTTGTCGGTTTACAATTTTGGTCGCTCTCAAACTGCCGGTTTGCCGATTTGCCGGAAATTTTCTTCCGGCATTGTGCCGGTTTTCCGATTTGCCGGAAATTTTCAATTCCGGCAATTTTCCGGTTTGCCGGTTTTCCGTTTGCCGGATAATAAAGTTTAGAGGGATTTTTTTAGAAGGAAACTCTCTGTGACTTTTTGAAACTGTTGCCCGTTTTCTTTTGCGATTTTTTTTCATAGATTTTGCAAGAATGCGTGCAGCTTTGCCAGTTTAGACGTAATTGAATTTCTGAAATTTCAAAAAAAAAAGTGAGCAAAATCATAAATTTTTGACATTCATTTTTTCCGGTAATTTGGCGATTTGCCGGAAAAAATTCATTTACCGCCAACTCCGAATGGTACGTCTAACCGCAAAAATTTAGGCTTTTGCTCTGGAGCCTTTTCTCTGGCGTTCTTTCAAGCTATCGTAATGTGACCACACACCTTTCTATAAATTTCAGTATTTACGCCAACCGAGAAGATCACACTAGTTTAAGGTTATAGTGCAGCTGCTCAATGGATCAGGTCTCTTACCGGGAAAATATTAACAGGCCGAAGTGACTGTGAAGCTTCGTGAAAATTTTCTGCCGTAAATTGTCAATTTTCTGCCGCACTTGGTCAATTATCTCATAAAGGTCACTTAAGTTAGCCAAACCGTGAGACAAAACTGCCCCTTATTCCTCATGCCGTCGGAAATCTAGAGCAACCCTGTATTCGAGGTCCCAATCTTTCTTCCCCCGTCTATCTAACTTTTCCTAACTACATATAACGGAGGACCATAATAATCCTAAATTTGTCCTTAGTTTTCTCCCTCCTCACCGTCTTCTAGTTTCATCCATGTCTCGCCTCATTTCACCCGATTGACGATCATCTCGGCTCCACACTTTGACACCATAGCGCGAATGAAAAAAAAGAGTCAGGCAAAAGGGGAAAAAATGCCGTTTTATTAGGAGTCAAATAGACACCAATACACACACACTCAATTTTAATGGATTAAGACGGGGCACGATTTGACACCATCGACACCAATTTGGATGGGGGCAAATAGATACATACACAAAAGGAGTTGTACCACTAGTTTTGGATCTAGAAACATCATTCTAACATCTTTTCATTTATGATTTGATTTATGCAAATGTCCTTGATTCGTGACTTCTTGTATAGTAGTTTGGATATTGTAGTATAATCATGGTAGTTGCTGAAGACTAAGCTCTTTAGCAGATTTAAGGTATGACCGTAGACAGTTCGGGATCCCGGCTTGTTATTGTGTCAGGTCCGGCCCAGGTTGTCTAATAAATACAGGTCTGCTCCAGGACGATAGCATCACTAGAATAACGGTCGTTCCGTGACTTTGTAGTTTGAGCTTTGGTCTTTGGTCTTTGAACTCTGTAGTTTTTGGTCTCATCACACAAGAGAGGTCACATAGGCCCGGCCCTTTGTGACGTCACAAATTGGCGGGAAAGTCAAATTTTGAGAAAATCGATTTTGGCGGGAATTATATAATTTAGATTTTTTGAAAACATTTTGGCGGGAATTCAAAATTTATCAAAAACATTTTGGCGGTAATTCAAAATTTAATTAGACACTGTTCTCGGTTCGGCCCAGATATAATCATCCAACAAGTCTTTCTCAAGACCACTCTTCAACACATCAGTTCTACTGTTACCAGCAAGACTGCCGCTCCACACCCTGTATAAGGGCCCTAAGGCTCGACTGAGTTTGATGTAAATCTTGCCAAGCCTGTATCATACCTACCTAGGCCCATCACAGGCGCATCTCTCACAGATCTTCCACAGGTGTTTCTAAGTTGCAACAGATCTGCACCAGGTCTGTTTTTAGCCAGGTTTTGCCTGGGTGCAGCCCAGTAGTCTACCTCTAAACTATCAAGCAGATCCTGACACCAGTTCCTAGGTCTCACATTCATCTAGGCGGATAGTCTACCTAGCTAACGCTTCAACCTCCACTGTTTTAAAGTCTTACCCTTTCTCAAACTTCAACTCATTAGTACATACATATGTTATTAGTAAATTCGCGACTCACTAATAACAATAATTCAAAGCCTCTTTCCTGGCAATGCTTCCGGTACTGAACACGGAGAGAGCGCGAGGTGGCAGGTATCCGGTAATTTGTTAACTCGAGCGCCGCGCACCCTGGCTTTAACCCAGAGCAAACAGCCCCGATGATCGCTCATGCACGAGTCTCTTACTCACGAGGTGGTGGTGAGAGGTAGGTTGGAGAAAGCGGTTCTAGCTTCACAAATTTCAATTTCAATTTACTCTCGCTCCGTTTGACTCGGGTCCCCCCCCCGCCCTCAATTTTTCGCCCCAAATTGCTCCTTTAATGGAAAGTGTTTGAGTGTGTGAAAAAGAGAGAGAGAGAGACACCTTCGGGTCACGCCAATTGCACTAATATGTGCTCTCCCATTCGCATCCTAGAGCTAAGAGGTTGAATAATTTTCGAACTAATTCGAGGAATGTCAGGTTTTTAGTTGGTCCTAACTCTTTGGCCTAGAAATTTAGAGTTCTAGTGGGGTCGTCCATCTAGATGCGGTGGTCCGAGAATCCTAGGCTTTAGTTGCCCAGGCCATCAGGCCTAGATTCTGAAATGTTGTGATGCTATTTTCCAACTTTGACCCAAAAGCCCTCTAATTTGTAGGCCATGAATCTAGGAACCTATAGGTAAGGCCTGATCCTTTGCTTACTTGCCAATAACTAGAAATCAATGCCCTAGAAGCTCGCAAAACTTTCCTAATAATTTCTAGGCCACCAATTTTTTAAAGATAGCAAGTCATCAACCAAAAATTCACGGCTCAGAAATGAAATTCGCTTTTAAGCGCACCTCTGACTTCATAGCAGTGGCCTAGAACGCCAACCGTCAGTATGTAAAAATGAGCTTTTTGGGCCTCGAACAGAACCGAACGGGACATGGAAGCCTAACATTTTTAGGCCACTGACTTTAAAGCAATTGCCTAGCACCCCGTTTTTCTGTTAGACAGCCTAGACTATCATCTAGAAATCATTGGCCTAGAATCCTAAAAATAATTCGGCCACCAGAATTTGAATGGCCTAGAAATCTAGTTGAATTCTAGGCCACCATTGACAAAGGATTGGCCTAGACTCCCTAAGAATGTGATTTTTAAGCTACTAACTATACCCTAGACCATTGTTTAAAATTGAATGGCCTAGAAACTAGAATTTTTGATTTTTAGGCCACTACCTGTTGTGAGCGGCCTAGACTATTATCTAGACCCCAATGGCCTAGTTTCCCCGTCCGCTGAAAATGTGTTTTTTCGGCCTGAAATAGGCCTAACATATTACAGTCCACCAACTCTTTTAAGATGACCAGTACTATAAGTTTAATCCTAGCTTGCCACTATAAATAATTGGCCTAGAAGCTCCTAGGCCACCATCTAATAATCGATGGCCTAGAAACCTCCCATTTTTTGTATCATAGGTGTCACCAACAACCACTGATGCCCAAGACCCGGGCTTCTCATTTCATAATGAGCAGCAATGCAAATGAGCTACCGTACCACTTCTACACACTGCCACCCTCCTTGATCCACACCCATTTCCCCTGATTTCTCGTCAATTTAAGCGGCGGCGGTTCACCACGGGATAAATTTGTGAGAGGTGAGCTGCTCACAATAATTGTTGTGAATAGGCGGCAGTGGTAGTGGTGTTAATTGTGAGTTCCCAAAGTTCACACAAAAATTTTTCGCCGCAATTGTTATCCAACCAACATAATAATAATAATAATAATAAATGAGTGTGCATAAATGTGCCCTTTTTCGCTCCACACCCGTCCTGATGGGGACGACGCTTCGTTGAATAGTTGGAATAATAATAATAAATTTGGTTGGAAAAATTTGGGCGCCCCCCTCCTAACACCCTCACACACACGAAATTTCATTTCGCGCGCGCTTCGAAAACATATTGATGACATGTTCTTCGCGAGACAAGTTATGAAAATTTGTGGCAATCGATGTGGTCCCCGCCGGCTTCAAATTTAGAGCAGAAAATTTGTGCTCTAAAGGTGCCTTTTAAATCAAGAAGGGTTACACATAAGAAAGTTTGTCGGAATCCATATTTTTGTAAGGTCCTTGGACCTGAACCCCCGGTCTTCAAATTGTTAGGCATTCTAGGTCTTCCATGGGAGACAGGCGTTTAGGCGTGGGCCTCGGCCTCTCGCCTCATTTCTACACTATGGCGAGAAGACAAAGGGCGGGTGCTCGACACTTTGTGCCAGATCATTTCGGCGTGATCTACCTTGATCTACAAAAATGCGGGAGAAGAGAAGCAGAGTTCTCAACTGATTTTACATGGTAACAGCGTGCTGACGTCAAATTTTTTTTGGACGAAAAACTTCCGCATTTTTAGTAGATCAAAAACCGTAATAGGACAGCAGGGCGTTCCACTAGAATAATTCCACTTGTTCATAATAAACGTATATTTGTCAAAATCTTGAGAATTTCCATAACTTCAACGAAAAGCACTGATAAAAGTGGTTCTTTCGCCGCGGCCGACACTTATCGGGTTCCGCGCCTATAAAGGAGACGCGGCGCGCGGCGCGAGGCAGGCGTTTTGGCGCCTGCCCGGATGCCCTACACCAAACAGCAAACATTTCTAGCTCCGTTTTTCGGACTCTACGCCTTAGTCTTTTTGTCACAACTTCGCTACACTGTGTTATTCTTCCTTCTACGACTTTAAAGGCGTGCGGAATGCGACTCACGTGATGTCAGGGAGTCTCATTGCGGTTTGATCTCAAAAAATGCGGGAAACTTTCCACCAGGAAATTGTGACGTCAGCACACTCTTGCGAGATCAGCGTTGAAAAGTCTGCGTCTCTTCCCCCGCATTTTTCGAATATCAAACCAAAATGGGACATTCTGACACCACGTACTGGTGACTTTGGATCAATGTAGATCGTTTTATAGGCCATCCATTGTTTTTAGCTCGTGGCCATTTTAAATGAATTTCCAAAATTTCCAAACACCTATTTTTTTGTCAATTCACAAGTCCCCCACGGACCCCCTCCATTGTTCCCCCGTTCACAACCTCCCTCGGTAACCACCCATTTAGCGGGAAAAAATTAGCGAATCAGTGACTCATAATCAAGTAAACCGGTCAATGCTCTACGAGCAAGAGGGGGGGAAAGGGGGTGGCTAATCGAATTATACGGGGGAATGGGATCCCTCCGCGGACACCTCGCTGCCAATTAACAAGTCAACTACTTGGGGGGGGGGGGCGGCCTCCTCACAACAATTGTATTATATTTCTTGTTATTATGATTATTAATTATTATTCTTATTAGAAATTAGTTTATGAGTATATAATATCAACTATAAAGATGACAGTTAATAATAATTGAAGTCTTCCAATAGGTGGCCATTAGAGAGAGGGGTCTGTAGTAATAGAAGAGACAAGGCGGGGGAGAGGGGCCAAATAATTAATCTGGGCCCCGTGGGCTCGTAAAATTCCGATAAAGTTGCTTGTTTGTAATTAGCTAATTCACTGAATCTTTTTTTTTTGTTGGGGTCTTACTATGTGTTTGAAACTTCCTGTTATAACATGTTTCAAAATAGACTATCTTACCTCAATGGGGACTTACAGAACCCTGGTGTTGAGATTGCTAGTCTAAAGGGTTAACCAACCATGGACCAAAAATTGCAATTTTTGATTTTTCTTACTTGAGGTTCTATTTTTTTGAATACAACGATCAGTAAGGATCTATTTCGATTTAGCAAAAAAACCTAATCAAATTTTGTAAAAATTTTCTAAAAAGTTATGAACATTCCACGTTCACACATTTCTTGCTTCCCTCATAACTTGAAAGTAAATGGAAGAGTTTTCGGCGAACAAGAGCCATGCGTTGCGTGTCGCGTCGCGGCTCGATTTTAGTTGTTATGCTCCGTGTGGGGTCCACGACTTCCCCCGTTGTCCGCCAGACGATTGTAAATGGAGCCCGAAAAATTCAATGAGGAATACGGGCCAGAACCCCGTGCACTTTTTTGTTTCTAAAACTGAAATAATTTTCAATTTTGAAATTTTCCTTGGTTTTACAATATACAAAAGCTTAAGTTCGCAAAAATTTTTGACACTGGTGGGGGCGTCGAACCCCTGAGGGGCATCCCTGTTAGCCACTGGGACCCGCCAAATTGCTAAAACTTCAAAACAAAAATTTTAGACCTTTTTTAAGGTTGCTTTCCTAATTACCGACGTCCGACTTTTCTAAAATTCCTATTCAAAGTCTTCGTAAAACTAAAGACTGGGGGGCTCGAAGCCCGGTCATCATATGAGTAGTCATCCCTGTCAGCTGGACCAATACACCACTTGCCCCCGATAGACGTGTTTCTGGTCTGTTTTACGGAGCGTGGCCTAAAAAAATCAGCCACCAATTCGAAAAGTCCATAGACCAATGTCAGTTAATATAGAAAGTCGTCTTTCAACCACAAATTCGAGCCAACCAACTAATATATAACCTATTTTCGCCGTGTTGTTCCTGTGTGTGTGTGTGCCCCTAGTTAGGCCTACCCCCCTTATGCGCTTTACTTGCTTTACAATTTCGATTGGCCCCCACACAGTTACGATCATTTTGTGTCGGGTTAATTCGACATATCGTTTAAACGGGTTACCTCTCTCGGGGCCCCCTATTCTCCTACTTCTTATTTGCTCAATATTTGCGCGTCGAAATTTCTTCTGCGATGCCCCAAATAATCAGATTCACCAATGTATAAAATAGTGCCACGCCTCACTTTTTCCACACCCATCATCTCAACTTTCCTCTTCTCAAATGCCTAATCAGCCAGTTATAACGAGGCTGCTCTTCGTGTGGCGCCCCGCACATTTTATTGCTCCTCTCACGCTTCATTCTCACTTTTTCTGGGGATCCTTTTTTTTGCAGACCTAAAAATTTGAGCTCAGCCATATTTTTGTAAATATAATCAAAAAAAAATAGACATTAGTCAAAAAAGTTTAAGCCTAAAAAAATTTTTTAGATAAAAAACGTTTTTAACTTTTTACAGTTTTTCAGTGAAATATTTTCAAATTTTTATAAAAAAATGTTTTAAGCTTATCTAAGCCTATGAGCCTAAGCCTAATAACCCTAAATATAGTGTGGGAGCTCACGCTCCCCCACTTAAGCCAAGCCTAAACGCCTAAGCCAAAGCCTAGGCCTAAGCCTGGCCCGAAGCTGAGACCTAAGCTTAAGCCTAAGCCATAAGACTGAGTTCAAGCCTAAGCCTAAGACTAAGCCTGAGTCTCAGCCTAATCCTAAGCCTCGTAAGCCATTTTTAAAAAAAATCTTCATTTTTTTGCAATTACTATTTTTTCTGAAAATCAAAAATATCGAATTTTTAGAGTTGCTATAAAATTTAAAATAATATTCAAAAAATAATCCGAAAAAATTAAATTTTTTTTCTCAAAACGGAGATCATACAGAATCAGCTTTAAAAAATTCAAACCAACCTATTTTTCGTTTCAAAAATGTTCAGAAAATTTGGTAAAAGTTTTGTAGAAAGTTTTCATAAACTAGCTGTTGAATAGGGTTTTAAGTAGGCGTTAAAACGCTTGCCTGCCTGACCTTCAGGCGACTTTCGCCTGACTGCTTGACTTTCAGACGTTCTCTGCTGCCTGACTTTAAGGCGACCTCCGCCTGCCACTCGCCTCAAGGGTATCCGAACCTTTTCTCTTAAAATGTTTGATAGTTCTTCATCAAATTGCTAAAAATACGGAAATTCCAAAATTTTGTAAGTACATGAATGCAGGCATCTGCTGTGGCCACCCATAGGCCTCCGACTTTCGTTCTACAATTGTCGTTGCCGTTTCCTTCATTTTCATACCCCAAAGTTATGATTTTTCTTACACCCCTTGCGCTGCTGCTGCTTCCGCTCGTGATGTTATGAACCAGTAGTCAGAACCGCAGGTCGAGAATCCCCACAATGATCACCCAATAAACGGGAAACATTAGCAAAAACGTATGCCCCCGTTTTTTTTTTCTGAGAAGTGTCGGCATCCCCCTAACATATGCGGGGAACATAGTTCGCTAAGTTTTGTGTGTTCCTCCAGCTCCTCCATATGGTTACCGTAGTCCACTGGTGTGTAATTGTTGTTGTAACTATCCCCCGAATACCTCTCCTCACATTCATTCACAACACAGGTGTCAACTCAACTCTCAGTGCTCATTTGAAGTTTATGAAGGTTAGCTTCCGGGGATGGCTCTCCTGGGCTCCCCCACGAAAATCAGTTAATTAAGCAATGTGGTGGTGGAGGGGCGAGCTGCTCGCTTACCCCCCCGCCCCGATTCTCTCTCTTTCATTTGTGACTTATTAGATTTTAAATCACGTCTCAAACTTTCCACTTTAACTTTCGCGTTTTTTAAATTTTTTTTTCACTTTTTCCTCACAAATTCATCCAAATAAGTTTCCAGAGTTGTCCCGCCCCATACATTTGCTAAATGGTAGAATGGGATGTGACACCTTTGACAATGTATTTGACAACAACAAACCGCCGACAAGTTCAGAGTGTACGGCGAGTATGAGTTTGGCCGGGGGAAGGCCGATAAGTTGGCCAAGACTTCTTTTTTTTTAATTTTCAAAGGTCGTTACCTTCGCGACGTTGTGCCAGGTTGTCCCATTGCTTTTTGATCTACAGAAAATGCGGGATATTTTCCCTAAAAAATGACATAAGCAAGTTTTTAAATCTTTTCTCCCGCATTTTTTTGATCTTCGTGTACCAGATCATACTCTGACACCACGTGTACCTTGAACCTCCTGGCTCCGTTTCTGAAGAGTCGTCGCTAGTGCGCATTTCTGCATTCTCAGTGGTATTTAATTTGTACAGTACCGCCAGAATCATGTAACGCGCCGCTTGTAGTCTAGTCGTTACTTCAGCTCTAAACGATAGGTCCGGGGTTCGATTCCTTGCAAGTATCCATGGAATTCCTTTCTCAAGATGGAGGTACATATGTGCTTAAAATGTGCACTAGAGATCGCGAAACTTAAACCATGGTCCGACATGTACAGGGTTCCGCGCGCACGCCGACTCGGGCCTCCAAAAAACGCCTGCGGTTCCAGCGGCGACCTCCGCCTAACTCGCGGCGCTATGCCTTCTGTATACGGCCTTCTGTCTTCCCTCATAAATTGAAATGGAAGAGTTTTTGCCGAACTAGGCCATCTTGGGCTCGGTATCTGGTCTCGATTTTAGTTGTAAAAACTAAATTATTTGTCCGTGTGGAGTGCACGACTTGCCCACGCGTTGACCGGCGGGCGATTGCCAATGGAGCGCGAAAAATTCCATAAGGAAGAACCCGTGTATAGTGCCGCGCGGCCCGAAAAGTGTCAGCCGCGGCGGAAACATTCCATAGGAAAACTAAAGTTCTCACTTTCAGAAACATACCAATGATACCAGATTCTGCGGAGATAATGCGACTTGTTGCGGATCCTTCGACGTCTCAGATGTTTGGTAGGTCATAGATCAAATTTTTTCCGCAATTTCCCGAAGATTTTCAACGAAAACACAAAATGTCGGACGAGATCTCCCCGCGTCAGGCTTCGACGAGGCGAGCCTCTCCTCCTCGTTTCCGTGCGATCCGACGCTCGGCGCGTTCGCCGACATTTCCCAATTCTGAAACATCACTCCGAAATTCGTCGAACACGCTGAAATGTCCAAAGTGTGGCCCGACAAGTACCAGGATACCCTCGAAAATGATTTGAAGGAGAAGCACAACGATGTGGATGTCAAGTGCATGTTTTGTGCCGAGAACCGTCCCCACCCGAAGCTTGCTCGCGGTGCGCGTACTCGTGCGGTTATAAGTCACCATAATCCTTCGATGCGAGTTGTGTCGGTACAGTACGACGAGAAAGGGCGAGTATTCATATGCAAATAAGCATCTTCATGGACACCAGTTCAAGAGCTCCCGAATTTGTAGTAGTAGGTGGGGCGGCGAAGGGTACTGTAGTTTTCGTGGTCGGCCCCAAGAATTTGTTTCACAAGAATTTAACTGTAGAACTCGAACTTTTCGATTCTAAGGTCTACGCAAAAACACATACGCCAACTTTTTTGAACCCTAAAAAATGATACTCATTAGAGTTCTCAGTGAGCAAAATTCGATTTTACAGTTTTTAATTTGACGGTACTGTGGGTCTTACACTCAAAGGGTTCTATAGTTCTCGTGGTGGGACCTTGTCAAATGGACGTGATTATATTTGGTTTAAAGCCCCTAGAATTCTGATTTTTTTAATACATTGGTTTTATTCTGAAAAGACTGAGAAAATTGAGTTTAGTCGAAATCAATAAAAATCGCGTCGAGACCCAAATTTCCCGGGTCTCGGCACGAAAATGGGGGAGAGGGTACTGTAGTTTTCTAGTCTTCTCTCAAATATCGAAATGGTAAAGTTTTTGCCGAACTAGGGGCCATATCTGGGATAGATTTACGGAGTGCCGCGTTGCACTGTGTAATGCGCTTGGGCTCAATTTTTGTTTTAAAACATGAGGAAGACCACAATCTGTTTTCGTGGTGGGACCCAAATGGGTCATGATTATACTTATTTGAAAGGCCTTAAGAATTCATTTAAGATTTTTATTATTTTAATTTAAAAATATCCTTAATTTTCCAATTCGCTAGGAGACAACTTCGCGTGTGGTGCTCCAGTTAGCCTAAGTAGTCCAAACGAAGAGCCCGACGGATTCCTGGTCTGCTATCTGCGGTATCTTCACCTCTATCGCCGAAATGATGGCACGTGGAACAAGACCGTCCCAAGACGTTCCACGGAGACGTTACCGTCCTAAACGGGCCGGAAGTGCCACTTGTGCCCGTAAAATACCACATTGAAAGCCAATTTTCAACTACACACAAGGACGGGGGATAAGCTTCTGCAAGAAGGTTCAAATTGTGAGTTTTGTATTCCCCCCTCATCATCTTCTTATTTTTAGGCTTGTGTCGCCCTTTTCCCATTTTTGTGAGTGTCTGTGTGTGTATGCGCACCGATTTGTATACACATAAATTCATGATTTAATAGCGTAGTAATATTTGCTTTGCCACTAACAGTTTTCGTTATTTTAAAGCCTTTTTTCTACTATTTTTGAAAAAAAAATTTAAAAATTTGAACCTTAATATTTCCCTAAAAGCTCAAAACTGTAGTGATTTAAATTTTGAATTCAGTGCTGAGACCTTTTACCGTAGTATAATCATTACTAGGTTTTGGTTCTGACGAAAGTGTTCGTTTTGGCGGAGCCCAAGCAAGGCGTAATTGATTATAGGGTCTTTGCACGCAAAAAATTTAAGGTCCGGTAGGCTTGGAGTTTTTCTTGAATTATATTAGTTTCATAAATTTTCAATTTTTTTGAGTTAATTTTACTCTCCCTTCCCGCGGTCGTGTTGTCTGATCCTAAACCAAGCTCTAGGCCTAAGCCGAAGCCTAGGCCTAAGCCTGAAATAAAGTTTAAGCCAAAGCCTGAGCCTAAGCCTATGTAACCCTAAGCCTCAGCCTCACCCTAAGCCTAACCATAAGGCTAAGCCTGAGCCTAAGCCTGAGCCTAAGCTTTAGTCTAAGCGTAAGCCTAGGCCTAACCCTGACCCTAAGCTGGGTAAGCCTAAGCCTTACCGCCTAACCCTAAGCCTGAAGGGCCTAAGCCGCCTGCAAGCCTAAAGTCTTCGTGAGACGCAATTATACTCAATTGAAAATGAGCTCACTATGAGCTGACTTCAAATTTCTCAATCAAAATGTGAAATACTTTGATTTTACGGGCGGTGGCTTTACTGGACCCACCGAACTTAATAAACTCTGAAATTTTTTTTTCATTGAATCCGGTTTCTACTCTCTCCGGCTATTTGTAGGCTGTCTTTCACTTCTTTGTTCTCGTCTGGTTGTTCCCAATTTCTCGTTCAACCCTTTACTCATTCGCCCTCTCATTTTCCCAAATCCTATTAGTTATGGACCTATCGGGGGTGACGGTGACGATTCTCGCCATTAAGACCCCCCCCCTCTCAGAACTGGGCCGATTGAGATGGAACAAAACAAAACTGTCAATTTGAATAAATTTGCAATTTGACGCGGGCGACGCGGTTACCGAGAAGGATATAAACTGGGGAACTCTACTTAGCCCGTAAGGTGCTGCTACTATTTTATCACATCTCAATTTTTACGGAATCCCGTAAGGCGTTGTCTGCTGCTTCTCTGTTTTTGCATGCTTTTACAAGTTCGGCCCGTCCGATGTACTCGGCTCTTTGTTTTGCAAAACAATTTAAAATTTGAGCCAGGTGTCTGCTGCTCCGGCTAGATTTCCAATATTTAAATTTTGCGCAATCCTGTAAGATGTGGGGTGCTTGTCAGTTTTTACAAAGTTTTTTCTCTAAGGCCCGCGCAGTGTCGGCTGCCACCTCGTATGTTTCATCAAGCTTGATCGATTCGAGCCCGTTAGCTCAGGGCCTGCGTCTTTTTTTTTCTCAAAATTCCAGCCCGTATCTTTTCGGTTGCTAAATAAAGACAGAAATTATTACGAAATTTTAACGCTTGAAGTGTCGGCTGCAAATTACACTCATTAGATTCCCTGTCTCTCCCTCTCCCTCTCTCTTCATTGGGGAGTGCTTCTCCCGAGAGAAAATGACTAAAACTGTCAATTCGAATATGCACACAGCGGGAGATGTTTTTCTGTAACTCCAGACTCCACCGTCTTCTTCGAGTGTTCTACTGCCTATTAAGCGATGATTAACTAGTCGTTCCCTCCCCCTCTCCACATACCAATAAACCTGCCAAAAGTTATGTCGAGTATGCTTTGCTCGCCATCGTGCCGGAGGCTATTTTTTCTAGACTATGATGTTTTTTGGAAAAACATTTTTCTATGGAACGATGCAAGCTAGTGCCGTGTTGCCGAGTCTTCAATTTAGGCGTATCAATTATGAGATTTCAATTTTAGTCCCTTGTATATATTATTTTTTTTGAACATTAAAATTTGATAAACTGTAGATACCCCCTAACTATTTATTTTTGTGCCAAATTATACTATACAAATTGACTTGACTCTAGATGCACCCTGACTTTTTAACCGCACTTTCGAAGATCTCATATTGTCGCCTAAAATTATTCTCAAATATTTAAATTTAAACTTTAATCCTTTATTTTTTTTCATTCCTCGGAAAAAACCCCGTTAACAGAATTCCCAATCTGGCCTCCAGTTGGCGCTTTTGTCGATGCACCATGTTCAATATTTTTTCAAAATTTGGCTCATTGACCTGAAATTTTGTCATTTTTTTATGTTGCAGGGTTTATTTTGCGATTTTTGCGATGACAACCACATTATGTGGATTAAAAAAGTTTGGAATCTCGTTTTCCCGTTTGGCTTCCATATTGCTATGTAGTTGATGCACCATGTCCAGCTTTCTGTTGAAATTTTACTTTTTACATTTTTTGCTCGCTTTTTTAAAATTTAGTTTGACCTTAAAATTTTGTCAGTTTGACAGTAAAAATTTGTCAGTTTGACCTTAAAATTTTGTCAGACATATAATTTTTTTGTGTTTTTTGTTTAAAAAATTGAAGGTTTTTCGCGATATTTAACATATTGCATGGAATCTTTTGATCGTCTCTAATTCGTGTAGCAAGTCGATGCACCATGTCCAATTTTTTAAAAGCCATTTTTACTTTTTTTAAATTGTTTGCCCAGTGGCTCTTGACCTTAAAATTTTGTCCATTTTCCCTTAAAATCTTGTGTTTTACCTTAAAATTTTGTAAGTTTGTTAAAATGTTTGTTTTACCACAATTAAAATTTCCGAATAAACTTTTCTGTTTTTTGGGTTTAAAAATTGATTTTTTTTGCGTAACACATCAAATGGCAAAAAATCATGCACCATACCGGGTGTAACTTTATCCGAAAACAGTTTTCCCTAAAAGTTTGTCAGAATTATACATTCTAAGTTCAAAACCGTACGGAAAAATTAGAACCCATGTCGACGCACCATAAGCTTTGGCCCACTGAGCTTCGTTGCTGGTCCTGCATATCTCTTACCCCCTCTCGCCGCTCTCATAACATTGACCAATTAATTGGGCGGAGCGCCGTTTGGAAATCGATTGGCTGACGGGCCCGCCCCGCCCCCCGTCCCGCAAATTTTCGAAGGAGCTTTGGACTGGACAGACACACACACAAATTCACAAATACACGCCAATTTGTCGATTTTTCTTGAAAATTTCTTCATTATTGTATATTTTTTTGTGTCGTCCTCTTGTCATCCGCCATCCTCGGCGTCTTCTTTCGTTTGATTATTTCATACACCTACCACGTAATTCGCCTATTATCCGCCTCGTTACCTTCATCTTTCGGTCGACGTTGACGTGACATCGGCGCTCCCGAAATGAGAGGAAATAGGGGGGGGGGGGGGGGCGGACGACGGGCCCACTACGACAGATCACGATCATTTTCGTTCTATCATCTTATCCGGCAAACCGTCGTCCCCCTCCATTTTTCAACTTATGTAACCAAAACTTTTCTTATCTTGGGATTTGGTCCCCTTTTATAGCAAATGCACTGAATTGACAACATATTAGTTTCTCACTTTTTCGAAGTTTCACAATTTTTAGTTAGTCCGTTTTTTCAGTCTGGCCGAGTTTTCAATTTTCCCCGGCCAGGGAATCTAGTAGTATTCACATAATTTTTCTTATTTTTGGTTTTCTAGGCGACCACTCCCTATTCTAAGCCCGGCAAACTTCTAGGTCCCCCATTTACACCTGACTTCCTACCTATCTGAAATGCCTACTTGCCTTCCACCTGACAAAGATGCCTACCTACCTAAAACCTTCCTACCGAACTATTGACTCTTACCTACATAAGACTTGCCGATCTGAAATACATGCCTACTAAGACATGATACCTAGCCTACCTATCTAAGCTACCTACTTACAGATAATGTACCGACACAAGACTTGCCTACCCACGCACGGCATCATTTTTACCTACCTACCTGTACTTAAGATCTAAGACCTAGATCTTAGTACATAAGAATTTTCATCTTAGATACCTACTCAAGGTCCTGCCAAAGATGCATGCTTACCTATGACCTACTTACTTAAGATACCTGCTGGCCCAAACCCTACTACCTACATGCGCTAGCTCCCCCACCTACCTAAGATACTTACTTACCTATACCCGATTTACCTACACAAGACTTGCCTACCTAGGGCCGCAAGGCTTGATTTTCTTATTGTTAACCTACCTACCTAACTATAAGTACGATTTAAGACCTAGACGTTATTGCAAGACAGAGTTTCTGTCTTAAATACGTACTCAAGATCCCCCACGATACCTAGAAGCACTTCCGACCTAAGATGCCTCCTAAGCCCTGTCTCCCTAAGACCTAAGTGTCCTATAAGAACTTCCTAACTAAAAACACCTACCTAAAATAAGCCTTACGCCAAGCTCAAAAATTTAGAGCATCTGCATGAGATAAGGCTGAAAAATATCAACGAATAATGGAGAGCGATTATGTTCCTGCCCTCTTACTAGAAAGTTCGGAAGTAGTCGCCGCAAAACGCCATTACTATTGCTCATCGAGCCATTTCCGGTACTCAGTACTTTCTCATCCCCCACTACTTTTTTCGCACTCTCTTCTCGATTTGATTTGCATTCTTTTTGCCCTCGTTTCGAGCTGAGCCCGGTTGATTTCCCGCACTTTCTCAATTCTTTCCTCTTAAGCCACCGCACTTGAACAGGAGCAGTTCACACATGCAAACTTGGACTTAATCATATTAAGACCCCCCCCCCCCACCCCTCTTAATTTCCTAATCCCCTCCCCCTCCTCCTCATCATGACCAAAAGACAATTGTCTTCAGGCGAACCATCTTCGTGAGAGAACCCTCACACGGCAATCTACCGTCTGTCGAGCACAACGTGCGTTCAAGTGTTGTGTCGACAGTGTCACGAGCTGATGGGCTTCCCGTGGCGAATCGCCAAATCCGCGAGCATCGACACTTTCCTGCTTGCCGCCAAGCCAACGCTTGTGGCGATGTTGTGTAGGCTTGCTGGATTTCGATTCGGTTCTTCTTGCAGCTGGTGAGTTAGTTATTTTTAGGAAGAAATTATATCTGTGTAAGTCCCCCAAATATAAGCCATGTCCCTCTTAATAATGAAGCTTCTGACTTAATTTACTATAGATTTTGAATTTCGTCTATCGAAAAATTAGGTTCACCATGATTTGTCGATTTTCGATGCACTATGATTTGTTGCTAGGATAGAAAACAAGAAAATTCGTGGCCTACGAAAGTTTTTTAATTATTTCTTTTTGTCGGCCAAGATGAAAAAGTCACCTTTTGTGTATGGATGCAGCATGACCCTTTTCAGTGGATTTTGGCCCAAAAATCGTCAAAAGTTTAAAAATCAAACTCTAAATTACCTTTTTTTTTCAAATTTTCTTAACAAATTGGAGCATTTTACAGAAAGCCGATGCACCGTGATTTTAGTTAGAATTGAAAAAACATTCTCGGGCAAGTTGCAAAACTCACATTTAATGTATATTCGATGCACCATGACCATTTTCGAAATTTTGCGGTACCTATTCAAATAGTGCACATAGGCGTACAAACATTGGTGGTGGCCTCGTTTCCTCATGCTTTCGGCCACGAAAAAAAAATATACAGTTTTTGGGATCGGGGAGATGCACCATGATTGTTTTTCAGTGAAAGCCTGTTTTTGCTTAGCAGTCTCAAAGGTATCCGGCTTAATGTTCCCACGCTAAAACGTAATCCAAACATTTAAATTTTAGCGTCAAACTTTTAGGCCCGGCGTACACTAAAAATTGTAAACTTTCAATATATCAAAAATATTCTGACCTATAGCAAAAATTAAACCTAAAAGCAATCAGATATTTTTTCAAAAAAGCTTCTGTGTGATGTCCAATACATGGGTGTGCAGCTAATCTTAAAGTGCTGGCCGTGCTTAACATACTCCGAAAAAGAGTGATATTATTTTATGCTTTTTGGAGCACCAAAACTACTGAAGTTCGTGCTTAGCAAACAAATTCGGCATATTTGCCCCCCTGGTCCACTAGTTAAGCAAAACCCACCGCTGAAAACTAATCAATTGGTGTTTGAAACGGGGAGTGCTAGTACTAGAAGTATTTGGCTGTTCAAAATCTCTTTATTAAACACTTCTTTGTGTCTATTCTGCCCTTTCCTCCTCCCCGCTCAAAATCACTGTACCTCTAATTACGGTCAACTGCGGGTTGAGTTTAGTGAATGAATTGTGAAATGAATGAATGAATGAATGGATAGGTAGATGTGGGTTCTATGTATGTGGAGAAGTGCGACACATGAGCACAACCAGCCGTCACCGCCACTACCACCAGCAGTAGCAATACCCATCAAATATAAGCCTTGCATTTCATTATTTCATAGTGTCATAGATAGTAGCAGGCCCCGAGGTCCGAAAGGCCTAGACCAGGCAGCCGGCAGGTTATATTCAGTTCATTTTTTGACACCCCCCCCCCCCCCCCCCCCACCTCTACAATTCTTCTTCTCTACACATACATTAATCGCATAGTCAGGCCATTCATGTTTTTCACACAATTTTGTTAATAAAGCCGCTCTGGTGGCCGCCACCTCTCAGTAGTCCTTTTCCATCGTCTCTTTTTCCCTCTCCCTTACGAATAAACAAAAACAGTCATTGATGAACGACGTATCGGAATTGTAGTCTCGCAATTATGGTAGGACATATGTCTTGCCACGAGCCGTCCACTTGGCCCAACGAATCACTTGGTGAGTCTCTTTACAGCTTGAAATTTGTGTTGTTTTGTTGGGAAATATAGTTAATCGTTTTTTTAATTAGTATCTCCAATTAGGCCAAAACTACAATCGTGAAAGAATAGTTTCTGCACATGGTGCATCGCCCTGATCTATCTCACTAAACTTTTTTTGGGCTTCATCAAAAACTTGTTAGCTAATATAGTTTAGCATCACTCTATTGATATGTTCAATTTGAACCGAATATGGTGGATCATTTATTGCAACTGAAACAATTTGGCGCATAAAATTGCAACTATGTAGTTTATGTACATCGATCTTGATTACCGTATTTCCTCTATTGTATTGCACCCGACATAACTTTGAAACGTTATATCTCGGTTCATATTGAAGATATCAATAAATACTATTCCGAAATGAAAGCAAAAGAACTAACAAAGATTTTGTTAGTTGACCATTTTTGAATAGGACAAACGATTAAGATGTAACAAAAGTGGACAATGGGGAGCAATACTAATTGTGTAAATACCTTATATCTCGGTTCGCTTTGGTTTTAACAAAAATTTTAAACTGACAAAATATCATCTTAATGACCATATTGTAGTTAACAATATTTTGATATCTTTAAGAACTAGCGATTTTCGACATGGTGCAACCTCAGTCACCTAGTCTAACTTTGCTGGATTTCTTAGTTTTAGTATTAACCGTTCATTTTAATATACTTTTATAAATAGTGTCCTAACAATTTTTTGATACCTTCAAACGTGTTGAACAGGAGCGGGGATTATAGCATGGAGCTTTGATCCTATCTTGCCTTAATTTTCAAGCTTATTGTTGTAAAAAAAATTTAGACATGGTTCATTGACCTGAACTACCTGATATATCGTACTTATCTTCAATTTTAGCAAGTTTTGGAACCAAAAAAATATTAATAAAATCGATTTATAACATTTTTTCCATTTTCAACCTTCCGACAAAAATTTTCAATTTTGACCTTTTTTTATATGGGAACCCGGCAAAAATCTAAAAACTCCCAAGAACATTCTCCCACGAAAACCTAAATACTTGTAAATCTAGATCAGTCAACATGATTTGCACCTTCTTCCCATGGGATGGCTAAAGAACCCAGTGCGATGATGAATCGGCCTGTGGGCCGCGAGCAGACGCCGCTCTAATCACTTTTGGAGCATTTGTATATATATAGCGAAGAATTTACGTTGGGACCAATGAAACCAATAGAAATCCAAACATATTTTTGTTTTGTAATCTCTTCCCTCGCTGCTATCAGCTCTCTTGCCCCTCCTTAACCAATCAGAGACGCAGGCACACACCGCACCGCCAGTCCGTCATCGTCATCGAGTTCCGCAATTAGTCGTCTATTCTATCCGTTTTTGATTGGAGTTATGGAGCGGAAAGAGAAAGACCGAGAGAGAGAGAGAGAGATTAGCTCTTAGATTCATTCAACTAATCTTGAAATAACACACCCACACACATACAAAATGAATAAGGTATCTTGATTTCTAGAAAATCATGGAAATCAGCAAATTCGCTAGAAATGGAAGGGGAAGCTTGAAATAAGAGCACTACTTGATACCGAGTTGGGTAGTGTTTTAATATTTGAAGAAATATTACAATTTTGCATTCTTTATACTTCTAAAAACAAGTTGCTTGATGCATCATGCCTCTTTAGATAACGTTGTCGTTGTTTTAGGCTTAGGCTTAGGTTTAGGCTTAGACTTAAGCTAGGCATAGGCATAGAGGCTTAGGCTTAGCATAGGCTTAGACTTAGGCTTAAGCTTATTCTTGGGCTTAGGCTTTAGCTTAGGCTTAAGCTTAGGCTTCGGCTTGGGCTTAGGCTTTAGGCTTAGGCTTAAGTTTAGGATATAGGCTTAGGCTTAGGCTTAGACTTCTAGATTTCTCGTAAACCACCAAATTACTGTATATTCTCTATCATAGATACTACTTCGGACCAGCTTATAACTCAAGTCTTTTATCAGAGATGAATCACTGCTTTAATTACAACAGGTTAATAAATACACCATATTTTATTAGTTTAAATTTTTTGATTAAGCTAACGAGAAAAATATGACTAGTCAAAGATTATCGATGCACCATGGTACTACACTTTACTTTGCCGGCTCATAACTCGGTTTATTTTCAGGATATCAAAAAGGTTTGATACAAACCTATTAAGAGAAACATATAATAAAAATATTACTATTTTGTAAGACAATTTTGGTAAAACTAATAAGAATCGAGGTAGATATAGGCCGTTGAAGTAGCATGATGCAGTTGAAAGCCTACGTTTTTAGACTTAAAGCTTGAAAAGGATGTACCGTCACGTATTTCCTCTATTATTGTGCCACCCATTGTTCAACTGTGAAATCTTTTATCTCAGTGACTGTTTGTTCTAATCAGAAATAGTTAACAAAATATTTCTTAGTTCTTTTTCTATCATTTCTTAGTTGACCTTATATTGATACTAAAATAAACCGAGATAAAACGTTTCAAAGTTAAGTAGTCGGGTACAATAATGGACGAAATCATGCGGTATTAAATATTTTGACACGGTTAACTATTTGAGCTAGATTCTCGATATCATTTTAATTTCTGATCCATGGCTCGTTCAATTGTCTTGCCTAGAAAATCTCTAAAAATAACGTCTACGAGAGCGGGTGAAACAATAGGTGGTTAGATGTAAGTTGATGCCCCTGAAGGCATCCGGGATCCCGGTGTCCGCAAAAACAGTACAAATGTAACATGAGATGTACATCCCCCATTTGTGGTCGCTCTAGTCCAAGTTGAAATCGTAAGCATGCAAAGACATTGTTAATATAGCCGTGACGCGACGGTGGGCTCGCTCGATGAATCAAGATCGTTTTGGGAAGAGAGGGACTGAAAATATTAAAAAAAGATTTGCATACCCTCTGTAATTGTTTGAATCATCAGCATCATCATCATCATCAATCATAACATAGAGGAAACTTTTCCTGCTGTGAATGTGTCTCCTTTTTAGTACAGTCAATAAATGTGTCACTTTAAAGGGGGAGAAGCTTTTCACGGATGCTTTGCTCTCGACCTCCTTCCCTCCTCGCTTATAAATTTCCATTTTTCTCTTTAGGCTCAAACATTGATTGATTTACTTATTCTATTGACATTCTGATATTAATTTGATCATCTACTAAAAGGTATATATATATATAACGTATATCAACTCTTGGAGCCCATATCTTTAATGCTCATTAAACTCTGCTCCCAGTTAGGACTCGTCCGGGAGTGTAGTACTGGGTGTGGGATAAGAAAGTTAGGATGTGACGGGTTTCATGTTCATCTCGAGCTGCCAATCTTGCACATTAAGCGATTGGCTCATTGGCACTCTGTTTGTCCTCAGGGCCTGCCGCGGAGCCATCTCCCGTTTGATATCTGCTCCCGGACGTTCCCATGGCCGGAGAGAGGCGCCGCGAAGCACAAGCTCAACCTTTTCTAATGTAATGGGCCGGTGTACAATTAGGGGAAGAAAACAAAGAGGATGAGAGGTTGGGGTGGATGAGGCAGGGAAAAGAGCACCACCACCAACTGATTTGCTGGTTGGAGAGGAGCTCGTTCTGTTTTCTTGTCGTCGTAAAGTAGGAAGAAGAAGAGAATCGCGCTAGTTAGTGGTTAAAAGAATCGAGACCCGAATGTGATAGATGTGTCGCCAATTTAGCCAGTAGGATTTTTGCTGATTTTGCACACTTCTTGCTCTAGACATTACATCCCATCTTACGCTTCATTCATTGTGGTGATTTTAAGATTTGGGGGACCTAGTTCGAGCCTCTACAGTATTACTTTAAATTTCACTATTGTTTGGTTTGAAAAGAGACTATTGCGTCATATCATTTTAAGGCACCTATGTATACAGTTCAAAATTTTGCAACATTCCTGGACCATAGCGATCTTAAAGCGGGAAATATAATCCAGACATTATCTGATAACCCATTTTTTCGAACTCAAAAAATTGAGTAAAGCCAATTGAATCGTATCCCAAGCCTAATGGATTGCAAAGTTGGGCCATTCTGAATAGCTTCGAGTTCCAAATAATCACTGAAGCTAGCCAGAAGCTGAACGCACTGACCTTCCTGCCAAGCCTTTCTTTAGTGTGAATAAGTCTCAGACTAGAAGCACTACCTGATGAGAGAGATTCCTTTCTCTCATAAGTAGTCTATTTCATGATGCAAGAACTTACAGCATTTACATTACCATGTAACATTACTTAAGATCCCATTTCCACTTAAAATGTGGGAAAATCGATACGGTTTTATAAGAAGTGTCTTTTCGCATCTTTATAGCCTAGAGCAAAAAGCCAAATTGTTTGGCAGATCATGTCTCCGACAATATTCTGATCGATTAAGAAACTTTTCCAAATCTGCTCGGTTTTTTAGTCTACGCGCCCAGATAACTGTGTTCTCGGCATGGCCGATTTGCCGATTTGCCGGAAAGGATTTTTACGTACTTTACGACAACTTACTGGCATTTGCCGGAGATTAAGGGAGAATTTTTTTGAGACGGAAAATTTTTTCATTAGAGATGTTCATAGAATTAGCTTACACTTACAAAATAGGTCTATGAACATATTCAAAGACCGATGCGCAACTTTGCCGATTGAAATTGAAATTCTGAAATTTCCAAAAAATAAATAGGTGACACAATTTGCCGTTTTCCGGCCAATTCGGCAAATCGGCAATTTTCTGGATCTGCAAATTTGCCTGAAATTTTCAATTCCCTTTATTTGCCGGGTTGCAAATTTGCCAGAAATTTTCAATTCCGCACATTTGCTTCCGGCCAATTCGTAAAATCGGCAACTTTCCGGGTTCCAAATTTGCCGGAAATTTTTCAATTCCCTTTATTATGCCGGGTCTCTGCAAATTGGCCAGAAATTAATTCAATCGGCAATTTGTCAGTTAACGTGTAAATTTTCAATTCCGGCAATTTGTCGATTTACCGGAAAAAATCGTTTGCATCAACCCATGTGAACGCTAGCACACCTCCTAGTATTAAGGCTCCAGCTAATTTCTGACGCATATCATGGTTCCCAACTATACGTTCCTCCCCTCCCCCTTCCCACACCATTTCGAATGGGCGCCAATTATTAATGGATTCTCAATTCCCATCATATTGGGGGGGGGGGGGGGGGGGGCATTCGTACAGTCTCAATACGAATAATACTTATAAGCCCTCTTCTATGCCCAAAGCGCGGCCTTCTTCTTCACCCCTCTAGGCGATAAATTCTCATATTTAGCATTTTGTAAGACTCGGTCTCCCCCTTTCAAGTATCTCTGGGCGATGATTCCCGCTCTAGCTCTCGCACACACCCCATTTTTTTTTCACAATAATCATTCAAGGTGGACACCAAAAAAGCCATCAGTTCGATTCCGGTCAAATCGAGAGAACTGGAAGAGAGAGAGAGAGAGAGAGAGTAAGAGGAAATGAGACAGAGGGGTGAGAGATGGAAAACGAACAAGTTTGATGGGCGTCCCCCCCCCCCCCCCCCAGGGCCGCTCCTCATACTTAAATTTAACAGCTGTCACTCTCTTTTGCTCTTCAATTTCTAGCTCTCTAAACTCCTCAGGTCTACAGTAATCGGGGAGGGGGTAGTGATAAGCCTCTTCCCGCCCCCCCCCCCCCGGGGGTTAGGTGTCAGAAATTAATCATAGATGCCACGCCTCTAATGTTTTCGGAAGCAGTCATCCTCGCTTTAAATCTTTAATTCATTAACCTATTAATTCATTAGTCTTACACTGTCAATTTCATAACTAATGTTGAAAAAACTTCTCAAAAAAAAAAGTTTTGGCGGCTTAAGAAATGGCCTAATATTAGTTCGACTTTTCAAGCGGCTGGAAACTAACTTTTTTTGAGATCCACCCTAATTTCAACAACGTAAATAAAAAAATTTGGTGACCCAATTAAATTTATTTAGGCCAAATCTGGTGTTCAAATTTTTTAGGCCAAATCTGGTGACTAAATTTTTTAGGGCCCAATATGGTGACAAAATTTTTTAAGGCCAAATCTGGTAACCACAATTTTTTAAGGCCAAACGTTTTTAAATACCAAATTTAGATGTTAGAGCCAAAGTGACGGTGCAAAGGTATTTAGGGGCGAATCTAATGACCACATTTTTTGGCCAGACCTGTCCCTAATTTTTTACAGGGCCAAATCTGGAGACCAAATTTTTTAGGCCAAGTCTTGGGATCATCATTTTTTAGGCCAAATCTGATGACCAAAATTTTTAGGCCAAATCTAAGGACCAAGAAAATTTAGGATTTAGGGGCCAAATCTGGTGACCAAATGTTAGGGCCTCTGGTGACCAAAATTTTGGCAAAATCTAGTTACCAAATTTTTTAACCAAATCTGGTCACCGAATTTGGCCAAGCCTTGTGATCAAATTTTTTTAAATTTTCAAATCTGGTGACCAATGTTTTTTGAGGGCTTTGGTGGCAGCATAAAATTTTTAAGGCCAAACTTTTAGGACAAATCTGGTGACCAAATTTATAAGGCCATAATAACTTTTTTTTGAAAGTTTGAAGACGTTTCTAATTCATAAGTCTTTATCTTTTTCAATTTAATCTTCGATATTCTAGATTTCAAAACGATGGAGGATGCGGCTTACGCGTGTGCTGGCTGCGACTTCAAAGTGAGTGTTTTTTGTTGTTTCCTCATCAGCATCAGCTCTATCTTCTCCCCACCCCACACCGCTCATGGCCACTTCCTGTAACCTCCAATTGCCATTCATTTCACACAGTATTAGTACCACACAACACCCTTCCATGCAATTTGACTCATTCATAGCCCTTTTCTGGACCATGTCTTTCTTCCCCCTTCTTTCTCTCTAATACTCAACCTATACCTACCTACCCGCAATTTAATTGTTGAGCAACTAATTGATACACTCGGACGGCTCAAACGATGCGCGTCCGTCGTCGAGTGCCCAAGACTGGGACCGGTTTTCAGAATGTCCAGTGTATGTGTGTTTGTGTCTACGGCTGGCAGGCAGCCACACCACTCCGATTCGTTAATTTATTGTGAGATGATGACTGTACATTACTTTAAGTGCTGCTGGTGCTGGTGGTTTGCATCATATAATTATAGCTGATTATATTGACACACACACACATACACATTTACTTTCAATTGCTTTTACCCAATCGTTTTTCTTCCATTCCCCAATCTCCTTGCTCCCATTTGGCCCTTTGATATTAACCGCGTTGCGCGTTTCGCACTAATTTCGCGCCCGGACCGGTGTGCTCGGCGCGGCACGTCTTTCATCTTTTTACCTCAATTTCATTATGATTATAATAATCATATTATGGAAGCGAGACACGGCAAAGACGCGCTCAAGAAACTGATAAATGTGTAGAGGTCGGGTCCTTTTGAGAGAGACGGAGAGAGCGAGGTGTGATAAGAGCGCCTAATGAGCATGGGCAATCATCACATTACTATCAGCAGCATTAAAACTTTTTCAGAAGACGTGTCGGACTTCATTTGAAGAGCACACAAAAGGACACGAAGAGGAGGAACGGGAGCCTCTTCACAGAAGGCGTGTGCGCTGTGCCTGCTGAGCCCACCGACCACCTCGAAAAGCACCTTGTCGAGCACCCTGCTATCGCATCGCCGAGAGGGCTATCGAAAAGTTCCTGCTTACTGAGCGAACAGCCAAGTGAGTGTTTTTTTTTCACTCAAATATTTAGTAGTAAATCTTATACTTTTATTTCTAGCGGTTTCATTTTTGATAGCTAGTTAAAAACCATAGAATAACAATTAACTTTTTGACACCTGTCGTTTGAATTTTTTGACAAAAATTTTGTCGTTTGAATTTTTAAAATATGATCGAGACAACCGAGATATAAAAGGTCAAAGTCCAGTGAGAGGGGCCATAATGATAGGGATTATACGGTAGGTATCGAAAGAGACTTATAAGGACAAAGATAATGGCGCTAGAAAGTTTAAACTAGTCCAATTTGAACAATAAAAATATATATCACGTACTTCCCATTTAGTATAAATATTTTAATGAGAGTAATCTGAGATACAGTAAATTTTTGATTAACAATTTCTAGGCACCATGTACAAAACCTAGTCCCCAGCCCTAAAATTAAATAGCACGTACTTTTTAGTATAGAGCCTATTTCAAAAGTTAAGCCATCTGATACACAGTGAATTCTACCAAGTCCTAGTCGATGCACCATGTGCCCACTTGACTTTCACGGCGCACTTCCCGGCTAATTTCATACCTTTCAGAATCGCGATTTTCAACTATTAAACTATAGAGGGGTTTTTAATAAACATTTTCTCTGTTGACGACTTTTTTAACGTAGAATCAAAGACTACCTCGATAGCTTGATAGTTAAAGTCGAGATGCAAGGTTTTTTCGGAAAAATCACGCGGTGTTTTCGGTTTGTCTACGTACAACGAAAAATTCGGGAGAAGAGACGCAGAGGTTATCAACTCGTATGGTAAAGAACGTGCTGACGTTGTCACATATTTTTGAACAAAAAATCATTTTTAGATCAAACCGTAATGGGGCAACCTCGCACCACGTGAAAAATTAGTTTTTGAGGCTTCTCTAGTCTAGAGACTCACTAAAGTATTTTTTTTGATTGGCCTTGTTTTTTCTAGACTTAAAGACCAGTTAGATCCAATCAAGGTTTTTCAGAGTGTCGATTTTTATGAATTTAAAACTTTCAAATTGTAATCGCACGTTCCTCCATTTCAACCCCAAACACGTTACGATATTGTGCTATCATAATCATTCAACCATGCTTGCTTGTGTGCAAGTTGCACAGGGTGCGCCGGTGGTGGAATTGGCATTACTGTAAATGTCCTGCGTCTCCATCCTTGCCCCCAGTGTCCCCATCGGCATAACTATTCGAGAGGACGATCCGCTTTTGCATATCTAATTGTTCAGGATTGTTTACGCGCTCTAAAATTCAATCCGTCGCCAACCACCCGCCCCCCTGCCTGACTCTTCAATTCATCATGAGTATTAGTGTATTGATTAATTTTCGAATTCACGAATCAGTGCTGGCGCCCTGCTACTAGTAACCAGTGAGGTCATAGCGTTGCCCGCAGTTTCGATAGGGCTAATGAAATATGTAGTTTCTCTAGGGGCGGGAGGATAGGTTTGATCAGGAATTGGGCGTCGGTTTGATCTACGTAGATCTATGAAGATCGCGGGAATTTAGACGCAGACTTCTCAACTGATTTTGCATGGTTAAAAACGTGCTGACGTCATATGTTTTAGGGGAAAATATTGCCCGCACTTTTTGTAGATCAAACCGTAATGGGACAGCCTGACACCATGTGCTCAGTTATGGTCCAACTAGAGGGTTTTGTCGGAAAAATCTGCAATCAATTTTTTAAACTGACAACACATTTAGCTCCTTCTCCAAAACTGAGCCAAATGTGTAATGTCAAACTTTTCTTGAAATTTTTGTATCGAAATTAATTGATGTTGAGGTGAATTTTCAAATTTCAAAAAAGGTACTCATTTCTATCAATTTGTCTTCACCTATGTTTTCGACTAAGTGCGAGGCTAGAGGTGGAGGTCCCCTTAAAATCATAAGATAGCCTTATGTGATGTCGAAAAATGCCAAAAACCGCAATGTATTTTTCTATAGTTTCCCCGTGTGTAGAAGAATGTAAAAAGAGCATGCATTTTGTGATCATTTTTTGACATTTTCCTGCATTTTTTTTTGACAATTTTTTTTCATTTTTCCACACAGATGAATAGCGGAAAAACTTAGGAAAAAAATACCATATTTGCATTTTTCATGATCACATGATCCCCCATAAGGTTTTTTAAGGCATAATATTGATATTTATTAGTCTACTTCGGATGCATAATGCCTACTATTGAAGGCAAATCAAATCGACATCACTTTTTGCTCATTTTCAAAACTGAGAGGCACGGCTTCTATGTTGACTACTAAACCAGTCAATAACACTTATAAAATGTTTGGAAAACACTCATACACAGCCACGTCATAGCTTGGACTGGATGGGACCCCATTTCTTGAATCATAAAACCTTGATTGTTAAACTATCATCCCCCCCGCCCTCCTCATTGGACGACCCCACGGCTCTGTCTCCAATTTGTTCCCCGTCCTCTTCTTATCACCTTGACGCGTTGCTAATTGAAATTTTGCGTAGAGGATTTCACTTCCTCCCCACCGCTTCCTTTACTCCTTGGGGGATAAGTATGGAGAGTGTTTATTTGTGTGATTGAAGTGAAGAAGGTGGCTGCCTCATTATTTCATTTTCGTCGCTTTCTTTGAAAGAACAACTTGACAGTTTCCCCCCCCACCCCCCATCTTAATAATAATTACTTGCAGACAAGCGTCGTGTTCACCGTAGTCGGAGTCGAGCTAAGAATTCGCGCATCGCTGCTCGAGTTGCTCGATGGCGTTCCGAAGCGAGTCGCAGCTGCAGACGCATTCCCTTCAGCTCGTGTTCAACTCGTTCCACAAGTGCCCCACGTGTGGCGATTCGTTTGATGACAATACTATTGGTGAGTGTATTGACACACTTTTGGGTCACAGTCACGCTTGATCTACGTGTTTTTAGACACTTTTGAGTCTACACGTCGTGTCAAATGTCTCTTGGGCTAACTTGATCTGCGTTGATATACCGAAAAATGCGGGAGGTTTTGGGCAAAAAATTCCCGCATTTTTTGTAGATCAAACCGTATTGGGACAGCCTGGCATCACGTGGAGAACTCAGTTAAAGTAAGAGGGTTTTGTCACTAGATTTATTTTCTGTAAACTGACAACACATTTAGCCGCACTCATTCTCCAAATCTGAGCTAGGTTGTCGACCGACTTTTTTTGAAATTTTTTTAAACGAAAGTAGTTTTGCTAGTTTTCCTAAAAGGAGAAAGAAGGGTTGTCCAATTTTTATAAGAAGGTTTTTGTCGACTCGGAAAAACGATTTTTGTAAATGACAACCCTTTTCGCTCGTCTTTTCAAAATTAATTTTTTTCTCTTGGCACTTAATCCCATTTTATGTAAATTAACAAAAAAATGTCAAAAAATCTTCAAGTAGTTCTACAGGGTGGCCTATCTATAGGGTGGCCTACATTTTTGCACGGGTTGTCTAGATCCTTAAACAGGGATGGCCTCTCTGTAGTGGCCTAGACCTTTTCTACACGGTGTAGATTTTCACTGGTGGCCTAGATTCTCACACTAGGTGGCCTAGATTTTTCCACTAATCATAGCGTAGATTCTTTACAGGGTGTCCTAGATATTCACGGTGTCCTACATTCTACACAATTGTGGGTGACCTAGATTTGTTACACTGGTGGCCTAGATTCTCTACAGGGTGCCCTAAATTCCTTATAGGATGACCTAGATTCTTAAACAGGATGGCGCTACCTAGATGTTGACACTAGGCCTTGATATTTTACAGGGTGGCTACCTAGAATTTCTACAATGGCCTAGATTTTTTGCAGGGTGATGCTTGGATTATTAAACAAGGTGGCCTAGATTCAGGGTGGCCTAGATTTTATACAGGGTGGTCTAGATTGAACGTTTACACTGGTGGGCTAGATTCTTTACAGGTTCGCCTCAAGATTTTCTATCGGATGGCCTAGATTATTAAACACGGTGGCCTAGATTGGCCCTTTACAGGGTAGCCTAGATTCTTCACCCAAAGCGTAGACTAGATTTTTCTGGTGGCCTAGACTAAAGGGTGGTGGAACTAGATTTTTGCACTGGTGTATGGCGTGGATTCTTAAACAGGCTGGCAAATTGTTCCCCTTAGGGGATGCCACTAAATTCTTAAACAACCTAGATTTTATACGGGAAGGCCTAGAACTACTTTTTGTAAATGACGGCACTTTTTGCTCGTTTTCCAAATCGTTTTTTTTTCAGAGCCATATGTTGGAGCGTACACCAAAGAAGAATGCGAAATGTCTGAAACATTTGCCACAAAAGAGGCATTCCCCTCCCCCCTGAACTCAGCGTCACCTACTGAACACAAAGAAGCATCTGGAAAGCTGGACTCGACTTAAACTCTCAGGTGAGCCGCCGCCGCGCCTCAGGCTGCCGCCTGGCTACCGTAGTCACCGTACCTTTAATTGCTATTATAGCCACGCCGCTCAGCTACAAGCTCGGAGCGCAGAGGTGACAGAAAAAGCCGACAAAACATTAATATTATTACACTTTTTTATGATTGAATGCGAGAGAGATGTATGTGTGTGGAGTGGAGAGGCGCATGAAATGGTGTTCGGGTTCCATAGCAAGCTCATTGAGCACAATGATTTGTTTTTTAAATATATTTTATTGGAAATGACAGAAGGTGAATCTTAAAAGGAACGTCCAGTATTTAACTTAAAGTATTGATTTAGCACGTAGTTTCAGCCTGTCCCATCACGGTTTGATCGTACAAAAAATGCGGGAATTTTCTTCCCAAAAAGTTTGACGTCAGAGTTCTTAACCATGCGAAATAAATTGAGAACTCTGCGTCTCAACTCCCGCATTTTTTCTAGATCTACGCTTAGATCAAACCGATATGGGGCACGTTGCATTTGATATTTAAAGGGTCTCGACAATAAAGAACTCAAAATAGCCTTGCCAAGATAAATGGGCGGAGCTTTGGTAGGAATTTTCATAAGTCGAGGACTCCGCCCAGTTCGTTGGCCAATTTGGGTTTTTGTTCGTGCCTTCAATTTTTAGTGTTTCATTAATTTCCAATAAGTTTAAGATTGAAATAGTTTTTGAGGTGAAAACTGATCCTAGCATGGGCCGCCCATTTGTTGGTTTTTTTTTTGTTTTTTGTTCTTTTAAACTAAAATTCCACTGAACTTGTCTAATATCAGTTTCCATTAACGAAAAAATTCGAAATGCCATGAAAGGGGAGGAGCCTAAGCGAAGACTTTTTCGATGAAATTTGGCCAAGTTGCGATGTTTTTGAATTTCATATTTTTGAATCAAGTTTTGAAATAAAAAGTAATATAAAATTGGAAAATAGGCTCCGCCCATTTATTGGTTTTGTTGGGGTATTTTTTTCTGCATGGATCATTTTTGCATCCGAAAATTTGTCGGAAAGGCATTTTTCCCAATTTTTTTCCGTAAACTATCATCAACTTTTGAGATTCAAAATATCCAACATAAGCACGGGGTTCTGGCCTTCCTCATTGAATTTTTCGCGATCCATTGACAATCATTTGCCTGCCGGACAACGCGTGGGAAAGTCGTGTACTCCACGCGGACAATTAGAGCCATTTTAAGCGCCGCAAATCCCAGATATGGCCGAGCGAAAATGGCCTAGTTCGGCAAACTCTTTCTGACGATTTCCAGAATTTATTAGGGAAGACTCCGTACATAGGCTCAATAAAAGGTGAAATAGGCTCCGCCCATATCTTGGATCGATTCCAATATTGAAATTGACATGTGTTAGTTACACTTGTTCCTAATCCAAAATTCTATCCGAATTTCAATTACCCAAAGTCAAAAAGTCAACAAGTTCTGTTCTTATATGTGCGCGCGCGAGCGCGATCGTTTGTCTCTAATATTTGCTCATCTCTCTCTCTCTCAATCACCGCCATACCCAAAGGATTATCGCCCATGGATGATGGGATGATGTTGAAGACTGCGCGGTGGGCCCCCTATCCCCTGCCTCGGCATTCATCATGTTTGTAAACAAAAGGCGGCGGTTTGAGAAAAGAAGACAGTGAGCGGGCGGGAGAGAGTGAGGTGATGAAGGTAGTAATCGTGTGTCGACGAAAACACATATAGAGAACAACAGATTCGTGTGAAATAGATGAGGGCAAATAGGACGAATTTATTTAAGAGCAGATTATGATGCTTTGGCCCAGATGAGGGGGGGGGGGGGTATCATGAAGATGTGATGACGAACCATATCGTTCCTTCAATGTTTGTTGCTCGCTTAACCGCCGTCGCCGCAATTTAAAGGTTATTTCGACTGGGTATGATCAGATAAGAAGACGTAGACGGCTTTTCTTGGGGGGGACGTTCAGCTTTGATTCCTTTCAAATAATCAATGCGGCCTAGCTTTCTGATCTACAGGCGGGCCTTCTTTGCTAAATTTTAAGCGATTTTACTACCTCTTTGGCCCGCCCCACTTTGATCTACTTTAACTAAGCTTATATCCGATCTCGGTTGTCTTTAGCTTCATCAAAAAGTTATGAACTAACAAAGTGCGTGCCAATACATACTTCTACAATTCGGTAGTTAGTATTGCGATTTTGGATTAAAGTTAAGACAACCGAGAGGCTGTAAGCTGTTGAAGTAAATTTCTAGTTTGACTTACTCCCGACTCCAATTTTGATCTACTTTTACAGCTTATATCTCGTTTGTTTCTGGTAACAGCAAAAAGTTGCCAACTAACAAATTACGTGCCAAATATTTTTCTAAAATTTTGTAGTTGAAAATTTTTGAATAAAAGTTAAGACAATCACCGAAAGCTGTTGAAGTAGATTTCTAACAGGTTTGACTTACTCCCCAAACTTCGATCTACTTCATTTGACAGCTTTTATCTCGGATATTATTTTGGCAATATTAAAAATTTGTCAACTAACAAATACGACCCAAATATTTATCTACAATTTGGGAGTTGAACATTTATGTTAAAAGTTAATACGGCCGAGAAGCTGTTGAAGTAAAGGTGGTGCTTAGCCGACCTATATTTTTGAATTACACAACAGTTATAACTAACTTATTTTATGGGTAACACTATTCTAGCTAGTTGACTTTCAAAATCTACAGAAACTTTTGTTCCTGCCTCCACCTTTAGCAGCATAGCAAAGCGCCTATAGGAACACCTACGGCCTACACCTCATACCACCTACTCGAGTACACCTACTGCCCATCTACTGTTTGCGTACTTTCTACATAGCTTTGATGCCCGTTCCTAACCAATACTCTTTTACAGGACAAAAAGCGGCGTTGTGTGCAACGTCTGCAAACCAAATCCTCCTATCTTCCACATTGACAAGCGGCAAATCTCTGACAAGTGCACATGAGGTCAATGACACATCAGACCCGGATGAGCCGGCTGTCCGAACTTGTGGCAACCGGGGAGCTTAATGGGGAGACATGCCGTGTGTCAGTAACCAGGAATCCCCGACGATAAACAGCATCACTGAGACGGTAGGTGAGGGGTTTGTGCAGGCATCCTGAAAATCAGCTGTTTGGTTTCTGTGAAACATTTGTGCGGAACATAGTTTATTTATAGTTCAATTTGAAAAAAACTGGTTTCTGAGAGTGTTCAATCAATTTTCAATGTTCGATTCTCGATTAATAAAATTTCCACTTTCCAATTCCAGACAACCAACATCCTCTCTGAACGACCTGATGTCACTGCTCACACGAAGCGGGTCGGATGAGATTCGAGGTAAACGGCCTTCAAGTCATGACACAGATCAAAGTACGGTGACCAAGATCACTAGCCTAGTCCCAGAGTTGGGAAAATCGATAACATTGCGCTCTTCGATGACTCCGTGCGGCAGAGGTGTCGAAGATCGTTCTCGGCTTGTGGGCAGCAGATCTCAGGGATCCTTGCTTTGAACCTCCATTATGAAGAGTCCCATCGAAGATTCCGAGTGACGTGTTAAGAAAGTTCGGAGACGGCCGTTACTTGCCGCATTAGAGGAAGCACGGGTTAGCAGAGAGTTCCTTGAAGAAGGATCGCAAAGCCCTCTGCGCAATGACGATGAGCCCATGGAGAAGAATATGCGGCTGGAGAAGACACTCTGCTGCCTGAAATGGACAAGAACGGGGCAGCGTCGCAATTTCGCATAATGTTCCAGACAAATGATGAACTGCCTCCCGTACACTCATGGCACCAGGCACGTCTAGTGGCAACTTTGGATTCTCGCCAGATAAATGATCAATCAGCACATGAAGCATGCGGCGGCGGCGGCGGCGTCGCGACTGCAGCAGCAACAGCCCACACTGCCAACAACTGCGAAGAGAGCAAGAATACGCACTGATGATCAGCTCAAAGATTACGGTAAGTCGTCTTGTGTGTGATTACTGTAAGCTACGGCGAACAGGACAGACACGAGGGGGGCGGTGGAACATGAATTGCAAACAATAGGTGGGAAATGGTCGGCGCCGTGATCAAAATGAATGAGAAATGAGAATGAAGAACAAACATTGTGTGTGAGTGGTGTGTGTGAGACGAGACGATAATCAATCAATTTCTGGAAAACTACACATATATTTTCCCGGCGAACTTTCTGTTTGAGGGACCGTGCGGAACAAGACCCCCCTGAAAAAAAAAATCCGGAAAATCCTTAGCCTAAATAGCGAACGCTCGCTACTGACGCTCAAGCCTAAGCCTAAGCCTAAGCTACCTAAGCCTAAGCCCAGCCCAAGCCTAAACGGGAACCCCCTGAAAAATCAAAAGGAAGAGAATCCCAAGCCTAACGTCCAACGCGCCACTGACGCCAAGCCGTATGTCTAAGCCTAAGCATCTGCCTAAGCCCATCCCAAACCTAAACAGGAACCCCCTGAAAAATCAAAAAAGACTATCCGGAAAATCTTAAGTCTAAATAGCGAACGCTCGCCACTGACAACCGCCAAGCCTAAGCCTAATAAAGTAAGCCTTAGCCTAAGCCCACCCAAACCTAAGCCCAAGCCTAAGCCTTTCACCTTCCTAATTGTCAGGCAGGCTCTAAAAACCGCGCCTGCCTACAATCGAAGCCCTAATCTGTCCGCTTTAGCAAAATACCCTCAAGTTGGTCGGTGCAAAGGGCACATCAGTATAGTAAACGCGCTCTACTGATTATTCGAGTTTAGCCAGGTTTGGGCGCGTTTCAAGGAAAAGAACTTTGGCTCAAAAATTGTGAATTTATTTTCGAACATTTTTATATGCATCACAAAAATGTTAGTCCACCCGTTTTTGAGAAACTAACGCCCAAACGTCCAGGTATACGGTACATGCGCAAATTGCGTACAGATACCACTGGGGGGTCGTGTTTGGGCTTTAGTGTAGCTAAGGCTGTAGCGGCCCTACGGCCTAACTGCAAGCCTCAGCTTATTCGCCATAGGCTTGTCTGCCGTATTTCAAGCCGACAACAAAAAACCTTTCAGCCAATACTTCAACATCAACAACTCGCCGTCAGAAGCGATCAAGTTCGAGATGTCACAAAAAGCGAGCCTTCCGGACAAAGGCATCAAACACTGGTTCCGCAACACACATAGCTTTTCAAGGGCTTTGTTAATTTATTTTACTTCGAATATTGTTATTAGGCTCGGAGTGGAAATGAGCGAGGTGTGAACATTGGTAATTAGCCGGTTCATCTGATGAATACCCACACGAGAGGGAGAGCAAACAAGGAGAGCAATTGAGACGAGGGAGGGAGAGAGAGAAAAAATAAGAAAATCTTAATGTTAGTTGGGTGCCACGCGCTCGGCCAGGACCACCGGCCGGGAACCATTTAGTTTTGATTATGATTTCCGTCGTGGCTCATGATTTATGGGAATTGACTATTTGTGCTTGTTAGGTGATAGAATAGTTAGAGCAACTATCAGGAAGCGGACAAGTCGCAGTGCGAGACTATTAGAACACGTTCTGCAAGGTTTATTCTGATAGATTTGGATAAGTACTAATATTGGTAGAGACTAAATCGCTCTCTTGATATATACCAGCTTAATAATTGTTCTACCAAAAAAACTGTTAAAGAACGCTTCGAGATTCGAGCTTCGGGAAAGCTTAAAGGATGGGTACCGAAAAATTCTTTTTGCCTGATTCCGAATATGGATGTGGAAAAATTCAAAAAAAATTCCCTGATTTTATATTTGAGCTTTTACGATTTTCAAACCTTTTGTGCCCACCTGGTGATATTTTGGATTGATCTACGAGCTCTTGATCTACAAAAAATGCGGGAGAAGGCAGAGTACTCGACTGACTTTGGCACGGTTAAGAACGTGCTGACGTAAGCCACACTTTTTTGCGCAAAAGCAAAAAATTCCCGCATTTTTTGTAGATCAGACTGTCATGAGACAGCCAGGCACCATGTGTGTGCCTCGGTTCAATTTTCAATTTTTTAAACCAGTTTCTTTTTTTTTAGTCGATACGTTTTCTGAAAGCTAAATATTTTTTTTGCCAAAAATGAATGTAACTGGCTTAAAAAAACTAAATAAAACGATGCAAGCGCAAATGCGAATTTATTTGGGCGAATTTGAAAAAAGTGATGCGGGAATGAAATCGGAGATTCTAAGCAGGCTCTAAATAAACAGGAAAATTTTTTTGAATTTTTTCACATTGATATTCGTAATCGGAGAAAATCCATTTAAAAATATTTTCCAGATTTCGGTGCCCCACCCTTAATGAGATAAAAGAGGAAAAAAGGAGTTTTGTAACCTTTTAAGTTTTTTCTTTTTCAGGAACGCCAAAGCGACAAGGATTCCCCGTCCAACTTCAGCGTCCCTCCCCAAATGGGAATCGACTTGGTCTACGAAAAGACCGGAAGTACTGTCGCTTATGAAGCACCAAAGTCTGAGTTGAGCTCTGCGCGGGCCACACCGACATAATTCCGACTCCGATACCGCTCATGGATCGTTGAAGAGAAGAATCCGGTGCCAAACCGGACACCATCGTCTTCTTCCTCTCAGCTTGCAGGCTATGTTATCTCAGATGCAGGGAAGTTTTTTCGACGCGTCAAACTTCATGTCAGCATCAGTGAATCCGATGACAGCACTCCTTCCTACCGTCCAGTGGACGACAAGCCCGAATGGCTCTAGAATCAAGACCGATTTCCAGCTGAGATCTCTACAGCAATTTTTCGACAAGCACTACCCGAATGATGATGATCTAGAAGCGCTGACCAAGAAGCTTCAGCTGACCACGTGTGATTGTCGTCGGGTTCCAGAATGCAGAAGGCCAGAAAGATCTATGAGAATCAGCCAAATCACGAGAGTTCCGATCGATTTGTGAGAACGCCGGCATCGAACTTTGCAAAAAAGGTTTTAGTGTTGGAAATTAAAATTTAAATTTAAATTTTCCTAAATTCCAGGTGCTGCCAAGTATTCCAACGCTACTATTCGTAGAACTCATCCAACATCAAAAGAAAAAGTGCTGACGATGTAGCAGCACCTCTGGCAAGTGACAACCTCAAGAGTGTCGAAGAATCACTGACGGAAGAAGAGAAATCCCAGCTTCTAACAACAAGTAGCCCAACTAAGGAGTCAGGAGCTCCCAAAGTTCCAGCCGGCAGAGCTTTTGAAAATGATCGGAGCTAATTCGGTGACTCCATCCCGGCTGCAAGTCAGAAGTCTAGCAACGATGCCGTTCTGCTGAAGATGTGTGAATCATTGTTGGTGGGAGCATCACCTAGTACATCACCGTTCCACCAACGTTGTATTTTCTGCGAAGACTTCAAGGATTGGAGTGCGATGAGTGAGCTCATGGCTCAGAAGCGGGATCCCCAGCATATGCTTCTTCCAAACTTCGATCCATGATGCCAGAGGCTGGTCGTGCAGAGCTTCTCATGTGATCTTAAAGGACTCTGCGTTCGATCTTTGGGGCTCTTCAGTCGTCTACCGGGATTCTATCTCAACATCTCCATCTCGATCCGAAGATGATGTTCTCACAGAGGCTCTGGATGATTTTGCATTTGCCGCGTGAACTACAGCTTGCAAATTCCACAAGCGGCTCGGAAGATCTCCGGCGAGCAACAAGACGAACTCATCTCACACCGATGCAAGTGCAAATCAGTTGAAGAGCGAGTTTAACCAAGACCCCATCCATGCCATAATGTGAGCTTCTCCGCAAGGAAGTCGGCCTTCCATACAAGCGTGTTTCAACTCTGGTTTTAAAATGCGCGAGCCATATCGGAGCGAAAGACGCGCGGTGGAGTGACCAGGACTCTCGCGATCCGGAGAACTTCACTGGGAAATTTGTGATAAGACGTTCGCGACGAGTCTTTTGCTGCAAGACCAGCTGTTTGCCGAGCAGCACATTGAATTTTTAAGGAATAATCTGAAACGGGAAGGGGTCTCCGCAGTGGACGACCGCTGACCGAGTGCTCTCCAGAGAAAAAGTAAGAATTTGAATTTTTATGTAATTTAATTACATATATCATTACCCTATATAACCTTAAAAATATTCCAGAGCAAAGCTTCCGAACGACGCCCGCTGGGTCTTGCCAGTTTCCCGTTCCTCGACACGTTCGACATTCACATTTAAGGAATACCCATCGCCTTTCTGCAGGCTGTCTGATGAGATCAGGATTAAAAGCAGATCACTGATGATATGACGGCTGGAAAATCGCGAACCACGTTCTGCCAGGACGGTTGCTCGACAAGTTGAAAGAGTCGCTGCCCGAGGATGAGAAATCAAATTGACAGAAACCCAGAAAGACGTTAGCTTTTTTTTTTTGGGAAAAATTTAGAACAATTTGGCAATTTCAGGTCGGATGGGCGTGCATGTACATTTGTCTTCCACTAAGAAAAAGAAGCTCCGTGAGCATCAAAAAGTATCCCATGTGCAGTGATAAGGTGCGCAAGAAATTAGGAAACGGGCTTGAAGTTTAGCTCATAGTTAGTCGTGTCAGACTGTCTTTGATCTACGAAACATGCGGGAATTGGAATTTCAGAAAAATTGTGAAGACTCAGCAGGAACGTTATTAACCATCGACGCAAAATCAGTTGAGATGTCTGCGTCATTTCTGCCGCATTTTTTGTAGAGACGATCTACGTAGATCAAACCGAAATGAGAGGCACGTTCTGAATCCACGAGCTAGGCTTAAGCTTATGCTAAGCTTAGGTCCTTTTGTCAGGTTTAGACTTAGGCTTATGCTCAGGCTTAGGCCTTTTCTTGGCTTAGGCTTGGGCTTAGGCTCAGGCGTAGGCTTAGGCTTAGGCTTAGGCTTATGCTAGCTTAGTCTCACAATCAGTCTTAGGATTAGGCTTAGACTTAGGCTTAAGCTGAGGCTTAAGCTTAGAGCTTGGGCTTATTGGGCTTAGGCTTAGGTTTGGGCTTGGGCTTAGGCTTAATCTCAGGCTTAGGCTTAGGTTTAGGCTCAGGCTTAAACTTAGGCTTAGGCCCAGGCTTAGGCTGAGGCTCACACGTGCTCACGTTCTTAATCATACAAGATCAGCTAAGAACTCTGCGTCTTTTCGCCCGCATTAGTTTTGTAGATCTACGTAGATCAAACCGATGAGGCACTTTGAATCCACGAGATAGGCTTAAGCTTAGGCTTCCTAAGCTTAGGCCTTTTCTCTCGCAGGCTTAGGCTTAGGCTTATGCCCAGGCGTAGGCCTTTTCGCGTAAGCTTGGGCTTGGGCTTCGGCGTAGGCTTAGGCTTAGGCTTAAGCTTAGGCTTAGACTTAGTCTCACTATCAGTCTTAGGCTTTAGACTTAGGCTTCAGCTTAGGCTTAAGCTTTTATGGGCTTAGGTCTTAGGCTTAGGCTTAGGTTTGGGTTCTTACGCTTAGGCTTAATCAGGCTTAGGCTTAGGTTTAGGATCAGGCTTAAACTCTAGGCTTAGGCCCAGGGCTTAGGCTCACACGGTCTGTTTCCCACGTTCTTAACCATACAAAATCAGCTAAGAACTCTGCGTCGGTTCTCTCTGTTCGGATTTTTTGTAGATCAACGAACTTAGGATCGAGCCGAAATGAAGCACTCTGACATCACGTGGGCTAAGACTTAGGCTTAGCAGCTTAGGCTTGGATCAGGCTTAGGCTTAGGCTTAGACGTAGGATTAGGCTAGTTATAGCTTGTAACTTTTTTAAATCTACCCCGAGTCAAAAAAAAACAATTCAATTCCAGACGCTAACCATGTGCAAACCCACAACTCGTGCAAAAGGTGTCAAAGTGATTTCTGTCTTCAATCCGAGTGTGATATCTCAATTCCATCTCTCAATCCTCATACTACTACTACCACCACGACGATAACAAAACCCCCCCCAAATATCACCTCATGCATTGCATTTGCCGTCTCACTCAAGGACCTATTTCCGTCTCTCTCTCTCTCTCTCTCTCTCTCTCTCTCTCTCTCTCTTCCTCTCTCTCTCTTTTCTTCTCTCGAAAAAACCACAACTCCATTTTTCCGTTCTGAGCTAACTATCCCCCAAAGTAATTTCTTTGTAATATCTATATCCACTTTTTTTTCGACCACACTACACCATATCCCGCCGCCCATCCCCTCCCCCCCCACCGCTTTATGACAAAACTGGTTTCGCTTTTGTCTTCAATTTCACACCAACCGCCTGCAGCTTCTCATAATAATTAATAATTTTTTTTAGCATGCACAATGATTTTGATAAATATATGTATATAAAGTCATCTAGGATTGCCCCCTTTCTAGGATATGTTTTTTTTTGCCATCATCACACAATTTTCCGATTTCAATGATAAGGATTATATCTTTGTCCGTTGACACATGTAGATGTTCCTGACCTTCCAATTTTTAATAGATTTCCATTACTAGTTTTTTTCAGGCCTCACTATTCTATTGCAATAATTACTTGGATGCGATCCATGAACGCAGTCAATAATAGTTCAAATATTTGCACTTCTTTTTTGCACACTAATTCAAACTCACGCCAGGCTGTCCAAATACGGTTTGATCTACTAAAAATGCGGAATGAATGTTTACTCCCAACAAAATGTGACATGATCAGTTGGCACGGTTCTTTTTTAACCATGCGATCGGTTGAGTAGTCTTGCGTCTCTTCTCCCGCATTTTTTGTAGATCAAGCCAAAATGTGACACTGGACAATGACACAACGTGTAGACTAACATTGACTGACACCACGAATATCATATTGAAACTTCTTGAAATCTGTTCAAGAAAAAAGTTATGAAGGCTCAAATGGCCTAAAATTCGCTAATTTAAAAGACACTTAAAACGGTGTCTTTTTGAATTTTTCCGTCCTTTTTTTAAACATCTTTGTTCATAAAATTTAGTGCTTACAAAATGGATGTTGGAACATTTATAGGATACGTTCAATTTTGCCATTTGAAATTGAAATTCGGAAATTTCAAAAAAAAAAAAAAAAAGTGCGAAGCCAAAATTTGTTTATCCAAAAATTATCGGCAATATTGCCGGTTTGCCGGAAATTTCAATTCCAACGACAAATTTGCCGAATAATGGCCGCATCCATTCCTGCAATTTGGCGATTTGCACCGATTTGCCGGAACCAGCTAACCTACTTACTAACTTGCTAACAAGCTCTTCAAGGTTTTTAGTTGATGATTTTCAATAGAAAATTCAGGTGTTTTCAGGCAATTTCGAGAAAGCAATTCAAACGTTTAACAAAAGAAAAACGACACTTTTTCCTCTTATTCGATTCTCTTAATATCTCAATTTTGCCTTATAAATTTATCCTCTCCTCACAAGGTGACACACACACACACACGCACACACTCGTTTCTGCTGCGAAAAAAAGCTATGACCTAACACGCGCCTTCTCGCGTAAGACTAAGATCCACTGAAGACATCTGATAAGAGTGGGTCCGCCATTGTCTCCAGAAAATTCTACACGCCTCCGCCCGGTAGGGGTCCCACCTCGTCGCTTCACTTTTGTTTCTCAAAACGATTCCATCGGCTTCCGCTGGCTTGGGCCATTTTCTCTTATACAACTGGCCATTCTTCTCTTATTGCTTAACATCATGGTTATTTAGGAATTTGTTCTACCCTGACTTGAAATGACTGGACGGCCTATTTTACTTTGATTGACTCAGAAGACTACTATAAGCGGTCATTTGTTGCGAAAATTTCTGCCTTTAAAGGTGGAGTAGCGCCATCGTGGGAAAATTGCTTTAAAAGGGCGCACGCCTATGATACCACACGAATATTATGTTAGAAAAATTCAGGGAAAAAAAATTCTCTAAATTTTATATGATTTTTTGAAAACTGAAAAAATCTAATTTTCACTTAATTCTTATGTGAATTACCGCTTGGATTTGCTCGATGGAGCGCCTTGCACGTTTTTAAATCTATTATCATATTTTATTTGTACTTTGTATTTTCCACGGATTTTTAATGTTTACGGATCATCTTTTTTTCCTTGAATTTTAAAAAGTCAAAATCCAAAATGCAAATTTTCGATTAAAAACAAGCGTACAGGTAAATCAGTTAATCAATTCAGGTTCATTTTTACGCCTGTAAGCGTGCTTTTTAATCCAAAATTTGCATAAAAAAAATTTAAAATGGGTCGAAAATAAGAAAAGATAATATAAATAAACTTAAAAACATGCAAGCGCGCTCCATCGAACAAATCCAATTTAAGGAGGTATTTCAATAGGAATTAGGAGCAGCAGAAACTGAGATTCTTTCAATTTTCAAAACAATAAATCATATGTAAAATTTGGAAAATTTTGATTTAAAATTTTTGCGTCATAGAAAAACCGGAGTTCCTCGCTTTTTTTTCATCGAAATTCAAAAAAGTAGGCGTGGCCCTAAACCGAACAGCTGTTGTTTTGTTATTGCTCTTAAAATTTCACAGCCTCTAATTGGTTGAACACGCCCACTATTCTGAAATTGGCCCACCAATGACAAATCGCGAAACTTCTTGTTTTTTCCGCAGACTATGGAAGCGTCCGCACTCGGGATATTCCCGCATTTTCCGCCAGACTATGGACGCACCATTATCATATCAATTGGGTCATGCTGTGGTACTATAGGCATGTTTTAAAGCAAAATTTTTTCCCCACTGGCGCTACTCCACCTTTAATGCATGCTGCGTCTTTTTTATTCGGTTCTGGCCATAACACACAAATTTTCTCAAAGTTTAGGAATATATAGATTTAAGGAAGAAAGTTTTTAGTTAGGAAAAAATATAGTCTTCTTCATGTTTTCTTTTTTTTGACAATATTCATTCTTGCCATCCGTTTTTTTTTCTGCAACCCTATTCGATAAATGTTTGCTTGGACGATGTAAGGTGCTTTGAACACTCGGCATTAGGGCTTCTTGCCCATTAGACCAAAAATATTAACTTGTATCAGAAGTTAGGCAACTATACGTTGGCAAAACTTGGATTCAGGCAATATCAAAGTTGCTAACCCAAGTTTCACCCAATTCGCAAACTTTGGCCTAAACTTTTTTTGTACTATGCGCAGAAGTTCCATTTTCCAATCGCCCCAACGTTTGCCCATCTTTTGCCCAAGTTTAGCCAACTTCGGTCCCAAGTGAATATTTTTGGGCCATGGGCGCTAGAACATCGCCGAATGACGAGCTCTTAGAATTTTATTTGACTCTATCCGATCTGCTAATTCTCAAAAATCCCCCAATTGCCAACCATTTATCAGAATGGGAGTAATTGGGCGATAGCGCTCAACGTGCTCGGCTTTGGCCGATAGTGCGCCTGATTCCCAGAGGATTATGTGGACCTGGTACTTCCTATGAAAAGCTGTATCCACCATTTCACACGCTAAACGTTTCCTACTCATCTTGATTAATTCAGTGAAATACTACAGTCAAATCAGGTCTTCGACAATTGTTGCTGAGTCGATCTTCTACCGCACTTCATTGGTGCCAAAACTGAGACGAACTTTGATGTTCCGCTCACCTGCTTGAGATTGGAGACTAGCAGGAAGAGATGCTCGTGTGGATGTCACTTCGGTGTGATCTTTTCCCGAATAGATCGTGTTGTTCGAGTAAGTTTGCGATTCTATATGACTTGTCAACGTGGTGTCGGGCTGACCCATTACGTTTTGATCTATAAAAAATGCGGGAAGTTTATGACCAGAAAAAAATGACGTCATCACATTCTTAACCATACGAAATCACTTGAGCAATCTGCGTCTCCCATTTCTTCTCCCGATTTTTTGTAGATCTGCTACGTAGATCAAGCCGCTGAAATGCAATTATTGAAATTCCAGCTTGCTGTCTCAAAATAAGAACCAATCCCACTTGCCTGCTGGGTAAGATCCGCCACCTCCCCCACAAACCGTGATGCCAGCCAGCCTTCGGCCCTCTCTTTGCTGCCCGGCAACCCCAAACTGTTGCCCGAATGTCCACCCAGCTGCCGAGTTCGTCGCCCCGAAAGAGTACGAGGACGAGCAAGGCAACCCTGGAGGCGTCCCAGCACCACCAAACCCACCAAGAACTTGCTGTCCTCCACCAACACCTGCTCACCATCGCCACCACCTCCACCACCACCGGCTCCGGAAGCTCCAACGCAATGCTGTGGATCACAGCCTTATAGAAGAACACCGTGCAGGTCGTCCGGATGTCCGAATGGAGATTGTTGATGCGGAAGACCTTGCTGTTACAAGCGGACAGCAGAACCCCACGAATGTTGTAATCAAGGGCAAAAGGCTTGCAGCCCACCAGAACAGCCTTGCTGTCCTCAGTTGAAGCTGGATAACTGCCTCGATTCGGCCCCACCTTGCCTTCGCGCCTGTCCATCGTGCCTATTCCTGAACTGATGCTTGGGAAGAGAACTAAGAGAGACTGGGCACCGGGGCTTCATATGCCACCCAAGTAAGCTATAAGTTTAGATTTTCACCTAGTGGCAGGCTGTCTCAGAGTGGTTTGATCTACAAAAAATGCGGGAATTTCTCGCCCAGGAAAATGTAACGTCAGCATCAGGGCTGGGACCAAGAAAAAAATTTTACCAAAGATAAGTTTAAAACCAAAAAAACCAAAAAAAAAAAAACCCAAAAAATTTTTGATATGCTTAAGTTGATTTTTAAGCTGGGGTTAGTAATGTTGCAAAATGGTAATTATTAAAATACATTTATGCACAACTGTGTTAAAATACATGTTTTAATGTATTATAAAGATTAGACTCTAGTCGACACTAGACACGGAACTTTTTTTTTAGATTTTTGGTCAAAATACCAAAAAAACCAAAAAATTCCCAACAACATGTTCTTAACCATGCGAAATCAGTTGAAAACTCTGCGTCTTTTCTCCCCGTGCGATTTCGAAGATCAAACCAAAATGAGACACTTTGACACCACATGGGGTATTTTCAAAACGCTGAAAATAAGTAAAATAAATAATAAAAATTTTCAGTCGGACTCCTTGGTCAACAATCCCCACCGACTGATTACAAAGCCGGTAAAGACCATAATAAAATCAAGTGAACTCCCGCGTTGCATCTGGAACCAAGACATCTCAACTGTCCGTCACCAAAAAGCACATCGAACTATCCTCTAACCACGTCCGCGGAATCGCCTCCAACAGCCGGAAACGACTTCCGAAGAGCCCACGTTCGATTCAAGAGCAACATTGTACTTTGGAAATGGACCATGCCAGCTGTGTCTGAACGGAACTCTCAGAGAACCAAGCGGTCACTCGCTTATAGTGTTCGTACCTACCTACAACCACAATACTCTGATTGGAACCCGTTCCTCGGAGATCAAAGCCATACGACCGCAGTCGCCACTCTCCACTCGCCGGGCACAGAACTAAGAGAGCTGGCGTGAGTTTGACTCATAGAAATTAACGTAGCTGAATTTATTTTTCCAGTGCCTTCCTCATCCACAATGTACCCCTGCATGTCCGTCGCTATAAGAGAAACCGGATCGGATTCCAATATTGTGAGCTCCAGGCAATGGACACTACGGTAGGAAGAAGCGGGATGGGGAGCCGATAGAGATCTGTGCTTGAAAATACAGAAAGGTGAAGATATGCAGATGAAAAGTGTGATAACGATGAGTTCAGTATTAATGAGCGAAGCAAACGACAAGCCTACAATCCAAAAGGACTTGATTTTGGATATCGTGAAGCTCCTATCCAAGGCCTCCTTCAGGTGGCAACAATCCAGGCGGAGGATGCATGATGCTCCTAGCCTGTGTTCTGGCTCAGAAGAAGAGAAGAAAGAGAAATGAGATCGGCTCGACACGTACTACAAAGCTGTGGAGCAGCACAAGAAGCCGGTGGAAGAGTACGAGAAGGCGATGGAGGAGCACAAGAGAGTCAAGCGGCAGTTCTTCGCTCCGGATAATGCTGCAGTGTTCCTGTCGGGCATGGGTGTCACTTGCCTTGGCACTAGCAGAAAGAAGAGAGAAGTCGAGAAGGTGGAGCATATGAGGATGAGCGAAGCTATCTATCAGAGCAAAGAAGGGGTATAAGGAAGGATATGATGATGATGATGAGGTGAGAGACCTGAAACTTTAGATCCTGTAAGAACCTTTTGAAAATTCCAGAAAAAAAACCCCCTAATTGAAATTACGCCCGCACGCGCCACTGAGATACTGTATTCGCGGCGAGACCACCCTACTGCACATCTAAGAAGTCTCCCAACGCAAGTGACGAATTTGGCCTAAAATGGACTTATGGGATTTCCACAGTTTTCACCATTTTTTTGACACAGTCGACGTTGACTTTTTACACTCAAAAAATTATTGGCGTGGTCATCTCAAAACTGATTTCAACAATTTACTGGATTTTACGCGTGTACTTCATAGTGTCACACCAAAAATTGATCTGGTTCATGTGGTGTCAGCGTGTCGCCTTTTGGTTGATCTACGTAGATCTACAAAAAATGCGGGAGTTGAGAGACGCAGAGAACGGGCGCAACAATGCGGATTTTATCTTAAATTTTCATATCAGGACGACAGTGAATCCTCGGAGGAAACCGAACCCTCTAGACGCAGAAAGCAACGCCGCTCCTGCCAACAAAGTTAGCCGACGATTGCCTGAACAACGTCGAGTACGCAGTCTTCGAAAAACTGGATACAGACAAGAGAACCAAACGAGAAACCGTGTTCCGTCGTAAGAAGTGGACCGCCAGGTGTGGCTCCTTCATGGGCTCACCAGGGCCACATCGTGTCAAGAGAAACTTCGGGCAGCCTGAATATCAATGTCTCGGAGCAGAATTGCACGGCATTCCCACAGTGTCGGCAAACAGTGAAGAGACACTTTTTGGGAGAAGACTGTAACATCTGTACACAGGATACTGGTCTGAGGCGGAGGAAGAGAGTCTTCGGAACAGCGGTAGGTGTTGGTTTAATGAGCTGCCGTATCTTATTCCGCAATGCTACCCATGCCCAGGAACAAACGTTCATAACTTGAAGCGACTCCCTCCGTGGATATGTCTCACATATCACATAAATACCACCTCGTAATAATAATTCAACATGACTAATAACAAATAAGTACATACATACATTTATATTAGCTTTCAGCACCCGTAGTCGCAATGTGGTGCAATAAAGATATGTGTAAAGAAATGGGAGATGTAGTAGATTTGGTCGTTATAGTGATCGCAGATCTTTCCTCTTTGAGCCGGAATATTGACTGGATTGGAGCCAGGAGATGAACCTCGCGGGGGCAAATGATGCAAAGTAGGGGTGAAGCATTGCACTGGCTGCGACACGGCTTTCCGGGCGGAGCTGTAATTTTGAGGGTTACAAGACATAGGTGTAGCTCGATGTCGATTCATTTAGACTAGCATTGAAGCCTTAAGCTTTCGGCTTGAGCTTGCACGTACTCAAAGACACGGTTGCTGCTCAATATAGCTCGCGGAAACTGATTTGTCACAGGTAAGATAACTAGTAGGCCTGGACTGACTGTGGAGTAGCGCCAGTGAAAACTTTGTCAAAATACATACATTATGACGGTCCGAAAAAAAACTAAATTTCATAAGGGGTAAAACCAAAGAATTAGATTTTTCACAATTTCAGGTCAAAGTCTTGGCAAACTGCTCAAAATAAAAATGAGCAATTGAGGAAATCTAGAACAATCAGTCGCATGTTCCGACCCCTCCACAATATTTTAATACACATAATTAAAACACAATTACAGTATAAAAATGTATGAAAAAAAATGTTTTTTTTGGTGAATGTCGACTTCCAAAATTATGAGTGGTAATATAACAGTAAATAAAAAATTTTCAAAATTTTTTTGATTTTATTATATGATATTCGGTCTTTTCGGGAGTAACTTAAGGAGTGGTTTTACAAGTCTACTTACCTGAAGAAGCATCCCCAGAAGTTCCTGTACCAGTTCAGAATCTACGTGAACATCGGGTTCCCACCGCGATGAACGACAACTCCCGATACCAACAGTTCAGGGGTCCTTGTACCCTGGTAATGTCTTTACCTGAAATAAACATCTTTATCTCTAGATTTAGTTAGATTCCCTCACCTCCGGCCACTCGACTCGTCTGGAGTACCCCGAATGCTGAAGATCCCATATCCAATTCTGGTCCTTGGTGCCGCGGTAGTCAGAGGGGTTTCCTTGGATCCCGGGAACAAAGCGGCGCCCGTGCACATTTCAGCGAAGATGCAACCGACTCCCCTGCAATGTTAGTAGATAGAGTGTACCTTTTATAAAATACTATCCTCCTAACACATATCCAGTGAAGATGAATATGAAGTCGGTACTTCCCATGAGAACATGCGGGCGGTACCATAAGGTGACCACCTCGTGAGAACATATGTCCTACTTTTCCGCACAGATTTCGCCCTGGCTAGATCAAAGTCTGCGAGTCTTGAAACGAGCTCTCGTCCTAGCAAGTTTTGTGGTTAAATCTCTGAAAAAGTTTTTATCGTAAGTGGCCGCAACGGCGCCTCCGCCGACTCAAGCGGTCGCCGCGCCGGCCTCGGAACCCCGAAAATGTCCGGCGCTCCAAACAACCACTTTTTTGCACTACGTTGCGCACAAGGCCACTCATTTCACGCCAAGCTGCGGAACACCGAACGTCTCCCCCGCTCCAAATCACTCCCTTTCGCAATACGTTGAGCACACACAAAGCTGGGGAACTCCCATAATTACCTCTCGGCCGCTCCGAGCAACCACTTCTCCTAGCACTTCATCACACAGCAGCTTACTCATTTCACAAGTCGCCGAGGTAAGCTGCGGAACCCTGAACGTGTCCGCCGCTAACAACTCCCTTTCGCAATACGTTAAGCACACACCAACTGCGGAACCCCCAACGTGTCGGACGCTCCGAACACTTCTACGCCACTTCATTGCGCACACACCAGGTTACTCGTTTACGCCGAGCAGCGGAACGCCGAACGTGTCGGCCGCTCCAAATGCCCACCTTTCGCGCTTCAATGGCGTCGGCGTGCGGGCCAGGATTTCGCGCCTCGCTCGGATGGGAGCGCAGTATCACCACTCGGGAGCAGTTTGCAAACTAACCTATGAATCTTCTCCTATGACAAAAATCGAGTCCGCGGATTGAGAGGACAAGCTTGATGTCAATGCTATCCAACCCATAGACGTTCTGCTCCAGGTACTTGCTCAAATCCATTTTCATGTACTCGAACACATAAGTTGGTTGAGGTCGTTGATAGAAGATGTCGTGCAAAGAGACGATTGGGATTCGCATGACGGAGGTTTCTGAGAAGCGAGGCCGAATTTCACGGATAGCGGTGAATGGGAGACGTTCTTGAAATTGAAGTTTGATCTCTAGTTCAAGGCGACTAAGGGTAAGGACCTCTGAATATAATTGAGTGGTAATATCAGGTTAACTAGCATAACTTCCTTGGACTCGCACTTATACACCGTTGCATAAGAGCCTTCCCCTGTCAATTGTACAGATCATTCACATCCTGCGGTGACGTACTTCCTCCTTCGAGGAAGCGTGAGCGTATTTGGATCGTAGTATGCTGATCGTGGTCGACGTCTTCGAAGATGTGTGAAGCGGCCACAGAACTGTTGCTAGATGGTGGAGGTGGCATTCAAGGAGAGTTCACGCTTGTTTAGGGGCACGGACATGGTTTCAGATGGATTGCTTGAGCGGGAACGTGATTGCGGCTGATAGGGTATTACTAGGTTTGACTTGGAAAATTTTCTTAGAAAAACAGTTTAGCGGGAAGTTTAAATTTGCTGATTAAAAATGTTGGCGTAAGTGAATGTCGAGGAAGTACCCCATTATGGTTTGATCGACTACAAAAAATGCGGGAGGACAAAGACTTTGCAACTGATTTTGCAGGATTAAGCTGACGTAAATTTTTCCTGTGGGAAAAATCATAACCCCGCATTTTTGTAGATCAACCGCCGCAATGAGACAGCCATAGATGCCACCACGTTGACGGGATATTTAAATTTTGAGAAACTCAACATTTTGGCGGGAAGTTCAAATTTTCTGAGCAAATTTTGGCGGGAAATTGAAATTTTCTGACAAAAAAATTTTGGCGTTGGGAAATTGAAATTTTCTGACAAAAAAATTTTGGCGGGAAATTGAATTTTTGACCAAAAAATTCTGGCGGGATTATTTTCTGCGAATTAAATTTGGGTAGGGAGAAGTTCAAATTTTCTGTATTTTGCGGGAAAGTGAAACTATTGGCAAAAATATTTTGGCGGGAAAATCAAAGTTTCTGAAAAAAATCACTGTTTGGCGAGAAATTGAAATTATCTGACAAAAATATTTTGACGCGGGAAAATTTTTCTGAGAAAAAAAAATTTTGGCCGGAAATTCATAATTTTTTTTTTTATCTATGAAAAGAAAATTCTACGGACCGGAAACGGCCCAACCACGGCTCAAGAGCCGTCTCGGTCGGTAAATGTGATTTTTGCTCTAAATAATGCATTTAACGACGTAAAAATGCTTAAATTAGCCAACTGGTATCATAGGTAGTAAAAAAATCCGTTTTCTCAAAATTTTTTTCCTCTTAAGGCCATTTTTGTGCATTCCCCGTTAGTTTGCCTTGGTCCGTCGCGCTTTTCATATCCGTAGTTCACCCGTTAATGGTCCGTTCCCTATGAGGTCCAACATCGTCGTAAACGGAGAACCCGTCCCGGCTTTGCCTGTGGTCAGATATAAGTAGTAAGAGTGGTGTCAGACTGCCCGCATTGGATTCTACGAAAAATGCGGAAATTTTTCCCCCAGAAAAACGTCACGTCAGCACACTCTTTAGATAACCATGCGATACCAGTTGAAAAGTCTGCCGTCTCTTCGCATTTCTCGGAGAAAACCAAAATGAGGCACTTTCACAAGTTACAACAAACTTAACAAGGTGTCGAGACTACGGTAATTATAGTCTTACATATACAACCTAATAAGAATCTCCATTACCTCAAAAAGCTGAAAATTTATCTTATATTAGGATGTTCTGGTGTGCTTCCACTGCCGGACCCCGATTATGCCACATTCACATGATTGGAGTGCCATGATTGTGTGCGATCATTTGTTCCCCGTTTTTCGAGATCGGAGATTTCGTGGAGCCTCCTGAAAAAACAGAAATAAATGTGGAATTAATATGGGGGCTCAAATGTTTTCGGAACTAACCTCTTTTTTGGGAACTCTGGAGAGCATTTTTGTGTAAACTGACTAACTCGTGCCACCCCCCGCACCCCATAGAATAAATTGGCTAAAATTTCGAAAAAAAAAACTCGCCACCGCCGTTATTCTTGTATTTCTTCTCCTTATTCCGACTCCGACGCAAAGTGAAAATTGACGAGGACGGCTGGAACAGGATAATTGTTTTGTGTTTGTTTCTAGTGGAAGAGATGCAGAATCGCCGAAGTTTAGAGCGGGTGGCGTGAATTACTGACCTTCCGGGTGCTCGGCGAGCCGTCCACGTCCTGAATTGCGTTGGCGGCGACATTGTGGTGATCTGGAATATGTGGATCGTAATCGAAGCCTAATATTTAGGCTTAGGCTTAAGCTTAGAGTGACTTAGGCTTAGGCTTAGTCGGCTTAGGCTTAGGGCTTAGGCGGCTTAGGCTTAGGTTTAGGCTATGCTTAGGCTTATAGGGGGCTTGGGCCTGGCCTTAGGCTTGAGCTTTGGCCTAAGCTTAGGCTTAAGCTTGCGCTCTGGCGTAGGATTAGGCGTCCGCTTTGGCTTTGGCTTAGGCGTAGACTTAGCCTAGGACGCTTACAGGCACCCCCTAGGCTTACAAGAAATCATATCCAGTTACCGACCGGTGGCCTAGGATTTCAAAAAATGACCCTTTTTGAAAAATCGAATCGAAATATCGACGAATTTTGTTTTTGAGGCGTTTTTTTAATTTAAATTTTTATAATTTTTATCGGTTTTTCGATTTTTCATGAAAATACCAAACTCACCCTATGCAAGTTCGCCGACGACTTCGAATAACAGCGGTGAGCTGTGGATGCTGTATCATAGACACTGAGCACGATGCTCTCATAGGCCTCTCGGGTCCTCCTCCAGCCCAAACCTCCAATTTGGGATAGGTTATTTTTCCCCACATTTGAAAGATGGTATGTCTGCAAGTGACATGTTTTTTTGGGTGGGAAAAAAGAACGTGAACGAATAATTTGGATCAGCGGGGAATTGGGGGGGTGTAAAAAAGAAGAGCCGCTTGGAGTAGGGGTATTACGAAATGAGATATAGAGGAGCAGCCGGTGTGACGGCGGGGCGTTAATGGGTTACTAAAGCCTACACATTCCCATTTTCAGTTTGAAACAAGGAAAATAGAAGAAAAAAAAGAGATGAACAATGACTTACGGGTGGGTTCGGTGAAAAACAGGGGCAAGCAGGAAGAGTGAGGAAAATGGATGGTTGGAGGAGTTTTGGCATTTCTATTAGGCCGGGAATCTTTAGAGACACCTGGACTGTCCCATTACAGTTTGATCTACAAAAAATGTGGGAATTTTTCGCCCAAAAAATTTTCAACAAATTTAGATATTTTTTACATTTTTTCCCCAATTTTCAGCCATATTTCAGCCATGACTGTCCTATATTTTATTTTCCGGCAAAAAAAAATTTTCTCTGAAAATGTTCGAAACTACTTAATTAAGCAAGAAGGCATTTTTTCGGAGATCAATTTTGAGTCCTCTAGAATTTCTATTATCCATTTTAAAAGAGTTTTAAAATTGTAATTTTTTACAAAAATTGCTCACTTTTGCCACTTTCTAATAGTTTTCTAAACCTAGAATTTCTGAATTCTGCATATATGAATTACCCGTTATCAATAAATTTAGACAATTATTTTCATTGTTTCCAAAATTTTCAGCCATTTTTCAGCCAACTGTCCTATTCTTTGGGCAAAAAAAATTTTATAAGGAAATCGGACTACATTACACAACTTCCATGTTTTCTTCGTAGATTTAAGGTCCATGACCACTGCTTGGTGGAAAAGTTTTCCGAGTATTTAGGTCACCGATTTGAGTTGGAAGAGTTTAATCGCATTACTCCCCAACTGTGATAGAACTTCAAAAATTAATATGCAGGGACATCACTCAAATATCACATGTCAGTTTAAAGGATCACGCTGATTATCCGAGTGGGTCTCGCCACGATCCAGGTGCTAAATTTTCACAGTATTTAGTATGTACCTAGTGGCATATTTCTAAACAACACGCGCATAACATCGGAGTGTCGTTGCATAGGCCACTCTGAGAAAAACATAAACAAATGTGTGATAGAAAAATTAAACCACAACTAACGGATTTCTGATCACTCATAAGTTGAAATGGAAGAGTTTTTGCCGAACTAGGTCACCATATTCGGGGTAGATTTACGGCGCGTCGCGGCTCGACTTTGTAAAACTAAATGTATTTGTCTGAGTACACGACTTTCCCAGGCGTTGTCCGGCAGATTGTCAATGGAGCGCAACGTAAAGTTCAATGAGGAAGGCCAGAACCCCGTGACCAGGGATTTTGAAATTTTGCAGATATGAACAAAATGACAATAACTTAAAATGCATTAATCCAGCGGACAAAGGGAAGAAAATAAGTAGTGAAAGAAGTGAAAAAAAAGACGGACGGGGCTTCTCTCATAAAATAGTAATTGGTCATTCTAAGTGTGCCTATTGTCTTAATCCTTATTTTTTTTTCTTGGCTCATTTTACCTCAAAAACCAAATAGCGCGAAGAGTTCTAGAGAACTAGGCCACGCGGAGAGGGAAAAACTGTCACTGGAATTTCTACGCTAACACAAAATTTGTCCCAGCATACCTACGTGGCAGTAAAAGGAGAAAGTTCGGCCACTTTTCGGGCTATCAAATTTCCCACTTTCACCAATAAAAAAGAAACCACTTGTGGAAAATGGCCGTGCATACTAATGTTCGGTCACACACGTTTTTAAAACTTTTTTGCTCAAATTGAAGTACAGAGACCCTTCGATGGGTTTTCACTACTTAGCTACGTGTACAGAGAAAATTCGGCCACCAGACGCACTTTTATTCAAGGCCACACCTCCAAATCCTTCAAAGCTTCAAAAATTTTCTACGTGGCCGTGTACCAAAAAATTCGGCCATCATCTTTTTTTTGGGTCACGTCGCCAAATTCCTCAGAGCTTCAAATTCGAGATTTTCTACGTGGCCGCGGGAGAGAAAATTCGGCCACCAAATCATTTTTTAAGGCCAAACCTACAAATCCTTCAGAGCTCATATTTTATCTACGTGGTGCCGTGTACGAGAAAACCCTGCCACCCAATGAATTTTGAAGGCCCCACCTCCAATTCTTCAGAGATCATATTTTCTACGTGGCGTGGCCGTATACGAGAAAATTCGGCCACCAAATTCTTTTTTAAGGACAAACCTCCTAATCCTTCAGAGCTCCTATTCCCTTCGTGGCCTAGGAGAAAGGTCGGCCACCAAATTAATATTTCCACGTCGCCAAATCCGTCATATTATGAGGAAAAAAGTAAAAAATAATACTAATAACAATTGAGGACAAATTGAAACCCCATATAAAAATATAAGATACTAGTAAATGATTAGAATGAAGAGCGAATAGGAGGCCAGAGAGAGAGAGGGGAGGAAATTGTGCTGTTGAAGACCTTGAAGAGAGATGCACAGAAATAGATAAATTTGAATTACAATGGGGTAAGGAGCCGGGTAACTGTCCCCCCCCCCCCCCCCCCCCAAAAAGTGCGAACAAACGTGATGAAGCGAAGCGAAAATCCGGAGGGGGGGGGGGGGGGGGGGCTGTGATCCAGGTTGATAGATTTAGCCAAGTGTTTCGACTTTTGGCCGAGTTGAGCTCTATGAGCCGGGCTCACCGGAGAGAGCCCATGGAGCCCCATGAAGCAGAGGGTCACGAGGTTTGAGACTCCGGGAGATAGACTGCACAACGTTCAAAGACTAAAACTTTTTTTTTTTGCTAGGTGAGGCATGAAATATGGAGCTTTTTTGCAACATAAAATCCAATTTTTGTAAAATAAGGTCAGATGACGTGTGTATAATCTGGCTGAGAAAACCTGAAAATTGATCTACCTTAATAAACAGGGCGCGGGTGTAAAGCCGAGCGTCGTTGTGATGCTGAATTATTGTTGAACGAGTTCTGGAATTCTGGCCCTCATAAATTAAATGGAAGACTTTTTGCCAAACTAGGCCAGGCCATATCTGGGGTAGATGCGCGCTTTTTTTTGGGCATAAAATTCCCGCATTTTTGTAGTTAGATCAAACCGTACAGCCTGACATCACGTGTTTTTGGCCCCGCTAAACAGGGCGCGGGTGTAAACATTCAAATATTATGTTAAAAAAACGCATGAATTTGAACAATTTTGCGTAGAATTTTTTAACAAAAACATACATTGAATAACTGATGCGAAACGAACAGAACTGCGTAAATTTTCTGAAATTGAAGGACAGGGGAAAAAAATTGTGAAATTTTGGACATTTTTCCCTACGACGCATTGAGCCACCCAGATGAGCAAATAAACCGGGGGAGCAGGAGGAAAATGGAATTGACAAAAAAGGCGGGTGAAGGAGGAGAAGCTCACGTATTTAGTATCCCATAGAAAGAGTCAATTTTCATTAAAACTGCGACAAGTGACTACCAGGGAGCAGTTGCGCTCTACCGACATAGTCAACCAAGGTCCACGTAGAATATGCCAGTCTGTCCCATTACGGTTTGGTCTGCAAAAAAATGCGGGAAAATTTGGCTCAAAAAATGTGACGTCAGCACACTCTTAACCATGCGAAATCAGTTCCCACATTTTTTGGAGATCTACGTAGATCAAGACGAAATGAGACACGGCACCACGTAAAGGTCCTTCTTACAGAGTGCGCTGGAGAGCGATTCAGGTGCCAGTTTTCTAAAAAAAAAATCTAACATGAGCGAAAAATGTGCGTCAAAAGTGGAGTTTCCTTTAGCGATGTAAAGTTTGGAGAAAAATTGAAAACTGTGGAGGAAGAAAAACTATTCGCAAGACCGATTAAATAGTATTTCACTTCTTTTATTTTTCAACTTTTTGCAATTGCTTTGGCAGGAATGGGGAAAAGGAAAAAAAAACGAAATCATCGATAAAAACACCACTAGTCCACCCAGAAGTAAACCTAGCTTATAGAAATAGGCCACCCTGTATGGAAGAATTTTAGGTCATCGCGTAGAAAAGCTAGGCCACCCTGTTGAACTGCTACGCCACGGTGTTGTACACTTAGGCCACTCTGAAAAAAATCTAGACCTCACTGTAAAAAATATAGGCCGCCTTGAAAGAATTTTAGGTCATCTTGTAGAAATTCTAGGCTACGTTTTCGAAATTCTACACCACTCTGTAGAAAACTTGGGTCAGCTACTACTCGACATACTAGGCCACCCTGCAGAAAACTTAGGCCATCTGCCAAAATCCTAGGCCATAGAAAATTTAGGGAATCTACCAAAATTTTATGCGACTATCTGTAGAAAACTTAGGCTACCTCGTTCAACCATGTTCAAGGCCACCGTGTAGAAATCTTAGGCTACCTCGTTAAAATTCTAGGCCACCCTGAAAATTACGTGATCTACCAGAAAAATTCTATGCCCAGAAGTAAACCTAGGCACCTTGTATAAATTCCAGACCACCCTGTAGAAAACTTGGGCCATCTACCAATACTCTAGGCCACCCTGTAGTAAACTTGGGTCATCTACCAGAACCGAACCTAGCCTGTTCCGTTACGCCGCATGCTAAAAAACGCAGTCCAGACCTCCCTGTAGAAAATCTAGGTCACTCCCTACAAAACCTAGGGCACCCTGTGAAAATTCTACACGTGAAAATTCCCTTCCCCAGAATAAACTAGGCCACCCTGTTAAACTCTTGGGCCACTCAGAAAAACTAGACCACCCTTATAAAAACCTATGGCCTAGAAAAAAGCTTGGGAAATTTTGTGGAAAAAGTTAGCCGAAAAGGAAAATCTAGGCCGCCGACAAAAAAGCTAGGCCACGTGGCAAGAAACTTAAGCAGTGACGAATGATACGAGAGGCGTATGTTTGAGGTCAAAAAGGGAGAAAGAAAAAAAGACGAGGCGGAATGTTTCTTCTTTCATTTCAAAAGAATCTCCCCGTCTCTCGGCCACCAATACTCTCACTACTACAACTAATGTTTTTAGGCCCCCCCCCCCCCCCCCCCCGGGCACTTAGCTTTTTTGACGGAAGATGCCACAATCGAAGAGGAAACCATAAAAACCCGCCAACGACCTACTCCTTTTTAAGGCCCGGATGCCCAGATGTATGAAAAAATCGGAGAAACTGAAGGCTTCTCCCTCCCCCCCCCCTCCCTTAAAAAATGATGAATTACAAATGGTGCCGCCCATGTTGACAGTGTTTGCTTTCCCCGTGCTCCGCCAGCTATCTAAAAATTCGGGGGAACATAACAGCCACCTTGAGTTACGTATACAAAGTGACAGGAGGGAAAGATAGAGGTGAAAGTGCCAAAAGGTAGTCGAGTGGTTCGAACAGGGTTTGCAAAATTTGGGCTGTGCGCGGCGCCTTAGACTACTGCGCCACGCGTGCGAACTGTAAATAGGACTGTCAGGCAAAATACGAACGTTCGGTTTTTAAAATCGATTGGCAAAAATGAAATGAATGAAGACACACGAATGACTCATAATTTTTGCATAAAGCGGCCTGGGTCTGGGAACTGGCGTTGAATTAAGCTAAATGAAGGAAAATTGAGGCATCTCCCGTTGAGTAGAAAAGTGAAGAGGGCGGCAAAAAGAGATAGGGGGGGGGGGGAGGACCCATTCATTTTACACTCCACACTCCACACTCTGACTTTTTGATACGAAGGACATGAGTACGAACACGCGAGCACAGAAATACGACACGTTTTCTTCTCATTTTTTTCATTTTGCAAAAGGTGATGATGATAATCGCTTCTAAGAAGAACGAGGGGAAGTGTACTAAATACTAAAATTGCGAGTGGATAAATTGAATTTTTTTATTTTCGGCTCGGCAAAACCTGAAAATCAGTCTGGAAGAGTTTTGGCTAACTTTTTGTTTGTTTAGAAACTCACTTTTCGCTGCGAAACAACCTGAAAGGATATAGTGGGCATGCACCTTTGAGCGCTACAGGCCTGTGGAGGGAATTCAGTATCTCTTGGAAGTCAGATTTGCCGATTGTTTTAACGCAAAACCTGAATTATAGAAAAGAAAATATGAAAATTTAAATATAATGTAATAAATTAAGCAAATTACATATCAACTGAGAAAATCTCCTGCTTGGGGAGAGAAAAATTTGTTGAAAAAAAGCCAGAAAATCGGCAGGAAAGCAATTATCGAGCAAGATCCTTTTTTAGGTGCAGATATCGGTTAAAAAGGAAAACACTATTTTAGCTTTTAACTATTTTGTCTTAAGTTCAATGTTATAACGCAAGAAACGATATTTCTCTGGCATAAATTTTAGGTCCTAGAAAGCAGATTTTCACGTAGATTGGTCTGAAAATAATATTGGAGTAATTTTTATTATTTTTCCTTGCATTATAAAATTACTTTTATTTCCCAAGTCTAAAATATTTTCCCGTTCTTTTATATCTCGCGCTTCTCCGGGATGTTGCATCCCATTCGACAAATGTGAGGAGTCTCGGAGTCGCTGCAAACGCGCTCCACTGGACACAGAAAATAAAAAACCAATAAATTGTTCGAATTTATGCAATTTTCTTGTAATTTTCTCTGTTTTTCGTTTTCTGCAAAAAAGACAAAATTTACAGGTAGCAATGGATGGGGGATTCATATCAAGGGTTATAGCATATGTGTAAGGCTAAAAACTAGGAAAAACTAGGAAAAACCCATGGAAAAATAAAATACTCTGAAATTTCAAACTGCTTTCAGAGCCTGGAATCAGCAGGCGGCTTCACAATATCAACAGCAAGGACAACAGAGTACCCGTAAGGCTCGAAAAAAATTCAAAAAATTCCGGGGAAAAAAATCCATTAAAAAGATCAAAATTTTCAATTTTTTCAGCGGTAGTGAACCCGTACGCGGCGAATCCATTATGGGTACGCGGCAGCACAGCTTCCAACCACTCCACCACCGCTAGTATGCCTTAAAATTGAAGAAAATTTGATTAAAAATTGAAAAAATGCAAATTTTCAGGTAGCCGATCCATACGCCGGCCAATTTCAGACAATTTCCATCTCAAGCCACCAAAATAGCGCCCAATCCCTACTTTAAAAAGCCACAAAATCAGCAGCAACCAATTTTCGCCGTGTTTTCCGGCTGCAAAAAAATTAAATTATCGATTTTTTAAAGGCTACGACGCGGCGGTCTACAATTACTCAGCAGAACACTCCGAAAGAAACCAACGGCGGCGGCGGCCGGGAGAGACAGGGATCTGGGGATATTAAACAGTACTATTGTGACGTAAAAAACGTGGAAAAAATCGAGTAAAACACAGTTTTTCAAAAACCTGAGAAGTTCCGTAAAAAATCCTGTTTTTTGACTAAGGAAAAAAATCGGGTAGCACTTTTAGAGATAAACGAAAGTGGGATAAATCGAATTTTGGACCTGATTTTGGGCTTGAAAGCATGATTTTTATCAGAAAACACAGTTTGTGTTTTTAAAAATCTGAGAAAATTTCTATTAAAAGTCTTGTTTTTGGATGTTAGCAAAAAAAATCGGGTTTACTTCATTTTTAAGGGAACAAAAGTGGCCAAAAGTTAATTTCTTGTAAATTTTCACATGCAGAATATTGAATTTATTAGGTTTTTTCCAGAAAAGTAGTTTTTTTTTCTACATTTAAGGCTTTTAAAACTGAAAACATGAATTTCCTGAAGAGGAAAATCGACAAAAAAACCCATCTTTTGGCCAAATTTAAATTTTTGAGCAAAAAAATCGGGTTTGCAGCACTTAAAGAGAACTGTAAAAATTCAATTTCTTGGAGAAAAAAGGAATTTTAACACCTAGCAAAAAATTCGGGTTGTCAATTTGTTTGAAAAAAAACTTGAAAAACCGGATTTCCAGTTGTTTTTTCATGATTCTCAAAAATCTCATAAAAGGAAATAATTTCGAATTTTTTACTGAAAATCGCAGAAAAATTGAAACTTTTTTTTCAATTCCGATTTAACAAACATTTTTGGTACGCTAAAAAACGGAATTGATTTTTAGCCTTTTAAGTTCGGAAAAGATGCTGAAGATCGAGTCGGAATTTTCTATTTAAAGAAATTTGTGCTGAAAAATTGATTTTTGTGCTCCAAAAACTGGAATTTTTGAAAAATTCGACAAAAAAATTTTTTTATTAGTAATTTTTTTAATTTTTCAACCCGCTTTTTGCCCAATTTTATTTTATTTAAAAATCGGGTCTACTGAACTTTTAAAGGTAGAAAAACTGCAAAGAGTTAATTTCTTGGATATTTTAAGGCGTTAAAGTCCAAATAAACATGTTGAAAATGGAAATGTCTACAATTGGTCGATTAAAAAACATTTTTTTCGCTAAAAAATTGAATATTTTTAGGCTTTAAGTCCAAAGAACAAGATGAAACTTGAATTTTTTTTTCAATTTAAAAAAATTTTGCTCCATGTCAGGCTCCCAAACACTGGAATTTTGGACTTAATCGAAAATTCGGACAAAAAAATATTTTTATTCGTTTTTAATTTTTTTAATTAAGAAAAATCCCAATTTCGAGGTGTGAGCAAACTCTCGTGCATTTTTGGGGTTAAATTGGAATAAATTATCAAAAATTTTCGAATAAAACGGATGGAATAAATCTGATTTTTGTAAATTTTTCGAAAACAAAAATTTACGTTGTTGGCAAAAATTAAATATCTCATGGAAGTCCAAAAACCATGTAGATAATTCGGGAGGAAAAAAATTGGGAGAAAAAAATTTTTAATTTCAGTAATTTGAAAAAAATATTTAAAGCTGGTGTAGTCGACTTTATTTATTGCTTAAGTAGACTCGAAATTGCCTAGAAATACCGAATTTCATAATGAAACTTCTTGAAAACTTCTCACAAAAAAAAAAGTTATGACGGCCAAAAAATGGACTATAATATAATTTTGAAATTTGAGCGACTTTTCAAGCGGCTGGAAACATTTATTCGCTTTTGAAATCACCGTCAAATTTTGAGTATACTGTGCATTTATGTTGCGTGTTTTCAACTTCATTTAGGTATTATAAAGTCAAAGGGCGGCGAGATTTTTAATTTTTAGTGAACCTGACGACATCGACTTTATCTCAATCGAGTTCAAAACTCAAGATAATTAAATTATATTATCAAAATTTGACGGTGATAAGTTGTAAAAAGGTAGTTTCTAGCCGCTTGAAAATCGGTCAAGTTTCAAATTTTAACCAATTTCAGGCCATTTTTTTAGTCGTCATAACTTTTTTTCGAGAAGTTTTCAAAAGGAAGTTTCATTTTGAAATTCGTTGTTTTCATTTTGAGTCTTATAAAGCTTTTAATAAATAAATTCGACTACACCGCCTTAGTATAAATATTTTTTTGAATTTTTTTAAAATTAAAATTTTTTTTTCCAATTTTTCGATTTTTTCCGCATTCTCCGTGGTTTTTGAACTTCCAAGGCCTCAAACAATATTCAGTTTTCGAAACTATTTTTTTTTCGAAGAAATTCCTATAAAAATCAGATTTATTCCATTCTTACTCGAGCAAATTTTTGATAATTTTTTCTTTAACCCTAAAAATGCATGAGATTTTATCACACCTTGACGCTAATTTGCTGGAAGTTATTTGTAGAATTTTTGGAATTATTAATTAAAAAAAAGTTTTTTTTTTTTTTCCGAATTTTCTACATGGTCTTTGAACTTCCAAAGCCTGAAAATGATTTTAAAAACTTTTTGCTTTATTCGGTTGTTTTTGGTTTTTTTTTTTAATTTAAAAAAATTAAAAAATTAATAAAACTATTTTTTGTCTGATTTTTCTATTAAAGTCCTGTAAAAAAATTCTATTTTATAGGTGTTCAAAAAATCCTAATTTTCAGGCCGTTTTTTGGCCTTGATATTCAATTTTTACACAAAAATTTTTTTTGCAGTTTTTTGCCTAAAAAAGCCCTCGAACAAAAAAATCATCTTTTCTCGAATTTTTGGAAGCAAAATTAAAAATTTCAAAAATATCAATTTTTTGGTGTTTTTCGGGTTTTTTACATAATTATTTTTTCATTTAAAAAGTTTGTAAATAACCATAAAATTTATGATTTTTTAAATTAAAAAATAATTATTAAAGAACACTCGAAAAACACCAAAAAATTGAATTATTATTTCAAATTTTTAATTTTTCTTCCGAAAATTCGAGAAAAGATGATTTTTTTTCGACGATTTTTGAGGCAAAAAACTCCAAAAATAAATTGTTTTGTAAAAATTTAATAAGGCAAAAACCAGGCTGAAAATTCGGATTTAAAAAAATAATTTCTTGCTATAAAATAGATTTTTTTCAGGACTTTAATCGAAAAATCAGACAAAAAATATTTTTATTATTTTTTAATTTTTTTAAATTAAACAAAAAATCAAAAATATCCGAAAAAACCGAAAAATTATTGAAATCATTTTCAGGCTTTGGAAGTTCAAAAACCATATTGAAATTTCGGATAAATAAAAATATTTTTTTGTCCATTTTCGATCAAAGTCAAAGACTTCCAGTTTTTGGAGCCTAAAAATAATCAAATACTGAGCAATATCTTTTTAGATTGAAAATGAACGACAAAAAAGTTTCAGCTTGTTTTTTGGACTTTAAAGCCTAAAAATTTTTTCACTTTTTTAGCGAACAAAATGTTTTTAATCGAACAAATAGAAGACATTTCAAATTTCAACATTCGTATATTTGGACTTTAAAGCCTACGAAGAAATAGAAATTAACTTTTAGCAGTTTTTCTACCTTTAAAAGTTCTGTAGACCCGATTTTTTAAATAAAATCTAAATTTGGGCAAAAAGCGGGTTGAAAAATTCAAAAAATTTAATAACTAACAAAAATATTTTTTCATGTCCGAATTCGTTTCTTCCAGTATTGTGGAGCATAAAAATAATCGACTTTTCAGCACAAAAAAAAAATTTGTAAACAGAAACATCAATTTTTTCAGCATCTTTTCCGAACCTTAAGGCCTAAATATATTCAATTCATTTTTAGCTAAAAATGTCTTTTAAATCGGAATCGAAAAAATTTCAATTTTTATTTACAGTAAAAAATTCGGAATTTTTTTCCAATTGTTATGTGATTTTTGAGATAAAATCATGAAAAACCAACTGGAAATCCGGTTTTTCGAGTTTTTTTTCAAAAAAATTGACAATTTTCCCGAATTTTTTCACGCTATTTTTGGTAATTTTTTCTCCAAGAATATCGAATTTTTTCAGTCTTTAGCTTTAAAAGTACTGCAAAAAACTACTTTTTCTGGAAAAAACCTATAAATTCAATATTTTGCTTTTTTAGCTTTTTCCTTTTTTTGTGAAAATTTAAGAAATTAACTTTTCGCCACTTTTGTACCCTTAAAAGTGCAGTAAACCCGATTTTTTTGCTGAAAAACTTACAAAAACAGGAATTTCGGTTGAAATTAAAATTAGGACAAAATAAAAATATTTTTTTGTCCGAATTTTTCCAAAATTTCAGTTTTTGGACCCTAAAAATATTGATCAATTCTTTAGCGAAAATTGTTTTTATTTTTCAAAAACATGCTACGACTACACCACAACTCTGTCAAAAAACCAATGCTAATTAAATTAGAGAAATTCTTCAAAAAATCCCCAAATTTCCAGGTTTGCAAAATCTCGTGCGCCGGCGGAATCACATACAACAGAGCATCTGGAAGGTCAACGGCACAAGAAAAAGAAGCTATGGCAAAACAGGGCATACCGAGCACTTGCACACCCTCGCTAAAAGATTGTCCTATCGTTGTGACCTATGTGACGTCACTTGCACCGGTCGTCTAAGGGCACGTATTCGACGCTCACGCTCATGGCGGAAAACACTTGAAAACTGCACAATTGCACAAAAAAATGGGAAAACCGTCCGCCTGAAGTCGACGTTCCGACGATTATTGCCGGGAGCCGATGGGCTGACGTAGACGTTTAAAGCCAAAGCGAAATGGCATAAACAAGCTCTGCCGGAAAATGTGCGGCATTTGAAAAAATAATAAAATGTTGGAAAAAAACGAGAAAATGCACATTTTTAGGCTCAACAAACTGAAAATATAACGCAAAAAAATTTAGAAAAGGATTCTTAGGAAAAAATTAGCGTTTTCTCGCCAAAAATGCTCACTTTTCGATAAAAATGTACATTTTATTTTTTAACTTGAATTTTTAAAAATATTTTAGGGCTCAAAAATGTCGTCTGTAAATTTTGCAAAAAAAATTCTAAATAGTGATTTTGAAATTTTGAGATTAACCTTCGCCAAAAAAAAATTTGAATTTGACAACTTAAAATGCTCATTTTTCGAGGAAAATGTAAAAAATTTTTTTTCATCTGAAATCTGTAATTTAAAAAATCATTGATTTTTTAAAAAATTTCTACTGTAAAATTTTGAAAAACGGTTGAACGACGTCAAAAAGAAGGACGTAAAAATCCGAAAAAAAGCAACAAAGAACTAGGAATTTTAAAATGTCCAAAAATGGTCTGAAATTTTGAGAAATCAAAAAGAACAAGTTTCTTTCCGTTTTTTTTTAAGCAAAAAATCGTATTTCTAGTCAGAATTTAAATTTAAAGCATATTTTAAACTTTTAAACGCAAAAACATTATCTTTTTCTTTAAAAAAAGACAATTTAAACGATAGCATTTATTAGCTTTTTTCTCAACATTGCCTGATAACACATTACATAATGAAACTTCTTGAAAAAAAAAAGCTCTCAAAAAAACAAGTTATGATTGCTCAAAAAATGGCCTCAAATTAGCTGAAAGTTAAAATTTGACCGACGTGTCAAATAGTGCGGCTGGAAACTATCTTTCTTTTTTGAGATCACCGTCAAATTTTGAGTATAAAATGTAATTATCTTGCGTTATCACCTTTGTTGATTTAGGTATAACTAAGTCGATGGACGGCGAGACTTTTAAAGGTGGAATACCGATTAAGACTTTGCTTTTTTAAACCATTTGGGATGACTTATCGGTGCGATACTGCAAGCCAAAGGTTGAGATAGCTAAAAATATATGGATACGCCGTTTTTTCCATCAGATAAACTTTGATCGGCCATAACTTTTTTATTGGAAAATTTTCAGAACGTCTCATTACGAAATTCGGCAGTTTTGTGGCCATTTTGGGCCTAAAAAAGCAAAGTCTTAAATTTCGGTACTCCACCTTTAAAAATCTCTCCGTCCATCCCTTAAAATACCTAAATCAAGTTGATAACGCAAGATTACATACTCAAAAATTTGACTGTGATTTCAAAAAGAGTAAAAAAAGTTAGCCTCTTGGCAAGCCGTTGAAATTTCAAAATTCCGCTAATTTGAGTGCCAACACTTTTTTGAGATCATAACTTGTTTTTTTGAGAACTTTTTTTTTCAAGAAGTTTCATTATGAAATCGGTGTTTTCCGACAATTTTAAGCAATAAAGCAATAAAAAATTAGAATATACCACTTGATAAAAATTAAAGATTTTAAGTTTAAAATAAAAAAATATGTTTCTTTCCGATTTTTTGATAGTTGAGCTAAAAGTTTTGGCGGGAAATTCAAATTTTCTATGTTAGAAAAAAAATTGCGGTGAAAACTCATGTGAACAGCACAGAACGGCTGCTTATGAGTATAGGTGTGAAAGTGTCTCATTTCGATGGTTTGATTTACTAAAAAAGCGGGTAATTCCCACAAATGACGTCAAGATGCTCTTTATTATTAAATTTAATTAAAAGAGAGCATGGTGAGGCGTAACTTTTGGGGAAAAATTCCCGAACTTTTTTTTGTAGTTCAAGCCGAAATGAGACACTTTGACACCACCACTTTCAGACAAAGTCCCCCACTTATTTGGTAAAACTAGTTCAAAACCCGACTGTAGTACATTTTTGGCAGAAATTTGAAAATTTCAACTTAACACCGCTCAATTTTTCCAAAATTTCACAGTATCATTTCAATTATGGTTTTGCTTTTTTAATTGAAAGATATATTTACAAAAATAGAGGACCATTTTTAGTAACAATTTTTTGGCGCTCTCAAATTACACCTTTAGTCAGAAAATTGCAATTTTCTCCAAACAAGTGATTTACAGATTTATTTTACCTAAAATTAACAAAAGATCGAAAATATTAGACTCCCGCTTTTTTTTTATTTCAATTTTTCCAATTAAAACACAAACATTGAGCATTTCTAGTTGGCACATACCAAATTTATAGGCGAAAAATTTGATTTCAAAATGTCAAAATTCAGAATTTTTTTTTGCTAAATGTTCAGCACCGATTTGTGCGCAAAAATATTTGAAAAAAAAAAAAACTCGAAAATTGAGCATTTTCAGTTGTAAAAGTCAACTTTTAGGCGGAACAAATGTGCAATTTTTCCCCAAAAAATCCAAATTTTCCATTTTCTATCAAATAAAGCACTGAAAAAATTTGTTATACCTAATGTGGAAAAAGTGAATTAAATCAGATTTTTTGAAAAAATGCACTTTTTTTTTTGCCAAAAATAGTTCCCCGACTTTTTGTTCCAGAGTTTCCTCACCAGGTCATCGGTATCATCGGATAAATAAATTTTGCGGGAATAATTGCGCTTTTTTTGTATATCAAACCGAAATGAGACACTTTTACACCCCACTTCAGGCAAACGACTTTTTTCCAGAGTCATCGGCATCAACACGGTAAACTTCGTCGGCGGTAGGAAGCACTCCACCGGACAACTCGAGGGGAAGAAATACAGCGCGATCCAGTTGCTGCCGCCCTGAGCTCACTCGGTGCCTAAGGAAAACCGTGGTGCTGCTGCAACGACGACGATTGAACGGTGGAAGACGAGAAGCTCCGAGCAATGATCTCAGGAGGTACAACCTGTCGCCGATGTACATGTCACTGAAACCGTGATGCTACCGGAAAACTGGTGCAATTTCCATAAACCGTGCGATTGCAAGTTTTCCGATCCGAATGCCAAGGACATTCATATCAGGTGAGTCGTCATCGTGTAAGCTATCGCAGAAGATTGATCCGACGTTTGGTGTGAAGCCACCGAACAAAAGAACACAGGAGAAGCGGAAGAATCAGCTTCCAGCAGTTCATGGATTGTGTAGATTTTATTTACACTAAATCAACAACAACACAAAAAACATGTTCCAACAAAATTGGAAAAAAAAATTTTAAAAATCCCAAATTTCCAGGTGTCTAAAACCCATCCCGTGCATACAATTTTTAGGGTTAAAATTGGAAAAAATCATCAATTTTTCGGATAAAAATGAAACACAATCTGATTTTTATAGAAAAAATAATAATTTGTTGGCAAAGAACTACTTTCAGGCTTTGGAAGTTCAAACTTTGTAGCAACATAATTCAGAAAAAATCGAAAGATTGGAAGAAAAACATTTTTAATTTGAAATAAAATTCAAAAAAATTTAAATTTTTTTAAAAATTGAATTTTTGAGTAAAGAATTTTTTGCTATAAAATTTCAATATTTTTCAGGCTTTCAAGTCCAAAAACCGTCCGTTGAAAATTCCGAAAAAATCGAAAATTGGAAAAAAAATTTTAATTTAAAGGTGGACTACTTGCTCTGTGGGGGGAAATTGCTTAAAACAATGCCTATGGAACCACAATGCCCGAATAGCATAATAAAAAAATTTTAAAATATACTCTAGATTTTATATTATTTTTTGAGAATTGGAAAAATCACAGTTTTTGCCTAATTCCTTTATGAATTACCGCCAATTGGTTCAGACTGGAGCGCGCTTGCATGTTTTTAAATTTATTTATTTTATTTATTCTTATTTTCCACCCATTTTTAATGTTTTCGATGTATTTTTATTTGAATTTTAGCAGAAAAAGTCAAAATAAATACTAATATTAAAATGCACGCTTACAGGCGTAAATCAGTGAACGATAATAATTAACTCAGGTTCGAAATCGTTCAAAATCGTTTCTTTTTCATTTTTACCTGTAAGCGTAGCTTTGCCTTTAGTCGAAAATTTGCATTTATTTTCACTTTTTCTTTAAAATTCAAGCAAAAATACACCGACAGCATGAAAAATCGGTGCAAAATAACAAGAAATAAAATAAATAAATTTAAAAACGCACTGCAAGCGCGCTCCATCGAACAAATCCAATTGGCGGAAATTTAATGGATGGGAATTAAGCAAAAACTGAGATTTTTTTTTTTCAAAAAATCATATAATATCAAAATTTTTGTTTTTTTTTTAATTTTTTTAAACATGACATTCGATCATTGTGACCCCATAGGCATAAAGGTGGTGTAGTCGAATTTTTTCTATTTCTTTACTAGACTCAAAATTGTCTGAACGCCGAATTTCATTAAGAAACTTCTTGGAAAATTTTCAAAAAAAAGTTATGGCGGCTCGATGGCCTATAATTAGTGAAAATTTGAAATTTGACCAACTTATCATTGTCGCATCGACTGGAAACAATTTTTTTTTTGAAATTGTCGTTCAATTTTGGGTGTACAGATCGATATCTTGCGTTTTCAGCTTTCTCAAGGTATTTGTCGATGGACTTCAATTGGATCTGTCAAATTTTTTACCAAATCTCGTCCATCGACTTAATACCTAAAAGCTGAAAACGCAAGATAATCGACCTGTATACCCAAAATTGAACGACAATTCCAGAAAAAAATTGTTTCCAGCCGCCGCGACAATGATAAGTTGGCCAAATTTCAAATTTTCACTAATTTTAGCCCATTTTCCGAGCCGCCTTAACTTTTTTTTTTGGAAAAGTTTTCAAGAAGTTTGATTATGAAATGTCTTCAGTGTTTTCAGACAATTTTGAGGCCAGTCTAATTAAGCAATAAAAAAAATTCCTGACTACACCACCTTTAAAGCAATTTCCCCACTGGGCGCGACTCAACCTTTAAAGGGGGATTAGAGTTTGTGGGTATTTTGCTTAATCCATAGACTAAAAGTGCATTCCAAAAACACCGAAGTGATTTCATAATGAGACTTCACAAAAAATCTCCAAAAATTTTTTATGGCCGGTCAAAATTCGAAAAAAAAAGATTGCGCAACTTTCGCGAAATTTGATATTTCGCACACTTTTCTTTGTCTAGCAGCCGATGGATTTTAGTTTTTCTAAGAATATCACCCTCTATTCCTTCTTGGTAATTTATCTCGCGAAACGAATCCGTTGATTGAGACAACTTTTAGGCCGATAGGCATCCAAAAATGCTCAATATAGGGATGCCTAACGGCCTAGTTGTGTCAATCAACGAATTTTCGCGAGATAAATCATTAAAATAAGGATTAAAGGGTGATAATTTCAGAAAAACGAAAATCCAGCTGCTGTGACAAAGAAAACTATGACCCGAAATTTCAGATTTTAGCGTTGCATCTTTTTTTTCGAAATTTTTTATTTTGACCGGCCATAAAAGAATTGTTGGAGATTTTTTGTGAAGTCTCATTATCAAAATATTCGGTGGTTTTGAACCAGTTTTAGTGTATTTAAGCAAGAATACCCACAAACTCTACTCCGCCTGATGATTAAAGGAATGAAAATAATTCTTGGAACGTTTGGTTTAATTTTTTGTTAAAAAATCCACACCGAAGAAAAGTCCACAGTATCAGAGCCTCCGAGCTTCATGAAAAGCCGTGGTTCGCCCCACCGTGGCTCCAGAAGGCCGGGAATTCAAAATAGTAGATGATAGAACTATTAACGAAAAGTACTCGCCGGGCTTAATCCGGGCGTAGAGTTCATTTATGAGGATCGACATCCTTATGTCTGATATCAATCTCTGGGAGGAATGTGTAGGATAATATCGCAGCGAGACGTTCGGACCCTGAAGACGTGGTGGAGCGTCCCACCACCACCTACCACAACGGACGCCGCAGACAGTGTTGGGATGCTCGAGAGTTGGAATTATTGCGAACGTTCATCAAATGACAGGGGATCGGTGTGCGGATGTGGTTCTGACGTGTACGCCGGTGCCGACTTCGGGTTGAGCAGGATTATTTAGGCGGTTGTTAGGAGAGTCGACGGCACGGGCCGGGCTTTTTTTTTTGCCGGAAAGTTCGGGATTTACCGGTTTGGGAACGTTTTTTTTTGCGGCAAATTGCCGGTTTTCGCCGGAAATGTGAAAAACGGCGCAAACCTGACAGTCTAGCGGGAAATTTTCAGTTTCGGCAAACTACCGCGATTTGCCCAAGGATCACAATCGTCCGGCAAATTCGGTAAGTTGCCGGTTTGCCCATTAGCCGGTTAGTTGAATTTAGCAGAGGAAATACGGCAAACGGCAAGTTGCCGGTTTCCCACGACTTACCGGAAATTTGAAAAACGGCAATTCGCCGGTTTGCCGGAAATGTGAAAAACGGCAAATTTCAGAATTCGGCAAGGCCGGTTTTTGCCGGAAATTTTCATCTTAGGAAAATTGCCGGTTTTTGCCTGAAATTTTCGTTTCAGTCAGGGAAAATTGCCGGTTTGCGGGTTTGTCGAATTATCCGGAAATGTGGAAAACGGCAAGTTCCCGGTTGGCTGATTTGCCGGAACTTTTTAATTTTCGGTAATTTGACCGATTAGCCGGAAATTTTTTAACGGGATTTTTGATAAGATGGATTTTTTTCCGGCAAATTCGGCAACTCCGGTATGCCGGAATTTTCATTTTTGACAAATTGCTCCATTCGCCGAACAATAATTATGCCAGAAATTTGAAAAACGACAAGTCGCCGTTTGCCGATTTGCCGAAATTTCAAATAACCGGCTATAATTTGCAGATTGCCGGAAAACTTTTACATATTCGGCTAAGTTACCGCTTTGTCGGATTTTTTAAACCGTTTTTTTCAAGATAGATTTTTTTTCCGGCAAATTTCCGGCAAGTTTCCGCATCGGTTTGCCGGAAATTTCAGAACCGGCAATTTTACATTCTGCGGATTTCTTGTTTGACAATCTCAATTATTAAGACATATCGAACAATTGAGCCGGATCCCGAGCCGCCATCAAGCCTTATTCGCCACAGCTAACTACTTTCCCAAAATGTCGTATTAATCACTTCATCTGGAGACAAGACGAAGCTAGTATTGTATCGGATGTCCTGCTGATAAGGATTTGCGCATTTATGCGCTCGCTTCTATTCGGAATACAAAGTGGTATGATGTGGGGGAGTTTTTTTAATTGTTCCTATACACATATTTTAAATTACTTTATCATTGGAAAATCTAAATTATAGCCCAGTTTACAAAAAAATCTATATTCCAAAAAAAAAATTGAACAAAATCGATAATATTCCCAAAAAACGTTTACATAATCGAACTTTTTAAAACACTTTGAATAAATCGATAAGTTTACAACTGCTGACAATTAAAAAAAATCGAAAATTTCTCAAAGCTCCAGTTGAAAAAATTAATATTTTTCCCGAAAAAATTGAAAAAAATGGATAATTTCCAAGGAACATAAAAGCTAAAGATTTTTTAAAAAAATCGAAAACAATTCAAACCTTTCGGTTCACAAAAATTTGAAAAAAATCGTGATTTTTTTAACTTTTTTTCATCAAAAATTTGTCAAGAATTTGGAAAAAATAGAAAAAATCAATATTTTTCCGAAAAAATTTGAAAAAAAAATCGATAATTTCAAATAATAGTTGCAATTTATAATTTAACAGCGTAGACAAATTTTCAAAGATGTTTAAAATTTTTCACGTTTTTCTCTCTGGTTTTTTTAAAAAGCGTAATTTTTACCGAATTTCTCATCAAATTACATGAATTTTTCTGAAAGAGCGAGAGAATTAAAATAATTCGAAAAACTCGAAACAATTTGTTACCAGATCTAGCCGAAAAATCCCACAGAAACCACCAAACTTTACTTTTTTTATTTAATAAAAAAAAGTTTTAAAAAATATCAATCTCCCTTTTTTTCTGCCAAAAGCGACTTTGATGTGGGTAAGCTTGAAAAGTTTAAAAATTTGCAGGAAAAAATCAGGAAAACTCTTTGTATTTTCAGAGTCACTGCCAATACTCTCGTGCCTATCAGTTAATCGAATGCTCCGAGATTTGCGAAATAAATATCCTGAAGTTGCGTGTCTTGATGATTATGTAAGTTTGAGAGTTTGGAAAAATATTCGAAATTTTTTGGGAAAAATTTGGTAAAAGTTCACAAATGTACTGTACAATTCATTAATTTTTTTGCGAAAAAATTTTTTAAAATTCTCTATATTTTTGCTAAATAGTTTACAAATCTAAATAGTATGAAAAAATATTTTAGCAGAATCAACAAAAATTGTATAAATTCATAATTTTTTGAAAATGAAATAAATGTTTTTTTGCGAACCACTAAGACCAAACTTAAATATGCTAAATAGGTTTTTTTAATGCAGGATATAGTTTTTTAGCTGAAAACGTCTAATGAGAAAAAACGGATAACATTGAAAATTTACGTACATTTTTGCAGACCTTTTTTGCTCACAATTTTGTAAAAACTTTCGGCAAAAATATCACCTTAGTCAAAAAAAAATTGCTTAAAAAAAATTTCTATAATACAAAAAAAATGTGAAATCTATCTATTTTTTTCAAAAAATGAGCTACCTAAAAATCTATTAATGATTCTGTGCGATTTTTTTGTGAAAAATTTTGAAAAAATTCAGAATAATGTATAATTCCGTTATATAATATTTGGCGAAAAAAATTAATTTTTGAACTATAATTTTTTTTATGAAAACTAGTTTCAAAAATCGATATTTCACCTAAAACGAACAACCCTAAAAATAGGCGGCACACGAACTATGTTTCCGGCAAAGTGGTAATTGCCGAAATTTTTGGCAAACTGTATAGGCTTTGCAGAATTTTTTTGTTGGAAATTTCAGATTTTCAAATTTAATCGGCAATGAAAACGAAACGTTTATTCCGCACATCGGCAAACCAGCAAATTGCCGAATATAATATTATGTCTCCTAATAAGTTCCGGGGCAAAAATCATAACCTTGTTCGCTGTGTATCGATTTTTATGAAACTTTGGGAGTTTATGTTATCAACCGTGATCTTTCAATTGACAATATTCACACAGTTTTGTGACCACCCCAAGTGCCCGTACTCGGAGCCAATTGTTTCAGGTATTTTTCTGATCTCGCTTCTTTTTATCTTTGAATCGAGGTTTGTTGCGGATTTTGCTTTGTTTCGAATACATCGTTAGAAAACGAGAAAAGTTTGGAAAAAAATTTGTCCAATAAATTTTTTTTGGATGATCGGCAAAGAAGTTTCAAAAAGATTTTTGTCGAAAATTCTCTTTCATACAATGTAAATGAGGTGTCCGAACCAAGTGTAAATTATTTTTATACATACGAACAACATATCAATTTAGTTCGATACACTAAAATGATAATAATATAATTTTTTCGGATAATTTTTGAGTTTTTTGAATACTTCTTAAGTTTCAAATCGATGTTCAAACTAAAAGAATTTTTGTGTGTAAAAATAATTTTCACTTGGTTACATCATTTTTGTATCAAAAATCTGTGAGCATTTTAAAAATCTTTTTGAAGCTTTTTTGAAACCAAAAAAAATTTTTGGACGGATTTTTTTCCAAACTTTTCTTGTTTTCTAGTGATGTATTCTAAACAAAGCAAAATCCGCACACAAACCGATCAATATCTTCAAAGATAAAAAGAAGCGAGATCAGAAAACCTGCCCAACAAATTGGCTCCGAGTACGTTGGGGTGGTCAAAACATTTTGTGACTATTTTCAAAACACTGAAAGATCATGGTTGAAAACATAGATTCCCAATTTCATAAAAATCGATTTGCAGCGAAGTTAGGATTTCTTGACCCGGAAACTTATTTGGAGACCTTATACAATTTTTCAACATTTTCCAGTAAATTAGGGAGGTAATCGTCTCGAACATTATCGATTCATCTCCAATGTCACTTTATCCGATGCGTTTAAGCGAATTGTCGAAGCTTCACTTGCAATATGTGTATTCTGGTAGGGGGGTTAACTTTTTTTTTCCGGAAATATATTGAAAAATGAGCATATAAAAAGTTTTAAAATAATTTAAATATTTACAAAAAAATTTTTTCTGAAGTCAATTATATTGCGTTTGGAAAATTGATTCTTGTTTCGAGAACGGAAACTCTTTTTTTTTAATTAAAATGTTGAAAAAAAATCCAGGAAAAATGCTGAATTTTTCGGGATTTTTCTGAGCACATTTCTAGCCAAGCTCTAAAAATGAAAAACTTGAATTTTTCTTTATTTGAATTTTGCCCAAAAATGACTATTTGAGGAAAAAAAAAACATATTTCAATCACCGAAAAAATGTATTAATTTAATATTTTAATGTTAAAAAGGTATTTGAATTTTTTTTATACGACCTTTTTTTTGCACAAAAAGTTGAAATTTGGTTGAACCCGGATAAAATTTAGAAAAATTAAAATTTCAATTTTTTTTTGCGTTAAAAGTTTTTTAAGGTTAAATATGTTAAATAAGCACATTTCTTGAAAAGTTCTTTTGATTTTTTATATTAAAAAGTCTATTTTTCAAAAAAAAATTTATTTTAATTTTAAAATTTTAAAAACTTTAGAGTGGTGTAGTCGATTTTTTAAATTGTTCGATTAGACTCAGAATTGACTGAAAACACCGAATTTCATAATGAATCTTCTTGAATACTTCGCAAAAAAAAGATATGACTGCTAAAAAATGGCCTAAAGTTAGTTAAAATTTGAAATTTGATCGACTTGTCAAGCGGCTGGAAACTATTCTTTTTTTTGAAACCGTCAGATTTTGAGTATAAAATGTAATTATATTGGCGATATCAACTTTTTAGGTATTTTAAAGTCGATGGACGGAGAGAAGACATTTTTAAAGGTGGAGTACCGATATTTAATACTTTGCTTTTTTAGACCCAAAATGGCCCAAAACTACCGAATCTGCCGTAATGAGCAACGTTCTGAAAATTTTCCACCAAAAAAAAGTTATGGCCGATCAAAGTGCTTCTTTGGAAAAAACGCCATTTTTAGCTAAGATGTCAAACTTTGGCAAATTTGACAGTCTCGCACCGATAAGTTCGGCCAAAATTTCGGTCTAAAAAAGCAAAGTCTTATATTTCGGTATTCCACCTTTAAAAGTATCGCCGTCCACCGACTTTAAAATACCTAAATCAAGTTGACGCAAGATGCCAATTACATTTTATACTCAAAATTTGACGGTGATTTCAAAAAAGAAAGCTAGTTCCAGCGGCTTGACAACCAAGGTCGGTCAAATTTCAATTTCCGCTAATTATGAGGCCTTTGTCTTATTGGAGCAATCATAACTAGTTTTTTTGAGTGGTAACTTTTTTTTTTCGAGAAGTTATTGTCATGAAATTCGGTGTTTTCAGAAAATTTTGAGCTAATAAAGCAATCAAAAAATATTCGACTAACTTTTTGGCCTATTTTTTTGGGCTAAAATTGAAAGGTATTTTTCCAGCAAAAGCGGTCCGTGTCAGACGTCTGTCCGAACGTTCTCGATGCTTTAACCGACGAGCAGAAGCATTCGTTGACCGCCCTGGCACAGAATTTTGTTCTGCAAATTGCATTAAATCATATACACGAGGTATGCGGGGATTTGAGCAGAAAAAATGTTTAGTCAATTAAGAAAAAACCTTGAGTTTTTAAAAAAATCTGTGGATGAGAAATTTTCGCAATAAAAAAATTATATCGGTATAAAATTAATTTCAAATTTGAAAAAATTTCAATCAAATAAATTTTGAATTTGCATTCCAACGTCATCGGTCTAAAGAAAAAATTGCTTGAAAAATTGAATTAAATATATTTCTTTAACTACCTGTAAATTTTTTATTTGGGATCCGAGAATTCGACACTGAAATTTCATTTAAAAAAAATTAAATAAAATTTGAAATTTTTTGGAATATTGCAAAAAATTGCTAAAAATTGAATTTTCCTATATTTCGATCGGTTTTTTTTTAGATTTTTTAAAAAATTTTTTTTTCAGCCATTTCGGGTGGCCGAAAATGGAGAAAAAATAGTCAGAAAATTCAAAAAATTGCTTTTTTTTTTCAATTTTCCGAAATTTTGTATCTTGATCGTCCAAAAATTTAAAAAATAATCGCTAAAAAGTTTAAAAAAAAATTATTGAAAACAATTTTTTTAGCCAAATAATTTCTAGTAGATTGCATGAAAAAAGGCCCTAGTGAAATACGAAACAATTTTTTTTTCAAATCCGATTCAGAAAAAATTGAATTCTCTCTGATTTTGGGCCGATATTTATAAGATTTACAATATTCCAAAAATTCTTGAGAAAAATTGAACTATGTCTGCCGTATTCCTGTGAACATAGCGGAAAATTGAATTTTCCAGGTTATGTTTATCGGAAAAAGTATAGTGACTCTACGTAGAATTCATGAAAAATTCTGACAAAAAACCAAACATTTTGGCCCAAAATCAGAGATTTCACAAAAAAAAATGCTGAAAAATCAATTTTCAGCAATTTTTTTTTCAAATTTTTTTAAAAAATATATTTTAGTTAATTTAATAATTTTTTTTTCCGTTTTTTTAATAGAAGAAAAGTTATTTTCCCAAAAATGTGCAGACATTTCAGAATTTTCGGAAATTAAAAAAATTTATTTAGCAAAAAAAAAAATTTTTTAATCCAATTTTATACTATGATTTTTTCACTTTTTCGGTGGTATTAGGACTGAATTCAAAGTCTCTTCGAAAAACATAAATTTTCAGAAAACTTAAAATTAATCTGATTATAATTCGGAGCATATATGAAATGTGCTTTTATCACAACATTTTTTTTTTTGACAAGTCAAATCTTTCCACATTTTTAAAAGTTCCTATTTTGTATATATTCGGATTTAAATTATTTTTTTAACGGGTTTATTGTCTGAGCAAAAAAATTGAATTTTTCTAAAATCACCAATTTTCTTCCAGATTCTCGGAATCGATCGTCTTCAAGACCCACTATTGATCTACCATAGGATGCTCCGATCAAAGACCACTGGAGAGCAATGAAAAATGCTGAAAACGCAGAAAATCTCGACGATTCGCCAGTTTCCAAAAAGGAGAAGGATACTCGACGAGGAGCCCGCCGATATTTGAGGATTTTTATTTTAAATTTGGTCGGTTTACGAAATTATTTAATTTTCCTCTATTCTCCCTCATCTCTGTGTTTTTTTCTAATGTCTTTGGGCGTAGAAAAAACGAATGGCTCTCTTCGCGGTTAAACCTTGAAATTTTTATTTTTCTACTATTACCTCCCCCTGCAAACGCGCTCTATTGGCGACAATTCGCAATGGAGCGATTGCATATTTTGTTACCATTTTCCAGACATACTCATGTTCGATCTTCCACTAGGGGAGGGTCTCGCGATTTTTTGAAAACTAAATTTAGATTTTTTTTTGAAAAATATTCGAAACAATTTTAGGTTTTTCGAAAAATCCTAATTTAGCCTAAAAAATCAAAAATTGATGGGATTTTTAAAAAAAATTCAAAACTTATAATCAAAAAAAATTGCAAAGATGTTTAATTTTTTTGTTGAAGAAAATTTTTTGTAAAAATTAATTGATTTTCCGCTTTGAAATAGTTTGAATTTAGAATTTTTTGAAAAATTATAAAAATTTTGAATTGAGCTTTTGAAAAAACATTACTCAAAATTGTTGGAAAAATTTTGAATTTTTTTGAATGAATTCAGAACTTTTTGAAAACGGAAATTCGAATTTTTCTGAAAAAAACGTTCGCAAAATTTTTCGAAATAATTGAATATTGAAAAAATTATAAGTAAATTCCTAATTTAGTCGGAAAAAAATATTGAAAATAAAGTGACGATTTTTGAAAAATTTTCCCAAAAATTCTATAGAACTGTCCTGAATTTCTATAAAAAATTCGAAAAAATAAAGTTTTTTAGAAATTTGCAAATTTCTTTAACATATTGGAAAAAATTCTATTTATTTTTGAAAAGTCATTTCTAAAATCTTCCTTTCTGCTAAAACCTGCAAATAAAAGGACCCTGCCCCTAACTATCTTGTTCATCCAAAAACCGACAATTCTTCTGTTTTTGTGTTATAATCGTCCTTTTTGACTTGTCAAACAAAAATTAAAATAAATTAGAAGAAAAGGGTTTAGATACGATTTTGCCAGCACGAGGCCGAGGTTTTTCACGGCCACGTGGCACAGGCCGGCAAGTAAGGCTGAGGCTGTGGGGGGAAATTGATAGGGAAGAAGGCAGGAAAAAAAAAAGAAAAATTCAATATTTTAAAGCCAAAATAAATTTTTCTGAAAAGACTAGCAAAACAGGAATGGTTAGGGGTAAAGCCGATGTCGGAGTTTGACGGAGAATTTTGCAAAAACATTAACAAAAACGAATCGGTAGGGACGGACCGGCAAGATTGATTGTTGAAAATTGACGAAATCTATCGATTTTTTGGCGCACGGGGTTCTGGCCTTCCCTCATAAATGGAAGAGTTTTGCCGAACTGGGCCACCAGGTCATAACTGGGGTAGGTTTACGGCGCGTTGCGTGTCGCGTCGAGGCTCAATTTTAGTTGTAAAACTAAAGAAGATGTATTTGTCCGTGTGAAGTACACGACTTTCCCGGGGCGCGATTGTCATGGAGCGCGAAAAATTAAGGGCCAGACACAGAACCCCGTGAAAAAAGATAATCCCGTTTAGAATCGGTGAGGGCGTGGAAAGAAAAGATGATCAAGAAAACGGGAATGAGCAACATTTCCAAAAAATCAACAATAGCGCAATTCCAGAAAATTCCATAGAAAACGGGGTCTAAAGCACCAGATTAGTGTTGTGCGTGGGCGTCCACTGTGACGTCATCACCGTCCACGTTTCGTAGTTCTACCGACTCGTGCTGATCTGAGAGCTCGGCCGAGACTTGGAGATCTCGGTGAATGTGGCGAATGCTTCGCGGGTGAACATGTCTGGAAAATCAGCAAGTCAGGAGAAAATTCAATTTTGCGCGTCAACTTTGATGTTTTGTTTGTGTTAGTGAACTTCAGAAAATTGAATTCGCCAAATTTTACGAGCAAAAAATTGGATTCTTTTGGTATTTTTCATGGAAATTTAACCAGGTTAAAAATCGAGGTTTCTCCGGAAATTTAACGTACTTTATCGATTTTTCATCAGAAATCAGTAGAAAATTCCTTCTGCGCGTCAATTGATGTAACCTTCGGGCCGTGCGGAACTGAACTGGATTTCGCCTAATACGAGCAAAAGGGGGGCTACCGTTTGCAAATTTTTCTTGGAAACTGTCAAATATTGAATTTTTCGTGAAGGGCAAAATTTAACCAAAAATCGGGCTTGCTACGGGATTTAACAAATTTTATCGAATTTTTTTGCGCGTCAAATTTGATGTTTTTTGTTGAACTTCGGAAAACTGTATTCGCCAAATCTTACGAGCACAATTGGACTTTTTGGGTATTTTTAGTCCGAAATTGATTGTCTTAGAGATTAAACGCGATTTATCCATTTTTTATCGGGAACAGTAGCAAAATTCAGTTTTGCGCGTCAAATTTGATGATGTTTTTTGTGTTGGTGAACCTCAAAAAACCGTATTCGCCAAATCTTGCGAGCAAAATTGTATTTTTTGCGTCTTTTTCGTGGATTACAAAAATCGTGCATATCTTTTAAAAAAAAAATTCCACACAAAAGTACATTTTCACACAAAAACTGCAATTTGCGCGTAAAATATGGCGCAACCATCGGTTGAGTGCGGCACGCCGACTCAAAAACACCATATTTTTCACGCGCATATATTAATTGAAGCGCCTTCACGTGGTGTCAGGATGGGTCCACGGTTTGATCTACAAAAAAATGGGGGAATTTTTTGCCCAATAATATAGGTGACGTGCATGTTCTTAGCCATGCAGAATCAGTCTAAAATCCCGCCTTTTTTGTAGAAACGTAGATCAAGCCGAAATGAGACGACTCTGGGCTTTAAAACACTCACCAATAAAACCGAGACATGATCGGAACGTTACACGTGCACTTCCGATCGAATATCTCCATCGTCACACCGGCAGCCCTTTCTCTTTTTCTTCTCGAGTCTGGAAAATAATGATTTTAATTTTATTCTTGGAATTTTAAATTTCAAACAGTAAAAAACCAAAAATTATAGCAGTATTAACTTATCCAAGTTAAAGAACTACAGTGAAACTACAGAAATATTAATAAATATTTCGATGCACCAAGAGCCGAAATCTCTGAGAGCCCAAATCTCGGCTCATTTCGAGTTACATTACAAATAAACTGCAAGCTATATATAGAAAATTCAATTTCAATTATTTTGTTAGTTAACAGAATTTGGCTAGAATTGAAATCGAGCTGGGATATGGGCTGGCTAAGTGAATTTTTCCTTTTTTTTTTTGTTTATTTTGATATCCAGGGGTGAGCAGCAAACGATGTTTCCGGCAGATCGGTCGCTAGCTTGCCGGAATAGAACACTGCAAATCGGCAAACCGGCAAATTACCAGACGAGTTTGCCGGCAACGTATGCTCCCTATGAGCCACCCATCAATCGATTTTGTCGGCTTATATTTACGCCATATGGCGGTTTCAGAAGTTTTTATTTTCATGAAAACCAGAGTAACTATAGATCATTGAAAGAATATTTTGTCGTTTATTTTGAAAATATGATAAAAGACAACCGAGATATAAACGGTCAAAGACTAGTCAAGGGGGGCCATACAAAAATGTTTTTTTGTAAATTTAGAAGAAAATGTGTTTCCGTCTTATTAAAAAAATCTCTCTAAGCATTTCCGGCAAACCGGCAATTGCCGCCCTCCCCCGACCTACGCACCTGTTCAAAGTACTCCTCAACAATCCGATGCGCAAACCCCATCGCTCAGACACAATCCCTCTCTCGCCGGATTGGAGATGTCGGGGCGCACTTGACAAGCATACTGCTCATATCGGAAGTGAATTCGTGTCACGTTGCTCCTCCGGCACATCTGTCACATGCATCTTGTTGAACTTGGCGAGGTACTCAAAGTGTCGACTGAGGTCCGTAGCCAACACCATCTCCACCATCGCATATCGCATTTGTATGACTCGCGCGACAGACTCGGGAAGATGTTCACGTTGGCGTTGTGCTGAAGGGTGCTTAGCTGAATGGTTAGCCTAGTGCGGATAATTCCAGGAGTTATCATTGTAAAGTATTGCAAGCTGTCGCGTCGTATTGATCAGGTACGCGTTTCCTCTTCCAGGATGGGCTAGATCATGCACCGCCTCTGCGAAAAGAACCGCCGTCACCGCATGACTTTCATTCAAGTGCACGGAGAACGACGGGGAGTCAAGGTGGCCTGTAGGACGTCGGCTGTGTGAGTTGCGTTGGGATACGTGTTTCCCGCATGGTAATGAGCCTCGATGGATAGATTAGAATCCAGCGGTGGAGGAGATCGTCGGAGCAGCCGAGCACATCGCAAACCTTCCACCTCTCGAAGACTTTCATTCCGATTTCCTTGGGAAAGAGCGTCGTGATCCGACACCTTTTCCAGATGGAGGATGTCGAATTTCCAGCAATTGTCGTTTTCCAGCGGGTGAGGGTCTTCACGTCAGCGGATACCCGTCGACATTCTGCATGGGATCCTCGCTTCTCTCGATGCGCGTCGACGACGCTTGCGCTGCCTAGCTGGATGATGGAGGCGAATGAGACAATCGTAATATTGAGTTGCCTATCCGATCGGCGTCGCGGAATCGGTTGATCGACGGTGCGTACAGCTGGTCCGACGACAGCACCTTCATCGCGTCCTTTATCGTTTTTGCCGGTTCTCCGTCGACCCGCGACACGTCTCGGAGCATTGTGAGCACCTCGGAGATGGGCGCCTAACGATGCCGCCAGTCCGCGATTTCAGGCTTTTCAGGGCGCCGTCGCGGATTGGCGGTACCGGGTTGGTGTTCTTGTGAGCGTTTCACACGAAGTGACTACTGCTAAATAGAATTTTTTGATTAATTGGTGGCCGAGCTTTTTAAATGGTTGCCGCGATGTTTAAGTTGATGGCAGAGTTTTATAGGTTGATGGCCTAGTTTTTTAAATCGTGAGTTTCTATGCAATTTTGTGGCCGTGTTATTGTATAAGTTGGTGGCGGAATTTTATAAATTGACGGCCGAGTTTTGTAGGTTGGCGGTCGAGTTGTATGAATTGGTGGACGGCCTAGTTTTACAATTGTGTGGCCGAGTTTTTGTATAAGATGTCTCGTGATGAGCCGAGTTTTTTCAAAATGATGGCCGCGATCTTAATGATGGTCGAGTTTTATAAGTGCCGAGTTTTATAGGTTGATGGCCGAGTTTTTATGTAATTTGGTGGCCGAGTTTCACAAGCTGATGGTCGAGGTTTATGAATTGGTGGCCGTGTTGCTATACAATTTTGTCTGGCGGTGTTTTTATATAAGTATTTGGTGGACGAGTTTTATAAATTGGTGGCCGAGTTTAACGGAATAAGCAAAGGAAACTAAAGCGAAAGTGCTAATTTTATTGAAGGGTTTTAAAAACTGGGCCATCACCTTTTCAAGAAAAACTCGGCCTCCAAATTTTCCAGCAAAATACTAGGTCGCCAGTTTTTCCAGCAAAAAAACTCGGCCACCAAAATTTCCAGCAAAAAAAACTGGGCCACCAAATTTTACAGCAAAAAAAAAATCGGCCACCAATTTTTCCACAGAAAACGGGCTAGTTTCATTGTTCGTTTGAGAGAAAGGTAGGTCACGTACATTTTCAATACGAATACTCGGCGACCAATTCTTTATAAAAAATTCCGTCATCAATTGTCATAGAGATTAAGTTCGGCCATCAAGGTTGAAAAATAAACTAGGCCACCGATTTTTTTAGTTGAAAAAAACTGCTCGAACACCTAACCTTAAGATTTTCCTTTTTTCTAGCCTAGAGCACGGTTATCGCGTTTTTAGGCCACCGATGCATTTTTTTAATCGAAACTCGAAAAAAAATCGGTGGCCGACTTTTTATCATATACGGCCACCAATTAAAAAAAACTCACTTGTTAGCAAACGGGACCCGTATCATTTTCCTGTCTCAATACCCTCCGTCCGCTTGCCGCTCCTCTTCGGTGCAGGGCCCTCGGGTGTACAGAGACTTCCGTCGCATTTCCGATGCGGGTTGTCCGAACACCTCGGATTATGCATCCCGTCACGTTCTCTAGCCGTAGGCGCAAGGATAACGTACTGCACTAATCGTTGCTCATCACATATTTCCACTGCTTGATTCGTCTGAAAATATCACCGCAAAATTTGAAGGTTTTTAGGCACATGTGGCGCCAGTCCATTTTGATCTACAAAAAATGCGGGAATTTTTCACCCAAAAATATATGATCAGCTCACCCAGTTCTTAACGATTCTAAACTCACCCGCATTTTTTGCACGCTCTACGTAAATCAAGCCGAAATAAGAGACACTCTGACAGCGCGTGTAGGCAGGTAGGCGTTCACCGAGCCAGGCGATTAGGCCAGGAGGCAGTCGATTAGGCAGACTAGTAGGAGGTAGGCAAGTAGGCATTGAGGCAAGAGCTCACCTAATCCAAGACCGCGAAAAGGGCTATGGGCAGCGCGCGGATCCGACTCGCGAGCCGCCCGACGTAGTCGAAGAGCACCACAAGCGTATTCCACGTCACATGCTTAAAAGAAACGCATGAATGGGAATCAGTGTGTATGAAATATAAATTAGAATTGTAAATGAGAAACTGAGAAAACGGATGACTTACCATGATGAATGATGTTGGAGTGCGCAAGAGCTCTCCCTCGCTTTTCGCTGATGTGTCTATGTCGATTGTTAGATTGACAATTCTGGCAGAGTGGTTTTCTAGAAAATTGGGGAAAACTCGGCCAGATATGTTTTCTTTGGTTTTGGTTGGATAATTTTGGCGACCGAGTTTTTCAACGTATCCTTTATGTGTCCGTGGCCGAAGGCACATAGAAGAAAATTAGAACAATGCCGAGTTTTATCAACGTAGTCTAAATTAGGTGTGGCCGAACTTTTCGTCTGACGGCCACGCAGCAAGAGGAAAAAATAATGAAACAAAATTTGGTGGCCGAATTTTAAGCCAACACAAAAAGTTGGTGGCCAAATTTTAAGCCAACGAAAATTGGGGGCGGAGTTTTTGTTTTTTGAAAATTCGTGGCCGAGAATATGGGAAAACGCGGCCACACGATATTTTTTCTTTGGTTTCTGGCTGAATAATTTTGGTGGCCGAGTGTTTTTGTTTTGGATAGGGCAGTTGTGGTGGCCGATTTTTATCATTTAAACCAAATTTACGTGTACTTGGACTTTTTCTGACGGCCACAATAGCAAGCAAAAAATAACGAAAAGTTGGTGGCCGAATTTTAAATTCATAGCAAGAAAAGTTGGTCGAATTTTAAGCCTAAAAAAAGTGGCGGCGCTTTTTCTACAAAATTCATGGCTGTCATTATTTTAATTGGAAAAACTTGTGGCAGTGATTTTGTCTCGAAAAAAATCGTGGCCTTTAACTAGTAAAATTTGTGGCCGACTTTTATTCGCGTAACCTAATTAACGTGGCTGTCGCCGACTAAGGCCACCTTGCAAGAAGGAAAAATACCCAGGCGAAACAATTGTGGCCGAATTTTTAGTCGAAAAAAATGGCGGCCGAGTTTTTGTTTAAAAAACCGTATTTAGTTGGGACGAAAAATGGTGTCCGAGGTTTTTCAATGTATCCAAACTTATGTGGCCTGTTAGTGGCCTATAGCCTAGCTTTCCTAAACCATTTGTTTATAAAGTTGGTGGCCTAGTTTTTAACCAGCATAATCCAACTCACTCACTTCTCGGCGATCGACACAATCAACACCTCCGCTGTGCTCACCGAGGCTGAGACGTCTCTGAAAAAAAGTTTCGTTAGTAGATCATGGCTGACGACGCTGCTCCCTTACTTGGCGATTTATCGAGCGATGGATGAGGTACTCGAGATCTATGAATACAGCTAGAGGGCATATTGATTAAACGTCGGATAGTGCAAGCAAGTGTACATAAAATTTCCGAAATTCAATTTCCTTTTTCCCTCGCCGCGCCACCGTGTCCGAATTTCGGAACTGACCACGTTTCAGTCGTCTTGGTAATTCCCAATTTCCTTTCTCCCTTTTTACGTCACATGATAGCGGTTATACGTGTTTCGATGCATACACAACAAGGCACTTAATCAGCTACTAGCTCCTCTCCCAACCTCCACAGAGAGACTGTATGAGCAAGAGAAAAAGCACCTGCTTCTTCCAGATTAGGCGTGAGCGAGCCTGTTGTCATCTGACTTCTGCTGACGGAGGGAGCTTGAAAAGCGGAGCAGGAAGAGGAGAAGAAATAAAGAGCATTCAGAAATTACGCGCGAGTCGTAGTAGCTATTTATACACTGACTTCGTCTCCTTCTTCTTCCTGCTTTTTCCCCGTCTGCTCCTTCGCTCGTTGATGTCTGCCATCATATTTCATTAACGAGGGCCTAAGAATCCTGGAAGAGTGACGTCACACTGATGGCCTCTACTAGGAATCTCAAAGGCAGGCCATATTGATTCATATAGCAGGCCATATCAGGCCCCATAGCCTGGCCATAGTAGGTCACCACAAGCTATGGACTGCCATCAGGATTTTGGCTCTTTGGATGATAAGCTTCTTTGGAGCCCAGCGCTTAACAGACTGACGTCGTGGTATCGAGAATCTCGGCTAGGCAGAAACGCGGCAATTGTGAATTTTTTGACGCACTAAAGATCTTATAGATCCTTGAAATCTTCCACAGGACTTAGCAGACCGGAGGCCTGGGAACTATGCAGTTAGAGGCGCCAAGTCCAATAGTGGGCTCCGAAGAGAGAGTGCCCAGAAGGGCTCCGAAAAAAGCGTAGATTTTGGGCCAAAATTTCCCAAATTGGGCCAAAATTTCAAAAGTAGTAGGTTTCAACCCTCATGTTTCCCGGAATGATTTTGTGGACTATTATTTACAGACTGTGGTGGCCTGCTACCCACAATATGTACTGGGCCAACCTCTGGCCAGGTTACGGCCTTTAATAGCGAATTGCTCTTCCCTTGGAGTCAAAGTTCTTGCAGAGCCTAGGAGACGCTTACCACTTTGGATCAAATGATCTAAAACTCAATGGATCATGACCCTAGAACCTCAATTTGACCCCTAATAAGCCTAATACGGAGCTACGTCTAAGCTCCCAGGCTATATGGCCTGATATGGCCTGAGCAACACTTCGGTGTGGCCCAGTCTAGGTTTTTCCAAGCCCCAGCGGGCCTCAGTTTTTATAAGCCTAAAGACGCAGCTACTGGGCCAAGCTCTGGCCTTGAATTTTGGAGTAATTATTGCAGAGCCATCATGCCTAGGAGGCCTAATCTAGATTTTTTCAAGGATTGAGGCCCCCACGAGGCCTCAATTTTCATAAGCCTAAAAACTCAGCTGCAGCCCTGCCTGTGTTGGAAACTGTACAAATCCTTATATGCCCGTAACGAGTCAAGAGGAGTACACTCTCGCCGGTGCCTTCCGTCACGATCACAGTCTGAAAAAGACGCATTATTTATAAGATCTTACAGGGGATTTTCAGATTAGGAGGGTCGTGTGCCAGACCTCAACAGCTCGCCGGGGGTGATAAAATGCTGATTGACTTGACATGCATATATATAGATATATATGAAGTTGGAAGAGCGGAAGCAGCAGCAGTGGCAGCAGAACTTGTGTGTGACGGGGATTTGTGGGAACAAGGCGCCAAAGAAGACGAAGCAGAAAAGCAGAAGCCAATGGGGGCAAGCAATGAATGCAATCTATGTAGGAGTATGTAGGAATATGTGTGTGTGTGTGTGTGTGTGCGAAAGTCTCTCTATCTGTGTGTGTGTGTGTCACAGGTTATATCGTGTGCACAAAAAATGTATAAGGTCTCCTGATGTGTGTGCGAGTCTGTGAGTCTGTGAGTGCAGTGTACAACACCTTTTGCGGAGTCTTACCACATACTGATACGAAAGTGTTTGTATTTTATATATTTCTTTGCCACGGCACACTCTTCAATTTTTCGCGGGCTCGCCCTGGCCCATCAGTGGCACGCAGTAGAAAAAGTAGTAGAATAACATGCGTTGTGGCCATAGCCCATCCAACTTTGTTACTTACGGACTGAATTCGCGCGCGCCGCGGGGAGGAGAAGCAGAAGACGACGACGACGAGCTCGAAAGAAGACGAGTTGCGCCTCTGCAGTGCGAGTCCCTCGGCAGCGGCACTGCTGCGCCGCGCGCTTCGATGACGCGAGCTCCCCCCCCCGGCGGGAAAGTACGCGATTTGTCACCGAGATGAGCGCTTTGCTGACAGAATAGAATGGGAAACACAGGAATATCGGATTGCAGTAGACATGTTTTGTTGCAAAGTTATGAAAGCTGGCTTGGCGTGGTCGTCGAATTTTTCGCGCTTCATTGACGGGAGAGAAGGGGAAAGTCGTGTTCTCCACTTCACGGAGAATCACACTAAGATTTAGGACTAAAATCGAGCCGAGCCAAAATGGCCTAGTTCTCGGCAGAAACTGTTCCATTTCAATCTGCGAGGAAAGCCAGAGTTCCGTGAACCTCGGCCCTGCGATCGCCGGCCTGCGATCTCCTAGACAAATGGTCACCCCAGCCGGGACTCGGGAAAGTTAGTGCCAGGAGAATAATTTTTGAATTTGAACAAAAAGAGGAACTTGTACAGTTTTACAGCATCTTCAATTGCATCGGCCCAAACGTGTTTGTGGAGCTGCTCGTTGGACAGTTAGCAAAGGTAGGGTTGGTGGAGCACCACGCGATCCACCTGCACCACCACCATTCTCAGGAATACGACCCACCGCAGCACCATCTCATTGCTAACACTGCCCTGGATGCTGCTGCTGCTGTTGCTGCTGGTGCTCTCTGTGCGTCTTTTAGCTGCGGGCGTGTGCTGCTGCCTCCTGCCAGCTTGACTGTGCTAGCCCCACACTCTTGTCACCCTCTTCTCAGCCCCCCACCCCGCTTCTATCGCCCATTCTCTCCACGAATTCTTCTGTCTGACCTCCTCCTCCTCCTCCTCCTCCTCCCAATTCTCATGTCATCGGGGGGCCCGTCGTTTCGTGGAGCGCCGCGCCTGCAATGTCTCGGGCCGCCGCCGTCGTCGTCGGCATCGGGTATCGTGGCCCGTCGTCTTCGGGGGGTGGGTTGTCATCTGCTGTGTTCACAGATGCCGCCGCCTTCACCGCCCATCTCATCGTCTCCTCCTCTCTGTGGACCCGCCGACCGCTTAAGCCCGCGCGCCTTCTCCCATCAGTTCTATCTCTCTCTATCACTCTCTTATCTCAAACCGCGTCAATTTATCTCTCTGGCAGTACTCGCTCTTCGCTCGGCGAGCTGTATTGGGTGTCGGTTTTCAGTCTGCGTCTCCGCGCCCCGGTGCAATGCATATGTTCCATCACGTTCTGCTCCTCCATAACAGGTTGCTCCGTGTGCTTCCGTGTTTTACGCAATTTGAGGTAAAATTGATACAATACAATTGATAATTATCGAAGTGTCCTCTATGTGTACTGACGCTGTTAATTTAATGGCCTAACCACAGAACTATGCTTCTTTAATTTTTGAACTTCTGTCGTAGCTCCGTAGTTAAATCCACTATGAGATTCCTTGCCATACTCGTTTTTGCAATATTTTTTGAGGTTGTTTGTTATGGAGAAAGTTTATGTGTTCTTTGCTTCTTTGGTTATATGGGAACCCAGCTGGCCAGAAGAATGGAAGGTTTTCTGGGACAGAGCTTTTGAATAGCCCACAATAGGGCCCCAGTGCCGGTAGGCAGGCCCCGAGGCCCCTAATTTAGTGCAGATAGTCCTTATTCAGCGTATAGATGATTCAAAGCTAAAATCAAAGGGCTGTTCCATTACGTTGTGATCTACAAAACATGCGGAATTTTTCGCCCTAAAAATGTGACGTCATCACGTTCCATGCGTTATTATTTATGAAGCTACCTCTGCGTCTCATTATCCCGCTTGAAGATCTAACGTAGATCAACCAAGCGCCTTACCCCTAGCCTCTAAGCTCACTACCTAGGGCCCTCTAGGACCTTATTTCGGCTTTTTGGACTGGCCAAGACCTCGCAATTGGGCTTTTAGGCTCCTAGGTCCCTCAAGGACCGTTAGTCTTGGACTATCTGAAACGATCTGCGTCTAGGCTCCTAGGGCCCTATAGGACTATTTAGGCCTCTTGGACTAGCTGACCATCTAGATCCTTCTAGGCCTCTAGGGCTCTCTAGGACCATGTTCACTTGTCTATAGGACCTGACTAGCTAAGACGGGCTTCTAGGCTTCTAGTAAGGGCGCTCCAGGACCTTAGCCCTCTGGACTCTCTAAGACTAATTGGGCTTCGAAGCTCCTAGAACCCTCTAGGCCCATTTAGGCCTCCTGGACGATCAAAGATCTTCTGGGCTTCTTCTAGGCCCCCAATTTCTAGGACCTTCTAAGACACCCAGTCTTTATATTCCCTAGCGTCTAGGCTCTAAGATAGGCCTCGTTTCCGCAATTCCTACTAATGGCTTTGGGAGACCACGTCACTTTCTAAGGCCCATGGACTTCCACAGTAGCTTTTCACGACAGCCATTTCCAAGTTAACGCACTCAAGGACCATTTAAGCCTTTTGGGCTATTTAAGACCCCAGATCTGGGCGATGACTCTTTTTTCTAGGCCTTTTGCCCTCTTGGGCGCTCCTGTACCTTCTAAGACCCTGGCCTTTTATCCCTAGCCTCTAATCCTCTAGGACTCGATTCCGTAAATACATTCCCAGTCCTAGACGCTCTCAGGGCCCCTGGGGTAGCCTTTCGGTTGACCATTTCAAACAGGCCGTTCCGCTCCATCTCTCCTTGCTCTCTCGTGCTCCTTTCCTCCACCATGTTCTCTCATTGTTCTGACGGATGGTGATGAGCATCATCATCCTCAAAGCTCCAAAGACAATTGCCATCAATGTGCCGCCGCTGTGATAAGTGGTGTTATTTCGCCGGGACAAAAAAAAAGGGAAAATTCTCCATGGGAATTTGCGACTAACACCTCCTATTACTGTAAAAAAACATCTGGAGAAGGGGGAAACGAACTAAAAAAAAACAAAATAAAATCGGCGTATCAAATTGAAGCTTCATCATATGATTCGTCGCCGTCGTCTGCTCTGTTCGGCAATGATCGTTTGTTCGCGTCGTCAAACTAACCTACTCAATGTCATAAAGAACAGAGAATGAATTCAATAAAACATGACGAAAAAATAAATACATTCAGGTACTGTAGCTAAATCAGGATCACATCTGGAATCGCTCTCAGCCTGTTCGTTTGTGGGAGCTTGTTGAGTATAGGCCGACCACTACGCCGCCGTCGACAATCCACGACGACATATACCGCCACCGACGACTACGTATGTCCCCTGAACTTTAAAGTTGCATTTTTTTTTAAAGGATTAGGGGTCTTTCGAAATAAATTTCAGTTTTGGTAATTTTTTAAATTTAGTTTTATTTTTTTACGGGCTTTTGCGATTATTACTGCTAGAATGAAAGTATGTACATTTCTTGTAGATCAGCAACTTTAATTTCTGATAACCGATAAATGTTCCGAAAAACTCGAAAAAAAAATAAATTTTTCCAAACTAACTAAAAAGTAAATTTATTTGTACAATTCAAAGTTTGTAATTTTTGACAAAATACATTCAGAAATCTTTTTGGAATAGGGGTTAATTAGGCTTGGGCCTAGGTTTGCGCTTGGGCTTGGGGTCAGGCTTAGGCTTATGGCTAGGCTTAGGCTAAGGATTGGGCTTAGCTGGCTTAGTGCGCTGAGGCTTGGGCTGGGGCTTAGGCTTCAACTTAGGCTCAGGCTGAGGCTTGTGCTGAGGCTTGGGCTTAGGCTTAGACTCTCAGGATTAGGCTTGGGCCTGGGCTTGGGCATGGACTTAAAAATGTTTTGTTTTTCAACAATTTGGTTGTTTTTCGAAACCTGATGGTTTTACCGGTATAAAGTGCCTTTTTTTGTACATAAAAATAATTTTTAAATTTTTTAACGTTCCTAAAAACTAAACAAACTGTAAAGAAAATTTTATTTAAAAAGCAATAAAACATATTCTTTTTCAGTAATTTCAAATTTGATTTCCCGGTCATAAAAAATCAATTTTTTATGCAGTCAGGGCCACAAAAAAAATTCGTTGAAAAAAATTCAATTGGATGTATTCTTCGTGCTTGCAAATTCGAGTCAATTTTCTAGGGATAAAATAGTTGTTTATTTTCCCTGATTTTTTGACGTTTTTTCCTTTTTTAAAGGATATTTTAGGACTTTCTGGGATTTAGAACGGTTTAGCCTAGGAGTGATTAAGACTAGGTTTAAGCCTGAACCTGATGGGCCTTACAAGCCTAAACCGAACCGCCTAAGCCTAAGCCTAAGCCTAACATCAAAAAAACCTGAGAATCCCCTAAATGGCGCAACGTCGAGTAGCAAGCTGATGCTCGCCACTGACACTAAGCCTAAGCCTCAGCCTATAACGAATAACAATTTTGGAACAAAAATTGCAAAATCTCCGCTTCTCCGCTTCTCTTAAGACATCGAATTTCCTAAAAATTTTTAGAAAAAAAAAATCCTCGGTCCAAACTGATCTGAAAATTCTATCATATTTAGGCTTTAACAAATTTCACTTTTTTCTGGGAGAGACACTTTCCATAACACCACAAATTCGGCGAGTCGACCTGTTGAGGATCTTGTCTCGACCCGCTCTCTCTCTAAGTGATTATAACAGAGATCCCACACCCACCCACCCACCGTCATCTATTATGTTCTAGAACTTTATACATTATGATCAAAACCGAATGCTACAAACTACAAAACATCGCCACTTTTTCCAAATTTTCGGCACATTTTTGCAGTCCGACCACAACTACAAGCACCAAATCCATGTGAATCATCGCATCCGTTGGATCTGACGCGTCGGCTTATAGACGGGACACTGTGCCGGCTACAATCTTCTCTATATGGCCAGCGACTTTCCCGTCGTCGGCTCGCAATGAGTTTCCTGATCTCAGGGGTTAGGCTCACATTCAACGGACTATGATCGGGAAGAGGTGCCTCAAACGATAAGTGAGCTCTCAATGCCTACCTGCCTACATGTTTGCAGTATCAAAGATATGATGCCTACAAGCCTACCCCCCTACCTTGTCCTACGAGCCTGAACTTACACATTTTCTGTGCCTAACATGCTCGCTATACTTTTGTCTGCCGTTACGCGCCCCCCCCCCCGCCTATCTGCCTCCAGAAGTCTCCATTTAGTCTTTATGCCTGCACGCCTATCACAGGCCTCCCATTTGCTTGCGGTCGAGTCGATTCATGCCTACGAGCCTGCGCCTTACTAGCCTGAATTCGCATTTTTCCAGTGCCTAGCATGAGTCCCTATGCCTGCATTTACGCGCCTTCTCCCCTAGCTGTCTACAATCGCACTTTCTGCCTACCTGCATGCTTTCCTACCTATTCGCAATACTTAGGCGTACCTAACACAAGCTTAGCGACTACAAAAGCCTTCCAGTGCCAACCAGCTGCATGACTGCGTAGCCTTTCGCCTGCTTAGGTGCCTACCATAATCCTCCCTTTTGTCGATATTTCTACGCGCCCATACCTACATTCCTATCTTGTTTGAATCGATACATATCATGCCTACGCACCTACCTTGGCCTACCTTGGGCCTACACTCCTGAAATTGCACTTTTCCTGTGCCTAGCTCGTACACTATACTTATGCCTGCCTTTAGGGCTTTCTCCGCGCTTATCTGCCTACAAGCATACCTTCTGCCTCCTTGCATGCCTTCTTATATTAGCCTGCTTACCCGAACCTACCACAAGCCTGGCTGCCCAAACTTCCCTTCTGCCTATATGCCTACGCAACTCCTGCCTGCCTATACGTCTACCTCATGCTGTAAACAGACCTGCCTTGTACCTACCTATGCGCCTAAAGATTGGCTGTCTCCTACGTCTGCCTGGCTGCCGGAATATTTTGCCTATAGGAATTACTGTCAGTGCGTCTTTACCCAGATCCTACCTTTAGGTAGACGTCCCCTAAAGCAACCGCCTGCAAGTCTATCACTTCGCCTCACGCCTCCTTGCCTACCTACACACCTCCCTTATCCCGGCTTTTCCACCTGCCTATGCCTATCGCATGCCTACCCTCAAGACCTGCAAACGTGCCTAGCCGTATGCCTACCTAACTTCGCGCCTACATATGCCTCCCTTTCAGATCGAGATTAAGTCGGAAAATAAAACCGGCCAAGGCAGTAGCCTCCTTGCTGGGACGAGGAAGAGTGGGAGGAGGGCGAGACGGAAACGAGCCATCAATGGAAGGATACAGATGATCGCTATCATGCGAGATACCGGAACACGTCATATTTTGGTAGGTGGGTGAACACAGCAAGTGCGCTCCATGGCGCGGGACACTTTTCCCGCGCTTTTTAGGTCAAACACGTAATTTTTCCAGTAATGACTGTGGCGGTGGAATGCGATGATGAGACTGGAGATTTAACAGTGGTGGATACTCGTTGTACTAGGTGCCGTGCTGTTCGACACTTGCCATCCACGTATTGTCCACGTTTAATGAGCTGATTTGCTCGCAGAAAGCGTGTCTGCGAGAGGAAAATGCATACAACGGGTGATGCCGATGAATATGTAATTTTTTTGTTTTTGCAGTGGAGCGCGTTTGTACTCACTCCACGAGGAAATCACGTGGTGTGAGAGTGTCTTTCGGATTGATCTACAAAAAATGCGGTAGAAGAGACACAGAGTTCTCAACTGTGGATTATTAAGAACGTGCTCACGACAGACATTTTTATGGGCAAAAAATAGGCATCCCGCATTTTTGGTAGATCAAATCAATTGGAGAATAGTAAACCTTTTTATTTGAATATGATCCTTTAAAGAAAAAATAGAAATTTGACTGAATTTCCCGCCAAAAAATTTTCGCAGGTAAAAATTTAAATTTCCCGGGAAAATATTCACGGATATCCGGCTTCCCTCATAAATTGAAATGCAAGATTTTTTGCCGAATTAGGCCAGCCCATATCTGGGGTATATTTTGAAAAGGCTGCGTGTCGCGTCGCGGCTCGATTTTAGTTATAAAAGTAAATATATACGCATTGTCCGTGTGGAGTACAAGACTTTCCCACGCGTTGGTGATTGTCAGTGCGAAAAATTCGAAAATGAGGAAGGCGAGAACCTCGTGAATATTTTCTCAAACATTTTGTTTTTGGAAATAATGTGCAATCGCGCTCTAACGCAGTATCCAAAACTTGAGGCTTCTGGCGGAAAACTCGAAAATCAATTTTTTGCTTTAAAATCGTGAAACAGACGAAACTAGTCGCATAATTCAAATTTACGGTATTGCCGCGCCAGTGCGGTGGATCACGTTTGCACTTAAGAAAATTGGTGAAAATCAAAAATTTGGTTTATTTTTGGCAACTATATTTCATTCTCTATTAAATTCATACTGTACACGTGGAAAATCATTGATTTTCCCGAAAATATAAATGGAAGATGCAAGCGCGCCCTATTGTGGTTCGTTAAAATTCGAAGCGTAACTGAAATCGAAATTTTTTCTCGAAAAATTGCAGTGTGCCCGTTGTAAAATATCGTTTTTGGAAAATTTAATATTTAGAAGTGCGGATGCATCCTATTGTGCGCTTCCAATAAACTTACACGCTGGCATGGGATCCGAATTTTCGCGTCGCTTCCATTGACAATCGCCCGTCTACTCCACAAGGACAAGTGCATTTAGTTTTAAAACTAAAATCGAGCCGCGACGACGCAACGCGCTAAATCTACCCCAGATATGGCCTCAGGCCTTCTAGTTCGGCAAAAACTCTTCCATTTCAAAATATGAGGAAGGCCAGAACCTCGTGGAAAATATCGATTTTTCCGTTTCCACGTGGCCAAAGGAATTGCAAGCGCGTTCCAGGAACGTGAACTCGCACATTTTCCATTTTTTGTTCTCCGAAACGTGGGTACACCCGCGAGTGTGCTCGCTGGCAAATGAGCCAAATCGACGTGCGAACGTGTTGTGATTGTATGCTCAATCCGTCATCACCACTGGTCACCTATTTATGAGCGAAAAAACCGGGGAAAAAAACACACAAAGACAACCCAAAACTCAACAAAACAAATAATTTTACAGGATTCAACGAACACAACAAAAAAAAGAAACAATGGCAATTAAATACGGAAGCTGCTGCCAAATATGCTGCCAAATTCAAATTCTCGCTAGAACTTGTACACACGATCTTTATTGAAAACGGTGATCAACGGGCACCCACCACTCTGACCTTTTGAAAATAATTGTTTTAATGATTTGTGTCATTAAAAACCTCGGCCACGGCCGCGACGCCGCCGCTCCGCACGCAGCTGCGTCGGCGGTGGGGTGGATCCTGAACTTATCCCTCCAGCTCGTTATCGTCGTCGACCACCTCGAACAGTTAGCCTCAAATAGAAATCTGAAAAAAATTAATTGGTTTATTCTTTTTGAAAATATATAATTTTATGTTTGGGCGTCTTTGTGGCCTTCCTCATTGCCTTTTTCGCGCGCTCCATTGACAATCGCCCCCCTATGTACTCCAAACGGACTAATCACATCTAGTTTCACAAACGAACGACACGCAACGCGCGTGGCCTAGTTCAGAAAAACTCTACAATTTCAATTTATGAGGGAAGCCAGAAATCCGCGTGCGTTTTATTGATTTTAATTGATTTTTTTACTTTCGAAAATCCCGTTCCGGAGAAGCACAAGGTTTTGCGCGTGTCGGCGATTCGATCCCTCGCTTTACCCCATTATCTGCAAAAAAAAGTACTATTTTTTTTTGTGTAAAATTCCCAATCTGCGAGGGATCTACAAGAAAAATTTTTTGTCCTTTTAATATTTTAATGATTTTTTCAGAGTGATCACATTCTTGCAGATCCTCTTTTCGTGGGGCCTCATAATTTTTCAGTGCTTCACATTTATTTAACATAAAAGTGATTTCTTCATAAAAATTTGAATTTTTTGCCCAAAAATCGAGAAAACCGCCGCTCCGGCTCTTCTTCCGTGCGGCACTGTGCTTTTTGCAAGCTGGGCACAGTATTGTAGGCTTGAGTATGGTCTTCCTTGAGCGCTTGAGTCAACTACGAAAAAAAAAAAGGACTTTCTTTTAAATTTATGTCGGAGATACCACATTCTTGCAGATCAGGGGATCTTTTCGCGGGCTTATTTTTCAGTGCCGCTCGGAAAAAGAGGCGGAACGTCGTGACGCACGGTTTTTTGTCACGATTACAGTTTGACTAAAATTGTTGATTTTGGATCATTTTCGTTGATTTTTTTCGAAGCTGATTTCGGCAAAAAAAAAGTTTTCGCCTTTTTTTGGACAACGAAGAGCCAAAATATCAATAAAAATGAAAAGCTAACTTCATAAATTTTTTAGGATTTTTACATTTTTTTTTTTGAATTGAAAAATGTTTTTTTTAGGTGTTTTTGGTGAAAAAAACTACTTTTTTTAGCTAACAAAAAATATCAAAAACTAAATGACCAAAAATCGGAAAAAAAAAACGCCGCGCCGCCTCTTTTTCCGTGCGGCACTTCGCCATTTGGAAGCTGGGCATGGTTTTGTAGGCGTTGTCATGCTGTCATTACTTGAGCGCTTTGAGGCAAAGACTTATGGGAGAACGGTGATTTAAATCCAAAATTGTCCCGGTGGCGTTCAGGAAGAGACGCGGGGGCTTCTGAAAAAAATTGTTGAAAGATGCAAAAAATCTGAAATTTTAGAGCATTTTTCTGAAAAAAATGCAAAAACCGAAATTTTTGAGCATTTTTCTGAAAAAAACGCTAAAACTCTGGAAGCGCATTTTAGATCATTTTTCTGAAAAAAACGCTAAAAATCTTAAAATTCTGAGCATTTTTCAAAAAAAAGATTCTTGTGCACCTCTGTGAAAACTTCATCCATGATGGTAATTGAAAAATAACAACTGTCCAAAAGCATCGAATTCACAGTGTCGAGTTGGAAAACGCCGACATCTTCGACTACCCTAAAATGCTCATAATGGGGAAAAGCTCTAAAAGCATCGGTGGGCTTCACGCATTCCTCGCGTTGTGTTCGCTCCATTCACAATCGCCCCCGTGTACTCCACGCGCACAAGTGCATTTAGTTTTAAAACTAAATCGAGCCGCCGACACGCAACGCGCCGTAAATCTACGAAAAAAAAAAGGCTTAATTGTTGCTGAAAAATCGATAAAACACGTTAAATTTAATCAGAAAAATCAATTTTCGCACAATAAAATTCGCAAAAAAAAAAAATGAAATTTTTTCGCTCATAAAATTTGGCGATGCTTCAGTTTCGTCTTAGGTTCACCGACCCGAAAAATCAAATTTGACGCGCAAAACTTGAATTTTCGATTGATTTTTGATGAAAAATCGATAAATTACGGTCAATTTAACCAGAAAAATCAATTTTTAACGAGAGAAGCCAGAAATCCGTTGAAAAAGTAAAAAATCAAAACACAAACATTCGAGAGAGTCTCTACAGATGACGGAGACAGGGAACGCATTTTTTCAGAATTTTTCTGCAAGTTTAGGTCCAAAACTGACGAAATAGAAGACACTCCGGGAGCACACTGGCAATGTCATGAAAAAAAATTAATTAAATGCTAGATTTTTAGCATTTTTTCAAAAAAAATGCAGTAAAATTTCAGATTTTTAGCATTTTTTTCGGAAAAGTACACTGAACATCATTTCAGATTTTTATTTATTTTTTTTTGAATGCTACAGACCGAATAGTTTGCCAGGCATTCGAGGAGGAAATCGGCGATGAACTCTGCCACGTCGCGGCATTCGATGGGCGGGGGCTGAAAATATGCAATTTTTTGGCCTAAAATTTGGTTTTTTCTGGAAAATTCTCTTACCCCGATAATGGGAAGGTTTTCGTCTGCGGAATGCTTAAACTAACATACAGCCCTCGGAGCAATTCTCCACGAATTGGAGCCACCTCCTTGGCTTAAGTGAGAGATCATAGATGAAACTGAGCCGCTTCACCATTACGATGCTCTTGCAGCGTTCACGAGCGTTCAGCGTGTTTTTCCAGGATACTCTGAAAAAAGCGCTAATCCTTAATTTTAGCCAAAAAATCCATTACTCAATTTAGCAAAACAATCCGTTAATTTTAGCCAAAAAATCCGTTAATTTTAGCAAAATCCGTTAATTTTAGCCAAAAAATCCGTTAACTTTAGCCAAAAAATCCGTTAATTTTAGCCAATAAATCCGTTAATTTTAGCTCAAAAAATCCGTTATTTTAAGTCAAAAAATCCGTCATTTTTGCCAAAAAATTCGTTATTTTTAGCCAAAAGTTCGCTAGTTTCGGCCAAATATAATCCGTTAATTTTAGCCAAAAAAAACCGTTATGGGGTTCCAAAAAATCCTTTAATTTTAGCCACAAATTCGATATTTTTAGCAAAAAAAATCCGTTAATTTTACGCAACGAACCGTTAATTTTAGCCAAAAAATCCGTTAATGTAAGTCAAAAAATCCGTTAATTTTAGCCAAAGTACAAATCCGTTAACGTTTAAGTCAAACCATTTTAGCCAAAAAATTCGTTAATTTATAGCCAAAAATTCTAGTTTCAGCCAAAAAAATCCGTTAATTTTAGCCAAAAAAGAACCGTTATTTTTAGCCAAAAAATCCTTTAATTTTAGCCAAAAATTCGATTAGCAAAATCCGTTAATTTTAGCCAAGAATCCGTTAATTTTAGCCAAAAGTCCGATAATTTTAGCCAAAAATTCGATATTTTTAGCAAAAAAAATCCGATAATTTTAGGCAACCGTTAATTTTAACAAAAAAATCCGTACTTTAATAGCCAAAAAGAAATCCGTTAATTTTAGTCAAAATATCCGTTAATTTGCCAAAAAATCACCACGTTAATTTAAGTCAAAAAATTAATTTTAGCCAACAAAGACCCGTTATTTTTAGCCAAAAAATCCGTTAATTTTAGCCAAAAATTCGATATTTTTAGCCAATTAAAATCCGTTAATTTTAGCATCCGTTAATTTTAGAAATCCGATATTTTTAGCAAAAAAAACCCGTTAATTTTAGGCAAAGAACCGTTTAGCCAAAAAATCCTTTTATTATAGCCAAAAAAATATTATGTCAAAAAATCCGTTAATTTTAGCCTAAACAAATCCGTTAATTTAAGACAAAACCGTTAATTTAAGTCAAAAACTAATCCGGTAATTTTAGCGAAAAAAGAACCGTTATTTTTAGCCAAAAAATCCTCTTCGCCAAAATTTCGATATCTTTAGCAAAAAGAATCCGTTAATTTTAGCCAAAAATCCGTTAATTTTAGCCAAAAATCCGTTAATTGTAGCCAAAAATTCGATATTTTTAGCAATAAAAAATCCGTTAATTTTAGGCAAAGTTAATAGCCAAAAATTCGATATTTTTAGCCATAAAATCCTTTAATTTTAGCCAAAAATTGCTAATTCTTTAGCAAAAAATCGCTATTCGGCGTTTAGCCAAAAAATCGGCGTTAATTTTAGCCAAAAAATTCGCTATTTTTAGCCAAAAAACTGTTAATTTTAGCCAAAAATAGACCGTCGATTTTAGCCAAACAATTAGATTATTTTTAGCCATAAAATCCCTAAATTTTAGCCAAACAAATCTGTTATTTTTATTAAATAATTCGTGAATTTTAACCGGAAAGTCCGTTATTTTTACTACAAAAATAGCGAATTTTCGCCAATTATAACCAAAATCTCTCGATTTTTTGCTCAAAAATGCACCTAATGTGCGTTTTTCCTTTTTTTTGGCAGTTTCCCTACTTCAATAGCGAGTTTGCAGGCACGTCGTCGTGCAAATTTTGACTTCGATTGCAACAGAATCCAGCAGAATTCGATCGTCAGTCACTTAATACATTCCAAACAATTTTCAGATCCTTTATGGGCACTTCGATGTAATCTGAGAGAGCAAACACGTTAGAATTGCCAGGGTTTACAGCCCTCTTTTAATCACCATCCAACTGGAACGCGAGGTCCATCTTTGGCTGCCATACCTTCACCCGCTCGCCGCCACCCTTGCAAATGTTGTGGATAAATTGAACGGTTCACTCGAAATTCTCCAGATCGCCGTGCTCGACGAGCGCGTTATTCGATGGGTGTGCTCTTTCCGGCTTCTTTTCCTTCTGAAACTGCTGTTTTTCCTTTTTATTTTTTTATGTCGCAAAATTTTTTTTCCGAATTTTTCACGGCACCAACCTGAACAGCGAATCTTCGAAAAGAGACGAAGCGATTTTGGGCTTTTCAAATTTGAAAAATTCAAAGAAGTTGTCACGGAACTAGCCATTTCGAAGTCGAATTGATTAAAAATCAAAAGCAAAAAATTTCGATAAAAAACAGTGTCCGAGAGGAGTACACGCTTAGCCGGGGAACCATGCGCGGGACTCGCACGGAAGAGACGAATTGAAGAACAGCTCGTAAATCCTGTTCCACGCTTTTTTTTTAATTTTTTCAATTCTACTTTTTTCCCAGAAGTTCTTGAAAATATCCTTTTGCAAATTTTTCGGAAAAATGCTCTAAAATTTAAGATTTTTAGCGGCGATTTTTTTCGGAAAAAAATGTTAAAATTGCAGATTTTTAGCATTTTTTCACAAGAAATGCACTAAAATTAATATTCTTAGCATTTCTGCGGAAAAAATTAGCTAAAAATCTTGCACATCAAAGACTGAAAAGAATTTGTTGTAATATTGCATGGATGTTCTGAGGTTTTACATCAAATCTGGGTTCCATGAAATTTGACGTTTTTCACTGAAACATTCTACAAAAATAATTTCTGCGCTCTCGCAAAAGTTAAGATGAAATAATCGCCAATTTTTCAATAGTGCACAGAAACCGTCAGATTTTTAGCATTTTTTCGCAAATATGAAAATTTTAGATTATTAGCAATTCAGAATGCTCTAAAATTTAAGATTTTACCTTTTTTGAGAAAAATTCACTAAAATGCAAGATGTAACTTTAAACATTTTTTTGCAAGAAGCTCTAAAATCAAAGTTTTTTAGCATTTTCTTCGGAAAAATGTTTGAAAATCCCTTCGTTAACGCCTTTTTCGCACTAAAAGATGCTCAAACTAGTTTAAACTTTCAGAGTTTTCCCATGCTTTTGCCCCCTCCACTTCACAAGAAACAATGAAACGAATATGGCGGGATAAAAGCGAAAATTCGGGGAAAACATCATTTTCAATGCATTTTTCATCGCGAAAGCCGAATTTCATTAAAAATGGCCAATTTTTGTGCCAGGTTTCCCAATTAATCTTGTATTTTCGATTAACTCAACCCCTGCGCAGAGAAAATCACAAAATGCAATTGTTTGTGTAAAGCACTTCTCTGCGCGTTTGCGGCATCCGATATGACGAGCAACATATATCTTTTTTCTGGAGCCCTTTATTTTAAATTTATCATTTTTCATGCATTTTTTGAGAAAAAAACTCCCCCAAAATTAACCTAGAAGCCTTGGAAATGAACTTGAATTTTGTGAAATTTGACGTTTTTCAGCGAAAAATTCTCAATCTTTAGTGCATTTCTGCCGGAAAAATGCTAATAATCTTGAATTTTAGTGCTTAGTGGAAAAAACGTTAAAATCAAAATGAAAGAATTTGAAATAAAATCAGAGGCTTTAAAATTTAAGATTTTTAGCATTTTTCCTGAGAAAAGCTAAAAATCTAATTTTTATAGCTTTTTTGTTGAAAAAATGCTAAAAATCTTAAATTTTAGCTCATTTTATTTCAAATTCGACATTTTCATTTTGTATTTAAGAAAAAATAACCTCAAGGTCTGAAAAATATCGAATTTTGAATGAAATTTGACATTTATCAGCGAAAAATTCTCATTTTTCCGGAAAACATGCTATCTTGTAGTGCATTTTTCCTGAAAAAATGCTAAAAATCTCAATTTTTAGTGCATATTCCCGGAAAAATGCTAAAAAATAGTTCTTAAATTTTAGAGCATTTTCCAGACAAAATGCTTAAAATCCTTTTCAGAGAAAGGCTTTATTAATGAAAAATTGCGCTAAAAATCTCTCTAAATTTTAGAGCATTTTTCTCGAAAAAACTTAAAATCTTGAATTTCAGTAGTAAGCATTTTTTTCGGAAAAATGCTAAAAATCTCAATTTTTAGTGCATTTTTCTGAAAAAATACTAAAAATCTTGGATGCTAGTTTTAGAGCATTTTCGCTGAAATATAACAAAAATTTTAAATTTGCATTTTTCCGAAAAAAAAAACGCTAAAAATCTTGTAATAACTGACAAATTTCGAATTTTGAGTAAATTTTATGGCATGTTTTTCGAGGTTTTTCCTTGCAATTTGTTTTCACCTAAAAATTCGACAAAAATGAGCATTTCTGAGCTCTTATATGGCAAAAATTGACAAAAATCGTCAATTTTTCAATAAAAATTGCCCAAAAACCTTAAAATATTCTGAAAAAAGCCGAAAAAACCCCATTTTTTAGCCATTTTCTATAGTATCTTACATTGTTCTCAACTTTCTTCACCTAAAATCGCCGGAGATATTAACATAAAATACCCTTTTTTTTCAGCGCAATGGATTATGAGCCAGGAGGATGAAGCAGCGAAACCAAGATCCGAAGATTCGCGATTGGTAAAAAGTGGGGATTTCCGTGAAATCAAACTCGATTTTTTGTGAAAATATAGAAAAAGCATGAGTTCACAACTGCTCCAAAAACCGAAAAATTTCACTAAAATCTAGAATTTTTGCCCGACTCGAAAACATCAAACGCAAAAATCGCCAAATTTGTGAAAACTAGATTTTTATTTTTAAAAAATTCTAAAAGTTCATAAAAATCAAAAAACCGGATTTTTTTTCTTAAAAATTCTGGAAAACTGTCTAAAAATCTACTCAAAATCAGTTTGTAGAAAATCTGAAGAATAGTCTAAAAAGAATTAATAAGTTGGGAAAAAATTTGAAAAATTACGAAAAAAATCAATATAAAATCGGTTTTGAGCTTGGGAAAAAAAACCCTGAAAAATTGTCTAAAACTCTATAAAAAATTGGATTTTTTAAATAGAAAATCTCAAAAACTAAGAATCAACAAAAAATCGAATTTTCCGGTGGGTGAGAAAACCTGAAAAATTATCAAAAACTTGGTTTTTATCAGAACATCTGAAAAATTACCTAAAAAGCAATAAAACATCAGGGGGTTTTTTTTCTGGAAAAACTGTAATATAGCCTAAAAAGCAATTTAGAAAAAAGTTTTTTTTTTTATAGAAACTACTGAAAAATTATCAATCAAAACCACGAAAAAAGATACATCTTTCGCTTATGTCCAAAAATCCCAAAATTTGCATTAAAAACTAGATTTTTCCGTATTTCAAAAAAATTCAAATTGCCTGAAAATCAATAAAATTGTTGTTTTTTTTTGGAAAGAACAACCCAAATTGGCTAAAAATCCGCAAATTTTTATGCAGCTCAAAGAACGAGAACTCAATGGTCGCGAACCATCAAGCTTTTCTGCCTCCTGGGAGCCGGCGACTCTGGAAAATCGATTTTACAACCAGATGCGTATCATTCACGACGTAGGATATACGTCTAAGAGAGAATAGTGTTCAGAGGCTTGTGGAAATATTATTTTGGTCAGTGCTCCGATGCACTGAACAATTACCGGAAATTGGCAAGACCAAAATTCGTGGATTTTAACCAGAAAATCCGAATTTTAATCAATAAAGGCTAATTTTAGCCAAGCAAAAATTCGCTATTTTAACCAAAAAATCCGTTAATTTTAGTCAAAAAATTCCCTCATTGTTAGCCCAAAAATCGCTATTTTTAGCCAAAAAATCCGTTAATTTTAGCAAAAAATGTCGCTATTAGCCAAAAAATCCGTTAATTTTACACCGGCAAAAAATCCGTTAATTTTAGTCAAAAACTAGCTCCGCTACTTTAACCAAAACATCCGCTATTACCAAAAAATCCGTTAATTTTCGGCAAAAAATTCGCTACTTTTAGCCAAAAAATCCGTTAATTTTAGCCAAAAAATTCGCGAATATTTTTAGCAAAACATCCGTTAATTTAGGCAAAATCGCTCATTTCTAGCCAAAATATCCGATAATTTTAGCCAAAAAATTCGCTATTTTTAGCCAAAAAATTCGCTGTTTTTAGCCAAAAAATCCGTTAAATTTAGACAAAGACAAATTATTTTTAGCCGCACGACAATTCACCAATTTTCGTTTAAGATCCAATTTTTGACAAAAAAATACACCGAATTTACTCAGACGCAAATTCTCCCTTTTATGGCTAAAAAATGCATAAATTACACAATTAAACCAAAAATTACCCAATTCCCAAAAACTCTAATTTATTTACCAAAAATTCTCCTATTTTTTGTTGAAAATTCTCCAATTTTTTTGCCAAATTTTAACAGAAAAATCTATAAAATATCAGGCGAACCTAATTTTGGTCAAAAATTCACCTATTTTTGTTCAAAATTCTACTCACATTTTACCCAATATCCACCAAATTTTAACAAAAAAAGCTAAAAAATTATTCAAAAACCTAATTTTCGCCCAAAATTTTCCATTTTTACTCAAAAATTCCGATTCTCTTTTTAACCAAAAAATCTAGAATATTAGGTGAAAAATGCCTAATTTTGGCTTAAAATTCACCGATTTATGGCAAAAAAAAGCCTCCAATTTCTGCTTAAAACTTCTCTGCTTTTTACCAAAAAACTCTAAGATATTAGGCGAAAATCACTAATTTCGGCGAAAAAATTACCAATTGACAAAAGAAACTCCAATTCCAATCACACAAAAAGTTCACAAAATTTACTCAAAAATTGTCTGTTTTTCACAAAAAAAAAACCTACAAAATTAGGAGAAAATTCACATCAATTGCCAAAAAATCCCTAATTTTGGCCGAAAAATTTGCCAATTTTGTTAATTCAGTCCAATTTTCGACTAAGAAAACCACGTGCCATTATTTTCAGCAAAAAGTTGACCAAGTTTACTCAAAAATTGATACAAAAAAAGTCTATTAGGCGAAAGATCCCTAATTTAGTCCAAAAATACACCGATTTTTGACAAAAAAAACTCTAATTTCAGCAGAAACTTCAAAACCATAGCCACAAGTTCACTGTTTTTTACCAAAAAAATAGAATATTAAGAGAAAATCCCTAGATTTGTCCAAAGAATTAAACAAATGCCAAAAATGCTCTGTCCGTTTTTTACCAAAAATTCTAGAATGAAATTTTTTAGGCAAACAACATCCCTAATTTTTCCCAACAAATTCACCGAATTTAATCCAAAATGCTCTGTTTCAAAAACTCTAATTCCAGCACAAAATTTACCAAATTATAGCCAAAAACGCTCTTTTTTTTCCAAAAAAAATCTAAAATAGCTTAGGCGAAAAATCCCTACAAGATTTTGTCCAAAAATTCAGCAGATTTTTGACAAAGAAACCTCTAATTTCAGCAGAAACGTCACCAAACTTTCATAGCCAAGCAAATTCACTGTGTTTTTTACCAAAAAAATAGAATATTAAGAGACAATCCCTAAATTTGTCCAAGAAATTAACCAAATTATAGTCAAAAATGCTCTGGTATTTACCAAAAATTCTAGAATATTAGGTAAAAAATCCGTAATTTCCCAAAAGATTCACCGAATTTACTCCAAAATGCTCTGTTTTTGACAAAAAAAAACTCTAATTCCACAGTCAAAATTTACCAAATTATAGCCAAAAATGCTCTTTTTTTTCGAAAAAAAATCTAAAATATTAGGCGAGTGAAAATAATCCCTAATTTTGGTCTAAAAAATTACACCAATTTTCCCCAATTTAAGCTTAAAATGTTCAATTTCTAACCAACAAAAAAACTCCCAAATTTTAACCCAAAAATTCCCTCGAATTTCACCCCAAAACCGTCCAATTTTCCAGTCTTTCAACGCCAACACAGGCTATGGAGCAGTTAAAAATCAGCTTCACACACTCGATAATCAGATGCCCGAAAGCTTCTAATGTTCAGCACAACAGGCGAAGAGGATGAGCTGTCGAGGTCGTCGGGCTCATGAAGCGTGTTTGGTTCGGGAATTCAGAAAGCGCTCGAAAGGTGGCGAAATTTCGCTGAAAATTGAGAAAATTCGAGGGATTTTCGCTGAACATCGAGAAATTTCGGTGGAAATTAGCTTATGTCCATGAAAAAATCGTTAAAATCCCAGAAAATTGCGATTTTGACTATTTTTGAGCATTTTTCGCCTTTTTTCCATGAAAAATTCAACGAAATCTTTAGGTCATACTCGCTCTCAGGAAAATTACCGCGTTTTTCGATGAAAAATTCGTTGATATTCGTTGAAAATTATCTATTAGAGATAATTAAAATTTAAAATTCCAGACAAAAAAATATTTTAAAATAATTCGAATTATTTTTGGCTCACACTTTCAAAAACCTCTAAATTCTAAAAAAAAAATTTTGGAGCCCCTTTTCCGGTCTAGAAAATATTTATTACCCAATGATCAAAATCCGGGAAAATTCAGAAATATTTAAGTTTTTGGCTATTTCTGACCTCACTCTTACTCCCACACAAAAATAGTTTTACCAAAAAAAACGGTAACAATTTTTGTCAAAAATTCGACAAAAAAAGTACCTTTCTGGGAAATATTTTTAATAATTTTCCCCTGTTCCGAATATCGATGTGAAAAAATTCAGAAAAATTTTCCGCGATTTTATATGATTTTTTGAAAATTGAACAAATTTCAGTTTTCCCCCCTAATTCCTATTTTAGTTCAATTTGATTTGTTCGATGGACTTGCACACGTTTTTATTAATCTATTTTATTTACTTTTGTTGATTTTTCCACCTCCCGATTTTTAATGTTTTCGGTGTATTTTTGCTTGAATTTTAGCACTGGGAAAAGTCAAAATAAATGCAATTTTCGATTAAAAAGCACGCTGCCCGGCGTAAAAATGAATAACGACTTTAAACGATTTCAAACCTGAATTAATTAATTTCACTGATTTGCGCATGTACGCGTTCGTAGATCAGTGAAATTAATTAATTGAGGTTCGAAAACGTTTACGGGCAAAGCACTTTTTAATTTTTACGCCTGTAAAGCGTGCTTTTTAATCAGAAACTTGCAATTATTTTGACTTTTTCTATAAAATTCAAGCAACAAAAAATACACCGAAAGCATCAAAAATCGATGGAAAATAACAAAAAATAAAATTCTTTAAATAAATTTAAAATTGCGCGAGCGCGCTCCATCGAACAGAACACCGCGGTAATTCATATAGGAATTAGTCAAAGACTGAGATTTTTGAGGCACCACGTTACGGTTTGAAAATCTGTTCCAAAAAGAAGTTCTACGTTTTCGGGATCTGGCACCGTGGCAACTGCGGTTTTCTCGATGAAAAACGTAACCACGATGCGATGTTACGCGTCGCGTGTTGTTTTGCGTTCAGAAAGTACATTTTTTGAAATTTTCTTCTTGATCCTGAGAAACGCTTAACGACACGCAACGCGTAACAGCGGAGCATCGATGTTACGTTTTTCATCGAGAAAACCGCAGTTGGCACGGTGTCCGATCCTGAGAACGTCGATCTTCCTTTCGTAGATTTTCAGAATGTAGATCTTCTTTTGGTAAATATTCTTTTCGTAGATCTTCCTTTCGTCGATCTTCAAAATGGAGATCTTCTTTTGGTAGATCTTCGTAGATCTTCTTTTCGTAAATCTTGTTATTTGAGCGTAGATCTTGCTTTTTGAACAGACGATATTTAGAACGTGGTGCCTCTGATCAAATTTCAAAAAAGCATATAAAATTGAGAAAATTTCCACGTTTTGAATTTGTTTATCAGCATATTTGGTCATTTTGGTACCATATACCCCTTTCCCCTGATTCCGAACAATGTGAAAAAATCGCTTCAAAAAACAAATCCCTGATTTATATTTACGCTTGAAATTGCGCCGAGTGATGTCAAATACGCGCGCATAAATAAATTCTCGACTTGGAGCGCGTTTGCCTCATTTAATTCCTTCTCCATATTTATTTTTACTTTTTTTTCAGTTTTTCACAGCTATTTTCATTCATTGTTATTGTATTTTATAGGTTTTTTTTATTGAAAAATAAATTTTTCCGTGTGAATTGAAACATTATTTGCATAAAAATGAATGAAAATAGCTGAAACACTGGTCCCAATAAAGTAAAAATATAAATGGAGGAAAATTAAATGAGGCGAACGTGCACCAAGGATAATTTAACGCCTTTGGGCGCGTAAAAAATCTCATGTAGTAGGCATGAAATTTAGGCGATTTCTAGCTTAATTATAACAGGGCGAAATTTTTTTTTTGATTTCATCGATATTCGAATCAGGGGAAAATTTGGAGACCTGTAACAAAAGTTGTGTTATGAAAAAAAAATGTATAATTTCTAAGGACAACTTTTTTTTTGTAGTTCTGATCACGCGAATATCACCTCAACGATTCGGCCGTCTGCTATCAGGGCAACGCGACAGGTGCTCCTAATTACATTCCCACACAGGTATTTTTCAGTGGAAAATTCACAAATTTTTCCACTACTTAAAATTCAAATTTCCTTTGCAGGATGACCCGCCCAAGAATGAATACAACAGGAATCTTCAGGAGACGCAGTCGTTGTCAATACAGATCGCCTATTTTTGTAGATGGGGGAAAACTAATTTTACAAAATTGAAAAAATCGTCGCCGAAAAGGTCTTGAGGGTTTTCGACGTTGGTGAACAGCGGTCCGAACGAAAAAGGTGGATTCATTGCCTCGAGGACGTGACGGCACTCATTTTCTGCGTTGCACATATGTCAGAATATGATATGGTTCTTGTCGAAGATTGGCAGTGCGATTTTCGAGTTTTTTGCTTTTTTTTCGTTTTTTTCCCAAGTTTAGGCTACCGTTTTTAGGTGAAAATCTCGGTTTTCTTGGTTAAAATGGTTTTTTTTTTGGCAAAAAACGCGCAAAAATTGAGGATTTTAGCGTGGCGTAAAATTGAGTTAATTACATGGAAAATTTCAGAAATTGAGTTAAAATTGTAGTTTAAGGATTTATTTTTGTGATTTTCTCGATTTTTGACCGTCGAAAACTGTTCGGAGTGAATTTCATTTATTACGCGCGACCACAAAATGCTGTGAGACCGCGTATTGCACAACATATTTGACGCGCAAAATATCTCGTAGCGAAAACTAAAGTAATTCTATAAATGACTACTGTAGCGCTCTGTCGATTTACGGAAATCGTGTAATCGATAAAGTATTTTGTTTAGAAAAAACACAAAAATGACAAAAAAATACGAAAATTGAATTGTTTCGAATAATCGGGTCCCGATCCCGTAAATCGACACAGTTGCCATTAAATTAAATGAAATTAATCATGTGTCGATTTACGGGACTCTCAATTGATATTCGAAACAATTCAATTTTCTTTCGTTTTTTTTTGTCATTTTTGTGTTTCTAAAAAAAGTTATACTTTATCGATTAATACACGATTTGCGTAAATCGACCCACAATGAGCTACACTAGTCATTTTCAGAACTACTGTAGTTTTCGCTACGAGATATAATTGCGCATCAAACATGTTGTGCATGACGGATTCTCAGCATCTGATTTTGTGGCAAGTCGCGCGTATTGAAAAGCTAAATAATCGATATTTTCTGATTTTTGCGCCGAATTTAATTTTTCTTGTTTTTTTTTCTGCGAAAACCACATTTTACTGACTAAATTCAGGTTCATCCATTTGTGCAAAAACTCCGTCGACGAAAGTGTATTTTAGCGTACTTTTAATTTTAAATTTTTTTCGCTCTGAAAATTATGAAAACAAAATTTTCTCGATTTTTGAACCGAATAAAACGTTCAAATTTCAATTTAAATCGAAATCGGGAAAAAATTTTCCGATTTTTACACCGATGATTATCGCTAATTTTTCCCACACCACATTTTTTGCGTTTCAGAATCGTATGCTAGAATCGCTAAAACTGTTGGACCGATTTGCAACAATAAATGGTTTGTCGAGAAGTCGATTATTCTATTTCTCAACAAAAAAGACTTATTCGAAGAGAACATCGTTAGAACTCCACTCATGCTTTCCGGAATATACGGGCGCCAATAATTACGAAGAATCTGGGTACATTCAACAACACTTTGAGGATAAATGAATAAGAGGACTCCTGCAGAGAAAGTTGGTGGTTTTTTTGAATTCACTGCACTTTTTCTCCTCACGAGGGGACGAGGAAAAGTGGTTTCTAGGTAATGGCCGAGAGGCCGACAAGTACTTTCCAGCAACATGGCCAGCGCATTTAATCTTCACGAGCTTTGTTTTCCGCCTGTTTGCGTCTTTTTTCATCGATTTTTTTCGTTTTTTCGTGAGTAAAACTGATAGAAAATAAGTATTTTTTGCCGATGCTAAAACAATTTCCCTCAAGTAAAAAGATCATGTATTCAGGCGGCAAGCCGGGTGAAATGGGCATTGTATGATGGATTACGGGAATACAAAACCTAAACTTTTTCTGAAACATGAAACATATGATGCTTAGATGCTGAAATTACTTGATTTTCATAACGAGCGGACCGGACCGCTGAAAAGTTTCGGGCTCAGGTTTCCACAAATCAACTTTTTGTGCGAAAAGCTAGACTTTTTCACCACAAAAAGTTGAATTTTGGAAACCTCAAAACTTTTCAGCAAGGCGGTCTCGTTATGAATATCAGGTAGTTTCAGGATTTAAGCAGCATATGTATCATGATTCGGAAAAAGTCTAGGTTTTGTATTGCGGTAATCCATCATATTGATTGCACATTGTTTCTCCGTAATCTGCTTGCCCACTGAATGCATAATTTTTTTACGTGGATATTGATTTAGCATCTGCAAAAAATATTTATTCATCAGTTTTATTAAAAACGAAAAAAATCTGACGAAAGCGGGAAAACAGGCGGAAAACAAAGCAAGATAAATGGCAAACTTGTCGGACCCTCGGCCATGGCGTAGAAACCACTTTTCCAAGTCGTCCCTCGTGAGGAAAACCATGTTGAAGTGAGCAAACTCAATTTTTGAATTTATTTTTCATGGAAATCGGAAAATCTTCAATTTTTCCTAATCAATGCCATCTCTACAGAATCAAGAAATCTACACCCAATTCATTACGTGCCACCGACACTAACAACATTCGATTCGTTTTCGATGCCGTCACCGACATTATCATTTATCGAGAAAACCTCCGCACGTGCGGGCTCAAATTTTTCCGCTAAATTTTTTCCGTTTATTCCCCCAATATCACCTCCGAGACATTTTCCAGTAATTATGTCACTGATTGCCACACACAGCCCTCCTCTCCCGTCTCCGCTGTGCAATGCTACGGATTCTCTTTTTTTTTCTTTTTTTTTCCTGAAATTCCAAGGGTGTCGTTGAAAATCGAAAAATTTGAAAAATTTGGGTTCTAAATTTTAGGAAAAGCCAAAAATACAATTTTTTTGATTATTATTCCGGAGAATTCGAAAAATTTCGATATTTTTTAAATTTTTTACAAAAAATTCGAACAATTGCGTTGGATTTTTTCAGGAAAAAGCCAAAAAATTACAATTTGTGTTTAACAAAACGAAAATAAACCAATTTTTCTGATTTCCGGAAAAATCAAAAAATCTCGATTATTTCCAGAAAAATTCGAATAATTTGGGGCTTTTTCAAAATAAATCTTAAAATTTGATTTTGTCCAGGAAAAATCGATAATTAACTGTTTTCTTTTTTGGCTTCTTCCGGAAAATCCAAAAATTTTGCATTTTTTGGATTTGTTTTCAGAATTAAAATTGGAAAATGGATTTTTCAGGAAAAAGCCTAACAATTTCAAAGCTTTAAAAAAACTTTAACAAATTGATTTTTGAGGAAACAACGAAAAATTTTCCGACATCTTACGTTGATTTTTTTTTTACCGAAAAACAAATTTATTTTTTCCAGGAAAAAGCGAAAAATTTTCAATTTTTAAGGAAAAACTCGAACAATTTAGCCTGATTTCGAGTTGATTTGCGTTTATTACGGAAAAATCGAAAGTAATTTTGGTTTTGAGCTTAGAGTGAAAACCCATAAGTTCAATTTATTTTTCAGAAATCCAATTATTTCAATTTTTGAATTTATTCAAAAAAAAAAAATGTCGATTTTTTCCAGAAAAATCGAAATTTTTCGTTTTTGAATGAAAAAAAAATTTTCCTTCAATTTTTCCTTTAAAAAAAATAAATAATGTTCGAATTTCCATGAAAAAAAGTCAAAAAAATTCAAAATTTTCCATTTTCCCTGAAAAGTCAAAATTTTCCGAGTTTCCTAAACTAAAATCCCAATATATTTTCCGGATTTTCCAATTTTCTCTGAAAAATCGAGGATTTTTTCCCGCACACCTTACCCTGCTGTTCACGTGGTGGTCAGGTTGTCTCATTTTGTGATCTACAAAAAATGAGGCCGGAATCTTTCCTCCCCCGGGAAAATCTGACGTCAGCGCACTCGTGTAACCATGCAATCCCCTGCTGATAAGTCTGCGTCTCTTCTCCCGCCGCATTTTTTGTAGTTCAACGTGTAGATCAATAATGAGACCTTGACACCACGTGCCGAAAGCCTAAACCAATATTTTACCGGTAGCTTCTGGCATCTCTACAACCACTGTCTGAAATATCGCGTCATTTTATATTATTATTATTTATTGTATTCGCTTGAACGGCCAAACAATTCCGCCATTTGATTCAAAAAGTAAACATTTCCGAACTTTTTAAAAATTTGAAAAATATTTTTAAAAAATTGTTAGCGTGAAAAACTTGTCCCCCCACCCTGCCTCTCCATAAAAATTAAGTTCGGAAGAATTCAGTCCTTGTTGTTGTAAATTGACGCAATGCGCTTTTTGGTGGTACCTATTTTGCATATTTATCGTCACTTGCGTACGCGAGGTATTGATTCAGATTCCGTCAGTTTTTTACAACAAAATATCGCTAAGCAATCACTCCAGCGCGAAACTTCAAAAGCGAGAAAGGCCAAAATGTTTTGCGTCGCTTTCTATGATTTTATGACGAAAAGCGAGGAAAGCTAATAAAAACAGCGAAAACTTTGCCAGGAAATTTACCGGTTTGCCGCTTTTTTTGCGCTAGAGCGCGATTGCTCACTGAGTTCAAGCGCCCTTCTTATTTTGAAATAGAAGAGTTTGCCGAATTAGGCTATTTTGGTGCGGCACGGCTGGGGTCAATTTACGGCGCGTTGCGTGCCGCGTCGCGGTAGGTGGACCACGCCTTTACCACGCGTAGACGATTGTCACTATAGAGCGCCGAAAATGTAAGGCCAGAAGCCGGTATGAGTGAACTTTTTGTTCATTATTTTTTTTTTCGTCGTTTTTAACGGTTTTTATGTTAAAATCAATAAAAACGGCGAAAATAATTAAGCAAACGATATTCCGGGTTTGGCGCTTGCTTTGCGCTAGAGCGCGGTTGGAGTGCTCACCGAGTTCAAACGGCGCACTCTGGCTTAACTACCCTATTTTGAAATGGAAGAGTTTATTAGGCCTATATTTTGTCCGGTCGGCGGGTAGATTTACGGGGCGTCGCGTGTCGCCCGCGGCTCGATTTTGATTGTAAAACTAAATGTATTTGTCCGTGAGGAGTACACGCGACTTTCCCAATGCCGCGTTGTCCAGCAGGTTATTGCCAATGGAGCGCCGAAAATGCAAGGCCAGAAGTCCGCCGTATAAGTAGCCCATGAATGAGTGAAGTTGTTGTACATTTTCAGTGCACTTTTTGTTTCGTCGTTTTTCTGGTTTTTATGTGAAAATCTGGCACAGTCTCCTGTCATCGAAAGCGCACAAAAAACTGCCTCGCGTTTGAGGTCGCGTTTTTGCTAGCGCATTTTGTGGATTTCTCCGAAATTCAGAAATTACGCGGCAAATGGCGAGGCTTGAATTCCAAATTACAGCCCCGCCTCTTTTGATACATTATCTTCAGGATGAAGATGATCGCTCCGAAAGGTGGGTGACTCTGAATGAAAATACAAGAAAATTATGATTTCTTCAGAGAAACACCATTTTCACCGTTCATTTTTTAATATCCCTACGCCTCCTTCATTTTTTGACCAAATTTTCTCTTTTAATGGTCTTTCATTTCATTTTGTGCTAATAAACAAATTAAGTTCGACATCTGCGAAAAAATTCGTTCAACGCTAAAAAACGACGAAGTTTTTTTTTCAACACTAAAAAGAATATTCACTCCTAGCTCCGCCGGCTGTACCAATGTGCAAGTGCGCCCCAGCCCACTTCGACGCCGAGGAGACTGCGAAATCATTAAAAACAGTGAAAATAACGGAAATTCTGAAATTCCGGGTTTCGTTTGATAATTTTTTGCGCTGGAGCGACTACGATTGCTCACCGTTAAAATAGCGCACGCGCTTCTGGTTTCCCCCATAAATTGAAATGGAAGAGAGTTTTCGCCGAATTAGGTCATTTTGGCGCGGCCCCGACCGGGGTAGATTTACGGCGCGCTACGTGTCGCGTCGCGGATCGATTTTAGGTGTCAAACTAAATGTAGTTGTCCGTGTGGAGGGGGATACACGACTTACACTCCCGTCCGGCAGGCGATTGCAAGTGGAGCGCGAAAATGCGAGGCCAGAAGCCCGTATATGCATTTTTTTGCTGAGGGTCCCGCCACGACATTTACCCTTTCAGTCACGTGTATCAAAGAGGACCGGGCAATTTGGTCAGAAGGAAAATGAGAACTCGCCACGCCAATCAAGTTCTTTTTATCGATGACGGACAATTGCCAAAGGAGGGAAACTCATCTCGTAAGAAAGGGAATTCTTATGAGCTTCGGAAAATCGATTGAAGTATCTGACAAACGGATATGAGACTGTGAGACTTTTTTTAATACTATTGGGTCTCGACGCGATTTCCCACGGATTTCGGGCTTCCCTCATAAATTGAAATGGAAGAGCGTTTACTTGCCGAGGAACTAGGCCCAGGCCATATCTGGGGTAGATTGCTACGGGCGTTCCTTGCGTGTCGCGTCGCGGCTCGATTTTAGTTGTAAAACTGAAGGTATATCGTCCGTGTGGAGTACACGGGCGCTTGCCAATGGAGCGCGCTAAAAATTCAATTTGTGTCTCGCTTTTAACGATTTTATCGATTCTTGGGTGCTGTTCGAACAAGCTCTGAGTCGTGTCACTTGAATTCAATACGGAACACTTTCTTGTGATCAATTTTTGGATGAGAAGCTACTATTTCATGACAAACGGTGAAAATACCAGCTGTCATACACCGAAACCAACCATCAAACCCGAATTGAATCACTTTATTCGGTTAGCAGGAGAATATCGCTCCATCGCAACCATGTTTTCAGCGAATACTTCATCCAACTGCGGCCCCTCCAGCGAACAGTCAAAGAGAAACCTGCGTTGATCATGTTTGGGGATCAGTCGAAACCGCGAGTTTTAAAGTCGAAATAATCGAAGAGGGAGAGCAGCGCTGAAAGAGAATTCGGGGAAGAAGTGCTGAAAAAGTTCCAGAAAATTCGGACTGAAAGGTTAGAGCGGCGGCGGTGAATAACTCGACGGAGTGGACACAGACGGTGAAGGATACTCGGAGACTAAAACATCGTAGCGAGTGAGTTTGTGCCAAACGCTACTCAGATGTACTTCCGCTTCCGTGAGGACACCGCGTTTGATCTCTGAAAATTGCGAGAGTCAGCCCCTTCGTGTAAGTTTCCCGCAATATTTGAAGGTTAAGCAGCGAGGTCCTCATATTTTGAAGAAAGAACTTTATTGCCGTCTAATTCGGAGTCGATTTACGGCGCGTTGCGTTGCTTGTCGCGTCGCGTCTCGTGATTCGCATATTTATCGACACTCGCGTACGCCACGTATCAGATTCCGTGAGTTTTTGCAACAAAAAAATCGCATATGAGCAATCGCGCTCCACTGGAAAACACCCGAAAAGTTTTGAAATTGGGGTTGTCGCTTGTTTTGCGCGCTAGAGCGCGATTGCTCGCCGAGGTTTCAAACGACACTCTCTGGTTTCCCCCTTGTAGACGAGCGTCGCGGTTCGGTCCAGCAGGCGATTGTGAGCGCGAAAAACACGTGGTGTCAACAGTGTCCCATTATGGTTTGATCTTTGATAAATGTGTACGGGAGACGACAGACACCGACTTCTCAACTGATTTCGCGGCAATGGTTAAAAGTGTTCTGACGTCACATTTTTCTGGCATTCAAGACGCGAAAAACTCCCGTATTTTTTGTAAATCAAACCGGATTAGGACAGCCGAACGTGGAAAAAAGGCAAGATGACAAGGGCCCAAAGGTGACCCACAGAAGCCCGGCAGAGTCTCGGTTTTATCAGTTTTCGAGTAGTTTCGCACCACAAAAAGCGTGTGACGTCACATTTCCGGCCGCAAAATTCCCGCGCTTTTTGAAGATCAAACCGGAATGCATTGTTTCAGAATCTACTCTTTGTCTCTCGTTCATTCACCTCGGTTTGGGTATGGTATTGATCGTAACGCTATCGTTTTTTTGTTCTTTTTCAAGTATTTCAAGAAGTTCAACTCGACGGTGAAGAATGGAGATCAGGTGTATAGAGAGCAGGAATCGGCTGAGACTGATGAGAAGACTGAGAAGACTGAGAAGCGCGAAAAACTTTCTATCTGCGTGTGTCACTGCAAATAAAGAAAGGAATTGAAAATAAAAAAAAAAAAAATTTTTTGGGAGTTGCATATATGCATGTGTCGTGGTGTCCGAGTGGATTATTTCGGTTTGATCTACGTTGATAATCTCTCCAAAAAATGCGGGCACTGATTTTGCATGGATAAGAACGTGCTGACGTCACATATTTTTGTGGGCGAATATTCCGGCATTTTTTGTAGATCAAACCGTGATGGGACACGGTCTGGCATCACGTGTACTTGTCGCAATAAATGAGGTACAACATGTTATGCCGTTATCCTACAGTACTATAGGTGAACCCCGCACTTTTTGGCCTCCAAAAATTGGATGTTATAGGTCACAAACTTGTAAGGAGTCGTGGACATGAATGTCAAGATTCAAATTATTCAAGTCAAAAGGATGATAGCGCAGACACGTGCCCCCAACTTCGGTTTTCTACTGTGTAGATCAACAAAATGCGGGATTTAGGACGCTGAGTTCTCCACTGATTTTGCAACAAATTCCCGGAGCTTTTTTGAAGATCAAACCGGACAACCTGACACCAGGTGAAGGAATAAAACACGCTCTTTTGCCGAAATCTTAAGAGTTTCTACAATTTGAAAATCCAGTATTAGATTTTCTGAAAAAAAGTCCAAAGTTAAATAATGGACGCTGCCTAGTCTTTGGGTCCTCCTCTAAAAACGCCCTTTACAAAAAAAATCTATAGTTTCTGAAAAATAAGTGGCAAATCTCTACAATTTTCAATATTTCATACTAAAAAAATCACAAAAAATTATTTTATGGCCGCGCTCGAGTTTTTTACTCTTCCTCGTGGTGTCAGAGTGTCCAATTGCGGTTTGATCGACCGTGTAGATCTAAATTCGGGATTCGAGAACTGAATTTGCATGATTGCTGACTTCACATTGTTTTGGGTAAAACTAATTTCGGCATTTTTAGTAGATCAAAAAAGCCTGGCACCGCGTGCGCAGAGAAGAAAGAGCTAATGAGCACGGGGTGTCAGGAACGGCTTGATCTACAAAACTTGCGGGAGTTTTCAACCCAAAAATATGTGACGTCAGCGCGTGCTTAACCATGAAGAATCAGTTTCAACTCCCGCAATTTTTGGATATCTAGGATCATAGATGAAACCGAAATGGGACACTCTGAAACCCCGGGAATGAGCCAATTGAGCAAAAGTATGCGAACTGAAGGAGGCATCGTTTTATTCGCGCAGAGGTTAGTTAGACGAATTGAATAGGCAAGAAAAAATAATGTTTTGCAACATAAAAGTAATGTACATACTAATGGAAATAAATTAATTATGGGGGAGCTTCATTATTACAAGTCGACGAAGAGCAGCACTCGTTCTTCTCCTCCTTTTCCTTCTCTTTTTCGTTTGGAACGGAGAATTCGACTGGGGTTTCCACATTAGACGGGAGCTGGAGCATCTGAAAAAAAAACGCGAAAAATGGTAGACTTGTCACACGTTTTCCAACCTACTACCTTCTCAAAATAAGACTGGAGAAGAGCGGTAGTACACTTGAGCATGTTCTTCAACAGTAGCGACTCGTAGTTTTCGATCGATTCCTGGAACTTTTGGATCCACACACCGCTCCTTGTCCGCCCTGTCGGCGACATGTAGGGTGTAGATGCCCACGACCTTGGTAGTAGCGGGTTTGGTGAATTATGACGAACGCGAATCTTAGGGACGGATTACTAGAAGAGAAACACACTTATAGTGACAATACAGTAGTCCTAGAAGGTATTGGTAAGGTACTGAGGTACTGACTGCGCTAATTTTTGTACGTTACACCTTTTCCTGGAGTTTTGCAGACCTTCAAGAAAATTCTAGCACTTCCCATTTTCTCCGAAAAATTCCTGCACTTTCCAGATTTTACCAGAGAATTCCCGCACTATACAGATTTTTCTAGAAAATTTTGTTTTTCTCAGAGTTTTACGGCTCCTATAACTACAGTAACCCTACAGTACCCCCCAGACCATATCGCCCCTACCCCAACATACAACCCAATACATCAAAAGACAAAAACTCAAATTTTCCGGAACGTAACCCTATAACTCCTTTAACGTAGACCTACCGGGCCCCTACAGCACTGCTGCAGGACCTTGAGACATAACCCCCTACCAACATACAAATACCTCTTCGAAAGCTGGGAACTCAAATTTTCTATACAGTAATCCCGCTACAGTACTTCTACAGTACCTCCAGTACTACTACAGTACACCGACCATATCCCCCACAAACGCTATACAAATTTTCCTTCAAAAGACAAAAACTCAAATTTTCCCAAACTACAGTAAGCCTAAGCAGTACTCCTACAGTCAGATCCCCGACCTTCCGATATATCCCCACACCAACATACAGCCCAATGTTCCTTCAAAAAACAGAAAAAACTAAAATTTTCCAAAACTACAGTAACCCTACAGTACTCTTACAGCTAACCTCTACAGTACTCCTACAGTACCTGGACATCATCCTTCACCACTTCCAATCTAATACCTCTTTAAAAGCTGAAAATTCGAATATCCTATAACTACAGTAGTTCTACCAGTACTCCTACCTCTACAGTACCACTACATTACCCCCAGTACCCCTACCACATCCCCCCATCTCTAAACCAATATCCCTTCATAAGCACACTACAAAGACTACGTGGACTACAAACTATGTATGGTCAGACGGTTTATTTTTAATATGAGAAATGATGATGAACTAGCTGATATATACTACTATATGTACTGACACTGATTCACCAAAATTAGCGTGTCAATTCAAGATAGGGGTCTTTACGGTACTGGTATGGTACTGGTCCGATACTAGCCCCAGTTCTTTAATACGATTCCCTAAAATTGCTGACTCGGCGTTCCTGGTCGTTGGAGTCCGCATCACTCTGACGCAAAAATCCATACCTCGTTCGGTAATACGATCCGGCGCTCAGATTTCCCGATTGGGACTGGATCCTTTCTGCAACTCTTTGTCTTCAGTAATAAAACATGGAGAGTAATAAAACTTCGCGGGACTCCTCACCACTTTAAGCTTCGAAGGGCACTTTTTAGTTTTAGTCAGCACAAACATGTCGTTCAATAGAAACGCGTACATGTCAACGGTCCGCCCGTTTTCCACAAGCTCGAGGGGGCGATCTTCGTGGATAAGCTCTCGACGCGGATGAGCCAGTAGGTTCTCGCAGAATTGACGGATGAGGCGACGCGGAGGAACTGGTAAAAAATCAAGGGAAAATGTTGCGGGGAAAACAAATGTTTCAACTTTCATCATGGACATAAGACTTGGCAAGTCGCTTATATTCGGCCAGACCCCAAACCTGTGTCTGCAACTGCTGAAGCCTCTCAATTATGAAGGCGCCACTGCACACTATAATCAATCGATCGGTGGCCAGTGTTCCGTCATTGTGTCGATCATTCTCCACCTTTCCCTTACTCGCCTCTTCCTCCGATCTTTTGTGAATCTCGCGGAGAAGGATCGGAAGCCGAGTGATCGTCGTTGGGTGCGTCAAAAGATCCTCGAGCCGTACACGGAAGCATCGTTCATCGGCCAGACTTTATCCGCTCGAATTCCGTGAATCGTTCCTCTTTCTGTCGCATTGAGCCGAAATATTCCATGGTTGCGTAGTTGATGCAGTAGGCTTGGTAGGCGAAATTGTGGAAGGGCGTTTGCAGAACTGGAAGTTTCGCGTTATAACAAGGCATAGTCTCAAGCTATTTTCTCTGCAGCCTATCCCAGCTGTGGTCCTGGTGCTTAACAGTCGTGATTTCTGCTGGAAAACCGGTCTAATCCGGACTACGGAAGCCTGTGTTTTTGAGTCTAAACGACAACATTGTGAGCGGCAACCAGGTACGCTTTTTCATACTACTTTTTTTTAAACTGTTTTTTTGTTCTTTTTCGGCCAGCGGAAGTTTTTGACCCAACTTCGAAATGTCCCTTTTTTTCGCACTTGAGTTTGGGAATTTCTAGAAACTTCCCAGTATTTTCTCTTTTTCCCGCGAAGCCCCTTCTAAACCTGGGCCTAGGCCTACGCATAAACCTAAGCCTACGCCAAAACCTACGTAGCCTAAGCCTAAAAAGCCTAAGCTTAAGCCTAAGCCTAAGCCTAACCTAAGCCTAAGCCTAAGCCTAAGCCTTAGCTTAAGCAGCCGAATGCCTAAGCGTAGGCCTAAGACTGAGACTATGCCTAAGTCCCAGCCTTTACCCAAGCCTAGGGCTAGTTGAAATCCTAAAGCCTAACCCAAACCCTAAGCCGATAATTGCCTAAGCGTAAGTCCAACATACTTAGGCCTAAGCATTAAGCCTAACAAGCATGTCCCTTTTTCTGGCAATTTTAGGAATTTCTAGAAATTTCACATTTTCTCTTTTTCCAGCCCCTTCTAAACCTAGGCCTAGGCCGCATCAACCTGAGCCTACGCCTAAACCTAAGCCTAAGCCTAAGCCTAAGTCTAAGCCTAAGCAGCCTCAGCCTAAGCCTAAGCCTAAGTCTAAGCCTAAGCTTAAACCTGAGCCCAAGCCTAAGCCTAGGCCTAAGACTAAGCTTATGCCTGTTCCTAGCGAAGCCTTAACCCAAGCCTAGAAGGGGGCTAGTTGAAAGCCTAAGCCTAACCCAAAACCCTAAGCCTAAGCCTAAGCCTAAGTCTACGACTAAGCATATGTCTAAGCCTAAGTCTAAACCGAAGCCTAAGCCGAATCCCAAGCCTAAGCCTAAGCCTACGCCGACGGAGCACGAGGAGAAAGTACATAACTTTGTCACAAAAACAAACATTTCTCAATATCGGTCAGTTTTCAAAAATATTTCGGGTAATTTCTCAGGACAAATAACAAAAACCCACCCTTTCATACAAGTCCACAACTAGCTGTGTGCCAATTCTCCTTGTCTACCGGACTGAGCAACGAGAGGAACGATTGACAGAAGGCGAGTATTCTGACAAAATAAAAATGTGTGTGTGTGTGTGAAATGGCACGTCAGATTAAAGGGAAATAGAAAAAAAAAATTAAAACTGAAGGAACCTGCAGAGTTGATCCAAATTTCGGAAAAGGAGGGTCCGGCTCGACAAGAGTAGACATCCCTGTTCGACTTGACATCTCTTCAGCGTCCTTGTAAACATCGCGGAGCACGAAGAGCTGACGATAGAGGAAGACGAGCCGTGTGGAACAGCTCCCATAGCTTGAAGTTATGTGTGTCTGGATGTGGGAATTGTCGTGGTCTCGTCTCACATGAACATTTCCTCAAAGGATACTGGCTGAAAGTTGGATTTTTTTTTGGAATTGGAGCGCGTTTATGGGCTCGTTTTGCAGTTTGTTTATACCCTTAGACATTAAAAAGACATCAGCAACAAAGTCCCACAAGTAGTAAACAAGAGAGATTTTCTCTAACACGAAAATGTGAGAGAGGAATTTTTATTCGAAGCACCATGTTTCTCACTCAAATTTGACTACTCATAACTTAGGTAAACTTAATCCAATACTTCCTTAATAGCTAAAAATTCACATATTCCAACAAACTACAGTAAACTACAGGTACCCTACCGTACCCCTACAGTACCCCGACAGTACCCATACAGTACTTTGACAATATCACCAATCCACTCCCTACAAAATCATCAAAAACAAAAAATTCACAATTTTCAAACAGTAAGTACCCTAGAGTGATCCTATAGTATTCCTACAGTACCACTACATTACCTTGACATATCCCCCTAAACCAATTTCCACCCCCAGGAAGCAATACCCCTTCTAAAACTAAAATACCCATTTCCCAAAACTACAGTAACCCTACCGTACTAGTACCTGCAGTACCACTACAGTACCATTAACCTTGACATTATCCCCCTCAACTTCCAATTAAATACCACTTCAGAAGCTAAAAAATCAAATTTTCCCGAACTAAAGTATCCCTACCGTATAACTACAGTACCCTACAGTGCCACTACAGTACCTTGACATTATCCCCCTCCAACTTCCAACCCAATACTCAATCAAACGCTAAAAATTAACATTTTCCCAAACTACAGTAACCTTACCGTATTCCTACAGTACCCCTATAGTTTCACCTACCAACAACTTTTCCAGCTCATGATCCTCAATCTCATGATCCTTGAAGTCTCCAACGGCCTGAACATGCTTAAGAATCTCACTCCGTTTTGCTCGCTGCACCACTCGTAACGTCTCTTCAGTATCCAGGGCGATCGATTTTTCTGGGGCTGACACAAGCTACTGGATAGAAGGCTCGAAAGGCTATTGTGGCACGTCGGGTGAAGATCTGAAAATGAAGAATCGGTGGGGATCCGTGGTGTCAGCGAGGGAGAAGATCTATTTGGTGGGGTGGCATATAGAAGTGGGTAGTAGCGGTTTCTTCGTTTGTGTGATCTTTGTGTCAATAGACATGATATTAGGGCTTCGGTGGTAGGCAGGTGCGGTTTTAGGGCCTGGCTCTTGCCTGACGCCTGCCCTTCTCACGCCTGCCTGGCGCCTTTTATCATTTTGAGACAGTGAGTATAGGTTTCAAACTTCAAATTTTCTCATTTCTATCATTTTGTTGAAAATCAAATTAAGAAATGAAAAAAAAGTTTAAGTAGTTGCATTAGGCGTGTATTTAGGAATTGCGAGAGGCAGGCGGGGGTCGTCAAGTCAGGCAGGCAGGTCTTCTTATGCCTACACCTCCGGAAGGTGTTCAAAAATCGGTTGCGGGTGTCCAGCAGTAACTTGACAAGAATCATACAAAGCATTCGACTTTTACACAAACCTGACTAGGCTGTGTATTCCACCTGTACAAACACCTAACGATCGATGTACCTGATTTTATTTGATCTGAAAAAAAAATTTCTCAGAAAATTTGAATTCAAAATGTTTCTTTGAAAGTTTGAATTCCCTGCCAAAAACATTCTCAGAAAATTCAGGTTCGCCAAAATTGTTTCAGATTTGAAAATTTAAATTCCCGCCAAAATTTTTCTGTGAAAATTTGAACTCTCGCCAAAATGTTTTTTGTGAAGAAATTTGAATTCCGATACACAAATTTTTACAGAGCATTTGAATTTCCCCCTACAATTTTCACAGATCTTCTTATATATACATATATATATATATATATTAGTTGAACTTTTGGGCAGTTTTCAAAAAAAAAGTCCGGTGATTTATTTAAGCACGTGGTGGCAAAAAATAATTTTTCGGCTTGATCTACGCCGATCTACTAAAAATGCGGGAGACGCAGAGTTCTCAGTTGATTTCTCAAGGTTAAGAAAATTCCGGCATTTTGTACGATATCAAACCGTAATGGGACAGCCTGGCAGATTACCACGTGCTAAAGTTATAGTTAATTTACAAGTCCTGGTTGCAGTGGACCTGCAGGATGTCATGAAGTAGCACGTGTTTTCTGGAAAAAGTTGGTAAACTTTCATACGAAGAGGAAAGTGTAATCGATATTTACTTGACCATTTTTTTGCTAAAAAGTAAGAGTCTTTGAGCCAGGCCGGCGATCGGTAATTGCCGAAAATCGGCAATTTCGGCAATTGCCGGTTTAGTGCAAAGAATTTTTTGGCAATCGCCAATTGTGGCAATTGCCGAAATTGCCAAAAATTCGATTCCGCACACTCCTGCTTTGAACTGTGAATTTCCAAAATCCAATCGAAATTCTGCCGACACTGTACAATCCCTACCTGCCAACAATCCGCCGGAGCTGATTGCCCAAATTTATTGAGGTGACTCTCGTTAGGGGATAGATTTGATCATGTGGGACAATGAGGTCACATTGTCGAGCAGCACCCTTCGGATGAGGTCTCCTGATTCTCACTTGGCTGATCAGGAATGATTGCATGGCGTCGGGAAGGTTGCCTTATTAGGGTGACTTGTTTGGGCTCTCCTTCTTCTGGCTGGAAAAATACAATTTTTTGAAGTTAAGATTTGAAAAAGAAAGCTGTCATTTTTTTGTTGGTATTTTTTACCCTAAAAATGTGGTTTCAAAATATTTTTACATCTGAATATCTATTCAACGGGGTGAACAACTGCAGATCGACCATACTCGAGCTTCTAAAAGTTTGAAGGACGCTTCTCGTGAAGAAAAGAAAAGAAACACGATATAGTTACCCCTACATCGGAAGAGGATGGGATATACTGAGAAGTAAGAATAGGAAGAGAAATGAGAAGAGTTCATATGCACTAGAGAAGTATGTACAATATAATAATTTATGAGCATCTGAGAAAATGAGAGCTATTTGAAAATCTGCAGAGCAAGATAAAACTCGGTCTCTTATCAGAAAATTTGAAATCCCGCCAAAATGTTTATTGTTTAATTTGACGCCAAAACTTTTCACAACGAATTTGATTTCGCCAAAATTTTTCTCAGAGATTTTGAATTTTCCCGCCAAAAGATTTACCAGAAAATTAAAATTCCCGCCAAAACTCTTCACCTCGAATTTGAATAACCCGTTTTTTCTCAGACAGTTTGACCGCCAAAATTTTTCACATGAATTGAATCTTTCGCCAAAGATTAAAATCGTTGGATAATTTTCATTCGCGGCTGGTTTCCAAATCGAATTAAGAACGGCCAAAGTTTATCGGGGTTTTTTTTAACACTTACTACGAAAAAAAGCATGATATACATTTATTTTCCTAACGACGCCTGGTAAAATCCGCTTTACACATCAAAAACTTCTCGGCAACATTGCGTCACCGCCAAAAGAGATGCTTGCACTTCACCACGAATAATAGCTATGACAAGGCAATGCGTGTAGGGAGTTGAGAATTACAACTAATTCATATCCCCTGAAAAAATAAAAGCGCTGTTGTCTATATGATTCTTTACATGGTGACAGCTTACCGAAGAATAGACGGGTAATGAGATATATATGTGATTCATAAATATGGGCCTGCTCCCGGGTATCCGAGAGCCGAGTCGAAACAGAAGGGGAGCATGAATGGAGCAACTAGGGAAAATTGTGTTATCACGATGAGGCACGGCGGGGGACACAATAGATTTTTTTTTTGTCGAAAACGTTTTCCATTTTCACGTGGTTGGCGCATTACGATTTGAGCTACCAAAAACGCGGGAATTTTTCCCCTAAAAAAATGTATCGTCAGCACGTTGTTTACCATGAGAAATCAGTTGAGAAACTTGTTAGCGTCTCTTCTCCCGCATTTTTTGTAGCTCTAACTTGATCAAGCCGAAATGAGACGCTCTGACACCACGTGACGAAAAAAAGTAGATCAAAATTTGCCAAGCCCTTATAATACTCCCTTTTTCAGATCTAGGCGGAGCTCAGTTTGACTCTGATGACGTTAACGCAAATCTTGAAATTTCGAATTCTCTATGGAGATTAGAACTTCCCGCCCCCGCCAGACTTTGTAAAGTTCAACATAAAGATGAAATATAGAAAAAGTTCAGACTATGATAAGGAACTTATGACTAACGGCTCTTGAGGTGAATGAGTATGATGTGATTAGTGATGCAAGAGGTGCCGACTAGAGAGAGAGCTAGAGCGACGAGAGGCTCAGAGAGGGGGGAAACGGGAAGGTAGGTTTGTAGGTAGGCAAGGTAGGCAAATAGGGGGTCGGTATCCGAGAAATAAGGAACCTAGGTCGGCAGCCGTAGGCATAAAGTAGGTCAACATCCAAGTAAGTTAGACAGGTACGCAAAGATAGGAAGGTAAGTAGCCGCGGTGGCAAGGAGACTAAAGGAGTAGGACAGGAATACGTAGGCGCAGTAGGCAGACGATGAAGGTAGGTGGGTAAGCTTGTGAGAAGGCAGTCATAAAGAACGTCGACAGTAGATGCACTTAGTAGGTAGGTATGAAAAAAGAATTAAGGTATGCATAAGGAAGTAAAGTATGAATGGATGCAGCCGAACATGTAGATACAGAAATATCAGGCAAGTAGGAAACAGGCAGGCTCATAATATAGGAAAGTTAGCATCGTAGGCAAGTATGTAGTCCTGGGTAGGCATGTAGGTAGACACGTGGTAGGCTTATGGTTCGATATGCAAAAGAGCAAGCAATCATCAGAAATATGCATATTGGCAAGTATGTAGGCACGTGCATAAGATACAAAAGTAGACCAGGCATGTAAGTAGGCACGTAGGTAGGGAGGCTTGAGGCAGCAATGTAGGAGATCTGGTAAGTAGGTATGAGTATAAGTAACCTAGTGGTGGTAAGTCACAGGTATTTGGCACAATCCTGTGGTCACTGTTCTCAATGGTAATCAGGCGAACGTGCCTGCCTGCCTCCTTAGAAATTCGGTAAAAAGATTGTGGAAAAACAACTAGGGGAATTCCCATCCATGGAGTCCAATGCGTAATGTGAGTGGGAGGCGGCAAAAAAAAAGCGGACGTAAACACTTTTTCCTAATTCTCTTATACTCTCGCTCGTGGAAAATGTGAATATTTGATACAATTTTGTGGGAAAGTACAGCGAGCAGAAGAAGAAGCTGATGTCCCGATCGCGCGCGCGCGAAAAAAACTTTCAATTCCCACTCCCCTAATAATCCGCCTAACGCCTAATGTTTGTCAAATTCACCATGTATCGTTTTCTCACCCATCGGCTATGATTGTTTTTTTTTCTTTTTCAGCAAAAAAAACGGGCACATGAGGTCGGGATGGATAATTAGGGATGTGTGCCAATTTGGCTGATAGACAAAAAAGGAGTACGTGAGATTTTTAGAAAAGGTTGTTGAGAAAATTATCATGAGGCGTTGGGCACGTGGCCGCGAATGAGAAAACTAGGCTACCTTCACGGGGCCCCCATGGCCTTTCTCGTTGGAAAACTTTTCGCGATCTACTGACAAACGCCCGTGTTCCACACGGACAAATTCATTTAGTTTTGCAGCTAGAATCGATCAGCAACGCGACACGCAACGCGTCGACTAAATCTACCCCGAAGATATGGCCGCTCTTTAAAATGGCCTTGTTGGGCAAACTCTTCCATTTCAAATTTTTTATCGCCCTCAGTTTAATTTTTTAGGATACGCCTACGAGTGATCTAGGCCAGGCAGTAGGTAGGAGTGTAGGTAGCCCCCTTTTGGTGTCAGGCTGTCACATCGCGGTTTGATCTATCAAAAATATTGGTTCTCCCAGTAGAATGTGAAGTGAGCACGTTCTTAATCACGCGAAATCAGTTGATAAGTCTGCGTCTCAACCCGCTCCCGCATTTTTTGTAGATCAAGCGACGTAGATAAATACGAAATCAGACACTCTCGTGGTGGCAGAGCTGTCCCAACGCGGTTTGATCTACTAAAAACGCGGGAACATGTGCCCAAAATTATGAGACGTCAGCACGTTCTTAATCAGGGAAATCAGTTGAAAATAAAGTCTGCGTCTCTTCTCCCGCATTGTAGATCAAAGTAGACCACATTAAGACCTTCTGACACCATCCCCGAGAAGAGTTCAATATAACTTAGCTCGTAGAACATAAATTTTTCCACGTGGATTTTACAGCACAATTGCTTAGAGCCACTAGCGCGGTTGCCCAAATTTTACAGGAAAATGAATATTCAGGAAAATTTTACCAGATTTCCCGCGCAAGACACGAAAGTCTTAAAAAGTAGGAGAGCATGAAACTAAGAAAGTAAGAAACTTCTGGTTTACCACATAAATCAAATTGGAGATAGTCGACCTTAAAAATTTTGCACCAAACAGGGCGGAGCCAAAAACACCAAAAGTTACGCAAATTTGTACATGAAAACTAAACACCTAAAACCGGAGGACAAATATGAAGAAAAACGCTGAAAATGCGCAATGAGACTTTTTCCTCCGTTGCTTAATTTAATACATGTCCTCTCCCCCTTCCTTCCTGCTTTCACACTCTTTCGGCGTCGCCTCCTTTTGATTAGAGACCTGAGACTTTTTTTTTTGTGATTGCGTTGAGTAGTGTGGGATGCATATATTAAATCAAAAATCTGACATCAAAAATATCCCTGAAAAAAAACGTAGTTAAAATTTGCTTTAAAACTGCCGATGCGTTTGCTATTTGATCTACAGGGTGCTTTGGCGCGTTCGCGTCGCGGTTTGGAGTTCGAGGCGACGGCCATTCAATTTGACCCTACTACAATAGAAATATTTTGTAATCTTAGGCCATCAAAAATTTTTAAAAAACAAAACCGGAAATTTCTAGGCCATCAAGAATCTCTAGGCCACATCAGACTACTTTGAAAATTTGTAGGCCACAATGGGAACTATTTTCTGAACCAAATTTCTGAAATTTCTTGGCCACGATCTGAAATTTCGAAGCCATATAAAGATTTGTTTATAGGCCACGATCTGAAATGCGGATTCTAGACTACATCAACAAATCCTAGGCCACGATACTAGGCCACTATTTGAAATTTGTAGGTCAAGGTTTGAAATTTCTAAGCCACGATTAGAAATTTCTAGGCCACGATCTGAAATTTTTAGGCCACGATTTGAAATTTCTAGGCCACGATTTGAAATTTATTAGGCCACGATCTGAAGTTTTGGTCATCAAAATTTCTAGGCCATTTGAAATTTCTAGGCCACGATCTGAAATTTGCCACGGTTTGAAATTTCTAGGCCACGCTTTGAAATTTTTAGGCCACAATCTATTTCTAGGCCATCAAAAATTCATAGGCCACGATTTGAAATTTCTATCTGGCCACGATTTGAAATTCTGGGCCACGAACTGAAATTTCTAGGTCATCAAAAATTTCTTTTAGGCCACGATTTGAAATTTCTAGGCCACGATTTGAAATTTCTAGGCCGCGATCTGAAATTTCTAAGCCATCAAAAATTTCTAGGCCACGATTTGAAATTTCTAGGCCGCGATCTGAAATTTCTAAGCCATCAAAAATTTCTTTAGGCCACATTTTAAATTTATTGTTTAAAATTATAGGTTTTCAAAAAAATTCTAGGCCATCAAAACTTTCTGCAGGGATTTGAAATTTCTAGTAGCCACGATCTGAAATTTCTAGGCCACGATTTGAATTTTCTAGGCCACGATTTGAAATTTTTAGACCACGATCTGAAATTTCTAGGCCCTCCAAAATTTATAGGCCACGATTTGAAATTTCCAGGCCCCGATTTGGAATTTCTGGGCCACGATCTGAACTGATTTCTAGTCATAAAAATTTCTAGGCCACGGATTTGACATTTCTAGGCCACGATTTGAAGTTTCTGGGCCGCTAAATTTCTAAGCCATCAAAAATTTCTAGGCCACGTTTTAAACTTTTTAAAATGTTTAAAATTGTTGGTTTTCAAAAAAATTCTAGGCCATCAAAAATTTCTAGGCCACGATTTGAAATTTCTAGGCCCCGAATCTTTCTAGACGATTTGAAATTTCTAGGCCACGATTTGAAATTTTTAGGCCACGATCCGAAATTTCTCCAAGGCCATCAATTTATTGGCCACGATTTGAAATTTCTGATCGAGGCCACGATTGAAATTTTTAGGCCACGATATGTAATTTTTAGGTCCTCAAAAATTTATAGGCCACGATTTGAAATTTCTAGACCACGATTTGAAATTTCTAGGCCACGATTTGAAATTTCTGGGCCACGATCTGATTTAGGTCATCAAAAATTTCTAGGCCACGATTTGTAATTTCTAGGATTTGAAATTTCTAGGCCGCGATCAGAAATTTCTAAGCCATCAAAATTTCTAGGCGGCCCACGTTTTAAAATTTTTATTCAAAACATTTATAGGTTTACTTCAAAAAAATTCCTTAGACGGCCATCAAAAATTTCTAGGCCTACGATTTGAAATTTCTAGGGTGACAACGATTTGAAATTTTAAAGCCACGATCTGAAATTTCTAGGCCATTAAATTTATAAGCAGGCCACGATTTGAAATTTCTAGGGCACGATTTGAAATTTCTGGGCCACGAAAGATTTATAGGTCATCAAAAATTTCTAGGACAGGATTTGAGAATTGCTAGTCCAGGATTTACAACGAAATTTCTAGTCCGCGTATTATCAGTCGAAATTTCTAAGCCATCAAAAATTTCAGGCTCACGATTTGCGCGAAATGTCTAGGCCACGATCTATTTGAAATTCCGTGTTTAGGCGATTTCAAATTTCTTGGCCACGATTTGAAATCTAATTTATAGCCCGTGATTTGTAAGTTCTAGGTCATCAAAAGGCGATTTCTAGGCCAGGATTACTCTAAAATTTCTAGTCCATCAATATTTCTAGCACAAAATTTGTGTTCACTTTTTTTTTTGTTTTGGTATGTATTTTTCAGAACTTATTCAAAATTTGTGGGAGCAACAATATGCTTTTTTAATTTCTACGCCACAAAATTCTTTGGCCTTTTTCACTTTTTTTCACGCCGCCTATGGTTCCACTGGATAATTGAATGTAGAGAAAAAAGGGAAGGGTTCAGCTAGCGCAAAATAATTCGTTGGAAGGGAAAAAAATAAATGCAAATCTTCGCCAAAAACCAATTTTAGGTCGGAGCTCGGCGCGGGTTCGCACACACACAAAAATGGAGCAGAAGATGACGTCAGATCTTCTTTTTCAGAAGGCTTTCTCAAACTTTGAAAATGGCCAATTTCTTGCTGCTAATTGTGGGATGGGGACAGAATGATATTTTGTTTCAGGTTTCACACCACATCAGATCCTAGTCTTATTTTTTTCTTTTCTCAGGAGTACACACACTATAAATTGTGGTAAAAAAAAGAACACGTCCAGACTTGCTTATTTTATACCGATTTGATGCGGCCTACACAAAACGCGGGAGTTAAAAAGCAACTCGACATCTCACCTGATTTCGCAAGAGCGTGCTCTAGACCAACCGCCACAATTTTTTTGGAAAAATATTTCCGCATTTCTTGTAGATCAAACTTAAGACACCCGCACCGCGTCACAAATAGTATTCCTCTTGAAAAGGATTTCCCAATCAAGTTCCTTGACAGGCGTACGCAAGATTTTGCAAAAAAAATCGGTGGCCGAGTTTACTCTTCTGGCGGCCACGTAACAAAATTAACAAGGAACGTATAAAAAGGAAAAAAAAATTTTCGTAAAAAGGTACCAGGGACCGAAGCAATTTGAGGAAGGAAGGAAATTTGAGTGTCACTCAAATGATCTACCGGTTTTAAGTCGGTGGCCGCGGAACAGAGAAAGCTCGGCCCCCAAGTATTTTTTAAAATATCACGGATTTCTGGTCCCTGATAAGTTTGAAATGGAAGAGTAAAGAACGAACTAGGCTAGCTCGTCTGGGGCAGATTCACGGCGTTGCGTGTCGCGTTGCGGCTCGATTTTAGTTGTAAAATTAAATATAATTGTCCGTGTGGAGTACACGACTTTCCCACGAGTTTTCCGACCGGCGATTGTCAAGGCCCGAGCGCGAAAAATTCAATAAGGAACGGCCAGCCGTGAGATAGGATTTAAAAAATATTACACAACTATTTATTCAAAACTGGCAATTATACATACGATAAGTATTAACTACATACATGGCCGCGAAAAACCCGGCCACCAATTTTCGCGGTTCACTTACCGGATCTCCTCCTGAAATCAGTCTTGCCCTATAAAATAAGGGCATTTTTCGGATCATAGTGAATGAATTATTTAAGGAATATTATTTTAAAGAACACACACCACACAAGACATGTGAAGGGAAGGAACCAGGGAAAAAGAGACAGGGCAAAATACAATTTCTCTATTATTCCGCTCTGTGTTCTGACTAGCAAATGCAGAATCAGTGATGAAGAAACTGGGAATTTACGAGGTATTTAGCGAGATGGTGACCGCGAGGATGAGGAAAAAATCGGCCACCGCAAGACTTACCGGCTTAATCAATTGACCTGGGCCCGTATGTGATGGAACAATCATGTGAGAGCCGGAGCTTCACTCGTCATAGCTTTGTGTCTAGGTGGCTCTCAAGTACTGCTGGAGCTGAAAAACTGTAAATTTAATTTGAAATTTGTTTCGGATGCAAAAAAGTAGCGACACCTGCCGGGTTCCCACAAGATGTCGTTGAATTGACCTAGTAGAATCGTTAGTGATCTACCGAGCAAACAAGTATGCTTGCAATAAAAAAAGGCGTGTGGTTCAAGGTCGTTGACAAATTCGACACTTTGGACACACGAAATTGGTTATGAGCCACACCCCGGCTAGCTTAGGTCAGGAGAAGAGCCTCTCCGAAGAGGACCCCATGTGCGCGCGCGAGCCGAGATTCTGACAACATGAGAAGCGGAGAAGGCGTAAAGGGAGAAGAGTCTAAGTTGAGCTTGTTGCTGAAAATATCTAGGACTCAGGCTTAAGCTTGGGCTCAAGGCCTCATGCTCAGGCTTAGGCGGATCAGGCTTAGGCTCAGGTTACCCATAGGCTCAGGCTGCTCAGGCTTAGGCTCAGGCTTGGAGAGGCTAGCTCGGAATTGGGCTTCGGCTGCGGCCTTGGCTTGGATTAAGCTTAGGCTTAGGCTCAGCCTTAGAATTGGGCTTAGGTTCCTGAGGCTTAGAATTGGGCTTAAGCTCAGGCTTAGAATTGGAGGCTTAGGCTTTGGCGTAGGCTCAGGCTTAAGCTCAGTTAGGCTCCGTTGGCTTAGGCTTAGGCGTTTAGATTTAGAGGCTTAGGCCCTGGCCTAGGCACAGGCCAAGAGGTCACGCCTATCACTTGCTCCTAGATGTGGTTGGGGAAATGAAATTCTAGTGACGTCAAGATTCTGGAAGAGTTCCGTTGACGCCACCAAAAGCAACAAACACTTCAAATCTGAGAAGATCAGGGCGGAACAAAATGTACTGAAAGTACAAAAAGCCCGCATTTTTTTCTCTAATAATACTACATATCATTTGAGTGGGGTTGAAAAAAATGTGTTGCAAGAACTTATTCGGGGCGAAAAAAGATTGAGAGGAAAGAGGAACTTGTTTTTTTGTTGGAAAATCGTAGGTGTGACGTCACTTCTCTTCCAACGCCCAGGTTTCTAGGCAACTTAGGACATTGTGCAAAAAAATCACAGAGCAAAACTACAAAACCCCAGGAAAGAAATGTGCTCTTGGCCAAAATAATAAATATTGGTTACGAAATAAAGGAGAAAGAGAACGAAAAAAAGCTTTAAAAAAGAAATCAAGGAGGAATGTGGAGAAGAGCTTGTGAGGATATACCCAGCAATTAGGGAGAGAGTACTACGCTGTCGGGAGATGACGTTTCGAGGATATTTCTAAATTCACTGGAATGAAGGGTGGTGGAAGAGTTTTGTAAAGTTCGGGTATAGGCCAGGGGTTTTTTTGGCCAATGAGCCTGGTGCATCGAAGAAAAGCTACATTGGAAGGTTTTATGTCTCGGCCACAATAAATTATAAAACCTAGTACGATGAAGCACACTTGCATTAGGATTGCAAAAATTTATTTGACAATTGAGAAGAAAGAAAATCAGGGGGGCATAAATGCGCCATAGAACAGTGCGATCAAATTGTAGAAGAACTTTCGCCCAAAAAGCTAGGCCACGTAGGAGACCGCTGGAGAAAGTACGTGTATATGGTGGAAGAGTTTTCTTGTTTTTCTAGGCAATCTTGCGACAAAACTTGAATTTATGAAAAGATGGCTTGGAAGAGCTTTCGCATAGAAAATCTAGGCCACGGCTAGCAATTTAATAGGAGATAGAAAACCGCGTCGGAAGATTATTTAACTTTTCCATAAAAATTAGCAAATGTAAGAGAGTTCAGATACTGATCTGGAAGAGTTTTTGTGCAAAAAACCTTGGCCGCGACCAGCAACTAAAGTAGTAGGGGAGATAGGGTACCCCGCTAATTTTTTATTTATTTTTCAAAGAAAAAGTTTTAAGGCTTCGGGATTTGATGAAATGGCTCGGAAGAGCTTTTGCCGAAAAACTTAGGCCACGGCCAGCAATCTAATGAGAGGGGGAGGGTTCCCCGTTAAATTTTTTTTGTTTTTTAAACAAAGTTTTGGGGGGATTTGATTAATTGAGCACCATGGAAGAGTTGTTAAGCAAAAAAACCTAGGCCACAGCACCCTGAGAGGCGGGACCATAAGGTAACCCTACGCTATATTTTTTTTTTCAAAGAAAGTTTTAAGGTTTTGGAGGAAATTTGATTACATTACTTGGAAGAGCTTTTGCAAAAAAAAACTTAGGCCACGGCCAGCAACCTAACTCAGAGTAGAATGGGAGATAGGGTACCCCGCGGAAAATTTTTAGCGTTAATTTTGGTAAACAACAATGGAAGAATTTTCCGGTTTTCTAATCCATCGCATTTTCAGCGTCACGGATTCTGTGGCTTCCCCTCGCATAAAATGGAAGAAGTTGCCGACCTATATCTGGGGTAGATTTACAGTGCGTTGCGATGTCGAGTCCGCCGCTCGAATTTAGTTACAAAACTAGGTAATGTAATTATTTGTCCGTGTGGAGTACACGACTTTCCCAGGAAGGTGATTGTCAATGAAGCGCCAAAAATTCTCAACCAAAAGAATCCAGATTCCCGCGCAGCATCGCCTAGGAGAACATTTTCAAGAAATCTGGCTCACGAAGGATTAAGTAAAACAAGAAAAGAAATAAAACTCTAAGATGAAAGGTAAGGGTGGATGCGGGACAACTTATCACTATTTGCCATCATCATCATTTTTCTTCTCCTCCTCATCAGCTTCTGCTCCTCCGCGATCTCGCGGTGACTCTTCTGAAATTCTTAACTAGGCCAACACAACGTCGGCAACGAGTTTCGAACCCTTCACCCACAAACACATACGAAAAAAGCTCCTTAATTGGAGCAGGGAGACGGAAGAGGCGAGGGAGGAGAGGCTGGTCAATGAGTTAGAGTAGAGAGAGAGAGAGAGAGACTGAAAGATGAAGTATAAGCAGAAGTCGTCGGGATGACAGAAGTAGGAGGAGAAGAAAACGTGAGAGGTGGAGTCAGAAGGATATAATATATTACATTCATAGCGAGGATTACAGTTTAACGAGGCAAAACAAACGAATGCTCCAATATGAATTTTTGGGGTTACTGTAGTTTTTTCTGTAGCCTTATACTTCCAGAAGTTACATGATAAACATATGCGAGTTTTTTAAAATTTGCCAGAAGCACGGGTTCATTTTTTTCAGGCTCAATTGACAATCGCCTGCCGGACAACCCACGTGGAAAGTCGTTCCGCACGGACAAATACATTTAATTTTACAACTAAAATCGGCGACACGCAACGCGTCGTAAATCTACATATATGGCCGAGCCAAAATGACCGACTAGTTTGGCAAAGACTCTTCCATTTCAATTTATGATGGAAGCCAGAAATCCGTGCAGAAGTTTCTCGGAAAAAATACAGAAAGTTTGTGAAAGGGTTGCGACCTCTAACGGTCTTCATTAACATAAATTCAAATTTGACGCGCAATAATGAATTGCGAAATTTACTAGCGAAACATGGTGCATTGGGTGTTTGAACCACAATTTTACAGATCTGTGGTCACTAACATCAATGCATGGCCCGAAGGGAAGTGGTACCTGTACGCAATTTATCTAACGTAAACCTGGACGTTTGGGCGCGTGTATCTCACAAACGGTTGGTCCTGTTTTTTTGTGATGCATTTAAAAAATTTGAATTAAATTCTAAATTTATTGGACCAATGCTTTTTTCGTTGAGTATCACGCGCCCAGACCTGGTCTACACTCAAATTACCAGTAGAGCGCATTTGCTGACCACTTGCTGTCCGGGCCGTGTTCAATGCAACGATGGCGCGTCAAATCGACTGCAACTTCAGAAATCCCTAGTAGTTGCGCTTCAAATTTGATGCATTGCACGGCCCGGCAAGTGGTACATCTATGCAAATTCGCTCTACTGATAATTCAGTGAAGACCAGGTTTGGGCGCGTGATAACGAAAAAAGCTTTGGTCCAATAAATTTACTTAGAATTTAATTTCGTACATTTTTTATATGCATCACACCAAGAAAAAACTGGACCAACCGTTTTTACACGCGCCCAAACGTCCAGGTATACGGTAGACAACTTGCGTACAGGTACCACTTCTCGGGCCGTGTTGAATGTTTGAGTTAAAATTTTGAGTTATATGTGCTGGAAAATTGACATGAACATGGTATTTTTCATTATTTGCGCGTGATGGTGCATTGAAGTCGTTTGCAAATTTTTTTCAGAGCTGAGGTCAACTGACACCAAAGCAACAGAGTTGACGATTTTAAACTGCACTTTTGCACGCTTTGCAGTCGGTATTTGGAGGTTATTTTCGATTGTTGTGTGAGATTCACCGACACACCAGATTGGATGACGCGCAAAATTGTACGAAAACAGTTAGTTAGAAAACTAATAAAAGAAAACTATTAATAAAAGTATAGCGAACATCCTGAACAATTATTTCTGCACCGCCAATGTATCTATAGCATGAATTTCAAAATATACAAAAAAAAATTATGAAAACCACGACGAAAAACCCGGAAGTGTTTTTTGGGTAGCCTGTCTGGATTCCTGAGGGTATTGAATTTCGCCCTCGAATAATATTGTTTCCTTTTTCCCCAGAATACCTACAGAATTTGGGGGAAAGAAATGAACTGTTCCTCACATTAACCTACACGTTCTTATTTTTAATTAAATTTAGGCCACGCCCAGAAAGTAGCTGGGCGGGGTTGCACATTTTTCTAGCTTTCCAAAATATAAAAAGTCGGAAAAAAAGTTGTAGTCCGTAGTTTGTAGTTTGTAGTTTGTATCAGCTTGTCCCATAAGTTTTTGTACTTTTTTTCAACTATGTTTCCAACGTCTAGAAAGTTTTAAAATTTTTTCATCGTAGGTCGTGTCAAGCGGGTCGTCCCGGGCCTGTCACAAAAGATTCATTTCATCCATTTCTACTTTGCCACGATGACAATCATCAAACCTGAACGTCGAGACGTTAGATTGCTTCTTCTTTATGAATTTCGTCTTACTTAGGTCATTCAGCAATGGAAGCGGAACGAAACATATGCGGTCCGATGGGTGAGGGAGCACTCTCTTATAATACAGCACTCAAGAGTTTCAAAAGCTCAAGACGGCGCCGACTTCAGTCTCGAGAAATAGAACGTCAATGTGGGCGACCGGAGGCTACAGTTAAATGAGGAAGACATAGGGAAGCTGGTGGAAGCGCCTCGTCTTAGTCTTCGTGAAATGAAAGAGAACCTTGAGTGTTGTCACAATAGCAAAATTGCACGTCACTTGGGTCGCCTTGGTTTTACTTCAAAATTTGGAAGCCTGGGTGCCTCATGAACTTTCGGCATCACAGAAGCTCACTCGGGTCACCGATTGTACTCATAGACTTCTACCTTTTCGTCGGTACGATTGGCTGAACGACCAATCTTTACGGGAGATGAGAAGTGGGTGCTCTATGTTAACCCACGAAAACGTCTATGGCCGATCGGTGAGAAAGGAATAGCGACGCCAAATGATCTTCACCCAAATTATGATCTGTATCTGGTGGGCTGTTCAAGGACCCGTGCACTGGGAATTGTTGCCCACTAATAAAACTATCACTGCTGATTCCCTGACTATTGTGCCCAGACCGAGTTGCAAAAGACCAACGGAAAATATGAAAAACTATATTTTCCAGCTTTCACGATAATGCTAGTCCTCATGTCGCCAAGAAGACTTTGCAAAAGCTGCAAGATCTTGGTTGGACTGTTTTACCGCATCCACGATATTCTCCACATCTTGCACCAACGCGTCAAACTACCAGTTCTTGTCTCTCAGTGACTACTTGCGCGACTAGCAAAGTTATTCGACGACGAAGAGCATCTCAACTGAACTCTCCACTTTCTTCTCATCGCGCTCGGTACGCATTTCTTCTCCCGTGGCAACATGATGTTACCTAGTAAATGGCAACAATTTGAGGTGGAAAGGTGAATACTTGTGTGTATAGTACTACTTGTCGCTTGAGAGAAATAAATTTTTTTTCAAAAAAAAAATAGTAGAAAAACTCATGGGACAACCTGATAGTTTTAGTTCGTTATTTGCTAATTGTTAACGTTAGTATTCGCCCAGGAGGGCCGAAATAAATAAATTTTAGAAAAGAAAACGAAATTATATACATAGTCATTAAAATGTGGTAGTTTGTAGTTTGTAGTCGATGTATTATGTCTATTCAAATTGTATTATAAACAACATCTAAAATTAAACAGGAAACTTATATTTAAAAAGAAAACGAATACTGAAAAAAGGCGGCTGCATAGTAAAAAATAATGATTCTCCTCCAAAAAATGGAATTCCATTTTTTCAGCGGCTATTTTCACGATGATGAGAGGAGACCAACAAAAACATTTGAGATGAGAAATGAGGGGAATCTTGCACAATTGAAAATGGGAAGTGATTTTTTTAACTTTATACACAGTTAAAATTCCAGCGAAGATCTGCGCGCAGAGTGTTTTTGGCGTGGATCGCGAGAGAAAAAGGAACCGGAGGTGCGCACAGCATTGTGCGTCCATCGCGAATTCTTTGAGATGCATTAGAGTGCGAGCATCGCGAACATAAATAATGGGCACATGTGGTTTCTCCTTTCTGATGATATTTTACTCTCTATGGCTTCTCCAATTATCTTTATCTTGTACTCTGTGCGCTGCCTACTATATTCTACTCTCAGTGTCACCAGTCATTTTACTCTCTGTGGCTTCCCACTATATTTTACTCTCTGTGGCTTCCCCTACTATATTTTACTCTCTTTGGCTTTACCAATTATTACTGTGGCTTCCCACTATATTTTACTCACTATGGCTTCCCACTATATTTTACTGTCTGTGGCTTCCCACTATATTTTACCCTCTGTGGCTAGTCCCCACTATATTTTACTCTCTGTGGCTTCCCACTATATTAGATTTACTCCTGTGGCGTCATCAACTATTTTACTCTCTGTGGCTTCCCACTATATTTTACTCTCTGTGGCTTCCACTAAAAATGTTTTACTCTCTGTGGCTTCACCAACTATTTTACTCTCTGTGGTTTCCCACTATATTTTACTCTCTGTGGCGCTACCCTCTATATCTTACTCTCTGTGGCTTCACTAACTATTCTCTGTGGCTTCCCACTATATTTTACTCTCTGTGGCTTCCCACTATATTTTACCCTCTGTGGCTTCCCACTACATATTACTCTCTGTGGCCAACTATTTTACTCTCTGTGACTTCCCACTATATTTTACTCTCTCTGGCTTCCCACTATATATTGGTTAATATCTGTTACTGGTCACCATTCTCGTCGCTTCCCACTATATTTTCCCTCTGTGGCTTCACCATTTTACTCTCTGTGGCTTCCCACTATATTTTACTCTCTGTGGCTTCCCACTAAATTACTCTCTGTGGCTACACCCACTATTTTACTCTATGTGGCTTCCCACTATATTTTACTCTGTGGCTTCCCACTTTCATATTTTACTCTCTGTGGCTTTTTCCACTATATTTTCCTCTCTGTGGCATCACCAACTATTTTACTAACTCGGTGGCTTCCCACTATTTGACTCCTCTGTGGCTTCCCACTATATTTTACTCTCTGTGGCTTCACCAACTACCGGTTTTTACTCTCTGTGGCTTCCCACTATATTTTTATCCTCTCAGTGGGTTCCCATAGCTCTACTTTACTCTCTGTGGCTTCCCACTATATTTTACTCTCTTGGTGGCTACACCAACTATTTACATAACTCTCTGTGGCTGCCCACGCTGTATATTTTACTCTCTGTGGGCTTCCCACTATATCTTACTCTCTGTGGCTTCACTAACTATTTTACTCTCTGTGGCTTCCCAATATATTTTACTCTCTGTGGATTCCCACTATAACGATTTTACTCTCCTGCCTACAATATTTTGTCTGTGGCATTCCCTCTATATTTTACTCTTGGCTTCACAGTGTATTTTATTCTCTGGCATCACAATTATTATATTATACTCTTTGTCTTCTCGCAGAAAGGATATTTTACACTCTGGCTTCACAGAATATTTTACTCTCTGGCTTCGCAGAATATTTTACTCTCTGGTTTCGCAGAATATTTTACTCTTTTTCGCTATGTTTCACAGAATATTTTACTATCTATTAATCCAATTCTTCGTATAACAATCTATTTTTTCGTATTAACAATCTATTTTTTGTATAACCAACTAAACTCGACTTTTCCAAAATTACAGGAACCCTAAGAAATTCTACAGGACTCCTAACTCGCAACCTGCAGTTCAATGAATCACCTCGTTTTTTCACGCGTGACTCATGACTTCCACATTAGTTTACATTTCCTTCATCCATCGGTGTTGGGGCGCTGTTAATATACAACAATTAGAAGAGACCCCACCTCACGCTGCTATTTCTGCTGCTGATCTGTCAAGAATTCTTACCGCCACTTATGACTCATGCCATCAATGACTACTTCCTTCTTTTTTATATTTTCGGCTTCATCTCGAGTAGCAAATTTAACAAAATTCAATAGGTGTGACGTCATCACACCTTCCAGTGGAGAAATCCAAGATTTCTCTCGAAAGGATCAATGTGGTGTCATGGCCAAAACTCCAGTGTGAAACCTAGGCTATGTTAAATATTGAAACCGACTCTAAACTGAGCACATAAGGCTATGATGTCATGGCCTAGAAATCCCAGATTCTATGACGTCATGAAAGACCTGAACTGCACCGAACCTACGAATACCGTCAAAAGGGGTCCTGCTGTGAAGTCTTGTTCGAGAAAACAACTGAGTGCGAAAACTACGGCTCTCCGTAATCTACCATGTGGTAGATCATGCGGCCCTATTGATGGTAGAAAACTTACAGCTTGAAGCTATGTCTTACCTAGAAACTCAATAGTTTTGACGTCATCAATGGCCTAGGTGTATTCGAATGACGCAGTGTCTTAGAATTTTCTGAATATCACACAAAAGTATAACATCTTCTTGAAACCAAATAATTTTGAGGGAATTTGTAACACCCACCCAGTATTGTAACAAATGATATAATAGCGATCGGAACATTCGAGAAAACTGGAAATTTGAGACCTTGTTCGGGAAACTTACCAGTGATTATGCCCAGAGGATGGCTGTGTCGAAAAATGTGCCTAGGAAATGGGATTAGAAAACACGCTTCTTCCTTTTTTTTTCTAAGTACAGAATTACGTTGATAACGAGAAGTGCATTTCATTTTTGTTAGGTTGGAAATTTGAAATTTAAATATTCGTCTCTAGTTAGCACAGCCGTGGAAGACTTTTTCAGAAACGAAACTTTAGCCACGTGTCGCTGGCGGTGCCCACGATATTAGAGAATGTTGATATTTCCTATTTACTTATCTGTGATCATCGAAATTTTAAGATAAAGTTACTACCGTTCAGTTACACTGGTGGAAGAGTTTTTAAGATTTCCCACCGCACAGTTTGGGTGTGCCAGTGACCCTAACACTAAATTTGTAAAATTCTTTTTTCAGCCAAATAATCATATGGTGGTGTCGCCTAGAACCAGAAATTTAACACCTGAAAACTCTTCCATATTTTTTTAATTTCTGAAATCCAACGAAAAATAATTTTCAAACTCCTCTTCCTTCGAATGTTCCAGAAAAATAAAATAATGTGACGAAATCAAGTTCATCTATGAGTTGTGTGGAAGAGTTCAGATTCCTAGGCGACGTCAAAGTTTGAGGGCCCGTGACCCTATCTCGAGACTAAATTTTCCAATTTTTTCAGCCAACCCCAATCAGAAGCTTTCTCTGGCCTGTAATGACATGACAATCGGATATTATCATATGAAGTTTTTTAGGTTAAATTTCTGAGGTCATTTGCAAAGGTGTCATGACTATCATAGTTTGGAGGCTTTTTTGTAACGGTAGGGGTATGAAACTTGTTACTTCTCGAAACGGTATTATGTGGGGGAGAGGAGAAGGAAAGAAGGAAGGTTAGCCAACAGAGATAAAGCAAATTTTGTGTTAGTGGTGGCAGTTTTGAAAGAAGCCATGCTCCAAGGTCGGTTTGTCTTCTTCATTTTTCGGTTTTCTTTTTTGTAATGATTAAAAATATTTTTGTATAGAAATAAAAATTCAATACCAAAAAAATAATCACTGGAAGTTTCAACGTATCGTTTGACGCCTTCAAACATTTTTTAAAAATTCACAGTTTTTCAAATAGATGTACGTACACGTGGTGTCAGAGTATCTCACTTAGTTTCGGCTTGACTACACTTCAAAAAATGCGGGAATCTCCAAAAAAATGTGGAAGTACAGCACGCTCTTATGACCATGCGAAATCTTGAGAACTCTGCGTCTCTCCTCCCGCATTTTCTGTAGATCAGCGTAGATGAAGCCGAAACGAGATACTCTGGCACCATTTTATTTGTTTAGGGCAAAAAATTCCCGCATTTTTTGTAAAGGGATCAACCCGTAATGGGGCGGCCTAGCCCCAGTTTGCGTGCATACTTATTCCTGATGCCGAACGACATTCGCCGATATCCCGTTTTTACAGTATGACTCCCAGTGGGTTACTGTACCAGATTTTTGGTGCTTTTATAATATTGTTTTCTTTTTCAAAAATCTATGACGGAAAAATTTGTACAATTGTTTTTTTTTAATATTTGAATTTTTTCGGCTCCCAGACATTTTAGCGGGATATCGGAGTATCGGCGCATGTAAACGTTTTTTTTTTGGTTTTTTATATTAAAAACGGTTAAGTGTCGTAATAAGACGTGATTCATTTGAATAAAAAATAGCGAGCGACGCCGGCCACCACGACTTAATGGCTTCCCGTCCTAATAACAAAATGGAAGAGTTTTTGCTCCGAACTAGGCCATTTTGGCTCGGCCGTATCCGGGGTACGATTTACGGCGCGTTGCGTGCCGCATCGCGGCTCGTCATTTTAGTTGTAAAACCTAATGTATATGTTGTCCGTGTGGAGTACACGATTTCCACGCGGCGGTTGTCCGGAGGCGATCAATGGCGCGCAAAAAATTATGCCTAGGACAGGACACCGATTCAAAGATATAACGGCCCACATTTCAACAGCGGTATATCGCGAGGGAGTGTCGTTAAGCCTGCACACGGGTTTCTGGCCTTTTCATTGCTTTTGCGCGCTCCATTGACAATCGCCTGCCGGGCAACGCGTGGGAATCGTGTAATACACACGGACAAATTTTTTTAAGTTTTATAATGAAAACCGCGACACGACATGCAATGCGCCGTAAGTCTACCCGGGCCGACCGACACGTGGTGTCGGAGTGTCACGGCTTGATCTACGTAGACCTACAAAGAATTTTGCGTGATTAAGGACTAGTGAGGTGAAGTCACACAACTCTTATGGGCAAAAAATTCCCGCATAATTGTAGATCAAACCGTAAAGGGACAGTCAAAATGGCCTAATTCGCTCTTACATTTCAAAATATAATGGTAGGCAAAAGCATGATGGGGAATTTGTGATTAGATTTTTGAAAAAGGAAATACAATTTTTTCCAAATTTCTACTGAAATTTTTAAAAAAAATGTATTTTTTCCCTAAAATCTTCAAATTTCTGGGGTAGTTTCAATCTCTCACTACCGTGGTAACCAAAAATATGTTTCCTATTTTGACCTCCCGCCACACAGTTTTACTAACAACTTCTTCCCCCCCCACCCACCCACTTACTTCGTATCTGAAACTCCGCCCCATTTTTCGTGTACTTTACACTTGAATGGTGATGAGGTAGAACAAATCTGTGTTTATTGGAAGATCAGCAGTGGTAGCAACAGGAGAAGAAGAAGAATCAGCACTGTGTGGAACCAGCCAGCTGTGTTGTTGTGGTTTTAGTCCTGGGGCTAAGGGAAGAGAGAGGACGACGTCGTGTGTCTTCAATAAAATGAGGATCTGCTCCTATTCCTGACTTTCTTGGCTGGAATTGTTCAGGTAAGCCGGGGTTTAAGTATTGATATTGGTGCTATTTGAAAATTATTTCAAAAATTTTCGATTGGAAAATTTTTTTTTTTTGGCCCAAAACTTTCTTCTAGAACTTTATCATTCCTAGGCATACTAAATATGTCTGCAAATATTATTTTTTCTGGAAAAACACTTTTGAAAATGTACATATGGATAGCAAGTTTGGTTTTAGTATTATTTTGAAAAATTATATTTTTTCAAAAAAATTTTTTACAAATCTAGCAAGAAACGATTTTAAAAACAATTTTAGTCCATTTTCTTTTTTGTTTTTTGGAAATTTCACGAAATATCGGCCCAAAATCAATGCAATACTATTTTTTCACAAAGAAATTTTCAAAATTTGACAATATACAGATCTAGGGCTTCCATGTTAGGCAGGCGCGGTTGCAGACGGCTGCCTGAAACCTGCCTGGTTGCCGCCCGCCTTAATTTTTACGGGAATTTAGAAAAATTTCTAATTTTCTCATTTCTATCAATTTGATTAAAACCAAAATAAATTGCCGAAGCCAAAGGTTGCCTTAAAGACAGGCAGGTGGGCGTTTTAACGCCGAGCAGCTTTACAAAAGCACTATACAACTCTGTTTTTGAAATCTAGCAAATCTTTAAATCAATAAGAGACATGGTGGACAAGACAAAGACATCGACAAATTTTCGACAATATCATCTATAATTTTTTTCGGAAAAATTTTAGTTTATACCTTCCAAATTCGCCAAAGTGAAAAAAAAGTTCCTAAACGTGAGATATTGTATGTCTTCTACACATACTAGCCAATATCAATAACATCTGCCAAGAAAATCTCGAACCAAACACCAAAACGCGGCGTTTGGTAACCGGTTTTCTCTTTTCCAAAAAAACTATACATAGTTTCTAGTAAACAAATACAAATGGAAAATTCAAGGTGACAGCGAAGAAAAAAAGAAAAAAAATAGTTGGTAGTCGCCTAAGAATTGCATGTAACGTCACACCTCGGCCTTAAGAGGGGTCATGGTACATGCTAGATGATTAACCATGGCAAAAGAGTGACGGACCTTCTCGGCCATGACAGTTTTTAGGTTTAGGCTTATTTAGGCTAAGGCTTCGGCTTAGGGTCGTAGGCTTAGGCTTAGGCTTAGACTTAGTCGTGCTCAAGCTTGAGCCTTCTTACACTGGCGTAGGCTTATCCTATGAGCCCATAATCTGAAAACAAATATTAAAAAAAAACCAAAAAAAAAAAAAAAAAAAAACAAACAAACAAATAAAAACAAACAAACAAAAAACAAACAAAATATTTGAATTTTTCTAAGAAGACAAATACGTTACTATCGGTCACGATTTTTGGGCTTTAGGTTTAGGTAGATGTTTAGGCTTAGGCTTTGGCTTAGCCTTAAGCTTAAGCTTAGGCTTAGTGCTTAGGCTCAAGCTTAAGCTTAGGGTTAGGCATACCTTATGAGCCTATAAGCTGCTAGTTCTGAAAAAGAACCAAATATTTAAAAAAAACCAAAACAAAAACAAAAAAAAGACAAACAAACAAATAATTTATCAGGTCCAAGTCTTGCTAGCAATGTTCAAGCCGCTCCTTGAAGGTGGCTGTGGTGTCGGTAATCCGTTTGCAAATCCAAAGGCGATCGGCGTAAGTTTTCGCGCGACAGGCACAGACAAACAGACAGACAATCGAAAGTAGTCCAGGCGCTGAATGGGTTACGCAATTGGTTTTGGGCGCCACGCGCACATCAATTATTTCCATAGATACATACATCATTCAGATACGTGGAAAACCAACACAACGTGAAGATTTAGTGGGTTGGCAAATGCATTTTATGTTTCTTTCCCAGGGTCTCTTCCAACAATTCGCCGGTGGAAATGATGAGGGGATTCGGGCCTTGCTGGAATGGCACCGGTATGTGTTGCGACGGTTAAAACGGACGTTGTGAAAATTTCCGCTTTGGAATATATTGAGAATATTCGAAAATTTTTGTAAAATTTTCGAGATTTTCTTCTAAGCTTTGGCGCGCATCTTAGGCTTAGGCTTAGGCTTCGGCTTATGCTTGCCTAGGCATAGGGCCTATAGGGTGCCTTAAGCGAATTAGGCTAAAGCTCATGACTAGACTTATTCTTAAATTTAGCCTTAAGCTTAGGCATGGAACCCTTAGGCTTAGGTTTTTGCTTACGCTTTAGGCTTTTGCTAAGGCCTTAGCGGCATAAAAAAAGGGATGCCCAAAGTAAAAGACAACTTTTGACAAATTTGAAAGTGAAATATTATATTTTAAGCCTATTTTTTCCCTAAAAAGAAAAAATTACTTTTATAGTTTAGAAAACTATTTTTTGGCAGTGTTTTAGCCGTCAAAATTATGGCTGAAAAACAAAGTTCAAAATATTTTTCATCTAAATTCTTTTAAATTTGCTCTACCTTGAATATTGAAATAGTTTAAACAATTTAAATTATTAAATTTCAAGTAAATTCTAAAATTTTGTTCATTTATTGAAGTTTATGTTCACTCTTACAATATAAATTAGGGTATAATCCTCAAACATTCCAGAAACCAGCACCAGCCGCAGCTGGACCCCGCTCAGCTCCAGCTCCAACCAACGAGGATTACAACACCGACATCGACGTCCCAGCTCCAAAGGCAACGAAGCCCGTGCAGCTCCAACTTCCACGAAGAGCACAAGGTGCTGATGATGATAATATTGATATGACTCTTACACGTCTTGGCTAACTTGGCATGGAAAAGCCCAATTCCTTTAATACAAAAAACTTTTGTCAAAGATTCTCAAAATTTTGCACTTTAATTTTTAAGTTTAATTTTTAAAAAGTTGTGGACTCTCACGTTTGTTAACCATTTTATATGCAAATATGATCCTTATTACTAACAATTTTTAGTAATCTAAACATAAATTGGAATATTTGGTCTTTTTCCCGCCGAAAATCATCAAACATTCCTTAGCAACGGAAAATTGCAGTGAATTGTGTTGGTTTAATTTTACCGTCATTTTTTCCGCATATTTTTTGCCATAGCTCTGCTGTGTTTTGTGCCATCCTTTTCTCTGTGCTATAGAACCTGTTACGTACTTCAATAAATGATTTCTTTTAAAAGTTTTCGCACAAAAAATATAGTCGAGTAGCTGGCAAAATACACGCCATGGTGCAAGAATGTCTCATTTCAGCTTGATCTACGTTGATCTGCAAAAAATGCGGGAGAATGGAGACGCCGTGTTTTCTATTGACTTTGCCTGGTTAAGAACGTGCTGAACGTCACATTTTTTTAGACAAATTCCCGCACTTTTTGTAGAAAGCCGTGGTGGGACATCCTATCCCCACTTGCGCTGGGGGGACAAACCGACATAAGTTTTGAAGACATATTACACATATACATTTAATAACATCTATGTTTTCTGCGGAGGGAAATTAGATTAGAGAATTTCAGCAAAAAAATTCTGATAGCTTTTTGATTTATATTATAAAATTGTTCTTTTTTTTTAGCGAATTCTGATTTTTACAAAAAAGAAATTTTGCGTGAAAACGCTGCCAATATGTGCCTGTCTTACCCTAAAATAAACATTAAAATGGTTCAAAAATTATCTTTTGGAACAATTTTACGGGTCACGCGAAATACTGTCTTAGTTAGTTTTTTTTCTTTGAAATTTATTATTCCCAATATACGTAAATGTCACTGCAAGTTAGAAAATTATACTTGTTCTTTTTCCAGAAATTGAAATGTACATGATACAAGGCTGATTCCATGCAAAATCTAATAAAATTTTTAGAAACAATTTTTTGTCAGAGTCTTGAATATTGCCTTGAGCTATAAGTTACCGTTTTTTTTTTAAAAAAATCAGTTTGGCCTAAAATCTTAAGACTAAGATTAAGCCTAAGCCTACGCCTAAGCCTAAGCCGATCAAGCTTAAGCCTAAGCCTAAAAGGGCCTCAGCCTAAGCCTAAGCCTAAGCCTATGCCTAAACTTAAGACTAAACCTAAGTCTATTCACTAAAATTTTGACGTAAAACTTGTGACTAAAAATTTTGGAAAATTTTTTATAAGTCCTAATGTTTGTTTTTCTAAGCCTAAGTCTTAGTCTAAGTCTAAGTTAAGTCTAAGTCTAAGTCTAAGTCTAAGTCCAACTCTAAGTCTAGTCTAAGTCAAAGTCTAAGTCTAAGTCTAAGTCTAAGTCTAAGTCTACTGAGGTCTACGTATTCTAAGTCTAAGTCTAAGTCTAAGTCTAAGTCTAAGTCTAAGTCTATCGGAAGTCTAAGTCTAAGTCTAAGTCTAAGTCTAAGTCTAAGTCTAAGTCTAAGTCTAAGTCTAAATCTAAGTCTAAGTATAAGTCTAAGTCTAAGTCTAAGTCTAAGTCTAAGTCTAAGTCTGAGCCTAGTTCAGCCTAAAAAGAGGTCTAACGCTTGCCACTGACGCACGCTCTCTAACGCTCACCACTGAAGCCACGCCTAAGCCTTTATAAGCATAAATCAATTTGAAACTTCAGACTTAAATTTTTGGTGGCCTATACTCTGTTAAATTTCGCTTGTGATCAGAAAACGGGACCCCTTTGTTACAAAAAAAACTAACGCTCGCCACTGACGCCAAGTCTAAACCGTAATACTAAGCCTAAGCCTAAGCCTAAGCCTAAGCGTAATAAGGCGTAAGCGTAAGCGTAAGCCTAATAAGGTGTAGTGTAGCGTAAGCGTAAGCCTAAACTTAAGCCTAAATCTTTGGACAAAAATTTTAAAACTTTGACCTAAACTGCGATACTAAATATTTTGGACGCAAATCTCGGCCTGAATTTTTGGAATAATTCTGGGAACTATTCCAGAGTAATTATAATTAACAAAAAAATTTTTATAGTATTCGGCGTAAAACAAAAAATAGATGCAATGTTTTCAGTAATAAGTTTGAAATTTTCGAAAAATTAAATATTTCTTCGAAACTTCGAAACTTACTTTTCTCTGGAATAACCCCAAATTCTAGCCGCCGAGATGCCCCGCCAGTATACCGCCAAACAGCCTCGCACAAAAGCCAAAAATCGAAAGATTCCGGAATATCGGACATTCGCCGTTCGTGTACGTGGTGAACACCACACCAGCTCCTCACTTTGATAACTTCATCTGGCCACAAAATGCAGCTGTCCCAGGAGCCATTCACATTTGCTCCATGCTCCTTCCAAACTCTTGCCACCACCACCAGCTCCAGGACCCGGCGGCTCGGACTCTTGAGCTATTTTTACCGACGACAGCTAGTCCGAAGCTGTTCTCATAACACTGCTAATCAAAAAATTTGAATACTCAATACCTCCTTATAACTTTTTCAAATTCCAGATGATCCGAGAAATCGCTTCATTTTCCGACAGAGGACGCTCCAGGGATCAGGATTTTGGCGCAGTCGTCTTCAAACGCTCATGCAAGCCCTTCGAAGCAGTCTCCAGTCGGAAATAATGGTGGAGCAGGAGCTGCCGCCGGAGCCGGAACAGCTCTAGGAGTAGGTTAAGCTCACTAAAGACGTCGTGAAGTTTTACTATTTTTTAGATGCTCCAATGCTTCAAGCCCATCGAGATGGTAGTTGGGGGCAATCCAATCGCGCGCTAACCAACAAAAGCTTTTCGAGTCGGACATGGTGTTGACGGTCAAGCAGAGGCGTGAGTGTGGGGTACGGCGCAATAAGATTATTGTAGGGGTACTGTAAGATCTCTGTAGGGATACTGTAACCCTACCGTGATATTATAAAGGGGTGCTGTCAGATTACTGTAGGGAGTACTGTAGGATTCCTGTAGGGGTACTGTAAGATAAAATATCTGTTTAAGAGGTTACTGTAGGGGATGCTGTAAAATTTCTCTAGGGATATTGTAGAATTATTCCGACGTAGGGATACTGTAGAATTACTGGAGGGAACTGTAAGTGTACTGTAGGATTACTAAAGAAGTACTGAAGTATTACTGTAGGGGTACTGTAAAATTACTATAGAGTACTGTAAGATGTAGGGGTACTGTAGGATTACTGTAGTATTACTAAACAAGTACTTAAAGATTATTGTAGGGGTACTGTAAAACTAGAGTACTTTTAAGAGTACTGTAGGATTACTAAAGAAGTACTGAAAGATTACTGTAGGGGTCCTGTAGGATTACTGTAGTATTACTAAATAAGTACCGAAAGATTACTGTAGGGGTACTGTAAAATTACTATTCCGAGAGTAATGTAAGATTACTGTAGGGATACAGGAGATTAACGTAGAGACACTGATCGTAAGATTATTGTAGGGGTTCTTTAAGATTTTCATCTGTAGGGTTACTGTAGAATTACTGTAGGGTACTGTAAAATTACTGTAGGGGCACTTTAAGTTTACTGTAGGGATACTGTAGAACTACTGTAGGGTAACTATAAGTTTACTATATTAGTTCTGGGTACTGTAAGTCCCCGTAGAGACTTAATAAGATTCCTGTGGGGGCACTGTTACACTACTGATAACTAAAACGGTACTGCACGGTACTATAAAGCGACCACCCTAGATTCATGGTTATTTCAAAATTGTGCTGCCGCCCAAGAGGCCCGTAAACGGACGTAAAAAGCGAAAGGTGATTAACCGGGATCCGTGTACCGATGGAAGAGTGTGATTCCCTTCCGATTCAAAGGTGGCGACGCGAAATTGAAGAAGCTGATCCGTGAAGGCCTAGGCCTATGGGGAACGGGTGTGCGATGGAGCGACAATGCCCCCGCCAAGGATTATGTGATCTTCTTGGATCGGGGTGAGTTGACATGCCCCACAGTGTAGTTTTTTCATCAGATAGTTGGTGGGTTTTTTTTCAGATGCTACTCATCGCTGTCGATCCGGAGGATCTCAACCTTATTTCGATTCGGTATGGCTGTGAAGATCTAAGTTTTAGTATTTTATACTATTTATAAATTCAAATTTTCTAGAAAGGAATCGTTGCTCACGAAGTCGGTCACTCCCTAGGTTGGCACGAGCAGTCCCGTCCGGATCGGGCTCATGACTACATCCATTTAAGAAAAGACTGGATTATTAAACCGATGGAAACTTCGAGAAACGAAGTTGGGAAGAAATCGAGGATATGGGCGTTCCGTAATGTCGGAAGTGTAATGCATTATGGGTCGAATGTAATTGTTAATTCTGAGTCGGTAGTTTAGATACTCAAAATGATTTTCAGGCCAAAGGACTGGGACCAAATTACTATTGAGACCAAAGATAGTAGAGGGAACGATTGGTCAACGGTGAGCCACATGAAGCTTTCGTTTATCGATGTTAAGCAGCTTAACAGGCTTTATTGCAATTGTGAGTAGTTACGCAAAAATGAAATAAATTTGACGACTGAGCGGATCGAACGCCCAATCTTTCAATCTGGAGTCGAACGCGATACCATTGCGCCAAGCAGACACAGTCGCAGGAAACGGATAGAGGAGAAAAGAAAAAAATAGACAACCCTACGTTTTATCAGTGGAGCGCGGTTGCAATTTAACATTCCAATTTTCAGCTGTTTGCCCGGTTGCCTTACCCTGCATGCAAGGACGATACCCCGACCGCCGAACAATAACTGTGCGGTTTGTAGCAATGTCCAGACGGTCTCGGAGGATTGTGTGGACGTGCCGCTAAGCGCACAGATCATGGACTCCACTGGAATTTATGGGAAAAAACCCCCCTAAAATTTTCCGACAAATGCGGCGGTGCTAACAGCGACCACCGAATGGCAGGAGATGGTCTACAAGGGGAAGCGGACGTGCAATTGGAAGGTGAAGTCACCGAGCGGTGGGCGGGTTCGGTTGGTGCTCACCGAGCTAAGCAGTGTGCACCGGCGTGTAAGGCCTACAACGAGATCAAGCATAATACCGACTCCCAGCAGACCGGATTCAGAGTTTGGTGAGAACCCTAGATTCCCAAAATTCTACACCTTTTTCAAAAAAAAATCGAAAATCGACCCATTTTGGCGGGAATTAAAATTCTTTTAAAAATGACAAAATATTTTTCTGCAGAAAATGTTTCGACTTTTTTTAGAAAGCAAGCTGCGTTTCACGCGGTTTTGGCTTCCCTCATATATTGAAGTGGAAGAGTTTTTGCCTAGGCCATTTCATGGCTCGGATATCTACTGGGCAGATTTACGGCGCGTCGGATTCGGCTCGATTAGTTGTAAAACTATTTAATTGTCCGAATGTGCAGTATATGCGACATTCCCACGCGTTGTCCGGCAGGCGCTTGTCAACGGTCCACTAAAAATTGAATCAGAATCGAGCCGCGAAGCGACACGCTACGCGCCGTAAACTACCCCAGATATCGCCAAGCCAAAATGGCCTAGTTAGCTCTTCGGACATTTCAATGTATGAGGGAAGCCAGAAATCCGTATAAATTTAATTTTTTGTTGCTTAAAAAAAAAAACTAAACATCTATTTCCCAATTCAAATTTCTAGCTGCTTCAACAAAACATATGACGTCATCTCCGACCACTCTGAAGCCCTGATCCTCTCCAACGCGAACATCTTGGACTACGCGTAGGGCTCCTACAAGCTGCAATGACCGATTCAAGCCCACCCCCCCCCCCTTTTTTATCCATAGAGCGCACTCTGATTTGTTCCAGACAACGGAGAAGCCACCACCGAAACCCACGACCCGGGTGTACAGCCCGGAGAGAACCATTCCGCGGTGTGGAGAACTGGGGCGGCACCATCAGAAAAGTTCATCCTGCAAGCGATTCCAAAGATCCGAGACTCGCATCGGCCACTCGAGAGTATTACTAGTATTGTTGCGGAATATGGTCTCGCAACGCTACTTTATATATAATGGATAGTCCGACCGATTTTTGCAATGGCGTGAGAGGATTATATATATATATTTGTAAATTTGGTACCATTCCAAAAATCCAATTTATCTTTCACAATTTTCAAAATTTGCTCATCTTTCACAATTACTCGGGGATTAACACATCTAATGGCTTTCAAATTCATAAATAACAGTTCATATTTAAAGTGATTATTATATTGCAGGAACACATATATCTATGCGTATCGGACAACATATTTTGACCAAATATCTCGTATCGAAAACTACGTTTAAAGGACTGTAGCGCTTGCCATGTCGATTTACGGGCTCCTGTTTTGAAATTTACACGGTTTTCATCGTTGGCTAGCTTCCCCTCAAAAATTGAAATGGAAGATTTTGCACTAGGCTATTTTGGCCACATCGTTCAAAAACTACAGTCGAATTATTAGCGTCAAAATGGTGACTACTGTAGCGCTTGTTTCGATTGTACGGCATTATTGAGATTAATTTTCTTTCGAGTTCCCTTCGTTTTTAATTTTTTGCTTAATTTGAATTTTTTTTTGAGATATTAAAAAAAATGATTTTACACGGTCTCCTGGAGTGTTCATGATTATTGGAGCGCAGTTCCTGATCCTTGCCGCGCTGATTTACTTTTTCACCGTTAGAAAATGAGTAAAATCAAAGATTCCATTGGTCAAGAAATCTGATTAAAATAAATAGGATTATTAATTTTCAAAACCGAGTCACAGGTGGTGCCAGACTGCCCCATCACGGTTTGATTAGATCTACAAAAAATGCGGGAATTTTTAGCCAAAAAATGTGTGACGTGAGCACGTTCTTAAGCATACGTTAAGAGTTGAGAATTCTGCGTGTATTCTCATTATTTGTAGATCTACGTAGATCAAGCCGAAATGAGACATGACACTTTGACACCACGGTCCGTAAATTGACGCCAGTGCTACTGAGTCATTTAAAAAGTTACTGCCTGTCAAAATAATTGCTGTTCCCGTAATATCGCATTCAGCAGGCCACCCTATGAAAACCCAAATTGGAAAAAAATCAATAAAAATTTGAATTTTGACGGAAAAAAAATTGAGACCACATTTTTGTATCTTGAATATAAACCCGTTGTTTATCACAAAAAATTAGTGAAAATCCTTCAAATCATATTATTAGTTCGAAACGTCGACGCGTAGGTGATCGATCGTACACTGGGAATTGCCGGTTCCGAGAGTTCACCGCCGTTTGATATCCTTCTTTGCAAACTTTTGATCTGAAAACATTGACTTTTGCTACCTGGTGGAAGAGCAAACTCGGTCACTATGTTTGTTTTAGCGACAAGGGTATATGCGCAAACCTACAAAATGATCTTCAAAAAAGAATTTTTTGCCCAACAAAATGAAGTGTCAGCACGTTCTGACTAACACCGTAAATCCCGCATTTTTGTAGATCTGCGTAGATCAAGCCGGAACACAAAAATATCAAAGTTTTGAATTTTTCAAATAAAAGCCAGCACACGAGAAGCTAGCCAGCTTGAACAGCAAGTAAATAAGCCACAAAACGCGCACAAAGCTCAAGATCAAACGAGAACTTGGTCGCCCGCATTGAAACTTCTGTCATGTGAGAGAAACGGTTGGGTGGCGTGATCGTTCAAGACAAATGAAAGCATGTAGACTAGTCCATCAATCAGATAGACTGCCGCAATGACTGGCAAACCCTTTGACATCCTGCTCATCAGAACCCTGGAGAAGCCCGCAGCAAACAGACGAAAGAGCAATGTAACTGATGAGGAATAGAATGAGCTCACGGAGAAGTTGAAGAGATCTAGTCGGTGCCCGGGCTACTGCTGCTCCTGATGCAGAATCCGGTGATGGGATTGGCGGCGGCGGCTTTTGCGAGATCGCGAGCTGGCATCGACTAGTGGAGCCGTCCCAGGATGAGCATGATCACGCGGGTGCTGGAGTCGTCCTAGAGAAGATCATTTTTTTAAATCCGTTAATGGACGGAAAATTTATCATCTGGAATACAGGCTGACTAGCCCTATTTCCCGTGGTAGTGTCTTATTTCGTCTTGGTCTACCATGATCTACAAAAAATGCGGGGAAAAGAGACGCAGACTTCAACTCTCAACGTATGGTTAAGAACCTGACGTCACATTTTTAATGTACAAAAAATTCCGTCGCATTTTTTGTAGATCAAGCTGTAACAGCACAAATTTCAGCCCTCAATATATGCGATGTCCTTGTCGCCTTATTCCACGACACACAGATCAAGAGCTAGTAGCCAGAGACGCGCCGTGTAGTAAATCAGTGAGGCCACTAAAGAACATGGAACATGGGAAAGCCCTCCGACGACCGACGAAGGTGATGTAATCGGTTCACGAAATCTGACTGTCTTTGGAACTTCCAAAATTCTTTTTGAATGGTTCGAAAATATTGAGTTTGAGCCTAGTTAAGTCCATTTGAAGTTGGTGGCCTAGGATTTTTAGGAGTATTCTAGGCCGCCAACTTTGGACAGCCATAACTTGGCTGAAAATGAAAATTTTTGAAATCTAATTTCACAGTTGAATTTAGCAGACAATGAGCTTAAATTTGAGAAATATTTTTGCGCCTTGCCACGAAAGCAGACCTACAGTAATCCCGCCATGCATAAATTAATGTTAACTGAAAGCTCAGAGTATGCTAAATTTAAATACAAAGTTCGATTTCCAAACATCTCGATTTTCAGAAAAATTATGAAGACGCTAAGTTGATTGGGCCTAGCATTTTCCTCAGAGTATTCTAGGACGCCAACTTCAAACGCTCATAACTTGGCTCAGAATTAATATTTTAGAGCAAAATAACAAGTATTTAACATAACAAAAATCTTGTGATCTACCGCATACAAGATGCGCCCAATTTTAAATATCTAGGCCACCAAATGAAAACCGTGACTCGGCTCAAAATTATTTCTGCTTCAACCAAAAACCAATTCATTTATATAAAGCCCGGTGTCGGCTCAATTCAAATACCAAGTTTATTTTCAAAATACCAATTTTCAAAAAAGCAATGAGCGTTCTAAGTTGGTGGCTAGGATTTTCATAGATATTCTAAGCCACCAACTTCAAACGCTTATAACGTGGCTTAAAATCAATATTTTCGAGCAAAATAAAAAGGATTTAATAGAAAATCTTGTGATCTATGCAGAATGCATAAATTCTGCAGAGGTCACTAAGTAAAATATTCGGTGCCACAAGCCTCGGCCGAAAGTTATTATTTATGTCTGCTGAGCCAACAACCAAATTCTCCAAAAACTGCTTACCTGATTGTCTTTAAACGAAATGCTCACAAGATAAACCCATGCAAAACGAGAGAGAAGAAAATGGACGGCCAGTTTTCGTAATTACTGTGAGTGGAGCATCTCGAGACGTCTAAAAGATCCTGTTTTTGGAAAATTAGGCCACACATCACACAATCCAACACTTACGACGAGTATGAAGAGTGATAGAAGTGTTAGTATTACAGAGCTCAGCGAGAGAATCACCAAGCGTCGGGTTGCGGATTCACGTCTGAATGTACTCATTTGTTACTGAACTAGGTCTACCTAAGCCTAAGCCTAAAGTAAGCCTACCTGCCCAACCTTCGGTTCGAGCACTAAGGCACACACTTTGAGGATCGATTCAGGAACAACCCGACCTGGGCATTTACCTTTGACGCAGGCGGTGATCGACCTCCCGTTGAATATCTACGTCGATGCATTACCGTCGTCCTTCTGGAAAGACAGAAGGACGATTGATTTGAAGCTCTGTATCTAATTACCCCTGTTTGATGATCAGAGGACGGACAGATTACAATCAGATGTTCTCTGTTTTTCTCTGTTTTTTGGTAGCTAGTATAGAAAACTATAGAGTACTGTAATTCCTATTTGGGGCTTCAGCTAGGTATTGTGCTATTATTAAAAAAATACAATTGCACAAATTTCTCCTGATTTACCTCGACATGTTGAGCTTGACTCCGCCCCCAATCTTGTTACTCTTTACATTAAGGTAGATGAAAAAGGAAGATCAAATAAATGACGAGAAAATTGTGCGATGGAATTTTTTTCTATAATATCAAACTTTTATTTATCATTTTAGGACATTCTGTGATTAACTTTTATAGTTTCACGGATTTCTGGCTTCCCTCAAGTGTAAAATTGAAATTGAACCTGGCCCTAAGTTTTCACTGGACTAGGCCATGTTGGCTCGGCCACGCGTGGCGCGTCGCATTCAGGCTCGATTTTAGTTGTAAAACTAAATATTTCCCACCCGTTGTCCGACAGGAGACTGTGAATGGAGAGCAAAAAATTCATTGAGGGAGGTTTCTATTTGGCAGCTTTTGGTTAGTGGTCTTTCAAAAAATTTTTCATAATTTTCAAATGATCATAACTCTGAAACTACAAATTTTTCGGCATAAAAAGTGCTTAATATTGTAAAATGTTGCTCTGTCTAGTCTATACGATAAATCCTTATTGTTCTCAAAATTTTACATTGATAAACAGGCCAATAGGTACAGCGCCCGACAACTCGCGGGTCCAAAATTCAAAAATGGCCAAACTTCGACTCGCGAGATCTCGAGGGCTAAATCTATTGACTTTATTTTTTTGAATTTTTCAATTGGAAAATTTGTTATCCAATAGAAAAATTTATGAGCAACATATTATTAGTTAAGCGTTTCTTGCCAAACATTTTATATTCAGGAGCTATACTCATTTAGCGAAATTTTTGAAAAAGGCAAACCAAAAAGCTGGCGCGGCAAACGATTTTTTCCCGCAAATCGGCGAATTGGTGCCGGAATTAAAAATTTCCGGTAAATCGGCAAACCGGCAAATTGTCGAATTTGCCGAAAATTTCGGCAAATTGTGGTTTTGCACTGTTTTTGGAAATTTCAGAATTCCAATTTCAAATTGCAAAATTATAGGAAACTCATCCTATGAATGTTTCTATCTATTTTGAAAAGTAAGTAAATTCTATGAAATTATATAAACGACGGAAAAAATTAAGACCTCGTTTTAAGTGTTTCCGTCTTATCAAAAAAGCCCTCTTTTATCCGGCAAATTGATATTCGGCCAACGAGGGAAATTGGCGAGTTGCCGGAATTGAACCGATACTTAAACTTTCTTTCGCTGCAAACTTTGCCCTCTCATCTTGAATTGCTCCTCGCTGTTCATTAACTTTGGCCCTTTCATGCACTTTCTCTTTGTTCTCCAACGGGATATCACAACGAATCACATCGGGCCACTTGAATCCGTTCCAGCACTGGAAGACACTTTTCCTGGACGGAAAGACACAATGGACGGCATGGACCAATTGGGTTGGCTAGCGTAGTTGAAATTTGAACGATGATAAGATAAAATTGTGCCTGATCTCTGATTGAAGTCACTTTCTCGTTGCACATCGGGAAGTGACGGAGCACATGAAGAATCTACTCGGAGCAGATAACGGAGAGCAGGAAGAAGGCTTGTAGGTGCGGATGGATTCAGGAGGCGTCTTTGCATGATTCCGCGTCGACGAGATTTGTGCAACTGGAATAAGGGCTTGTAAACAACGTTTGAGAAACTTGAGATTTACAGGGTCAAAAATTGCTCACGACCTCTCCGGGTGCCGATAAGTTCTTGTGCGGAAATTTGAGCAACCAAAAGTTCTGCCGATTGCCGTATAAATCGGGTACGGCAACTTCGGCAATCGCCGGTTACCGAAGAATGTTTTAGAGTTCTGCAACTTCGGCAATTGGCGGTTGCCATTTCTCTCCACGAAATTTCCCACTATTAGATTAAACAGCAAGTGCAAGTGGGGGTGACTCAAACAGGAAAGAAATCCGGCACTGGTGCCGACTTGCCGGAAATTTTCAATTCCGGCAAATTGTCGGTGTTCGGATTTGCCGTGTGCCGGCTCTCAGATTTGCCGGAAGTGTGTAGAGGGATTTTTATAAGACGGTAACACTGAATACTCCATTGTGCCTTTTTGAATTTTTCAGTGTCGTTTTCTTTGGCTATTCATAGAATTTGCTACTTGTATGGGCAAAAAAATGTAGGAACATTCATAGGTTTAATTTTGCTATTTGAAATTGAAACTCTGAAATTTCCTGGCCAAAAAAATGCAAATCCACAATTTGCCGGAATTGTTCAATTCCAGCAATTTGCCGATTTGTCGTTATGCTGGTTTGCCGGAAATTTTCAATTCCGGCATCTTGCCGATTTGCCGATTTGCCGGATTGCCGAAATTTTTCAATTCGTTAGCCGTCCACCCTGGATCCTGCCATCCAAAAAAAAACGGAAACCATTTTTGGCACATTGACGTTTTCCGCCGGCAAATTCGGCAAATCCATGTCAATGTGCTGCTGTGCCGTTTTGCCGGTTTGACGGAATTTTTCTATTCCGGCAATTTGCCGATCTGCCGACTTGCCGGTTTGCAGGAAATTCTCAATCCATCCGGCTCAATATGCTGACGATTTGTCGGAATAAATTTTCAATTCCGGCAATTGACGACGGTTTACGGCTGGAAATTATCAACTTCGGATTTTGCCAATTTGCCGTCTGGCCAAAAATTTAGGGTTAATTCGGTTCGCCGTTTTGCCAAAACTTTTAGGGTTCGGCAACTTCGGCAGTTGCCTGTATCCGCACATCCCTGTCCCACACCCCAGGTGGAAGAACTGGTGGGAGTTACTAGCGGGTCCATCAAGAATGGGACAATCATCAAGTCAACACAATCCTTAGCCGACCTTCCCAAATTCATAATTCCTTCCTTCCAAAGGCAACGGTTTCCGGTCCTTCCAACTGCTTAATACCAGCCACCACCACCAAACCCTCTCCTTCTAGAGAACAAAGTTGCATACCCCCTTTCATTGTTTTGGAGAAAGGGGCGTCTTGTGGTGCTAGTCCGGAGAGCCTGAGGACGTGACAAGTGATAGACGGGCTTATACTATCGGCTCGTCCATTGGATTTCATGCGCCTAGGCAGAGTGCACGGCGGGAGGTGGGGACGCAGGTTCCCGTCCAACTATTGCCGCAGAGCATCCCCTATCTGCTCCTATCAATTGTTCGGAGAGACTTTTTTGTGAATTTTGCCTTTTGCAAGAGGTCTGAGATTTGGGATTTGGGCTTTAGCCTTTAGGCTTTAGGCTCGCTTGCCTTGCGCCAGAGAATGGAAATTTGTCCGTATTTTCCCGGATATCAAAATATGATCGAGGCAACTATAAAAATATAGTAAAATTTTCCAGGTTTTTTGTCAGTTAGTATTTATTGATTAAAACAAAAGAGAGCGGAGATATAAGCTGTCAAAGTAGAAGGGTGGTTTGATCTACAAAAAATGTGGGGATTTTTTTTCATGCTGATAAATAAAAAATGACTCCCACAAATCCAATAAGCCTCAAACTTAAGTTCCTCCAATCTCATCCCCCTCATAAACCATTAACTAAATCGGAGTACTAGATCGCCGGTAGTATATATCAGAAGAACAGTTGCTCTCCCTCTCGAACCGACTTACACTTGAGAAATAGAATAAATTGTGGAAGAGAAGTGACGACATCATAACCTACCACTTCACAAGTTTAGATATATATATATATATACGTACTAGTTGGACTAGCTAGGACCTAATTTAGAACGCATAGGTATCGCCTGTAAGTGAGGACCTAATTAGAACTCACTAGGACTATAGTATATATATATATATATATATATATATGTAAACAAGAACCCGGGCGGGTAACCCCTTACGGTCAGAGGGGTGTCCTACACCAAGGGTATGTAAAACCGTGTCCTCCAGATGTCGACGTTGAAAGGGAAAAAGTGCAAAAGCGCGCGGCTTCGCGCAAACCGTAGCTGATCCAATGTAGCAACGTTTTTGATTTATTGGAGGAGATATTTTGCCAAAAGTGAAAAAAAAGTGCCCCATATGAGATGCGTAATAAAATTCCCTACAAGACCTTAAGAAAACGTGGCGTTGGCTGGCAAAAAACAGGTGGCAATGATAACGGTGTAGGTGTGCTTGTGTGTGTGTGTGTGTGCTAGAAGAGCATAGGCTCGTGAATCGTTATAATTGATGCTGGAGGAGAAGGAGACGATGGGCCTCCAAAGTGTTACACCTGGTATTGTTGGGAAAAAATTGGGAGAAATAGGCATTAAACTACCTAACCTAATTGAGTTTCAAAGCTTATCTTATTATAACTAAGAGGTGTGATAATAGATAATTAAAGAACTTTAAACTTATCAAAACAACGCTTTCAAATCTGTAAAGCTGAATTAGGATTTGCGTAGTACTAGCTAAAATCTAGTTGGGACCTAGGTCTGAGACTATCTAGAAACTTCGGACGGAACTATTTAGGAACAGTTAAGTCTTAAGGCCTGCTTGGGTACAGGTAAACATGTTTAGAATAGGAACTAAATAGGGAAGTACTAGTTAGACTAGTAAGACCTAATTAGAACCTAGGTAAGGCCTGTCAGTCAGGACCTAAATAGGGCGTACTAGGACTTAGGTCTAGTTAATGTCTTATTAGGACTAGTTAGGACTAGCCCTAATTAGAACCTTTTAGGTACGGCCTGTTAGGGAAGATCTGATTAGGCTTTAGGTAGGACTAGTTAAGATAGAGTTAGGCGACTCGAAGTTAGGACTAGTTAAAATTTAATTAGAATCTAGGGACCGTCAGGACCTAATTAAGACATACTAGGGCTTAAGTAGGACTAGTTAATACTAGTTAAGAACTGAACATAGGCACTGTCTCTTAGGCCTAATTAGGACTCACTAGGACTTAAGCAGGGCTAGTTTAGTTATTGTTTGCACTATTTGACTAGTTATGTACCTAATTTAGTACTCACTAGGACTTAGGAGGACTACGTTATAATGCCTTGTTAGTAATATTTAGGACTAGTTAAAATCTAATTAGAACCTAGATATATCCTGTAAGTTAGGACCTCATTAAGACTTGATTTCCGCTAGGATTTAGACAGGACTAGTTAAGATATTGTTTCGACTAGATTTTTGACTAGTTAAGAGCTAATTAGATCTTAGGTACGGCCTGTAAGTTAGGGCCTATTAGGACTGAATAAAAACTAGTTTGTTACGAATGTAGTTAGGACTAGTTAGGACTAGTTAAAACTTAATTAGCACCTAGGTACGGTCTGTTAGGGAATACCTACTTACCAGGCCTTAGGTAGGACTAGTCATGACCTAATTAGAACCTAATTATAACCATTTCTGGGCACGGCCTGTTAGGGAAGACCTAATAAGGACTTACAAGGACTTTTGTAGGACTAGTTAGGACAAGTTAAGACCTATAGTGGTTGTCCTGTAACTTCGGACTAGGACTTACTAGGAAGGTAGGAAGCTCGTTAAAAGGAATAGTTGAAAATTGGGACCTCATAGTTAGACCCTTAATTTTGTACACATCCTTATTAATATCAAGACACATTTTAAAAAAAAACGACTTTTTTAAGTTTAGCTATATAAAACTATAATTATGGAAAATTTGCTGCTTTCCTTGAAATTCGAAAAACCTAGCGTTTCTATAAAAAACCATCTGGAAGTAAATTTTGAAAAAACCCCGTCATCCAACAAAAAGAAATCTCACTCACTCACCTCGTTAAGTTATCGGCAAATCTTTGCACATCTCATGCACCTTTTGACACCTCTGCCCGTCCACACCAATGTCACAAAGAGCAACAGGAGCCTTCCTAGGTTACCCCGAACCACGACAGATGGCATTAATGCTAAGGAATTGGGCTCACAGCCTAGAGAGGGTGGGGGAAAATATTGAGAGTAAAAGAAACAATGAGAAGAGGGAAAGACGGAGGATAGGCGGGGGGGGGGGGGGGGGGCCACAACAGTGGCAGCACCACCAGGGCCTGTCCGTTGACAAATGACCCAAACGGACGGGTGGGGCAGACCTGTTGTGTTTGTTGGGAGATGGCTGGCGGTTATCAGATACTTGTATTAATGGTATAGAGAAACACCAAGAGAGCTGAAAGATGGAGAGGCGAAAGAGGAAGAGAGGGGGGGGGGTGGAAGTTTTTACGAGCCCTTAATAAATATATCGAATCAGGAAATCATTTGATGATAACGGAGGAGCGCGGGGACGGAGACGGATCATCATTATGAGGACCGAGGGGTGTGCGGCGAATTTTTGCCGAATTTGCTGTTTGCCGAGCTCCGCAATTTACCGAATTTGCCAAGCTCGGCATATTTCAAAAAAGTAGATTTGCCAAGTTTGCCGAACTTGGCATATTTCAAAAAAGTAGATTTGCCGAATTTGCCGAGCTCGGCATATTTCAAAAAAGTAGATTTGCTGAATTTGCCGGCCGAGTTTGCCGAGTTCGGCAAATCTGCCTTAGCCGAGCACGGCATATTTCAAAACATTTGCCCGAATTAGCCGACCCGAGCTTGGCATATTTCAAAAAAGTAGATTTGCTGAACTCGCCGATCTCGGGAAATGCCTATTTAGCAGCACGGCCTAGTTCACAAAAGTAGATTTGCCGAATTTCCCGAGCTTGGCATATTTCAAAAAGTAGATTTGCTGAACTTGCCGGGATCGGCATTTTTCAAAAAAGTAGATTTGCTCAATTTGCCGAGTTCGGAATATTTCAGTAGATGAACTGTGCCGAGCTCGGCATTTCTCAAAAAAGTAGATTTGCTGAATTTGCCGAGCTCGGAATATTGCAAAAAAAGTAGATTTGCCGAATTTGACAATCTTGCCGTGCATGTTCCCCAATTGAGTTTGCCGAACCATACTTGGTCCAAAAAAGGAGATTTGCCGAAATTGCCGAATTTGCCGAAACAATGTGCCCATGGCGAGCTCCTGTTGATTTTTTTCCAAAAATTCAGTAAAACGACACAAATTTGTTTTAAGAATTCATTAGTTTCGGTGCTCCGAACAACATCACAAAAGATCAAGGGATTTTTCCGAAGTTGTTAAGCACAATTTGCCAAATTTGCCGAATCCGCTAATTTTGAGATTTGTCGCACACCCCTGATTAGGACCGAGCAAAGGGCCTAACATGATCTCACAATTTGAAAAATGAAATTCAGGGATTATTCTTGGGAAAAAAGTATGAAACTCTTCCTCCGCCCGTTTCCGGCAGAAACAATTGAACCAAACGAGCCAAAAGTGCAGTGTACAGACACTTTGTTGGGAGTGGAGAGAACCAGAAGAAAGATGGAACTTTCTTGCGATGAACAAATTTTGGATCACTGGAGGGAAAGATTGGTGTTTATTAAGCTTTTTAAGTCAATATTTAGAACTCAATAGGCCCAAACAGGCCTAATAGGCAAATAGGCGAAGTAGATTAAATATGCCAAATAGGTATAGGTTGAATAGGTAAACAGGCCCAATAGGTCAAATAAGCTATAGGCGAGACTGTTGCTCAGATACTTTTTGACCTGGTAATGTTTTTCTACACGAAAAACAAAAAAGTCCCTGCTCTATTAGTTTCGGCAGCAAAATTGTGATTTTTTTCAAAAGTTTCCCATTTGTGCCACTTTTCAATAGTTTTTGATGGGTTAAATCTATATTTTCTGAATTCAGCTTATATGAATTACCCGTTTTCAACAAATTTAGGCAAATTTTTATTTTTGCCCAATCTTTTTAACCATCTAATGACTGATTTTGGGTAAATTTTCCTGAAATTGTACAAAAGCATTAGAAATTGATAGGCCAGTTTATAGGCACATGAGGTTTTTCGGAGTGGGTAATCGTCGTTAGGCGAATTATTTGGTTGACAAATTCGACAAATGCTGGTTTGCCGATTTGCCGGCAAGTATTTCATTTCAAAATATATGTAGGAACATTCAAAGGACGGTTGCTTACAATTTTGCCGGATAAAATTTAAATCTTCTGAACTGAAATTCCTTTAAAAAAAATGTGCAAACCCATAAGTTGCCAGATTTCTAATTCCGGCAATTTGCCGATTTGCCGATTTGCCGTAAATATCAATTCTGGCCAATTGAAGATTTGTCTTATTTTCCGACTTGCCGCATCCCCTGATGTAGGCATCAAAACGAATGTACACCAAGTTTTTTTCAGAGTTTTTAAGTTTACCTTCTAATTATAATTTTTAGTGAGGCTCAAAAAGTTCCAAAATTAATTCTGAAATTTGCTCGGCAAACGGCAAATTTTCCGCACACTCCTGTTTTAAATGTTCACCGCATATTTAATTATTCCGGAAATCTGATTCCCTCAAACAAGTTTCCATCAAAAGTGTTTTCCCTGATTTGTTGACTCTGACACCGACGGTGGTCGTTCCCCCCCCCCCCCACTCTCTCAATTGGCATGTAAATGACCCCGTATGAATGAAATGCCTTTTGGCGGCATAATGCATATCGCCTAGTACCATTATTAATCTTCCATCCCCCATTGTCTCCATCTATATAGGGGGGAGGATGCGTGATGCGTGAAATATGCAAGTGAGACTTCAAATTGAGCGTGTGAGATGTAGTGGCAGATGGCTGGCTGACAACGGATGAGCTCAGTTCCATCGACTGTATCACACGGAGGACTTGGAAGAGAGCAGGGAGATGGATGGGGGCAGATGGCGTCATCTATGGACCATTTTTTTTGGAGCTGTTCACTCAGATATTAGGGTATTCTAATCCCCTTTTTAGGTCTATTTCTGATCGTAAAACTTGTTCTTTTCAACTCATTTTTAATTCAAAAATTTCAAAAGTTTGTCGTAAAAATTACACAAAAACCTAAATTTTGATCTGATTTGAGGCATTTTAGTCCCTTGTTAAGCGTCTTCGATGCACCATTGTTCAACTTGTTTAAACTTTTTAGTTCCGCATTCGAGGAAAATGGAAAATAAAAAATTTGTAAAAACCAGACTTAGATTCTCCGTAACAACGCTTTCATGGGAGGTCACACGCCCGGTTTCACGGCCTGATGCCTACGTCAAACCTGCCTCACGCTGAGTCGGCCTCACGCTCCATTTCTGAATTTTGGCGAAAAATCAAATACTTGGTCATAGTGAAAAGGTAATTTTTTCAACCCGACACTTTTCGGGTTCCGCGCCGCACTATACATGAGGCGAGGCCCGCGGCGCGAGGCAGGAGCGGAGGTCGCAGCAAGGCAGGCGCGGCAAGCGTTTTTGCTTGCATGGATACCCTAGTCTAGACAAAGCACGAAGTTCTGGCTTCCCGCATAAATCGGGAAGAGTTTTTGCCGAACTTGGCCATTTTGGCTCGGCCATATCTGGGGTAGATTTGGCCGTCGTGTTGCGTGTCGTCGCGATTTTAGTTGTAAAACTAATTATATTTGTCCGTGTGGAGTACACGACTTTCCCATGCGTTGTCCGGCGGGCGCTTGTCGATGCAGCGCAAAAAATTCAATAAAGGCCAGAACCCAGTGAAAAAGATAATTTGCGACACTTATAAATAATGTTTACCATAAAATTTTTTTTTGTAGTTTTGATTTGTGGCTCTCCTTGTTTTAAGATGTGAACAAGTTTCATCACCGCTGTAAATTGGTGGATTTGTAAAAAATTATGTATTTAAAAATCAAATCTTGATTCTCCGGGATAGAAGCATAAATCAAATTTATTACTGTAACATGTTCACTTTCAGTACGTTTCATTGAAATTTTTAGGCTTTGAATTTTAGGGCATCATAGTTTTGCCTTCAAAATCCACTTGCCCAAAAAACAAGCCAATTCCTACTCGGCGGGGGACGATGGTTCGATAGCATCAATCATATCGGTGTGTGTGTGTGTGTGTGCAAGGCGGGGGATGTAGCTGGCGCGCGAAACGAATAAATCAAGAAACGTCTCTATTTCTGCGAGCACGGATTTCGTTGAGAGCCCGGGCGCTCACGCGGTCTAAAGGAGGAGAGGGTAGTACCACTTCTAATGCAATACAGGGCATACTTCTTCCATTTCCATGTTTTTGTACTGTGATAAACCAATTGTTAACTAGCCAGAAGTGGTTCACATGTTCCGTAAAGGTTTGCAGGGTGTACTGATAATGAATGTCTATTGCTCTGTGAGGAGACAAAGAGGCAACCGAGAGCAAGTCAGTTAGGTTAGGCAGGTGACTTTTCAATTGTGACCAGGAAAAAGTACTTTGGGAATTTTTTTTTATTTTTTGGCTACTGGCCAGATTTTCAGGATTTTTCAAATATTTACAGAAATTGATTCTACATTATAATATTTCTGTAATTTTCTCAATTTTCAAAAAATAGCCAATTAATTTTGAAGTTTCGAATGATTGCCGATCACAAGTTGCCGACTCCCAAGAACACCGGCAATTGATGGCCCTTTGCCGGAAATTTCGAAAACCGGCAATTGCCGAAATTGCCCATTGCCTTGGAAATTTCGAAAACCGGCAATTGCCGAAGTGGCCGACTCCCGGAAATTTTCAAAACCGGCAATTGCCGACATTGCCGACTCCCGGAAATTTTGAAAACCGGGAATTGCCGAAGTTGCCGACTCCCAGAAATTTTGAAAACCGGCAATTGCCGAAAGCGCATTGCCGATTGCCGGAAATTTCGAAAACCGGCAATTGCCGAAATTGCCGCTTGCCGGAAATTTCGAAAACCGGCAAGTGCCAAACTTGCCGAATGCTCCGGAAATTTTGAAGACCGGCAATTGCCGAAATTGCCCATTGCCGGAAGCCATTTCGAAAACCGGCTGCCGACCAAATTGCTAGCCGGAAATTTTGAAAACCGGCAATAGCCGAAACTGCCCTTTGCCGGAAATTTCGGTGCGAATACCGGCAACGACCAGTTTCCGACGAAATTCGAAAACCTGCAATTGCCAAAATTGCCGCTTGCCGGAAATTTTGAAAACAGGACACTGCCGAAACTGCCGAAACTCCCGGAAATTTCGAAAACCGGGAGACCGAAATTGCCGACACCCTTTGGGTAATTTCGAAAACCGGCAATTTCCGAAATTGTCGATTGCCGGAAATTTCCGATCCCTGAGTTTAGCCTTTTTCAGCAAATCAAACAGTTTATGATTCTTTTAATTCAAAAATTGTTCTGCAGTGATCTTGCATCACTATTGCTGTGGCCCTCCTTTCAATACAGTACTTTCTACAGTACCACTACATTATTGATGCGTAATTTCCAGTAATGCCATTCGTACACATTGTACCACTACAGTTCCTACAGTACCCTATACAGTACCGTCGCAAAACAATTACCGTAACAATGGAAATCTTATAATAGACTACAGTGTTATACAAAAACTACAGTAACCCCCTTGAAGTTAGTGTACAACTTGTAAATGACGCTTTTTTCTTTGTTTTTTGCTAAGTTCAGAAATTGTAGAGTGTTTTTGGCATCTGCTCAGATTTTCAGAAATTTTCGTGATTCTATAGTAGTCTTTTTAATTTTCTCAATTTTCAGAAGTCTGCAAATTTAAATTGAAATTTCGTGAATAGCTTAAAAAAACTCAAACAGTTGGCACAAATTTTCGTAGATTCATGTACGAGTTTCAGCCTTGTTCAGCAAATCAAACAGTTTTTTATTTTTTTTTGATTAACGTTTTAATTGTTCTCACCCCCTGCAAAGTACTATCAGGTCCTAACGGTAATATTAGCCTACCGTATCACTACATAGTAATCTCCAGTACTTCTGTGCATGCTGTACCCTTGCATCATCATAGTGGTCTTTAAACCTACAGTACTTCTGCAGTAGCACTACAGTACCACTCAGAATCTCTCCATTAGATAGACGGCGTCTCGTATCGTACCACTACCGTAATCCTACAGTACCGCCACAATACCATTACGGTAACACTATGAAAATCTTACAATAACAGTATACAGGCCGGAAACTAAGCCCCCTTGAATGTAAAACTTGCAAATCTCTACCGTTCCTACAGTACCCCAATGCAGTACCACCGCAATACAGTTGGCATAACACTATGAAATCTTACAGTACACTACAGTAGGCAAAAACTACAGTAACCCCCTTGAAGTTGGTGTAAAACTTACAAATGTTCAGCTTTCTTCTACAAATTTGCCAATAACTTGTAAGTTGGGGGAGCGCATCGAACTGTATACATATATGTACATGCCAACCAATTATTTTATCAAACAATTTATTAATAGTCGAAGACACCTGAAGCAACGATTAGGAGGAAGAACACGGGCAGGGAGATAGGCAGAAGAAGAAGAAGAAGACGAATTAGTTGAAGAATCTGTTGAAACGGACGACGTTTGTTTGTGATGTCGCTGTGCGACAGCTTCTCGTTGCGGACGGAACGATGTTCGCACGGCGAATTCGGTGGCGAGATGTCGGACACGTCGATTGTCGACGAGAAGGGATCAGTCGAGACGGTTGAAGAATGCTGAGGAGGAGGATTATGTCGACGTTCCCGTCCACGACACGGGCCTGGGTACAAGTGATACAGACGTGAAGGTTACAGAAGATGTTCACCCCGTTGCGGAGGTATAATAGTCGTTGAGAGGTGGGTGGTGAACATGAACAAAGAACTTAAGAGGCTTCGTTGGGAATGCGCAGGCCTTACTGCTATGTGGTTGTAGAAGATGGTCTTACCATTGCGTCGAGGCACTTCAAAGTCCCCCCACACCTGGAACACAAAATTTTCAATGGTAGTCTCAAATAATATGCAGTGGCCGATGCACTAGGATAAATTGCCAAACAAGGTGCATCGACGCTAAATAATTTTCTTTTGAAATTTCATTTAGAGATGTTTTGCTGCGCAGACTTTCAATCATCTTTTTAGTTTTCCTCTCTAATATCATCAGTGCATCGAGAAAAAATGTTATAGCAGGAGTAAAGAAATTTGAGACTTTACTTATTTAGACCAAAAATGACCCAAAATTAACGAATTGTTTAGTAAGACGTTTTGAACATTTTTCAAAACAAAGTTCTGGCGGTTCAAAGTTCTGGAAAATAGCACATTTTCAGCTAAAATCTAACCAATGTTTTGGGGGTGTGGCTGGGGGAGCTAGGAATCAAAATGTAATGTCATTTTTTTGTGCCCCACTGCCCGTAAATGGACTTTAAGCGACGAATAATAACTGTAAGGGCCACAATATTTATAAAAGAGTTATAGTTATAAATAGAAATTGAGTTCCGCCCGACCGAGAAAAAACTTGACGAAAATTTAGCCTTAATTTTAAAATGGGACTTTTTTTCCAAAACATTGAGCGATAACTCTTTTTTGAGAATTTTACGTGTCATTTAGAGTAAATTCGGTAGATTTAGGTCATTTTTGATTACTAAAAAAGTAAAGTCTCAGATTTTGATACTTTCTCGATGCACCATGATGAAAAGAAAAAAAGAGAAAGTTTAGGGTTAAAAAAAAGAAATCCGTAGAACCCTTCCGACGTTTTGGGAAAGTATAGCAAAACAAAAGATTTGTAAAAAATTCAATTTCAGTAGGTTCCCCCTATTAAATTCTCAATTTGTATCAATGCACCATACATTTTCAGCGTGAGATTTTGTAAAATGGACAGGAATGAAAATTGATCAGGTGTGTATAAAAAAGAAATTGACATTTTGTTTTTTTTTTTGTCAATACACCATGATGAACTTCACGTCAAACATGGTACATCCTGGAAAGGAGAGAGTTTGAAAAATGTATCATTTTATTCTCGATGCCATGAAGATTTATATTAGTAGAAAAACCTTAGCATAAGTGGCATAAAAATAAAGGTGGAGTAGCGTGGGGATTTTGTCTACACTTATTATGATCCAAAACGATAGAATATCTTAATTAAACACTCCAAAATATTTAAGATTTTTCAAAATTTCCGGTAAAAGTTTTGGCAACTAAATATGCTTGAAAAAAATATGAGCTTTTGAGGAAATCTCATCCAAAGCAATGTCGCGTGTTTCGACCCACTGTTTTTATGGTCGACAATGTAGAAAAAAATTTTTTTTTGGTCGACTTTTAAAATTAAGATGGCAAAAACTTAGTAATTGCCTATTTGACAATAAAAAATTTTCAAAATTGAAAAGTTTTATTATGATATTCGATTATTCTGGCACCATGTGAGTATGGTTTGTAGTAATTTCCCCACTGGGCTACTCCACCTTTGCTTAAAATTAAAAAAAAAATCATAATCACAGGGGGATTATTTAATATCAATGAAAGTTTCGATTTTTCCAAATGTATCAAATGCAGTTTTCAGCGCGAAATTTATGTGCAGTACTTTTTCTTCCAATAATATATCCCGAATGATGCATTAGTTATGGGCTACACGATTTGTTAGAAAAACTGGCCATGCTTAAAGGTGGTGAACCGAAACTTGATACTCTGTCTTTTTAGATCCAAAACGGTCCAAGACTACCTATCGAATATTCGTATTAACCTGTTCTGAAAACTTTTCAAAAAAAAAAGTTATGGCCGTTCAAAGTTTTGGAAAATGGTCGATGTTTAGCTAAACTCTCAAATTTTGGCAATCAACCGTCTGTCACAGTTGGAGCTTAATGTTAGAAACAACACGTGATAAATTGCAAAAACATGCCTAAAGGTTCCAACCGCTCCGACACAACCAAAATTTGAATTTTCGCTAAACGACCATTTCCTCTTCCAAAACTTTGGGAGGTCATAATAACTTTTTTTTTTGAATAAAATTTTCAAAACGTCTTAATACGAAATTTGGTAGTTTTTGGACCATTTTGGGTAAAGGCAAAGTATCGGCCAAATTTTGGTACTTTCCACTCAGCCTTTCAAGCAGAGCCCCTTTAAAAGTTTGACCGAGGTCCCAAAATTTTGTAAGTTTCTTCCATGAACCATGATGATTTTGAGCAAAATGTTAGTTTTTTTTTTGTGCTTGAAAAACTGGTGGCAGGACAGTTTTCGGGTGTTAATAAATATTTCGATTCACTATGTTTTTTTTAATGAAACCGTACCTCCCTTCAACACAAGTCTGCACATCCGTTCCGTCTGTGGTAGCTCGGAGATCCCGCCATTCGCCCAACACCTTCCGATTCGTCCATTCTGATCATCGCTCATTTCAACTGTGTACGTCTACTATTTACAAATGCTAGTTTCTTATGATTTATGGAGTCATCCTGACTTACTATCACCAACTGCTAACACGTTGTAGCTGAATCCAAACTGTCCCCGTTTAGACGCTCACCGAACTCGGTAGTCGACTGTCTGAAACATTATATGGGTATCGCAGCGATAATTTTGAAGCCTTACCTTATTATCCGATAGGCAGCTTGCGTGGCATCCGAGCACTTGATAGTGATTCCACCAAATGATACGGTCACCTGAGATTCTTTAGGAACAGGGGCAGAAGGTATACATGCAGGTCAGAAGGTCGTTTGTCGGTTTTTGCACCTTGAATCTTAAAAAAAAACGATGAGCAAGTTATTTTTTATTTTTGTCTATTTTTGTTCGTATATGGTTTTTTAGGTACCATGGAATAAAAAAAATGCTCCAAAAAAAATTAGTTTACAAATATTACTGGTACAGAGAGTGTAGATAGTTAGAGAGTGACTGACCGCATCCGGTGTGGACCCAATGGGGCGGGGCGCGCGGAAGGAGACGATTGGTGTCGATTTACGAAATGATGACAAAGAGGAACGTAAATCGACACAAATCGCCTCTTCCGCGCGCCCCGCCCCATTGGGTCCCGGATGTATGTCACTCTCTAACTATCTACACTCTGTAGGTCCGGTAATACCATAATATGATCATTATGGGCGTCTACATTAGAAAAAAATCGATCTGAAATCACAGATTTTTGGCCTCCCTCATAAATTGAAAAGGAATAAGAGGTTGCGAAATTAGGCCATTTTGGCTCGGCCATATCTGGGGTAGATTTGCGGCGCGTTGCGTGTAGCGTCGCGGCTCCATTTTAGTGTAAAACTAAATGGAGTTGGCCGTGTGGAGTACACGACTTTCGCGTTGCCCGACCAGCGCGCTTGCCAATGGAGCGCAAGAATCAATGAGGAAGGGCCATGGCGCGCCAGAACCCCATGATTTTTAGGGTATTTCGAGGTTGGCAGACGCAATATGCTGGAATCTTTTTGAAAAATTTTTTTTTTTTTGAAAAACAAATTCCAAAAAATCTCCTCATCGATCGAAACATTCTTGGGTGAAAAAAGTTGCACGATTAGGAATTTCAGAAATTAGAAAAATTCGAAATTAGGAGAAAACAGAAAATTTCCAAACTGCTTTCAGAATACTTGTATACATGAAATAGCCTAAAAATCATGAAATTTTTCAATAATTACTCTAAACTAGCCCAAATTTGGTAGTAAATATTCACTGGCAGCAACTTCAGTGCGAGATTTTTCTACTCAGTTTTAAGTGCTCGTATGTCGCTGAATTGTTTGTAGGTACTTATTTGAAACTCTTTTGTCAAAATTCAAAAATTTAATTTTCACGTTTAAATTTTGAGTAGCGCCAGTGGGGGATTTTGTCTAAATACACTCATTATGATCCAAAACTACCTGAGTAATTGCCACTATTTGACAGTAAATAAAACCACGATTTACAGAAAAAAAAAGTTGTATTATGATATTCGGTCACTTTGGGACCAAATGAATGGTTTTTCAAAATTTCCCCACTGGCGCTACTCCACCTTGAAGAAACTGAGCGGAAATACTTTTTACTCCTTGTGAGTATGGCAAAAAACCTTGTACCACATGGCAAAAGAAAACCCACGCATTGTTAGTCATGACAACTTCGGTCTCATTCTCCAAATTGCCGCCTTCTCCGTTCTCCTTGGTCGATCAGCCAGTCAGGCATCTAAGCAAATAATGCCCAAAATTCAATACATCCAGCAAACGTTCAACTGATATTTCGTGTCCCATTGAAGCGTGCCATTTGAATAGATACACTTTGGATGGCCCGCGTTTGTATCGCACGGAAGTTTTCGTCAAACCTGATCTTCAATAGGAATCTGCAATATTGAATTTTTTTCCTTTTGGTGGTGACCTTCAAGGTTTTGGCCTGGGTTTTTAATCTTCCATTAAATCCCTTCAAGTTCGCTTTTTCGAGAGTTTAGTTTCTAGGCCGAGGAACTTCTTGCAGCCAAATTTCTAAACTATTGTGTTTTTGCCAAATTCTAACAAAGAAACATTAGGTCAATTACGTCATATTCTTGCCACATGCAACTTTGTCGTCATAGGCCCACATCATCCGAAAAGCCTAAGCCTGAGCCCAATCGAAGGTCGCTTGAGCCTAATGTTCAGCCTAAGCGTACGCCTAAGCCCAAACTAAAAGCCTAAGCCTGAGCTCAAGACTAAGCCTAAGCCTTAAGAAAAACCGGAAAATCCTAAGCCTAAATAGCGTAGCAAGCTAACGCTCGCCACTGACGCCAAACCTAAGTCTCGGCTTAAGCCAAGGCCTAAGCCTAAGCCTAAACCCATGATTAAGCCCAATCCTAGCGAGCCTACGCCTAAGCTTGAACCTAAGCCTAAGCCTAAGCAAGCCTCAACCCAAGCCTATAATTTAGGCCACCACTAATGTTTTCAAAACTCGATTCTCAAATACTTTTTTCAGGATATGAAAGTAGGACAGAAATGGGCAGGGTATATGGTATGGAGCAAATATCACAAGATGGATCAGAAACATAGATACGGGGTGGGAGTGTTGGACTAGGTGACTTTTCTAAGCCATCCCTACCTTATGTGAACACACGCATTCGAAGTGTCCACAATGGCCACTGATCGAATCAGCGGTGGCAGCACCACAACCACCGACCAAATGATCCAGTGCAGAATGATAAATTTGTGGAGGGAAAAATCGATAACAGTAGGCTCCTGAGGGTAATAGTAGTAATCATACATATATGGAAAAATGAAGGCAATCCAAAAAGATGTGTGCGCTGGTTGGGGTAGTGGCATCAGAATAAAGGTGGGATTGGGCGGTATAATTGGAGCGCGGCCGAGGAGGAGAATCCCAAAAAAGAAGGAAAGTGCAAAGAGGAGAGTAATGACATGTTACGGTAGACAGGACAATGCAACTACCTAATTATATGAAAGAGGGGGGGGGGGCGACGAGAAGAGAAAAGTCTTACGCAATTTGCAATCTACTTGCCGACTTTCAATTTCTGCTAGAAATCGAAAAAAGGAAACAAATTCCAACTCAACTTTTTCGATATCATCACTTCCGTGGCACGGCACACGTCGGAGCAGATTCAACGACGTCTCGCGATCCCGACTCGCTTTACCCATCCCATTGTTCCCCTGATAGTCGATGAGCTCGGAGATGTTGACCCTGAACGTGCGATCGCGGGTAATCGCACTCTCTGGAATTTTGAGAGCTTGGAAGATTTGCCGGGGGGGGGGGGGGAGGGTCTTACGGTGTGATTGAGTAGGATGATTTGTGCCGTTCAGGCGGGTCGGCCAACTCAGCACGTACTTGCCGGGCGTGTGGTCGCTTAGTCTGCAAGGAACTGGCCAAGTTTGAGCGGCCGACAGCATGCGGGTCTTTTTTTAGAGAAGGGGGACTGTGAGGTGTCCGCTGCTTCAGACAATCTTAGCATCATGCAAACCTTGCATCTTTTGTATTTCAGGAAAAAAAACAGAATTTTTTTTGAGCAAATTTCAGCCTAAAACAAAAATCTAACAAAATTTTGGGAGGATGAACTTATTATACCAAATTTTTCCCTGGTCTTTGAAGAAATTTAAAGCCCCGTGGCTTCTGATATTATCAAACAAATTACAGATATGAAATGTGACTGAAGCTTTAGGTCAGAAATACATAAAAAAAGGATTTTTCATACTATTTTTCCAGTCAAATTTGATTTTAGGCTTTCAGATTTATCTACGAAGTCTGTTAAAATAGGCTTATATTAAAAAGCTATCCGATTTACTAGTAAAAAATTATAGCGACCGACATCTCGCAGGTTGTTAAAGAAAAGTGCATTGACGGGCCACGCAACCTTGGCAGTTTATATCTCGGCTGGTTTTGGTTTTATTGGTTAAAAAATTTCTGACGAAATAAGTTTGTATCACTTTTTCTACTAAAAATTTGCAAACACTTTTTGCTAGCAGCGATTAACCGAGATATTACCGGAAAAAGTACATGAGTAACATGGTGCATCGACAACGAAATATCTCACAAAACTCTGGCAGGTTATATCTCGGCTGGTTGTGGTTTTATTAAAAAATTTAACAAAATGTTTATCCTCTTTTCTACTACAACGCAGTTGAACACTTTTTGCTAGCAGTGATATAAACTATGATCGGAAAAAGTTAGATGAGAATCATGGTGCATCGCCAAGAGATATCTCACAAACTTTGGCAGCTTATATCTCGGCTGGTTGTAGTTTTATTGAAAAATTGTTAATTGACAACATATTTTTCCTTTATTCTTTTGCCACAAATTTGCAGATGAACACGTTTTGCTAGCAGCTATAAACTACGAGATATGATTGGAAAAAGTTAAATGGTAGATGCATTGATCAGCTATCATAGCTCATGTTTTACTTATCTCAGGTTTTACCAAAAAATTGCCAATTATTAAAACATTAGCCTTTTTCTTCGAAAATTTTGCTCCCCCGAATTGCCGAAAATATCCTAGATTTGATATTTTTTTGTAGATTTAGGAGCCTTAACATTTGTTAATTTTTTAAGTATTGACCGTTTCCTTTCAAAAATAACTAATCTAATACTGAAACACAGTTAACTTTTTTCATTTCAATTTTTATAATTAGGTTTGAAAATTGCCGAAAACACTGTCGGCATTCAGTTGGAATTTTGGCAATTGCCCCTAGGAATATTTCCGATTCCCACGCGCCCCTGGTGTGAACCTAGTGAGCATGAAGCCAAACGATTTAGAAATCCAGCACAAATAATCCTAGCTTTTTACTATAAACAATCTAAAAGACCTTACCACCAACGCCGTTTCCGTCTTCAACAAAGACTGCAATCCTCTCTGGTGCTGATAAATTTCCATGATACCAAACTTTCCCCACAACATCCTCAGTTACAGTAGGCGCTATTCGACACAAATGACTGTCGATGCAGGGAACCTCAATTCGTCGGGGGCGCCGGCACCGTAGATCCATCGAAGACTTGAAGCATCGCCTGTGAAAGTGTTCACATTGATCGGAGTGGTAAGGACGGCGATGAGTTTGGGCACATCCTCGATGAACACCACGTGGCATCGACGATCCGTTCCATCCTTGTTTTTTGCAATGTAGCCGAACATTAGCTCCGTGTCCGTCCCCTTTTGGCCTTGGGCTCCGAGTGAGAAGAATGAGAAGGGATGACGTTGAATTAGACGACTTTGTTTTGAATGATGATTTTGATCATTTTCGCGAGCAGGAAATGTTGATGTCTACGGTTTCTGGAAGTTTTCTTTTTTCACTTATTCACCGAGGATTACCTGAAAAGATGGTTTACCTGGGCTTTTTCATGGACCCGTGAGGTTGTCGGATGCAATAATTTTGTGGAAATTAGTGAATATCTCTACTTTTATGACTAGCGGCTTACATCATTTAGCGCGATTTTGAGCGACCTGTAAGATGTCGGTTGCTTTAGTACATTCTAGTGGCAGGCTTGGCTGAATTTTACTGGATATATAAGCTATCAAAATTTGAGCATGTCGATGCACCATATTATCTCCTGAGTTTATTTCCATGCTGCTATCAAAAAGTGTTAAAATGCAAAGAGTAAACGATAAATATTTTGTCAACTGACACTTTTTCAAAACAAAACCAAAACCAGCAGAGAAAGTAGTCCAAGTTAAGTCAGATATTTCCGTTAGTCGATGCACCATGAGTAACCTTTCTATAATAACCTGGTGAGATGTCGGTTGCTATAATTTTTTGTCATTAATTTGGACAGCTTGTTAATTTGAGATAAATCTTGATGATATCGTGGCGCGGCCTACCTTTCATATGCGGGTCCTTTTTTTAAACATTTTGCAAAGCTGGTCATGCATTTTTAGTAACACTTACAAATTAATGAGTGTTTTGTATCGTAAATTTTTACCATCAGCCATGCCCAGAAAGGCAACTAGCCTTTTATTTTCTTTTGTTTTTTTATTCCACAAAAAAAAACTCACCCTACTAACAACTGGATTGATTTCTCGAGCCGCAGTCACGCGAACAGTATCTGCAACGTGTTACATTCTCTGAAAATTGATCAGTTACTTACGTAGATTTGTTATATATTTGAGCTTGCAGATGCCTATTACCTGCGTTCATGCCTACTAAGACTACCGTCTGATTTCTAAATTGAATAAGATTTTTTTTTGATTTTAAGCCATAAGAAAAACTAACGAAACAATTCTCATCTCGGAAACCATCACGTTGACTCGACTACTGGATGAACAATGCCGAGGTACTGAAATACAATTTTATATTTTCGGGGAAAAAACTAATAAAAAACTCACAGTAGCCGACAGAGAAACCCCGCTGCTCCGCAGCTCCTCTGCAAATGAGGGCTCCACGTTGAGCATCTCCGCAAGTTGATTTTTCATTCCGACGGAATTCTTGATTATCTTTAGAAAAAATCTAACTCGACATTCGATCCGAAATTTTCCAACGATTGAGTGAATGAGGAACATGACCGGGAGAGAAGAAACGGAGACGCAGGCGGTGAGCGGAGTGGGAGAGAGAGCGCGCGAGACGGAGAGGCGCAGGCAGTGGTAGGGACGAGACAGGGAAAGATCAGATGTTGGCTGATGTAGGTGAGTCAGCATCTAATAAGTTAAGTTGACTCATAACTTTGTTATTTGATCAGACGGGGGGGGGGGAGGCCGTGGCCTAGAAATATCATTGCCTACTTATTCTAACGTCACTAATGGCCTAGGAAACCTTGATAGCTTTTTTGGAGAAGATATGACGTCATCGTGCTGGTGAGTGACTAGAAATCTTATTTTAGTTCTGGAAGAGGACAAATATTCTGACCGTGCAAAACAAATTAATGATGTGACTGGTGGCCTAGAAGTCTCAAATTATACCTGGGGAAATAAATGACGCCACTTGTGGCCTCGAAAACTTAAACTATGCCTGGACGTCACCGGTGACCTAGAAATTTATTTCTGGCCACGTCATAGAAATTTGAATTTTGATGAGAAATATGACAATTTTATTTATGGTTTTCTGAAAATTAGAATTTTATTGATTTTTTGGCAACCGGGAAATTGGAAAATTTAATAATTTGAACAAATGCAAATAAGCAGTTTTTCAACAGTCATTACTTTTTTCCGTGAATTTGATTTTAATTTGTAAATTTAGGTCGGAAAAGTCATACACACCGAGGAGCTTCCCTCATCCTCCCTGGATCAGTCGGTAACTGCGTTTCGACAGTGGGAGTGGGAGGGGTGGGATGAGTTCGATTCTTCTGGAATTCTATAGTTTTTATTTTTGTTTTTTTGCGCCTACATATACCTGTGAAAATTGGAACTCGACACAAAAACCTCTCTAGCGCTTATATTTACTCCAATTCTTCCGGAATTCCATAATTTTTATTTTGCTTTTTTGCGCCTACATATACCTGTTACAATTGGAACTCCGTTTGACACAAGAACATCTCTAGCGCGGGCTTAAATTTACTTCAATTCTTCCCGAATTCCATAATTTTTATTTTTGTTTTGCGCCTACATATACCTGTGAAAATTGGAACTCGACGCAAAAACTCTTTAGCGCGGCTTACATTTACGTTTACAGTCCAAAAAAATCATCTATAATGTTTTTAAAACTAGAATCCAAATCTATCAGATTTTTTTGAATTTTTGATTTTTTTCACATCGAGATTCGAGCGCGGGAAAATTTGGATCAATTAATATTTTCCAGATTTCGATACTCCATATTTAAAGCAGATCACCTGAACGCCAGAATATGATACTTCCTACTCGTCCACCATCTTCGCTTTTGAAAATAAAAAAAAGTCGCCGTATTATATTGATATAGAAAAAATACCAACAAAATTGTTACTATTCACTGATTAGGCATGCAGGGTCTTTAAAGTCAACATTCATAGTGGGAGCTGGAAATACAAACGCATATATAATAACTTGTTAAAAGTAATTTATTGTGGAGTTATAACCTATAGACAATTAAAATAACCTGCTGCCTAAAGAGTAGTTAACAGAAGCAAAGGTTTTCTTAGTGGAGTTTGTCCATTTACTTTTGTGCATGTTATTGAATTGAAATGATACAGTGAAACTAGAGGTAAAATTATTTACTCGGTTTAGGCTTAGGCTCAGGATTAAGGCGCTTAGGCTTCGTTTTAGGTTTAAGATGAGCTTAGAAGTACCGATCGTAACTGATAACTTCTGCAAATTTAGTTTCTGTAATATCGGCAATAGCCAAAATTGCCGGAAATTTCAAGTGCGATTAAATAAATAGAGAAATAAAAATTAGTTCCTAAGATACATTATCTTTTTGCAGTAAAGTAGTAAAACTACTCACGAAATGCGAAATTGCGATGCGGAAGGAAACATTCCTATGGTTCCTTAGACAATTTCTCACCTATTAGGATATAATATATAAATGATGAATTTGACCTTTTGACAATAATTCTCTTCGATAAATGCATTTACTTGTTTTTTTTTTAATGAGTAAAGCAGAGTGTGGAATATACTATGAGGAAGATGGTGAATATTGTTGGAAATTTTTCTGAAAGTTTTCATTTTTTCTGGAAATTTAAAGAGTTGGGTGTAATTACTGAAAATTATGTTTTAAGAAAATTATTTTAATGTTCAAATTTTACAAAGAACTCATTTTTAAATCATTAGAGGTGTAGCCAGTGGGAAGATTGTTGAGAAGATCCACTCCTTACGAAAAGATACGGAATATCATAATAAATCACTTTTCACGCGAAAAGCTATTAGTAACTTTTTACTGTCAAAAAGTGACAACCACTCTGTTTTGGCCACTCATAATTTTGCAACGACCAAAAAATTAAAATTTGTTCTCCTACATTTATTATATACTTCAACTTTGTTTTAATTATTTGTACTTGAAAATTGTAGGGAACAGCATGCGACAATCCTGTCAGTTTTCAAAAATCTCTACTTACAAAATATAGGACACGCTCTAAAAATGGATGTTTTTACATACAACGCCATCCGAAAATCCCTTGTAACGTCGGCACATGCGGTCCTTTATGTGACAGTTGTCGTGAGAAAATTAGAGATAAAAAATGTCCTCAGTGTAATCAGAAAGGCGTTCGTATCGTGAAAGCAATGTGAATAAACAATTTTGGGATTTAATTGGTTTTTGGCAATTTTTAAAACCCCAGGAAATGGAAGTTGAGGAGACTAGGTTGGTTAGAATAGCTCTTTTTCTTTTGGATTTTTCGGTAATTCCGGGACTGCGGTTATCCTTTGGGCCGAAAACTAGGCCTTAGAGCGATAGGACTAAGCCTTAGCCTAAAACTAAGCCTCAGCCTAAAACTAAGCATGAGCCTGAGCCTAAGCCTAAGTCAAGCTCGCGCTAAGCCGAATAAGTCTGCTGCTATCAAAAAGTGTTAAAATGCAAAGTTGTAGTAGAAAAAACGATAAATATTTTGTCAATTGACACTTTTTCAAAAAAAAACCAAAACTAGCAGAGATATAAGTAGTGATGAGTCAGATATTTCCGGTCGATGCACCATGTAACCTTTCTCTAACAACTGTGAGATGTCGGTTGCTATAACTTTTTAGTCATTAATTTGGACACCTTGTTAATTTGTAATAATTCTTGAAGATCGTAGCGGGGCCGACATCATTCACGGGTCCTCTTTTTTTAACATTTTGTAAAGCTGGCCGCATTTTTGGTAGCACTTAATATTACATCAACCATTAATGAGAAAATGTTTTGTAAATTTTTACTATTAGCCATTGCCCAGAAAATGGCAAGGTTGCTTTTTTATTTTATTTTCTTTTGTTAATTCACAAAAAAATCACCCTACTAACAATTGGATTGATTTCTCGACCCCAGTCACGCCAACTGTAGAACGTGTTGTATACATTCTCTGAAAATTGAACAGTTACTTTATTACGAATTTTTATATATTTGAGCTTGCGATTGTGTGATCAAAAATTTTGAAGCATGGTACGTAATATTTGAACGATTTTTTTTCGGAAAATCAATAAATGAAAATGGAGTTTTTTTTTTGGATTTTAGCAGACTTCCCAAACCGATGACTCGGAAAGATCATATGAATCGATTATTTTTTCTTTAATAAACCTGTTCAGGATTTGGCAGGCATTATTATGAGAAATAGGCCAATTAGCCTAGCATGTACGGAAGTAATTTTTGGTAAAACTTTATAAAAGTAATGAAAAGCTGATATTTTCAAAATTCCAGAAAGACGGAAAAATCATATGAATATGCTTTTTTTTTCTTTTTTAAGCCTATTTAGAATTGTCAAAACTACCAGAAAAGACTAAACAAAATAGCTTAAGCTTGATCGGAAATATTACATTTTAAAAAAATAAAAATAATGAAAAGCTGACGAGATATTTCCATTCCAGAATGACGGAAAAATCATAGCGATACTATTTTCTTTTATAAAACTCTTTAGACTTGTCAAAACTAACAGAAAATACTATACAAAGTAGGTTAGCTTAACCGAATTTCTACAAACTGAAATAATAAAAAGATGATTTTTTCAAATTTCTAAAATGACTGAAAAATCCTATGAAGCGATTCGTTTTTCATTCATAGAATAGTTTAGGACGAATTGGAATCATGATCAGAACACATAAATTCGCAAAGTAGGTTAGCTTGACCGGAAGTATTTTTGAAAAAGTGAAAAAACTGATTTTTAAACCAGAAGGACGGAGAAATCAGATATGCAGCGATTCTTCTTTTATAGAGTAGTCAGAATTAGCATTATTATGAGAAAATCGCGAATAAGGCTAGCATGTACGAAAGTATTATTTAAAAATTTATAAAAGTAATGAATAGCTTCGGATTTTTTAAAAATACCAGAATGACTACGGGAAAACTCATATCATAAGAACGATTCTTTTTTCTTGTATAAACCAGATTTCAGAACTGACAAAACTATTAGAAAAGACTGAACAAATGAGTCCTAGAAAAGACTAGTTAGGGAAGAATTCTTAAAATAGGAAGTTGACCAGAAAATCTGGATCTGAAATCTGGAAAAAGTAACTCTCAAAAATTCAAATTTTGATTTTAGGAAGATATGGCTGTGTAGTCTTCATAGACAATCAAAATAAATTCTATTTTAATTTTCAACCATCTTTATGCACGGGCTGATTCTGTCCTTCCTCATTGAATTTTTCGCGCTCCATTGACAATCGCCTGCCACAACGCGTGGGAAAGTCGTGTACTGCACACGGACAAATACATTTAGTTTTACAACTGAAATCGAGCCGCGACGCGAACACGCAACGCGCCGTAAATCTACCCCACGGTAAAGCGCGACATGAACTAGTTCAAACTCTGCGGTCCATTTCAATTTACGCGGAAAGCCAGAAACCCCAGTCGTTTTTATGTAAAAGTTCATACTGAGCAGTTAATTTAAACAAATCAAAATTTGGAAAATGATTTTAGGCTTTGTGCAAACTGTAGCGTCTCACGCGTAAAAATCTGCCAATGAATAAAAAATTTCTTTTAAAATTTTTATAACAGTTATTTGCCCAACTTCCGTTTTTCAACGTTAATCCGTTTCCAGTGATCAAATGCTTACACGGAAATCACTGATGACGTTCCATGTTTGGTTGCGATGTGAATAAGGTCGTTTTTTGCCCGAGAAAAAATGGTCACACGCACACACACATAGCCACACAAAATATAATTTGTATATTTTGTTTGATTCGAGTAAAAAAAGAGAACAGGTATTCCTGCGGCGTCGTTTTTCTAAACCGCAAGAAAAGATTGAGAGAAAGAAAGAGAAAGAAAAAAGATGGGAAAAAAACAGTATAAGGGATAAAAGTGTTTCTGGATTAGGTTTAATTATTAGGGGCGCACCATATTGTCGTAGAGGTAGGGCCCTTTTCCAAAGTTTTAAGTTTAATCGATAGAGCGTGAATACATAAAGAGAGATATTTGACCTGCAAAAAAAATATATGGTTGGTTTCTCATGCCATAAAAAAAATCCATGCAACAAATGAAAACTACACCTGCCAAGTGTCTCCGCCAGGCTAACCTAGTTTTTCCCTCCAAATGTTCCGTGACTGTTGTTTAAGGCTTTGCAGACCGCTTTCCCCACCGCACCCGTGTTAATCTATTCCCGAAGTGTTCTCCCTAGATAATCGGGTTGCACATTTTTGGTGAATCGGCTGGGGGTAATGAAACGGAGTAATAAAATAAATGAATAAAAAAGAAACTCCTTGTGGAGAGGCAATGAAAAAGCAAGCTATGCAAAGTATTGATCCGTTGTTATGAATCTTCTGGGCTCTTAGGCTTAGGTTTTTTTTAGGTTTAAGGCTTAGGCTTAGGCTTAAGCTGGCTTAGGGTTAGGAGGCTTAGGCTGAGGCTCAGGTTTAGGCTCAGGCTTCGGCTTAGGCTGAATCTAGGCTTTGGCATAGGCGTGGCTTGTGCTTAGGCTTAGAATTAGGCTTAAGCGTGGGCTTAGGCTTAGGTTAGGCAAGCTTAGACTGAGAAGACTTAGGCGTAGGCTTAGGCTTAGGCTTAGGTTTAGGCTTAAGCCTATACCTAGGCTTAGCCTGGCTTAGTCTTAGGCTTAGGCATCTCATGTTTAGGCATTTTATGCTTAGGCTTAGGCTTAGACCATGGCGTGGGTATATCCGAATGTGTGTTTTATTATGTTTCTGATTCTGAAATCATTTGTTATTTTAATATCCTACCAACAAACAAGGTTGTCTCTTTGTGCTGCCAGGTGGCATTTCCTTAATCATCTCAAATATTTTTGGTTTCATTTCCCCCCATCGCAAAATCCCTTTCTTTATCTGTCATTTCGCCTCTACGTTCAACTTATTTGATTTTGTGGTTTTCAAGAGATCATCACGATTAAACAACGAATGAAAAAAATAGGTATGGAATTACTACCGTATTCTTTTTTGCCTATCCTTGTGTCTCTCATTTTCCTTTTCTCTTCTAACCAGTTCTGCATTTTGGAATTTCTTCTCCGATTTGATCAGTTAAAGCTATTCGGTTTAAACCATCTTCTATTCAATTCTGATGATTACTGTTAGGAACGAGTGGTCACTTTCAAAAGGTCGAACTGTTGTACTAATTGAATTGGAAAATGCTCGGTATTTGACGTTTATCAGAGAAAAATTGAAGATTTGATATAAAATTTTGTAAAAATGAAAAATAAAGTTTCATTTAGAGTAGTATTCTGGCTTGCCTTATAAATTGTAATGGAAGAGTTGGCCATATTCGGCCATATCTGGGGTAGATTTACGGTTCGAGCGTTGCGTGCACCATCGCGTCCGGCTCGATTTTAGTTGTAAAACTAAATGTATGTCCGTGCGGAGTACACGACTTTCCCACGCGGGTCCGGAAGGCGATTGTCAATGGAGCGCGACAAATTCAATGAAGAAGGCCAACTTAGTGTAGTATTAGCAGACCAGGTTTTCACATAATTTGAGCGGTCTAATGCACATTTTTACGCAACTTTATGGGCCAGTATAATTTTCTTGGAAGTTTTATTTGAAATAAATTCAAATATTTTGAAGCCTAAAAATAATTGCCAAAAAAACAAATTTTTAGTAATTTAACTGCCTCTAAGAGTAATGAACAAATGTTTCCAACTTTTTGCAAATTACTTGCTAAGTTCCCGTGCAAATCTTGTATATAGATTTTGGCCTGAAACATAACAAGCCGATTGTTACAAAAATTAGGAAGGTACAATAGTGTGTTTATTGATCAAACATGTGTTCTTGAAGTTGGGTAAGAACAATTGATGAAGGTTTGGACCAAAGGAAAGCAAAAAATGTTTTTAGAAGTGAAAGTCTGAAACATTACCTTATTTCTGATGGTCGTTAATCAAATTTTGACAGACTGTAATAAGAAACCTTGGCCATCGTATTTTCTTATTAGTGCAACCGACCACTTTACTTTGAGTAAGACGTTCTTGTTTATTGCCTTTTAAAGACCTCAATATTTTAATAACTACACAATCATAGAGAACCAACAAAAATTTTGTTAGTTGACAAATTTAAATAGGACAAACGATAAATGAGCAATGAGCTGTCAAAGTTGAACAATGGTGGTGCAATAGAAGGAACTACTAGAAAAAATACGGGTCCTAAAATAGTTTTTATGTTAAAATCAGAAGATTGGTGGGTTGATTCCAGAAGTTTATTTCAAAATATAAGGTAACTCCGCTGACCGCGCCTCCGGTACCTTCAAAAGGCAAAAAGTAAGACTTTTCTAAAACTACAGTTATCCTACAGTAGGTCCAACAGTACACCTACAGTACCTCTACAGTATCTTGACATGATCCTCTACCTACTCCGAACCCAGTACCTCTTCAAAGGCTAAAAAGTCAAAATTACACAAACTACAGTAATCTTACCGTACTACAGTAAACCCAGTGAACCATTACAGTTTGACATTATTCGCCACCAACTCACCCTAACCCAATACCCTTCAAAAACTAAAACGTCAAAACAAACTTGTAACAGTAATCCTGACACCGTACTCCTACAGTACTCATACAGGACTACTACAGCGGACCCCAAACATATCTCACTAAGCCCCAAGTCCAGATCACTTTCAATGAAGTCAATTTTTCCAAATGTAACTACAGTAATCCTACAGAACTCCTACGGTACCCCTACAGTACTACTATAGTACCCTGACTATGTCTTCGACTAAATCCAAAGCAATATCCCTTCAAAAGACGAAAAGTTAATCTAAAACTGCACGTTACGGAGTCTTCCAGTACTCCTACAGTCCCCTACAGTACTACTACAGTACCCTGACTATGTCCTCCACTAACTTCAAATCGATAACCCTTTTCAAAAGACGAAAAATCATGTCAATTTTTTCTTTTTTTTATTTGAAATTGTCCGTTATTGCCATTATGTAATTTTCCAAAAATGCTGCCATCCTAAAAAACTGTTAGGTTTTTGTTCATACACATTTAGCTTATACACCACCTGCATAGTGACCCATAAAGAACCAACTTGGCCCCTGCCATACTTGGTATACAAAAATCGAGAACATTTGGCAAACCTGAGTGGTCATTCTATTAGCTATTCACCATGTGCTCTAATAAAGTAGAACTGATCATGGGAATATGTGTCAAGGCAGTAAATGGGGGAGTACTGTTAATGTACGTGTGCAATATTCCAGATGCCAAGTATACAGAGTATCTAATGACGGTAATTTGATTTCAGGTGCTTTAGTACGCTATATTGTTCCAAATGCATGATATTTTTTTTTCGAAAATTGAGGTTTTGTGTCGAATGTCCCATAATTTTGGATAATCAGTGGTCTTTAGCGAAATCTTGAAGCCGCTTAAAGCAGTGCTATATTTACAACTGCATTAGCGTTTTATTTTGCTCTGAAAATGACTGCAAATACACAAAATTTTGGATTAAACCGCCTGATTTTAAAACCGAGCTTAAACAGAATTTTTATTTTACAAACCTTAAAAAGTCCAAAAATTTTCTAAATTCCCTATACTAAAATTTAGCGACCCCATCACTTTCTACCCCTTAATTAATTTTTTACTCCATTTAAAAAAAATATTTTGAACCGGCAATTGTCAGAAAATTGGTTGCCTATTCCCGAAAATTTCCAAAACCGGCAATTGCCAAATTTTCAAAGCCGGCAACTGTCAAAATGGCAGCAAACTTCCAAAACCGGCAATTGTAGAAATTGCCTATTGCCAATAATTTAAAACCGGCAGTTGCCGAAATTGCCGAAATTGCCGCAAACCAAGACAGGCAATTGCCGAAATTGCCGGTTCGAAAATTTTCGAAACCGGCAGTTGCCAAAATTGCCGCAAACTTCCAAAACCGGCAATCAATAGCCTAAACCTTTGCCGATTGCCAAAAACAACACCGGCAATTGCCAAAATTGCCAATTGCGCAAAATGTTCAAAAAGATTTCAGAAATTGATACGTTTTATGTCCTTTAATTGTTGTGGGATTCTTTTTTAATAGATTTGAAACATATCATCCTGTTTTCAAGAAAATTAATTCCTTCAGTTTCTGACGACTCAAATCCTCCGCAAATGCCAAATTTATTTTGGGCAAACTAAACCAATTCTCAACAGAATTTTAGAGGTGGAGTATTGCCATTTGGTCTAAGTACACTTATAATAATCCAAAAGAACAGACTATCATGAAAAACACTCGAAACAAAATTCTTTTGGGCGACTTCCAAAATTATGAGTGGCAAAAAGGCTGTGTAAGTGCCACTGGGAATTTTGATGACAGTAAAAACTATCAATTTCAAAAAAATTTTGGAACGTTTTATTATGGTATTAGGTTATTTTGGGAACAAGTAAGTGGTTTACTCCACCTTTAAAAATTTAGCCGTTATACAAACTCCAACTATATCCATTTGATACTTTCCCCTCTACCCTACCCATAACAACATAACAGAAAAATTGCTTGGGAAATTACGCATCGTCGCAGTACACCACACTCCATTTGGATTGATGTCCCGAGAGAAAGGTCAAATCGTATTCTACCTCCTTATTCTAACCATCTCTATTATATCATGCTTTAATGAACGAGCGCCGCCGCCGCGCGCCTAGCGCCTCCGAGTATCGCAAAGTGCGACTTGGTCTGCCACATAACCTGAATTCTACTTTGTTGTATGATAGAATCGGATAGATGTAATGTGTAACAATAAAAAACCACGACGACGACTGAATATGGAATCGGCTAGGTGGTACAAAAGTTTCGGAATGTTTTGGTACCATGGTATGTGTAAGCTCTGTGAATTGAGCCACGGTCTAGCAACGATATTTCGTCGAAACTTTATTCTCGAAAGATTGTTCAATTGAAATTTTCCGCAAAAAACATTTTTTGAAAATATTTTTTGCTAAAAATGTGAATTTCTAGTGCAGCATTTTTTTTTTAATATGAAGTCCAATCAAAAAAAAATCTCAAAGAAAACATTTGAATTTCCCGGAAACCCCAATTTATGAGAATCAGTTTCCCTTTAAAAGAAAATTTCGGAGAAAATTTGAAATTCCGCGACGCCAAATAATTATTTTGAAATATTATTTCCTTATCGGCAAGTATTTTTTTTTTTGAAAACTTTGATTTAACGGAAAACCTTCTGAGAATTTTTGAATGTCCAGTTTAAAGAAATGTTCGGTCGCACGGGTTTCTGGCTTCCCTCATAACTTGAATGGAAGAGTTTGCCAAACTAGGAAATTTGGTTCGGCTATATCTTGGGGGGTAGATTATTTACAGCGCGTTGCGTGTCGCGTCGCGGCTCGTTTTTAGTTTTAAAACTAAATGTATTTGTCCGCGTGGAGTACACGATTTTCCCACGCGTTGTCCGGCAGACGATTATCAATGGACCGCGCGAAAAATTCAATGAGAGGAGGCCAGAACCCCGTGAATTCCAGCAAACCAAAACTTGAAACTATTTGAAATACCCACAAAAAACCACTTTGGCTGAGAATGTTTGAATTTCCACAATTTGACGGAATACTTGAACAGATTCAAAAAATTTTGTGAGAATAGTTGAATTTCAAAAACCTGTTTTCTGAGAGTTTTGGACAAAATCCCTCAAATTTCGGAAAAAATTTATTTCCCTCAAAAAATTTCGAGAAATATTTTAAATTACCGGCATATTTGACATTTTGAACCCCACGAAAAAATTTTTAAAAATTTTCGAAATCCCGGAATAATTTTTTTCACTATAGTCAAAAAAGATCAACTGACTACTTACAAACTCCAGTACCCAGAGCATAACCCCCATTAGCTTCCGATTGCTACAGTAATTTCCTACAGTACTCCTAAAGTCCCCCTTCATAACGTTCCCCTGATAAATGCCCTTTAAAATATGCGTATTATCACATCTCACATGATTAAGACTAAAAGGGAGAGGTGTACCTTCAGATAAATACCCGTTCAATGTTTTTTCCTAAACCAGTTGACTTATAGGTTATGAAGAGAAGACTTAGTGTAAACAATGTCGTTGGAAGTGATATGTTAAGAAGTTAACGGCAAAATCGATGCCAAAACTTTTTCAGCTTTGACTTCTACTGCACAGCTCATTCCATAACCATGAGCTCACGTGCCCTTCCCCCCCCCCTCTATCTTCCACCGCACTTTCATTCCTCGTTGTGGCAACAAACCCATCTCCGGATTCGCCTTAATATTTGTCACAGCACAGGAGTACACTCCTTAGCGGCCAATTCGTAATAGCGTCTACCCAGCGACTTGGCCCAGAAACCTTCCTCTAATCGCATCCACAATAAAAAGGTCTGCAAGTACAAGATTAGCACCCCCCATTGATGTCAATTTATCTATTTTGATTCCATGGAACTATTCCACAATGTAGAAAATTGGGGTTATGGTAATCGAAACATGGTGGATCACCTAACTGCTGGCCAAATCATCATGGTGTCAAAAATAAGAATCCGAGTCCTCCCAGACATCCATGTAGGGTATGCACTTTCCCGCCTGTCCCGCATCTAACCTAACGATTAACATCTTTACAGACCATCTCTCCTCCGGATGATGTTGAAAATGTCGCGCCAGCACCTTTGGAGGCGGGGGGGGTTAAAAAGATTCCAATCAACCACCTATCTTCTCGATTTATCATCAAGTTTGCCCCCCGCGCTCTTAGATTAAATGAACTCTTTTGGCTCAATCACAGCACTTGTTATTAAATCTAGGAACTGCATCTATTTCGAACATTGTATCGTTACAGTTACCGAAAAATGTTGAAAATTTGGGAAAAGTGCCAAAATGTTGATCAAGTCAGAGAGATTCGAAGACGCTTCTAGCAATTTTTTGACAGTACCTGTCCCCTTTCGGTAGATTTGCGGCAATTCTCGGCAGATTTACAGCCGCTTTTGGCGGTTTTGCAGGTCAACTTTTAGCAATTTTGGCAATTTGAAAACTTCTACTTACTTTGCATTTTAGTCAATTTTCTGTAATTTCTGAGAACTTCAGATTTTCTTTTACATTTTTTTCCGATGCACCATGTCCTGAACGCTCGCGCCACGACTTTTTATTCATTATAGCAGGTCCTGTTTTGATGCATCATTTCCCAAGAGCCCTGCAATGCTGGCGATTCATGTCGCGATGTACCATGTCATCAAATGTTTGCACCCACTGCACGTTCCACCGCAACGAGGTTTTAATGCCAAATTTTCTGCAATTGCTCGTCAAAATATTTTTCGACAATTTTGTTAGCAAATTTTTCCCTTGCAAAAAGGTTCAAAATTCTGTTCCAAACACCAAAAAGTCGAAGATCCGCAAAATCTGCACTTGAAACACTATTTTGACAACCCCCGTCTCAGCTTGCTATCAAAAATGCAGCCAGATATATGGGCAGCTTGCATGTGAAACAAAAAAGAGAACGAGAGGCATCAGGGGCTAGTCCTCAAAGTAGATGTGCAACTCTATGAAATCGATACGGTTATGCATGGCATGGTGACAGGGAGCGAAGTATGATGATGATGATGATGGTGGAGAGAGCGCAACGTATGGTTACTGAATGTTTTCGATAAAGGTTATCTTTATGGGGGGGGGGGGGGGGGGGGTTGGGGCAGTGTGCATCGAAATATAAAAACTTTCGTGGAGATACGCTTTTTCAAGAAATTTGTGACACCTTCTTGGTGCATCGAGACAGTTTTCGTGGCAAGACCTGATTTGGTTGAAACTCTGAAGCCAAATCGCGGTCTACGATTTTGTGACCAGGTCAAGGTTTTCGTGGCATGGTGCATCATAGTAAAAATTAAAATCCTGGGAAAAAAAGCTCTATATATAATAGCGAGCCATGGACCGTACCTCCCGCGTGGCCCCCTTCTGGAGCTAAAAAATAATTTTTCTAAAACTACCGTAACCAGACTACAGTATTCGTACCGTACCACGATATTGTACCACTACAGTACCTCGACGCTATATCCGACTAACCCCAACTCACTATTTATCCAGAAGCCAGAAATGTGACTACAAAGACTACATAGATTACAAACTATGAACACACGTTGTGAATAAGCGCTTCACATAAATAGTGACATGATGGATTATTGAGATCCCATATGTGACATGGTGCATGGTGACAGGCATTCTGGGAGGGTGAGCACAAAACAAAATCATTAGTTATTTTTCGCCGACAATTTCCAATACAGCGAACTTTACCAAGGTCGTGGCCTACTTGTTTCCGTTACAGTTTCCTATTGTTGCATATTATACCGCCAGTAATCATTGCGTTATCACAGTTGACAACGGTTTGATAATGTCACAAAGTGTGGGGGTTTTGGAACAACAAACCAGCATACGATTATTAGAACGTGATAATTATTTTACCTGAACATCAAGTATTATTAGGTGGTGGAGCTGGGAGCTTAGTATTTGGGTTTTGAAACAATGCACCATGTCCTAAAAGATGCTTTATTGCTAGGTAGGGTGCCGCGACTGTATCCATTCCTATAACAGGTTCAGTTCCGATGCATCTGCTATGAATTAATACTGTTCTTATTCTTAGCTCAAAATCAGGCTGAGGCCCGCAGGCCCGAACACTTTTGGAGACTGTGCAGCTTTAATCCCCAAAGGCAAATTGTTATTCGCTCAAGCCAACTCATCTCTCCAGATTTCCACAAACTTTAATCACTCATATCTCTCAAAACCCTAGACTTCGATTTTTAATCCATAGTCGATCCCAATTTTTAAGGAAATCTCGAATATCCCTAGCTCAGGTTTGAGGCGAAGCAGCTGAAGCTACCTTTTTGGGCATCCCCATTCCAGAAACAGACGATAGCTGGCGTGGCCCTGCCGAGCTCGTCATTTGCCAAAACGTCAAATTGCTGGATCATGTCACGATCCATAATGCCTTGAACGGTTCTTCTGCACCTAAAATTAGCACTCAACTGGTTGAGGTAATACATGATGCAAGACCATGTCCCAAAGGGTCCTGCCATGTTGGGACATGTCACGATGCACCATGTCCTGAAAGATCCACGCTGGAAAACTACATTGTTCCGAGTGTTTACCTCTATTTCAATACGAAATGTCAGCAAATTTTCATCCAAACTCATGTCATTCAAACAAGAGCCTCATGTGACTATAGGGTCGTGACTACCTGCTCGAGTTCGCCTCAGCCCTGTTTTCAGAATAGCTATGCGTTAAGTACCCGATGTATTGCAACTGTCACGATTTAACGCTTAAGTTTTGTAGTTTTGATGGAAATTTTTGAGTTTTTCGTTTTTTCTTGGCTCAAATCTGGGAGAGTTTTGCTTTTTTGACGATTAAATATTTCATAGGGCAGCCCGGCATTTCTTGACTGATTGTGCGACATGATGGTGACAGGGCTTAATCGTCGCGAGACATCCCTCTAGTACAAAATTCTTTTAATATCAGTAAAAGCATTATAATCCATGTCTATACTTATTTTATGGAATTTTCATTAAAAAAATCTGAAATTTACGAGATGATCTACTCCAATTATAGATGGGTTTCAATCCAAAATTTCTCAGAAAAACTAAAATTAATGGGCATAAAAATGTTTTGTCTGAAAGCCCTAGATTGTCAAATATCCCTAACACCCCAAAAAACACCAATGTACATCTCCTCTCCGTAAATATGTAGTTTTACAACCGCCTCTCTGTTGACTGGGAGCCATAAATGTAGATATATTATCTTTCCAGATCGCCTGCCGGCCCCTCCCACCTGATTGTAAAACTGCTCTTTGCTGTGGCGGTTTATCGACTTGTTTTTCTTATATATTCCATTCTACATGCACCTTAACACATTTTCTTGTTTCTATACACTTTTTTAACTATAAAAAAATGCAACTCCTTTTCGATTCACGATCTTTTTATGCAAATCTTTTGGCTTAAAGCTGGAGTAGCACCAGTGGGGAAATTGTTAAAAACCACTCCTTTGGTCCGAAATGTACTCCGAATATCATAATAAAACTTTTCAATATTGGAATTTTTTTCTTCACAGTCATAAAGTGATAATTACTCAGTTTTTGCCACTCATAATTTTGGAAGTCGACCAAAATGTTTTTTCTAGATTTTTTATAATGTAACTATTTTGTTTTAATTATTTTTATGAAAACATTGGCATAGAGACAGGCGGGCCAACATAAGATATTGCTTTGCCTCAAAGGCTCATATTTTTCAGAATTTTGGCAATTTGCCAAAACTTGGTATTTAAAAATTGTTAGAGATAACTGTATTTAAATTGCAAAACATAGAACAGTTGTATTTCAAAATAGTTCGTAAAAATTGTCTAGTTTATTTTGCGGCCACACTGACCCCCACGATGCACCAGGACAAATTGCATTTTTTTGTTCAAAAGCTATTGTTTTGCAAAGGGGCATGTTCCAAACATCTGACCCAAGTTTTCCCGTAGTTCTTCTCTCCCCCAGCGGGGTAAACACTGCACTTTACGACTCCGCCCAGTTTTTTTTTTCGCACAAAGTGAGAGAGAAAGAAACATCACTGCGTCACTCTCCCCCAGTCTTACGCTCGTTCCCGCCCCCCTCCTCGATCTGCAAGCCAGACCGTCCTGATGATTCGAGGAGCCATTCCTTTTCTTATATGTATACGTTTTTGGAGAGGTGATCTTGTTTTTTTTGTTTCTCCTTTCGTTTTGTTCTCTATGCTCTGATAAGAATTTTGTTCTCCTACTTTTCTACGGTTTTTTTTTTTATATCCAAATTTTTGAAATAGAGGGTTGATCTACATGACCCCCATGCTTAGTCTACTATAATGCTATATCTGATATTCCGAATGGCTGGTAAGTGAAGGCTTTTAGCCCAGTGAGCCGGCTTACCAAGTCTGCCTAAGGACCATGGTTCTTTCAACTTAAGGCCCAAAATAAGCAGGGATTCTGGCCTAACCCCCACTAAATCTGTAGGCTAATATATAATTTCTATCATACTCCATCCTTCTTTTCTACCTCTTATCATGTTGTTATTGAGCAGCAACCCTTATATTGTTTGGTATATAGATTTGATATAAAACCTCGTAGTAAATTTTATTTTACACAACAATCATTTATCATAATTTTTTTTCATACTATTTTTTTGCAGAACGAAAAAAAAATGCTATTCACAACATCTTGAGCACTGGAGCTGTTATCATCAAAAAGGTGCATCGCAGCACAGCGGGAGCGTGTCATCCGATCAGTTGCTCAAGGCTTTCGGCGAGCTGGAACTTCCACTGAGCAGCTTCACAATGACAACACAGCAGCCCTGTACCACTCCTGTGCAACATTTCACAACACCCAAATTACAGACTCCAGTCAAACTCACCGTGCAGACCGTGTCGACGTGAACTCAGAGCCACACTCTTCAAATTGTCATCACCATTCATTTGAGCATCCGATATGCGCGAACGCTCCGCGGCCGATTAGGAGTCAGCGAACGCCGAAGGAAGACTACCACACTGTACGATCCGAATGAGCTGGAGGAGTCTATGAAGCAGAGCGAGGCGTGCATTTTGGATATCAAGACATTCATCACACAGTACTCGTTGCGGTAGACTACGGTAGTAATGATGACAGGTTAGTTCCCAAAAAAGTGTAGTGGAAGATTTTTTCTAAAATCTAAGCCGTGACCCGCGGAAATAAATCAGAATACATCCCCGCCTAGTTACCTAATCTCTGGTGTTAGCCACAGTGCAATTGTGTATTACTGTAATTCCTTCTATGACGTCATATGAAATAAAGTTGGCTAAAGGGAAAAGGGGACTCTGGATCTTAGGCGAGCAATTCTCTGCAGCCGGCACCAGAATCGATCCCCCGGTGCCTGGATATCTATCCTTCTGGGCTATTAGCCACTGCGAAATGCCCCACCCGCGCTGAGATCGAACAGGCGTCTGAATTCCTAGGCGAAGTTGCTACCCGCGCCATGTAAATCTCCCAAATTTCCAGGAGTAAGCCAGCTGTACATTTCAAAATTGCTCAACGGCAACCACCGTGAACTATCGCTCCGTCGCCGTAAGAACATCTACGGTTGGTACCTGAACTGCCGACGTCATCCCAACAAACTCGCTACTTTCCTCGCCATGTCGATCCGGCTACTCGCCTCGAGAATGGAGATGTCGAGCTGATCCCACAACGTCGAGAACGCTACGTGTTTCGTCCAAATTTCTTCTGATCCGAATGCTAGAATCGTTCTTCACACAAATGCCATTAGATCTTCCACGGCGAGTCTTACGAAATAGCGAATGCTTGCACTCACGTTCTGATGATGGATAAGAAAGGTGTTGGGTCCATGAGGCCAAAGGAGGAGGTTCAGCAGCCTCAAGTGGTTTCGAATTGGTTTGCAAATAAGCGGAAGGGAGTTGAGAAGCCAGAAAGTTCCGCTGAAGCTTTGGCCGCCTCCACCTCGTCAGCTTCGTCTTCTGCGTCATCGACATCATGATTCTGTCAGGGTGTCATCAGCATGAGCCCTCGCGAAAGAGGTGAGAGTTTTAATTTCTCGGCCACGCTGTACTCTGGGTCGAAGAATTTTTTGTAGGTCTGATAAGGAATCCACTCCGGTTTTCCCACACGTTAGGTCATAAACATGTACCATCTAGAGGTACTTAAACTTCTGGACTTTTATTTACTTTAGAGTATGGTAAACCTGTCAGTCCTTGTCAATCATGTGTCTGTTTGGTCTCAAGTAGGTCTAGGTCTAGGTCTAGGTCTAGGTCTCGGTCTAGGTCTAGGTCTTGGTCTAGGTCTAGGTCTAGGTCTAGGTCTTGGTCTAGGTCTAGTTCTAGTTCTAGGTCTAGGTTTACTAGGTCTGAGTCTAGACACAAATGTCTAGGCCACGGAAATTTCTGCCGTCGCCTAGGATTTAGGCCATATTCTAGGCCATGATACAAAAAACTTTCCCTGTCTCCTCTGGAGTAACCCATTTTGAAACAGACAAGCTCCCGTAACACAACCCCGGACAGCAATCTCCCCGTCTCCAGCAGTGTCCACTTTTGAAGTGTCCCGCCCGTATGCCATCATCTCTGCCATGTCATCAACAACCTCGCCAATCTCAATTCCAGCACAATCATGATCCATCAGTATCGCCGCCAGCTCTCGAATTTTTCGCCATGGCCCAACGGCTTGGAGTTCAGATTCGGTTCCATTTCCGACATTGCCAACACACATTTTCCCGTTTCAAATGGCCCCTACGGGAACCCGGCTTCTATTTTGAAGTCTGAGTTAAGCATTTCTAATTTTCTTTTCCTCTTTTACACCAATATCTTTTTTCCATTTGTTCTTATTCATCCCATGACAGAAAACCTCATTCTTTCATATTACAGGAATAACGATGCTCCGTTTCTTACGCCCTGCAGTCCCCACACACCCGTCGTCGTAGCAAAAATCACTCAATAATCGATAGGTTTTTCATAATATTTACTTTGTTTCTTTCTTAGTGTGTTTCACTGCTGTTTTAATATTTGAAAAGTACGAGTCTTCAAAAACTCTCCATTTTTTGTGAATAATATTTGCAATCCACAGCGTAATTCGTAATGTATCGCTTGCCCTACGACGAAATTTTATTGGAAATTCCATTTTTTGTGCAATTTTTGTTATTTTTCAAGCGAGAATAAATATTTTCTCGTTCTAGAATTCAATTGTGAATTACTTTGCAAACGCGCCCCATTGCACTTCCGGGTGAAACAAGTTCGTGTTTTCAAGATATTTTAAAAACTTGAATTTGGAACAACACAGAAATCTGGAAAATGCAACAGTGTTCCAAGTCTTGTCCACGTGTGATACGAGTACACAATAATTTTTCATCTATACGGACAGATTTCAAAATTGGAATGTTTTCCATTTCGTGTGGTTTCTAGGCCATGGGAAAACGAGCTAGCGGCCATCAAAAATTCCAGGTGACCTGGAAGTTCTAAAACTTTGTAGAAACTTGTCCACGCGGAGTACACTATTGAATAGTTTATCAATAGAGCGCAAGTAAAAGGATAATCGAATTTCTTGTCCTTTCGCCACCCCCTCTCCATTATATATGAGGTTTTTTCCCTCGCAATTTCCCACGCTCAAGAGGGTCGCCGCCATTTTTTTTTTGAGGGGGGTCGTATCTAGATTAAACACGTTCATTTATGCTCAAAATGTGCCAATAATTTTTGTTTTTGAGTTTCTAGGCCATTTTGGTAAGTTCGCACACTGACTTTACGACTTCCAAGGAAATGGCCAACGTTAGCTTATTTTTCTAGGCCATATAATTTTTTGAGTTGCAACTGTGGCCAATGTTTTTTTTGGGTTTCTATCACTTGTGAAAAGTTAGGTCATAGAATAACATTACAGTAAACGGGTCCTCAAGGGACAATCAGGAATTGTAGCCTAGTTTTCCTAGACCACATTTGATTTTTGTCTTTCTAAGCCTGGTTTGGGTCTAGCTCTAGTCCTAGGTCTAGTTATAGGTTGGTCTATGTCTAGGTCTAGATCTAGTTCACATGAGAAACAAGAATTAGGCCACCTTCCCCCTAAACTCTATTATCTCCAAACTACTACTTTCTAGAAAACTCTAAAATCATAAAACCAATTTTTTATCACTATTTTCATGCTAAAATCCAATCAGAAATTTGATCAGATACACGCATATAAATATTACGACTATAAATTCGTTTCTTTTTTTCATTTTTCCCTCGATAAGGCTCTCGGCGAGAAAAATTATTTCTTCTTCTATGTGTCGAGACATGTGATATTCCGGCCGGCGGTGGCTCTGAATCAATATTCAATTGAGCGAGAAATATATATTCTCTCCAGAAGGCGTTTATATAATGTGTTCCTCCTGTAGTTTCTGCTGTATTCGGCGGATTTGGTATGCTTCTCAGTGGAGTGCAGTTGCAGCATTTTTTTTCTTTAATACTAACTTTTTGTCAAGTCTTTTTTTGGGATCCCTAGAACACTAGAATTTCTCGCTATTTTGAGATTTCTAGACCATTCTTGAGATTTCTAGGTCATATTGTGAGTTCTAGTGCATTTTTGGGTTTCACGGCCGAATTGGAAGTTTGAGGCCATTTTTCGGTCACATAGGCCACGAATTTGAGGATTTTGTGCCAAACTGGGATTTCTAGGCCATCATGGGATCTTTAGGCACGAGTTTTCCAATCATAATATAATTTCTAGGATATCTTGAACCTGTATTCCTAATGCCACTTTGGAATATTAGGCCATCTTGGGACTATTTCTGCCATGATTTCTAGGTTAATAACTGGCAATTTTAGATTTGGGCTTAATCTACAGGAGGACATACTGCGAATTATACACGAGCCCACGGTTGGATATATAGGCTATCGTGGGATATCTACGCCGATATGTATGGAATCCTAGGCCAACTTAAAATTTCTAGGCCACTTAACCCCGGGATTTCTAGGCCGACCATCACGCCTCCTAAAAGGCACAGACGGAAAGTTCAACACCCACCACCAGGATAAAAGTGTTCGTGAATTAGTCAGCAACACCCCATTTTTCTTCTCCAAAAACTAAAAAAAAAGATACCCCTGACAGATATGGGCAGAGATGAGGGTGCGAATCCTGAAATTGCCTAGAATTCCGAGCTTTTTGTGCCAGACAAAGTAGAGCAATGGAGAATGTGTGTCGCCACTTCAAACACCATTTTGTCCGTTGCTTCGCCCGAAGGGCCCGAAAATAGGCTTGAAAAGCTGTGGCCTAGAATTTTTTCTCAAAATTTTTGACGTGGAAAAATTGCTTAAGATTTTCGAGGCCAAGAGGTGGCCTAGATTCAACATTTATTGGCAATTCTTATCTAGATCCCGAACCCCGACCAGCCAGTTTTTAATTCTCCTCCGGTGTCTGAATTTTTAATTAGAAAAATTATTTTTGGTTGAGGAGCTCTGTTTTTTTTTCGTCAAAAATTGAAGGTGGCCTAGCTTTCTCATTTTAAGGCCACGAATTCTAGTTAATTTTTTGTTGGCTCATTTTTTGTTTCAAAAAATGAACCAGTTAGTCAAAAAATTCTTTTCTGCATATCAAAGGCCACTATTTTTGAGGTTCTTTCCTGCACAATTTTTCGAAGAAAATTTGAATTCCGGAAAGTTTTCTCAGAAAATTTGAATCGCCGCCAAAATTTTTCTCTGAAAATTTGAATCGCCGCCCACCCAAAATTTCAGAAACCGTATTTGAATTCCTGCAAAGTTTTCAAAATGGGGTCTCACCACAGAATGGTGACAGCGCCCACATTTCTCAGAGACATTGGTTTTTAGGCCAAAAAAATAGTTTTTTTGACAAGACAAAAACATAGCAAACACTTGAGCAGTTGTCATATGTCTGTTGCAAGTGGAAAAAATAAAACATCTTTCCTTTTTTCTGCTTCTCCCCCTCCGTCCTTTTTGGGCTCAAAACTCAAATGGGTTGCTCATCTCAATTGTCTGACAAATTAGCAAAAGATGAAGCAATTTTTCCCTGTTTATCTTTTTTTGCCTCCGTTTGGCTCCTATGTCTTTTTTAGTAGTTTTCAGAGGTTTAATATTGAATGTTCAAACTGGCTAAAAAATTTCGATTTTTTTTTCTTTCTAAACTCTTACGAAAATTCTGATATAGGTTAGAAAATTTGCCTTAAACAGATCGACGGCCGACAGCGTTTACATTTGTGGCCTAGACTTCCAAGCCTGGGCCATGGCAAAAACTTGTTTAACTAGCCTACCTTTTCAAATAGTGGCCACTCTAAACTATTTCTGAACTGTTTACTCAAAAGAGAAAGTTAGTGGCCTAACTTTCTCAATGGTGGCCTAGAAAACTCCAATTTTGGCATTCATGACCGGTCATCAACCTGACATTGATGGCCATGCTAAAAAGTTAATGAGTGGCCTAGAAAACCAAAATATGGCCATGCGCTCAGCATGTTTCTAACTTTCCAACTCTGCTATAAATTCCTTGGGGGAAACCTCGGCCATCACGGGTGACCTAGAAAACAGAAATTCGGCCAAGACCCCGTAATTCATGGCCTAACCCTTTAGACGTTTGACTTTGGTGGCCTAGTTTTTTGTGATGGCTAAGTTTACAGAAAAAATCCTCAGCCACAACCTTTACCCTATACATGACATAAAAATGTCCATTATCCAATTAAATTTCCAATTCTCCACCCTTAATTTTTCATTTTGTTCTCTTCTTTTATTTTGTCACTCTCTCATTCTGAAACTAATCTTTTCAATTCTCAGTTTTTCTGGTGTGGTTGATTTTCACAGCTTTGCTCCCGCCATTTTGCAATAGGATTATCCGTGACACAGGCGCTCACATAGCTCAGTGAGCAACACCAACAAAAGCATATATAGATATACAACGATATCTAACTAGTTACACCGGAGCTTCTGTTGTTCTTGCCCCTCCGAGCCGAGACAAACTTTTGGAAAAGAGCTAAACAACGCTTCTGGAGCCGACATATTCGAATGGAAAGAGACAATTGCGACCACTATGAGGAAATGATGGTCGAGGAGGAAATGAGAGATGGCGTAGCTCAAATTGCGCGACGAATGCTCCAAGTTGGTCTATACGGTAATCAGTGAGTTTTTGTGTTTTGTTGGCCGTAGTAGAGATAACTAGGCCAACTAGGTAGGCTGACGATCTTCAGTTTGCAAATCCTCTTCAACCGTACTTTTTTGAGCGATCTAGGTTTGCAAAAGGTAGGCCGCCTGGTCCACCGTACCTGTCAACTTATGATGGCAGAGGTTTTGTCTGGGAAAGCTAGGCCACCTGTGTGAGCTCATGGTCCAAGGTCTAAAGTTTACAAAAACTCTTCCACCGAAACTTCTAGGGTGCTCACGACCGAGGCTTGCAGAAAGGCCACGAGACTTGGCTCGTGGCCCAGAATTTTACTCATCCATCGTAAATTATTAGAAATCCGCGAGGAAAAAGCTAGGCCATCAAATTACCTTAGTGGCCCAGAATCTATAAAAACTATCCCATCGTAGCCCTCTTGCATGGACGGCTGAGCTGAGGTAGCTAGGCCCCGAGAATAGGCCAGTGGTCTCGAATCAACACAAACTCTCCACCGTACCTCCTACAATGGCCGAGGTAGGGAAGATGGGCGCCAGGCTAATCTAACTTTCCTAGACTGACCTAAAGGGGAAAAAACAAGGCCACCGGGTTTACGGAGTGGCCGACTGCGAAATTTCACAGAGACATTGCCCTGACTATCTGACTGATTTTTTACCGTCGAAAAATTCATATTTTCTATGCCAGGGGCCCCCTACGGCCCAATCCTCGCAATTTTTTTATGCAGATATCTAAAATCGCACATTTGTTAAAGCTCTGCACACTAATCAAACTTCTCGTCTGCTGGTGGGCCGTTGCTCCGCAAGTCAACTCCTACATGACGCACAGTATGGGGAGCAAGAGTTCATTGGCGCGAATTTGTCAGATCCAGAGAAAATTCAAAACTTAAAATTAGCAGATCTTAAAATGTGATTCTCTAGGGAGCCTCCCGCTTGAGGCCGTGGACGCTGTAATTTTCGATATCCGACTTTTCCATTACCTATGGGGCATTCGAGGATGTGTGGCAGATTATTTGGATGGCGGTGGGTACTGTTAAGTTTCCCTACGAATCTATACATTTTTCAGGCTTCGGGCGACTTTTGTGGTGCGTTTCCTGCTTAACCCTGGTTTTCTCCATTCCGGTCCTCTTCATCTCCCATCCGAAACCCTGTCTCTTTCGGCCGCTGCTTTTTCAGGTGAGTTGGCTGAAAAAATTTGGAAAAAAACTTTAAATTTTATCCGAAAGGCGATAAGCAGTGGGATTTTCCACGACTACCACTCACAACAGCATGGTTCGACCCAGTCCGCGTGGGTGTGAATTATTTTTCTAGTTTTTTTTTGAAGTACGGAAATTGTATTTAGCCTTATCTGAAAAATTCTAAAATATGCAAAAAAATCTCCGATCAAACCAAGTAGTATCCTTCTCCAAAAAGCGCAGCAACGTCAAATGGTCCCACGTGGGGCCTGAATAACGGCAAATTTCCTGACAATTGACGGGTTATCATCCACCACCCTCATCCTCTTGAAGGAACATTGACTTTTTCCGTTGAAATGGACAAAAAAATTGAAAAGAATTAGATAGATGCGGGAGAATGAACATGGTGGCCTAACGTGGTGCTTGACCCATGGGCTAGAAAACCAAAACTCAGTCATCACCCTGATTGAGGCCATGAGATTAAGCCACGTACGACGCAATCCTAGGCCACCACGTTTTCTCGGCCACAGCCACCCCAAACAAAAATCTGAACTTTCTGATCCTTTCCATCTCTAACCAACGTTTGTTTATCTTTTTACTCGCTCCACAGGAGCAGAACTTTTTTCTATTTTGAAATCCACAAAAGAATCCGGGACAGACACTAGTGTATTTTGTTTTTTATTCAGCCATGAGCACAGACCAGAAATAGGATTGTATCTCGGACTTCAGAGCCTGGAAAAAATCGGAAAAAATCGGAAAACAGTGGAAGAACTGAGTTGGGTGCTAAATTTGGCAACTTGCCAAAATTTGGGGATAACTTTTTCGGTAATCTGTAACTACAGTTTTCCTAAAAATGTATGAACCTTTTAGTGATTACTGCATAGTTTTTCAGGTCTTTAAAAATGAACCTACAGTAGCCCGTACAGTTCACAGGATTGCAAAATTCCAAATTGACCACTTTTTAAGAGTGTATCTCGGCAGAGTATTGGGAAAGTATCGGAATATTTTAAAAATTTTGGATAATTTTTTTTTTATTTATAATTAATTAACATTTAGCTTTCAAAGATGAGCAATGTATTTATAGATACCCATGCAACTTTGAAATAGTTTGTATATCCGTTCAGTGTAACTATCAAAAAATTTTCAACTACAAAATTACTTCATAGCAAAATTTAAAACAAAGAAATTGTTAGTTACTTTTTAATAAAGTACAACCGAGATATTTGTCAAAGTTGAGCTACTTTATCGGCAACCATAAGTAGCCCCCGTACAATGCACCATGTGGTAGAAAATTTCGGTTTGATCTACTTAAATCTACAAAAAGTGCGGGAAGTCGGAGAGTTTGGATAGCTAAGAACGTGCTGAAGTGTTTGCACATTTTGTTGGGCACAAAATTCCCACTTTTCTGATTGTAGATCAAACCGTCGCGGGACAAACTGGTACCTCTTCGTTGTTGGTATGTAAATTTTGAAAATCACTTCGTTTGGTTGGTATGAAACTTTAAACTAGAAAAAGCCCTAAAAGTTGAGCTAGGCGCTCAAATTGGGTAGCATTTACTTTTTTCAACAAAAACATTGCTGGCCGAGCTTTCTTTTACGGCCACGTTGCAATAAAAATCCAGGAGGACCATGTCATCAACAAAAGTACAAGGATGTAGCATAAACAATCACTCCGAAACTTTTGTCGGGCACTGCTTTATCGGAAAAAAAAAAGGATCTCTCCGAACACATCGGTGTCACCCCCAGGGTTCTATAGCGTCTCCCTGACCTCGCGAGCTATTTCCTCGAGACAAATCTCTCTGAATCCTTTTGTAATGGTTGTTTCATGTTCTTCTTCATCTTCTTCTTAGGCTATTCTTCGCTGGGATAAGTAGTAGAAGAAAACCAAAAGAACACATAAAACACAGGCACACACACACACACATTCACACCGTAATATCATATAAAAGTGTGGCTGCGTCTCCCAGAGCGCCCTGGGGGTAAGCAACGCGGGCGCCCGCAAGGAAAAAGTGCAAAGAAATTAGAGAAAAAAGACCGTCTCACTCACTTCTCGATGCCTTTTCTTCTCTAACTATAAAAATTGTCAACTGTGGGGCCTCGAAACGAACGAAAGCGAAAAAAATCAAGAGAACTAGACTCTGAGAGAGAGACAGAAGAAAGAGTTTTTTTCGACGCCGACCGCAGCTGCCAAGCAGCAATAATGACATGCTGGAGAAAAAAATTCAAAGTTTAAATATGTTTTGGCGATCAGAAGCCTAGACCATAAGCCCCTTGTATTGAGTTTTCTCGGCCATTTTTGGTACGGTACATATACATAGAGACTTCAGATTGGGAATTGCGAATCTGTTAGAGTAAGAATAGGCCTAAAACATTGGGCCTAACGGTGACGGAGACTAGGCCTTGTTGGGAGCGATTGTTAAACTATGACATTGCCTAGAACCTCGTTCTATCTTGGTTATGTGGTGTCGGGCTTTCATGATCAGCTCCTTTACTTTTGTCCAGAGAAGGTTTGGGCTTTTTCTGTGGGTGCTTTGGGCTCTATTGTAAATAGGTGATCTTGCGCAGAACACAACGTAGATCTAAATTCTTGTCTAGGCTCTGCAGGCTCCTGAGGGTAGCTGTTTTGCACCCCAAAGCAAAATGATCTCAAAATTACACGACTTCAAGCAGGAGGATTTTTCGATGATTGCCAAATTTTGTAACTTTTATAGGCTTAAGCTTATGGTTATGTTTAGGCGTAGGCTTAG ####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################### V 16 CHROMOSOME_I 2 1 27M1D73M * 0 0 CCTAGCCCTAACCCTAACCCTAACCCTAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA #############################@B?8B?BA@@DDBCDDCBC@CDCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC io_lib-1.14.6/tests/data/aux#aux.sam0000644000031500020650000000132712354177667014135 00000000000000@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 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 io_lib-1.14.6/tests/data/xx#pair.sam0000644000031500020650000000046012473067143014117 00000000000000@SQ SN:xx LN:30 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 ********** io_lib-1.14.6/tests/data/ce#5.sam0000644000031500020650000000362112473051112013247 00000000000000@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 RG:Z:UNKNOWN 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 RG:Z:UNKNOWN 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 RG:Z:UNKNOWN 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 RG:Z:UNKNOWN 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 RG:Z:UNKNOWN VI 2048 CHROMOSOME_I 2 1 27M100000D73M * 0 0 ACTAAGCCTAAGCCTAAGCCTAAGCCAATTATCGATTTCTGAAAAAATTATCGAATTTTCTAGAAATTTTGCAAATTTTTTCATAAAATTATCGATTTTA #############################@B?8B?BA@@DDBCDDCBC@CDCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC io_lib-1.14.6/tests/data/test_run_4_134_369_182.srf0000644000031500020650000012321312354177667016240 00000000000000®ZTR  HUFF€€1 ƒfôÀþµ,HUFFc‚p€› °Ì†˜9' â(¹ìýÿo¼«0Pu¸ÿÿ}'jPˆÏAˆS—R ^2€Þÿ†O%ÑoÓ.12ÃÀY Â0йÿ _ʤK­R,. ¿HUFF…À ëHUFF‚—`,¹MÝI:ÓºŽ1H $¡± 1ª'éòûfÞýOÀ@˜©/æs(»BÇ|6ñ çÏdtN>í˜o3œü2\b8YzÖš±.k µF¥‰bcxvî¤VSôŸ9íäRÊvÛb € v¢=È™!¹’œ4q‡ýÿï+ ÌÔÊo˜aŒCŽcçß|ÆbÍÎßæïÌ·9‹¦q‰¬ùå×òëŽu)”0”ÿ³i'69Iµä›¶Ögk£QŠVãb ¡ø¼»’fF’}¹&”’”´…¾åÿ­`˜ÉðwŽó¶(ÆÊܘ×âX7ye4ÃFmㆰ CòrØ•ÙrÜÌa‘+¢8·»µ£’¤W“¨ÝÈ]Æ0E7ý-7ÊvÇa 1 Û’XU¤DÙ¹:sô6°/ûÿ?·€4SæX–öÜÉ#æ‘»Êh¼ÑzŽ‘Íùº¼bÑ£P™šY‡•£tL ­kfÙlQiKµ#Gy/­R,£Zü4=BPOS,  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHITEXT áPROGRAM_IDillumina2srf v1.12ILLUMINA_GA_MATRIX_FWD# Auto-generated frequency response matrix > A > C > G > T 0.85 0.13 -0.02 -0.02 0.86 0.94 -0.00 -0.01 -0.01 -0.01 1.22 0.02 0.00 -0.00 0.81 1.22 ILLUMINA_GA_PHASING_FWD 0.004400 0.003000 ILLUMINA_GA_CHASTITY0.600000ILLUMINA_GA_BUSTARD_PARAMS 1 4 2 1 1 37 1 1 4 39 1 38 74 2 1 4 1 0 1 37 1 1 4 38 0 38 74 2 0 1 gzip .gz 0 0 0 1 37 /staging/IL9/analysis/080813_IL9_1213 38 74 /staging/IL9/analysis/080818_IL9_1232 HWI-EAS130 1 -1 -1 1 37 /staging/IL9/analysis/080813_IL9_1213 38 74 /staging/IL9/analysis/080818_IL9_1232 /staging/IL9/analysis/080813_IL9_1213 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 s s s s s s s s ILLUMINA_GA_FIRECREST_PARAMS 1 0 /staging/IL9/analysis/080813_IL9_1213/Data/default_offsets.txt 2.700000 /staging/IL9/analysis/Instruments/HWI-EAS130/default_offsets.txt /staging/IL9/analysis/Instruments/HWI-EAS130/default_offsets.txt 1.500000 4.000000 1 1 gzip .gz 0 0 1 37 /staging/IL9/analysis/080813_IL9_1213 HWI-EAS130 1 -1 -1 1 36 /staging/IL9/analysis/080813_IL9_1213 /staging/IL9/analysis/080813_IL9_1213 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 s_[12345678]_[0-9][0-9][02468]1 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 C2.1,C3.1,C4.1,C5.1,C6.1,C7.1,C8.1,C9.1,C10.1,C11.1,C12.1,C13.1,C14.1,C15.1,C16.1,C17.1,C18.1,C19.1,C20.1,C21.1,C22.1,C23.1,C24.1,C25.1,C26.1,C27.1,C28.1,C29.1,C30.1,C31.1,C32.1,C33.1,C34.1,C35.1,C36.1,C37.1 1 0 /staging/IL9/analysis/080813_IL9_1213/Data/default_offsets.txt 2.700000 /staging/IL9/analysis/080813_IL9_1213/Data/default_offsets.txt 1.500000 4.000000 1 1 gzip .gz 0 0 1 37 /staging/IL9/analysis/080813_IL9_1213 HWI-EAS130 1 -1 -1 1 36 /staging/IL9/analysis/080813_IL9_1213 /staging/IL9/analysis/080813_IL9_1213 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 s_[12345678]_[0-9][0-9][02468]1 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 C2.1,C3.1,C4.1,C5.1,C6.1,C7.1,C8.1,C9.1,C10.1,C11.1,C12.1,C13.1,C14.1,C15.1,C16.1,C17.1,C18.1,C19.1,C20.1,C21.1,C22.1,C23.1,C24.1,C25.1,C26.1,C27.1,C28.1,C29.1,C30.1,C31.1,C32.1,C33.1,C34.1,C35.1,C36.1,C37.1 1 0 /staging/IL9/analysis/080813_IL9_1213/Data/default_offsets.txt 2.700000 /staging/IL9/analysis/080813_IL9_1213/Data/default_offsets.txt 1.500000 4.000000 1 1 gzip .gz 0 0 1 37 /staging/IL9/analysis/080813_IL9_1213 38 74 /staging/IL9/analysis/080818_IL9_1232 HWI-EAS130 1 -1 -1 1 36 /staging/IL9/analysis/080813_IL9_1213 37 72 /staging/IL9/analysis/080818_IL9_1232 /staging/IL9/analysis/080813_IL9_1213 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 s s s s s s s s C2.1,C3.1,C4.1,C5.1,C6.1,C7.1,C8.1,C9.1,C10.1,C11.1,C12.1,C13.1,C14.1,C15.1,C16.1,C17.1,C18.1,C19.1,C20.1,C21.1,C22.1,C23.1,C24.1,C25.1,C26.1,C27.1,C28.1,C29.1,C30.1,C31.1,C32.1,C33.1,C34.1,C35.1,C36.1,C37.1 1 0 /staging/IL9/analysis/080813_IL9_1213/Data/default_offsets.txt 2.700000 /staging/IL9/analysis/080813_IL9_1213/Data/default_offsets.txt 1.500000 4.000000 0 1 gzip .gz 0 0 0 1 37 /staging/IL9/analysis/080813_IL9_1213 HWI-EAS130 1 -1 -1 1 37 /staging/IL9/analysis/080813_IL9_1213 /staging/IL9/analysis/080813_IL9_1213 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 s_[12345678]_[0-9][0-9][02468]1 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 s 1 21 41 61 81 101 121 141 161 181 201 221 241 261 281 301 321 C1.1,C2.1,C3.1,C4.1,C5.1,C6.1,C7.1,C8.1,C9.1,C10.1,C11.1,C12.1,C13.1,C14.1,C15.1,C16.1,C17.1,C18.1,C19.1,C20.1,C21.1,C22.1,C23.1,C24.1,C25.1,C26.1,C27.1,C28.1,C29.1,C30.1,C31.1,C32.1,C33.1,C34.1,C35.1,C36.1,C37.1 1 0 /staging/IL9/analysis/080813_IL9_1213/Data/default_offsets.txt 2.700000 /staging/IL9/analysis/080813_IL9_1213/Data/default_offsets.txt 1.500000 4.000000 0 1 gzip .gz 0 0 0 1 37 /staging/IL9/analysis/080813_IL9_1213 38 74 /staging/IL9/analysis/080818_IL9_1232 HWI-EAS130 1 -1 -1 1 37 /staging/IL9/analysis/080813_IL9_1213 38 74 /staging/IL9/analysis/080818_IL9_1232 /staging/IL9/analysis/080813_IL9_1213 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 s s s s s s s s C1.1,C2.1,C3.1,C4.1,C5.1,C6.1,C7.1,C8.1,C9.1,C10.1,C11.1,C12.1,C13.1,C14.1,C15.1,C16.1,C17.1,C18.1,C19.1,C20.1,C21.1,C22.1,C23.1,C24.1,C25.1,C26.1,C27.1,C28.1,C29.1,C30.1,C31.1,C32.1,C33.1,C34.1,C35.1,C36.1,C37.1 SMP4 OFFS4171ÄM€lÀà5 ë1‘%S^3ˆ:¯ ë ³²0~áQÚöãÃ(‹^¡ê4̉$æÈÇ;Ÿç!Ò"sçDаI¢€é‹)Rù@´OFà†¹@*“X¢µRË9¢ ¸ßg²˜Ê2å+ŸîÓ¬üȇ*¥rO“ Ô…îu0Å¥ß ‰ñlµ÷$ £Pñ8ÁG*]¨ì¥š—”·‡XÉ/èvª Kþ÷ž£9ÁKs™üdzLˆ±sž3,Y'±ÌàË„’Âýó9aO')Q=èLÉ÷:ñÕX4Uré¡TÖ¨ñ_n¨ÅÎ1/¹Wºaýo˜ÿ»_b—©ÑXñPÍò—B‚\&c7*H†Pàà1²°ìn=B('˜Þþdº`“Y…¾‰Œ–—ÆQHâǶ¡ÐzýÉo¬§˜;Ñ]ÞõT5EŠñB“ˆþ†Î»°GK¹ÐH¥Ì0…öËhŠ'a! d+ˆS–8¥8C«?¼S9Iü˜§_œt‘-:Uš~R?©ÏPàˆ»h@—µ·çâµ^<)8) ––Ò(w³øüÅ_§OàÎ+2P/Ò=f2j>cì´“¤à¹< ‘ÞtëBASEM€§!Rkeɨg¶˜1¥¬a°’5zCNF4 SCALELOM‚C&FL¬v À„·Ô€io_lib-1.14.6/tests/data/slx.fasta0000644000031500020650000000367412354177667013712 00000000000000>test_run:4:133:593:417 GTATAAGTCAAAGCACCTTTAGCGTTAAGGTACTGAATCTGTGCCGCGTTTCTTTGTTCCTGAGCATGGCACTA >test_run:4:133:587:382 GTTGAGTTCGATAATGGTGATATGTATGTTGACGGCCGGGGGAGCACATTGTAGCATTGTGCCAATTCATCCAT >test_run:4:133:505:428 GGTTGGACTTGGTGGCAAGTCTGCCGCTGATAAAGGACAGGAAATGCAGCAGCAAGATAATCACGAGTATCCTT >test_run:4:133:548:808 GATTGAATCGCGAGTGGTCGGCAGATTGCGATAAACGTTGCAGTGGAATAGTCAGGTTAAATTTAATGTGACCG >test_run:4:133:568:418 GTCCCCTTCGGGGCGGTGGTCTATAGTGTTATTTATAAGGCTGCTTCTGACGTTCGTGATGAGTTTGTATCTGT >test_run:4:133:587:489 GTGTTCAACAGACCTATAAACATTCTGTGCCGCGTTTAGCGCAAGAGTAAACATAGTGCCATGCTCAGGAACAA >test_run:4:133:511:464 GCAAATCACCAGAAGGCGGTTCCTGAATGAATGGGAATTCGTCTAAGAAGTTTAAGATTGCTGAGGGTCAGTGG >test_run:4:133:507:435 GATATGAATAACACTATAGACAACCGCCACGATGGGGGAGGGAGTGCACCAGCCAGAGTGCGGCAAAACTGCGT >test_run:4:133:561:484 GCCATAATTCAAACTTTTTTTCTGATAAGCTGGTTCTGCATTAACCGTCAAACTATCAAAATATAACGTTGACG >test_run:4:133:539:484 GTAACGGCTTTAGTTTCCAAAACGAAGAACCGAGAAGAGCGCCACTTTAACAAGGATAATAACAAAGCACAAAA >test_run:4:134:548:359 GAAAGATTGGTGTTTTCCATAATAGACGCAACGCGAGACTCAAAAAGAGATTGCTGGCATTCAGTCGGCGACTT >test_run:4:134:594:276 GCCTTCTGGTGATTTGCAAGAACGCGTACTTATTCGCAACCTGACTATTCCACTGCAACAACTGAACGGACTGG >test_run:4:134:369:182 GGTAGAGATTCTCTTGTTGACATTTTAAAAGAGCGTGTCTGGAAACGTACGGATTGTTCAGTAACTTGACTCAT >test_run:4:134:354:230 GATCGGAAGAGCGGTTCAGCAGGAATGCCGAGACCCCGCTCTACGCGATTTCATAGTGGAGGCGTGCGGCGATC >test_run:4:134:614:269 GATTAAGCTCATTAGGGTTAGCCTCGGTACGGTCAGGCGCTTTTCTTGGCACGATTAACCCTGATACCAATAAA >test_run:4:134:368:209 GATTTGGTCATTGGTAAAATACTGACCAGCCGTTTGATTATCAACAGAAGGAGTCTACTGCTCGCGTTGCGTCT >test_run:4:134:621:345 GTTCAACAGACCTATAAACATTCTGTGCCGCGTTTCTGCACCTTTAGCGTTAAGGTACTGAATCTCTTTAGTCG >test_run:4:134:538:358 GGTAGCTTTAAGCGGCTCACCTTTAGCATCAACAGGCTAGCTTGCAAAATACGTGGCCTTATGGTTACAGTATG >test_run:4:134:557:250 GATATTTCTGATGAGTCGAAAAATTATCTTGATAAAGAGGATAGGTCGAATTTTCTCATTTTCCGCCAGCAGTC >test_run:4:134:529:256 GTCAGAAAATCGAAATCATCTTCGGTTAAATCCAAAATTCAGGCTTCTGCCGTTTTGGATTTAACCGAAGATGA io_lib-1.14.6/tests/data/xx#unsorted.sam0000644000031500020650000000050012473067177015031 00000000000000@SQ SN:xx LN:30 @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 ********** io_lib-1.14.6/tests/data/xx#large_aux.sam0000644000031500020650000335041512473067110015140 00000000000000@SQ SN:xx LN:30 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 io_lib-1.14.6/tests/data/ce#unmap.sam0000644000031500020650000000245512354177667014255 00000000000000I 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 io_lib-1.14.6/tests/data/traces.srf0000644000031500020650000000003412354177667014044 00000000000000SSRF1.3ZBustard1.8.28io_lib-1.14.6/tests/data/xx#rg.sam0000644000031500020650000000100512473067154013572 00000000000000@HD VN:1.4 SO:coordinate @SQ SN:xx LN:30 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 ********** io_lib-1.14.6/tests/data/aux#aux.dz0000644000031500020650000000013712365717102013752 00000000000000ZD<Jxœsðpá ó³2Ô3á ö·*Í+Î/*IMárä ö³ ÎHÍÌIäôñ³22àrrçôt±òtá öµJËÏçü—xio_lib-1.14.6/tests/data/ce#5b_java.cram0000644000031500020650000001520012617157222014561 00000000000000CRAMce#5b.sam ¢ …£„„@HD VN:1.4 @SQ SN:CHROMOSOME_I LN:1009800 M5:8ede36131e0dbf3417807e48f77f3ebd @SQ SN:CHROMOSOME_II LN:5000 M5:8e7993f7a93158587ee897d7287948ec @SQ SN:CHROMOSOME_III LN:5000 M5:3adcb065e1cf74fafdbba1e8c352b323 @SQ SN:CHROMOSOME_IV LN:5000 M5:251af66a69ee589c9f3757340ec2de6f @SQ SN:CHROMOSOME_V LN:5000 M5:cf200a65fb754836dcc56b24b3170ee8 @PG ID:0 CL:java /nfs/users/nfs_j/jkb/work/cram/cramtools/cramtools-3.0.jar cram --capture-all-tags -n -Q -R tests/data/ce.fa -I tests/data/ce#5b.sam -O tests/data/ce#5b_java.cram PN:cramtools VN:3.0-b39 Š¥Dýed ޏ$XŸƒƒ+RNAPRRSMKKTDAScXGcXMcXNcXOcXScYTZ€ùBFAPFP FCDXQSDLBATN%àAScàXGcàXMcàXNcàXOcàXScàYTZNF RLdRGÿÿÿÿÿMQRN NPTSFNBSINTCMFNSÿÿÿÿÿCFTLRIRSSCHC PD [àAScàXGcàXMcàXNcàXOcàXScàYTZ àYTZàYTZ¯ÂÅ\eàYTZÿÿÿÿÿ 5l„ ª ”6f¨áQ¢‘‚B1BcÚ9£î^kK 2U¿ï•`¯Ø S1BcÚ9£î^kK 2U¿ï•`¯Ø B5Bc@σá5~︽ñT(PÖm€Ö ä W܃ô©!ÓléÎGÐÑ<]…ò°ÿƒÒ‡~ì/c¹1½GAz¥82zù'Ú>S5Bc@σá5~︽ñT(PÖm€Ö ä W܃ô©!ÓléÎGÐÑ<]…ò°ÿƒÒ‡~ì/c¹1½GAz¥82zù'Ú>BDBc-ùÿüSDBc<É€ÁØG™ÝS€$p›ŠÆÀ¼sdjd‡ÿ"„#„r€!ÿ‡ÿ!ˆƒÿ!„"„„ÿ†f ƒ3"†fP!P"Žo€ð!‚ª"ˆ…U•7U2vˆn¤Ušµ¼ððýO„azÜ‹ó¹Ý`Ô½àÿ€€€€º¬ÿ€€€€Zlò²9 0 ÿ‚‡ÿ‚î„ÿîÿL)”€Öå¦ÓÐàYTZ2)„„U‡ÿUÿU‡ÿUˆ((qÉ©8ed 5Ãm……+RNAPRRSMcKKTDAScXGcXMcXNcXOcXScYTZ€ûBFAPFP FCDXQSDLBATN%àAScàXGcàXMcàXNcàXOcàXScàYTZNF RLdRGÿÿÿÿÿMQRN  NPTSFN?BSINTCMFNSÿÿÿÿÿCFTLRIRSSCHC PD [àAScàXGcàXMcàXNcàXOcàXScàYTZ àYTZàYTZ÷O'eàYTZÿÿÿÿÿYÁmµ «I ‰2ª—RššlB1BcÚ9£î^kK 2U¿ï•`¯Ø S1BcÚ9£î^kK 2U¿ï•`¯Ø B5Bc@σá5~︽ñT(PÖm€Ö ä W܃ô©!ÓléÎGÐÑ<]…ò°ÿƒÒ‡~ì/c¹1½GAz¥82zù'Ú>S5Bc@σá5~︽ñT(PÖm€Ö ä W܃ô©!ÓléÎGÐÑ<]…ò°ÿƒÒ‡~ì/c¹1½GAz¥82zù'Ú>BDBc-ùÿüSDBc<É€º¿(ö×íÖëtzÖµ­kZÖµ­kZÖµ­kXÝ3ŽÌŠÆÀ¼sdjd‡ÿ"„#„r€!ÿ‡ÿ!ˆƒÿ!„"„„ÿ†f ƒ3"†fP!P"Žo€ð!‚ª"ˆ…U•7U2vˆn¤Ušµ¼ððýO„azÜ ‹óôÔ34±4·0¶41TÀ 0‘܉ÿ€€€€º¬ÿ€€€€Zlò²9 0 ÿ‚‡ÿ‚î„ÿîÿL)”€Öå¦ÓÐàYTZ2)„„U‡ÿUÿU‡ÿUˆ((qÉ©0ed ®Ê93……+RNAPRRSMcKKTDAScXGcXMcXNcXOcXScYTZ€ûBFAPFP FCDXQSDLBATN%àAScàXGcàXMcàXNcàXOcàXScàYTZNF RLdRGÿÿÿÿÿMQRN NPTSFN?BSINTCMFNSÿÿÿÿÿCFTLRIRSSCHC PD [àAScàXGcàXMcàXNcàXOcàXScàYTZ àYTZàYTZ!]6óeàYTZÿÿÿÿÿYÁmµ «I ‰2ª—RššlB1BcÚ9£î^kK 2U¿ï•`¯Ø S1BcÚ9£î^kK 2U¿ï•`¯Ø B5Bc@σá5~︽ñT(PÖm€Ö ä W܃ô©!ÓléÎGÐÑ<]…ò°ÿƒÒ‡~ì/c¹1½GAz¥82zù'Ú>S5Bc@σá5~︽ñT(PÖm€Ö ä W܃ô©!ÓléÎGÐÑ<]…ò°ÿƒÒ‡~ì/c¹1½GAz¥82zù'Ú>BDBc-ùÿüSDBc<É€Ègv×íÖëtzÖµ­kZÖµ­kZÖµ­kXÝ3ŽÌŠÆÀ¼sdjd‡ÿ"„#„r€!ÿ‡ÿ!ˆƒÿ!„"„„ÿ†f ƒ3"†fP!P"Žo€ð!‚ª"ˆ…U•7U2vˆn¤Ušµ¼ððýO„azÜ‹óôô%b±®˜md×ÿ€€€€º¬ÿ€€€€Zlò²9 0 ÿ‚‡ÿ‚î„ÿîÿL)”€Öå¦ÓÐàYTZ2)„„U‡ÿUÿU‡ÿUˆ((qÉ©/ed ¯ú'……+RNAPRRSMcKKTDAScXGcXMcXNcXOcXScYTZ€ûBFAPFP FCDXQSDLBATN%àAScàXGcàXMcàXNcàXOcàXScàYTZNF RLdRGÿÿÿÿÿMQRN NPTSFN?BSINTCMFNSÿÿÿÿÿCFTLRIRSSCHC PD [àAScàXGcàXMcàXNcàXOcàXScàYTZ àYTZàYTZÉçÛeàYTZÿÿÿÿÿYÁmµ «I ‰2ª—RššlB1BcÚ9£î^kK 2U¿ï•`¯Ø S1BcÚ9£î^kK 2U¿ï•`¯Ø B5Bc@σá5~︽ñT(PÖm€Ö ä W܃ô©!ÓléÎGÐÑ<]…ò°ÿƒÒ‡~ì/c¹1½GAz¥82zù'Ú>S5Bc@σá5~︽ñT(PÖm€Ö ä W܃ô©!ÓléÎGÐÑ<]…ò°ÿƒÒ‡~ì/c¹1½GAz¥82zù'Ú>BDBc-ùÿüSDBc<É€Ù-%¿×íÖëtzÖµ­kZÖµ­kZÖµ­kXÝ3ŽÌŠÆÀ¼sdjd‡ÿ"„#„r€!ÿ‡ÿ!ˆƒÿ!„"„„ÿ†f ƒ3"†fP!P"Žo€ð!‚ª"ˆ…U•7U2vˆn¤Ušµ¼ððýO„azÜ‹ó rjâRëUõÿ€€€€º¬ÿ€€€€Zlò²9 0 ÿ‚‡ÿ‚î„ÿîÿL)”€Öå¦ÓÐàYTZ2)„„U‡ÿUÿU‡ÿUˆ((qÉ©e€È ­Àê-š¢¢+RNAPRRSMxlNTDAScXGcXMcXNcXOcXScYTZBF APFP FC DSXiQSDLBATN%àAScàXGcàXMcàXNcàXOcàXScàYTZNF RLdRGÿÿÿÿÿMQRN NPTSFN?V`BS INTCMFNSÿÿÿÿÿCF TLRIRSSCHC PD [àAScàXGcàXMcàXNcàXOcàXScàYTZ àYTZàYTZA§‘eàYTZÿÿÿÿÿ+ú ª‹‚ùi¹'u0¦×B1BcÚ9£î^kK 2U¿ï•`¯Ø S1BcÚ9£î^kK 2U¿ï•`¯Ø B5Bc@σá5~︽ñT(PÖm€Ö ä W܃ô©!ÓléÎGÐÑ<]…ò°ÿƒÒ‡~ì/c¹1½GAz¥82zù'Ú>S5Bc@σá5~︽ñT(PÖm€Ö ä W܃ô©!ÓléÎGÐÑ<]…ò°ÿƒÒ‡~ì/c¹1½GAz¥82zù'Ú>BDBc®DÖSDBc<É€S Õ€€€€ûˆ¤$   K            ¬çÅb±X¬V+lV+ŠÅb±XÉ$’H±X¬V+ŠÅb±Xð®p€€€±‚   )$’I€€€€¸«ç”X:O:‚IA‚IN†ÛT„’A„’A†ÛG„’CC†fT‰™GCÿN/NŽÐTAƒ±C;T‹2Ó›§»›†p-V›o.õóixÀì4sdjd‡ÿ"„#„r€!ÿ‡ÿ!ˆƒÿ!„"„„ÿ†f ƒ3"†fP!P"Žo€ð!‚ª"ˆ…U•7U2vˆn¤Ušµ¼ððýO„azÜ‹ ó ó¡(½R& Lÿ€€€€V‚#  Šª…UÀU€À€?ïJN9 0 ÿ‚‡ÿ‚î„ÿîÿL)”€Öå¦ÓÐàYTZ2)„„U‡ÿUÿU‡ÿUˆ((qÉ©ÿÿÿÿàEOF½ÙOîcKio_lib-1.14.6/tests/data/xx#triplet.sam.being_fixed.2278209445148847528.bam0000644000031500020650000000000012412537302021655 00000000000000io_lib-1.14.6/tests/data/tr0000644000031500020650000647624412412546543012435 0000000000000030058 execve("/software/bin/java", ["/software/bin/java", "-jar", "/nfs/users/nfs_j/jkb/work/cram/cramtools-2.1.jar", "cram", "-I", "a.sam", "-O", "a.cram", "-R", "/nfs/srpipe_references/references/Plasmodium_falciparum/default/all/fasta/all.fa"], [/* 78 vars */]) = 0 30058 brk(0) = 0x1002000 30058 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) 30058 mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb31b318000 30058 readlink("/proc/self/exe", "/software/jdk1.7.0_25/bin/java", 4096) = 30 30058 access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory) 30058 open("/software/jdk1.7.0_25/bin/../lib/amd64/jli/tls/x86_64/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) 30058 stat("/software/jdk1.7.0_25/bin/../lib/amd64/jli/tls/x86_64", 0x7fffce2519b0) = -1 ENOENT (No such file or directory) 30058 open("/software/jdk1.7.0_25/bin/../lib/amd64/jli/tls/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) 30058 stat("/software/jdk1.7.0_25/bin/../lib/amd64/jli/tls", 0x7fffce2519b0) = -1 ENOENT (No such file or directory) 30058 open("/software/jdk1.7.0_25/bin/../lib/amd64/jli/x86_64/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) 30058 stat("/software/jdk1.7.0_25/bin/../lib/amd64/jli/x86_64", 0x7fffce2519b0) = -1 ENOENT (No such file or directory) 30058 open("/software/jdk1.7.0_25/bin/../lib/amd64/jli/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) 30058 stat("/software/jdk1.7.0_25/bin/../lib/amd64/jli", 0x7fffce2519b0) = -1 ENOENT (No such file or directory) 30058 open("/software/jdk1.7.0_25/bin/../jre/lib/amd64/jli/tls/x86_64/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) 30058 stat("/software/jdk1.7.0_25/bin/../jre/lib/amd64/jli/tls/x86_64", 0x7fffce2519b0) = -1 ENOENT (No such file or directory) 30058 open("/software/jdk1.7.0_25/bin/../jre/lib/amd64/jli/tls/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) 30058 stat("/software/jdk1.7.0_25/bin/../jre/lib/amd64/jli/tls", 0x7fffce2519b0) = -1 ENOENT (No such file or directory) 30058 open("/software/jdk1.7.0_25/bin/../jre/lib/amd64/jli/x86_64/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) 30058 stat("/software/jdk1.7.0_25/bin/../jre/lib/amd64/jli/x86_64", 0x7fffce2519b0) = -1 ENOENT (No such file or directory) 30058 open("/software/jdk1.7.0_25/bin/../jre/lib/amd64/jli/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) 30058 stat("/software/jdk1.7.0_25/bin/../jre/lib/amd64/jli", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 30058 open("/usr/local/lsf/9.1/linux2.6-glibc2.3-x86_64/lib/tls/x86_64/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) 30058 stat("/usr/local/lsf/9.1/linux2.6-glibc2.3-x86_64/lib/tls/x86_64", 0x7fffce2519b0) = -1 ENOENT (No such file or directory) 30058 open("/usr/local/lsf/9.1/linux2.6-glibc2.3-x86_64/lib/tls/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) 30058 stat("/usr/local/lsf/9.1/linux2.6-glibc2.3-x86_64/lib/tls", 0x7fffce2519b0) = -1 ENOENT (No such file or directory) 30058 open("/usr/local/lsf/9.1/linux2.6-glibc2.3-x86_64/lib/x86_64/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) 30058 stat("/usr/local/lsf/9.1/linux2.6-glibc2.3-x86_64/lib/x86_64", 0x7fffce2519b0) = -1 ENOENT (No such file or directory) 30058 open("/usr/local/lsf/9.1/linux2.6-glibc2.3-x86_64/lib/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) 30058 stat("/usr/local/lsf/9.1/linux2.6-glibc2.3-x86_64/lib", {st_mode=S_IFDIR|0755, st_size=8192, ...}) = 0 30058 open("/nfs/users/nfs_j/jkb/sys/Linux_x86_64/lib/tls/x86_64/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) 30058 stat("/nfs/users/nfs_j/jkb/sys/Linux_x86_64/lib/tls/x86_64", 0x7fffce2519b0) = -1 ENOENT (No such file or directory) 30058 open("/nfs/users/nfs_j/jkb/sys/Linux_x86_64/lib/tls/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) 30058 stat("/nfs/users/nfs_j/jkb/sys/Linux_x86_64/lib/tls", 0x7fffce2519b0) = -1 ENOENT (No such file or directory) 30058 open("/nfs/users/nfs_j/jkb/sys/Linux_x86_64/lib/x86_64/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) 30058 stat("/nfs/users/nfs_j/jkb/sys/Linux_x86_64/lib/x86_64", 0x7fffce2519b0) = -1 ENOENT (No such file or directory) 30058 open("/nfs/users/nfs_j/jkb/sys/Linux_x86_64/lib/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) 30058 stat("/nfs/users/nfs_j/jkb/sys/Linux_x86_64/lib", {st_mode=S_IFDIR|0755, st_size=12288, ...}) = 0 30058 open("/software/oracle-ic-11.2/tls/x86_64/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) 30058 stat("/software/oracle-ic-11.2/tls/x86_64", 0x7fffce2519b0) = -1 ENOENT (No such file or directory) 30058 open("/software/oracle-ic-11.2/tls/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) 30058 stat("/software/oracle-ic-11.2/tls", 0x7fffce2519b0) = -1 ENOENT (No such file or directory) 30058 open("/software/oracle-ic-11.2/x86_64/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) 30058 stat("/software/oracle-ic-11.2/x86_64", 0x7fffce2519b0) = -1 ENOENT (No such file or directory) 30058 open("/software/oracle-ic-11.2/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) 30058 stat("/software/oracle-ic-11.2", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0 30058 open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3 30058 fstat(3, {st_mode=S_IFREG|0644, st_size=104396, ...}) = 0 30058 mmap(NULL, 104396, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7fb31b2fe000 30058 close(3) = 0 30058 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) 30058 open("/lib/x86_64-linux-gnu/libpthread.so.0", O_RDONLY|O_CLOEXEC) = 3 30058 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\200l\0\0\0\0\0\0@\0\0\0\0\0\0\0\360\203\1\0\0\0\0\0\0\0\0\0@\0008\0\t\0@\0#\0 \0\6\0\0\0\5\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0\370\1\0\0\0\0\0\0\370\1\0\0\0\0\0\0\10\0\0\0\0\0\0\0\3\0\0\0\4\0\0\0\200 \1\0\0\0\0\0\200 \1\0\0\0\0\0\200 \1\0\0\0\0\0\34\0\0\0\0\0\0\0\34\0\0\0\0\0\0\0\20\0\0\0\0\0\0\0\1\0\0\0\5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\0#\0\0\0\0\0\0@\0\0\0\0\0\0\0Hj\1\0\0\0\0\0\0\0\0\0@\0008\0\6\0@\0\36\0\33\0\1\0\0\0\5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\334Y\1\0\0\0\0\0\334Y\1\0\0\0\0\0\0\0 \0\0\0\0\0\1\0\0\0\6\0\0\0\0`\1\0\0\0\0\0\0`!\0\0\0\0\0\0`!\0\0\0\0\0\300\5\0\0\0\0\0\0\250\6\0\0\0\0\0\0\0\0 \0\0\0\0\0\2\0\0\0\6\0\0\0\360`\1\0\0\0\0\0\360`!\0\0\0\0\0\360`!\0\0\0\0\0\0\2\0\0\0\0\0\0\0\2\0\0\0\0\0\0\10\0\0\0\0\0\0\0\4\0\0\0\4\0\0\0\220\1\0\0\0\0\0\0\220\1\0\0\0\0\0\0\220\1\0\0\0\0\0\0$\0\0\0\0\0\0\0$\0\0\0\0\0\0\0\4\0\0\0\0\0\0\0P\345td\4\0\0\0\370G\1\0\0\0\0\0\370G\1\0\0\0\0\0\370G\1\0\0\0\0\0T\3\0\0\0\0\0\0T\3\0\0\0\0\0\0\4\0\0\0\0\0\0\0Q\345td\6\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10\0\0\0\0\0\0\0\4\0\0\0\24\0\0\0\3\0\0\0GNU\0k\367_\200\31\225\251\256\177\327\3350]l\261\256\313\v\177\336\0\0\0\0\247\0\0\0[\0\0\0\0\0\0\0007\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0006\0\0\0N\0\0\0\0\0\0\0\0\0\0\0E\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0004\0\0\0W\0\0\0\0\0\0\0\0\0\0\0000\0\0\0\0\0\0\0\0\0\0\0Q\0\0\0\27\0\0\0#\0\0\0\0\0\0\0\0\0\0\0\n\0\0\0002\0\0\0\0\0\0\0\0\0\0\0?\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0005\0\0\0\0\0\0\0;\0\0\0009\0\0\0(\0\0\0\36\0\0\0S\0\0\0\0\0\0\0K\0\0\0\0\0\0\0\0\0\0\0001\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0T\0\0\0\r\0\0\0003\0\0\0\0\0\0\0\0\0\0\0X\0\0\0\6\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\22\0\0\0\2\0\0\0F\0\0\0*\0\0\0 \0\0\0:\0\0\0P\0\0\0.\0\0\0C\0\0\0>\0\0\0Y\0\0\0\0\0\0\0\23\0\0\0O\0\0\0\0\0\0\0H\0\0\0M\0\0\0\0\0\0\0,\0\0\0\25\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0D\0\0\0\0\0\0\0\0\0\0\0", 832) = 832 30058 fstat(3, {st_mode=S_IFREG|0755, st_size=105728, ...}) = 0 30058 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb31b2fd000 30058 mmap(NULL, 2188968, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fb31acc4000 30058 mprotect(0x7fb31acda000, 2097152, PROT_NONE) = 0 30058 mmap(0x7fb31aeda000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x16000) = 0x7fb31aeda000 30058 close(3) = 0 30058 open("/software/jdk1.7.0_25/bin/../jre/lib/amd64/jli/libdl.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) 30058 open("/usr/local/lsf/9.1/linux2.6-glibc2.3-x86_64/lib/libdl.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) 30058 open("/nfs/users/nfs_j/jkb/sys/Linux_x86_64/lib/libdl.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) 30058 open("/software/oracle-ic-11.2/libdl.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) 30058 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) 30058 open("/lib/x86_64-linux-gnu/libdl.so.2", O_RDONLY|O_CLOEXEC) = 3 30058 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\340\r\0\0\0\0\0\0@\0\0\0\0\0\0\0\2601\0\0\0\0\0\0\0\0\0\0@\0008\0\t\0@\0 \0\37\0\6\0\0\0\5\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0\370\1\0\0\0\0\0\0\370\1\0\0\0\0\0\0\10\0\0\0\0\0\0\0\3\0\0\0\4\0\0\0\320\31\0\0\0\0\0\0\320\31\0\0\0\0\0\0\320\31\0\0\0\0\0\0\34\0\0\0\0\0\0\0\34\0\0\0\0\0\0\0\20\0\0\0\0\0\0\0\1\0\0\0\5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\230\37\0\0\0\0\0\0\230\37\0\0\0\0\0\0\0\0 \0\0\0\0\0\1\0\0\0\6\0\0\0H-\0\0\0\0\0\0H- \0\0\0\0\0H- \0\0\0\0\0008\3\0\0\0\0\0\0\300\3\0\0\0\0\0\0\0\0 \0\0\0\0\0\2\0\0\0\6\0\0\0\200-\0\0\0\0\0\0\200- \0\0\0\0\0\200- \0\0\0\0\0\20\2\0\0\0\0\0\0\20\2\0\0\0\0\0\0\10\0\0\0\0\0\0\0\4\0\0\0\4\0\0\0008\2\0\0\0\0\0\0008\2\0\0\0\0\0\0008\2\0\0\0\0\0\0D\0\0\0\0\0\0\0D\0\0\0\0\0\0\0\4\0\0\0\0\0\0\0P\345td\4\0\0\0\354\31\0\0\0\0\0\0\354\31\0\0\0\0\0\0\354\31\0\0\0\0\0\0\274\0\0\0\0\0\0\0\274\0\0\0\0\0\0\0\4\0\0\0\0\0\0\0Q\345td\6\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10\0\0\0\0\0\0\0R\345td\4\0\0\0H-\0\0\0\0\0\0H- \0\0\0\0\0H- \0\0\0\0\0\270\2\0\0\0\0\0\0\270\2\0\0\0\0\0\0\1\0\0\0\0\0\0\0\4\0\0\0\24\0\0\0\3\0\0\0GNU\0\321\201\257U\35\273\304>\235U\221=S&5\375\341\216|N\4\0\0\0\20\0\0\0\1\0\0\0GNU\0\0\0\0\0\2\0\0\0\6\0\0\0\30\0\0\0\0\0\0\0\33\0\0\0\31\0\0\0\2\0\0\0\7\0\0\0\230\2\21\0\200H\0\4\22\0\0@\203(\10\236\31\0\0\0\0\0\0\0\32\0\0\0\0\0\0\0\0\0\0\0\33\0\0\0\0\0\0\0\34\0\0\0\0\0\0\0\35\0\0\0\0\0\0\0\36\0\0\0\0\0\0\0\37\0\0\0!\0\0\0\"\0\0\0$\0\0\0%\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0&\0\0\0\0\0\0\0\0\0\0\0\353\26\251\30a\257\0\371\301S\200\30\273\25sB\257\304M\17\221!\374\370\6\2\4\371\3733\373\17\371\31sB\372\31sB\225\263_\31\177\236\320\30a\242\222\6", 832) = 832 30058 fstat(3, {st_mode=S_IFREG|0644, st_size=14768, ...}) = 0 30058 mmap(NULL, 2109704, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fb31aac0000 30058 mprotect(0x7fb31aac2000, 2097152, PROT_NONE) = 0 30058 mmap(0x7fb31acc2000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x7fb31acc2000 30058 close(3) = 0 30058 open("/software/jdk1.7.0_25/bin/../jre/lib/amd64/jli/libc.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) 30058 open("/usr/local/lsf/9.1/linux2.6-glibc2.3-x86_64/lib/libc.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) 30058 open("/nfs/users/nfs_j/jkb/sys/Linux_x86_64/lib/libc.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) 30058 open("/software/oracle-ic-11.2/libc.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) 30058 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) 30058 open("/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3 30058 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\240\30\2\0\0\0\0\0@\0\0\0\0\0\0\0\370\251\33\0\0\0\0\0\0\0\0\0@\0008\0\n\0@\0#\0\"\0\6\0\0\0\5\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0000\2\0\0\0\0\0\0000\2\0\0\0\0\0\0\10\0\0\0\0\0\0\0\3\0\0\0\4\0\0\0pN\30\0\0\0\0\0pN\30\0\0\0\0\0pN\30\0\0\0\0\0\34\0\0\0\0\0\0\0\34\0\0\0\0\0\0\0\20\0\0\0\0\0\0\0\1\0\0\0\5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\274L\33\0\0\0\0\0\274L\33\0\0\0\0\0\0\0 \0\0\0\0\0\1\0\0\0\6\0\0\0\0W\33\0\0\0\0\0\0W;\0\0\0\0\0\0W;\0\0\0\0\0`Q\0\0\0\0\0\0\330\235\0\0\0\0\0\0\0\0 \0\0\0\0\0\2\0\0\0\6\0\0\0@\213\33\0\0\0\0\0@\213;\0\0\0\0\0@\213;\0\0\0\0\0\340\1\0\0\0\0\0\0\340\1\0\0\0\0\0\0\10\0\0\0\0\0\0\0\4\0\0\0\4\0\0\0p\2\0\0\0\0\0\0p\2\0\0\0\0\0\0p\2\0\0\0\0\0\0D\0\0\0\0\0\0\0D\0\0\0\0\0\0\0\4\0\0\0\0\0\0\0\7\0\0\0\4\0\0\0\0W\33\0\0\0\0\0\0W;\0\0\0\0\0\0W;\0\0\0\0\0\20\0\0\0\0\0\0\0p\0\0\0\0\0\0\0\20\0\0\0\0\0\0\0P\345td\4\0\0\0\214N\30\0\0\0\0\0\214N\30\0\0\0\0\0\214N\30\0\0\0\0\0\254h\0\0\0\0\0\0\254h\0\0\0\0\0\0\4\0\0\0\0\0\0\0Q\345td\6\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10\0\0\0\0\0\0\0R\345td\4\0\0\0\0W\33\0\0\0\0\0\0W;\0\0\0\0\0\0W;\0\0\0\0\0\0009\0\0\0\0\0\0\0009\0\0\0\0\0\0\1\0\0\0\0\0\0\0\4\0\0\0\24\0\0\0\3\0\0\0GNU\0009e\331M\3647\334\377c\16$K\6\3760\310\235\2523\300\4\0\0\0\20\0\0\0\1\0\0\0GNU\0\0\0\0\0\2\0\0\0\6\0\0\0\30\0\0\0\0\0\0\0\363\3\0\0\t\0\0\0\0\1\0\0\16\0\0\0\0000\20D\240 \2\1\210\3\346\220\305E\214\0\300\0\10\0\5\200\0`\300\200\0\r\212\f\0\4\20\0\210D2\10.@\210P4, \16\"H&\204\300\214\4\10\0\2\2\16\241\254\32\4f\300\0\3002\0\300\0P\1 \201\10\204\v ($\0\4 P\0\20X\200\312DB(\0\6\200\20\30B\0 @\200\0\tP\0Q\212@\20\0\0\0\0\10\0\0\21\20", 832) = 832 30058 fstat(3, {st_mode=S_IFREG|0755, st_size=1815224, ...}) = 0 30058 mmap(NULL, 3929304, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fb31a700000 30058 mprotect(0x7fb31a8b5000, 2097152, PROT_NONE) = 0 30058 mmap(0x7fb31aab5000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1b5000) = 0x7fb31aab5000 30058 mmap(0x7fb31aabb000, 17624, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fb31aabb000 30058 close(3) = 0 30058 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb31b2fc000 30058 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb31b2fb000 30058 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb31b2fa000 30058 arch_prctl(ARCH_SET_FS, 0x7fb31b2fb700) = 0 30058 mprotect(0x7fb31aab5000, 16384, PROT_READ) = 0 30058 mprotect(0x7fb31acc2000, 4096, PROT_READ) = 0 30058 mprotect(0x7fb31b0f2000, 4096, PROT_READ) = 0 30058 mprotect(0x7fb31b31a000, 4096, PROT_READ) = 0 30058 munmap(0x7fb31b2fe000, 104396) = 0 30058 set_tid_address(0x7fb31b2fb9d0) = 30058 30058 set_robust_list(0x7fb31b2fb9e0, 0x18) = 0 30058 futex(0x7fffce2522ac, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, NULL, 7fb31b2fb700) = -1 EAGAIN (Resource temporarily unavailable) 30058 rt_sigaction(SIGRTMIN, {0x7fb31aee1750, [], SA_RESTORER|SA_SIGINFO, 0x7fb31aeeacb0}, NULL, 8) = 0 30058 rt_sigaction(SIGRT_1, {0x7fb31aee17e0, [], SA_RESTORER|SA_RESTART|SA_SIGINFO, 0x7fb31aeeacb0}, NULL, 8) = 0 30058 rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0 30058 getrlimit(RLIMIT_STACK, {rlim_cur=10240*1024, rlim_max=RLIM_INFINITY}) = 0 30058 brk(0) = 0x1002000 30058 brk(0x1023000) = 0x1023000 30058 open("/nfs/users/nfs_j/jkb/work/cram/cramtools-2.1.jar", O_RDONLY) = 3 30058 mmap(NULL, 200704, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb31b2c9000 30058 lseek(3, -22, SEEK_END) = 5750693 30058 read(3, "PK\5\6\0\0\0\0'\17'\17\220\201\5\0\25>R\0\0\0", 22) = 22 30058 lseek(3, 5389845, SEEK_SET) = 5389845 30058 read(3, "PK\1\2\24\3\n\0\0\10\0\0\262`\273D\0\0\0\0\0\0\0\0\0\0\0\0\t\0\4\0\0\0\0\0\0\0\20\0\355A\0\0\0\0META-INF/\376\312\0\0PK\1\2\24\3\n\0\0\10\10\0\261`\273D\247#_g\206\0\0\0\236\0\0\0\24\0\0\0\0\0\0\0\0\0\0\0\244\201+\0\0\0META-INF/MANIFEST.MFPK\1\2\24\3\n\0\0\10\0\0\251`\273D\0\0\0\0\0\0\0\0\0\0\0\0\t\0\0\0\0\0\0\0\0\0\20\0\355A\343\0\0\0SevenZip/PK\1\2\24\3\n\0\0\10\0\0\250`\273D\0\0\0\0\0\0\0\0\0\0\0\0\25\0\0\0\0\0\0\0\0\0\20\0\355A\n\1\0\0SevenZip/Compression/PK\1\2\24\3\n\0\0\10\0\0\250`\273D\0\0\0\0\0\0\0\0\0\0\0\0\30\0\0\0\0\0\0\0\0\0\20\0\355A=\1\0\0SevenZip/Compression/LZ/PK\1\2\24\3\n\0\0\10\0\0\250`\273D\0\0\0\0\0\0\0\0\0\0\0\0\32\0\0\0\0\0\0\0\0\0\20\0\355As\1\0\0SevenZip/Compression/LZMA/PK\1\2\24\3\n\0\0\10\0\0\250`\273D\0\0\0\0\0\0\0\0\0\0\0\0 \0\0\0\0\0\0\0\0\0\20\0\355A\253\1\0\0SevenZip/Compression/RangeCoder/PK\1\2\24\3\n\0\0\10\0\0\251`\273D\0\0\0\0\0\0\0\0\0\0\0\0\4\0\0\0\0\0\0\0\0\0\20\0\355A\351\1\0\0net/PK\1\2\24\3\n\0\0\10\0\0\260`\273D\0\0\0\0\0\0\0\0\0\0\0\0\7\0\0\0\0\0\0\0\0\0\20\0\355A\v\2\0\0net/sf/PK\1\2\24\3\n\0\0\10\0\0\260`\273D\0\0\0\0\0\0\0\0\0\0\0\0\f\0\0\0\0\0\0\0\0\0\20\0\355A0\2\0\0net/sf/cram/PK\1\2\24\3\n\0\0\10\0\0\253`\273D\0\0\0\0\0\0\0\0\0\0\0\0\22\0\0\0\0\0\0\0\0\0\20\0\355AZ\2\0\0net/sf/cram/build/PK\1\2\24\3\n\0\0\10\0\0\253`\273D\0\0\0\0\0\0\0\0\0\0\0\0\17\0\0\0\0\0\0\0\0\0\20\0\355A\212\2\0\0net/sf/cram/cg/PK\1\2\24\3\n\0\0\10\0\0\254`\273D\0\0\0\0\0\0\0\0\0\0\0\0\23\0\0\0\0\0\0\0\0\0\20\0\355A\267\2\0\0net/sf/cram/common/PK\1\2\24\3\n\0\0\10\0\0\261`\273D\0\0\0\0\0\0\0\0\0\0\0\0\25\0\0\0\0\0\0\0\0\0\20\0\355A\350\2\0\0net/sf/cram/encoding/PK\1\2\24\3\n\0\0\10\0\0\256`\273D\0\0\0\0\0\0\0\0\0\0\0\0\33\0\0\0\0\0\0\0\0\0\20\0\355A\33\3\0\0net/sf/cram/encoding/arith/PK\1\2\24\3\n\0\0\10\0\0\256`\273D\0\0\0\0\0\0\0\0\0\0\0\0\33\0\0\0\0\0\0\0\0\0\20\0\355A"..., 1024) = 1024 30058 lseek(3, 43, SEEK_SET) = 43 30058 read(3, "PK\3\4\n\0\0\10\10\0\261`\273D\247#_g\206\0\0\0\236\0\0\0\24\0\0\0", 30) = 30 30058 munmap(0x7fb31b2c9000, 200704) = 0 30058 lseek(3, 93, SEEK_SET) = 93 30058 read(3, "E\214\275\n\3020\24F\367@\336!/pC\222\266\0242\266]\34\n\16\342~\325\24\3\371\221\336\253\340\333\33\4q9\303w\370\316\212%n\201\30\316a\247X\213WV\33)V\214\5\346\204D^\225\300\2326}\3351\353\271\341Tk\")\276\26\216\310w\257\244\230\23611Lo\257^x\213Y\212C~\244\220Ca\344\226\375\347\235\266pq\335\370\273,\310\241\255\306\366`\6p\243\262\316\233\301w\275\24R|\0", 134) = 134 30058 close(3) = 0 30058 readlink("/proc/self/exe", "/software/jdk1.7.0_25/bin/java", 4096) = 30 30058 access("/software/jdk1.7.0_25/lib/amd64/libjava.so", F_OK) = -1 ENOENT (No such file or directory) 30058 access("/software/jdk1.7.0_25/jre/lib/amd64/libjava.so", F_OK) = 0 30058 open("/software/jdk1.7.0_25/jre/lib/amd64/jvm.cfg", O_RDONLY) = 3 30058 fstat(3, {st_mode=S_IFREG|0755, st_size=677, ...}) = 0 30058 mmap(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb31b310000 30058 read(3, "# Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.\n# ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.\n#\n#\n#\n#\n#\n#\n#\n#\n#\n#\n#\n#\n#\n#\n#\n#\n#\n#\n#\n#\n#\n# \n# List of JVMs that can be used as an option to java, javac, etc.\n# Order is important -- first in this list is the default JVM.\n# NOTE that this both this file and its format are UNSUPPORTED and\n# WILL GO AWAY in a future release.\n#\n# You may also select a JVM in an arbitrary location with the\n# \"-XXaltjvm=\" option, but that too is unsupported\n# and may not be available in a future release.\n#\n-server KNOWN\n-client IGNORE\n-hotspot ERROR\n-classic WARN\n-native ERROR\n-green ERROR\n", 32768) = 677 30058 read(3, "", 32768) = 0 30058 close(3) = 0 30058 munmap(0x7fb31b310000, 32768) = 0 30058 stat("/software/jdk1.7.0_25/jre/lib/amd64/server/libjvm.so", {st_mode=S_IFREG|0755, st_size=13506920, ...}) = 0 30058 getgid() = 1077 30058 getegid() = 1077 30058 getuid() = 205 30058 geteuid() = 205 30058 futex(0x7fb31acc30b0, FUTEX_WAKE_PRIVATE, 2147483647) = 0 30058 open("/software/jdk1.7.0_25/jre/lib/amd64/server/libjvm.so", O_RDONLY|O_CLOEXEC) = 3 30058 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0p\227\31\0\0\0\0\0@\0\0\0\0\0\0\0\360\246\256\0\0\0\0\0\0\0\0\0@\0008\0\7\0@\0\"\0\37\0\1\0\0\0\5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0p\16\244\0\0\0\0\0p\16\244\0\0\0\0\0\0\0 \0\0\0\0\0\1\0\0\0\6\0\0\0\0\20\244\0\0\0\0\0\0\20\304\0\0\0\0\0\0\20\304\0\0\0\0\0@*\n\0\0\0\0\0\250\350\r\0\0\0\0\0\0\0 \0\0\0\0\0\2\0\0\0\6\0\0\0\0\245\253\0\0\0\0\0\0\245\313\0\0\0\0\0\0\245\313\0\0\0\0\0\0\2\0\0\0\0\0\0\0\2\0\0\0\0\0\0\10\0\0\0\0\0\0\0\4\0\0\0\4\0\0\0\310\1\0\0\0\0\0\0\310\1\0\0\0\0\0\0\310\1\0\0\0\0\0\0$\0\0\0\0\0\0\0$\0\0\0\0\0\0\0\4\0\0\0\0\0\0\0\7\0\0\0\4\0\0\0\0\20\244\0\0\0\0\0\0\20\304\0\0\0\0\0\0\20\304\0\0\0\0\0\0\0\0\0\0\0\0\0\20\0\0\0\0\0\0\0\10\0\0\0\0\0\0\0P\345td\4\0\0\0$\262\222\0\0\0\0\0$\262\222\0\0\0\0\0$\262\222\0\0\0\0\0\\@\3\0\0\0\0\0\\@\3\0\0\0\0\0\4\0\0\0\0\0\0\0Q\345td\6\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10\0\0\0\0\0\0\0\4\0\0\0\24\0\0\0\3\0\0\0GNU\0W\26GrO\217\276\364\325\247V*|X\254q-\322f\307\0\0\0\0u\3\0\0\315\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0H\1\0\0\240\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0-\0\0\0\0\0\0\0\0\0\0\0X\0\0\0\265\1\0\0x\0\0\0004\1\0\0\0\0\0\0\311\1\0\0\0\0\0\0\222\0\0\0j\0\0\0\315\0\0\0\0\0\0\0~\1\0\0m\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0b\0\0\0\237\1\0\0\0\0\0\0\306\1\0\0\24\0\0\0\0\0\0\0\0\0\0\0\22\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\267\0\0\0\226\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\363\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\205\1\0\0\0\0\0\0\7\1\0\0d\1\0\0\0\0\0\0\10\0\0\0\225\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\36\1\0\0D\1\0\0\371\0\0\0Z\1\0\0\230\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0D\0\0\0@\0\0\0\0\0\0\0\\\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", 832) = 832 30058 fstat(3, {st_mode=S_IFREG|0755, st_size=13506920, ...}) = 0 30058 mmap(NULL, 13760680, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fb3199e0000 30058 mprotect(0x7fb31a421000, 2097152, PROT_NONE) = 0 30058 mmap(0x7fb31a621000, 667648, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xa41000) = 0x7fb31a621000 30058 mmap(0x7fb31a6c4000, 243880, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fb31a6c4000 30058 close(3) = 0 30058 open("/software/jdk1.7.0_25/bin/../jre/lib/amd64/jli/libm.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) 30058 open("/usr/local/lsf/9.1/linux2.6-glibc2.3-x86_64/lib/libm.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) 30058 open("/nfs/users/nfs_j/jkb/sys/Linux_x86_64/lib/libm.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) 30058 open("/software/oracle-ic-11.2/libm.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) 30058 open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3 30058 fstat(3, {st_mode=S_IFREG|0644, st_size=104396, ...}) = 0 30058 mmap(NULL, 104396, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7fb31b2fe000 30058 close(3) = 0 30058 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) 30058 open("/lib/x86_64-linux-gnu/libm.so.6", O_RDONLY|O_CLOEXEC) = 3 30058 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0pU\0\0\0\0\0\0@\0\0\0\0\0\0\0\360\261\17\0\0\0\0\0\0\0\0\0@\0008\0\t\0@\0\36\0\35\0\6\0\0\0\5\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0\370\1\0\0\0\0\0\0\370\1\0\0\0\0\0\0\10\0\0\0\0\0\0\0\3\0\0\0\4\0\0\0 4\17\0\0\0\0\0 4\17\0\0\0\0\0 4\17\0\0\0\0\0\34\0\0\0\0\0\0\0\34\0\0\0\0\0\0\0\20\0\0\0\0\0\0\0\1\0\0\0\5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0(\251\17\0\0\0\0\0(\251\17\0\0\0\0\0\0\0 \0\0\0\0\0\1\0\0\0\6\0\0\0\320\254\17\0\0\0\0\0\320\254/\0\0\0\0\0\320\254/\0\0\0\0\0\4\4\0\0\0\0\0\0X\4\0\0\0\0\0\0\0\0 \0\0\0\0\0\2\0\0\0\6\0\0\0\370\254\17\0\0\0\0\0\370\254/\0\0\0\0\0\370\254/\0\0\0\0\0\320\1\0\0\0\0\0\0\320\1\0\0\0\0\0\0\10\0\0\0\0\0\0\0\4\0\0\0\4\0\0\0008\2\0\0\0\0\0\0008\2\0\0\0\0\0\0008\2\0\0\0\0\0\0D\0\0\0\0\0\0\0D\0\0\0\0\0\0\0\4\0\0\0\0\0\0\0P\345td\4\0\0\0<4\17\0\0\0\0\0<4\17\0\0\0\0\0<4\17\0\0\0\0\0\334\21\0\0\0\0\0\0\334\21\0\0\0\0\0\0\4\0\0\0\0\0\0\0Q\345td\6\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10\0\0\0\0\0\0\0R\345td\4\0\0\0\320\254\17\0\0\0\0\0\320\254/\0\0\0\0\0\320\254/\0\0\0\0\0000\3\0\0\0\0\0\0000\3\0\0\0\0\0\0\1\0\0\0\0\0\0\0\4\0\0\0\24\0\0\0\3\0\0\0GNU\0\201z\251\233=\320%\1\370\274\4\243\351\2515\212\10\362\r}\4\0\0\0\20\0\0\0\1\0\0\0GNU\0\0\0\0\0\2\0\0\0\6\0\0\0\30\0\0\0\0\0\0\0\10\3\0\0\21\0\0\0@\0\0\0\f\0\0\0%\0`\0\0\240.\"\200\0\26\211\0 E\"\2\0\300``i\10\212\0\t\0\0\0\0\0\0\0\0\0\0\0\0\212P\20\1\10\0\0\4\1\302\24\1 \210\"\0\304\243X\240\n\6\216\0\212\0\0\4\0@\0\0 \20\0\5\0\5\r\7\7\22A\0\1\0\10\0\0@\0\t\0\20\4D\30\4\200a(\22@\4\1\nE\221 @\200\f\22\1\0\0\0\0\0\0\0\0\4\2\0\0\0@\0\200\2\20\322\0\1\10\4\301 E\1\0\310\"\0\4\2\0\202\0\4\0\0\0\4\0Y\4\2\0\n\200\1\0\0\4\0\20 \3\0\0\210 \10\20\0\0", 832) = 832 30058 fstat(3, {st_mode=S_IFREG|0644, st_size=1030512, ...}) = 0 30058 mmap(NULL, 3125544, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fb3196e4000 30058 mprotect(0x7fb3197df000, 2093056, PROT_NONE) = 0 30058 mmap(0x7fb3199de000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xfa000) = 0x7fb3199de000 30058 close(3) = 0 30058 mprotect(0x7fb3199de000, 4096, PROT_READ) = 0 30058 munmap(0x7fb31b2fe000, 104396) = 0 30058 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7fb31b1f9000 30058 mprotect(0x7fb31b1f9000, 4096, PROT_NONE) = 0 30058 clone(child_stack=0x7fb31b2f8ff0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7fb31b2f99d0, tls=0x7fb31b2f9700, child_tidptr=0x7fb31b2f99d0) = 30059 30059 set_robust_list(0x7fb31b2f99e0, 0x18 30058 futex(0x7fb31b2f99d0, FUTEX_WAIT, 30059, NULL 30059 <... set_robust_list resumed> ) = 0 30059 open("/sys/devices/system/cpu/online", O_RDONLY|O_CLOEXEC) = 3 30059 read(3, "0-31\n", 8192) = 5 30059 close(3) = 0 30059 mmap(NULL, 134217728, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x7fb3116e4000 30059 munmap(0x7fb3116e4000, 43106304) = 0 30059 munmap(0x7fb318000000, 24002560) = 0 30059 mprotect(0x7fb314000000, 135168, PROT_READ|PROT_WRITE) = 0 30059 openat(AT_FDCWD, "/sys/devices/system/cpu", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 3 30059 getdents(3, /* 44 entries */, 32768) = 1344 30059 getdents(3, /* 0 entries */, 32768) = 0 30059 close(3) = 0 30059 open("/proc/meminfo", O_RDONLY|O_CLOEXEC) = 3 30059 fstat(3, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0 30059 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb31b317000 30059 read(3, "MemTotal: 49523852 kB\nMemFree: 28519412 kB\nBuffers: 632 kB\nCached: 14320516 kB\nSwapCached: 19544 kB\nActive: 13083892 kB\nInactive: 4802424 kB\nActive(anon): 3554336 kB\nInactive(anon): 14288 kB\nActive(file): 9529556 kB\nInactive(file): 4788136 kB\nUnevictable: 14772 kB\nMlocked: 14772 kB\nSwapTotal: 33554424 kB\nSwapFree: 33207392 kB\nDirty: 60 kB\nWriteback: 0 kB\nAnonPages: 3571196 kB\nMapped: 57692 kB\nShmem: 64 kB\nSlab: 1873708 kB\nSReclaimable: 458976 kB\nSUnreclaim: 1414732 kB\nKernelStack: 7656 kB\nPageTables: 20856 kB\nNFS_Unstable: 0 kB\nBounce: 0 kB\nWritebackTmp: 0 kB\nCommitLimit: 83078276 kB\nCommitted_AS: 6506296 kB\nVmallocTotal: 34359738367 kB\nVmallocUsed: 447180 kB\nVmallocChunk: 34333097552 kB\nHardwareCorrupted: 0 kB\nHugePages_Total: 0\nHugePages_Free: "..., 1024) = 1024 30059 close(3) = 0 30059 munmap(0x7fb31b317000, 4096) = 0 30059 open("/software/jdk1.7.0_25/bin/../jre/lib/amd64/jli/librt.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) 30059 open("/usr/local/lsf/9.1/linux2.6-glibc2.3-x86_64/lib/librt.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) 30059 open("/nfs/users/nfs_j/jkb/sys/Linux_x86_64/lib/librt.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) 30059 open("/software/oracle-ic-11.2/librt.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) 30059 open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3 30059 fstat(3, {st_mode=S_IFREG|0644, st_size=104396, ...}) = 0 30059 mmap(NULL, 104396, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7fb31b2fe000 30059 close(3) = 0 30059 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) 30059 open("/lib/x86_64-linux-gnu/librt.so.1", O_RDONLY|O_CLOEXEC) = 3 30059 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\340!\0\0\0\0\0\0@\0\0\0\0\0\0\0\310s\0\0\0\0\0\0\0\0\0\0@\0008\0\t\0@\0!\0 \0\6\0\0\0\5\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0\370\1\0\0\0\0\0\0\370\1\0\0\0\0\0\0\10\0\0\0\0\0\0\0\3\0\0\0\4\0\0\0\340Z\0\0\0\0\0\0\340Z\0\0\0\0\0\0\340Z\0\0\0\0\0\0\34\0\0\0\0\0\0\0\34\0\0\0\0\0\0\0\20\0\0\0\0\0\0\0\1\0\0\0\5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\224l\0\0\0\0\0\0\224l\0\0\0\0\0\0\0\0 \0\0\0\0\0\1\0\0\0\6\0\0\0\210m\0\0\0\0\0\0\210m \0\0\0\0\0\210m \0\0\0\0\0\354\4\0\0\0\0\0\0\320\16\0\0\0\0\0\0\0\0 \0\0\0\0\0\2\0\0\0\6\0\0\0\300m\0\0\0\0\0\0\300m \0\0\0\0\0\300m \0\0\0\0\0\360\1\0\0\0\0\0\0\360\1\0\0\0\0\0\0\10\0\0\0\0\0\0\0\4\0\0\0\4\0\0\0008\2\0\0\0\0\0\0008\2\0\0\0\0\0\0008\2\0\0\0\0\0\0D\0\0\0\0\0\0\0D\0\0\0\0\0\0\0\4\0\0\0\0\0\0\0P\345td\4\0\0\0\374Z\0\0\0\0\0\0\374Z\0\0\0\0\0\0\374Z\0\0\0\0\0\0T\2\0\0\0\0\0\0T\2\0\0\0\0\0\0\4\0\0\0\0\0\0\0Q\345td\6\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10\0\0\0\0\0\0\0R\345td\4\0\0\0\210m\0\0\0\0\0\0\210m \0\0\0\0\0\210m \0\0\0\0\0x\2\0\0\0\0\0\0x\2\0\0\0\0\0\0\1\0\0\0\0\0\0\0\4\0\0\0\24\0\0\0\3\0\0\0GNU\0005,[7:P\346\304\253\210\32]\266\365vo\337\201\356\340\4\0\0\0\20\0\0\0\1\0\0\0GNU\0\0\0\0\0\2\0\0\0\6\0\0\0\30\0\0\0\0\0\0\0b\0\0\0@\0\0\0\10\0\0\0\t\0\0\0\1\0\204!0\0\10@\0\20P\213\340\6\22 \0\10\202@\0(\200 \t\3\0\4@\1@#\2\20\0\2\240\4 \0\10\0\0\2\0\4\0\200\210\206D\20\0\0\20\4P\20\2\322\4\1\4\206\0\0\0\0\0\0\0\0@\0\0\0A\0\0\0B\0\0\0\0\0\0\0C\0\0\0\0\0\0\0D\0\0\0\0\0\0\0F\0\0\0G\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0I\0\0\0\0\0\0\0J\0\0\0", 832) = 832 30059 fstat(3, {st_mode=S_IFREG|0644, st_size=31752, ...}) = 0 30059 mmap(NULL, 2128984, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fb3194dc000 30059 mprotect(0x7fb3194e3000, 2093056, PROT_NONE) = 0 30059 mmap(0x7fb3196e2000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x6000) = 0x7fb3196e2000 30059 close(3) = 0 30059 mprotect(0x7fb3196e2000, 4096, PROT_READ) = 0 30059 munmap(0x7fb31b2fe000, 104396) = 0 30059 clock_getres(CLOCK_MONOTONIC, {0, 1}) = 0 30059 lstat("/software", {st_mode=S_IFDIR|0755, st_size=20480, ...}) = 0 30059 lstat("/software/jdk1.7.0_25", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 30059 lstat("/software/jdk1.7.0_25/jre", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 30059 lstat("/software/jdk1.7.0_25/jre/lib", {st_mode=S_IFDIR|0755, st_size=8192, ...}) = 0 30059 lstat("/software/jdk1.7.0_25/jre/lib/amd64", {st_mode=S_IFDIR|0755, st_size=8192, ...}) = 0 30059 lstat("/software/jdk1.7.0_25/jre/lib/amd64/server", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 30059 lstat("/software/jdk1.7.0_25/jre/lib/amd64/server/libjvm.so", {st_mode=S_IFREG|0755, st_size=13506920, ...}) = 0 30059 open("/software/jdk1.7.0_25/jre/lib/amd64/libverify.so", O_RDONLY|O_CLOEXEC) = 3 30059 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0@B\0\0\0\0\0\0@\0\0\0\0\0\0\0\310\340\0\0\0\0\0\0\0\0\0\0@\0008\0\6\0@\0\37\0\34\0\1\0\0\0\5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0D\314\0\0\0\0\0\0D\314\0\0\0\0\0\0\0\0 \0\0\0\0\0\1\0\0\0\6\0\0\0H\314\0\0\0\0\0\0H\314 \0\0\0\0\0H\314 \0\0\0\0\0H\22\0\0\0\0\0\0`\22\0\0\0\0\0\0\0\0 \0\0\0\0\0\2\0\0\0\6\0\0\0\350\332\0\0\0\0\0\0\350\332 \0\0\0\0\0\350\332 \0\0\0\0\0\360\1\0\0\0\0\0\0\360\1\0\0\0\0\0\0\10\0\0\0\0\0\0\0\4\0\0\0\4\0\0\0\220\1\0\0\0\0\0\0\220\1\0\0\0\0\0\0\220\1\0\0\0\0\0\0$\0\0\0\0\0\0\0$\0\0\0\0\0\0\0\4\0\0\0\0\0\0\0P\345td\4\0\0\0\354\305\0\0\0\0\0\0\354\305\0\0\0\0\0\0\354\305\0\0\0\0\0\0$\1\0\0\0\0\0\0$\1\0\0\0\0\0\0\4\0\0\0\0\0\0\0Q\345td\6\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10\0\0\0\0\0\0\0\4\0\0\0\24\0\0\0\3\0\0\0GNU\0\330\355\327\361!\f\364s~\324\202Nar)U\353\243\3\221\0\0\0\0j\0\0\0008\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\r\0\0\0\16\0\0\0\0\0\0\0\27\0\0\0\3\0\0\0\0\0\0\0\f\0\0\0\0\0\0\0\0\0\0\0(\0\0\0\0\0\0\0\24\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0004\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0*\0\0\0\30\0\0\0005\0\0\0006\0\0\0\0\0\0\0+\0\0\0\0\0\0\0\v\0\0\0\0\0\0\0\22\0\0\0/\0\0\0\0\0\0\0003\0\0\0\5\0\0\0\0\0\0\0\32\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0%\0\0\0\"\0\0\0\0\0\0\0\0\0\0\0!\0\0\0-\0\0\0'\0\0\0\0\0\0\0\0\0\0\0\34\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0,\0\0\0 \0\0\0\31\0\0\0\35\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0001\0\0\0002\0\0\0#\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\t\0\0\0\0\0\0\0\2\0\0\0\17\0\0\0000\0\0\0\0\0\0\0\21\0\0\0.\0\0\0\0\0\0\0\0\0\0\0$\0\0\0\0\0\0\0\6\0\0\0)\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\7\0\0\0\0\0\0\0\0\0\0\0", 832) = 832 30059 fstat(3, {st_mode=S_IFREG|0755, st_size=65437, ...}) = 0 30059 mmap(NULL, 2154152, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fb3192ce000 30059 mprotect(0x7fb3192db000, 2093056, PROT_NONE) = 0 30059 mmap(0x7fb3194da000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xc000) = 0x7fb3194da000 30059 close(3) = 0 30059 open("/software/jdk1.7.0_25/jre/lib/amd64/libjava.so", O_RDONLY|O_CLOEXEC) = 3 30059 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\240\317\0\0\0\0\0\0@\0\0\0\0\0\0\0\210\272\2\0\0\0\0\0\0\0\0\0@\0008\0\6\0@\0\37\0\34\0\1\0\0\0\5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\264\212\2\0\0\0\0\0\264\212\2\0\0\0\0\0\0\0 \0\0\0\0\0\1\0\0\0\6\0\0\0\0\220\2\0\0\0\0\0\0\220\"\0\0\0\0\0\0\220\"\0\0\0\0\0\10\27\0\0\0\0\0\0P\31\0\0\0\0\0\0\0\0 \0\0\0\0\0\2\0\0\0\6\0\0\0P\220\2\0\0\0\0\0P\220\"\0\0\0\0\0P\220\"\0\0\0\0\0\20\2\0\0\0\0\0\0\20\2\0\0\0\0\0\0\10\0\0\0\0\0\0\0\4\0\0\0\4\0\0\0\220\1\0\0\0\0\0\0\220\1\0\0\0\0\0\0\220\1\0\0\0\0\0\0$\0\0\0\0\0\0\0$\0\0\0\0\0\0\0\4\0\0\0\0\0\0\0P\345td\4\0\0\0\230S\2\0\0\0\0\0\230S\2\0\0\0\0\0\230S\2\0\0\0\0\0l\n\0\0\0\0\0\0l\n\0\0\0\0\0\0\4\0\0\0\0\0\0\0Q\345td\6\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10\0\0\0\0\0\0\0\4\0\0\0\24\0\0\0\3\0\0\0GNU\0u\r\303\23=\230\22\177\33\372\0241\271\3579!\1\343+\301\0\0\0\0\235\3\0\0\336\1\0\0\3\1\0\0\0\0\0\0\344\0\0\0{\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\267\0\0\0\0\0\0\0\0\0\0\0002\1\0\0\0\0\0\0m\0\0\0W\1\0\0B\1\0\0Y\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\265\1\0\0\310\1\0\0\0\0\0\0\0\0\0\0\256\1\0\0F\1\0\0\0\0\0\0\261\0\0\0\222\0\0\0\0\0\0\0\317\0\0\0 \1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\233\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\332\0\0\0\0\0\0\0\0\0\0\0T\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0u\1\0\0\0\0\0\0\0\0\0\0h\0\0\0007\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\17\1\0\0\0\0\0\0\35\1\0\0009\0\0\0\0\0\0\0004\1\0\0\0\0\0\0\362\0\0\0\0\0\0\0N\0\0\0\336\0\0\0\345\0\0\0\0\0\0\0t\0\0\0\0\0\0\0Y\0\0\0$\1\0\0\0\0\0\0\0\0\0\0\234\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\254\1\0\0\16\0\0\0\204\0\0\0\273\0\0\0\0\0\0\0\0\0\0\0(\1\0\0\0\0\0\0\310\0\0\0*\0\0\0\0\0\0\0<\0\0\0\0\0\0\0\0\0\0\0", 832) = 832 30059 fstat(3, {st_mode=S_IFREG|0755, st_size=219648, ...}) = 0 30059 mmap(NULL, 2271568, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fb3190a3000 30059 mprotect(0x7fb3190cc000, 2097152, PROT_NONE) = 0 30059 mmap(0x7fb3192cc000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x29000) = 0x7fb3192cc000 30059 close(3) = 0 30059 stat(".hotspotrc", 0x7fb31b2f8ab0) = -1 ENOENT (No such file or directory) 30059 openat(AT_FDCWD, "/software/jdk1.7.0_25/jre/lib/endorsed", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = -1 ENOENT (No such file or directory) 30059 stat("/software/jdk1.7.0_25/jre/lib/amd64/xawt/libmawt.so", {st_mode=S_IFREG|0755, st_size=426162, ...}) = 0 30059 clock_getres(0xfffc54a6 /* CLOCK_??? */, {0, 1}) = 0 30059 mmap(NULL, 4096, PROT_READ, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb31b317000 30059 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb31b316000 30059 open("/proc/meminfo", O_RDONLY) = 3 30059 fstat(3, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0 30059 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb31b315000 30059 read(3, "MemTotal: 49523852 kB\nMemFree: 28519412 kB\nBuffers: 632 kB\nCached: 14320516 kB\nSwapCached: 19544 kB\nActive: 13083892 kB\nInactive: 4802424 kB\nActive(anon): 3554336 kB\nInactive(anon): 14288 kB\nActive(file): 9529556 kB\nInactive(file): 4788136 kB\nUnevictable: 14772 kB\nMlocked: 14772 kB\nSwapTotal: 33554424 kB\nSwapFree: 33207392 kB\nDirty: 60 kB\nWriteback: 0 kB\nAnonPages: 3571196 kB\nMapped: 57692 kB\nShmem: 64 kB\nSlab: 1873708 kB\nSReclaimable: 458976 kB\nSUnreclaim: 1414732 kB\nKernelStack: 7656 kB\nPageTables: 20856 kB\nNFS_Unstable: 0 kB\nBounce: 0 kB\nWritebackTmp: 0 kB\nCommitLimit: 83078276 kB\nCommitted_AS: 6506296 kB\nVmallocTotal: 34359738367 kB\nVmallocUsed: 447180 kB\nVmallocChunk: 34333097552 kB\nHardwareCorrupted: 0 kB\nHugePages_Total: 0\nHugePages_Free: "..., 1024) = 1024 30059 read(3, " 0\nHugePages_Surp: 0\nHugepagesize: 2048 kB\nDirectMap4k: 8056 kB\nDirectMap2M: 3102720 kB\nDirectMap1G: 47185920 kB\n", 1024) = 146 30059 close(3) = 0 30059 munmap(0x7fb31b315000, 4096) = 0 30059 mmap(NULL, 2097152, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|0x40000, -1, 0) = -1 ENOMEM (Cannot allocate memory) 30059 open("/proc/self/coredump_filter", O_RDWR) = 3 30059 fstat(3, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0 30059 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb31b315000 30059 read(3, "00000023\n", 1024) = 9 30059 lseek(3, 0, SEEK_SET) = 0 30059 write(3, "0x63", 4) = 4 30059 close(3) = 0 30059 munmap(0x7fb31b315000, 4096) = 0 30059 rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0 30059 rt_sigaction(SIGUSR2, {0x7fb31a11ed20, [], SA_RESTORER|SA_RESTART|SA_SIGINFO, 0x7fb31aeeacb0}, NULL, 8) = 0 30059 rt_sigaction(SIGHUP, NULL, {SIG_DFL, [], 0}, 8) = 0 30059 rt_sigaction(SIGINT, NULL, {SIG_DFL, [], 0}, 8) = 0 30059 rt_sigaction(SIGTERM, NULL, {SIG_DFL, [], 0}, 8) = 0 30059 rt_sigaction(SIGSEGV, NULL, {SIG_DFL, [], 0}, 8) = 0 30059 rt_sigaction(SIGSEGV, {0x7fb31a11f3d0, ~[RTMIN RT_1], SA_RESTORER|SA_RESTART|SA_SIGINFO, 0x7fb31aeeacb0}, {SIG_DFL, [], 0}, 8) = 0 30059 rt_sigaction(SIGPIPE, NULL, {SIG_DFL, [], 0}, 8) = 0 30059 rt_sigaction(SIGPIPE, {0x7fb31a11f3d0, ~[RTMIN RT_1], SA_RESTORER|SA_RESTART|SA_SIGINFO, 0x7fb31aeeacb0}, {SIG_DFL, [], 0}, 8) = 0 30059 rt_sigaction(SIGBUS, NULL, {SIG_DFL, [], 0}, 8) = 0 30059 rt_sigaction(SIGBUS, {0x7fb31a11f3d0, ~[RTMIN RT_1], SA_RESTORER|SA_RESTART|SA_SIGINFO, 0x7fb31aeeacb0}, {SIG_DFL, [], 0}, 8) = 0 30059 rt_sigaction(SIGILL, NULL, {SIG_DFL, [], 0}, 8) = 0 30059 rt_sigaction(SIGILL, {0x7fb31a11f3d0, ~[RTMIN RT_1], SA_RESTORER|SA_RESTART|SA_SIGINFO, 0x7fb31aeeacb0}, {SIG_DFL, [], 0}, 8) = 0 30059 rt_sigaction(SIGFPE, NULL, {SIG_DFL, [], 0}, 8) = 0 30059 rt_sigaction(SIGFPE, {0x7fb31a11f3d0, ~[RTMIN RT_1], SA_RESTORER|SA_RESTART|SA_SIGINFO, 0x7fb31aeeacb0}, {SIG_DFL, [], 0}, 8) = 0 30059 rt_sigaction(SIGXFSZ, NULL, {SIG_DFL, [], 0}, 8) = 0 30059 rt_sigaction(SIGXFSZ, {0x7fb31a11f3d0, ~[RTMIN RT_1], SA_RESTORER|SA_RESTART|SA_SIGINFO, 0x7fb31aeeacb0}, {SIG_DFL, [], 0}, 8) = 0 30059 getrlimit(RLIMIT_STACK, {rlim_cur=10240*1024, rlim_max=RLIM_INFINITY}) = 0 30059 open("/proc/self/maps", O_RDONLY) = 3 30059 fstat(3, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0 30059 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb31b315000 30059 read(3, "00400000-00401000 r-xp 00000000 00:22 11201423 /software/jdk1.7.0_25/bin/java\n00600000-00601000 rw-p 00000000 00:22 11201423 /software/jdk1.7.0_25/bin/java\n01002000-01023000 rw-p 00000000 00:00 0 [heap]\n7fb314000000-7fb314021000 rw-p 00000000 00:00 0 \n7fb314021000-7fb318000000 ---p 00000000 00:00 0 \n7fb3190a3000-7fb3190cc000 r-xp 00000000 00:22 13621049 /software/jdk1.7.0_25/jre/lib/amd64/libjava.so\n7fb3190cc000-7fb3192cc000 ---p 00029000 00:22 13621049 /software/jdk1.7.0_25/jre/lib/amd64/libjava.so\n7fb3192cc000-7fb3192ce000 rw-p 00029000 00:22 13621049 /software/jdk1.7.0_25/jre/lib/amd64/libjava.so\n7fb3192ce000-7fb3192db000 r-xp 00000000 00:22 8934988 /software/jdk1.7.0_25/jre/lib/amd64/libverify.so\n7fb3192db000-7fb3194da000 ---p 0000d000 00:22 8934988 /software/jdk1.7.0_25/jre/lib/amd64/libverify.so\n7fb3194da0"..., 1024) = 1024 30059 read(3, "0c000 00:22 8934988 /software/jdk1.7.0_25/jre/lib/amd64/libverify.so\n7fb3194dc000-7fb3194e3000 r-xp 00000000 08:06 251677704 /lib/x86_64-linux-gnu/librt-2.15.so\n7fb3194e3000-7fb3196e2000 ---p 00007000 08:06 251677704 /lib/x86_64-linux-gnu/librt-2.15.so\n7fb3196e2000-7fb3196e3000 r--p 00006000 08:06 251677704 /lib/x86_64-linux-gnu/librt-2.15.so\n7fb3196e3000-7fb3196e4000 rw-p 00007000 08:06 251677704 /lib/x86_64-linux-gnu/librt-2.15.so\n7fb3196e4000-7fb3197df000 r-xp 00000000 08:06 251677712 /lib/x86_64-linux-gnu/libm-2.15.so\n7fb3197df000-7fb3199de000 ---p 000fb000 08:06 251677712 /lib/x86_64-linux-gnu/libm-2.15.so\n7fb3199de000-7fb3199df000 r--p 000fa000 08:06 251677712 /lib/x86_64-linux-gnu/libm-2.15.so\n7fb3199df000-7fb3199e0000 rw-p 000fb000 08:06 251677712 /lib/x86_64-linux-gnu/libm-2.15.so\n7fb3199e0000-7fb31a421000 r-xp 00000000 00:2"..., 1024) = 1024 30059 read(3, " /software/jdk1.7.0_25/jre/lib/amd64/server/libjvm.so\n7fb31a421000-7fb31a621000 ---p 00a41000 00:22 13621056 /software/jdk1.7.0_25/jre/lib/amd64/server/libjvm.so\n7fb31a621000-7fb31a6c4000 rw-p 00a41000 00:22 13621056 /software/jdk1.7.0_25/jre/lib/amd64/server/libjvm.so\n7fb31a6c4000-7fb31a700000 rw-p 00000000 00:00 0 \n7fb31a700000-7fb31a8b5000 r-xp 00000000 08:06 251677705 /lib/x86_64-linux-gnu/libc-2.15.so\n7fb31a8b5000-7fb31aab5000 ---p 001b5000 08:06 251677705 /lib/x86_64-linux-gnu/libc-2.15.so\n7fb31aab5000-7fb31aab9000 r--p 001b5000 08:06 251677705 /lib/x86_64-linux-gnu/libc-2.15.so\n7fb31aab9000-7fb31aabb000 rw-p 001b9000 08:06 251677705 /lib/x86_64-linux-gnu/libc-2.15.so\n7fb31aabb000-7fb31aac0000 rw-p 00000000 00:00 0 \n7fb31aac0000-7fb31aac2000 r-xp 00000000 08:06 251677702 /lib/x86_64-linux-gnu/libdl-2.15.so\n7fb31aac2000-7fb31acc2000 ---p 00002000 08:06 25167"..., 1024) = 1024 30059 read(3, "ib/x86_64-linux-gnu/libdl-2.15.so\n7fb31acc2000-7fb31acc3000 r--p 00002000 08:06 251677702 /lib/x86_64-linux-gnu/libdl-2.15.so\n7fb31acc3000-7fb31acc4000 rw-p 00003000 08:06 251677702 /lib/x86_64-linux-gnu/libdl-2.15.so\n7fb31acc4000-7fb31acda000 r-xp 00000000 00:22 20139911 /software/jdk1.7.0_25/jre/lib/amd64/jli/libjli.so\n7fb31acda000-7fb31aeda000 ---p 00016000 00:22 20139911 /software/jdk1.7.0_25/jre/lib/amd64/jli/libjli.so\n7fb31aeda000-7fb31aedb000 rw-p 00016000 00:22 20139911 /software/jdk1.7.0_25/jre/lib/amd64/jli/libjli.so\n7fb31aedb000-7fb31aef3000 r-xp 00000000 08:06 251664577 /lib/x86_64-linux-gnu/libpthread-2.15.so\n7fb31aef3000-7fb31b0f2000 ---p 00018000 08:06 251664577 /lib/x86_64-linux-gnu/libpthread-2.15.so\n7fb31b0f2000-7fb31b0f3000 r--p 00017000 08:06 251664577 /lib/x86_64-linux-gnu/libpthread-2.15.so\n7fb31b0f3000-7fb31b0f4000 rw-p 000180"..., 1024) = 1024 30059 read(3, " /lib/x86_64-linux-gnu/libpthread-2.15.so\n7fb31b0f4000-7fb31b0f8000 rw-p 00000000 00:00 0 \n7fb31b0f8000-7fb31b11a000 r-xp 00000000 08:06 251664581 /lib/x86_64-linux-gnu/ld-2.15.so\n7fb31b1f9000-7fb31b1fa000 ---p 00000000 00:00 0 \n7fb31b1fa000-7fb31b2fe000 rw-p 00000000 00:00 0 \n7fb31b315000-7fb31b317000 rw-p 00000000 00:00 0 \n7fb31b317000-7fb31b318000 r--p 00000000 00:00 0 \n7fb31b318000-7fb31b31a000 rw-p 00000000 00:00 0 \n7fb31b31a000-7fb31b31b000 r--p 00022000 08:06 251664581 /lib/x86_64-linux-gnu/ld-2.15.so\n7fb31b31b000-7fb31b31d000 rw-p 00023000 08:06 251664581 /lib/x86_64-linux-gnu/ld-2.15.so\n7fffce240000-7fffce255000 rw-p 00000000 00:00 0 [stack]\n7fffce3ff000-7fffce400000 r-xp 00000000 00:00 0 [vdso]\nffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 [vsyscall]\n", 1024) = 910 30059 close(3) = 0 30059 munmap(0x7fb31b315000, 4096) = 0 30059 getrlimit(RLIMIT_NOFILE, {rlim_cur=128*1024, rlim_max=128*1024}) = 0 30059 setrlimit(RLIMIT_NOFILE, {rlim_cur=128*1024, rlim_max=128*1024}) = 0 30059 geteuid() = 205 30059 socket(PF_FILE, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0) = 3 30059 connect(3, {sa_family=AF_FILE, path="/var/run/nscd/socket"}, 110) = -1 ENOENT (No such file or directory) 30059 close(3) = 0 30059 socket(PF_FILE, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0) = 3 30059 connect(3, {sa_family=AF_FILE, path="/var/run/nscd/socket"}, 110) = -1 ENOENT (No such file or directory) 30059 close(3) = 0 30059 open("/etc/nsswitch.conf", O_RDONLY|O_CLOEXEC) = 3 30059 fstat(3, {st_mode=S_IFREG|0644, st_size=686, ...}) = 0 30059 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb31b315000 30059 read(3, "# /etc/nsswitch.conf\n#\n# Example configuration of GNU Name Service Switch functionality.\n# If you have the `glibc-doc-reference' and `info' packages installed, try:\n# `info libc \"Name Service Switch\"' for information about this file.\n\n# pre_auth-client-config # passwd: files ldap sss\npasswd: files sss\n# pre_auth-client-config # group: files ldap sss\ngroup: files sss\n# pre_auth-client-config # shadow: files ldap\nshadow: files sss\n\nhosts: files dns\nnetworks: files\n\nprotocols: db files\nservices: db files\nethers: db files\nrpc: db files\n\n# pre_auth-client-config # netgroup: ldap sss\nnetgroup: sss\naliases:\tfiles ldap\nautomount: files ldap\n", 4096) = 686 30059 read(3, "", 4096) = 0 30059 close(3) = 0 30059 munmap(0x7fb31b315000, 4096) = 0 30059 open("/software/jdk1.7.0_25/bin/../jre/lib/amd64/jli/libnss_files.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) 30059 open("/usr/local/lsf/9.1/linux2.6-glibc2.3-x86_64/lib/libnss_files.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) 30059 open("/nfs/users/nfs_j/jkb/sys/Linux_x86_64/lib/libnss_files.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) 30059 open("/software/oracle-ic-11.2/libnss_files.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) 30059 open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3 30059 fstat(3, {st_mode=S_IFREG|0644, st_size=104396, ...}) = 0 30059 mmap(NULL, 104396, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7fb31b1df000 30059 close(3) = 0 30059 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) 30059 open("/lib/x86_64-linux-gnu/libnss_files.so.2", O_RDONLY|O_CLOEXEC) = 3 30059 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0@!\0\0\0\0\0\0@\0\0\0\0\0\0\0\30\304\0\0\0\0\0\0\0\0\0\0@\0008\0\t\0@\0\36\0\35\0\6\0\0\0\5\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0\370\1\0\0\0\0\0\0\370\1\0\0\0\0\0\0\10\0\0\0\0\0\0\0\3\0\0\0\4\0\0\0\20\234\0\0\0\0\0\0\20\234\0\0\0\0\0\0\20\234\0\0\0\0\0\0\34\0\0\0\0\0\0\0\34\0\0\0\0\0\0\0\20\0\0\0\0\0\0\0\1\0\0\0\5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\234\265\0\0\0\0\0\0\234\265\0\0\0\0\0\0\0\0 \0\0\0\0\0\1\0\0\0\6\0\0\0\260\275\0\0\0\0\0\0\260\275 \0\0\0\0\0\260\275 \0\0\0\0\0H\5\0\0\0\0\0\0\310\n\0\0\0\0\0\0\0\0 \0\0\0\0\0\2\0\0\0\6\0\0\0\330\275\0\0\0\0\0\0\330\275 \0\0\0\0\0\330\275 \0\0\0\0\0\320\1\0\0\0\0\0\0\320\1\0\0\0\0\0\0\10\0\0\0\0\0\0\0\4\0\0\0\4\0\0\0008\2\0\0\0\0\0\0008\2\0\0\0\0\0\0008\2\0\0\0\0\0\0D\0\0\0\0\0\0\0D\0\0\0\0\0\0\0\4\0\0\0\0\0\0\0P\345td\4\0\0\0,\234\0\0\0\0\0\0,\234\0\0\0\0\0\0,\234\0\0\0\0\0\0\224\2\0\0\0\0\0\0\224\2\0\0\0\0\0\0\4\0\0\0\0\0\0\0Q\345td\6\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10\0\0\0\0\0\0\0R\345td\4\0\0\0\260\275\0\0\0\0\0\0\260\275 \0\0\0\0\0\260\275 \0\0\0\0\0P\2\0\0\0\0\0\0P\2\0\0\0\0\0\0\1\0\0\0\0\0\0\0\4\0\0\0\24\0\0\0\3\0\0\0GNU\0_Ms\34\\+\02060\232\222\266\350\243\v6\204\253\305\322\4\0\0\0\20\0\0\0\1\0\0\0GNU\0\0\0\0\0\2\0\0\0\6\0\0\0\30\0\0\0\0\0\0\0k\0\0\0.\0\0\0\10\0\0\0\t\0\0\0\22F\344\25\240\245\201\0\t\10\0028\223\6\310\0\0\0z\0]\201\240Jx\2108*\220\200\0$\7!\5\24)\"\226<\0\4\0\33\0\20\2\0\0@\10\201\3100\200\200@@\206\0B\0\200\300.\0\0\0/\0\0\0\0\0\0\0000\0\0\0001\0\0\0002\0\0\0003\0\0\0004\0\0\0\0\0\0\0005\0\0\0\0\0\0\0006\0\0\0008\0\0\0009\0\0\0\0\0\0\0;\0\0\0\0\0\0\0=\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0>\0\0\0@\0\0\0\0\0\0\0A\0\0\0", 832) = 832 30059 fstat(3, {st_mode=S_IFREG|0644, st_size=52120, ...}) = 0 30059 mmap(NULL, 2148472, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fb318e96000 30059 mprotect(0x7fb318ea2000, 2093056, PROT_NONE) = 0 30059 mmap(0x7fb3190a1000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xb000) = 0x7fb3190a1000 30059 close(3) = 0 30059 mprotect(0x7fb3190a1000, 4096, PROT_READ) = 0 30059 munmap(0x7fb31b1df000, 104396) = 0 30059 open("/etc/passwd", O_RDONLY|O_CLOEXEC) = 3 30059 fstat(3, {st_mode=S_IFREG|0644, st_size=1433, ...}) = 0 30059 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb31b315000 30059 read(3, "root:x:0:0:root:/root:/bin/bash\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\nbin:x:2:2:bin:/bin:/bin/sh\nsys:x:3:3:sys:/dev:/bin/sh\nsync:x:4:65534:sync:/bin:/bin/sync\ngames:x:5:60:games:/usr/games:/bin/sh\nman:x:6:12:man:/var/cache/man:/bin/sh\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\nmail:x:8:8:mail:/var/mail:/bin/sh\nnews:x:9:9:news:/var/spool/news:/bin/sh\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\nproxy:x:13:13:proxy:/bin:/bin/sh\nwww-data:x:33:33:www-data:/var/www:/bin/sh\nbackup:x:34:34:backup:/var/backups:/bin/sh\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\nsyslog:x:101:103::/home/syslog:/bin/false\nmessagebus:x:102:104::/var/run/dbus:/bin/false\nDebian-exim:x:104:109::/var/spool/exim4:/bin/false\nstatd:x:105:65534::/var/lib/nfs:/bin/false\nsshd:x:106:65534::/var/run/sshd:/usr/sbin/nologin\ngangli"..., 4096) = 1433 30059 read(3, "", 4096) = 0 30059 close(3) = 0 30059 munmap(0x7fb31b315000, 4096) = 0 30059 open("/software/jdk1.7.0_25/bin/../jre/lib/amd64/jli/libnss_sss.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) 30059 open("/usr/local/lsf/9.1/linux2.6-glibc2.3-x86_64/lib/libnss_sss.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) 30059 open("/nfs/users/nfs_j/jkb/sys/Linux_x86_64/lib/libnss_sss.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) 30059 open("/software/oracle-ic-11.2/libnss_sss.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) 30059 open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3 30059 fstat(3, {st_mode=S_IFREG|0644, st_size=104396, ...}) = 0 30059 mmap(NULL, 104396, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7fb31b1df000 30059 close(3) = 0 30059 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) 30059 open("/lib/x86_64-linux-gnu/libnss_sss.so.2", O_RDONLY|O_CLOEXEC) = 3 30059 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\20\25\0\0\0\0\0\0@\0\0\0\0\0\0\0\350b\0\0\0\0\0\0\0\0\0\0@\0008\0\7\0@\0\34\0\33\0\1\0\0\0\5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\fU\0\0\0\0\0\0\fU\0\0\0\0\0\0\0\0 \0\0\0\0\0\1\0\0\0\6\0\0\0\250]\0\0\0\0\0\0\250] \0\0\0\0\0\250] \0\0\0\0\0000\4\0\0\0\0\0\0h\5\0\0\0\0\0\0\0\0 \0\0\0\0\0\2\0\0\0\6\0\0\0\340]\0\0\0\0\0\0\340] \0\0\0\0\0\340] \0\0\0\0\0\340\1\0\0\0\0\0\0\340\1\0\0\0\0\0\0\10\0\0\0\0\0\0\0\4\0\0\0\4\0\0\0\310\1\0\0\0\0\0\0\310\1\0\0\0\0\0\0\310\1\0\0\0\0\0\0$\0\0\0\0\0\0\0$\0\0\0\0\0\0\0\4\0\0\0\0\0\0\0P\345td\4\0\0\0\364J\0\0\0\0\0\0\364J\0\0\0\0\0\0\364J\0\0\0\0\0\0\274\1\0\0\0\0\0\0\274\1\0\0\0\0\0\0\4\0\0\0\0\0\0\0Q\345td\6\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10\0\0\0\0\0\0\0R\345td\4\0\0\0\250]\0\0\0\0\0\0\250] \0\0\0\0\0\250] \0\0\0\0\0X\2\0\0\0\0\0\0X\2\0\0\0\0\0\0\1\0\0\0\0\0\0\0\4\0\0\0\24\0\0\0\3\0\0\0GNU\0\317Dr\232.'\272\235 \376\3\246\315\241:\217%\253\21$\0\0\0\0\21\0\0\0,\0\0\0\2\0\0\0\7\0\0\0E2\0)\204\2S0\255 *\0\0\302\30 ,\0\0\0-\0\0\0/\0\0\0000\0\0\0\0\0\0\0\0\0\0\0001\0\0\0\0\0\0\0002\0\0\0005\0\0\0007\0\0\0009\0\0\0:\0\0\0;\0\0\0<\0\0\0=\0\0\0?\0\0\0\325\251m\233\2~\1\345\303\227\343[\1\f\322\232\357\371G[\33\332q'\214\236\207v\10\200f\\\275\370\246\274\3144\31\230#\6\250I\f;\363\232\211t\27(\2614\327_\207\316Q\313\301\236Q\302\307\302Y\10L\301Ve'\241\344r\365h\367\313\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\3\0\n\0`\22\0\0\0\0\0\0\0\0\0\0\0\0\0\0\226\1\0\0\22\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0E\1\0\0\22\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\257\0\0\0\22\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\272\2\0\0\22\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0J\0\0\0\22\0\0\0", 832) = 832 30059 fstat(3, {st_mode=S_IFREG|0644, st_size=27112, ...}) = 0 30059 mmap(NULL, 2122512, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fb318c8f000 30059 mprotect(0x7fb318c95000, 2093056, PROT_NONE) = 0 30059 mmap(0x7fb318e94000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x5000) = 0x7fb318e94000 30059 close(3) = 0 30059 mprotect(0x7fb318e94000, 4096, PROT_READ) = 0 30059 munmap(0x7fb31b1df000, 104396) = 0 30059 futex(0x7fb318e95188, FUTEX_WAKE_PRIVATE, 2147483647) = 0 30059 fstat(-1, 0x7fb31b2f87b0) = -1 EBADF (Bad file descriptor) 30059 socket(PF_FILE, SOCK_STREAM, 0) = 3 30059 fcntl(3, F_GETFL) = 0x2 (flags O_RDWR) 30059 fcntl(3, F_SETFL, O_RDWR|O_NONBLOCK) = 0 30059 fcntl(3, F_GETFD) = 0 30059 fcntl(3, F_SETFD, FD_CLOEXEC) = 0 30059 connect(3, {sa_family=AF_FILE, path="/var/lib/sss/pipes/nss"}, 110) = 0 30059 fstat(3, {st_mode=S_IFSOCK|0777, st_size=0, ...}) = 0 30059 poll([{fd=3, events=POLLOUT}], 1, 300000) = 1 ([{fd=3, revents=POLLOUT}]) 30059 sendto(3, "\24\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0", 16, MSG_NOSIGNAL, NULL, 0) = 16 30059 poll([{fd=3, events=POLLOUT}], 1, 300000) = 1 ([{fd=3, revents=POLLOUT}]) 30059 sendto(3, "\1\0\0\0", 4, MSG_NOSIGNAL, NULL, 0) = 4 30059 poll([{fd=3, events=POLLIN}], 1, 300000) = 1 ([{fd=3, revents=POLLIN}]) 30059 read(3, "\24\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0", 16) = 16 30059 poll([{fd=3, events=POLLIN}], 1, 300000) = 1 ([{fd=3, revents=POLLIN}]) 30059 read(3, "\1\0\0\0", 4) = 4 30059 poll([{fd=3, events=POLLOUT}], 1, 300000) = 1 ([{fd=3, revents=POLLOUT}]) 30059 sendto(3, "\24\0\0\0\22\0\0\0\0\0\0\0\0\0\0\0", 16, MSG_NOSIGNAL, NULL, 0) = 16 30059 poll([{fd=3, events=POLLOUT}], 1, 300000) = 1 ([{fd=3, revents=POLLOUT}]) 30059 sendto(3, "\315\0\0\0", 4, MSG_NOSIGNAL, NULL, 0) = 4 30059 poll([{fd=3, events=POLLIN}], 1, 300000) = 1 ([{fd=3, revents=POLLIN}]) 30059 read(3, "T\0\0\0\22\0\0\0\0\0\0\0\0\0\0\0", 16) = 16 30059 poll([{fd=3, events=POLLIN}], 1, 300000) = 1 ([{fd=3, revents=POLLIN}]) 30059 read(3, "\1\0\0\0\0\0\0\0\315\0\0\0005\4\0\0jkb\0*\0James Bonfield\0/nfs/users/nfs_j/jkb\0/bin/bash\0", 68) = 68 30059 openat(AT_FDCWD, "/tmp/hsperfdata_jkb", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 4 30059 lstat("/tmp/hsperfdata_jkb", {st_mode=S_IFDIR|0755, st_size=6, ...}) = 0 30059 getdents(4, /* 2 entries */, 32768) = 48 30059 getdents(4, /* 0 entries */, 32768) = 0 30059 close(4) = 0 30059 mkdir("/tmp/hsperfdata_jkb", 0755) = -1 EEXIST (File exists) 30059 lstat("/tmp/hsperfdata_jkb", {st_mode=S_IFDIR|0755, st_size=6, ...}) = 0 30059 open("/tmp/hsperfdata_jkb/30058", O_RDWR|O_CREAT|O_TRUNC, 0600) = 4 30059 ftruncate(4, 32768) = 0 30059 lseek(4, 0, SEEK_SET) = 0 30059 write(4, "\0", 1) = 1 30059 lseek(4, 4096, SEEK_SET) = 4096 30059 write(4, "\0", 1) = 1 30059 lseek(4, 8192, SEEK_SET) = 8192 30059 write(4, "\0", 1) = 1 30059 lseek(4, 12288, SEEK_SET) = 12288 30059 write(4, "\0", 1) = 1 30059 lseek(4, 16384, SEEK_SET) = 16384 30059 write(4, "\0", 1) = 1 30059 lseek(4, 20480, SEEK_SET) = 20480 30059 write(4, "\0", 1) = 1 30059 lseek(4, 24576, SEEK_SET) = 24576 30059 write(4, "\0", 1) = 1 30059 lseek(4, 28672, SEEK_SET) = 28672 30059 write(4, "\0", 1) = 1 30059 mmap(NULL, 32768, PROT_READ|PROT_WRITE, MAP_SHARED, 4, 0) = 0x7fb31b30e000 30059 close(4) = 0 30059 sched_getaffinity(30059, 32, {ffffffff, 0, 0, 0}) = 32 30059 sched_getaffinity(30059, 32, {ffffffff, 0, 0, 0}) = 32 30059 gettid() = 30059 30059 rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0 30059 rt_sigprocmask(SIG_UNBLOCK, [HUP INT ILL BUS FPE SEGV USR2 TERM], NULL, 8) = 0 30059 rt_sigprocmask(SIG_BLOCK, [QUIT], NULL, 8) = 0 30059 mmap(0x7fb31b1f9000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fb31b1f9000 30059 mprotect(0x7fb31b1f9000, 12288, PROT_NONE) = 0 30059 open("/software/jdk1.7.0_25/jre/lib/amd64/libzip.so", O_RDONLY|O_CLOEXEC) = 4 30059 read(4, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\320*\0\0\0\0\0\0@\0\0\0\0\0\0\0\10\253\1\0\0\0\0\0\0\0\0\0@\0008\0\6\0@\0\37\0\34\0\1\0\0\0\5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0T\240\1\0\0\0\0\0T\240\1\0\0\0\0\0\0\0 \0\0\0\0\0\1\0\0\0\6\0\0\0X\240\1\0\0\0\0\0X\240!\0\0\0\0\0X\240!\0\0\0\0\0\310\5\0\0\0\0\0\0x\7\0\0\0\0\0\0\0\0 \0\0\0\0\0\2\0\0\0\6\0\0\0x\241\1\0\0\0\0\0x\241!\0\0\0\0\0x\241!\0\0\0\0\0\0\2\0\0\0\0\0\0\0\2\0\0\0\0\0\0\10\0\0\0\0\0\0\0\4\0\0\0\4\0\0\0\220\1\0\0\0\0\0\0\220\1\0\0\0\0\0\0\220\1\0\0\0\0\0\0$\0\0\0\0\0\0\0$\0\0\0\0\0\0\0\4\0\0\0\0\0\0\0P\345td\4\0\0\0\24\206\1\0\0\0\0\0\24\206\1\0\0\0\0\0\24\206\1\0\0\0\0\0\324\4\0\0\0\0\0\0\324\4\0\0\0\0\0\0\4\0\0\0\0\0\0\0Q\345td\6\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10\0\0\0\0\0\0\0\4\0\0\0\24\0\0\0\3\0\0\0GNU\0\204\323\263y!E\tn\36\340V\253\nE\317\32\341U]d\0\0\0\0\267\0\0\0n\0\0\0Z\0\0\0\0\0\0\0\31\0\0\0\0\0\0\0D\0\0\0Y\0\0\0\0\0\0\0\0\0\0\0007\0\0\0\0\0\0\0E\0\0\0\0\0\0\0008\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0e\0\0\0b\0\0\0\0\0\0\0\0\0\0\0N\0\0\0_\0\0\0\6\0\0\0\16\0\0\0k\0\0\0P\0\0\0H\0\0\0\0\0\0\0?\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0%\0\0\0[\0\0\0\0\0\0\0\0\0\0\0:\0\0\0\0\0\0\0>\0\0\0\0\0\0\0002\0\0\0U\0\0\0\0\0\0\0\20\0\0\0\36\0\0\0\0\0\0\0L\0\0\0i\0\0\0\0\0\0\0000\0\0\0\0\0\0\0\0\0\0\0/\0\0\0\0\0\0\0m\0\0\0009\0\0\0*\0\0\0\0\0\0\0\0\0\0\0M\0\0\0@\0\0\0\0\0\0\0\0\0\0\0c\0\0\0\37\0\0\0\0\0\0\0S\0\0\0,\0\0\0\0\0\0\0'\0\0\0\0\0\0\0g\0\0\0d\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0=\0\0\0\\\0\0\0\"\0\0\0R\0\0\0\0\0\0\0\21\0\0\0]\0\0\0\32\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0<\0\0\0", 832) = 832 30059 fstat(4, {st_mode=S_IFREG|0755, st_size=123800, ...}) = 0 30059 mmap(NULL, 2205648, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 4, 0) = 0x7fb318a74000 30059 mprotect(0x7fb318a8f000, 2093056, PROT_NONE) = 0 30059 mmap(0x7fb318c8e000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 4, 0x1a000) = 0x7fb318c8e000 30059 close(4) = 0 30059 stat("/software/jdk1.7.0_25/jre/lib/resources.jar", {st_mode=S_IFREG|0755, st_size=2479402, ...}) = 0 30059 stat("/software/jdk1.7.0_25/jre/lib/rt.jar", {st_mode=S_IFREG|0644, st_size=62611458, ...}) = 0 30059 stat("/software/jdk1.7.0_25/jre/lib/sunrsasign.jar", 0x7fb31b2f8a30) = -1 ENOENT (No such file or directory) 30059 stat("/software/jdk1.7.0_25/jre/lib/jsse.jar", {st_mode=S_IFREG|0644, st_size=580526, ...}) = 0 30059 stat("/software/jdk1.7.0_25/jre/lib/jce.jar", {st_mode=S_IFREG|0755, st_size=109196, ...}) = 0 30059 stat("/software/jdk1.7.0_25/jre/lib/charsets.jar", {st_mode=S_IFREG|0644, st_size=3649132, ...}) = 0 30059 stat("/software/jdk1.7.0_25/jre/lib/jfr.jar", {st_mode=S_IFREG|0755, st_size=462133, ...}) = 0 30059 stat("/software/jdk1.7.0_25/jre/classes", 0x7fb31b2f8a30) = -1 ENOENT (No such file or directory) 30059 open("/software/jdk1.7.0_25/jre/lib/meta-index", O_RDONLY) = 4 30059 fstat(4, {st_mode=S_IFREG|0755, st_size=2097, ...}) = 0 30059 mmap(NULL, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb31b306000 30059 read(4, "% VERSION 2\n% WARNING: this file is auto-generated; do not edit\n% UNSUPPORTED: this file and its format may change and/or\n% may be removed in a future release\n! alt-rt.jar\njava/math\njava/util\n# charsets.jar\nMETA-INF/services/java.nio.charset.spi.CharsetProvider\nsun/nio\nsun/awt\nsun/io\n# jce.jar\njavax/crypto\nsun/security\nMETA-INF/ORACLE_J.RSA\nMETA-INF/ORACLE_J.SF\n! jfr.jar\noracle/jrockit/\ncom/oracle/\n! jsse.jar\nsun/security\ncom/sun/net/\n! management-agent.jar\n@ resources.jar\ncom/sun/java/util/jar/pack/\nMETA-INF/services/javax.print.PrintServiceLookup\ncom/sun/corba/\nMETA-INF/services/javax.sound.midi.spi.SoundbankReader\nsun/print\nMETA-INF/services/javax.sound.midi.spi.MidiFileReader\njavax/swing\nMETA-INF/services/javax.sound.sampled.spi.AudioFileReader\nMETA-INF/services/javax.sound.midi.spi.MidiDeviceProvider\nsun/net\nMETA-INF/services/javax.sound.sampled.spi.AudioFileWriter\ncom/sun/imageio/\ncom/sun/servicetag/\nMETA-INF/services/sun.java2d.pipe.RenderingEngine\nMETA-INF/services/java.sql.D"..., 32768) = 2097 30059 read(4, "", 32768) = 0 30059 close(4) = 0 30059 munmap(0x7fb31b306000, 32768) = 0 30059 mmap(NULL, 50331648, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x7fb311000000 30059 mmap(0x7fb311000000, 2555904, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fb311000000 30059 mmap(NULL, 786432, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x7fb31b139000 30059 mmap(0x7fb31b139000, 40960, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fb31b139000 30059 mmap(0x507200000, 12765364224, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x507200000 30059 mmap(NULL, 24936448, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x7fb30f838000 30059 mmap(0x7fb310fff000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fb310fff000 30059 mmap(0x704160000, 264110080, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x704160000 30059 mmap(0x7fb31081f000, 520192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fb31081f000 30059 mmap(0x50c400000, 528285696, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x50c400000 30059 mmap(NULL, 16510976, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x7fb30e879000 30059 mmap(0x7fb30f861000, 1032192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fb30f861000 30059 mmap(0x7fb30e879000, 1032192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fb30e879000 30059 mmap(0x507200000, 21757952, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x507200000 30059 mmap(NULL, 167936, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x7fb318a4b000 30059 mmap(0x7fb30f838000, 45056, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fb30f838000 30059 mmap(0x7fb318a4b000, 45056, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fb318a4b000 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7fb31894a000 30059 mprotect(0x7fb31894a000, 4096, PROT_NONE) = 0 30059 clone(child_stack=0x7fb318a49ff0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7fb318a4a9d0, tls=0x7fb318a4a700, child_tidptr=0x7fb318a4a9d0) = 30060 30060 set_robust_list(0x7fb318a4a9e0, 0x18 30059 futex(0x7fb314009354, FUTEX_WAIT_PRIVATE, 1, NULL 30060 <... set_robust_list resumed> ) = 0 30060 gettid() = 30060 30060 rt_sigprocmask(SIG_BLOCK, NULL, [QUIT], 8) = 0 30060 rt_sigprocmask(SIG_UNBLOCK, [HUP INT ILL BUS FPE SEGV USR2 TERM], NULL, 8) = 0 30060 rt_sigprocmask(SIG_BLOCK, [QUIT], NULL, 8) = 0 30060 futex(0x7fb314009354, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x7fb314009350, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1}) = 1 30059 <... futex resumed> ) = 0 30060 futex(0x7fb314017154, FUTEX_WAIT_PRIVATE, 1, NULL 30059 futex(0x7fb314009328, FUTEX_WAKE_PRIVATE, 1) = 0 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7fb318849000 30059 mprotect(0x7fb318849000, 4096, PROT_NONE) = 0 30059 clone(child_stack=0x7fb318948ff0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7fb3189499d0, tls=0x7fb318949700, child_tidptr=0x7fb3189499d0) = 30061 30061 set_robust_list(0x7fb3189499e0, 0x18 30059 futex(0x7fb314009354, FUTEX_WAIT_PRIVATE, 3, NULL 30061 <... set_robust_list resumed> ) = 0 30061 gettid() = 30061 30061 rt_sigprocmask(SIG_BLOCK, NULL, [QUIT], 8) = 0 30061 rt_sigprocmask(SIG_UNBLOCK, [HUP INT ILL BUS FPE SEGV USR2 TERM], NULL, 8) = 0 30061 rt_sigprocmask(SIG_BLOCK, [QUIT], NULL, 8) = 0 30061 futex(0x7fb314009354, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x7fb314009350, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1}) = 1 30059 <... futex resumed> ) = 0 30061 futex(0x7fb314018f54, FUTEX_WAIT_PRIVATE, 1, NULL 30059 futex(0x7fb314009328, FUTEX_WAKE_PRIVATE, 1) = 0 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7fb318748000 30059 mprotect(0x7fb318748000, 4096, PROT_NONE) = 0 30059 clone(child_stack=0x7fb318847ff0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7fb3188489d0, tls=0x7fb318848700, child_tidptr=0x7fb3188489d0) = 30062 30062 set_robust_list(0x7fb3188489e0, 0x18 30059 futex(0x7fb314009354, FUTEX_WAIT_PRIVATE, 5, NULL 30062 <... set_robust_list resumed> ) = 0 30062 gettid() = 30062 30062 rt_sigprocmask(SIG_BLOCK, NULL, [QUIT], 8) = 0 30062 rt_sigprocmask(SIG_UNBLOCK, [HUP INT ILL BUS FPE SEGV USR2 TERM], NULL, 8) = 0 30062 rt_sigprocmask(SIG_BLOCK, [QUIT], NULL, 8) = 0 30062 futex(0x7fb314009354, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x7fb314009350, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1}) = 1 30059 <... futex resumed> ) = 0 30062 futex(0x7fb31401ac54, FUTEX_WAIT_PRIVATE, 1, NULL 30059 futex(0x7fb314009328, FUTEX_WAKE_PRIVATE, 1) = 0 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7fb318647000 30059 mprotect(0x7fb318647000, 4096, PROT_NONE) = 0 30059 clone(child_stack=0x7fb318746ff0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7fb3187479d0, tls=0x7fb318747700, child_tidptr=0x7fb3187479d0) = 30063 30063 set_robust_list(0x7fb3187479e0, 0x18 30059 futex(0x7fb314009354, FUTEX_WAIT_PRIVATE, 7, NULL 30063 <... set_robust_list resumed> ) = 0 30063 gettid() = 30063 30063 rt_sigprocmask(SIG_BLOCK, NULL, [QUIT], 8) = 0 30063 rt_sigprocmask(SIG_UNBLOCK, [HUP INT ILL BUS FPE SEGV USR2 TERM], NULL, 8) = 0 30063 rt_sigprocmask(SIG_BLOCK, [QUIT], NULL, 8) = 0 30063 futex(0x7fb314009354, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x7fb314009350, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1}) = 1 30059 <... futex resumed> ) = 0 30063 futex(0x7fb31401ca54, FUTEX_WAIT_PRIVATE, 1, NULL 30059 futex(0x7fb314009328, FUTEX_WAKE_PRIVATE, 1) = 0 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7fb318546000 30059 mprotect(0x7fb318546000, 4096, PROT_NONE) = 0 30059 clone(child_stack=0x7fb318645ff0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7fb3186469d0, tls=0x7fb318646700, child_tidptr=0x7fb3186469d0) = 30064 30064 set_robust_list(0x7fb3186469e0, 0x18 30059 futex(0x7fb314009354, FUTEX_WAIT_PRIVATE, 9, NULL 30064 <... set_robust_list resumed> ) = 0 30064 gettid() = 30064 30064 rt_sigprocmask(SIG_BLOCK, NULL, [QUIT], 8) = 0 30064 rt_sigprocmask(SIG_UNBLOCK, [HUP INT ILL BUS FPE SEGV USR2 TERM], NULL, 8) = 0 30064 rt_sigprocmask(SIG_BLOCK, [QUIT], NULL, 8) = 0 30064 futex(0x7fb314009354, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x7fb314009350, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1}) = 1 30059 <... futex resumed> ) = 0 30064 futex(0x7fb31401e754, FUTEX_WAIT_PRIVATE, 1, NULL 30059 futex(0x7fb314009328, FUTEX_WAKE_PRIVATE, 1) = 0 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7fb318445000 30059 mprotect(0x7fb318445000, 4096, PROT_NONE) = 0 30059 clone(child_stack=0x7fb318544ff0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7fb3185459d0, tls=0x7fb318545700, child_tidptr=0x7fb3185459d0) = 30065 30065 set_robust_list(0x7fb3185459e0, 0x18 30059 futex(0x7fb314009354, FUTEX_WAIT_PRIVATE, 11, NULL 30065 <... set_robust_list resumed> ) = 0 30065 gettid() = 30065 30065 rt_sigprocmask(SIG_BLOCK, NULL, [QUIT], 8) = 0 30065 rt_sigprocmask(SIG_UNBLOCK, [HUP INT ILL BUS FPE SEGV USR2 TERM], NULL, 8) = 0 30065 rt_sigprocmask(SIG_BLOCK, [QUIT], NULL, 8) = 0 30065 futex(0x7fb314009354, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x7fb314009350, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1}) = 1 30059 <... futex resumed> ) = 0 30065 futex(0x7fb314020554, FUTEX_WAIT_PRIVATE, 1, NULL 30059 futex(0x7fb314009328, FUTEX_WAKE_PRIVATE, 1) = 0 30059 mprotect(0x7fb314021000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb314022000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7fb318344000 30059 mprotect(0x7fb318344000, 4096, PROT_NONE) = 0 30059 clone(child_stack=0x7fb318443ff0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7fb3184449d0, tls=0x7fb318444700, child_tidptr=0x7fb3184449d0) = 30066 30066 set_robust_list(0x7fb3184449e0, 0x18 30059 futex(0x7fb314009354, FUTEX_WAIT_PRIVATE, 13, NULL 30066 <... set_robust_list resumed> ) = 0 30066 gettid() = 30066 30066 rt_sigprocmask(SIG_BLOCK, NULL, [QUIT], 8) = 0 30066 rt_sigprocmask(SIG_UNBLOCK, [HUP INT ILL BUS FPE SEGV USR2 TERM], NULL, 8) = 0 30066 rt_sigprocmask(SIG_BLOCK, [QUIT], NULL, 8) = 0 30066 futex(0x7fb314009354, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x7fb314009350, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1}) = 1 30059 <... futex resumed> ) = 0 30066 futex(0x7fb314022254, FUTEX_WAIT_PRIVATE, 1, NULL 30059 futex(0x7fb314009328, FUTEX_WAKE_PRIVATE, 1) = 0 30059 mprotect(0x7fb314023000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb314024000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7fb318243000 30059 mprotect(0x7fb318243000, 4096, PROT_NONE) = 0 30059 clone(child_stack=0x7fb318342ff0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7fb3183439d0, tls=0x7fb318343700, child_tidptr=0x7fb3183439d0) = 30067 30067 set_robust_list(0x7fb3183439e0, 0x18 30059 futex(0x7fb314009354, FUTEX_WAIT_PRIVATE, 15, NULL 30067 <... set_robust_list resumed> ) = 0 30067 gettid() = 30067 30067 rt_sigprocmask(SIG_BLOCK, NULL, [QUIT], 8) = 0 30067 rt_sigprocmask(SIG_UNBLOCK, [HUP INT ILL BUS FPE SEGV USR2 TERM], NULL, 8) = 0 30067 rt_sigprocmask(SIG_BLOCK, [QUIT], NULL, 8) = 0 30067 futex(0x7fb314009354, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x7fb314009350, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1}) = 1 30059 <... futex resumed> ) = 0 30067 futex(0x7fb314024054, FUTEX_WAIT_PRIVATE, 1, NULL 30059 futex(0x7fb314009328, FUTEX_WAKE_PRIVATE, 1) = 0 30059 mprotect(0x7fb314025000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb314026000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7fb318142000 30059 mprotect(0x7fb318142000, 4096, PROT_NONE) = 0 30059 clone(child_stack=0x7fb318241ff0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7fb3182429d0, tls=0x7fb318242700, child_tidptr=0x7fb3182429d0) = 30068 30068 set_robust_list(0x7fb3182429e0, 0x18 30059 futex(0x7fb314009354, FUTEX_WAIT_PRIVATE, 17, NULL 30068 <... set_robust_list resumed> ) = 0 30068 gettid() = 30068 30068 rt_sigprocmask(SIG_BLOCK, NULL, [QUIT], 8) = 0 30068 rt_sigprocmask(SIG_UNBLOCK, [HUP INT ILL BUS FPE SEGV USR2 TERM], NULL, 8) = 0 30068 rt_sigprocmask(SIG_BLOCK, [QUIT], NULL, 8) = 0 30068 futex(0x7fb314009354, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x7fb314009350, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1}) = 1 30059 <... futex resumed> ) = 0 30068 futex(0x7fb314025d54, FUTEX_WAIT_PRIVATE, 1, NULL 30059 futex(0x7fb314009328, FUTEX_WAKE_PRIVATE, 1) = 0 30059 mprotect(0x7fb314027000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7fb318041000 30059 mprotect(0x7fb314028000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb318041000, 4096, PROT_NONE) = 0 30059 clone(child_stack=0x7fb318140ff0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7fb3181419d0, tls=0x7fb318141700, child_tidptr=0x7fb3181419d0) = 30069 30069 set_robust_list(0x7fb3181419e0, 0x18 30059 futex(0x7fb314009354, FUTEX_WAIT_PRIVATE, 19, NULL 30069 <... set_robust_list resumed> ) = 0 30069 gettid() = 30069 30069 rt_sigprocmask(SIG_BLOCK, NULL, [QUIT], 8) = 0 30069 rt_sigprocmask(SIG_UNBLOCK, [HUP INT ILL BUS FPE SEGV USR2 TERM], NULL, 8) = 0 30069 rt_sigprocmask(SIG_BLOCK, [QUIT], NULL, 8) = 0 30069 futex(0x7fb314009354, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x7fb314009350, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1}) = 1 30059 <... futex resumed> ) = 0 30069 futex(0x7fb314027b54, FUTEX_WAIT_PRIVATE, 1, NULL 30059 futex(0x7fb314009328, FUTEX_WAKE_PRIVATE, 1) = 0 30059 mprotect(0x7fb314029000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7fb30e778000 30059 mprotect(0x7fb30e778000, 4096, PROT_NONE) = 0 30059 clone(child_stack=0x7fb30e877ff0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7fb30e8789d0, tls=0x7fb30e878700, child_tidptr=0x7fb30e8789d0) = 30070 30070 set_robust_list(0x7fb30e8789e0, 0x18 30059 futex(0x7fb314009354, FUTEX_WAIT_PRIVATE, 21, NULL 30070 <... set_robust_list resumed> ) = 0 30070 gettid() = 30070 30070 rt_sigprocmask(SIG_BLOCK, NULL, [QUIT], 8) = 0 30070 rt_sigprocmask(SIG_UNBLOCK, [HUP INT ILL BUS FPE SEGV USR2 TERM], NULL, 8) = 0 30070 rt_sigprocmask(SIG_BLOCK, [QUIT], NULL, 8) = 0 30070 futex(0x7fb314009354, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x7fb314009350, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1}) = 1 30059 <... futex resumed> ) = 0 30070 futex(0x7fb314029854, FUTEX_WAIT_PRIVATE, 1, NULL 30059 futex(0x7fb314009328, FUTEX_WAKE_PRIVATE, 1) = 0 30059 mprotect(0x7fb31402a000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb31402b000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7fb30e677000 30059 mprotect(0x7fb30e677000, 4096, PROT_NONE) = 0 30059 clone(child_stack=0x7fb30e776ff0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7fb30e7779d0, tls=0x7fb30e777700, child_tidptr=0x7fb30e7779d0) = 30071 30071 set_robust_list(0x7fb30e7779e0, 0x18 30059 futex(0x7fb314009354, FUTEX_WAIT_PRIVATE, 23, NULL 30071 <... set_robust_list resumed> ) = 0 30071 gettid() = 30071 30071 rt_sigprocmask(SIG_BLOCK, NULL, [QUIT], 8) = 0 30071 rt_sigprocmask(SIG_UNBLOCK, [HUP INT ILL BUS FPE SEGV USR2 TERM], NULL, 8) = 0 30071 rt_sigprocmask(SIG_BLOCK, [QUIT], NULL, 8) = 0 30071 futex(0x7fb314009354, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x7fb314009350, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1}) = 1 30059 <... futex resumed> ) = 0 30071 futex(0x7fb31402b654, FUTEX_WAIT_PRIVATE, 1, NULL 30059 futex(0x7fb314009328, FUTEX_WAKE_PRIVATE, 1) = 0 30059 mprotect(0x7fb31402c000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb31402d000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7fb30e576000 30059 mprotect(0x7fb30e576000, 4096, PROT_NONE) = 0 30059 clone(child_stack=0x7fb30e675ff0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7fb30e6769d0, tls=0x7fb30e676700, child_tidptr=0x7fb30e6769d0) = 30072 30072 set_robust_list(0x7fb30e6769e0, 0x18 30059 futex(0x7fb314009354, FUTEX_WAIT_PRIVATE, 25, NULL 30072 <... set_robust_list resumed> ) = 0 30072 gettid() = 30072 30072 rt_sigprocmask(SIG_BLOCK, NULL, [QUIT], 8) = 0 30072 rt_sigprocmask(SIG_UNBLOCK, [HUP INT ILL BUS FPE SEGV USR2 TERM], NULL, 8) = 0 30072 rt_sigprocmask(SIG_BLOCK, [QUIT], NULL, 8) = 0 30072 futex(0x7fb314009354, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x7fb314009350, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1}) = 1 30059 <... futex resumed> ) = 0 30072 futex(0x7fb31402d354, FUTEX_WAIT_PRIVATE, 1, NULL 30059 futex(0x7fb314009328, FUTEX_WAKE_PRIVATE, 1) = 0 30059 mprotect(0x7fb31402e000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb31402f000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7fb30e475000 30059 mprotect(0x7fb30e475000, 4096, PROT_NONE) = 0 30059 clone(child_stack=0x7fb30e574ff0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7fb30e5759d0, tls=0x7fb30e575700, child_tidptr=0x7fb30e5759d0) = 30073 30073 set_robust_list(0x7fb30e5759e0, 0x18 30059 futex(0x7fb314009354, FUTEX_WAIT_PRIVATE, 27, NULL 30073 <... set_robust_list resumed> ) = 0 30073 gettid() = 30073 30073 rt_sigprocmask(SIG_BLOCK, NULL, [QUIT], 8) = 0 30073 rt_sigprocmask(SIG_UNBLOCK, [HUP INT ILL BUS FPE SEGV USR2 TERM], NULL, 8) = 0 30073 rt_sigprocmask(SIG_BLOCK, [QUIT], NULL, 8) = 0 30073 futex(0x7fb314009354, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x7fb314009350, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1}) = 1 30059 <... futex resumed> ) = 0 30073 futex(0x7fb31402f154, FUTEX_WAIT_PRIVATE, 1, NULL 30059 futex(0x7fb314009328, FUTEX_WAKE_PRIVATE, 1) = 0 30059 mprotect(0x7fb314030000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb314031000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7fb30e374000 30059 mprotect(0x7fb30e374000, 4096, PROT_NONE) = 0 30059 clone(child_stack=0x7fb30e473ff0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7fb30e4749d0, tls=0x7fb30e474700, child_tidptr=0x7fb30e4749d0) = 30074 30074 set_robust_list(0x7fb30e4749e0, 0x18 30059 futex(0x7fb314009354, FUTEX_WAIT_PRIVATE, 29, NULL 30074 <... set_robust_list resumed> ) = 0 30074 gettid() = 30074 30074 rt_sigprocmask(SIG_BLOCK, NULL, [QUIT], 8) = 0 30074 rt_sigprocmask(SIG_UNBLOCK, [HUP INT ILL BUS FPE SEGV USR2 TERM], NULL, 8) = 0 30074 rt_sigprocmask(SIG_BLOCK, [QUIT], NULL, 8) = 0 30074 futex(0x7fb314009354, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x7fb314009350, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1}) = 1 30059 <... futex resumed> ) = 0 30074 futex(0x7fb314030e54, FUTEX_WAIT_PRIVATE, 1, NULL 30059 futex(0x7fb314009328, FUTEX_WAKE_PRIVATE, 1) = 0 30059 mprotect(0x7fb314032000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb314033000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7fb30e273000 30059 mprotect(0x7fb30e273000, 4096, PROT_NONE) = 0 30059 clone(child_stack=0x7fb30e372ff0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7fb30e3739d0, tls=0x7fb30e373700, child_tidptr=0x7fb30e3739d0) = 30075 30075 set_robust_list(0x7fb30e3739e0, 0x18 30059 futex(0x7fb314009354, FUTEX_WAIT_PRIVATE, 31, NULL 30075 <... set_robust_list resumed> ) = 0 30075 gettid() = 30075 30075 rt_sigprocmask(SIG_BLOCK, NULL, [QUIT], 8) = 0 30075 rt_sigprocmask(SIG_UNBLOCK, [HUP INT ILL BUS FPE SEGV USR2 TERM], NULL, 8) = 0 30075 rt_sigprocmask(SIG_BLOCK, [QUIT], NULL, 8) = 0 30075 futex(0x7fb314009354, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x7fb314009350, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1}) = 1 30059 <... futex resumed> ) = 0 30075 futex(0x7fb314009328, FUTEX_WAKE_PRIVATE, 1 30059 futex(0x7fb314009328, FUTEX_WAIT_PRIVATE, 2, NULL 30075 <... futex resumed> ) = 0 30059 <... futex resumed> ) = -1 EAGAIN (Resource temporarily unavailable) 30075 futex(0x7fb314032c54, FUTEX_WAIT_PRIVATE, 1, NULL 30059 futex(0x7fb314009328, FUTEX_WAKE_PRIVATE, 1) = 0 30059 mprotect(0x7fb314034000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7fb30e172000 30059 mprotect(0x7fb30e172000, 4096, PROT_NONE) = 0 30059 clone(child_stack=0x7fb30e271ff0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7fb30e2729d0, tls=0x7fb30e272700, child_tidptr=0x7fb30e2729d0) = 30076 30076 set_robust_list(0x7fb30e2729e0, 0x18 30059 futex(0x7fb314009354, FUTEX_WAIT_PRIVATE, 33, NULL 30076 <... set_robust_list resumed> ) = 0 30076 gettid() = 30076 30076 rt_sigprocmask(SIG_BLOCK, NULL, [QUIT], 8) = 0 30076 rt_sigprocmask(SIG_UNBLOCK, [HUP INT ILL BUS FPE SEGV USR2 TERM], NULL, 8) = 0 30076 rt_sigprocmask(SIG_BLOCK, [QUIT], NULL, 8) = 0 30076 futex(0x7fb314009354, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x7fb314009350, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1}) = 1 30059 <... futex resumed> ) = 0 30076 futex(0x7fb314009328, FUTEX_WAKE_PRIVATE, 1 30059 futex(0x7fb314009328, FUTEX_WAIT_PRIVATE, 2, NULL 30076 <... futex resumed> ) = 0 30059 <... futex resumed> ) = -1 EAGAIN (Resource temporarily unavailable) 30076 futex(0x7fb314034954, FUTEX_WAIT_PRIVATE, 1, NULL 30059 futex(0x7fb314009328, FUTEX_WAKE_PRIVATE, 1) = 0 30059 mprotect(0x7fb314035000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb314036000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7fb30e071000 30059 mprotect(0x7fb30e071000, 4096, PROT_NONE) = 0 30059 clone(child_stack=0x7fb30e170ff0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7fb30e1719d0, tls=0x7fb30e171700, child_tidptr=0x7fb30e1719d0) = 30077 30077 set_robust_list(0x7fb30e1719e0, 0x18 30059 futex(0x7fb314009354, FUTEX_WAIT_PRIVATE, 35, NULL 30077 <... set_robust_list resumed> ) = 0 30077 gettid() = 30077 30077 rt_sigprocmask(SIG_BLOCK, NULL, [QUIT], 8) = 0 30077 rt_sigprocmask(SIG_UNBLOCK, [HUP INT ILL BUS FPE SEGV USR2 TERM], NULL, 8) = 0 30077 rt_sigprocmask(SIG_BLOCK, [QUIT], NULL, 8) = 0 30077 futex(0x7fb314009354, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x7fb314009350, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1}) = 1 30059 <... futex resumed> ) = 0 30077 futex(0x7fb314036754, FUTEX_WAIT_PRIVATE, 1, NULL 30059 futex(0x7fb314009328, FUTEX_WAKE_PRIVATE, 1) = 0 30059 mprotect(0x7fb314037000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb314038000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7fb30df70000 30059 mprotect(0x7fb30df70000, 4096, PROT_NONE) = 0 30059 clone(child_stack=0x7fb30e06fff0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7fb30e0709d0, tls=0x7fb30e070700, child_tidptr=0x7fb30e0709d0) = 30078 30078 set_robust_list(0x7fb30e0709e0, 0x18 30059 futex(0x7fb314009354, FUTEX_WAIT_PRIVATE, 37, NULL 30078 <... set_robust_list resumed> ) = 0 30078 gettid() = 30078 30078 rt_sigprocmask(SIG_BLOCK, NULL, [QUIT], 8) = 0 30078 rt_sigprocmask(SIG_UNBLOCK, [HUP INT ILL BUS FPE SEGV USR2 TERM], NULL, 8) = 0 30078 rt_sigprocmask(SIG_BLOCK, [QUIT], NULL, 8) = 0 30078 futex(0x7fb314009354, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x7fb314009350, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1}) = 1 30059 <... futex resumed> ) = 0 30078 futex(0x7fb314038454, FUTEX_WAIT_PRIVATE, 1, NULL 30059 futex(0x7fb314009328, FUTEX_WAKE_PRIVATE, 1) = 0 30059 mprotect(0x7fb314039000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb31403a000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7fb30de6f000 30059 mprotect(0x7fb30de6f000, 4096, PROT_NONE) = 0 30059 clone(child_stack=0x7fb30df6eff0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7fb30df6f9d0, tls=0x7fb30df6f700, child_tidptr=0x7fb30df6f9d0) = 30079 30079 set_robust_list(0x7fb30df6f9e0, 0x18 30059 futex(0x7fb314009354, FUTEX_WAIT_PRIVATE, 39, NULL 30079 <... set_robust_list resumed> ) = 0 30079 gettid() = 30079 30079 rt_sigprocmask(SIG_BLOCK, NULL, [QUIT], 8) = 0 30079 rt_sigprocmask(SIG_UNBLOCK, [HUP INT ILL BUS FPE SEGV USR2 TERM], NULL, 8) = 0 30079 rt_sigprocmask(SIG_BLOCK, [QUIT], NULL, 8) = 0 30079 futex(0x7fb314009354, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x7fb314009350, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1}) = 1 30059 <... futex resumed> ) = 0 30079 futex(0x7fb31403a254, FUTEX_WAIT_PRIVATE, 1, NULL 30059 futex(0x7fb314009328, FUTEX_WAKE_PRIVATE, 1) = 0 30059 mprotect(0x7fb31403b000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb31403c000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7fb30dd6e000 30059 mprotect(0x7fb30dd6e000, 4096, PROT_NONE) = 0 30059 clone(child_stack=0x7fb30de6dff0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7fb30de6e9d0, tls=0x7fb30de6e700, child_tidptr=0x7fb30de6e9d0) = 30080 30080 set_robust_list(0x7fb30de6e9e0, 0x18 30059 futex(0x7fb314009354, FUTEX_WAIT_PRIVATE, 41, NULL 30080 <... set_robust_list resumed> ) = 0 30080 gettid() = 30080 30080 rt_sigprocmask(SIG_BLOCK, NULL, [QUIT], 8) = 0 30080 rt_sigprocmask(SIG_UNBLOCK, [HUP INT ILL BUS FPE SEGV USR2 TERM], NULL, 8) = 0 30080 rt_sigprocmask(SIG_BLOCK, [QUIT], NULL, 8) = 0 30080 futex(0x7fb314009354, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x7fb314009350, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1}) = 1 30059 <... futex resumed> ) = 0 30080 futex(0x7fb314009328, FUTEX_WAKE_PRIVATE, 1 30059 futex(0x7fb314009328, FUTEX_WAIT_PRIVATE, 2, NULL 30080 <... futex resumed> ) = 0 30059 <... futex resumed> ) = -1 EAGAIN (Resource temporarily unavailable) 30080 futex(0x7fb31403bf54, FUTEX_WAIT_PRIVATE, 1, NULL 30059 futex(0x7fb314009328, FUTEX_WAKE_PRIVATE, 1) = 0 30059 mprotect(0x7fb31403d000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb31403e000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7fb30dc6d000 30059 mprotect(0x7fb30dc6d000, 4096, PROT_NONE) = 0 30059 clone(child_stack=0x7fb30dd6cff0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7fb30dd6d9d0, tls=0x7fb30dd6d700, child_tidptr=0x7fb30dd6d9d0) = 30081 30081 set_robust_list(0x7fb30dd6d9e0, 0x18 30059 futex(0x7fb314009354, FUTEX_WAIT_PRIVATE, 43, NULL 30081 <... set_robust_list resumed> ) = 0 30081 gettid() = 30081 30081 rt_sigprocmask(SIG_BLOCK, NULL, [QUIT], 8) = 0 30081 rt_sigprocmask(SIG_UNBLOCK, [HUP INT ILL BUS FPE SEGV USR2 TERM], NULL, 8) = 0 30081 rt_sigprocmask(SIG_BLOCK, [QUIT], NULL, 8) = 0 30081 futex(0x7fb314009354, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x7fb314009350, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1}) = 1 30059 <... futex resumed> ) = 0 30081 futex(0x7fb31403dd54, FUTEX_WAIT_PRIVATE, 1, NULL 30059 futex(0x7fb314009328, FUTEX_WAKE_PRIVATE, 1) = 0 30059 mprotect(0x7fb31403f000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7fb30db6c000 30059 mprotect(0x7fb314040000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb30db6c000, 4096, PROT_NONE) = 0 30059 clone(child_stack=0x7fb30dc6bff0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7fb30dc6c9d0, tls=0x7fb30dc6c700, child_tidptr=0x7fb30dc6c9d0) = 30082 30082 set_robust_list(0x7fb30dc6c9e0, 0x18 30059 futex(0x7fb314009354, FUTEX_WAIT_PRIVATE, 45, NULL 30082 <... set_robust_list resumed> ) = 0 30082 gettid() = 30082 30082 rt_sigprocmask(SIG_BLOCK, NULL, [QUIT], 8) = 0 30082 rt_sigprocmask(SIG_UNBLOCK, [HUP INT ILL BUS FPE SEGV USR2 TERM], NULL, 8) = 0 30082 rt_sigprocmask(SIG_BLOCK, [QUIT], NULL, 8) = 0 30082 futex(0x7fb314009354, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x7fb314009350, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1}) = 1 30059 <... futex resumed> ) = 0 30082 futex(0x7fb31403fa54, FUTEX_WAIT_PRIVATE, 1, NULL 30059 futex(0x7fb314009328, FUTEX_WAKE_PRIVATE, 1) = 0 30059 futex(0x7fb314017154, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x7fb314017150, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1} 30060 <... futex resumed> ) = 0 30059 <... futex resumed> ) = 1 30060 futex(0x7fb314017128, FUTEX_WAIT_PRIVATE, 2, NULL 30059 futex(0x7fb314017128, FUTEX_WAKE_PRIVATE, 1 30060 <... futex resumed> ) = -1 EAGAIN (Resource temporarily unavailable) 30059 <... futex resumed> ) = 0 30060 futex(0x7fb314017128, FUTEX_WAKE_PRIVATE, 1 30059 futex(0x7fb314018f54, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x7fb314018f50, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1} 30060 <... futex resumed> ) = 0 30061 <... futex resumed> ) = 0 30060 mmap(NULL, 134217728, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0 30061 futex(0x7fb314018f28, FUTEX_WAIT_PRIVATE, 2, NULL 30060 <... mmap resumed> ) = 0x7fb305b6c000 30059 <... futex resumed> ) = 1 30060 munmap(0x7fb305b6c000, 38354944 30059 futex(0x7fb314018f28, FUTEX_WAKE_PRIVATE, 1 30060 <... munmap resumed> ) = 0 30061 <... futex resumed> ) = 0 30060 munmap(0x7fb30c000000, 28753920 30061 futex(0x7fb314018f28, FUTEX_WAKE_PRIVATE, 1 30060 <... munmap resumed> ) = 0 30061 <... futex resumed> ) = 0 30060 mprotect(0x7fb308000000, 135168, PROT_READ|PROT_WRITE 30061 mmap(NULL, 134217728, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0 30060 <... mprotect resumed> ) = 0 30061 <... mmap resumed> ) = 0x7fb300000000 30060 sched_getaffinity(30060, 32, 30061 munmap(0x7fb304000000, 67108864 30060 <... sched_getaffinity resumed> {ffffffff, 0, 0, 0}) = 32 30061 <... munmap resumed> ) = 0 30060 sched_getaffinity(30060, 32, 30061 mprotect(0x7fb300000000, 135168, PROT_READ|PROT_WRITE 30060 <... sched_getaffinity resumed> {ffffffff, 0, 0, 0}) = 32 30061 <... mprotect resumed> ) = 0 30060 futex(0x7fb314017154, FUTEX_WAIT_PRIVATE, 3, NULL 30061 sched_getaffinity(30061, 32, 30059 <... futex resumed> ) = 1 30061 <... sched_getaffinity resumed> {ffffffff, 0, 0, 0}) = 32 30059 futex(0x7fb31401ac54, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x7fb31401ac50, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1} 30061 sched_getaffinity(30061, 32, 30062 <... futex resumed> ) = 0 30061 <... sched_getaffinity resumed> {ffffffff, 0, 0, 0}) = 32 30062 futex(0x7fb31401ac28, FUTEX_WAIT_PRIVATE, 2, NULL 30061 futex(0x7fb314018f54, FUTEX_WAIT_PRIVATE, 3, NULL 30059 <... futex resumed> ) = 1 30059 futex(0x7fb31401ac28, FUTEX_WAKE_PRIVATE, 1 30062 <... futex resumed> ) = 0 30059 <... futex resumed> ) = 1 30062 futex(0x7fb31401ac28, FUTEX_WAKE_PRIVATE, 1 30059 futex(0x7fb31401ca54, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x7fb31401ca50, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1} 30062 <... futex resumed> ) = 0 30063 <... futex resumed> ) = 0 30062 mmap(0x7fb304000000, 67108864, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0 30063 futex(0x7fb31401ca28, FUTEX_WAIT_PRIVATE, 2, NULL 30062 <... mmap resumed> ) = 0x7fb304000000 30059 <... futex resumed> ) = 1 30062 mprotect(0x7fb304000000, 135168, PROT_READ|PROT_WRITE 30059 futex(0x7fb31401ca28, FUTEX_WAKE_PRIVATE, 1 30062 <... mprotect resumed> ) = 0 30063 <... futex resumed> ) = 0 30062 sched_getaffinity(30062, 32, 30063 futex(0x7fb31401ca28, FUTEX_WAKE_PRIVATE, 1 30062 <... sched_getaffinity resumed> {ffffffff, 0, 0, 0}) = 32 30063 <... futex resumed> ) = 0 30062 sched_getaffinity(30062, 32, 30063 mmap(NULL, 134217728, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0 30062 <... sched_getaffinity resumed> {ffffffff, 0, 0, 0}) = 32 30063 <... mmap resumed> ) = 0x7fb2f8000000 30062 futex(0x7fb31401ac54, FUTEX_WAIT_PRIVATE, 3, NULL 30063 munmap(0x7fb2fc000000, 67108864 30059 <... futex resumed> ) = 1 30063 <... munmap resumed> ) = 0 30059 futex(0x7fb31401e754, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x7fb31401e750, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1} 30063 mprotect(0x7fb2f8000000, 135168, PROT_READ|PROT_WRITE 30064 <... futex resumed> ) = 0 30063 <... mprotect resumed> ) = 0 30064 futex(0x7fb31401e728, FUTEX_WAIT_PRIVATE, 2, NULL 30063 sched_getaffinity(30063, 32, 30059 <... futex resumed> ) = 1 30063 <... sched_getaffinity resumed> {ffffffff, 0, 0, 0}) = 32 30059 futex(0x7fb31401e728, FUTEX_WAKE_PRIVATE, 1 30063 sched_getaffinity(30063, 32, 30064 <... futex resumed> ) = 0 30063 <... sched_getaffinity resumed> {ffffffff, 0, 0, 0}) = 32 30064 futex(0x7fb31401e728, FUTEX_WAKE_PRIVATE, 1 30063 futex(0x7fb31401ca54, FUTEX_WAIT_PRIVATE, 3, NULL 30064 <... futex resumed> ) = 0 30059 <... futex resumed> ) = 1 30064 mmap(0x7fb2fc000000, 67108864, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0 30059 futex(0x7fb314020554, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x7fb314020550, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1} 30064 <... mmap resumed> ) = 0x7fb2fc000000 30065 <... futex resumed> ) = 0 30064 mprotect(0x7fb2fc000000, 135168, PROT_READ|PROT_WRITE 30065 futex(0x7fb314020528, FUTEX_WAIT_PRIVATE, 2, NULL 30064 <... mprotect resumed> ) = 0 30059 <... futex resumed> ) = 1 30064 sched_getaffinity(30064, 32, 30059 futex(0x7fb314020528, FUTEX_WAKE_PRIVATE, 1 30064 <... sched_getaffinity resumed> {ffffffff, 0, 0, 0}) = 32 30065 <... futex resumed> ) = 0 30064 sched_getaffinity(30064, 32, 30065 futex(0x7fb314020528, FUTEX_WAKE_PRIVATE, 1 30064 <... sched_getaffinity resumed> {ffffffff, 0, 0, 0}) = 32 30065 <... futex resumed> ) = 0 30064 futex(0x7fb31401e754, FUTEX_WAIT_PRIVATE, 3, NULL 30065 mmap(NULL, 134217728, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0 30059 <... futex resumed> ) = 1 30065 <... mmap resumed> ) = 0x7fb2f0000000 30059 futex(0x7fb314022254, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x7fb314022250, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1} 30065 munmap(0x7fb2f4000000, 67108864 30066 <... futex resumed> ) = 0 30065 <... munmap resumed> ) = 0 30066 futex(0x7fb314022228, FUTEX_WAIT_PRIVATE, 2, NULL 30065 mprotect(0x7fb2f0000000, 135168, PROT_READ|PROT_WRITE 30059 <... futex resumed> ) = 1 30065 <... mprotect resumed> ) = 0 30059 futex(0x7fb314022228, FUTEX_WAKE_PRIVATE, 1 30065 sched_getaffinity(30065, 32, 30066 <... futex resumed> ) = 0 30065 <... sched_getaffinity resumed> {ffffffff, 0, 0, 0}) = 32 30066 futex(0x7fb314022228, FUTEX_WAKE_PRIVATE, 1 30065 sched_getaffinity(30065, 32, 30066 <... futex resumed> ) = 0 30065 <... sched_getaffinity resumed> {ffffffff, 0, 0, 0}) = 32 30066 mmap(0x7fb2f4000000, 67108864, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0 30065 futex(0x7fb314020554, FUTEX_WAIT_PRIVATE, 3, NULL 30066 <... mmap resumed> ) = 0x7fb2f4000000 30059 <... futex resumed> ) = 1 30066 mprotect(0x7fb2f4000000, 135168, PROT_READ|PROT_WRITE 30059 futex(0x7fb314024054, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x7fb314024050, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1} 30066 <... mprotect resumed> ) = 0 30067 <... futex resumed> ) = 0 30066 sched_getaffinity(30066, 32, 30067 futex(0x7fb314024028, FUTEX_WAIT_PRIVATE, 2, NULL 30066 <... sched_getaffinity resumed> {ffffffff, 0, 0, 0}) = 32 30059 <... futex resumed> ) = 1 30066 sched_getaffinity(30066, 32, 30059 futex(0x7fb314024028, FUTEX_WAKE_PRIVATE, 1 30066 <... sched_getaffinity resumed> {ffffffff, 0, 0, 0}) = 32 30067 <... futex resumed> ) = 0 30066 futex(0x7fb314022254, FUTEX_WAIT_PRIVATE, 3, NULL 30067 futex(0x7fb314024028, FUTEX_WAKE_PRIVATE, 1 30059 <... futex resumed> ) = 1 30067 <... futex resumed> ) = 0 30059 futex(0x7fb314025d54, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x7fb314025d50, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1} 30067 mmap(NULL, 134217728, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0 30068 <... futex resumed> ) = 0 30067 <... mmap resumed> ) = 0x7fb2e8000000 30068 futex(0x7fb314025d28, FUTEX_WAIT_PRIVATE, 2, NULL 30067 munmap(0x7fb2ec000000, 67108864 30059 <... futex resumed> ) = 1 30067 <... munmap resumed> ) = 0 30059 futex(0x7fb314025d28, FUTEX_WAKE_PRIVATE, 1 30067 mprotect(0x7fb2e8000000, 135168, PROT_READ|PROT_WRITE 30068 <... futex resumed> ) = 0 30067 <... mprotect resumed> ) = 0 30068 futex(0x7fb314025d28, FUTEX_WAKE_PRIVATE, 1 30067 sched_getaffinity(30067, 32, 30068 <... futex resumed> ) = 0 30067 <... sched_getaffinity resumed> {ffffffff, 0, 0, 0}) = 32 30068 mmap(0x7fb2ec000000, 67108864, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0 30067 sched_getaffinity(30067, 32, 30068 <... mmap resumed> ) = 0x7fb2ec000000 30067 <... sched_getaffinity resumed> {ffffffff, 0, 0, 0}) = 32 30068 mprotect(0x7fb2ec000000, 135168, PROT_READ|PROT_WRITE 30067 futex(0x7fb314024054, FUTEX_WAIT_PRIVATE, 3, NULL 30068 <... mprotect resumed> ) = 0 30059 <... futex resumed> ) = 1 30068 sched_getaffinity(30068, 32, 30059 futex(0x7fb314027b54, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x7fb314027b50, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1} 30068 <... sched_getaffinity resumed> {ffffffff, 0, 0, 0}) = 32 30069 <... futex resumed> ) = 0 30068 sched_getaffinity(30068, 32, 30069 futex(0x7fb314027b28, FUTEX_WAIT_PRIVATE, 2, NULL 30068 <... sched_getaffinity resumed> {ffffffff, 0, 0, 0}) = 32 30059 <... futex resumed> ) = 1 30068 futex(0x7fb314025d54, FUTEX_WAIT_PRIVATE, 3, NULL 30059 futex(0x7fb314027b28, FUTEX_WAKE_PRIVATE, 1 30069 <... futex resumed> ) = 0 30059 <... futex resumed> ) = 1 30069 futex(0x7fb314027b28, FUTEX_WAKE_PRIVATE, 1 30059 futex(0x7fb314029854, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x7fb314029850, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1} 30069 <... futex resumed> ) = 0 30070 <... futex resumed> ) = 0 30069 mmap(NULL, 134217728, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0 30070 futex(0x7fb314029828, FUTEX_WAIT_PRIVATE, 2, NULL 30069 <... mmap resumed> ) = 0x7fb2e0000000 30059 <... futex resumed> ) = 1 30069 munmap(0x7fb2e4000000, 67108864 30059 futex(0x7fb314029828, FUTEX_WAKE_PRIVATE, 1 30069 <... munmap resumed> ) = 0 30070 <... futex resumed> ) = 0 30069 mprotect(0x7fb2e0000000, 135168, PROT_READ|PROT_WRITE 30070 futex(0x7fb314029828, FUTEX_WAKE_PRIVATE, 1 30069 <... mprotect resumed> ) = 0 30070 <... futex resumed> ) = 0 30069 sched_getaffinity(30069, 32, 30070 mmap(0x7fb2e4000000, 67108864, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0 30069 <... sched_getaffinity resumed> {ffffffff, 0, 0, 0}) = 32 30070 <... mmap resumed> ) = 0x7fb2e4000000 30069 sched_getaffinity(30069, 32, 30070 mprotect(0x7fb2e4000000, 135168, PROT_READ|PROT_WRITE 30069 <... sched_getaffinity resumed> {ffffffff, 0, 0, 0}) = 32 30070 <... mprotect resumed> ) = 0 30069 futex(0x7fb314027b54, FUTEX_WAIT_PRIVATE, 3, NULL 30070 sched_getaffinity(30070, 32, 30059 <... futex resumed> ) = 1 30070 <... sched_getaffinity resumed> {ffffffff, 0, 0, 0}) = 32 30059 futex(0x7fb31402b654, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x7fb31402b650, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1} 30070 sched_getaffinity(30070, 32, 30071 <... futex resumed> ) = 0 30070 <... sched_getaffinity resumed> {ffffffff, 0, 0, 0}) = 32 30071 futex(0x7fb31402b628, FUTEX_WAIT_PRIVATE, 2, NULL 30070 futex(0x7fb314029854, FUTEX_WAIT_PRIVATE, 3, NULL 30059 <... futex resumed> ) = 1 30059 futex(0x7fb31402b628, FUTEX_WAKE_PRIVATE, 1 30071 <... futex resumed> ) = 0 30059 <... futex resumed> ) = 1 30071 futex(0x7fb31402b628, FUTEX_WAKE_PRIVATE, 1 30059 futex(0x7fb31402d354, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x7fb31402d350, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1} 30071 <... futex resumed> ) = 0 30072 <... futex resumed> ) = 0 30071 mmap(NULL, 134217728, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0 30072 futex(0x7fb31402d328, FUTEX_WAIT_PRIVATE, 2, NULL 30071 <... mmap resumed> ) = 0x7fb2d8000000 30059 <... futex resumed> ) = 1 30071 munmap(0x7fb2dc000000, 67108864 30059 futex(0x7fb31402d328, FUTEX_WAKE_PRIVATE, 1 30071 <... munmap resumed> ) = 0 30072 <... futex resumed> ) = 0 30071 mprotect(0x7fb2d8000000, 135168, PROT_READ|PROT_WRITE 30072 futex(0x7fb31402d328, FUTEX_WAKE_PRIVATE, 1 30071 <... mprotect resumed> ) = 0 30072 <... futex resumed> ) = 0 30059 <... futex resumed> ) = 1 30072 mmap(0x7fb2dc000000, 67108864, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0 30071 sched_getaffinity(30071, 32, 30072 <... mmap resumed> ) = 0x7fb2dc000000 30071 <... sched_getaffinity resumed> {ffffffff, 0, 0, 0}) = 32 30072 mprotect(0x7fb2dc000000, 135168, PROT_READ|PROT_WRITE 30071 sched_getaffinity(30071, 32, 30072 <... mprotect resumed> ) = 0 30071 <... sched_getaffinity resumed> {ffffffff, 0, 0, 0}) = 32 30072 sched_getaffinity(30072, 32, 30071 futex(0x7fb31402b654, FUTEX_WAIT_PRIVATE, 3, NULL 30072 <... sched_getaffinity resumed> {ffffffff, 0, 0, 0}) = 32 30059 futex(0x7fb31402f154, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x7fb31402f150, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1} 30072 sched_getaffinity(30072, 32, 30073 <... futex resumed> ) = 0 30072 <... sched_getaffinity resumed> {ffffffff, 0, 0, 0}) = 32 30073 futex(0x7fb31402f128, FUTEX_WAIT_PRIVATE, 2, NULL 30072 futex(0x7fb31402d354, FUTEX_WAIT_PRIVATE, 3, NULL 30059 <... futex resumed> ) = 1 30059 futex(0x7fb31402f128, FUTEX_WAKE_PRIVATE, 1 30073 <... futex resumed> ) = 0 30059 <... futex resumed> ) = 1 30073 futex(0x7fb31402f128, FUTEX_WAKE_PRIVATE, 1 30059 futex(0x7fb314030e54, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x7fb314030e50, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1} 30073 <... futex resumed> ) = 0 30074 <... futex resumed> ) = 0 30073 mmap(NULL, 134217728, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0 30074 futex(0x7fb314030e28, FUTEX_WAIT_PRIVATE, 2, NULL 30073 <... mmap resumed> ) = 0x7fb2d0000000 30059 <... futex resumed> ) = 1 30073 munmap(0x7fb2d4000000, 67108864 30059 futex(0x7fb314030e28, FUTEX_WAKE_PRIVATE, 1 30073 <... munmap resumed> ) = 0 30074 <... futex resumed> ) = 0 30073 mprotect(0x7fb2d0000000, 135168, PROT_READ|PROT_WRITE 30074 futex(0x7fb314030e28, FUTEX_WAKE_PRIVATE, 1 30073 <... mprotect resumed> ) = 0 30074 <... futex resumed> ) = 0 30073 sched_getaffinity(30073, 32, 30074 mmap(0x7fb2d4000000, 67108864, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0 30073 <... sched_getaffinity resumed> {ffffffff, 0, 0, 0}) = 32 30074 <... mmap resumed> ) = 0x7fb2d4000000 30073 sched_getaffinity(30073, 32, 30074 mprotect(0x7fb2d4000000, 135168, PROT_READ|PROT_WRITE 30073 <... sched_getaffinity resumed> {ffffffff, 0, 0, 0}) = 32 30074 <... mprotect resumed> ) = 0 30073 futex(0x7fb31402f154, FUTEX_WAIT_PRIVATE, 3, NULL 30074 sched_getaffinity(30074, 32, 30059 <... futex resumed> ) = 1 30074 <... sched_getaffinity resumed> {ffffffff, 0, 0, 0}) = 32 30059 futex(0x7fb314032c54, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x7fb314032c50, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1} 30074 sched_getaffinity(30074, 32, 30075 <... futex resumed> ) = 0 30074 <... sched_getaffinity resumed> {ffffffff, 0, 0, 0}) = 32 30075 futex(0x7fb314032c28, FUTEX_WAIT_PRIVATE, 2, NULL 30074 futex(0x7fb314030e54, FUTEX_WAIT_PRIVATE, 3, NULL 30059 <... futex resumed> ) = 1 30059 futex(0x7fb314032c28, FUTEX_WAKE_PRIVATE, 1 30075 <... futex resumed> ) = 0 30059 <... futex resumed> ) = 1 30075 futex(0x7fb314032c28, FUTEX_WAKE_PRIVATE, 1 30059 futex(0x7fb314034954, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x7fb314034950, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1} 30075 <... futex resumed> ) = 0 30076 <... futex resumed> ) = 0 30075 mmap(NULL, 134217728, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0 30076 futex(0x7fb314034928, FUTEX_WAIT_PRIVATE, 2, NULL 30075 <... mmap resumed> ) = 0x7fb2c8000000 30059 <... futex resumed> ) = 1 30075 munmap(0x7fb2cc000000, 67108864 30059 futex(0x7fb314034928, FUTEX_WAKE_PRIVATE, 1 30075 <... munmap resumed> ) = 0 30076 <... futex resumed> ) = 0 30075 mprotect(0x7fb2c8000000, 135168, PROT_READ|PROT_WRITE 30076 futex(0x7fb314034928, FUTEX_WAKE_PRIVATE, 1 30075 <... mprotect resumed> ) = 0 30076 <... futex resumed> ) = 0 30075 sched_getaffinity(30075, 32, 30076 mmap(0x7fb2cc000000, 67108864, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0 30075 <... sched_getaffinity resumed> {ffffffff, 0, 0, 0}) = 32 30076 <... mmap resumed> ) = 0x7fb2cc000000 30075 sched_getaffinity(30075, 32, 30076 mprotect(0x7fb2cc000000, 135168, PROT_READ|PROT_WRITE 30075 <... sched_getaffinity resumed> {ffffffff, 0, 0, 0}) = 32 30076 <... mprotect resumed> ) = 0 30075 futex(0x7fb314032c54, FUTEX_WAIT_PRIVATE, 3, NULL 30076 sched_getaffinity(30076, 32, 30059 <... futex resumed> ) = 1 30076 <... sched_getaffinity resumed> {ffffffff, 0, 0, 0}) = 32 30059 futex(0x7fb314036754, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x7fb314036750, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1} 30076 sched_getaffinity(30076, 32, 30077 <... futex resumed> ) = 0 30076 <... sched_getaffinity resumed> {ffffffff, 0, 0, 0}) = 32 30077 futex(0x7fb314036728, FUTEX_WAIT_PRIVATE, 2, NULL 30076 futex(0x7fb314034954, FUTEX_WAIT_PRIVATE, 3, NULL 30059 <... futex resumed> ) = 1 30059 futex(0x7fb314036728, FUTEX_WAKE_PRIVATE, 1 30077 <... futex resumed> ) = 0 30059 <... futex resumed> ) = 1 30077 futex(0x7fb314036728, FUTEX_WAKE_PRIVATE, 1 30059 futex(0x7fb314038454, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x7fb314038450, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1} 30077 <... futex resumed> ) = 0 30078 <... futex resumed> ) = 0 30077 mmap(NULL, 134217728, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0 30078 futex(0x7fb314038428, FUTEX_WAIT_PRIVATE, 2, NULL 30077 <... mmap resumed> ) = 0x7fb2c0000000 30059 <... futex resumed> ) = 1 30077 munmap(0x7fb2c4000000, 67108864 30059 futex(0x7fb314038428, FUTEX_WAKE_PRIVATE, 1 30077 <... munmap resumed> ) = 0 30078 <... futex resumed> ) = 0 30077 mprotect(0x7fb2c0000000, 135168, PROT_READ|PROT_WRITE 30078 futex(0x7fb314038428, FUTEX_WAKE_PRIVATE, 1 30077 <... mprotect resumed> ) = 0 30078 <... futex resumed> ) = 0 30077 sched_getaffinity(30077, 32, 30078 mmap(0x7fb2c4000000, 67108864, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0 30077 <... sched_getaffinity resumed> {ffffffff, 0, 0, 0}) = 32 30078 <... mmap resumed> ) = 0x7fb2c4000000 30077 sched_getaffinity(30077, 32, 30078 mprotect(0x7fb2c4000000, 135168, PROT_READ|PROT_WRITE 30077 <... sched_getaffinity resumed> {ffffffff, 0, 0, 0}) = 32 30078 <... mprotect resumed> ) = 0 30077 futex(0x7fb314036754, FUTEX_WAIT_PRIVATE, 3, NULL 30078 sched_getaffinity(30078, 32, 30059 <... futex resumed> ) = 1 30078 <... sched_getaffinity resumed> {ffffffff, 0, 0, 0}) = 32 30059 futex(0x7fb31403a254, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x7fb31403a250, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1} 30078 sched_getaffinity(30078, 32, 30079 <... futex resumed> ) = 0 30078 <... sched_getaffinity resumed> {ffffffff, 0, 0, 0}) = 32 30079 futex(0x7fb31403a228, FUTEX_WAIT_PRIVATE, 2, NULL 30078 futex(0x7fb314038454, FUTEX_WAIT_PRIVATE, 3, NULL 30059 <... futex resumed> ) = 1 30059 futex(0x7fb31403a228, FUTEX_WAKE_PRIVATE, 1 30079 <... futex resumed> ) = 0 30059 <... futex resumed> ) = 1 30079 futex(0x7fb31403a228, FUTEX_WAKE_PRIVATE, 1 30059 futex(0x7fb31403bf54, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x7fb31403bf50, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1} 30079 <... futex resumed> ) = 0 30080 <... futex resumed> ) = 0 30079 mmap(NULL, 134217728, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0 30080 futex(0x7fb31403bf28, FUTEX_WAIT_PRIVATE, 2, NULL 30079 <... mmap resumed> ) = 0x7fb2b8000000 30059 <... futex resumed> ) = 1 30079 munmap(0x7fb2bc000000, 67108864 30059 futex(0x7fb31403bf28, FUTEX_WAKE_PRIVATE, 1 30079 <... munmap resumed> ) = 0 30080 <... futex resumed> ) = 0 30079 mprotect(0x7fb2b8000000, 135168, PROT_READ|PROT_WRITE 30080 futex(0x7fb31403bf28, FUTEX_WAKE_PRIVATE, 1 30079 <... mprotect resumed> ) = 0 30080 <... futex resumed> ) = 0 30079 sched_getaffinity(30079, 32, 30080 mmap(0x7fb2bc000000, 67108864, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0 30079 <... sched_getaffinity resumed> {ffffffff, 0, 0, 0}) = 32 30080 <... mmap resumed> ) = 0x7fb2bc000000 30079 sched_getaffinity(30079, 32, 30080 mprotect(0x7fb2bc000000, 135168, PROT_READ|PROT_WRITE 30079 <... sched_getaffinity resumed> {ffffffff, 0, 0, 0}) = 32 30080 <... mprotect resumed> ) = 0 30079 futex(0x7fb31403a254, FUTEX_WAIT_PRIVATE, 3, NULL 30080 sched_getaffinity(30080, 32, 30059 <... futex resumed> ) = 1 30080 <... sched_getaffinity resumed> {ffffffff, 0, 0, 0}) = 32 30059 futex(0x7fb31403dd54, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x7fb31403dd50, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1} 30080 sched_getaffinity(30080, 32, 30081 <... futex resumed> ) = 0 30080 <... sched_getaffinity resumed> {ffffffff, 0, 0, 0}) = 32 30081 futex(0x7fb31403dd28, FUTEX_WAIT_PRIVATE, 2, NULL 30080 futex(0x7fb31403bf54, FUTEX_WAIT_PRIVATE, 3, NULL 30059 <... futex resumed> ) = 1 30059 futex(0x7fb31403dd28, FUTEX_WAKE_PRIVATE, 1 30081 <... futex resumed> ) = 0 30059 <... futex resumed> ) = 1 30081 futex(0x7fb31403dd28, FUTEX_WAKE_PRIVATE, 1 30059 futex(0x7fb31403fa54, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x7fb31403fa50, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1} 30081 <... futex resumed> ) = 0 30082 <... futex resumed> ) = 0 30081 mmap(NULL, 134217728, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0 30082 futex(0x7fb31403fa28, FUTEX_WAIT_PRIVATE, 2, NULL 30081 <... mmap resumed> ) = 0x7fb2b0000000 30059 <... futex resumed> ) = 1 30081 munmap(0x7fb2b4000000, 67108864 30059 futex(0x7fb31403fa28, FUTEX_WAKE_PRIVATE, 1 30081 <... munmap resumed> ) = 0 30082 <... futex resumed> ) = 0 30081 mprotect(0x7fb2b0000000, 135168, PROT_READ|PROT_WRITE 30082 futex(0x7fb31403fa28, FUTEX_WAKE_PRIVATE, 1 30081 <... mprotect resumed> ) = 0 30082 <... futex resumed> ) = 0 30081 sched_getaffinity(30081, 32, 30082 mmap(0x7fb2b4000000, 67108864, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0 30081 <... sched_getaffinity resumed> {ffffffff, 0, 0, 0}) = 32 30082 <... mmap resumed> ) = 0x7fb2b4000000 30081 sched_getaffinity(30081, 32, 30082 mprotect(0x7fb2b4000000, 135168, PROT_READ|PROT_WRITE 30081 <... sched_getaffinity resumed> {ffffffff, 0, 0, 0}) = 32 30082 <... mprotect resumed> ) = 0 30081 futex(0x7fb31403dd54, FUTEX_WAIT_PRIVATE, 3, NULL 30082 sched_getaffinity(30082, 32, 30059 <... futex resumed> ) = 1 30082 <... sched_getaffinity resumed> {ffffffff, 0, 0, 0}) = 32 30082 sched_getaffinity(30082, 32, 30059 mmap(NULL, 398917632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0 30082 <... sched_getaffinity resumed> {ffffffff, 0, 0, 0}) = 32 30059 <... mmap resumed> ) = 0x7fb298390000 30082 futex(0x7fb31403fa54, FUTEX_WAIT_PRIVATE, 3, NULL 30059 mmap(0x7fb298390000, 398917632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fb298390000 30059 mmap(NULL, 99729408, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x7fb292474000 30059 mmap(0x7fb292474000, 99729408, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fb292474000 30059 mprotect(0x7fb314041000, 159744, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb314068000, 8192, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb31406a000, 32768, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb314072000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb314073000, 8192, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb314075000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb314076000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb314077000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb314078000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb314079000, 8192, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb31407b000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb31407c000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb31407d000, 4096, PROT_READ|PROT_WRITE) = 0 30059 open("/proc/meminfo", O_RDONLY|O_CLOEXEC) = 4 30059 fstat(4, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0 30059 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb31b30d000 30059 read(4, "MemTotal: 49523852 kB\nMemFree: 28514436 kB\nBuffers: 632 kB\nCached: 14320516 kB\nSwapCached: 19544 kB\nActive: 13087804 kB\nInactive: 4802424 kB\nActive(anon): 3558248 kB\nInactive(anon): 14288 kB\nActive(file): 9529556 kB\nInactive(file): 4788136 kB\nUnevictable: 14772 kB\nMlocked: 14772 kB\nSwapTotal: 33554424 kB\nSwapFree: 33207392 kB\nDirty: 60 kB\nWriteback: 0 kB\nAnonPages: 3575108 kB\nMapped: 58996 kB\nShmem: 64 kB\nSlab: 1873708 kB\nSReclaimable: 458976 kB\nSUnreclaim: 1414732 kB\nKernelStack: 7656 kB\nPageTables: 20856 kB\nNFS_Unstable: 0 kB\nBounce: 0 kB\nWritebackTmp: 0 kB\nCommitLimit: 83078276 kB\nCommitted_AS: 19576848 kB\nVmallocTotal: 34359738367 kB\nVmallocUsed: 447180 kB\nVmallocChunk: 34333097552 kB\nHardwareCorrupted: 0 kB\nHugePages_Total: 0\nHugePages_Free: "..., 1024) = 1024 30059 close(4) = 0 30059 munmap(0x7fb31b30d000, 4096) = 0 30059 mprotect(0x7fb31407e000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb31407f000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb314080000, 8192, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb314082000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb314083000, 32768, PROT_READ|PROT_WRITE) = 0 30059 lstat("/software", {st_mode=S_IFDIR|0755, st_size=20480, ...}) = 0 30059 lstat("/software/jdk1.7.0_25", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 30059 lstat("/software/jdk1.7.0_25/jre", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 30059 lstat("/software/jdk1.7.0_25/jre/lib", {st_mode=S_IFDIR|0755, st_size=8192, ...}) = 0 30059 lstat("/software/jdk1.7.0_25/jre/lib/rt.jar", {st_mode=S_IFREG|0644, st_size=62611458, ...}) = 0 30059 open("/software/jdk1.7.0_25/jre/lib/rt.jar", O_RDONLY) = 4 30059 fstat(4, {st_mode=S_IFREG|0644, st_size=62611458, ...}) = 0 30059 fcntl(4, F_GETFD) = 0 30059 fcntl(4, F_SETFD, FD_CLOEXEC) = 0 30059 read(4, "PK\3\4", 4) = 4 30059 lseek(4, 0, SEEK_END) = 62611458 30059 lseek(4, 62611330, SEEK_SET) = 62611330 30059 read(4, "\0\0\0\0\0\242C\237\3java/lang/String.classPK\1\2\n\0\n\0\0\0\0\0003\246\305B\20\350e\344\353\5\0\0\353\5\0\0\26\0\0\0\0\0\0\0\0\0\0\0\0\0\24\214\237\3java/lang/Object.classPK\5\6\0\0\0\0\233J\233J\262\315\33\0003\222\237\3\7\0PACK200", 128) = 128 30059 lseek(4, 62611451, SEEK_SET) = 62611451 30059 read(4, "PACK200", 7) = 7 30059 mmap(NULL, 1822715, PROT_READ, MAP_SHARED, 4, 0x39f9000) = 0x7fb30d9af000 30059 mmap(NULL, 458752, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb30d93f000 30059 mprotect(0x7fb31408b000, 36864, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 60787732, SEEK_SET) = 60787732 30059 read(4, "PK\3\4\n\0\0\0\0\0003\246\305B\20\350e\344\353\5\0\0\353\5\0\0\26\0\0\0", 30) = 30 30059 lseek(4, 60787784, SEEK_SET) = 60787784 30059 read(4, "\312\376\272\276\0\0\0003\0O\7\0002\n\0\1\0003\n\0\22\0004\n\0005\0006\n\0\1\0007\10\0008\n\0\22\0009\n\0:\0;\n\0\1\0<\7\0=\10\0>\n\0\n\0?\3\0\17B?\10\0@\3\0\7\241 \n\0\22\0A\n\0\22\0B\7\0C\1\0\6\1\0\3()V\1\0\4Code\1\0\17LineNumberTable\1\0\17registerNatives\1\0\10getClass\1\0\23()Ljava/lang/Class;\1\0\tSignature\1\0\26()Ljava/lang/Class<*>;\1\0\10hashCode\1\0\3()I\1\0\6equals\1\0\25(Ljava/lang/Object;)Z\1\0\rStackMapTable\1\0\5clone\1\0\24()Ljava/lang/Object;\1\0\nExceptions\7\0D\1\0\10toString\1\0\24()Ljava/lang/String;\1\0\6notify\1\0\tnotifyAll\1\0\4wait\1\0\4(J)V\7\0E\1\0\5(JI)V\1\0\10finalize\7\0F\1\0\10\1\0\nSourceFile\1\0\vObject.java\1\0\27java/lang/StringBuilder\f\0\23\0\24\f\0\30\0\31\7\0G\f\0H\0&\f\0I\0J\1\0\1@\f\0\34\0\35\7\0K\f\0L\0M\f\0%\0&\1\0\"java/lang/IllegalArgumentException\1\0\31timeout value is negative\f\0\23\0N\1\0%nanosecond timeout value out of range\f\0)\0*\f\0\27\0\24\1\0\20java/lang/Object\1\0$java/lang/CloneNotSupportedException\1\0\36java/lang/InterruptedException\1\0\23java/lang/Throwable\1\0\17java/lang/Class\1\0\7getName\1\0\6append\1\0-(Ljava/lang/String;)Ljava/lang/StringBuilder;\1\0\21java/lang/Integer\1\0\vtoHexString\1\0\25(I)Ljava/lang/String;\1\0\25(Ljava/lang/String;)V\0!\0\22\0\0\0\0\0\0\0\16\0\1\0\23\0\24\0\1\0\25\0\0\0\31\0\0\0\1\0\0\0\1\261\0\0\0\1\0\26\0\0\0\6\0\1\0\0\0%\1\n\0\27\0\24\0\0\1\21\0\30\0\31\0\1\0"..., 1515) = 1515 30059 mprotect(0x7fb314094000, 32768, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb31409c000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb31409d000, 16384, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 60769186, SEEK_SET) = 60769186 30059 read(4, "PK\3\4\n\0\0\0\0\0003\246\305B/?y,>H\0\0>H\0\0\26\0\0\0", 30) = 30 30059 lseek(4, 60769238, SEEK_SET) = 60769238 30059 read(4, "\312\376\272\276\0\0\0003\2\20\3\205\353\312k\3\302\262\2565\3\314\236-Q\3\346Tkd\3\0\0\330\0\3\0\0\333\377\3\0\0\337\377\3\0\1\0\0\3\33\2075\223\10\0C\10\0]\10\0`\10\0a\10\0y\10\0\263\10\0\271\10\0\325\10\0\327\1\0\3()I\1\0\3()J\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4()[B\1\0\4()[C\1\0\4(C)C\1\0\25(C)Ljava/lang/String;\1\0\25(D)Ljava/lang/String;\1\0\4(I)C\1\0\4(I)I\1\0\25(I)Ljava/lang/String;\1\0\4(I)V\1\0\4(I)Z\1\0\5(I)[C\1\0\5(II)I\1\0\26(II)Ljava/lang/String;\1\0\10(II[BI)V\1\0\7(II[C)V\1\0\10(II[CI)V\1\0\7(I[CI)I\1\0\7(I[CI)V\1\0\10(I[CII)I\1\0\25(Ljava/lang/Object;)I\1\0&(Ljava/lang/Object;)Ljava/lang/String;\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)I\1\0&(Ljava/lang/String;)Ljava/lang/String;\1\0\25(Ljava/lang/String;)V\1\0\25(Ljava/lang/String;)Z\1\0\25(Ljava/util/Locale;)V\1\0\5([B)V\1\0\6([BI)V\1\0\7([BII)V\1\0\10([BII)[C\1\0\10([BIII)V\1\0\5([C)V\1\0\6([CI)V\1\0\7([CI)[C\1\0\7([CII)I\1\0\7([CII)V\1\0\10([CII)[B\1\0\10([CII)[C\1\0\t([CIIII)I\1\0\f([CII[CIII)I\1\0\6([CZ)V\1\0\7([III)V\1\0\f.$|()[{^?*+\\\1\0\10\1\0\6\1\0\26CASE_INSENSITIVE_ORDER\1\0\4Code\1\0\rConstantValue\1\0\nDeprecated\1\0\7ENGLISH\1\0\nExceptions\1\0\fHASHING_SEED\1\0\1I\1\0\fInnerClasses\1\0\1J\1\0\17LineNumberTable\1\0\22Ljava/util/Locale;\1\0\31RuntimeVisibleAnnotations\1\0\tSignature\1\0\nSourceFile\1\0\rStac"..., 18494) = 18494 30059 mprotect(0x7fb3140a1000, 8192, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb3140a3000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb3140a4000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 60769017, SEEK_SET) = 60769017 30059 read(4, "PK\3\4\n\0\0\0\0\0003\246\305B\316P\337\256q\0\0\0q\0\0\0\32\0\0\0", 30) = 30 30059 lseek(4, 60769073, SEEK_SET) = 60769073 30059 read(4, "\312\376\272\276\0\0\0003\0\7\1\0\nSourceFile\1\0\24java/io/Serializable\1\0\20java/lang/Object\7\0\2\7\0\3\1\0\21Serializable.java\6\1\0\4\0\5\0\0\0\0\0\0\0\1\0\1\0\0\0\2\0\6", 113) = 113 30059 lseek(4, 60768726, SEEK_SET) = 60768726 30059 read(4, "PK\3\4\n\0\0\0\0\0003\246\305Bi\366\226g\353\0\0\0\353\0\0\0\32\0\0\0", 30) = 30 30059 lseek(4, 60768782, SEEK_SET) = 60768782 30059 read(4, "\312\376\272\276\0\0\0003\0\f\1\0\25(Ljava/lang/Object;)I\1\0\6(TT;)I\1\0\tSignature\1\0\nSourceFile\1\0\tcompareTo\1\0\24java/lang/Comparable\1\0\20java/lang/Object\7\0\6\7\0\7\1\0(Ljava/lang/Object;\1\0\17Comparable.java\6\1\0\10\0\t\0\0\0\0\0\1\4\1\0\5\0\1\0\1\0\3\0\0\0\2\0\2\0\2\0\4\0\0\0\2\0\v\0\3\0\0\0\2\0\n", 235) = 235 30059 lseek(4, 60768411, SEEK_SET) = 60768411 30059 read(4, "PK\3\4\n\0\0\0\0\0003\246\305B:\224C\341\1\1\0\0\1\1\0\0\34\0\0\0", 30) = 30 30059 lseek(4, 60768469, SEEK_SET) = 60768469 30059 read(4, "\312\376\272\276\0\0\0003\0\17\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\4(I)C\1\0\nSourceFile\1\0\6charAt\1\0\26java/lang/CharSequence\1\0\20java/lang/Object\1\0\6length\1\0\vsubSequence\1\0\10toString\7\0\6\7\0\7\1\0\34(II)Ljava/lang/CharSequence;\1\0\21CharSequence.java\6\1\0\v\0\f\0\0\0\0\0\4\4\1\0\10\0\1\0\0\4\1\0\5\0\3\0\0\4\1\0\t\0\r\0\0\4\1\0\n\0\2\0\0\0\1\0\4\0\0\0\2\0\16", 257) = 257 30059 lseek(4, 60739335, SEEK_SET) = 60739335 30059 read(4, "PK\3\4\n\0\0\0\0\0003\246\305B\235\r\261\31aq\0\0aq\0\0\25\0\0\0", 30) = 30 30059 lseek(4, 60739386, SEEK_SET) = 60739386 30059 read(4, "\312\376\272\276\0\0\0003\4\2\10\0\24\10\0\25\10\0\27\10\0003\10\0004\10\0005\10\0006\10\0007\10\0=\10\0B\10\0C\10\0O\10\0P\10\0a\10\0v\10\0z\10\0\353\10\1G\10\1u\1\0\0\1\0\24 is not an enum type\1\0\4 to \1\0\1(\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\5()TT;\1\0\3()V\1\0\3()Z\1\0\4()[B\1\0\6()[TT;\1\0\4(C)Z\1\0\4(I)C\1\0\4(I)I\1\0\25(I)Ljava/lang/String;\1\0\4(I)V\1\0\4(I)Z\1\0\26(II)Ljava/lang/String;\1\0&(Ljava/lang/Object;)Ljava/lang/String;\1\0\25(Ljava/lang/Object;)V\1\0\25(Ljava/lang/Object;)Z\1\0009(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;\1\0\25(Ljava/lang/String;)I\1\0%(Ljava/lang/String;)Ljava/lang/Class;\1\0&(Ljava/lang/String;)Ljava/lang/String;\1\0\25(Ljava/lang/String;)V\1\0\25(Ljava/lang/String;)Z\1\0@(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;\1\0\30(Ljava/lang/Throwable;)V\1\0\4(Z)Z\1\0'([Ljava/lang/Object;)Ljava/lang/Object;\1\0\1)\1\0\2, \1\0\1.\1\0\7.\1\0\1/\1\0\10\1\0\6\1\0\16ALL_PERMISSION\1\0\nANNOTATION\1\0\36CHECK_MEMBER_ACCESS_PERMISSION\1\0;Can not call newInstance() on the Class for java.lang.Class\1\0\fCannot cast \1\0\4Code\1\0\rConstantValue\1\0\4ENUM\1\0\37Enclosing constructor not found\1\0\32Enclosing method not found\1\0\5Entry\1\0\nExceptions\1"..., 29025) = 29025 30059 mprotect(0x7fb3140a5000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb3140a6000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb3140a7000, 8192, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb3140a9000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb3140aa000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb3140ab000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 60739001, SEEK_SET) = 60739001 30059 read(4, "PK\3\4\n\0\0\0\0\0003\246\305B\355\t\27\245\6\1\0\0\6\1\0\0*\0\0\0", 30) = 30 30059 lseek(4, 60739073, SEEK_SET) = 60739073 30059 read(4, "\312\376\272\276\0\0\0003\0\v\1\0\tSignature\1\0\nSourceFile\1\0\21getTypeParameters\1\0\20java/lang/Object\1\0$java/lang/reflect/GenericDeclaration\7\0\4\7\0\5\1\0#()[Ljava/lang/reflect/TypeVariable;\1\0&()[Ljava/lang/reflect/TypeVariable<*>;\1\0\27GenericDeclaration.java\6\1\0\7\0\6\0\0\0\0\0\1\4\1\0\3\0\10\0\1\0\1\0\0\0\2\0\t\0\1\0\2\0\0\0\2\0\n", 262) = 262 30059 lseek(4, 60738836, SEEK_SET) = 60738836 30059 read(4, "PK\3\4\n\0\0\0\0\0003\246\305B/ \3239k\0\0\0k\0\0\0\34\0\0\0", 30) = 30 30059 lseek(4, 60738894, SEEK_SET) = 60738894 30059 read(4, "\312\376\272\276\0\0\0003\0\7\1\0\nSourceFile\1\0\20java/lang/Object\1\0\26java/lang/reflect/Type\7\0\2\7\0\3\1\0\tType.java\6\1\0\5\0\4\0\0\0\0\0\0\0\1\0\1\0\0\0\2\0\6", 107) = 107 30059 lseek(4, 60738251, SEEK_SET) = 60738251 30059 read(4, "PK\3\4\n\0\0\0\0\0003\246\305B>\245\360/\3\2\0\0\3\2\0\0(\0\0\0", 30) = 30 30059 lseek(4, 60738321, SEEK_SET) = 60738321 30059 read(4, "\312\376\272\276\0\0\0003\0\21\1\0\tSignature\1\0\nSourceFile\1\0\rgetAnnotation\1\0\16getAnnotations\1\0\26getDeclaredAnnotations\1\0\23isAnnotationPresent\1\0\20java/lang/Object\1\0\"java/lang/reflect/AnnotatedElement\7\0\7\7\0\10\1\0A(Ljava/lang/Class;)TT;\1\0\24(Ljava/lang/Class;)Z\1\0$()[Ljava/lang/annotation/Annotation;\1\0004(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;\1\0008(Ljava/lang/Class<+Ljava/lang/annotation/Annotation;>;)Z\1\0\25AnnotatedElement.java\6\1\0\n\0\t\0\0\0\0\0\4\4\1\0\6\0\f\0\1\0\1\0\0\0\2\0\17\4\1\0\3\0\16\0\1\0\1\0\0\0\2\0\v\4\1\0\4\0\r\0\0\4\1\0\5\0\r\0\0\0\1\0\2\0\0\0\2\0\20", 515) = 515 30059 lseek(4, 60738087, SEEK_SET) = 60738087 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\327\313\306\21m\0\0\0m\0\0\0\31\0\0\0", 30) = 30 30059 lseek(4, 60738142, SEEK_SET) = 60738142 30059 read(4, "\312\376\272\276\0\0\0003\0\7\1\0\nSourceFile\1\0\23java/lang/Cloneable\1\0\20java/lang/Object\7\0\2\7\0\3\1\0\16Cloneable.java\6\1\0\4\0\5\0\0\0\0\0\0\0\1\0\1\0\0\0\2\0\6", 109) = 109 30059 lseek(4, 60714839, SEEK_SET) = 60714839 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\21K\221\272\227Z\0\0\227Z\0\0\33\0\0\0", 30) = 30 30059 lseek(4, 60714896, SEEK_SET) = 60714896 30059 read(4, "\312\376\272\276\0\0\0003\3K\10\0\23\10\0\24\10\0\25\10\0\26\10\0\27\10\0/\10\0002\10\0003\10\0004\10\0:\10\0@\10\0A\10\0d\10\0\264\10\0\265\10\0\370\10\1\t\10\1\32\1\0\0\1\0& already loaded in another classloader\1\0\25 in java.library.path\1\0' is being loaded in another classloader\1\0]\"'s signer information does not match signer information of other classes in the same package\1\0\3()I\1\0\3()J\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4()[B\1\0\4(I)C\1\0\4(I)I\1\0\26(II)Ljava/lang/String;\1\0\4(J)V\1\0\25(Ljava/lang/Object;)V\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)I\1\0%(Ljava/lang/String;)Ljava/lang/Class;\1\0&(Ljava/lang/String;)Ljava/lang/Object;\1\0&(Ljava/lang/String;)Ljava/lang/String;\1\0\25(Ljava/lang/String;)V\1\0\25(Ljava/lang/String;)Z\1\0'(Ljava/lang/String;Ljava/lang/String;)V\1\0\26(Ljava/lang/String;Z)V\1\0\30(Ljava/lang/Throwable;)V\1\0\4(Z)V\1\0\10([BII)[B\1\0\1.\1\0\10\1\0\6\1\0\vCan't load \1\0\24Can't load library: \1\0;ClassLoader.findLibrary failed to return an absolute path: \1\0\20ClassLoader.java\1\0\4Code\1\0\nDeprecated\1\0\nExceptions\1\0\32GET_CLASSLOADER_PERMISSION\1\0\rIllegalName: \1\0\fInnerClasses\1\0\1J\1\0\17LineNumberTable\1\0\22Ljava/lang/Objec"..., 23191) = 23191 30059 mprotect(0x7fb3140ac000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb3140ad000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb3140ae000, 8192, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb3140b0000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 60707794, SEEK_SET) = 60707794 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\"P\246fQ\33\0\0Q\33\0\0\26\0\0\0", 30) = 30 30059 lseek(4, 60707846, SEEK_SET) = 60707846 30059 read(4, "\312\376\272\276\0\0\0003\1d\10\0\f\10\0B\10\0C\10\0K\10\0i\10\0j\10\0k\10\0~\10\0\206\10\0\217\10\0\220\1\0\0\1\0\3()J\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\4(I)V\1\0\25(Ljava/lang/Object;)I\1\0\25(Ljava/lang/Object;)Z\1\0&(Ljava/lang/String;)Ljava/lang/String;\1\0\25(Ljava/lang/String;)V\1\0'(Ljava/lang/String;Ljava/lang/String;)V\1\0\4(Z)V\1\0\10\1\0\6\1\0\4Code\1\0\nDeprecated\1\0\nExceptions\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\25Ljava/io/PrintStream;\1\0\22Ljava/lang/String;\1\0\31RuntimeVisibleAnnotations\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\3add\1\0\6append\1\0\tarraycopy\1\0\6booted\1\0\7checkIO\1\0\10checkKey\1\0\22checkPackageAccess\1\0\17checkPermission\1\0\25checkPropertiesAccess\1\0\23checkPropertyAccess\1\0\rclearProperty\1\0\4cons\1\0\7console\1\0\rcurrentThread\1\0\21currentTimeMillis\1\0\fdoPrivileged\1\0\6equals\1\0\3err\1\0\4exit\1\0\2gc\1\0\16getCallerClass\1\0\10getClass\1\0\16getClassLoader\1\0\17getJavaIOAccess\1\0\rgetProperties\1\0\vgetProperty\1\0\ngetRuntime\1\0\22getSecurityManager\1\0\16getThreadGroup\1\0\6getenv\1\0\7getenv.\1\0\10getenv.*\1\0\20identityHashCode\1\0\2in\1\0\20inheritedChannel\1\0\4init\1\0\16initProperties\1\0\27initializeOSEnvironment\1\0\25initializeSystemClass\1\0\tjav"..., 6993) = 6993 30059 mprotect(0x7fb3140b1000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 60699593, SEEK_SET) = 60699593 30059 read(4, "PK\3\4\n\0\0\0\0\0003\246\305Bl\322\351m\322\37\0\0\322\37\0\0\31\0\0\0", 30) = 30 30059 lseek(4, 60699648, SEEK_SET) = 60699648 30059 read(4, "\312\376\272\276\0\0\0003\1K\n\0\\\0\271\t\0M\0\272\t\0M\0\273\t\0M\0\274\t\0M\0\275\t\0M\0\276\n\0M\0\277\t\0M\0\300\n\0M\0\301\n\0M\0\302\7\0\303\10\0\304\n\0\v\0\305\7\0\306\10\0\307\n\0\16\0\305\n\0\\\0\310\n\0\311\0\312\n\0M\0\313\7\0\314\n\0\24\0\271\n\0\24\0\315\10\0\316\n\0\24\0\301\t\0\317\0\320\n\0M\0\321\7\0\322\n\0\33\0\323\n\0M\0\324\7\0\325\n\0\36\0\271\n\0\326\0\327\v\0\330\0\331\n\0c\0\332\n\0c\0\333\n\0M\0\334\10\0\335\n\0\24\0\336\n\0M\0\337\10\0\340\10\0\341\n\0M\0\342\n\0M\0\343\10\0\344\10\0_\t\0M\0\345\n\0\346\0\347\7\0\350\n\0000\0\271\v\0\330\0\351\10\0\352\10\0\353\n\0@\0\354\10\0\355\n\0\24\0\356\10\0\357\7\0\360\n\0009\0\361\t\0M\0\362\n\0M\0\363\n\0\364\0\365\7\0q\n\0M\0\366\7\0\367\n\0M\0\370\n\0\371\0\365\7\0\372\10\0\373\n\0C\0\305\n\0\374\0\375\v\0\376\0\377\7\1\0\n\0H\1\1\v\0\376\1\2\v\1\3\1\4\v\1\3\1\5\7\1\6\10\1\7\10\1\10\v\0\376\0\331\n\1\t\0\365\t\0e\1\n\10\1\v\n\1\f\0\365\t\0e\1\r\n\1\16\1\17\t\0M\1\20\v\0\376\1\21\7\0\177\n\0\311\1\22\n\0\326\1\23\7\1\24\7\1\25\7\1\26\1\0\0\1\0\fInnerClasses\1\0\22WrappedPrintWriter\1\0\22WrappedPrintStream\7\1\27\1\0\23PrintStreamOrWriter\7\1\30\1\0\16SentinelHolder\1\0\20serialVersionUID\1\0\1J\1\0\rConstantValue\5\325\3065'9w\270\313\1\0\tbacktrace\1\0\22Ljava/lang/Object;\1\0\rdetailMessage\1\0\22Ljava/lang/String;\1\0\20UNASSIGNED_STACK\1\0\36[Ljava/lang/StackTraceElement;\1\0\5cause\1\0\25Ljava/lang/Throwable;\1\0\nstackTrace\1\0\23SUPPRESSED_SENTINEL\1\0\20Ljava/util/List;\1\0\tSignature\1\0'Ljava/util/List;\1\0\24suppressedExceptions\1\0\22NULL_CAUSE_MESSAGE\1\0\30SELF_SUPPRESSION_MESSAGE\1\0\rCAUSE_CAPTION\1\0\22SUPPRESSED_CAPTION\1\0\25EMPTY_THROWABLE_ARRAY\1\0\26[Ljava/lang/Throwable;\1\0\23$assertio"..., 8146) = 8146 30059 mprotect(0x7fb3140b2000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb3140b3000, 8192, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 60698897, SEEK_SET) = 60698897 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\342\31\21\"\205\2\0\0\205\2\0\0\25\0\0\0", 30) = 30 30059 lseek(4, 60698948, SEEK_SET) = 60698948 30059 read(4, "\312\376\272\276\0\0\0003\0\36\n\0\7\0\27\n\0\7\0\30\n\0\7\0\31\n\0\7\0\32\n\0\7\0\33\7\0\34\7\0\35\1\0\20serialVersionUID\1\0\1J\1\0\rConstantValue\5E\0356V\213\202\16V\1\0\6\1\0\3()V\1\0\4Code\1\0\17LineNumberTable\1\0\25(Ljava/lang/String;)V\1\0*(Ljava/lang/String;Ljava/lang/Throwable;)V\1\0\30(Ljava/lang/Throwable;)V\1\0,(Ljava/lang/String;Ljava/lang/Throwable;ZZ)V\1\0\nSourceFile\1\0\nError.java\f\0\r\0\16\f\0\r\0\21\f\0\r\0\22\f\0\r\0\23\f\0\r\0\24\1\0\17java/lang/Error\1\0\23java/lang/Throwable\0!\0\6\0\7\0\0\0\1\0\30\0\10\0\t\0\1\0\n\0\0\0\2\0\v\0\5\0\1\0\r\0\16\0\1\0\17\0\0\0!\0\1\0\1\0\0\0\5*\267\0\1\261\0\0\0\1\0\20\0\0\0\n\0\2\0\0\0:\0\4\0;\0\1\0\r\0\21\0\1\0\17\0\0\0\"\0\2\0\2\0\0\0\6*+\267\0\2\261\0\0\0\1\0\20\0\0\0\n\0\2\0\0\0F\0\5\0G\0\1\0\r\0\22\0\1\0\17\0\0\0#\0\3\0\3\0\0\0\7*+,\267\0\3\261\0\0\0\1\0\20\0\0\0\n\0\2\0\0\0X\0\6\0Y\0\1\0\r\0\23\0\1\0\17\0\0\0\"\0\2\0\2\0\0\0\6*+\267\0\4\261\0\0\0\1\0\20\0\0\0\n\0\2\0\0\0i\0\5\0j\0\4\0\r\0\24\0\1\0\17\0\0\0&\0\5\0\5\0\0\0\n*+,\35\25\4\267\0\5\261\0\0\0\1\0\20\0\0\0\n\0\2\0\0\0~\0\t\0\177\0\1\0\25\0\0\0\2\0\26", 645) = 645 30059 lseek(4, 60698571, SEEK_SET) = 60698571 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\315\363\324<\r\1\0\0\r\1\0\0\33\0\0\0", 30) = 30 30059 lseek(4, 60698628, SEEK_SET) = 60698628 30059 read(4, "\312\376\272\276\0\0\0003\0\22\1\0\3()V\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\1J\1\0\17LineNumberTable\1\0\nSourceFile\1\0\17java/lang/Error\1\0\25java/lang/ThreadDeath\1\0\20serialVersionUID\5\302\2634\371\31\370\312\364\7\0\10\7\0\t\f\0\2\0\1\n\0\r\0\17\1\0\20ThreadDeath.java\0!\0\16\0\r\0\0\0\1\0\32\0\n\0\5\0\1\0\4\0\0\0\2\0\v\0\1\0\1\0\2\0\1\0\1\0\3\0\0\0\35\0\1\0\1\0\0\0\5*\267\0\20\261\0\0\0\1\0\6\0\0\0\6\0\1\0\0\0001\0\1\0\7\0\0\0\2\0\21", 269) = 269 30059 lseek(4, 60697863, SEEK_SET) = 60697863 30059 read(4, "PK\3\4\n\0\0\0\0\0003\246\305B2$\251\361\215\2\0\0\215\2\0\0\31\0\0\0", 30) = 30 30059 lseek(4, 60697918, SEEK_SET) = 60697918 30059 read(4, "\312\376\272\276\0\0\0003\0\36\1\0\3()V\1\0\25(Ljava/lang/String;)V\1\0\30(Ljava/lang/Throwable;)V\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\1J\1\0\17LineNumberTable\1\0\nSourceFile\1\0\23java/lang/Exception\1\0\23java/lang/Throwable\1\0\20serialVersionUID\5\320\375\37>\32;\34\304\7\0\n\7\0\v\1\0*(Ljava/lang/String;Ljava/lang/Throwable;)V\1\0,(Ljava/lang/String;Ljava/lang/Throwable;ZZ)V\f\0\4\0\1\f\0\4\0\2\f\0\4\0\3\f\0\4\0\21\f\0\4\0\22\n\0\20\0\23\n\0\20\0\24\n\0\20\0\25\n\0\20\0\26\n\0\20\0\27\1\0\16Exception.java\0!\0\17\0\20\0\0\0\1\0\30\0\f\0\7\0\1\0\6\0\0\0\2\0\r\0\5\0\1\0\4\0\1\0\1\0\5\0\0\0!\0\1\0\1\0\0\0\5*\267\0\30\261\0\0\0\1\0\10\0\0\0\n\0\2\0\0\0006\0\4\0007\0\1\0\4\0\2\0\1\0\5\0\0\0\"\0\2\0\2\0\0\0\6*+\267\0\31\261\0\0\0\1\0\10\0\0\0\n\0\2\0\0\0B\0\5\0C\0\1\0\4\0\21\0\1\0\5\0\0\0#\0\3\0\3\0\0\0\7*+,\267\0\33\261\0\0\0\1\0\10\0\0\0\n\0\2\0\0\0T\0\6\0U\0\1\0\4\0\3\0\1\0\5\0\0\0\"\0\2\0\2\0\0\0\6*+\267\0\32\261\0\0\0\1\0\10\0\0\0\n\0\2\0\0\0f\0\5\0g\0\4\0\4\0\22\0\1\0\5\0\0\0&\0\5\0\5\0\0\0\n*+,\35\25\4\267\0\34\261\0\0\0\1\0\10\0\0\0\n\0\2\0\0\0z\0\t\0{\0\1\0\t\0\0\0\2\0\35", 653) = 653 30059 lseek(4, 60697134, SEEK_SET) = 60697134 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B;\247\177\303\233\2\0\0\233\2\0\0 \0\0\0", 30) = 30 30059 lseek(4, 60697196, SEEK_SET) = 60697196 30059 read(4, "\312\376\272\276\0\0\0003\0\36\1\0\3()V\1\0\25(Ljava/lang/String;)V\1\0\30(Ljava/lang/Throwable;)V\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\1J\1\0\17LineNumberTable\1\0\nSourceFile\1\0\23java/lang/Exception\1\0\32java/lang/RuntimeException\1\0\20serialVersionUID\5\236_\6G\n4\203\345\7\0\n\7\0\v\1\0*(Ljava/lang/String;Ljava/lang/Throwable;)V\1\0,(Ljava/lang/String;Ljava/lang/Throwable;ZZ)V\f\0\4\0\1\f\0\4\0\2\f\0\4\0\3\f\0\4\0\21\f\0\4\0\22\n\0\17\0\23\n\0\17\0\24\n\0\17\0\25\n\0\17\0\26\n\0\17\0\27\1\0\25RuntimeException.java\0!\0\20\0\17\0\0\0\1\0\30\0\f\0\7\0\1\0\6\0\0\0\2\0\r\0\5\0\1\0\4\0\1\0\1\0\5\0\0\0!\0\1\0\1\0\0\0\5*\267\0\30\261\0\0\0\1\0\10\0\0\0\n\0\2\0\0\0003\0\4\0004\0\1\0\4\0\2\0\1\0\5\0\0\0\"\0\2\0\2\0\0\0\6*+\267\0\31\261\0\0\0\1\0\10\0\0\0\n\0\2\0\0\0>\0\5\0?\0\1\0\4\0\21\0\1\0\5\0\0\0#\0\3\0\3\0\0\0\7*+,\267\0\33\261\0\0\0\1\0\10\0\0\0\n\0\2\0\0\0P\0\6\0Q\0\1\0\4\0\3\0\1\0\5\0\0\0\"\0\2\0\2\0\0\0\6*+\267\0\32\261\0\0\0\1\0\10\0\0\0\n\0\2\0\0\0`\0\5\0a\0\4\0\4\0\22\0\1\0\5\0\0\0&\0\5\0\5\0\0\0\n*+,\35\25\4\267\0\34\261\0\0\0\1\0\10\0\0\0\n\0\2\0\0\0u\0\t\0v\0\1\0\t\0\0\0\2\0\35", 667) = 667 30059 lseek(4, 60691107, SEEK_SET) = 60691107 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\262\2139\232I\27\0\0I\27\0\0$\0\0\0", 30) = 30 30059 lseek(4, 60691173, SEEK_SET) = 60691173 30059 read(4, "\312\376\272\276\0\0\0003\1\v\10\0\v\10\0\f\10\0\r\10\0\16\10\0\26\10\0\27\10\0\30\10\0\33\10\0\"\10\0000\1\0\1\n\1\0\1 \1\0\2 \"\1\0\1\"\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4(I)V\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)V\1\0\f(principals \1\0\2)\n\1\0\2,\n\1\0\10\1\0\6\1\0\17\1\0\25CREATE_ACC_PERMISSION\1\0\4Code\1\0\25GET_POLICY_PERMISSION\1\0\fInnerClasses\1\0\3Key\1\0\17LineNumberTable\1\0\22ProtectionDomain \1\0\nSourceFile\1\0\rStackMapTable\1\0\1Z\1\0\32[Ljava/security/Principal;\1\0\3add\1\0\rallPermission\1\0\6append\1\0\17checkPermission\1\0\vclassloader\1\0\5clone\1\0\ncodesource\1\0\5debug\1\0\fdoPrivileged\1\0\6domain\1\0\10elements\1\0\6equals\1\0\3get\1\0\ngetActions\1\0\10getClass\1\0\16getClassLoader\1\0\rgetCodeSource\1\0\vgetInstance\1\0\7getName\1\0\16getPermissions\1\0\20getPolicyNoCheck\1\0\rgetPrincipals\1\0\22getSecurityManager\1\0\nhasAllPerm\1\0\17hasMoreElements\1\0\7implies\1\0!impliesCreateAccessControlContext\1\0\nisInstance\1\0\5isSet\1\0\17java/lang/Class\1\0\25java/lang/ClassLoader\1\0\20java/lang/Object\1\0\33java/lang/SecurityException\1\0\31java/lang/SecurityManager\1\0\20java/lang/String\1\0\27java/lang/StringBuilder\1\0\20java/lang/System\1\0\23java/lang/Throwable\1\0\36java/"..., 5961) = 5961 30059 mprotect(0x7fb3140b5000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 60683807, SEEK_SET) = 60683807 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\332\356\244m>\34\0\0>\34\0\0(\0\0\0", 30) = 30 30059 lseek(4, 60683877, SEEK_SET) = 60683877 30059 read(4, "\312\376\272\276\0\0\0003\1\3\10\0\16\10\0\31\10\0$\10\0%\10\0&\10\0,\10\0006\10\0007\10\0008\10\0;\10\0c\10\0d\10\0h\1\0\1 \1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4(I)V\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)V\1\0\25(Ljava/lang/String;)Z\1\0\10\1\0\6\1\0*AccessControlContext invoking the Combiner\1\0\25CREATE_ACC_PERMISSION\1\0\4Code\1\0\nExceptions\1\0\27GET_COMBINER_PERMISSION\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\nSourceFile\1\0\rStackMapTable\1\0\1Z\1\0![Ljava/security/ProtectionDomain;\1\0\6access\1\0\17access allowed \1\0\16access denied \1\0\3add\1\0\6append\1\0\tarraycopy\1\0\17checkPermission\1\0\5clone\1\0\tcodebase=\1\0\7combine\1\0\10combiner\1\0\10contains\1\0\16containsAllPDs\1\0\7context\1\0\rcurrentThread\1\0\5debug\1\0\tdebugInit\1\0\fdoPrivileged\1\0\6domain\1\0\7domain \1\0\30domain (context is null)\1\0\tdumpStack\1\0\6equals\1\0\7failure\1\0\23getAssignedCombiner\1\0\20getCanonicalName\1\0\10getClass\1\0\rgetCodeSource\1\0\ngetContext\1\0\10getDebug\1\0\21getDomainCombiner\1\0 getInheritedAccessControlContext\1\0\vgetInstance\1\0\vgetLocation\1\0\22getSecurityManager\1\0\ngoCombiner\1\0\10hashCode\1\0\7implies\1\0\fisAuthorized\1\0\7isEmpty\1\0\4isOn\1\0\fisPrivileged\1\0\5isSet\1\0\17java/l"..., 7230) = 7230 30059 lseek(4, 60682994, SEEK_SET) = 60682994 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305BF\332O\201\351\2\0\0\351\2\0\0&\0\0\0", 30) = 30 30059 lseek(4, 60683062, SEEK_SET) = 60683062 30059 read(4, "\312\376\272\276\0\0\0003\0 \1\0\3()V\1\0\25(Ljava/lang/String;)V\1\0\30(Ljava/lang/Throwable;)V\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\1J\1\0\17LineNumberTable\1\0\nSourceFile\1\0\2ex\1\0\10getCause\1\0\fgetException\1\0 java/lang/ClassNotFoundException\1\0&java/lang/ReflectiveOperationException\1\0\23java/lang/Throwable\1\0\20serialVersionUID\5\177Z\315f>\324 \216\7\0\r\7\0\16\7\0\17\1\0\25Ljava/lang/Throwable;\1\0\27()Ljava/lang/Throwable;\1\0*(Ljava/lang/String;Ljava/lang/Throwable;)V\f\0\n\0\26\f\0\4\0\3\f\0\4\0\30\t\0\23\0\31\n\0\24\0\32\n\0\24\0\33\1\0\33ClassNotFoundException.java\0!\0\23\0\24\0\0\0\2\0\32\0\20\0\7\0\1\0\6\0\0\0\2\0\21\0\2\0\n\0\26\0\0\0\5\0\1\0\4\0\1\0\1\0\5\0\0\0%\0\2\0\1\0\0\0\t*\1\300\0\25\267\0\35\261\0\0\0\1\0\10\0\0\0\n\0\2\0\0\0H\0\10\0I\0\1\0\4\0\2\0\1\0\5\0\0\0#\0\3\0\2\0\0\0\7*+\1\267\0\36\261\0\0\0\1\0\10\0\0\0\n\0\2\0\0\0R\0\6\0S\0\1\0\4\0\30\0\1\0\5\0\0\0,\0\3\0\3\0\0\0\f*+\1\267\0\36*,\265\0\34\261\0\0\0\1\0\10\0\0\0\16\0\3\0\0\0_\0\6\0`\0\v\0a\0\1\0\f\0\27\0\1\0\5\0\0\0\35\0\1\0\1\0\0\0\5*\264\0\34\260\0\0\0\1\0\10\0\0\0\6\0\1\0\0\0o\0\1\0\v\0\27\0\1\0\5\0\0\0\35\0\1\0\1\0\0\0\5*\264\0\34\260\0\0\0\1\0\10\0\0\0\6\0\1\0\0\0{\0\1\0\t\0\0\0\2\0\37", 745) = 745 30059 mprotect(0x7fb3140b6000, 8192, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 27804369, SEEK_SET) = 27804369 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\256j&.F\2\0\0F\2\0\0,\0\0\0", 30) = 30 30059 lseek(4, 27804443, SEEK_SET) = 27804443 30059 read(4, "\312\376\272\276\0\0\0003\0\33\1\0\3()V\1\0\25(Ljava/lang/String;)V\1\0\30(Ljava/lang/Throwable;)V\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\1J\1\0\17LineNumberTable\1\0\nSourceFile\1\0\23java/lang/Exception\1\0&java/lang/ReflectiveOperationException\1\0\20serialVersionUID\5\0\0\0\0\7[\315\25\7\0\n\7\0\v\1\0*(Ljava/lang/String;Ljava/lang/Throwable;)V\f\0\4\0\1\f\0\4\0\2\f\0\4\0\3\f\0\4\0\21\n\0\17\0\22\n\0\17\0\23\n\0\17\0\24\n\0\17\0\25\1\0!ReflectiveOperationException.java\0!\0\20\0\17\0\0\0\1\0\30\0\f\0\7\0\1\0\6\0\0\0\2\0\r\0\4\0\1\0\4\0\1\0\1\0\5\0\0\0!\0\1\0\1\0\0\0\5*\267\0\26\261\0\0\0\1\0\10\0\0\0\n\0\2\0\0\0,\0\4\0-\0\1\0\4\0\2\0\1\0\5\0\0\0\"\0\2\0\2\0\0\0\6*+\267\0\27\261\0\0\0\1\0\10\0\0\0\n\0\2\0\0\0008\0\5\0009\0\1\0\4\0\21\0\1\0\5\0\0\0#\0\3\0\3\0\0\0\7*+,\267\0\31\261\0\0\0\1\0\10\0\0\0\n\0\2\0\0\0K\0\6\0L\0\1\0\4\0\3\0\1\0\5\0\0\0\"\0\2\0\2\0\0\0\6*+\267\0\30\261\0\0\0\1\0\10\0\0\0\n\0\2\0\0\0Y\0\5\0Z\0\1\0\t\0\0\0\2\0\32", 582) = 582 30059 lseek(4, 60682548, SEEK_SET) = 60682548 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\321k\205y|\1\0\0|\1\0\0$\0\0\0", 30) = 30 30059 lseek(4, 60682614, SEEK_SET) = 60682614 30059 read(4, "\312\376\272\276\0\0\0003\0\25\1\0\3()V\1\0\25(Ljava/lang/String;)V\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\1J\1\0\17LineNumberTable\1\0\nSourceFile\1\0\26java/lang/LinkageError\1\0\36java/lang/NoClassDefFoundError\1\0\20serialVersionUID\5~:\374Z\215\364\234j\7\0\t\7\0\n\f\0\3\0\1\f\0\3\0\2\n\0\16\0\20\n\0\16\0\21\1\0\31NoClassDefFoundError.java\0!\0\17\0\16\0\0\0\1\0\32\0\v\0\6\0\1\0\5\0\0\0\2\0\f\0\2\0\1\0\3\0\1\0\1\0\4\0\0\0!\0\1\0\1\0\0\0\5*\267\0\22\261\0\0\0\1\0\7\0\0\0\n\0\2\0\0\0001\0\4\0002\0\1\0\3\0\2\0\1\0\4\0\0\0\"\0\2\0\2\0\0\0\6*+\267\0\23\261\0\0\0\1\0\7\0\0\0\n\0\2\0\0\0;\0\5\0<\0\1\0\10\0\0\0\2\0\24", 380) = 380 30059 lseek(4, 60682029, SEEK_SET) = 60682029 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\200\377x0\315\1\0\0\315\1\0\0\34\0\0\0", 30) = 30 30059 lseek(4, 60682087, SEEK_SET) = 60682087 30059 read(4, "\312\376\272\276\0\0\0003\0\30\n\0\5\0\23\n\0\5\0\24\n\0\5\0\25\7\0\26\7\0\27\1\0\20serialVersionUID\1\0\1J\1\0\rConstantValue\0051\255KU4\250J\272\1\0\6\1\0\3()V\1\0\4Code\1\0\17LineNumberTable\1\0\25(Ljava/lang/String;)V\1\0*(Ljava/lang/String;Ljava/lang/Throwable;)V\1\0\nSourceFile\1\0\21LinkageError.java\f\0\v\0\f\f\0\v\0\17\f\0\v\0\20\1\0\26java/lang/LinkageError\1\0\17java/lang/Error\0!\0\4\0\5\0\0\0\1\0\32\0\6\0\7\0\1\0\10\0\0\0\2\0\t\0\3\0\1\0\v\0\f\0\1\0\r\0\0\0!\0\1\0\1\0\0\0\5*\267\0\1\261\0\0\0\1\0\16\0\0\0\n\0\2\0\0\0-\0\4\0.\0\1\0\v\0\17\0\1\0\r\0\0\0\"\0\2\0\2\0\0\0\6*+\267\0\2\261\0\0\0\1\0\16\0\0\0\n\0\2\0\0\0007\0\5\0008\0\1\0\v\0\20\0\1\0\r\0\0\0#\0\3\0\3\0\0\0\7*+,\267\0\3\261\0\0\0\1\0\16\0\0\0\n\0\2\0\0\0C\0\6\0D\0\1\0\21\0\0\0\2\0\22", 461) = 461 30059 lseek(4, 60681585, SEEK_SET) = 60681585 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B}}\220\302|\1\0\0|\1\0\0\"\0\0\0", 30) = 30 30059 lseek(4, 60681649, SEEK_SET) = 60681649 30059 read(4, "\312\376\272\276\0\0\0003\0\25\1\0\3()V\1\0\25(Ljava/lang/String;)V\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\1J\1\0\17LineNumberTable\1\0\nSourceFile\1\0\34java/lang/ClassCastException\1\0\32java/lang/RuntimeException\1\0\20serialVersionUID\5\200\0\5\316\316g\345\\\7\0\t\7\0\n\f\0\3\0\1\f\0\3\0\2\n\0\17\0\20\n\0\17\0\21\1\0\27ClassCastException.java\0!\0\16\0\17\0\0\0\1\0\32\0\v\0\6\0\1\0\5\0\0\0\2\0\f\0\2\0\1\0\3\0\1\0\1\0\4\0\0\0!\0\1\0\1\0\0\0\5*\267\0\22\261\0\0\0\1\0\7\0\0\0\n\0\2\0\0\0000\0\4\0001\0\1\0\3\0\2\0\1\0\4\0\0\0\"\0\2\0\2\0\0\0\6*+\267\0\23\261\0\0\0\1\0\7\0\0\0\n\0\2\0\0\0:\0\5\0;\0\1\0\10\0\0\0\2\0\24", 380) = 380 30059 lseek(4, 60681138, SEEK_SET) = 60681138 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\221re\242~\1\0\0~\1\0\0#\0\0\0", 30) = 30 30059 lseek(4, 60681203, SEEK_SET) = 60681203 30059 read(4, "\312\376\272\276\0\0\0003\0\25\1\0\3()V\1\0\25(Ljava/lang/String;)V\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\1J\1\0\17LineNumberTable\1\0\nSourceFile\1\0\35java/lang/ArrayStoreException\1\0\32java/lang/RuntimeException\1\0\20serialVersionUID\5\301=\360\235\277P\276\337\7\0\t\7\0\n\f\0\3\0\1\f\0\3\0\2\n\0\17\0\20\n\0\17\0\21\1\0\30ArrayStoreException.java\0!\0\16\0\17\0\0\0\1\0\32\0\v\0\6\0\1\0\5\0\0\0\2\0\f\0\2\0\1\0\3\0\1\0\1\0\4\0\0\0!\0\1\0\1\0\0\0\5*\267\0\22\261\0\0\0\1\0\7\0\0\0\n\0\2\0\0\0000\0\4\0001\0\1\0\3\0\2\0\1\0\4\0\0\0\"\0\2\0\2\0\0\0\6*+\267\0\23\261\0\0\0\1\0\7\0\0\0\n\0\2\0\0\0:\0\5\0;\0\1\0\10\0\0\0\2\0\24", 382) = 382 30059 lseek(4, 60680766, SEEK_SET) = 60680766 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305BN\344\35153\1\0\0003\1\0\0#\0\0\0", 30) = 30 30059 lseek(4, 60680831, SEEK_SET) = 60680831 30059 read(4, "\312\376\272\276\0\0\0003\0\20\1\0\3()V\1\0\25(Ljava/lang/String;)V\1\0\6\1\0\4Code\1\0\17LineNumberTable\1\0\nSourceFile\1\0\17java/lang/Error\1\0\35java/lang/VirtualMachineError\7\0\7\7\0\10\f\0\3\0\1\f\0\3\0\2\n\0\t\0\v\n\0\t\0\f\1\0\30VirtualMachineError.java\4!\0\n\0\t\0\0\0\0\0\2\0\1\0\3\0\1\0\1\0\4\0\0\0!\0\1\0\1\0\0\0\5*\267\0\r\261\0\0\0\1\0\5\0\0\0\n\0\2\0\0\0*\0\4\0+\0\1\0\3\0\2\0\1\0\4\0\0\0\"\0\2\0\2\0\0\0\6*+\267\0\16\261\0\0\0\1\0\5\0\0\0\n\0\2\0\0\0004\0\5\0005\0\1\0\6\0\0\0\2\0\17", 307) = 307 30059 lseek(4, 60680325, SEEK_SET) = 60680325 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\307\7f\242{\1\0\0{\1\0\0 \0\0\0", 30) = 30 30059 lseek(4, 60680387, SEEK_SET) = 60680387 30059 read(4, "\312\376\272\276\0\0\0003\0\25\1\0\3()V\1\0\25(Ljava/lang/String;)V\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\1J\1\0\17LineNumberTable\1\0\nSourceFile\1\0\32java/lang/OutOfMemoryError\1\0\35java/lang/VirtualMachineError\1\0\20serialVersionUID\5r1\273p\210\210\343\25\7\0\t\7\0\n\f\0\3\0\1\f\0\3\0\2\n\0\17\0\20\n\0\17\0\21\1\0\25OutOfMemoryError.java\0!\0\16\0\17\0\0\0\1\0\32\0\v\0\6\0\1\0\5\0\0\0\2\0\f\0\2\0\1\0\3\0\1\0\1\0\4\0\0\0!\0\1\0\1\0\0\0\5*\267\0\22\261\0\0\0\1\0\7\0\0\0\n\0\2\0\0\0000\0\4\0001\0\1\0\3\0\2\0\1\0\4\0\0\0\"\0\2\0\2\0\0\0\6*+\267\0\23\261\0\0\0\1\0\7\0\0\0\n\0\2\0\0\0:\0\5\0;\0\1\0\10\0\0\0\2\0\24", 379) = 379 30059 lseek(4, 60679878, SEEK_SET) = 60679878 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B3 \177W\177\1\0\0\177\1\0\0\"\0\0\0", 30) = 30 30059 lseek(4, 60679942, SEEK_SET) = 60679942 30059 read(4, "\312\376\272\276\0\0\0003\0\25\1\0\3()V\1\0\25(Ljava/lang/String;)V\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\1J\1\0\17LineNumberTable\1\0\nSourceFile\1\0\34java/lang/StackOverflowError\1\0\35java/lang/VirtualMachineError\1\0\20serialVersionUID\5wy\357\25\207{#w\7\0\t\7\0\n\f\0\3\0\1\f\0\3\0\2\n\0\17\0\20\n\0\17\0\21\1\0\27StackOverflowError.java\0!\0\16\0\17\0\0\0\1\0\32\0\v\0\6\0\1\0\5\0\0\0\2\0\f\0\2\0\1\0\3\0\1\0\1\0\4\0\0\0!\0\1\0\1\0\0\0\5*\267\0\22\261\0\0\0\1\0\7\0\0\0\n\0\2\0\0\0+\0\4\0,\0\1\0\3\0\2\0\1\0\4\0\0\0\"\0\2\0\2\0\0\0\6*+\267\0\23\261\0\0\0\1\0\7\0\0\0\n\0\2\0\0\0005\0\5\0006\0\1\0\10\0\0\0\2\0\24", 383) = 383 30059 lseek(4, 60679404, SEEK_SET) = 60679404 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\206\300Vm\220\1\0\0\220\1\0\0,\0\0\0", 30) = 30 30059 lseek(4, 60679478, SEEK_SET) = 60679478 30059 read(4, "\312\376\272\276\0\0\0003\0\25\1\0\3()V\1\0\25(Ljava/lang/String;)V\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\1J\1\0\17LineNumberTable\1\0\nSourceFile\1\0&java/lang/IllegalMonitorStateException\1\0\32java/lang/RuntimeException\1\0\20serialVersionUID\0053\210Px\30,\355M\7\0\t\7\0\n\f\0\3\0\1\f\0\3\0\2\n\0\17\0\20\n\0\17\0\21\1\0!IllegalMonitorStateException.java\0!\0\16\0\17\0\0\0\1\0\32\0\v\0\6\0\1\0\5\0\0\0\2\0\f\0\2\0\1\0\3\0\1\0\1\0\4\0\0\0!\0\1\0\1\0\0\0\5*\267\0\22\261\0\0\0\1\0\7\0\0\0\n\0\2\0\0\0002\0\4\0003\0\1\0\3\0\2\0\1\0\4\0\0\0\"\0\2\0\2\0\0\0\6*+\267\0\23\261\0\0\0\1\0\7\0\0\0\n\0\2\0\0\0<\0\5\0=\0\1\0\10\0\0\0\2\0\24", 400) = 400 30059 lseek(4, 60676927, SEEK_SET) = 60676927 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\306\332\271\224r\t\0\0r\t\0\0\35\0\0\0", 30) = 30 30059 lseek(4, 60676986, SEEK_SET) = 60676986 30059 read(4, "\312\376\272\276\0\0\0003\0p\10\0\20\1\0\5()TT;\1\0\3()V\1\0\3()Z\1\0\4(I)V\1\0\25(Ljava/lang/Object;)V\1\0\6(TT;)V\1\0\4(Z)V\1\0\10\1\0\6\1\0\4Code\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\22Ljava/lang/Object;\1\0\4NULL\1\0\21Reference Handler\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\3TT;\1\0\naccess$100\1\0\naccess$200\1\0\naccess$202\1\0\5clear\1\0\rcurrentThread\1\0\ndiscovered\1\0\7enqueue\1\0\3get\1\0\tgetParent\1\0\16getThreadGroup\1\0\nisEnqueued\1\0\20java/lang/Object\1\0\20java/lang/Thread\1\0\25java/lang/ThreadGroup\1\0\23java/lang/Throwable\1\0\27java/lang/ref/Reference\1\0\31java/lang/ref/Reference$1\1\0\34java/lang/ref/Reference$Lock\1\0(java/lang/ref/Reference$ReferenceHandler\1\0\34java/lang/ref/ReferenceQueue\1\0\4lock\1\0\4next\1\0\7pending\1\0\5queue\1\0\10referent\1\0\tsetDaemon\1\0\vsetPriority\1\0\5start\7\0 \7\0!\7\0\"\7\0#\7\0$\7\0%\7\0&\7\0'\7\0(\1\0\31Ljava/lang/ref/Reference;\1\0\36Ljava/lang/ref/Reference;\1\0\36Ljava/lang/ref/Reference$Lock;\1\0\36Ljava/lang/ref/ReferenceQueue;\1\0$Ljava/lang/ref/ReferenceQueue<-TT;>;\1\0(Ljava/lang/Object;\1\0\24()Ljava/lang/Object;\1\0\24()Ljava/lang/Thread;\1\0\31()Ljava/lang/ThreadGroup;\1"..., 2418) = 2418 30059 mprotect(0x7fb3140b8000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 60676094, SEEK_SET) = 60676094 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305BF\255+\304\2\3\0\0\2\3\0\0!\0\0\0", 30) = 30 30059 lseek(4, 60676157, SEEK_SET) = 60676157 30059 read(4, "\312\376\272\276\0\0\0003\0#\1\0\5()TT;\1\0\25(Ljava/lang/Object;)V\1\0\6(TT;)V\1\0\6\1\0\4Code\1\0\1J\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\5clock\1\0\3get\1\0\20java/lang/Object\1\0\27java/lang/ref/Reference\1\0\33java/lang/ref/SoftReference\1\0\ttimestamp\7\0\r\7\0\16\7\0\17\1\0004Ljava/lang/ref/Reference;\1\0\24()Ljava/lang/Object;\1\0*(TT;Ljava/lang/ref/ReferenceQueue<-TT;>;)V\1\0003(Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;)V\f\0\v\0\6\f\0\20\0\6\f\0\f\0\25\f\0\4\0\2\f\0\4\0\27\t\0\23\0\30\t\0\23\0\31\n\0\22\0\32\n\0\22\0\33\n\0\22\0\34\1\0\22SoftReference.java\0!\0\23\0\22\0\0\0\2\0\n\0\v\0\6\0\0\0\2\0\20\0\6\0\0\0\3\0\1\0\4\0\2\0\2\0\5\0\0\0-\0\3\0\2\0\0\0\r*+\267\0 *\262\0\35\265\0\36\261\0\0\0\1\0\7\0\0\0\16\0\3\0\0\0U\0\5\0V\0\f\0W\0\10\0\0\0\2\0\3\0\1\0\4\0\27\0\2\0\5\0\0\0.\0\3\0\3\0\0\0\16*+,\267\0!*\262\0\35\265\0\36\261\0\0\0\1\0\7\0\0\0\16\0\3\0\0\0c\0\6\0d\0\r\0e\0\10\0\0\0\2\0\26\0\1\0\f\0\25\0\2\0\5\0\0\0O\0\4\0\2\0\0\0\35*\267\0\37L+\306\0\25*\264\0\36\262\0\35\224\231\0\n*\262\0\35\265\0\36+\260\0\0\0\2\0\n\0\0\0\10\0\1\374\0\33\7\0\21\0\7\0\0\0\22\0\4\0\0\0p\0\5\0q\0\24\0r\0\33\0s\0\10\0\0\0\2\0\1\0\2\0\t\0\0\0\2\0\"\0\10\0\0\0\2\0\24", 770) = 770 30059 lseek(4, 60675529, SEEK_SET) = 60675529 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\375\214)\202\366\1\0\0\366\1\0\0!\0\0\0", 30) = 30 30059 lseek(4, 60675592, SEEK_SET) = 60675592 30059 read(4, "\312\376\272\276\0\0\0003\0\24\1\0\25(Ljava/lang/Object;)V\1\0\6(TT;)V\1\0\6\1\0\4Code\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\27java/lang/ref/Reference\1\0\33java/lang/ref/WeakReference\7\0\10\7\0\t\1\0004Ljava/lang/ref/Reference;\1\0*(TT;Ljava/lang/ref/ReferenceQueue<-TT;>;)V\1\0003(Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;)V\f\0\3\0\1\f\0\3\0\16\n\0\n\0\17\n\0\n\0\20\1\0\22WeakReference.java\0!\0\v\0\n\0\0\0\0\0\2\0\1\0\3\0\1\0\2\0\4\0\0\0\"\0\2\0\2\0\0\0\6*+\267\0\21\261\0\0\0\1\0\5\0\0\0\n\0\2\0\0\0009\0\5\0:\0\6\0\0\0\2\0\2\0\1\0\3\0\16\0\2\0\4\0\0\0#\0\3\0\3\0\0\0\7*+,\267\0\22\261\0\0\0\1\0\5\0\0\0\n\0\2\0\0\0E\0\6\0F\0\6\0\0\0\2\0\r\0\2\0\7\0\0\0\2\0\23\0\6\0\0\0\2\0\f", 502) = 502 30059 lseek(4, 60675060, SEEK_SET) = 60675060 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\360\225\253\v\225\1\0\0\225\1\0\0\"\0\0\0", 30) = 30 30059 lseek(4, 60675124, SEEK_SET) = 60675124 30059 read(4, "\312\376\272\276\0\0\0003\0\20\1\0\6\1\0\4Code\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\34java/lang/ref/FinalReference\1\0\27java/lang/ref/Reference\7\0\6\7\0\7\1\0004Ljava/lang/ref/Reference;\1\0*(TT;Ljava/lang/ref/ReferenceQueue<-TT;>;)V\1\0003(Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;)V\f\0\1\0\f\n\0\t\0\r\1\0\23FinalReference.java\0 \0\10\0\t\0\0\0\0\0\1\0\1\0\1\0\f\0\2\0\2\0\0\0#\0\3\0\3\0\0\0\7*+,\267\0\16\261\0\0\0\1\0\3\0\0\0\n\0\2\0\0\0\"\0\6\0#\0\4\0\0\0\2\0\v\0\2\0\5\0\0\0\2\0\17\0\4\0\0\0\2\0\n", 405) = 405 30059 lseek(4, 60674500, SEEK_SET) = 60674500 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\n\210\2660\356\1\0\0\356\1\0\0$\0\0\0", 30) = 30 30059 lseek(4, 60674566, SEEK_SET) = 60674566 30059 read(4, "\312\376\272\276\0\0\0003\0\23\1\0\5()TT;\1\0\6\1\0\4Code\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\3get\1\0\36java/lang/ref/PhantomReference\1\0\27java/lang/ref/Reference\7\0\10\7\0\t\1\0004Ljava/lang/ref/Reference;\1\0\24()Ljava/lang/Object;\1\0*(TT;Ljava/lang/ref/ReferenceQueue<-TT;>;)V\1\0003(Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;)V\f\0\2\0\17\n\0\v\0\20\1\0\25PhantomReference.java\0!\0\n\0\v\0\0\0\0\0\2\0\1\0\7\0\r\0\2\0\3\0\0\0\32\0\1\0\1\0\0\0\2\1\260\0\0\0\1\0\4\0\0\0\6\0\1\0\0\0?\0\5\0\0\0\2\0\1\0\1\0\2\0\17\0\2\0\3\0\0\0#\0\3\0\3\0\0\0\7*+,\267\0\21\261\0\0\0\1\0\4\0\0\0\n\0\2\0\0\0P\0\6\0Q\0\5\0\0\0\2\0\16\0\2\0\6\0\0\0\2\0\22\0\5\0\0\0\2\0\f", 494) = 494 30059 lseek(4, 60671292, SEEK_SET) = 60671292 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\260\t\266NM\f\0\0M\f\0\0\35\0\0\0", 30) = 30 30059 lseek(4, 60671351, SEEK_SET) = 60671351 30059 read(4, "\312\376\272\276\0\0\0003\0\212\1\0\3()V\1\0\3()Z\1\0\4(I)V\1\0\25(Ljava/lang/Object;)V\1\0\4(Z)V\1\0\10\1\0\6\1\0\4Code\1\0\nExceptions\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\22Ljava/lang/Object;\1\0\nSourceFile\1\0\rStackMapTable\1\0\naccess$000\1\0\naccess$100\1\0\naccess$200\1\0\naccess$300\1\0\naccess$302\1\0\naccess$400\1\0\3add\1\0\5clear\1\0\rcurrentThread\1\0\fdoPrivileged\1\0\26forkSecondaryFinalizer\1\0\3get\1\0\tgetParent\1\0\16getThreadGroup\1\0\20hasBeenFinalized\1\0\24invokeFinalizeMethod\1\0\16java/lang/Enum\1\0\20java/lang/Object\1\0\20java/lang/Thread\1\0\25java/lang/ThreadGroup\1\0\23java/lang/Throwable\1\0\34java/lang/ref/FinalReference\1\0\27java/lang/ref/Finalizer\1\0\31java/lang/ref/Finalizer$1\1\0\31java/lang/ref/Finalizer$2\1\0\31java/lang/ref/Finalizer$3\1\0'java/lang/ref/Finalizer$FinalizerThread\1\0\34java/lang/ref/ReferenceQueue\1\0\36java/security/AccessController\1\0\4lock\1\0\4next\1\0\4prev\1\0\5queue\1\0\10register\1\0\6remove\1\0\20runAllFinalizers\1\0\17runFinalization\1\0\frunFinalizer\1\0\tsetDaemon\1\0\vsetPriority\1\0\5start\1\0\vunfinalized\7\0\37\7\0 \7\0!\7\0\"\7\0#\7\0$\7\0%\7\0&\7\0'\7\0(\7\0)\7\0*\7\0+\1\0\31Ljava/lang/ref/Finalizer;\1\0\36Ljava/lang/ref/ReferenceQ"..., 3149) = 3149 30059 lseek(4, 60658014, SEEK_SET) = 60658014 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\275\373\226\323\2523\0\0\2523\0\0\26\0\0\0", 30) = 30 30059 lseek(4, 60658066, SEEK_SET) = 60658066 30059 read(4, "\312\376\272\276\0\0\0003\2\23\3\0\7\241 \3\0\17B?\10\0\17\10\0\37\10\0006\10\0009\10\0:\10\0@\10\0[\10\0\237\10\0\240\10\0\260\10\0\262\10\0\321\1\0\0\1\0\3()I\1\0\3()J\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4()[C\1\0\4(I)V\1\0\4(J)V\1\0\5(JI)V\1\0\25(Ljava/lang/Object;)V\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)V\1\0\30(Ljava/lang/Throwable;)V\1\0\4(Z)V\1\0\4(Z)Z\1\0\1,\1\0\10\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\nDeprecated\1\0\21EMPTY_STACK_TRACE\1\0\nExceptions\1\0\32GET_STACK_TRACE_PERMISSION\1\0\1I\1\0\fInnerClasses\1\0\1J\1\0\17LineNumberTable\1\0\22Ljava/lang/Object;\1\0\fMAX_PRIORITY\1\0\fMIN_PRIORITY\1\0\35MODIFY_THREADGROUP_PERMISSION\1\0\rNORM_PRIORITY\1\0\31RuntimeVisibleAnnotations\1\0\26STOP_THREAD_PERMISSION\1\0\"SUBCLASS_IMPLEMENTATION_PERMISSION\1\0\tSignature\1\0\nSourceFile\1\0\vStack trace\1\0\rStackMapTable\1\0\5State\1\0\7Thread-\1\0\7Thread[\1\0\1Z\1\0\2[C\1\0\36[Ljava/lang/StackTraceElement;\1\0\23[Ljava/lang/Thread;\1\0\37[[Ljava/lang/StackTraceElement;\1\0\1]\1\0\vactiveCount\1\0\3add\1\0\faddUnstarted\1\0\6append\1\0\rauditSubclass\1\0\tblockedOn\1\0\7blocker\1\0\vblockerLock\1\0\fbooleanValue\1\0\vcheckAccess\1\0\32checkClassLoaderPermission\1\0\17checkPermission\1\0\5clone\1\0\22contextClassLoader\1\0\20countStackF"..., 13226) = 13226 30059 mprotect(0x7fb3140b9000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 60657833, SEEK_SET) = 60657833 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B-f\220\257\177\0\0\0\177\0\0\0\30\0\0\0", 30) = 30 30059 lseek(4, 60657887, SEEK_SET) = 60657887 30059 read(4, "\312\376\272\276\0\0\0003\0\t\1\0\3()V\1\0\nSourceFile\1\0\20java/lang/Object\1\0\22java/lang/Runnable\1\0\3run\7\0\3\7\0\4\1\0\rRunnable.java\6\1\0\7\0\6\0\0\0\0\0\1\4\1\0\5\0\1\0\0\0\1\0\2\0\0\0\2\0\10", 127) = 127 30059 lseek(4, 60648112, SEEK_SET) = 60648112 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\270\37\272\225\300%\0\0\300%\0\0\33\0\0\0", 30) = 30 30059 lseek(4, 60648169, SEEK_SET) = 60648169 30059 read(4, "\312\376\272\276\0\0\0003\1\f\10\0\10\10\0\t\10\0\25\10\0\31\10\0%\10\0&\10\0g\1\0\1 \1\0\2\" \1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4(I)V\1\0\5(II)I\1\0\25(Ljava/lang/Object;)V\1\0\25(Ljava/lang/String;)V\1\0\4(Z)V\1\0\4(Z)Z\1\0)([Ljava/lang/Object;I)[Ljava/lang/Object;\1\0\10,maxpri=\1\0\6\1\0\4Code\1\0\nDeprecated\1\0\25Exception in thread \"\1\0\1I\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\25Ljava/io/PrintStream;\1\0\22Ljava/lang/String;\1\0\31RuntimeVisibleAnnotations\1\0\nSourceFile\1\0\rStackMapTable\1\0\1Z\1\0\23[Ljava/lang/Thread;\1\0\30[Ljava/lang/ThreadGroup;\1\0\6[name=\1\0\1]\1\0\vactiveCount\1\0\20activeGroupCount\1\0\3add\1\0\faddUnstarted\1\0\25allowThreadSuspension\1\0\6append\1\0\tarraycopy\1\0\vcheckAccess\1\0\21checkParentAccess\1\0\6copyOf\1\0\rcurrentThread\1\0\6daemon\1\0\7destroy\1\0\tdestroyed\1\0\tenumerate\1\0\3err\1\0\10getClass\1\0\"getDefaultUncaughtExceptionHandler\1\0\16getMaxPriority\1\0\7getName\1\0\tgetParent\1\0\22getSecurityManager\1\0\16getThreadGroup\1\0\6groups\1\0\tinterrupt\1\0\7isAlive\1\0\10isDaemon\1\0\visDestroyed\1\0\23java/io/PrintStream\1\0\17java/lang/Class\1\0%java/lang/IllegalThreadStateException\1\0\16java/lang/Math\1\0\20java/lang/Object\1\0\31java/lang/SecurityMana"..., 9664) = 9664 30059 mprotect(0x7fb3140ba000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 60647754, SEEK_SET) = 60647754 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\253&@\306\31\1\0\0\31\1\0\0/\0\0\0", 30) = 30 30059 lseek(4, 60647831, SEEK_SET) = 60647831 30059 read(4, "\312\376\272\276\0\0\0003\0\r\1\0\fInnerClasses\1\0\nSourceFile\1\0\20java/lang/Object\1\0\20java/lang/Thread\1\0)java/lang/Thread$UncaughtExceptionHandler\1\0\21uncaughtException\7\0\3\7\0\4\7\0\5\1\0*(Ljava/lang/Thread;Ljava/lang/Throwable;)V\1\0\vThread.java\1\0\30UncaughtExceptionHandler\6\1\0\t\0\7\0\0\0\0\0\1\4\1\0\6\0\n\0\0\0\2\0\2\0\0\0\2\0\v\0\1\0\0\0\n\0\1\0\t\0\10\0\f\6\t", 281) = 281 30059 lseek(4, 60639388, SEEK_SET) = 60639388 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\335\31\34\364v \0\0v \0\0\32\0\0\0", 30) = 30 30059 lseek(4, 60639444, SEEK_SET) = 60639444 30059 read(4, "\312\376\272\276\0\0\0003\1\1\3\177\377\377\377\10\0\t\10\0\26\10\0\27\10\0\30\10\0\33\10\0#\10\0(\1\0\1#\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4(I)C\1\0\4(I)V\1\0\26(II)Ljava/lang/String;\1\0\23(Ljava/io/Writer;)V\1\0&(Ljava/lang/String;)Ljava/lang/String;\1\0\25(Ljava/lang/String;)V\1\0\5([C)V\1\0\7([CII)V\1\0\30-- listing properties --\1\0\3...\1\0\0068859_1\1\0\10\1\0\6\1\0\1=\1\0\4Code\1\0\rConstantValue\1\0\nDeprecated\1\0\nExceptions\1\0\fInnerClasses\1\0\1J\1\0\17LineNumberTable\1\0\32Malformed \\uxxxx encoding.\1\0\31RuntimeVisibleAnnotations\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\5UTF-8\1\0\2[C\1\0\6append\1\0\6charAt\1\0\5close\1\0\10defaults\1\0\tenumerate\1\0\31enumerateStringProperties\1\0\5flush\1\0\3get\1\0\vgetProperty\1\0\17hasMoreElements\1\0\10hexDigit\1\0\26java/io/BufferedWriter\1\0\23java/io/IOException\1\0\23java/io/InputStream\1\0\32java/io/OutputStreamWriter\1\0\23java/io/PrintStream\1\0\23java/io/PrintWriter\1\0\16java/io/Writer\1\0\"java/lang/IllegalArgumentException\1\0\36java/lang/NullPointerException\1\0\20java/lang/Object\1\0\20java/lang/String\1\0\26java/lang/StringBuffer\1\0\27java/lang/StringBuilder\1\0\23java/lang/Throwable\1\0\16java/util/Date\1\0\25java/util/Enumerat"..., 8310) = 8310 30059 lseek(4, 60627866, SEEK_SET) = 60627866 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\342\1\261\22\313,\0\0\313,\0\0\31\0\0\0", 30) = 30 30059 lseek(4, 60627921, SEEK_SET) = 60627921 30059 read(4, "\312\376\272\276\0\0\0003\1\244\3\177\377\377\367\3\177\377\377\377\4?@\0\0\4O\0\0\0\10\0\33\10\0\34\10\0'\10\0+\10\0,\10\0Z\10\0\246\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4(F)Z\1\0\5(FF)F\1\0\4(I)V\1\0\5(IF)V\1\0\5(II)I\1\0\25(Ljava/lang/Object;)I\1\0\25(Ljava/lang/Object;)V\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)I\1\0\25(Ljava/lang/String;)V\1\0\v(TK;TV;)TV;\1\0\n(this Map)\1\0\2, \1\0\10\1\0\6\1\0\35ALTERNATIVE_HASHING_THRESHOLD\1\0%ALTERNATIVE_HASHING_THRESHOLD_DEFAULT\1\0\4Code\1\0\rConstantValue\1\0\7ENTRIES\1\0\5Entry\1\0\nExceptions\1\0\1F\1\0 Failed to record hashSeed offset\1\0\17HASHSEED_OFFSET\1\0\16Hashtable.java\1\0\1I\1\0\22Illegal Capacity: \1\0\16Illegal Load: \1\0\fInnerClasses\1\0\1J\1\0\4KEYS\1\0\17LineNumberTable\1\0\22Ljava/lang/Object;\1\0\16MAX_ARRAY_SIZE\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\6UNSAFE\1\0\6VALUES\1\0\1Z\1\0\34[Ljava/util/Hashtable$Entry;\1\0\naccess$100\1\0\naccess$200\1\0\naccess$210\1\0\naccess$400\1\0\naccess$500\1\0\naccess$600\1\0\naccess$608\1\0\6append\1\0\5clear\1\0\5clone\1\0\10contains\1\0\vcontainsKey\1\0\rcontainsValue\1\0\5count\1\0\21defaultReadObject\1\0\22defaultWriteObject\1\0\10elements\1\0\20emptyEnumeration\1\0\remptyIterator\1\0\10entrySet\1\0\6equals\1\0\3get\1\0"..., 11467) = 11467 30059 mprotect(0x7fb3140bb000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb3140bc000, 8192, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 60626882, SEEK_SET) = 60626882 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\370\3E\"\247\3\0\0\247\3\0\0\23\0\0\0", 30) = 30 30059 lseek(4, 60626931, SEEK_SET) = 60626931 30059 read(4, "\312\376\272\276\0\0\0003\0*\1\0\3()I\1\0\3()V\1\0\3()Z\1\0\25(Ljava/lang/Object;)Z\1\0\v(TK;TV;)TV;\1\0\5Entry\1\0\fInnerClasses\1\0\tSignature\1\0\nSourceFile\1\0\5clear\1\0\vcontainsKey\1\0\rcontainsValue\1\0\10entrySet\1\0\6equals\1\0\3get\1\0\10hashCode\1\0\7isEmpty\1\0\20java/lang/Object\1\0\rjava/util/Map\1\0\23java/util/Map$Entry\1\0\6keySet\1\0\3put\1\0\6putAll\1\0\6remove\1\0\4size\1\0\6values\7\0\22\7\0\23\7\0\24\1\0<Ljava/lang/Object;\1\0\27(Ljava/lang/Object;)TV;\1\0\30()Ljava/util/Collection;\1\0\35()Ljava/util/Collection;\1\0\22(Ljava/util/Map;)V\1\0\34(Ljava/util/Map<+TK;+TV;>;)V\1\0\21()Ljava/util/Set;\1\0\26()Ljava/util/Set;\1\0&(Ljava/lang/Object;)Ljava/lang/Object;\1\0000()Ljava/util/Set;>;\1\0008(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;\1\0\10Map.java\6\1\0\34\0\33\0\0\0\0\0\16\4\1\0\31\0\1\0\0\4\1\0\21\0\3\0\0\4\1\0\v\0\4\0\0\4\1\0\f\0\4\0\0\4\1\0\17\0&\0\1\0\10\0\0\0\2\0\37\4\1\0\26\0(\0\1\0\10\0\0\0\2\0\5\4\1\0\30\0&\0\1\0\10\0\0\0\2\0\37\4\1\0\27\0\"\0\1\0\10\0\0\0\2\0#\4\1\0\n\0\2\0\0\4\1\0\25\0$\0\1\0\10\0\0\0\2\0%\4\1\0\32\0 \0\1\0\10\0\0\0\2\0!\4\1\0\r\0$\0\1\0\10\0\0\0\2\0'\4\1\0\16\0\4\0\0\4\1\0\20\0\1\0\0\0\3\0\t\0\0\0\2\0)\0\10\0\0\0\2\0\36\0\7\0\0\0\n\0\1\0\35\0\34\0\6\6\t", 935) = 935 30059 lseek(4, 60626137, SEEK_SET) = 60626137 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305BYI\221\"\261\2\0\0\261\2\0\0\32\0\0\0", 30) = 30 30059 lseek(4, 60626193, SEEK_SET) = 60626193 30059 read(4, "\312\376\272\276\0\0\0003\0\37\1\0\3()I\1\0\3()V\1\0\3()Z\1\0\v(TK;TV;)TV;\1\0\6\1\0\4Code\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\10elements\1\0\3get\1\0\7isEmpty\1\0\20java/lang/Object\1\0\24java/util/Dictionary\1\0\4keys\1\0\3put\1\0\6remove\1\0\4size\7\0\r\7\0\16\1\0<Ljava/lang/Object;\1\0\27(Ljava/lang/Object;)TV;\1\0\31()Ljava/util/Enumeration;\1\0\36()Ljava/util/Enumeration;\1\0\36()Ljava/util/Enumeration;\1\0&(Ljava/lang/Object;)Ljava/lang/Object;\1\0008(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;\f\0\5\0\2\n\0\23\0\34\1\0\17Dictionary.java\4!\0\24\0\23\0\0\0\0\0\10\0\1\0\5\0\2\0\1\0\6\0\0\0!\0\1\0\1\0\0\0\5*\267\0\35\261\0\0\0\1\0\7\0\0\0\n\0\2\0\0\0007\0\4\0008\4\1\0\22\0\1\0\0\4\1\0\f\0\3\0\0\4\1\0\17\0\27\0\1\0\10\0\0\0\2\0\30\4\1\0\n\0\27\0\1\0\10\0\0\0\2\0\31\4\1\0\v\0\32\0\1\0\10\0\0\0\2\0\26\4\1\0\20\0\33\0\1\0\10\0\0\0\2\0\4\4\1\0\21\0\32\0\1\0\10\0\0\0\2\0\26\0\2\0\t\0\0\0\2\0\36\0\10\0\0\0\2\0\25", 689) = 689 30059 lseek(4, 60622561, SEEK_SET) = 60622561 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\314\237`'\262\r\0\0\262\r\0\0(\0\0\0", 30) = 30 30059 lseek(4, 60622631, SEEK_SET) = 60622631 30059 read(4, "\312\376\272\276\0\0\0003\0\211\10\0\r\10\0\16\10\0=\1\0\3()V\1\0\3()Z\1\0\4(I)Z\1\0\25(Ljava/lang/Object;)V\1\0\25(Ljava/lang/String;)V\1\0\4(Z)V\1\0\10\1\0\6\1\0\21ACCESS_PERMISSION\1\0*All subclasses should override this method\1\0005Can not make a java.lang.Class constructor accessible\1\0\4Code\1\0\nExceptions\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\22Ljava/lang/Object;\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\1Z\1\0\22[Ljava/lang/Class;\1\0\vcheckAccess\1\0\17checkPermission\1\0\fdoPrivileged\1\0\22ensureMemberAccess\1\0\rgetAnnotation\1\0\16getAnnotations\1\0\10getClass\1\0\26getDeclaredAnnotations\1\0\21getDeclaringClass\1\0\22getSecurityManager\1\0\fisAccessible\1\0\23isAnnotationPresent\1\0\visProtected\1\0\24java/io/Serializable\1\0\30java/lang/AssertionError\1\0\17java/lang/Class\1\0 java/lang/IllegalAccessException\1\0\20java/lang/Object\1\0\33java/lang/SecurityException\1\0\31java/lang/SecurityManager\1\0\20java/lang/System\1\0\"java/lang/reflect/AccessibleObject\1\0\"java/lang/reflect/AnnotatedElement\1\0\35java/lang/reflect/Constructor\1\0\32java/lang/reflect/Modifier\1\0#java/lang/reflect/ReflectPermission\1\0\36java/security/AccessCo"..., 3506) = 3506 30059 mprotect(0x7fb3140be000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 60612567, SEEK_SET) = 60612567 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305BM>\361\340\317&\0\0\317&\0\0\35\0\0\0", 30) = 30 30059 lseek(4, 60612626, SEEK_SET) = 60612626 30059 read(4, "\312\376\272\276\0\0\0003\1V\10\0\5\10\0\6\10\0\22\10\0 \1\0\0\1\0\1 \1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\25(I)Ljava/lang/String;\1\0\4(I)Z\1\0\25(Ljava/lang/Object;)D\1\0\25(Ljava/lang/Object;)I\1\0\25(Ljava/lang/Object;)J\1\0\25(Ljava/lang/Object;)Z\1\0,(Ljava/lang/String;)Ljava/lang/StringBuffer;\1\0\1.\1\0\6\1\0\4Code\1\0\nExceptions\1\0\1I\1\0\17LineNumberTable\1\0\21Ljava/lang/Class;\1\0\22Ljava/lang/String;\1\0\31RuntimeVisibleAnnotations\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\1Z\1\0\2[B\1\0\2[]\1\0\24acquireFieldAccessor\1\0\vannotations\1\0\6append\1\0\vcheckAccess\1\0\5clazz\1\0\4copy\1\0\23declaredAnnotations\1\0\6equals\1\0\rfieldAccessor\1\0\vgenericInfo\1\0\3get\1\0\rgetAnnotation\1\0\ngetBoolean\1\0\7getByte\1\0\16getCallerClass\1\0\7getChar\1\0\20getComponentType\1\0\17getConstantPool\1\0\26getDeclaredAnnotations\1\0\21getDeclaringClass\1\0\tgetDouble\1\0\ngetFactory\1\0\20getFieldAccessor\1\0\10getFloat\1\0\16getGenericInfo\1\0\23getGenericSignature\1\0\16getGenericType\1\0\6getInt\1\0\21getJavaLangAccess\1\0\7getLong\1\0\fgetModifiers\1\0\7getName\1\0\10getShort\1\0\7getType\1\0\vgetTypeName\1\0\10hashCode\1\0\7isArray\1\0\16isEnumConstant\1\0\visSynthetic\1\0\17java/lang/Class\1\0 java"..., 9935) = 9935 30059 lseek(4, 60612121, SEEK_SET) = 60612121 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\5%\277j\202\1\0\0\202\1\0\0\36\0\0\0", 30) = 30 30059 lseek(4, 60612181, SEEK_SET) = 60612181 30059 read(4, "\312\376\272\276\0\0\0003\0\27\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()Z\1\0\rConstantValue\1\0\10DECLARED\1\0\1I\1\0\6PUBLIC\1\0\tSignature\1\0\nSourceFile\1\0\21getDeclaringClass\1\0\fgetModifiers\1\0\7getName\1\0\visSynthetic\1\0\20java/lang/Object\1\0\30java/lang/reflect/Member\3\0\0\0\0\3\0\0\0\1\7\0\16\7\0\17\1\0\23()Ljava/lang/Class;\1\0\26()Ljava/lang/Class<*>;\1\0\vMember.java\6\1\0\23\0\22\0\0\0\2\0\31\0\7\0\6\0\1\0\4\0\0\0\2\0\20\0\31\0\5\0\6\0\1\0\4\0\0\0\2\0\21\0\4\4\1\0\n\0\24\0\1\0\10\0\0\0\2\0\25\4\1\0\f\0\2\0\0\4\1\0\v\0\1\0\0\4\1\0\r\0\3\0\0\0\1\0\t\0\0\0\2\0\26", 386) = 386 30059 lseek(4, 60601921, SEEK_SET) = 60601921 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\325\214\3776\234'\0\0\234'\0\0\36\0\0\0", 30) = 30 30059 lseek(4, 60601981, SEEK_SET) = 60601981 30059 read(4, "\312\376\272\276\0\0\0003\1v\10\0\t\10\0\23\10\0\24\10\0\26\10\0\27\10\0\33\10\0 \10\0+\1\0\10 throws \1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\25(I)Ljava/lang/String;\1\0\4(I)Z\1\0\25(Ljava/lang/Object;)Z\1\0009(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;\1\0\25(Ljava/lang/String;)V\1\0\3...\1\0\1<\1\0\6\1\0\1>\1\0\2> \1\0\4Code\1\0\nExceptions\1\0\1I\1\0\21Invalid default: \1\0\17LineNumberTable\1\0\21Ljava/lang/Class;\1\0\22Ljava/lang/String;\1\0\32Ljava/lang/reflect/Method;\1\0006Parameter annotations don't match number of parameters\1\0\31RuntimeVisibleAnnotations\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\1Z\1\0\2[B\1\0\22[Ljava/lang/Class;\1\0\31[Ljava/lang/reflect/Type;\1\0![Ljava/lang/reflect/TypeVariable;\1\0#[[Ljava/lang/annotation/Annotation;\1\0\5\\[\\]$\1\0\25acquireMethodAccessor\1\0\21annotationDefault\1\0\vannotations\1\0\6append\1\0\vcheckAccess\1\0\5clazz\1\0\5clone\1\0\4copy\1\0\23declaredAnnotations\1\0\6equals\1\0\16exceptionTypes\1\0\vgenericInfo\1\0\3get\1\0\rgetAnnotation\1\0\16getCallerClass\1\0\17getConstantPool\1\0\26getDeclaredAnnotations\1\0\21getDeclaringClass\1\0\17getDefaultValue\1\0\21getExceptionTypes\1\0\ngetFactory\1\0\30getGenericExceptionTypes\1\0\16"..., 10140) = 10140 30059 mprotect(0x7fb3140bf000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 60592108, SEEK_SET) = 60592108 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305Bo\301\30)\24&\0\0\24&\0\0#\0\0\0", 30) = 30 30059 lseek(4, 60592173, SEEK_SET) = 60592173 30059 read(4, "\312\376\272\276\0\0\0003\1n\10\0\r\10\0\16\10\0\17\10\0\33\10\0\34\10\0\35\10\0\36\10\0 \10\0!\10\0\"\10\0)\10\0004\1\0\1 \1\0\10 throws \1\0\1(\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4()[B\1\0\25(I)Ljava/lang/String;\1\0\4(I)Z\1\0\25(Ljava/lang/Object;)Z\1\0,(Ljava/lang/String;)Ljava/lang/StringBuffer;\1\0\25(Ljava/lang/String;)V\1\0'([Ljava/lang/Object;)Ljava/lang/Object;\1\0\1)\1\0\1,\1\0\3...\1\0\1<\1\0\6\1\0\1>\1\0\2> \1\0'Cannot reflectively create enum objects\1\0\4Code\1\0\nExceptions\1\0\1I\1\0\17LineNumberTable\1\0\21Ljava/lang/Class;\1\0\22Ljava/lang/String;\1\0006Parameter annotations don't match number of parameters\1\0\31RuntimeVisibleAnnotations\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\1Z\1\0\2[B\1\0\22[Ljava/lang/Class;\1\0\31[Ljava/lang/reflect/Type;\1\0![Ljava/lang/reflect/TypeVariable;\1\0#[[Ljava/lang/annotation/Annotation;\1\0\5\\[\\]$\1\0\32acquireConstructorAccessor\1\0\vannotations\1\0\6append\1\0\vcheckAccess\1\0\5clazz\1\0\5clone\1\0\23constructorAccessor\1\0\24constructorModifiers\1\0\4copy\1\0\23declaredAnnotations\1\0\6equals\1\0\16exceptionTypes\1\0\vgenericInfo\1\0\3get\1\0\rgetAnnotation\1\0\16getCallerClass\1\0\17getConstantPool\1\0\26getConstructorAccessor\1\0\26getDeclared"..., 9748) = 9748 30059 mprotect(0x7fb3140c0000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 60591823, SEEK_SET) = 60591823 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\267\263\273\r\334\0\0\0\334\0\0\0#\0\0\0", 30) = 30 30059 lseek(4, 60591888, SEEK_SET) = 60591888 30059 read(4, "\312\376\272\276\0\0\0003\0\r\1\0\3()V\1\0\6\1\0\4Code\1\0\17LineNumberTable\1\0\nSourceFile\1\0\20java/lang/Object\1\0\35sun/reflect/MagicAccessorImpl\7\0\6\7\0\7\f\0\2\0\1\n\0\10\0\n\1\0\26MagicAccessorImpl.java\0 \0\t\0\10\0\0\0\0\0\1\0\0\0\2\0\1\0\1\0\3\0\0\0\35\0\1\0\1\0\0\0\5*\267\0\v\261\0\0\0\1\0\4\0\0\0\6\0\1\0\0\0.\0\1\0\5\0\0\0\2\0\f", 220) = 220 30059 lseek(4, 60591297, SEEK_SET) = 60591297 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B4\263\340U\314\1\0\0\314\1\0\0$\0\0\0", 30) = 30 30059 lseek(4, 60591363, SEEK_SET) = 60591363 30059 read(4, "\312\376\272\276\0\0\0003\0\26\1\0\3()V\1\0009(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;\1\0\6\1\0\4Code\1\0\nExceptions\1\0\17LineNumberTable\1\0\nSourceFile\1\0\6invoke\1\0\"java/lang/IllegalArgumentException\1\0+java/lang/reflect/InvocationTargetException\1\0\35sun/reflect/MagicAccessorImpl\1\0\32sun/reflect/MethodAccessor\1\0\36sun/reflect/MethodAccessorImpl\7\0\t\7\0\n\7\0\v\7\0\f\7\0\r\f\0\3\0\1\n\0\20\0\23\1\0\27MethodAccessorImpl.java\4 \0\22\0\20\0\1\0\21\0\0\0\2\0\0\0\3\0\1\0\1\0\4\0\0\0\35\0\1\0\1\0\0\0\5*\267\0\24\261\0\0\0\1\0\6\0\0\0\6\0\1\0\0\0+\4\1\0\10\0\2\0\1\0\5\0\0\0\6\0\2\0\16\0\17\0\1\0\7\0\0\0\2\0\25", 460) = 460 30059 lseek(4, 60590923, SEEK_SET) = 60590923 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B]\223Ex8\1\0\0008\1\0\0 \0\0\0", 30) = 30 30059 lseek(4, 60590985, SEEK_SET) = 60590985 30059 read(4, "\312\376\272\276\0\0\0003\0\16\1\0009(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;\1\0\nExceptions\1\0\nSourceFile\1\0\6invoke\1\0\"java/lang/IllegalArgumentException\1\0\20java/lang/Object\1\0+java/lang/reflect/InvocationTargetException\1\0\32sun/reflect/MethodAccessor\7\0\5\7\0\6\7\0\7\7\0\10\1\0\23MethodAccessor.java\6\1\0\f\0\n\0\0\0\0\0\1\4\1\0\4\0\1\0\1\0\2\0\0\0\6\0\2\0\t\0\v\0\1\0\3\0\0\0\2\0\r", 312) = 312 30059 lseek(4, 60590350, SEEK_SET) = 60590350 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B<\264\366]\366\1\0\0\366\1\0\0)\0\0\0", 30) = 30 30059 lseek(4, 60590421, SEEK_SET) = 60590421 30059 read(4, "\312\376\272\276\0\0\0003\0\30\1\0\3()V\1\0'([Ljava/lang/Object;)Ljava/lang/Object;\1\0\6\1\0\4Code\1\0\nExceptions\1\0\17LineNumberTable\1\0\nSourceFile\1\0\"java/lang/IllegalArgumentException\1\0 java/lang/InstantiationException\1\0+java/lang/reflect/InvocationTargetException\1\0\vnewInstance\1\0\37sun/reflect/ConstructorAccessor\1\0#sun/reflect/ConstructorAccessorImpl\1\0\35sun/reflect/MagicAccessorImpl\7\0\10\7\0\t\7\0\n\7\0\f\7\0\r\7\0\16\f\0\3\0\1\n\0\24\0\25\1\0\34ConstructorAccessorImpl.java\4 \0\23\0\24\0\1\0\22\0\0\0\2\0\0\0\3\0\1\0\1\0\4\0\0\0\35\0\1\0\1\0\0\0\5*\267\0\26\261\0\0\0\1\0\6\0\0\0\6\0\1\0\0\0\"\4\1\0\v\0\2\0\1\0\5\0\0\0\10\0\3\0\20\0\17\0\21\0\1\0\7\0\0\0\2\0\27", 502) = 502 30059 lseek(4, 60589934, SEEK_SET) = 60589934 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305BQ\311\6X]\1\0\0]\1\0\0%\0\0\0", 30) = 30 30059 lseek(4, 60590001, SEEK_SET) = 60590001 30059 read(4, "\312\376\272\276\0\0\0003\0\20\1\0'([Ljava/lang/Object;)Ljava/lang/Object;\1\0\nExceptions\1\0\nSourceFile\1\0\"java/lang/IllegalArgumentException\1\0 java/lang/InstantiationException\1\0\20java/lang/Object\1\0+java/lang/reflect/InvocationTargetException\1\0\vnewInstance\1\0\37sun/reflect/ConstructorAccessor\7\0\4\7\0\5\7\0\6\7\0\7\7\0\t\1\0\30ConstructorAccessor.java\6\1\0\16\0\f\0\0\0\0\0\1\4\1\0\10\0\1\0\1\0\2\0\0\0\10\0\3\0\v\0\n\0\r\0\1\0\3\0\0\0\2\0\17", 349) = 349 30059 lseek(4, 60589613, SEEK_SET) = 60589613 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305BX\275\335\337\374\0\0\0\374\0\0\0'\0\0\0", 30) = 30 30059 lseek(4, 60589682, SEEK_SET) = 60589682 30059 read(4, "\312\376\272\276\0\0\0003\0\r\1\0\6\1\0\21ClassDefiner.java\1\0\4Code\1\0\17LineNumberTable\1\0\nSourceFile\1\0\25java/lang/ClassLoader\1\0!sun/reflect/DelegatingClassLoader\7\0\6\7\0\7\1\0\32(Ljava/lang/ClassLoader;)V\f\0\1\0\n\n\0\10\0\v\0 \0\t\0\10\0\0\0\0\0\1\0\0\0\1\0\n\0\1\0\3\0\0\0\"\0\2\0\2\0\0\0\6*+\267\0\f\261\0\0\0\1\0\4\0\0\0\n\0\2\0\0\0H\0\5\0I\0\1\0\5\0\0\0\2\0\2", 252) = 252 30059 lseek(4, 60587210, SEEK_SET) = 60587210 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\347\361TD'\t\0\0'\t\0\0\36\0\0\0", 30) = 30 30059 lseek(4, 60587270, SEEK_SET) = 60587270 30059 read(4, "\312\376\272\276\0\0\0003\0g\10\0\20\1\0\3()I\1\0\3()V\1\0\4(I)D\1\0\4(I)F\1\0\4(I)I\1\0\4(I)J\1\0\25(I)Ljava/lang/String;\1\0\25(Ljava/lang/Object;)I\1\0\10\1\0\6\1\0\4Code\1\0\17LineNumberTable\1\0\22Ljava/lang/Object;\1\0\nSourceFile\1\0\17constantPoolOop\1\0\ngetClassAt\1\0\vgetClassAt0\1\0\22getClassAtIfLoaded\1\0\23getClassAtIfLoaded0\1\0\vgetDoubleAt\1\0\fgetDoubleAt0\1\0\ngetFieldAt\1\0\vgetFieldAt0\1\0\22getFieldAtIfLoaded\1\0\23getFieldAtIfLoaded0\1\0\ngetFloatAt\1\0\vgetFloatAt0\1\0\10getIntAt\1\0\tgetIntAt0\1\0\tgetLongAt\1\0\ngetLongAt0\1\0\22getMemberRefInfoAt\1\0\23getMemberRefInfoAt0\1\0\vgetMethodAt\1\0\fgetMethodAt0\1\0\23getMethodAtIfLoaded\1\0\24getMethodAtIfLoaded0\1\0\7getSize\1\0\10getSize0\1\0\vgetStringAt\1\0\fgetStringAt0\1\0\tgetUTF8At\1\0\ngetUTF8At0\1\0\20java/lang/Object\1\0\20java/lang/String\1\0\26registerFieldsToFilter\1\0\30sun/reflect/ConstantPool\1\0\26sun/reflect/Reflection\7\0-\7\0.\7\0000\7\0001\1\0\24(I)Ljava/lang/Class;\1\0\26(Ljava/lang/Object;I)D\1\0\26(Ljava/lang/Object;I)F\1\0\26(Ljava/lang/Object;I)I\1\0\26(Ljava/lang/Object;I)J\1\0\26(I)[Ljava/lang/String;\1\0\34(I)Ljava/lang/reflect/Field;\1\0\35(I)Ljava/lang/reflect/Member;\1\0&(Ljava/lang/Object;I)Ljav"..., 2343) = 2343 30059 lseek(4, 60586438, SEEK_SET) = 60586438 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B\243\314\5\241\267\2\0\0\267\2\0\0/\0\0\0", 30) = 30 30059 lseek(4, 60586515, SEEK_SET) = 60586515 30059 read(4, "\312\376\272\276\0\0\0003\0&\10\0\t\1\0\3()V\1\0\10\1\0\6\1\0\4Code\1\0\17LineNumberTable\1\0\22Ljava/lang/Object;\1\0\nSourceFile\1\0\4base\1\0\20java/lang/String\1\0\26registerFieldsToFilter\1\0\17staticFieldBase\1\0\17sun/misc/Unsafe\1\0\26sun/reflect/Reflection\1\0#sun/reflect/UnsafeFieldAccessorImpl\1\0)sun/reflect/UnsafeStaticFieldAccessorImpl\1\0\6unsafe\7\0\n\7\0\r\7\0\16\7\0\17\7\0\20\1\0\21Lsun/misc/Unsafe;\1\0\34(Ljava/lang/reflect/Field;)V\1\0-(Ljava/lang/reflect/Field;)Ljava/lang/Object;\1\0'(Ljava/lang/Class;[Ljava/lang/String;)V\f\0\t\0\7\f\0\21\0\27\f\0\4\0\30\f\0\f\0\31\f\0\v\0\32\t\0\26\0\33\t\0\26\0\34\n\0\23\0\36\n\0\24\0\37\n\0\25\0\35\1\0\"UnsafeStaticFieldAccessorImpl.java\4 \0\26\0\25\0\0\0\1\0\4\0\t\0\7\0\0\0\2\0\0\0\4\0\30\0\1\0\5\0\0\0001\0\3\0\2\0\0\0\21*+\267\0$*\262\0!+\266\0\"\265\0 \261\0\0\0\1\0\6\0\0\0\16\0\3\0\0\0001\0\5\0002\0\20\0003\0\10\0\3\0\2\0\1\0\5\0\0\0,\0\5\0\0\0\0\0\20\23\0\26\4\275\0\22Y\3\22\1S\270\0#\261\0\0\0\1\0\6\0\0\0\n\0\2\0\0\0*\0\17\0,\0\1\0\10\0\0\0\2\0%", 695) = 695 30059 lseek(4, 60581348, SEEK_SET) = 60581348 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B\221\304=\277\233\23\0\0\233\23\0\0)\0\0\0", 30) = 30 30059 lseek(4, 60581419, SEEK_SET) = 60581419 30059 read(4, "\312\376\272\276\0\0\0003\0\341\10\0\27\10\0\30\10\0\31\10\0\32\10\0\33\10\0\34\10\0\35\10\0\36\10\0\37\10\0002\10\0003\10\0006\10\0007\10\0@\10\0A\10\0B\10\0C\10\0G\10\0P\10\0e\10\0o\10\0p\1\0\0\1\0\1 \1\0\7 field \1\0\10 field \"\1\0\6 final\1\0\7 static\1\0\4 to \1\0'\" with illegal data type conversion to \1\0\1(\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\4(B)V\1\0\25(C)Ljava/lang/String;\1\0\4(C)V\1\0\25(D)Ljava/lang/String;\1\0\4(D)V\1\0\4(F)V\1\0\25(I)Ljava/lang/String;\1\0\4(I)V\1\0\4(I)Z\1\0\4(J)V\1\0\25(Ljava/lang/Object;)V\1\0\25(Ljava/lang/String;)V\1\0'(Ljava/lang/String;Ljava/lang/String;)V\1\0\4(S)V\1\0\4(Z)V\1\0\1)\1\0\1.\1\0\10\1\0\6\1\0\17Attempt to get \1\0\vCan not set\1\0\4Code\1\0\nExceptions\1\0\1I\1\0\17LineNumberTable\1\0\nSourceFile\1\0\rStackMapTable\1\0\1Z\1\0\6append\1\0\7boolean\1\0\4byte\1\0\4char\1\0\6double\1\0\tensureObj\1\0\5field\1\0\vfieldOffset\1\0\5float\1\0\10getClass\1\0\21getDeclaringClass\1\0\fgetModifiers\1\0\7getName\1\0\25getQualifiedFieldName\1\0\rgetSetMessage\1\0\7getType\1\0\tgetUnsafe\1\0\3int\1\0\20isAssignableFrom\1\0\7isFinal\1\0\10isStatic\1\0\21java/lang/Boolean\1\0\16java/lang/Byte\1\0\23java/lang/Character\1\0\17java/lang/Class\1\0\20java/lang/Double\1\0\17java/lang/Float\1\0 java/lang/IllegalAccessException\1\0\"java/lang/IllegalArgumentExce"..., 5019) = 5019 30059 mprotect(0x7fb3140c1000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 60579925, SEEK_SET) = 60579925 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B\23\\\361bN\5\0\0N\5\0\0#\0\0\0", 30) = 30 30059 lseek(4, 60579990, SEEK_SET) = 60579990 30059 read(4, "\312\376\272\276\0\0\0003\0008\1\0\3()V\1\0\25(Ljava/lang/Object;)D\1\0\25(Ljava/lang/Object;)I\1\0\25(Ljava/lang/Object;)J\1\0\25(Ljava/lang/Object;)Z\1\0\6\1\0\4Code\1\0\nExceptions\1\0\17LineNumberTable\1\0\nSourceFile\1\0\3get\1\0\ngetBoolean\1\0\7getByte\1\0\7getChar\1\0\tgetDouble\1\0\10getFloat\1\0\6getInt\1\0\7getLong\1\0\10getShort\1\0 java/lang/IllegalAccessException\1\0\"java/lang/IllegalArgumentException\1\0\3set\1\0\nsetBoolean\1\0\7setByte\1\0\7setChar\1\0\tsetDouble\1\0\10setFloat\1\0\6setInt\1\0\7setLong\1\0\10setShort\1\0\31sun/reflect/FieldAccessor\1\0\35sun/reflect/FieldAccessorImpl\1\0\35sun/reflect/MagicAccessorImpl\7\0\24\7\0\25\7\0\37\7\0 \7\0!\1\0\25(Ljava/lang/Object;)B\1\0\25(Ljava/lang/Object;)C\1\0\25(Ljava/lang/Object;)F\1\0\25(Ljava/lang/Object;)S\1\0\26(Ljava/lang/Object;B)V\1\0\26(Ljava/lang/Object;C)V\1\0\26(Ljava/lang/Object;D)V\1\0\26(Ljava/lang/Object;F)V\1\0\26(Ljava/lang/Object;I)V\1\0\26(Ljava/lang/Object;J)V\1\0\26(Ljava/lang/Object;S)V\1\0\26(Ljava/lang/Object;Z)V\1\0&(Ljava/lang/Object;)Ljava/lang/Object;\1\0'(Ljava/lang/Object;Ljava/lang/Object;)V\f\0\6\0\1\n\0&\0005\1\0\26FieldAccessorImpl.java\4 \0%\0&\0\1\0$\0\0\0\23\0\0\0\6\0\1\0\1\0\7\0\0\0\35\0\1\0\1\0\0\0\5*\267\0006\261\0\0\0\1\0\t\0\0\0\6"..., 1358) = 1358 30059 lseek(4, 60578653, SEEK_SET) = 60578653 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\254\277Zt\273\4\0\0\273\4\0\0\37\0\0\0", 30) = 30 30059 lseek(4, 60578714, SEEK_SET) = 60578714 30059 read(4, "\312\376\272\276\0\0\0003\0000\1\0\25(Ljava/lang/Object;)D\1\0\25(Ljava/lang/Object;)I\1\0\25(Ljava/lang/Object;)J\1\0\25(Ljava/lang/Object;)Z\1\0\nExceptions\1\0\nSourceFile\1\0\3get\1\0\ngetBoolean\1\0\7getByte\1\0\7getChar\1\0\tgetDouble\1\0\10getFloat\1\0\6getInt\1\0\7getLong\1\0\10getShort\1\0 java/lang/IllegalAccessException\1\0\"java/lang/IllegalArgumentException\1\0\20java/lang/Object\1\0\3set\1\0\nsetBoolean\1\0\7setByte\1\0\7setChar\1\0\tsetDouble\1\0\10setFloat\1\0\6setInt\1\0\7setLong\1\0\10setShort\1\0\31sun/reflect/FieldAccessor\7\0\20\7\0\21\7\0\22\7\0\34\1\0\25(Ljava/lang/Object;)B\1\0\25(Ljava/lang/Object;)C\1\0\25(Ljava/lang/Object;)F\1\0\25(Ljava/lang/Object;)S\1\0\26(Ljava/lang/Object;B)V\1\0\26(Ljava/lang/Object;C)V\1\0\26(Ljava/lang/Object;D)V\1\0\26(Ljava/lang/Object;F)V\1\0\26(Ljava/lang/Object;I)V\1\0\26(Ljava/lang/Object;J)V\1\0\26(Ljava/lang/Object;S)V\1\0\26(Ljava/lang/Object;Z)V\1\0&(Ljava/lang/Object;)Ljava/lang/Object;\1\0'(Ljava/lang/Object;Ljava/lang/Object;)V\1\0\22FieldAccessor.java\6\1\0 \0\37\0\0\0\0\0\22\4\1\0\7\0-\0\1\0\5\0\0\0\4\0\1\0\36\4\1\0\10\0\4\0\1\0\5\0\0\0\4\0\1\0\36\4\1\0\t\0!\0\1\0\5\0\0\0\4\0\1\0\36\4\1\0\n\0\"\0\1\0\5\0\0\0\4\0\1\0\36\4\1\0\17\0$\0\1\0\5\0\0\0\4\0\1\0\36\4\1\0\r\0\2\0\1\0\5\0\0\0\4\0\1\0\36\4\1\0\16\0\3\0\1\0\5\0\0\0\4\0\1\0\36\4\1\0\f\0#\0\1\0\5\0\0\0\4\0"..., 1211) = 1211 30059 lseek(4, 28096442, SEEK_SET) = 28096442 30059 read(4, "PK\3\4\n\0\0\0\0\0Q\246\305B>\253\"nb\32\0\0b\32\0\0#\0\0\0", 30) = 30 30059 lseek(4, 28096507, SEEK_SET) = 28096507 30059 read(4, "\312\376\272\276\0\0\0003\1!\10\0\n\10\0\"\10\0+\10\0,\10\0-\10\0005\10\0:\10\0c\10\0d\1\0\4 to \1\0\23$assertionsDisabled\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\26(I)Ljava/lang/Integer;\1\0\25(Ljava/lang/String;)V\1\0'([Ljava/lang/Object;)Ljava/lang/Object;\1\0\10\1\0\6\1\0\1B\1\0\4Code\1\0\rConstantValue\1\0\31DEBUG_METHOD_HANDLE_NAMES\1\0\nExceptions\1\0\1I\1\0\tINT_FIELD\1\0\fInnerClasses\1\0\1J\1\0\nLONG_FIELD\1\0\17LineNumberTable\1\0\21Ljava/lang/Class;\1\0\22Ljava/lang/Object;\1\0\fMethodHandle\1\0\31RuntimeVisibleAnnotations\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\4TYPE\1\0\1Z\1\0\23[Ljava/lang/Object;\1\0\6append\1\0\31array length is not legal\1\0000array length is not legal for long[] or double[]\1\0.array type not assignable to trailing argument\1\0\vasCollector\1\0\21asCollectorChecks\1\0\fasFixedArity\1\0\nasSpreader\1\0\20asSpreaderChecks\1\0\6asType\1\0\22asVarargsCollector\1\0\27bad spread array length\1\0\fbindArgument\1\0\fbindReceiver\1\0\6bindTo\1\0\ncanConvert\1\0\17cannot convert \1\0\ncheckValue\1\0\20collectArguments\1\0\20convertArguments\1\0\vdebugString\1\0\26desiredAssertionStatus\1\0\21genericMethodType\1\0\10getClass\1\0\20getComponentType\1\0\rget"..., 6754) = 6754 30059 mprotect(0x7fb3140c2000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb3140c3000, 8192, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 28084514, SEEK_SET) = 28084514 30059 read(4, "PK\3\4\n\0\0\0\0\0Q\246\305B\313\240\227$\v,\0\0\v,\0\0!\0\0\0", 30) = 30 30059 lseek(4, 28084577, SEEK_SET) = 28084577 30059 read(4, "\312\376\272\276\0\0\0003\1\236\3\377\377\0\0\3\0\0\377\377\3\0\1\0\0\3\0\1\0@\3\0\2\0\0\3\0\3\0\0\3\0\4\0\0\3\0\5\0\0\3\0\10\0\0\3\0\17\0\0\3\0\20\0\0\10\0\34\10\0!\10\0)\10\0*\10\0+\10\0-\10\0X\10\0Y\10\0\243\10\0\244\10\0\245\10\0\246\10\0\247\10\0\250\10\0\251\1\0\23$assertionsDisabled\1\0\2()\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4(*)*\1\0\4(I)V\1\0\4(I)Z\1\0\5(II)I\1\0\5(II)Z\1\0&(Ljava/lang/Object;)Ljava/lang/String;\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)V\1\0\1*\1\0\7, from \1\0\2: \1\0\10\1\0\6\1\0\nALL_ACCESS\1\0\tALL_KINDS\1\0\nANNOTATION\1\0\6BRIDGE\1\0\20CONSTRUCTOR_NAME\1\0\4Code\1\0\rConstantValue\1\0\4ENUM\1\0\nExceptions\1\0\1I\1\0\10INSTANCE\1\0\23IS_CALLER_SENSITIVE\1\0\16IS_CONSTRUCTOR\1\0\10IS_FIELD\1\0\22IS_FIELD_OR_METHOD\1\0\fIS_INVOCABLE\1\0\tIS_METHOD\1\0\7IS_TYPE\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\21Ljava/lang/Class;\1\0\22Ljava/lang/Object;\1\0\22Ljava/lang/String;\1\0\24RECOGNIZED_MODIFIERS\1\0\21SEARCH_ALL_SUPERS\1\0\21SEARCH_INTERFACES\1\0\23SEARCH_SUPERCLASSES\1\0\tSYNTHETIC\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\4TYPE\1\0\7VARARGS\1\0\1Z\1\0\22[Ljava/lang/Class;\1\0\23[Ljava/lang/Object;\1\0\naccess$000\1\0\naccess$002\1\0\naccess$100\1\0\naccess$102\1\0\naccess$200\1\0\6append\1\0\17bad field type \1\0\20bad method type \1\0\5clazz\1\0\5clone\1"..., 11275) = 11275 30059 mprotect(0x7fb3140c5000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 28171402, SEEK_SET) = 28171402 30059 read(4, "PK\3\4\n\0\0\0\0\0Q\246\305B\333)\211\252r3\0\0r3\0\0*\0\0\0", 30) = 30 30059 lseek(4, 28171474, SEEK_SET) = 28171474 30059 read(4, "\312\376\272\276\0\0\0003\2\6\10\0V\10\0W\10\0X\10\0Y\10\0Z\10\0h\10\0i\10\0j\10\0k\10\0o\10\0r\10\0{\10\0\203\10\0\205\10\0\207\10\0\210\10\0\212\10\0\213\10\0\221\10\0\222\10\0\224\10\0\225\10\0\226\10\0\227\10\0\230\10\0\231\10\0\232\10\0\233\10\0\235\10\0\236\10\0\237\10\0\241\10\0\242\10\0\243\10\0\245\10\0\246\10\0\247\10\0\250\10\0\251\10\0\252\10\0\253\10\0\255\10\0\256\10\0\257\10\0\260\10\0\261\10\0\262\10\0\263\10\0\264\10\0\265\10\0\266\10\0\270\10\0\271\10\0\273\10\0\275\10\0\300\10\0\301\10\0\302\10\0\303\10\0\304\10\0\305\10\0\311\10\0\312\10\0\317\10\1\f\10\1\r\10\1\16\10\1\23\10\1\24\10\1\25\10\1\31\10\1\33\10\1\34\10\1\36\10\1\37\10\1 \10\1#\10\1$\10\1%\10\1&\10\1'\10\1(\10\1,\10\1.\10\0011\1\0\0\1\0\21 but encountered \1\0\v of length \1\0\33 which Java does not define\1\0\20 while Java has \1\0\23$assertionsDisabled\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4(I)I\1\0\26(I)Ljava/lang/Integer;\1\0\25(Ljava/lang/Object;)I\1\0\25(Ljava/lang/Object;)V\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)V\1\0\25(Ljava/lang/String;)Z\1\0\30(Ljava/lang/Throwable;)V\1\0\37, but encountered wrong length \1\0\2: \1\0\n: JVM has \1\0\25: access failed, got \1\0\10\1\0\6\1\0\30CONV_OP_IMPLEMENTED_MASK\1\0\rCONV_OP_LIMIT\1\0\tCOUNT_GWT\1\0\4Code\1\0\3GC_\1\0\24HAVE_RICOCHET_FRAMES\1\0\1I\1\0\vIMPL_LOOKUP\1\0\fInnerClasses\1\0\16JVM_PUSH_LIMIT\1\0\23JVM_STACK_MOVE_UNIT\1\0\17LineNumberTable\1\0\25Ljava/io/PrintStream;\1\0\3OP_\1\0\33OP_ROT_ARGS_DOWN_LIMIT_BIAS\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\1Z\1\0\23[Ljava/lang/Object;\1\0\6"..., 13170) = 13170 30059 mprotect(0x7fb3140c6000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb3140c7000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 27836470, SEEK_SET) = 27836470 30059 read(4, "PK\3\4\n\0\0\0\0\0Q\246\305B]\240\2643xT\0\0xT\0\0*\0\0\0", 30) = 30 30059 lseek(4, 27836542, SEEK_SET) = 27836542 30059 read(4, "\312\376\272\276\0\0\0003\2.\10\0\t\10\0)\10\0001\10\0008\10\0009\10\0:\10\0N\10\0\224\1\0\20 conversion for \1\0\"$SwitchMap$sun$invoke$util$Wrapper\1\0\23$assertionsDisabled\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4(I)I\1\0\4(I)J\1\0\26(I)Ljava/lang/Integer;\1\0\4(I)Z\1\0\5(II)I\1\0\10(IIBIB)J\1\0\6(III)J\1\0\7(IIII)J\1\0\10(IIIII)J\1\0\4(J)I\1\0\25(Ljava/lang/Object;)V\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)V\1\0\10\1\0\6\1\0\30CONV_OP_IMPLEMENTED_MASK\1\0\4Code\1\0\rConstantValue\1\0\1I\1\0\fInnerClasses\1\0\23JVM_STACK_MOVE_UNIT\1\0\17LineNumberTable\1\0\21Ljava/lang/Class;\1\0\22Ljava/lang/Object;\1\0\20MAX_ARG_ROTATION\1\0\3NYI\1\0\33OP_ROT_ARGS_DOWN_LIMIT_BIAS\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\4TYPE\1\0\1Z\1\0\2[I\1\0E[newType, targetType, spreadArgType, spreadArgPos, spreadArgCount] = \1\0\6append\1\0\fasFixedArity\1\0\6asList\1\0\17asPrimitiveType\1\0\6asType\1\0\rasWrapperType\1\0\16bad argument #\1\0\21bad permutation: \1\0\32bad return conversion for \1\0\tbasicType\1\0\3box\1\0\16canBoxArgument\1\0\fcanCheckCast\1\0\23canCollectArguments\1\0\22canConvertArgument\1\0\20canDropArguments\1\0\17canDupArguments\1\0\22canPairwiseConvert\1\0\ncanPassRaw\1\0\20canPassUnc"..., 21624) = 21624 30059 mprotect(0x7fb3140c8000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb3140c9000, 8192, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb3140cb000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 27858166, SEEK_SET) = 27858166 30059 read(4, "PK\3\4\n\0\0\0\0\0Q\246\305Be\271 \233j\21\0\0j\21\0\0(\0\0\0", 30) = 30 30059 lseek(4, 27858236, SEEK_SET) = 27858236 30059 read(4, "\312\376\272\276\0\0\0003\0\314\10\0\5\10\0\6\10\0#\10\0B\1\0\30 argument to parameter #\1\0\4 of \1\0\23$assertionsDisabled\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4(I)I\1\0\26(I)Ljava/lang/Integer;\1\0\26(II)Ljava/lang/String;\1\0&(Ljava/lang/String;)Ljava/lang/String;\1\0\25(Ljava/lang/String;)V\1\0\10\1\0\6\1\0\4Code\1\0\1I\1\0\3INT\1\0\17LineNumberTable\1\0\21Ljava/lang/Class;\1\0\22Ljava/lang/Object;\1\0\nSourceFile\1\0\rStackMapTable\1\0\4TYPE\1\0\1Z\1\0\raddTypeString\1\0\6append\1\0\10argument\1\0\31badBoundArgumentException\1\0\10baseName\1\0\25bindPrimitiveArgument\1\0\fcannot bind \1\0\26checkReferenceArgument\1\0\vdebugString\1\0\26desiredAssertionStatus\1\0\22dropParameterTypes\1\0\20forPrimitiveType\1\0\10getClass\1\0\7getName\1\0\rgetTargetInfo\1\0\7indexOf\1\0\4init\1\0\ninitTarget\1\0\31isNullReferenceConversion\1\0\visPrimitive\1\0\16isSubwordOrInt\1\0\30java/lang/AssertionError\1\0\17java/lang/Class\1\0\34java/lang/ClassCastException\1\0\21java/lang/Integer\1\0\20java/lang/Object\1\0\20java/lang/String\1\0\27java/lang/StringBuilder\1\0$java/lang/invoke/AdapterMethodHandle\1\0\"java/lang/invoke/BoundMethodHandle\1\0#java/lang/invoke/DirectMethodHandle\1\0\33ja"..., 4458) = 4458 30059 lseek(4, 27871443, SEEK_SET) = 27871443 30059 read(4, "PK\3\4\n\0\0\0\0\0Q\246\305B'\231\24\236\217\7\0\0\217\7\0\0)\0\0\0", 30) = 30 30059 lseek(4, 27871514, SEEK_SET) = 27871514 30059 read(4, "\312\376\272\276\0\0\0003\0f\1\0\23$assertionsDisabled\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\10\1\0\6\1\0\4Code\1\0\1I\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\1Z\1\0\26desiredAssertionStatus\1\0\21getDeclaringClass\1\0\ngetFactory\1\0\rgetMethodType\1\0\fgetModifiers\1\0\7getName\1\0\4init\1\0\nisAbstract\1\0\risConstructor\1\0\visInterface\1\0\10isMethod\1\0\10isPublic\1\0\nisResolved\1\0\7isValid\1\0\30java/lang/AssertionError\1\0\17java/lang/Class\1\0\27java/lang/InternalError\1\0\20java/lang/Object\1\0#java/lang/invoke/DirectMethodHandle\1\0\33java/lang/invoke/MemberName\1\0#java/lang/invoke/MemberName$Factory\1\0\35java/lang/invoke/MethodHandle\1\0$java/lang/invoke/MethodHandleNatives\1\0\33java/lang/invoke/MethodType\1\0\rresolveOrNull\1\0\7vmindex\7\0\36\7\0\37\7\0 \7\0!\7\0\"\7\0#\7\0$\7\0%\7\0&\7\0'\1\0\23()Ljava/lang/Class;\1\0'()Ljava/lang/invoke/MemberName$Factory;\1\0\37()Ljava/lang/invoke/MethodType;\1\0 (Ljava/lang/invoke/MethodType;)V\1\0L(Ljava/lang/invoke/DirectMethodHandle;Ljava/lang/Object;ZLjava/lang/Class;)V\1\0O(Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MemberNa"..., 1935) = 1935 30059 mprotect(0x7fb3140cc000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 28231035, SEEK_SET) = 28231035 30059 read(4, "PK\3\4\n\0\0\0\0\0Q\246\305B\213\340\364tj6\0\0j6\0\0!\0\0\0", 30) = 30 30059 lseek(4, 28231098, SEEK_SET) = 28231098 30059 read(4, "\312\376\272\276\0\0\0003\1\365\10\0\f\10\0\16\10\0\33\10\0\34\10\0003\10\0004\10\0\204\10\0\207\10\0\220\10\0\231\10\0\236\1\0\5 end=\1\0\23$assertionsDisabled\1\0\1(\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4(I)I\1\0\26(I)Ljava/lang/Integer;\1\0\4(I)V\1\0\25(Ljava/lang/Object;)V\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)V\1\0\25(Ljava/lang/String;)Z\1\0\30(Ljava/lang/Throwable;)V\1\0\1)\1\0\1,\1\0\10\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\nExceptions\1\0\1J\1\0\17LineNumberTable\1\0\21Ljava/lang/Class;\1\0\17MethodType_init\1\0\tNO_PTYPES\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\4TYPE\1\0\1Z\1\0\34[Ljava/io/ObjectStreamField;\1\0\22[Ljava/lang/Class;\1\0\23[Ljava/lang/Object;\1\0\6append\1\0\24appendParameterTypes\1\0\tarraycopy\1\0\6asList\1\0\vbad index: \1\0\24bad parameter count \1\0\ncanConvert\1\0\fcanonicalize\1\0\23changeParameterType\1\0\20changeReturnType\1\0\ncheckPtype\1\0\vcheckPtypes\1\0\ncheckRtype\1\0\16checkSlotCount\1\0\5clone\1\0\vcopyOfRange\1\0\21defaultReadObject\1\0\22defaultWriteObject\1\0\26desiredAssertionStatus\1\0\22dropParameterTypes\1\0\6equals\1\0\5erase\1\0\nerasedType\1\0\4fill\1\0\10findForm\1\0\20forPrimitiveType\1\0\16forWrapperType\1\0\4form\1\0\32fromMethodDescriptorString\1\0\7generic\1\0\21"..., 13930) = 13930 30059 mprotect(0x7fb3140cd000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 28245028, SEEK_SET) = 28245028 30059 read(4, "PK\3\4\n\0\0\0\0\0Q\246\305B1\317W\253\275\37\0\0\275\37\0\0%\0\0\0", 30) = 30 30059 lseek(4, 28245095, SEEK_SET) = 28245095 30059 read(4, "\312\376\272\276\0\0\0003\1\10\3\377\377\0\0\10\0\23\10\0\24\10\0j\1\0\23$assertionsDisabled\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4(I)I\1\0\7(IIII)J\1\0\5(JI)C\1\0\25(Ljava/lang/String;)V\1\0\10\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\5ERASE\1\0(Exception while resolving inexact invoke\1\0\4Form\1\0\1I\1\0\4INTS\1\0\1J\1\0\5LONGS\1\0\17LineNumberTable\1\0\21Ljava/lang/Class;\1\0\22Ljava/lang/Object;\1\0\tNO_CHANGE\1\0\nRAW_RETURN\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\4TYPE\1\0\6UNWRAP\1\0\4WRAP\1\0\1Z\1\0\2[I\1\0\22[Ljava/lang/Class;\1\0![Ljava/lang/invoke/SpreadGeneric;\1\0\6append\1\0\targCounts\1\0\22argSlotToParameter\1\0\16argToSlotTable\1\0\17asPrimitiveType\1\0\rasWrapperType\1\0\fcanonicalize\1\0\rcanonicalizes\1\0\5clone\1\0\26desiredAssertionStatus\1\0\nerasedType\1\0\rfilterGeneric\1\0\10findForm\1\0\4form\1\0\vfromGeneric\1\0\20generalInvokerOf\1\0\16genericInvoker\1\0\21hasLongPrimitives\1\0\rhasPrimitives\1\0\16hasTwoArgSlots\1\0\tinitCause\1\0\visPrimitive\1\0\30java/lang/AssertionError\1\0\17java/lang/Class\1\0\20java/lang/Double\1\0\17java/lang/Error\1\0\23java/lang/Exception\1\0\17java/lang/Float\1\0\21java/lang/Integer\1\0\27java/lang/InternalError\1\0\16java/lang/Long\1\0\20java/"..., 8125) = 8125 30059 lseek(4, 27667036, SEEK_SET) = 27667036 30059 read(4, "PK\3\4\n\0\0\0\0\0Q\246\305B\327r\\\253\r\3\0\0\r\3\0\0$\0\0\0", 30) = 30 30059 lseek(4, 27667102, SEEK_SET) = 27667102 30059 read(4, "\312\376\272\276\0\0\0003\0&\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\25(Ljava/lang/String;)V\1\0\30(Ljava/lang/Throwable;)V\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\1J\1\0\17LineNumberTable\1\0\nSourceFile\1\0\rStackMapTable\1\0\tinitCause\1\0\36java/lang/BootstrapMethodError\1\0\26java/lang/LinkageError\1\0\20java/lang/String\1\0\23java/lang/Throwable\1\0\20serialVersionUID\1\0\10toString\5\0\0\0\0\0\0\1$\7\0\r\7\0\16\7\0\17\7\0\20\1\0*(Ljava/lang/String;Ljava/lang/Throwable;)V\1\0,(Ljava/lang/Throwable;)Ljava/lang/Throwable;\f\0\5\0\2\f\0\22\0\1\f\0\5\0\3\f\0\5\0\31\f\0\f\0\32\n\0\25\0\37\n\0\26\0\33\n\0\26\0\35\n\0\26\0\36\n\0\30\0\34\1\0\31BootstrapMethodError.java\0!\0\25\0\26\0\0\0\1\0\32\0\21\0\10\0\1\0\7\0\0\0\2\0\23\0\4\0\1\0\5\0\2\0\1\0\6\0\0\0!\0\1\0\1\0\0\0\5*\267\0!\261\0\0\0\1\0\t\0\0\0\n\0\2\0\0\0-\0\4\0.\0\1\0\5\0\3\0\1\0\6\0\0\0\"\0\2\0\2\0\0\0\6*+\267\0\"\261\0\0\0\1\0\t\0\0\0\n\0\2\0\0\0007\0\5\0008\0\1\0\5\0\31\0\1\0\6\0\0\0#\0\3\0\3\0\0\0\7*+,\267\0#\261\0\0\0\1\0\t\0\0\0\n\0\2\0\0\0B\0\6\0C\0\1\0\5\0\4\0\1\0\6\0\0\0P\0\2\0\2\0\0\0\27*+\307\0\7\1\247\0\7+\266\0$\267\0\"*+\266\0 W\261\0\0\0\2\0\v\0\0\0\23\0\2I\6\377\0\3\0\2\6\7\0\30\0\2\6\7\0\27\0\t\0\0\0\16\0\3\0\0\0M\0\20\0N\0\26\0O\0\1\0\n\0\0\0\2\0%", 781) = 781 30059 lseek(4, 28370228, SEEK_SET) = 28370228 30059 read(4, "PK\3\4\n\0\0\0\0\0Q\246\305B\336\314\31\314\217\1\0\0\217\1\0\0/\0\0\0", 30) = 30 30059 lseek(4, 28370305, SEEK_SET) = 28370305 30059 read(4, "\312\376\272\276\0\0\0003\0\25\1\0\3()V\1\0\25(Ljava/lang/String;)V\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\1J\1\0\17LineNumberTable\1\0\nSourceFile\1\0\32java/lang/RuntimeException\1\0)java/lang/invoke/WrongMethodTypeException\1\0\20serialVersionUID\5\0\0\0\0\0\0\1$\7\0\t\7\0\n\f\0\3\0\1\f\0\3\0\2\n\0\16\0\20\n\0\16\0\21\1\0\35WrongMethodTypeException.java\0!\0\17\0\16\0\0\0\1\0\32\0\v\0\6\0\1\0\5\0\0\0\2\0\f\0\2\0\1\0\3\0\1\0\1\0\4\0\0\0!\0\1\0\1\0\0\0\5*\267\0\22\261\0\0\0\1\0\7\0\0\0\n\0\2\0\0\0002\0\4\0003\0\1\0\3\0\2\0\1\0\4\0\0\0\"\0\2\0\2\0\0\0\6*+\267\0\23\261\0\0\0\1\0\7\0\0\0\n\0\2\0\0\0<\0\5\0=\0\1\0\10\0\0\0\2\0\24", 399) = 399 30059 lseek(4, 27862694, SEEK_SET) = 27862694 30059 read(4, "PK\3\4\n\0\0\0\0\0Q\246\305B\24d0u\361\32\0\0\361\32\0\0\37\0\0\0", 30) = 30 30059 lseek(4, 27862755, SEEK_SET) = 27862755 30059 read(4, "\312\376\272\276\0\0\0003\1\36\10\0\n\10\0%\10\0&\10\0'\10\0002\10\0d\10\0f\10\0h\10\0n\1\0\23 should be of type \1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\26(I)Ljava/lang/Integer;\1\0&(Ljava/lang/Object;)Ljava/lang/String;\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)V\1\0\30(Ljava/lang/Throwable;)V\1\0'([Ljava/lang/Object;)Ljava/lang/Object;\1\0\10\1\0\6\1\0\4Code\1\0\nExceptions\1\0\nGET_TARGET\1\0\1I\1\0\vIMPL_LOOKUP\1\0\fInnerClasses\1\0\1J\1\0\17LineNumberTable\1\0\nSourceFile\1\0\rStackMapTable\1\0\rTARGET_OFFSET\1\0\23[Ljava/lang/Object;\1\0\6append\1\0\fbindReceiver\1\0-bootstrap method failed to produce a CallSite\1\0Acall site has already been linked to an invokedynamic instruction\1\0\"call site initialization exception\1\0\21checkTargetChange\1\0\16dynamicInvoker\1\0\6equals\1\0\fexactInvoker\1\0\vfindVirtual\1\0\rfoldArguments\1\0\10getClass\1\0\20getDeclaredField\1\0\21getDeclaringClass\1\0\21getObjectVolatile\1\0\tgetTarget\1\0\21getTargetVolatile\1\0\tgetUnsafe\1\0\2in\1\0\vinitStatics\1\0\21initializeFromJVM\1\0\10intValue\1\0\6invoke\1\0\23invokeWithArguments\1\0\10invokers\1\0\7isArray\1\0\36java/lang/BootstrapMethodError\1\0\17java/lang/Class\1\0\34java"..., 6897) = 6897 30059 mprotect(0x7fb3140ce000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 27870632, SEEK_SET) = 27870632 30059 read(4, "PK\3\4\n\0\0\0\0\0R\246\305B?\n8=\342\2\0\0\342\2\0\0+\0\0\0", 30) = 30 30059 lseek(4, 27870705, SEEK_SET) = 27870705 30059 read(4, "\312\376\272\276\0\0\0003\0%\1\0\4(I)J\1\0\6\1\0\tCOUNT_GWT\1\0\4Code\1\0\1I\1\0\17LineNumberTable\1\0\nSourceFile\1\0\rStackMapTable\1\0\1Z\1\0$java/lang/invoke/AdapterMethodHandle\1\0%java/lang/invoke/CountingMethodHandle\1\0\35java/lang/invoke/MethodHandle\1\0$java/lang/invoke/MethodHandleNatives\1\0\10makeConv\1\0\4type\1\0\7vmcount\1\0\4wrap\7\0\n\7\0\v\7\0\f\7\0\r\1\0\"(Ljava/lang/invoke/MethodHandle;)V\1\0\37()Ljava/lang/invoke/MethodType;\1\0@(Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;\1\0@(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;J)V\f\0\3\0\t\f\0\16\0\1\f\0\2\0\26\f\0\17\0\27\f\0\2\0\31\t\0\25\0\32\n\0\22\0\33\n\0\22\0\36\n\0\23\0\34\n\0\24\0\35\1\0\31CountingMethodHandle.java\0 \0\23\0\22\0\0\0\1\0\2\0\20\0\5\0\0\0\2\0\2\0\2\0\26\0\1\0\4\0\0\0*\0\5\0\2\0\0\0\16*++\266\0#\3\270\0 \267\0!\261\0\0\0\1\0\6\0\0\0\n\0\2\0\0\0(\0\r\0)\0\10\0\21\0\30\0\1\0\4\0\0\0:\0\3\0\1\0\0\0\21\262\0\37\231\0\f\273\0\23Y*\267\0\"\260*\260\0\0\0\2\0\10\0\0\0\3\0\1\17\0\6\0\0\0\16\0\3\0\0\0-\0\6\0.\0\17\0000\0\1\0\7\0\0\0\2\0$", 738) = 738 30059 lseek(4, 27869652, SEEK_SET) = 27869652 30059 read(4, "PK\3\4\n\0\0\0\0\0R\246\305B\304\3\30\277\217\3\0\0\217\3\0\0'\0\0\0", 30) = 30 30059 lseek(4, 27869721, SEEK_SET) = 27869721 30059 read(4, "\312\376\272\276\0\0\0003\0*\1\0\3()V\1\0\6\1\0\4Code\1\0\nExceptions\1\0\17LineNumberTable\1\0\nSourceFile\1\0\rStackMapTable\1\0\1Z\1\0\16dynamicInvoker\1\0\tgetTarget\1\0\10isFrozen\1\0\37java/lang/IllegalStateException\1\0\23java/lang/Throwable\1\0'java/lang/UnsupportedOperationException\1\0\31java/lang/invoke/CallSite\1\0!java/lang/invoke/ConstantCallSite\1\0\tsetTarget\1\0\6target\7\0\f\7\0\r\7\0\16\7\0\17\7\0\20\1\0\37Ljava/lang/invoke/MethodHandle;\1\0!()Ljava/lang/invoke/MethodHandle;\1\0\"(Ljava/lang/invoke/MethodHandle;)V\1\0?(Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;)V\f\0\v\0\10\f\0\22\0\30\f\0\2\0\1\f\0\n\0\31\f\0\2\0\32\f\0\2\0\33\t\0\27\0\34\t\0\27\0\35\n\0\23\0\36\n\0\25\0\36\n\0\26\0 \n\0\26\0!\n\0\27\0\37\1\0\25ConstantCallSite.java\0!\0\27\0\26\0\0\0\1\0\22\0\v\0\10\0\0\0\5\0\1\0\2\0\32\0\1\0\3\0\0\0+\0\2\0\2\0\0\0\v*+\267\0&*\4\265\0\"\261\0\0\0\1\0\5\0\0\0\16\0\3\0\0\0+\0\5\0,\0\n\0-\0\4\0\2\0\33\0\2\0\3\0\0\0,\0\3\0\3\0\0\0\f*+,\267\0'*\4\265\0\"\261\0\0\0\1\0\5\0\0\0\16\0\3\0\0\0Q\0\6\0R\0\v\0S\0\4\0\0\0\4\0\1\0\24\0\21\0\n\0\31\0\1\0\3\0\0\0009\0\2\0\1\0\0\0\24*\264\0\"\232\0\v\273\0\23Y\267\0$\277*\264\0#\260\0\0\0\2\0\7\0\0\0\3\0\1\17\0\5\0\0\0\n\0\2\0\0\0_\0\17\0`\0\21\0\21\0\32\0\1\0\3\0\0\0 \0\2\0\2\0\0\0\10\273\0\25Y\267\0%\277\0\0\0\1\0\5\0\0\0\6\0\1\0\0\0j\0\21\0\t\0\31\0\1\0\3\0\0\0\35\0\1\0\1\0\0\0\5*\266\0(\260\0\0\0\1\0\5\0\0\0\6\0\1\0\0\0v\0\1\0\6\0\0\0\2\0)", 911) = 911 30059 lseek(4, 28253220, SEEK_SET) = 28253220 30059 read(4, "PK\3\4\n\0\0\0\0\0R\246\305BS+\352\322\360\4\0\0\360\4\0\0&\0\0\0", 30) = 30 30059 lseek(4, 28253288, SEEK_SET) = 28253288 30059 read(4, "\312\376\272\276\0\0\0003\0009\1\0\3()V\1\0\4(I)V\1\0\10\1\0\6\1\0\4Code\1\0\17LineNumberTable\1\0\rSTORE_BARRIER\1\0\nSourceFile\1\0\rStackMapTable\1\0\21checkTargetChange\1\0\16dynamicInvoker\1\0\10getClass\1\0\tgetTarget\1\0\20java/lang/Object\1\0\31java/lang/invoke/CallSite\1\0 java/lang/invoke/MutableCallSite\1\0)java/util/concurrent/atomic/AtomicInteger\1\0\7lazySet\1\0\22makeDynamicInvoker\1\0\tsetTarget\1\0\17setTargetNormal\1\0\7syncAll\1\0\6target\7\0\16\7\0\17\7\0\20\7\0\21\1\0\37Ljava/lang/invoke/MethodHandle;\1\0+Ljava/util/concurrent/atomic/AtomicInteger;\1\0\23()Ljava/lang/Class;\1\0!()Ljava/lang/invoke/MethodHandle;\1\0\"(Ljava/lang/invoke/MethodHandle;)V\1\0 (Ljava/lang/invoke/MethodType;)V\1\0&([Ljava/lang/invoke/MutableCallSite;)V\1\0A(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)V\f\0\27\0\34\f\0\7\0\35\f\0\4\0\1\f\0\22\0\2\f\0\f\0\36\f\0\23\0\37\f\0\4\0 \f\0\25\0 \f\0\4\0!\f\0\n\0#\t\0\32\0$\t\0\32\0%\n\0\30\0(\n\0\31\0*\n\0\31\0,\n\0\32\0)\n\0\32\0+\n\0\32\0-\n\0\33\0&\n\0\33\0'\1\0\24MutableCallSite.java\0!\0\32\0\31\0\0\0\1\0\32\0\7\0\35\0\0\0\7\0\1\0\4\0!\0\1\0\5\0\0\0\"\0\2\0\2\0\0\0\6*+\267\0002\261\0\0\0\1\0\6\0\0\0\n\0\2\0\0\0d\0\5\0e\0\1\0\4\0 \0\1\0\5\0\0\0\"\0\2\0\2\0\0\0\6*+\267\0001\261\0\0\0\1\0\6\0\0\0\n\0\2\0\0\0n\0\5\0o\0\21\0\r\0\37\0\1\0\5\0\0\0\35\0\1\0\1\0\0\0\5*\264\0.\260\0\0\0\1\0\6\0\0\0\6\0\1\0\0\0\201\0\1\0\24\0 \0\1"..., 1264) = 1264 30059 lseek(4, 28369385, SEEK_SET) = 28369385 30059 read(4, "PK\3\4\n\0\0\0\0\0R\246\305B\257\227\362\373\6\3\0\0\6\3\0\0'\0\0\0", 30) = 30 30059 lseek(4, 28369454, SEEK_SET) = 28369454 30059 read(4, "\312\376\272\276\0\0\0003\0!\1\0\6\1\0\4Code\1\0\17LineNumberTable\1\0\nSourceFile\1\0\21checkTargetChange\1\0\16dynamicInvoker\1\0\tgetTarget\1\0\21getTargetVolatile\1\0\31java/lang/invoke/CallSite\1\0!java/lang/invoke/VolatileCallSite\1\0\22makeDynamicInvoker\1\0\tsetTarget\1\0\21setTargetVolatile\7\0\t\7\0\n\1\0!()Ljava/lang/invoke/MethodHandle;\1\0\"(Ljava/lang/invoke/MethodHandle;)V\1\0 (Ljava/lang/invoke/MethodType;)V\1\0A(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)V\f\0\10\0\20\f\0\v\0\20\f\0\1\0\21\f\0\r\0\21\f\0\1\0\22\f\0\5\0\23\n\0\16\0\26\n\0\16\0\30\n\0\17\0\24\n\0\17\0\25\n\0\17\0\27\n\0\17\0\31\1\0\25VolatileCallSite.java\0!\0\17\0\16\0\0\0\0\0\5\0\1\0\1\0\22\0\1\0\2\0\0\0\"\0\2\0\2\0\0\0\6*+\267\0\33\261\0\0\0\1\0\3\0\0\0\n\0\2\0\0\0005\0\5\0006\0\1\0\1\0\21\0\1\0\2\0\0\0\"\0\2\0\2\0\0\0\6*+\267\0\32\261\0\0\0\1\0\3\0\0\0\n\0\2\0\0\0?\0\5\0@\0\21\0\7\0\20\0\1\0\2\0\0\0\35\0\1\0\1\0\0\0\5*\266\0\34\260\0\0\0\1\0\3\0\0\0\6\0\1\0\0\0Q\0\1\0\f\0\21\0\1\0\2\0\0\0/\0\3\0\2\0\0\0\17**\266\0\34+\266\0\37*+\266\0\36\261\0\0\0\1\0\3\0\0\0\16\0\3\0\0\0b\0\t\0c\0\16\0d\0\21\0\6\0\20\0\1\0\2\0\0\0\35\0\1\0\1\0\0\0\5*\266\0\35\260\0\0\0\1\0\3\0\0\0\6\0\1\0\0\0k\0\1\0\4\0\0\0\2\0 ", 774) = 774 30059 lseek(4, 60548460, SEEK_SET) = 60548460 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305BD\204IQ\257'\0\0\257'\0\0\34\0\0\0", 30) = 30 30059 lseek(4, 60548518, SEEK_SET) = 60548518 30059 read(4, "\312\376\272\276\0\0\0003\1m\10\0/\10\0I\10\0U\10\0[\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\4()[C\1\0\25(D)Ljava/lang/String;\1\0\4(I)C\1\0\4(I)I\1\0\25(I)Ljava/lang/String;\1\0\4(I)V\1\0\5(IC)V\1\0\5(II)I\1\0\26(II)Ljava/lang/String;\1\0\10(II[CI)V\1\0&(Ljava/lang/Object;)Ljava/lang/String;\1\0\25(Ljava/lang/String;)I\1\0,(Ljava/lang/String;)Ljava/lang/StringBuffer;\1\0\25(Ljava/lang/String;)V\1\0\26(Ljava/lang/String;Z)V\1\0\7([CII)V\1\0\f([CII[CIII)I\1\0\10\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\nExceptions\1\0\1I\1\0\fInnerClasses\1\0\1J\1\0\17LineNumberTable\1\0\21Ljava/lang/Class;\1\0\nSourceFile\1\0\rStackMapTable\1\0\4TYPE\1\0\2[C\1\0\34[Ljava/io/ObjectStreamField;\1\0\6append\1\0\17appendCodePoint\1\0\10capacity\1\0\6charAt\1\0\vcodePointAt\1\0\17codePointBefore\1\0\16codePointCount\1\0\5count\1\0\6delete\1\0\fdeleteCharAt\1\0\16ensureCapacity\1\0\16expandCapacity\1\0\3get\1\0\10getChars\1\0\7indexOf\1\0\6insert\1\0\23java/io/IOException\1\0\31java/io/ObjectInputStream\1\0\"java/io/ObjectInputStream$GetField\1\0\32java/io/ObjectOutputStream\1\0#java/io/ObjectOutputStream$PutField\1\0\31java/io/ObjectStreamField\1\0\24java/io/Serializable\1\0\37java/lang/AbstractStringBuilder\1\0\21"..., 10159) = 10159 30059 mprotect(0x7fb3140cf000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 60538200, SEEK_SET) = 60538200 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\214\10\250\273\321'\0\0\321'\0\0%\0\0\0", 30) = 30 30059 lseek(4, 60538267, SEEK_SET) = 60538267 30059 read(4, "\312\376\272\276\0\0\0003\0010\3\200\0\0\0\3\0\0\330\0\3\0\0\337\377\3\177\377\377\377\10\0001\10\0002\10\0003\10\0004\10\0005\10\0006\10\0M\10\0l\10\0m\10\0t\10\0u\10\0v\10\0w\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\4()[C\1\0\4(C)Z\1\0\25(D)Ljava/lang/String;\1\0\4(D)V\1\0\4(F)V\1\0\4(I)C\1\0\4(I)I\1\0\25(I)Ljava/lang/String;\1\0\4(I)V\1\0\4(I)Z\1\0\5(IC)V\1\0\5(II)I\1\0\26(II)Ljava/lang/String;\1\0\7(II[C)V\1\0\10(II[CI)V\1\0\7(I[CI)V\1\0\4(J)I\1\0\7(JI[C)V\1\0&(Ljava/lang/Object;)Ljava/lang/String;\1\0\25(Ljava/lang/String;)I\1\0\25(Ljava/lang/String;)V\1\0\6([CI)I\1\0\6([CI)V\1\0\7([CI)[C\1\0\7([CII)I\1\0\7([CII)V\1\0\t([CIIII)I\1\0\f([CII[CIII)I\1\0\6, end \1\0\6, len \1\0\r, s.length() \1\0\r, str.length \1\0\v-2147483648\1\0\24-9223372036854775808\1\0\6\1\0\4Code\1\0\nExceptions\1\0\1I\1\0\17LineNumberTable\1\0\nSourceFile\1\0\rStackMapTable\1\0\2[C\1\0\6append\1\0\17appendCodePoint\1\0\10appendTo\1\0\tarraycopy\1\0\10capacity\1\0\6charAt\1\0\vcodePointAt\1\0\17codePointBefore\1\0\16codePointCount\1\0\22codePointCountImpl\1\0\6copyOf\1\0\5count\1\0\6delete\1\0\fdeleteCharAt\1\0\ndstOffset \1\0\16ensureCapacity\1\0\26ensureCapacityInternal\1\0\16expandCapacity\1\0\10getChars\1\0\10getValue\1\0\7indexOf\1\0\6insert\1\0\16isBmpCodePoint\1\0\17isHighSurrogate\1\0\16isLowSurrogate\1\0\20isValidCodePoint\1\0"..., 10193) = 10193 30059 lseek(4, 60537800, SEEK_SET) = 60537800 30059 read(4, "PK\3\4\n\0\0\0\0\0003\246\305B\274\207\36\352X\1\0\0X\1\0\0\32\0\0\0", 30) = 30 30059 lseek(4, 60537856, SEEK_SET) = 60537856 30059 read(4, "\312\376\272\276\0\0\0003\0\16\1\0\nExceptions\1\0\nSourceFile\1\0\6append\1\0\23java/io/IOException\1\0\24java/lang/Appendable\1\0\20java/lang/Object\7\0\4\7\0\5\7\0\6\1\0\31(C)Ljava/lang/Appendable;\1\0000(Ljava/lang/CharSequence;)Ljava/lang/Appendable;\1\0002(Ljava/lang/CharSequence;II)Ljava/lang/Appendable;\1\0\17Appendable.java\6\1\0\10\0\t\0\0\0\0\0\3\4\1\0\3\0\v\0\1\0\1\0\0\0\4\0\1\0\7\4\1\0\3\0\f\0\1\0\1\0\0\0\4\0\1\0\7\4\1\0\3\0\n\0\1\0\1\0\0\0\4\0\1\0\7\0\1\0\2\0\0\0\2\0\r", 344) = 344 30059 lseek(4, 60112117, SEEK_SET) = 60112117 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\263\n\247;e%\0\0e%\0\0\35\0\0\0", 30) = 30 30059 lseek(4, 60112176, SEEK_SET) = 60112176 30059 read(4, "\312\376\272\276\0\0\0003\1U\10\0<\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\4()[C\1\0\25(D)Ljava/lang/String;\1\0\4(I)C\1\0\4(I)I\1\0\25(I)Ljava/lang/String;\1\0\4(I)V\1\0\5(IC)V\1\0\5(II)I\1\0\26(II)Ljava/lang/String;\1\0\10(II[CI)V\1\0&(Ljava/lang/Object;)Ljava/lang/String;\1\0\25(Ljava/lang/Object;)V\1\0\25(Ljava/lang/String;)I\1\0\25(Ljava/lang/String;)V\1\0\7([CII)V\1\0\f([CII[CIII)I\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\nExceptions\1\0\1I\1\0\1J\1\0\17LineNumberTable\1\0\nSourceFile\1\0\rStackMapTable\1\0\2[C\1\0\6append\1\0\17appendCodePoint\1\0\10capacity\1\0\6charAt\1\0\vcodePointAt\1\0\17codePointBefore\1\0\16codePointCount\1\0\5count\1\0\21defaultReadObject\1\0\22defaultWriteObject\1\0\6delete\1\0\fdeleteCharAt\1\0\16ensureCapacity\1\0\16expandCapacity\1\0\10getChars\1\0\7indexOf\1\0\6insert\1\0\23java/io/IOException\1\0\31java/io/ObjectInputStream\1\0\32java/io/ObjectOutputStream\1\0\24java/io/Serializable\1\0\37java/lang/AbstractStringBuilder\1\0\26java/lang/CharSequence\1\0 java/lang/ClassNotFoundException\1\0\20java/lang/String\1\0\26java/lang/StringBuffer\1\0\27java/lang/StringBuilder\1\0\vlastIndexOf\1\0\6length\1\0\4null\1\0\22offsetByCodePoints\1\0\7readInt\1\0\nreadObject\1\0\7repla"..., 9573) = 9573 30059 mprotect(0x7fb3140d0000, 12288, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 60535740, SEEK_SET) = 60535740 30059 read(4, "PK\3\4\n\0\0\0\0\0003\246\305B$\234\267?\315\7\0\0\315\7\0\0!\0\0\0", 30) = 30 30059 lseek(4, 60535803, SEEK_SET) = 60535803 30059 read(4, "\312\376\272\276\0\0\0003\0b\10\0\t\10\0\21\10\0\22\10\0\23\10\0\24\10\0\25\10\0\31\10\0\36\1\0\1(\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\25(Ljava/lang/Object;)I\1\0\25(Ljava/lang/Object;)Z\1\0'(Ljava/lang/Object;Ljava/lang/Object;)Z\1\0\17(Native Method)\1\0\20(Unknown Source)\1\0\1)\1\0\1.\1\0\1:\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\27Declaring class is null\1\0\1I\1\0\1J\1\0\17LineNumberTable\1\0\22Ljava/lang/String;\1\0\23Method name is null\1\0\nSourceFile\1\0\rStackMapTable\1\0\6append\1\0\16declaringClass\1\0\6equals\1\0\10fileName\1\0\fgetClassName\1\0\vgetFileName\1\0\rgetLineNumber\1\0\rgetMethodName\1\0\10hashCode\1\0\16isNativeMethod\1\0\24java/io/Serializable\1\0\20java/lang/Object\1\0\33java/lang/StackTraceElement\1\0\20java/lang/String\1\0\27java/lang/StringBuilder\1\0\21java/util/Objects\1\0\nlineNumber\1\0\nmethodName\1\0\16requireNonNull\1\0\20serialVersionUID\1\0\10toString\5a\t\305\232&6\335\205\7\0+\7\0,\7\0-\7\0.\7\0/\7\0000\1\0\34(I)Ljava/lang/StringBuilder;\1\0-(Ljava/lang/String;)Ljava/lang/StringBuilder;\1\0008(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;\1\0:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V\f\0001\0\32\f\0\"\0\35\f\0$\0\35\f\0002\0\35\f\0)\0\n\f\0\26\0\f\f\0*\0\r\f\0)\0\16\f\0#\0\17\f\0%\0\v\f\0005\0\v"..., 1997) = 1997 30059 lseek(4, 60532665, SEEK_SET) = 60532665 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\n\342\251%\320\v\0\0\320\v\0\0\25\0\0\0", 30) = 30 30059 lseek(4, 60532716, SEEK_SET) = 60532716 30059 read(4, "\312\376\272\276\0\0\0003\0d\10\0\5\10\0\17\10\0\25\10\0000\1\0\3 > \1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4(I)I\1\0\5(II)I\1\0\6(III)V\1\0\7(IIII)V\1\0\25(Ljava/lang/String;)V\1\0\1)\1\0\6\1\0\4Code\1\0\1I\1\0\1J\1\0\17LineNumberTable\1\0\23Negative capacity: \1\0\nSourceFile\1\0\rStackMapTable\1\0\7address\1\0\6append\1\0\5array\1\0\varrayOffset\1\0\10capacity\1\0\vcheckBounds\1\0\ncheckIndex\1\0\5clear\1\0\vdiscardMark\1\0\4flip\1\0\10hasArray\1\0\fhasRemaining\1\0\10isDirect\1\0\nisReadOnly\1\0\"java/lang/IllegalArgumentException\1\0#java/lang/IndexOutOfBoundsException\1\0\20java/lang/Object\1\0\27java/lang/StringBuilder\1\0\17java/nio/Buffer\1\0 java/nio/BufferOverflowException\1\0!java/nio/BufferUnderflowException\1\0\35java/nio/InvalidMarkException\1\0\5limit\1\0\4mark\1\0\22mark > position: (\1\0\tmarkValue\1\0\fnextGetIndex\1\0\fnextPutIndex\1\0\10position\1\0\tremaining\1\0\5reset\1\0\6rewind\1\0\10toString\1\0\10truncate\7\0&\7\0'\7\0(\7\0)\7\0*\7\0+\7\0,\7\0-\1\0\24()Ljava/lang/Object;\1\0\34(I)Ljava/lang/StringBuilder;\1\0\23()Ljava/nio/Buffer;\1\0\24(I)Ljava/nio/Buffer;\1\0-(Ljava/lang/String;)Ljava/lang/StringBuilder;\f\0\34\0\22\f\0.\0\22\f\0/\0\22\f\0004\0\22\f\0\20\0\10\f\0008\0\7\f\0\20\0\16\f\0\31\0C\f\0.\0E\f\0004\0E\f\0\31\0F\t\0>\0G\t\0>\0H\t"..., 3024) = 3024 30059 lseek(4, 43245317, SEEK_SET) = 43245317 30059 read(4, "PK\3\4\n\0\0\0\0\0n\246\305BO\236n\240\211\4\0\0\211\4\0\0\35\0\0\0", 30) = 30 30059 lseek(4, 43245376, SEEK_SET) = 43245376 30059 read(4, "\312\376\272\276\0\0\0003\0I\10\0\24\10\0\26\10\0\31\10\0\37\10\0 \10\0#\10\0(\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0&(Ljava/lang/String;)Ljava/lang/String;\1\0\25(Ljava/lang/String;)V\1\0'(Ljava/lang/String;Ljava/lang/String;)V\1\0\6\1\0\4Code\1\0\17LineNumberTable\1\0\22Ljava/lang/String;\1\0\nSourceFile\1\0\rStackMapTable\1\0\10VM start\1\0\6append\1\0#com.oracle.usagetracker.config.file\1\0\6exists\1\0\vgetProperty\1\0\tjava.home\1\0\fjava/io/File\1\0\20java/lang/Object\1\0\20java/lang/String\1\0\27java/lang/StringBuilder\1\0\20java/lang/System\1\0\3lib\1\0\nmanagement\1\0\3run\1\0\tseparator\1\0\20sun.java.command\1\0\27sun/misc/PostVMInitHook\1\0#sun/usagetracker/UsageTrackerClient\1\0\10toString\1\0\16trackJavaUsage\1\0\27usagetracker.properties\7\0\32\7\0\33\7\0\34\7\0\35\7\0\36\7\0$\7\0%\1\0-(Ljava/lang/String;)Ljava/lang/StringBuilder;\1\0008(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;\f\0\"\0\21\f\0\16\0\t\f\0'\0\t\f\0\27\0\n\f\0&\0\10\f\0\16\0\f\f\0\30\0\v\f\0!\0\r\f\0\25\0000\f\0\30\0001\t\0)\0002\n\0)\0005\n\0)\0007\n\0*\0003\n\0,\0003\n\0,\0006\n\0,\0:\n\0-\0008\n\0-\0;\n\0.\0004\n\0/\0003\n\0/\0009\1\0\23PostVMInitHook.java\0!\0.\0*\0\0\0\0\0\3\0\1\0\16\0\t\0\1\0\17\0\0\0\35\0\1\0\1\0\0\0\5*\267\0?\261\0\0\0\1\0\20\0\0\0\6\0\1\0\0\0\v\0\t\0!\0\t\0\1\0\17\0\0\0 \0\0\0\0\0\0\0\4\270\0E\261\0\0\0\1\0\20\0\0\0\n\0\2\0\0\0\26\0\3\0\27\0\n\0'\0\t\0\1\0\17\0\0\0\232\0\3\0"..., 1161) = 1161 30059 lseek(4, 60530194, SEEK_SET) = 60530194 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\5FALSE\1\0\1J\1\0\17LineNumberTable\1\0\23Ljava/lang/Boolean;\1\0\21Ljava/lang/Class;\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\4TRUE\1\0\4TYPE\1\0\1Z\1\0\7boolean\1\0\fbooleanValue\1\0\7compare\1\0\tcompareTo\1\0\6equals\1\0\20equalsIgnoreCase\1\0\5false\1\0\ngetBoolean\1\0\21getPrimitiveClass\1\0\vgetProperty\1\0\10hashCode\1\0\24java/io/Serializable\1\0\21java/lang/Boolean\1\0\17java/lang/Class\1\0\24java/lang/Comparable\1\0\"java/lang/IllegalArgumentException\1\0\36java/lang/NullPointerException\1\0\20java/lang/Object\1\0\20java/lang/String\1\0\20java/lang/System\1\0\fparseBoolean\1\0\20serialVersionUID\1\0\ttoBoolean\1\0\10toString\1\0\4true\1\0\5value\1\0\7valueOf\5\315 r\200\325\234\372\356\7\0*\7\0+\7\0,\7\0-\7\0.\7\0/\7\0000\7\0001\7\0002\1\0&Ljava/lang/Class;\1\0SLjava/lang/Object;Ljava/io/Serializable;Ljava/lang/Comparabl"..., 2418) = 2418 30059 lseek(4, 60516932, SEEK_SET) = 60516932 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\326\317\201\256\2273\0\0\2273\0\0\31\0\0\0", 30) = 30 30059 lseek(4, 60516987, SEEK_SET) = 60516987 30059 read(4, "\312\376\272\276\0\0\0003\1\310\3\374\240$\0\3\0\0\327\300\3\0\0\330\0\3\0\0\334\0\3\0\0\340\0\3\0\0\377\0\3\0\1\0\0\3\0\21\0\0\10\0\v\10\0\203\1\0\1 \1\0\23$assertionsDisabled\1\0\3()C\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4(C)B\1\0\4(C)C\1\0\4(C)I\1\0\25(C)Ljava/lang/String;\1\0\4(C)V\1\0\4(C)Z\1\0\5(CC)I\1\0\5(CC)Z\1\0\5(CI)I\1\0\4(I)B\1\0\4(I)C\1\0\4(I)I\1\0\25(I)Ljava/lang/String;\1\0\4(I)Z\1\0\5(I)[C\1\0\5(II)C\1\0\5(II)I\1\0\7(I[CI)I\1\0\7(I[CI)V\1\0\25(Ljava/lang/Object;)I\1\0\25(Ljava/lang/Object;)Z\1\0%(Ljava/lang/String;)Ljava/lang/Class;\1\0\6([CI)I\1\0\7([CII)I\1\0\t([CIIII)I\1\0\10\1\0\6\1\0\1B\1\0\1C\1\0\26COMBINING_SPACING_MARK\1\0\25CONNECTOR_PUNCTUATION\1\0\7CONTROL\1\0\17CURRENCY_SYMBOL\1\0\4Code\1\0\rConstantValue\1\0\20DASH_PUNCTUATION\1\0\24DECIMAL_DIGIT_NUMBER\1\0\34DIRECTIONALITY_ARABIC_NUMBER\1\0\37DIRECTIONALITY_BOUNDARY_NEUTRAL\1\0&DIRECTIONALITY_COMMON_NUMBER_SEPARATOR\1\0\36DIRECTIONALITY_EUROPEAN_NUMBER\1\0(DIRECTIONALITY_EUROPEAN_NUMBER_SEPARATOR\1\0)DIRECTIONALITY_EUROPEAN_NUMBER_TERMINATOR\1\0\34DIRECTIONALITY_LEFT_TO_RIGHT\1\0&DIRECTIONALITY_LEFT_TO_RIGHT_EMBEDDING\1\0%DIRECTIONALITY_LEFT_TO_RIGHT_OVERRIDE\1\0\36DIRECTIONALITY_NONSPACING_MARK\1\0\35DIRECTIONALITY_OTHER_NEUTRALS"..., 13207) = 13207 30059 mprotect(0x7fb3140d3000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb3140d4000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 60513312, SEEK_SET) = 60513312 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\r\235\230\373\361\r\0\0\361\r\0\0\25\0\0\0", 30) = 30 30059 lseek(4, 60513363, SEEK_SET) = 60513363 30059 read(4, "\312\376\272\276\0\0\0003\0\245\3\0\177\377\377\3\177\200\0\0\3\177\300\0\0\4\377\200\0\0\4\0\200\0\0\4\177\200\0\0\10\0=\10\0P\10\0Q\1\0\3()B\1\0\3()D\1\0\3()F\1\0\3()I\1\0\3()J\1\0\24()Ljava/lang/String;\1\0\3()S\1\0\3()V\1\0\3()Z\1\0\25(D)Ljava/lang/String;\1\0\4(D)V\1\0\5(DI)D\1\0\4(F)F\1\0\4(F)I\1\0\4(F)V\1\0\4(F)Z\1\0\5(FF)I\1\0\4(I)F\1\0\25(Ljava/lang/Object;)I\1\0\25(Ljava/lang/Object;)Z\1\0%(Ljava/lang/String;)Ljava/lang/Class;\1\0\25(Ljava/lang/String;)V\1\0\10\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\nExceptions\1\0\1F\1\0\1I\1\0\1J\1\0\17LineNumberTable\1\0\21Ljava/lang/Class;\1\0\fMAX_EXPONENT\1\0\tMAX_VALUE\1\0\fMIN_EXPONENT\1\0\nMIN_NORMAL\1\0\tMIN_VALUE\1\0\21NEGATIVE_INFINITY\1\0\3NaN\1\0\21POSITIVE_INFINITY\1\0\4SIZE\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\4TYPE\1\0\3abs\1\0\tbyteValue\1\0\7compare\1\0\tcompareTo\1\0\vdoubleValue\1\0\6equals\1\0\5float\1\0\16floatToIntBits\1\0\21floatToRawIntBits\1\0\nfloatValue\1\0\21getPrimitiveClass\1\0\10hashCode\1\0\16intBitsToFloat\1\0\10intValue\1\0\nisInfinite\1\0\5isNaN\1\0\17java/lang/Class\1\0\24java/lang/Comparable\1\0\20java/lang/Double\1\0\17java/lang/Float\1\0\16java/lang/Math\1\0\20java/lang/Number\1\0\37java/lang/NumberFormatException\1\0\20java/lang/String\1\0\tlongValue\1\0\7p-1022$\1\0\5p-126\1\0\nparseFloat\1"..., 3569) = 3569 30059 lseek(4, 60512731, SEEK_SET) = 60512731 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\21~\10\346\21\2\0\0\21\2\0\0\26\0\0\0", 30) = 30 30059 lseek(4, 60512783, SEEK_SET) = 60512783 30059 read(4, "\312\376\272\276\0\0\0003\0\"\1\0\3()B\1\0\3()D\1\0\3()F\1\0\3()I\1\0\3()J\1\0\3()S\1\0\3()V\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\1J\1\0\17LineNumberTable\1\0\nSourceFile\1\0\tbyteValue\1\0\vdoubleValue\1\0\nfloatValue\1\0\10intValue\1\0\24java/io/Serializable\1\0\20java/lang/Number\1\0\20java/lang/Object\1\0\tlongValue\1\0\20serialVersionUID\1\0\nshortValue\5\206\254\225\35\v\224\340\213\7\0\22\7\0\23\7\0\24\f\0\21\0\4\f\0\10\0\7\n\0\33\0\35\n\0\34\0\36\1\0\vNumber.java\4!\0\33\0\34\0\1\0\32\0\1\0\32\0\26\0\v\0\1\0\n\0\0\0\2\0\30\0\7\0\1\0\10\0\7\0\1\0\t\0\0\0\35\0\1\0\1\0\0\0\5*\267\0 \261\0\0\0\1\0\f\0\0\0\6\0\1\0\0\0001\4\1\0\21\0\4\0\0\4\1\0\25\0\5\0\0\4\1\0\20\0\3\0\0\4\1\0\17\0\2\0\0\0\1\0\16\0\1\0\1\0\t\0\0\0\36\0\1\0\1\0\0\0\6*\266\0\37\221\254\0\0\0\1\0\f\0\0\0\6\0\1\0\0\0_\0\1\0\27\0\6\0\1\0\t\0\0\0\36\0\1\0\1\0\0\0\6*\266\0\37\223\254\0\0\0\1\0\f\0\0\0\6\0\1\0\0\0k\0\1\0\r\0\0\0\2\0!", 529) = 529 30059 lseek(4, 60508296, SEEK_SET) = 60508296 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\f\275o\210\37\21\0\0\37\21\0\0\26\0\0\0", 30) = 30 30059 lseek(4, 60508348, SEEK_SET) = 60508348 30059 read(4, "\312\376\272\276\0\0\0003\0\343\10\0\f\10\0(\10\0)\10\0*\10\0+\10\0,\10\0-\10\0.\10\0/\10\0L\10\0e\1\0\0\1\0\3()B\1\0\3()D\1\0\3()F\1\0\3()I\1\0\3()J\1\0\24()Ljava/lang/String;\1\0\3()S\1\0\3()V\1\0\3()Z\1\0\4(D)D\1\0\4(D)I\1\0\4(D)J\1\0\25(D)Ljava/lang/Double;\1\0\25(D)Ljava/lang/String;\1\0\4(D)V\1\0\4(D)Z\1\0\5(DD)D\1\0\5(DD)I\1\0\4(I)V\1\0\26(II)Ljava/lang/String;\1\0\4(J)D\1\0\25(Ljava/lang/Object;)I\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)D\1\0%(Ljava/lang/String;)Ljava/lang/Class;\1\0,(Ljava/lang/String;)Ljava/lang/StringBuffer;\1\0\25(Ljava/lang/String;)V\1\0\1-\1\0\0010\1\0\0020.\1\0\0050.0p0\1\0\r0000000000000\1\0\0020x\1\0\0100{1,12}$\1\0\0021.\1\0\10\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\1D\1\0\nExceptions\1\0\1I\1\0\1J\1\0\17LineNumberTable\1\0\21Ljava/lang/Class;\1\0\fMAX_EXPONENT\1\0\tMAX_VALUE\1\0\fMIN_EXPONENT\1\0\nMIN_NORMAL\1\0\tMIN_VALUE\1\0\21NEGATIVE_INFINITY\1\0\3NaN\1\0\21POSITIVE_INFINITY\1\0\4SIZE\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\4TYPE\1\0\3abs\1\0\6append\1\0\tbyteValue\1\0\7compare\1\0\tcompareTo\1\0\6double\1\0\20doubleToLongBits\1\0\23doubleToRawLongBits\1\0\vdoubleValue\1\0\6equals\1\0\nfloatValue\1\0\vgetExponent\1\0\21getPrimitiveClass\1\0\10hashCode\1\0\10intValue\1\0\10isFinite\1\0\nisInfinite\1\0\5isNaN\1\0\17java"..., 4383) = 4383 30059 lseek(4, 60505127, SEEK_SET) = 60505127 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\251\316\347\205/\f\0\0/\f\0\0\24\0\0\0", 30) = 30 30059 lseek(4, 60505177, SEEK_SET) = 60505177 30059 read(4, "\312\376\272\276\0\0\0003\0\217\10\0\6\10\0\7\10\0*\10\0+\10\0.\1\0\31 out of range from input \1\0\10\" Radix:\1\0\3()B\1\0\3()D\1\0\3()F\1\0\3()I\1\0\3()J\1\0\24()Ljava/lang/String;\1\0\3()S\1\0\3()V\1\0\4(B)V\1\0\5(BB)I\1\0\25(I)Ljava/lang/String;\1\0\26(II)Ljava/lang/String;\1\0\25(Ljava/lang/Object;)I\1\0\25(Ljava/lang/Object;)Z\1\0%(Ljava/lang/String;)Ljava/lang/Class;\1\0\25(Ljava/lang/String;)V\1\0\10\1\0\6\1\0\1B\1\0\4Code\1\0\rConstantValue\1\0\nExceptions\1\0\1I\1\0\fInnerClasses\1\0\1J\1\0\17LineNumberTable\1\0\21Ljava/lang/Class;\1\0\tMAX_VALUE\1\0\tMIN_VALUE\1\0\4SIZE\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\4TYPE\1\0\6Value \1\0\33Value out of range. Value:\"\1\0\21[Ljava/lang/Byte;\1\0\6append\1\0\4byte\1\0\tbyteValue\1\0\5cache\1\0\7compare\1\0\tcompareTo\1\0\6decode\1\0\vdoubleValue\1\0\6equals\1\0\nfloatValue\1\0\21getPrimitiveClass\1\0\10hashCode\1\0\10intValue\1\0\16java/lang/Byte\1\0\30java/lang/Byte$ByteCache\1\0\17java/lang/Class\1\0\24java/lang/Comparable\1\0\21java/lang/Integer\1\0\20java/lang/Number\1\0\37java/lang/NumberFormatException\1\0\27java/lang/StringBuilder\1\0\tlongValue\1\0\tparseByte\1\0\10parseInt\1\0\20serialVersionUID\1\0\nshortValue\1\0\10toString\1\0\5value\1\0\7valueOf\3\377\377\377\200\3\0\0\0\10\3"..., 3119) = 3119 30059 lseek(4, 60501802, SEEK_SET) = 60501802 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\327H\313>\312\f\0\0\312\f\0\0\25\0\0\0", 30) = 30 30059 lseek(4, 60501853, SEEK_SET) = 60501853 30059 read(4, "\312\376\272\276\0\0\0003\0\224\3\0\0\377\0\10\0\7\10\0\10\10\0,\10\0-\10\0H\1\0\31 out of range from input \1\0\10\" Radix:\1\0\3()B\1\0\3()D\1\0\3()F\1\0\3()I\1\0\3()J\1\0\24()Ljava/lang/String;\1\0\3()S\1\0\3()V\1\0\25(I)Ljava/lang/String;\1\0\26(II)Ljava/lang/String;\1\0\25(Ljava/lang/Object;)I\1\0\25(Ljava/lang/Object;)Z\1\0%(Ljava/lang/String;)Ljava/lang/Class;\1\0\25(Ljava/lang/String;)V\1\0\4(S)S\1\0\4(S)V\1\0\5(SS)I\1\0\10\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\nExceptions\1\0\1I\1\0\fInnerClasses\1\0\1J\1\0\17LineNumberTable\1\0\21Ljava/lang/Class;\1\0\tMAX_VALUE\1\0\tMIN_VALUE\1\0\1S\1\0\4SIZE\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\4TYPE\1\0\6Value \1\0\33Value out of range. Value:\"\1\0\22[Ljava/lang/Short;\1\0\6append\1\0\tbyteValue\1\0\5cache\1\0\7compare\1\0\tcompareTo\1\0\6decode\1\0\vdoubleValue\1\0\6equals\1\0\nfloatValue\1\0\21getPrimitiveClass\1\0\10hashCode\1\0\10intValue\1\0\17java/lang/Class\1\0\24java/lang/Comparable\1\0\21java/lang/Integer\1\0\20java/lang/Number\1\0\37java/lang/NumberFormatException\1\0\17java/lang/Short\1\0\32java/lang/Short$ShortCache\1\0\27java/lang/StringBuilder\1\0\tlongValue\1\0\10parseInt\1\0\nparseShort\1\0\freverseBytes\1\0\20serialVersionUID\1\0\5short\1\0\nshortValue\1\0\10toSt"..., 3274) = 3274 30059 mprotect(0x7fb3140d5000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 60492901, SEEK_SET) = 60492901 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\273\253]\16\220\"\0\0\220\"\0\0\27\0\0\0", 30) = 30 30059 lseek(4, 60492954, SEEK_SET) = 60492954 30059 read(4, "\312\376\272\276\0\0\0003\1\6\3\200\0\0\0\3\200\0\0\1\3\0\0\314\315\3\0\0\377\0\3\0\1\0\0\3\0\1\206\237\3\0\17B?\3\0\230\226\177\3\0\377\0\0\3\5\365\340\377\3\17\17\17\17\0033333\3;\232\311\377\3UUUU\3\177\377\377\377\10\0\36\10\0\37\10\0 \10\0<\10\0=\10\0>\10\0?\10\0@\10\0A\10\0Q\10\0W\10\0q\10\0\203\10\0\207\1\0! greater than Character.MAX_RADIX\1\0\36 less than Character.MIN_RADIX\1\0\1#\1\0\23$assertionsDisabled\1\0\3()B\1\0\3()D\1\0\3()F\1\0\3()I\1\0\3()J\1\0\24()Ljava/lang/String;\1\0\3()S\1\0\3()V\1\0\3()Z\1\0\5(CI)I\1\0\4(I)C\1\0\4(I)I\1\0\26(I)Ljava/lang/Integer;\1\0\25(I)Ljava/lang/String;\1\0\4(I)V\1\0\5(II)I\1\0\26(II)Ljava/lang/String;\1\0\7(II[C)V\1\0\25(Ljava/lang/Object;)I\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)I\1\0%(Ljava/lang/String;)Ljava/lang/Class;\1\0&(Ljava/lang/String;)Ljava/lang/String;\1\0\25(Ljava/lang/String;)V\1\0\7([CII)V\1\0\6([CZ)V\1\0\1+\1\0\1-\1\0\v-2147483648\1\0\0010\1\0\0020X\1\0\0020x\1\0\10\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\tDigitOnes\1\0\tDigitTens\1\0\nExceptions\1\0\1I\1\0\fInnerClasses\1\0\1J\1\0\17LineNumberTable\1\0\21Ljava/lang/Class;\1\0\tMAX_VALUE\1\0\tMIN_VALUE\1\0\4SIZE\1\0 Sign character in wrong position\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\4TYPE\1\0\1Z\1\0\22Zero length string\1\0\2[C\1\0\2[I\1\0\24[Ljava/lang/Integer;\1\0\6append\1\0\10bitCount\1\0\tbyteValue\1\0\5cache\1"..., 8848) = 8848 30059 lseek(4, 60485254, SEEK_SET) = 60485254 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\22\370\\\5\255\35\0\0\255\35\0\0\24\0\0\0", 30) = 30 30059 lseek(4, 60485304, SEEK_SET) = 60485304 30059 read(4, "\312\376\272\276\0\0\0003\1\7\3\0\0\314\315\3\0\1\0\0\10\0\21\10\0\22\10\0\23\10\0,\10\0-\10\0.\10\0/\10\0000\10\0001\10\0A\10\0F\10\0k\10\0n\10\0r\1\0! greater than Character.MAX_RADIX\1\0\36 less than Character.MIN_RADIX\1\0\1#\1\0\3()B\1\0\3()D\1\0\3()F\1\0\3()I\1\0\3()J\1\0\24()Ljava/lang/String;\1\0\3()S\1\0\3()V\1\0\5(CI)I\1\0\4(I)C\1\0\25(I)Ljava/lang/String;\1\0\4(J)I\1\0\4(J)J\1\0\4(J)V\1\0\5(JI)J\1\0\7(JI[C)V\1\0\5(JJ)I\1\0\25(Ljava/lang/Object;)I\1\0\25(Ljava/lang/Object;)Z\1\0%(Ljava/lang/String;)Ljava/lang/Class;\1\0&(Ljava/lang/String;)Ljava/lang/String;\1\0\25(Ljava/lang/String;)V\1\0\7([CII)V\1\0\6([CZ)V\1\0\1+\1\0\1-\1\0\24-9223372036854775808\1\0\0010\1\0\0020X\1\0\0020x\1\0\10\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\tDigitOnes\1\0\tDigitTens\1\0\nExceptions\1\0\1I\1\0\fInnerClasses\1\0\1J\1\0\17LineNumberTable\1\0\21Ljava/lang/Class;\1\0\tMAX_VALUE\1\0\tMIN_VALUE\1\0\4SIZE\1\0 Sign character in wrong position\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\4TYPE\1\0\22Zero length string\1\0\2[C\1\0\6append\1\0\10bitCount\1\0\tbyteValue\1\0\5cache\1\0\6charAt\1\0\7compare\1\0\tcompareTo\1\0\6decode\1\0\5digit\1\0\6digits\1\0\vdoubleValue\1\0\6equals\1\0\nfloatValue\1\0\16forInputString\1\0\10getChars\1\0\7getLong\1\0\21getPrimitiveClass\1\0\vgetProperty\1\0\10hashCode"..., 7597) = 7597 30059 stat(".hotspot_compiler", 0x7fb31b2f8720) = -1 ENOENT (No such file or directory) 30059 mprotect(0x7fb3140d6000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 60484804, SEEK_SET) = 60484804 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\24\350O\222\200\1\0\0\200\1\0\0$\0\0\0", 30) = 30 30059 lseek(4, 60484870, SEEK_SET) = 60484870 30059 read(4, "\312\376\272\276\0\0\0003\0\25\1\0\3()V\1\0\25(Ljava/lang/String;)V\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\1J\1\0\17LineNumberTable\1\0\nSourceFile\1\0\36java/lang/NullPointerException\1\0\32java/lang/RuntimeException\1\0\20serialVersionUID\5G\245\241\216\3771\341\270\7\0\t\7\0\n\f\0\3\0\1\f\0\3\0\2\n\0\17\0\20\n\0\17\0\21\1\0\31NullPointerException.java\0!\0\16\0\17\0\0\0\1\0\32\0\v\0\6\0\1\0\5\0\0\0\2\0\f\0\2\0\1\0\3\0\1\0\1\0\4\0\0\0!\0\1\0\1\0\0\0\5*\267\0\22\261\0\0\0\1\0\7\0\0\0\n\0\2\0\0\0<\0\4\0=\0\1\0\3\0\2\0\1\0\4\0\0\0\"\0\2\0\2\0\0\0\6*+\267\0\23\261\0\0\0\1\0\7\0\0\0\n\0\2\0\0\0F\0\5\0G\0\1\0\10\0\0\0\2\0\24", 384) = 384 30059 lseek(4, 60484357, SEEK_SET) = 60484357 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\245\215\3763~\1\0\0~\1\0\0#\0\0\0", 30) = 30 30059 lseek(4, 60484422, SEEK_SET) = 60484422 30059 read(4, "\312\376\272\276\0\0\0003\0\25\1\0\3()V\1\0\25(Ljava/lang/String;)V\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\1J\1\0\17LineNumberTable\1\0\nSourceFile\1\0\35java/lang/ArithmeticException\1\0\32java/lang/RuntimeException\1\0\20serialVersionUID\5\37P\236bJ\371\360\7\7\0\t\7\0\n\f\0\3\0\1\f\0\3\0\2\n\0\17\0\20\n\0\17\0\21\1\0\30ArithmeticException.java\0!\0\16\0\17\0\0\0\1\0\32\0\v\0\6\0\1\0\5\0\0\0\2\0\f\0\2\0\1\0\3\0\1\0\1\0\4\0\0\0!\0\1\0\1\0\0\0\5*\267\0\22\261\0\0\0\1\0\7\0\0\0\n\0\2\0\0\0001\0\4\0002\0\1\0\3\0\2\0\1\0\4\0\0\0\"\0\2\0\2\0\0\0\6*+\267\0\23\261\0\0\0\1\0\7\0\0\0\n\0\2\0\0\0;\0\5\0<\0\1\0\10\0\0\0\2\0\24", 382) = 382 30059 mprotect(0x7fb3140d7000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb3140d8000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb3140d9000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb30d83e000 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb30d73d000 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb30d63c000 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb30d53b000 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb30d43a000 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb30d339000 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb30d238000 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb30d137000 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb30d036000 30059 mprotect(0x7fb3140da000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb30cf35000 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb30ce34000 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb30cd33000 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb30cc32000 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb30cb31000 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb30ca30000 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb30c92f000 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb30c82e000 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb30c72d000 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb30c62c000 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb30c52b000 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb30c42a000 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb30c329000 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb30c228000 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb30c127000 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb30c026000 30059 mprotect(0x7fb3140db000, 131072, PROT_READ|PROT_WRITE) = 0 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb292373000 30059 mprotect(0x7fb3140fb000, 131072, PROT_READ|PROT_WRITE) = 0 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb292272000 30059 mprotect(0x7fb31411b000, 131072, PROT_READ|PROT_WRITE) = 0 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb292171000 30059 mprotect(0x7fb31413b000, 131072, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb31415b000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb292070000 30059 mprotect(0x7fb31415c000, 131072, PROT_READ|PROT_WRITE) = 0 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb291f6f000 30059 mprotect(0x7fb31417c000, 131072, PROT_READ|PROT_WRITE) = 0 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb291e6e000 30059 mprotect(0x7fb31419c000, 131072, PROT_READ|PROT_WRITE) = 0 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb291d6d000 30059 mprotect(0x7fb3141bc000, 131072, PROT_READ|PROT_WRITE) = 0 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb291c6c000 30059 mprotect(0x7fb3141dc000, 131072, PROT_READ|PROT_WRITE) = 0 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb291b6b000 30059 mprotect(0x7fb3141fc000, 131072, PROT_READ|PROT_WRITE) = 0 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb291a6a000 30059 mprotect(0x7fb31421c000, 131072, PROT_READ|PROT_WRITE) = 0 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb291969000 30059 mprotect(0x7fb31423c000, 131072, PROT_READ|PROT_WRITE) = 0 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb291868000 30059 mprotect(0x7fb31425c000, 131072, PROT_READ|PROT_WRITE) = 0 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb291767000 30059 mprotect(0x7fb31427c000, 131072, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb31429c000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb291666000 30059 mprotect(0x7fb31429d000, 131072, PROT_READ|PROT_WRITE) = 0 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb291565000 30059 mprotect(0x7fb3142bd000, 131072, PROT_READ|PROT_WRITE) = 0 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb291464000 30059 mprotect(0x7fb3142dd000, 131072, PROT_READ|PROT_WRITE) = 0 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb291363000 30059 mprotect(0x7fb3142fd000, 131072, PROT_READ|PROT_WRITE) = 0 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb291262000 30059 mprotect(0x7fb31431d000, 131072, PROT_READ|PROT_WRITE) = 0 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb291161000 30059 mprotect(0x7fb31433d000, 131072, PROT_READ|PROT_WRITE) = 0 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb291060000 30059 mprotect(0x7fb31435d000, 131072, PROT_READ|PROT_WRITE) = 0 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb290f5f000 30059 mprotect(0x7fb31437d000, 131072, PROT_READ|PROT_WRITE) = 0 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb290e5e000 30059 mprotect(0x7fb31439d000, 131072, PROT_READ|PROT_WRITE) = 0 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb290d5d000 30059 mprotect(0x7fb3143bd000, 131072, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb3143dd000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb290c5c000 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb290b5b000 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb290a5a000 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb290959000 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb290858000 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb290757000 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb290656000 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb290555000 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb290454000 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb290353000 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb290252000 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb290151000 30059 mprotect(0x7fb3143de000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb290050000 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb28ff4f000 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb28fe4e000 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb28fd4d000 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb28fc4c000 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb28fb4b000 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb28fa4a000 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb28f949000 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb28f848000 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb28f747000 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb28f646000 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb28f545000 30059 mprotect(0x7fb3143df000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb3143e0000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb3143e1000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb3143e2000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7fb28f444000 30059 mprotect(0x7fb28f444000, 4096, PROT_NONE) = 0 30059 clone(child_stack=0x7fb28f543ff0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7fb28f5449d0, tls=0x7fb28f544700, child_tidptr=0x7fb28f5449d0) = 30083 30083 set_robust_list(0x7fb28f5449e0, 0x18 30059 futex(0x7fb314009354, FUTEX_WAIT_PRIVATE, 47, NULL 30083 <... set_robust_list resumed> ) = 0 30083 gettid() = 30083 30083 rt_sigprocmask(SIG_BLOCK, NULL, [QUIT], 8) = 0 30083 rt_sigprocmask(SIG_UNBLOCK, [HUP INT ILL BUS FPE SEGV USR2 TERM], NULL, 8) = 0 30083 rt_sigprocmask(SIG_UNBLOCK, [QUIT], NULL, 8) = 0 30083 futex(0x7fb314009354, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x7fb314009350, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1}) = 1 30059 <... futex resumed> ) = 0 30083 futex(0x7fb3143e1954, FUTEX_WAIT_PRIVATE, 1, NULL 30059 futex(0x7fb314009328, FUTEX_WAKE_PRIVATE, 1) = 0 30059 futex(0x7fb3143e1954, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x7fb3143e1950, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1} 30083 <... futex resumed> ) = 0 30059 <... futex resumed> ) = 1 30083 futex(0x7fb3143e1928, FUTEX_WAIT_PRIVATE, 2, NULL 30059 futex(0x7fb3143e1928, FUTEX_WAKE_PRIVATE, 1 30083 <... futex resumed> ) = 0 30059 <... futex resumed> ) = 1 30083 futex(0x7fb3143e1928, FUTEX_WAKE_PRIVATE, 1) = 0 30059 futex(0x7fb314009354, FUTEX_WAIT_PRIVATE, 49, NULL 30083 mmap(NULL, 134217728, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x7fb287444000 30083 munmap(0x7fb287444000, 12304384) = 0 30083 munmap(0x7fb28c000000, 54804480) = 0 30083 mprotect(0x7fb288000000, 135168, PROT_READ|PROT_WRITE) = 0 30083 sched_getaffinity(30083, 32, {ffffffff, 0, 0, 0}) = 32 30083 sched_getaffinity(30083, 32, {ffffffff, 0, 0, 0}) = 32 30083 futex(0x7fb314009354, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x7fb314009350, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1}) = 1 30059 <... futex resumed> ) = 0 30083 futex(0x7fb3143e1954, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 3, {1412091215, 327636000}, ffffffff 30059 futex(0x7fb314009328, FUTEX_WAKE_PRIVATE, 1) = 0 30059 lseek(4, 60479752, SEEK_SET) = 60479752 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\274\20\350s\300\21\0\0\300\21\0\0\37\0\0\0", 30) = 30 30059 lseek(4, 60479813, SEEK_SET) = 60479813 30059 read(4, "\312\376\272\276\0\0\0003\0\277\10\0)\1\0\3()C\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4(I)C\1\0\4(I)V\1\0\25(Ljava/lang/Object;)I\1\0\25(Ljava/lang/String;)I\1\0\25(Ljava/lang/String;)V\1\0\6\1\0\4Code\1\0\1I\1\0\17LineNumberTable\1\0\21Ljava/lang/Class;\1\0\22Ljava/lang/String;\1\0\31RuntimeVisibleAnnotations\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\4TYPE\1\0\1Z\1\0\6append\1\0\6charAt\1\0\22checkPackageAccess\1\0\tcompareTo\1\0\5field\1\0\16getCallerClass\1\0\16getClassLoader\1\0\21getClassSignature\1\0\20getComponentType\1\0\10getField\1\0\7getName\1\0\tgetOffset\1\0\22getSecurityManager\1\0\fgetSignature\1\0\7getType\1\0\vgetTypeCode\1\0\rgetTypeString\1\0\21illegal signature\1\0\6intern\1\0\7isArray\1\0\visPrimitive\1\0\nisUnshared\1\0\31java/io/ObjectStreamField\1\0\21java/lang/Boolean\1\0\16java/lang/Byte\1\0\23java/lang/Character\1\0\17java/lang/Class\1\0\24java/lang/Comparable\1\0\20java/lang/Double\1\0\17java/lang/Float\1\0\"java/lang/IllegalArgumentException\1\0\21java/lang/Integer\1\0\27java/lang/InternalError\1\0\16java/lang/Long\1\0\36java/lang/NullPointerException\1\0\20java/lang/Object\1\0\17java/lang/Short\1\0\20java/lang/String\1\0\27java/lang/StringBuilder\1\0\20java/"..., 4544) = 4544 30059 mprotect(0x7fb3143e3000, 8192, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 60478451, SEEK_SET) = 60478451 30059 read(4, "PK\3\4\n\0\0\0\0\0003\246\305B\347,S\177\307\4\0\0\307\4\0\0000\0\0\0", 30) = 30 30059 lseek(4, 60478529, SEEK_SET) = 60478529 30059 read(4, "\312\376\272\276\0\0\0003\0=\1\0\3()I\1\0\3()V\1\0\4(C)C\1\0\4(I)C\1\0\5(II)I\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\fInnerClasses\1\0\1J\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\6charAt\1\0\7compare\1\0\24java/io/Serializable\1\0\23java/lang/Character\1\0\16java/lang/Math\1\0\20java/lang/Object\1\0\20java/lang/String\1\0\22java/lang/String$1\1\0*java/lang/String$CaseInsensitiveComparator\1\0\24java/util/Comparator\1\0\6length\1\0\3min\1\0\20serialVersionUID\1\0\vtoLowerCase\1\0\vtoUpperCase\5w\3\\}\\P\345\316\7\0\21\7\0\22\7\0\23\7\0\24\7\0\25\7\0\26\7\0\27\7\0\30\1\0RLjava/lang/Object;Ljava/util/Comparator;Ljava/io/Serializable;\1\0\27(Ljava/lang/String$1;)V\1\0'(Ljava/lang/Object;Ljava/lang/Object;)I\1\0'(Ljava/lang/String;Ljava/lang/String;)I\f\0\31\0\1\f\0\6\0\2\f\0\34\0\3\f\0\35\0\3\f\0\17\0\4\f\0\32\0\5\f\0\20\0+\n\0!\0.\n\0!\0/\n\0\"\0001\n\0#\0-\n\0$\0,\n\0$\0000\n\0&\0-\n\0&\0002\1\0\31CaseInsensitiveComparator\1\0\vString.java\0 \0&\0#\0\2\0'\0 \0\1\0\32\0\33\0\n\0\1\0\10\0\0\0\2\0\36\0\4\0\2\0\6\0\2\0\1\0\7\0\0\0\35\0\1\0\1\0\0\0\5*\267\0006\261\0\0\0\1\0\v\0\0\0\6\0\1\0\0\4\222\0\1\0\20\0+\0\1\0\7\0\0\0\345\0\2\0\t\0\0\0o+\266\0007>,\266\00076\4\35\25\4\270\00056\5\0036\6\25\6\25\5\242\0P+\25\6\266\00086\7,\25\6\266\00086\10\25\7\25\10\237\0003\25\7\270\00046\7\25\10\270\00046\10\25\7\25\10\237\0\36\25\7\270\00036\7\25\10\270\00036\10\25\7\25\10\237\0\t\25\7\25\10d\254\204\6\1\247\377\257\35\25\4d\254\0\0\0\2\0\16\0\0\0\34\0\3\377\0\26\0\7\7\0&\7\0$"..., 1223) = 1223 30059 lseek(4, 60478100, SEEK_SET) = 60478100 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\177 d\315'\1\0\0'\1\0\0\32\0\0\0", 30) = 30 30059 lseek(4, 60478156, SEEK_SET) = 60478156 30059 read(4, "\312\376\272\276\0\0\0003\0\16\1\0\25(Ljava/lang/Object;)Z\1\0\t(TT;TT;)I\1\0\tSignature\1\0\nSourceFile\1\0\7compare\1\0\6equals\1\0\20java/lang/Object\1\0\24java/util/Comparator\7\0\7\7\0\10\1\0(Ljava/lang/Object;\1\0'(Ljava/lang/Object;Ljava/lang/Object;)I\1\0\17Comparator.java\6\1\0\n\0\t\0\0\0\0\0\2\4\1\0\5\0\f\0\1\0\3\0\0\0\2\0\2\4\1\0\6\0\1\0\0\0\2\0\4\0\0\0\2\0\r\0\3\0\0\0\2\0\v", 295) = 295 30059 lseek(4, 60477618, SEEK_SET) = 60477618 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\304_\1\0\4Code\1\0\rConstantValue\1\0\1J\1\0\17LineNumberTable\1\0\nSourceFile\1\0\33java/lang/RuntimePermission\1\0\35java/security/BasicPermission\1\0\20serialVersionUID\5f\257/\205\323\271\330O\7\0\t\7\0\n\f\0\3\0\1\f\0\3\0\2\n\0\17\0\20\n\0\17\0\21\1\0\26RuntimePermission.java\0001\0\16\0\17\0\0\0\1\0\32\0\v\0\6\0\1\0\5\0\0\0\2\0\f\0\2\0\1\0\3\0\1\0\1\0\4\0\0\0\"\0\2\0\2\0\0\0\6*+\267\0\22\261\0\0\0\1\0\7\0\0\0\n\0\2\0\0\1q\0\5\1r\0\1\0\3\0\2\0\1\0\4\0\0\0#\0\3\0\3\0\0\0\7*+,\267\0\23\261\0\0\0\1\0\7\0\0\0\n\0\2\0\0\1\202\0\6\1\203\0\1\0\10\0\0\0\2\0\24", 419) = 419 30059 lseek(4, 60475205, SEEK_SET) = 60475205 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\254\253\17E,\t\0\0,\t\0\0#\0\0\0", 30) = 30 30059 lseek(4, 60475270, SEEK_SET) = 60475270 30059 read(4, "\312\376\272\276\0\0\0003\0p\10\0\7\10\0\37\10\0 \10\0!\10\0005\10\0006\1\0\0\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\4(I)C\1\0\26(II)Ljava/lang/String;\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)V\1\0\25(Ljava/lang/String;)Z\1\0'(Ljava/lang/String;Ljava/lang/String;)V\1\0\6\1\0\24BasicPermission.java\1\0\4Code\1\0\rConstantValue\1\0\nExceptions\1\0\1J\1\0\17LineNumberTable\1\0\22Ljava/lang/String;\1\0\nSourceFile\1\0\rStackMapTable\1\0\1Z\1\0\6charAt\1\0\21defaultReadObject\1\0\6equals\1\0\6exitVM\1\0\7exitVM.\1\0\10exitVM.*\1\0\ngetActions\1\0\20getCanonicalName\1\0\10getClass\1\0\7getName\1\0\10hashCode\1\0\7implies\1\0\4init\1\0\23java/io/IOException\1\0\31java/io/ObjectInputStream\1\0\24java/io/Serializable\1\0 java/lang/ClassNotFoundException\1\0\"java/lang/IllegalArgumentException\1\0\36java/lang/NullPointerException\1\0\20java/lang/Object\1\0\20java/lang/String\1\0\35java/security/BasicPermission\1\0'java/security/BasicPermissionCollection\1\0\30java/security/Permission\1\0\6length\1\0\23name can't be empty\1\0\22name can't be null\1\0\27newPermissionCollection\1\0\4path\1\0\nreadObject\1\0\20serialVersionUID\1\0\nstartsWith\1\0\tsubstring\1\0\10wildcard\5W%\v\334\317N\246z\7\0)\7\0*\7\0+\7\0,\7\0-\7"..., 2348) = 2348 30059 lseek(4, 60473608, SEEK_SET) = 60473608 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\271\f\370\356\1\6\0\0\1\6\0\0\36\0\0\0", 30) = 30 30059 lseek(4, 60473668, SEEK_SET) = 60473668 30059 read(4, "\312\376\272\276\0\0\0003\0W\10\0\4\10\0\5\10\0\6\1\0\3\" \"\1\0\2\")\1\0\2(\"\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\25(Ljava/lang/Object;)V\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)V\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\nExceptions\1\0\1J\1\0\17LineNumberTable\1\0\22Ljava/lang/String;\1\0\nSourceFile\1\0\rStackMapTable\1\0\6append\1\0\ncheckGuard\1\0\17checkPermission\1\0\6equals\1\0\ngetActions\1\0\10getClass\1\0\7getName\1\0\22getSecurityManager\1\0\10hashCode\1\0\7implies\1\0\24java/io/Serializable\1\0\17java/lang/Class\1\0\20java/lang/Object\1\0\33java/lang/SecurityException\1\0\31java/lang/SecurityManager\1\0\20java/lang/String\1\0\27java/lang/StringBuilder\1\0\20java/lang/System\1\0\23java/security/Guard\1\0\30java/security/Permission\1\0\6length\1\0\4name\1\0\27newPermissionCollection\1\0\20serialVersionUID\1\0\10toString\5\261\306\341?(WQ~\7\0 \7\0!\7\0\"\7\0#\7\0$\7\0%\7\0&\7\0'\7\0(\7\0)\1\0\23()Ljava/lang/Class;\1\0\35()Ljava/lang/SecurityManager;\1\0\35(Ljava/security/Permission;)V\1\0\35(Ljava/security/Permission;)Z\1\0&()Ljava/security/PermissionCollection;\1\0-(Ljava/lang/String;)Ljava/lang/StringBuilder;\f\0+\0\23\f\0*\0\7\f\0\r\0\t\f\0\33\0;\f\0\35\0<\f\0\32\0\10\f\0\34\0\10\f\0.\0\10\f\0\30\0=\f\0\26\0@\t\0:\0A\n\0002\0G\n\0003\0C\n\0"..., 1537) = 1537 30059 mprotect(0x7fb3143e5000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 60473347, SEEK_SET) = 60473347 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305Baw\237\347\316\0\0\0\316\0\0\0\31\0\0\0", 30) = 30 30059 lseek(4, 60473402, SEEK_SET) = 60473402 30059 read(4, "\312\376\272\276\0\0\0003\0\f\1\0\25(Ljava/lang/Object;)V\1\0\nExceptions\1\0\nSourceFile\1\0\ncheckGuard\1\0\20java/lang/Object\1\0\33java/lang/SecurityException\1\0\23java/security/Guard\7\0\5\7\0\6\7\0\7\1\0\nGuard.java\6\1\0\n\0\10\0\0\0\0\0\1\4\1\0\4\0\1\0\1\0\2\0\0\0\4\0\1\0\t\0\1\0\3\0\0\0\2\0\v", 206) = 206 30059 lseek(4, 60444337, SEEK_SET) = 60444337 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\245Y7k\204\17\0\0\204\17\0\0$\0\0\0", 30) = 30 30059 lseek(4, 60444403, SEEK_SET) = 60444403 30059 read(4, "\312\376\272\276\0\0\0003\0\240\10\0\26\10\0\31\10\0\36\10\0\37\10\0008\10\0009\10\0<\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\25(Ljava/lang/String;)V\1\0\25(Ljava/lang/String;)Z\1\0\6\1\0\4Code\1\0\nExceptions\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\31RuntimeVisibleAnnotations\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0![Ljava/security/ProtectionDomain;\1\0\17access allowed \1\0\6append\1\0\17checkPermission\1\0\tcodebase=\1\0\7combine\1\0\rcurrentThread\1\0\fdoPrivileged\1\0\30doPrivilegedWithCombiner\1\0\6domain\1\0\30domain (context is null)\1\0\tdumpStack\1\0\23getAssignedCombiner\1\0\16getCallerClass\1\0\20getCanonicalName\1\0\10getClass\1\0\ngetContext\1\0\10getDebug\1\0 getInheritedAccessControlContext\1\0\34getStackAccessControlContext\1\0\4isOn\1\0\17java/lang/Class\1\0\36java/lang/NullPointerException\1\0\20java/lang/Object\1\0\27java/lang/StringBuilder\1\0\20java/lang/Thread\1\0\"java/security/AccessControlContext\1\0$java/security/AccessControlException\1\0\36java/security/AccessController\1\0 java/security/AccessController$1\1\0\34java/security/DomainCombiner\1\0\30java/security/Permission\1\0'java/security/PrivilegedActionException\1\0\36java/security/Protection"..., 3972) = 3972 30059 lseek(4, 60443839, SEEK_SET) = 60443839 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B\233D_\276\253\1\0\0\253\1\0\0)\0\0\0", 30) = 30 30059 lseek(4, 60443910, SEEK_SET) = 60443910 30059 read(4, "\312\376\272\276\0\0\0003\0\25\1\0\25(Ljava/lang/String;)V\1\0'(Ljava/lang/String;Ljava/lang/String;)V\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\1J\1\0\17LineNumberTable\1\0\nSourceFile\1\0#java/lang/reflect/ReflectPermission\1\0\35java/security/BasicPermission\1\0\20serialVersionUID\5f\337U \235L\370\235\7\0\t\7\0\n\f\0\3\0\1\f\0\3\0\2\n\0\17\0\20\n\0\17\0\21\1\0\26ReflectPermission.java\0001\0\16\0\17\0\0\0\1\0\32\0\v\0\6\0\1\0\5\0\0\0\2\0\f\0\2\0\1\0\3\0\1\0\1\0\4\0\0\0\"\0\2\0\2\0\0\0\6*+\267\0\22\261\0\0\0\1\0\7\0\0\0\n\0\2\0\0\0S\0\5\0T\0\1\0\3\0\2\0\1\0\4\0\0\0#\0\3\0\3\0\0\0\7*+,\267\0\23\261\0\0\0\1\0\7\0\0\0\n\0\2\0\0\0b\0\6\0c\0\1\0\10\0\0\0\2\0\24", 427) = 427 30059 lseek(4, 60443068, SEEK_SET) = 60443068 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\365F|i\247\2\0\0\247\2\0\0>\0\0\0", 30) = 30 30059 lseek(4, 60443160, SEEK_SET) = 60443160 30059 read(4, "\312\376\272\276\0\0\0003\0\35\1\0\3()V\1\0\6\1\0\4Code\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\24getReflectionFactory\1\0\20java/lang/Object\1\0\36java/security/PrivilegedAction\1\0\3run\1\0\35sun/reflect/ReflectionFactory\1\0008sun/reflect/ReflectionFactory$GetReflectionFactoryAction\7\0\t\7\0\n\7\0\f\7\0\r\1\0SLjava/lang/Object;Ljava/security/PrivilegedAction;\1\0\24()Ljava/lang/Object;\1\0!()Lsun/reflect/ReflectionFactory;\f\0\2\0\1\f\0\10\0\24\f\0\v\0\24\n\0\16\0\25\n\0\20\0\26\n\0\21\0\27\1\0\32GetReflectionFactoryAction\1\0\26ReflectionFactory.java\0001\0\21\0\16\0\1\0\17\0\0\0\3\0\1\0\2\0\1\0\1\0\3\0\0\0\35\0\1\0\1\0\0\0\5*\267\0\30\261\0\0\0\1\0\5\0\0\0\6\0\1\0\0\0V\0\1\0\v\0\24\0\1\0\3\0\0\0\34\0\1\0\1\0\0\0\4\270\0\31\260\0\0\0\1\0\5\0\0\0\6\0\1\0\0\0Y\20A\0\v\0\23\0\1\0\3\0\0\0\35\0\1\0\1\0\0\0\5*\266\0\32\260\0\0\0\1\0\5\0\0\0\6\0\1\0\0\0V\0\3\0\7\0\0\0\2\0\34\0\6\0\0\0\2\0\22\0\4\0\0\0\n\0\1\0\21\0\20\0\33\0\31", 679) = 679 30059 lseek(4, 60442759, SEEK_SET) = 60442759 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B=\311\313\203\363\0\0\0\363\0\0\0$\0\0\0", 30) = 30 30059 lseek(4, 60442825, SEEK_SET) = 60442825 30059 read(4, "\312\376\272\276\0\0\0003\0\f\1\0\5()TT;\1\0\tSignature\1\0\nSourceFile\1\0\20java/lang/Object\1\0\36java/security/PrivilegedAction\1\0\3run\7\0\4\7\0\5\1\0(Ljava/lang/Object;\1\0\24()Ljava/lang/Object;\1\0\25PrivilegedAction.java\6\1\0\10\0\7\0\0\0\0\0\1\4\1\0\6\0\n\0\1\0\2\0\0\0\2\0\1\0\2\0\3\0\0\0\2\0\v\0\2\0\0\0\2\0\t", 243) = 243 30059 lseek(4, 59694425, SEEK_SET) = 59694425 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305BZ\347\345\35\22\10\0\0\22\10\0\0$\0\0\0", 30) = 30 30059 lseek(4, 59694491, SEEK_SET) = 59694491 30059 read(4, "\312\376\272\276\0\0\0003\0c\10\0\n\10\0\36\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\4()[B\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)V\1\0\7([B[B)Z\1\0\2: \1\0\6\1\0\4Code\1\0\rConstantValue\1\0\nExceptions\1\0\fInnerClasses\1\0\1J\1\0\17LineNumberTable\1\0\22Ljava/lang/String;\1\0\nSourceFile\1\0\rStackMapTable\1\0\2[B\1\0\6append\1\0\6equals\1\0\ngetEncoded\1\0\22getEncodedInternal\1\0\ngetMessage\1\0\fgetPublicKey\1\0\7getType\1\0\10hashCode\1\0 java.security.cert.Certificate: \1\0 java/io/NotSerializableException\1\0\35java/io/ObjectStreamException\1\0\24java/io/Serializable\1\0\20java/lang/Object\1\0\27java/lang/StringBuilder\1\0!java/security/InvalidKeyException\1\0&java/security/NoSuchAlgorithmException\1\0%java/security/NoSuchProviderException\1\0 java/security/SignatureException\1\0\36java/security/cert/Certificate\1\0-java/security/cert/Certificate$CertificateRep\1\0/java/security/cert/CertificateEncodingException\1\0'java/security/cert/CertificateException\1\0\20java/util/Arrays\1\0\20serialVersionUID\1\0\36sun/security/x509/X509CertImpl\1\0\10toString\1\0\4type\1\0\6verify\1\0\fwriteReplace\5\316=\364\304\362\10\n\33\7\0\25\7\0\37\7\0 \7\0!\7\0\"\7\0#\7\0$\7\0%"..., 2066) = 2066 30059 lseek(4, 60569359, SEEK_SET) = 60569359 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305BA\347\10\"\32$\0\0\32$\0\0\26\0\0\0", 30) = 30 30059 lseek(4, 60569411, SEEK_SET) = 60569411 30059 read(4, "\312\376\272\276\0\0\0003\1'\3\177\377\377\367\3\177\377\377\377\10\0\n\10\0\v\10\0$\10\0%\10\0004\10\0<\10\0=\1\0\3 > \1\0\4 >= \1\0\3()I\1\0\24()Ljava/lang/String;\1\0\5()TE;\1\0\3()V\1\0\3()Z\1\0\4(I)I\1\0\6(I)TE;\1\0\4(I)V\1\0\5(II)V\1\0\t(ITE;)TE;\1\0\7(ITE;)V\1\0\25(Ljava/lang/Object;)I\1\0\25(Ljava/lang/Object;)V\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)V\1\0\6(TE;)V\1\0\6(TE;)Z\1\0\7(TE;I)V\1\0)([Ljava/lang/Object;I)[Ljava/lang/Object;\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\nExceptions\1\0\1I\1\0\22Illegal Capacity: \1\0\7Index: \1\0\fInnerClasses\1\0\1J\1\0\17LineNumberTable\1\0\16MAX_ARRAY_SIZE\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\23[Ljava/lang/Object;\1\0\3add\1\0\6addAll\1\0\naddElement\1\0\6append\1\0\tarraycopy\1\0\10capacity\1\0\21capacityIncrement\1\0\5clear\1\0\5clone\1\0\10contains\1\0\vcontainsAll\1\0\10copyInto\1\0\6copyOf\1\0\telementAt\1\0\felementCount\1\0\velementData\1\0\10elements\1\0\16ensureCapacity\1\0\24ensureCapacityHelper\1\0\6equals\1\0\ffirstElement\1\0\3get\1\0\10getClass\1\0\4grow\1\0\10hashCode\1\0\fhugeCapacity\1\0\7indexOf\1\0\17insertElementAt\1\0\7isEmpty\1\0\10iterator\1\0\23java/io/IOException\1\0\32java/io/ObjectOutputStream\1\0#java/io/ObjectOutputStream$PutField\1\0\24java/io/Serializable\1\0(java/lan"..., 9242) = 9242 30059 mprotect(0x7fb3143e6000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 60567882, SEEK_SET) = 60567882 30059 read(4, "PK\3\4\n\0\0\0\0\0003\246\305B\17\3644G\223\5\0\0\223\5\0\0\24\0\0\0", 30) = 30 30059 lseek(4, 60567932, SEEK_SET) = 60567932 30059 read(4, "\312\376\272\276\0\0\0003\0;\1\0\3()I\1\0\3()V\1\0\3()Z\1\0\6(I)TE;\1\0\t(ITE;)TE;\1\0\7(ITE;)V\1\0\25(Ljava/lang/Object;)I\1\0\25(Ljava/lang/Object;)Z\1\0\6(TE;)Z\1\0\tSignature\1\0\nSourceFile\1\0\3add\1\0\6addAll\1\0\5clear\1\0\10contains\1\0\vcontainsAll\1\0\6equals\1\0\3get\1\0\10hashCode\1\0\7indexOf\1\0\7isEmpty\1\0\10iterator\1\0\20java/lang/Object\1\0\24java/util/Collection\1\0\16java/util/List\1\0\vlastIndexOf\1\0\flistIterator\1\0\6remove\1\0\tremoveAll\1\0\tretainAll\1\0\3set\1\0\4size\1\0\7subList\1\0\7toArray\7\0\27\7\0\30\7\0\31\1\0 ([TT;)[TT;\1\0CLjava/lang/Object;Ljava/util/Collection;\1\0\25()[Ljava/lang/Object;\1\0\25(I)Ljava/lang/Object;\1\0\26(ILjava/lang/Object;)V\1\0\32(ILjava/util/Collection;)Z\1\0 (ILjava/util/Collection<+TE;>;)Z\1\0\31(Ljava/util/Collection;)Z\1\0\34(Ljava/util/Collection<*>;)Z\1\0\37(Ljava/util/Collection<+TE;>;)Z\1\0\26()Ljava/util/Iterator;\1\0\33()Ljava/util/Iterator;\1\0\24(II)Ljava/util/List;\1\0\31(II)Ljava/util/List;\1\0\32()Ljava/util/ListIterator;\1\0\37()Ljava/util/ListIterator;\1\0\33(I)Ljava/util/ListIterator;\1\0 (I)Ljava/util/ListIterator;\1\0'(ILjava/lang/Object"..., 1427) = 1427 30059 lseek(4, 60566985, SEEK_SET) = 60566985 30059 read(4, "PK\3\4\n\0\0\0\0\0003\246\305B\212l=\320I\3\0\0I\3\0\0\32\0\0\0", 30) = 30 30059 lseek(4, 60567041, SEEK_SET) = 60567041 30059 read(4, "\312\376\272\276\0\0\0003\0&\1\0\3()I\1\0\3()V\1\0\3()Z\1\0\25(Ljava/lang/Object;)Z\1\0\6(TE;)Z\1\0\tSignature\1\0\nSourceFile\1\0\3add\1\0\6addAll\1\0\5clear\1\0\10contains\1\0\vcontainsAll\1\0\6equals\1\0\10hashCode\1\0\7isEmpty\1\0\10iterator\1\0\22java/lang/Iterable\1\0\20java/lang/Object\1\0\24java/util/Collection\1\0\6remove\1\0\tremoveAll\1\0\tretainAll\1\0\4size\1\0\7toArray\7\0\21\7\0\22\7\0\23\1\0 ([TT;)[TT;\1\0ALjava/lang/Object;Ljava/lang/Iterable;\1\0\25()[Ljava/lang/Object;\1\0\31(Ljava/util/Collection;)Z\1\0\34(Ljava/util/Collection<*>;)Z\1\0\37(Ljava/util/Collection<+TE;>;)Z\1\0\26()Ljava/util/Iterator;\1\0\33()Ljava/util/Iterator;\1\0(([Ljava/lang/Object;)[Ljava/lang/Object;\1\0\17Collection.java\6\1\0\33\0\32\0\1\0\31\0\0\0\17\4\1\0\27\0\1\0\0\4\1\0\17\0\3\0\0\4\1\0\v\0\4\0\0\4\1\0\20\0\"\0\1\0\6\0\0\0\2\0#\4\1\0\30\0\36\0\0\4\1\0\30\0$\0\1\0\6\0\0\0\2\0\34\4\1\0\10\0\4\0\1\0\6\0\0\0\2\0\5\4\1\0\24\0\4\0\0\4\1\0\f\0\37\0\1\0\6\0\0\0\2\0 \4\1\0\t\0\37\0\1\0\6\0\0\0\2\0!\4\1\0\25\0\37\0\1\0\6\0\0\0\2\0 \4\1\0\26\0\37\0\1\0\6\0\0\0\2\0 \4\1\0\n\0\2\0\0\4\1\0\r\0\4\0\0\4\1\0\16\0\1\0\0\0\2\0\7\0\0\0\2\0%\0\6\0\0\0\2\0\35", 841) = 841 30059 lseek(4, 60566679, SEEK_SET) = 60566679 30059 read(4, "PK\3\4\n\0\0\0\0\0003\246\305B\220\355\321\346\374\0\0\0\374\0\0\0\30\0\0\0", 30) = 30 30059 lseek(4, 60566733, SEEK_SET) = 60566733 30059 read(4, "\312\376\272\276\0\0\0003\0\f\1\0\tSignature\1\0\nSourceFile\1\0\10iterator\1\0\22java/lang/Iterable\1\0\20java/lang/Object\7\0\4\7\0\5\1\0(Ljava/lang/Object;\1\0\26()Ljava/util/Iterator;\1\0\33()Ljava/util/Iterator;\1\0\rIterable.java\6\1\0\6\0\7\0\0\0\0\0\1\4\1\0\3\0\t\0\1\0\1\0\0\0\2\0\n\0\2\0\2\0\0\0\2\0\v\0\1\0\0\0\2\0\10", 252) = 252 30059 lseek(4, 60566506, SEEK_SET) = 60566506 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\215E\26cs\0\0\0s\0\0\0\34\0\0\0", 30) = 30 30059 lseek(4, 60566564, SEEK_SET) = 60566564 30059 read(4, "\312\376\272\276\0\0\0003\0\7\1\0\nSourceFile\1\0\20java/lang/Object\1\0\26java/util/RandomAccess\7\0\2\7\0\3\1\0\21RandomAccess.java\6\1\0\5\0\4\0\0\0\0\0\0\0\1\0\1\0\0\0\2\0\6", 115) = 115 30059 lseek(4, 60562553, SEEK_SET) = 60562553 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\216\241\34L7\17\0\0007\17\0\0\34\0\0\0", 30) = 30 30059 lseek(4, 60562611, SEEK_SET) = 60562611 30059 read(4, "\312\376\272\276\0\0\0003\0\247\10\0\21\10\0\26\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\25(I)Ljava/lang/String;\1\0\6(I)TE;\1\0\4(I)V\1\0\5(II)V\1\0\t(ITE;)TE;\1\0\7(ITE;)V\1\0\25(Ljava/lang/Object;)I\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)V\1\0\6(TE;)Z\1\0\10, Size: \1\0\6\1\0\21AbstractList.java\1\0\4Code\1\0\1I\1\0\7Index: \1\0\fInnerClasses\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\3add\1\0\6addAll\1\0\6append\1\0\5clear\1\0\6equals\1\0\3get\1\0\7hasNext\1\0\vhasPrevious\1\0\10hashCode\1\0\7indexOf\1\0\10iterator\1\0#java/lang/IndexOutOfBoundsException\1\0\20java/lang/Object\1\0\27java/lang/StringBuilder\1\0'java/lang/UnsupportedOperationException\1\0\34java/util/AbstractCollection\1\0\26java/util/AbstractList\1\0\30java/util/AbstractList$1\1\0\32java/util/AbstractList$Itr\1\0\36java/util/AbstractList$ListItr\1\0\24java/util/Collection\1\0\22java/util/Iterator\1\0\16java/util/List\1\0\26java/util/ListIterator\1\0\26java/util/RandomAccess\1\0\35java/util/RandomAccessSubList\1\0\21java/util/SubList\1\0\vlastIndexOf\1\0\flistIterator\1\0\10modCount\1\0\4next\1\0\tnextIndex\1\0\16outOfBoundsMsg\1\0\10previous\1\0\rpreviousIndex\1\0\20rangeCheckForAd"..., 3895) = 3895 30059 lseek(4, 60558677, SEEK_SET) = 60558677 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\35540\201\344\16\0\0\344\16\0\0\"\0\0\0", 30) = 30 30059 lseek(4, 60558741, SEEK_SET) = 60558741 30059 read(4, "\312\376\272\276\0\0\0003\0\203\3\177\377\377\367\3\177\377\377\377\10\0\17\10\0\26\10\0\33\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4(I)I\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)V\1\0\6(TE;)Z\1\0)([Ljava/lang/Object;I)[Ljava/lang/Object;\1\0\21(this Collection)\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\1I\1\0\17LineNumberTable\1\0\16MAX_ARRAY_SIZE\1\0\35Required array size too large\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\23[Ljava/lang/Object;\1\0\2[]\1\0\3add\1\0\6addAll\1\0\6append\1\0\5clear\1\0\10contains\1\0\vcontainsAll\1\0\6copyOf\1\0\6equals\1\0\rfinishToArray\1\0\10getClass\1\0\20getComponentType\1\0\7hasNext\1\0\fhugeCapacity\1\0\7isEmpty\1\0\10iterator\1\0\17java/lang/Class\1\0\20java/lang/Object\1\0\32java/lang/OutOfMemoryError\1\0\27java/lang/StringBuilder\1\0'java/lang/UnsupportedOperationException\1\0\27java/lang/reflect/Array\1\0\34java/util/AbstractCollection\1\0\20java/util/Arrays\1\0\24java/util/Collection\1\0\22java/util/Iterator\1\0\vnewInstance\1\0\4next\1\0\6remove\1\0\tremoveAll\1\0\tretainAll\1\0\4size\1\0\7toArray\1\0\10toString\7\0\32\7\0+\7\0,\7\0-\7\0.\7\0/\7\0000\7\0001\7\0002\7\0003\7\0004\1\0 ([TT;)[TT;\1\0007([TT;Ljava/util/Iterator<*>;)[TT;\1\0"..., 3812) = 3812 30059 lseek(4, 60441615, SEEK_SET) = 60441615 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305BG\240\371\201E\4\0\0E\4\0\0\25\0\0\0", 30) = 30 30059 lseek(4, 60441666, SEEK_SET) = 60441666 30059 read(4, "\312\376\272\276\0\0\0003\0008\1\0\3()I\1\0\5()TE;\1\0\3()V\1\0\3()Z\1\0\4(I)V\1\0\25(Ljava/lang/Object;)I\1\0\25(Ljava/lang/Object;)V\1\0\10(TE;)TE;\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\1J\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\naddElement\1\0\telementAt\1\0\5empty\1\0\35java/util/EmptyStackException\1\0\17java/util/Stack\1\0\20java/util/Vector\1\0\vlastIndexOf\1\0\4peek\1\0\3pop\1\0\4push\1\0\17removeElementAt\1\0\6search\1\0\20serialVersionUID\1\0\4size\5\20\376*\302\273\t\206\35\7\0\24\7\0\25\7\0\26\1\0-Ljava/util/Vector;\1\0\24()Ljava/lang/Object;\1\0\25(I)Ljava/lang/Object;\1\0&(Ljava/lang/Object;)Ljava/lang/Object;\f\0\36\0\1\f\0\t\0\3\f\0\33\0\5\f\0\30\0%\f\0\22\0&\f\0\27\0\6\f\0\21\0\7\n\0!\0)\n\0\"\0(\n\0\"\0*\n\0\"\0+\n\0\"\0,\n\0\"\0-\n\0\"\0.\n\0#\0)\1\0\nStack.java\0!\0\"\0#\0\0\0\1\0\32\0\35\0\f\0\1\0\v\0\0\0\2\0\37\0\6\0\1\0\t\0\3\0\1\0\n\0\0\0!\0\1\0\1\0\0\0\5*\267\0006\261\0\0\0\1\0\r\0\0\0\n\0\2\0\0\0005\0\4\0006\0\1\0\32\0'\0\2\0\n\0\0\0#\0\2\0\2\0\0\0\7*+\266\0005+\260\0\0\0\1\0\r\0\0\0\n\0\2\0\0\0C\0\5\0E\0\16\0\0\0\2\0\10\0!\0\31\0%\0\2\0\n\0\0\0007\0\3\0\3\0\0\0\23*\266\0000=*\266\0002L*\34\4d\266\0001+\260\0\0\0\1\0\r\0\0\0\22\0\4\0\0\0R\0\5\0T\0\n\0U\0\21\0W\0\16\0\0\0\2\0\2\0!\0\30\0%\0\2\0\n\0\0\0I\0\3\0\2\0\0\0\31*\266\0000<\33\232\0\v\273\0!Y\267\0/\277*\33\4d\266\0003\260\0\0\0\2\0\20\0\0\0\6\0\1\374\0\21\1\0\r\0\0\0\22\0\4\0\0\0c\0\5\0e\0\t\0f\0\21\0g\0\16\0\0\0\2\0\2\0\1\0\23\0\4\0\1\0\n\0\0\0000\0\1\0\1\0\0\0\r*\266\0000\232\0\7\4\247\0\4\3\254\0\0\0\2\0\20\0\0\0\5\0\2\v@\1\0\r\0\0\0\6\0\1\0\0\0q\0!\0\34\0\6"..., 1093) = 1093 30059 lseek(4, 60434461, SEEK_SET) = 60434461 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\204\3657\271\261\33\0\0\261\33\0\0#\0\0\0", 30) = 30 30059 lseek(4, 60434526, SEEK_SET) = 60434526 30059 read(4, "\312\376\272\276\0\0\0003\1\5\10\0\f\10\0F\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\4(I)I\1\0\4(I)Z\1\0\25(Ljava/lang/String;)V\1\0\4(Z)Z\1\0\10\1\0\6\1\0#Can not instantiate java.lang.Class\1\0\4Code\1\0\1I\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\1Z\1\0\naccess$002\1\0\naccess$102\1\0\naccess$202\1\0\fcheckInitted\1\0\17checkPermission\1\0\17copyConstructor\1\0\tcopyField\1\0\ncopyMethod\1\0\fdoPrivileged\1\0\23generateConstructor\1\0\16generateMethod\1\0 generateSerializationConstructor\1\0\26getConstructorAccessor\1\0\31getConstructorAnnotations\1\0\"getConstructorParameterAnnotations\1\0\27getConstructorSignature\1\0\22getConstructorSlot\1\0\21getDeclaringClass\1\0\21getExceptionTypes\1\0\21getMethodAccessor\1\0\fgetModifiers\1\0\7getName\1\0\21getParameterTypes\1\0\24getReflectionFactory\1\0\rgetReturnType\1\0\22getSecurityManager\1\0\22inflationThreshold\1\0\7initted\1\0\nisAbstract\1\0\10isPublic\1\0\fisSubclassOf\1\0\17java/lang/Class\1\0\20java/lang/Object\1\0\33java/lang/RuntimePermission\1\0\31java/lang/SecurityManager\1\0\20java/lang/System\1\0\35java/lang/reflect/Constructor\1\0\30java/lang/reflect/Method\1\0\32java/"..., 7089) = 7089 30059 mprotect(0x7fb3143e7000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 60433999, SEEK_SET) = 60433999 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B'\201\304\231\216\1\0\0\216\1\0\0\"\0\0\0", 30) = 30 30059 lseek(4, 60434063, SEEK_SET) = 60434063 30059 read(4, "\312\376\272\276\0\0\0003\0\25\1\0\3()V\1\0\6\1\0\4Code\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\nSourceFile\1\0\20java/lang/Object\1\0\27java/lang/ref/Reference\1\0\31java/lang/ref/Reference$1\1\0\34java/lang/ref/Reference$Lock\7\0\7\7\0\10\7\0\t\7\0\n\1\0\36(Ljava/lang/ref/Reference$1;)V\f\0\2\0\1\n\0\v\0\20\n\0\16\0\20\1\0\4Lock\1\0\16Reference.java\0 \0\16\0\v\0\0\0\0\0\2\0\2\0\2\0\1\0\1\0\3\0\0\0\35\0\1\0\1\0\0\0\5*\267\0\21\261\0\0\0\1\0\5\0\0\0\6\0\1\0\0\0g\20\0\0\2\0\17\0\1\0\3\0\0\0\35\0\1\0\2\0\0\0\5*\267\0\22\261\0\0\0\1\0\5\0\0\0\6\0\1\0\0\0g\0\2\0\6\0\0\0\2\0\24\0\4\0\0\0\22\0\2\0\16\0\f\0\23\0\n\0\r\0\f\0\0\20\10", 398) = 398 30059 lseek(4, 60432634, SEEK_SET) = 60432634 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B&\347o\\\t\5\0\0\t\5\0\0.\0\0\0", 30) = 30 30059 lseek(4, 60432710, SEEK_SET) = 60432710 30059 read(4, "\312\376\272\276\0\0\0003\0B\1\0\3()V\1\0\6\1\0\4Code\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\4NULL\1\0\nSourceFile\1\0\rStackMapTable\1\0\naccess$100\1\0\naccess$200\1\0\naccess$202\1\0\5clean\1\0\7enqueue\1\0\36java/lang/InterruptedException\1\0\20java/lang/Object\1\0\20java/lang/Thread\1\0\23java/lang/Throwable\1\0\27java/lang/ref/Reference\1\0\34java/lang/ref/Reference$Lock\1\0(java/lang/ref/Reference$ReferenceHandler\1\0\34java/lang/ref/ReferenceQueue\1\0\4next\1\0\5queue\1\0\3run\1\0\20sun/misc/Cleaner\1\0\4wait\7\0\16\7\0\17\7\0\20\7\0\21\7\0\22\7\0\23\7\0\24\7\0\25\7\0\31\1\0\31Ljava/lang/ref/Reference;\1\0\36Ljava/lang/ref/ReferenceQueue;\1\0\33()Ljava/lang/ref/Reference;\1\0\34(Ljava/lang/ref/Reference;)Z\1\0 ()Ljava/lang/ref/Reference$Lock;\1\0,(Ljava/lang/ThreadGroup;Ljava/lang/String;)V\1\0004(Ljava/lang/ref/Reference;)Ljava/lang/ref/Reference;\f\0\26\0$\f\0\6\0%\f\0\27\0%\f\0\f\0\1\f\0\32\0\1\f\0\n\0&\f\0\r\0'\f\0\t\0(\f\0\2\0)\f\0\v\0*\t\0\37\0+\t\0\37\0-\t\0\"\0,\n\0\34\0/\n\0\35\0003\n\0\37\0000\n\0\37\0002\n\0\37\0004\n\0\"\0001\n\0#\0.\1\0\4Lock\1\0\16Reference.java\1\0\20ReferenceHandler\0 \0!\0\35\0\0\0\0\0\2\0\0\0\2\0)\0\1\0\3\0\0\0#\0\3\0\3\0\0\0\7*+,\267\0009\261\0\0\0\1\0\5\0\0\0\n\0\2\0\0\0v\0\6\0w\0\1\0\30\0\1\0\1\0\3\0\0\1B\0\2\0\5\0\0\0l\270\0;YM\302\270\0:\306\0\"\270\0:L+\264\0005N-+\246\0\7\1\247\0\4-\270\0 30059 futex(0x7fb314009354, FUTEX_WAIT_PRIVATE, 51, NULL 30084 <... set_robust_list resumed> ) = 0 30084 gettid() = 30084 30084 rt_sigprocmask(SIG_BLOCK, NULL, [QUIT], 8) = 0 30084 rt_sigprocmask(SIG_UNBLOCK, [HUP INT ILL BUS FPE SEGV USR2 TERM], NULL, 8) = 0 30084 rt_sigprocmask(SIG_BLOCK, [QUIT], NULL, 8) = 0 30084 futex(0x7fb314009354, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x7fb314009350, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1}) = 1 30059 <... futex resumed> ) = 0 30084 futex(0x7fb3143e9854, FUTEX_WAIT_PRIVATE, 1, NULL 30059 futex(0x7fb314009328, FUTEX_WAKE_PRIVATE, 1) = 0 30059 futex(0x7fb3143e9854, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x7fb3143e9850, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1} 30084 <... futex resumed> ) = 0 30059 <... futex resumed> ) = 1 30084 futex(0x7fb3143e9828, FUTEX_WAIT_PRIVATE, 2, NULL 30059 futex(0x7fb3143e9828, FUTEX_WAKE_PRIVATE, 1 30084 <... futex resumed> ) = -1 EAGAIN (Resource temporarily unavailable) 30059 <... futex resumed> ) = 0 30084 futex(0x7fb3143e9828, FUTEX_WAKE_PRIVATE, 1) = 0 30059 mprotect(0x7fb3143ea000, 4096, PROT_READ|PROT_WRITE 30084 mmap(NULL, 134217728, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0 30059 <... mprotect resumed> ) = 0 30084 <... mmap resumed> ) = 0x7fb280000000 30059 lseek(4, 60463152, SEEK_SET 30084 munmap(0x7fb284000000, 67108864 30059 <... lseek resumed> ) = 60463152 30084 <... munmap resumed> ) = 0 30059 read(4, 30084 mprotect(0x7fb280000000, 135168, PROT_READ|PROT_WRITE 30059 <... read resumed> "PK\3\4\n\0\0\0\0\0004\246\305B\366\214\302Q\314\t\0\0\314\t\0\0\"\0\0\0", 30) = 30 30084 <... mprotect resumed> ) = 0 30059 lseek(4, 60463216, SEEK_SET 30084 sched_getaffinity(30084, 32, 30059 <... lseek resumed> ) = 60463216 30084 <... sched_getaffinity resumed> {ffffffff, 0, 0, 0}) = 32 30059 read(4, 30084 sched_getaffinity(30084, 32, 30059 <... read resumed> "\312\376\272\276\0\0\0003\0c\10\0\17\1\0\3()V\1\0\4(I)V\1\0\4(J)V\1\0\25(Ljava/lang/String;)V\1\0\10\1\0\6\1\0\4Code\1\0\10ENQUEUED\1\0\nExceptions\1\0\fInnerClasses\1\0\1J\1\0\17LineNumberTable\1\0\4NULL\1\0\26Negative timeout value\1\0\4Null\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\20addFinalRefCount\1\0\7enqueue\1\0\4head\1\0\"java/lang/IllegalArgumentException\1\0\36java/lang/InterruptedException\1\0\20java/lang/Object\1\0\23java/lang/Throwable\1\0\34java/lang/ref/FinalReference\1\0\27java/lang/ref/Reference\1\0\34java/lang/ref/ReferenceQueue\1\0\36java/lang/ref/ReferenceQueue$1\1\0!java/lang/ref/ReferenceQueue$Lock\1\0!java/lang/ref/ReferenceQueue$Null\1\0\4lock\1\0\4next\1\0\tnotifyAll\1\0\4poll\1\0\5queue\1\0\vqueueLength\1\0\nreallyPoll\1\0\6remove\1\0\vsun/misc/VM\1\0\4wait\7\0\27\7\0\30\7\0\31\7\0\32\7\0\33\7\0\34\7\0\35\7\0\36\7\0\37\7\0 \7\0)\1\0\31Ljava/lang/ref/Reference;\1\0\37Ljava/lang/ref/Reference<+TT;>;\1\0\36Ljava/lang/ref/ReferenceQueue;\1\0#Ljava/lang/ref/ReferenceQueue$Lock;\1\0(Ljava/lang/Object;\1\0\33()Ljava/lang/ref/Reference;\1\0!()Ljava/lang/ref/Reference<+TT;>;\1\0\34(J)Ljava/lang/ref/Reference;\1\0\"(J)Ljava/lang/ref/Reference<"..., 2508) = 2508 30084 <... sched_getaffinity resumed> {ffffffff, 0, 0, 0}) = 32 30084 mmap(0x7fb28f343000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fb28f343000 30084 mprotect(0x7fb28f343000, 12288, PROT_NONE) = 0 30059 lseek(4, 60462601, SEEK_SET) = 60462601 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\336F\337\224\342\1\0\0\342\1\0\0'\0\0\0", 30) = 30 30059 lseek(4, 60462670, SEEK_SET) = 60462670 30059 read(4, "\312\376\272\276\0\0\0003\0\25\1\0\3()V\1\0\6\1\0\4Code\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\4Null\1\0\nSourceFile\1\0\7enqueue\1\0\34java/lang/ref/ReferenceQueue\1\0\36java/lang/ref/ReferenceQueue$1\1\0!java/lang/ref/ReferenceQueue$Null\7\0\t\7\0\n\7\0\v\1\0\34(Ljava/lang/ref/Reference;)Z\1\0#(Ljava/lang/ref/ReferenceQueue$1;)V\f\0\2\0\1\n\0\f\0\21\n\0\16\0\21\1\0\23ReferenceQueue.java\0 \0\16\0\f\0\0\0\0\0\3\0\2\0\2\0\1\0\1\0\3\0\0\0\35\0\1\0\1\0\0\0\5*\267\0\22\261\0\0\0\1\0\5\0\0\0\6\0\1\0\0\0+\0\0\0\10\0\17\0\1\0\3\0\0\0\32\0\1\0\2\0\0\0\2\3\254\0\0\0\1\0\5\0\0\0\6\0\1\0\0\0-\20\0\0\2\0\20\0\1\0\3\0\0\0\35\0\1\0\2\0\0\0\5*\267\0\23\261\0\0\0\1\0\5\0\0\0\6\0\1\0\0\0+\0\2\0\7\0\0\0\2\0\24\0\4\0\0\0\22\0\2\0\16\0\f\0\6\0\n\0\r\0\f\0\0\20\10", 482) = 482 30084 futex(0x7fb3143e9454, FUTEX_WAIT_PRIVATE, 1, NULL 30059 lseek(4, 60462109, SEEK_SET) = 60462109 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305BF\334\305\342\247\1\0\0\247\1\0\0'\0\0\0", 30) = 30 30059 lseek(4, 60462178, SEEK_SET) = 60462178 30059 read(4, "\312\376\272\276\0\0\0003\0\25\1\0\3()V\1\0\6\1\0\4Code\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\nSourceFile\1\0\20java/lang/Object\1\0\34java/lang/ref/ReferenceQueue\1\0\36java/lang/ref/ReferenceQueue$1\1\0!java/lang/ref/ReferenceQueue$Lock\7\0\7\7\0\10\7\0\t\7\0\n\1\0#(Ljava/lang/ref/ReferenceQueue$1;)V\f\0\2\0\1\n\0\v\0\20\n\0\16\0\20\1\0\4Lock\1\0\23ReferenceQueue.java\0 \0\16\0\v\0\0\0\0\0\2\0\2\0\2\0\1\0\1\0\3\0\0\0\35\0\1\0\1\0\0\0\5*\267\0\21\261\0\0\0\1\0\5\0\0\0\6\0\1\0\0\0004\20\0\0\2\0\17\0\1\0\3\0\0\0\35\0\1\0\2\0\0\0\5*\267\0\22\261\0\0\0\1\0\5\0\0\0\6\0\1\0\0\0004\0\2\0\6\0\0\0\2\0\24\0\4\0\0\0\22\0\2\0\16\0\f\0\23\0\n\0\r\0\f\0\0\20\10", 423) = 423 30059 lseek(4, 60431754, SEEK_SET) = 60431754 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B%\211\350\352%\3\0\0%\3\0\0-\0\0\0", 30) = 30 30059 lseek(4, 60431829, SEEK_SET) = 60431829 30059 read(4, "\312\376\272\276\0\0\0003\0+\10\0\5\1\0\3()V\1\0\6\1\0\4Code\1\0\tFinalizer\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\nSourceFile\1\0\rStackMapTable\1\0\1Z\1\0\naccess$000\1\0\naccess$100\1\0\36java/lang/InterruptedException\1\0\20java/lang/Thread\1\0\27java/lang/ref/Finalizer\1\0'java/lang/ref/Finalizer$FinalizerThread\1\0\34java/lang/ref/ReferenceQueue\1\0\6remove\1\0\3run\1\0\7running\7\0\r\7\0\16\7\0\17\7\0\20\7\0\21\1\0\32(Ljava/lang/ThreadGroup;)V\1\0\34(Ljava/lang/ref/Finalizer;)V\1\0\33()Ljava/lang/ref/Reference;\1\0 ()Ljava/lang/ref/ReferenceQueue;\1\0,(Ljava/lang/ThreadGroup;Ljava/lang/String;)V\f\0\24\0\n\f\0\f\0\33\f\0\22\0\34\f\0\v\0\35\f\0\3\0\36\t\0\30\0\37\n\0\26\0#\n\0\27\0 \n\0\27\0\"\n\0\31\0!\1\0\16Finalizer.java\1\0\17FinalizerThread\0 \0\30\0\26\0\0\0\1\0B\0\24\0\n\0\0\0\2\0\0\0\3\0\32\0\1\0\4\0\0\0$\0\3\0\2\0\0\0\10*+\22\1\267\0%\261\0\0\0\1\0\7\0\0\0\n\0\2\0\0\0\265\0\7\0\266\0\1\0\23\0\2\0\1\0\4\0\0\0l\0\2\0\2\0\0\0\"*\264\0$\231\0\4\261*\4\265\0$\270\0'\266\0(\300\0\27L+\270\0&\247\377\362L\247\377\356\0\1\0\r\0\33\0\36\0\25\0\2\0\t\0\0\0\10\0\3\10\4P\7\0\25\0\7\0\0\0\"\0\10\0\0\0\270\0\7\0\271\0\10\0\272\0\r\0\275\0\27\0\276\0\33\0\301\0\36\0\277\0\37\0\300\0\2\0\10\0\0\0\2\0)\0\6\0\0\0\n\0\1\0\30\0\27\0*\0\n", 805) = 805 30059 mprotect(0x7fb3143eb000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb3143ec000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7fb28f242000 30059 clone(child_stack=0x7fb28f341ff0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7fb28f3429d0, tls=0x7fb28f342700, child_tidptr=0x7fb28f3429d0) = 30085 30085 set_robust_list(0x7fb28f3429e0, 0x18 30059 futex(0x7fb314009354, FUTEX_WAIT_PRIVATE, 53, NULL 30085 <... set_robust_list resumed> ) = 0 30085 gettid() = 30085 30085 rt_sigprocmask(SIG_BLOCK, NULL, [QUIT], 8) = 0 30085 rt_sigprocmask(SIG_UNBLOCK, [HUP INT ILL BUS FPE SEGV USR2 TERM], NULL, 8) = 0 30085 rt_sigprocmask(SIG_BLOCK, [QUIT], NULL, 8) = 0 30085 futex(0x7fb314009354, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x7fb314009350, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1}) = 1 30059 <... futex resumed> ) = 0 30085 futex(0x7fb3143ebc54, FUTEX_WAIT_PRIVATE, 1, NULL 30059 futex(0x7fb314009328, FUTEX_WAKE_PRIVATE, 1) = 0 30059 futex(0x7fb3143ebc54, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x7fb3143ebc50, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1} 30085 <... futex resumed> ) = 0 30059 <... futex resumed> ) = 1 30085 futex(0x7fb3143ebc28, FUTEX_WAIT_PRIVATE, 2, NULL 30059 futex(0x7fb3143ebc28, FUTEX_WAKE_PRIVATE, 1 30085 <... futex resumed> ) = 0 30059 <... futex resumed> ) = 1 30085 futex(0x7fb3143ebc28, FUTEX_WAKE_PRIVATE, 1) = 0 30085 mmap(0x7fb284000000, 67108864, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x7fb284000000 30085 mprotect(0x7fb284000000, 135168, PROT_READ|PROT_WRITE) = 0 30085 sched_getaffinity(30085, 32, {ffffffff, 0, 0, 0}) = 32 30085 sched_getaffinity(30085, 32, {ffffffff, 0, 0, 0}) = 32 30085 mmap(0x7fb28f242000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fb28f242000 30085 mprotect(0x7fb28f242000, 12288, PROT_NONE) = 0 30085 futex(0x7fb3143eb954, FUTEX_WAIT_PRIVATE, 1, NULL 30059 lseek(4, 60381105, SEEK_SET) = 60381105 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305Bs\3771\267\245\36\0\0\245\36\0\0\25\0\0\0", 30) = 30 30059 lseek(4, 60381156, SEEK_SET) = 60381156 30059 read(4, "\312\376\272\276\0\0\0003\1\\\10\0=\10\0n\1\0\3()I\1\0\3()V\1\0\4(I)Z\1\0\4(J)B\1\0\4(J)C\1\0\4(J)D\1\0\4(J)F\1\0\4(J)I\1\0\4(J)J\1\0\4(J)S\1\0\4(J)V\1\0\5(JB)V\1\0\5(JC)V\1\0\5(JD)V\1\0\5(JF)V\1\0\5(JI)V\1\0\5(JJ)J\1\0\5(JJ)V\1\0\6(JJB)V\1\0\6(JJJ)V\1\0\5(JS)V\1\0\25(Ljava/lang/Object;)V\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)V\1\0\30(Ljava/lang/Throwable;)V\1\0\5(ZJ)V\1\0\6([DI)I\1\0\10\1\0\6\1\0\fADDRESS_SIZE\1\0\31ARRAY_BOOLEAN_BASE_OFFSET\1\0\31ARRAY_BOOLEAN_INDEX_SCALE\1\0\26ARRAY_BYTE_BASE_OFFSET\1\0\26ARRAY_BYTE_INDEX_SCALE\1\0\26ARRAY_CHAR_BASE_OFFSET\1\0\26ARRAY_CHAR_INDEX_SCALE\1\0\30ARRAY_DOUBLE_BASE_OFFSET\1\0\30ARRAY_DOUBLE_INDEX_SCALE\1\0\27ARRAY_FLOAT_BASE_OFFSET\1\0\27ARRAY_FLOAT_INDEX_SCALE\1\0\25ARRAY_INT_BASE_OFFSET\1\0\25ARRAY_INT_INDEX_SCALE\1\0\26ARRAY_LONG_BASE_OFFSET\1\0\26ARRAY_LONG_INDEX_SCALE\1\0\30ARRAY_OBJECT_BASE_OFFSET\1\0\30ARRAY_OBJECT_INDEX_SCALE\1\0\27ARRAY_SHORT_BASE_OFFSET\1\0\27ARRAY_SHORT_INDEX_SCALE\1\0\4Code\1\0\rConstantValue\1\0\nDeprecated\1\0\nExceptions\1\0\1I\1\0\24INVALID_FIELD_OFFSET\1\0\17LineNumberTable\1\0\31RuntimeVisibleAnnotations\1\0\nSourceFile\1\0\rStackMapTable\1\0\6Unsafe\1\0\2[B\1\0\2[C\1\0\2[D\1\0\2[F\1\0\2[I\1\0\2[J\1\0\23[Ljava/lang/Objec"..., 7845) = 7845 30059 mprotect(0x7fb3143ed000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 60380652, SEEK_SET) = 60380652 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305BW?3,\206\1\0\0\206\1\0\0!\0\0\0", 30) = 30 30059 lseek(4, 60380715, SEEK_SET) = 60380715 30059 read(4, "\312\376\272\276\0\0\0003\0\25\1\0\3()V\1\0\25(Ljava/lang/String;)V\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\1J\1\0\17LineNumberTable\1\0\nSourceFile\1\0&java/lang/IncompatibleClassChangeError\1\0\33java/lang/NoSuchMethodError\1\0\20serialVersionUID\5\313\276.2\341@7\231\7\0\t\7\0\n\f\0\3\0\1\f\0\3\0\2\n\0\16\0\20\n\0\16\0\21\1\0\26NoSuchMethodError.java\0!\0\17\0\16\0\0\0\1\0\32\0\v\0\6\0\1\0\5\0\0\0\2\0\f\0\2\0\1\0\3\0\1\0\1\0\4\0\0\0!\0\1\0\1\0\0\0\5*\267\0\22\261\0\0\0\1\0\7\0\0\0\n\0\2\0\0\0000\0\4\0001\0\1\0\3\0\2\0\1\0\4\0\0\0\"\0\2\0\2\0\0\0\6*+\267\0\23\261\0\0\0\1\0\7\0\0\0\n\0\2\0\0\0:\0\5\0;\0\1\0\10\0\0\0\2\0\24", 390) = 390 30059 lseek(4, 60380182, SEEK_SET) = 60380182 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\374\23\32\\\214\1\0\0\214\1\0\0,\0\0\0", 30) = 30 30059 lseek(4, 60380256, SEEK_SET) = 60380256 30059 read(4, "\312\376\272\276\0\0\0003\0\25\1\0\3()V\1\0\25(Ljava/lang/String;)V\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\1J\1\0\17LineNumberTable\1\0\nSourceFile\1\0&java/lang/IncompatibleClassChangeError\1\0\26java/lang/LinkageError\1\0\20serialVersionUID\5\273\312\177\321\361\237\3109\7\0\t\7\0\n\f\0\3\0\1\f\0\3\0\2\n\0\17\0\20\n\0\17\0\21\1\0!IncompatibleClassChangeError.java\0!\0\16\0\17\0\0\0\1\0\32\0\v\0\6\0\1\0\5\0\0\0\2\0\f\0\2\0\1\0\3\0\1\0\1\0\4\0\0\0!\0\1\0\1\0\0\0\5*\267\0\22\261\0\0\0\1\0\7\0\0\0\n\0\2\0\0\0-\0\4\0.\0\1\0\3\0\2\0\1\0\4\0\0\0\"\0\2\0\2\0\0\0\6*+\267\0\23\261\0\0\0\1\0\7\0\0\0\n\0\2\0\0\0007\0\5\0008\0\1\0\10\0\0\0\2\0\24", 396) = 396 30059 lseek(4, 60077005, SEEK_SET) = 60077005 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\0370\334\376\212!\0\0\212!\0\0\31\0\0\0", 30) = 30 30059 lseek(4, 60077060, SEEK_SET) = 60077060 30059 read(4, "\312\376\272\276\0\0\0003\1\20\3\177\377\377\367\3\177\377\377\377\10\0\35\10\0\36\10\0\37\10\0%\10\0&\10\0A\10\0B\10\0v\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4(I)I\1\0\25(I)Ljava/lang/String;\1\0\6(I)TE;\1\0\4(I)V\1\0\5(II)V\1\0\6(III)V\1\0\t(ITE;)TE;\1\0\7(ITE;)V\1\0\25(Ljava/lang/Object;)I\1\0\25(Ljava/lang/Object;)V\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)V\1\0\6(TE;)Z\1\0)([Ljava/lang/Object;I)[Ljava/lang/Object;\1\0\1)\1\0\f) > toIndex(\1\0\10, Size: \1\0\6\1\0\4Code\1\0\rConstantValue\1\0\nExceptions\1\0\1I\1\0\22Illegal Capacity: \1\0\7Index: \1\0\fInnerClasses\1\0\1J\1\0\17LineNumberTable\1\0\16MAX_ARRAY_SIZE\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\23[Ljava/lang/Object;\1\0\naccess$100\1\0\naccess$200\1\0\3add\1\0\6addAll\1\0\6append\1\0\tarraycopy\1\0\vbatchRemove\1\0\5clear\1\0\5clone\1\0\10contains\1\0\6copyOf\1\0\21defaultReadObject\1\0\22defaultWriteObject\1\0\velementData\1\0\16ensureCapacity\1\0\26ensureCapacityInternal\1\0\6equals\1\0\nfastRemove\1\0\ffromIndex = \1\0\nfromIndex(\1\0\3get\1\0\10getClass\1\0\4grow\1\0\fhugeCapacity\1\0\7indexOf\1\0\7isEmpty\1\0\10iterator\1\0\23java/io/IOException\1\0\31java/io/ObjectInputStream\1\0\32java/io/ObjectOutputStream\1\0\24java/io/Serializable\1\0 java/lang/ClassNotF"..., 8586) = 8586 30059 lseek(4, 60352280, SEEK_SET) = 60352280 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\315\350\23\20\214U\0\0\214U\0\0\33\0\0\0", 30) = 30 30059 lseek(4, 60352337, SEEK_SET) = 60352337 30059 read(4, "\312\376\272\276\0\0\0003\2X\10\0\36\10\0&\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4(I)I\1\0\25(Ljava/lang/Object;)I\1\0\25(Ljava/lang/Object;)V\1\0\25(Ljava/lang/Object;)Z\1\0'(Ljava/lang/Object;Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)V\1\0\10\1\0\6\1\0\26BINARYSEARCH_THRESHOLD\1\0\16COPY_THRESHOLD\1\0\4Code\1\0\rConstantValue\1\0\21EMPTY_ENUMERATION\1\0\16EMPTY_ITERATOR\1\0\nEMPTY_LIST\1\0\tEMPTY_MAP\1\0\tEMPTY_SET\1\0\tEmptyList\1\0\16FILL_THRESHOLD\1\0\1I\1\0\30INDEXOFSUBLIST_THRESHOLD\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\16List length = \1\0\24REPLACEALL_THRESHOLD\1\0\rREVERSE_ORDER\1\0\21REVERSE_THRESHOLD\1\0\20ROTATE_THRESHOLD\1\0\31RuntimeVisibleAnnotations\1\0\21SHUFFLE_THRESHOLD\1\0\tSignature\1\0\33Source does not fit in dest\1\0\nSourceFile\1\0\rStackMapTable\1\0\23[Ljava/lang/Object;\1\0\3add\1\0\6addAll\1\0\6append\1\0\vasLifoQueue\1\0\fbinarySearch\1\0\21checkedCollection\1\0\vcheckedList\1\0\ncheckedMap\1\0\ncheckedSet\1\0\20checkedSortedMap\1\0\20checkedSortedSet\1\0\3cmp\1\0\7compare\1\0\tcompareTo\1\0\10contains\1\0\4copy\1\0\10disjoint\1\0\20emptyEnumeration\1\0\remptyIterator\1\0\temptyList\1\0\21emptyListIterator\1\0\10emptyMap\1\0\10emptySet\1\0\venumeratio"..., 21900) = 21900 30059 mprotect(0x7fb3143ee000, 8192, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb3143f0000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb3143f1000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb3143f2000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb3143f3000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 60350748, SEEK_SET) = 60350748 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\244\3068c\272\5\0\0\272\5\0\0$\0\0\0", 30) = 30 30059 lseek(4, 60350814, SEEK_SET) = 60350814 30059 read(4, "\312\376\272\276\0\0\0003\0>\1\0\3()I\1\0\3()V\1\0\3()Z\1\0\25(Ljava/lang/Object;)Z\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\tEMPTY_SET\1\0\fInnerClasses\1\0\1J\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\10contains\1\0\vcontainsAll\1\0\remptyIterator\1\0\7isEmpty\1\0\10iterator\1\0\24java/io/Serializable\1\0\20java/lang/Object\1\0\25java/util/AbstractSet\1\0\24java/util/Collection\1\0\25java/util/Collections\1\0\27java/util/Collections$1\1\0\36java/util/Collections$EmptySet\1\0\vreadResolve\1\0\20serialVersionUID\1\0\4size\1\0\7toArray\5\25\365r\35\264\3\313(\7\0\24\7\0\25\7\0\26\7\0\27\7\0\30\7\0\31\7\0\32\1\0 ([TT;)[TT;\1\0\17Ljava/util/Set;\1\0HLjava/util/AbstractSet;Ljava/io/Serializable;\1\0\24()Ljava/lang/Object;\1\0\25()[Ljava/lang/Object;\1\0\31(Ljava/util/Collection;)Z\1\0\34(Ljava/util/Collection<*>;)Z\1\0\34(Ljava/util/Collections$1;)V\1\0\26()Ljava/util/Iterator;\1\0\33()Ljava/util/Iterator;\1\0(([Ljava/lang/Object;)[Ljava/lang/Object;\f\0\10\0)\f\0\5\0\2\f\0\22\0\3\f\0\21\0000\t\0%\0003\n\0#\0004\n\0%\0006\n\0'\0004\v\0$\0005\1\0\20Collections.java\1\0\10EmptySet\0 \0'\0#\0\1\0!\0\1\0\32\0\34\0\n\0\1\0\7\0\0\0\2\0\37\0\n\0\2\0\5\0\2\0\1\0\6\0\0\0\35\0\1\0\1\0\0\0\5*\267\0008\261\0\0\0\1\0\v\0\0\0\6\0\1\0\0\f6\0"..., 1466) = 1466 30059 lseek(4, 60349356, SEEK_SET) = 60349356 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\261\335az7\5\0\0007\5\0\0\33\0\0\0", 30) = 30 30059 lseek(4, 60349413, SEEK_SET) = 60349413 30059 read(4, "\312\376\272\276\0\0\0003\0A\1\0\3()I\1\0\3()V\1\0\3()Z\1\0\25(Ljava/lang/Object;)Z\1\0\6\1\0\4Code\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\10contains\1\0\vcontainsAll\1\0\6equals\1\0\7hasNext\1\0\10hashCode\1\0\10iterator\1\0\34java/lang/ClassCastException\1\0\36java/lang/NullPointerException\1\0\20java/lang/Object\1\0\34java/util/AbstractCollection\1\0\25java/util/AbstractSet\1\0\24java/util/Collection\1\0\22java/util/Iterator\1\0\rjava/util/Set\1\0\4next\1\0\6remove\1\0\tremoveAll\1\0\4size\7\0\21\7\0\22\7\0\23\7\0\24\7\0\25\7\0\26\7\0\27\7\0\30\1\0MLjava/util/AbstractCollection;Ljava/util/Set;\1\0\24()Ljava/lang/Object;\1\0\31(Ljava/util/Collection;)Z\1\0\34(Ljava/util/Collection<*>;)Z\1\0\26()Ljava/util/Iterator;\f\0\17\0\1\f\0\34\0\1\f\0\5\0\2\f\0\32\0\2\f\0\16\0\3\f\0\31\0&\f\0\v\0\4\f\0\32\0\4\f\0\f\0'\f\0\20\0)\n\0\37\0*\n\0 \0,\n\0!\0+\n\0!\0001\n\0!\0002\n\0!\0003\v\0\"\0+\v\0\"\0000\v\0\"\0003\v\0#\0-\v\0#\0.\v\0#\0/\1\0\20AbstractSet.java\4!\0!\0 \0\1\0$\0\0\0\4\0\4\0\5\0\2\0\1\0\6\0\0\0!\0\1\0\1\0\0\0\5*\267\0005\261\0\0\0\1\0\7\0\0\0\n\0\2\0\0\0?\0\4\0@\0\1\0\r\0\4\0\1\0\6\0\0\0\234\0\2\0\4\0\0\0000+*\246\0\5\4\254+\301\0$\232\0\5\3\254+\300\0\"M,\271\0:\1\0*\266\0006\237\0\5\3\254*,\266\0008\254N\3\254N\3\254\0\2\0$\0)\0*\0\35\0$\0)\0-\0\36\0\2\0\n\0\0\0\22\0\5\7\10\374\0\23\7\0\"E\7\0\35B\7\0\36\0\7\0\0\0002\0\f\0\0\0V\0\5\0W\0\7\0Y\0\16\0Z\0\20\0[\0\25\0\\\0\"\0]\0$\0_\0*\0`\0+\0a\0-\0b\0.\0c\0\1\0"..., 1335) = 1335 30059 lseek(4, 60348476, SEEK_SET) = 60348476 30059 read(4, "PK\3\4\n\0\0\0\0\0003\246\305B\371^\331i?\3\0\0?\3\0\0\23\0\0\0", 30) = 30 30059 lseek(4, 60348525, SEEK_SET) = 60348525 30059 read(4, "\312\376\272\276\0\0\0003\0&\1\0\3()I\1\0\3()V\1\0\3()Z\1\0\25(Ljava/lang/Object;)Z\1\0\6(TE;)Z\1\0\tSignature\1\0\nSourceFile\1\0\3add\1\0\6addAll\1\0\5clear\1\0\10contains\1\0\vcontainsAll\1\0\6equals\1\0\10hashCode\1\0\7isEmpty\1\0\10iterator\1\0\20java/lang/Object\1\0\24java/util/Collection\1\0\rjava/util/Set\1\0\6remove\1\0\tremoveAll\1\0\tretainAll\1\0\4size\1\0\7toArray\7\0\21\7\0\22\7\0\23\1\0 ([TT;)[TT;\1\0CLjava/lang/Object;Ljava/util/Collection;\1\0\25()[Ljava/lang/Object;\1\0\31(Ljava/util/Collection;)Z\1\0\34(Ljava/util/Collection<*>;)Z\1\0\37(Ljava/util/Collection<+TE;>;)Z\1\0\26()Ljava/util/Iterator;\1\0\33()Ljava/util/Iterator;\1\0(([Ljava/lang/Object;)[Ljava/lang/Object;\1\0\10Set.java\6\1\0\33\0\31\0\1\0\32\0\0\0\17\4\1\0\27\0\1\0\0\4\1\0\17\0\3\0\0\4\1\0\v\0\4\0\0\4\1\0\20\0\"\0\1\0\6\0\0\0\2\0#\4\1\0\30\0\36\0\0\4\1\0\30\0$\0\1\0\6\0\0\0\2\0\34\4\1\0\10\0\4\0\1\0\6\0\0\0\2\0\5\4\1\0\24\0\4\0\0\4\1\0\f\0\37\0\1\0\6\0\0\0\2\0 \4\1\0\t\0\37\0\1\0\6\0\0\0\2\0!\4\1\0\26\0\37\0\1\0\6\0\0\0\2\0 \4\1\0\25\0\37\0\1\0\6\0\0\0\2\0 \4\1\0\n\0\2\0\0\4\1\0\r\0\4\0\0\4\1\0\16\0\1\0\0\0\2\0\7\0\0\0\2\0%\0\6\0\0\0\2\0\35", 831) = 831 30059 lseek(4, 60346180, SEEK_SET) = 60346180 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\346x\2416\265\10\0\0\265\10\0\0%\0\0\0", 30) = 30 30059 lseek(4, 60346247, SEEK_SET) = 60346247 30059 read(4, "\312\376\272\276\0\0\0003\0c\10\0\16\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\6(I)TE;\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)V\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\nEMPTY_LIST\1\0\tEmptyList\1\0\7Index: \1\0\fInnerClasses\1\0\1J\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\6append\1\0\10contains\1\0\vcontainsAll\1\0\remptyIterator\1\0\21emptyListIterator\1\0\6equals\1\0\3get\1\0\10hashCode\1\0\7isEmpty\1\0\10iterator\1\0\24java/io/Serializable\1\0#java/lang/IndexOutOfBoundsException\1\0\20java/lang/Object\1\0\27java/lang/StringBuilder\1\0\26java/util/AbstractList\1\0\24java/util/Collection\1\0\25java/util/Collections\1\0\27java/util/Collections$1\1\0\37java/util/Collections$EmptyList\1\0\16java/util/List\1\0\26java/util/RandomAccess\1\0\flistIterator\1\0\vreadResolve\1\0\20serialVersionUID\1\0\4size\1\0\7toArray\1\0\10toString\5z\270\27\264<\247\236\336\7\0\37\7\0 \7\0!\7\0\"\7\0#\7\0$\7\0%\7\0&\7\0'\7\0(\7\0)\1\0 ([TT;)[TT;\1\0\20Ljava/util/List;\1\0aLjava/util/AbstractList;Ljava/util/RandomAccess;Ljava/io/Serializable;\1\0\24()Ljava/lang/Object;\1\0\25()[Ljava/lang/Object;\1\0\25(I)Ljava/lang/Object;\1\0\34("..., 2229) = 2229 30059 lseek(4, 60344441, SEEK_SET) = 60344441 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B&\34\23\223\211\6\0\0\211\6\0\0$\0\0\0", 30) = 30 30059 lseek(4, 60344507, SEEK_SET) = 60344507 30059 read(4, "\312\376\272\276\0\0\0003\0C\1\0\3()I\1\0\3()V\1\0\3()Z\1\0\25(Ljava/lang/Object;)Z\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\tEMPTY_MAP\1\0\5Entry\1\0\fInnerClasses\1\0\1J\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\vcontainsKey\1\0\rcontainsValue\1\0\10emptySet\1\0\10entrySet\1\0\6equals\1\0\3get\1\0\10hashCode\1\0\7isEmpty\1\0\24java/io/Serializable\1\0\25java/util/AbstractMap\1\0\25java/util/Collections\1\0\27java/util/Collections$1\1\0\36java/util/Collections$EmptyMap\1\0\rjava/util/Map\1\0\23java/util/Map$Entry\1\0\6keySet\1\0\vreadResolve\1\0\20serialVersionUID\1\0\4size\1\0\6values\5Y6\24\205Z\334\347\320\7\0\30\7\0\31\7\0\32\7\0\33\7\0\34\7\0\35\7\0\36\1\0\17Ljava/util/Map;\1\0_Ljava/util/AbstractMap;Ljava/io/Serializable;\1\0\24()Ljava/lang/Object;\1\0\27(Ljava/lang/Object;)TV;\1\0\30()Ljava/util/Collection;\1\0\35()Ljava/util/Collection;\1\0\34(Ljava/util/Collections$1;)V\1\0\21()Ljava/util/Set;\1\0\26()Ljava/util/Set;\1\0&(Ljava/lang/Object;)Ljava/lang/Object;\1\0000()Ljava/util/Set;>;\f\0\10\0-\f\0\5\0\2\f\0\27\0\3\f\0\22\0004\t\0(\0008\n\0'\0009\n\0(\0;\n\0*\0009\v\0+\0:\1\0\20Collections.java\1\0\10EmptyMap\0 \0*\0'\0"..., 1673) = 1673 30059 lseek(4, 60465724, SEEK_SET) = 60465724 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\6\\u\313\272\21\0\0\272\21\0\0\33\0\0\0", 30) = 30 30059 lseek(4, 60465781, SEEK_SET) = 60465781 30059 read(4, "\312\376\272\276\0\0\0003\0\226\10\0\n\10\0;\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\25(Ljava/lang/Object;)Z\1\0'(Ljava/lang/Object;Ljava/lang/Object;)Z\1\0\v(TK;TV;)TV;\1\0\n(this Map)\1\0\6\1\0\4Code\1\0\5Entry\1\0\nExceptions\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\naccess$000\1\0\6append\1\0\5clear\1\0\5clone\1\0\vcontainsKey\1\0\rcontainsValue\1\0\10entrySet\1\0\2eq\1\0\6equals\1\0\3get\1\0\6getKey\1\0\10getValue\1\0\7hasNext\1\0\10hashCode\1\0\7isEmpty\1\0\10iterator\1\0\34java/lang/ClassCastException\1\0$java/lang/CloneNotSupportedException\1\0\36java/lang/NullPointerException\1\0\20java/lang/Object\1\0\27java/lang/StringBuilder\1\0'java/lang/UnsupportedOperationException\1\0\25java/util/AbstractMap\1\0\27java/util/AbstractMap$1\1\0\27java/util/AbstractMap$2\1\0!java/util/AbstractMap$SimpleEntry\1\0*java/util/AbstractMap$SimpleImmutableEntry\1\0\22java/util/Iterator\1\0\rjava/util/Map\1\0\23java/util/Map$Entry\1\0\rjava/util/Set\1\0\6keySet\1\0\4next\1\0\3put\1\0\6putAll\1\0\6remove\1\0\4size\1\0\10toString\1\0\6values\1\0\2{}\7\0$\7\0%\7\0&\7\0'\7\0(\7\0)\7\0*\7\0+\7\0,\7\0-\7\0.\7\0/\7\0000\7\0001\7\0002\1\0\26Ljava/util/Collection;\1\0\33Ljava/util/"..., 4538) = 4538 30059 lseek(4, 59382194, SEEK_SET) = 59382194 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\303[n\312\233\3\0\0\233\3\0\0008\0\0\0", 30) = 30 30059 lseek(4, 59382280, SEEK_SET) = 59382280 30059 read(4, "\312\376\272\276\0\0\0003\0*\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\fInnerClasses\1\0\1J\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\25java/util/Collections\1\0&java/util/Collections$UnmodifiableList\1\0002java/util/Collections$UnmodifiableRandomAccessList\1\0\16java/util/List\1\0\26java/util/RandomAccess\1\0\4list\1\0\20serialVersionUID\1\0\7subList\1\0\fwriteReplace\5\334\267\347\225\37HFO\7\0\t\7\0\n\7\0\v\7\0\f\7\0\r\1\0\20Ljava/util/List;\1\0[Ljava/util/Collections$UnmodifiableList;Ljava/util/RandomAccess;\1\0\24()Ljava/lang/Object;\1\0\24(II)Ljava/util/List;\1\0\31(II)Ljava/util/List;\1\0\23(Ljava/util/List;)V\1\0\31(Ljava/util/List<+TE;>;)V\f\0\16\0\31\f\0\20\0\34\f\0\1\0\36\t\0\26\0 \n\0\25\0\"\n\0\26\0\"\v\0\27\0!\1\0\20Collections.java\1\0\20UnmodifiableList\1\0\34UnmodifiableRandomAccessList\0 \0\26\0\25\0\1\0\30\0\1\0\32\0\17\0\5\0\1\0\3\0\0\0\2\0\22\0\3\0\0\0\1\0\36\0\2\0\2\0\0\0\"\0\2\0\2\0\0\0\6*+\267\0$\261\0\0\0\1\0\6\0\0\0\n\0\2\0\0\5\2\0\5\5\3\0\7\0\0\0\2\0\37\0\1\0\20\0\34\0\2\0\2\0\0\0+\0\5\0\3\0\0\0\23\273\0\26Y*\264\0#\33\34\271\0&\3\0\267\0%\260\0\0\0\1\0\6\0\0\0\6\0\1\0\0\5\6\0\7\0\0\0\2\0\35\0\2\0\21\0\33\0\1\0\2\0\0\0$\0\3\0\1\0\0\0\f\273\0\25Y*\264\0#\267\0$\260\0\0\0\1\0\6\0\0\0\6\0\1\0\0\5\23\0\3\0\10\0\0\0\2\0'\0\7\0\0\0\2\0\32\0\4\0\0\0\22\0\2\0\25\0\24\0(\0\10\0\26\0\24\0)\0\10", 923) = 923 30059 lseek(4, 59379685, SEEK_SET) = 59379685 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\202\270\361|\203\t\0\0\203\t\0\0,\0\0\0", 30) = 30 30059 lseek(4, 59379759, SEEK_SET) = 59379759 30059 read(4, "\312\376\272\276\0\0\0003\0a\1\0\3()I\1\0\3()V\1\0\6(I)TE;\1\0\t(ITE;)TE;\1\0\7(ITE;)V\1\0\25(Ljava/lang/Object;)I\1\0\25(Ljava/lang/Object;)Z\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\fInnerClasses\1\0\1J\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\3add\1\0\6addAll\1\0\6equals\1\0\3get\1\0\10hashCode\1\0\7indexOf\1\0'java/lang/UnsupportedOperationException\1\0\25java/util/Collections\1\0,java/util/Collections$UnmodifiableCollection\1\0&java/util/Collections$UnmodifiableList\1\0(java/util/Collections$UnmodifiableList$1\1\0002java/util/Collections$UnmodifiableRandomAccessList\1\0\16java/util/List\1\0\26java/util/RandomAccess\1\0\vlastIndexOf\1\0\4list\1\0\flistIterator\1\0\vreadResolve\1\0\6remove\1\0\20serialVersionUID\1\0\3set\1\0\7subList\5\374\17%1\265\354\216\20\7\0\27\7\0\30\7\0\31\7\0\32\7\0\33\7\0\34\7\0\35\7\0\36\1\0\20Ljava/util/List;\1\0\26Ljava/util/List<+TE;>;\1\0^Ljava/util/Collections$UnmodifiableCollection;Ljava/util/List;\1\0\24()Ljava/lang/Object;\1\0\25(I)Ljava/lang/Object;\1\0\26(ILjava/lang/Object;)V\1\0\32(ILjava/util/Collection;)Z\1\0 (ILjava/util/Collection<+TE;>;)Z\1\0\31(Ljava/util/Collection;)V\1\0,(Ljava/util"..., 2435) = 2435 30059 lseek(4, 59377388, SEEK_SET) = 59377388 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B'F\237j\251\10\0\0\251\10\0\0002\0\0\0", 30) = 30 30059 lseek(4, 59377468, SEEK_SET) = 59377468 30059 read(4, "\312\376\272\276\0\0\0003\0W\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\25(Ljava/lang/Object;)Z\1\0\6(TE;)Z\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\fInnerClasses\1\0\1J\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\3add\1\0\6addAll\1\0\1c\1\0\5clear\1\0\10contains\1\0\vcontainsAll\1\0\7isEmpty\1\0\10iterator\1\0\24java/io/Serializable\1\0\36java/lang/NullPointerException\1\0\20java/lang/Object\1\0'java/lang/UnsupportedOperationException\1\0\24java/util/Collection\1\0\25java/util/Collections\1\0,java/util/Collections$UnmodifiableCollection\1\0.java/util/Collections$UnmodifiableCollection$1\1\0\6remove\1\0\tremoveAll\1\0\tretainAll\1\0\20serialVersionUID\1\0\4size\1\0\7toArray\1\0\10toString\5\31B\0\200\313^\367\36\7\0\30\7\0\31\7\0\32\7\0\33\7\0\34\7\0\35\7\0\36\7\0\37\1\0 ([TT;)[TT;\1\0\26Ljava/util/Collection;\1\0\34Ljava/util/Collection<+TE;>;\1\0YLjava/lang/Object;Ljava/util/Collection;Ljava/io/Serializable;\1\0\25()[Ljava/lang/Object;\1\0\31(Ljava/util/Collection;)V\1\0\31(Ljava/util/Collection;)Z\1\0\34(Ljava/util/Collection<*>;)Z\1\0\37(Ljava/util/Collection<+TE;>;)V\1\0\37(Ljava/util/Collection<+TE;>;"..., 2217) = 2217 30059 mprotect(0x7fb3143f4000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 60374237, SEEK_SET) = 60374237 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\35\4\"\31\377\26\0\0\377\26\0\0\34\0\0\0", 30) = 30 30059 lseek(4, 60374295, SEEK_SET) = 60374295 30059 read(4, "\312\376\272\276\0\0\0003\0\333\10\0\n\10\0\v\10\0\f\10\0\26\10\0\32\10\0\33\10\0(\10\0O\10\0W\1\0\" can not access a member of class \1\0\21 with modifiers \"\1\0\1\"\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\4(I)C\1\0\4(I)I\1\0\25(I)Ljava/lang/String;\1\0\4(I)Z\1\0\25(Ljava/lang/String;)V\1\0\10\1\0\6\1\0\6Class \1\0\4Code\1\0\nDeprecated\1\0\nExceptions\1\0\33Filter already registered: \1\0\23Illegal class name \1\0\17LineNumberTable\1\0\31RuntimeVisibleAnnotations\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\23[Ljava/lang/String;\1\0\32[Ljava/lang/reflect/Field;\1\0\33[Ljava/lang/reflect/Member;\1\0\33[Ljava/lang/reflect/Method;\1\0\6append\1\0\6charAt\1\0\22ensureMemberAccess\1\0\16fieldFilterMap\1\0\6filter\1\0\ffilterFields\1\0\rfilterMethods\1\0\3get\1\0\16getCallerClass\1\0\17getCallerClass0\1\0\10getClass\1\0\23getClassAccessFlags\1\0\16getClassLoader\1\0\21getDeclaringClass\1\0\7getName\1\0\tgetParent\1\0\rgetSuperclass\1\0\24getSystemClassLoader\1\0\23isAnnotationPresent\1\0\21isCallerSensitive\1\0\20isExtClassLoader\1\0\tisPrivate\1\0\visProtected\1\0\10isPublic\1\0\22isSameClassPackage\1\0\fisSubclassOf\1\0\17java/lang/Class\1\0\25java/lang/ClassLoader\1\0 java/lang/IllegalAccessException\1\0\"java/lang/"..., 5887) = 5887 30059 lseek(4, 60451376, SEEK_SET) = 60451376 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\351\2516.\270)\0\0\270)\0\0\27\0\0\0", 30) = 30 30059 lseek(4, 60451429, SEEK_SET) = 60451429 30059 read(4, "\312\376\272\276\0\0\0003\1}\3@\0\0\0\3\177\377\377\377\4?@\0\0\4@\200\0\0\4N\200\0\0\10\0)\10\0*\10\0+\1\0\3()F\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\5()TV;\1\0\3()V\1\0\3()Z\1\0\4(F)Z\1\0\5(FF)F\1\0\4(I)V\1\0\5(IF)V\1\0\5(II)I\1\0\v(ITK;TV;I)V\1\0\25(Ljava/lang/Object;)I\1\0\25(Ljava/lang/Object;)V\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)I\1\0\25(Ljava/lang/String;)V\1\0\v(TK;TV;)TV;\1\0\t(TK;TV;)V\1\0\10(TV;)TV;\1\0\6\1\0\35ALTERNATIVE_HASHING_THRESHOLD\1\0%ALTERNATIVE_HASHING_THRESHOLD_DEFAULT\1\0\4Code\1\0\rConstantValue\1\0\30DEFAULT_INITIAL_CAPACITY\1\0\23DEFAULT_LOAD_FACTOR\1\0\5Entry\1\0\nExceptions\1\0\1F\1\0\17HASHSEED_OFFSET\1\0\1I\1\0\32Illegal initial capacity: \1\0\25Illegal load factor: \1\0\30Illegal mappings count: \1\0\fInnerClasses\1\0\1J\1\0\17LineNumberTable\1\0\22Ljava/lang/Object;\1\0\20MAXIMUM_CAPACITY\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\6UNSAFE\1\0\1Z\1\0\32[Ljava/util/HashMap$Entry;\1\0\10addEntry\1\0\6append\1\0\10capacity\1\0\5clear\1\0\5clone\1\0\vcontainsKey\1\0\21containsNullValue\1\0\rcontainsValue\1\0\vcreateEntry\1\0\21defaultReadObject\1\0\22defaultWriteObject\1\0\10entrySet\1\0\tentrySet0\1\0\6equals\1\0\3get\1\0\10getEntry\1\0\rgetForNullKey\1\0\6getKey\1\0\10getValue\1\0\7hasNext\1\0\4ha"..., 10680) = 10680 30059 mprotect(0x7fb3143f5000, 8192, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb3143f7000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 43215261, SEEK_SET) = 43215261 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B2]\215\250\320\n\0\0\320\n\0\0\26\0\0\0", 30) = 30 30059 lseek(4, 43215313, SEEK_SET) = 43215313 30059 read(4, "\312\376\272\276\0\0\0003\0r\3\205\353\312k\3\302\262\2565\3\314\236-Q\3\346Tkd\3\0\0\377\377\3\33\2075\223\10\0\36\1\0\3()I\1\0\3()J\1\0\3()V\1\0\3()Z\1\0\5(II)I\1\0\6(I[B)I\1\0\10(I[BII)I\1\0\6(I[C)I\1\0\10(I[CII)I\1\0\6(I[I)I\1\0\10(I[III)I\1\0\25(Ljava/lang/Object;)I\1\0\25(Ljava/lang/String;)I\1\0\25(Ljava/lang/String;)V\1\0\5([B)I\1\0\5([C)I\1\0\5([I)I\1\0\6\1\0\4Code\1\0\fInnerClasses\1\0\vLANG_ACCESS\1\0\17LineNumberTable\1\0\fNo instances\1\0\nSEED_MAKER\1\0\nSourceFile\1\0\rStackMapTable\1\0\rcurrentThread\1\0\21currentTimeMillis\1\0\nfreeMemory\1\0\5getId\1\0\ngetRuntime\1\0\17getStringHash32\1\0\20identityHashCode\1\0\10isBooted\1\0\17java/lang/Error\1\0\21java/lang/Integer\1\0\20java/lang/Object\1\0\21java/lang/Runtime\1\0\20java/lang/System\1\0\20java/lang/Thread\1\0\20java/util/Random\1\0\nmurmur3_32\1\0\10nanoTime\1\0\7nextInt\1\0\16randomHashSeed\1\0\nrotateLeft\1\0\fstringHash32\1\0\20sun/misc/Hashing\1\0\27sun/misc/Hashing$Holder\1\0\27sun/misc/JavaLangAccess\1\0\vsun/misc/VM\7\0*\7\0+\7\0,\7\0-\7\0.\7\0/\7\0000\7\0007\7\0008\7\0009\7\0:\1\0\22Ljava/util/Random;\1\0\31Lsun/misc/JavaLangAccess;\1\0\25()Ljava/lang/Runtime;\1\0\24()Ljava/lang/Thread;\f\0\37\0F\f\0\34\0G\f\0003\0\10\f\0#\0\t\f\0$\0\t\f\0%\0\t\f\0002\0\t\f\0\31\0\n\f\0)\0\v\f\0005\0\f\f\0001\0\16\f\0001\0\20\f\0001\0\22\f\0001\0\30\f\0(\0\23\f\0&\0H\f\0'\0\24\f\0\31\0\25\f\0\"\0I\t\0C\0J\t\0C\0"..., 2768) = 2768 30059 lseek(4, 60295967, SEEK_SET) = 60295967 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\314[\0h\302\21\0\0\302\21\0\0\21\0\0\0", 30) = 30 30059 lseek(4, 60296014, SEEK_SET) = 60296014 30059 read(4, "\312\376\272\276\0\0\0003\0\314\10\0\26\10\0-\10\0001\10\0K\10\0a\10\0b\10\0c\10\0d\10\0e\10\0l\1\0\3()I\1\0\3()J\1\0\3()V\1\0\3()Z\1\0\4(I)V\1\0\5(II)V\1\0\25(Ljava/lang/Object;)Z\1\0&(Ljava/lang/String;)Ljava/lang/String;\1\0\25(Ljava/lang/String;)V\1\0\25(Ljava/lang/String;)Z\1\0\4(Z)Z\1\0\2-1\1\0\10\1\0\6\1\0\7BLOCKED\1\0\4Code\1\0\rConstantValue\1\0\nDeprecated\1\0\1I\1\0\fInnerClasses\1\0\1J\1\0\30JVMTI_THREAD_STATE_ALIVE\1\0+JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER\1\0\33JVMTI_THREAD_STATE_RUNNABLE\1\0\35JVMTI_THREAD_STATE_TERMINATED\1\0'JVMTI_THREAD_STATE_WAITING_INDEFINITELY\1\0'JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT\1\0\17LineNumberTable\1\0\3NEW\1\0\10RUNNABLE\1\0\31RuntimeVisibleAnnotations\1\0\vSTATE_GREEN\1\0\tSTATE_RED\1\0\fSTATE_YELLOW\1\0\"Should be non-empty if initialized\1\0\nSourceFile\1\0\rStackMapTable\1\0\5State\1\0#System initialization has completed\1\0\nTERMINATED\1\0\rTIMED_WAITING\1\0\7WAITING\1\0\1Z\1\0\20addFinalRefCount\1\0\20allowArraySyntax\1\0\25allowThreadSuspension\1\0\10asChange\1\0\24asChange_otherthread\1\0\6booted\1\0\27defaultAllowArraySyntax\1\0\fdirectMemory\1\0\6equals\1\0\rfinalRefCount\1\0\20getFinalRefCount\1\0\24getPeakFinalRefCount\1\0\vgetProperty\1\0"..., 4546) = 4546 30059 lseek(4, 60151493, SEEK_SET) = 60151493 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\374\222b\4\27\22\0\0\27\22\0\0\27\0\0\0", 30) = 30 30059 lseek(4, 60151546, SEEK_SET) = 60151546 30059 read(4, "\312\376\272\276\0\0\0003\0\316\10\0\25\10\0\26\10\0\30\10\0R\10\0U\1\0\3()I\1\0\3()J\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4(I)I\1\0\4(I)V\1\0\25(Ljava/lang/String;)V\1\0\4(Z)V\1\0\26([Ljava/lang/String;)V\1\0\10\1\0\6\1\0\1C\1\0\4Code\1\0\nDeprecated\1\0007Directory separator should not appear in library name: \1\0\rEmpty command\1\0\nExceptions\1\0+Expecting an absolute path of the library: \1\0\17LineNumberTable\1\0\31RuntimeVisibleAnnotations\1\0\nSourceFile\1\0\rStackMapTable\1\0\23[Ljava/lang/String;\1\0\3add\1\0\17addShutdownHook\1\0\6append\1\0\23availableProcessors\1\0\tcheckExit\1\0\tcheckLink\1\0\17checkPermission\1\0\vcountTokens\1\0\16currentRuntime\1\0\tdirectory\1\0\venvironment\1\0\4exec\1\0\4exit\1\0\nfreeMemory\1\0\2gc\1\0\16getCallerClass\1\0\27getLocalizedInputStream\1\0\30getLocalizedOutputStream\1\0\ngetRuntime\1\0\22getSecurityManager\1\0\4halt\1\0\rhasMoreTokens\1\0\7indexOf\1\0\nisAbsolute\1\0\fjava/io/File\1\0\23java/io/IOException\1\0\"java/lang/ApplicationShutdownHooks\1\0\25java/lang/ClassLoader\1\0\"java/lang/IllegalArgumentException\1\0\20java/lang/Object\1\0\30java/lang/ProcessBuilder\1\0\21java/lang/Runtime\1\0\33java/lang/RuntimePermission\1\0\33java/lang/Secu"..., 4631) = 4631 30059 mprotect(0x7fb3143f8000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 60429177, SEEK_SET) = 60429177 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\345\1\255\331I\7\0\0I\7\0\0\37\0\0\0", 30) = 30 30059 lseek(4, 60429238, SEEK_SET) = 60429238 30059 read(4, "\312\376\272\276\0\0\0003\0V\10\0\n\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\5()TK;\1\0\5()TV;\1\0\3()V\1\0\25(Ljava/lang/Object;)Z\1\0\10(TV;)TV;\1\0\6\1\0\1=\1\0\4Code\1\0\5Entry\1\0\16Hashtable.java\1\0\1I\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\22Ljava/lang/Object;\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\3TK;\1\0\3TV;\1\0\6append\1\0\5clone\1\0\6equals\1\0\6getKey\1\0\10getValue\1\0\4hash\1\0\10hashCode\1\0\36java/lang/NullPointerException\1\0\20java/lang/Object\1\0\27java/lang/StringBuilder\1\0\23java/util/Hashtable\1\0\31java/util/Hashtable$Entry\1\0\rjava/util/Map\1\0\23java/util/Map$Entry\1\0\3key\1\0\4next\1\0\10setValue\1\0\10toString\1\0\5value\7\0\36\7\0\37\7\0 \7\0!\7\0\"\7\0#\7\0$\1\0\33Ljava/util/Hashtable$Entry;\1\0#Ljava/util/Hashtable$Entry;\1\0YLjava/lang/Object;Ljava/util/Map$Entry;\1\0\24()Ljava/lang/Object;\1\0-(ITK;TV;Ljava/util/Hashtable$Entry;)V\1\0&(Ljava/lang/Object;)Ljava/lang/Object;\1\0-(Ljava/lang/String;)Ljava/lang/StringBuilder;\1\0C(ILjava/lang/Object;Ljava/lang/Object;Ljava/util/Hashtable$Entry;)V\f\0\34\0\16\f\0%\0\21\f\0)\0\21\f\0&\0001\f\0\35\0\2\f\0\t\0\6\f\0\30\0004\f\0\32\0004\f\0\33\0004\f\0\31\0\7\f\0(\0\3\f\0\27\0007\f"..., 1865) = 1865 30059 lseek(4, 60448375, SEEK_SET) = 60448375 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\322-\3511\340\1\0\0\340\1\0\0\31\0\0\0", 30) = 30 30059 lseek(4, 60448430, SEEK_SET) = 60448430 30059 read(4, "\312\376\272\276\0\0\0003\0\31\1\0\3()I\1\0\5()TK;\1\0\5()TV;\1\0\25(Ljava/lang/Object;)Z\1\0\10(TV;)TV;\1\0\5Entry\1\0\fInnerClasses\1\0\tSignature\1\0\nSourceFile\1\0\6equals\1\0\6getKey\1\0\10getValue\1\0\10hashCode\1\0\20java/lang/Object\1\0\rjava/util/Map\1\0\23java/util/Map$Entry\1\0\10setValue\7\0\16\7\0\17\7\0\20\1\0<Ljava/lang/Object;\1\0\24()Ljava/lang/Object;\1\0&(Ljava/lang/Object;)Ljava/lang/Object;\1\0\10Map.java\6\1\0\24\0\22\0\0\0\0\0\5\4\1\0\v\0\26\0\1\0\10\0\0\0\2\0\2\4\1\0\f\0\26\0\1\0\10\0\0\0\2\0\3\4\1\0\21\0\27\0\1\0\10\0\0\0\2\0\5\4\1\0\n\0\4\0\0\4\1\0\r\0\1\0\0\0\3\0\t\0\0\0\2\0\30\0\10\0\0\0\2\0\25\0\7\0\0\0\n\0\1\0\24\0\23\0\6\6\t", 480) = 480 30059 lseek(4, 60301882, SEEK_SET) = 60301882 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\347\35p\262\263\21\0\0\263\21\0\0\24\0\0\0", 30) = 30 30059 lseek(4, 60301932, SEEK_SET) = 60301932 30059 read(4, "\312\376\272\276\0\0\0003\0\305\4\200\0\0\0\4>\377\377\377\4?\0\0\0\1\0\3()D\1\0\3()V\1\0\4(D)D\1\0\4(D)I\1\0\4(D)J\1\0\5(DD)D\1\0\5(DI)D\1\0\4(F)F\1\0\4(F)I\1\0\5(FD)F\1\0\5(FF)F\1\0\5(FI)F\1\0\4(I)I\1\0\5(II)I\1\0\4(J)J\1\0\5(JJ)J\1\0\10\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\1D\1\0\1E\1\0\rIEEEremainder\1\0\1J\1\0\17LineNumberTable\1\0\2PI\1\0\nSourceFile\1\0\rStackMapTable\1\0\3abs\1\0\4acos\1\0\4asin\1\0\4atan\1\0\5atan2\1\0\4cbrt\1\0\4ceil\1\0\10copySign\1\0\3cos\1\0\4cosh\1\0\20doubleToLongBits\1\0\3exp\1\0\5expm1\1\0\16floatToIntBits\1\0\5floor\1\0\vgetExponent\1\0\5hypot\1\0\7initRNG\1\0\20java/lang/Double\1\0\17java/lang/Float\1\0\16java/lang/Math\1\0\20java/lang/Object\1\0\24java/lang/StrictMath\1\0\20java/util/Random\1\0\3log\1\0\5log10\1\0\5log1p\1\0\3max\1\0\3min\1\0\26negativeZeroDoubleBits\1\0\25negativeZeroFloatBits\1\0\tnextAfter\1\0\nnextDouble\1\0\6nextUp\1\0\3pow\1\0\6random\1\0\25randomNumberGenerator\1\0\vrawCopySign\1\0\4rint\1\0\5round\1\0\5scalb\1\0\6signum\1\0\3sin\1\0\4sinh\1\0\4sqrt\1\0\20sun/misc/FpUtils\1\0\3tan\1\0\4tanh\1\0\ttoDegrees\1\0\ttoRadians\1\0\3ulp\6\200\0\0\0\0\0\0\0\6?\337\377\377\377\377\377\377\6?\340\0\0\0\0\0\0\6@\5\277\n\213\24Wi\6@\t!\373TD-\30\6@f\200\0\0\0\0\0\7\0002\7\0003\7\0004\7\0005\7\0006\7\0007\7\0M\1\0\22Ljava/util/Random;\1\0\24()Ljava/util/Random;\f\0=\0\33\f\0>\0\33\f\0D\0f\f\0@\0\4\f\0\25\0\5\f\0!\0\6\f\0\"\0\6\f\0#\0\6\f\0%\0\6\f\0&\0\6\f\0(\0"..., 4531) = 4531 30059 lseek(4, 60448910, SEEK_SET) = 60448910 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305BD9\375=\301\7\0\0\301\7\0\0\35\0\0\0", 30) = 30 30059 lseek(4, 60448969, SEEK_SET) = 60448969 30059 read(4, "\312\376\272\276\0\0\0003\0V\10\0\n\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\5()TK;\1\0\5()TV;\1\0\3()V\1\0\25(Ljava/lang/Object;)Z\1\0\10(TV;)TV;\1\0\6\1\0\1=\1\0\4Code\1\0\5Entry\1\0\1I\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\22Ljava/lang/Object;\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\3TK;\1\0\3TV;\1\0\6append\1\0\6equals\1\0\6getKey\1\0\10getValue\1\0\4hash\1\0\10hashCode\1\0\20java/lang/Object\1\0\27java/lang/StringBuilder\1\0\21java/util/HashMap\1\0\27java/util/HashMap$Entry\1\0\rjava/util/Map\1\0\23java/util/Map$Entry\1\0\3key\1\0\4next\1\0\frecordAccess\1\0\rrecordRemoval\1\0\10setValue\1\0\10toString\1\0\5value\7\0\34\7\0\35\7\0\36\7\0\37\7\0 \7\0!\1\0\31Ljava/util/HashMap$Entry;\1\0!Ljava/util/HashMap$Entry;\1\0YLjava/lang/Object;Ljava/util/Map$Entry;\1\0\24()Ljava/lang/Object;\1\0\26(Ljava/util/HashMap;)V\1\0\36(Ljava/util/HashMap;)V\1\0+(ITK;TV;Ljava/util/HashMap$Entry;)V\1\0&(Ljava/lang/Object;)Ljava/lang/Object;\1\0-(Ljava/lang/Object;)Ljava/lang/StringBuilder;\1\0-(Ljava/lang/String;)Ljava/lang/StringBuilder;\1\0A(ILjava/lang/Object;Ljava/lang/Object;Ljava/util/HashMap$Entry"..., 1985) = 1985 30059 lseek(4, 58662854, SEEK_SET) = 58662854 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\5QtOe\5\0\0e\5\0\0 \0\0\0", 30) = 30 30059 lseek(4, 58662916, SEEK_SET) = 58662916 30059 read(4, "\312\376\272\276\0\0\0003\0D\1\0\3()I\1\0\3()V\1\0\25(Ljava/lang/Object;)Z\1\0\6\1\0\4Code\1\0\5Entry\1\0\1I\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\5clear\1\0\10contains\1\0\6equals\1\0\10getEntry\1\0\6getKey\1\0\10iterator\1\0\25java/util/AbstractSet\1\0\21java/util/HashMap\1\0\23java/util/HashMap$1\1\0\27java/util/HashMap$Entry\1\0\32java/util/HashMap$EntrySet\1\0\rjava/util/Map\1\0\23java/util/Map$Entry\1\0\20newEntryIterator\1\0\6remove\1\0\rremoveMapping\1\0\4size\1\0\6this$0\7\0\23\7\0\24\7\0\25\7\0\26\7\0\27\7\0\30\7\0\31\1\0\23Ljava/util/HashMap;\1\0006Ljava/util/AbstractSet;>;\1\0\24()Ljava/lang/Object;\1\0\26(Ljava/util/HashMap;)V\1\0\26()Ljava/util/Iterator;\1\0+(Ljava/util/HashMap;Ljava/util/HashMap$1;)V\1\0-(Ljava/lang/Object;)Ljava/util/HashMap$Entry;\1\0005()Ljava/util/Iterator;>;\f\0\35\0\7\f\0\36\0&\f\0\4\0\2\f\0\r\0\2\f\0\21\0(\f\0\17\0\3\f\0\4\0)\f\0\32\0*\f\0\20\0,\f\0\34\0,\t\0 \0.\t\0#\0/\n\0\37\0000\n\0 \0001\n\0 \0005\n\0 \0006\n\0 \0007\n\0\"\0003\n\0#\0004\v\0%\0002\1\0\10EntrySet\1\0\fHashMap.java\0000\0#\0\37\0\0\0\1\20\20\0\36\0&\0\0\0\7\0\2\0\4\0)\0\1\0\5\0\0\0\"\0\2\0\2\0\0\0\n*+\265\0009*\267\0:\261\0\0\0\1\0\t\0\0\0\6\0\1\0\0\4\30\0\1\0\22\0*\0\2\0\5\0\0\0 \0\1\0\1\0\0\0\10*\264\0009\266\0<\260\0\0\0\1\0\t\0\0\0\6\0\1\0\0\4\32\0\n\0\0\0\2\0-\0\1\0"..., 1381) = 1381 30059 mprotect(0x7fb3143f9000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 54954956, SEEK_SET) = 54954956 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\2441J\274\276\3\0\0\276\3\0\0%\0\0\0", 30) = 30 30059 lseek(4, 54955023, SEEK_SET) = 54955023 30059 read(4, "\312\376\272\276\0\0\0003\0-\1\0\6\1\0\4Code\1\0\5Entry\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\21java/util/HashMap\1\0\23java/util/HashMap$1\1\0\27java/util/HashMap$Entry\1\0\37java/util/HashMap$EntryIterator\1\0\36java/util/HashMap$HashIterator\1\0\rjava/util/Map\1\0\23java/util/Map$Entry\1\0\4next\1\0\tnextEntry\1\0\6this$0\7\0\10\7\0\t\7\0\n\7\0\v\7\0\f\7\0\r\7\0\16\1\0\23Ljava/util/HashMap;\1\0GLjava/util/HashMap.HashIterator;>;\1\0\24()Ljava/lang/Object;\1\0\26(Ljava/util/HashMap;)V\1\0\33()Ljava/util/HashMap$Entry;\1\0\27()Ljava/util/Map$Entry;\1\0\37()Ljava/util/Map$Entry;\1\0+(Ljava/util/HashMap;Ljava/util/HashMap$1;)V\f\0\21\0\31\f\0\1\0\34\f\0\20\0\35\f\0\17\0\36\t\0\25\0!\n\0\25\0\"\n\0\25\0#\n\0\25\0$\n\0\26\0\"\1\0\rEntryIterator\1\0\fHashIterator\1\0\fHashMap.java\0000\0\25\0\26\0\0\0\1\20\20\0\21\0\31\0\0\0\4\0\2\0\1\0\34\0\1\0\2\0\0\0#\0\2\0\2\0\0\0\v*+\265\0%*+\267\0)\261\0\0\0\1\0\5\0\0\0\6\0\1\0\0\3\244\0\1\0\17\0\36\0\2\0\2\0\0\0\35\0\1\0\1\0\0\0\5*\266\0'\260\0\0\0\1\0\5\0\0\0\6\0\1\0\0\3\246\0\6\0\0\0\2\0\37\20A\0\17\0\33\0\1\0\2\0\0\0\35\0\1\0\1\0\0\0\5*\266\0(\260\0\0\0\1\0\5\0\0\0\6\0\1\0\0\3\244\20\0\0\1\0 \0\1\0\2\0\0\0\36\0\2\0\3\0\0\0\6*+\267\0&\261\0\0\0\1\0\5\0\0\0\6\0\1\0\0\3\244\0\3\0\7\0\0\0\2\0,\0\6\0\0\0\2\0\32\0\4\0\0\0*\0\5\0\25\0\22\0*\0\22\0\26\0\22\0+\4\2\0\30\0\27\0\3\6\t\0\23\0\22\0\0\20\10\0\24\0\22\0\3\0\10", 958) = 958 30059 lseek(4, 59119681, SEEK_SET) = 59119681 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\33\315\7\256\256\6\0\0\256\6\0\0$\0\0\0", 30) = 30 30059 lseek(4, 59119747, SEEK_SET) = 59119747 30059 read(4, "\312\376\272\276\0\0\0003\0P\1\0\3()V\1\0\3()Z\1\0\6\1\0\4Code\1\0\5Entry\1\0\1I\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\22Ljava/lang/Object;\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\32[Ljava/util/HashMap$Entry;\1\0\7current\1\0\20expectedModCount\1\0\7hasNext\1\0\5index\1\0\37java/lang/IllegalStateException\1\0\20java/lang/Object\1\0)java/util/ConcurrentModificationException\1\0\21java/util/HashMap\1\0\27java/util/HashMap$Entry\1\0\36java/util/HashMap$HashIterator\1\0\22java/util/Iterator\1\0 java/util/NoSuchElementException\1\0\3key\1\0\10modCount\1\0\4next\1\0\tnextEntry\1\0\6remove\1\0\21removeEntryForKey\1\0\4size\1\0\5table\1\0\6this$0\7\0\r\7\0\22\7\0\23\7\0\24\7\0\25\7\0\26\7\0\27\7\0\30\7\0\31\1\0\23Ljava/util/HashMap;\1\0\31Ljava/util/HashMap$Entry;\1\0!Ljava/util/HashMap$Entry;\1\0ALjava/lang/Object;Ljava/util/Iterator;\1\0\26(Ljava/util/HashMap;)V\1\0\33()Ljava/util/HashMap$Entry;\1\0#()Ljava/util/HashMap$Entry;\1\0-(Ljava/lang/Object;)Ljava/util/HashMap$Entry;\f\0\17\0\6\f\0\21\0\6\f\0\33\0\6\f\0 \0\6\f\0\32\0\t\f\0\"\0,\f\0\16\0-\f\0\34\0-\f\0!\0\r\f\0\3\0\1\f\0\37\0003\t\0'\0006\t\0'\0007\t\0'\0<\t\0(\0008\t\0(\0;\t\0)\0004\t\0)\0005\t\0)\0009\t\0)\0:\t\0)\0;\n\0$\0=\n\0%\0=\n\0&\0=\n\0'\0>\n\0+\0=\1\0\fHas"..., 1710) = 1710 30059 lseek(4, 60431103, SEEK_SET) = 60431103 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\353\3036Y\17\1\0\0\17\1\0\0\30\0\0\0", 30) = 30 30059 lseek(4, 60431157, SEEK_SET) = 60431157 30059 read(4, "\312\376\272\276\0\0\0003\0\20\1\0\5()TE;\1\0\3()V\1\0\3()Z\1\0\tSignature\1\0\nSourceFile\1\0\7hasNext\1\0\20java/lang/Object\1\0\22java/util/Iterator\1\0\4next\1\0\6remove\7\0\7\7\0\10\1\0(Ljava/lang/Object;\1\0\24()Ljava/lang/Object;\1\0\rIterator.java\6\1\0\f\0\v\0\0\0\0\0\3\4\1\0\6\0\3\0\0\4\1\0\t\0\16\0\1\0\4\0\0\0\2\0\1\4\1\0\n\0\2\0\0\0\2\0\5\0\0\0\2\0\17\0\4\0\0\0\2\0\r", 271) = 271 30059 lseek(4, 60337787, SEEK_SET) = 60337787 30059 read(4, "PK\3\4\n\0\0\0\0\0003\246\305B\4>\327\307\255\3\0\0\255\3\0\0\27\0\0\0", 30) = 30 30059 lseek(4, 60337840, SEEK_SET) = 60337840 30059 read(4, "\312\376\272\276\0\0\0003\0008\10\0\35\10\0\36\1\0\3()V\1\0\25(Ljava/lang/Object;)Z\1\0&(Ljava/lang/String;)Ljava/lang/String;\1\0\4(Z)Z\1\0\6\1\0\4Code\1\0\17EnclosingMethod\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\25Ljava/io/PrintStream;\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\naccess$202\1\0\naccess$302\1\0\fcheckInitted\1\0\6equals\1\0\vgetProperty\1\0\17java/lang/Class\1\0\21java/lang/Class$3\1\0\20java/lang/Object\1\0\20java/lang/String\1\0\20java/lang/System\1\0\36java/security/PrivilegedAction\1\0\3out\1\0\3run\1\0\24sun.reflect.noCaches\1\0\4true\7\0\25\7\0\26\7\0\27\7\0\30\7\0\31\7\0\32\1\0DLjava/lang/Object;Ljava/security/PrivilegedAction;\1\0\24()Ljava/lang/Object;\1\0\22()Ljava/lang/Void;\f\0\33\0\f\f\0\7\0\3\f\0\22\0\3\f\0\20\0\6\f\0\21\0\6\f\0\23\0\4\f\0\34\0'\f\0\24\0\5\t\0#\0(\n\0\37\0+\n\0\37\0,\n\0 \0.\n\0!\0)\n\0\"\0-\n\0#\0/\1\0\nClass.java\0000\0 \0!\0\1\0$\0\0\0\3\0\0\0\7\0\3\0\1\0\10\0\0\0\35\0\1\0\1\0\0\0\5*\267\0004\261\0\0\0\1\0\v\0\0\0\6\0\1\0\0\v\237\0\1\0\34\0'\0\1\0\10\0\0\0f\0\2\0\2\0\0\0'\262\0000\307\0\5\1\260\22\1\270\0006L+\306\0\21+\22\2\266\0005\231\0\10\3\270\0001W\4\270\0002W\1\260\0\0\0\2\0\17\0\0\0\t\0\2\10\374\0\27\7\0\"\0\v\0\0\0\36\0\7\0\0\v\252\0\6\v\254\0\10\v\257\0\16\v\261\0\33\v\262\0 \v\265\0%\v\266\20A\0\34\0&\0\1\0\10\0\0\0\35\0\1\0\1\0\0\0\5*\266\0003\260\0\0\0\1\0\v\0\0\0\6\0\1\0\0\v\237\0\4\0\16\0\0\0\2\0007\0\t\0\0\0\4\0\37\0*\0\r\0\0\0\2\0%\0\n\0\0\0\n\0\1\0 \0\0\0\0\0\10", 941) = 941 30059 lseek(4, 60334218, SEEK_SET) = 60334218 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305BZ\242\216'\263\r\0\0\263\r\0\0 \0\0\0", 30) = 30 30059 lseek(4, 60334280, SEEK_SET) = 60334280 30059 read(4, "\312\376\272\276\0\0\0003\0\222\10\0\16\10\0005\10\0;\10\0<\10\0S\10\0T\10\0U\10\0V\10\0X\10\0Y\10\0]\10\0_\10\0`\1\0\0\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\25(I)Ljava/lang/String;\1\0\4(I)Z\1\0\26(II)Ljava/lang/String;\1\0,(Ljava/lang/String;)Ljava/lang/StringBuffer;\1\0\10\1\0\6\1\0\10ABSTRACT\1\0\nANNOTATION\1\0\6BRIDGE\1\0\17CLASS_MODIFIERS\1\0\25CONSTRUCTOR_MODIFIERS\1\0\4Code\1\0\rConstantValue\1\0\4ENUM\1\0\17FIELD_MODIFIERS\1\0\5FINAL\1\0\1I\1\0\tINTERFACE\1\0\23INTERFACE_MODIFIERS\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\20METHOD_MODIFIERS\1\0\6NATIVE\1\0\7PRIVATE\1\0\tPROTECTED\1\0\6PUBLIC\1\0\6STATIC\1\0\6STRICT\1\0\fSYNCHRONIZED\1\0\tSYNTHETIC\1\0\nSourceFile\1\0\rStackMapTable\1\0\tTRANSIENT\1\0\7VARARGS\1\0\10VOLATILE\1\0\tabstract \1\0\6append\1\0\16classModifiers\1\0\24constructorModifiers\1\0\fdoPrivileged\1\0\16fieldModifiers\1\0\6final \1\0\ninterface \1\0\22interfaceModifiers\1\0\nisAbstract\1\0\7isFinal\1\0\visInterface\1\0\10isNative\1\0\tisPrivate\1\0\visProtected\1\0\10isPublic\1\0\10isStatic\1\0\10isStrict\1\0\16isSynchronized\1\0\visSynthetic\1\0\visTransient\1\0\nisVolatile\1\0\20java/lang/Object\1\0\20java/lang/String\1\0\26java/lang/StringBuffer\1\0\32java/lang/reflect/Modifier\1\0\37java/lang/reflect/ReflectA"..., 3507) = 3507 30059 lseek(4, 60330252, SEEK_SET) = 60330252 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B%\21\25\270;\17\0\0;\17\0\0%\0\0\0", 30) = 30 30059 lseek(4, 60330319, SEEK_SET) = 60330319 30059 read(4, "\312\376\272\276\0\0\0003\0h\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\4()[B\1\0\6\1\0\4Code\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\4copy\1\0\17copyConstructor\1\0\tcopyField\1\0\ncopyMethod\1\0\26getConstructorAccessor\1\0\31getConstructorAnnotations\1\0\"getConstructorParameterAnnotations\1\0\27getConstructorSignature\1\0\22getConstructorSlot\1\0\21getMethodAccessor\1\0\21getRawAnnotations\1\0\32getRawParameterAnnotations\1\0\fgetSignature\1\0\7getSlot\1\0\20java/lang/Object\1\0\35java/lang/reflect/Constructor\1\0\27java/lang/reflect/Field\1\0\30java/lang/reflect/Method\1\0\37java/lang/reflect/ReflectAccess\1\0\16newConstructor\1\0\10newField\1\0\tnewMethod\1\0\26setConstructorAccessor\1\0\21setMethodAccessor\1\0\35sun/reflect/LangReflectAccess\7\0\30\7\0\31\7\0\32\7\0\33\7\0\34\7\0\"\1\0`(Ljava/lang/reflect/Constructor;)Ljava/lang/reflect/Constructor;\1\0\224(Ljava/lang/Class;[Ljava/lang/Class<*>;[Ljava/lang/Class<*>;IILjava/lang/String;[B[B)Ljava/lang/reflect/Constructor;\1\0!()Ljava/lang/reflect/Constructor;\1\0\"(Ljava/lang/reflect/Constructor;)I\1\0#(Ljava/la"..., 3899) = 3899 30059 lseek(4, 60327843, SEEK_SET) = 60327843 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\201Y\3768(\t\0\0(\t\0\0#\0\0\0", 30) = 30 30059 lseek(4, 60327908, SEEK_SET) = 60327908 30059 read(4, "\312\376\272\276\0\0\0003\0,\1\0\tSignature\1\0\nSourceFile\1\0\17copyConstructor\1\0\tcopyField\1\0\ncopyMethod\1\0\26getConstructorAccessor\1\0\31getConstructorAnnotations\1\0\"getConstructorParameterAnnotations\1\0\27getConstructorSignature\1\0\22getConstructorSlot\1\0\21getMethodAccessor\1\0\20java/lang/Object\1\0\16newConstructor\1\0\10newField\1\0\tnewMethod\1\0\26setConstructorAccessor\1\0\21setMethodAccessor\1\0\35sun/reflect/LangReflectAccess\7\0\f\7\0\22\1\0`(Ljava/lang/reflect/Constructor;)Ljava/lang/reflect/Constructor;\1\0\224(Ljava/lang/Class;[Ljava/lang/Class<*>;[Ljava/lang/Class<*>;IILjava/lang/String;[B[B)Ljava/lang/reflect/Constructor;\1\0\"(Ljava/lang/reflect/Constructor;)I\1\0#(Ljava/lang/reflect/Constructor;)[B\1\0%(Ljava/lang/reflect/Constructor<*>;)I\1\0&(Ljava/lang/reflect/Constructor<*>;)[B\1\0003(Ljava/lang/reflect/Constructor;)Ljava/lang/String;\1\0006(Ljava/lang/reflect/Constructor<*>;)Ljava/lang/String;\1\0@(Ljava/lang/reflect/Constructor;)Ljava/lang/reflect/Constructor;\1\0004(Ljava/lang/reflect/Field;)Ljava/lan"..., 2344) = 2344 30059 uname({sys="Linux", node="seq3d", ...}) = 0 30059 getuid() = 205 30059 mprotect(0x7fb3143fa000, 4096, PROT_READ|PROT_WRITE) = 0 30059 open("/etc/passwd", O_RDONLY|O_CLOEXEC) = 5 30059 fstat(5, {st_mode=S_IFREG|0644, st_size=1433, ...}) = 0 30059 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb31b30d000 30059 read(5, "root:x:0:0:root:/root:/bin/bash\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\nbin:x:2:2:bin:/bin:/bin/sh\nsys:x:3:3:sys:/dev:/bin/sh\nsync:x:4:65534:sync:/bin:/bin/sync\ngames:x:5:60:games:/usr/games:/bin/sh\nman:x:6:12:man:/var/cache/man:/bin/sh\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\nmail:x:8:8:mail:/var/mail:/bin/sh\nnews:x:9:9:news:/var/spool/news:/bin/sh\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\nproxy:x:13:13:proxy:/bin:/bin/sh\nwww-data:x:33:33:www-data:/var/www:/bin/sh\nbackup:x:34:34:backup:/var/backups:/bin/sh\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\nsyslog:x:101:103::/home/syslog:/bin/false\nmessagebus:x:102:104::/var/run/dbus:/bin/false\nDebian-exim:x:104:109::/var/spool/exim4:/bin/false\nstatd:x:105:65534::/var/lib/nfs:/bin/false\nsshd:x:106:65534::/var/run/sshd:/usr/sbin/nologin\ngangli"..., 4096) = 1433 30059 read(5, "", 4096) = 0 30059 close(5) = 0 30059 munmap(0x7fb31b30d000, 4096) = 0 30059 poll([{fd=3, events=POLLIN|POLLOUT}], 1, 300000) = 1 ([{fd=3, revents=POLLOUT}]) 30059 poll([{fd=3, events=POLLOUT}], 1, 300000) = 1 ([{fd=3, revents=POLLOUT}]) 30059 sendto(3, "\24\0\0\0\22\0\0\0\0\0\0\0\0\0\0\0", 16, MSG_NOSIGNAL, NULL, 0) = 16 30059 poll([{fd=3, events=POLLOUT}], 1, 300000) = 1 ([{fd=3, revents=POLLOUT}]) 30059 sendto(3, "\315\0\0\0", 4, MSG_NOSIGNAL, NULL, 0) = 4 30059 poll([{fd=3, events=POLLIN}], 1, 300000) = 1 ([{fd=3, revents=POLLIN}]) 30059 read(3, "T\0\0\0\22\0\0\0\0\0\0\0\0\0\0\0", 16) = 16 30059 poll([{fd=3, events=POLLIN}], 1, 300000) = 1 ([{fd=3, revents=POLLIN}]) 30059 read(3, "\1\0\0\0\0\0\0\0\315\0\0\0005\4\0\0jkb\0*\0James Bonfield\0/nfs/users/nfs_j/jkb\0/bin/bash\0", 68) = 68 30059 open("/etc/localtime", O_RDONLY|O_CLOEXEC) = 5 30059 fstat(5, {st_mode=S_IFREG|0644, st_size=3661, ...}) = 0 30059 fstat(5, {st_mode=S_IFREG|0644, st_size=3661, ...}) = 0 30059 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb31b30d000 30059 read(5, "TZif2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\7\0\0\0\7\0\0\0\0\0\0\0\362\0\0\0\7\0\0\0\r\233&\255\240\233\326\5 \234\3170\240\235\244\303\240\236\234\235\240\237\227\32\240\240\205\272 \241v\374\240\242e\234 \243{\310\240\244N\270\240\245?\373 \246%` \247'\306 \250*, \250\353\370\240\252\0\323\240\252\325\25 \253\351\360 \254\307l \255\311\322 \256\247N \257\240y\240\260\2070 \261\222\320\240\262pL\240\263r\262\240\264P.\240\265IZ \2660\20\240\2672v\240\270\17\362\240\271\22X\240\271\357\324\240\272\351\0 \273\330\361 \274\333W \275\270\323 \276\261\376\240\277\230\265 \300\233\33 \301x\227 \302z\375 \303Xy \304Q\244\240\3058[ \306:\301 \307X\326\240\307\332\t\240\312\26&\220\312\227Y\220\313\321\36\220\314w;\220\315\261\0\220\316`X\20\317\220\342\220\320n^\220\321r\26\20\321\3732\20\322i\376 \323c)\240\324I\340 \325\36!\240\325B\375\220\325\337\340\20\326N\254 \326\376\3\240\330.\216 \330\371\225 \332\16p \332\353\354 \333\345\27\240\334\313\316 \335\304\371\240\336\264\352\240\337\256\26 \340\224\314\240\341rH\240\342kt \343R*\240\344T\220\240\3452\f\240\346=\255 \347\33) \350\24T\240\350\373\v \351\375q \352\332\355 \353\335S \354\272\317 \355\263\372\240\356\232\261 \357\201g\240\360\237} \361aI\240\362\177_ \363Jf \364_A \365!\r\240\366?# \367\0\357\240\370\37\5 \370\340\321\240\371\376\347 \372\300\263\240\373\350\3\240\374{\253\240\375\307\273p\3p\306 \4)X \5P\250 \6\t: \0070\212 \7\351\34 \t\20l \t\310\376 \n\360N \v\262\32\240\f\3200 \r\221\374\240\16\260\22 \17q\336\240\20\231.\240\21Q\300\240\22y\20\240\0231\242\240\24X\362\240\25#\353\220\0268\306\220\27\3\315\220\30\30\250\220\30\343\257\220\31\370\212\220\32\303\221\220\33\341\247\20\34\254\256\20\35\301\211\20\36\214\220\20\37\241k\20 lr\20!\201M\20\"LT\20#a/\20$,6\20%JK\220&\f\30\20'*-\220'\3654\220)\n\17\220)\325\26\220*\351\361\220+\264\370\220,\311\323\220-\224\332\220.\251\265\220/t\274\2200\211\227\2200\347$\0001]\331\0202r\264\0203=\273\0204R\226\0205\35\235\02062x\0206\375\177\0208\33\224\2208\335a\0209\373v\220:\275C\20;\333X\220<\246_\220=\273:\220>\206A\220?\233\34\220@f#\220A\2049\20BF\5\220Cd\33\20D%\347\220EC\375\20F\5\311\220G#\337\20G\356\346\20I\3\301\20I\316\310\20J\343\243\20K\256\252\20L\314\277\220M\216\214\20N\254\241\220Onn\20P\214\203\220QW\212\220Rle\220S7l\220TLG\220U\27N\220V,)\220V\3670\220X\25F\20X\327\22\220Y\365(\20Z\266\364\220[\325\n\20\\\240\21\20]\264\354\20^\177\363\20_\224\316\20`_\325\20a}\352\220b?\267\20c]\314\220d\37\231\20e=\256\220f\10\265\220g\35\220\220g\350\227\220h\375r\220i\310y\220j\335T\220k\250[\220l\306q\20m\210=\220n\246S\20oh\37\220p\2065\20qQ<\20rf\27\20s1\36\20tE\371\20u\21\0\20v/\25\220v\360\342\20x\16\367\220x\320\304\20y\356\331\220z\260\246\20{\316\273\220|\231\302\220"..., 4096) = 3661 30059 lseek(5, -2338, SEEK_CUR) = 1323 30059 read(5, "TZif2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10\0\0\0\10\0\0\0\0\0\0\0\363\0\0\0\10\0\0\0\21\377\377\377\377\32]\t\313\377\377\377\377\233&\255\240\377\377\377\377\233\326\5 \377\377\377\377\234\3170\240\377\377\377\377\235\244\303\240\377\377\377\377\236\234\235\240\377\377\377\377\237\227\32\240\377\377\377\377\240\205\272 \377\377\377\377\241v\374\240\377\377\377\377\242e\234 \377\377\377\377\243{\310\240\377\377\377\377\244N\270\240\377\377\377\377\245?\373 \377\377\377\377\246%` \377\377\377\377\247'\306 \377\377\377\377\250*, \377\377\377\377\250\353\370\240\377\377\377\377\252\0\323\240\377\377\377\377\252\325\25 \377\377\377\377\253\351\360 \377\377\377\377\254\307l \377\377\377\377\255\311\322 \377\377\377\377\256\247N \377\377\377\377\257\240y\240\377\377\377\377\260\2070 \377\377\377\377\261\222\320\240\377\377\377\377\262pL\240\377\377\377\377\263r\262\240\377\377\377\377\264P.\240\377\377\377\377\265IZ \377\377\377\377\2660\20\240\377\377\377\377\2672v\240\377\377\377\377\270\17\362\240\377\377\377\377\271\22X\240\377\377\377\377\271\357\324\240\377\377\377\377\272\351\0 \377\377\377\377\273\330\361 \377\377\377\377\274\333W \377\377\377\377\275\270\323 \377\377\377\377\276\261\376\240\377\377\377\377\277\230\265 \377\377\377\377\300\233\33 \377\377\377\377\301x\227 \377\377\377\377\302z\375 \377\377\377\377\303Xy \377\377\377\377\304Q\244\240\377\377\377\377\3058[ \377\377\377\377\306:\301 \377\377\377\377\307X\326\240\377\377\377\377\307\332\t\240\377\377\377\377\312\26&\220\377\377\377\377\312\227Y\220\377\377\377\377\313\321\36\220\377\377\377\377\314w;\220\377\377\377\377\315\261\0\220\377\377\377\377\316`X\20\377\377\377\377\317\220\342\220\377\377\377\377\320n^\220\377\377\377\377\321r\26\20\377\377\377\377\321\3732\20\377\377\377\377\322i\376 \377\377\377\377\323c)\240\377\377\377\377\324I\340 \377\377\377\377\325\36!\240\377\377\377\377\325B\375\220\377\377\377\377\325\337\340\20\377\377\377\377\326N\254 \377\377\377\377\326\376\3\240\377\377\377\377\330.\216 \377\377\377\377\330\371\225 \377\377\377\377\332\16p \377\377\377\377\332\353\354 \377\377\377\377\333\345\27\240\377\377\377\377\334\313\316 \377\377\377\377\335\304\371\240\377\377\377\377\336\264\352\240\377\377\377\377\337\256\26 \377\377\377\377\340\224\314\240\377\377\377\377\341rH\240\377\377\377\377\342kt \377\377\377\377\343R*\240\377\377\377\377\344T\220\240\377\377\377\377\3452\f\240\377\377\377\377\346=\255 \377\377\377\377\347\33) \377\377\377\377\350\24T\240\377\377\377\377\350\373\v \377\377\377\377\351\375q \377\377\377\377\352\332\355 \377\377\377\377\353\335S \377\377\377\377\354\272\317 \377\377\377\377\355\263\372\240\377\377\377\377\356\232\261 \377\377\377\377\357\201g\240\377\377\377\377\360\237} \377\377\377\377\361aI\240\377\377\377\377\362\177_ \377\377\377\377\363Jf \377\377\377\377\364_A \377\377\377\377\365!\r\240\377\377\377\377\366?# \377\377\377\377\367\0\357\240\377\377\377\377\370\37\5 \377\377\377\377\370\340\321\240\377\377\377\377\371\376\347 \377\377\377\377\372\300\263\240\377\377\377\377\373\350\3\240\377\377\377\377\374{\253\240\377\377\377\377\375\307\273p\0\0\0\0\3p\306 \0\0\0\0\4)X \0\0\0\0\5P\250 \0\0\0\0\6\t: \0\0\0\0\0070\212 \0\0\0\0\7\351\34 \0\0\0\0\t\20l \0\0\0\0\t\310\376 \0\0\0\0\n\360N \0\0\0\0\v\262\32\240\0\0\0\0"..., 4096) = 2338 30059 close(5) = 0 30059 munmap(0x7fb31b30d000, 4096) = 0 30059 getcwd("/nfs/users/nfs_j/jkb/io_lib/trunk/tests/data", 4096) = 45 30059 mprotect(0x7fb3143fb000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 60421113, SEEK_SET) = 60421113 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\311\343\t\237D\37\0\0D\37\0\0\36\0\0\0", 30) = 30 30059 lseek(4, 60421173, SEEK_SET) = 60421173 30059 read(4, "\312\376\272\276\0\0\0003\1J\10\0\t\10\0\30\10\0 \10\0%\10\0&\10\0J\10\0~\10\0\206\1\0\0\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4(I)C\1\0\4(I)V\1\0\25(Ljava/lang/Object;)I\1\0\25(Ljava/lang/Object;)V\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)I\1\0\25(Ljava/lang/String;)V\1\0\25(Ljava/lang/String;)Z\1\0'(Ljava/lang/String;Ljava/lang/String;)V\1\0\30(Ljava/lang/Throwable;)V\1\0\0031.4\1\0\10\1\0\6\1\0\4Code\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\22Ljava/lang/Object;\1\0\22Ljava/lang/String;\1\0\21Null charset name\1\0\7REPLACE\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\5UTF-8\1\0\2X-\1\0\1Z\1\0\23[Ljava/lang/Object;\1\0\23[Ljava/lang/String;\1\0\naccess$000\1\0\naccess$102\1\0\naccess$200\1\0\naccess$300\1\0\3add\1\0\10aliasSet\1\0\7aliases\1\0\natBugLevel\1\0\21availableCharsets\1\0\10bugLevel\1\0\5cache\1\0\6cache1\1\0\6cache2\1\0\tcanEncode\1\0\6charAt\1\0\16charsetForName\1\0\tcheckName\1\0\tcompareTo\1\0\23compareToIgnoreCase\1\0\10contains\1\0\vcontainsKey\1\0\6decode\1\0\ndecoderFor\1\0\16defaultCharset\1\0\vdisplayName\1\0\fdoPrivileged\1\0\6encode\1\0\nencoderFor\1\0\6equals\1\0\20extendedProvider\1\0\24extendedProviderLock\1\0\26extendedProviderProbed\1\0\rfile.encoding\1\0\7forName\1\0\4ga"..., 8004) = 8004 30059 mprotect(0x7fb3143fc000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 60414501, SEEK_SET) = 60414501 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B\303\215B\233\225\31\0\0\225\31\0\0!\0\0\0", 30) = 30 30059 lseek(4, 60414564, SEEK_SET) = 60414564 30059 read(4, "\312\376\272\276\0\0\0003\0029\10\0\324\10\0\325\10\0\326\10\0\327\10\0\330\10\0\331\10\0\332\10\0\333\10\0\334\10\0\335\10\0\336\10\0\337\10\0\340\10\0\341\10\0\342\10\0\343\10\0\344\10\0\345\10\0\346\10\0\347\10\0\350\10\0\351\10\0\352\10\0\353\10\0\354\10\0\355\10\0\356\10\0\361\10\0\362\10\0\363\10\0\365\10\0\366\10\0\367\10\0\370\10\0\371\10\0\372\10\0\373\10\0\374\10\0\375\10\0\376\10\0\377\10\1\0\10\1\1\10\1\2\10\1\3\10\1\4\10\1\5\10\1\6\10\1\7\10\1\10\10\1\t\10\1\n\10\1\v\10\1\f\10\1\r\10\1\16\10\1\17\10\1\20\10\1\21\10\1\22\10\1\23\10\1\24\10\1\25\10\1\26\10\1\30\10\1\31\10\1\32\10\1\34\10\1\36\10\1\37\10\1 \10\1!\10\1\"\10\1#\10\1$\10\1%\10\1&\10\1'\10\1(\10\1)\10\1*\10\1+\10\1,\10\1-\10\1.\10\1/\10\0010\10\0011\10\1Y\10\1Z\10\1[\10\1\\\10\1]\10\1^\10\1_\10\1`\10\1a\10\1b\10\1c\10\1d\10\1e\10\1f\10\1g\10\1h\10\1i\10\1j\10\1k\10\1l\10\1m\10\1n\10\1o\10\1p\10\1q\10\1r\10\1s\10\1t\10\1u\10\1v\10\1w\10\1x\10\1y\10\1z\10\1{\10\1|\10\1}\10\1~\10\1\177\10\1\200\10\1\201\10\1\202\10\1\203\10\1\204\10\1\205\10\1\206\10\1\207\10\1\210\10\1\211\10\1\212\10\1\213\10\1\214\10\1\215\10\1\216\10\1\217\10\1\220\10\1\221\10\1\222\10\1\223\10\1\224\10\1\225\10\1\226\10\1\227\10\1\230\10\1\231\10\1\232\10\1\233\10\1\234\10\1\235\10\1\236\10\1\237\10\1\240\10\1\241\10\1\242\10\1\243\10\1\244\10\1\245\10\1\246\10\1\247\10\1\250\10\1\251\10\1\252\10\1\253\10\1\254\10\1\255\10\1\256\10\1\257\10\1\260\10\1\261\10\1\262\10\1\263\10\1\264\10\1\265\10\1\266\10\1\267\10\1\270\10\1\271\10\1\272\10\1\273\10\1\274\10\1\275\10\1\276\10\1\277\10\1\300\10\1\302\10\1\303\10\1\304\10\1\305\10\1\306\10\1\307\10\1\310\10\1\311\10\1\312\10\1\313\10\1\314\10\1\315\10\1\324\10\1\325\10\1\326\10\1\327\10\1\330\10\1\331\1\0\3()V\1\0\003437\1\0\003646\1\0\003737\1\0\003775\1\0\003813\1\0\003819\1\0\003850\1\0\003852\1\0\003855\1\0\003857\1\0\003858\1\0\003862\1\0\003866\1\0\003874\1\0\0068859_1\1\0\0078859_13\1\0\0078859_15\1\0\0068859_2\1\0\0068859_4\1\0\0068859_5\1\0\0068859_7\1\0\0068859_9\1\0\003912\1\0\003914\1\0\003915\1\0\003920\1\0\003923\1\0\10\1\0\6\1\0\16ANSI_X3.4-1968\1\0\16ANSI_X3.4-1986\1\0\5ASCII\1\0\4Code\1\0\10ECMA-118\1\0\10ELOT_928\1\0\7IBM-819\1\0\7IBM-923\1\0\6IBM367\1\0\6IBM819\1\0\6IBM923\1\0\17ISO-10646-UCS-2\1\0\vISO-885"..., 6549) = 6549 30059 mprotect(0x7fb3143fd000, 8192, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb3143ff000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb314400000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 60411152, SEEK_SET) = 60411152 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B\311\227Y\225\323\f\0\0\323\f\0\0$\0\0\0", 30) = 30 30059 lseek(4, 60411218, SEEK_SET) = 60411218 30059 read(4, "\312\376\272\276\0\0\0003\0\207\10\0\n\10\0\23\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\4(I)C\1\0\25(Ljava/lang/Object;)Z\1\0&(Ljava/lang/String;)Ljava/lang/String;\1\0\5([C)V\1\0\1.\1\0\6\1\0\4Code\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\22Ljava/lang/String;\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\10US_ASCII\1\0\2[C\1\0\naccess$000\1\0\naccess$100\1\0\10aliasMap\1\0\6append\1\0\5cache\1\0\fcanonicalize\1\0\6charAt\1\0\16charsetForName\1\0\10charsets\1\0\10classMap\1\0\6equals\1\0\7forName\1\0\3get\1\0\10getClass\1\0\16getClassLoader\1\0\17java/lang/Class\1\0 java/lang/ClassNotFoundException\1\0 java/lang/IllegalAccessException\1\0 java/lang/InstantiationException\1\0\20java/lang/Object\1\0\20java/lang/String\1\0\27java/lang/StringBuilder\1\0\23java/lang/Throwable\1\0\30java/nio/charset/Charset\1\0$java/nio/charset/spi/CharsetProvider\1\0\rjava/util/Map\1\0\6length\1\0\6lookup\1\0\vnewInstance\1\0\rpackagePrefix\1\0\3put\1\0\36sun/nio/cs/FastCharsetProvider\1\0 sun/nio/cs/FastCharsetProvider$1\1\0\23sun/nio/cs/US_ASCII\1\0\7toLower\1\0\10toString\7\0\24\7\0$\7\0%\7\0&\7\0'\7\0(\7\0)\7\0*\7\0+\7\0,\7\0-\7\0.\7\0004\7\0005\7\0006\1\0\17Ljava/util/Map;\1\0005Ljava/util/Map\1\0\4Code\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\16charsetForName\1\0\17charsetProvider\1\0\10charsets\1\0\17checkPermission\1\0\22getSecurityManager\1\0\20java/lang/Object\1\0\33java/lang/RuntimePermission\1\0\31java/lang/SecurityManager\1\0\20java/lang/System\1\0$java/nio/charset/spi/CharsetProvider\7\0\17\7\0\20\7\0\21\7\0\22\7\0\23\1\0\35()Ljava/lang/SecurityManager;\1\0\35(Ljava/security/Permission;)V\1\0\26()Ljava/util/Iterator;\1\0.(Ljava/lang/String;)Ljava/nio/charset/Charset;\1\0002()Ljava/util/Iterator;\f\0\4\0\2\f\0\16\0\31\f\0\4\0\3\f\0\r\0\32\n\0\24\0\36\n\0\25\0 \n\0\26\0!\n\0\27\0\37\1\0\24CharsetProvider.java\4!\0\30\0\24\0\0\0\0\0\3\0\4\0\4\0\2\0\1\0\5\0\0\0W\0\4\0\2\0\0\0\32*\267\0\"\270\0%L+\306\0\20+\273\0\25Y\22\1\267\0#\266\0$\261\0\0\0\2\0\t\0\0\0\17\0\1\377\0\31\0\2\7\0\30\7\0\26\0\0\0\6\0\0\0\26\0\5\0\0\0Q\0\4\0R\0\10\0S\0\f\0T\0\31\0U\4\1\0\f\0\33\0\1\0\7\0\0\0\2\0\35\4\1\0\n\0\34\0\0\0\1\0\10\0\0\0\2\0&", 754) = 754 30059 mprotect(0x7fb314401000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 60401483, SEEK_SET) = 60401483 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305BW\16xxD\"\0\0D\"\0\0)\0\0\0", 30) = 30 30059 lseek(4, 60401554, SEEK_SET) = 60401554 30059 read(4, "\312\376\272\276\0\0\0003\2\3\10\0\361\10\0\362\10\0\363\10\0\364\10\0\365\10\0\366\10\0\367\10\0\370\10\0\371\10\0\372\10\0\373\10\0\374\10\0\375\10\0\376\10\0\377\10\1\0\10\1\1\10\1\2\10\1\3\10\1\4\10\1\5\10\1\6\10\1\7\10\1\10\10\1\t\10\1\n\10\1\v\10\1\30\10\1\31\10\1\32\10\1\33\10\1\34\10\1\35\10\1\36\10\1\37\10\1 \10\1!\10\1\"\10\1#\10\1$\10\1%\10\1&\10\1'\10\1(\10\1)\10\1*\10\1+\10\1,\10\1-\10\1.\10\1/\10\0010\10\0011\10\0012\10\0013\10\0014\10\0015\10\0016\10\0017\10\0018\10\0019\10\1:\10\1;\10\1<\10\1=\10\1>\10\1?\10\1@\10\1A\10\1B\10\1C\10\1D\10\1E\10\1F\10\1G\10\1H\10\1I\10\1J\10\1K\10\1L\10\1M\10\1N\10\1O\10\1P\10\1Q\10\1R\10\1S\10\1T\10\1U\10\1V\10\1W\10\1X\10\1Y\10\1Z\10\1[\10\1\\\10\1]\10\1^\10\1_\10\1`\10\1a\10\1b\10\1c\10\1d\10\1e\10\1f\10\1g\10\1h\10\1i\10\1j\10\1k\10\1l\10\1m\10\1n\10\1o\10\1p\10\1q\10\1r\10\1s\10\1t\10\1u\10\1v\10\1w\10\1x\10\1y\10\1{\10\1|\10\1}\10\1~\10\1\177\10\1\200\10\1\201\10\1\202\10\1\203\10\1\204\10\1\205\10\1\206\10\1\207\10\1\210\10\1\211\10\1\212\10\1\213\10\1\214\10\1\215\10\1\216\10\1\217\10\1\220\10\1\221\10\1\222\10\1\223\10\1\224\10\1\225\10\1\226\10\1\227\10\1\230\10\1\231\10\1\232\10\1\233\10\1\234\10\1\235\10\1\236\10\1\237\10\1\240\10\1\241\10\1\242\10\1\243\10\1\244\10\1\245\10\1\246\10\1\247\10\1\250\10\1\251\10\1\252\10\1\253\10\1\254\10\1\255\10\1\257\10\1\260\10\1\261\10\1\262\10\1\263\10\1\264\10\1\265\10\1\266\10\1\267\10\1\270\10\1\271\10\1\272\10\1\273\10\1\274\10\1\275\10\1\276\10\1\277\10\1\304\10\1\305\10\1\306\10\1\307\10\1\310\10\1\311\10\1\312\10\1\313\10\1\314\10\1\315\10\1\316\10\1\317\10\1\320\10\1\321\10\1\322\10\1\323\10\1\324\10\1\325\10\1\326\10\1\327\10\1\330\10\1\331\10\1\332\10\1\333\10\1\334\10\1\335\10\1\336\10\1\337\10\1\340\10\1\341\10\1\342\10\1\343\10\1\344\10\1\345\10\1\346\10\1\347\10\1\350\10\1\351\10\1\352\10\1\353\10\1\354\10\1\355\10\1\356\10\1\357\10\1\360\1\0\3()V\1\0\7(IIII)V\1\0\003437\1\0\003646\1\0\003737\1\0\003775\1\0\003813\1\0\003819\1\0\003850\1\0\003852\1\0\003855\1\0\003857\1\0\003858\1\0\003862\1\0\003866\1\0\003874\1\0\0068859_1\1\0\0078859_13\1\0\0078859_15\1\0\0068859_2\1\0\0068859_4\1\0\0068859_5\1\0\0068859_7\1\0\0068859_9\1\0\003912\1\0\003914\1\0\003915\1\0\003920\1\0\003923\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\1I\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\4"..., 8772) = 8772 30059 mprotect(0x7fb314402000, 8192, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 60399212, SEEK_SET) = 60399212 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B\231\245\10\340\246\10\0\0\246\10\0\0\33\0\0\0", 30) = 30 30059 lseek(4, 60399269, SEEK_SET) = 60399269 30059 read(4, "\312\376\272\276\0\0\0003\0]\1\0\3()I\1\0\3()V\1\0\7(IIII)V\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)V\1\0\6\1\0\4Code\1\0\5Entry\1\0\1I\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\23[Ljava/lang/Object;\1\0\naccess$000\1\0\naccess$100\1\0\naccess$200\1\0\10entrySet\1\0\6equals\1\0\3get\1\0\10hashCode\1\0\2ht\1\0\4init\1\0\20java/lang/Object\1\0\20java/lang/String\1\0'java/lang/UnsupportedOperationException\1\0\25java/util/AbstractMap\1\0\rjava/util/Map\1\0\23java/util/Map$Entry\1\0\6keySet\1\0\4mask\1\0\3put\1\0\4rows\1\0\5shift\1\0\4size\1\0\25sun/util/PreHashedMap\1\0\27sun/util/PreHashedMap$1\1\0\27sun/util/PreHashedMap$2\1\0\3toV\7\0\17\7\0\31\7\0\32\7\0\33\7\0\34\7\0\35\7\0\36\7\0%\7\0&\7\0'\1\0DLjava/util/AbstractMap;\1\0\27(Ljava/lang/Object;)TV;\1\0\26([Ljava/lang/Object;)V\1\0\32(Ljava/lang/String;TV;)TV;\1\0\21()Ljava/util/Set;\1\0\32(Lsun/util/PreHashedMap;)I\1\0\32(Lsun/util/PreHashedMap;)V\1\0&(Ljava/lang/Object;)Ljava/lang/Object;\1\0,(Lsun/util/PreHashedMap;)[Ljava/lang/Object;\1\0%()Ljava/util/Set;\1\0008(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/O"..., 2214) = 2214 30059 mprotect(0x7fb314404000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb314405000, 8192, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 60396553, SEEK_SET) = 60396553 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B@kE&\34\n\0\0\34\n\0\0)\0\0\0", 30) = 30 30059 lseek(4, 60396624, SEEK_SET) = 60396624 30059 read(4, "\312\376\272\276\0\0\0003\0\277\10\0S\10\0T\10\0U\10\0V\10\0W\10\0X\10\0Y\10\0Z\10\0[\10\0\\\10\0]\10\0^\10\0_\10\0`\10\0a\10\0b\10\0c\10\0d\10\0e\10\0g\10\0h\10\0k\10\0l\10\0m\10\0n\10\0o\10\0p\10\0v\10\0w\10\0x\10\0y\10\0z\10\0{\10\0|\10\0}\10\0~\10\0\177\10\0\200\10\0\201\10\0\202\10\0\203\10\0\204\10\0\205\10\0\206\10\0\207\10\0\210\10\0\211\10\0\213\10\0\214\10\0\215\10\0\216\10\0\217\10\0\220\10\0\221\10\0\222\10\0\224\10\0\225\10\0\232\10\0\233\10\0\234\10\0\235\10\0\236\10\0\237\10\0\240\10\0\241\10\0\242\10\0\243\10\0\244\10\0\245\10\0\246\10\0\247\10\0\250\10\0\251\10\0\252\10\0\253\10\0\254\1\0\3()V\1\0\7(IIII)V\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\1I\1\0\6IBM437\1\0\6IBM737\1\0\6IBM775\1\0\6IBM850\1\0\6IBM852\1\0\6IBM855\1\0\6IBM857\1\0\6IBM858\1\0\6IBM862\1\0\6IBM866\1\0\6IBM874\1\0\nISO_8859_1\1\0\vISO_8859_13\1\0\vISO_8859_15\1\0\nISO_8859_2\1\0\nISO_8859_4\1\0\nISO_8859_5\1\0\nISO_8859_7\1\0\nISO_8859_9\1\0\fInnerClasses\1\0\6KOI8_R\1\0\6KOI8_U\1\0\17LineNumberTable\1\0\4MASK\1\0\6MS1250\1\0\6MS1251\1\0\6MS1252\1\0\6MS1253\1\0\6MS1254\1\0\6MS1257\1\0\4ROWS\1\0\5SHIFT\1\0\4SIZE\1\0\tSignature\1\0\nSourceFile\1\0\10US_ASCII\1\0\6UTF_16\1\0\10UTF_16BE\1\0\10UTF_16LE\1\0\fUTF_16LE_BOM\1\0\6UTF_32\1\0\10UTF_32BE\1\0\fUTF_32BE_BOM\1\0\10UTF_32LE\1\0\fUTF_32LE_BOM\1\0\5UTF_8\1\0\10ibm00858\1\0\6ibm437\1\0\6ibm775\1\0\6ibm850\1\0\6ibm852\1\0\6ibm855\1\0\6ibm857\1\0\6ibm862\1\0\6ibm866\1\0\4init\1\0\niso-8859-1\1\0\viso-8859-13\1\0\viso-8859-15\1\0\niso-8859-2\1\0\niso-8859-4\1\0\niso-8859-5\1\0\niso-8859-7\1\0\niso-8859-9\1\0\20java/lang/Object\1\0\6ko"..., 2588) = 2588 30059 lseek(4, 60394447, SEEK_SET) = 60394447 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B\221\263\370k\365\7\0\0\365\7\0\0'\0\0\0", 30) = 30 30059 lseek(4, 60394516, SEEK_SET) = 60394516 30059 read(4, "\312\376\272\276\0\0\0003\0s\10\0005\10\0006\10\0007\10\0008\10\0009\10\0:\10\0;\10\0<\10\0=\10\0?\10\0@\10\0A\10\0B\10\0C\10\0D\10\0E\10\0F\10\0H\10\0I\10\0N\10\0O\10\0P\10\0Q\10\0R\10\0S\10\0T\10\0U\10\0V\10\0W\10\0X\10\0Y\10\0Z\10\0[\10\0\\\10\0]\10\0^\10\0_\10\0`\1\0\3()V\1\0\7(IIII)V\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\1I\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\4MASK\1\0\4ROWS\1\0\5SHIFT\1\0\4SIZE\1\0\tSignature\1\0\nSourceFile\1\0\10ibm00858\1\0\6ibm437\1\0\6ibm775\1\0\6ibm850\1\0\6ibm852\1\0\6ibm855\1\0\6ibm857\1\0\6ibm862\1\0\6ibm866\1\0\4init\1\0\niso-8859-1\1\0\viso-8859-13\1\0\viso-8859-15\1\0\niso-8859-2\1\0\niso-8859-4\1\0\niso-8859-5\1\0\niso-8859-7\1\0\niso-8859-9\1\0\20java/lang/Object\1\0\6koi8-r\1\0\6koi8-u\1\0\33sun/nio/cs/StandardCharsets\1\0\35sun/nio/cs/StandardCharsets$1\1\0!sun/nio/cs/StandardCharsets$Cache\1\0\25sun/util/PreHashedMap\1\0\10us-ascii\1\0\6utf-16\1\0\10utf-16be\1\0\10utf-16le\1\0\6utf-32\1\0\10utf-32be\1\0\10utf-32le\1\0\5utf-8\1\0\fwindows-1250\1\0\fwindows-1251\1\0\fwindows-1252\1\0\fwindows-1253\1\0\fwindows-1254\1\0\fwindows-1257\1\0\10x-ibm737\1\0\10x-ibm874\1\0\16x-utf-16le-bom\1\0\16x-utf-32be-bom\1\0\16x-utf-32le-bom\3\0\0\0\1\3\0\0\0\37\3\0\0\0 \3\0\0\0&\7\0G\7\0J\7\0K\7\0L\7\0M\1\0003Lsun/util/PreHashedMap;\1\0\26([Ljava/lang/Object;)V\1\0\"(Lsun/nio/cs/Standard"..., 2037) = 2037 30059 lseek(4, 60391563, SEEK_SET) = 60391563 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B?]\272\"\v\v\0\0\v\v\0\0\33\0\0\0", 30) = 30 30059 lseek(4, 60391620, SEEK_SET) = 60391620 30059 read(4, "\312\376\272\276\0\0\0003\0o\3a\310\206G\1\0\3()I\1\0\5()TT;\1\0\3()V\1\0\4(I)I\1\0\25(Ljava/lang/Object;)V\1\0\10(TT;)TT;\1\0\6(TT;)V\1\0\10\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\5Entry\1\0\16HASH_INCREMENT\1\0\1I\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\22Ljava/lang/Object;\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\naccess$000\1\0\naccess$100\1\0\naccess$200\1\0\naccess$400\1\0\nchildValue\1\0\22createInheritedMap\1\0\tcreateMap\1\0\rcurrentThread\1\0\3get\1\0\tgetAndAdd\1\0\6getMap\1\0\finitialValue\1\0\20java/lang/Object\1\0\20java/lang/Thread\1\0\25java/lang/ThreadLocal\1\0\27java/lang/ThreadLocal$1\1\0$java/lang/ThreadLocal$ThreadLocalMap\1\0*java/lang/ThreadLocal$ThreadLocalMap$Entry\1\0'java/lang/UnsupportedOperationException\1\0)java/util/concurrent/atomic/AtomicInteger\1\0\fnextHashCode\1\0\6remove\1\0\3set\1\0\17setInitialValue\1\0\23threadLocalHashCode\1\0\fthreadLocals\1\0\5value\7\0\"\7\0#\7\0$\7\0%\7\0&\7\0'\7\0(\7\0)\1\0&Ljava/lang/ThreadLocal$ThreadLocalMap;\1\0+Ljava/util/concurrent/atomic/AtomicInteger;\1\0(Ljava/lang/Object;\1\0\24()Ljava/lang/Object;\1\0\24()Ljava/lang/Thread;\1\0\30(Ljava/lang/Thread;TT;)V\1\0\32(Ljava/lan"..., 2827) = 2827 30059 lseek(4, 60389001, SEEK_SET) = 60389001 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305BW\34J\247\265\t\0\0\265\t\0\0/\0\0\0", 30) = 30 30059 lseek(4, 60389078, SEEK_SET) = 60389078 30059 read(4, "\312\376\272\276\0\0\0003\0c\10\0005\1\0\3()D\1\0\3()F\1\0\3()I\1\0\3()J\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\4(I)I\1\0\25(I)Ljava/lang/String;\1\0\4(I)V\1\0\5(II)Z\1\0\30(Ljava/lang/Throwable;)V\1\0\10\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\1I\1\0\1J\1\0\17LineNumberTable\1\0\nSourceFile\1\0\rStackMapTable\1\0\taddAndGet\1\0\rcompareAndSet\1\0\21compareAndSwapInt\1\0\17decrementAndGet\1\0\vdoubleValue\1\0\nfloatValue\1\0\3get\1\0\tgetAndAdd\1\0\17getAndDecrement\1\0\17getAndIncrement\1\0\tgetAndSet\1\0\20getDeclaredField\1\0\tgetUnsafe\1\0\17incrementAndGet\1\0\10intValue\1\0\24java/io/Serializable\1\0\17java/lang/Class\1\0\17java/lang/Error\1\0\23java/lang/Exception\1\0\21java/lang/Integer\1\0\20java/lang/Number\1\0)java/util/concurrent/atomic/AtomicInteger\1\0\7lazySet\1\0\tlongValue\1\0\21objectFieldOffset\1\0\rputOrderedInt\1\0\20serialVersionUID\1\0\3set\1\0\17sun/misc/Unsafe\1\0\10toString\1\0\6unsafe\1\0\5value\1\0\vvalueOffset\1\0\21weakCompareAndSet\5V?^\314\214l\26\212\7\0%\7\0&\7\0'\7\0(\7\0)\7\0*\7\0+\7\0002\1\0\21Lsun/misc/Unsafe;\1\0\27(Ljava/lang/Object;JI)V\1\0\30(Ljava/lang/Object;JII)Z\1\0\34(Ljava/lang/reflect/Field;)J\1\0\23()Lsun/misc/Unsafe;\1\0-(Ljava/lang/String;)Ljava/lang/reflect/Field;\f\0005\0\21\f\0006\0\22"..., 2485) = 2485 30059 lseek(4, 60306463, SEEK_SET) = 60306463 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\302\351\25\362PS\0\0PS\0\0\26\0\0\0", 30) = 30 30059 lseek(4, 60306515, SEEK_SET) = 60306515 30059 read(4, "\312\376\272\276\0\0\0003\1\335\3\177\377\377\377\10\0\n\10\0g\10\0h\10\0i\10\0w\10\0\201\10\0\230\10\0\267\1\0\3 > \1\0\23$assertionsDisabled\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4(D)J\1\0\4(F)I\1\0\4(I)V\1\0\5(II)I\1\0\6(III)V\1\0\25(Ljava/lang/Object;)I\1\0&(Ljava/lang/Object;)Ljava/lang/String;\1\0\25(Ljava/lang/Object;)Z\1\0'(Ljava/lang/Object;Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)V\1\0\5([B)I\1\0\5([B)V\1\0\6([BB)I\1\0\6([BB)V\1\0\7([BI)[B\1\0\7([BII)V\1\0\10([BII)[B\1\0\10([BIIB)I\1\0\10([BIIB)V\1\0\7([B[B)Z\1\0\5([C)I\1\0\5([C)V\1\0\6([CC)I\1\0\6([CC)V\1\0\7([CI)[C\1\0\7([CII)V\1\0\10([CII)[C\1\0\10([CIIC)I\1\0\10([CIIC)V\1\0\7([C[C)Z\1\0\5([D)I\1\0\5([D)V\1\0\6([DD)I\1\0\6([DD)V\1\0\7([DI)[D\1\0\7([DII)V\1\0\10([DII)[D\1\0\10([DIID)I\1\0\10([DIID)V\1\0\7([D[D)Z\1\0\5([F)I\1\0\5([F)V\1\0\6([FF)I\1\0\6([FF)V\1\0\7([FI)[F\1\0\7([FII)V\1\0\10([FII)[F\1\0\10([FIIF)I\1\0\10([FIIF)V\1\0\7([F[F)Z\1\0\5([I)I\1\0\5([I)V\1\0\6([II)I\1\0\6([II)V\1\0\7([II)[I\1\0\7([III)V\1\0\10([III)[I\1\0\10([IIII)I\1\0\10([IIII)V\1\0\7([I[I)Z\1\0\5([J)I\1\0\5([J)V\1\0\7([JI)[J\1\0\7([JII)V\1\0\10([JII)[J\1\0\10([JIIJ)I\1\0\10([JIIJ)V\1\0\6([JJ)I\1\0\6([JJ)V\1\0\7([J[J)Z\1\0)([Ljava/lang/Object;I)[Ljava/lang/Object;\1\0\5([S)I\1\0\5([S)V\1\0\7([SI)[S\1\0\7([SII)V\1\0\10([SII)[S\1\0\10([SIIS)I\1\0\10([SIIS)V\1\0\6("..., 21328) = 21328 30059 mprotect(0x7fb314407000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb314408000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb314409000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 60300819, SEEK_SET) = 60300819 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B\357\300K\362\360\3\0\0\360\3\0\0\31\0\0\0", 30) = 30 30059 lseek(4, 60300874, SEEK_SET) = 60300874 30059 read(4, "\312\376\272\276\0\0\0003\0/\10\0\6\10\0\v\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\6\1\0\5ASCII\1\0\4Code\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\nSourceFile\1\0\10US-ASCII\1\0\23[Ljava/lang/String;\1\0\20aliases_US_ASCII\1\0\10contains\1\0\16historicalName\1\0\30java/nio/charset/Charset\1\0\nnewDecoder\1\0\nnewEncoder\1\0#sun/nio/cs/HistoricallyNamedCharset\1\0\33sun/nio/cs/StandardCharsets\1\0\23sun/nio/cs/US_ASCII\1\0\25sun/nio/cs/US_ASCII$1\1\0\33sun/nio/cs/US_ASCII$Decoder\1\0\33sun/nio/cs/US_ASCII$Encoder\7\0\20\7\0\23\7\0\24\7\0\25\7\0\26\7\0\27\7\0\30\1\0\35(Ljava/nio/charset/Charset;)Z\1\0#()Ljava/nio/charset/CharsetDecoder;\1\0#()Ljava/nio/charset/CharsetEncoder;\1\0((Ljava/lang/String;[Ljava/lang/String;)V\1\0004(Ljava/nio/charset/Charset;Lsun/nio/cs/US_ASCII$1;)V\f\0\r\0\f\f\0\5\0#\f\0\5\0$\t\0\33\0%\n\0\31\0&\n\0\36\0'\n\0\37\0'\1\0\7Decoder\1\0\7Encoder\1\0\rUS_ASCII.java\0!\0\34\0\31\0\1\0\32\0\0\0\5\0\1\0\5\0\4\0\1\0\7\0\0\0&\0\3\0\1\0\0\0\n*\22\2\262\0(\267\0)\261\0\0\0\1\0\t\0\0\0\n\0\2\0\0\0*\0\t\0+\0\1\0\17\0\3\0\1\0\7\0\0\0\33\0\1\0\1\0\0\0\3\22\1\260\0\0\0\1\0\t\0\0\0\6\0\1\0\0\0.\0\1\0\16\0 \0\1\0\7\0\0\0\35\0\1\0\2\0\0\0\5+\301\0\34\254\0\0\0\1\0\t\0\0\0\6\0\1\0\0\0002\0\1\0\21\0!\0\1\0\7\0\0\0\"\0\4\0\1\0\0\0\n\273\0\36Y*\1\267\0*\260\0\0\0\1\0\t\0\0\0\6\0\1\0\0\0006\0\1\0\22\0\"\0\1\0\7\0\0\0\"\0\4\0\1\0\0\0\n\273\0\37Y*\1\267\0+\260\0\0\0\1\0\t\0\0\0\6\0\1\0\0\0:\0\2\0\n\0\0\0\2\0.\0\10\0\0\0\32\0\3\0\35\0\34\0\0\20\10\0\36\0\34\0,\0\n"..., 1008) = 1008 30059 lseek(4, 60300560, SEEK_SET) = 60300560 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B\0\3633s\274\0\0\0\274\0\0\0)\0\0\0", 30) = 30 30059 lseek(4, 60300631, SEEK_SET) = 60300631 30059 read(4, "\312\376\272\276\0\0\0003\0\t\1\0\24()Ljava/lang/String;\1\0\nSourceFile\1\0\16historicalName\1\0\20java/lang/Object\1\0#sun/nio/cs/HistoricallyNamedCharset\7\0\4\7\0\5\1\0\35HistoricallyNamedCharset.java\6\1\0\7\0\6\0\0\0\0\0\1\4\1\0\3\0\1\0\0\0\1\0\2\0\0\0\2\0\10", 188) = 188 30059 lseek(4, 60289004, SEEK_SET) = 60289004 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\257\206\361(\371\32\0\0\371\32\0\0\34\0\0\0", 30) = 30 30059 lseek(4, 60289062, SEEK_SET) = 60289062 30059 read(4, "\312\376\272\276\0\0\0003\0017\10\0\5\10\0\36\10\0\37\10\0&\1\0( not supported, using ISO-8859-1 instead\1\0\3()F\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4(I)V\1\0\5(IF)I\1\0\25(Ljava/lang/Object;)V\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)V\1\0\25(Ljava/lang/String;)Z\1\0\30(Ljava/lang/Throwable;)V\1\0\7([BI)[B\1\0\10([BII)[B\1\0\10([BII)[C\1\0\t([BII[C)I\1\0\7([CI)[C\1\0\10([CII)[B\1\0\10([CII)[C\1\0\t([CII[B)I\1\0\10\1\0\6\1\0\4Code\1\0\nExceptions\1\0\nISO-8859-1\1\0\"ISO-8859-1 charset not available: \1\0\fInnerClasses\1\0\17LineNumberTable\1\0\7REPLACE\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\31WARNING: Default charset \1\0\1Z\1\0\2[B\1\0\2[C\1\0\naccess$000\1\0\naccess$100\1\0\naccess$300\1\0\6append\1\0\vcharsetName\1\0\6copyOf\1\0\vcopyOfRange\1\0\6decode\1\0\7decoder\1\0\16defaultCharset\1\0\5deref\1\0\6encode\1\0\7encoder\1\0\6equals\1\0\3err\1\0\4exit\1\0\5flush\1\0\7forName\1\0\3get\1\0\10getClass\1\0\17getClassLoader0\1\0\22getSecurityManager\1\0\visSupported\1\0\visUnderflow\1\0$java/io/UnsupportedEncodingException\1\0\17java/lang/Class\1\0\17java/lang/Error\1\0\20java/lang/Object\1\0\20java/lang/String\1\0\27java/lang/StringBuilder\1\0\26java/lang/StringCoding\1\0\30java/la"..., 6905) = 6905 30059 lseek(4, 60284090, SEEK_SET) = 60284090 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\24\r\353M\352\22\0\0\352\22\0\0*\0\0\0", 30) = 30 30059 lseek(4, 60284162, SEEK_SET) = 60284162 30059 read(4, "\312\376\272\276\0\0\0003\0u\1\0\3()V\1\0\4(I)I\1\0\4(I)V\1\0\5(II)I\1\0\5(II)Z\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\5Entry\1\0\1I\1\0\20INITIAL_CAPACITY\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\22Ljava/lang/Object;\1\0\nSourceFile\1\0\rStackMapTable\1\0-[Ljava/lang/ThreadLocal$ThreadLocalMap$Entry;\1\0\naccess$000\1\0\naccess$100\1\0\naccess$200\1\0\naccess$400\1\0\nchildValue\1\0\16cleanSomeSlots\1\0\5clear\1\0\23expungeStaleEntries\1\0\21expungeStaleEntry\1\0\3get\1\0\10getEntry\1\0\21getEntryAfterMiss\1\0\20java/lang/Object\1\0\25java/lang/ThreadLocal\1\0\27java/lang/ThreadLocal$1\1\0$java/lang/ThreadLocal$ThreadLocalMap\1\0*java/lang/ThreadLocal$ThreadLocalMap$Entry\1\0\tnextIndex\1\0\tprevIndex\1\0\6rehash\1\0\6remove\1\0\21replaceStaleEntry\1\0\6resize\1\0\3set\1\0\fsetThreshold\1\0\4size\1\0\5table\1\0\tthreshold\1\0\5value\3\0\0\0\20\7\0\21\7\0\36\7\0\37\7\0 \7\0!\7\0\"\1\0\24()Ljava/lang/Object;\1\0\32(Ljava/lang/ThreadLocal;)I\1\0\32(Ljava/lang/ThreadLocal;)V\1\0)(Ljava/lang/ThreadLocal$ThreadLocalMap;)V\1\0&(Ljava/lang/Object;)Ljava/lang/Object;\1\0,(Ljava/lang/ThreadLocal;Ljava/lang/Object;)V\1\0-(Ljava/lang/ThreadLocal;Ljava/lang/Object;I)V\1\0@(Ljava/lang/ThreadLocal$"..., 4842) = 4842 30059 mprotect(0x7fb31440a000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 60283438, SEEK_SET) = 60283438 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305Bu\260F\345>\2\0\0>\2\0\0000\0\0\0", 30) = 30 30059 lseek(4, 60283516, SEEK_SET) = 60283516 30059 read(4, "\312\376\272\276\0\0\0003\0\33\1\0\25(Ljava/lang/Object;)V\1\0\6\1\0\4Code\1\0\5Entry\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\22Ljava/lang/Object;\1\0\tSignature\1\0\nSourceFile\1\0\25java/lang/ThreadLocal\1\0$java/lang/ThreadLocal$ThreadLocalMap\1\0*java/lang/ThreadLocal$ThreadLocalMap$Entry\1\0\33java/lang/ref/WeakReference\1\0\5value\7\0\n\7\0\v\7\0\f\7\0\r\1\0006Ljava/lang/ref/WeakReference;\1\0,(Ljava/lang/ThreadLocal;Ljava/lang/Object;)V\f\0\16\0\7\f\0\2\0\1\t\0\21\0\25\n\0\22\0\26\1\0\20ThreadLocal.java\1\0\16ThreadLocalMap\0 \0\21\0\22\0\0\0\1\0\0\0\16\0\7\0\0\0\1\0\0\0\2\0\24\0\1\0\3\0\0\0+\0\2\0\3\0\0\0\v*+\267\0\30*,\265\0\27\261\0\0\0\1\0\6\0\0\0\16\0\3\0\0\1\24\0\5\1\25\0\n\1\26\0\3\0\t\0\0\0\2\0\31\0\10\0\0\0\2\0\23\0\5\0\0\0\22\0\2\0\20\0\17\0\32\0\10\0\21\0\20\0\4\0\10", 574) = 574 30059 lseek(4, 60280675, SEEK_SET) = 60280675 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305BP\3\207\343\203\n\0\0\203\n\0\0*\0\0\0", 30) = 30 30059 lseek(4, 60280747, SEEK_SET) = 60280747 30059 read(4, "\312\376\272\276\0\0\0003\0\221\1\0\3()F\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\5(IF)I\1\0\30(Ljava/lang/Throwable;)V\1\0\10([BII)[C\1\0\t([BII[C)I\1\0\6\1\0\4Code\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\22Ljava/lang/String;\1\0\7REPLACE\1\0\nSourceFile\1\0\rStackMapTable\1\0\1Z\1\0\2[C\1\0\naccess$000\1\0\naccess$100\1\0\2cd\1\0\vcharsetName\1\0\2cs\1\0\6decode\1\0\5flush\1\0\10getClass\1\0\17getClassLoader0\1\0\16historicalName\1\0\tisTrusted\1\0\visUnderflow\1\0\17java/lang/Class\1\0\17java/lang/Error\1\0\20java/lang/Object\1\0\20java/lang/String\1\0\26java/lang/StringCoding\1\0\30java/lang/StringCoding$1\1\0$java/lang/StringCoding$StringDecoder\1\0\23java/nio/ByteBuffer\1\0\23java/nio/CharBuffer\1\0)java/nio/charset/CharacterCodingException\1\0\30java/nio/charset/Charset\1\0\37java/nio/charset/CharsetDecoder\1\0\34java/nio/charset/CoderResult\1\0\"java/nio/charset/CodingErrorAction\1\0\17maxCharsPerByte\1\0\4name\1\0\nnewDecoder\1\0\20onMalformedInput\1\0\25onUnmappableCharacter\1\0\10position\1\0\24requestedCharsetName\1\0\5reset\1\0\27sun/nio/cs/ArrayDecoder\1\0#sun/nio/cs/HistoricallyNamedCharset\1\0\16throwException\1\0\4wrap\7\0\23\7\0 \7\0!\7\0\"\7\0#\7\0$\7\0%\7\0&\7\0'\7\0(\7\0)\7\0"..., 2691) = 2691 30059 lseek(4, 60277886, SEEK_SET) = 60277886 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B\370B\312\25\246\n\0\0\246\n\0\0!\0\0\0", 30) = 30 30059 lseek(4, 60277949, SEEK_SET) = 60277949 30059 read(4, "\312\376\272\276\0\0\0003\0\206\3\0\0\377\375\1\0\23$assertionsDisabled\1\0\3()B\1\0\3()I\1\0\3()V\1\0\3()Z\1\0\4()[B\1\0\4()[C\1\0\4(I)C\1\0\5(II)I\1\0\25(Ljava/lang/String;)V\1\0\t([BII[C)I\1\0\10\1\0\6\1\0\1C\1\0\4Code\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\10OVERFLOW\1\0\nSourceFile\1\0\rStackMapTable\1\0\tUNDERFLOW\1\0\1Z\1\0\2[B\1\0\2[C\1\0\5array\1\0\varrayOffset\1\0\6charAt\1\0\6decode\1\0\17decodeArrayLoop\1\0\20decodeBufferLoop\1\0\ndecodeLoop\1\0\26desiredAssertionStatus\1\0\3get\1\0\10hasArray\1\0\fhasRemaining\1\0\17implReplaceWith\1\0\30java/lang/AssertionError\1\0\17java/lang/Class\1\0\16java/lang/Math\1\0\20java/lang/String\1\0\23java/lang/Throwable\1\0\23java/nio/ByteBuffer\1\0\23java/nio/CharBuffer\1\0\37java/nio/charset/CharsetDecoder\1\0\34java/nio/charset/CoderResult\1\0\5limit\1\0\22malformedForLength\1\0\3min\1\0\10position\1\0\3put\1\0\4repl\1\0\27sun/nio/cs/ArrayDecoder\1\0\23sun/nio/cs/US_ASCII\1\0\25sun/nio/cs/US_ASCII$1\1\0\33sun/nio/cs/US_ASCII$Decoder\7\0\30\7\0\31\7\0&\7\0'\7\0(\7\0)\7\0*\7\0+\7\0,\7\0-\7\0.\7\0005\7\0006\7\0007\7\0008\1\0\36Ljava/nio/charset/CoderResult;\1\0\24(I)Ljava/nio/Buffer;\1\0\30(C)Ljava/nio/CharBuffer;\1\0\35(Ljava/nio/charset/Charset;)V\1\0\37(Ljava/nio/charset/Charset;FF)V\1\0!(I)Ljava/"..., 2726) = 2726 30059 lseek(4, 44428226, SEEK_SET) = 44428226 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B\352\223\261\311\221\0\0\0\221\0\0\0\35\0\0\0", 30) = 30 30059 lseek(4, 44428285, SEEK_SET) = 44428285 30059 read(4, "\312\376\272\276\0\0\0003\0\t\1\0\t([BII[C)I\1\0\nSourceFile\1\0\6decode\1\0\20java/lang/Object\1\0\27sun/nio/cs/ArrayDecoder\7\0\4\7\0\5\1\0\21ArrayDecoder.java\6\1\0\7\0\6\0\0\0\0\0\1\4\1\0\3\0\1\0\0\0\1\0\2\0\0\0\2\0\10", 145) = 145 30059 lseek(4, 60271710, SEEK_SET) = 60271710 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305Bn\231\3700\335\27\0\0\335\27\0\0%\0\0\0", 30) = 30 30059 lseek(4, 60271777, SEEK_SET) = 60271777 30059 read(4, "\312\376\272\276\0\0\0003\1\23\10\0\32\10\0\33\10\0\36\10\0\37\10\0\"\10\0#\10\0&\10\0+\10\0,\10\0-\10\0.\10\0002\10\0003\10\0A\10\0y\1\0\23$assertionsDisabled\1\0\3()F\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\5(II)V\1\0\25(Ljava/lang/Object;)V\1\0\25(Ljava/lang/String;)V\1\0\25(Ljava/lang/String;)Z\1\0\16, new state = \1\0\0031.4\1\0\10\1\0\6\1\0\6CODING\1\0\nCODING_END\1\0\4Code\1\0\rConstantValue\1\0\20Current state = \1\0\21Empty replacement\1\0\nExceptions\1\0\1F\1\0\7FLUSHED\1\0\1I\1\0\6IGNORE\1\0\17LineNumberTable\1\0\22Ljava/lang/String;\1\0 Non-positive averageCharsPerByte\1\0\34Non-positive maxCharsPerByte\1\0\vNull action\1\0\20Null replacement\1\0\10OVERFLOW\1\0\7REPLACE\1\0\6REPORT\1\0\5RESET\1\0\24Replacement too long\1\0\tST_CODING\1\0\6ST_END\1\0\nST_FLUSHED\1\0\10ST_RESET\1\0\nSourceFile\1\0\rStackMapTable\1\0\tUNDERFLOW\1\0\1Z\1\0\23[Ljava/lang/String;\1\0\10allocate\1\0\6append\1\0\natBugLevel\1\0\23averageCharsPerByte\1\0+averageCharsPerByte exceeds maxCharsPerByte\1\0\7charset\1\0\6decode\1\0\ndecodeLoop\1\0\26desiredAssertionStatus\1\0\17detectedCharset\1\0\4flip\1\0\5flush\1\0\fhasRemaining\1\0\timplFlush\1\0\24implOnMalformedInput\1\0\31implOnUnmappableCharacter\1\0\17implReplaceWith\1\0\timplReset\1\0\17isAutoDetecting\1"..., 6109) = 6109 30059 lseek(4, 60271021, SEEK_SET) = 60271021 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\\\234\212Ck\2\0\0k\2\0\0(\0\0\0", 30) = 30 30059 lseek(4, 60271091, SEEK_SET) = 60271091 30059 read(4, "\312\376\272\276\0\0\0003\0$\10\0\n\10\0\r\10\0\16\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\25(Ljava/lang/String;)V\1\0\10\1\0\6\1\0\4Code\1\0\6IGNORE\1\0\17LineNumberTable\1\0\22Ljava/lang/String;\1\0\7REPLACE\1\0\6REPORT\1\0\nSourceFile\1\0\20java/lang/Object\1\0\"java/nio/charset/CodingErrorAction\1\0\4name\1\0\10toString\7\0\20\7\0\21\1\0$Ljava/nio/charset/CodingErrorAction;\f\0\22\0\f\f\0\n\0\26\f\0\r\0\26\f\0\16\0\26\f\0\10\0\5\f\0\10\0\6\t\0\25\0\27\t\0\25\0\30\t\0\25\0\31\t\0\25\0\32\n\0\24\0\33\n\0\25\0\34\1\0\26CodingErrorAction.java\0!\0\25\0\24\0\0\0\4\0\2\0\22\0\f\0\0\0\31\0\n\0\26\0\0\0\31\0\r\0\26\0\0\0\31\0\16\0\26\0\0\0\3\0\2\0\10\0\6\0\1\0\t\0\0\0*\0\2\0\2\0\0\0\n*\267\0!*+\265\0\35\261\0\0\0\1\0\v\0\0\0\16\0\3\0\0\0/\0\4\0000\0\t\0001\0\1\0\23\0\4\0\1\0\t\0\0\0\35\0\1\0\1\0\0\0\5*\264\0\35\260\0\0\0\1\0\v\0\0\0\6\0\1\0\0\0Q\0\10\0\7\0\5\0\1\0\t\0\0\0E\0\3\0\0\0\0\0%\273\0\25Y\22\1\267\0\"\263\0\36\273\0\25Y\22\2\267\0\"\263\0\37\273\0\25Y\22\3\267\0\"\263\0 \261\0\0\0\1\0\v\0\0\0\16\0\3\0\0\0007\0\f\0?\0\30\0H\0\1\0\17\0\0\0\2\0#", 619) = 619 30059 lseek(4, 55405344, SEEK_SET) = 55405344 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\6\346\21\37\330\10\0\0\330\10\0\0\"\0\0\0", 30) = 30 30059 lseek(4, 55405408, SEEK_SET) = 55405408 30059 read(4, "\312\376\272\276\0\0\0003\0e\3\177\377\377\377\1\0\3()I\1\0\3()V\1\0\25(Ljava/lang/Object;)Z\1\0\6\1\0\4Code\1\0\5Entry\1\0\16Hashtable.java\1\0\1I\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\22Ljava/lang/Object;\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\34[Ljava/util/Hashtable$Entry;\1\0\naccess$100\1\0\naccess$200\1\0\naccess$210\1\0\naccess$400\1\0\naccess$500\1\0\naccess$608\1\0\3add\1\0\5clear\1\0\10contains\1\0\6equals\1\0\6getKey\1\0\4hash\1\0\10iterator\1\0\20java/lang/Object\1\0\25java/util/AbstractSet\1\0\23java/util/Hashtable\1\0\25java/util/Hashtable$1\1\0\31java/util/Hashtable$Entry\1\0\34java/util/Hashtable$EntrySet\1\0\rjava/util/Map\1\0\23java/util/Map$Entry\1\0\4next\1\0\6remove\1\0\4size\1\0\6this$0\1\0\5value\7\0\20\7\0\36\7\0\37\7\0 \7\0!\7\0\"\7\0#\7\0$\7\0%\1\0\25Ljava/util/Hashtable;\1\0\33Ljava/util/Hashtable$Entry;\1\0006Ljava/util/AbstractSet;>;\1\0\24()Ljava/lang/Object;\1\0\30(Ljava/util/Hashtable;)I\1\0\30(Ljava/util/Hashtable;)V\1\0\26()Ljava/util/Iterator;\1\0\30(Ljava/util/Map$Entry;)Z\1\0 (Ljava/util/Map$Entry;)Z\1\0*(Ljava/util/Hashtable;Ljava/lang/Object;)I\1\0/(Ljava/util/Hashtable;Ljava/util/Hashtable$1;)V\1\0003(Ljava/util/H"..., 2264) = 2264 30059 lseek(4, 55480777, SEEK_SET) = 55480777 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B:\35\255\33\23\5\0\0\23\5\0\0+\0\0\0", 30) = 30 30059 lseek(4, 55480850, SEEK_SET) = 55480850 30059 read(4, "\312\376\272\276\0\0\0003\0009\1\0\3()I\1\0\25(Ljava/lang/Object;)Z\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\fInnerClasses\1\0\1J\1\0\17LineNumberTable\1\0\22Ljava/lang/Object;\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\1c\1\0\6equals\1\0\10hashCode\1\0\20java/lang/Object\1\0\23java/lang/Throwable\1\0\24java/util/Collection\1\0\25java/util/Collections\1\0,java/util/Collections$SynchronizedCollection\1\0%java/util/Collections$SynchronizedSet\1\0\rjava/util/Set\1\0\5mutex\1\0\20serialVersionUID\5\6\303\302y\2\356\337<\7\0\20\7\0\21\7\0\22\7\0\23\7\0\24\7\0\25\7\0\26\1\0\26Ljava/util/Collection;\1\0]Ljava/util/Collections$SynchronizedCollection;Ljava/util/Set;\1\0\31(Ljava/util/Collection;)V\1\0\22(Ljava/util/Set;)V\1\0\27(Ljava/util/Set;)V\1\0+(Ljava/util/Collection;Ljava/lang/Object;)V\1\0$(Ljava/util/Set;Ljava/lang/Object;)V\1\0)(Ljava/util/Set;Ljava/lang/Object;)V\f\0\27\0\t\f\0\r\0\"\f\0\17\0\1\f\0\16\0\2\f\0\3\0$\f\0\3\0'\t\0 \0*\t\0 \0+\n\0\37\0.\n\0\37\0/\v\0\35\0,\v\0\35\0-\1\0\20Collections.java\1\0\26SynchronizedCollection\1\0\17SynchronizedSet\0 \0 \0\37\0\1\0!\0\1\0\32\0\30\0\7\0\1\0\5\0\0\0\2\0\31\0\4\0\0\0\3\0%\0\2\0\4\0\0\0\"\0\2\0\2\0\0\0\6*+\267\0002\261\0\0\0\1\0\10\0\0\0\n\0\2\0\0\6\253\0\5\6\254\0\n\0\0\0\2\0&\0\0\0\3\0(\0\2\0\4\0\0\0#\0\3\0\3\0\0\0\7*+"..., 1299) = 1299 30059 mprotect(0x7fb31440b000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 55477285, SEEK_SET) = 55477285 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B!\311'fT\r\0\0T\r\0\0002\0\0\0", 30) = 30 30059 lseek(4, 55477365, SEEK_SET) = 55477365 30059 read(4, "\312\376\272\276\0\0\0003\0q\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\25(Ljava/lang/Object;)Z\1\0\6(TE;)Z\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\nExceptions\1\0\fInnerClasses\1\0\1J\1\0\17LineNumberTable\1\0\22Ljava/lang/Object;\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\23[Ljava/lang/Object;\1\0\3add\1\0\6addAll\1\0\1c\1\0\5clear\1\0\10contains\1\0\vcontainsAll\1\0\22defaultWriteObject\1\0\7isEmpty\1\0\10iterator\1\0\23java/io/IOException\1\0\32java/io/ObjectOutputStream\1\0\24java/io/Serializable\1\0\36java/lang/NullPointerException\1\0\20java/lang/Object\1\0\23java/lang/Throwable\1\0\24java/util/Collection\1\0\25java/util/Collections\1\0,java/util/Collections$SynchronizedCollection\1\0\5mutex\1\0\6remove\1\0\tremoveAll\1\0\tretainAll\1\0\20serialVersionUID\1\0\4size\1\0\7toArray\1\0\10toString\1\0\vwriteObject\5*a\370M\t\234\231\265\7\0\22\7\0\34\7\0\35\7\0\36\7\0\37\7\0 \7\0!\7\0\"\7\0#\7\0$\1\0 ([TT;)[TT;\1\0\26Ljava/util/Collection;\1\0\33Ljava/util/Collection;\1\0YLjava/lang/Object;Ljava/util/Collection;Ljava/io/Serializable;\1\0\37(Ljava/io/ObjectOutputStream;)V\1\0\25()[Ljava/lang/Object;\1\0\31(Ljava/util/Collection;)V\1\0\31(L"..., 3412) = 3412 30059 lseek(4, 59437375, SEEK_SET) = 59437375 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\270\312\232\235\366\t\0\0\366\t\0\0$\0\0\0", 30) = 30 30059 lseek(4, 59437441, SEEK_SET) = 59437441 30059 read(4, "\312\376\272\276\0\0\0003\0t\3\177\377\377\377\10\0\n\1\0\5()TT;\1\0\3()V\1\0\3()Z\1\0\25(Ljava/lang/String;)V\1\0\6\1\0\4Code\1\0\5Entry\1\0\24Hashtable Enumerator\1\0\16Hashtable.java\1\0\1I\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\22Ljava/lang/Object;\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\1Z\1\0\34[Ljava/util/Hashtable$Entry;\1\0\naccess$210\1\0\naccess$400\1\0\naccess$600\1\0\naccess$608\1\0\5entry\1\0\20expectedModCount\1\0\17hasMoreElements\1\0\7hasNext\1\0\4hash\1\0\5index\1\0\10iterator\1\0\37java/lang/IllegalStateException\1\0\20java/lang/Object\1\0\23java/lang/Throwable\1\0'java/lang/UnsupportedOperationException\1\0)java/util/ConcurrentModificationException\1\0\25java/util/Enumeration\1\0\23java/util/Hashtable\1\0\31java/util/Hashtable$Entry\1\0\36java/util/Hashtable$Enumerator\1\0\22java/util/Iterator\1\0 java/util/NoSuchElementException\1\0\3key\1\0\flastReturned\1\0\4next\1\0\vnextElement\1\0\6remove\1\0\5table\1\0\6this$0\1\0\4type\1\0\5value\7\0\24\7\0 \7\0!\7\0\"\7\0#\7\0$\7\0%\7\0&\7\0'\7\0(\7\0)\7\0*\1\0\25Ljava/util/Hashtable;\1\0\33Ljava/util/Hashtable$Entry;\1\0#Ljava/util/Hashtable$Entry;\1\0]Ljava/lang/Object;Ljava/util/Enumeration;L"..., 2550) = 2550 30059 mprotect(0x7fb31440c000, 8192, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 60431428, SEEK_SET) = 60431428 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\r;\261+\r\1\0\0\r\1\0\0\33\0\0\0", 30) = 30 30059 lseek(4, 60431485, SEEK_SET) = 60431485 30059 read(4, "\312\376\272\276\0\0\0003\0\16\1\0\5()TE;\1\0\3()Z\1\0\tSignature\1\0\nSourceFile\1\0\17hasMoreElements\1\0\20java/lang/Object\1\0\25java/util/Enumeration\1\0\vnextElement\7\0\6\7\0\7\1\0(Ljava/lang/Object;\1\0\24()Ljava/lang/Object;\1\0\20Enumeration.java\6\1\0\n\0\t\0\0\0\0\0\2\4\1\0\5\0\2\0\0\4\1\0\10\0\f\0\1\0\3\0\0\0\2\0\1\0\2\0\4\0\0\0\2\0\r\0\3\0\0\0\2\0\v", 269) = 269 30059 lseek(4, 60224276, SEEK_SET) = 60224276 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\201\364\206r\210\23\0\0\210\23\0\0\26\0\0\0", 30) = 30 30059 lseek(4, 60224328, SEEK_SET) = 60224328 30059 read(4, "\312\376\272\276\0\0\0003\0\357\10\0\24\10\0#\10\0$\10\0%\10\0&\10\0'\10\0(\10\0-\10\0/\10\0000\10\0H\10\0I\10\0J\10\0K\10\0L\10\0M\10\0N\10\0O\10\0\177\1\0\10 (build \1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\25(C)Ljava/lang/String;\1\0\4(C)V\1\0\4(C)Z\1\0\5(CI)I\1\0\4(I)C\1\0\26(II)Ljava/lang/String;\1\0\25(Ljava/lang/String;)I\1\0&(Ljava/lang/String;)Ljava/lang/String;\1\0\25(Ljava/lang/String;)V\1\0\25(Ljava/lang/String;)Z\1\0\1)\1\0\2, \1\0\n, headless\1\0\1-\1\0\0101.7.0_25\1\0\f1.7.0_25-b15\1\0\10\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\10Embedded\1\0\1I\1\0\37Java(TM) SE Runtime Environment\1\0003Java(TM) SE Runtime Environment (build 1.7.0_25-b15\1\0\17LineNumberTable\1\0\25Ljava/io/PrintStream;\1\0\22Ljava/lang/String;\1\0\nSourceFile\1\0\rStackMapTable\1\0\1Z\1\0\23[Ljava/lang/String;\1\0\6append\1\0\6charAt\1\0\5digit\1\0\20equalsIgnoreCase\1\0\3err\1\0\24getJdkSpecialVersion\1\0\21getJdkVersionInfo\1\0\24getJvmSpecialVersion\1\0\21getJvmVersionInfo\1\0\vgetProperty\1\0\7indexOf\1\0\4init\1\0\finitVersions\1\0\10intValue\1\0\7isDigit\1\0\4java\1\0\27java version \"1.7.0_25\"\1\0\21java.awt.headless\1\0\21java.runtime.name\1\0\24java.runtime.version\1\0\fjava.version\1\0\fjava.vm.info\1\0\fjava.vm.name\1\0\17java.vm.version\1\0\23java/io/"..., 5000) = 5000 30059 lseek(4, 60220959, SEEK_SET) = 60220959 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305BK\32\226\263\272\f\0\0\272\f\0\0\35\0\0\0", 30) = 30 30059 lseek(4, 60221018, SEEK_SET) = 60221018 30059 read(4, "\312\376\272\276\0\0\0003\0\231\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4(J)J\1\0\25(Ljava/lang/Object;)V\1\0\25(Ljava/lang/String;)V\1\0\5([B)I\1\0\7([BII)I\1\0\10\1\0\6\1\0\4Code\1\0\nExceptions\1\0\5FALSE\1\0\17LineNumberTable\1\0\23Ljava/lang/Boolean;\1\0\22Ljava/lang/Object;\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\4TRUE\1\0\1Z\1\0\tavailable\1\0\fbooleanValue\1\0\7channel\1\0\tcheckRead\1\0\5close\1\0\6close0\1\0\tcloseLock\1\0\6closed\1\0\27decrementAndGetUseCount\1\0\2fd\1\0\10finalize\1\0\3get\1\0\ngetChannel\1\0\5getFD\1\0\7getPath\1\0\22getSecurityManager\1\0\2in\1\0\27incrementAndGetUseCount\1\0\7initIDs\1\0\21isRunningFinalize\1\0\fjava/io/File\1\0\26java/io/FileDescriptor\1\0\27java/io/FileInputStream\1\0\35java/io/FileNotFoundException\1\0\23java/io/IOException\1\0\23java/io/InputStream\1\0\21java/lang/Boolean\1\0\36java/lang/NullPointerException\1\0\20java/lang/Object\1\0\31java/lang/SecurityManager\1\0\20java/lang/String\1\0\20java/lang/System\1\0\25java/lang/ThreadLocal\1\0\23java/lang/Throwable\1\0\35java/nio/channels/FileChannel\1\0\4open\1\0\4read\1\0\treadBytes\1\0\17runningFinalize\1\0\3set\1\0\4skip\1\0\32sun/nio/ch/FileChannelImpl\7\0+\7\0,\7\0-\7\0.\7\0/\7\0000\7\0001\7\0"..., 3258) = 3258 30059 mprotect(0x7fb31440e000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 60219425, SEEK_SET) = 60219425 30059 read(4, "PK\3\4\n\0\0\0\0\0003\246\305B+\3016\246\307\5\0\0\307\5\0\0\31\0\0\0", 30) = 30 30059 lseek(4, 60219480, SEEK_SET) = 60219480 30059 read(4, "\312\376\272\276\0\0\0003\0=\10\0\37\1\0\3()I\1\0\3()V\1\0\3()Z\1\0\4(I)V\1\0\4(J)J\1\0\5(JJ)J\1\0\25(Ljava/lang/String;)V\1\0\5([B)I\1\0\7([BII)I\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\nExceptions\1\0\1I\1\0\17LineNumberTable\1\0\24MAX_SKIP_BUFFER_SIZE\1\0\nSourceFile\1\0\rStackMapTable\1\0\2[B\1\0\tavailable\1\0\5close\1\0\21java/io/Closeable\1\0\23java/io/IOException\1\0\23java/io/InputStream\1\0#java/lang/IndexOutOfBoundsException\1\0\16java/lang/Math\1\0\36java/lang/NullPointerException\1\0\20java/lang/Object\1\0\4mark\1\0\30mark/reset not supported\1\0\rmarkSupported\1\0\3min\1\0\4read\1\0\5reset\1\0\4skip\3\0\0\10\0\5\0\0\0\0\0\0\10\0\7\0\24\7\0\27\7\0\30\7\0\31\7\0\32\7\0\33\7\0\34\7\0\35\f\0\"\0\2\f\0\v\0\3\f\0!\0\7\f\0\"\0\n\f\0\v\0\10\n\0*\0004\n\0+\0000\n\0+\0003\n\0,\0001\n\0-\0002\n\0.\0001\n\0/\0001\1\0\20InputStream.java\4!\0+\0/\0\1\0)\0\1\0\32\0\21\0\17\0\1\0\r\0\0\0\2\0%\0\n\0\1\0\v\0\3\0\1\0\f\0\0\0\35\0\1\0\1\0\0\0\5*\267\0;\261\0\0\0\1\0\20\0\0\0\6\0\1\0\0\0-\4\1\0\"\0\2\0\1\0\16\0\0\0\4\0\1\0*\0\1\0\"\0\t\0\2\0\f\0\0\0!\0\4\0\2\0\0\0\t*+\3+\276\266\0007\254\0\0\0\1\0\20\0\0\0\6\0\1\0\0\0e\0\16\0\0\0\4\0\1\0*\0\1\0\"\0\n\0\2\0\f\0\0\0\364\0\3\0\7\0\0\0m+\307\0\v\273\0.Y\267\0:\277\34\233\0\17\35\233\0\v\35+\276\34d\244\0\v\273\0,Y\267\0008\277\35\232\0\5\3\254*\266\00066\4\25\4\2\240\0\5\2\254+\34\25\4\221T\0046\5\25\5\35\242\0!*\266\00066\4\25\4\2\240\0\6\247\0\22+\34\25\5`\25\4\221T\204\5\1\247\377\337\247\0\5:\6\25\5\254\0\1\0A\0e\0h\0*\0\2\0\23\0\0\0\25\0\n\f\17\7\5\374\0\r\1\374\0\10\1\24\16B\7\0*\1\0\20\0\0\0R\0\24\0\0\0\242\0\4\0\243\0\f\0\244\0\34\0\245\0$\0\246\0(\0\247\0*\0\252\0000\0\253\0006\0\254\0008\0\256\0>\0\260\0A\0\262\0G\0\263\0M\0\264\0S\0\265\0V\0\267\0_\0\262\0"..., 1479) = 1479 30059 lseek(4, 60219164, SEEK_SET) = 60219164 30059 read(4, "PK\3\4\n\0\0\0\0\0003\246\305B\307\376\216~\320\0\0\0\320\0\0\0\27\0\0\0", 30) = 30 30059 lseek(4, 60219217, SEEK_SET) = 60219217 30059 read(4, "\312\376\272\276\0\0\0003\0\16\1\0\3()V\1\0\nExceptions\1\0\nSourceFile\1\0\5close\1\0\21java/io/Closeable\1\0\23java/io/IOException\1\0\27java/lang/AutoCloseable\1\0\20java/lang/Object\7\0\5\7\0\6\7\0\7\7\0\10\1\0\16Closeable.java\6\1\0\t\0\f\0\1\0\v\0\0\0\1\4\1\0\4\0\1\0\1\0\2\0\0\0\4\0\1\0\n\0\1\0\3\0\0\0\2\0\r", 208) = 208 30059 lseek(4, 27666790, SEEK_SET) = 27666790 30059 read(4, "PK\3\4\n\0\0\0\0\0003\246\305B>\31\373@\273\0\0\0\273\0\0\0\35\0\0\0", 30) = 30 30059 lseek(4, 27666849, SEEK_SET) = 27666849 30059 read(4, "\312\376\272\276\0\0\0003\0\f\1\0\3()V\1\0\nExceptions\1\0\nSourceFile\1\0\5close\1\0\27java/lang/AutoCloseable\1\0\23java/lang/Exception\1\0\20java/lang/Object\7\0\5\7\0\6\7\0\7\1\0\22AutoCloseable.java\6\1\0\10\0\n\0\0\0\0\0\1\4\1\0\4\0\1\0\1\0\2\0\0\0\4\0\1\0\t\0\1\0\3\0\0\0\2\0\v", 187) = 187 30059 lseek(4, 60217660, SEEK_SET) = 60217660 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305Brr\v\367\246\5\0\0\246\5\0\0\34\0\0\0", 30) = 30 30059 lseek(4, 60217718, SEEK_SET) = 60217718 30059 read(4, "\312\376\272\276\0\0\0003\0G\1\0\3()I\1\0\3()V\1\0\3()Z\1\0\4(I)V\1\0\10\1\0\6\1\0\4Code\1\0\nExceptions\1\0\1I\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\nSourceFile\1\0\rStackMapTable\1\0\naccess$000\1\0\naccess$002\1\0\17decrementAndGet\1\0\27decrementAndGetUseCount\1\0\3err\1\0\2fd\1\0\2in\1\0\17incrementAndGet\1\0\27incrementAndGetUseCount\1\0\7initIDs\1\0\26java/io/FileDescriptor\1\0\30java/io/FileDescriptor$1\1\0\33java/io/SyncFailedException\1\0\20java/lang/Object\1\0)java/util/concurrent/atomic/AtomicInteger\1\0\3out\1\0\35setJavaIOFileDescriptorAccess\1\0\26sun/misc/SharedSecrets\1\0\4sync\1\0\10useCount\1\0\5valid\7\0\30\7\0\31\7\0\32\7\0\33\7\0\34\7\0\37\1\0\30Ljava/io/FileDescriptor;\1\0+Ljava/util/concurrent/atomic/AtomicInteger;\1\0\33(Ljava/io/FileDescriptor;)I\1\0\34(Ljava/io/FileDescriptor;I)I\1\0((Lsun/misc/JavaIOFileDescriptorAccess;)V\f\0\23\0\t\f\0\22\0)\f\0\24\0)\f\0\35\0)\f\0!\0*\f\0\20\0\1\f\0\25\0\1\f\0\6\0\2\f\0\27\0\2\f\0\6\0\4\f\0\36\0-\t\0#\0.\t\0#\0/\t\0#\0000\t\0#\0001\t\0#\0002\n\0#\0006\n\0#\0007\n\0$\0005\n\0&\0005\n\0'\0003\n\0'\0004\n\0'\0005\n\0(\0008\1\0\23FileDescriptor.java\0001\0#\0&\0\0\0\5\0\2\0\23\0\t\0\0\0\2\0!\0*\0\0\0\31\0\24\0)\0\0\0\31\0\35\0)\0\0\0\31\0\22\0)\0\0\0\n\0\1\0\6\0\2\0\1\0\7\0\0\0009\0\3\0\1\0\0\0\25*\267\0A*\2\265\0009*\273\0'Y\267\0D\265\0=\261\0\0\0\1\0\v\0\0\0\22\0\4\0\0\0<\0\4\0=\0\t\0>\0\24\0?\0\2\0\6\0\4\0\1\0\7\0\0\0009\0\3\0\2\0\0\0\25*\267\0"..., 1446) = 1446 30059 lseek(4, 27618801, SEEK_SET) = 27618801 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\200\223\343%+\3\0\0+\3\0\0\36\0\0\0", 30) = 30 30059 lseek(4, 27618861, SEEK_SET) = 27618861 30059 read(4, "\312\376\272\276\0\0\0003\0%\1\0\3()V\1\0\6\1\0\4Code\1\0\17EnclosingMethod\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\nSourceFile\1\0\naccess$000\1\0\naccess$002\1\0\3get\1\0\tgetHandle\1\0\26java/io/FileDescriptor\1\0\30java/io/FileDescriptor$1\1\0\20java/lang/Object\1\0'java/lang/UnsupportedOperationException\1\0\3set\1\0\tsetHandle\1\0#sun/misc/JavaIOFileDescriptorAccess\7\0\f\7\0\r\7\0\16\7\0\17\7\0\22\1\0\33(Ljava/io/FileDescriptor;)I\1\0\33(Ljava/io/FileDescriptor;)J\1\0\34(Ljava/io/FileDescriptor;I)I\1\0\34(Ljava/io/FileDescriptor;I)V\1\0\34(Ljava/io/FileDescriptor;J)V\f\0\2\0\1\f\0\10\0\30\f\0\t\0\32\n\0\23\0\36\n\0\23\0\37\n\0\25\0\35\n\0\26\0\35\1\0\23FileDescriptor.java\0000\0\24\0\25\0\1\0\27\0\0\0\5\0\0\0\2\0\1\0\1\0\3\0\0\0\35\0\1\0\1\0\0\0\5*\267\0\"\261\0\0\0\1\0\6\0\0\0\6\0\1\0\0\0\223\0\1\0\20\0\33\0\1\0\3\0\0\0#\0\2\0\3\0\0\0\7+\34\270\0!W\261\0\0\0\1\0\6\0\0\0\n\0\2\0\0\0\225\0\6\0\226\0\1\0\n\0\30\0\1\0\3\0\0\0\35\0\1\0\2\0\0\0\5+\270\0 \254\0\0\0\1\0\6\0\0\0\6\0\1\0\0\0\231\0\1\0\21\0\34\0\1\0\3\0\0\0 \0\2\0\4\0\0\0\10\273\0\26Y\267\0#\277\0\0\0\1\0\6\0\0\0\6\0\1\0\0\0\235\0\1\0\v\0\31\0\1\0\3\0\0\0 \0\2\0\2\0\0\0\10\273\0\26Y\267\0#\277\0\0\0\1\0\6\0\0\0\6\0\1\0\0\0\241\0\3\0\7\0\0\0\2\0$\0\4\0\0\0\4\0\23\0\0\0\5\0\0\0\n\0\1\0\24\0\0\0\0\0\10", 811) = 811 30059 lseek(4, 43222299, SEEK_SET) = 43222299 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\262\342\213\273L\1\0\0L\1\0\0)\0\0\0", 30) = 30 30059 lseek(4, 43222370, SEEK_SET) = 43222370 30059 read(4, "\312\376\272\276\0\0\0003\0\17\1\0\nSourceFile\1\0\3get\1\0\tgetHandle\1\0\20java/lang/Object\1\0\3set\1\0\tsetHandle\1\0#sun/misc/JavaIOFileDescriptorAccess\7\0\4\7\0\7\1\0\33(Ljava/io/FileDescriptor;)I\1\0\33(Ljava/io/FileDescriptor;)J\1\0\34(Ljava/io/FileDescriptor;I)V\1\0\34(Ljava/io/FileDescriptor;J)V\1\0\37JavaIOFileDescriptorAccess.java\6\1\0\t\0\10\0\0\0\0\0\4\4\1\0\5\0\f\0\0\4\1\0\2\0\n\0\0\4\1\0\6\0\r\0\0\4\1\0\3\0\v\0\0\0\1\0\1\0\0\0\2\0\16", 332) = 332 30059 lseek(4, 60107199, SEEK_SET) = 60107199 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\326js\235\374\22\0\0\374\22\0\0\34\0\0\0", 30) = 30 30059 lseek(4, 60107257, SEEK_SET) = 60107257 30059 read(4, "\312\376\272\276\0\0\0003\0\236\1\0\3()V\1\0\10\1\0\6\1\0\4Code\1\0\17LineNumberTable\1\0\nSourceFile\1\0\rStackMapTable\1\0\26ensureClassInitialized\1\0\ngetContext\1\0\20getJavaAWTAccess\1\0\17getJavaIOAccess\1\0\35getJavaIOFileDescriptorAccess\1\0\21getJavaLangAccess\1\0\20getJavaNetAccess\1\0\32getJavaNetHttpCookieAccess\1\0\20getJavaNioAccess\1\0\25getJavaSecurityAccess\1\0%getJavaSecurityProtectionDomainAccess\1\0\24getJavaUtilZipAccess\1\0\30getJavaUtilZipFileAccess\1\0\"getJavaxSecurityAuthKerberosAccess\1\0\tgetUnsafe\1\0\17java/io/Console\1\0\26java/io/FileDescriptor\1\0\20java/lang/Object\1\0\23java/net/HttpCookie\1\0\22java/nio/ByteOrder\1\0\36java/security/AccessController\1\0\36java/security/ProtectionDomain\1\0\25java/util/jar/JarFile\1\0\25java/util/zip/Adler32\1\0\25java/util/zip/ZipFile\1\0\rjavaAWTAccess\1\0\fjavaIOAccess\1\0\32javaIOFileDescriptorAccess\1\0\16javaLangAccess\1\0\rjavaNetAccess\1\0\27javaNetHttpCookieAccess\1\0\rjavaNioAccess\1\0\22javaSecurityAccess\1\0\"javaSecurityProtectionDomainAccess\1\0\21javaUtilJarAccess\1\0\21javaUtilZipAccess\1\0\25javaUtilZipFileAccess\1\0#javax/security/auth/kerberos/KeyTab\1\0\37javaxSecurit"..., 4860) = 4860 30059 mprotect(0x7fb31440f000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 60213979, SEEK_SET) = 60213979 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305BH\204\230\371%\16\0\0%\16\0\0\36\0\0\0", 30) = 30 30059 lseek(4, 60214039, SEEK_SET) = 60214039 30059 read(4, "\312\376\272\276\0\0\0003\0\246\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4(I)V\1\0\5(IZ)V\1\0\25(Ljava/lang/Object;)V\1\0\25(Ljava/lang/String;)V\1\0\26(Ljava/lang/String;Z)V\1\0\5([B)V\1\0\7([BII)V\1\0\10([BIIZ)V\1\0\10\1\0\6\1\0\4Code\1\0\nExceptions\1\0\5FALSE\1\0\17LineNumberTable\1\0\23Ljava/lang/Boolean;\1\0\22Ljava/lang/Object;\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\4TRUE\1\0\1Z\1\0\6append\1\0\fbooleanValue\1\0\7channel\1\0\ncheckWrite\1\0\5close\1\0\6close0\1\0\tcloseLock\1\0\6closed\1\0\27decrementAndGetUseCount\1\0\3err\1\0\2fd\1\0\10finalize\1\0\5flush\1\0\3get\1\0\ngetChannel\1\0\5getFD\1\0\7getPath\1\0\22getSecurityManager\1\0\27incrementAndGetUseCount\1\0\7initIDs\1\0\21isRunningFinalize\1\0\fjava/io/File\1\0\26java/io/FileDescriptor\1\0\35java/io/FileNotFoundException\1\0\30java/io/FileOutputStream\1\0\23java/io/IOException\1\0\24java/io/OutputStream\1\0\21java/lang/Boolean\1\0\36java/lang/NullPointerException\1\0\20java/lang/Object\1\0\31java/lang/SecurityManager\1\0\20java/lang/String\1\0\20java/lang/System\1\0\25java/lang/ThreadLocal\1\0\23java/lang/Throwable\1\0\35java/nio/channels/FileChannel\1\0\4open\1\0\3out\1\0\17runningFinalize\1\0\3set\1\0\32sun/nio/ch/FileC"..., 3621) = 3621 30059 lseek(4, 60213098, SEEK_SET) = 60213098 30059 read(4, "PK\3\4\n\0\0\0\0\0003\246\305B+\275zk9\3\0\0009\3\0\0\32\0\0\0", 30) = 30 30059 lseek(4, 60213154, SEEK_SET) = 60213154 30059 read(4, "\312\376\272\276\0\0\0003\0%\1\0\3()V\1\0\4(I)V\1\0\5([B)V\1\0\7([BII)V\1\0\6\1\0\4Code\1\0\nExceptions\1\0\17LineNumberTable\1\0\nSourceFile\1\0\rStackMapTable\1\0\5close\1\0\5flush\1\0\21java/io/Closeable\1\0\21java/io/Flushable\1\0\23java/io/IOException\1\0\24java/io/OutputStream\1\0#java/lang/IndexOutOfBoundsException\1\0\36java/lang/NullPointerException\1\0\20java/lang/Object\1\0\5write\7\0\r\7\0\16\7\0\17\7\0\20\7\0\21\7\0\22\7\0\23\f\0\5\0\1\f\0\24\0\2\f\0\24\0\4\n\0\30\0\35\n\0\30\0\36\n\0\31\0\34\n\0\32\0\34\n\0\33\0\34\1\0\21OutputStream.java\4!\0\30\0\33\0\2\0\25\0\26\0\0\0\6\0\1\0\5\0\1\0\1\0\6\0\0\0\35\0\1\0\1\0\0\0\5*\267\0#\261\0\0\0\1\0\10\0\0\0\6\0\1\0\0\0.\4\1\0\24\0\2\0\1\0\7\0\0\0\4\0\1\0\27\0\1\0\24\0\3\0\2\0\6\0\0\0%\0\4\0\2\0\0\0\t*+\3+\276\266\0 \261\0\0\0\1\0\10\0\0\0\n\0\2\0\0\0K\0\10\0L\0\7\0\0\0\4\0\1\0\27\0\1\0\24\0\4\0\2\0\6\0\0\0\236\0\4\0\5\0\0\0O+\307\0\v\273\0\32Y\267\0\"\277\34\233\0\33\34+\276\243\0\25\35\233\0\21\34\35`+\276\243\0\t\34\35`\234\0\v\273\0\31Y\267\0!\277\35\232\0\4\261\0036\4\25\4\35\242\0\23*+\34\25\4`3\266\0\37\204\4\1\247\377\355\261\0\0\0\2\0\n\0\0\0\r\0\6\f\33\7\4\374\0\2\1\372\0\25\0\10\0\0\0*\0\n\0\0\0k\0\4\0l\0\f\0m\0(\0o\0000\0p\0004\0q\0005\0s\0>\0t\0H\0s\0N\0v\0\7\0\0\0\4\0\1\0\27\0\1\0\f\0\1\0\2\0\6\0\0\0\31\0\0\0\1\0\0\0\1\261\0\0\0\1\0\10\0\0\0\6\0\1\0\0\0\213\0\7\0\0\0\4\0\1\0\27\0\1\0\v\0\1\0\2\0\6\0\0\0\31\0\0\0\1\0\0\0\1\261\0\0\0\1\0\10\0\0\0\6\0\1\0\0\0\230\0\7\0\0\0\4\0\1\0\27\0\1\0\t\0\0\0\2\0$", 825) = 825 30059 lseek(4, 60212868, SEEK_SET) = 60212868 30059 read(4, "PK\3\4\n\0\0\0\0\0003\246\305B,w\260 \261\0\0\0\261\0\0\0\27\0\0\0", 30) = 30 30059 lseek(4, 60212921, SEEK_SET) = 60212921 30059 read(4, "\312\376\272\276\0\0\0003\0\f\1\0\3()V\1\0\nExceptions\1\0\nSourceFile\1\0\5flush\1\0\21java/io/Flushable\1\0\23java/io/IOException\1\0\20java/lang/Object\7\0\5\7\0\6\7\0\7\1\0\16Flushable.java\6\1\0\10\0\n\0\0\0\0\0\1\4\1\0\4\0\1\0\1\0\2\0\0\0\4\0\1\0\t\0\1\0\3\0\0\0\2\0\v", 177) = 177 30059 lseek(4, 60209168, SEEK_SET) = 60209168 30059 read(4, "PK\3\4\n\0\0\0\0\0003\246\305Bb\35O[5\16\0\0005\16\0\0!\0\0\0", 30) = 30 30059 lseek(4, 60209231, SEEK_SET) = 60209231 30059 read(4, "\312\376\272\276\0\0\0003\0{\3\177\377\377\377\10\0\20\10\0\25\10\0\31\10\0\35\1\0\3()I\1\0\3()V\1\0\3()Z\1\0\4()[B\1\0\4(I)V\1\0\4(J)J\1\0\25(Ljava/lang/String;)V\1\0\7([BII)I\1\0\10\1\0\6\1\0\20Buffer size <= 0\1\0\4Code\1\0\nExceptions\1\0\1I\1\0\17LineNumberTable\1\0\31Resetting to invalid mark\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\rStream closed\1\0\2[B\1\0\tarraycopy\1\0\tavailable\1\0\3buf\1\0\nbufUpdater\1\0\5close\1\0\rcompareAndSet\1\0\5count\1\0\21defaultBufferSize\1\0\4fill\1\0\fgetBufIfOpen\1\0\vgetInIfOpen\1\0\2in\1\0\33java/io/BufferedInputStream\1\0\31java/io/FilterInputStream\1\0\23java/io/IOException\1\0\23java/io/InputStream\1\0\"java/lang/IllegalArgumentException\1\0#java/lang/IndexOutOfBoundsException\1\0\20java/lang/System\1\0007java/util/concurrent/atomic/AtomicReferenceFieldUpdater\1\0\4mark\1\0\rmarkSupported\1\0\tmarklimit\1\0\7markpos\1\0\nnewUpdater\1\0\3pos\1\0\4read\1\0\5read1\1\0\5reset\1\0\4skip\7\0\32\7\0'\7\0(\7\0)\7\0*\7\0+\7\0,\7\0-\7\0.\1\0\25Ljava/io/InputStream;\1\0009Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;\1\0ZLjava/util/concurrent/atomic/AtomicReferenceFieldUpdater;\1\0\27()Ljava/io/InputStream;\1\0\30(Ljava/io/In"..., 3637) = 3637 30059 lseek(4, 60208067, SEEK_SET) = 60208067 30059 read(4, "PK\3\4\n\0\0\0\0\0003\246\305B\364^\253\254\20\4\0\0\20\4\0\0\37\0\0\0", 30) = 30 30059 lseek(4, 60208128, SEEK_SET) = 60208128 30059 read(4, "\312\376\272\276\0\0\0003\0003\1\0\3()I\1\0\3()V\1\0\3()Z\1\0\4(I)V\1\0\4(J)J\1\0\5([B)I\1\0\7([BII)I\1\0\6\1\0\4Code\1\0\nExceptions\1\0\17LineNumberTable\1\0\nSourceFile\1\0\tavailable\1\0\5close\1\0\2in\1\0\31java/io/FilterInputStream\1\0\23java/io/IOException\1\0\23java/io/InputStream\1\0\4mark\1\0\rmarkSupported\1\0\4read\1\0\5reset\1\0\4skip\7\0\20\7\0\21\7\0\22\1\0\25Ljava/io/InputStream;\1\0\30(Ljava/io/InputStream;)V\f\0\17\0\33\f\0\r\0\1\f\0\25\0\1\f\0\10\0\2\f\0\16\0\2\f\0\26\0\2\f\0\24\0\3\f\0\23\0\4\f\0\27\0\5\f\0\25\0\7\t\0\30\0\35\n\0\30\0&\n\0\32\0\36\n\0\32\0\37\n\0\32\0 \n\0\32\0!\n\0\32\0\"\n\0\32\0#\n\0\32\0$\n\0\32\0%\n\0\32\0&\1\0\26FilterInputStream.java\0!\0\30\0\32\0\0\0\1\0D\0\17\0\33\0\0\0\n\0\4\0\10\0\34\0\1\0\t\0\0\0*\0\2\0\2\0\0\0\n*\267\0+*+\265\0'\261\0\0\0\1\0\v\0\0\0\16\0\3\0\0\0=\0\4\0>\0\t\0?\0\1\0\25\0\1\0\2\0\t\0\0\0 \0\1\0\1\0\0\0\10*\264\0'\266\0*\254\0\0\0\1\0\v\0\0\0\6\0\1\0\0\0S\0\n\0\0\0\4\0\1\0\31\0\1\0\25\0\6\0\2\0\t\0\0\0!\0\4\0\2\0\0\0\t*+\3+\276\266\0(\254\0\0\0\1\0\v\0\0\0\6\0\1\0\0\0k\0\n\0\0\0\4\0\1\0\31\0\1\0\25\0\7\0\2\0\t\0\0\0#\0\4\0\4\0\0\0\v*\264\0'+\34\35\266\0001\254\0\0\0\1\0\v\0\0\0\6\0\1\0\0\0\205\0\n\0\0\0\4\0\1\0\31\0\1\0\27\0\5\0\2\0\t\0\0\0!\0\3\0\3\0\0\0\t*\264\0'\37\266\0000\255\0\0\0\1\0\v\0\0\0\6\0\1\0\0\0\227\0\n\0\0\0\4\0\1\0\31\0\1\0\r\0\1\0\2\0\t\0\0\0 \0\1\0\1\0\0\0\10*\264\0'\266\0)\254\0\0\0\1\0\v\0\0\0\6\0\1\0\0\0\250\0\n\0\0\0\4\0\1\0\31\0\1\0\16\0\2\0\2\0\t\0\0\0$\0\1\0\1\0\0\0\10*\264\0'\266\0,\261\0\0\0\1\0\v\0\0\0\n\0\2\0\0\0\265\0\7\0\266\0\n\0\0\0\4\0\1\0\31\0!\0\23\0\4\0\1\0\t\0\0\0%\0\2\0\2\0\0\0\t*\264\0'\33\266\0/\261\0\0\0\1\0\v\0\0\0\n\0\2\0\0\0\311\0\10\0\312\0!\0\26\0\2\0\2\0\t\0\0\0$\0\1\0\1\0\0\0\10*\264\0'\266\0-\261\0\0\0\1\0\v\0\0\0\n\0\2\0\0\0\342\0\7\0\343\0\n\0\0\0\4\0\1\0\31\0\1\0\24\0\3\0\1\0\t\0\0\0 \0\1"..., 1040) = 1040 30059 lseek(4, 60206351, SEEK_SET) = 60206351 30059 read(4, "PK\3\4\n\0\0\0\0\0003\246\305B\333\333*\4Y\6\0\0Y\6\0\0=\0\0\0", 30) = 30 30059 lseek(4, 60206442, SEEK_SET) = 60206442 30059 read(4, "\312\376\272\276\0\0\0003\0004\1\0\3()V\1\0\10(TT;)TV;\1\0\v(TT;TV;)TV;\1\0\t(TT;TV;)V\1\0\f(TT;TV;TV;)Z\1\0\6\1\0\4Code\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\31RuntimeVisibleAnnotations\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\rcompareAndSet\1\0\3get\1\0\tgetAndSet\1\0\16getCallerClass\1\0\20java/lang/Object\1\0007java/util/concurrent/atomic/AtomicReferenceFieldUpdater\1\0Wjava/util/concurrent/atomic/AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl\1\0\7lazySet\1\0\nnewUpdater\1\0\3set\1\0\26sun/reflect/Reflection\1\0\21weakCompareAndSet\7\0\22\7\0\23\7\0\24\7\0\30\1\0\35Lsun/reflect/CallerSensitive;\1\0<Ljava/lang/Object;\1\0\253(Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/String;)Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;\1\0\23()Ljava/lang/Class;\1\0&(Ljava/lang/Object;)Ljava/lang/Object;\1\0'(Ljava/lang/Object;Ljava/lang/Object;)V\1\0008(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;\1\0009(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Z\1\0H(Ljava/lang/Cl"..., 1625) = 1625 30059 lseek(4, 60202034, SEEK_SET) = 60202034 30059 read(4, "PK\3\4\n\0\0\0\0\0003\246\305B\301CJ\217b\20\0\0b\20\0\0]\0\0\0", 30) = 30 30059 lseek(4, 60202157, SEEK_SET) = 60202157 30059 read(4, "\312\376\272\276\0\0\0003\0\256\10\0\5\10\0\6\10\0\25\10\0\33\1\0, can not access a protected member of class \1\0\26 using an instance of \1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\4(I)Z\1\0\25(Ljava/lang/Object;)V\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)V\1\0\30(Ljava/lang/Throwable;)V\1\0\10(TT;)TV;\1\0\6(TT;)V\1\0\t(TT;TV;)V\1\0\f(TT;TV;TV;)Z\1\0\10\1\0\6\1\0\6Class \1\0\4Code\1\0\fInnerClasses\1\0\1J\1\0\17LineNumberTable\1\0\21Ljava/lang/Class;\1\0\25Must be volatile type\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\6append\1\0\6cclass\1\0\22checkPackageAccess\1\0\rcompareAndSet\1\0\24compareAndSwapObject\1\0\22ensureMemberAccess\1\0\25ensureProtectedAccess\1\0\3get\1\0\10getClass\1\0\20getDeclaredField\1\0\fgetModifiers\1\0\7getName\1\0\21getObjectVolatile\1\0\7getType\1\0\tgetUnsafe\1\0\nisInstance\1\0\visProtected\1\0\nisVolatile\1\0\17java/lang/Class\1\0\34java/lang/ClassCastException\1\0\23java/lang/Exception\1\0 java/lang/IllegalAccessException\1\0\"java/lang/IllegalArgumentException\1\0\20java/lang/Object\1\0\32java/lang/RuntimeException\1\0\20java/lang/String\1\0\27java/lang/StringBuilder\1\0\27java/lang/reflect/Field\1\0\32java/lang/reflect/Modifier\1\0007"..., 4194) = 4194 30059 mprotect(0x7fb314410000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 60198431, SEEK_SET) = 60198431 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305BM\10f\262\323\r\0\0\323\r\0\0\"\0\0\0", 30) = 30 30059 lseek(4, 60198495, SEEK_SET) = 60198495 30059 read(4, "\312\376\272\276\0\0\0003\0\230\10\0\4\10\0\32\10\0\36\1\0\0\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\4(I)I\1\0\25(I)Ljava/lang/String;\1\0\4(I)Z\1\0\26(II)Ljava/lang/String;\1\0\25(Ljava/lang/Object;)Z\1\0%(Ljava/lang/String;)Ljava/lang/Class;\1\0\25(Ljava/lang/String;)V\1\0\25(Ljava/lang/String;)Z\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\nExceptions\1\0\17LineNumberTable\1\0\22Ljava/lang/String;\1\0\rPROXY_PACKAGE\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\1[\1\0\22[Ljava/lang/Class;\1\0\22checkPackageAccess\1\0\27checkProxyPackageAccess\1\0\rcom.sun.proxy\1\0\22ensureMemberAccess\1\0\6equals\1\0\7forName\1\0\16getClassLoader\1\0\rgetInterfaces\1\0\7getName\1\0\tgetParent\1\0\22getSecurityManager\1\0\rgetSuperclass\1\0\nisAncestor\1\0\25isNonPublicProxyClass\1\0\23isPackageAccessible\1\0\visProtected\1\0\fisProxyClass\1\0\fisSubclassOf\1\0\17java/lang/Class\1\0\25java/lang/ClassLoader\1\0 java/lang/ClassNotFoundException\1\0 java/lang/IllegalAccessException\1\0 java/lang/InstantiationException\1\0\20java/lang/Object\1\0\33java/lang/SecurityException\1\0\31java/lang/SecurityManager\1\0\20java/lang/String\1\0\20java/lang/System\1\0\32java/lang/reflect/Modifier\1\0\27java/lang/"..., 3539) = 3539 30059 lseek(4, 55582883, SEEK_SET) = 55582883 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\2y\234Ob\"\0\0b\"\0\0\35\0\0\0", 30) = 30 30059 lseek(4, 55582942, SEEK_SET) = 55582942 30059 read(4, "\312\376\272\276\0\0\0003\1g\3\0\0\377\377\10\0\f\10\0\r\10\0\16\10\0\17\10\0(\10\0:\10\0Q\10\0\203\10\0\204\10\0\213\1\0\0\1\0\24 is not an interface\1\0! is not visible from class loader\1\0\6$Proxy\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4(I)I\1\0\4(I)Z\1\0\26(II)Ljava/lang/String;\1\0\25(Ljava/lang/Object;)V\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)V\1\0((Ljava/lang/reflect/InvocationHandler;)V\1\0'([Ljava/lang/Object;)Ljava/lang/Object;\1\0\10\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\nExceptions\1\0\32GET_CLASSLOADER_PERMISSION\1\0\fInnerClasses\1\0\1J\1\0\17LineNumberTable\1\0\22Ljava/lang/Object;\1\0\22Ljava/lang/String;\1\0%Ljava/lang/reflect/InvocationHandler;\1\0PNot allowed to construct a Proxy instance that implements a non-public interface\1\0\20PROXY_PERMISSION\1\0\31RuntimeVisibleAnnotations\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\1Z\1\0\2[B\1\0\22[Ljava/lang/Class;\1\0\23[Ljava/lang/String;\1\0\naccess$000\1\0\3add\1\0\17allowNullLoader\1\0\6append\1\0\6asList\1\0\17checkPermission\1\0\20checkProxyAccess\1\0\27checkProxyPackageAccess\1\0\16com.sun.proxy.\1\0\21constructorParams\1\0\10contains\1\0\vcontainsKey\1\0\fdefineClass0\1\0\22doNewInstanceCheck\1\0\fd"..., 8802) = 8802 30059 lseek(4, 55582528, SEEK_SET) = 55582528 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\330-e\304\34\1\0\0\34\1\0\0)\0\0\0", 30) = 30 30059 lseek(4, 55582599, SEEK_SET) = 55582599 30059 read(4, "\312\376\272\276\0\0\0003\0\f\1\0S(Ljava/lang/Object;Ljava/lang/reflect/Method;[Ljava/lang/Object;)Ljava/lang/Object;\1\0\nExceptions\1\0\nSourceFile\1\0\6invoke\1\0\20java/lang/Object\1\0\23java/lang/Throwable\1\0#java/lang/reflect/InvocationHandler\7\0\5\7\0\6\7\0\7\1\0\26InvocationHandler.java\6\1\0\n\0\10\0\0\0\0\0\1\4\1\0\4\0\1\0\1\0\2\0\0\0\4\0\1\0\t\0\1\0\3\0\0\0\2\0\v", 284) = 284 30059 lseek(4, 59294302, SEEK_SET) = 59294302 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\313^d\336\353\"\0\0\353\"\0\0\33\0\0\0", 30) = 30 30059 lseek(4, 59294359, SEEK_SET) = 59294359 30059 read(4, "\312\376\272\276\0\0\0003\0017\3@\0\0\0\3\177\377\377\377\4?@\0\0\10\0\37\10\0 \1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4(F)Z\1\0\4(I)V\1\0\5(IF)V\1\0\5(II)I\1\0\25(Ljava/lang/Object;)I\1\0\25(Ljava/lang/Object;)Z\1\0'(Ljava/lang/Object;Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)I\1\0\25(Ljava/lang/String;)V\1\0\v(TK;TV;)TV;\1\0\10\1\0\6\1\0\35ALTERNATIVE_HASHING_THRESHOLD\1\0%ALTERNATIVE_HASHING_THRESHOLD_DEFAULT\1\0\4Code\1\0\rConstantValue\1\0\30DEFAULT_INITIAL_CAPACITY\1\0\23DEFAULT_LOAD_FACTOR\1\0\5Entry\1\0\1F\1\0\1I\1\0\32Illegal Initial Capacity: \1\0\25Illegal Load factor: \1\0\fInnerClasses\1\0\17LineNumberTable\1\0\22Ljava/lang/Object;\1\0\20MAXIMUM_CAPACITY\1\0\10NULL_KEY\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\1Z\1\0\36[Ljava/util/WeakHashMap$Entry;\1\0\6append\1\0\5clear\1\0\vcontainsKey\1\0\21containsNullValue\1\0\rcontainsValue\1\0\10entrySet\1\0\2eq\1\0\6equals\1\0\23expungeStaleEntries\1\0\4fill\1\0\3get\1\0\10getEntry\1\0\6getKey\1\0\10getTable\1\0\10getValue\1\0\7hasNext\1\0\4hash\1\0\10hashCode\1\0\10hashSeed\1\0\10indexFor\1\0\10isBooted\1\0\7isEmpty\1\0\5isNaN\1\0\10iterator\1\0\17java/lang/Float\1\0\"java/lang/IllegalArgumentException\1\0\16java/lang/Math\1\0\20java/lang/Object\1"..., 8939) = 8939 30059 mprotect(0x7fb314411000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 59292173, SEEK_SET) = 59292173 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305BZ\347HZ\22\10\0\0\22\10\0\0!\0\0\0", 30) = 30 30059 lseek(4, 59292236, SEEK_SET) = 59292236 30059 read(4, "\312\376\272\276\0\0\0003\0X\10\0\n\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\5()TK;\1\0\5()TV;\1\0\3()V\1\0\25(Ljava/lang/Object;)Z\1\0\10(TV;)TV;\1\0\6\1\0\1=\1\0\4Code\1\0\5Entry\1\0\1I\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\22Ljava/lang/Object;\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\3TV;\1\0\6append\1\0\6equals\1\0\3get\1\0\6getKey\1\0\10getValue\1\0\4hash\1\0\10hashCode\1\0\20java/lang/Object\1\0\27java/lang/StringBuilder\1\0\33java/lang/ref/WeakReference\1\0\rjava/util/Map\1\0\23java/util/Map$Entry\1\0\25java/util/WeakHashMap\1\0\33java/util/WeakHashMap$Entry\1\0\4next\1\0\10setValue\1\0\10toString\1\0\nunmaskNull\1\0\5value\7\0\34\7\0\35\7\0\36\7\0\37\7\0 \7\0!\7\0\"\1\0\35Ljava/util/WeakHashMap$Entry;\1\0%Ljava/util/WeakHashMap$Entry;\1\0xLjava/lang/ref/WeakReference;Ljava/util/Map$Entry;\1\0\24()Ljava/lang/Object;\1\0&(Ljava/lang/Object;)Ljava/lang/Object;\1\0-(Ljava/lang/Object;)Ljava/lang/StringBuilder;\1\0-(Ljava/lang/String;)Ljava/lang/StringBuilder;\1\0003(Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;)V\1\0p(Ljava/lang/Object;TV;Ljava/lang/ref/ReferenceQueue\1\0\4Code\1\0\rConstantValue\1\0\5Entry\1\0\nExceptions\1\0\fInnerClasses\1\0\1J\1\0\17LineNumberTable\1\0\22Ljava/lang/Object;\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\5clear\1\0\vcontainsKey\1\0\rcontainsValue\1\0\22defaultWriteObject\1\0\10entrySet\1\0\6equals\1\0\3get\1\0\10hashCode\1\0\7isEmpty\1\0\23java/io/IOException\1\0\32java/io/ObjectOutputStream\1\0\24java/io/Serializable\1\0\36java/lang/NullPointerException\1\0\20java/lang/Object\1\0\23java/lang/Throwable\1\0\25java/util/Collections\1\0,java/util/Collections$SynchronizedCollection\1\0%java/util/Collections$SynchronizedMap\1\0%java/util/Collections$SynchronizedSet\1\0\rjava/util/Map\1\0\23java/util/Map$Entry\1\0\6keySet\1\0\1m\1\0\5mutex\1\0\3put\1\0\6putAll\1\0\6remove\1\0\20serialVersionUID\1\0\4size\1\0\10toString\1\0\6values\1\0\vwriteObject\5\33s\371\tKK9{\7\0\34\7\0\35\7\0\36\7\0\37\7\0 \7\0!\7\0\"\7\0#\7\0$\7\0%\7\0&\7\0'\1\0\26Ljava/util/Collection;\1\0\33Ljava/util/Collection;\1\0\17Ljava/util/Map;\1\0\27Ljava/util/Map;\1\0\17Ljava/util/Set;\1\0\24Ljava/util/Set;\1\0.Ljava/util/Set\1\0\4Code\1\0\nExceptions\1\0\17LineNumberTable\1\0\22Null output stream\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\rStream closed\1\0\1Z\1\0\2[C\1\0\6append\1\0\tautoFlush\1\0\7charOut\1\0\vcharsetName\1\0\ncheckError\1\0\nclearError\1\0\5close\1\0\7closing\1\0\rcurrentThread\1\0\nensureOpen\1\0\5false\1\0\5flush\1\0\vflushBuffer\1\0\7forName\1\0\6format\1\0\tformatter\1\0\ngetDefault\1\0\7indexOf\1\0\tinterrupt\1\0\26java/io/BufferedWriter\1\0\21java/io/Closeable\1\0\35java/io/FileNotFoundException\1\0\30java/io/FileOutputStream\1\0\32java/io/FilterOutputStream\1\0\23java/io/IOException\1\0\36java/io/InterruptedIOException\1\0\24java/io/OutputStream\1\0\32java/io/OutputStreamWriter\1\0\23java/io/PrintStream\1\0$java/io/UnsupportedEncodingExcep"..., 9013) = 9013 30059 mprotect(0x7fb314412000, 8192, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb314414000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 60188372, SEEK_SET) = 60188372 30059 read(4, "PK\3\4\n\0\0\0\0\0003\246\305B!s*N\241\3\0\0\241\3\0\0 \0\0\0", 30) = 30 30059 lseek(4, 60188434, SEEK_SET) = 60188434 30059 read(4, "\312\376\272\276\0\0\0003\0)\1\0\3()V\1\0\4(I)V\1\0\5([B)V\1\0\7([BII)V\1\0\6\1\0\4Code\1\0\nExceptions\1\0\17LineNumberTable\1\0\nSourceFile\1\0\rStackMapTable\1\0\5close\1\0\5flush\1\0\32java/io/FilterOutputStream\1\0\23java/io/IOException\1\0\24java/io/OutputStream\1\0#java/lang/IndexOutOfBoundsException\1\0\3out\1\0\5write\7\0\r\7\0\16\7\0\17\7\0\20\1\0\26Ljava/io/OutputStream;\1\0\31(Ljava/io/OutputStream;)V\f\0\21\0\27\f\0\5\0\1\f\0\v\0\1\f\0\f\0\1\f\0\22\0\2\f\0\22\0\4\t\0\23\0\31\n\0\23\0\34\n\0\23\0\35\n\0\23\0\36\n\0\25\0\32\n\0\25\0\33\n\0\25\0\34\n\0\25\0\35\n\0\26\0\32\1\0\27FilterOutputStream.java\0!\0\23\0\25\0\0\0\1\0\4\0\21\0\27\0\0\0\6\0\1\0\5\0\30\0\1\0\6\0\0\0*\0\2\0\2\0\0\0\n*\267\0#*+\265\0\37\261\0\0\0\1\0\10\0\0\0\16\0\3\0\0\0<\0\4\0=\0\t\0>\0\1\0\22\0\2\0\2\0\6\0\0\0%\0\2\0\2\0\0\0\t*\264\0\37\33\266\0&\261\0\0\0\1\0\10\0\0\0\n\0\2\0\0\0M\0\10\0N\0\7\0\0\0\4\0\1\0\24\0\1\0\22\0\3\0\2\0\6\0\0\0%\0\4\0\2\0\0\0\t*+\3+\276\266\0\"\261\0\0\0\1\0\10\0\0\0\n\0\2\0\0\0a\0\10\0b\0\7\0\0\0\4\0\1\0\24\0\1\0\22\0\4\0\2\0\6\0\0\0o\0\4\0\5\0\0\0003\34\35\200+\276\35\34`d\200\34\35`\200\234\0\v\273\0\26Y\267\0'\277\0036\4\25\4\35\242\0\23*+\34\25\4`3\266\0!\204\4\1\247\377\355\261\0\0\0\2\0\n\0\0\0\n\0\3\31\374\0\2\1\372\0\25\0\10\0\0\0\32\0\6\0\0\0y\0\21\0z\0\31\0|\0\"\0}\0,\0|\0002\0\177\0\7\0\0\0\4\0\1\0\24\0\1\0\f\0\1\0\2\0\6\0\0\0$\0\1\0\1\0\0\0\10*\264\0\37\266\0%\261\0\0\0\1\0\10\0\0\0\n\0\2\0\0\0\214\0\7\0\215\0\7\0\0\0\4\0\1\0\24\0\1\0\v\0\1\0\2\0\6\0\0\0M\0\1\0\2\0\0\0\20*\266\0 \247\0\4L*\264\0\37\266\0$\261\0\1\0\0\0\4\0\7\0\24\0\2\0\n\0\0\0\7\0\2G\7\0\24\0\0\10\0\0\0\26\0\5\0\0\0\235\0\4\0\237\0\7\0\236\0\10\0\240\0\17\0\241\0\7\0\0\0\4\0\1\0\24\0\1\0\t\0\0\0\2\0(", 929) = 929 30059 lseek(4, 60187029, SEEK_SET) = 60187029 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\221 )\r\377\4\0\0\377\4\0\0\"\0\0\0", 30) = 30 30059 lseek(4, 60187093, SEEK_SET) = 60187093 30059 read(4, "\312\376\272\276\0\0\0003\0;\10\0\7\1\0\3()V\1\0\4(I)V\1\0\25(Ljava/lang/String;)V\1\0\7([BII)V\1\0\6\1\0\20Buffer size <= 0\1\0\4Code\1\0\nExceptions\1\0\1I\1\0\17LineNumberTable\1\0\nSourceFile\1\0\rStackMapTable\1\0\2[B\1\0\tarraycopy\1\0\3buf\1\0\5count\1\0\5flush\1\0\vflushBuffer\1\0\34java/io/BufferedOutputStream\1\0\32java/io/FilterOutputStream\1\0\23java/io/IOException\1\0\24java/io/OutputStream\1\0\"java/lang/IllegalArgumentException\1\0\20java/lang/System\1\0\3out\1\0\5write\7\0\24\7\0\25\7\0\26\7\0\27\7\0\30\7\0\31\1\0\26Ljava/io/OutputStream;\1\0\31(Ljava/io/OutputStream;)V\1\0\32(Ljava/io/OutputStream;I)V\1\0*(Ljava/lang/Object;ILjava/lang/Object;II)V\f\0\21\0\n\f\0\20\0\16\f\0\32\0\"\f\0\22\0\2\f\0\23\0\2\f\0\33\0\5\f\0\6\0#\f\0\6\0$\f\0\6\0\4\f\0\17\0%\t\0\34\0&\t\0\34\0'\t\0\34\0(\n\0\34\0*\n\0\34\0-\n\0\35\0,\n\0\37\0)\n\0\37\0+\n\0 \0.\n\0!\0/\1\0\31BufferedOutputStream.java\0!\0\34\0\35\0\0\0\2\0\4\0\20\0\16\0\0\0\4\0\21\0\n\0\0\0\6\0\1\0\6\0#\0\1\0\10\0\0\0%\0\3\0\2\0\0\0\t*+\21 \0\267\0004\261\0\0\0\1\0\v\0\0\0\n\0\2\0\0\0;\0\10\0<\0\1\0\6\0$\0\1\0\10\0\0\0Y\0\3\0\3\0\0\0\33*+\267\0005\34\235\0\r\273\0 Y\22\1\267\0008\277*\34\274\10\265\0001\261\0\0\0\2\0\r\0\0\0\20\0\1\377\0\23\0\3\7\0\34\7\0\37\1\0\0\0\v\0\0\0\26\0\5\0\0\0H\0\5\0I\0\t\0J\0\23\0L\0\32\0M\0\2\0\23\0\2\0\2\0\10\0\0\0J\0\4\0\1\0\0\0\35*\264\0000\236\0\30*\264\0002*\264\0001\3*\264\0000\266\0007*\3\265\0000\261\0\0\0\2\0\r\0\0\0\3\0\1\34\0\v\0\0\0\22\0\4\0\0\0Q\0\7\0R\0\27\0S\0\34\0U\0\t\0\0\0\4\0\1\0\36\0!\0\33\0\3\0\2\0\10\0\0\0P\0\5\0\2\0\0\0#*\264\0000*\264\0001\276\241\0\7*\267\0003*\264\0001*Y\264\0000Z\4`\265\0000\33\221T\261\0\0\0"..., 1279) = 1279 30059 lseek(4, 60184707, SEEK_SET) = 60184707 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B&\200\323\4\324\10\0\0\324\10\0\0 \0\0\0", 30) = 30 30059 lseek(4, 60184769, SEEK_SET) = 60184769 30059 read(4, "\312\376\272\276\0\0\0003\0W\10\0\21\10\0\22\10\0\23\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\4(I)V\1\0\25(Ljava/lang/Object;)V\1\0\25(Ljava/lang/String;)V\1\0\30(Ljava/lang/Throwable;)V\1\0\7([CII)V\1\0\6\1\0\4Code\1\0\nExceptions\1\0\17LineNumberTable\1\0\nSourceFile\1\0\rStackMapTable\1\0\7charset\1\0\17charset encoder\1\0\vcharsetName\1\0\5close\1\0\5flush\1\0\vflushBuffer\1\0\25forOutputStreamWriter\1\0\vgetEncoding\1\0\23java/io/IOException\1\0\24java/io/OutputStream\1\0\32java/io/OutputStreamWriter\1\0$java/io/UnsupportedEncodingException\1\0\16java/io/Writer\1\0\17java/lang/Error\1\0\36java/lang/NullPointerException\1\0\20java/lang/String\1\0\30java/nio/charset/Charset\1\0\37java/nio/charset/CharsetEncoder\1\0\2se\1\0\30sun/nio/cs/StreamEncoder\1\0\5write\7\0\31\7\0\32\7\0\33\7\0\34\7\0\35\7\0\36\7\0\37\7\0 \7\0!\7\0\"\7\0$\1\0\32Lsun/nio/cs/StreamEncoder;\1\0\31(Ljava/io/OutputStream;)V\1\0\27(Ljava/lang/String;II)V\1\0+(Ljava/io/OutputStream;Ljava/lang/String;)V\1\0003(Ljava/io/OutputStream;Ljava/nio/charset/Charset;)V\1\0:(Ljava/io/OutputStream;Ljava/nio/charset/CharsetEncoder;)V\1\0V(Ljava/io/OutputStream;Ljava/lang/Object;Ljava/lang/String;)Lsun/nio/cs/StreamEncoder;\1\0^(Lja"..., 2260) = 2260 30059 lseek(4, 60182332, SEEK_SET) = 60182332 30059 read(4, "PK\3\4\n\0\0\0\0\0003\246\305ByN1$\25\t\0\0\25\t\0\0\24\0\0\0", 30) = 30 30059 lseek(4, 60182382, SEEK_SET) = 60182382 30059 read(4, "\312\376\272\276\0\0\0003\0_\10\0%\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\4(I)V\1\0\10(II[CI)V\1\0\25(Ljava/lang/Object;)V\1\0\25(Ljava/lang/String;)V\1\0\5([C)V\1\0\7([CII)V\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\nExceptions\1\0\1I\1\0\17LineNumberTable\1\0\22Ljava/lang/Object;\1\0\nSourceFile\1\0\rStackMapTable\1\0\2[C\1\0\6append\1\0\5close\1\0\5flush\1\0\10getChars\1\0\21java/io/Closeable\1\0\21java/io/Flushable\1\0\23java/io/IOException\1\0\16java/io/Writer\1\0\24java/lang/Appendable\1\0\26java/lang/CharSequence\1\0\36java/lang/NullPointerException\1\0\20java/lang/Object\1\0\20java/lang/String\1\0\23java/lang/Throwable\1\0\6length\1\0\4lock\1\0\4null\1\0\vsubSequence\1\0\10toString\1\0\5write\1\0\vwriteBuffer\1\0\17writeBufferSize\3\0\0\4\0\7\0\24\7\0\31\7\0\32\7\0\33\7\0\34\7\0\35\7\0\36\7\0\37\7\0 \7\0!\7\0\"\1\0\23(C)Ljava/io/Writer;\1\0\31(C)Ljava/lang/Appendable;\1\0\34(II)Ljava/lang/CharSequence;\1\0\27(Ljava/lang/String;II)V\1\0*(Ljava/lang/CharSequence;)Ljava/io/Writer;\1\0,(Ljava/lang/CharSequence;II)Ljava/io/Writer;\1\0000(Ljava/lang/CharSequence;)Ljava/lang/Appendable;\1\0002(Ljava/lang/CharSequence;II)Ljava/lang/Appendable;\f\0*\0\17\f\0)\0\24\f\0$\0\21\f\0#\0\2\f\0\v\0\4\f\0(\0\5\f\0\30\0\6\f\0(\0\n\f\0\25\0007\f\0&\0009\f\0'\0\3\f\0(\0\10\f"..., 2325) = 2325 30059 lseek(4, 60175163, SEEK_SET) = 60175163 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305BJ6\346\273\305\33\0\0\305\33\0\0\36\0\0\0", 30) = 30 30059 lseek(4, 60175223, SEEK_SET) = 60175223 30059 read(4, "\312\376\272\276\0\0\0003\1\36\10\0\35\1\0\23$assertionsDisabled\1\0\3()C\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4()[B\1\0\4(I)V\1\0\10(II[CI)V\1\0\25(Ljava/lang/Object;)V\1\0\25(Ljava/lang/String;)V\1\0\25(Ljava/lang/String;)Z\1\0\7([BII)V\1\0\7([CII)V\1\0\10\1\0\6\1\0\1C\1\0\4Code\1\0\rConstantValue\1\0\30DEFAULT_BYTE_BUFFER_SIZE\1\0\nExceptions\1\0\1I\1\0\17LineNumberTable\1\0\22Ljava/lang/Object;\1\0\7REPLACE\1\0\nSourceFile\1\0\rStackMapTable\1\0\rStream closed\1\0\1Z\1\0\10allocate\1\0\5array\1\0\varrayOffset\1\0\2bb\1\0\2ch\1\0\7charset\1\0\5clear\1\0\5close\1\0\2cs\1\0\16defaultCharset\1\0\26desiredAssertionStatus\1\0\6encode\1\0\7encoder\1\0\fencodingName\1\0\nensureOpen\1\0\4flip\1\0\5flush\1\0\vflushBuffer\1\0\21flushLeftoverChar\1\0\nforEncoder\1\0\7forName\1\0\25forOutputStreamWriter\1\0\3get\1\0\10getChars\1\0\vgetEncoding\1\0\fhasRemaining\1\0\20haveLeftoverChar\1\0\16historicalName\1\0\timplClose\1\0\timplFlush\1\0\17implFlushBuffer\1\0\timplWrite\1\0\6isOpen\1\0\nisOverflow\1\0\visSupported\1\0\visUnderflow\1\0\23java/io/IOException\1\0\24java/io/OutputStream\1\0$java/io/UnsupportedEncodingException\1\0\16java/io/Writer\1\0\30java/lang/AssertionError\1\0\17java/lang/Class\1\0#java/lang/IndexOut"..., 7109) = 7109 30059 lseek(4, 60174196, SEEK_SET) = 60174196 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B\360t6y~\3\0\0~\3\0\0+\0\0\0", 30) = 30 30059 lseek(4, 60174269, SEEK_SET) = 60174269 30059 read(4, "\312\376\272\276\0\0\0003\0(\1\0\24()Ljava/lang/String;\1\0\3()V\1\0&(Ljava/lang/String;)Ljava/lang/String;\1\0\25(Ljava/lang/String;)V\1\0'(Ljava/lang/String;Ljava/lang/String;)V\1\0\6\1\0\4Code\1\0\17LineNumberTable\1\0\22Ljava/lang/String;\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\ndefaultVal\1\0\vgetProperty\1\0\20java/lang/Object\1\0\20java/lang/String\1\0\20java/lang/System\1\0\36java/security/PrivilegedAction\1\0\3run\1\0%sun/security/action/GetPropertyAction\1\0\7theProp\7\0\17\7\0\20\7\0\21\7\0\22\7\0\24\1\0FLjava/lang/Object;Ljava/security/PrivilegedAction;\1\0\24()Ljava/lang/Object;\f\0\r\0\t\f\0\25\0\t\f\0\6\0\2\f\0\23\0\1\f\0\16\0\3\t\0\32\0\35\t\0\32\0\36\n\0\26\0\37\n\0\30\0!\n\0\32\0 \1\0\26GetPropertyAction.java\0!\0\32\0\26\0\1\0\31\0\2\0\2\0\25\0\t\0\0\0\2\0\r\0\t\0\0\0\4\0\1\0\6\0\4\0\1\0\7\0\0\0*\0\2\0\2\0\0\0\n*\267\0$*+\265\0#\261\0\0\0\1\0\10\0\0\0\16\0\3\0\0\0<\0\4\0=\0\t\0>\0\1\0\6\0\5\0\1\0\7\0\0\0003\0\2\0\3\0\0\0\17*\267\0$*+\265\0#*,\265\0\"\261\0\0\0\1\0\10\0\0\0\22\0\4\0\0\0G\0\4\0H\0\t\0I\0\16\0J\0\1\0\23\0\1\0\1\0\7\0\0\0C\0\1\0\2\0\0\0\25*\264\0#\270\0%L+\307\0\n*\264\0\"\247\0\4+\260\0\0\0\2\0\f\0\0\0\f\0\2\374\0\23\7\0\27@\7\0\27\0\10\0\0\0\n\0\2\0\0\0T\0\10\0U\20A\0\23\0\34\0\1\0\7\0\0\0\35\0\1\0\1\0\0\0\5*\266\0&\260\0\0\0\1\0\10\0\0\0\6\0\1\0\0\0001\0\2\0\v\0\0\0\2\0'\0\n\0\0\0\2\0\33", 894) = 894 30059 lseek(4, 60170754, SEEK_SET) = 60170754 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B\331\t5t3\r\0\0003\r\0\0!\0\0\0", 30) = 30 30059 lseek(4, 60170817, SEEK_SET) = 60170817 30059 read(4, "\312\376\272\276\0\0\0003\0\241\1\0\23$assertionsDisabled\1\0\3()C\1\0\3()I\1\0\3()V\1\0\3()Z\1\0\4()[B\1\0\4()[C\1\0\4(C)Z\1\0\10(C[CII)I\1\0\5(II)I\1\0\5([B)V\1\0\5([B)Z\1\0\t([CII[B)I\1\0\10\1\0\6\1\0\1B\1\0\4Code\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\10OVERFLOW\1\0\nSourceFile\1\0\rStackMapTable\1\0\tUNDERFLOW\1\0\1Z\1\0\2[B\1\0\2[C\1\0\5array\1\0\varrayOffset\1\0\tcanEncode\1\0\26desiredAssertionStatus\1\0\6encode\1\0\17encodeArrayLoop\1\0\20encodeBufferLoop\1\0\nencodeLoop\1\0\5error\1\0\3get\1\0\10hasArray\1\0\fhasRemaining\1\0\17implReplaceWith\1\0\17isHighSurrogate\1\0\22isLegalReplacement\1\0\16isLowSurrogate\1\0\30java/lang/AssertionError\1\0\23java/lang/Character\1\0\17java/lang/Class\1\0\16java/lang/Math\1\0\23java/lang/Throwable\1\0\23java/nio/ByteBuffer\1\0\23java/nio/CharBuffer\1\0\37java/nio/charset/CharsetEncoder\1\0\34java/nio/charset/CoderResult\1\0\5limit\1\0\3min\1\0\5parse\1\0\10position\1\0\3put\1\0\4repl\1\0\3sgp\1\0\27sun/nio/cs/ArrayEncoder\1\0\24sun/nio/cs/Surrogate\1\0\33sun/nio/cs/Surrogate$Parser\1\0\23sun/nio/cs/US_ASCII\1\0\25sun/nio/cs/US_ASCII$1\1\0\33sun/nio/cs/US_ASCII$Encoder\1\0\20unmappableResult\7\0\31\7\0\32\7\0+\7\0,\7\0-\7\0.\7\0/\7\0000\7\0001\7\0002\7\0003\7\0;\7\0<\7\0=\7\0>\7\0?\7\0@\1\0\36Ljava/nio/charset/C"..., 3379) = 3379 30059 mprotect(0x7fb314415000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 44428430, SEEK_SET) = 44428430 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B\326\376\270\313\221\0\0\0\221\0\0\0\35\0\0\0", 30) = 30 30059 lseek(4, 44428489, SEEK_SET) = 44428489 30059 read(4, "\312\376\272\276\0\0\0003\0\t\1\0\t([CII[B)I\1\0\nSourceFile\1\0\6encode\1\0\20java/lang/Object\1\0\27sun/nio/cs/ArrayEncoder\7\0\4\7\0\5\1\0\21ArrayEncoder.java\6\1\0\7\0\6\0\0\0\0\0\1\4\1\0\3\0\1\0\0\0\1\0\2\0\0\0\2\0\10", 145) = 145 30059 lseek(4, 60163064, SEEK_SET) = 60163064 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\2428z\36\307\35\0\0\307\35\0\0%\0\0\0", 30) = 30 30059 lseek(4, 60163131, SEEK_SET) = 60163131 30059 read(4, "\312\376\272\276\0\0\0003\1_\10\0\36\10\0\37\10\0\"\10\0#\10\0&\10\0'\10\0*\10\0-\10\0/\10\0000\10\0001\10\0002\10\0006\10\0007\10\0G\1\0\23$assertionsDisabled\1\0\3()F\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4()[B\1\0\4(C)Z\1\0\5(II)V\1\0\25(Ljava/lang/Object;)V\1\0\25(Ljava/lang/String;)V\1\0\25(Ljava/lang/String;)Z\1\0\5([B)V\1\0\5([B)Z\1\0\16, new state = \1\0\0031.4\1\0\10\1\0\6\1\0\6CODING\1\0\nCODING_END\1\0\4Code\1\0\rConstantValue\1\0\20Current state = \1\0\21Empty replacement\1\0\nExceptions\1\0\1F\1\0\7FLUSHED\1\0\1I\1\0\6IGNORE\1\0\23Illegal replacement\1\0\17LineNumberTable\1\0 Non-positive averageBytesPerChar\1\0\34Non-positive maxBytesPerChar\1\0\vNull action\1\0\20Null replacement\1\0\10OVERFLOW\1\0\7REPLACE\1\0\6REPORT\1\0\5RESET\1\0\24Replacement too long\1\0\tST_CODING\1\0\6ST_END\1\0\nST_FLUSHED\1\0\10ST_RESET\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\tUNDERFLOW\1\0\1Z\1\0\2[B\1\0\23[Ljava/lang/String;\1\0\10allocate\1\0\6append\1\0\natBugLevel\1\0\23averageBytesPerChar\1\0+averageBytesPerChar exceeds maxBytesPerChar\1\0\rcachedDecoder\1\0\tcanEncode\1\0\7charset\1\0\6decode\1\0\26desiredAssertionStatus\1\0\tduplicate\1\0\6encode\1\0\nencodeLoop\1\0\4flip\1\0\5flush\1\0\3get\1\0\fhasRemaining\1\0\timplFlush\1\0\24implOnMalfor"..., 7623) = 7623 30059 lseek(4, 60160983, SEEK_SET) = 60160983 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B\227I\236\336\342\7\0\0\342\7\0\0!\0\0\0", 30) = 30 30059 lseek(4, 60161046, SEEK_SET) = 60161046 30059 read(4, "\312\376\272\276\0\0\0003\0T\1\0\23$assertionsDisabled\1\0\3()C\1\0\3()I\1\0\3()V\1\0\3()Z\1\0\4(C)Z\1\0\5(CC)I\1\0\10(C[CII)I\1\0\10\1\0\6\1\0\4Code\1\0\1I\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\nSourceFile\1\0\rStackMapTable\1\0\tUNDERFLOW\1\0\1Z\1\0\tcharacter\1\0\26desiredAssertionStatus\1\0\5error\1\0\3get\1\0\fhasRemaining\1\0\tincrement\1\0\17isHighSurrogate\1\0\16isLowSurrogate\1\0\6isPair\1\0\30java/lang/AssertionError\1\0\23java/lang/Character\1\0\17java/lang/Class\1\0\20java/lang/Object\1\0\23java/nio/CharBuffer\1\0\34java/nio/charset/CoderResult\1\0\22malformedForLength\1\0\5parse\1\0\24sun/nio/cs/Surrogate\1\0\33sun/nio/cs/Surrogate$Parser\1\0\vtoCodePoint\1\0\23unmappableForLength\1\0\20unmappableResult\7\0\34\7\0\35\7\0\36\7\0\37\7\0 \7\0!\7\0$\7\0%\1\0\36Ljava/nio/charset/CoderResult;\1\0\31(CLjava/nio/CharBuffer;)I\1\0 ()Ljava/nio/charset/CoderResult;\1\0!(I)Ljava/nio/charset/CoderResult;\f\0\23\0\f\f\0\1\0\22\f\0\33\0\22\f\0\21\0001\f\0\25\0001\f\0\26\0\2\f\0\n\0\4\f\0\24\0\5\f\0\27\0\5\f\0\31\0\6\f\0\32\0\6\f\0&\0\7\f\0\"\0004\f\0'\0004\t\0.\0008\t\0000\0005\t\0000\0006\t\0000\0007\t\0000\0009\n\0)\0;\n\0*\0>\n\0*\0?\n\0*\0@\n\0+\0<\n\0,\0;\n\0-\0:\n\0-\0=\n\0.\0A\n\0.\0B\1\0\6Parser\1\0\16Surrogate.java\0!\0000\0,\0\0\0\4\0\2\0\23\0\f\0\0\0\2\0\25\0001\0\0\0\2\0\33\0\22\0\0\20\30\0\1\0\22\0\0\0\t\0\1\0\n\0\4\0\1\0\v\0\0\0,\0\2\0\1\0\0\0\f*\267\0M*\262\0C\265\0G\261\0\0\0\1\0\16"..., 2018) = 2018 30059 lseek(4, 60159341, SEEK_SET) = 60159341 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B\327\371\375\2022\6\0\0002\6\0\0\32\0\0\0", 30) = 30 30059 lseek(4, 60159397, SEEK_SET) = 60159397 30059 read(4, "\312\376\272\276\0\0\0003\0S\3\0\0\330\0\3\0\0\333\377\3\0\0\334\0\3\0\0\337\377\1\0\23$assertionsDisabled\1\0\3()V\1\0\3()Z\1\0\4(C)Z\1\0\5(CC)I\1\0\4(I)C\1\0\4(I)Z\1\0\10\1\0\6\1\0\1C\1\0\4Code\1\0\rConstantValue\1\0\tGenerator\1\0\1I\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\3MAX\1\0\10MAX_HIGH\1\0\7MAX_LOW\1\0\3MIN\1\0\10MIN_HIGH\1\0\7MIN_LOW\1\0\nSourceFile\1\0\rStackMapTable\1\0\10UCS4_MAX\1\0\10UCS4_MIN\1\0\1Z\1\0\26desiredAssertionStatus\1\0\4high\1\0\rhighSurrogate\1\0\2is\1\0\6isHigh\1\0\17isHighSurrogate\1\0\5isLow\1\0\16isLowSurrogate\1\0\30isSupplementaryCodePoint\1\0\30java/lang/AssertionError\1\0\23java/lang/Character\1\0\17java/lang/Class\1\0\20java/lang/Object\1\0\3low\1\0\flowSurrogate\1\0\tneededFor\1\0\24sun/nio/cs/Surrogate\1\0\36sun/nio/cs/Surrogate$Generator\1\0\33sun/nio/cs/Surrogate$Parser\1\0\vtoCodePoint\1\0\6toUCS4\3\0\1\0\0\3\0\20\377\377\7\0)\7\0*\7\0+\7\0,\7\0000\7\0001\7\0002\f\0\5\0\37\f\0\r\0\6\f\0 \0\7\f\0%\0\10\f\0'\0\10\f\0003\0\t\f\0\"\0\n\f\0.\0\n\f\0(\0\v\t\0;\0>\n\0007\0?\n\0008\0A\n\0008\0B\n\0008\0C\n\0008\0D\n\0008\0E\n\0008\0F\n\0009\0@\n\0:\0?\1\0\6Parser\1\0\16Surrogate.java\0!\0;\0:\0\0\0\t\0\31\0\31\0\16\0\1\0\20\0\0\0\2\0\1\0\31\0\26\0\16\0\1\0\20\0\0\0\2\0\2\0\31\0\32\0\16\0\1\0\20\0\0\0\2\0\3\0\31\0\27\0\16\0\1\0\20\0\0\0\2\0\4\0\31\0\30\0\16\0\1\0\20\0\0\0\2\0\1\0\31\0\25\0\16\0\1\0\20\0\0\0\2\0\4\0\31\0\36\0\22\0\1\0\20\0\0\0\2\0005\0\31\0\35\0\22\0\1\0\20\0\0\0\2\0006\20\30\0\5\0\37\0\0\0\t\0\2\0\r\0\6\0\1\0\17\0\0\0\35\0\1\0\1\0\0\0\5*\267\0P\261\0\0\0\1\0\24\0\0\0\6\0\1\0\0\0"..., 1586) = 1586 30059 lseek(4, 60232067, SEEK_SET) = 60232067 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305Bz\363\37\242\214\v\0\0\214\v\0\0\"\0\0\0", 30) = 30 30059 lseek(4, 60232131, SEEK_SET) = 60232131 30059 read(4, "\312\376\272\276\0\0\0003\0\213\10\0\33\10\0\34\10\0\37\10\0 \10\0\"\10\0$\1\0\23$assertionsDisabled\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4(I)V\1\0\5(II)V\1\0\10\1\0\6\1\0\fCR_ERROR_MIN\1\0\fCR_MALFORMED\1\0\vCR_OVERFLOW\1\0\fCR_UNDERFLOW\1\0\rCR_UNMAPPABLE\1\0\4Code\1\0\rConstantValue\1\0\nExceptions\1\0\1I\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\tMALFORMED\1\0\10OVERFLOW\1\0\nSourceFile\1\0\rStackMapTable\1\0\tUNDERFLOW\1\0\nUNMAPPABLE\1\0\1Z\1\0\1[\1\0\23[Ljava/lang/String;\1\0\1]\1\0\naccess$200\1\0\6append\1\0\26desiredAssertionStatus\1\0\7isError\1\0\visMalformed\1\0\nisOverflow\1\0\visUnderflow\1\0\fisUnmappable\1\0\30java/lang/AssertionError\1\0\17java/lang/Class\1\0\20java/lang/Object\1\0\20java/lang/String\1\0\27java/lang/StringBuilder\1\0'java/lang/UnsupportedOperationException\1\0 java/nio/BufferOverflowException\1\0!java/nio/BufferUnderflowException\1\0)java/nio/charset/CharacterCodingException\1\0\34java/nio/charset/CoderResult\1\0\36java/nio/charset/CoderResult$1\1\0\36java/nio/charset/CoderResult$2\1\0\"java/nio/charset/CoderResult$Cache\1\0(java/nio/charset/MalformedInputException\1\0-java/nio/charset/UnmappableCharacterException\1\0\6length\1\0"..., 2956) = 2956 30059 lseek(4, 60231476, SEEK_SET) = 60231476 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\264_\337\234\r\2\0\0\r\2\0\0$\0\0\0", 30) = 30 30059 lseek(4, 60231542, SEEK_SET) = 60231542 30059 read(4, "\312\376\272\276\0\0\0003\0\30\1\0\3()V\1\0\6\1\0\4Code\1\0\17EnclosingMethod\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\nSourceFile\1\0\6create\1\0\34java/nio/charset/CoderResult\1\0\36java/nio/charset/CoderResult$1\1\0\"java/nio/charset/CoderResult$Cache\7\0\t\7\0\n\7\0\v\1\0!(I)Ljava/nio/charset/CoderResult;\1\0%(IILjava/nio/charset/CoderResult$1;)V\1\0#(Ljava/nio/charset/CoderResult$1;)V\f\0\2\0\20\f\0\2\0\21\n\0\f\0\22\n\0\16\0\23\1\0\5Cache\1\0\20CoderResult.java\0000\0\r\0\16\0\0\0\0\0\2\0\0\0\2\0\1\0\1\0\3\0\0\0\36\0\2\0\1\0\0\0\6*\1\267\0\25\261\0\0\0\1\0\6\0\0\0\6\0\1\0\0\0\336\0\1\0\10\0\17\0\1\0\3\0\0\0#\0\5\0\2\0\0\0\v\273\0\fY\5\33\1\267\0\24\260\0\0\0\1\0\6\0\0\0\6\0\1\0\0\0\340\0\3\0\7\0\0\0\2\0\27\0\4\0\0\0\4\0\f\0\0\0\5\0\0\0\22\0\2\0\r\0\0\0\0\0\10\0\16\0\f\0\26\4\n", 525) = 525 30059 lseek(4, 60229963, SEEK_SET) = 60229963 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\367u(\254\243\5\0\0\243\5\0\0(\0\0\0", 30) = 30 30059 lseek(4, 60230033, SEEK_SET) = 60230033 30059 read(4, "\312\376\272\276\0\0\0003\0E\10\0\n\1\0\3()V\1\0\4(I)V\1\0\25(Ljava/lang/Object;)V\1\0\25(Ljava/lang/String;)V\1\0\6\1\0\4Code\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\23Non-positive length\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\naccess$200\1\0\5cache\1\0\6create\1\0\3get\1\0\"java/lang/IllegalArgumentException\1\0\21java/lang/Integer\1\0\20java/lang/Object\1\0\33java/lang/ref/WeakReference\1\0\34java/nio/charset/CoderResult\1\0\36java/nio/charset/CoderResult$1\1\0\"java/nio/charset/CoderResult$Cache\1\0\21java/util/HashMap\1\0\rjava/util/Map\1\0\3put\7\0\22\7\0\23\7\0\24\7\0\25\7\0\26\7\0\27\7\0\30\7\0\31\7\0\32\1\0\17Ljava/util/Map;\1\0aLjava/util/Map;>;\1\0\24()Ljava/lang/Object;\1\0!(I)Ljava/nio/charset/CoderResult;\1\0#(Ljava/nio/charset/CoderResult$1;)V\1\0&(Ljava/lang/Object;)Ljava/lang/Object;\1\0E(Ljava/nio/charset/CoderResult$Cache;I)Ljava/nio/charset/CoderResult;\1\0008(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;\f\0\17\0%\f\0\6\0\2\f\0\6\0\3\f\0\21\0'\f\0\6\0\4\f\0\6\0\5\f\0\20\0(\f\0\21\0(\f\0\21\0*\f\0\33\0,\t\0\"\0-\n\0\34\0002\n\0\35\0/\n\0\36\0.\n\0\37\0000\n\0\37\0001\n\0\"\0.\n\0\"\0003\n\0\"\0004\n\0#\0.\v\0$\0005\v\0$\0006\1\0\5Ca"..., 1443) = 1443 30059 lseek(4, 60229328, SEEK_SET) = 60229328 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\304\221\316\0109\2\0\0009\2\0\0$\0\0\0", 30) = 30 30059 lseek(4, 60229394, SEEK_SET) = 60229394 30059 read(4, "\312\376\272\276\0\0\0003\0\32\1\0\3()V\1\0\6\1\0\4Code\1\0\17EnclosingMethod\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\nSourceFile\1\0\6create\1\0\34java/nio/charset/CoderResult\1\0\36java/nio/charset/CoderResult$1\1\0\36java/nio/charset/CoderResult$2\1\0\"java/nio/charset/CoderResult$Cache\7\0\t\7\0\n\7\0\v\7\0\f\1\0!(I)Ljava/nio/charset/CoderResult;\1\0%(IILjava/nio/charset/CoderResult$1;)V\1\0#(Ljava/nio/charset/CoderResult$1;)V\f\0\2\0\22\f\0\2\0\23\n\0\r\0\24\n\0\20\0\25\1\0\5Cache\1\0\20CoderResult.java\0000\0\17\0\20\0\0\0\0\0\2\0\0\0\2\0\1\0\1\0\3\0\0\0\36\0\2\0\1\0\0\0\6*\1\267\0\27\261\0\0\0\1\0\6\0\0\0\6\0\1\0\0\0\356\0\1\0\10\0\21\0\1\0\3\0\0\0#\0\5\0\2\0\0\0\v\273\0\rY\6\33\1\267\0\26\260\0\0\0\1\0\6\0\0\0\6\0\1\0\0\0\360\0\3\0\7\0\0\0\2\0\31\0\4\0\0\0\4\0\r\0\0\0\5\0\0\0\32\0\3\0\17\0\0\0\0\0\10\0\20\0\r\0\30\4\n\0\16\0\0\0\0\0\10", 569) = 569 30059 lseek(4, 60265302, SEEK_SET) = 60265302 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\265\16\270( \26\0\0 \26\0\0\31\0\0\0", 30) = 30 30059 lseek(4, 60265357, SEEK_SET) = 60265357 30059 read(4, "\312\376\272\276\0\0\0003\0\374\10\0\5\10\0\6\10\0001\10\0002\1\0\5 cap=\1\0\5 lim=\1\0\3()B\1\0\3()C\1\0\3()D\1\0\3()F\1\0\3()I\1\0\3()J\1\0\24()Ljava/lang/String;\1\0\3()S\1\0\3()V\1\0\3()Z\1\0\4()[B\1\0\5(BB)I\1\0\5(BB)Z\1\0\4(I)B\1\0\4(I)C\1\0\4(I)D\1\0\4(I)F\1\0\4(I)I\1\0\4(I)J\1\0\4(I)S\1\0\4(I)V\1\0\5(IB)V\1\0\5(II)I\1\0\5(II)V\1\0\6(III)V\1\0\7(IIII)V\1\0\n(IIII[BI)V\1\0\25(Ljava/lang/Object;)I\1\0\25(Ljava/lang/Object;)Z\1\0,(Ljava/lang/String;)Ljava/lang/StringBuffer;\1\0\7([BII)V\1\0\6\1\0\nBIG_ENDIAN\1\0\4Code\1\0\1I\1\0\rLITTLE_ENDIAN\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\1Z\1\0\2[B\1\0\5[pos=\1\0\1]\1\0\4_get\1\0\4_put\1\0\10allocate\1\0\16allocateDirect\1\0\6append\1\0\5array\1\0\varrayOffset\1\0\fasCharBuffer\1\0\16asDoubleBuffer\1\0\rasFloatBuffer\1\0\vasIntBuffer\1\0\fasLongBuffer\1\0\20asReadOnlyBuffer\1\0\rasShortBuffer\1\0\tbigEndian\1\0\tbyteOrder\1\0\10capacity\1\0\vcheckBounds\1\0\7compact\1\0\7compare\1\0\tcompareTo\1\0\tduplicate\1\0\6equals\1\0\3get\1\0\7getChar\1\0\10getClass\1\0\tgetDouble\1\0\10getFloat\1\0\6getInt\1\0\7getLong\1\0\7getName\1\0\10getShort\1\0\10hasArray\1\0\10hashCode\1\0\2hb\1\0\10isDirect\1\0\nisReadOnly\1\0\16java/lang/Byte\1\0\17java/lang/Class\1\0\24java/lang/Comparable\1\0\"java/lang/IllegalArgumentEx"..., 5664) = 5664 30059 mprotect(0x7fb314416000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 60258424, SEEK_SET) = 60258424 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\343\364\37\225\243\32\0\0\243\32\0\0\35\0\0\0", 30) = 30 30059 lseek(4, 60258483, SEEK_SET) = 60258483 30059 read(4, "\312\376\272\276\0\0\0003\1\3\1\0\3()B\1\0\3()C\1\0\3()D\1\0\3()F\1\0\3()I\1\0\3()J\1\0\3()S\1\0\3()V\1\0\3()Z\1\0\4(I)B\1\0\4(I)C\1\0\4(I)D\1\0\4(I)F\1\0\4(I)I\1\0\4(I)J\1\0\4(I)S\1\0\5(IB)V\1\0\5(II)I\1\0\5(II)V\1\0\6(III)V\1\0\n(IIII[BI)V\1\0\7([BII)V\1\0\n([BIIIII)V\1\0\6\1\0\4Code\1\0\1I\1\0\17LineNumberTable\1\0\nSourceFile\1\0\rStackMapTable\1\0\1Z\1\0\2[B\1\0\4_get\1\0\4_put\1\0\tarraycopy\1\0\fasCharBuffer\1\0\16asDoubleBuffer\1\0\rasFloatBuffer\1\0\vasIntBuffer\1\0\fasLongBuffer\1\0\20asReadOnlyBuffer\1\0\rasShortBuffer\1\0\tbigEndian\1\0\10capacity\1\0\vcheckBounds\1\0\ncheckIndex\1\0\7compact\1\0\vdiscardMark\1\0\tduplicate\1\0\3get\1\0\7getChar\1\0\tgetDouble\1\0\10getFloat\1\0\6getInt\1\0\7getLong\1\0\10getShort\1\0\2hb\1\0\10isDirect\1\0\nisReadOnly\1\0\2ix\1\0\"java/lang/IllegalArgumentException\1\0\20java/lang/System\1\0\rjava/nio/Bits\1\0 java/nio/BufferOverflowException\1\0!java/nio/BufferUnderflowException\1\0\23java/nio/ByteBuffer\1\0 java/nio/ByteBufferAsCharBufferB\1\0 java/nio/ByteBufferAsCharBufferL\1\0\"java/nio/ByteBufferAsDoubleBufferB\1\0\"java/nio/ByteBufferAsDoubleBufferL\1\0!java/nio/ByteBufferAsFloatBufferB\1\0!java/nio/ByteBufferAsFloatBufferL\1\0\37java/nio/ByteBufferAsIntBufferB"..., 6819) = 6819 30059 lseek(4, 60244880, SEEK_SET) = 60244880 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\35\210M\202\2674\0\0\2674\0\0\23\0\0\0", 30) = 30 30059 lseek(4, 60244929, SEEK_SET) = 60244929 30059 read(4, "\312\376\272\276\0\0\0003\2\26\10\0=\10\0H\10\0P\10\0|\10\0\251\10\0\320\10\0\321\1\0\23$assertionsDisabled\1\0\3()I\1\0\3()J\1\0\3()V\1\0\3()Z\1\0\5(BB)C\1\0\5(BB)S\1\0\7(BBBB)I\1\0\v(BBBBBBBB)J\1\0\4(C)B\1\0\4(C)C\1\0\4(D)J\1\0\4(F)I\1\0\4(I)B\1\0\4(I)F\1\0\4(I)I\1\0\5(IB)V\1\0\4(J)B\1\0\4(J)C\1\0\4(J)D\1\0\4(J)F\1\0\4(J)I\1\0\4(J)J\1\0\4(J)S\1\0\4(J)V\1\0\5(JB)V\1\0\5(JC)V\1\0\6(JCZ)V\1\0\5(JD)V\1\0\6(JDZ)V\1\0\5(JF)V\1\0\6(JFZ)V\1\0\5(JI)V\1\0\6(JIZ)V\1\0\5(JJ)V\1\0\6(JJZ)V\1\0\5(JS)V\1\0\6(JSZ)V\1\0\5(JZ)C\1\0\5(JZ)D\1\0\5(JZ)F\1\0\5(JZ)I\1\0\5(JZ)J\1\0\5(JZ)S\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)V\1\0\4(S)B\1\0\4(S)S\1\0\10\1\0\6\1\0\nBIG_ENDIAN\1\0\4Code\1\0\rConstantValue\1\0\24Direct buffer memory\1\0\1I\1\0\fInnerClasses\1\0\1J\1\0\35JNI_COPY_FROM_ARRAY_THRESHOLD\1\0\33JNI_COPY_TO_ARRAY_THRESHOLD\1\0\rLITTLE_ENDIAN\1\0\17LineNumberTable\1\0\nSourceFile\1\0\rStackMapTable\1\0\25UNSAFE_COPY_THRESHOLD\1\0\22Unknown byte order\1\0\1Z\1\0\4_get\1\0\4_put\1\0\naccess$000\1\0\naccess$100\1\0\naccess$200\1\0\16allocateMemory\1\0\5amd64\1\0\tbyteOrder\1\0\5char0\1\0\5char1\1\0\rcopyFromArray\1\0\21copyFromCharArray\1\0\20copyFromIntArray\1\0\21copyFromLongArray\1\0\22copyFromShortArray\1\0\ncopyMemory\1\0\vcopyToArray\1\0\17copyToCharArray\1\0\16copyToIntArray\1\0\17copyToL"..., 13495) = 13495 30059 mprotect(0x7fb314417000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb314418000, 8192, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 60244161, SEEK_SET) = 60244161 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\"S\325\337\231\2\0\0\231\2\0\0\30\0\0\0", 30) = 30 30059 lseek(4, 60244215, SEEK_SET) = 60244215 30059 read(4, "\312\376\272\276\0\0\0003\0'\10\0\10\10\0\n\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\25(Ljava/lang/String;)V\1\0\10\1\0\6\1\0\nBIG_ENDIAN\1\0\4Code\1\0\rLITTLE_ENDIAN\1\0\17LineNumberTable\1\0\22Ljava/lang/String;\1\0\nSourceFile\1\0\tbyteOrder\1\0\20java/lang/Object\1\0\rjava/nio/Bits\1\0\22java/nio/ByteOrder\1\0\4name\1\0\vnativeOrder\1\0\10toString\7\0\17\7\0\20\7\0\21\1\0\24Ljava/nio/ByteOrder;\1\0\26()Ljava/nio/ByteOrder;\f\0\22\0\f\f\0\10\0\30\f\0\n\0\30\f\0\7\0\4\f\0\7\0\5\f\0\16\0\31\t\0\27\0\32\t\0\27\0\33\t\0\27\0\34\n\0\25\0\35\n\0\26\0\37\n\0\27\0\36\1\0\16ByteOrder.java\0001\0\27\0\25\0\0\0\3\0\2\0\22\0\f\0\0\0\31\0\10\0\30\0\0\0\31\0\n\0\30\0\0\0\4\0\2\0\7\0\5\0\1\0\t\0\0\0*\0\2\0\2\0\0\0\n*\267\0#*+\265\0 \261\0\0\0\1\0\v\0\0\0\16\0\3\0\0\0)\0\4\0*\0\t\0+\0\t\0\23\0\31\0\1\0\t\0\0\0\34\0\1\0\0\0\0\0\4\270\0$\260\0\0\0\1\0\v\0\0\0\6\0\1\0\0\0I\0\1\0\24\0\3\0\1\0\t\0\0\0\35\0\1\0\1\0\0\0\5*\264\0 \260\0\0\0\1\0\v\0\0\0\6\0\1\0\0\0V\0\10\0\6\0\4\0\1\0\t\0\0\0005\0\3\0\0\0\0\0\31\273\0\27Y\22\1\267\0%\263\0!\273\0\27Y\22\2\267\0%\263\0\"\261\0\0\0\1\0\v\0\0\0\n\0\2\0\0\0002\0\f\0:\0\1\0\r\0\0\0\2\0&", 665) = 665 30059 lseek(4, 28601296, SEEK_SET) = 28601296 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\203Z\205\23?\3\0\0?\3\0\0\25\0\0\0", 30) = 30 30059 lseek(4, 28601347, SEEK_SET) = 28601347 30059 read(4, "\312\376\272\276\0\0\0003\0*\1\0\3()V\1\0\6\1\0\nBufferPool\1\0\4Code\1\0\17EnclosingMethod\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\nSourceFile\1\0\23getDirectBufferPool\1\0\20java/lang/Object\1\0\rjava/nio/Bits\1\0\17java/nio/Bits$1\1\0\21java/nio/Bits$1$1\1\0\17java/nio/Buffer\1\0\31java/nio/DirectByteBuffer\1\0\23newDirectByteBuffer\1\0\26sun/misc/JavaNioAccess\1\0!sun/misc/JavaNioAccess$BufferPool\1\0\10truncate\7\0\n\7\0\v\7\0\f\7\0\r\7\0\16\7\0\17\7\0\21\7\0\22\1\0\27(JILjava/lang/Object;)V\1\0\24(Ljava/nio/Bits$1;)V\1\0\24(Ljava/nio/Buffer;)V\1\0%()Lsun/misc/JavaNioAccess$BufferPool;\1\0+(JILjava/lang/Object;)Ljava/nio/ByteBuffer;\f\0\2\0\1\f\0\23\0\1\f\0\2\0\34\f\0\2\0\35\n\0\24\0!\n\0\27\0$\n\0\30\0\"\n\0\31\0#\1\0\tBits.java\0000\0\26\0\24\0\1\0\32\0\0\0\4\0\0\0\2\0\1\0\1\0\4\0\0\0\35\0\1\0\1\0\0\0\5*\267\0%\261\0\0\0\1\0\7\0\0\0\6\0\1\0\0\2\250\0\1\0\t\0\37\0\1\0\4\0\0\0!\0\3\0\1\0\0\0\t\273\0\27Y*\267\0&\260\0\0\0\1\0\7\0\0\0\6\0\1\0\0\2\253\0\1\0\20\0 \0\1\0\4\0\0\0$\0\6\0\5\0\0\0\f\273\0\31Y\37\35\31\4\267\0(\260\0\0\0\1\0\7\0\0\0\6\0\1\0\0\2\300\0\1\0\23\0\36\0\1\0\4\0\0\0!\0\1\0\2\0\0\0\5+\266\0'\261\0\0\0\1\0\7\0\0\0\n\0\2\0\0\2\304\0\4\2\305\0\3\0\10\0\0\0\2\0)\0\5\0\0\0\4\0\25\0\0\0\6\0\0\0\32\0\3\0\26\0\0\0\0\0\10\0\27\0\0\0\0\0\0\0\33\0\32\0\3\6\t", 831) = 831 30059 mprotect(0x7fb31441a000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 43223489, SEEK_SET) = 43223489 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\350x/\344\203\1\0\0\203\1\0\0\34\0\0\0", 30) = 30 30059 lseek(4, 43223547, SEEK_SET) = 43223547 30059 read(4, "\312\376\272\276\0\0\0003\0\21\1\0\nBufferPool\1\0\fInnerClasses\1\0\nSourceFile\1\0\23getDirectBufferPool\1\0\20java/lang/Object\1\0\23newDirectByteBuffer\1\0\26sun/misc/JavaNioAccess\1\0!sun/misc/JavaNioAccess$BufferPool\1\0\10truncate\7\0\5\7\0\7\7\0\10\1\0\24(Ljava/nio/Buffer;)V\1\0%()Lsun/misc/JavaNioAccess$BufferPool;\1\0+(JILjava/lang/Object;)Ljava/nio/ByteBuffer;\1\0\22JavaNioAccess.java\6\1\0\v\0\n\0\0\0\0\0\3\4\1\0\4\0\16\0\0\4\1\0\6\0\17\0\0\4\1\0\t\0\r\0\0\0\2\0\3\0\0\0\2\0\20\0\2\0\0\0\n\0\1\0\f\0\v\0\1\6\t", 387) = 387 30059 lseek(4, 60156177, SEEK_SET) = 60156177 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\330\336D\272\"\f\0\0\"\f\0\0\34\0\0\0", 30) = 30 30059 lseek(4, 60156235, SEEK_SET) = 60156235 30059 read(4, "\312\376\272\276\0\0\0003\0s\10\0\16\10\0\30\10\0-\1\0\3()V\1\0\4(I)V\1\0\5(II)I\1\0\10(II[CI)V\1\0\23(Ljava/io/Writer;)V\1\0\25(Ljava/lang/Object;)V\1\0\25(Ljava/lang/String;)V\1\0\7([CII)V\1\0\10\1\0\6\1\0\20Buffer size <= 0\1\0\4Code\1\0\nExceptions\1\0\1I\1\0\17LineNumberTable\1\0\20Ljava/io/Writer;\1\0\22Ljava/lang/Object;\1\0\22Ljava/lang/String;\1\0\nSourceFile\1\0\rStackMapTable\1\0\rStream closed\1\0\2[C\1\0\tarraycopy\1\0\2cb\1\0\5close\1\0\25defaultCharBufferSize\1\0\fdoPrivileged\1\0\nensureOpen\1\0\5flush\1\0\vflushBuffer\1\0\10getChars\1\0\26java/io/BufferedWriter\1\0\23java/io/IOException\1\0\16java/io/Writer\1\0\"java/lang/IllegalArgumentException\1\0#java/lang/IndexOutOfBoundsException\1\0\20java/lang/Object\1\0\20java/lang/String\1\0\20java/lang/System\1\0\23java/lang/Throwable\1\0\36java/security/AccessController\1\0\16line.separator\1\0\rlineSeparator\1\0\4lock\1\0\3min\1\0\6nChars\1\0\7newLine\1\0\10nextChar\1\0\3out\1\0%sun/security/action/GetPropertyAction\1\0\5write\7\0#\7\0$\7\0%\7\0&\7\0'\7\0(\7\0)\7\0*\7\0+\7\0,\7\0005\1\0\24(Ljava/io/Writer;I)V\1\0\27(Ljava/lang/String;II)V\1\0*(Ljava/lang/Object;ILjava/lang/Object;II)V\1\0004(Ljava/security/PrivilegedAction;)Ljava/lang/Object;\f\0\35\0"..., 3106) = 3106 30059 lseek(4, 60138275, SEEK_SET) = 60138275 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\26\277\245\5r3\0\0r3\0\0\22\0\0\0", 30) = 30 30059 lseek(4, 60138323, SEEK_SET) = 60138323 30059 read(4, "\312\376\272\276\0\0\0003\2\7\10\0\22\10\0)\10\0*\10\0+\10\0008\10\0009\10\0>\10\0?\10\0@\10\0A\10\0B\10\0C\10\0D\10\0E\10\0e\10\0t\10\0\271\1\0\0\1\0\23$assertionsDisabled\1\0\3()C\1\0\3()I\1\0\3()J\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4(I)I\1\0\25(I)Ljava/lang/String;\1\0\4(I)V\1\0\26(II)Ljava/lang/String;\1\0\4(J)Z\1\0\25(Ljava/lang/Object;)I\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)I\1\0&(Ljava/lang/String;)Ljava/lang/String;\1\0\25(Ljava/lang/String;)V\1\0\25(Ljava/lang/String;)Z\1\0'(Ljava/lang/String;Ljava/lang/String;)V\1\0\30(Ljava/lang/Throwable;)V\1\0\4(Z)Z\1\0\5(ZZ)Z\1\0\4.tmp\1\0\1/\1\0\2//\1\0\10\1\0\6\1\0\1C\1\0\4Code\1\0\rConstantValue\1\0\nDeprecated\1\0\nExceptions\1\0\1I\1\0\fInnerClasses\1\0\1J\1\0\17LineNumberTable\1\0\22Ljava/lang/String;\1\0\rNegative time\1\0\27Prefix string too short\1\0\31RuntimeVisibleAnnotations\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\34URI has a fragment component\1\0\31URI has a query component\1\0\36URI has an authority component\1\0\23URI is not absolute\1\0\27URI is not hierarchical\1\0\33URI path component is empty\1\0\30URI scheme is not \"file\"\1\0\37Unable to create temporary file\1\0\1Z\1\0\17[Ljava/io/File;\1\0\23[Ljava/lang/String;\1\0\6accept"..., 13170) = 13170 30059 mprotect(0x7fb31441b000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 60136001, SEEK_SET) = 60136001 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\271\307(\v\254\10\0\0\254\10\0\0\30\0\0\0", 30) = 30 30059 lseek(4, 60136055, SEEK_SET) = 60136055 30059 read(4, "\312\376\272\276\0\0\0003\0k\10\0@\10\0A\10\0B\1\0\3()C\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\25(Ljava/lang/String;)I\1\0&(Ljava/lang/String;)Ljava/lang/String;\1\0\25(Ljava/lang/String;)Z\1\0\10\1\0\6\1\0\16ACCESS_EXECUTE\1\0\vACCESS_READ\1\0\fACCESS_WRITE\1\0\fBA_DIRECTORY\1\0\tBA_EXISTS\1\0\tBA_HIDDEN\1\0\nBA_REGULAR\1\0\4Code\1\0\rConstantValue\1\0\nExceptions\1\0\1I\1\0\17LineNumberTable\1\0\nSPACE_FREE\1\0\vSPACE_TOTAL\1\0\fSPACE_USABLE\1\0\nSourceFile\1\0\rStackMapTable\1\0\1Z\1\0\fcanonicalize\1\0\vcheckAccess\1\0\7compare\1\0\17createDirectory\1\0\25createFileExclusively\1\0\6delete\1\0\20equalsIgnoreCase\1\0\vfromURIPath\1\0\24getBooleanAttributes\1\0\22getBooleanProperty\1\0\20getDefaultParent\1\0\rgetFileSystem\1\0\23getLastModifiedTime\1\0\tgetLength\1\0\20getPathSeparator\1\0\vgetProperty\1\0\fgetSeparator\1\0\10getSpace\1\0\10hashCode\1\0\nisAbsolute\1\0\22java/io/FileSystem\1\0\23java/io/IOException\1\0\20java/lang/Object\1\0\20java/lang/String\1\0\20java/lang/System\1\0\4list\1\0\tlistRoots\1\0\tnormalize\1\0\fprefixLength\1\0\6rename\1\0\7resolve\1\0\23setLastModifiedTime\1\0\rsetPermission\1\0\vsetReadOnly\1\0\25sun.io.useCanonCaches\1\0\32sun.io.useCanonPrefixCache\1\0\4true\1\0\16useCano"..., 2220) = 2220 30059 lseek(4, 60130456, SEEK_SET) = 60130456 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305BoF\336\337o\25\0\0o\25\0\0\34\0\0\0", 30) = 30 30059 lseek(4, 60130514, SEEK_SET) = 60130514 30059 read(4, "\312\376\272\276\0\0\0003\0\363\3\0\22\325\221\10\0\10\10\0\31\10\0007\10\0K\10\0_\10\0p\1\0\0\1\0\3()C\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4(I)C\1\0\25(I)Ljava/lang/String;\1\0\4(I)V\1\0\26(II)Ljava/lang/String;\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)I\1\0&(Ljava/lang/String;)Ljava/lang/String;\1\0,(Ljava/lang/String;)Ljava/lang/StringBuffer;\1\0\25(Ljava/lang/String;)V\1\0\25(Ljava/lang/String;)Z\1\0'(Ljava/lang/String;Ljava/lang/String;)V\1\0\1/\1\0\10\1\0\6\1\0\1C\1\0\4Code\1\0\nExceptions\1\0\17LineNumberTable\1\0\22Ljava/lang/String;\1\0\nSourceFile\1\0\rStackMapTable\1\0\1Z\1\0\6append\1\0\5cache\1\0\fcanonicalize\1\0\rcanonicalize0\1\0\6charAt\1\0\vcheckAccess\1\0\tcheckRead\1\0\5clear\1\0\5colon\1\0\7compare\1\0\tcompareTo\1\0\17createDirectory\1\0\25createFileExclusively\1\0\6delete\1\0\7delete0\1\0\fdoPrivileged\1\0\10endsWith\1\0\6equals\1\0\6exists\1\0\16file.separator\1\0\vfromURIPath\1\0\3get\1\0\24getBooleanAttributes\1\0\25getBooleanAttributes0\1\0\20getDefaultParent\1\0\23getLastModifiedTime\1\0\tgetLength\1\0\7getName\1\0\7getPath\1\0\20getPathSeparator\1\0\17getPrefixLength\1\0\vgetProperty\1\0\22getSecurityManager\1\0\fgetSeparator\1\0\10getSpace\1\0\10hashCode\1\0\7initIDs\1\0\nisA"..., 5487) = 5487 30059 lseek(4, 60128109, SEEK_SET) = 60128109 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B0\217N5\362\10\0\0\362\10\0\0\33\0\0\0", 30) = 30 30059 lseek(4, 60128166, SEEK_SET) = 60128166 30059 read(4, "\312\376\272\276\0\0\0003\0|\1\0\3()I\1\0\3()J\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4(J)V\1\0&(Ljava/lang/String;)Ljava/lang/String;\1\0\25(Ljava/lang/String;)V\1\0'(Ljava/lang/String;Ljava/lang/String;)V\1\0\6\1\0\4Code\1\0\5Entry\1\0\1I\1\0\fInnerClasses\1\0\1J\1\0\17LineNumberTable\1\0\vMAX_ENTRIES\1\0\nSourceFile\1\0\rStackMapTable\1\0\23[Ljava/lang/String;\1\0\naccess$000\1\0\7cleanup\1\0\5clear\1\0\21currentTimeMillis\1\0\10entryFor\1\0\3get\1\0\7hasNext\1\0\10iterator\1\0\25java/io/ExpiringCache\1\0\27java/io/ExpiringCache$1\1\0\33java/io/ExpiringCache$Entry\1\0\20java/lang/Object\1\0\20java/lang/String\1\0\20java/lang/System\1\0\22java/util/Iterator\1\0\rjava/util/Map\1\0\rjava/util/Set\1\0\6keySet\1\0\3map\1\0\25millisUntilExpiration\1\0\4next\1\0\3put\1\0\nqueryCount\1\0\rqueryOverflow\1\0\6remove\1\0\fsetTimestamp\1\0\6setVal\1\0\4size\1\0\ttimestamp\1\0\3val\5\0\0\0\0\0\0u0\7\0\24\7\0\35\7\0\36\7\0\37\7\0 \7\0!\7\0\"\7\0#\7\0$\7\0%\1\0\17Ljava/util/Map;\1\0\32(Ljava/io/ExpiringCache;)I\1\0\32(Ljava/io/ExpiringCache;)V\1\0\24()Ljava/lang/Object;\1\0\26(JLjava/lang/String;)V\1\0\26()Ljava/util/Iterator;\1\0\21()Ljava/util/Set;\1\0001(Ljava/lang/String;)Ljava/io/ExpiringCache$Entry;\1\0&(Ljava/lang/Object"..., 2290) = 2290 30059 mprotect(0x7fb31441c000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 60127381, SEEK_SET) = 60127381 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\362\37\217\365\235\2\0\0\235\2\0\0\35\0\0\0", 30) = 30 30059 lseek(4, 60127440, SEEK_SET) = 60127440 30059 read(4, "\312\376\272\276\0\0\0003\0(\1\0\3()I\1\0\3()V\1\0\4(J)V\1\0\6\1\0\4Code\1\0\17EnclosingMethod\1\0\5Entry\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\nSourceFile\1\0\rStackMapTable\1\0\naccess$000\1\0\25java/io/ExpiringCache\1\0\27java/io/ExpiringCache$1\1\0\27java/util/LinkedHashMap\1\0\rjava/util/Map\1\0\23java/util/Map$Entry\1\0\21removeEldestEntry\1\0\4size\1\0\6this$0\7\0\r\7\0\16\7\0\17\7\0\20\7\0\21\1\0\27Ljava/io/ExpiringCache;\1\0\32(Ljava/io/ExpiringCache;)I\1\0\32(Ljava/io/ExpiringCache;)V\1\0\30(Ljava/util/Map$Entry;)Z\f\0\24\0\32\f\0\23\0\1\f\0\4\0\2\f\0\4\0\3\f\0\f\0\33\t\0\26\0\36\n\0\25\0\"\n\0\26\0\37\n\0\27\0 \1\0\22ExpiringCache.java\0 \0\26\0\27\0\0\0\1\20\20\0\24\0\32\0\0\0\2\0\0\0\4\0\34\0\1\0\5\0\0\0\"\0\2\0\2\0\0\0\n*+\265\0#*\267\0&\261\0\0\0\1\0\t\0\0\0\6\0\1\0\0\0B\0\4\0\22\0\35\0\1\0\5\0\0\0007\0\2\0\2\0\0\0\24*\266\0%*\264\0#\270\0$\244\0\7\4\247\0\4\3\254\0\0\0\2\0\v\0\0\0\5\0\2\22@\1\0\t\0\0\0\6\0\1\0\0\0D\0\3\0\n\0\0\0\2\0'\0\6\0\0\0\4\0\25\0!\0\10\0\0\0\22\0\2\0\26\0\0\0\0\0\0\0\31\0\30\0\7\6\t", 669) = 669 30059 lseek(4, 60123357, SEEK_SET) = 60123357 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\250Z\212\f}\17\0\0}\17\0\0\35\0\0\0", 30) = 30 30059 lseek(4, 60123416, SEEK_SET) = 60123416 30059 read(4, "\312\376\272\276\0\0\0003\0\242\1\0\3()V\1\0\4(I)V\1\0\5(IF)V\1\0\6(IFZ)V\1\0\5(II)I\1\0\v(ITK;TV;I)V\1\0\25(Ljava/lang/Object;)I\1\0\25(Ljava/lang/Object;)Z\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\5Entry\1\0\1I\1\0\fInnerClasses\1\0\1J\1\0\17LineNumberTable\1\0\22Ljava/lang/Object;\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\1Z\1\0\32[Ljava/util/HashMap$Entry;\1\0\naccess$000\1\0\naccess$100\1\0\naccess$600\1\0\vaccessOrder\1\0\10addEntry\1\0\5after\1\0\6before\1\0\5clear\1\0\rcontainsValue\1\0\vcreateEntry\1\0\6equals\1\0\3get\1\0\10getEntry\1\0\4hash\1\0\6header\1\0\10indexFor\1\0\4init\1\0\20java/lang/Object\1\0\21java/util/HashMap\1\0\27java/util/HashMap$Entry\1\0\27java/util/LinkedHashMap\1\0\31java/util/LinkedHashMap$1\1\0\35java/util/LinkedHashMap$Entry\1\0%java/util/LinkedHashMap$EntryIterator\1\0#java/util/LinkedHashMap$KeyIterator\1\0*java/util/LinkedHashMap$LinkedHashIterator\1\0%java/util/LinkedHashMap$ValueIterator\1\0\rjava/util/Map\1\0\23java/util/Map$Entry\1\0\3key\1\0\20newEntryIterator\1\0\16newKeyIterator\1\0\20newValueIterator\1\0\4next\1\0\frecordAccess\1\0\21removeEldestEntry\1\0\21removeEntryForKey\1\0\20serialVersionUID\1\0\4size\1\0\5table\1\0\10transfer\1\0\5value\0054\300N\\\20l"..., 3965) = 3965 30059 lseek(4, 60121749, SEEK_SET) = 60121749 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\261w\255\220\7\6\0\0\7\6\0\0#\0\0\0", 30) = 30 30059 lseek(4, 60121814, SEEK_SET) = 60121814 30059 read(4, "\312\376\272\276\0\0\0003\0:\1\0\3()V\1\0\6\1\0\4Code\1\0\5Entry\1\0\1I\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\naccess$000\1\0\naccess$100\1\0\naccess$600\1\0\taddBefore\1\0\5after\1\0\6before\1\0\21java/util/HashMap\1\0\27java/util/HashMap$Entry\1\0\27java/util/LinkedHashMap\1\0\35java/util/LinkedHashMap$Entry\1\0\10modCount\1\0\frecordAccess\1\0\rrecordRemoval\1\0\6remove\7\0\21\7\0\22\7\0\23\7\0\24\1\0\37Ljava/util/LinkedHashMap$Entry;\1\0'Ljava/util/LinkedHashMap$Entry;\1\0KLjava/util/HashMap$Entry;\1\0\26(Ljava/util/HashMap;)V\1\0\36(Ljava/util/HashMap;)V\1\0+(ITK;TV;Ljava/util/HashMap$Entry;)V\1\0\34(Ljava/util/LinkedHashMap;)Z\1\0\"(Ljava/util/LinkedHashMap$Entry;)V\1\0*(Ljava/util/LinkedHashMap$Entry;)V\1\0:(Ljava/util/LinkedHashMap;)Ljava/util/LinkedHashMap$Entry;\1\0A(Ljava/util/LinkedHashMap$Entry;Ljava/util/LinkedHashMap$Entry;)V\1\0A(ILjava/lang/Object;Ljava/lang/Object;Ljava/util/HashMap$Entry;)V\f\0\25\0\5\f\0\17\0\35\f\0\20\0\35\f\0\30\0\1\f\0\v\0#\f\0\16\0$\f\0\f\0&\f\0\2\0(\t\0\33\0)\t\0\34\0*\t\0\34\0+\n\0\32\0000\n\0\33\0-\n\0\33\0/\n\0\34\0,\n\0\34\0"..., 1543) = 1543 30059 lseek(4, 60106368, SEEK_SET) = 60106368 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\222\304e\201\4\3\0\0\4\3\0\0\35\0\0\0", 30) = 30 30059 lseek(4, 60106427, SEEK_SET) = 60106427 30059 read(4, "\312\376\272\276\0\0\0003\0,\1\0\3()V\1\0\3()Z\1\0\6\1\0\20ClassLoader.java\1\0\4Code\1\0\17EnclosingMethod\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\23Ljava/lang/Boolean;\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\4TRUE\1\0\6exists\1\0\fjava/io/File\1\0\21java/lang/Boolean\1\0\25java/lang/ClassLoader\1\0\27java/lang/ClassLoader$3\1\0\20java/lang/Object\1\0\36java/security/PrivilegedAction\1\0\floadLibrary1\1\0\3run\1\0\10val$file\7\0\17\7\0\20\7\0\21\7\0\22\7\0\23\7\0\24\1\0\16Ljava/io/File;\1\0FLjava/lang/Object;Ljava/security/PrivilegedAction;\1\0\21(Ljava/io/File;)V\1\0\24()Ljava/lang/Object;\1\0\"(Ljava/lang/Class;Ljava/io/File;)Z\f\0\27\0\36\f\0\r\0\t\f\0\3\0\1\f\0\16\0\2\f\0\25\0\"\t\0\31\0$\t\0\33\0#\n\0\30\0&\n\0\34\0%\0000\0\33\0\34\0\1\0\35\0\1\20\20\0\27\0\36\0\0\0\2\0\0\0\3\0 \0\1\0\5\0\0\0\"\0\2\0\2\0\0\0\n*+\265\0)*\267\0+\261\0\0\0\1\0\10\0\0\0\6\0\1\0\0\7f\0\1\0\26\0!\0\1\0\5\0\0\0007\0\1\0\1\0\0\0\22*\264\0)\266\0*\231\0\t\262\0(\247\0\4\1\260\0\0\0\2\0\f\0\0\0\7\0\2\20@\7\0\31\0\10\0\0\0\6\0\1\0\0\7h\0\4\0\v\0\0\0\2\0\4\0\6\0\0\0\4\0\32\0'\0\n\0\0\0\2\0\37\0\7\0\0\0\n\0\1\0\33\0\0\0\0\0\10", 772) = 772 30059 lseek(4, 60103605, SEEK_SET) = 60103605 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\373j\307y\203\n\0\0\203\n\0\0*\0\0\0", 30) = 30 30059 lseek(4, 60103677, SEEK_SET) = 60103677 30059 read(4, "\312\376\272\276\0\0\0003\0\221\1\0\3()F\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\5(IF)I\1\0\30(Ljava/lang/Throwable;)V\1\0\10([CII)[B\1\0\t([CII[B)I\1\0\6\1\0\4Code\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\22Ljava/lang/String;\1\0\7REPLACE\1\0\nSourceFile\1\0\rStackMapTable\1\0\1Z\1\0\2[B\1\0\naccess$000\1\0\naccess$300\1\0\2ce\1\0\vcharsetName\1\0\2cs\1\0\6encode\1\0\5flush\1\0\10getClass\1\0\17getClassLoader0\1\0\16historicalName\1\0\tisTrusted\1\0\visUnderflow\1\0\17java/lang/Class\1\0\17java/lang/Error\1\0\20java/lang/Object\1\0\20java/lang/String\1\0\26java/lang/StringCoding\1\0\30java/lang/StringCoding$1\1\0$java/lang/StringCoding$StringEncoder\1\0\23java/nio/ByteBuffer\1\0\23java/nio/CharBuffer\1\0)java/nio/charset/CharacterCodingException\1\0\30java/nio/charset/Charset\1\0\37java/nio/charset/CharsetEncoder\1\0\34java/nio/charset/CoderResult\1\0\"java/nio/charset/CodingErrorAction\1\0\17maxBytesPerChar\1\0\4name\1\0\nnewEncoder\1\0\20onMalformedInput\1\0\25onUnmappableCharacter\1\0\10position\1\0\24requestedCharsetName\1\0\5reset\1\0\27sun/nio/cs/ArrayEncoder\1\0#sun/nio/cs/HistoricallyNamedCharset\1\0\16throwException\1\0\4wrap\7\0\23\7\0 \7\0!\7\0\"\7\0#\7\0$\7\0%\7\0&\7\0'\7\0(\7\0)\7\0"..., 2691) = 2691 30059 stat("/software/jdk1.7.0_25/jre/lib/amd64/libzip.so", {st_mode=S_IFREG|0755, st_size=123800, ...}) = 0 30059 lstat("/software", {st_mode=S_IFDIR|0755, st_size=20480, ...}) = 0 30059 lstat("/software/jdk1.7.0_25", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 30059 lstat("/software/jdk1.7.0_25/jre", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 30059 lstat("/software/jdk1.7.0_25/jre/lib", {st_mode=S_IFDIR|0755, st_size=8192, ...}) = 0 30059 lstat("/software/jdk1.7.0_25/jre/lib/amd64", {st_mode=S_IFDIR|0755, st_size=8192, ...}) = 0 30059 lstat("/software/jdk1.7.0_25/jre/lib/amd64/libzip.so", {st_mode=S_IFREG|0755, st_size=123800, ...}) = 0 30059 lseek(4, 60102878, SEEK_SET) = 60102878 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\221u\372h\230\2\0\0\230\2\0\0!\0\0\0", 30) = 30 30059 lseek(4, 60102941, SEEK_SET) = 60102941 30059 read(4, "\312\376\272\276\0\0\0003\0 \1\0\3()J\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\4(J)V\1\0\25(Ljava/lang/String;)V\1\0\6\1\0\4Code\1\0\5Entry\1\0\fInnerClasses\1\0\1J\1\0\17LineNumberTable\1\0\22Ljava/lang/String;\1\0\nSourceFile\1\0\25java/io/ExpiringCache\1\0\33java/io/ExpiringCache$Entry\1\0\20java/lang/Object\1\0\fsetTimestamp\1\0\6setVal\1\0\ttimestamp\1\0\3val\7\0\16\7\0\17\7\0\20\1\0\26(JLjava/lang/String;)V\f\0\23\0\n\f\0\24\0\f\f\0\6\0\3\t\0\26\0\31\t\0\26\0\32\n\0\27\0\33\1\0\22ExpiringCache.java\0 \0\26\0\27\0\0\0\2\0\2\0\23\0\n\0\0\0\2\0\24\0\f\0\0\0\5\0\0\0\6\0\30\0\1\0\7\0\0\0003\0\3\0\4\0\0\0\17*\267\0\36*\37\265\0\34*-\265\0\35\261\0\0\0\1\0\v\0\0\0\22\0\4\0\0\0000\0\4\0001\0\t\0002\0\16\0003\0\0\0\23\0\1\0\1\0\7\0\0\0\35\0\2\0\1\0\0\0\5*\264\0\34\255\0\0\0\1\0\v\0\0\0\6\0\1\0\0\0005\0\0\0\21\0\4\0\1\0\7\0\0\0\36\0\3\0\3\0\0\0\6*\37\265\0\34\261\0\0\0\1\0\v\0\0\0\6\0\1\0\0\0006\0\0\0\24\0\2\0\1\0\7\0\0\0\35\0\1\0\1\0\0\0\5*\264\0\35\260\0\0\0\1\0\v\0\0\0\6\0\1\0\0\0008\0\0\0\22\0\5\0\1\0\7\0\0\0\36\0\2\0\2\0\0\0\6*+\265\0\35\261\0\0\0\1\0\v\0\0\0\6\0\1\0\0\0009\0\2\0\r\0\0\0\2\0\37\0\t\0\0\0\n\0\1\0\26\0\25\0\10\0\10", 664) = 664 30059 stat("/software/jdk1.7.0_25/jre/lib/amd64/libzip.so", {st_mode=S_IFREG|0755, st_size=123800, ...}) = 0 30059 stat("/software/jdk1.7.0_25/jre/lib/amd64/libzip.so", {st_mode=S_IFREG|0755, st_size=123800, ...}) = 0 30059 lseek(4, 60101166, SEEK_SET) = 60101166 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\4\210I\275i\6\0\0i\6\0\0)\0\0\0", 30) = 30 30059 lseek(4, 60101237, SEEK_SET) = 60101237 30059 read(4, "\312\376\272\276\0\0\0003\0^\1\0\3()I\1\0\3()V\1\0\4(I)V\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)V\1\0\6\1\0\20ClassLoader.java\1\0\4Code\1\0\1I\1\0\fInnerClasses\1\0\1J\1\0\17LineNumberTable\1\0\21Ljava/lang/Class;\1\0\22Ljava/lang/String;\1\0\nSourceFile\1\0\rStackMapTable\1\0\naccess$000\1\0\naccess$100\1\0\naccess$200\1\0\telementAt\1\0\6equals\1\0\10finalize\1\0\4find\1\0\tfromClass\1\0\16getClassLoader\1\0\fgetFromClass\1\0\6handle\1\0\17java/lang/Class\1\0\25java/lang/ClassLoader\1\0#java/lang/ClassLoader$NativeLibrary\1\0\20java/lang/Object\1\0\20java/lang/String\1\0\23java/lang/Throwable\1\0\17java/util/Stack\1\0\20java/util/Vector\1\0\njniVersion\1\0\4load\1\0\4name\1\0\4peek\1\0\3pop\1\0\4push\1\0\17removeElementAt\1\0\4size\1\0\6unload\7\0\34\7\0\35\7\0\36\7\0\37\7\0 \7\0!\7\0\"\7\0#\1\0\23()Ljava/lang/Class;\1\0\31()Ljava/lang/ClassLoader;\1\0\24()Ljava/lang/Object;\1\0\25(I)Ljava/lang/Object;\1\0\25(Ljava/lang/String;)J\1\0\23()Ljava/util/Stack;\1\0\24()Ljava/util/Vector;\1\0008(Ljava/lang/ClassLoader$NativeLibrary;)Ljava/lang/Class;\1\0&(Ljava/lang/Object;)Ljava/lang/Object;\1\0&(Ljava/lang/Class;Ljava/lang/String;)V\f\0\33\0\v\f\0\30\0\r\f\0&\0\16\f\0+\0\1\f\0\6\0\2\f\0,\0\2\f\0*\0\3\f\0\31\0006\f\0'\0007\f\0(\0007\f\0\24\0008\f\0"..., 1641) = 1641 30059 lseek(4, 60100252, SEEK_SET) = 60100252 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\233\243\300TZ\3\0\0Z\3\0\0\32\0\0\0", 30) = 30 30059 lseek(4, 60100308, SEEK_SET) = 60100308 30059 read(4, "\312\376\272\276\0\0\0003\0,\10\0\t\10\0\n\10\0\17\1\0\3()V\1\0\25(Ljava/lang/String;)V\1\0\10\1\0\6\1\0\4Code\1\0\3HUP\1\0\3INT\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\nSourceFile\1\0\rStackMapTable\1\0\4TERM\1\0\6handle\1\0\7handler\1\0\"java/lang/IllegalArgumentException\1\0\20java/lang/Object\1\0\24java/lang/Terminator\1\0\26java/lang/Terminator$1\1\0\5setup\1\0\17sun/misc/Signal\1\0\26sun/misc/SignalHandler\1\0\10teardown\7\0\22\7\0\23\7\0\24\7\0\25\7\0\27\7\0\30\1\0\30Lsun/misc/SignalHandler;\1\0C(Lsun/misc/Signal;Lsun/misc/SignalHandler;)Lsun/misc/SignalHandler;\f\0\21\0 \f\0\7\0\4\f\0\7\0\5\f\0\20\0!\t\0\34\0\"\n\0\33\0#\n\0\35\0#\n\0\36\0$\n\0\36\0%\1\0\17Terminator.java\0 \0\34\0\33\0\0\0\1\0\n\0\21\0 \0\0\0\4\0\0\0\7\0\4\0\1\0\10\0\0\0\35\0\1\0\1\0\0\0\5*\267\0'\261\0\0\0\1\0\f\0\0\0\6\0\1\0\0\0(\0\10\0\26\0\4\0\1\0\10\0\0\0\231\0\3\0\2\0\0\0B\262\0&\306\0\4\261\273\0\35Y\267\0(K*\263\0&\273\0\36Y\22\1\267\0)*\270\0*W\273\0\36Y\22\2\267\0)*\270\0*W\273\0\36Y\22\3\267\0)*\270\0*W\247\0\4L\261\0\1\0\23\0=\0@\0\32\0\2\0\16\0\0\0\21\0\3\7\377\0008\0\1\7\0\37\0\1\7\0\32\0\0\f\0\0\0&\0\t\0\0\0001\0\7\0002\0\17\0007\0\23\0009\0!\0:\0/\0;\0=\0@\0@\0<\0A\0A\0\10\0\31\0\4\0\1\0\10\0\0\0\31\0\0\0\0\0\0\0\1\261\0\0\0\1\0\f\0\0\0\6\0\1\0\0\0G\0\10\0\6\0\4\0\1\0\10\0\0\0\35\0\1\0\0\0\0\0\5\1\263\0&\261\0\0\0\1\0\f\0\0\0\6\0\1\0\0\0*\0\2\0\r\0\0\0\2\0+\0\v\0\0\0\n\0\1\0\35\0\0\0\0\0\10", 858) = 858 30059 lseek(4, 60099677, SEEK_SET) = 60099677 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\3\27\310{\5\2\0\0\5\2\0\0\34\0\0\0", 30) = 30 30059 lseek(4, 60099735, SEEK_SET) = 60099735 30059 read(4, "\312\376\272\276\0\0\0003\0#\1\0\3()I\1\0\3()V\1\0\4(I)V\1\0\6\1\0\4Code\1\0\17EnclosingMethod\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\nSourceFile\1\0\4exit\1\0\tgetNumber\1\0\6handle\1\0\20java/lang/Object\1\0\22java/lang/Shutdown\1\0\24java/lang/Terminator\1\0\26java/lang/Terminator$1\1\0\5setup\1\0\17sun/misc/Signal\1\0\26sun/misc/SignalHandler\7\0\r\7\0\16\7\0\17\7\0\20\7\0\22\7\0\23\1\0\24(Lsun/misc/Signal;)V\f\0\v\0\1\f\0\4\0\2\f\0\21\0\2\f\0\n\0\3\n\0\24\0\34\n\0\25\0\36\n\0\30\0\33\1\0\17Terminator.java\0000\0\27\0\24\0\1\0\31\0\0\0\2\0\0\0\4\0\2\0\1\0\5\0\0\0\35\0\1\0\1\0\0\0\5*\267\0\37\261\0\0\0\1\0\10\0\0\0\6\0\1\0\0\0002\0\1\0\f\0\32\0\1\0\5\0\0\0(\0\2\0\2\0\0\0\f+\266\0!\21\0\200`\270\0 \261\0\0\0\1\0\10\0\0\0\n\0\2\0\0\0004\0\v\0005\0\3\0\t\0\0\0\2\0\"\0\6\0\0\0\4\0\26\0\35\0\7\0\0\0\n\0\1\0\27\0\0\0\0\0\10", 517) = 517 30059 lseek(4, 60099213, SEEK_SET) = 60099213 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\26A.\320\226\1\0\0\226\1\0\0\34\0\0\0", 30) = 30 30059 lseek(4, 60099271, SEEK_SET) = 60099271 30059 read(4, "\312\376\272\276\0\0\0003\0\32\1\0\3()V\1\0\4(J)V\1\0\10\1\0\6\1\0\4Code\1\0\17LineNumberTable\1\0\7SIG_DFL\1\0\7SIG_IGN\1\0\nSourceFile\1\0\6handle\1\0\20java/lang/Object\1\0\34sun/misc/NativeSignalHandler\1\0\26sun/misc/SignalHandler\7\0\v\7\0\f\7\0\r\1\0\30Lsun/misc/SignalHandler;\1\0\24(Lsun/misc/Signal;)V\f\0\7\0\21\f\0\10\0\21\f\0\4\0\2\t\0\20\0\23\t\0\20\0\24\n\0\17\0\25\1\0\22SignalHandler.java\6\1\0\20\0\16\0\0\0\2\0\31\0\7\0\21\0\0\0\31\0\10\0\21\0\0\0\2\4\1\0\n\0\22\0\0\0\10\0\3\0\1\0\1\0\5\0\0\0003\0\4\0\0\0\0\0\27\273\0\17Y\t\267\0\30\263\0\26\273\0\17Y\n\267\0\30\263\0\27\261\0\0\0\1\0\6\0\0\0\n\0\2\0\0\0*\0\v\0.\0\1\0\t\0\0\0\2\0\31", 406) = 406 30059 lseek(4, 60096232, SEEK_SET) = 60096232 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B}1\223\270r\v\0\0r\v\0\0\25\0\0\0", 30) = 30 30059 lseek(4, 60096283, SEEK_SET) = 60096283 30059 read(4, "\312\376\272\276\0\0\0003\0\221\10\0\6\10\0\31\10\0\34\10\0\37\10\0 \1\0\10 handler\1\0\3()I\1\0\3()J\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\4(I)V\1\0\5(IJ)J\1\0\4(J)V\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)I\1\0\25(Ljava/lang/String;)V\1\0\10\1\0\6\1\0\4Code\1\0\nExceptions\1\0\1I\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\22Ljava/lang/String;\1\0\3SIG\1\0\7SIG_DFL\1\0\7SIG_IGN\1\0!Signal already used by VM or OS: \1\0\nSourceFile\1\0\rStackMapTable\1\0\22Unhandled signal: \1\0\20Unknown signal: \1\0\6append\1\0\10dispatch\1\0\6equals\1\0\nfindSignal\1\0\3get\1\0\ngetHandler\1\0\7getName\1\0\tgetNumber\1\0\6handle\1\0\7handle0\1\0\10handlers\1\0\10hashCode\1\0\"java/lang/IllegalArgumentException\1\0\21java/lang/Integer\1\0\20java/lang/Object\1\0\22java/lang/Runnable\1\0\20java/lang/String\1\0\27java/lang/StringBuilder\1\0\20java/lang/Thread\1\0\23java/lang/Throwable\1\0\23java/util/Hashtable\1\0\4name\1\0\6number\1\0\3put\1\0\5raise\1\0\6raise0\1\0\6remove\1\0\7signals\1\0\5start\1\0\34sun/misc/NativeSignalHandler\1\0\17sun/misc/Signal\1\0\21sun/misc/Signal$1\1\0\26sun/misc/SignalHandler\1\0\10toString\5\377\377\377\377\377\377\377\377\5\0\0\0\0\0\0\0\2\7\0-\7\0.\7\0/\7\0000\7\0001\7\0002\7\0003\7\0004\7\0005\7\0>\7\0?\7\0@\7\0A\1\0\25Ljava/util/Hashtable;\1\0\30Lsun/misc/Signal"..., 2930) = 2930 30059 lseek(4, 60095632, SEEK_SET) = 60095632 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\336g\315\333\30\2\0\0\30\2\0\0\"\0\0\0", 30) = 30 30059 lseek(4, 60095696, SEEK_SET) = 60095696 30059 read(4, "\312\376\272\276\0\0\0003\0\"\1\0\3()I\1\0\3()J\1\0\3()V\1\0\5(IJ)V\1\0\4(J)V\1\0\6\1\0\4Code\1\0\1J\1\0\17LineNumberTable\1\0\nSourceFile\1\0\ngetHandler\1\0\tgetNumber\1\0\6handle\1\0\7handle0\1\0\7handler\1\0\20java/lang/Object\1\0\34sun/misc/NativeSignalHandler\1\0\17sun/misc/Signal\1\0\26sun/misc/SignalHandler\7\0\20\7\0\21\7\0\22\7\0\23\1\0\24(Lsun/misc/Signal;)V\f\0\17\0\10\f\0\f\0\1\f\0\6\0\3\f\0\16\0\4\t\0\25\0\31\n\0\24\0\33\n\0\25\0\34\n\0\26\0\32\1\0\30NativeSignalHandler.java\0000\0\25\0\24\0\1\0\27\0\1\0\22\0\17\0\10\0\0\0\4\0\0\0\v\0\2\0\1\0\7\0\0\0\35\0\2\0\1\0\0\0\5*\264\0\35\255\0\0\0\1\0\t\0\0\0\6\0\1\0\0\0#\0\0\0\6\0\5\0\1\0\7\0\0\0*\0\3\0\3\0\0\0\n*\267\0\36*\37\265\0\35\261\0\0\0\1\0\t\0\0\0\16\0\3\0\0\0&\0\4\0'\0\t\0(\0\1\0\r\0\30\0\1\0\7\0\0\0(\0\3\0\2\0\0\0\f+\266\0 *\264\0\35\270\0\37\261\0\0\0\1\0\t\0\0\0\n\0\2\0\0\0+\0\v\0,\1\n\0\16\0\4\0\0\0\1\0\n\0\0\0\2\0!", 536) = 536 30059 rt_sigaction(SIGHUP, NULL, {SIG_DFL, [], 0}, 8) = 0 30059 rt_sigaction(SIGHUP, {0x7fb31a1210b0, ~[RTMIN RT_1], SA_RESTORER|SA_RESTART|SA_SIGINFO, 0x7fb31aeeacb0}, {SIG_DFL, [], 0}, 8) = 0 30059 rt_sigaction(SIGINT, NULL, {SIG_DFL, [], 0}, 8) = 0 30059 rt_sigaction(SIGINT, {0x7fb31a1210b0, ~[RTMIN RT_1], SA_RESTORER|SA_RESTART|SA_SIGINFO, 0x7fb31aeeacb0}, {SIG_DFL, [], 0}, 8) = 0 30059 rt_sigaction(SIGTERM, NULL, {SIG_DFL, [], 0}, 8) = 0 30059 rt_sigaction(SIGTERM, {0x7fb31a1210b0, ~[RTMIN RT_1], SA_RESTORER|SA_RESTART|SA_SIGINFO, 0x7fb31aeeacb0}, {SIG_DFL, [], 0}, 8) = 0 30059 lseek(4, 60065044, SEEK_SET) = 60065044 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B'\322E\237\5\1\0\0\5\1\0\0\34\0\0\0", 30) = 30 30059 lseek(4, 60065102, SEEK_SET) = 60065102 30059 read(4, "\312\376\272\276\0\0\0003\0\16\1\0\3()V\1\0\6\1\0\4Code\1\0\17LineNumberTable\1\0\nSourceFile\1\0\ninitialize\1\0\20java/lang/Object\1\0\26sun/misc/OSEnvironment\7\0\7\7\0\10\f\0\2\0\1\n\0\t\0\v\1\0\22OSEnvironment.java\0!\0\n\0\t\0\0\0\0\0\2\0\1\0\2\0\1\0\1\0\3\0\0\0\35\0\1\0\1\0\0\0\5*\267\0\f\261\0\0\0\1\0\4\0\0\0\6\0\1\0\0\0\34\0\t\0\6\0\1\0\1\0\3\0\0\0\31\0\0\0\0\0\0\0\1\261\0\0\0\1\0\4\0\0\0\6\0\1\0\0\0$\0\1\0\5\0\0\0\2\0\r", 261) = 261 30059 lseek(4, 60063138, SEEK_SET) = 60063138 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\32\371`H<\7\0\0<\7\0\0\30\0\0\0", 30) = 30 30059 lseek(4, 60063192, SEEK_SET) = 60063192 30059 read(4, "\312\376\272\276\0\0\0003\0P\1\0\3()I\1\0\3()V\1\0\25(Ljava/lang/String;)I\1\0\6\1\0\4Code\1\0\17EnclosingMethod\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\21[Ljava/lang/Enum;\1\0\3add\1\0\tblockedOn\1\0\21getAnnotationType\1\0\17getConstantPool\1\0\26getEnumConstantsShared\1\0\22getStackTraceDepth\1\0\24getStackTraceElement\1\0\17getStringHash32\1\0\6hash32\1\0\17java/lang/Class\1\0\20java/lang/Object\1\0\22java/lang/Shutdown\1\0\20java/lang/String\1\0\20java/lang/System\1\0\22java/lang/System$2\1\0\20java/lang/Thread\1\0\23java/lang/Throwable\1\0\24registerShutdownHook\1\0\21setAnnotationType\1\0\21setJavaLangAccess\1\0\27sun/misc/JavaLangAccess\7\0\v\7\0\25\7\0\26\7\0\27\7\0\30\7\0\31\7\0\32\7\0\33\7\0\34\7\0 \1\0005;>(Ljava/lang/Class;)[TE;\1\0\25()[Ljava/lang/Object;\1\0\31(IZLjava/lang/Runnable;)V\1\0 (I)Ljava/lang/StackTraceElement;\1\0\30(Ljava/lang/Throwable;)I\1\0\35(Lsun/nio/ch/Interruptible;)V\1\0\34()Lsun/reflect/ConstantPool;\1\0)()Lsun/reflect/annotation/AnnotationType;\1\0*(Lsun/reflect/annotation/AnnotationType;)V\1\0$(Ljava/lang/Class;)[Ljava/lang/Enum;\1\0005(Ljava/lang/Throwable;I)Ljava/lang/StackTraceElem"..., 1852) = 1852 30059 mprotect(0x7fb31441d000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 60062238, SEEK_SET) = 60062238 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\320\20E\216I\3\0\0I\3\0\0\35\0\0\0", 30) = 30 30059 lseek(4, 60062297, SEEK_SET) = 60062297 30059 read(4, "\312\376\272\276\0\0\0003\0\33\1\0\25(Ljava/lang/String;)I\1\0\tSignature\1\0\nSourceFile\1\0\tblockedOn\1\0\21getAnnotationType\1\0\17getConstantPool\1\0\26getEnumConstantsShared\1\0\22getStackTraceDepth\1\0\24getStackTraceElement\1\0\17getStringHash32\1\0\20java/lang/Object\1\0\24registerShutdownHook\1\0\21setAnnotationType\1\0\27sun/misc/JavaLangAccess\7\0\v\7\0\16\1\0005;>(Ljava/lang/Class;)[TE;\1\0\31(IZLjava/lang/Runnable;)V\1\0\30(Ljava/lang/Throwable;)I\1\0$(Ljava/lang/Class;)[Ljava/lang/Enum;\1\0005(Ljava/lang/Throwable;I)Ljava/lang/StackTraceElement;\1\0/(Ljava/lang/Thread;Lsun/nio/ch/Interruptible;)V\1\0-(Ljava/lang/Class;)Lsun/reflect/ConstantPool;\1\0:(Ljava/lang/Class;)Lsun/reflect/annotation/AnnotationType;\1\0;(Ljava/lang/Class;Lsun/reflect/annotation/AnnotationType;)V\1\0\23JavaLangAccess.java\6\1\0\20\0\17\0\0\0\0\0\t\4\1\0\6\0\27\0\0\4\1\0\r\0\31\0\0\4\1\0\5\0\30\0\0\4\1\0\7\0\24\0\1\0\2\0\0\0\2\0\21\4\1\0\4\0\26\0\0\4\1\0\f\0\22\0\0\4\1\0\10\0\23\0\0\4\1\0\t\0\25\0\0\4\1\0\n\0\1\0\0\0\1\0\3\0\0\0\2\0\32", 841) = 841 30059 lseek(4, 56458148, SEEK_SET) = 56458148 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\260\373\37\301E\2\0\0E\2\0\0(\0\0\0", 30) = 30 30059 lseek(4, 56458218, SEEK_SET) = 56458218 30059 read(4, "\312\376\272\276\0\0\0003\0\33\1\0\3()V\1\0\25(Ljava/lang/String;)V\1\0\30(Ljava/lang/Throwable;)V\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\1J\1\0\17LineNumberTable\1\0\nSourceFile\1\0\"java/lang/IllegalArgumentException\1\0\32java/lang/RuntimeException\1\0\20serialVersionUID\5\265\211s\323}f\217\274\7\0\n\7\0\v\1\0*(Ljava/lang/String;Ljava/lang/Throwable;)V\f\0\4\0\1\f\0\4\0\2\f\0\4\0\3\f\0\4\0\21\n\0\20\0\22\n\0\20\0\23\n\0\20\0\24\n\0\20\0\25\1\0\35IllegalArgumentException.java\0!\0\17\0\20\0\0\0\1\0\32\0\f\0\7\0\1\0\6\0\0\0\2\0\r\0\4\0\1\0\4\0\1\0\1\0\5\0\0\0!\0\1\0\1\0\0\0\5*\267\0\26\261\0\0\0\1\0\10\0\0\0\n\0\2\0\0\0+\0\4\0,\0\1\0\4\0\2\0\1\0\5\0\0\0\"\0\2\0\2\0\0\0\6*+\267\0\27\261\0\0\0\1\0\10\0\0\0\n\0\2\0\0\0005\0\5\0006\0\1\0\4\0\21\0\1\0\5\0\0\0#\0\3\0\3\0\0\0\7*+,\267\0\31\261\0\0\0\1\0\10\0\0\0\n\0\2\0\0\0I\0\6\0J\0\1\0\4\0\3\0\1\0\5\0\0\0\"\0\2\0\2\0\0\0\6*+\267\0\30\261\0\0\0\1\0\10\0\0\0\n\0\2\0\0\0[\0\5\0\\\0\1\0\t\0\0\0\2\0\32", 581) = 581 30059 lseek(4, 60061377, SEEK_SET) = 60061377 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305Bq\32\rY'\3\0\0'\3\0\0\30\0\0\0", 30) = 30 30059 lseek(4, 60061431, SEEK_SET) = 60061431 30059 read(4, "\312\376\272\276\0\0\0003\0)\1\0\3()V\1\0\25(Ljava/lang/String;)Z\1\0\10\1\0\6\1\0\4Code\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\naccess$000\1\0\7command\1\0\fcompileClass\1\0\16compileClasses\1\0\7disable\1\0\fdoPrivileged\1\0\6enable\1\0\ninitialize\1\0\22java/lang/Compiler\1\0\24java/lang/Compiler$1\1\0\20java/lang/Object\1\0\36java/security/AccessController\1\0\17registerNatives\7\0\22\7\0\23\7\0\24\7\0\25\1\0\24(Ljava/lang/Class;)Z\1\0\27(Ljava/lang/Class<*>;)Z\1\0&(Ljava/lang/Object;)Ljava/lang/Object;\1\0004(Ljava/security/PrivilegedAction;)Ljava/lang/Object;\f\0\4\0\1\f\0\21\0\1\f\0\26\0\1\f\0\17\0\36\n\0\27\0 \n\0\27\0!\n\0\30\0\37\n\0\31\0\37\n\0\32\0\"\1\0\rCompiler.java\0001\0\27\0\31\0\0\0\0\0\n\0\2\0\4\0\1\0\1\0\5\0\0\0\35\0\1\0\1\0\0\0\5*\267\0&\261\0\0\0\1\0\7\0\0\0\6\0\1\0\0\0000\1\n\0\21\0\1\0\0\1\n\0\26\0\1\0\0\1\t\0\f\0\33\0\1\0\10\0\0\0\2\0\34\1\t\0\r\0\2\0\0\1\t\0\v\0\35\0\0\1\t\0\20\0\1\0\0\1\t\0\16\0\1\0\0\20\10\0\n\0\1\0\1\0\5\0\0\0\34\0\0\0\0\0\0\0\4\270\0#\261\0\0\0\1\0\7\0\0\0\6\0\1\0\0\0/\0\10\0\3\0\1\0\1\0\5\0\0\0/\0\2\0\0\0\0\0\17\270\0$\273\0\30Y\267\0%\270\0'W\261\0\0\0\1\0\7\0\0\0\16\0\3\0\0\0007\0\3\0008\0\16\0R\0\2\0\t\0\0\0\2\0(\0\6\0\0\0\n\0\1\0\30\0\0\0\0\0\10", 807) = 807 30059 lseek(4, 60059800, SEEK_SET) = 60059800 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\360\365\353\16\361\5\0\0\361\5\0\0\32\0\0\0", 30) = 30 30059 lseek(4, 60059856, SEEK_SET) = 60059856 30059 read(4, "\312\376\272\276\0\0\0003\0X\10\0\t\10\0\n\10\0\20\10\0\21\10\0\30\10\0\34\10\0\"\10\0#\1\0\0\1\0\"\" not found. Will use interpreter.\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\25(Ljava/lang/Object;)Z\1\0&(Ljava/lang/String;)Ljava/lang/String;\1\0\25(Ljava/lang/String;)V\1\0\2, \1\0\7, nojit\1\0\6\1\0\4Code\1\0\17EnclosingMethod\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\25Ljava/io/PrintStream;\1\0\4NONE\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\27Warning: JIT compiler \"\1\0\naccess$000\1\0\6append\1\0\6equals\1\0\3err\1\0\vgetProperty\1\0\rjava.compiler\1\0\fjava.vm.info\1\0\23java/io/PrintStream\1\0\22java/lang/Compiler\1\0\24java/lang/Compiler$1\1\0\20java/lang/Object\1\0\20java/lang/String\1\0\27java/lang/StringBuilder\1\0\20java/lang/System\1\0\36java/lang/UnsatisfiedLinkError\1\0\36java/security/PrivilegedAction\1\0\vloadLibrary\1\0\7println\1\0\3run\1\0\vsetProperty\1\0\10toString\7\0$\7\0%\7\0&\7\0'\7\0(\7\0)\7\0*\7\0+\7\0,\1\0DLjava/lang/Object;Ljava/security/PrivilegedAction;\1\0\24()Ljava/lang/Object;\1\0\22()Ljava/lang/Void;\1\0-(Ljava/lang/String;)Ljava/lang/StringBuilder;\1\0008(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;\f\0 \0\27\f\0\22\0\f\f\0\35\0\f\f\0\37\0\r\f\0001\0\v\f\0"..., 1521) = 1521 30059 lseek(4, 60055331, SEEK_SET) = 60055331 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\300\264\270\211@\21\0\0@\21\0\0\27\0\0\0", 30) = 30 30059 lseek(4, 60055384, SEEK_SET) = 60055384 30059 read(4, "\312\376\272\276\0\0\0003\0\325\10\0\t\10\0\23\10\0\27\10\0\30\10\0\31\10\0+\10\0:\10\0V\1\0\0\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\25(I)Ljava/lang/String;\1\0\26(II)Ljava/lang/String;\1\0\25(Ljava/lang/Object;)Z\1\0%(Ljava/lang/String;)Ljava/lang/Class;\1\0&(Ljava/lang/String;)Ljava/lang/String;\1\0\25(Ljava/lang/String;)V\1\0\1.\1\0\10\1\0\6\1\0\4Code\1\0\"Could not create SecurityManager: \1\0)Could not create application class loader\1\0'Could not create extension class loader\1\0\fInnerClasses\1\0\rLauncher.java\1\0\17LineNumberTable\1\0\22Ljava/lang/String;\1\0\nSourceFile\1\0\rStackMapTable\1\0\17[Ljava/io/File;\1\0\17[Ljava/net/URL;\1\0\naccess$100\1\0\naccess$200\1\0\naccess$300\1\0\naccess$400\1\0\6append\1\0\tarraycopy\1\0\3bcp\1\0\rbootClassPath\1\0\rcurrentThread\1\0\7default\1\0\6equals\1\0\7factory\1\0\vfileHandler\1\0\20fileToEncodedURL\1\0\21getAppClassLoader\1\0\25getBootstrapClassPath\1\0\20getCanonicalFile\1\0\16getClassLoader\1\0\fgetClassPath\1\0\21getExtClassLoader\1\0\ngetFileURL\1\0\vgetLauncher\1\0\vgetProperty\1\0\7indexOf\1\0\25java.security.manager\1\0\fjava/io/File\1\0\23java/io/IOException\1\0\17java/lang/Class\1\0\34java/lang/ClassCastException\1\0\25java/lang"..., 4416) = 4416 30059 lseek(4, 60053780, SEEK_SET) = 60053780 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\276\3325\30\322\5\0\0\322\5\0\0\37\0\0\0", 30) = 30 30059 lseek(4, 60053841, SEEK_SET) = 60053841 30059 read(4, "\312\376\272\276\0\0\0003\0R\10\0\n\10\0\v\10\0\27\10\0&\10\0*\1\0\24()Ljava/lang/String;\1\0\3()V\1\0%(Ljava/lang/String;)Ljava/lang/Class;\1\0\25(Ljava/lang/String;)V\1\0\1.\1\0\10.Handler\1\0\10\1\0\6\1\0\4Code\1\0\fInnerClasses\1\0\rLauncher.java\1\0\17LineNumberTable\1\0\22Ljava/lang/String;\1\0\6PREFIX\1\0\nSourceFile\1\0\rStackMapTable\1\0\6append\1\0\17could not load \1\0\26createURLStreamHandler\1\0\7forName\1\0\17java/lang/Class\1\0 java/lang/ClassNotFoundException\1\0 java/lang/IllegalAccessException\1\0 java/lang/InstantiationException\1\0\27java/lang/InternalError\1\0\20java/lang/Object\1\0\20java/lang/String\1\0\27java/lang/StringBuilder\1\0\31java/net/URLStreamHandler\1\0 java/net/URLStreamHandlerFactory\1\0\vnewInstance\1\0\17printStackTrace\1\0\24sun.net.www.protocol\1\0\21sun/misc/Launcher\1\0\23sun/misc/Launcher$1\1\0\31sun/misc/Launcher$Factory\1\0\27system protocol handler\1\0\10toString\7\0\32\7\0\33\7\0\34\7\0\35\7\0\36\7\0\37\7\0 \7\0!\7\0\"\7\0#\7\0'\7\0(\7\0)\1\0\24()Ljava/lang/Object;\1\0\30(Lsun/misc/Launcher$1;)V\1\0-(Ljava/lang/String;)Ljava/lang/StringBuilder;\1\0/(Ljava/lang/String;)Ljava/net/URLStreamHandler;\f\0\23\0\22\f\0\r\0\7\f\0%\0\7\f\0$\0009\f\0+\0\6\f\0\r\0\t\f\0\31\0\10\f\0\26\0;\t\0008\0="..., 1490) = 1490 30059 mprotect(0x7fb31441e000, 8192, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 60053493, SEEK_SET) = 60053493 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\35y\23l\333\0\0\0\333\0\0\0&\0\0\0", 30) = 30 30059 lseek(4, 60053561, SEEK_SET) = 60053561 30059 read(4, "\312\376\272\276\0\0\0003\0\t\1\0\nSourceFile\1\0\26createURLStreamHandler\1\0\20java/lang/Object\1\0 java/net/URLStreamHandlerFactory\7\0\3\7\0\4\1\0/(Ljava/lang/String;)Ljava/net/URLStreamHandler;\1\0\34URLStreamHandlerFactory.java\6\1\0\6\0\5\0\0\0\0\0\1\4\1\0\2\0\7\0\0\0\1\0\1\0\0\0\2\0\10", 219) = 219 30059 lseek(4, 60049788, SEEK_SET) = 60049788 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305BQ\315\374\3745\16\0\0005\16\0\0&\0\0\0", 30) = 30 30059 lseek(4, 60049856, SEEK_SET) = 60049856 30059 read(4, "\312\376\272\276\0\0\0003\0\277\10\0001\10\0B\10\0D\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\25(Ljava/lang/Object;)Z\1\0&(Ljava/lang/String;)Ljava/lang/String;\1\0\25(Ljava/lang/String;)V\1\0'(Ljava/lang/String;Ljava/lang/String;)V\1\0\10\1\0\6\1\0\4Code\1\0\nExceptions\1\0\fInnerClasses\1\0\rLauncher.java\1\0\17LineNumberTable\1\0\22Ljava/lang/String;\1\0\nSourceFile\1\0\rStackMapTable\1\0\17[Ljava/io/File;\1\0\23[Ljava/lang/String;\1\0\17[Ljava/net/URL;\1\0![Ljava/security/cert/Certificate;\1\0\naccess$100\1\0\3add\1\0\taddExtURL\1\0\6addURL\1\0\10copyInto\1\0\vcountTokens\1\0\fdoPrivileged\1\0\6equals\1\0\6exists\1\0\vfindLibrary\1\0\17getAbsolutePath\1\0\vgetCodeBase\1\0\ngetContext\1\0\fgetException\1\0\21getExtClassLoader\1\0\ngetExtDirs\1\0\ngetExtURLs\1\0\ngetFileURL\1\0\rgetParentFile\1\0\7getPath\1\0\vgetProperty\1\0\20getSavedProperty\1\0\7getURLs\1\0\rjava.ext.dirs\1\0\fjava/io/File\1\0\23java/io/IOException\1\0\25java/lang/ClassLoader\1\0\20java/lang/String\1\0\20java/lang/System\1\0\fjava/net/URL\1\0\27java/net/URLClassLoader\1\0\"java/security/AccessControlContext\1\0\36java/security/AccessController\1\0\30java/security/CodeSource\1\0'java/security/Privil"..., 3637) = 3637 30059 mprotect(0x7fb314420000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 60037848, SEEK_SET) = 60037848 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\370h\210di.\0\0i.\0\0\35\0\0\0", 30) = 30 30059 lseek(4, 60037907, SEEK_SET) = 60037907 30059 read(4, "\312\376\272\276\0\0\0003\2\4\10\0\r\10\0\37\10\0 \10\0!\10\0%\10\0F\10\0J\10\0S\10\0\256\10\0\262\10\0\263\10\0\277\1\0\n is sealed\1\0\3()I\1\0\3()J\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4()[B\1\0\4(I)I\1\0\26(II)Ljava/lang/String;\1\0\4(J)V\1\0\25(Ljava/lang/Object;)V\1\0\25(Ljava/lang/Object;)Z\1\0%(Ljava/lang/String;)Ljava/lang/Class;\1\0&(Ljava/lang/String;)Ljava/lang/String;\1\0\25(Ljava/lang/String;)V\1\0\25(Ljava/lang/String;)Z\1\0'(Ljava/lang/String;Ljava/lang/String;)V\1\0\30(Ljava/lang/Throwable;)V\1\0\1-\1\0\1/\1\0\20: already loaded\1\0\10\1\0\6\1\0\1C\1\0\24Cannot find package \1\0\4Code\1\0\nExceptions\1\0\24IMPLEMENTATION_TITLE\1\0\25IMPLEMENTATION_VENDOR\1\0\26IMPLEMENTATION_VERSION\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\22Ljava/lang/String;\1\0\4Name\1\0\6SEALED\1\0\23SPECIFICATION_TITLE\1\0\24SPECIFICATION_VENDOR\1\0\25SPECIFICATION_VERSION\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\23URLClassLoader.java\1\0\17[Ljava/net/URL;\1\0\3acc\1\0\naccess$000\1\0\naccess$100\1\0\naccess$200\1\0\3add\1\0\22addElapsedTimeFrom\1\0\raddSuppressed\1\0\6addURL\1\0\6append\1\0\26checkCreateClassLoader\1\0\17checkPermission\1\0\10checkURL\1\0\5clear\1\0\5close\1\0\20closeClassLoader\1\0\fcloseLoaders\1\0\nclo"..., 11881) = 11881 30059 mprotect(0x7fb314421000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 60034687, SEEK_SET) = 60034687 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\304\362\310\357\26\f\0\0\26\f\0\0%\0\0\0", 30) = 30 30059 lseek(4, 60034754, SEEK_SET) = 60034754 30059 read(4, "\312\376\272\276\0\0\0003\0\202\10\0\5\10\0\6\10\0\16\10\0/\1\0\0\1\0\20 getPermissions \1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4(I)V\1\0\25(Ljava/lang/String;)V\1\0\10\1\0\6\1\0\"ClassLoader object not initialized\1\0\4Code\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\1Z\1\0\6append\1\0\5check\1\0\26checkCreateClassLoader\1\0\5debug\1\0\vdefineClass\1\0\3get\1\0\vgetInstance\1\0\16getPermissions\1\0\23getProtectionDomain\1\0\22getSecurityManager\1\0\vinitialized\1\0\25java/lang/ClassLoader\1\0\20java/lang/Object\1\0\33java/lang/SecurityException\1\0\31java/lang/SecurityManager\1\0\27java/lang/StringBuilder\1\0\20java/lang/System\1\0\23java/lang/Throwable\1\0\31java/security/Permissions\1\0\36java/security/ProtectionDomain\1\0\37java/security/SecureClassLoader\1\0\21java/util/HashMap\1\0\7pdcache\1\0\7println\1\0\3put\1\0\31registerAsParallelCapable\1\0\3scl\1\0\27sun/security/util/Debug\1\0\10toString\7\0 \7\0!\7\0\"\7\0#\7\0$\7\0%\7\0&\7\0'\7\0(\7\0)\7\0*\7\0000\1\0\23Ljava/util/HashMap;\1\0\31Lsun/security/util/Debug;\1\0OLjava/util/HashMap;\1\0\32(Ljava/lang/ClassLoader;)V\1\0\35()Ljava/lang/SecurityMana"..., 3094) = 3094 30059 lseek(4, 60028839, SEEK_SET) = 60028839 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\7\"T\25\235\26\0\0\235\26\0\0\35\0\0\0", 30) = 30 30059 lseek(4, 60028898, SEEK_SET) = 60028898 30059 read(4, "\312\376\272\276\0\0\0003\1\v\10\0000\10\0001\10\0002\10\0003\10\0004\10\0005\10\0006\10\0007\10\0008\10\0009\10\0:\10\0J\10\0K\10\0L\10\0M\10\0N\10\0O\10\0P\10\0Z\10\0]\10\0^\10\0`\10\0a\10\0b\10\0c\10\0d\10\0e\10\0f\10\0k\10\0l\10\0m\10\0o\10\0p\10\0r\10\0v\10\0z\10\0{\10\0\177\10\0\200\10\0\201\10\0\216\10\0\221\10\0\222\10\0\223\10\0\226\10\0\230\10\0\231\1\0\0\1\0\5\n \1\0\1 \1\0\2 \1\0\4 \1\0+ GSS LoginConfigImpl debugging\1\0004 and domain that didn't have permission\1\0\36 is being checked\1\0004 only dump output if specified codebase\1\0006 only dump output if specified permission\1\0\4 -\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4()[C\1\0\25(I)Ljava/lang/String;\1\0\4(I)V\1\0\26(II)Ljava/lang/String;\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)I\1\0&(Ljava/lang/String;)Ljava/lang/String;\1\0,(Ljava/lang/String;)Ljava/lang/StringBuffer;\1\0\25(Ljava/lang/String;)V\1\0\25(Ljava/lang/String;)Z\1\0'(Ljava/lang/String;Ljava/lang/String;)V\1\0\6(null)\1\0\1,\1\0\1-\1\0\0010\1\0\0200123456789abcdef\1\0\1:\1\0\2: \1\0\10\1\0\6\1\0\4Code\1\0\7ENGLISH\1\0\4Help\1\0\17LineNumberTable\1\0\25Ljava/io/PrintStream;\1\0\22Ljava/lang/String;\1\0\22Ljava/util/Locale;\1\0,Note: Separate multiple options with a comma\1\0\nSourceFile\1\0"..., 5789) = 5789 30059 mprotect(0x7fb314422000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 27749204, SEEK_SET) = 27749204 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\22\361m\260\337\4\0\0\337\4\0\0+\0\0\0", 30) = 30 30059 lseek(4, 27749277, SEEK_SET) = 27749277 30059 read(4, "\312\376\272\276\0\0\0003\0007\1\0\3()V\1\0\25(Ljava/lang/Object;)Z\1\0\10\1\0\6\1\0\20ClassLoader.java\1\0\4Code\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\3add\1\0\10contains\1\0\rgetSuperclass\1\0\fisRegistered\1\0\17java/lang/Class\1\0\25java/lang/ClassLoader\1\0%java/lang/ClassLoader$ParallelLoaders\1\0\20java/lang/Object\1\0\23java/lang/Throwable\1\0\25java/util/Collections\1\0\rjava/util/Set\1\0\25java/util/WeakHashMap\1\0\vloaderTypes\1\0\rnewSetFromMap\1\0\10register\7\0\20\7\0\21\7\0\22\7\0\23\7\0\24\7\0\25\7\0\26\7\0\27\1\0\17Ljava/util/Set;\1\0;>;\1\0\23()Ljava/lang/Class;\1\0\24(Ljava/lang/Class;)Z\1\0.(Ljava/lang/Class<+Ljava/lang/ClassLoader;>;)Z\1\0 (Ljava/util/Map;)Ljava/util/Set;\f\0\30\0#\f\0\4\0\1\f\0\16\0%\f\0\f\0\2\f\0\r\0\2\f\0\31\0(\t\0\35\0)\n\0\33\0+\n\0\36\0*\n\0 \0.\n\0\"\0*\v\0!\0,\v\0!\0-\1\0\17ParallelLoaders\0 \0\35\0\36\0\0\0\1\0\32\0\30\0#\0\1\0\t\0\0\0\2\0$\0\4\0\2\0\4\0\1\0\1\0\6\0\0\0\35\0\1\0\1\0\0\0\5*\267\0001\261\0\0\0\1\0\10\0\0\0\6\0\1\0\0\0\302\0\10\0\32\0&\0\2\0\6\0\0\0\202\0\2\0\3\0\0\0,\262\0/YL\302\262\0/*\266\0000\271\0005\2\0\231\0\21\262\0/*\271\0004\2\0W\4+\303\254\3+\303\254M+\303,\277\0\3\0\6\0\"\0'\0\0\0#\0&\0'\0\0\0'\0*\0'\0\0\0\2\0\v\0\0\0\f\0\2\374\0#\7\0\36C\7\0\37\0\10\0\0\0\32\0\6\0\0\0\322\0\6\0\323\0\25\0\331\0\37\0\332\0#\0\334\0'\0\336\0\t\0\0\0\2\0'\0\10\0\17\0&\0\2\0\6\0\0\0_\0\2\0\3\0\0\0\27\262\0"..., 1247) = 1247 30059 lseek(4, 43214122, SEEK_SET) = 43214122 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\0179\235\2118\4\0\0008\4\0\0\35\0\0\0", 30) = 30 30059 lseek(4, 43214181, SEEK_SET) = 43214181 30059 read(4, "\312\376\272\276\0\0\0003\0O\10\0\20\1\0\3()D\1\0\3()J\1\0\3()V\1\0\4(D)J\1\0\4(J)V\1\0\25(Ljava/lang/Object;)I\1\0\25(Ljava/lang/String;)V\1\0\10\1\0\6\1\0\4Code\1\0\fInnerClasses\1\0\vLANG_ACCESS\1\0\17LineNumberTable\1\0\nSEED_MAKER\1\0\36Shared secrets not initialized\1\0\nSourceFile\1\0\rStackMapTable\1\0\21currentTimeMillis\1\0\23doubleToRawLongBits\1\0\nfreeMemory\1\0\21getJavaLangAccess\1\0\ngetRuntime\1\0\20identityHashCode\1\0\20java/lang/Double\1\0\17java/lang/Error\1\0\16java/lang/Math\1\0\20java/lang/Object\1\0\21java/lang/Runtime\1\0\20java/lang/System\1\0\20java/util/Random\1\0\10nanoTime\1\0\6random\1\0\20sun/misc/Hashing\1\0\27sun/misc/Hashing$Holder\1\0\26sun/misc/SharedSecrets\7\0\31\7\0\32\7\0\33\7\0\34\7\0\35\7\0\36\7\0\37\7\0\"\7\0#\7\0$\1\0\22Ljava/util/Random;\1\0\31Lsun/misc/JavaLangAccess;\1\0\25()Ljava/lang/Runtime;\1\0\33()Lsun/misc/JavaLangAccess;\f\0\17\0/\f\0\r\0000\f\0!\0\2\f\0\23\0\3\f\0\25\0\3\f\0 \0\3\f\0\n\0\4\f\0\24\0\5\f\0\n\0\6\f\0\30\0\7\f\0\27\0001\f\0\n\0\10\f\0\26\0002\t\0-\0003\t\0-\0004\n\0%\0:\n\0&\0>\n\0'\0005\n\0(\0009\n\0)\0007\n\0)\0=\n\0*\0006\n\0*\0008\n\0*\0<\n\0+\0;\n\0.\0?\1\0\fHashing.java\1\0\6Holder\0 \0-\0(\0\0\0\2\0\30\0\17\0/\0\0\0\30\0\r\0000\0\0\0\2\0\2\0\n\0\4\0\1\0\v\0\0\0\35\0\1\0\1\0\0\0\5*\267\0E\261\0\0\0\1\0\16\0\0\0\6\0\1\0\0\0\325\0\10\0\t\0\4\0\1\0\v\0\0\0p\0\6\0\0\0\0\0?\273\0+Y\270\0D\270\0B\23\0,\270\0J\205\203\270\0H\203\270\0I\203\270\0G\266\0F\203\267\0K\263\0@\270\0L\263\0A\1\262\0A\246"..., 1080) = 1080 30059 lseek(4, 55598740, SEEK_SET) = 55598740 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\336\253\245\17\20\22\0\0\20\22\0\0\26\0\0\0", 30) = 30 30059 lseek(4, 55598792, SEEK_SET) = 55598792 30059 read(4, "\312\376\272\276\0\0\0003\0\375\4K\200\0\0\10\0!\10\0-\10\0I\10\0S\10\0[\1\0\3()D\1\0\3()F\1\0\3()I\1\0\3()J\1\0\3()V\1\0\3()Z\1\0\4(D)D\1\0\4(I)I\1\0\5(II)I\1\0\4(J)J\1\0\4(J)V\1\0\5(JJ)Z\1\0\25(Ljava/lang/String;)V\1\0\26(Ljava/lang/String;Z)V\1\0\30(Ljava/lang/Throwable;)V\1\0\5([B)V\1\0\10\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\1D\1\0\nExceptions\1\0\fInnerClasses\1\0\1J\1\0\17LineNumberTable\1\0\21Ljava/lang/Class;\1\0\24Random: invalid seed\1\0\nSourceFile\1\0\rStackMapTable\1\0\4TYPE\1\0\1Z\1\0\34[Ljava/io/ObjectStreamField;\1\0\6addend\1\0\rcompareAndSet\1\0\3get\1\0\10getClass\1\0\20getDeclaredField\1\0\tgetUnsafe\1\0\24haveNextNextGaussian\1\0\17initialScramble\1\0\23java/io/IOException\1\0\31java/io/ObjectInputStream\1\0\"java/io/ObjectInputStream$GetField\1\0\32java/io/ObjectOutputStream\1\0#java/io/ObjectOutputStream$PutField\1\0\31java/io/ObjectStreamField\1\0\24java/io/Serializable\1\0 java/io/StreamCorruptedException\1\0\21java/lang/Boolean\1\0\17java/lang/Class\1\0 java/lang/ClassNotFoundException\1\0\20java/lang/Double\1\0\17java/lang/Error\1\0\23java/lang/Exception\1\0\"java/lang/IllegalArgumentException\1\0\16java/lang/Long\1\0\16java/lang/Math\1\0\20java/lang/Object\1\0\24java/lang/Strict"..., 4624) = 4624 30059 lseek(4, 55596092, SEEK_SET) = 55596092 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\243\247`<\16\n\0\0\16\n\0\0,\0\0\0", 30) = 30 30059 lseek(4, 55596166, SEEK_SET) = 55596166 30059 read(4, "\312\376\272\276\0\0\0003\0j\10\0007\1\0\3()D\1\0\3()F\1\0\3()I\1\0\3()J\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4(J)J\1\0\4(J)V\1\0\5(JJ)Z\1\0\30(Ljava/lang/Throwable;)V\1\0\10\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\1J\1\0\17LineNumberTable\1\0\nSourceFile\1\0\rStackMapTable\1\0\rVMSupportsCS8\1\0\24VM_SUPPORTS_LONG_CAS\1\0\1Z\1\0\taddAndGet\1\0\rcompareAndSet\1\0\22compareAndSwapLong\1\0\17decrementAndGet\1\0\vdoubleValue\1\0\nfloatValue\1\0\3get\1\0\tgetAndAdd\1\0\17getAndDecrement\1\0\17getAndIncrement\1\0\tgetAndSet\1\0\20getDeclaredField\1\0\tgetUnsafe\1\0\17incrementAndGet\1\0\10intValue\1\0\24java/io/Serializable\1\0\17java/lang/Class\1\0\17java/lang/Error\1\0\23java/lang/Exception\1\0\16java/lang/Long\1\0\20java/lang/Number\1\0&java/util/concurrent/atomic/AtomicLong\1\0\7lazySet\1\0\tlongValue\1\0\21objectFieldOffset\1\0\16putOrderedLong\1\0\20serialVersionUID\1\0\3set\1\0\17sun/misc/Unsafe\1\0\10toString\1\0\6unsafe\1\0\5value\1\0\vvalueOffset\1\0\21weakCompareAndSet\5\32\300\372\264w\0\27\30\7\0'\7\0(\7\0)\7\0*\7\0+\7\0,\7\0-\7\0004\1\0\21Lsun/misc/Unsafe;\1\0\27(Ljava/lang/Object;JJ)V\1\0\30(Ljava/lang/Object;JJJ)Z\1\0\25(J)Ljava/lang/String;\1\0\34(Ljava/lang/reflect/Field;)J\1\0\23()Lsun/misc/Unsafe;\1\0-(Ljava/lang/St"..., 2574) = 2574 30059 lseek(4, 29933278, SEEK_SET) = 29933278 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\252\"\307\353D\4\0\0D\4\0\0\"\0\0\0", 30) = 30 30059 lseek(4, 29933342, SEEK_SET) = 29933342 30059 read(4, "\312\376\272\276\0\0\0003\0009\3\177\377\377\377\10\0\r\10\0\33\10\0\36\1\0\3()V\1\0\25(Ljava/lang/String;)I\1\0\25(Ljava/lang/String;)V\1\0\10\1\0\6\1\0\35ALTERNATIVE_HASHING_THRESHOLD\1\0\4Code\1\0\1I\1\0000Illegal value for 'jdk.map.althashing.threshold'\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\nSourceFile\1\0\rStackMapTable\1\0\fdoPrivileged\1\0\17java/lang/Error\1\0\"java/lang/IllegalArgumentException\1\0\21java/lang/Integer\1\0\20java/lang/Object\1\0\20java/lang/String\1\0\36java/security/AccessController\1\0\25java/util/WeakHashMap\1\0\34java/util/WeakHashMap$Holder\1\0\34jdk.map.althashing.threshold\1\0\10parseInt\1\0%sun/security/action/GetPropertyAction\1\0\37value must be positive integer.\7\0\23\7\0\24\7\0\25\7\0\26\7\0\27\7\0\30\7\0\31\7\0\32\7\0\35\1\0004(Ljava/security/PrivilegedAction;)Ljava/lang/Object;\1\0*(Ljava/lang/String;Ljava/lang/Throwable;)V\f\0\n\0\f\f\0\t\0\5\f\0\34\0\6\f\0\t\0\7\f\0\22\0(\f\0\t\0)\t\0&\0*\n\0\37\0/\n\0 \0-\n\0!\0,\n\0\"\0+\n\0$\0.\n\0'\0-\1\0\6Holder\1\0\20WeakHashMap.java\0 \0&\0\"\0\0\0\1\0\30\0\n\0\f\0\0\0\2\0\2\0\t\0\5\0\1\0\v\0\0\0\35\0\1\0\1\0\0\0\5*\267\0004\261\0\0\0\1\0\17\0\0\0\6\0\1\0\0\0\312\0\10\0\10\0\5\0\1\0\v\0\0\0\267\0\4\0\3\0\0\0I\273\0'Y\22\3\267\0006\270\0005\300\0#K\1*\245\0\n*\270\0003\247\0\5\22\1<\33\2\240\0\6\22\1<\33\234\0\r\273\0 Y\22\4\267\0002\277\247\0\17M\273\0\37Y\22\2,\267\0001\277\33\263\0000\261\0\1\0\20\0005\0008\0 \0\2\0\21\0\0\0 \0\6\374\0\34\7\0#A\1\374\0\10\1\r\377\0\2"..., 1092) = 1092 30059 lseek(4, 29608632, SEEK_SET) = 29608632 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B9\304\274N?\v\0\0?\v\0\0&\0\0\0", 30) = 30 30059 lseek(4, 29608700, SEEK_SET) = 29608700 30059 read(4, "\312\376\272\276\0\0\0003\0\206\10\0\21\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)V\1\0\6(TE;)Z\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\nExceptions\1\0\fInnerClasses\1\0\1J\1\0\17LineNumberTable\1\0\23Ljava/lang/Boolean;\1\0\20Map is non-empty\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\4TRUE\1\0\3add\1\0\5clear\1\0\10contains\1\0\vcontainsAll\1\0\vcontainsKey\1\0\21defaultReadObject\1\0\6equals\1\0\10hashCode\1\0\7isEmpty\1\0\10iterator\1\0\23java/io/IOException\1\0\31java/io/ObjectInputStream\1\0\24java/io/Serializable\1\0\21java/lang/Boolean\1\0 java/lang/ClassNotFoundException\1\0\"java/lang/IllegalArgumentException\1\0\20java/lang/Object\1\0\25java/util/AbstractSet\1\0\25java/util/Collections\1\0 java/util/Collections$SetFromMap\1\0\rjava/util/Map\1\0\rjava/util/Set\1\0\6keySet\1\0\1m\1\0\3put\1\0\nreadObject\1\0\6remove\1\0\tremoveAll\1\0\tretainAll\1\0\1s\1\0\20serialVersionUID\1\0\4size\1\0\7toArray\1\0\10toString\5\"\20\262PE\362\37\304\7\0 \7\0!\7\0\"\7\0#\7\0$\7\0%\7\0&\7\0'\7\0(\7\0)\7\0*\7\0+\1\0 ([TT;)[TT;\1\0\17Ljava/util/Map;\1\0\17Ljava/util/Set;\1\0\24Ljava/util/Set;\1\0'Ljava/util/Map;\1\0\\\1\0\4Code\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\5clear\1\0\10contains\1\0\vcontainsKey\1\0\10iterator\1\0\25java/util/AbstractSet\1\0\25java/util/WeakHashMap\1\0\27java/util/WeakHashMap$1\1\0!java/util/WeakHashMap$KeyIterator\1\0\34java/util/WeakHashMap$KeySet\1\0\6remove\1\0\4size\1\0\6this$0\7\0\17\7\0\20\7\0\21\7\0\22\7\0\23\1\0\34Ljava/util/AbstractSet;\1\0\27Ljava/util/WeakHashMap;\1\0\26()Ljava/util/Iterator;\1\0\33()Ljava/util/Iterator;\1\0\32(Ljava/util/WeakHashMap;)V\1\0&(Ljava/lang/Object;)Ljava/lang/Object;\1\0003(Ljava/util/WeakHashMap;Ljava/util/WeakHashMap$1;)V\f\0\26\0\35\f\0\25\0\1\f\0\4\0\2\f\0\v\0\2\f\0\r\0\3\f\0\4\0 \f\0\24\0!\f\0\4\0\"\t\0\33\0#\n\0\27\0%\n\0\30\0$\n\0\30\0&\n\0\30\0'\n\0\30\0)\n\0\32\0*\n\0\33\0(\1\0\vKeyIterator\1\0\6KeySet\1\0\20WeakHashMap.java\0 \0\33\0\27\0\0\0\1\20\20\0\26\0\35\0\0\0\7\0\2\0\4\0 \0\1\0\5\0\0\0\"\0\2\0\2\0\0\0\n*+\265\0+*\267\0,\261\0\0\0\1\0\7\0\0\0\6\0\1\0\0\3\262\0\1\0\16\0\36\0\2\0\5\0\0\0%\0\4\0\1\0\0\0\r\273\0\32Y*\264\0+\1\267\0001\260\0\0\0\1\0\7\0\0\0\6\0\1\0\0\3\264\0\10\0\0\0\2\0\37\0\1\0\25\0\1\0\1\0\5\0\0\0 \0\1\0\1\0\0\0\10*\264\0+\266\0-\254\0\0\0\1\0\7\0\0\0\6\0\1\0\0\3\270\0\1\0\f\0\3\0\1\0\5\0\0\0!\0\2\0\2\0\0\0\t*\264\0++\266\0/\254\0\0\0\1\0\7\0\0\0\6\0\1\0\0\3\274\0\1\0\24\0\3\0\1\0\5\0\0\0E\0\2\0\2\0\0\0\30*\264\0++\266\0/\231\0\16*\264\0++\266\0000W\4\254\3\254\0\0\0\2\0\n\0\0\0\3\0\1\26\0\7"..., 1166) = 1166 30059 lseek(4, 60028310, SEEK_SET) = 60028310 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305Bz\36\210\325\324\1\0\0\324\1\0\0\37\0\0\0", 30) = 30 30059 lseek(4, 60028371, SEEK_SET) = 60028371 30059 read(4, "\312\376\272\276\0\0\0003\0\30\1\0\3()V\1\0\6\1\0\4Code\1\0\17EnclosingMethod\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\nSourceFile\1\0\23URLClassLoader.java\1\0\naccess$000\1\0\17getURLClassPath\1\0\20java/lang/Object\1\0\27java/net/URLClassLoader\1\0\31java/net/URLClassLoader$7\1\0\26sun/misc/JavaNetAccess\7\0\v\7\0\f\7\0\r\7\0\16\1\0002(Ljava/net/URLClassLoader;)Lsun/misc/URLClassPath;\f\0\2\0\1\f\0\t\0\23\n\0\17\0\24\n\0\20\0\25\0000\0\21\0\17\0\1\0\22\0\0\0\2\0\0\0\2\0\1\0\1\0\3\0\0\0\35\0\1\0\1\0\0\0\5*\267\0\26\261\0\0\0\1\0\6\0\0\0\6\0\1\0\0\2\360\0\1\0\n\0\23\0\1\0\3\0\0\0\35\0\1\0\2\0\0\0\5+\270\0\27\260\0\0\0\1\0\6\0\0\0\6\0\1\0\0\2\362\0\3\0\7\0\0\0\2\0\10\0\4\0\0\0\4\0\20\0\0\0\5\0\0\0\n\0\1\0\21\0\0\0\0\0\10", 468) = 468 30059 lseek(4, 60028057, SEEK_SET) = 60028057 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\265\211\340q\303\0\0\0\303\0\0\0\34\0\0\0", 30) = 30 30059 lseek(4, 60028115, SEEK_SET) = 60028115 30059 read(4, "\312\376\272\276\0\0\0003\0\t\1\0\nSourceFile\1\0\17getURLClassPath\1\0\20java/lang/Object\1\0\26sun/misc/JavaNetAccess\7\0\3\7\0\4\1\0002(Ljava/net/URLClassLoader;)Lsun/misc/URLClassPath;\1\0\22JavaNetAccess.java\6\1\0\6\0\5\0\0\0\0\0\1\4\1\0\2\0\7\0\0\0\1\0\1\0\0\0\2\0\10", 195) = 195 30059 lseek(4, 60024792, SEEK_SET) = 60024792 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B~\210\217>\204\f\0\0\204\f\0\0\37\0\0\0", 30) = 30 30059 lseek(4, 60024853, SEEK_SET) = 60024853 30059 read(4, "\312\376\272\276\0\0\0003\0w\3\0\0\330\0\3\0\0\337\377\10\0\4\1\0\5 \t\n\r\f\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4(I)C\1\0\4(I)I\1\0\4(I)Z\1\0\26(II)Ljava/lang/String;\1\0&(Ljava/lang/String;)Ljava/lang/String;\1\0\25(Ljava/lang/String;)V\1\0'(Ljava/lang/String;Ljava/lang/String;)V\1\0\6\1\0\4Code\1\0\1I\1\0\17LineNumberTable\1\0\22Ljava/lang/String;\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\1Z\1\0\2[I\1\0\6charAt\1\0\tcharCount\1\0\vcodePointAt\1\0\vcountTokens\1\0\17currentPosition\1\0\23delimiterCodePoints\1\0\ndelimiters\1\0\rdelimsChanged\1\0\17hasMoreElements\1\0\rhasMoreTokens\1\0\rhasSurrogates\1\0\7indexOf\1\0\visDelimiter\1\0\23java/lang/Character\1\0\36java/lang/NullPointerException\1\0\20java/lang/Object\1\0\20java/lang/String\1\0\25java/util/Enumeration\1\0 java/util/NoSuchElementException\1\0\31java/util/StringTokenizer\1\0\6length\1\0\21maxDelimCodePoint\1\0\vmaxPosition\1\0\vnewPosition\1\0\vnextElement\1\0\tnextToken\1\0\tretDelims\1\0\tscanToken\1\0\24setMaxDelimCodePoint\1\0\16skipDelimiters\1\0\3str\1\0\tsubstring\7\0'\7\0(\7\0)\7\0*\7\0+\7\0,\7\0-\1\0=Ljava/lang/Object;Ljava/util/Enumeration;\1\0\24()Ljava/lang/Object;\1\0((Ljava/lang/String"..., 3204) = 3204 30059 lseek(4, 60023684, SEEK_SET) = 60023684 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B2;w\376\16\4\0\0\16\4\0\0(\0\0\0", 30) = 30 30059 lseek(4, 60023754, SEEK_SET) = 60023754 30059 read(4, "\312\376\272\276\0\0\0003\0002\1\0\3()V\1\0\6\1\0\4Code\1\0\17EnclosingMethod\1\0\nExceptions\1\0\fInnerClasses\1\0\rLauncher.java\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\17[Ljava/io/File;\1\0\21getExtClassLoader\1\0\23java/io/IOException\1\0\23java/lang/Exception\1\0\20java/lang/Object\1\0'java/security/PrivilegedExceptionAction\1\0\21registerDirectory\1\0\3run\1\0\21sun/misc/Launcher\1\0 sun/misc/Launcher$ExtClassLoader\1\0\"sun/misc/Launcher$ExtClassLoader$1\1\0\22sun/misc/MetaIndex\1\0\10val$dirs\7\0\16\7\0\17\7\0\20\7\0\21\7\0\24\7\0\25\7\0\26\7\0\27\1\0_Ljava/lang/Object;Ljava/security/PrivilegedExceptionAction;\1\0\21(Ljava/io/File;)V\1\0\22([Ljava/io/File;)V\1\0\24()Ljava/lang/Object;\1\0$()Lsun/misc/Launcher$ExtClassLoader;\f\0\30\0\f\f\0\2\0\1\f\0\22\0\"\f\0\2\0#\f\0\r\0%\f\0\23\0%\t\0\37\0&\n\0\33\0'\n\0\36\0)\n\0\37\0+\n\0 \0(\1\0\16ExtClassLoader\0000\0\37\0\33\0\1\0\34\0\1\20\20\0\30\0\f\0\0\0\3\0\0\0\2\0#\0\1\0\3\0\0\0\"\0\2\0\2\0\0\0\n*+\265\0,*\267\0-\261\0\0\0\1\0\10\0\0\0\6\0\1\0\0\0\216\0\1\0\23\0%\0\2\0\3\0\0\0`\0\3\0\3\0\0\0(*\264\0,\276<\3=\34\33\242\0\22*\264\0,\0342\270\0000\204\2\1\247\377\357\273\0\36Y*\264\0,\267\0.\260\0\0\0\2\0\v\0\0\0\n\0\2\375\0\10\1\1\372\0\23\0\10\0\0\0\26\0\5\0\0\0\220\0\6\0\221\0\r\0\222\0\26\0\221\0\34\0\224\0\5\0\0\0\4\0\1\0\31\20A\0\23\0$\0\2\0\3\0\0\0\35\0\1\0\1\0\0\0\5*\266\0/\260\0\0\0\1\0\10\0\0\0\6\0\1\0\0\0\216\0\5\0\0\0\4\0\1\0\32\0\4\0\n\0\0\0\2\0\7\0\4\0\0"..., 1038) = 1038 30059 lseek(4, 60023300, SEEK_SET) = 60023300 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B0/\263|5\1\0\0005\1\0\0-\0\0\0", 30) = 30 30059 lseek(4, 60023375, SEEK_SET) = 60023375 30059 read(4, "\312\376\272\276\0\0\0003\0\17\1\0\5()TT;\1\0\nExceptions\1\0\tSignature\1\0\nSourceFile\1\0\23java/lang/Exception\1\0\20java/lang/Object\1\0'java/security/PrivilegedExceptionAction\1\0\3run\7\0\5\7\0\6\7\0\7\1\0(Ljava/lang/Object;\1\0\24()Ljava/lang/Object;\1\0\36PrivilegedExceptionAction.java\6\1\0\v\0\n\0\0\0\0\0\1\4\1\0\10\0\r\0\2\0\2\0\0\0\4\0\1\0\t\0\3\0\0\0\2\0\1\0\2\0\4\0\0\0\2\0\16\0\3\0\0\0\2\0\f", 309) = 309 30059 mprotect(0x7fb314423000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 60020350, SEEK_SET) = 60020350 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\3\231\17\326P\v\0\0P\v\0\0\30\0\0\0", 30) = 30 30059 lseek(4, 60020404, SEEK_SET) = 60020404 30059 read(4, "\312\376\272\276\0\0\0003\0\227\10\0\5\10\0\16\10\0007\1\0\23$assertionsDisabled\1\0\v% VERSION 2\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4(I)C\1\0\25(I)Ljava/lang/String;\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)Z\1\0\6.class\1\0\10\1\0\6\1\0\4Code\1\0\nExceptions\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\1Z\1\0\23[Ljava/lang/String;\1\0\3add\1\0\6charAt\1\0\5clear\1\0\5close\1\0\10contents\1\0\26desiredAssertionStatus\1\0\10endsWith\1\0\6equals\1\0\6exists\1\0\6forJar\1\0\3get\1\0\20getCanonicalFile\1\0\tgetJarMap\1\0\16isClassOnlyJar\1\0\6jarMap\1\0\26java/io/BufferedReader\1\0\fjava/io/File\1\0\22java/io/FileReader\1\0\23java/io/IOException\1\0\30java/lang/AssertionError\1\0\17java/lang/Class\1\0\"java/lang/IllegalArgumentException\1\0\20java/lang/Object\1\0\20java/lang/String\1\0\23java/lang/Throwable\1\0\23java/util/ArrayList\1\0\21java/util/HashMap\1\0\16java/util/List\1\0\rjava/util/Map\1\0\nmayContain\1\0\nmeta-index\1\0\3put\1\0\10readLine\1\0\21registerDirectory\1\0\4size\1\0\nstartsWith\1\0\tsubstring\1\0\22sun/misc/MetaIndex\1\0\7toArray\7\0\30\7\0(\7\0)\7\0*\7\0+\7\0,\7\0-\7\0.\7\0/\7\0000\7\0001\7\0002\7\0003\7\0004\7\0005\7\0>\1\0\17Ljava/util/Map;\1\0003Ljava/util/Map\1\0\6\1\0\20Buffer size <= 0\1\0\4Code\1\0\rConstantValue\1\0\nExceptions\1\0\1I\1\0\vINVALIDATED\1\0\17LineNumberTable\1\0\22Ljava/lang/Object;\1\0\fMark invalid\1\0\24Read-ahead limit < 0\1\0\nSourceFile\1\0\rStackMapTable\1\0\rStream closed\1\0\21Stream not marked\1\0\10UNMARKED\1\0\1Z\1\0\2[C\1\0\6append\1\0\tarraycopy\1\0\2cb\1\0\5close\1\0\25defaultCharBufferSize\1\0\31defaultExpectedLineLength\1\0\nensureOpen\1\0\4fill\1\0\2in\1\0\26java/io/BufferedReader\1\0\23java/io/IOException\1\0\16java/io/Reader\1\0\"java/lang/IllegalArgumentException\1\0#java/lang/IndexOutOfBoundsException\1\0\16java/lang/Math\1\0\20java/lang/Object\1\0\20java/lang/String\1\0\26java/lang/StringBuffer\1\0\20java/lang/System\1\0\23java/lang/Throwable\1\0\6length\1\0\4lock\1\0\4mark\1\0\rmarkSupported\1\0\nmarkedChar\1\0\fmarkedSkipLF\1\0\3min\1\0\6nChars\1\0\10nextChar\1\0\4read\1\0\5read1\1\0\16readAheadLimit\1\0\10readLine\1\0\5ready\1\0\5reset\1\0\4skip\1\0\26skip value is negative\1\0\6skipLF\1\0\10toString\3\377\377\377\376\3\377\377\377\377\7"..., 5109) = 5109 30059 lseek(4, 60013222, SEEK_SET) = 60013222 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305Bw@\375\rw\7\0\0w\7\0\0\24\0\0\0", 30) = 30 30059 lseek(4, 60013272, SEEK_SET) = 60013272 30059 read(4, "\312\376\272\276\0\0\0003\0U\10\0%\10\0.\10\0000\1\0\3()I\1\0\3()V\1\0\3()Z\1\0\4(I)V\1\0\4(J)J\1\0\5(JJ)J\1\0\25(Ljava/lang/Object;)V\1\0\25(Ljava/lang/String;)V\1\0\5([C)I\1\0\7([CII)I\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\nExceptions\1\0\1I\1\0\17LineNumberTable\1\0\22Ljava/lang/Object;\1\0\nSourceFile\1\0\rStackMapTable\1\0\2[C\1\0\5close\1\0\21java/io/Closeable\1\0\23java/io/IOException\1\0\16java/io/Reader\1\0\"java/lang/IllegalArgumentException\1\0\16java/lang/Math\1\0\36java/lang/NullPointerException\1\0\20java/lang/Object\1\0\22java/lang/Readable\1\0\23java/lang/Throwable\1\0\23java/nio/CharBuffer\1\0\4lock\1\0\4mark\1\0\24mark() not supported\1\0\rmarkSupported\1\0\21maxSkipBufferSize\1\0\3min\1\0\3put\1\0\4read\1\0\5ready\1\0\tremaining\1\0\5reset\1\0\25reset() not supported\1\0\4skip\1\0\26skip value is negative\1\0\nskipBuffer\3\0\0 \0\5\0\0\0\0\0\0 \0\7\0\27\7\0\31\7\0\32\7\0\33\7\0\34\7\0\35\7\0\36\7\0\37\7\0 \7\0!\7\0\"\1\0\30(Ljava/nio/CharBuffer;)I\1\0\33([CII)Ljava/nio/CharBuffer;\f\0001\0\27\f\0#\0\24\f\0,\0\4\f\0\16\0\5\f\0(\0\t\f\0*\0\r\f\0\16\0\v\f\0)\0A\t\0008\0B\t\0008\0C\n\0007\0H\n\0008\0G\n\0009\0H\n\0:\0F\n\0;\0E\n\0<\0E\n\0?\0D\n\0?\0I\1\0\vReader.java\4!\0008\0<\0\2\0=\0006\0\3\0\4\0#\0\24\0\0\0\32\0'\0\22\0\1\0\20\0\0\0\2\0002\0\2\0001\0\27\0\0\0\f\0\4\0\16\0\5\0\1\0\17\0\0\0003\0\2\0\1\0\0\0\17*\267\0Q*\1\265\0J**\265\0K\261\0\0\0\1\0\23\0\0\0\22\0\4\0\0\0B\0\4\0\243\0\t\0C\0\16\0D\0\4\0\16\0"..., 1911) = 1911 30059 lseek(4, 60238312, SEEK_SET) = 60238312 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\327\332\256\337\305\0\0\0\305\0\0\0\30\0\0\0", 30) = 30 30059 lseek(4, 60238366, SEEK_SET) = 60238366 30059 read(4, "\312\376\272\276\0\0\0003\0\f\1\0\nExceptions\1\0\nSourceFile\1\0\23java/io/IOException\1\0\20java/lang/Object\1\0\22java/lang/Readable\1\0\4read\7\0\3\7\0\4\7\0\5\1\0\30(Ljava/nio/CharBuffer;)I\1\0\rReadable.java\6\1\0\t\0\10\0\0\0\0\0\1\4\1\0\6\0\n\0\1\0\1\0\0\0\4\0\1\0\7\0\1\0\2\0\0\0\2\0\v", 197) = 197 30059 lseek(4, 60012613, SEEK_SET) = 60012613 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305Bs[\363\301+\2\0\0+\2\0\0\30\0\0\0", 30) = 30 30059 lseek(4, 60012667, SEEK_SET) = 60012667 30059 read(4, "\312\376\272\276\0\0\0003\0\33\1\0\25(Ljava/lang/String;)V\1\0\6\1\0\4Code\1\0\nExceptions\1\0\17LineNumberTable\1\0\nSourceFile\1\0\27java/io/FileInputStream\1\0\35java/io/FileNotFoundException\1\0\22java/io/FileReader\1\0\31java/io/InputStreamReader\7\0\7\7\0\10\7\0\t\7\0\n\1\0\21(Ljava/io/File;)V\1\0\33(Ljava/io/FileDescriptor;)V\1\0\30(Ljava/io/InputStream;)V\f\0\2\0\17\f\0\2\0\20\f\0\2\0\21\f\0\2\0\1\n\0\v\0\22\n\0\v\0\23\n\0\v\0\25\n\0\16\0\24\1\0\17FileReader.java\0!\0\r\0\16\0\0\0\0\0\3\0\1\0\2\0\1\0\2\0\3\0\0\0)\0\4\0\2\0\0\0\r*\273\0\vY+\267\0\30\267\0\31\261\0\0\0\1\0\5\0\0\0\n\0\2\0\0\0:\0\f\0;\0\4\0\0\0\4\0\1\0\f\0\1\0\2\0\17\0\2\0\3\0\0\0)\0\4\0\2\0\0\0\r*\273\0\vY+\267\0\26\267\0\31\261\0\0\0\1\0\5\0\0\0\n\0\2\0\0\0H\0\f\0I\0\4\0\0\0\4\0\1\0\f\0\1\0\2\0\20\0\1\0\3\0\0\0)\0\4\0\2\0\0\0\r*\273\0\vY+\267\0\27\267\0\31\261\0\0\0\1\0\5\0\0\0\n\0\2\0\0\0R\0\f\0S\0\1\0\6\0\0\0\2\0\32", 555) = 555 30059 lseek(4, 60010495, SEEK_SET) = 60010495 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\"7(\276\t\10\0\0\t\10\0\0\37\0\0\0", 30) = 30 30059 lseek(4, 60010556, SEEK_SET) = 60010556 30059 read(4, "\312\376\272\276\0\0\0003\0R\10\0\22\10\0\23\10\0\24\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\25(Ljava/lang/Object;)V\1\0\25(Ljava/lang/String;)V\1\0\30(Ljava/lang/Throwable;)V\1\0\7([CII)I\1\0\6\1\0\4Code\1\0\nExceptions\1\0\17LineNumberTable\1\0\nSourceFile\1\0\rStackMapTable\1\0\7charset\1\0\17charset decoder\1\0\vcharsetName\1\0\5close\1\0\24forInputStreamReader\1\0\vgetEncoding\1\0\23java/io/IOException\1\0\23java/io/InputStream\1\0\31java/io/InputStreamReader\1\0\16java/io/Reader\1\0$java/io/UnsupportedEncodingException\1\0\17java/lang/Error\1\0\36java/lang/NullPointerException\1\0\20java/lang/String\1\0\30java/nio/charset/Charset\1\0\37java/nio/charset/CharsetDecoder\1\0\4read\1\0\5ready\1\0\2sd\1\0\30sun/nio/cs/StreamDecoder\7\0\30\7\0\31\7\0\32\7\0\33\7\0\34\7\0\35\7\0\36\7\0\37\7\0 \7\0!\7\0%\1\0\32Lsun/nio/cs/StreamDecoder;\1\0\30(Ljava/io/InputStream;)V\1\0*(Ljava/io/InputStream;Ljava/lang/String;)V\1\0002(Ljava/io/InputStream;Ljava/nio/charset/Charset;)V\1\0009(Ljava/io/InputStream;Ljava/nio/charset/CharsetDecoder;)V\1\0U(Ljava/io/InputStream;Ljava/lang/Object;Ljava/lang/String;)Lsun/nio/cs/StreamDecoder;\1\0](Ljava/io/InputStream;Ljava/lang/Object;Ljava/ni"..., 2057) = 2057 30059 open("/software/jdk1.7.0_25/jre/lib/ext/meta-index", O_RDONLY) = 5 30059 fstat(5, {st_mode=S_IFREG|0644, st_size=581, ...}) = 0 30059 fcntl(5, F_GETFD) = 0 30059 fcntl(5, F_SETFD, FD_CLOEXEC) = 0 30059 lseek(4, 60002775, SEEK_SET) = 60002775 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\324\226Hy\354\35\0\0\354\35\0\0\36\0\0\0", 30) = 30 30059 lseek(4, 60002835, SEEK_SET) = 60002835 30059 read(4, "\312\376\272\276\0\0\0003\0014\10\0\21\10\0 \10\0!\10\0a\1\0\23$assertionsDisabled\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4()[B\1\0\4(I)V\1\0\25(Ljava/lang/Object;)V\1\0\25(Ljava/lang/String;)V\1\0\25(Ljava/lang/String;)Z\1\0\7([BII)I\1\0\7([CII)I\1\0\10, rem = \1\0\10\1\0\6\1\0\1C\1\0\4Code\1\0\rConstantValue\1\0\30DEFAULT_BYTE_BUFFER_SIZE\1\0\nExceptions\1\0\1I\1\0\17LineNumberTable\1\0\22Ljava/lang/Object;\1\0\24MIN_BYTE_BUFFER_SIZE\1\0\7REPLACE\1\0\nSourceFile\1\0\rStackMapTable\1\0\rStream closed\1\0+Underlying input stream returned zero bytes\1\0\1Z\1\0\2[C\1\0\10allocate\1\0\6append\1\0\5array\1\0\varrayOffset\1\0\tavailable\1\0\2bb\1\0\2ch\1\0\21channelsAvailable\1\0\7charset\1\0\5close\1\0\7compact\1\0\2cs\1\0\6decode\1\0\7decoder\1\0\16defaultCharset\1\0\26desiredAssertionStatus\1\0\fencodingName\1\0\nensureOpen\1\0\4flip\1\0\nforDecoder\1\0\24forInputStreamReader\1\0\7forName\1\0\ngetChannel\1\0\vgetEncoding\1\0\fhasRemaining\1\0\20haveLeftoverChar\1\0\16historicalName\1\0\timplClose\1\0\10implRead\1\0\timplReady\1\0\2in\1\0\7inReady\1\0\6isOpen\1\0\nisOverflow\1\0\visSupported\1\0\visUnderflow\1\0\27java/io/FileInputStream\1\0\23java/io/IOException\1\0\23java/io/InputStream\1\0\16java/io/Reader\1\0$java/io/"..., 7660) = 7660 30059 lseek(4, 29747059, SEEK_SET) = 29747059 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\207q\353JR\6\0\0R\6\0\0\36\0\0\0", 30) = 30 30059 lseek(4, 29747119, SEEK_SET) = 29747119 30059 read(4, "\312\376\272\276\0\0\0003\0[\3\177\377\377\377\10\0\16\10\0\21\10\0\33\10\0(\10\0-\1\0\3()V\1\0\25(Ljava/lang/String;)I\1\0\25(Ljava/lang/String;)V\1\0\10\1\0\6\1\0\35ALTERNATIVE_HASHING_THRESHOLD\1\0\4Code\1\0 Failed to record hashSeed offset\1\0\17HASHSEED_OFFSET\1\0\1I\1\0000Illegal value for 'jdk.map.althashing.threshold'\1\0\fInnerClasses\1\0\1J\1\0\17LineNumberTable\1\0\nSourceFile\1\0\rStackMapTable\1\0\6UNSAFE\1\0\fdoPrivileged\1\0\20getDeclaredField\1\0\tgetUnsafe\1\0\10hashSeed\1\0\17java/lang/Class\1\0\17java/lang/Error\1\0\23java/lang/Exception\1\0\"java/lang/IllegalArgumentException\1\0\21java/lang/Integer\1\0\36java/lang/NoSuchFieldException\1\0\20java/lang/Object\1\0\33java/lang/SecurityException\1\0\20java/lang/String\1\0\36java/security/AccessController\1\0\21java/util/HashMap\1\0\30java/util/HashMap$Holder\1\0\34jdk.map.althashing.threshold\1\0\21objectFieldOffset\1\0\10parseInt\1\0\17sun/misc/Unsafe\1\0%sun/security/action/GetPropertyAction\1\0\37value must be positive integer.\7\0\34\7\0\35\7\0\36\7\0\37\7\0 \7\0!\7\0\"\7\0#\7\0$\7\0%\7\0&\7\0'\7\0+\7\0,\1\0\21Lsun/misc/Unsafe;\1\0\34(Ljava/lang/reflect/Field;)J\1\0\23()Lsun/misc/Unsafe;\1\0004(Ljava/security/PrivilegedAction;)Ljava/lang/Obje"..., 1618) = 1618 30059 lstat("/software", {st_mode=S_IFDIR|0755, st_size=20480, ...}) = 0 30059 lstat("/software/jdk1.7.0_25", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 30059 lstat("/software/jdk1.7.0_25/jre", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 30059 lstat("/software/jdk1.7.0_25/jre/lib", {st_mode=S_IFDIR|0755, st_size=8192, ...}) = 0 30059 lstat("/software/jdk1.7.0_25/jre/lib/ext", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 30059 stat("/software/jdk1.7.0_25/jre/lib/ext", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 30059 stat("/software/jdk1.7.0_25/jre/lib/ext", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 30059 lseek(4, 60238563, SEEK_SET) = 60238563 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\310if\350\247\25\0\0\247\25\0\0\31\0\0\0", 30) = 30 30059 lseek(4, 60238618, SEEK_SET) = 60238618 30059 read(4, "\312\376\272\276\0\0\0003\0\321\10\0G\1\0\3()C\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4()[C\1\0\5(CC)I\1\0\5(CC)Z\1\0\4(I)C\1\0\5(II)I\1\0\26(II)Ljava/lang/String;\1\0\5(II)V\1\0\6(III)V\1\0\7(IIII)V\1\0\n(IIII[CI)V\1\0\25(Ljava/lang/Object;)I\1\0\25(Ljava/lang/Object;)Z\1\0\7([CII)V\1\0\6\1\0\4Code\1\0\nExceptions\1\0\1I\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\1Z\1\0\2[C\1\0\10allocate\1\0\6append\1\0\5array\1\0\varrayOffset\1\0\20asReadOnlyBuffer\1\0\6charAt\1\0\vcheckBounds\1\0\ncheckIndex\1\0\7compact\1\0\7compare\1\0\tcompareTo\1\0\tduplicate\1\0\6equals\1\0\3get\1\0\10hasArray\1\0\10hashCode\1\0\2hb\1\0\10isDirect\1\0\nisReadOnly\1\0\23java/io/IOException\1\0\24java/lang/Appendable\1\0\26java/lang/CharSequence\1\0\23java/lang/Character\1\0\24java/lang/Comparable\1\0\"java/lang/IllegalArgumentException\1\0#java/lang/IndexOutOfBoundsException\1\0\16java/lang/Math\1\0\22java/lang/Readable\1\0\20java/lang/String\1\0\23java/lang/Throwable\1\0'java/lang/UnsupportedOperationException\1\0\17java/nio/Buffer\1\0 java/nio/BufferOverflowException\1\0!java/nio/BufferUnderflowException\1\0\23java/nio/CharBuffer\1\0\27java/nio/HeapCharBuffer\1\0 java/nio/ReadOnlyBuf"..., 5543) = 5543 30059 mprotect(0x7fb314424000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 60235087, SEEK_SET) = 60235087 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\27\245\240\373^\f\0\0^\f\0\0\35\0\0\0", 30) = 30 30059 lseek(4, 60235146, SEEK_SET) = 60235146 30059 read(4, "\312\376\272\276\0\0\0003\0\211\1\0\3()C\1\0\3()I\1\0\3()V\1\0\3()Z\1\0\4(I)C\1\0\4(I)I\1\0\26(II)Ljava/lang/String;\1\0\5(II)V\1\0\6(III)V\1\0\n(IIII[CI)V\1\0\7([CII)V\1\0\n([CIIIII)V\1\0\6\1\0\4Code\1\0\1I\1\0\17LineNumberTable\1\0\nSourceFile\1\0\rStackMapTable\1\0\2[C\1\0\tarraycopy\1\0\20asReadOnlyBuffer\1\0\10capacity\1\0\vcheckBounds\1\0\ncheckIndex\1\0\7compact\1\0\vdiscardMark\1\0\tduplicate\1\0\3get\1\0\2hb\1\0\10isDirect\1\0\nisReadOnly\1\0\2ix\1\0\"java/lang/IllegalArgumentException\1\0#java/lang/IndexOutOfBoundsException\1\0\20java/lang/String\1\0)java/lang/StringIndexOutOfBoundsException\1\0\20java/lang/System\1\0 java/nio/BufferOverflowException\1\0!java/nio/BufferUnderflowException\1\0\22java/nio/ByteOrder\1\0\23java/nio/CharBuffer\1\0\27java/nio/HeapCharBuffer\1\0\30java/nio/HeapCharBufferR\1\0\6length\1\0\5limit\1\0\tmarkValue\1\0\vnativeOrder\1\0\fnextGetIndex\1\0\fnextPutIndex\1\0\6offset\1\0\5order\1\0\10position\1\0\3put\1\0\tremaining\1\0\5slice\1\0\vsubSequence\1\0\10toString\7\0!\7\0\"\7\0#\7\0$\7\0%\7\0&\7\0'\7\0(\7\0)\7\0*\7\0+\1\0\34(II)Ljava/lang/CharSequence;\1\0\24(I)Ljava/nio/Buffer;\1\0\26()Ljava/nio/ByteOrder;\1\0\27()Ljava/nio/CharBuffer;\1\0\30(C)Ljava/nio/CharBuffer;\1\0\31(IC)Ljava/nio"..., 3166) = 3166 30059 read(5, "% VERSION 2\n% WARNING: this file is auto-generated; do not edit\n% UNSUPPORTED: this file and its format may change and/or\n% may be removed in a future release\n# dnsns.jar\nMETA-INF/services/sun.net.spi.nameservice.NameServiceDescriptor\nsun/net\n# localedata.jar\nsun/text\nsun/util\n# sunec.jar\nsun/security\nMETA-INF/ORACLE_J.RSA\nMETA-INF/ORACLE_J.SF\n# sunjce_provider.jar\ncom/sun/crypto/\nMETA-INF/ORACLE_J.RSA\nMETA-INF/ORACLE_J.SF\n# sunpkcs11.jar\nsun/security\nMETA-INF/ORACLE_J.RSA\nMETA-INF/ORACLE_J.SF\n# zipfs.jar\nMETA-INF/services/java.nio.file.spi.FileSystemProvider\ncom/sun/nio/\n", 8192) = 581 30059 fstat(5, {st_mode=S_IFREG|0644, st_size=581, ...}) = 0 30059 lseek(5, 0, SEEK_CUR) = 581 30059 lseek(5, 0, SEEK_END) = 581 30059 lseek(5, 581, SEEK_SET) = 581 30059 lseek(4, 60000873, SEEK_SET) = 60000873 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\272\377\227\3753\7\0\0003\7\0\0\35\0\0\0", 30) = 30 30059 lseek(4, 60000932, SEEK_SET) = 60000932 30059 read(4, "\312\376\272\276\0\0\0003\0F\1\0\3()V\1\0\25(Ljava/lang/Object;)I\1\0\6\1\0\4Code\1\0\nExceptions\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\3get\1\0\ngetBoolean\1\0\7getByte\1\0\7getChar\1\0\tgetDouble\1\0\10getFloat\1\0\6getInt\1\0\tgetLength\1\0\7getLong\1\0\10getShort\1\0(java/lang/ArrayIndexOutOfBoundsException\1\0\"java/lang/IllegalArgumentException\1\0$java/lang/NegativeArraySizeException\1\0\20java/lang/Object\1\0\27java/lang/reflect/Array\1\0\rmultiNewArray\1\0\10newArray\1\0\vnewInstance\1\0\3set\1\0\nsetBoolean\1\0\7setByte\1\0\7setChar\1\0\tsetDouble\1\0\10setFloat\1\0\6setInt\1\0\7setLong\1\0\10setShort\7\0\23\7\0\24\7\0\25\7\0\26\7\0\27\1\0\26(Ljava/lang/Object;I)B\1\0\26(Ljava/lang/Object;I)C\1\0\26(Ljava/lang/Object;I)D\1\0\26(Ljava/lang/Object;I)F\1\0\26(Ljava/lang/Object;I)I\1\0\26(Ljava/lang/Object;I)J\1\0\26(Ljava/lang/Object;I)S\1\0\26(Ljava/lang/Object;I)Z\1\0\27(Ljava/lang/Object;IB)V\1\0\27(Ljava/lang/Object;IC)V\1\0\27(Ljava/lang/Object;ID)V\1\0\27(Ljava/lang/Object;IF)V\1\0\27(Ljava/lang/Object;II)V\1\0\27(Ljava/lang/Object;IJ)V\1\0\27(Ljava/lang/Object;IS)V\1\0\27(Ljava/lang/Object;IZ)V\1\0&(Ljava/lang/Class;I)Ljava/lang/Object;\1\0'(Ljava/lang/Class;[I"..., 1843) = 1843 30059 read(5, "", 8192) = 0 30059 close(5) = 0 30059 stat("/usr/java/packages/lib/ext/meta-index", 0x7fb31b2f7530) = -1 ENOENT (No such file or directory) 30059 openat(AT_FDCWD, "/software/jdk1.7.0_25/jre/lib/ext", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 5 30059 mprotect(0x7fb314425000, 32768, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb31442d000, 4096, PROT_READ|PROT_WRITE) = 0 30059 getdents(5, /* 9 entries */, 32768) = 296 30059 getdents(5, /* 0 entries */, 32768) = 0 30059 close(5) = 0 30059 lstat("/software", {st_mode=S_IFDIR|0755, st_size=20480, ...}) = 0 30059 lstat("/software/jdk1.7.0_25", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 30059 lstat("/software/jdk1.7.0_25/jre", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 30059 lstat("/software/jdk1.7.0_25/jre/lib", {st_mode=S_IFDIR|0755, st_size=8192, ...}) = 0 30059 lstat("/software/jdk1.7.0_25/jre/lib/ext", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 30059 lstat("/software/jdk1.7.0_25/jre/lib/ext/localedata.jar", {st_mode=S_IFREG|0644, st_size=1024028, ...}) = 0 30059 stat("/software/jdk1.7.0_25/jre/lib/ext/localedata.jar", {st_mode=S_IFREG|0644, st_size=1024028, ...}) = 0 30059 stat("/software/jdk1.7.0_25/jre/lib/ext/localedata.jar", {st_mode=S_IFREG|0644, st_size=1024028, ...}) = 0 30059 lseek(4, 59989130, SEEK_SET) = 59989130 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\341\326\232\233\246-\0\0\246-\0\0\33\0\0\0", 30) = 30 30059 lseek(4, 59989187, SEEK_SET) = 59989187 30059 read(4, "\312\376\272\276\0\0\0003\1\373\3\177\377\377\377\10\0\32\10\0\33\10\0006\10\0007\10\0008\10\0009\10\0:\10\0;\10\0<\10\0=\10\0>\10\0?\10\0@\10\0A\10\0B\10\0C\10\0D\10\0E\10\0K\10\0r\10\0u\10\0w\10\0y\10\0\220\1\0\0\1\0\10$,;:@&=+\1\0\23$assertionsDisabled\1\0\3()B\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4()[C\1\0\4(C)Z\1\0\5(CC)J\1\0\6(CJJ)Z\1\0\4(I)C\1\0\4(I)I\1\0\25(I)Ljava/lang/String;\1\0\4(I)V\1\0\4(I)Z\1\0\5(II)C\1\0\5(II)I\1\0\26(II)Ljava/lang/String;\1\0\25(Ljava/lang/String;)I\1\0&(Ljava/lang/String;)Ljava/lang/String;\1\0,(Ljava/lang/String;)Ljava/lang/StringBuffer;\1\0\25(Ljava/lang/String;)V\1\0\25(Ljava/lang/String;)Z\1\0'(Ljava/lang/String;Ljava/lang/String;)V\1\0\7([CCI)I\1\0\7([CII)V\1\0\1-\1\0\t-_.!~*'()\1\0\5.:@[]\1\0\1/\1\0\2/.\1\0\3/..\1\0\4/../\1\0\3/./\1\0\2//\1\0\3//[\1\0\1:\1\0\3:-1\1\0\7:@&=+$,\1\0\2;/\1\0\f;/?:@&=+$,[]\1\0\7;:&=+$,\1\0\10\1\0\6\1\0\1C\1\0\4Code\1\0\rConstantValue\1\0)Error decoding percent encoded characters\1\0\nExceptions\1\0\7H_ALPHA\1\0\nH_ALPHANUM\1\0\6H_DASH\1\0\7H_DIGIT\1\0\tH_ESCAPED\1\0\5H_HEX\1\0\nH_LOWALPHA\1\0\6H_MARK\1\0\6H_PATH\1\0\7H_PCHAR\1\0\nH_REG_NAME\1\0\nH_RESERVED\1\0\10H_SERVER\1\0\fH_UNRESERVED\1\0\tH_UPALPHA\1\0\6H_URIC\1\0\nH_USERINFO\1\0\1J\1\0\7L_ALPHA\1\0\nL_ALPHANUM\1\0\6L_DASH\1\0\7L_DIGIT\1\0\tL_ESCAPED\1\0\5L_HEX\1\0\nL_LOWALPH"..., 11686) = 11686 30059 lseek(4, 59977985, SEEK_SET) = 59977985 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\267^<\277U+\0\0U+\0\0\26\0\0\0", 30) = 30 30059 lseek(4, 59978037, SEEK_SET) = 59978037 30059 read(4, "\312\376\272\276\0\0\0003\1T\10\0\n\10\0\"\10\0<\10\0=\10\0I\10\0J\10\0K\10\0o\10\0\206\1\0\f > toIndex: \1\0\23$assertionsDisabled\1\0\3()B\1\0\3()I\1\0\3()J\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4()[B\1\0\4()[J\1\0\4(I)B\1\0\4(I)I\1\0\4(I)J\1\0\4(I)V\1\0\4(I)Z\1\0\5(II)I\1\0\5(II)V\1\0\6(IIZ)V\1\0\5(IZ)V\1\0\4(J)I\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)V\1\0\5([J)V\1\0\7([JI)[J\1\0\2, \1\0\10\1\0\6\1\0\25ADDRESS_BITS_PER_WORD\1\0\rBITS_PER_WORD\1\0\16BIT_INDEX_MASK\1\0\4Code\1\0\rConstantValue\1\0\nExceptions\1\0\1I\1\0\fInnerClasses\1\0\1J\1\0\rLITTLE_ENDIAN\1\0\17LineNumberTable\1\0\nSourceFile\1\0\rStackMapTable\1\0\tWORD_MASK\1\0\1Z\1\0\2[B\1\0\2[J\1\0\34[Ljava/io/ObjectStreamField;\1\0\3and\1\0\6andNot\1\0\6append\1\0\tarraycopy\1\0\10bitCount\1\0\16bitIndex < 0: \1\0\4bits\1\0\vcardinality\1\0\17checkInvariants\1\0\ncheckRange\1\0\5clear\1\0\5clone\1\0\6copyOf\1\0\26desiredAssertionStatus\1\0\16ensureCapacity\1\0\6equals\1\0\10expandTo\1\0\4flip\1\0\20fromIndex < -1: \1\0\17fromIndex < 0: \1\0\vfromIndex: \1\0\3get\1\0\7getLong\1\0\10hashCode\1\0\tinitWords\1\0\nintersects\1\0\7isEmpty\1\0\23java/io/IOException\1\0\31java/io/ObjectInputStream\1\0\"java/io/ObjectInputStream$GetField\1\0\32java/io/ObjectOutputStream\1\0#java/io/ObjectO"..., 11093) = 11093 30059 stat("/software/jdk1.7.0_25/jre/lib/ext/localedata.jar", {st_mode=S_IFREG|0644, st_size=1024028, ...}) = 0 30059 lseek(4, 59936184, SEEK_SET) = 59936184 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\277Ul\r\241-\0\0\241-\0\0\22\0\0\0", 30) = 30 30059 lseek(4, 59936232, SEEK_SET) = 59936232 30059 read(4, "\312\376\272\276\0\0\0003\1\334\10\0\23\10\0#\10\0$\10\0%\10\0&\10\0)\10\0002\10\0?\10\0@\10\0T\10\0k\10\0x\10\0\241\10\0\251\10\0\266\10\0\300\10\0\301\10\0\304\1\0\0\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4(C)Z\1\0\4(I)C\1\0\4(I)I\1\0\25(I)Ljava/lang/String;\1\0\5(II)I\1\0\26(II)Ljava/lang/String;\1\0\25(Ljava/lang/Object;)Z\1\0%(Ljava/lang/String;)Ljava/lang/Class;\1\0\25(Ljava/lang/String;)V\1\0\25(Ljava/lang/String;)Z\1\0'(Ljava/lang/String;Ljava/lang/String;)V\1\0\1.\1\0\10.Handler\1\0\1/\1\0\1:\1\0\10\1\0\6\1\0\1?\1\0\4Code\1\0\rConstantValue\1\0\6DIRECT\1\0\22ENABLE_GOPHER_PROP\1\0\nExceptions\1\0\6GOPHER\1\0\1I\1\0\fInnerClasses\1\0\25Invalid port number :\1\0\1J\1\0\22JDK_PACKAGE_PREFIX\1\0\17LineNumberTable\1\0\22Ljava/lang/Object;\1\0\22Ljava/lang/String;\1\0\10NO_PROXY\1\0\32SPECIFY_HANDLER_PERMISSION\1\0\nSourceFile\1\0\rStackMapTable\1\0\4Type\1\0\10URL.java\1\0\1Z\1\0\1[\1\0\1]\1\0\7address\1\0\6append\1\0\tauthority\1\0\fbooleanValue\1\0\6charAt\1\0\fcheckConnect\1\0\17checkPermission\1\0\17checkSetFactory\1\0\23checkSpecifyHandler\1\0\5clear\1\0\6create\1\0\26createURLStreamHandler\1\0\21defaultReadObject\1\0\22defaultWriteObject\1\0\fdoPrivileged\1\0\fenableGopher\1\0\6equals\1\0\20equalsIgnoreCase\1\0\7factory\1\0\27factory already defined\1\0\4fil"..., 11681) = 11681 30059 lseek(4, 29748989, SEEK_SET) = 29748989 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\226\212)0>\4\0\0>\4\0\0 \0\0\0", 30) = 30 30059 lseek(4, 29749051, SEEK_SET) = 29749051 30059 read(4, "\312\376\272\276\0\0\0003\0009\3\177\377\377\377\10\0\16\10\0\34\10\0\37\1\0\3()V\1\0\25(Ljava/lang/String;)I\1\0\25(Ljava/lang/String;)V\1\0\10\1\0\6\1\0\35ALTERNATIVE_HASHING_THRESHOLD\1\0\4Code\1\0\16Hashtable.java\1\0\1I\1\0000Illegal value for 'jdk.map.althashing.threshold'\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\nSourceFile\1\0\rStackMapTable\1\0\fdoPrivileged\1\0\17java/lang/Error\1\0\"java/lang/IllegalArgumentException\1\0\21java/lang/Integer\1\0\20java/lang/Object\1\0\20java/lang/String\1\0\36java/security/AccessController\1\0\23java/util/Hashtable\1\0\32java/util/Hashtable$Holder\1\0\34jdk.map.althashing.threshold\1\0\10parseInt\1\0%sun/security/action/GetPropertyAction\1\0\37value must be positive integer.\7\0\24\7\0\25\7\0\26\7\0\27\7\0\30\7\0\31\7\0\32\7\0\33\7\0\36\1\0004(Ljava/security/PrivilegedAction;)Ljava/lang/Object;\1\0*(Ljava/lang/String;Ljava/lang/Throwable;)V\f\0\n\0\r\f\0\t\0\5\f\0\35\0\6\f\0\t\0\7\f\0\23\0)\f\0\t\0*\t\0'\0+\n\0 \0000\n\0!\0.\n\0\"\0-\n\0#\0,\n\0%\0/\n\0(\0.\1\0\6Holder\0 \0'\0#\0\0\0\1\0\30\0\n\0\r\0\0\0\2\0\2\0\t\0\5\0\1\0\v\0\0\0\35\0\1\0\1\0\0\0\5*\267\0005\261\0\0\0\1\0\20\0\0\0\6\0\1\0\0\0\265\0\10\0\10\0\5\0\1\0\v\0\0\0\267\0\4\0\3\0\0\0I\273\0(Y\22\3\267\0007\270\0006\300\0$K\1*\245\0\n*\270\0004\247\0\5\22\1<\33\2\240\0\6\22\1<\33\234\0\r\273\0!Y\22\4\267\0003\277\247\0\17M\273\0 Y\22\2,\267\0002\277\33\263\0001\261\0\1\0\20\0005\0008\0!\0\2\0\22\0\0\0 \0\6\374\0\34\7\0$A\1\374\0\10\1\r\377\0\2\0\1\7\0$\0"..., 1086) = 1086 30059 lseek(4, 28591745, SEEK_SET) = 28591745 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305BX:\267\371z\3\0\0z\3\0\0\24\0\0\0", 30) = 30 30059 lseek(4, 28591795, SEEK_SET) = 28591795 30059 read(4, "\312\376\272\276\0\0\0003\0001\10\0\20\10\0\31\1\0\3()V\1\0&(Ljava/lang/String;)Ljava/lang/String;\1\0\25(Ljava/lang/String;)Z\1\0\6\1\0\4Code\1\0\17EnclosingMethod\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\10URL.java\1\0\20equalsIgnoreCase\1\0\5false\1\0\vgetProperty\1\0\21java/lang/Boolean\1\0\20java/lang/Object\1\0\20java/lang/String\1\0\20java/lang/System\1\0\fjava/net/URL\1\0\16java/net/URL$1\1\0\36java/security/PrivilegedAction\1\0\36jdk.net.registerGopherProtocol\1\0\3run\1\0\7valueOf\7\0\22\7\0\23\7\0\24\7\0\25\7\0\26\7\0\27\7\0\30\1\0GLjava/lang/Object;Ljava/security/PrivilegedAction;\1\0\25()Ljava/lang/Boolean;\1\0\26(Z)Ljava/lang/Boolean;\1\0\24()Ljava/lang/Object;\f\0\6\0\3\f\0\32\0$\f\0\33\0%\f\0\17\0\5\f\0\21\0\4\n\0\34\0)\n\0\35\0'\n\0\36\0*\n\0\37\0+\n\0!\0(\0000\0!\0\35\0\1\0\"\0\0\0\3\0\0\0\6\0\3\0\1\0\7\0\0\0\35\0\1\0\1\0\0\0\5*\267\0-\261\0\0\0\1\0\n\0\0\0\6\0\1\0\0\4e\0\1\0\32\0$\0\1\0\7\0\0\0M\0\2\0\2\0\0\0 \22\2\270\0/L+\307\0\7\3\247\0\21+\22\1\266\0.\231\0\7\3\247\0\4\4\270\0,\260\0\0\0\2\0\r\0\0\0\v\0\3\374\0\16\7\0\36\f@\1\0\n\0\0\0\n\0\2\0\0\4h\0\6\4i\20A\0\32\0&\0\1\0\7\0\0\0\35\0\1\0\1\0\0\0\5*\266\0000\260\0\0\0\1\0\n\0\0\0\6\0\1\0\0\4e\0\4\0\f\0\0\0\2\0\16\0\10\0\0\0\4\0 \0\0\0\v\0\0\0\2\0#\0\t\0\0\0\n\0\1\0!\0\0\0\0\0\10", 890) = 890 30059 lseek(4, 59913750, SEEK_SET) = 59913750 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\3454\230\350nW\0\0nW\0\0\26\0\0\0", 30) = 30 30059 lseek(4, 59913802, SEEK_SET) = 59913802 30059 read(4, "\312\376\272\276\0\0\0003\3M\10\0;\10\0<\10\0?\10\0U\10\0X\10\0`\10\0a\10\0b\10\0e\10\0f\10\0g\10\0m\10\0q\10\0t\10\0u\10\0y\10\0|\10\0}\10\0\202\10\0\205\10\0\210\10\0\211\10\0\222\10\0\223\10\0\230\10\0\232\10\0\237\10\0\245\10\0\246\10\0\247\10\0\273\10\0\277\10\0\306\10\0\310\10\0\314\10\0\374\10\0\375\10\0\376\10\0\377\10\1\7\10\1\t\10\1\n\10\0016\10\0017\10\0018\10\0019\10\1G\10\1]\10\1b\10\1c\10\1d\10\1e\10\1f\10\1h\10\1j\10\1m\10\1n\10\1o\1\0\0\1\0\2 (\1\0$$SwitchMap$java$util$Locale$Category\1\0\23$assertionsDisabled\1\0\2%%\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\25(C)Ljava/lang/String;\1\0\4(C)Z\1\0\4(I)C\1\0\4(I)I\1\0\26(I)Ljava/lang/Integer;\1\0\25(I)Ljava/lang/String;\1\0\4(I)V\1\0\26(II)Ljava/lang/String;\1\0&(Ljava/lang/Object;)Ljava/lang/String;\1\0\25(Ljava/lang/Object;)V\1\0\25(Ljava/lang/Object;)Z\1\0&(Ljava/lang/String;)Ljava/lang/String;\1\0,(Ljava/lang/String;)Ljava/lang/StringBuffer;\1\0\25(Ljava/lang/String;)V\1\0\25(Ljava/lang/String;)Z\1\0'(Ljava/lang/String;Ljava/lang/String;)V\1\0\25(Ljava/util/Locale;)V\1\0\1-\1\0\10\1\0\6\1\4\335ADANDAEAREAFAFGAGATGAIAIAALALBAMARMANANTAOAGOAQATAARARGASASMATAUTAUAUSAWABWAXALAAZAZEBABIHBBBRBBDBGDBEBELBFBFABGBGRBHBHRBIBDIBJBENBLBLMBMBMUBNBRNBOBOLBQBESBRBRABSBHSBTBTNBVBVTBWBWABYBLRBZBLZCACANCCCCKCDCODCFCAFCGCOGCHCHECICIVCKCOKCLCHLCMCMRCNCHNCOCOLCRCRICU"..., 22382) = 22382 30059 lseek(4, 29807596, SEEK_SET) = 29807596 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\2376\324U\17\4\0\0\17\4\0\0\34\0\0\0", 30) = 30 30059 lseek(4, 29807654, SEEK_SET) = 29807654 30059 read(4, "\312\376\272\276\0\0\0003\0*\1\0\3()V\1\0\6\1\0\4Code\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\naccess$200\1\0\naccess$300\1\0\fcreateObject\1\0\20java/util/Locale\1\0\22java/util/Locale$1\1\0\26java/util/Locale$Cache\1\0\32java/util/Locale$LocaleKey\1\0!sun/util/locale/LocaleObjectCache\7\0\v\7\0\f\7\0\r\7\0\16\7\0\17\1\0SLsun/util/locale/LocaleObjectCache;\1\0\27(Ljava/util/Locale$1;)V\1\0&(Ljava/lang/Object;)Ljava/lang/Object;\1\0000(Ljava/util/Locale$LocaleKey;)Ljava/util/Locale;\1\0:(Ljava/util/Locale$LocaleKey;)Lsun/util/locale/BaseLocale;\1\0@(Ljava/util/Locale$LocaleKey;)Lsun/util/locale/LocaleExtensions;\1\0U(Lsun/util/locale/BaseLocale;Lsun/util/locale/LocaleExtensions;Ljava/util/Locale$1;)V\f\0\2\0\1\f\0\n\0\30\f\0\10\0\31\f\0\t\0\32\f\0\2\0\33\n\0\20\0 \n\0\22\0\34\n\0\22\0\35\n\0\23\0\36\n\0\23\0\37\n\0\24\0\34\1\0\5Cache\1\0\vLocale.java\1\0\tLocaleKey\0 \0\22\0\24\0\0\0\0\0\4\0\2\0\2\0\1\0\1\0\3\0\0\0!\0\1\0\1\0\0\0\5*\267\0&\261\0\0\0\1\0\5\0\0\0\n\0\2\0\0\2\244\0\4\2\245\0\4\0\n\0\30\0\1\0\3\0\0\0)\0\5\0\2\0\0\0\21\273\0\20Y+\270\0$+\270\0%\1\267\0!\260\0\0\0\1\0\5\0\0\0\6\0\1\0\0\2\251\20D\0\n\0\27\0\1\0\3\0\0\0!\0\2\0\2\0\0\0\t*+\300\0\23\266\0#\260\0\0\0\1\0\5\0\0\0\6\0\1\0\0\2\243\20\0\0\2\0\26\0\1\0\3\0\0\0\35\0\1\0\2\0\0\0\5*\267\0\"\261\0\0\0\1\0\5\0\0\0\6\0\1\0\0\2\243\0\3\0\7\0\0\0\2\0(\0"..., 1039) = 1039 30059 lseek(4, 50992391, SEEK_SET) = 50992391 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305BO\t\260\264\250\7\0\0\250\7\0\0'\0\0\0", 30) = 30 30059 lseek(4, 50992460, SEEK_SET) = 50992460 30059 read(4, "\312\376\272\276\0\0\0003\0Q\4?@\0\0\1\0\3()V\1\0\6(IFI)V\1\0\10(TK;)TK;\1\0\10(TK;)TV;\1\0\v(TK;TV;)TV;\1\0\6\1\0\4Code\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\21cleanStaleEntries\1\0\fcreateObject\1\0\3get\1\0\6getKey\1\0\20java/lang/Object\1\0\34java/lang/ref/ReferenceQueue\1\0&java/util/concurrent/ConcurrentHashMap\1\0\"java/util/concurrent/ConcurrentMap\1\0\3map\1\0\fnormalizeKey\1\0\4poll\1\0\3put\1\0\vputIfAbsent\1\0\5queue\1\0\6remove\1\0!sun/util/locale/LocaleObjectCache\1\0,sun/util/locale/LocaleObjectCache$CacheEntry\7\0\22\7\0\23\7\0\24\7\0\25\7\0\35\7\0\36\1\0\36Ljava/lang/ref/ReferenceQueue;\1\0#Ljava/lang/ref/ReferenceQueue;\1\0$Ljava/util/concurrent/ConcurrentMap;\1\0_Ljava/util/concurrent/ConcurrentMap;>;\1\0<Ljava/lang/Object;\1\0\24()Ljava/lang/Object;\1\0\33()Ljava/lang/ref/Reference;\1\0&(Ljava/lang/Object;)Ljava/lang/Object;\1\0008(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;\1\0E(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;)V\f\0\33\0"..., 1960) = 1960 30059 mprotect(0x7fb31442e000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 59899776, SEEK_SET) = 59899776 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\253\263\232\302L6\0\0L6\0\0,\0\0\0", 30) = 30 30059 lseek(4, 59899850, SEEK_SET) = 59899850 30059 read(4, "\312\376\272\276\0\0\0003\1\311\3\0\1\0\0\3@\0\0\0\3\177\377\377\377\4?@\0\0\10\0 \10\0J\10\0\\\10\0\234\10\0\235\10\0\236\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4(I)I\1\0\4(I)V\1\0\5(IF)V\1\0\6(IFI)V\1\0\5(II)I\1\0\25(Ljava/lang/Object;)I\1\0\25(Ljava/lang/Object;)V\1\0\25(Ljava/lang/Object;)Z\1\0'(Ljava/lang/Object;Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)I\1\0\25(Ljava/lang/String;)V\1\0\30(Ljava/lang/Throwable;)V\1\0\v(TK;TV;)TV;\1\0\f(TK;TV;TV;)Z\1\0\10\1\0\6\1\0\23ALTERNATIVE_HASHING\1\0\27Bad number of segments:\1\0\4Code\1\0\rConstantValue\1\0\31DEFAULT_CONCURRENCY_LEVEL\1\0\30DEFAULT_INITIAL_CAPACITY\1\0\23DEFAULT_LOAD_FACTOR\1\0\5Entry\1\0\nExceptions\1\0\1F\1\0\17HASHSEED_OFFSET\1\0\1I\1\0\fInnerClasses\1\0\1J\1\0\17LineNumberTable\1\0\22Ljava/lang/Object;\1\0\20MAXIMUM_CAPACITY\1\0\fMAX_SEGMENTS\1\0\32MIN_SEGMENT_TABLE_CAPACITY\1\0\23RETRIES_BEFORE_LOCK\1\0\5SBASE\1\0\16SEGMASK_OFFSET\1\0\17SEGMENTS_OFFSET\1\0\17SEGSHIFT_OFFSET\1\0\6SSHIFT\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\5TBASE\1\0\6TSHIFT\1\0\6UNSAFE\1\0\1Z\1\0003[Ljava/util/concurrent/ConcurrentHashMap$HashEntry;\1\0001[Ljava/util/concurrent/ConcurrentHashMap$Segment;\1\0\6append\1\0\17arrayBaseOffset\1\0\17arrayIndexScale\1\0\5c"..., 13900) = 13900 30059 mprotect(0x7fb31442f000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 59899172, SEEK_SET) = 59899172 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\0177Z<\26\2\0\0\26\2\0\0(\0\0\0", 30) = 30 30059 lseek(4, 59899242, SEEK_SET) = 59899242 30059 read(4, "\312\376\272\276\0\0\0003\0\23\1\0'(Ljava/lang/Object;Ljava/lang/Object;)Z\1\0\v(TK;TV;)TV;\1\0\f(TK;TV;TV;)Z\1\0\tSignature\1\0\nSourceFile\1\0\20java/lang/Object\1\0\rjava/util/Map\1\0\"java/util/concurrent/ConcurrentMap\1\0\vputIfAbsent\1\0\6remove\1\0\7replace\7\0\6\7\0\7\7\0\10\1\0SLjava/lang/Object;Ljava/util/Map;\1\0008(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;\1\0009(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Z\1\0\22ConcurrentMap.java\6\1\0\16\0\f\0\1\0\r\0\0\0\4\4\1\0\t\0\20\0\1\0\4\0\0\0\2\0\2\4\1\0\n\0\1\0\0\4\1\0\v\0\21\0\1\0\4\0\0\0\2\0\3\4\1\0\v\0\20\0\1\0\4\0\0\0\2\0\2\0\2\0\5\0\0\0\2\0\22\0\4\0\0\0\2\0\17", 534) = 534 30059 lseek(4, 59868809, SEEK_SET) = 59868809 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B'\232\25\226\246\6\0\0\246\6\0\0006\0\0\0", 30) = 30 30059 lseek(4, 59868893, SEEK_SET) = 59868893 30059 read(4, "\312\376\272\276\0\0\0003\0P\10\0\34\1\0\3()V\1\0\30(Ljava/lang/Throwable;)V\1\0\10\1\0\6\1\0\4Code\1\0\1I\1\0\fInnerClasses\1\0\1J\1\0\17LineNumberTable\1\0\22Ljava/lang/Object;\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\3TK;\1\0\3TV;\1\0\6UNSAFE\1\0\20getDeclaredField\1\0\tgetUnsafe\1\0\4hash\1\0\17java/lang/Class\1\0\17java/lang/Error\1\0\23java/lang/Exception\1\0\20java/lang/Object\1\0&java/util/concurrent/ConcurrentHashMap\1\0000java/util/concurrent/ConcurrentHashMap$HashEntry\1\0\3key\1\0\4next\1\0\nnextOffset\1\0\21objectFieldOffset\1\0\20putOrderedObject\1\0\7setNext\1\0\17sun/misc/Unsafe\1\0\5value\7\0\25\7\0\26\7\0\27\7\0\30\7\0\31\7\0\32\7\0!\1\0002Ljava/util/concurrent/ConcurrentHashMap$HashEntry;\1\0:Ljava/util/concurrent/ConcurrentHashMap$HashEntry;\1\0\21Lsun/misc/Unsafe;\1\0<Ljava/lang/Object;\1\0\34(Ljava/lang/reflect/Field;)J\1\0D(ITK;TV;Ljava/util/concurrent/ConcurrentHashMap$HashEntry;)V\1\0005(Ljava/util/concurrent/ConcurrentHashMap$HashEntry;)V\1\0=(Ljava/util/concurrent/ConcurrentHashMap$HashEntry;)V\1\0\23()Lsun/misc/Unsafe;\1\0((Ljava/lang/Object;JLjava/lang"..., 1702) = 1702 30059 lseek(4, 59893525, SEEK_SET) = 59893525 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B!\272*\261\275\25\0\0\275\25\0\0004\0\0\0", 30) = 30 30059 lseek(4, 59893607, SEEK_SET) = 59893607 30059 read(4, "\312\376\272\276\0\0\0003\0\216\3@\0\0\0\1\0\3()I\1\0\3()V\1\0\3()Z\1\0\25(Ljava/lang/Object;)Z\1\0\f(TK;ITV;)TV;\1\0\r(TK;ITV;TV;)Z\1\0\r(TK;ITV;Z)TV;\1\0\10\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\1F\1\0\1I\1\0\fInnerClasses\1\0\1J\1\0\17LineNumberTable\1\0\22Ljava/lang/Object;\1\0\20MAX_SCAN_RETRIES\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0003[Ljava/util/concurrent/ConcurrentHashMap$HashEntry;\1\0\23availableProcessors\1\0\5clear\1\0\5count\1\0\7entryAt\1\0\fentryForHash\1\0\6equals\1\0\ngetRuntime\1\0\4hash\1\0\24java/io/Serializable\1\0\20java/lang/Object\1\0\21java/lang/Runtime\1\0\23java/lang/Throwable\1\0&java/util/concurrent/ConcurrentHashMap\1\0000java/util/concurrent/ConcurrentHashMap$HashEntry\1\0.java/util/concurrent/ConcurrentHashMap$Segment\1\0(java/util/concurrent/locks/ReentrantLock\1\0\3key\1\0\nloadFactor\1\0\4lock\1\0\10modCount\1\0\4next\1\0\3put\1\0\6rehash\1\0\6remove\1\0\7replace\1\0\vscanAndLock\1\0\21scanAndLockForPut\1\0\20serialVersionUID\1\0\nsetEntryAt\1\0\7setNext\1\0\5table\1\0\tthreshold\1\0\7tryLock\1\0\6unlock\1\0\5value\5\0376L\220X\223)=\7\0\27\7\0 \7\0!\7\0\"\7\0#\7\0$\7\0%\7\0&\7\0'\1\0002Ljava/util/concurrent/ConcurrentHashMap$HashEntry;\1\0;[Ljava/util/concurre"..., 5565) = 5565 30059 lseek(4, 59889386, SEEK_SET) = 59889386 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305Bm?\233a\337\17\0\0\337\17\0\0.\0\0\0", 30) = 30 30059 lseek(4, 59889462, SEEK_SET) = 59889462 30059 read(4, "\312\376\272\276\0\0\0003\0\246\10\0\31\10\0\32\10\0\33\10\0A\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4(I)V\1\0\4(I)Z\1\0\5(IJ)Z\1\0\4(J)J\1\0\25(Ljava/lang/String;)V\1\0\4(Z)V\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\nExceptions\1\0\fInnerClasses\1\0\1J\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\22[Locked by thread \1\0\n[Unlocked]\1\0\1]\1\0\24acquireInterruptibly\1\0\6append\1\0\fgetHoldCount\1\0\7getName\1\0\10getOwner\1\0\16getQueueLength\1\0\20getQueuedThreads\1\0\22getWaitQueueLength\1\0\21getWaitingThreads\1\0\17hasQueuedThread\1\0\20hasQueuedThreads\1\0\nhasWaiters\1\0\6isFair\1\0\25isHeldByCurrentThread\1\0\21isHeldExclusively\1\0\10isLocked\1\0\10isQueued\1\0\24java/io/Serializable\1\0\"java/lang/IllegalArgumentException\1\0\36java/lang/InterruptedException\1\0\36java/lang/NullPointerException\1\0\20java/lang/Object\1\0\20java/lang/String\1\0\27java/lang/StringBuilder\1\0\20java/lang/Thread\1\0\35java/util/concurrent/TimeUnit\1\0005java/util/concurrent/locks/AbstractQueuedSynchronizer\1\0Ejava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject\1\0\37java/util/concurrent/locks/Lock\1\0(java/util/concurrent/locks/ReentrantLock"..., 4063) = 4063 30059 mprotect(0x7fb314430000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 59888932, SEEK_SET) = 59888932 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305Bd\313t\237\203\1\0\0\203\1\0\0%\0\0\0", 30) = 30 30059 lseek(4, 59888999, SEEK_SET) = 59888999 30059 read(4, "\312\376\272\276\0\0\0003\0\23\1\0\3()V\1\0\3()Z\1\0\nExceptions\1\0\nSourceFile\1\0\36java/lang/InterruptedException\1\0\20java/lang/Object\1\0\37java/util/concurrent/locks/Lock\1\0\4lock\1\0\21lockInterruptibly\1\0\fnewCondition\1\0\7tryLock\1\0\6unlock\7\0\5\7\0\6\7\0\7\1\0#(JLjava/util/concurrent/TimeUnit;)Z\1\0(()Ljava/util/concurrent/locks/Condition;\1\0\tLock.java\6\1\0\17\0\16\0\0\0\0\0\6\4\1\0\10\0\1\0\0\4\1\0\t\0\1\0\1\0\3\0\0\0\4\0\1\0\r\4\1\0\v\0\2\0\0\4\1\0\v\0\20\0\1\0\3\0\0\0\4\0\1\0\r\4\1\0\f\0\1\0\0\4\1\0\n\0\21\0\0\0\1\0\4\0\0\0\2\0\22", 387) = 387 30059 lseek(4, 29974985, SEEK_SET) = 29974985 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\252\336\327\20t\4\0\0t\4\0\0003\0\0\0", 30) = 30 30059 lseek(4, 29975066, SEEK_SET) = 29975066 30059 read(4, "\312\376\272\276\0\0\0003\0:\3@\0\0\0\3\177\377\377\377\10\0\r\10\0\34\10\0\37\1\0\3()V\1\0\25(Ljava/lang/String;)I\1\0\25(Ljava/lang/String;)V\1\0\10\1\0\6\1\0\23ALTERNATIVE_HASHING\1\0\4Code\1\0000Illegal value for 'jdk.map.althashing.threshold'\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\nSourceFile\1\0\rStackMapTable\1\0\1Z\1\0\fdoPrivileged\1\0\17java/lang/Error\1\0\"java/lang/IllegalArgumentException\1\0\21java/lang/Integer\1\0\20java/lang/Object\1\0\20java/lang/String\1\0\36java/security/AccessController\1\0&java/util/concurrent/ConcurrentHashMap\1\0-java/util/concurrent/ConcurrentHashMap$Holder\1\0\34jdk.map.althashing.threshold\1\0\10parseInt\1\0%sun/security/action/GetPropertyAction\1\0\37value must be positive integer.\7\0\24\7\0\25\7\0\26\7\0\27\7\0\30\7\0\31\7\0\32\7\0\33\7\0\36\1\0004(Ljava/security/PrivilegedAction;)Ljava/lang/Object;\1\0*(Ljava/lang/String;Ljava/lang/Throwable;)V\f\0\v\0\22\f\0\n\0\6\f\0\35\0\7\f\0\n\0\10\f\0\23\0)\f\0\n\0*\t\0'\0+\n\0 \0000\n\0!\0.\n\0\"\0-\n\0#\0,\n\0%\0/\n\0(\0.\1\0\26ConcurrentHashMap.java\1\0\6Holder\0 \0'\0#\0\0\0\1\0\30\0\v\0\22\0\0\0\2\0\2\0\n\0\6\0\1\0\f\0\0\0\35\0\1\0\1\0\0\0\5*\267\0005\261\0\0\0\1\0\17\0\0\0\6\0\1\0\0\0\270\0\10\0\t\0\6\0\1\0\f\0\0\0\304\0\4\0\3\0\0\0S\273\0(Y\22\4\267\0007\270\0006\300\0$K\1*\245\0\n*\270\0004\247\0\5\22\2<\33\2\240\0\6\22\2<\33\234\0\r\273\0!Y\22\5\267\0003\277\247\0\17M\273\0 Y\22\3,\267\0002\277\33\22\1\243\0\7"..., 1140) = 1140 30059 lseek(4, 59888007, SEEK_SET) = 59888007 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305Bj\261\370\224E\3\0\0E\3\0\0:\0\0\0", 30) = 30 30059 lseek(4, 59888095, SEEK_SET) = 59888095 30059 read(4, "\312\376\272\276\0\0\0003\0000\1\0\3()V\1\0\4(I)V\1\0\4(I)Z\1\0\5(II)Z\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\fInnerClasses\1\0\1J\1\0\17LineNumberTable\1\0\nSourceFile\1\0\rStackMapTable\1\0\7acquire\1\0\22compareAndSetState\1\0\rcurrentThread\1\0\20java/lang/Thread\1\0(java/util/concurrent/locks/ReentrantLock\1\0004java/util/concurrent/locks/ReentrantLock$NonfairSync\1\0-java/util/concurrent/locks/ReentrantLock$Sync\1\0\4lock\1\0\21nonfairTryAcquire\1\0\20serialVersionUID\1\0\27setExclusiveOwnerThread\1\0\ntryAcquire\5e\2102\347S{\277\v\7\0\20\7\0\21\7\0\22\7\0\23\1\0\24()Ljava/lang/Thread;\1\0\25(Ljava/lang/Thread;)V\f\0\5\0\1\f\0\r\0\2\f\0\25\0\3\f\0\16\0\4\f\0\17\0\37\f\0\27\0 \n\0\33\0%\n\0\35\0\"\n\0\35\0#\n\0\35\0$\n\0\35\0&\n\0\36\0!\1\0\vNonfairSync\1\0\22ReentrantLock.java\1\0\4Sync\0000\0\35\0\36\0\0\0\1\0\32\0\26\0\t\0\1\0\7\0\0\0\2\0\31\0\3\0\0\0\5\0\1\0\1\0\6\0\0\0\35\0\1\0\1\0\0\0\5*\267\0,\261\0\0\0\1\0\n\0\0\0\6\0\1\0\0\0\313\0\20\0\24\0\1\0\1\0\6\0\0\0G\0\3\0\1\0\0\0\31*\3\4\266\0*\231\0\r*\270\0'\266\0+\247\0\10*\4\266\0(\261\0\0\0\2\0\f\0\0\0\4\0\2\23\4\0\n\0\0\0\22\0\4\0\0\0\323\0\t\0\324\0\23\0\326\0\30\0\327\0\24\0\30\0\3\0\1\0\6\0\0\0\36\0\2\0\2\0\0\0\6*\33\266\0)\254\0\0\0\1\0\n\0\0\0\6\0\1\0\0\0\332\0\2\0\v\0\0\0\2\0.\0\10\0\0\0\22\0\2\0\35\0\34\0-\0\30\0\36\0\34\0/\4\10", 837) = 837 30059 lseek(4, 59885841, SEEK_SET) = 59885841 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\352c+Z%\10\0\0%\10\0\0003\0\0\0", 30) = 30 30059 lseek(4, 59885922, SEEK_SET) = 59885922 30059 read(4, "\312\376\272\276\0\0\0003\0Y\10\0\20\1\0\3()I\1\0\3()V\1\0\3()Z\1\0\4(I)V\1\0\4(I)Z\1\0\5(II)Z\1\0\25(Ljava/lang/String;)V\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\nExceptions\1\0\fInnerClasses\1\0\1J\1\0\17LineNumberTable\1\0\33Maximum lock count exceeded\1\0\nSourceFile\1\0\rStackMapTable\1\0\22compareAndSetState\1\0\rcurrentThread\1\0\21defaultReadObject\1\0\27getExclusiveOwnerThread\1\0\fgetHoldCount\1\0\10getOwner\1\0\10getState\1\0\21isHeldExclusively\1\0\10isLocked\1\0\23java/io/IOException\1\0\31java/io/ObjectInputStream\1\0 java/lang/ClassNotFoundException\1\0\17java/lang/Error\1\0&java/lang/IllegalMonitorStateException\1\0\20java/lang/Thread\1\0005java/util/concurrent/locks/AbstractQueuedSynchronizer\1\0Ejava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject\1\0(java/util/concurrent/locks/ReentrantLock\1\0-java/util/concurrent/locks/ReentrantLock$Sync\1\0\4lock\1\0\fnewCondition\1\0\21nonfairTryAcquire\1\0\nreadObject\1\0\20serialVersionUID\1\0\27setExclusiveOwnerThread\1\0\10setState\1\0\ntryRelease\5\270\36\242\224\252DZ|\7\0\34\7\0\35\7\0\36\7\0\37\7\0 \7\0!\7\0\"\7\0#\7\0$\7\0%\1\0\36(Ljava/io/ObjectInputStream;)V\1\0\24()Ljava/lang/Thread;\1\0\25(Ljava/lang/Thread;)V\1\0:(Lj"..., 2085) = 2085 30059 lseek(4, 59872792, SEEK_SET) = 59872792 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\30b^\357\2402\0\0\2402\0\0;\0\0\0", 30) = 30 30059 lseek(4, 59872881, SEEK_SET) = 59872881 30059 read(4, "\312\376\272\276\0\0\0003\1v\10\0\f\10\0\33\10\0'\10\0,\10\0F\10\0Y\10\0x\10\0z\10\0\213\10\0\216\10\0\235\1\0\0\1\0\3()I\1\0\3()J\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4(I)I\1\0\4(I)V\1\0\4(I)Z\1\0\5(II)Z\1\0\5(IJ)Z\1\0\25(Ljava/lang/Object;)V\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)V\1\0\30(Ljava/lang/Throwable;)V\1\0\2, \1\0\10\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\tEXCLUSIVE\1\0\nExceptions\1\0\1I\1\0\fInnerClasses\1\0\1J\1\0\17LineNumberTable\1\0\4Node\1\0\tNot owner\1\0\6SHARED\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\t[State = \1\0\naccess$000\1\0\7acquire\1\0\24acquireInterruptibly\1\0\racquireQueued\1\0\racquireShared\1\0\32acquireSharedInterruptibly\1\0\3add\1\0\taddWaiter\1\0 apparentlyFirstQueuedIsExclusive\1\0\6append\1\0\rcancelAcquire\1\0\21compareAndSetHead\1\0\21compareAndSetNext\1\0\22compareAndSetState\1\0\21compareAndSetTail\1\0\27compareAndSetWaitStatus\1\0\21compareAndSwapInt\1\0\24compareAndSwapObject\1\0\rcurrentThread\1\0\26doAcquireInterruptibly\1\0\16doAcquireNanos\1\0\17doAcquireShared\1\0\34doAcquireSharedInterruptibly\1\0\24doAcquireSharedNanos\1\0\17doReleaseShared\1\0\fempty queue]\1\0\3enq\1\0\20findNodeFromTail\1\0\30fullGetFirstQueuedThread\1\0\ffullyRelease\1\0\20getDecla"..., 12960) = 12960 30059 mprotect(0x7fb314431000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 59872103, SEEK_SET) = 59872103 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\304\350\24\303W\2\0\0W\2\0\0<\0\0\0", 30) = 30 30059 lseek(4, 59872193, SEEK_SET) = 59872193 30059 read(4, "\312\376\272\276\0\0\0003\0\34\1\0\3()V\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\1J\1\0\17LineNumberTable\1\0\nSourceFile\1\0\24exclusiveOwnerThread\1\0\27getExclusiveOwnerThread\1\0\24java/io/Serializable\1\0\20java/lang/Object\1\0006java/util/concurrent/locks/AbstractOwnableSynchronizer\1\0\20serialVersionUID\1\0\27setExclusiveOwnerThread\0053\337\257\271\255mo\251\7\0\n\7\0\v\7\0\f\1\0\22Ljava/lang/Thread;\1\0\24()Ljava/lang/Thread;\1\0\25(Ljava/lang/Thread;)V\f\0\10\0\24\f\0\2\0\1\t\0\23\0\27\n\0\22\0\30\1\0 AbstractOwnableSynchronizer.java\4!\0\23\0\22\0\1\0\21\0\2\0\32\0\r\0\5\0\1\0\4\0\0\0\2\0\17\0\202\0\10\0\24\0\0\0\3\0\4\0\2\0\1\0\1\0\3\0\0\0\35\0\1\0\1\0\0\0\5*\267\0\32\261\0\0\0\1\0\6\0\0\0\6\0\1\0\0\0;\0\24\0\16\0\26\0\1\0\3\0\0\0\"\0\2\0\2\0\0\0\6*+\265\0\31\261\0\0\0\1\0\6\0\0\0\n\0\2\0\0\0I\0\5\0J\0\24\0\t\0\25\0\1\0\3\0\0\0\35\0\1\0\1\0\0\0\5*\264\0\31\260\0\0\0\1\0\6\0\0\0\6\0\1\0\0\0T\0\1\0\7\0\0\0\2\0\33", 599) = 599 30059 lseek(4, 59870595, SEEK_SET) = 59870595 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305Bb\235N\22\206\5\0\0\206\5\0\0@\0\0\0", 30) = 30 30059 lseek(4, 59870689, SEEK_SET) = 59870689 30059 read(4, "\312\376\272\276\0\0\0003\0=\1\0\3()V\1\0\3()Z\1\0\10\1\0\6\1\0\tCANCELLED\1\0\tCONDITION\1\0\4Code\1\0\rConstantValue\1\0\tEXCLUSIVE\1\0\nExceptions\1\0\1I\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\4Node\1\0\tPROPAGATE\1\0\6SHARED\1\0\6SIGNAL\1\0\nSourceFile\1\0\rStackMapTable\1\0\10isShared\1\0\36java/lang/NullPointerException\1\0\20java/lang/Object\1\0005java/util/concurrent/locks/AbstractQueuedSynchronizer\1\0:java/util/concurrent/locks/AbstractQueuedSynchronizer$Node\1\0\4next\1\0\nnextWaiter\1\0\vpredecessor\1\0\4prev\1\0\6thread\1\0\nwaitStatus\3\377\377\377\375\3\377\377\377\376\3\377\377\377\377\3\0\0\0\1\7\0\25\7\0\26\7\0\27\7\0\30\1\0\22Ljava/lang/Thread;\1\0()Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;\1\0Q(Ljava/lang/Thread;Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)V\f\0\36\0\v\f\0\35\0'\f\0\t\0(\f\0\20\0(\f\0\32\0(\f\0\34\0(\f\0\4\0\1\t\0&\0,\t\0&\0-\t\0&\0.\t\0&\0/\t\0&\0000\t\0&\0001\n\0#\0002\n\0$\0002\n\0&\0002\1\0\37AbstractQueuedSynchronizer.java\0000\0&\0$\0\0\0\v\0\30\0\20\0(\0\0\0\30\0\t\0(\0\0\0\30\0\5\0\v\0\1\0\10\0\0\0\2\0\"\0\30\0\21\0\v\0\1\0\10\0\0\0\2\0!\0\30\0\6\0\v\0\1\0\10\0\0\0\2\0 \0\30\0\17\0\v\0\1\0\10\0\0\0\2\0\37\0@\0\36\0\v\0\0\0@\0\34\0(\0\0\0@\0\31\0(\0\0\0@\0\35\0'\0\0\0\0\0\32\0(\0\0\0\6\0\20\0\24"..., 1414) = 1414 30059 lseek(4, 50955058, SEEK_SET) = 50955058 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\304\304\346\227\201\r\0\0\201\r\0\0 \0\0\0", 30) = 30 30059 lseek(4, 50955120, SEEK_SET) = 50955120 30059 read(4, "\312\376\272\276\0\0\0003\0\217\10\0\r\10\0\24\10\0/\10\0000\10\0001\10\0003\10\0007\10\0009\10\0=\10\0?\10\0J\10\0K\1\0\0\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\25(Ljava/lang/Object;)Z\1\0&(Ljava/lang/String;)Ljava/lang/String;\1\0'(Ljava/lang/String;Ljava/lang/String;)V\1\0\2, \1\0\10\1\0\6\1\0\5CACHE\1\0\4Code\1\0\rConstantValue\1\0\1I\1\0\fInnerClasses\1\0\3Key\1\0\17LineNumberTable\1\0\22Ljava/lang/String;\1\0\3SEP\1\0\nSourceFile\1\0\rStackMapTable\1\0\1_\1\0\6append\1\0\17caseIgnoreMatch\1\0\16createInstance\1\0\6equals\1\0\3get\1\0\vgetInstance\1\0\vgetLanguage\1\0\tgetRegion\1\0\tgetScript\1\0\ngetVariant\1\0\4hash\1\0\10hashCode\1\0\2he\1\0\2id\1\0\2in\1\0\6intern\1\0\2iw\1\0\20java/lang/Object\1\0\20java/lang/String\1\0\27java/lang/StringBuilder\1\0\2ji\1\0\10language\1\0\tlanguage=\1\0\6length\1\0\3put\1\0\6region\1\0\7region=\1\0\6script\1\0\7script=\1\0\32sun/util/locale/BaseLocale\1\0\34sun/util/locale/BaseLocale$1\1\0 sun/util/locale/BaseLocale$Cache\1\0\36sun/util/locale/BaseLocale$Key\1\0\33sun/util/locale/LocaleUtils\1\0\rtoLowerString\1\0\10toString\1\0\rtoTitleString\1\0\rtoUpperString\1\0\7variant\1\0\10variant=\1\0\2yi\10\0\"\7\0004\7\0005\7\0006\7\0@\7\0A\7\0B\7\0C\7\0D\1\0\"Lsun/util/locale/BaseLocale$Cache;\1\0&(Ljava/lang/Object;)Ljav"..., 3457) = 3457 30059 lseek(4, 50950235, SEEK_SET) = 50950235 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\230y\357l\320\4\0\0\320\4\0\0&\0\0\0", 30) = 30 30059 lseek(4, 50950303, SEEK_SET) = 50950303 30059 read(4, "\312\376\272\276\0\0\0003\0004\1\0\3()V\1\0\6\1\0\4Code\1\0\fInnerClasses\1\0\3Key\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\naccess$100\1\0\naccess$200\1\0\naccess$300\1\0\naccess$400\1\0\fcreateObject\1\0\tnormalize\1\0\fnormalizeKey\1\0\32sun/util/locale/BaseLocale\1\0\34sun/util/locale/BaseLocale$1\1\0 sun/util/locale/BaseLocale$Cache\1\0\36sun/util/locale/BaseLocale$Key\1\0!sun/util/locale/LocaleObjectCache\7\0\20\7\0\21\7\0\22\7\0\23\7\0\24\1\0aLsun/util/locale/LocaleObjectCache;\1\0&(Ljava/lang/Object;)Ljava/lang/Object;\1\0004(Lsun/util/locale/BaseLocale$Key;)Ljava/lang/String;\1\0>(Lsun/util/locale/BaseLocale$Key;)Lsun/util/locale/BaseLocale;\1\0B(Lsun/util/locale/BaseLocale$Key;)Lsun/util/locale/BaseLocale$Key;\1\0i(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lsun/util/locale/BaseLocale$1;)V\f\0\2\0\1\f\0\t\0\34\f\0\n\0\34\f\0\v\0\34\f\0\f\0\34\f\0\r\0\35\f\0\16\0\36\f\0\17\0\36\f\0\2\0\37\n\0\25\0(\n\0\27\0%\n\0\27\0'\n\0\30\0!\n\0\30\0\"\n\0\30\0#\n\0\30\0$\n\0\30\0&\n\0\31\0 \1\0\17BaseLocale.java\1\0\5Cache\0 \0\27\0\31\0\0\0\0\0\5\0\1\0\2\0\1\0\1\0\3\0\0\0!\0\1\0\1\0\0\0\5*\267\0001\261\0\0\0\1\0\6\0\0\0\n\0\2\0\0\1$\0\4\1%\0\4\0\17\0\36\0\1\0\3\0\0\0\35\0\1\0\2"..., 1232) = 1232 30059 lseek(4, 50951535, SEEK_SET) = 50951535 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\30p\\1\201\r\0\0\201\r\0\0$\0\0\0", 30) = 30 30059 lseek(4, 50951601, SEEK_SET) = 50951601 30059 read(4, "\312\376\272\276\0\0\0003\0\200\10\0\2\1\0\0\1\0\23$assertionsDisabled\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4(C)C\1\0\4(I)C\1\0\25(Ljava/lang/Object;)I\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)I\1\0&(Ljava/lang/String;)Ljava/lang/String;\1\0'(Ljava/lang/String;Ljava/lang/String;)V\1\0\10\1\0\6\1\0\4Code\1\0\1I\1\0\fInnerClasses\1\0\3Key\1\0\17LineNumberTable\1\0\22Ljava/lang/String;\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\1Z\1\0\naccess$100\1\0\naccess$200\1\0\naccess$300\1\0\naccess$400\1\0\21caseIgnoreCompare\1\0\17caseIgnoreMatch\1\0\6charAt\1\0\tcompareTo\1\0\26desiredAssertionStatus\1\0\6equals\1\0\4hash\1\0\10hashCode\1\0\6intern\1\0\30java/lang/AssertionError\1\0\17java/lang/Class\1\0\24java/lang/Comparable\1\0\20java/lang/Object\1\0\20java/lang/String\1\0\4lang\1\0\6length\1\0\tnormalize\1\0\nnormalized\1\0\4regn\1\0\4scrt\1\0\32sun/util/locale/BaseLocale\1\0\34sun/util/locale/BaseLocale$1\1\0\36sun/util/locale/BaseLocale$Key\1\0\33sun/util/locale/LocaleUtils\1\0\7toLower\1\0\rtoLowerString\1\0\rtoTitleString\1\0\rtoUpperString\1\0\4vart\7\0(\7\0)\7\0*\7\0+\7\0,\7\0003\7\0004\7\0005\7\0006\1\0JLjava/lang/Object;Ljava/lang/Comparable\1\0\4Code\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\22Ljava/lang/Object;\1\0\tSignature\1\0\nSourceFile\1\0\3TK;\1\0\6getKey\1\0\33java/lang/ref/SoftReference\1\0\3key\1\0!sun/util/locale/LocaleObjectCache\1\0,sun/util/locale/LocaleObjectCache$CacheEntry\7\0\v\7\0\r\7\0\16\1\0LLjava/lang/ref/SoftReference;\1\0\24()Ljava/lang/Object;\1\0,(TK;TV;Ljava/lang/ref/ReferenceQueue;)V\1\0003(Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;)V\1\0E(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;)V\f\0\f\0\6\f\0\2\0\25\t\0\21\0\27\n\0\17\0\30\1\0\nCacheEntry\1\0\26LocaleObjectCache.java\0 \0\21\0\17\0\0\0\1\0\2\0\f\0\6\0\1\0\7\0\0\0\2\0\t\0\2\0\0\0\2\0\26\0\2\0\3\0\0\0,\0\3\0\4\0\0\0\f*,-\267\0\32*+\265\0\31\261\0\0\0\1\0\5\0\0\0\16\0\3\0\0\0k\0\6\0l\0\v\0m\0\7\0\0\0\2\0\24\0\0\0\n\0\23\0\2\0\3\0\0\0\35\0\1\0\1\0\0\0\5*\264\0\31\260\0\0\0\1\0\5\0\0\0\6\0\1\0\0\0p\0\7\0\0\0\2\0\1\0\3\0\10\0\0\0\2\0\34\0\7\0\0\0\2\0\22\0\4\0\0\0\n\0\1\0\21\0\20\0\33\0\n", 768) = 768 30059 mprotect(0x7fb314434000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 29810279, SEEK_SET) = 29810279 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B!K\332\231b\5\0\0b\5\0\0 \0\0\0", 30) = 30 30059 lseek(4, 29810341, SEEK_SET) = 29810341 30059 read(4, "\312\376\272\276\0\0\0003\0006\1\0\3()I\1\0\3()V\1\0\25(Ljava/lang/Object;)Z\1\0\6\1\0\4Code\1\0\1I\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\nSourceFile\1\0\rStackMapTable\1\0\naccess$200\1\0\naccess$300\1\0\4base\1\0\6equals\1\0\4exts\1\0\4hash\1\0\10hashCode\1\0\20java/lang/Object\1\0\20java/util/Locale\1\0\22java/util/Locale$1\1\0\32java/util/Locale$LocaleKey\1\0\32sun/util/locale/BaseLocale\1\0 sun/util/locale/LocaleExtensions\7\0\22\7\0\23\7\0\24\7\0\25\7\0\26\7\0\27\1\0\34Lsun/util/locale/BaseLocale;\1\0\"Lsun/util/locale/LocaleExtensions;\1\0:(Ljava/util/Locale$LocaleKey;)Lsun/util/locale/BaseLocale;\1\0@(Ljava/util/Locale$LocaleKey;)Lsun/util/locale/LocaleExtensions;\1\0A(Lsun/util/locale/BaseLocale;Lsun/util/locale/LocaleExtensions;)V\1\0U(Lsun/util/locale/BaseLocale;Lsun/util/locale/LocaleExtensions;Ljava/util/Locale$1;)V\f\0\20\0\6\f\0\r\0\36\f\0\17\0\37\f\0\21\0\1\f\0\4\0\2\f\0\16\0\3\f\0\4\0\"\t\0\33\0$\t\0\33\0%\t\0\33\0&\n\0\30\0(\n\0\33\0*\n\0\34\0'\n\0\34\0)\n\0\35\0'\n\0\35\0)\1\0\vLocale.java\1\0\tLocaleKey\0000\0\33\0\30\0\0\0\3\0\22\0\r\0\36\0\0\0\22\0\17\0\37\0\0\0\22\0\20\0\6\0\0\0\6\0\2\0\4\0\"\0\1\0\5\0\0\0z\0\2\0\4\0\0\0-*\267\0.*+\265\0,*,\265\0-*\264\0,\266\0000>*\264\0-\306\0\r\35*\264\0-\266\0002\202>*\35\265\0+\261\0\0\0\2\0\n\0\0\0\23\0\1\377\0'\0\4\7\0\33\7\0\34\7\0\35\1\0\0\0\10\0\0\0\"\0\10\0\0\2\262\0\4\2\263\0\t\2\264\0\16\2\267\0\26\2\270\0\35\2\271\0'\2\273\0,\2\274\0\1\0\16\0"..., 1378) = 1378 30059 lseek(4, 50995012, SEEK_SET) = 50995012 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\34l\215\23\250\f\0\0\250\f\0\0!\0\0\0", 30) = 30 30059 lseek(4, 50995075, SEEK_SET) = 50995075 30059 read(4, "\312\376\272\276\0\0\0003\0Y\1\0\3()I\1\0\3()V\1\0\3()Z\1\0\4(C)C\1\0\4(C)Z\1\0\4(I)C\1\0\25(Ljava/lang/String;)I\1\0&(Ljava/lang/String;)Ljava/lang/String;\1\0\25(Ljava/lang/String;)Z\1\0\5([C)V\1\0\6\1\0\4Code\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\2[C\1\0\21caseIgnoreCompare\1\0\17caseIgnoreMatch\1\0\6charAt\1\0\tcompareTo\1\0\7isAlpha\1\0\16isAlphaNumeric\1\0\24isAlphaNumericString\1\0\risAlphaString\1\0\7isEmpty\1\0\7isLower\1\0\tisNumeric\1\0\17isNumericString\1\0\7isUpper\1\0\20java/lang/Object\1\0\20java/lang/String\1\0\16java/util/List\1\0\rjava/util/Map\1\0\rjava/util/Set\1\0\6length\1\0\33sun/util/locale/LocaleUtils\1\0\7toLower\1\0\rtoLowerString\1\0\rtoTitleString\1\0\7toUpper\1\0\rtoUpperString\7\0\21\7\0\37\7\0 \7\0!\7\0\"\7\0#\7\0%\1\0\23(Ljava/util/List;)Z\1\0\26(Ljava/util/List<*>;)Z\1\0\22(Ljava/util/Map;)Z\1\0\26(Ljava/util/Map<**>;)Z\1\0\22(Ljava/util/Set;)Z\1\0\25(Ljava/util/Set<*>;)Z\1\0'(Ljava/lang/String;Ljava/lang/String;)I\1\0'(Ljava/lang/String;Ljava/lang/String;)Z\f\0$\0\1\f\0\v\0\2\f\0\32\0\3\f\0&\0\4\f\0)\0\4\f\0\26\0\5\f\0\27\0\5\f\0\33\0\5\f\0\34\0\5\f\0\36\0\5\f\0\24\0\6\f\0\v\0\n\f\0\25\0\7\f\0'\0\10\n\0,\0;\n\0-\0:\n\0-\0D\n\0-\0E\n\0-\0F\n\0001\0=\n\0001\0>\n\0001\0?\n\0001\0@\n\0001\0A\n\0001\0B\n\0001\0C\n\0001\0G\v\0.\0<\v\0/\0<\v\0000\0<\1\0"..., 3240) = 3240 30059 lseek(4, 27711716, SEEK_SET) = 27711716 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\236\335\34Sp\6\0\0p\6\0\0\35\0\0\0", 30) = 30 30059 lseek(4, 27711775, SEEK_SET) = 27711775 30059 read(4, "\312\376\272\276\0\0\0003\0H\1\0\3()V\1\0\4(I)B\1\0\4(I)I\1\0\4(I)Z\1\0\5(I)[C\1\0\5(II)I\1\0\6\1\0\4Code\1\0\17LineNumberTable\1\0\nSourceFile\1\0\rStackMapTable\1\0\5digit\1\0\21getDirectionality\1\0\17getNumericValue\1\0\rgetProperties\1\0\7getType\1\0\10instance\1\0\25isIdentifierIgnorable\1\0\risIdeographic\1\0\24isJavaIdentifierPart\1\0\25isJavaIdentifierStart\1\0\nisMirrored\1\0\21isOtherAlphabetic\1\0\20isOtherLowercase\1\0\20isOtherUppercase\1\0\27isUnicodeIdentifierPart\1\0\30isUnicodeIdentifierStart\1\0\fisWhitespace\1\0\27java/lang/CharacterData\1\0\31java/lang/CharacterData00\1\0\31java/lang/CharacterData01\1\0\31java/lang/CharacterData02\1\0\31java/lang/CharacterData0E\1\0\35java/lang/CharacterDataLatin1\1\0!java/lang/CharacterDataPrivateUse\1\0 java/lang/CharacterDataUndefined\1\0\20java/lang/Object\1\0\2of\1\0\vtoLowerCase\1\0\vtoTitleCase\1\0\vtoUpperCase\1\0\24toUpperCaseCharArray\1\0\rtoUpperCaseEx\7\0\35\7\0\36\7\0\37\7\0 \7\0!\7\0\"\7\0#\7\0$\7\0%\1\0\31Ljava/lang/CharacterData;\1\0\33Ljava/lang/CharacterData00;\1\0\37Ljava/lang/CharacterDataLatin1;\1\0\34(I)Ljava/lang/CharacterData;\f\0\21\0005\f\0\21\0006\f\0\21\0007\f\0\7\0\1\f\0)\0\3\t\0-\0:\t\0.\0009\t\0/\0009\t\0000\0009\t\0001\0;\t\0002\0009\t\0003\0009\n\0,\0=\n\0004\0<\1\0\22Charac"..., 1648) = 1648 30059 lseek(4, 59863491, SEEK_SET) = 59863491 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B\373)\250\343\205\24\0\0\205\24\0\0#\0\0\0", 30) = 30 30059 lseek(4, 59863556, SEEK_SET) = 59863556 30059 read(4, "\312\376\272\276\0\0\0003\0`\3\200\0\0\0\3\0\1\0\0\3\0\2\0\0\3\7\374\0\0\3x\0\0\0\10\0\10\10\0?\1\2\0\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\300\200\1\0\23$assertionsDisabled\1\0\3()V\1\0\3()Z\1\0\4()[C\1\0\4(I)B\1\0\4(I)I\1\0\4(I)Z\1\0\5(I)[C\1\0\5(II)I\1\0\10\1\0\6\1\0\1A\1\0\6A_DATA\1\0\1B\1\0\4Code\1\0\rConstantValue\1\0\17LineNumberTable\1\0\22Ljava/lang/String;\1\0\nSourceFile\1\0\rStackMapTable\1\0\1Z\1\0\2[C\1\0\2[I\1\0\26desiredAssertionStatus\1\0\5digit\1\0\21getDirectionality\1\0\17getNumericValue\1\0\rgetProperties\1\0\17getPropertiesEx\1\0\7getType\1\0\10instance\1\0\25isIdentifierIgnorable\1\0\risIdeographic\1\0\24isJavaIdentifierPart\1\0\25isJavaIdentifierStart\1\0\nisMirror"..., 5253) = 5253 30059 lseek(4, 59862605, SEEK_SET) = 59862605 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305Bbj\27\303D\3\0\0D\3\0\0\24\0\0\0", 30) = 30 30059 lseek(4, 59862655, SEEK_SET) = 59862655 30059 read(4, "\312\376\272\276\0\0\0003\0-\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\4(I)I\1\0\25(I)Ljava/lang/String;\1\0\26(II)Ljava/lang/String;\1\0\25(Ljava/lang/String;)V\1\0\6\1\0\4Code\1\0\17LineNumberTable\1\0\22Ljava/lang/String;\1\0\nSourceFile\1\0\rStackMapTable\1\0\10URL.java\1\0\7getPath\1\0\10getQuery\1\0\6getRef\1\0\7indexOf\1\0\20java/lang/Object\1\0\20java/lang/String\1\0\16java/net/Parts\1\0\vlastIndexOf\1\0\4path\1\0\5query\1\0\3ref\1\0\tsubstring\7\0\22\7\0\23\7\0\24\f\0\26\0\n\f\0\27\0\n\f\0\30\0\n\f\0\7\0\2\f\0\21\0\3\f\0\25\0\3\f\0\31\0\4\f\0\31\0\5\t\0\34\0\35\t\0\34\0\36\t\0\34\0\37\n\0\32\0 \n\0\33\0!\n\0\33\0\"\n\0\33\0#\n\0\33\0$\0 \0\34\0\32\0\0\0\3\0\0\0\26\0\n\0\0\0\0\0\27\0\n\0\0\0\0\0\30\0\n\0\0\0\4\0\0\0\7\0\6\0\1\0\10\0\0\0\312\0\4\0\4\0\0\0W*\267\0(+\20#\266\0)=*\34\234\0\7\1\247\0\n+\34\4`\266\0+\265\0'\34\234\0\7+\247\0\t+\3\34\266\0,L+\20?\266\0*>\35\2\237\0\33*+\35\4`\266\0+\265\0&*+\3\35\266\0,\265\0%\247\0\10*+\265\0%\261\0\0\0\2\0\f\0\0\0001\0\6\377\0\24\0\3\7\0\34\7\0\33\1\0\1\7\0\34\377\0\6\0\3\7\0\34\7\0\33\1\0\2\7\0\34\7\0\33\nE\7\0\33\374\0$\1\4\0\t\0\0\0*\0\n\0\0\5 \0\4\5!\0\v\5\"\0\36\5#\0-\5$\0004\5%\0009\5&\0D\5'\0Q\5)\0V\5+\0\0\0\16\0\1\0\1\0\10\0\0\0\35\0\1\0\1\0\0\0\5*\264\0%\260\0\0\0\1\0\t\0\0\0\6\0\1\0\0\5.\0\0\0\17\0\1\0\1\0\10\0\0\0\35\0\1\0\1\0\0\0\5*\264\0&\260\0\0\0\1\0\t\0\0\0\6\0\1\0\0\0052\0\0\0\20\0\1\0\1\0\10\0\0\0\35\0\1\0\1\0\0\0\5*\264\0'\260\0\0\0\1\0\t\0\0\0\6\0\1\0\0\0056\0\1\0\v\0\0\0\2\0\r", 836) = 836 30059 lseek(4, 59860058, SEEK_SET) = 59860058 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\226?\267\3\256\t\0\0\256\t\0\0'\0\0\0", 30) = 30 30059 lseek(4, 59860127, SEEK_SET) = 59860127 30059 read(4, "\312\376\272\276\0\0\0003\0{\10\0\7\10\0\10\10\0\27\10\0\35\10\0+\10\0005\1\0\0\1\0\1#\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\25(Ljava/lang/Object;)Z\1\0&(Ljava/lang/String;)Ljava/lang/String;\1\0\25(Ljava/lang/String;)V\1\0\25(Ljava/lang/String;)Z\1\0\6\1\0\1C\1\0\4Code\1\0\nExceptions\1\0\fHandler.java\1\0\17LineNumberTable\1\0\nSourceFile\1\0\rStackMapTable\1\0\26Unable to connect to: \1\0\6append\1\0\27createFileURLConnection\1\0\6decode\1\0\6equals\1\0\20equalsIgnoreCase\1\0\3ftp\1\0\7getFile\1\0\7getHost\1\0\7getPath\1\0\6getRef\1\0\nhostsEqual\1\0\fjava/io/File\1\0\23java/io/IOException\1\0\20java/lang/String\1\0\27java/lang/StringBuilder\1\0\16java/net/Proxy\1\0\fjava/net/URL\1\0\26java/net/URLConnection\1\0\31java/net/URLStreamHandler\1\0\tlocalhost\1\0\16openConnection\1\0\10parseURL\1\0\7replace\1\0\rseparatorChar\1\0\25sun/net/www/ParseUtil\1\0+sun/net/www/protocol/file/FileURLConnection\1\0!sun/net/www/protocol/file/Handler\1\0\16toExternalForm\1\0\10toString\1\0\1~\7\0#\7\0$\7\0%\7\0&\7\0'\7\0(\7\0)\7\0*\7\0000\7\0001\7\0002\1\0\26(CC)Ljava/lang/String;\1\0\32()Ljava/net/URLConnection;\1\0\37(Ljava/net/URL;Ljava/io/File;)V\1\0\"(Ljava/net/URL;)Ljava/lang/String;\1\0%(Ljava/net/URL;Ljava/lang/String;II)V\1\0-("..., 2478) = 2478 30059 lseek(4, 59853462, SEEK_SET) = 59853462 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\224c\364\243\207\31\0\0\207\31\0\0\37\0\0\0", 30) = 30 30059 lseek(4, 59853523, SEEK_SET) = 59853523 30059 read(4, "\312\376\272\276\0\0\0003\0\346\10\0\20\10\0\21\10\0 \10\0!\10\0\"\10\0#\10\0$\10\0%\10\0&\10\0'\10\0,\10\0-\10\0.\10\0000\10\0F\1\0\0\1\0\1#\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\4(I)C\1\0\4(I)I\1\0\25(I)Ljava/lang/String;\1\0\4(I)V\1\0\5(II)I\1\0\26(II)Ljava/lang/String;\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)I\1\0,(Ljava/lang/String;)Ljava/lang/StringBuffer;\1\0\25(Ljava/lang/String;)V\1\0\25(Ljava/lang/String;)Z\1\0\2./\1\0\1/\1\0\2/.\1\0\3/..\1\0\4/../\1\0\3/./\1\0\2//\1\0\1:\1\0\6\1\0\4Code\1\0\nDeprecated\1\0\nExceptions\1\0\31Invalid authority field: \1\0\16Invalid host: \1\0\25Invalid port number :\1\0\17LineNumberTable\1\0\27Method not implemented.\1\0\31RuntimeVisibleAnnotations\1\0\nSourceFile\1\0\rStackMapTable\1\0\6append\1\0\6charAt\1\0\10endsWith\1\0\6equals\1\0\20equalsIgnoreCase\1\0\fgetAuthority\1\0\tgetByName\1\0\16getDefaultPort\1\0\7getFile\1\0\7getHost\1\0\16getHostAddress\1\0\7getPath\1\0\7getPort\1\0\vgetProtocol\1\0\10getQuery\1\0\6getRef\1\0\vgetUserInfo\1\0\7handler\1\0+handler for url different from this handler\1\0\10hashCode\1\0\vhostAddress\1\0\nhostsEqual\1\0\7indexOf\1\0\24isIPv6LiteralAddress\1\0\23java/io/IOException\1\0\"java/lang/IllegalArgumentException\1\0\21java/lang/Integer\1\0\20java/lang/Obj"..., 6535) = 6535 30059 mprotect(0x7fb314435000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 59852591, SEEK_SET) = 59852591 30059 read(4, "PK\3\4\n\0\0\0\0\0003\246\305B\354\210\253\2132\3\0\0002\3\0\0\27\0\0\0", 30) = 30 30059 lseek(4, 59852644, SEEK_SET) = 59852644 30059 read(4, "\312\376\272\276\0\0\0003\0+\1\0\3()V\1\0\4(Z)V\1\0\6\1\0\4Code\1\0\17EnclosingMethod\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\21Ljava/lang/Class;\1\0\tSignature\1\0\nSourceFile\1\0\17java/lang/Class\1\0\21java/lang/Class$1\1\0\20java/lang/Object\1\0\35java/lang/reflect/Constructor\1\0\36java/security/PrivilegedAction\1\0\vnewInstance\1\0\3run\1\0\rsetAccessible\1\0\6this$0\1\0\5val$c\7\0\v\7\0\f\7\0\r\7\0\16\7\0\17\1\0\37Ljava/lang/reflect/Constructor;\1\0DLjava/lang/Object;Ljava/security/PrivilegedAction;\1\0\24()Ljava/lang/Object;\1\0\22()Ljava/lang/Void;\1\0003(Ljava/lang/Class;Ljava/lang/reflect/Constructor;)V\f\0\23\0\10\f\0\24\0\32\f\0\3\0\1\f\0\22\0\2\f\0\20\0\34\f\0\21\0\35\t\0\26\0\37\t\0\26\0 \n\0\26\0$\n\0\27\0!\n\0\30\0\"\1\0\nClass.java\0 \0\26\0\27\0\1\0\31\0\2\20\20\0\24\0\32\0\0\20\20\0\23\0\10\0\0\0\3\0\0\0\3\0\36\0\1\0\4\0\0\0'\0\2\0\3\0\0\0\17*+\265\0%*,\265\0&*\267\0(\261\0\0\0\1\0\7\0\0\0\6\0\1\0\0\1_\0\1\0\21\0\35\0\1\0\4\0\0\0&\0\2\0\1\0\0\0\n*\264\0&\4\266\0)\1\260\0\0\0\1\0\7\0\0\0\n\0\2\0\0\1a\0\10\1b\20A\0\21\0\34\0\1\0\4\0\0\0\35\0\1\0\1\0\0\0\5*\266\0'\260\0\0\0\1\0\7\0\0\0\6\0\1\0\0\1_\0\4\0\n\0\0\0\2\0*\0\5\0\0\0\4\0\25\0#\0\t\0\0\0\2\0\33\0\6\0\0\0\n\0\1\0\26\0\0\0\0\0\0", 818) = 818 30059 lseek(4, 59851097, SEEK_SET) = 59851097 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\371\345\311\23\223\5\0\0\223\5\0\0%\0\0\0", 30) = 30 30059 lseek(4, 59851164, SEEK_SET) = 59851164 30059 read(4, "\312\376\272\276\0\0\0003\0Q\10\0\25\10\0'\10\0(\10\0+\1\0\3()V\1\0\4(I)I\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)I\1\0&(Ljava/lang/String;)Ljava/lang/String;\1\0\25(Ljava/lang/String;)V\1\0\4(Z)Z\1\0\6\1\0\4Code\1\0\17EnclosingMethod\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\25Ljava/io/PrintStream;\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0007Unable to parse property sun.reflect.inflationThreshold\1\0\naccess$002\1\0\naccess$102\1\0\naccess$202\1\0\fcheckInitted\1\0\6equals\1\0\vgetProperty\1\0\tinitCause\1\0\21java/lang/Integer\1\0\37java/lang/NumberFormatException\1\0\20java/lang/Object\1\0\32java/lang/RuntimeException\1\0\20java/lang/String\1\0\20java/lang/System\1\0\36java/security/PrivilegedAction\1\0\3out\1\0\10parseInt\1\0\3run\1\0\36sun.reflect.inflationThreshold\1\0\27sun.reflect.noInflation\1\0\35sun/reflect/ReflectionFactory\1\0\37sun/reflect/ReflectionFactory$1\1\0\4true\7\0\35\7\0\36\7\0\37\7\0 \7\0!\7\0\"\7\0#\7\0)\7\0*\1\0DLjava/lang/Object;Ljava/security/PrivilegedAction;\1\0\24()Ljava/lang/Object;\1\0\22()Ljava/lang/Void;\1\0,(Ljava/lang/Throwable;)Ljava/lang/Throwable;\f\0$\0\21\f\0\f\0\5\f\0\31\0\5\f\0\27\0\6\f\0\26\0\v\f\0\30\0\v\f\0\32\0\7\f\0%\0\10\f\0\f\0\n\f\0&\0"..., 1427) = 1427 30059 lseek(4, 59849384, SEEK_SET) = 59849384 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305Bc\307\375\212d\6\0\0d\6\0\0/\0\0\0", 30) = 30 30059 lseek(4, 59849461, SEEK_SET) = 59849461 30059 read(4, "\312\376\272\276\0\0\0003\0M\1\0\3()I\1\0\3()V\1\0'([Ljava/lang/Object;)Ljava/lang/Object;\1\0\6\1\0\4Code\1\0\nExceptions\1\0\1I\1\0\17LineNumberTable\1\0\nSourceFile\1\0\rStackMapTable\1\0\1c\1\0\23generateConstructor\1\0\21getDeclaringClass\1\0\21getExceptionTypes\1\0\fgetModifiers\1\0\21getParameterTypes\1\0\22inflationThreshold\1\0\"java/lang/IllegalArgumentException\1\0 java/lang/InstantiationException\1\0\35java/lang/reflect/Constructor\1\0+java/lang/reflect/InvocationTargetException\1\0\vnewInstance\1\0\fnewInstance0\1\0\16numInvocations\1\0\6parent\1\0\vsetDelegate\1\0\tsetParent\1\0#sun/reflect/ConstructorAccessorImpl\1\0-sun/reflect/DelegatingConstructorAccessorImpl\1\0#sun/reflect/MethodAccessorGenerator\1\0)sun/reflect/NativeConstructorAccessorImpl\1\0\35sun/reflect/ReflectionFactory\7\0\22\7\0\23\7\0\24\7\0\25\7\0\34\7\0\35\7\0\36\7\0\37\7\0 \1\0\37Ljava/lang/reflect/Constructor;\1\0/Lsun/reflect/DelegatingConstructorAccessorImpl;\1\0\23()Ljava/lang/Class;\1\0\24()[Ljava/lang/Class;\1\0\"(Ljava/lang/reflect/Constructor;)V\1\0((Lsun/reflect/ConstructorAccessorImpl;)V\1\0002(Lsun/reflect/DelegatingConstructorAccessorImpl;)V\1\0F(Ljava/lang"..., 1636) = 1636 30059 lseek(4, 59848568, SEEK_SET) = 59848568 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\201\32\237\352\337\2\0\0\337\2\0\0003\0\0\0", 30) = 30 30059 lseek(4, 59848649, SEEK_SET) = 59848649 30059 read(4, "\312\376\272\276\0\0\0003\0 \1\0\3()V\1\0'([Ljava/lang/Object;)Ljava/lang/Object;\1\0\6\1\0\4Code\1\0\nExceptions\1\0\17LineNumberTable\1\0\nSourceFile\1\0\10delegate\1\0\"java/lang/IllegalArgumentException\1\0 java/lang/InstantiationException\1\0+java/lang/reflect/InvocationTargetException\1\0\vnewInstance\1\0\vsetDelegate\1\0#sun/reflect/ConstructorAccessorImpl\1\0-sun/reflect/DelegatingConstructorAccessorImpl\7\0\t\7\0\n\7\0\v\7\0\16\7\0\17\1\0%Lsun/reflect/ConstructorAccessorImpl;\1\0((Lsun/reflect/ConstructorAccessorImpl;)V\f\0\10\0\25\f\0\3\0\1\f\0\r\0\26\f\0\f\0\2\t\0\24\0\27\n\0\23\0\30\n\0\23\0\32\n\0\24\0\31\1\0&DelegatingConstructorAccessorImpl.java\0 \0\24\0\23\0\0\0\1\0\2\0\10\0\25\0\0\0\3\0\0\0\3\0\26\0\1\0\4\0\0\0*\0\2\0\2\0\0\0\n*\267\0\34*+\266\0\36\261\0\0\0\1\0\6\0\0\0\16\0\3\0\0\0$\0\4\0%\0\t\0&\0\1\0\f\0\2\0\2\0\4\0\0\0!\0\2\0\2\0\0\0\t*\264\0\33+\266\0\35\260\0\0\0\1\0\6\0\0\0\6\0\1\0\0\0-\0\5\0\0\0\10\0\3\0\21\0\20\0\22\0\0\0\r\0\26\0\1\0\4\0\0\0\"\0\2\0\2\0\0\0\6*+\265\0\33\261\0\0\0\1\0\6\0\0\0\n\0\2\0\0\0001\0\5\0002\0\1\0\7\0\0\0\2\0\37", 735) = 735 30059 stat("/software/jdk1.7.0_25/jre/lib/ext/sunec.jar", {st_mode=S_IFREG|0644, st_size=15943, ...}) = 0 30059 stat("/software/jdk1.7.0_25/jre/lib/ext/zipfs.jar", {st_mode=S_IFREG|0644, st_size=68654, ...}) = 0 30059 stat("/software/jdk1.7.0_25/jre/lib/ext/sunjce_provider.jar", {st_mode=S_IFREG|0644, st_size=198317, ...}) = 0 30059 stat("/software/jdk1.7.0_25/jre/lib/ext/dnsns.jar", {st_mode=S_IFREG|0644, st_size=8934, ...}) = 0 30059 stat("/software/jdk1.7.0_25/jre/lib/ext/sunpkcs11.jar", {st_mode=S_IFREG|0644, st_size=238303, ...}) = 0 30059 openat(AT_FDCWD, "/usr/java/packages/lib/ext", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = -1 ENOENT (No such file or directory) 30059 lseek(4, 29161753, SEEK_SET) = 29161753 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\362a\211Vk\5\0\0k\5\0\0&\0\0\0", 30) = 30 30059 lseek(4, 29161821, SEEK_SET) = 29161821 30059 read(4, "\312\376\272\276\0\0\0003\0003\1\0\3()V\1\0\6\1\0\4Code\1\0\17EnclosingMethod\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\27doIntersectionPrivilege\1\0\fdoPrivileged\1\0\ngetContext\1\0\36java/lang/NullPointerException\1\0\20java/lang/Object\1\0\"java/security/AccessControlContext\1\0\36java/security/AccessController\1\0\36java/security/ProtectionDomain\1\0 java/security/ProtectionDomain$1\1\0\10optimize\1\0\33sun/misc/JavaSecurityAccess\7\0\r\7\0\16\7\0\17\7\0\20\7\0\21\7\0\22\7\0\24\1\0d(Ljava/security/PrivilegedAction;Ljava/security/AccessControlContext;)TT;\1\0\210(Ljava/security/PrivilegedAction;Ljava/security/AccessControlContext;Ljava/security/AccessControlContext;)TT;\1\0&()Ljava/security/AccessControlContext;\1\0#()[Ljava/security/ProtectionDomain;\1\0H([Ljava/security/ProtectionDomain;Ljava/security/AccessControlContext;)V\1\0X(Ljava/security/PrivilegedAction;Ljava/security/AccessControlContext;)Ljava/lang/Object;\1\0|(Ljava/security/PrivilegedAction;Ljava/security/AccessControlContext;Ljava/secur"..., 1387) = 1387 30059 lseek(4, 43223934, SEEK_SET) = 43223934 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\373\210t\216\220\2\0\0\220\2\0\0!\0\0\0", 30) = 30 30059 lseek(4, 43223997, SEEK_SET) = 43223997 30059 read(4, "\312\376\272\276\0\0\0003\0\r\1\0\tSignature\1\0\nSourceFile\1\0\27doIntersectionPrivilege\1\0\20java/lang/Object\1\0\33sun/misc/JavaSecurityAccess\7\0\4\7\0\5\1\0d(Ljava/security/PrivilegedAction;Ljava/security/AccessControlContext;)TT;\1\0\210(Ljava/security/PrivilegedAction;Ljava/security/AccessControlContext;Ljava/security/AccessControlContext;)TT;\1\0X(Ljava/security/PrivilegedAction;Ljava/security/AccessControlContext;)Ljava/lang/Object;\1\0|(Ljava/security/PrivilegedAction;Ljava/security/AccessControlContext;Ljava/security/AccessControlContext;)Ljava/lang/Object;\1\0\27JavaSecurityAccess.java\6\1\0\7\0\6\0\0\0\0\0\2\4\1\0\3\0\v\0\1\0\1\0\0\0\2\0\t\4\1\0\3\0\n\0\1\0\1\0\0\0\2\0\10\0\1\0\2\0\0\0\2\0\f", 656) = 656 30059 lseek(4, 29165978, SEEK_SET) = 29165978 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\2414A^\313\2\0\0\313\2\0\0&\0\0\0", 30) = 30 30059 lseek(4, 29166046, SEEK_SET) = 29166046 30059 read(4, "\312\376\272\276\0\0\0003\0\35\1\0\3()V\1\0\6\1\0\4Code\1\0\17EnclosingMethod\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\nSourceFile\1\0\30getProtectionDomainCache\1\0\20java/lang/Object\1\0\36java/security/ProtectionDomain\1\0 java/security/ProtectionDomain$3\1\0\"java/security/ProtectionDomain$3$1\1\0+sun/misc/JavaSecurityProtectionDomainAccess\1\0Asun/misc/JavaSecurityProtectionDomainAccess$ProtectionDomainCache\7\0\t\7\0\n\7\0\v\7\0\f\7\0\r\7\0\16\1\0%(Ljava/security/ProtectionDomain$3;)V\1\0E()Lsun/misc/JavaSecurityProtectionDomainAccess$ProtectionDomainCache;\f\0\2\0\1\f\0\2\0\25\n\0\17\0\27\n\0\22\0\30\1\0\25ProtectionDomain.java\1\0\25ProtectionDomainCache\0000\0\21\0\17\0\1\0\23\0\0\0\2\0\0\0\2\0\1\0\1\0\3\0\0\0\35\0\1\0\1\0\0\0\5*\267\0\31\261\0\0\0\1\0\6\0\0\0\6\0\1\0\0\1\307\0\1\0\10\0\26\0\1\0\3\0\0\0!\0\3\0\1\0\0\0\t\273\0\22Y*\267\0\32\260\0\0\0\1\0\6\0\0\0\6\0\1\0\0\1\311\0\3\0\7\0\0\0\2\0\33\0\4\0\0\0\4\0\20\0\0\0\5\0\0\0\32\0\3\0\21\0\0\0\0\0\10\0\22\0\0\0\0\0\0\0\24\0\23\0\34\6\t", 715) = 715 30059 lseek(4, 43225213, SEEK_SET) = 43225213 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\321\343.Q\207\1\0\0\207\1\0\0001\0\0\0", 30) = 30 30059 lseek(4, 43225292, SEEK_SET) = 43225292 30059 read(4, "\312\376\272\276\0\0\0003\0\r\1\0\fInnerClasses\1\0\nSourceFile\1\0\30getProtectionDomainCache\1\0\20java/lang/Object\1\0+sun/misc/JavaSecurityProtectionDomainAccess\1\0Asun/misc/JavaSecurityProtectionDomainAccess$ProtectionDomainCache\7\0\4\7\0\5\7\0\6\1\0E()Lsun/misc/JavaSecurityProtectionDomainAccess$ProtectionDomainCache;\1\0'JavaSecurityProtectionDomainAccess.java\1\0\25ProtectionDomainCache\6\1\0\10\0\7\0\0\0\0\0\1\4\1\0\3\0\n\0\0\0\2\0\2\0\0\0\2\0\v\0\1\0\0\0\n\0\1\0\t\0\10\0\f\6\t", 391) = 391 30059 lseek(4, 59795837, SEEK_SET) = 59795837 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305BV\226\235\341[\35\0\0[\35\0\0\36\0\0\0", 30) = 30 30059 lseek(4, 59795897, SEEK_SET) = 59795897 30059 read(4, "\312\376\272\276\0\0\0003\1?\10\0\17\10\0\20\10\0\21\10\0\22\10\0\23\10\0\"\10\0#\10\0$\10\0%\10\0'\10\0(\10\0000\10\0o\10\0x\1\0\0\1\0\1 \1\0\31 \1\0\n not found\1\0\1(\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4()[B\1\0\4(I)I\1\0\4(I)V\1\0\26(II)Ljava/lang/String;\1\0\25(Ljava/lang/Object;)V\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)V\1\0\25(Ljava/lang/String;)Z\1\0'(Ljava/lang/String;Ljava/lang/String;)V\1\0\5([B)V\1\0\1)\1\0\1/\1\0\2/*\1\0\2/-\1\0\6\1\0\30Certificate factory for \1\0\23Certificate too big\1\0\4Code\1\0\rConstantValue\1\0\nExceptions\1\0\1J\1\0\17LineNumberTable\1\0\nSourceFile\1\0\rStackMapTable\1\0\5X.509\1\0\2[B\1\0\33[Ljava/security/CodeSigner;\1\0![Ljava/security/cert/Certificate;\1\0\3add\1\0\6addAll\1\0\6append\1\0\5certs\1\0\5clone\1\0\5close\1\0\vcontainsKey\1\0\35convertCertArrayToSignerArray\1\0\21defaultReadObject\1\0\22defaultWriteObject\1\0\10endsWith\1\0\6equals\1\0\20equalsIgnoreCase\1\0\7factory\1\0\20generateCertPath\1\0\23generateCertificate\1\0\3get\1\0\23getBasicConstraints\1\0\17getCertificates\1\0\16getCodeSigners\1\0\ngetEncoded\1\0\7getFile\1\0\7getHost\1\0\vgetInstance\1\0\vgetLocation\1\0\ngetMessage\1\0\7getPort\1\0\vgetProtocol\1\0\6getRef\1\0\21getSignerCertPath\1\0\7get"..., 7515) = 7515 30059 mprotect(0x7fb314436000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 29166761, SEEK_SET) = 29166761 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\277\243zN\222\1\0\0\222\1\0\0(\0\0\0", 30) = 30 30059 lseek(4, 29166831, SEEK_SET) = 29166831 30059 read(4, "\312\376\272\276\0\0\0003\0\26\1\0\3()V\1\0\6\1\0\4Code\1\0\fInnerClasses\1\0\3Key\1\0\17LineNumberTable\1\0\nSourceFile\1\0\20java/lang/Object\1\0\36java/security/ProtectionDomain\1\0\"java/security/ProtectionDomain$Key\1\0\6this$0\7\0\10\7\0\t\7\0\n\1\0 Ljava/security/ProtectionDomain;\1\0#(Ljava/security/ProtectionDomain;)V\f\0\v\0\17\f\0\2\0\1\t\0\16\0\21\n\0\f\0\22\1\0\25ProtectionDomain.java\0000\0\16\0\f\0\0\0\1\20\20\0\v\0\17\0\0\0\1\0\0\0\2\0\20\0\1\0\3\0\0\0\"\0\2\0\2\0\0\0\n*+\265\0\23*\267\0\24\261\0\0\0\1\0\6\0\0\0\6\0\1\0\0\1\303\0\2\0\7\0\0\0\2\0\25\0\4\0\0\0\n\0\1\0\16\0\r\0\5\0\20", 402) = 402 30059 lseek(4, 59696557, SEEK_SET) = 59696557 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305BX\236\232\221\357\0\0\0\357\0\0\0\35\0\0\0", 30) = 30 30059 lseek(4, 59696616, SEEK_SET) = 59696616 30059 read(4, "\312\376\272\276\0\0\0003\0\16\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\25(Ljava/lang/Object;)Z\1\0\nSourceFile\1\0\6equals\1\0\7getName\1\0\10hashCode\1\0\20java/lang/Object\1\0\27java/security/Principal\1\0\10toString\7\0\10\7\0\t\1\0\16Principal.java\6\1\0\f\0\v\0\0\0\0\0\4\4\1\0\5\0\3\0\0\4\1\0\n\0\2\0\0\4\1\0\7\0\1\0\0\4\1\0\6\0\2\0\0\0\1\0\4\0\0\0\2\0\r", 239) = 239 30059 lseek(4, 59845204, SEEK_SET) = 59845204 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B):S\215\357\f\0\0\357\f\0\0\27\0\0\0", 30) = 30 30059 lseek(4, 59845257, SEEK_SET) = 59845257 30059 read(4, "\312\376\272\276\0\0\0003\0\250\4?@\0\0\1\0\3()F\1\0\3()I\1\0\3()V\1\0\3()Z\1\0\4(F)V\1\0\4(I)V\1\0\5(IF)V\1\0\6(IFZ)V\1\0\5(II)I\1\0\25(Ljava/lang/Object;)V\1\0\25(Ljava/lang/Object;)Z\1\0\6(TE;)Z\1\0\10\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\nExceptions\1\0\1J\1\0\17LineNumberTable\1\0\22Ljava/lang/Object;\1\0\7PRESENT\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\3add\1\0\6addAll\1\0\10capacity\1\0\5clear\1\0\5clone\1\0\10contains\1\0\vcontainsKey\1\0\21defaultReadObject\1\0\22defaultWriteObject\1\0\7hasNext\1\0\7isEmpty\1\0\10iterator\1\0\23java/io/IOException\1\0\31java/io/ObjectInputStream\1\0\32java/io/ObjectOutputStream\1\0\24java/io/Serializable\1\0 java/lang/ClassNotFoundException\1\0$java/lang/CloneNotSupportedException\1\0\23java/lang/Cloneable\1\0\27java/lang/InternalError\1\0\16java/lang/Math\1\0\20java/lang/Object\1\0\25java/util/AbstractSet\1\0\24java/util/Collection\1\0\21java/util/HashMap\1\0\21java/util/HashSet\1\0\22java/util/Iterator\1\0\27java/util/LinkedHashMap\1\0\27java/util/LinkedHashSet\1\0\rjava/util/Set\1\0\6keySet\1\0\nloadFactor\1\0\3map\1\0\3max\1\0\4next\1\0\3put\1\0\treadFloat\1\0\7readInt\1\0\nreadObject\1\0\6remove\1\0\20serialVersionUID\1\0\4size\1\0\nwriteFloat\1\0\10writeIn"..., 3311) = 3311 30059 lseek(4, 59836730, SEEK_SET) = 59836730 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\27\310\217\243\341 \0\0\341 \0\0\33\0\0\0", 30) = 30 30059 lseek(4, 59836787, SEEK_SET) = 59836787 30059 read(4, "\312\376\272\276\0\0\0003\1\207\10\0\v\10\0\f\10\0%\10\0009\10\0Y\10\0[\10\0\204\10\0\206\10\0\207\10\0\224\1\0\0\1\0\2\")\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)I\1\0\25(Ljava/lang/String;)V\1\0'(Ljava/lang/String;Ljava/lang/String;)V\1\0\10\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\5DEBUG\1\0\24DISABLE_JAR_CHECKING\1\0\nExceptions\1\0\fInnerClasses\1\0\fJAVA_VERSION\1\0\17LineNumberTable\1\0\25Ljava/io/PrintStream;\1\0\22Ljava/lang/String;\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\17UA-Java-Version\1\0\32URLClassPath.getResource(\"\1\0\27USER_AGENT_JAVA_VERSION\1\0\1Z\1\0\17[Ljava/net/URL;\1\0\naccess$000\1\0\naccess$100\1\0\vaccess$1000\1\0\naccess$300\1\0\3add\1\0\6addURL\1\0\6append\1\0\tarraycopy\1\0\5check\1\0\fcheckConnect\1\0\17checkPermission\1\0\tcheckRead\1\0\10checkURL\1\0\5close\1\0\fcloseLoaders\1\0\6closed\1\0\7connect\1\0\10contains\1\0\vcontainsKey\1\0\vcountTokens\1\0\26createURLStreamHandler\1\0\fdoPrivileged\1\0\5empty\1\0\temptyList\1\0\6equals\1\0\3err\1\0\20fileToEncodedURL\1\0\ffindResource\1\0\rfindResources\1\0\3get\1\0\ngetActions\1\0\20getCanonicalPath\1\0\fgetClassPath\1\0\fgetException\1\0\7getHost\1\0\rgetJarFileURL\1\0\tgetLoader\1\0\7getName\1\0\rget"..., 8417) = 8417 30059 lseek(4, 59833072, SEEK_SET) = 59833072 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\305\25\34\35\6\16\0\0\6\16\0\0&\0\0\0", 30) = 30 30059 lseek(4, 59833140, SEEK_SET) = 59833140 30059 read(4, "\312\376\272\276\0\0\0003\0\233\10\0\f\10\0\r\10\0\16\10\0\34\10\0\35\10\0\36\10\0003\10\0004\10\0005\10\0?\10\0@\1\0\0\1\0\2 (\1\0\2!/\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\4(I)C\1\0\4(I)I\1\0\25(I)Ljava/lang/String;\1\0\5(II)I\1\0\26(II)Ljava/lang/String;\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)I\1\0&(Ljava/lang/String;)Ljava/lang/String;\1\0\25(Ljava/lang/String;)V\1\0\25(Ljava/lang/String;)Z\1\0\1)\1\0\1/\1\0\7: no !/\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\nExceptions\1\0\fHandler.java\1\0\17LineNumberTable\1\0\22Ljava/lang/String;\1\0\nSourceFile\1\0\rStackMapTable\1\0\6append\1\0\16canonizeString\1\0\6charAt\1\0\10endsWith\1\0\6equals\1\0\20equalsIgnoreCase\1\0\7getFile\1\0\vgetProtocol\1\0\10hashCode\1\0\7indexOf\1\0\20indexOfBangSlash\1\0\rinvalid url: \1\0\3jar\1\0\4jar:\1\0\23java/io/IOException\1\0\36java/lang/NullPointerException\1\0\20java/lang/String\1\0\27java/lang/StringBuilder\1\0\36java/net/MalformedURLException\1\0\fjava/net/URL\1\0\31java/net/URLStreamHandler\1\0\vlastIndexOf\1\0\6length\1\0\26malformed context url:\1\0\rno !/ in spec\1\0\16openConnection\1\0\21parseAbsoluteSpec\1\0\20parseContextSpec\1\0\10parseURL\1\0\10sameFile\1\0\tseparator\1\0\6setURL\1\0\nstartsWith\1\0\tsubstring\1\0\25sun/net/www/ParseUtil"..., 3590) = 3590 30059 lseek(4, 59829809, SEEK_SET) = 59829809 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B,\23\7\231{\f\0\0{\f\0\0&\0\0\0", 30) = 30 30059 lseek(4, 59829877, SEEK_SET) = 59829877 30059 read(4, "\312\376\272\276\0\0\0003\0\244\10\0\37\10\0(\1\0\23$assertionsDisabled\1\0\3()V\1\0\3()Z\1\0\4(I)I\1\0\26(II)Ljava/lang/String;\1\0\25(Ljava/lang/Object;)Z\1\0&(Ljava/lang/String;)Ljava/lang/String;\1\0\25(Ljava/lang/String;)V\1\0\10\1\0\6\1\0\4Code\1\0\nExceptions\1\0\fInnerClasses\1\0\rLauncher.java\1\0\17LineNumberTable\1\0\nSourceFile\1\0\rStackMapTable\1\0\1Z\1\0\17[Ljava/io/File;\1\0![Ljava/security/cert/Certificate;\1\0\naccess$100\1\0\naccess$200\1\0\3add\1\0\6addURL\1\0#appendToClassPathForInstrumentation\1\0\22checkPackageAccess\1\0\26desiredAssertionStatus\1\0\fdoPrivileged\1\0\6exitVM\1\0\21getAppClassLoader\1\0\vgetCodeBase\1\0\ngetContext\1\0\ngetFileURL\1\0\16getPermissions\1\0\vgetProperty\1\0\22getSecurityManager\1\0\tholdsLock\1\0\17java.class.path\1\0\fjava/io/File\1\0\23java/io/IOException\1\0\30java/lang/AssertionError\1\0\17java/lang/Class\1\0\25java/lang/ClassLoader\1\0 java/lang/ClassNotFoundException\1\0\33java/lang/RuntimePermission\1\0\31java/lang/SecurityManager\1\0\20java/lang/String\1\0\20java/lang/System\1\0\20java/lang/Thread\1\0\36java/net/MalformedURLException\1\0\27java/net/URLClassLoader\1\0\"java/security/AccessControlContext\1\0\36java/se"..., 3195) = 3195 30059 mprotect(0x7fb314437000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 59828550, SEEK_SET) = 59828550 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305Bp\177I\372\245\4\0\0\245\4\0\0(\0\0\0", 30) = 30 30059 lseek(4, 59828620, SEEK_SET) = 59828620 30059 read(4, "\312\376\272\276\0\0\0003\0009\1\0\3()V\1\0\6\1\0\4Code\1\0\17EnclosingMethod\1\0\fInnerClasses\1\0\rLauncher.java\1\0\17LineNumberTable\1\0\22Ljava/lang/String;\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\17[Ljava/io/File;\1\0\17[Ljava/net/URL;\1\0\naccess$300\1\0\21getAppClassLoader\1\0\20java/lang/Object\1\0\fjava/net/URL\1\0\36java/security/PrivilegedAction\1\0\3run\1\0\21sun/misc/Launcher\1\0 sun/misc/Launcher$AppClassLoader\1\0\"sun/misc/Launcher$AppClassLoader$1\1\0\tval$extcl\1\0\10val$path\1\0\5val$s\7\0\r\7\0\20\7\0\21\7\0\22\7\0\24\7\0\25\7\0\26\1\0\27Ljava/lang/ClassLoader;\1\0VLjava/lang/Object;Ljava/security/PrivilegedAction;\1\0\24()Ljava/lang/Object;\1\0$()Lsun/misc/Launcher$AppClassLoader;\1\0000(Ljava/lang/ClassLoader;)Ljava/lang/ClassLoader;\1\0)([Ljava/net/URL;Ljava/lang/ClassLoader;)V\1\0 ([Ljava/io/File;)[Ljava/net/URL;\1\0;(Ljava/lang/String;[Ljava/io/File;Ljava/lang/ClassLoader;)V\f\0\30\0\f\f\0\27\0!\f\0\31\0\10\f\0\2\0\1\f\0\23\0$\f\0\17\0%\f\0\2\0&\f\0\16\0'\t\0 \0)\t\0 \0*\t\0 \0+\n\0\33\0,\n\0\36\0000\n\0\37\0/\n\0 \0-\1\0\16AppClassLoader\0000\0 \0\33\0\1\0\35\0\3\20\20\0\31\0\10\0\0\20\20\0\30\0\f\0\0\20\20\0\27\0!\0\0\0\3\0\0\0\2\0(\0\1\0\3\0\0\0,\0\2\0\4\0\0\0\24*+\265\0003*,\265\0001*-\265\0002*\267\0004\261\0\0\0\1\0\7\0\0\0\6\0\1"..., 1189) = 1189 30059 lstat("/nfs", {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0 30059 lstat("/nfs/users", {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0 30059 lstat("/nfs/users/nfs_j", {st_mode=S_IFDIR|0755, st_size=16384, ...}) = 0 30059 lstat("/nfs/users/nfs_j/jkb", {st_mode=S_IFDIR|0755, st_size=122880, ...}) = 0 30059 lstat("/nfs/users/nfs_j/jkb/work", {st_mode=S_IFDIR|0755, st_size=12288, ...}) = 0 30059 lstat("/nfs/users/nfs_j/jkb/work/cram", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 30059 lstat("/nfs/users/nfs_j/jkb/work/cram/cramtools-2.1.jar", {st_mode=S_IFREG|0644, st_size=5750715, ...}) = 0 30059 stat("/nfs/users/nfs_j/jkb/work/cram/cramtools-2.1.jar", {st_mode=S_IFREG|0644, st_size=5750715, ...}) = 0 30059 lseek(4, 59827122, SEEK_SET) = 59827122 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\346\322\273?O\5\0\0O\5\0\0'\0\0\0", 30) = 30 30059 lseek(4, 59827191, SEEK_SET) = 59827191 30059 read(4, "\312\376\272\276\0\0\0003\0D\10\0\21\1\0\3()V\1\0&(Ljava/lang/String;)Ljava/lang/String;\1\0'([Ljava/lang/Object;)Ljava/lang/Object;\1\0\6\1\0\20ClassLoader.java\1\0\4Code\1\0\nExceptions\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\rcurrentThread\1\0\7forName\1\0\26getDeclaredConstructor\1\0\vgetProperty\1\0\30java.system.class.loader\1\0\17java/lang/Class\1\0\25java/lang/ClassLoader\1\0\23java/lang/Exception\1\0\20java/lang/Object\1\0\20java/lang/String\1\0\20java/lang/System\1\0!java/lang/SystemClassLoaderAction\1\0\20java/lang/Thread\1\0\35java/lang/reflect/Constructor\1\0'java/security/PrivilegedExceptionAction\1\0\vnewInstance\1\0\6parent\1\0\3run\1\0\25setContextClassLoader\7\0\22\7\0\23\7\0\24\7\0\25\7\0\26\7\0\27\7\0\30\7\0\31\7\0\32\7\0\33\1\0\27Ljava/lang/ClassLoader;\1\0TLjava/lang/Object;Ljava/security/PrivilegedExceptionAction;\1\0\31()Ljava/lang/ClassLoader;\1\0\32(Ljava/lang/ClassLoader;)V\1\0\24()Ljava/lang/Object;\1\0\24()Ljava/lang/Thread;\1\0003([Ljava/lang/Class;)Ljava/lang/reflect/Constructor;\1\0=(Ljava/lang/String;ZLjava/lang/ClassLoader;)Ljava/lang/Class;\f\0\35\0*\f\0\5\0\2\f\0\36\0,\f\0\37\0-\f\0\r\0/\f\0\34\0\4\f\0"..., 1359) = 1359 30059 mprotect(0x7fb314438000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb314439000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7fb28f141000 30059 clone(child_stack=0x7fb28f240ff0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7fb28f2419d0, tls=0x7fb28f241700, child_tidptr=0x7fb28f2419d0) = 30086 30059 futex(0x7fb314009354, FUTEX_WAIT_PRIVATE, 55, NULL 30086 set_robust_list(0x7fb28f2419e0, 0x18) = 0 30086 gettid() = 30086 30086 rt_sigprocmask(SIG_BLOCK, NULL, [QUIT], 8) = 0 30086 rt_sigprocmask(SIG_UNBLOCK, [HUP INT ILL BUS FPE SEGV USR2 TERM], NULL, 8) = 0 30086 rt_sigprocmask(SIG_BLOCK, [QUIT], NULL, 8) = 0 30086 futex(0x7fb314009354, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x7fb314009350, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1}) = 1 30059 <... futex resumed> ) = 0 30086 futex(0x7fb314009328, FUTEX_WAKE_PRIVATE, 1 30059 futex(0x7fb314009328, FUTEX_WAIT_PRIVATE, 2, NULL 30086 <... futex resumed> ) = 0 30059 <... futex resumed> ) = -1 EAGAIN (Resource temporarily unavailable) 30086 futex(0x7fb314438b54, FUTEX_WAIT_PRIVATE, 1, NULL 30059 futex(0x7fb314009328, FUTEX_WAKE_PRIVATE, 1) = 0 30059 futex(0x7fb314438b54, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x7fb314438b50, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1} 30086 <... futex resumed> ) = 0 30059 <... futex resumed> ) = 1 30086 futex(0x7fb314438b28, FUTEX_WAIT_PRIVATE, 2, NULL 30059 futex(0x7fb314438b28, FUTEX_WAKE_PRIVATE, 1 30086 <... futex resumed> ) = -1 EAGAIN (Resource temporarily unavailable) 30059 <... futex resumed> ) = 0 30086 futex(0x7fb314438b28, FUTEX_WAKE_PRIVATE, 1 30059 rt_sigaction(SIGQUIT, {0x7fb31a1210b0, ~[RTMIN RT_1], SA_RESTORER|SA_RESTART|SA_SIGINFO, 0x7fb31aeeacb0}, 30086 <... futex resumed> ) = 0 30059 <... rt_sigaction resumed> {SIG_DFL, [], 0}, 8) = 0 30086 mmap(NULL, 134217728, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x7fb278000000 30086 munmap(0x7fb27c000000, 67108864 30059 mprotect(0x7fb31443a000, 4096, PROT_READ|PROT_WRITE 30086 <... munmap resumed> ) = 0 30059 <... mprotect resumed> ) = 0 30086 mprotect(0x7fb278000000, 135168, PROT_READ|PROT_WRITE 30059 mprotect(0x7fb31443b000, 4096, PROT_READ|PROT_WRITE 30086 <... mprotect resumed> ) = 0 30059 <... mprotect resumed> ) = 0 30086 sched_getaffinity(30086, 32, 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0 30086 <... sched_getaffinity resumed> {ffffffff, 0, 0, 0}) = 32 30059 <... mmap resumed> ) = 0x7fb28f040000 30086 sched_getaffinity(30086, 32, 30059 mprotect(0x7fb28f040000, 4096, PROT_NONE 30086 <... sched_getaffinity resumed> {ffffffff, 0, 0, 0}) = 32 30059 <... mprotect resumed> ) = 0 30086 mmap(0x7fb28f141000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0 30059 clone( 30086 <... mmap resumed> ) = 0x7fb28f141000 30086 mprotect(0x7fb28f141000, 12288, PROT_NONE 30059 <... clone resumed> child_stack=0x7fb28f13fff0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7fb28f1409d0, tls=0x7fb28f140700, child_tidptr=0x7fb28f1409d0) = 30087 30086 <... mprotect resumed> ) = 0 30087 set_robust_list(0x7fb28f1409e0, 0x18 30086 futex(0x7fb31a6d0f00, FUTEX_WAIT_PRIVATE, 0, NULL 30087 <... set_robust_list resumed> ) = 0 30059 futex(0x7fb314009354, FUTEX_WAIT_PRIVATE, 57, NULL 30087 gettid() = 30087 30087 rt_sigprocmask(SIG_BLOCK, NULL, [QUIT], 8) = 0 30087 rt_sigprocmask(SIG_UNBLOCK, [HUP INT ILL BUS FPE SEGV USR2 TERM], NULL, 8) = 0 30087 rt_sigprocmask(SIG_BLOCK, [QUIT], NULL, 8) = 0 30087 futex(0x7fb314009354, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x7fb314009350, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1}) = 1 30059 <... futex resumed> ) = 0 30087 futex(0x7fb31443af54, FUTEX_WAIT_PRIVATE, 1, NULL 30059 futex(0x7fb314009328, FUTEX_WAKE_PRIVATE, 1) = 0 30059 futex(0x7fb31443af54, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x7fb31443af50, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1} 30087 <... futex resumed> ) = 0 30059 <... futex resumed> ) = 1 30087 futex(0x7fb31443af28, FUTEX_WAIT_PRIVATE, 2, NULL 30059 futex(0x7fb31443af28, FUTEX_WAKE_PRIVATE, 1 30087 <... futex resumed> ) = -1 EAGAIN (Resource temporarily unavailable) 30059 <... futex resumed> ) = 0 30087 futex(0x7fb31443af28, FUTEX_WAKE_PRIVATE, 1 30059 sched_yield( 30087 <... futex resumed> ) = 0 30059 <... sched_yield resumed> ) = 0 30087 mmap(0x7fb27c000000, 67108864, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0 30059 mprotect(0x7fb31443c000, 4096, PROT_READ|PROT_WRITE 30087 <... mmap resumed> ) = 0x7fb27c000000 30059 <... mprotect resumed> ) = 0 30087 mprotect(0x7fb27c000000, 135168, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb31443d000, 4096, PROT_READ|PROT_WRITE 30087 sched_getaffinity(30087, 32, 30059 <... mprotect resumed> ) = 0 30087 <... sched_getaffinity resumed> {ffffffff, 0, 0, 0}) = 32 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0 30087 sched_getaffinity(30087, 32, {ffffffff, 0, 0, 0}) = 32 30059 <... mmap resumed> ) = 0x7fb28ef3f000 30087 mmap(0x7fb28f040000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0 30059 mprotect(0x7fb31443e000, 4096, PROT_READ|PROT_WRITE 30087 <... mmap resumed> ) = 0x7fb28f040000 30059 <... mprotect resumed> ) = 0 30087 mprotect(0x7fb28f040000, 12288, PROT_NONE 30059 mprotect(0x7fb28ef3f000, 4096, PROT_NONE 30087 <... mprotect resumed> ) = 0 30059 <... mprotect resumed> ) = 0 30059 clone(child_stack=0x7fb28f03eff0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7fb28f03f9d0, tls=0x7fb28f03f700, child_tidptr=0x7fb28f03f9d0) = 30088 30059 futex(0x7fb314009354, FUTEX_WAIT_PRIVATE, 59, NULL 30088 set_robust_list(0x7fb28f03f9e0, 0x18) = 0 30088 gettid() = 30088 30088 rt_sigprocmask(SIG_BLOCK, NULL, [QUIT], 8) = 0 30088 rt_sigprocmask(SIG_UNBLOCK, [HUP INT ILL BUS FPE SEGV USR2 TERM], NULL, 8) = 0 30088 rt_sigprocmask(SIG_BLOCK, [QUIT], NULL, 8) = 0 30088 futex(0x7fb314009354, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x7fb314009350, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1}) = 1 30059 <... futex resumed> ) = 0 30088 futex(0x7fb314009328, FUTEX_WAKE_PRIVATE, 1 30059 futex(0x7fb314009328, FUTEX_WAIT_PRIVATE, 2, NULL 30088 <... futex resumed> ) = 0 30059 <... futex resumed> ) = -1 EAGAIN (Resource temporarily unavailable) 30088 futex(0x7fb31443d954, FUTEX_WAIT_PRIVATE, 1, NULL 30059 futex(0x7fb314009328, FUTEX_WAKE_PRIVATE, 1) = 0 30087 futex(0x7fb31443af54, FUTEX_WAIT_PRIVATE, 3, NULL 30059 futex(0x7fb31443d954, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x7fb31443d950, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1} 30088 <... futex resumed> ) = 0 30059 <... futex resumed> ) = 1 30088 futex(0x7fb31443d928, FUTEX_WAKE_PRIVATE, 1 30059 sched_yield( 30088 <... futex resumed> ) = 0 30059 <... sched_yield resumed> ) = 0 30088 mmap(NULL, 134217728, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x7fb270000000 30088 munmap(0x7fb274000000, 67108864) = 0 30059 mprotect(0x7fb31443f000, 4096, PROT_READ|PROT_WRITE 30088 mprotect(0x7fb270000000, 135168, PROT_READ|PROT_WRITE 30059 <... mprotect resumed> ) = 0 30088 <... mprotect resumed> ) = 0 30059 mprotect(0x7fb314440000, 4096, PROT_READ|PROT_WRITE 30088 sched_getaffinity(30088, 32, 30059 <... mprotect resumed> ) = 0 30088 <... sched_getaffinity resumed> {ffffffff, 0, 0, 0}) = 32 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0 30088 sched_getaffinity(30088, 32, 30059 <... mmap resumed> ) = 0x7fb28ee3e000 30088 <... sched_getaffinity resumed> {ffffffff, 0, 0, 0}) = 32 30059 clone( 30088 mmap(0x7fb28ef3f000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0 30059 <... clone resumed> child_stack=0x7fb28ef3dff0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7fb28ef3e9d0, tls=0x7fb28ef3e700, child_tidptr=0x7fb28ef3e9d0) = 30089 30088 <... mmap resumed> ) = 0x7fb28ef3f000 30089 set_robust_list(0x7fb28ef3e9e0, 0x18 30088 mprotect(0x7fb28ef3f000, 12288, PROT_NONE 30089 <... set_robust_list resumed> ) = 0 30088 <... mprotect resumed> ) = 0 30089 gettid( 30088 futex(0x7fb31443d954, FUTEX_WAIT_PRIVATE, 3, NULL 30089 <... gettid resumed> ) = 30089 30059 futex(0x7fb314009354, FUTEX_WAIT_PRIVATE, 61, NULL 30089 rt_sigprocmask(SIG_BLOCK, NULL, [QUIT], 8) = 0 30089 rt_sigprocmask(SIG_UNBLOCK, [HUP INT ILL BUS FPE SEGV USR2 TERM], NULL, 8) = 0 30089 rt_sigprocmask(SIG_BLOCK, [QUIT], NULL, 8) = 0 30089 futex(0x7fb314009354, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x7fb314009350, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1}) = 1 30059 <... futex resumed> ) = 0 30089 futex(0x7fb31443fe54, FUTEX_WAIT_PRIVATE, 1, NULL 30059 futex(0x7fb314009328, FUTEX_WAKE_PRIVATE, 1) = 0 30059 futex(0x7fb31443fe54, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x7fb31443fe50, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1} 30089 <... futex resumed> ) = 0 30059 <... futex resumed> ) = 1 30089 futex(0x7fb31443fe28, FUTEX_WAIT_PRIVATE, 2, NULL 30059 futex(0x7fb31443fe28, FUTEX_WAKE_PRIVATE, 1 30089 <... futex resumed> ) = -1 EAGAIN (Resource temporarily unavailable) 30059 <... futex resumed> ) = 0 30089 futex(0x7fb31443fe28, FUTEX_WAKE_PRIVATE, 1) = 0 30089 mmap(0x7fb274000000, 67108864, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x7fb274000000 30089 mprotect(0x7fb274000000, 135168, PROT_READ|PROT_WRITE) = 0 30089 sched_getaffinity(30089, 32, 30059 mprotect(0x7fb314441000, 4096, PROT_READ|PROT_WRITE 30089 <... sched_getaffinity resumed> {ffffffff, 0, 0, 0}) = 32 30059 <... mprotect resumed> ) = 0 30089 sched_getaffinity(30089, 32, {ffffffff, 0, 0, 0}) = 32 30059 mprotect(0x7fb314442000, 32768, PROT_READ|PROT_WRITE 30089 mmap(0x7fb28ee3e000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0 30059 <... mprotect resumed> ) = 0 30089 <... mmap resumed> ) = 0x7fb28ee3e000 30089 mprotect(0x7fb28ee3e000, 12288, PROT_NONE) = 0 30089 futex(0x7fb31443fe54, FUTEX_WAIT_PRIVATE, 3, NULL 30059 stat("/software/jdk1.7.0_25/jre/lib/management/usagetracker.properties", 0x7fb31b2f8650) = -1 ENOENT (No such file or directory) 30059 mprotect(0x7fb31444a000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7fb28ed3d000 30059 mprotect(0x7fb28ed3d000, 4096, PROT_NONE) = 0 30059 clone(child_stack=0x7fb28ee3cff0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7fb28ee3d9d0, tls=0x7fb28ee3d700, child_tidptr=0x7fb28ee3d9d0) = 30090 30059 futex(0x7fb314009354, FUTEX_WAIT_PRIVATE, 63, NULL 30090 set_robust_list(0x7fb28ee3d9e0, 0x18) = 0 30090 gettid() = 30090 30090 rt_sigprocmask(SIG_BLOCK, NULL, [QUIT], 8) = 0 30090 rt_sigprocmask(SIG_UNBLOCK, [HUP INT ILL BUS FPE SEGV USR2 TERM], NULL, 8) = 0 30090 rt_sigprocmask(SIG_BLOCK, [QUIT], NULL, 8) = 0 30090 futex(0x7fb314009354, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x7fb314009350, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1}) = 1 30059 <... futex resumed> ) = 0 30090 futex(0x7fb31444a954, FUTEX_WAIT_PRIVATE, 1, NULL 30059 futex(0x7fb314009328, FUTEX_WAKE_PRIVATE, 1) = 0 30059 futex(0x7fb31444a954, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x7fb31444a950, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1}) = 1 30090 <... futex resumed> ) = 0 30090 futex(0x7fb31444a928, FUTEX_WAIT_PRIVATE, 2, NULL 30059 futex(0x7fb31444a928, FUTEX_WAKE_PRIVATE, 1 30090 <... futex resumed> ) = -1 EAGAIN (Resource temporarily unavailable) 30059 <... futex resumed> ) = 0 30090 futex(0x7fb31444a928, FUTEX_WAKE_PRIVATE, 1) = 0 30059 lseek(4, 42402312, SEEK_SET 30090 mmap(NULL, 134217728, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0 30059 <... lseek resumed> ) = 42402312 30090 <... mmap resumed> ) = 0x7fb268000000 30059 read(4, 30090 munmap(0x7fb26c000000, 67108864 30059 <... read resumed> "PK\3\4\n\0\0\0\0\0v\246\305B\211\355i\244Y4\0\0Y4\0\0!\0\0\0", 30) = 30 30090 <... munmap resumed> ) = 0 30059 lseek(4, 42402375, SEEK_SET 30090 mprotect(0x7fb268000000, 135168, PROT_READ|PROT_WRITE 30059 <... lseek resumed> ) = 42402375 30090 <... mprotect resumed> ) = 0 30059 read(4, 30090 sched_getaffinity(30090, 32, 30059 <... read resumed> "\312\376\272\276\0\0\0003\2z\10\0C\10\0D\10\0E\10\0F\10\0G\10\0H\10\0I\10\0J\10\0K\10\0L\10\0M\10\0N\10\0O\10\0P\10\0Q\10\0g\10\0h\10\0i\10\0j\10\0k\10\0l\10\0m\10\0n\10\0o\10\0u\10\0y\10\0z\10\0\204\10\0\206\10\0\207\10\0\211\10\0\216\10\0\220\10\0\227\10\0\230\10\0\236\10\0\245\10\0\322\10\0\323\10\0\324\10\0\325\10\0\326\10\0\327\10\0\330\10\0\331\10\0\332\10\0\333\10\0\334\10\0\335\10\0\336\10\0\337\10\0\340\10\0\341\10\0\342\10\0\343\10\1\f\10\1\16\10\1\17\10\1\26\10\1\31\10\1&\10\1)\10\1.\10\0010\10\0011\10\1?\1\0\0\1\0\2\n\n\1\0\4 \1\0\10 \1\0\36 Ergonomics Machine Class: \1\0 Max. Heap Size (Estimated): \1\0\24 Max. Heap Size: \1\0\24 Min. Heap Size: \1\0\20 Stack Size: \1\0\16 Using VM: \1\0\30 available locales = \1\0\35 default display locale = \1\0\34 default format locale = \1\0\25 default locale = \1\0\3 = \1\0\7$VALUES\1\0\3()I\1\0\3()J\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4()[B\1\0\26(I)Ljava/lang/Integer;\1\0\4(I)V\1\0\4(I)Z\1\0\25(Ljava/lang/Object;)V\1\0\25(Ljava/lang/Object;)Z\1\0%(Ljava/lang/String;)Ljava/lang/Class;\1\0&(Ljava/lang/String;)Ljava/lang/String;\1\0\25(Ljava/lang/String;)V\1\0\25(Ljava/lang/String;)Z\1\0'(Ljava/lang/String;Ljava/lang/String;)V\1\0@(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;\1\0\30(Ljava/lang/Throwable;)V\1\0\4(Z)V\1\0\5([B)V\1\0\2,\n\1\0\2, \1\0\1.\1\0\3.\n\n\1\0\5.dirs\1\0\5.path\1\0\0060x%02X\1\0\1:\1\0\25: Unknown lau"..., 13401) = 13401 30090 <... sched_getaffinity resumed> {ffffffff, 0, 0, 0}) = 32 30090 sched_getaffinity(30090, 32, 30059 mprotect(0x7fb31444b000, 4096, PROT_READ|PROT_WRITE 30090 <... sched_getaffinity resumed> {ffffffff, 0, 0, 0}) = 32 30059 <... mprotect resumed> ) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091214, 484688000}, ffffffff 30059 mprotect(0x7fb31444c000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 59187617, SEEK_SET) = 59187617 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\204>\340pJ\n\0\0J\n\0\0\24\0\0\0", 30) = 30 30059 lseek(4, 59187667, SEEK_SET) = 59187667 30059 read(4, "\312\376\272\276\0\0\0003\0w\10\0\f\10\0\23\10\0\24\10\0\31\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\25(Ljava/lang/Object;)I\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)V\1\0\6(TE;)I\1\0\1.\1\0\6\1\0\4Code\1\0\nExceptions\1\0\1I\1\0\17LineNumberTable\1\0\22Ljava/lang/String;\1\0\fName is null\1\0\21No enum constant \1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\6append\1\0\26can't deserialize enum\1\0\5clone\1\0\tcompareTo\1\0\25enumConstantDirectory\1\0\6equals\1\0\10finalize\1\0\3get\1\0\20getCanonicalName\1\0\10getClass\1\0\21getDeclaringClass\1\0\rgetSuperclass\1\0\10hashCode\1\0\23java/io/IOException\1\0\36java/io/InvalidObjectException\1\0\35java/io/ObjectStreamException\1\0\24java/io/Serializable\1\0\17java/lang/Class\1\0\34java/lang/ClassCastException\1\0 java/lang/ClassNotFoundException\1\0$java/lang/CloneNotSupportedException\1\0\24java/lang/Comparable\1\0\16java/lang/Enum\1\0\"java/lang/IllegalArgumentException\1\0\36java/lang/NullPointerException\1\0\20java/lang/Object\1\0\27java/lang/StringBuilder\1\0\rjava/util/Map\1\0\4name\1\0\7ordinal\1\0\nreadObject\1\0\20readObjectNoData\1\0\10toString\1\0\7valueOf\7\0%\7\0&\7\0'\7\0(\7\0)\7\0*\7\0+\7\0,\7\0-\7\0.\7\0/\7\0000\7\0001\7\0002\7\0003\1\0F\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\7ENGLISH\1\0\nExceptions\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\22Ljava/lang/String;\1\0\22Ljava/util/Locale;\1\0\rMANIFEST_NAME\1\0\24META-INF/MANIFEST.MF\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\1Z\1\0\2[B\1\0\2[C\1\0\2[I\1\0\23[Ljava/lang/String;\1\0\naccess$000\1\0\naccess$100\1\0\raddSuppressed\1\0\6append\1\0\nbeginEntry\1\0\fcharsets.jar\1\0\5close\1\0\35computedHasClassPathAttribute\1\0\22corrupted jar file\1\0\5debug\1\0\tdnsns.jar\1\0\fdoPrivileged\1\0\17done with meta!\1\0\fdoneWithMeta\1\0\17eagerValidation\1\0\10endsWith\1\0\24ensureInitialization\1\0\7entries\1\0\10entries2\1\0\nentryNames\1\0\6equals\1\0\3get\1\0\10getBytes\1\0\16getCodeSigners\1\0\rgetCodeSource\1\0\16getCodeSources\1\0\10getEntry\1\0\16getInputStream\1\0\vgetJarEntry\1\0\vgetManEntry\1\0\vg"..., 10316) = 10316 30059 mprotect(0x7fb31444f000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 56822956, SEEK_SET) = 56822956 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B^\350\211\273N(\0\0N(\0\0\33\0\0\0", 30) = 30 30059 lseek(4, 56823013, SEEK_SET) = 56823013 30059 read(4, "\312\376\272\276\0\0\0003\1\345\10\0(\10\0006\10\0009\10\0N\10\0\\\10\0\202\10\0\255\10\0\273\10\0\304\10\0\307\1\0\3()I\1\0\3()J\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\25(I)Ljava/lang/String;\1\0\4(J)I\1\0\4(J)J\1\0\4(J)V\1\0\4(J)Z\1\0\5(J)[B\1\0\5(JI)J\1\0\6(JI)[B\1\0\5(JJ)V\1\0\n(JJJ[BII)I\1\0\7(J[BZ)J\1\0\25(Ljava/lang/Object;)Z\1\0&(Ljava/lang/String;)Ljava/lang/String;\1\0\25(Ljava/lang/String;)V\1\0\25(Ljava/lang/String;)Z\1\0\4(Z)V\1\0\10\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\10DEFLATED\1\0\5Entry\1\0\nExceptions\1\0\1I\1\0\20Illegal mode: 0x\1\0\fInnerClasses\1\0\1J\1\0\17JZENTRY_COMMENT\1\0\rJZENTRY_EXTRA\1\0\fJZENTRY_NAME\1\0\17LineNumberTable\1\0\22Ljava/lang/String;\1\0\vOPEN_DELETE\1\0\tOPEN_READ\1\0\6STORED\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\36The object is not initialized.\1\0\5UTF_8\1\0\1Z\1\0\16ZipFile closed\1\0\2[B\1\0\naccess$000\1\0\naccess$100\1\0\vaccess$1000\1\0\vaccess$1100\1\0\vaccess$1200\1\0\vaccess$1300\1\0\vaccess$1400\1\0\vaccess$1500\1\0\naccess$200\1\0\naccess$300\1\0\naccess$400\1\0\naccess$500\1\0\naccess$600\1\0\naccess$700\1\0\naccess$800\1\0\naccess$900\1\0\3add\1\0\22addElapsedTimeFrom\1\0\6append\1\0\17charset is null\1\0\vcheckDelete\1\0\tcheckRead\1\0\5clear\1\0\5close\1\0\16closeRequested\1\0\7comment"..., 10318) = 10318 30059 mprotect(0x7fb314450000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb314451000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 56821615, SEEK_SET) = 56821615 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B9\360z&\377\4\0\0\377\4\0\0 \0\0\0", 30) = 30 30059 lseek(4, 56821677, SEEK_SET) = 56821677 30059 read(4, "\312\376\272\276\0\0\0003\0N\1\0\6CENATT\1\0\6CENATX\1\0\6CENCOM\1\0\6CENCRC\1\0\6CENDSK\1\0\6CENEXT\1\0\6CENFLG\1\0\6CENHDR\1\0\6CENHOW\1\0\6CENLEN\1\0\6CENNAM\1\0\6CENOFF\1\0\6CENSIG\1\0\6CENSIZ\1\0\6CENTIM\1\0\6CENVEM\1\0\6CENVER\1\0\rConstantValue\1\0\6ENDCOM\1\0\6ENDHDR\1\0\6ENDOFF\1\0\6ENDSIG\1\0\6ENDSIZ\1\0\6ENDSUB\1\0\6ENDTOT\1\0\6EXTCRC\1\0\6EXTHDR\1\0\6EXTLEN\1\0\6EXTSIG\1\0\6EXTSIZ\1\0\1I\1\0\1J\1\0\6LOCCRC\1\0\6LOCEXT\1\0\6LOCFLG\1\0\6LOCHDR\1\0\6LOCHOW\1\0\6LOCLEN\1\0\6LOCNAM\1\0\6LOCSIG\1\0\6LOCSIZ\1\0\6LOCTIM\1\0\6LOCVER\1\0\nSourceFile\1\0\20java/lang/Object\1\0\32java/util/zip/ZipConstants\3\0\0\0\4\3\0\0\0\6\3\0\0\0\10\3\0\0\0\n\3\0\0\0\f\3\0\0\0\16\3\0\0\0\20\3\0\0\0\22\3\0\0\0\24\3\0\0\0\26\3\0\0\0\30\3\0\0\0\32\3\0\0\0\34\3\0\0\0\36\3\0\0\0 \3\0\0\0\"\3\0\0\0$\3\0\0\0&\3\0\0\0*\3\0\0\0.\5\0\0\0\0\2\1KP\5\0\0\0\0\4\3KP\5\0\0\0\0\6\5KP\5\0\0\0\0\10\7KP\7\0-\7\0.\1\0\21ZipConstants.java\6\0\0L\0K\0\0\0(\0\31\0(\0 \0\1\0\22\0\0\0\2\0E\0\31\0\35\0 \0\1\0\22\0\0\0\2\0I\0\31\0\r\0 \0\1\0\22\0\0\0\2\0C\0\31\0\26\0 \0\1\0\22\0\0\0\2\0G\0\31\0$\0\37\0\1\0\22\0\0\0\2\0<\0\31\0\33\0\37\0\1\0\22\0\0\0\2\0005\0\31\0\10\0\37\0\1\0\22\0\0\0\2\0B\0\31\0\24\0\37\0\1\0\22\0\0\0\2\0008\0\31\0+\0\37\0\1\0\22\0\0\0\2\0/\0\31\0#\0\37\0\1\0\22\0\0\0\2\0000\0\31\0%\0\37\0\1\0\22\0\0\0\2\0001\0\31\0*\0\37\0\1\0\22\0\0\0\2\0002\0\31\0!\0\37\0\1\0\22\0\0\0\2\0004\0\31\0)\0\37\0\1\0\22\0\0\0\2\0006\0\31\0&\0\37\0\1\0\22\0\0\0\2\0008\0\31\0'\0\37\0\1\0\22\0\0\0\2\0:\0\31\0\"\0\37\0\1\0\22\0\0\0\2\0;\0\31\0\32\0\37\0\1\0\22\0\0\0\2\0/\0\31\0\36\0\37\0\1\0\22\0\0\0\2\0001\0\31\0\34\0\37\0\1\0\22\0\0\0\2\0003\0\31\0\20\0\37\0\1\0\22\0\0\0\2\0/\0\31\0\21\0\37\0\1\0\22\0\0\0\2\0000\0\31\0\7\0\37\0\1\0\22\0\0\0\2\0001\0\31\0\t\0"..., 1279) = 1279 30059 lseek(4, 55412164, SEEK_SET) = 55412164 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\270\21h\335\276\1\0\0\276\1\0\0\35\0\0\0", 30) = 30 30059 lseek(4, 55412223, SEEK_SET) = 55412223 30059 read(4, "\312\376\272\276\0\0\0003\0\30\1\0\3()V\1\0\6\1\0\4Code\1\0\17EnclosingMethod\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\nSourceFile\1\0\vaccess$1500\1\0\20java/lang/Object\1\0\25java/util/zip/ZipFile\1\0\27java/util/zip/ZipFile$2\1\0\23startsWithLocHeader\1\0\36sun/misc/JavaUtilZipFileAccess\7\0\t\7\0\n\7\0\v\7\0\r\1\0\32(Ljava/util/zip/ZipFile;)Z\f\0\2\0\1\f\0\10\0\22\n\0\16\0\23\n\0\17\0\24\1\0\fZipFile.java\0000\0\20\0\16\0\1\0\21\0\0\0\2\0\0\0\2\0\1\0\1\0\3\0\0\0\35\0\1\0\1\0\0\0\5*\267\0\25\261\0\0\0\1\0\6\0\0\0\6\0\1\0\0\2\350\0\1\0\f\0\22\0\1\0\3\0\0\0\35\0\1\0\2\0\0\0\5+\270\0\26\254\0\0\0\1\0\6\0\0\0\6\0\1\0\0\2\352\0\3\0\7\0\0\0\2\0\27\0\4\0\0\0\4\0\17\0\0\0\5\0\0\0\n\0\1\0\20\0\0\0\0\0\10", 446) = 446 30059 lseek(4, 43225936, SEEK_SET) = 43225936 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\336\241\366\301\277\0\0\0\277\0\0\0$\0\0\0", 30) = 30 30059 lseek(4, 43226002, SEEK_SET) = 43226002 30059 read(4, "\312\376\272\276\0\0\0003\0\t\1\0\nSourceFile\1\0\20java/lang/Object\1\0\23startsWithLocHeader\1\0\36sun/misc/JavaUtilZipFileAccess\7\0\2\7\0\4\1\0\32(Ljava/util/zip/ZipFile;)Z\1\0\32JavaUtilZipFileAccess.java\6\1\0\6\0\5\0\0\0\0\0\1\4\1\0\3\0\7\0\0\0\1\0\1\0\0\0\2\0\10", 191) = 191 30059 lseek(4, 56819855, SEEK_SET) = 56819855 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B\34l*\371\231\6\0\0\231\6\0\0)\0\0\0", 30) = 30 30059 lseek(4, 56819926, SEEK_SET) = 56819926 30059 read(4, "\312\376\272\276\0\0\0003\0;\1\0\3()V\1\0\3()Z\1\0\4(Z)V\1\0\6\1\0\4Code\1\0\nExceptions\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\10entries2\1\0\nentryNames\1\0\rgetCodeSource\1\0\16getCodeSources\1\0\22getManifestDigests\1\0\25hasClassPathAttribute\1\0\34jarFileHasClassPathAttribute\1\0\23java/io/IOException\1\0\20java/lang/Object\1\0\25java/util/jar/JarFile\1\0#java/util/jar/JavaUtilJarAccessImpl\1\0\22setEagerValidation\1\0\32sun/misc/JavaUtilJarAccess\7\0\21\7\0\22\7\0\23\7\0\24\7\0\26\1\0\31()Ljava/util/Enumeration;\1\0\22()Ljava/util/List;\1\0\32(Ljava/util/jar/JarFile;)Z\1\0\33(Ljava/util/jar/JarFile;Z)V\1\0+(Ljava/net/URL;)[Ljava/security/CodeSource;\1\0004([Ljava/security/CodeSource;)Ljava/util/Enumeration;\1\0000(Ljava/util/jar/JarFile;)Ljava/util/Enumeration;\1\0)(Ljava/util/jar/JarFile;)Ljava/util/List;\1\0<(Ljava/net/URL;Ljava/lang/String;)Ljava/security/CodeSource;\1\0B(Ljava/util/jar/JarFile;Ljava/net/URL;)[Ljava/security/CodeSource;\1\0K(Ljava/util/jar/JarFile;[Ljava/security/CodeSource;)Ljava/util/Enumeration;\1\0J(Ljava/util/jar/JarFile;)Ljava/util/Enumeration;\1\0_(Lja"..., 1689) = 1689 30059 lseek(4, 56818845, SEEK_SET) = 56818845 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B^6b%\264\3\0\0\264\3\0\0 \0\0\0", 30) = 30 30059 lseek(4, 56818907, SEEK_SET) = 56818907 30059 read(4, "\312\376\272\276\0\0\0003\0\33\1\0\nExceptions\1\0\tSignature\1\0\nSourceFile\1\0\10entries2\1\0\nentryNames\1\0\rgetCodeSource\1\0\16getCodeSources\1\0\22getManifestDigests\1\0\34jarFileHasClassPathAttribute\1\0\23java/io/IOException\1\0\20java/lang/Object\1\0\22setEagerValidation\1\0\32sun/misc/JavaUtilJarAccess\7\0\n\7\0\v\7\0\r\1\0\32(Ljava/util/jar/JarFile;)Z\1\0\33(Ljava/util/jar/JarFile;Z)V\1\0000(Ljava/util/jar/JarFile;)Ljava/util/Enumeration;\1\0)(Ljava/util/jar/JarFile;)Ljava/util/List;\1\0B(Ljava/util/jar/JarFile;Ljava/net/URL;)[Ljava/security/CodeSource;\1\0K(Ljava/util/jar/JarFile;[Ljava/security/CodeSource;)Ljava/util/Enumeration;\1\0J(Ljava/util/jar/JarFile;)Ljava/util/Enumeration;\1\0_(Ljava/util/jar/JarFile;[Ljava/security/CodeSource;)Ljava/util/Enumeration;\1\0S(Ljava/util/jar/JarFile;Ljava/net/URL;Ljava/lang/String;)Ljava/security/CodeSource;\1\0\26JavaUtilJarAccess.java\6\1\0\20\0\17\0\0\0\0\0\7\4\1\0\t\0\21\0\1\0\1\0\0\0\4\0\1\0\16\4\1\0\7\0\25\0\0\4\1\0\6\0\31\0\0\4\1\0\5\0\26\0\1\0\2\0\0\0\2\0\30\4\1\0\4\0\23\0\1\0\2\0\0\0\2\0\27\4\1\0\f\0\22\0\0\4\1\0\10\0\24\0\0\0\1\0\3\0\0\0\2\0\32", 948) = 948 30059 lseek(4, 28835898, SEEK_SET) = 28835898 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B\212\214S\337[\3\0\0[\3\0\0'\0\0\0", 30) = 30 30059 lseek(4, 28835967, SEEK_SET) = 28835967 30059 read(4, "\312\376\272\276\0\0\0003\0:\10\0\r\10\0\20\10\0\22\10\0\24\10\0\25\10\0\26\10\0\27\1\0\3()V\1\0\25(Ljava/lang/Object;)V\1\0\10\1\0\6\1\0\4Code\1\0\nISO-8859-1\1\0\nISO_8859_1\1\0\17LineNumberTable\1\0007No java.nio.charset.StandardCharsets instances for you!\1\0\nSourceFile\1\0\10US-ASCII\1\0\10US_ASCII\1\0\6UTF-16\1\0\10UTF-16BE\1\0\10UTF-16LE\1\0\5UTF-8\1\0\6UTF_16\1\0\10UTF_16BE\1\0\10UTF_16LE\1\0\5UTF_8\1\0\7forName\1\0\30java/lang/AssertionError\1\0\20java/lang/Object\1\0\30java/nio/charset/Charset\1\0!java/nio/charset/StandardCharsets\7\0\35\7\0\36\7\0\37\7\0 \1\0\32Ljava/nio/charset/Charset;\1\0.(Ljava/lang/String;)Ljava/nio/charset/Charset;\f\0\16\0%\f\0\23\0%\f\0\30\0%\f\0\31\0%\f\0\32\0%\f\0\33\0%\f\0\v\0\10\f\0\v\0\t\f\0\34\0&\t\0$\0'\t\0$\0(\t\0$\0)\t\0$\0*\t\0$\0+\t\0$\0,\n\0!\0.\n\0\"\0-\n\0#\0/\1\0\25StandardCharsets.java\0001\0$\0\"\0\0\0\6\0\31\0\23\0%\0\0\0\31\0\16\0%\0\0\0\31\0\33\0%\0\0\0\31\0\31\0%\0\0\0\31\0\32\0%\0\0\0\31\0\30\0%\0\0\0\2\0\2\0\v\0\10\0\1\0\f\0\0\0*\0\3\0\1\0\0\0\16*\267\0007\273\0!Y\22\2\267\0006\277\0\0\0\1\0\17\0\0\0\n\0\2\0\0\0%\0\4\0&\0\10\0\n\0\10\0\1\0\f\0\0\0]\0\1\0\0\0\0\0001\22\3\270\0008\263\0001\22\1\270\0008\263\0000\22\7\270\0008\263\0005\22\5\270\0008\263\0003\22\6\270\0008\263\0004\22\4\270\0008\263\0002\261\0\0\0\1\0\17\0\0\0\32\0\6\0\0\0,\0\10\0000\0\20\0004\0\30\0008\0 \0<\0(\0A\0\1\0\21\0\0\0\2\0009", 859) = 859 30059 lseek(4, 57450618, SEEK_SET) = 57450618 30059 read(4, "PK\3\4\n\0\0\0\0\0009\246\305B\317\306\367wH\4\0\0H\4\0\0\33\0\0\0", 30) = 30 30059 lseek(4, 57450675, SEEK_SET) = 57450675 30059 read(4, "\312\376\272\276\0\0\0003\0002\10\0\7\10\0\10\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\6\1\0\4Code\1\0\nISO-8859-1\1\0\tISO8859_1\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\nSourceFile\1\0\rStackMapTable\1\0\23[Ljava/lang/String;\1\0\22aliases_ISO_8859_1\1\0\10contains\1\0\16historicalName\1\0\30java/nio/charset/Charset\1\0\nnewDecoder\1\0\nnewEncoder\1\0#sun/nio/cs/HistoricallyNamedCharset\1\0\25sun/nio/cs/ISO_8859_1\1\0\27sun/nio/cs/ISO_8859_1$1\1\0\35sun/nio/cs/ISO_8859_1$Decoder\1\0\35sun/nio/cs/ISO_8859_1$Encoder\1\0\33sun/nio/cs/StandardCharsets\1\0\23sun/nio/cs/US_ASCII\7\0\21\7\0\24\7\0\25\7\0\26\7\0\27\7\0\30\7\0\31\7\0\32\1\0\35(Ljava/nio/charset/Charset;)Z\1\0#()Ljava/nio/charset/CharsetDecoder;\1\0#()Ljava/nio/charset/CharsetEncoder;\1\0((Ljava/lang/String;[Ljava/lang/String;)V\1\0006(Ljava/nio/charset/Charset;Lsun/nio/cs/ISO_8859_1$1;)V\f\0\16\0\r\f\0\5\0&\f\0\5\0'\t\0!\0(\n\0\33\0)\n\0\37\0*\n\0 \0*\1\0\7Decoder\1\0\7Encoder\1\0\17ISO_8859_1.java\0 \0\35\0\33\0\1\0\34\0\0\0\5\0\1\0\5\0\4\0\1\0\6\0\0\0&\0\3\0\1\0\0\0\n*\22\1\262\0+\267\0,\261\0\0\0\1\0\n\0\0\0\n\0\2\0\0\0*\0\t\0+\0\1\0\20\0\3\0\1\0\6\0\0\0\33\0\1\0\1\0\0\0\3\22\2\260\0\0\0\1\0\n\0\0\0\6\0\1\0\0\0.\0\1\0\17\0#\0\1\0\6\0\0\0008\0\1\0\2\0\0\0\24+\301\0\"\232\0\n+\301\0\35\231\0\7\4\247\0\4\3\254\0\0\0\2\0\f\0\0\0\6\0\3\16\3@\1\0\n\0\0\0\6\0\1\0\0\0002\0\1\0\22\0$\0\1\0\6\0\0\0\"\0\4\0\1\0\0\0\n\273\0\37Y*\1\267\0-\260\0\0\0\1\0\n\0\0\0\6"..., 1096) = 1096 30059 lseek(4, 57499034, SEEK_SET) = 57499034 30059 read(4, "PK\3\4\n\0\0\0\0\0009\246\305B0\2648\2360\4\0\0000\4\0\0\26\0\0\0", 30) = 30 30059 lseek(4, 57499086, SEEK_SET) = 57499086 30059 read(4, "\312\376\272\276\0\0\0003\0007\10\0\v\10\0\f\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\6\1\0\4Code\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\nSourceFile\1\0\5UTF-8\1\0\4UTF8\1\0\23[Ljava/lang/String;\1\0\raliases_UTF_8\1\0\varrayOffset\1\0\16historicalName\1\0\17java/nio/Buffer\1\0\nnewDecoder\1\0\nnewEncoder\1\0\10position\1\0\33sun/nio/cs/StandardCharsets\1\0\20sun/nio/cs/UTF_8\1\0\22sun/nio/cs/UTF_8$1\1\0\30sun/nio/cs/UTF_8$Decoder\1\0\30sun/nio/cs/UTF_8$Encoder\1\0\22sun/nio/cs/Unicode\1\0\17updatePositions\7\0\21\7\0\25\7\0\26\7\0\27\7\0\30\7\0\31\7\0\32\1\0\24(I)Ljava/nio/Buffer;\1\0#()Ljava/nio/charset/CharsetDecoder;\1\0#()Ljava/nio/charset/CharsetEncoder;\1\0((Ljava/lang/String;[Ljava/lang/String;)V\1\0'(Ljava/nio/Buffer;ILjava/nio/Buffer;I)V\1\0001(Ljava/nio/charset/Charset;Lsun/nio/cs/UTF_8$1;)V\f\0\16\0\r\f\0\17\0\3\f\0\24\0#\f\0\6\0&\f\0\6\0(\t\0\35\0)\n\0\34\0*\n\0\34\0+\n\0 \0-\n\0!\0-\n\0\"\0,\1\0\7Decoder\1\0\7Encoder\1\0\nUTF_8.java\0 \0\36\0\"\0\0\0\0\0\5\0\1\0\6\0\5\0\1\0\7\0\0\0&\0\3\0\1\0\0\0\n*\22\1\262\0.\267\0003\261\0\0\0\1\0\t\0\0\0\n\0\2\0\0\0<\0\t\0=\0\1\0\20\0\4\0\1\0\7\0\0\0\33\0\1\0\1\0\0\0\3\22\2\260\0\0\0\1\0\t\0\0\0\6\0\1\0\0\0@\0\1\0\22\0$\0\1\0\7\0\0\0\"\0\4\0\1\0\0\0\n\273\0 Y*\1\267\0001\260\0\0\0\1\0\t\0\0\0\6\0\1\0\0\0D\0\1\0\23\0%\0\1\0\7\0\0\0\"\0\4\0\1\0\0\0\n\273\0!Y*\1\267\0002\260\0\0\0\1\0\t\0\0\0\6\0\1\0\0\0H\0\30\0\33\0'\0\1\0\7\0\0\0007\0\3\0\4\0\0\0\27*\33*\266\0/d\266\0000W,\35,\266\0/"..., 1072) = 1072 30059 lseek(4, 57496953, SEEK_SET) = 57496953 30059 read(4, "PK\3\4\n\0\0\0\0\0009\246\305B\265C\246g\353\7\0\0\353\7\0\0\30\0\0\0", 30) = 30 30059 lseek(4, 57497007, SEEK_SET) = 57497007 30059 read(4, "\312\376\272\276\0\0\0003\0\204\10\0/\10\0000\10\0002\10\0003\10\0004\10\0005\10\0006\10\0007\10\0008\10\0009\10\0:\10\0;\10\0<\10\0=\10\0>\10\0?\10\0@\10\0A\10\0B\10\0C\10\0D\10\0F\10\0I\10\0Z\10\0[\10\0\\\10\0]\10\0^\10\0_\10\0`\10\0a\10\0b\10\0c\10\0d\10\0e\10\0f\10\0g\10\0h\10\0i\10\0j\10\0k\10\0l\10\0m\1\0\24()Ljava/lang/String;\1\0\25(Ljava/lang/Object;)Z\1\0\6\1\0\4Big5\1\0\nBig5-HKSCS\1\0\4Code\1\0\6EUC-JP\1\0\6EUC-KR\1\0\7GB18030\1\0\6GB2312\1\0\3GBK\1\0\vISO-2022-JP\1\0\vISO-2022-KR\1\0\vISO-8859-13\1\0\nISO-8859-2\1\0\nISO-8859-3\1\0\nISO-8859-4\1\0\nISO-8859-5\1\0\nISO-8859-6\1\0\nISO-8859-7\1\0\nISO-8859-8\1\0\nISO-8859-9\1\0\tJIS_X0201\1\0\16JIS_X0212-1990\1\0\6KOI8-R\1\0\17LineNumberTable\1\0\tShift_JIS\1\0\nSourceFile\1\0\rStackMapTable\1\0\7TIS-620\1\0\10contains\1\0\6equals\1\0\20java/lang/String\1\0\30java/nio/charset/Charset\1\0\4name\1\0#sun/nio/cs/HistoricallyNamedCharset\1\0\25sun/nio/cs/ISO_8859_1\1\0\26sun/nio/cs/ISO_8859_15\1\0\21sun/nio/cs/MS1252\1\0\23sun/nio/cs/US_ASCII\1\0\21sun/nio/cs/UTF_16\1\0\23sun/nio/cs/UTF_16BE\1\0\23sun/nio/cs/UTF_16LE\1\0\27sun/nio/cs/UTF_16LE_BOM\1\0\20sun/nio/cs/UTF_8\1\0\22sun/nio/cs/Unicode\1\0\fwindows-1251\1\0\fwindows-1253\1\0\fwindows-1254\1\0\fwindows-1255\1\0\fwindows-1256\1\0\fwindows-1257\1\0\fwindows-1258\1\0\vwindows-31j\1\0\vwindows-932\1\0\10x-EUC-TW\1\0\tx-I"..., 2027) = 2027 30059 mprotect(0x7fb314452000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 55457802, SEEK_SET) = 55457802 30059 read(4, "PK\3\4\n\0\0\0\0\0009\246\305B\203\225\265\203:\3\0\0:\3\0\0\31\0\0\0", 30) = 30 30059 lseek(4, 55457857, SEEK_SET) = 55457857 30059 read(4, "\312\376\272\276\0\0\0003\0)\10\0\n\10\0\v\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\6\1\0\4Code\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\nSourceFile\1\0\10UTF-16BE\1\0\22UnicodeBigUnmarked\1\0\23[Ljava/lang/String;\1\0\20aliases_UTF_16BE\1\0\16historicalName\1\0\nnewDecoder\1\0\nnewEncoder\1\0\33sun/nio/cs/StandardCharsets\1\0\23sun/nio/cs/UTF_16BE\1\0\33sun/nio/cs/UTF_16BE$Decoder\1\0\33sun/nio/cs/UTF_16BE$Encoder\1\0\22sun/nio/cs/Unicode\7\0\21\7\0\22\7\0\23\7\0\24\7\0\25\1\0\35(Ljava/nio/charset/Charset;)V\1\0#()Ljava/nio/charset/CharsetDecoder;\1\0#()Ljava/nio/charset/CharsetEncoder;\1\0((Ljava/lang/String;[Ljava/lang/String;)V\f\0\r\0\f\f\0\5\0\33\f\0\5\0\36\t\0\26\0\37\n\0\30\0 \n\0\31\0 \n\0\32\0!\1\0\7Decoder\1\0\7Encoder\1\0\rUTF_16BE.java\0 \0\27\0\32\0\0\0\0\0\4\0\1\0\5\0\4\0\1\0\6\0\0\0&\0\3\0\1\0\0\0\n*\22\1\262\0\"\267\0%\261\0\0\0\1\0\10\0\0\0\n\0\2\0\0\0$\0\t\0%\0\1\0\16\0\3\0\1\0\6\0\0\0\33\0\1\0\1\0\0\0\3\22\2\260\0\0\0\1\0\10\0\0\0\6\0\1\0\0\0(\0\1\0\17\0\34\0\1\0\6\0\0\0!\0\3\0\1\0\0\0\t\273\0\30Y*\267\0#\260\0\0\0\1\0\10\0\0\0\6\0\1\0\0\0,\0\1\0\20\0\35\0\1\0\6\0\0\0!\0\3\0\1\0\0\0\t\273\0\31Y*\267\0$\260\0\0\0\1\0\10\0\0\0\6\0\1\0\0\0000\0\2\0\t\0\0\0\2\0(\0\7\0\0\0\22\0\2\0\30\0\27\0&\0\n\0\31\0\27\0'\0\n", 826) = 826 30059 lseek(4, 55458683, SEEK_SET) = 55458683 30059 read(4, "PK\3\4\n\0\0\0\0\0009\246\305BF\215A\207=\3\0\0=\3\0\0\31\0\0\0", 30) = 30 30059 lseek(4, 55458738, SEEK_SET) = 55458738 30059 read(4, "\312\376\272\276\0\0\0003\0)\10\0\n\10\0\v\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\6\1\0\4Code\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\nSourceFile\1\0\10UTF-16LE\1\0\25UnicodeLittleUnmarked\1\0\23[Ljava/lang/String;\1\0\20aliases_UTF_16LE\1\0\16historicalName\1\0\nnewDecoder\1\0\nnewEncoder\1\0\33sun/nio/cs/StandardCharsets\1\0\23sun/nio/cs/UTF_16LE\1\0\33sun/nio/cs/UTF_16LE$Decoder\1\0\33sun/nio/cs/UTF_16LE$Encoder\1\0\22sun/nio/cs/Unicode\7\0\21\7\0\22\7\0\23\7\0\24\7\0\25\1\0\35(Ljava/nio/charset/Charset;)V\1\0#()Ljava/nio/charset/CharsetDecoder;\1\0#()Ljava/nio/charset/CharsetEncoder;\1\0((Ljava/lang/String;[Ljava/lang/String;)V\f\0\r\0\f\f\0\5\0\33\f\0\5\0\36\t\0\26\0\37\n\0\30\0 \n\0\31\0 \n\0\32\0!\1\0\7Decoder\1\0\7Encoder\1\0\rUTF_16LE.java\0 \0\27\0\32\0\0\0\0\0\4\0\1\0\5\0\4\0\1\0\6\0\0\0&\0\3\0\1\0\0\0\n*\22\1\262\0\"\267\0%\261\0\0\0\1\0\10\0\0\0\n\0\2\0\0\0$\0\t\0%\0\1\0\16\0\3\0\1\0\6\0\0\0\33\0\1\0\1\0\0\0\3\22\2\260\0\0\0\1\0\10\0\0\0\6\0\1\0\0\0(\0\1\0\17\0\34\0\1\0\6\0\0\0!\0\3\0\1\0\0\0\t\273\0\30Y*\267\0#\260\0\0\0\1\0\10\0\0\0\6\0\1\0\0\0,\0\1\0\20\0\35\0\1\0\6\0\0\0!\0\3\0\1\0\0\0\t\273\0\31Y*\267\0$\260\0\0\0\1\0\10\0\0\0\6\0\1\0\0\0000\0\2\0\t\0\0\0\2\0(\0\7\0\0\0\22\0\2\0\30\0\27\0&\0\n\0\31\0\27\0'\0\n", 829) = 829 30059 lseek(4, 55872956, SEEK_SET) = 55872956 30059 read(4, "PK\3\4\n\0\0\0\0\0009\246\305Bg\352\317~\26\3\0\0\26\3\0\0\27\0\0\0", 30) = 30 30059 lseek(4, 55873009, SEEK_SET) = 55873009 30059 read(4, "\312\376\272\276\0\0\0003\0'\10\0\t\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\6\1\0\4Code\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\nSourceFile\1\0\6UTF-16\1\0\23[Ljava/lang/String;\1\0\16aliases_UTF_16\1\0\16historicalName\1\0\nnewDecoder\1\0\nnewEncoder\1\0\33sun/nio/cs/StandardCharsets\1\0\21sun/nio/cs/UTF_16\1\0\31sun/nio/cs/UTF_16$Decoder\1\0\31sun/nio/cs/UTF_16$Encoder\1\0\22sun/nio/cs/Unicode\7\0\17\7\0\20\7\0\21\7\0\22\7\0\23\1\0\35(Ljava/nio/charset/Charset;)V\1\0#()Ljava/nio/charset/CharsetDecoder;\1\0#()Ljava/nio/charset/CharsetEncoder;\1\0((Ljava/lang/String;[Ljava/lang/String;)V\f\0\v\0\n\f\0\4\0\31\f\0\4\0\34\t\0\24\0\35\n\0\26\0\36\n\0\27\0\36\n\0\30\0\37\1\0\7Decoder\1\0\7Encoder\1\0\vUTF_16.java\0 \0\25\0\30\0\0\0\0\0\4\0\1\0\4\0\3\0\1\0\5\0\0\0&\0\3\0\1\0\0\0\n*\22\1\262\0 \267\0#\261\0\0\0\1\0\7\0\0\0\n\0\2\0\0\0$\0\t\0%\0\1\0\f\0\2\0\1\0\5\0\0\0\33\0\1\0\1\0\0\0\3\22\1\260\0\0\0\1\0\7\0\0\0\6\0\1\0\0\0(\0\1\0\r\0\32\0\1\0\5\0\0\0!\0\3\0\1\0\0\0\t\273\0\26Y*\267\0!\260\0\0\0\1\0\7\0\0\0\6\0\1\0\0\0,\0\1\0\16\0\33\0\1\0\5\0\0\0!\0\3\0\1\0\0\0\t\273\0\27Y*\267\0\"\260\0\0\0\1\0\7\0\0\0\6\0\1\0\0\0000\0\2\0\10\0\0\0\2\0&\0\6\0\0\0\22\0\2\0\26\0\25\0$\0\n\0\27\0\25\0%\0\n", 790) = 790 30059 lseek(4, 29547869, SEEK_SET) = 29547869 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\6\256\224\7\353\36\0\0\353\36\0\0\32\0\0\0", 30) = 30 30059 lseek(4, 29547925, SEEK_SET) = 29547925 30059 read(4, "\312\376\272\276\0\0\0003\0\367\10\0\32\1\0\23$assertionsDisabled\1\0\3()I\1\0\5()TE;\1\0\3()V\1\0\3()Z\1\0\4(I)V\1\0\4(I)Z\1\0\25(Ljava/lang/Object;)V\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)V\1\0\6(TE;)V\1\0\6(TE;)Z\1\0)([Ljava/lang/Object;I)[Ljava/lang/Object;\1\0\10\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\nExceptions\1\0\1I\1\0\fInnerClasses\1\0\1J\1\0\17LineNumberTable\1\0\24MIN_INITIAL_CAPACITY\1\0\tSignature\1\0\24Sorry, deque too big\1\0\nSourceFile\1\0\rStackMapTable\1\0\1Z\1\0\23[Ljava/lang/Object;\1\0\4[TE;\1\0\naccess$200\1\0\naccess$300\1\0\naccess$400\1\0\naccess$500\1\0\3add\1\0\6addAll\1\0\10addFirst\1\0\7addLast\1\0\20allocateElements\1\0\tarraycopy\1\0\17checkInvariants\1\0\5clear\1\0\5clone\1\0\10contains\1\0\fcopyElements\1\0\6copyOf\1\0\21defaultReadObject\1\0\22defaultWriteObject\1\0\6delete\1\0\22descendingIterator\1\0\26desiredAssertionStatus\1\0\16doubleCapacity\1\0\7element\1\0\10elements\1\0\6equals\1\0\10getClass\1\0\20getComponentType\1\0\10getFirst\1\0\7getLast\1\0\4head\1\0\7isEmpty\1\0\10iterator\1\0\23java/io/IOException\1\0\31java/io/ObjectInputStream\1\0\32java/io/ObjectOutputStream\1\0\24java/io/Serializable\1\0\30java/lang/AssertionError\1\0\17java/lang/Class\1\0 java/lang/Clas"..., 7915) = 7915 30059 mprotect(0x7fb314453000, 8192, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 57901487, SEEK_SET) = 57901487 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B&8\272\254 \4\0\0 \4\0\0\25\0\0\0", 30) = 30 30059 lseek(4, 57901538, SEEK_SET) = 57901538 30059 read(4, "\312\376\272\276\0\0\0003\0.\1\0\3()I\1\0\5()TE;\1\0\25(Ljava/lang/Object;)V\1\0\25(Ljava/lang/Object;)Z\1\0\6(TE;)V\1\0\6(TE;)Z\1\0\tSignature\1\0\nSourceFile\1\0\3add\1\0\10addFirst\1\0\7addLast\1\0\10contains\1\0\22descendingIterator\1\0\7element\1\0\10getFirst\1\0\7getLast\1\0\10iterator\1\0\20java/lang/Object\1\0\17java/util/Deque\1\0\17java/util/Queue\1\0\5offer\1\0\nofferFirst\1\0\tofferLast\1\0\4peek\1\0\tpeekFirst\1\0\10peekLast\1\0\4poll\1\0\tpollFirst\1\0\10pollLast\1\0\3pop\1\0\4push\1\0\6remove\1\0\vremoveFirst\1\0\25removeFirstOccurrence\1\0\nremoveLast\1\0\24removeLastOccurrence\1\0\4size\7\0\22\7\0\23\7\0\24\1\0>Ljava/lang/Object;Ljava/util/Queue;\1\0\24()Ljava/lang/Object;\1\0\26()Ljava/util/Iterator;\1\0\33()Ljava/util/Iterator;\1\0\nDeque.java\6\1\0'\0&\0\1\0(\0\0\0\33\4\1\0\n\0\3\0\1\0\7\0\0\0\2\0\5\4\1\0\v\0\3\0\1\0\7\0\0\0\2\0\5\4\1\0\26\0\4\0\1\0\7\0\0\0\2\0\6\4\1\0\27\0\4\0\1\0\7\0\0\0\2\0\6\4\1\0!\0*\0\1\0\7\0\0\0\2\0\2\4\1\0#\0*\0\1\0\7\0\0\0\2\0\2\4\1\0\34\0*\0\1\0\7\0\0\0\2\0\2\4\1\0\35\0*\0\1\0\7\0\0\0\2\0\2\4\1\0\17\0*\0\1\0\7\0\0\0\2\0\2\4\1\0\20\0*\0\1\0\7\0\0\0\2\0\2\4\1\0\31\0*\0\1\0\7\0\0\0\2\0\2\4\1\0\32\0*\0\1\0\7\0\0\0\2\0\2\4\1\0\"\0\4\0\0\4\1\0$\0\4\0\0\4\1\0\t\0\4\0\1\0\7\0\0\0\2\0\6\4\1\0\25\0\4\0\1\0\7\0\0\0\2\0\6\4\1\0 \0*\0\1\0\7\0\0\0\2\0\2\4\1\0\33\0*\0\1\0\7\0\0\0\2\0\2\4\1\0\16\0*\0\1\0\7\0\0\0\2\0\2\4\1\0\30\0*\0\1\0\7\0\0\0\2\0\2\4\1\0\37\0\3\0\1\0\7\0\0\0\2\0\5\4\1\0\36\0*\0\1\0\7\0\0\0\2\0\2\4\1\0 \0\4\0\0\4\1\0\f\0\4\0\0\4\1"..., 1056) = 1056 30059 lseek(4, 57901010, SEEK_SET) = 57901010 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\22/}&\252\1\0\0\252\1\0\0\25\0\0\0", 30) = 30 30059 lseek(4, 57901061, SEEK_SET) = 57901061 30059 read(4, "\312\376\272\276\0\0\0003\0\25\1\0\5()TE;\1\0\25(Ljava/lang/Object;)Z\1\0\6(TE;)Z\1\0\nQueue.java\1\0\tSignature\1\0\nSourceFile\1\0\3add\1\0\7element\1\0\20java/lang/Object\1\0\24java/util/Collection\1\0\17java/util/Queue\1\0\5offer\1\0\4peek\1\0\4poll\1\0\6remove\7\0\t\7\0\n\7\0\v\1\0CLjava/lang/Object;Ljava/util/Collection;\1\0\24()Ljava/lang/Object;\6\1\0\22\0\20\0\1\0\21\0\0\0\6\4\1\0\7\0\2\0\1\0\5\0\0\0\2\0\3\4\1\0\f\0\2\0\1\0\5\0\0\0\2\0\3\4\1\0\17\0\24\0\1\0\5\0\0\0\2\0\1\4\1\0\16\0\24\0\1\0\5\0\0\0\2\0\1\4\1\0\10\0\24\0\1\0\5\0\0\0\2\0\1\4\1\0\r\0\24\0\1\0\5\0\0\0\2\0\1\0\2\0\6\0\0\0\2\0\4\0\5\0\0\0\2\0\23", 426) = 426 30059 lseek(4, 30726759, SEEK_SET) = 30726759 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\7\226\346\316\307\16\0\0\307\16\0\0\34\0\0\0", 30) = 30 30059 lseek(4, 30726817, SEEK_SET) = 30726817 30059 read(4, "\312\376\272\276\0\0\0003\0\302\10\0\22\1\0\3()F\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4()[C\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)V\1\0\7([BI)[B\1\0\t([BII[C)I\1\0\5([C)V\1\0\7([CII)V\1\0\t([CII[B)I\1\0\6\1\0\4Code\1\0\17LineNumberTable\1\0\tMALFORMED\1\0\6REPORT\1\0\nSourceFile\1\0\rStackMapTable\1\0\5UTF_8\1\0\1Z\1\0\2[B\1\0\2[C\1\0\6copyOf\1\0\2cs\1\0\3dec\1\0\6decode\1\0\7decoder\1\0\3enc\1\0\6encode\1\0\7encoder\1\0\6equals\1\0\5flush\1\0\3get\1\0\10getBytes\1\0\fgetBytesUTF8\1\0\6isUTF8\1\0\visUnderflow\1\0\"java/lang/IllegalArgumentException\1\0\20java/lang/Object\1\0\20java/lang/String\1\0\23java/nio/ByteBuffer\1\0\23java/nio/CharBuffer\1\0\30java/nio/charset/Charset\1\0\37java/nio/charset/CharsetDecoder\1\0\37java/nio/charset/CharsetEncoder\1\0\34java/nio/charset/CoderResult\1\0\"java/nio/charset/CodingErrorAction\1\0!java/nio/charset/StandardCharsets\1\0\20java/util/Arrays\1\0\26java/util/zip/ZipCoder\1\0\17maxBytesPerChar\1\0\17maxCharsPerByte\1\0\4name\1\0\nnewDecoder\1\0\nnewEncoder\1\0\20onMalformedInput\1\0\25onUnmappableCharacter\1\0\10position\1\0\5reset\1\0\27sun/nio/cs/ArrayDecoder\1\0\27sun/nio/cs/ArrayEncoder\1\0\vtoCharArray\1\0\10toString\1\0\ftoStringUTF8\1\0\4utf"..., 3783) = 3783 30059 stat("/nfs/users/nfs_j/jkb/work/cram/cramtools-2.1.jar", {st_mode=S_IFREG|0644, st_size=5750715, ...}) = 0 30059 open("/nfs/users/nfs_j/jkb/work/cram/cramtools-2.1.jar", O_RDONLY) = 5 30059 fstat(5, {st_mode=S_IFREG|0644, st_size=5750715, ...}) = 0 30059 fcntl(5, F_GETFD) = 0 30059 fcntl(5, F_SETFD, FD_CLOEXEC) = 0 30059 read(5, "PK\3\4", 4) = 4 30059 lseek(5, 0, SEEK_END) = 5750715 30059 lseek(5, 5750587, SEEK_SET) = 5750587 30059 read(5, "l/ftp/FTPStream.classPK\1\2\24\3\n\0\0\10\10\0\16SrC`F\33A\312\7\0\0\254\17\0\0'\0\0\0\0\0\0\0\0\0\0\0\244\201\0066R\0net/sf/samtools/util/ftp/FTPUtils.classPK\5\6\0\0\0\0'\17'\17\220\201\5\0\25>R\0\0\0", 128) = 128 30059 mmap(NULL, 364475, PROT_READ, MAP_SHARED, 5, 0x523000) = 0x7fb28ece4000 30059 mprotect(0x7fb314455000, 94208, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb31446c000, 8192, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 43240997, SEEK_SET) = 43240997 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305BN\321&\351E\v\0\0E\v\0\0\32\0\0\0", 30) = 30 30059 lseek(4, 43241053, SEEK_SET) = 43241053 30059 read(4, "\312\376\272\276\0\0\0003\0\230\10\0\2\1\0\3 = \1\0\3()J\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\4(I)J\1\0\4(J)V\1\0\10\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\1I\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\22Ljava/lang/String;\1\0\nSourceFile\1\0\6U_None\1\0\nV_Constant\1\0\vV_Monotonic\1\0\nV_Variable\1\0\3add\1\0\22addElapsedTimeFrom\1\0\7addTime\1\0\6append\1\0\fasLongBuffer\1\0\ncreateLong\1\0\fd3dAvailable\1\0\fdoPrivileged\1\0\3get\1\0\17getD3DAvailable\1\0\20getFindClassTime\1\0\16getFindClasses\1\0\27getParentDelegationTime\1\0\25getReadClassBytesTime\1\0\17getZipFileCount\1\0\22getZipFileOpenTime\1\0\tincrement\1\0\20java/lang/Object\1\0\27java/lang/StringBuilder\1\0\20java/lang/System\1\0\23java/nio/ByteBuffer\1\0\22java/nio/ByteOrder\1\0\23java/nio/LongBuffer\1\0\36java/security/AccessController\1\0\2lb\1\0\2lc\1\0\3lct\1\0\4name\1\0\10nanoTime\1\0\vnativeOrder\1\0\26newConstantPerfCounter\1\0\16newPerfCounter\1\0\5order\1\0\3pdt\1\0\4perf\1\0\3put\1\0\4rcbt\1\0\3set\1\0\rsun/misc/Perf\1\0\33sun/misc/Perf$GetPerfAction\1\0\24sun/misc/PerfCounter\1\0!sun/misc/PerfCounter$CoreCounters\1\0*sun/misc/PerfCounter$WindowsClientCounters\1\0\10toString\1\0\3zfc\1\0\4zfot\3\0\0\0\1\3\0\0\0\2\3\0\0\0\3\7\0&\7\0'\7\0(\7\0)\7\0*\7\0+\7\0,\7\0"..., 2885) = 2885 30059 mprotect(0x7fb31446e000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 43235776, SEEK_SET) = 43235776 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\\-\246\3153\2\0\0003\2\0\0!\0\0\0", 30) = 30 30059 lseek(4, 43235839, SEEK_SET) = 43235839 30059 read(4, "\312\376\272\276\0\0\0003\0\35\1\0\3()V\1\0\6\1\0\4Code\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\7getPerf\1\0\20java/lang/Object\1\0\36java/security/PrivilegedAction\1\0\3run\1\0\rsun/misc/Perf\1\0\33sun/misc/Perf$GetPerfAction\7\0\t\7\0\n\7\0\f\7\0\r\1\0CLjava/lang/Object;Ljava/security/PrivilegedAction;\1\0\24()Ljava/lang/Object;\1\0\21()Lsun/misc/Perf;\f\0\2\0\1\f\0\10\0\24\f\0\v\0\24\n\0\16\0\25\n\0\20\0\26\n\0\21\0\27\1\0\rGetPerfAction\1\0\tPerf.java\0!\0\21\0\16\0\1\0\17\0\0\0\3\0\1\0\2\0\1\0\1\0\3\0\0\0\35\0\1\0\1\0\0\0\5*\267\0\30\261\0\0\0\1\0\5\0\0\0\6\0\1\0\0\0Y\0\1\0\v\0\24\0\1\0\3\0\0\0\34\0\1\0\1\0\0\0\4\270\0\31\260\0\0\0\1\0\5\0\0\0\6\0\1\0\0\0a\20A\0\v\0\23\0\1\0\3\0\0\0\35\0\1\0\1\0\0\0\5*\266\0\32\260\0\0\0\1\0\5\0\0\0\6\0\1\0\0\0Y\0\3\0\7\0\0\0\2\0\34\0\6\0\0\0\2\0\22\0\4\0\0\0\n\0\1\0\21\0\20\0\33\0\t", 563) = 563 30059 lseek(4, 43236402, SEEK_SET) = 43236402 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\221$t\4\302\v\0\0\302\v\0\0\23\0\0\0", 30) = 30 30059 lseek(4, 43236451, SEEK_SET) = 43236451 30059 read(4, "\312\376\272\276\0\0\0003\0\211\10\0\27\10\0007\10\0009\10\0:\10\0?\1\0\3()J\1\0\3()V\1\0\5(II)I\1\0\25(Ljava/lang/String;)I\1\0\25(Ljava/lang/String;)V\1\0\10\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\nExceptions\1\0\1I\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\fPERF_MODE_RO\1\0\fPERF_MODE_RW\1\0\nSourceFile\1\0\rStackMapTable\1\0\5UTF-8\1\0\2[B\1\0\naccess$000\1\0\naccess$100\1\0\tarraycopy\1\0\6attach\1\0\nattachImpl\1\0\17checkPermission\1\0\tcompareTo\1\0\6create\1\0\17createByteArray\1\0\ncreateLong\1\0\fcreateString\1\0\6detach\1\0\tduplicate\1\0\10getBytes\1\0\7getPerf\1\0\22getSecurityManager\1\0\16highResCounter\1\0\20highResFrequency\1\0\10instance\1\0\23java/io/IOException\1\0$java/io/UnsupportedEncodingException\1\0\"java/lang/IllegalArgumentException\1\0\16java/lang/Math\1\0\20java/lang/Object\1\0\33java/lang/RuntimePermission\1\0\31java/lang/SecurityManager\1\0\20java/lang/String\1\0\20java/lang/System\1\0\23java/nio/ByteBuffer\1\0\3max\1\0\1r\1\0\17registerNatives\1\0\2rw\1\0\25sun.misc.Perf.getPerf\1\0\20sun/misc/Cleaner\1\0\rsun/misc/Perf\1\0\17sun/misc/Perf$1\1\0\33sun/misc/Perf$GetPerfAction\1\0\funknown mode\3\0\0\0\0\3\0\0\0\1\7\0\30\7\0,\7\0-\7\0.\7\0/\7\0000\7\0001\7\0002\7\0003\7\0004\7\0005\7\0;\7\0<\7\0=\7\0>\1\0\17Lsun/misc/Perf;\1\0\35()Lj"..., 3010) = 3010 30059 lseek(4, 43239461, SEEK_SET) = 43239461 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305Bx\22<\4W\3\0\0W\3\0\0'\0\0\0", 30) = 30 30059 lseek(4, 43239530, SEEK_SET) = 43239530 30059 read(4, "\312\376\272\276\0\0\0003\0005\10\0\24\10\0\25\10\0\26\10\0\27\10\0\30\10\0\31\1\0\3()V\1\0\10\1\0\6\1\0\4Code\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\nSourceFile\1\0\20java/lang/Object\1\0\2lc\1\0\3lct\1\0\16newPerfCounter\1\0\3pdt\1\0\4rcbt\1\0\35sun.classloader.findClassTime\1\0\33sun.classloader.findClasses\1\0$sun.classloader.parentDelegationTime\1\0%sun.urlClassLoader.readClassBytesTime\1\0\30sun.zip.zipFile.openTime\1\0\20sun.zip.zipFiles\1\0\24sun/misc/PerfCounter\1\0!sun/misc/PerfCounter$CoreCounters\1\0\3zfc\1\0\4zfot\7\0\16\7\0\32\7\0\33\1\0\26Lsun/misc/PerfCounter;\1\0*(Ljava/lang/String;)Lsun/misc/PerfCounter;\f\0\17\0!\f\0\20\0!\f\0\22\0!\f\0\23\0!\f\0\34\0!\f\0\35\0!\f\0\t\0\7\f\0\21\0\"\t\0 \0#\t\0 \0$\t\0 \0%\t\0 \0&\t\0 \0'\t\0 \0(\n\0\36\0)\n\0\37\0*\1\0\fCoreCounters\1\0\20PerfCounter.java\0 \0 \0\36\0\0\0\6\0\30\0\22\0!\0\0\0\30\0\17\0!\0\0\0\30\0\20\0!\0\0\0\30\0\23\0!\0\0\0\30\0\34\0!\0\0\0\30\0\35\0!\0\0\0\2\0\0\0\t\0\7\0\1\0\n\0\0\0\35\0\1\0\1\0\0\0\5*\267\0001\261\0\0\0\1\0\f\0\0\0\6\0\1\0\0\0\177\0\10\0\10\0\7\0\1\0\n\0\0\0]\0\1\0\0\0\0\0001\22\3\270\0002\263\0-\22\2\270\0002\263\0+\22\1\270\0002\263\0,\22\4\270\0002\263\0.\22\6\270\0002\263\0/\22\5\270\0002\263\0000\261\0\0\0\1\0\f\0\0\0\32\0\6\0\0\0\200\0\10\0\201\0\20\0\202\0\30\0\203\0 \0\204\0(\0\205\0\2\0\r\0\0\0\2\0004\0\v\0\0\0\n\0\1\0 \0\37\0003\0\10", 855) = 855 30059 lseek(4, 58534067, SEEK_SET) = 58534067 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\335\200\16 \341\0\0\0\341\0\0\0\35\0\0\0", 30) = 30 30059 lseek(4, 58534126, SEEK_SET) = 58534126 30059 read(4, "\312\376\272\276\0\0\0003\0\r\1\0\3()J\1\0\nSourceFile\1\0\7address\1\0\nattachment\1\0\7cleaner\1\0\20java/lang/Object\1\0\27sun/nio/ch/DirectBuffer\7\0\6\7\0\7\1\0\24()Ljava/lang/Object;\1\0\24()Lsun/misc/Cleaner;\1\0\21DirectBuffer.java\6\1\0\t\0\10\0\0\0\0\0\3\4\1\0\3\0\1\0\0\4\1\0\4\0\n\0\0\4\1\0\5\0\v\0\0\0\1\0\2\0\0\0\2\0\f", 225) = 225 30059 lseek(4, 58521361, SEEK_SET) = 58521361 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\346\255\271]e1\0\0e1\0\0\37\0\0\0", 30) = 30 30059 lseek(4, 58521422, SEEK_SET) = 58521422 30059 read(4, "\312\376\272\276\0\0\0003\1\365\1\0\23$assertionsDisabled\1\0\3()B\1\0\3()C\1\0\3()D\1\0\3()F\1\0\3()I\1\0\3()J\1\0\3()S\1\0\3()V\1\0\3()Z\1\0\4(C)C\1\0\4(D)J\1\0\4(F)I\1\0\4(I)B\1\0\4(I)C\1\0\4(I)D\1\0\4(I)F\1\0\4(I)I\1\0\4(I)J\1\0\4(I)S\1\0\4(I)V\1\0\5(IB)V\1\0\5(II)I\1\0\6(III)V\1\0\7(IIII)V\1\0\4(J)B\1\0\4(J)C\1\0\4(J)D\1\0\4(J)F\1\0\4(J)I\1\0\4(J)J\1\0\4(J)S\1\0\5(JB)V\1\0\5(JC)V\1\0\6(JCZ)V\1\0\6(JDZ)V\1\0\6(JFZ)V\1\0\5(JI)V\1\0\6(JIZ)V\1\0\5(JJ)J\1\0\5(JJ)V\1\0\6(JJB)V\1\0\6(JJJ)V\1\0\6(JJZ)V\1\0\5(JS)V\1\0\6(JSZ)V\1\0\5(JZ)C\1\0\5(JZ)D\1\0\5(JZ)F\1\0\5(JZ)I\1\0\5(JZ)J\1\0\5(JZ)S\1\0\4(S)S\1\0\10\1\0\6\1\0\4Code\1\0\1I\1\0\fInnerClasses\1\0\1J\1\0\17LineNumberTable\1\0\22Ljava/lang/Object;\1\0\nSourceFile\1\0\rStackMapTable\1\0\1Z\1\0\2[B\1\0\4_get\1\0\4_put\1\0\7address\1\0\16allocateMemory\1\0\17arrayBaseOffset\1\0\fasCharBuffer\1\0\16asDoubleBuffer\1\0\rasFloatBuffer\1\0\vasIntBuffer\1\0\fasLongBuffer\1\0\20asReadOnlyBuffer\1\0\rasShortBuffer\1\0\3att\1\0\nattachment\1\0\tbigEndian\1\0\10capacity\1\0\vcheckBounds\1\0\ncheckIndex\1\0\7cleaner\1\0\7compact\1\0\rcopyFromArray\1\0\ncopyMemory\1\0\vcopyToArray\1\0\6create\1\0\26desiredAssertionStatus\1\0\vdiscardMark\1\0\23doubleToRawLongBits\1\0\tduplicate\1\0\21floatToRawIntBits\1\0\3get\1\0\7getByte\1\0\7getChar\1\0\tgetDouble\1\0\10getFl"..., 12645) = 12645 30059 mprotect(0x7fb31446f000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 58717741, SEEK_SET) = 58717741 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\371\262\224\314\327\6\0\0\327\6\0\0\37\0\0\0", 30) = 30 30059 lseek(4, 58717802, SEEK_SET) = 58717802 30059 read(4, "\312\376\272\276\0\0\0003\0V\1\0\3()I\1\0\3()J\1\0\3()V\1\0\3()Z\1\0\7(IIII)V\1\0\4(J)B\1\0\4(J)I\1\0\4(J)J\1\0\5(JJ)V\1\0\6(JJI)Z\1\0\6\1\0\1B\1\0\4Code\1\0\1J\1\0\17LineNumberTable\1\0\nSourceFile\1\0\rStackMapTable\1\0\7address\1\0\10capacity\1\0\vcheckMapped\1\0\2fd\1\0\5force\1\0\6force0\1\0\7getByte\1\0\tgetUnsafe\1\0\10isLoaded\1\0\tisLoaded0\1\0'java/lang/UnsupportedOperationException\1\0\rjava/nio/Bits\1\0\23java/nio/ByteBuffer\1\0\31java/nio/MappedByteBuffer\1\0\4load\1\0\5load0\1\0\16mappingAddress\1\0\rmappingLength\1\0\rmappingOffset\1\0\tpageCount\1\0\10pageSize\1\0\17sun/misc/Unsafe\1\0\6unused\7\0\34\7\0\35\7\0\36\7\0\37\7\0'\1\0\30Ljava/io/FileDescriptor;\1\0\37(IIIILjava/io/FileDescriptor;)V\1\0\35(Ljava/io/FileDescriptor;JJ)V\1\0\35()Ljava/nio/MappedByteBuffer;\1\0\23()Lsun/misc/Unsafe;\f\0(\0\f\f\0\22\0\16\f\0\25\0.\f\0\23\0\1\f\0&\0\1\f\0$\0\2\f\0\v\0\3\f\0\24\0\3\f\0\v\0\5\f\0\30\0\6\f\0%\0\7\f\0\"\0\10\f\0#\0\10\f\0!\0\t\f\0\33\0\n\f\0\27\0000\f\0\31\0002\t\0,\0003\t\0,\0004\t\0,\0005\n\0)\0009\n\0*\0007\n\0*\0=\n\0+\0;\n\0,\0006\n\0,\0008\n\0,\0:\n\0,\0>\n\0,\0?\n\0,\0@\n\0,\0A\n\0,\0B\n\0-\0<\n\0-\0C\1\0\25MappedByteBuffer.java\4!\0,\0+\0\0\0\2\0\22\0\25\0.\0\0\0\n\0(\0\f\0\0\0\f\0\0\0\v\0/\0\1\0\r\0\0\0000\0\5\0\6\0\0\0\20*\33\34\35\25\4\267\0J*\31\5\265\0F\261\0\0\0\1\0\17\0\0\0\16\0\3\0\0\0T\0\t\0U\0\17\0V\0\0\0\v\0\5\0\1\0\r\0\0\0/\0\5\0\5\0\0\0\17*\33\34\35\25\4\267\0J*\1\265\0F\261\0\0\0\1\0\17\0\0\0\16\0\3\0\0\0Y\0\t\0Z\0\16\0[\0\2\0\24\0\3\0\1\0\r\0\0\0009\0\2"..., 1751) = 1751 30059 lseek(4, 28711274, SEEK_SET) = 28711274 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B\222_\2\315\312\20\0\0\312\20\0\0 \0\0\0", 30) = 30 30059 lseek(4, 28711336, SEEK_SET) = 28711336 30059 read(4, "\312\376\272\276\0\0\0003\0\307\1\0\23$assertionsDisabled\1\0\3()I\1\0\3()J\1\0\3()V\1\0\3()Z\1\0\4(I)I\1\0\4(I)J\1\0\6(III)V\1\0\7(IIII)V\1\0\4(J)J\1\0\5(JJ)V\1\0\6(JJJ)V\1\0\10\1\0\6\1\0\nBIG_ENDIAN\1\0\4Code\1\0\1I\1\0\1J\1\0\rLITTLE_ENDIAN\1\0\17LineNumberTable\1\0\22Ljava/lang/Object;\1\0\nSourceFile\1\0\rStackMapTable\1\0\1Z\1\0\2[J\1\0\7address\1\0\17arrayBaseOffset\1\0\20asReadOnlyBuffer\1\0\3att\1\0\nattachment\1\0\10capacity\1\0\vcheckBounds\1\0\ncheckIndex\1\0\7cleaner\1\0\7compact\1\0\rcopyFromArray\1\0\21copyFromLongArray\1\0\ncopyMemory\1\0\vcopyToArray\1\0\17copyToLongArray\1\0\26desiredAssertionStatus\1\0\vdiscardMark\1\0\tduplicate\1\0\3get\1\0\7getLong\1\0\2hb\1\0\10isDirect\1\0\nisReadOnly\1\0\2ix\1\0\30java/lang/AssertionError\1\0\17java/lang/Class\1\0\"java/lang/IllegalArgumentException\1\0\rjava/nio/Bits\1\0 java/nio/BufferOverflowException\1\0!java/nio/BufferUnderflowException\1\0\22java/nio/ByteOrder\1\0\33java/nio/DirectLongBufferRU\1\0\32java/nio/DirectLongBufferU\1\0\23java/nio/LongBuffer\1\0\5limit\1\0\tmarkValue\1\0\vnativeOrder\1\0\fnextGetIndex\1\0\fnextPutIndex\1\0\6offset\1\0\5order\1\0\10position\1\0\3put\1\0\7putLong\1\0\5slice\1\0\17sun/misc/Unsafe\1\0\27sun/nio/ch/DirectBuffer\1\0\tunalig"..., 4298) = 4298 30059 lseek(4, 28763991, SEEK_SET) = 28763991 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\33\342\310\230n\17\0\0n\17\0\0\31\0\0\0", 30) = 30 30059 lseek(4, 28764046, SEEK_SET) = 28764046 30059 read(4, "\312\376\272\276\0\0\0003\0\257\10\0\5\10\0\6\10\0\"\10\0#\1\0\5 cap=\1\0\5 lim=\1\0\3()I\1\0\3()J\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4()[J\1\0\4(I)J\1\0\5(II)I\1\0\5(II)V\1\0\6(III)V\1\0\7(IIII)V\1\0\n(IIII[JI)V\1\0\5(JJ)I\1\0\5(JJ)Z\1\0\25(Ljava/lang/Object;)I\1\0\25(Ljava/lang/Object;)Z\1\0,(Ljava/lang/String;)Ljava/lang/StringBuffer;\1\0\7([JII)V\1\0\6\1\0\4Code\1\0\1I\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\1Z\1\0\2[J\1\0\5[pos=\1\0\1]\1\0\10allocate\1\0\6append\1\0\5array\1\0\varrayOffset\1\0\20asReadOnlyBuffer\1\0\10capacity\1\0\vcheckBounds\1\0\7compact\1\0\7compare\1\0\tcompareTo\1\0\tduplicate\1\0\6equals\1\0\3get\1\0\10getClass\1\0\7getName\1\0\10hasArray\1\0\10hashCode\1\0\2hb\1\0\10isDirect\1\0\nisReadOnly\1\0\17java/lang/Class\1\0\24java/lang/Comparable\1\0\"java/lang/IllegalArgumentException\1\0#java/lang/IndexOutOfBoundsException\1\0\16java/lang/Long\1\0\16java/lang/Math\1\0\20java/lang/Object\1\0\26java/lang/StringBuffer\1\0'java/lang/UnsupportedOperationException\1\0\17java/nio/Buffer\1\0 java/nio/BufferOverflowException\1\0!java/nio/BufferUnderflowException\1\0\27java/nio/HeapLongBuffer\1\0\23java/nio/LongBuffer\1\0 java/nio/ReadOnlyBufferException\1\0\5limi"..., 3950) = 3950 30059 lseek(4, 57492670, SEEK_SET) = 57492670 30059 read(4, "PK\3\4\n\0\0\0\0\0009\246\305B\360\20\363\216\177\20\0\0\177\20\0\0\36\0\0\0", 30) = 30 30059 lseek(4, 57492730, SEEK_SET) = 57492730 30059 read(4, "\312\376\272\276\0\0\0003\0\242\4?\214\314\315\4@@\0\0\1\0\3()C\1\0\3()I\1\0\3()V\1\0\3()Z\1\0\4()[B\1\0\4()[C\1\0\4(C)Z\1\0\10(C[CII)I\1\0\5(II)I\1\0\5([B)Z\1\0\t([CII[B)I\1\0\6\1\0\4Code\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\10OVERFLOW\1\0\7REPLACE\1\0\nSourceFile\1\0\rStackMapTable\1\0\tUNDERFLOW\1\0\2[B\1\0\2[C\1\0\5array\1\0\varrayOffset\1\0\tcanEncode\1\0\6encode\1\0\17encodeArrayLoop\1\0\20encodeBufferLoop\1\0\nencodeLoop\1\0\5error\1\0\3get\1\0\10hasArray\1\0\fhasRemaining\1\0\22isLegalReplacement\1\0\visSurrogate\1\0\23java/lang/Character\1\0\16java/lang/Math\1\0\23java/nio/ByteBuffer\1\0\23java/nio/CharBuffer\1\0\37java/nio/charset/CharsetEncoder\1\0\34java/nio/charset/CoderResult\1\0\"java/nio/charset/CodingErrorAction\1\0\5limit\1\0\24malformedInputAction\1\0\3min\1\0\10overflow\1\0\5parse\1\0\10position\1\0\3put\1\0\tremaining\1\0\vreplacement\1\0\3sgp\1\0\27sun/nio/cs/ArrayEncoder\1\0\24sun/nio/cs/Surrogate\1\0\33sun/nio/cs/Surrogate$Parser\1\0\20sun/nio/cs/UTF_8\1\0\22sun/nio/cs/UTF_8$1\1\0\30sun/nio/cs/UTF_8$Encoder\1\0\17updatePositions\7\0\27\7\0\30\7\0&\7\0'\7\0(\7\0)\7\0*\7\0+\7\0,\7\0007\7\0008\7\0009\7\0:\7\0;\7\0<\1\0\36Ljava/nio/charset/CoderResult;\1\0$Ljava/nio/charset/CodingErrorAction;\1\0\35Lsun/nio/cs/Surrogate$Parser;\1\0\24("..., 4223) = 4223 30059 lseek(4, 56809517, SEEK_SET) = 56809517 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\223.\354\rM\16\0\0M\16\0\0\34\0\0\0", 30) = 30 30059 lseek(4, 56809575, SEEK_SET) = 56809575 30059 read(4, "\312\376\272\276\0\0\0003\0\262\3\0\0\377\377\10\0\25\10\0(\10\0:\10\0;\10\0<\10\0=\1\0\3()I\1\0\3()J\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4()[B\1\0\4(I)V\1\0\t(IIIIII)V\1\0\4(J)J\1\0\4(J)V\1\0\25(Ljava/lang/String;)V\1\0\25(Ljava/lang/String;)Z\1\0\5([B)V\1\0\1/\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\10DEFLATED\1\0\1I\1\0\1J\1\0\17LineNumberTable\1\0\22Ljava/lang/String;\1\0\6STORED\1\0\nSourceFile\1\0\rStackMapTable\1\0\2[B\1\0\5clone\1\0\7comment\1\0\3crc\1\0\5csize\1\0\rdosToJavaTime\1\0\10endsWith\1\0\23entry name too long\1\0\5extra\1\0\4flag\1\0\ngetComment\1\0\21getCompressedSize\1\0\6getCrc\1\0\7getDate\1\0\10getExtra\1\0\10getHours\1\0\tgetMethod\1\0\ngetMinutes\1\0\10getMonth\1\0\7getName\1\0\ngetSeconds\1\0\7getSize\1\0\7getTime\1\0\7getYear\1\0\10hashCode\1\0\32invalid compression method\1\0\24invalid entry crc-32\1\0\22invalid entry size\1\0\32invalid extra field length\1\0\visDirectory\1\0$java/lang/CloneNotSupportedException\1\0\23java/lang/Cloneable\1\0\"java/lang/IllegalArgumentException\1\0\27java/lang/InternalError\1\0\36java/lang/NullPointerException\1\0\20java/lang/Object\1\0\20java/lang/String\1\0\16java/util/Date\1\0\32java/util/zip/ZipConstants\1\0\26java/util/zip/ZipEntry\1\0\rjavaToDosTime\1\0\6length\1\0\6method\1"..., 3661) = 3661 30059 lseek(4, 56807608, SEEK_SET) = 56807608 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\237YG]/\7\0\0/\7\0\0(\0\0\0", 30) = 30 30059 lseek(4, 56807678, SEEK_SET) = 56807678 30059 read(4, "\312\376\272\276\0\0\0003\0R\1\0\24()Ljava/lang/String;\1\0\30(Ljava/lang/Throwable;)V\1\0\6\1\0\4Code\1\0\nExceptions\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\nSourceFile\1\0\rStackMapTable\1\0\33[Ljava/security/CodeSigner;\1\0![Ljava/security/cert/Certificate;\1\0\naccess$000\1\0\naccess$100\1\0\5certs\1\0\5clone\1\0\rgetAttributes\1\0\17getCertificates\1\0\10getCerts\1\0\16getCodeSigners\1\0\vgetManifest\1\0\7getName\1\0\23java/io/IOException\1\0\32java/lang/RuntimeException\1\0\26java/util/jar/JarEntry\1\0\25java/util/jar/JarFile\1\0\"java/util/jar/JarFile$JarFileEntry\1\0\31java/util/jar/JarVerifier\1\0\26java/util/jar/Manifest\1\0\7signers\1\0\6this$0\7\0\n\7\0\v\7\0\26\7\0\27\7\0\30\7\0\31\7\0\32\7\0\33\7\0\34\1\0\27Ljava/util/jar/JarFile;\1\0\24()Ljava/lang/Object;\1\0\35()[Ljava/security/CodeSigner;\1\0#()[Ljava/security/cert/Certificate;\1\0\34()Ljava/util/jar/Attributes;\1\0\32(Ljava/util/jar/JarFile;)V\1\0\32()Ljava/util/jar/Manifest;\1\0\33(Ljava/util/zip/ZipEntry;)V\1\0.(Ljava/lang/String;)Ljava/util/jar/Attributes;\1\0004(Ljava/util/jar/JarFile;)Ljava/util/jar/JarVerifier;\1\0002(Ljava/util/jar/JarFile;Ljava/util/zip/ZipEntry;)V\1\0L(Ljava/util/jar/JarFi"..., 1839) = 1839 30059 lseek(4, 56806479, SEEK_SET) = 56806479 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\362\205+\252/\4\0\0/\4\0\0\34\0\0\0", 30) = 30 30059 lseek(4, 56806537, SEEK_SET) = 56806537 30059 read(4, "\312\376\272\276\0\0\0003\0/\1\0\25(Ljava/lang/String;)V\1\0\6\1\0\4Code\1\0\nExceptions\1\0\17LineNumberTable\1\0\nSourceFile\1\0\rStackMapTable\1\0\33[Ljava/security/CodeSigner;\1\0![Ljava/security/cert/Certificate;\1\0\4attr\1\0\5certs\1\0\5clone\1\0\rgetAttributes\1\0\17getCertificates\1\0\16getCodeSigners\1\0\23java/io/IOException\1\0\26java/util/jar/JarEntry\1\0\26java/util/zip/ZipEntry\1\0\7signers\7\0\10\7\0\t\7\0\20\7\0\21\7\0\22\1\0\32Ljava/util/jar/Attributes;\1\0\24()Ljava/lang/Object;\1\0\35()[Ljava/security/CodeSigner;\1\0#()[Ljava/security/cert/Certificate;\1\0\34()Ljava/util/jar/Attributes;\1\0\33(Ljava/util/jar/JarEntry;)V\1\0\33(Ljava/util/zip/ZipEntry;)V\f\0\23\0\10\f\0\v\0\t\f\0\n\0\31\f\0\f\0\32\f\0\2\0\1\f\0\2\0\37\t\0\27\0 \t\0\27\0!\t\0\27\0\"\n\0\24\0#\n\0\25\0#\n\0\27\0%\n\0\30\0$\n\0\30\0%\1\0\rJarEntry.java\0!\0\27\0\30\0\0\0\3\0\0\0\n\0\31\0\0\0\0\0\v\0\t\0\0\0\0\0\23\0\10\0\0\0\6\0\1\0\2\0\1\0\1\0\3\0\0\0\"\0\2\0\2\0\0\0\6*+\267\0,\261\0\0\0\1\0\5\0\0\0\n\0\2\0\0\0004\0\5\0005\0\1\0\2\0\37\0\1\0\3\0\0\0\"\0\2\0\2\0\0\0\6*+\267\0-\261\0\0\0\1\0\5\0\0\0\n\0\2\0\0\0>\0\5\0?\0\1\0\2\0\36\0\1\0\3\0\0\0F\0\2\0\2\0\0\0\36*+\267\0+*+\264\0(\265\0(*+\264\0'\265\0'*+\264\0&\265\0&\261\0\0\0\1\0\5\0\0\0\26\0\5\0\0\0H\0\5\0I\0\r\0J\0\25\0K\0\35\0L\0\1\0\r\0\35\0\2\0\3\0\0\0\35\0\1\0\1\0\0\0\5*\264\0(\260\0\0\0\1\0\5\0\0\0\6\0\1\0\0\0V\0\4\0\0\0\4\0\1\0\26\0\1\0\16\0\34\0\1\0\3\0\0\0;\0\1\0\1\0\0\0\26*\264\0'\307\0\7\1\247\0\r*\264\0'\266\0*\300\0\25\260\0\0\0\2\0\7\0\0\0\7\0\2\vI\7\0\25\0\5\0\0\0\6\0\1\0\0\0k\0\1\0\17\0\33\0\1\0\3\0\0"..., 1071) = 1071 30059 mprotect(0x7fb314470000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 56776130, SEEK_SET) = 56776130 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\340\331\21+>\10\0\0>\10\0\0.\0\0\0", 30) = 30 30059 lseek(4, 56776206, SEEK_SET) = 56776206 30059 read(4, "\312\376\272\276\0\0\0003\0a\3\177\377\377\377\1\0\3()I\1\0\3()J\1\0\3()V\1\0\4(J)J\1\0\5(JJ)V\1\0\n(JJJ[BII)I\1\0\7([BII)I\1\0\6\1\0\4Code\1\0\nExceptions\1\0\fInnerClasses\1\0\1J\1\0\17LineNumberTable\1\0\nSourceFile\1\0\rStackMapTable\1\0\1Z\1\0\2[B\1\0\naccess$000\1\0\vaccess$1000\1\0\vaccess$1100\1\0\vaccess$1200\1\0\vaccess$1300\1\0\vaccess$1400\1\0\naccess$400\1\0\tavailable\1\0\5close\1\0\16closeRequested\1\0\10finalize\1\0\23java/io/IOException\1\0\23java/io/InputStream\1\0\20java/lang/Object\1\0\23java/lang/Throwable\1\0\rjava/util/Map\1\0\25java/util/zip/ZipFile\1\0(java/util/zip/ZipFile$ZipFileInputStream\1\0\7jzentry\1\0\3pos\1\0\4read\1\0\3rem\1\0\6remove\1\0\4size\1\0\4skip\1\0\6this$0\5\0\0\0\0\177\377\377\377\7\0\22\7\0\36\7\0\37\7\0 \7\0!\7\0\"\7\0#\7\0$\1\0\27Ljava/util/zip/ZipFile;\1\0\32(Ljava/util/zip/ZipFile;)J\1\0\32(Ljava/util/zip/ZipFile;)V\1\0\33(Ljava/util/zip/ZipFile;J)V\1\0&(Ljava/lang/Object;)Ljava/lang/Object;\1\0((Ljava/util/zip/ZipFile;)Ljava/util/Map;\f\0%\0\r\f\0&\0\r\f\0(\0\r\f\0*\0\r\f\0\34\0\21\f\0,\0007\f\0\t\0\4\f\0\33\0\4\f\0\25\0\5\f\0\26\0\5\f\0\24\0\6\f\0\30\0\7\f\0'\0\10\f\0\31\0008\f\0\27\0009\f\0)\0;\f\0\23\0<\t\0006\0=\t\0006\0>\t\0006\0?\t\0006\0@\t\0006\0A\t\0006\0B\n\0001\0C\n\0005\0E\n\0005\0F\n\0005\0G\n\0005\0H\n\0005\0J\n\0005\0K\n\0005\0M\n\0006\0D\n\0006\0I\v\0004\0L\1\0\fZipFile.java\1\0\22ZipFileInputStream\0 \0006\0001\0\0\0\6\0B\0\34\0"..., 2110) = 2110 30059 lseek(4, 55815371, SEEK_SET) = 55815371 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B1r\374,z\17\0\0z\17\0\0\34\0\0\0", 30) = 30 30059 lseek(4, 55815429, SEEK_SET) = 55815429 30059 read(4, "\312\376\272\276\0\0\0003\0\227\10\0\31\1\0\23$assertionsDisabled\1\0\3()I\1\0\3()J\1\0\3()V\1\0\3()Z\1\0\4(J)I\1\0\4(J)J\1\0\4(J)V\1\0\10(J[BII)I\1\0\10(J[BII)V\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)V\1\0\4(Z)J\1\0\4(Z)V\1\0\5([B)I\1\0\5([B)V\1\0\7([BII)I\1\0\7([BII)V\1\0\10\1\0\6\1\0\4Code\1\0\nExceptions\1\0\1I\1\0\30Inflater has been closed\1\0\17LineNumberTable\1\0\nSourceFile\1\0\rStackMapTable\1\0\1Z\1\0\2[B\1\0\7address\1\0\3buf\1\0\5clear\1\0\ndefaultBuf\1\0\26desiredAssertionStatus\1\0\3end\1\0\5ended\1\0\nensureOpen\1\0\10finalize\1\0\10finished\1\0\10getAdler\1\0\fgetBytesRead\1\0\17getBytesWritten\1\0\fgetRemaining\1\0\ngetTotalIn\1\0\vgetTotalOut\1\0\tholdsLock\1\0\7inflate\1\0\finflateBytes\1\0\4init\1\0\7initIDs\1\0(java/lang/ArrayIndexOutOfBoundsException\1\0\30java/lang/AssertionError\1\0\17java/lang/Class\1\0\36java/lang/NullPointerException\1\0\20java/lang/Object\1\0\20java/lang/Thread\1\0\23java/lang/Throwable\1\0!java/util/zip/DataFormatException\1\0\26java/util/zip/Inflater\1\0\30java/util/zip/ZStreamRef\1\0\3len\1\0\10needDict\1\0\17needsDictionary\1\0\nneedsInput\1\0\3off\1\0\5reset\1\0\rsetDictionary\1\0\10setInput\1\0\5zsRef\7\0\36\7\0004\7\0005\7\0006\7\0007\7\0008\7\0009\7\0:\7\0;\7\0<\7\0=\1\0\32Ljava/util/zip/ZStre"..., 3962) = 3962 30059 lseek(4, 30726334, SEEK_SET) = 30726334 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B0\25\367zm\1\0\0m\1\0\0\36\0\0\0", 30) = 30 30059 lseek(4, 30726394, SEEK_SET) = 30726394 30059 read(4, "\312\376\272\276\0\0\0003\0\24\1\0\3()J\1\0\3()V\1\0\4(J)V\1\0\6\1\0\4Code\1\0\1J\1\0\17LineNumberTable\1\0\nSourceFile\1\0\7address\1\0\5clear\1\0\20java/lang/Object\1\0\30java/util/zip/ZStreamRef\7\0\v\7\0\f\f\0\t\0\6\f\0\4\0\2\t\0\16\0\17\n\0\r\0\20\1\0\17ZStreamRef.java\0 \0\16\0\r\0\0\0\1\0\2\0\t\0\6\0\0\0\3\0\0\0\4\0\3\0\1\0\5\0\0\0*\0\3\0\3\0\0\0\n*\267\0\22*\37\265\0\21\261\0\0\0\1\0\7\0\0\0\16\0\3\0\0\0#\0\4\0$\0\t\0%\0\0\0\t\0\1\0\1\0\5\0\0\0\35\0\2\0\1\0\0\0\5*\264\0\21\255\0\0\0\1\0\7\0\0\0\6\0\1\0\0\0(\0\0\0\n\0\2\0\1\0\5\0\0\0\"\0\3\0\1\0\0\0\6*\t\265\0\21\261\0\0\0\1\0\7\0\0\0\n\0\2\0\0\0,\0\5\0-\0\1\0\10\0\0\0\2\0\23", 365) = 365 30059 mprotect(0x7fb314471000, 8192, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 30732555, SEEK_SET) = 30732555 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\215\271fiE\10\0\0E\10\0\0006\0\0\0", 30) = 30 30059 lseek(4, 30732639, SEEK_SET) = 30732639 30059 read(4, "\312\376\272\276\0\0\0003\0p\3\177\377\377\377\10\0\21\1\0\3()I\1\0\3()J\1\0\3()V\1\0\25(Ljava/lang/String;)V\1\0\7([BII)I\1\0\7([BII)V\1\0\6\1\0\4Code\1\0\nExceptions\1\0\1I\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\nSourceFile\1\0\rStackMapTable\1\0#Unexpected end of ZLIB input stream\1\0\1Z\1\0\2[B\1\0\naccess$000\1\0\naccess$100\1\0\tavailable\1\0\3buf\1\0\5close\1\0\16closeRequested\1\0\3eof\1\0\4fill\1\0\10finalize\1\0\17getBytesWritten\1\0\2in\1\0\3inf\1\0\24java/io/EOFException\1\0\23java/io/IOException\1\0\23java/io/InputStream\1\0\20java/lang/Object\1\0\23java/lang/Throwable\1\0\rjava/util/Map\1\0\26java/util/zip/Inflater\1\0!java/util/zip/InflaterInputStream\1\0\25java/util/zip/ZipFile\1\0000java/util/zip/ZipFile$ZipFileInflaterInputStream\1\0(java/util/zip/ZipFile$ZipFileInputStream\1\0\3len\1\0\4read\1\0\6remove\1\0\10setInput\1\0\4size\1\0\6this$0\1\0\4zfin\5\0\0\0\0\177\377\377\377\7\0 \7\0!\7\0\"\7\0#\7\0$\7\0%\7\0&\7\0'\7\0(\7\0)\7\0*\1\0\25Ljava/io/InputStream;\1\0\30Ljava/util/zip/Inflater;\1\0\27Ljava/util/zip/ZipFile;\1\0*Ljava/util/zip/ZipFile$ZipFileInputStream;\1\0&(Ljava/lang/Object;)Ljava/lang/Object;\1\0((Ljava/util/zip/ZipFile;)Ljava/util/Map;\1\0001(Ljava/io/InputStream;Ljava/util/zip/Inflater;"..., 2117) = 2117 30059 lseek(4, 55819391, SEEK_SET) = 55819391 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305BZt\203Dl\f\0\0l\f\0\0'\0\0\0", 30) = 30 30059 lseek(4, 55819460, SEEK_SET) = 55819460 30059 read(4, "\312\376\272\276\0\0\0003\0\227\10\0\25\10\0\31\10\0\32\10\0 \10\0:\10\0?\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4(I)V\1\0\4(J)J\1\0\5(JJ)J\1\0\25(Ljava/lang/String;)V\1\0\7([BII)I\1\0\7([BII)V\1\0\6\1\0\4Code\1\0\nExceptions\1\0\1I\1\0\30Invalid ZLIB data format\1\0\17LineNumberTable\1\0\nSourceFile\1\0\rStackMapTable\1\0\rStream closed\1\0#Unexpected end of ZLIB input stream\1\0\1Z\1\0\2[B\1\0\tavailable\1\0\1b\1\0\3buf\1\0\20buffer size <= 0\1\0\5close\1\0\6closed\1\0\3end\1\0\nensureOpen\1\0\4fill\1\0\10finished\1\0\ngetMessage\1\0\2in\1\0\3inf\1\0\7inflate\1\0\24java/io/EOFException\1\0\31java/io/FilterInputStream\1\0\23java/io/IOException\1\0\23java/io/InputStream\1\0\"java/lang/IllegalArgumentException\1\0#java/lang/IndexOutOfBoundsException\1\0\16java/lang/Math\1\0\36java/lang/NullPointerException\1\0\20java/lang/String\1\0!java/util/zip/DataFormatException\1\0\26java/util/zip/Inflater\1\0!java/util/zip/InflaterInputStream\1\0\32java/util/zip/ZipException\1\0\3len\1\0\4mark\1\0\30mark/reset not supported\1\0\rmarkSupported\1\0\3min\1\0\17needsDictionary\1\0\nneedsInput\1\0\24negative skip length\1\0\10reachEOF\1\0\4read\1\0\5reset\1\0\10setInput\1\0\rsingleByteBuf\1\0\4skip\1\0\23usesDefaultInflater\5\0\0"..., 3180) = 3180 30059 lseek(4, 43219860, SEEK_SET) = 43219860 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B\246\247\24h8\3\0\0008\3\0\0\26\0\0\0", 30) = 30 30059 lseek(4, 43219912, SEEK_SET) = 43219912 30059 read(4, "\312\376\272\276\0\0\0003\0/\3\177\377\377\377\10\0\n\1\0\3()V\1\0\5(II)I\1\0\25(Ljava/lang/String;)V\1\0\7([BI)[B\1\0\7([BII)I\1\0\6\1\0\4Code\1\0\24Detect premature EOF\1\0\nExceptions\1\0\17LineNumberTable\1\0\nSourceFile\1\0\rStackMapTable\1\0\2[B\1\0\6copyOf\1\0\24java/io/EOFException\1\0\23java/io/IOException\1\0\23java/io/InputStream\1\0\16java/lang/Math\1\0\20java/lang/Object\1\0\20java/util/Arrays\1\0\3min\1\0\4read\1\0\treadFully\1\0\20sun/misc/IOUtils\7\0\17\7\0\21\7\0\22\7\0\23\7\0\24\7\0\25\7\0\26\7\0\32\1\0\33(Ljava/io/InputStream;IZ)[B\f\0\10\0\3\f\0\27\0\4\f\0\20\0\6\f\0\30\0\7\f\0\10\0\5\n\0\34\0(\n\0\36\0'\n\0\37\0%\n\0 \0$\n\0!\0&\1\0\fIOUtils.java\0!\0\"\0 \0\0\0\0\0\2\0\1\0\10\0\3\0\1\0\t\0\0\0\35\0\1\0\1\0\0\0\5*\267\0,\261\0\0\0\1\0\f\0\0\0\6\0\1\0\0\0%\0\t\0\31\0#\0\2\0\t\0\0\1\5\0\4\0\7\0\0\0\212\3\274\10N\33\2\240\0\6\22\1<\0036\4\25\4\33\242\0v\25\4-\276\241\0)\33\25\4d-\276\21\4\0`\270\0+6\5-\276\25\4\25\5`\242\0\27-\25\4\25\5`\270\0-N\247\0\n-\276\25\4d6\5*-\25\4\25\5\266\0*6\6\25\6\234\0(\34\231\0\23\33\22\1\237\0\r\273\0\34Y\22\2\267\0)\277-\276\25\4\237\0\27-\25\4\270\0-N\247\0\r\25\4\25\6`6\4\247\377\212-\260\0\0\0\2\0\16\0\0\0\31\0\7\374\0\f\7\0\33\374\0\2\0012\374\0\6\1\374\0#\1\20\371\0\t\0\f\0\0\0J\0\22\0\0\0004\0\4\0005\0\f\0006\0\17\0007\0\25\0009\0\34\0:\0+\0;\0005\0<\0B\0?\0I\0A\0T\0B\0Y\0C\0c\0D\0m\0F\0t\0G\0~\0L\0\205\0M\0\210\0N\0\v\0\0\0\4\0\1\0\35\0\1\0\r\0\0\0\2\0.", 824) = 824 30059 lseek(5, 43, SEEK_SET) = 43 30059 read(5, "PK\3\4\n\0\0\10\10\0\261`\273D\247#_g\206\0\0\0\236\0\0\0\24\0\0\0", 30) = 30 30059 lseek(5, 93, SEEK_SET) = 93 30059 read(5, "E\214\275\n\3020\24F\367@\336!/pC\222\266\0242\266]\34\n\16\342~\325\24\3\371\221\336\253\340\333\33\4q9\303w\370\316\212%n\201\30\316a\247X\213WV\33)V\214\5\346\204D^\225\300\2326}\3351\353\271\341Tk\")\276\26\216\310w\257\244\230\23611Lo\257^x\213Y\212C~\244\220Ca\344\226\375\347\235\266pq\335\370\273,\310\241\255\306\366`\6p\243\262\316\233\301w\275\24R|\0", 134) = 134 30059 lseek(4, 56592787, SEEK_SET) = 56592787 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B@\364v\276\332\21\0\0\332\21\0\0\34\0\0\0", 30) = 30 30059 lseek(4, 56592845, SEEK_SET) = 56592845 30059 read(4, "\312\376\272\276\0\0\0003\0\345\10\0\7\10\0\10\10\0\34\10\0 \10\0005\10\0K\1\0\2\r\n\1\0\3\r\n \1\0\3()B\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4(I)I\1\0\4(I)V\1\0\5(II)I\1\0\25(Ljava/lang/Object;)Z\1\0,(Ljava/lang/String;)Ljava/lang/StringBuffer;\1\0\25(Ljava/lang/String;)V\1\0\5([B)I\1\0\10([BIII)V\1\0\6\1\0\4Code\1\0\5Entry\1\0\nExceptions\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\6Name: \1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\4UTF8\1\0\2[B\1\0\6append\1\0\tarraycopy\1\0\4attr\1\0\5clear\1\0\5clone\1\0\7entries\1\0\10entrySet\1\0\6equals\1\0\5flush\1\0\3get\1\0\rgetAttributes\1\0\10getBytes\1\0\ngetEntries\1\0\6getKey\1\0\21getMainAttributes\1\0\10getValue\1\0\7hasNext\1\0\10hashCode\1\0\6insert\1\0\27invalid manifest format\1\0\10iterator\1\0\30java/io/DataOutputStream\1\0\23java/io/IOException\1\0\23java/io/InputStream\1\0\23java/lang/Cloneable\1\0\23java/lang/Exception\1\0\16java/lang/Math\1\0\20java/lang/Object\1\0\20java/lang/String\1\0\26java/lang/StringBuffer\1\0\20java/lang/System\1\0\21java/util/HashMap\1\0\22java/util/Iterator\1\0\rjava/util/Map\1\0\23java/util/Map$Entry\1\0\rjava/util/Set\1\0\30java/util/jar/Attributes\1\0\26java/util/jar/Manifest\1\0&java/util/jar/Manifest$FastInputStream\1\0\6length"..., 4570) = 4570 30059 mprotect(0x7fb314473000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 56591220, SEEK_SET) = 56591220 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\364r\347\271\337\5\0\0\337\5\0\0\"\0\0\0", 30) = 30 30059 lseek(4, 56591284, SEEK_SET) = 56591284 30059 read(4, "\312\376\272\276\0\0\0003\0>\1\0\3()I\1\0\3()V\1\0\3()Z\1\0\4(I)V\1\0\5(II)I\1\0\4(J)J\1\0\5([B)V\1\0\7([BII)I\1\0\7([BII)V\1\0\6\1\0\4Code\1\0\nExceptions\1\0\1I\1\0\17LineNumberTable\1\0\nSourceFile\1\0\rStackMapTable\1\0\2[B\1\0\tarraycopy\1\0\tavailable\1\0\3buf\1\0\5close\1\0\5count\1\0\34java/io/ByteArrayInputStream\1\0\23java/io/IOException\1\0\23java/io/InputStream\1\0#java/lang/IndexOutOfBoundsException\1\0\16java/lang/Math\1\0\36java/lang/NullPointerException\1\0\20java/lang/System\1\0\4mark\1\0\rmarkSupported\1\0\3min\1\0\3pos\1\0\4read\1\0\5reset\1\0\4skip\7\0\27\7\0\30\7\0\31\7\0\32\7\0\33\7\0\34\7\0\35\1\0*(Ljava/lang/Object;ILjava/lang/Object;II)V\f\0\26\0\r\f\0\36\0\r\f\0!\0\r\f\0\24\0\21\f\0\n\0\2\f\0 \0\5\f\0\22\0,\t\0%\0-\t\0%\0.\t\0%\0/\t\0%\0000\n\0'\0001\n\0(\0001\n\0)\0002\n\0*\0001\n\0+\0003\1\0\31ByteArrayInputStream.java\0!\0%\0'\0\0\0\4\0\4\0\24\0\21\0\0\0\4\0!\0\r\0\0\0\4\0\36\0\r\0\0\0\4\0\26\0\r\0\0\0\n\0\1\0\n\0\7\0\1\0\v\0\0\0F\0\2\0\2\0\0\0\32*\267\0008*\3\265\0005*+\265\0007*\3\265\0006*+\276\265\0004\261\0\0\0\1\0\16\0\0\0\32\0\6\0\0\0g\0\4\0N\0\t\0h\0\16\0i\0\23\0j\0\31\0k\0\1\0\n\0\t\0\1\0\v\0\0\0U\0\3\0\4\0\0\0%*\267\0008*\3\265\0005*+\265\0007*\34\265\0006*\34\35`+\276\270\0:\265\0004*\34\265\0005\261\0\0\0\1\0\16\0\0\0\36\0\7\0\0\0{\0\4\0N\0\t\0|\0\16\0}\0\23\0~\0\37\0\177\0$\0\200\0!\0\"\0\1\0\1\0\v\0\0\0G\0\5\0\1\0\0\0$*\264\0006*\264\0004\242\0\32*\264\0007*Y\264\0006Z\4`\265\00063\21\0\377~\247\0\4\2\254\0\0\0\2\0\20\0\0\0\5\0\2\"@\1\0\16\0\0\0\6\0\1\0\0\0\220\0!\0\"\0\10\0\1\0\v\0\0\0\302\0\5\0\5\0\0\0e+\307\0\v\273\0*Y\267\0;\277\34\233\0\17\35\233\0\v\35+\276\34d\244\0\v\273\0(Y\267\0009\277*\264\0006*\264\0004"..., 1503) = 1503 30059 lseek(4, 56585103, SEEK_SET) = 56585103 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\342\2042\25\251\27\0\0\251\27\0\0\36\0\0\0", 30) = 30 30059 lseek(4, 56585163, SEEK_SET) = 56585163 30059 read(4, "\312\376\272\276\0\0\0003\1\7\10\0\21\10\0\37\10\0 \10\0#\10\0$\10\0/\10\0007\10\0B\10\0C\10\0D\10\0E\10\0I\10\0_\10\0a\10\0c\10\0n\1\0\2\r\n\1\0\3()B\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4(I)V\1\0\25(Ljava/lang/Object;)Z\1\0&(Ljava/lang/String;)Ljava/lang/String;\1\0,(Ljava/lang/String;)Ljava/lang/StringBuffer;\1\0\25(Ljava/lang/String;)V\1\0\25(Ljava/lang/String;)Z\1\0\5([B)I\1\0\10([BIII)V\1\0\2.\n\1\0\2: \1\0\6\1\0\4Code\1\0\34Duplicate name in Manifest: \1\0\"Ensure that the manifest does not \1\0\5Entry\1\0\nExceptions\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\20MANIFEST_VERSION\1\0\4Name\1\0\21SIGNATURE_VERSION\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\4UTF8\1\0\2[B\1\0\6append\1\0\tarraycopy\1\0\5clear\1\0\5clone\1\0\vcontainsKey\1\0\rcontainsValue\1\0\26entry in the jar file.\1\0\10entrySet\1\0\6equals\1\0\20equalsIgnoreCase\1\0\3get\1\0\10getBytes\1\0\6getKey\1\0\tgetLogger\1\0\10getValue\1\0\7hasNext\1\0\10hashCode\1\0\34have duplicate entries, and\n\1\0!individual sections in both your\n\1\0\24invalid header field\1\0\33invalid header field name: \1\0\7isEmpty\1\0\nisInstance\1\0\10iterator\1\0\rjava.util.jar\1\0\30java/io/DataOutputStream\1\0\23java/io/IOException\1\0\17java/lang/Class\1\0\34java/lang/ClassC"..., 6057) = 6057 30059 lseek(4, 56582846, SEEK_SET) = 56582846 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\240\254#\264\207\10\0\0\207\10\0\0,\0\0\0", 30) = 30 30059 lseek(4, 56582920, SEEK_SET) = 56582920 30059 read(4, "\312\376\272\276\0\0\0003\0I\1\0\3()B\1\0\3()I\1\0\3()V\1\0\4(J)J\1\0\5([B)I\1\0\7([BII)I\1\0\6\1\0\4Code\1\0\nExceptions\1\0\1I\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\nSourceFile\1\0\rStackMapTable\1\0\2[B\1\0\tarraycopy\1\0\tavailable\1\0\3buf\1\0\5close\1\0\5count\1\0\4fill\1\0\2in\1\0\31java/io/FilterInputStream\1\0\23java/io/IOException\1\0\23java/io/InputStream\1\0\20java/lang/System\1\0\26java/util/jar/Manifest\1\0&java/util/jar/Manifest$FastInputStream\1\0\4peek\1\0\3pos\1\0\4read\1\0\10readLine\1\0\4skip\7\0\17\7\0\27\7\0\30\7\0\31\7\0\32\7\0\33\7\0\34\1\0\25Ljava/io/InputStream;\1\0\30(Ljava/io/InputStream;)V\1\0\31(Ljava/io/InputStream;I)V\1\0*(Ljava/lang/Object;ILjava/lang/Object;II)V\f\0\24\0\n\f\0\36\0\n\f\0\22\0\17\f\0\26\0)\f\0\21\0\2\f\0\23\0\3\f\0\25\0\3\f\0!\0\4\f\0\37\0\6\f\0 \0\6\f\0\7\0*\f\0\7\0+\f\0\20\0,\t\0(\0-\t\0(\0.\t\0(\0/\t\0(\0000\n\0#\0007\n\0%\0001\n\0%\0002\n\0%\0004\n\0%\0005\n\0&\0009\n\0(\0003\n\0(\0006\n\0(\0008\1\0\17FastInputStream\1\0\rManifest.java\0 \0(\0#\0\0\0\3\0\2\0\22\0\17\0\0\0\2\0\24\0\n\0\0\0\2\0\36\0\n\0\0\0\v\0\0\0\7\0*\0\1\0\10\0\0\0%\0\3\0\2\0\0\0\t*+\21 \0\267\0F\261\0\0\0\1\0\f\0\0\0\n\0\2\0\0\1G\0\10\1H\0\0\0\7\0+\0\1\0\10\0\0\0?\0\2\0\3\0\0\0\27*+\267\0>*\3\265\0:*\3\265\0;*\34\274\10\265\0<\261\0\0\0\1\0\f\0\0\0\26\0\5\0\0\1K\0\5\1C\0\n\1D\0\17\1L\0\26\1M\0\1\0\37\0\2\0\2\0\10\0\0\0b\0\5\0\1\0\0\0001*\264\0;*\264\0:\241\0\24*\267\0D*\264\0;*\264\0:\241\0\5\2\254*\264\0<*Y\264\0;Z\4`\265\0;3\21\0\377~\254\0\0\0\2\0\16\0\0\0\3\0\1\34\0\f\0\0\0\26\0\5\0\0\1P\0\v\1Q\0\17\1R\0\32\1S\0\34\1V\0\t\0\0\0\4\0\1\0"..., 2183) = 2183 30059 lseek(4, 57485914, SEEK_SET) = 57485914 30059 read(4, "PK\3\4\n\0\0\0\0\0009\246\305B\266\311]\352(\32\0\0(\32\0\0\36\0\0\0", 30) = 30 30059 lseek(4, 57485974, SEEK_SET) = 57485974 30059 read(4, "\312\376\272\276\0\0\0003\0\321\3\377\376\37\200\3\0008\37\200\1\0\23$assertionsDisabled\1\0\3()B\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4()[B\1\0\4()[C\1\0\4(I)C\1\0\4(I)Z\1\0\5(II)I\1\0\5(II)Z\1\0\6(III)Z\1\0\t([BII[C)I\1\0\10\1\0\6\1\0\4Code\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\10OVERFLOW\1\0\7REPLACE\1\0\nSourceFile\1\0\rStackMapTable\1\0\tUNDERFLOW\1\0\1Z\1\0\2[B\1\0\2[C\1\0\5array\1\0\varrayOffset\1\0\6charAt\1\0\6decode\1\0\17decodeArrayLoop\1\0\20decodeBufferLoop\1\0\ndecodeLoop\1\0\26desiredAssertionStatus\1\0\3get\1\0\rgetByteBuffer\1\0\10hasArray\1\0\rhighSurrogate\1\0\7isError\1\0\fisMalformed2\1\0\fisMalformed3\1\0\fisMalformed4\1\0\21isNotContinuation\1\0\30isSupplementaryCodePoint\1\0\30java/lang/AssertionError\1\0\23java/lang/Character\1\0\17java/lang/Class\1\0\16java/lang/Math\1\0\20java/lang/String\1\0\17java/nio/Buffer\1\0\23java/nio/ByteBuffer\1\0\23java/nio/CharBuffer\1\0\37java/nio/charset/CharsetDecoder\1\0\34java/nio/charset/CoderResult\1\0\"java/nio/charset/CodingErrorAction\1\0\6length\1\0\5limit\1\0\7lookupN\1\0\flowSurrogate\1\0\tmalformed\1\0\22malformedForLength\1\0\24malformedInputAction\1\0\nmalformedN\1\0\3min\1\0\10position\1\0\3put\1\0\tremaining\1\0\vreplacement\1\0\27sun/nio/cs/Arr"..., 6696) = 6696 30059 lseek(4, 56579707, SEEK_SET) = 56579707 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305Bd\206#\363\2\f\0\0\2\f\0\0#\0\0\0", 30) = 30 30059 lseek(4, 56579772, SEEK_SET) = 56579772 30059 read(4, "\312\376\272\276\0\0\0003\0\251\10\0!\10\0#\10\0'\10\0(\10\0)\10\0000\10\0001\10\0002\10\0003\10\0004\10\0:\10\0;\10\0B\10\0C\10\0E\10\0F\10\0G\10\0Z\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\4(C)Z\1\0\4(I)C\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)I\1\0\25(Ljava/lang/String;)V\1\0\25(Ljava/lang/String;)Z\1\0\10\1\0\6\1\0\26CASE_INSENSITIVE_ORDER\1\0\nCLASS_PATH\1\0\fCONTENT_TYPE\1\0\nClass-Path\1\0\4Code\1\0\fContent-Type\1\0\26EXTENSION_INSTALLATION\1\0\16EXTENSION_LIST\1\0\16EXTENSION_NAME\1\0\26Extension-Installation\1\0\16Extension-List\1\0\16Extension-Name\1\0\1I\1\0\24IMPLEMENTATION_TITLE\1\0\22IMPLEMENTATION_URL\1\0\25IMPLEMENTATION_VENDOR\1\0\30IMPLEMENTATION_VENDOR_ID\1\0\26IMPLEMENTATION_VERSION\1\0\24Implementation-Title\1\0\22Implementation-URL\1\0\25Implementation-Vendor\1\0\30Implementation-Vendor-Id\1\0\26Implementation-Version\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\22Ljava/lang/String;\1\0\nMAIN_CLASS\1\0\20MANIFEST_VERSION\1\0\nMain-Class\1\0\20Manifest-Version\1\0\4Name\1\0\6SEALED\1\0\21SIGNATURE_VERSION\1\0\23SPECIFICATION_TITLE\1\0\24SPECIFICATION_VENDOR\1\0\25SPECIFICATION_VERSION\1\0\6Sealed\1\0\21Signature-Version\1\0\nSourceFile\1\0\23Specification-Title\1\0\24Specification-Vendor\1\0\25Specific"..., 3074) = 3074 30059 lseek(4, 56577928, SEEK_SET) = 56577928 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\305b{|\250\6\0\0\250\6\0\0-\0\0\0", 30) = 30 30059 lseek(4, 56578003, SEEK_SET) = 56578003 30059 read(4, "\312\376\272\276\0\0\0003\0C\1\0\23$assertionsDisabled\1\0\3()I\1\0\3()V\1\0\3()Z\1\0\4(I)C\1\0\4(I)I\1\0\4(I)Z\1\0\25(Ljava/lang/String;)I\1\0\10\1\0\6\1\0\26CASE_INSENSITIVE_ORDER\1\0\4Code\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\1Z\1\0\6charAt\1\0\7compare\1\0\26desiredAssertionStatus\1\0\7isLower\1\0\7isUpper\1\0\30java/lang/AssertionError\1\0\17java/lang/Class\1\0\20java/lang/Object\1\0\20java/lang/String\1\0\24java/util/Comparator\1\0\6length\1\0\21lowerCaseHashCode\1\0'sun/misc/ASCIICaseInsensitiveComparator\1\0\7toLower\1\0\7toUpper\7\0\27\7\0\30\7\0\31\7\0\32\7\0\33\7\0\36\1\0\26Ljava/util/Comparator;\1\0*Ljava/util/Comparator;\1\0;\1\0'(Ljava/lang/Object;Ljava/lang/Object;)I\1\0'(Ljava/lang/String;Ljava/lang/String;)I\f\0\1\0\21\f\0\v\0'\f\0\34\0\2\f\0\n\0\3\f\0\24\0\4\f\0\22\0\5\f\0\37\0\6\f\0\25\0\7\f\0\26\0\7\f\0\23\0+\t\0&\0,\t\0&\0-\n\0!\0/\n\0\"\0000\n\0#\0/\n\0$\0.\n\0$\0001\n\0&\0/\n\0&\0002\n\0&\0003\n\0&\0004\n\0&\0005\1\0#ASCIICaseInsensitiveComparator.java\0!\0&\0#\0\1\0%\0\2\0\31\0\v\0'\0\1\0\16\0\0\0\2\0(\20\30\0\1\0\21\0\0\0\t\0\1\0\n\0\3\0\1\0\f\0\0\0\35\0\1\0\1\0\0\0\5*\267\0:\261\0\0\0\1\0\r\0\0\0\6\0\1\0\0\0$\0\1\0\23\0+\0\1\0\f\0\0\0\346\0\2\0\t\0\0\0~+\266\0;>,\266\0;6\4\35\25\4\242\0\7\35\247\0\5\25\0046\5\0036\6\25\6\25\5\242\0Y+\25\6\266\0<6\7"..., 1704) = 1704 30059 mprotect(0x7fb314474000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 56565249, SEEK_SET) = 56565249 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B-\353\215\\J1\0\0J1\0\0\37\0\0\0", 30) = 30 30059 lseek(4, 56565310, SEEK_SET) = 56565310 30059 read(4, "\312\376\272\276\0\0\0003\2!\10\0&\10\0'\10\0(\10\0)\10\0*\10\0+\10\0,\10\0-\10\0008\10\0009\10\0:\10\0;\10\0G\10\0L\10\0u\10\0\255\10\0\256\10\0\257\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4()[B\1\0\4(B)V\1\0\4(I)I\1\0\25(I)Ljava/lang/String;\1\0\4(I)V\1\0\26(II)Ljava/lang/String;\1\0\25(Ljava/lang/Object;)I\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)I\1\0\25(Ljava/lang/String;)V\1\0\25(Ljava/lang/String;)Z\1\0\4(Z)V\1\0\5([B)V\1\0\7([BII)I\1\0\7([BII)V\1\0\1.\1\0\2./\1\0\4.DSA\1\0\3.EC\1\0\4.RSA\1\0\3.SF\1\0\1/\1\0\n/META-INF/\1\0\10\1\0\6\1\0\4Code\1\0\nDeprecated\1\0\7ENGLISH\1\0\nExceptions\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\22Ljava/lang/Object;\1\0\22Ljava/util/Locale;\1\0\vMANIFEST.MF\1\0\tMETA-INF/\1\0\24META-INF/MANIFEST.MF\1\0\4SIG-\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\1Z\1\0\2[B\1\0\33[Ljava/security/CodeSigner;\1\0\33[Ljava/security/CodeSource;\1\0![Ljava/security/cert/Certificate;\1\0\naccess$000\1\0\3add\1\0\6addAll\1\0\24adding pending block\1\0\vanyToVerify\1\0\6append\1\0\4baos\1\0\nbeginEntry\1\0\vbeginEntry \1\0\5certs\1\0\5close\1\0\vcontainsKey\1\0\10csdomain\1\0\5debug\1\0\fdoneWithMeta\1\0\17eagerValidation\1\0\20emptyEnumeration\1\0\vemptySigner\1\0\10endsWith\1\0\7entries\1\0\10entries2\1\0\nentryNames\1\0\10"..., 12618) = 12618 30059 mprotect(0x7fb314475000, 8192, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb314477000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 29075586, SEEK_SET) = 29075586 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\231\372\206uv\10\0\0v\10\0\0\36\0\0\0", 30) = 30 30059 lseek(4, 29075646, SEEK_SET) = 29075646 30059 read(4, "\312\376\272\276\0\0\0003\0n\10\0\5\10\0\v\10\0\23\10\0/\1\0\1(\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\25(Ljava/lang/Object;)Z\1\0,(Ljava/lang/String;)Ljava/lang/StringBuffer;\1\0\1)\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\nExceptions\1\0\1I\1\0\1J\1\0\17LineNumberTable\1\0\10Signer: \1\0\nSourceFile\1\0\rStackMapTable\1\0\6append\1\0\21defaultReadObject\1\0\6equals\1\0\3get\1\0\17getCertificates\1\0\21getSignerCertPath\1\0\fgetTimestamp\1\0\10hashCode\1\0\23java/io/IOException\1\0\31java/io/ObjectInputStream\1\0\24java/io/Serializable\1\0 java/lang/ClassNotFoundException\1\0\36java/lang/NullPointerException\1\0\20java/lang/Object\1\0\26java/lang/StringBuffer\1\0\27java/lang/StringBuilder\1\0\30java/security/CodeSigner\1\0\27java/security/Timestamp\1\0\33java/security/cert/CertPath\1\0\16java/util/List\1\0\6myhash\1\0\nreadObject\1\0\20serialVersionUID\1\0\16signerCertPath\1\0\ttimestamp\1\0\vtimestamp: \1\0\10toString\5^\242\372f\313!\232\255\7\0\36\7\0\37\7\0 \7\0!\7\0\"\7\0#\7\0$\7\0%\7\0&\7\0'\7\0(\7\0)\1\0\31Ljava/security/Timestamp;\1\0\35Ljava/security/cert/CertPath;\1\0\36(Ljava/io/ObjectInputStream;)V\1\0\25(I)Ljava/lang/Object;\1\0\33()Ljava/security/Timestamp;\1\0\37()Ljava/security/cert/CertPath;\1\0\22()Ljava/ut"..., 2166) = 2166 30059 lseek(4, 30480834, SEEK_SET) = 30480834 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\364U&.\10\3\0\0\10\3\0\0!\0\0\0", 30) = 30 30059 lseek(4, 30480897, SEEK_SET) = 30480897 30059 read(4, "\312\376\272\276\0\0\0003\0$\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\6\1\0\4Code\1\0\17EnclosingMethod\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\17hasMoreElements\1\0\20java/lang/Object\1\0\25java/util/Enumeration\1\0 java/util/NoSuchElementException\1\0\31java/util/jar/JarVerifier\1\0\33java/util/jar/JarVerifier$3\1\0\vnextElement\1\0\6this$0\7\0\f\7\0\r\7\0\16\7\0\17\7\0\20\1\0\33Ljava/util/jar/JarVerifier;\1\0=Ljava/lang/Object;Ljava/util/Enumeration;\1\0\24()Ljava/lang/Object;\1\0\36(Ljava/util/jar/JarVerifier;)V\f\0\22\0\30\f\0\4\0\2\f\0\21\0\1\t\0\27\0\34\n\0\23\0\35\n\0\25\0\35\n\0\27\0\36\1\0\20JarVerifier.java\0 \0\27\0\23\0\1\0\24\0\1\20\20\0\22\0\30\0\0\0\4\0\0\0\4\0\33\0\1\0\5\0\0\0\"\0\2\0\2\0\0\0\n*+\265\0\37*\267\0 \261\0\0\0\1\0\10\0\0\0\6\0\1\0\0\2\377\0\1\0\v\0\3\0\1\0\5\0\0\0\32\0\1\0\1\0\0\0\2\3\254\0\0\0\1\0\10\0\0\0\6\0\1\0\0\3\2\0\1\0\21\0\1\0\1\0\5\0\0\0 \0\2\0\1\0\0\0\10\273\0\25Y\267\0!\277\0\0\0\1\0\10\0\0\0\6\0\1\0\0\3\6\20A\0\21\0\32\0\1\0\5\0\0\0\35\0\1\0\1\0\0\0\5*\266\0\"\260\0\0\0\1\0\10\0\0\0\6\0\1\0\0\2\377\0\4\0\n\0\0\0\2\0#\0\6\0\0\0\4\0\26\0\0\0\t\0\0\0\2\0\31\0\7\0\0\0\n\0\1\0\27\0\0\0\0\0\0", 776) = 776 30059 lseek(4, 56562886, SEEK_SET) = 56562886 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\33l{h\372\10\0\0\372\10\0\0#\0\0\0", 30) = 30 30059 lseek(4, 56562951, SEEK_SET) = 56562951 30059 read(4, "\312\376\272\276\0\0\0003\0g\3\177\377\377\377\10\0\24\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\4()[B\1\0\25(I)Ljava/lang/String;\1\0\4(I)V\1\0&(Ljava/lang/String;)Ljava/lang/String;\1\0\25(Ljava/lang/String;)V\1\0\7([BI)[B\1\0\7([BII)V\1\0\10([BIII)V\1\0\6\1\0\4Code\1\0\nDeprecated\1\0\nExceptions\1\0\1I\1\0\17LineNumberTable\1\0\27Negative initial size: \1\0\31RuntimeVisibleAnnotations\1\0\nSourceFile\1\0\rStackMapTable\1\0\2[B\1\0\6append\1\0\tarraycopy\1\0\3buf\1\0\5close\1\0\6copyOf\1\0\5count\1\0\16ensureCapacity\1\0\4grow\1\0\35java/io/ByteArrayOutputStream\1\0\23java/io/IOException\1\0\24java/io/OutputStream\1\0$java/io/UnsupportedEncodingException\1\0\"java/lang/IllegalArgumentException\1\0#java/lang/IndexOutOfBoundsException\1\0\32java/lang/OutOfMemoryError\1\0\20java/lang/String\1\0\27java/lang/StringBuilder\1\0\20java/lang/System\1\0\20java/util/Arrays\1\0\5reset\1\0\4size\1\0\vtoByteArray\1\0\10toString\1\0\5write\1\0\7writeTo\7\0!\7\0\"\7\0#\7\0$\7\0%\7\0&\7\0'\7\0(\7\0)\7\0*\7\0+\1\0\26Ljava/lang/Deprecated;\1\0\31(Ljava/io/OutputStream;)V\1\0\31([BIILjava/lang/String;)V\1\0\34(I)Ljava/lang/StringBuilder;\1\0*(Ljava/lang/Object;ILjava/lang/Object;II)V\1\0-(Ljava/lang/String;)Ljava/lang/"..., 2298) = 2298 30059 munmap(0x7fb28ece4000, 364475) = 0 30059 close(5) = 0 30059 lseek(4, 59825451, SEEK_SET) = 59825451 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\2436\6\267J\6\0\0J\6\0\0\37\0\0\0", 30) = 30 30059 lseek(4, 59825512, SEEK_SET) = 59825512 30059 read(4, "\312\376\272\276\0\0\0003\0P\10\0\6\1\0\3()V\1\0%(Ljava/lang/String;)Ljava/lang/Class;\1\0&(Ljava/lang/String;)Ljava/lang/String;\1\0\25(Ljava/lang/String;)V\1\0\6.class\1\0\6\1\0\4Code\1\0\17EnclosingMethod\1\0\nExceptions\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\22Ljava/lang/String;\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\23URLClassLoader.java\1\0\naccess$000\1\0\naccess$100\1\0\6concat\1\0\tfindClass\1\0\vgetResource\1\0\23java/io/IOException\1\0 java/lang/ClassNotFoundException\1\0\23java/lang/Exception\1\0\20java/lang/Object\1\0\20java/lang/String\1\0\27java/net/URLClassLoader\1\0\31java/net/URLClassLoader$1\1\0'java/security/PrivilegedExceptionAction\1\0\7replace\1\0\3run\1\0\21sun/misc/Resource\1\0\25sun/misc/URLClassPath\1\0\6this$0\1\0\10val$name\7\0\27\7\0\30\7\0\31\7\0\32\7\0\33\7\0\34\7\0\35\7\0\36\7\0!\7\0\"\1\0\31Ljava/net/URLClassLoader;\1\0NLjava/lang/Object;Ljava/security/PrivilegedExceptionAction;\1\0\23()Ljava/lang/Class;\1\0\24()Ljava/lang/Object;\1\0\26(CC)Ljava/lang/String;\1\0.(Ljava/net/URLClassLoader;Ljava/lang/String;)V\1\0*(Ljava/lang/String;Ljava/lang/Throwable;)V\1\0((Ljava/lang/String;Z)Lsun/misc/Resource;\1\0002"..., 1610) = 1610 30059 lseek(4, 43682447, SEEK_SET) = 43682447 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B\246v\217\360\220\3\0\0\220\3\0\0\32\0\0\0", 30) = 30 30059 lseek(4, 43682503, SEEK_SET) = 43682503 30059 read(4, "\312\376\272\276\0\0\0003\0009\10\0\6\10\0\7\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\1:\1\0\3://\1\0\6\1\0\4Code\1\0\17LineNumberTable\1\0\nSourceFile\1\0\rStackMapTable\1\0\6append\1\0\16getDefaultPort\1\0\7getFile\1\0\7getHost\1\0\7getPort\1\0\vgetProtocol\1\0\20java/lang/Object\1\0\20java/lang/String\1\0\27java/lang/StringBuilder\1\0\fjava/net/URL\1\0\24sun/net/util/URLUtil\1\0\vtoLowerCase\1\0\10toString\1\0\17urlNoFragString\7\0\23\7\0\24\7\0\25\7\0\26\7\0\27\1\0\34(I)Ljava/lang/StringBuilder;\1\0\"(Ljava/net/URL;)Ljava/lang/String;\1\0-(Ljava/lang/String;)Ljava/lang/StringBuilder;\f\0\16\0\3\f\0\21\0\3\f\0\10\0\5\f\0\17\0\4\f\0\20\0\4\f\0\22\0\4\f\0\30\0\4\f\0\31\0\4\f\0\r\0 \f\0\r\0\"\n\0\33\0%\n\0\34\0)\n\0\35\0%\n\0\35\0*\n\0\35\0+\n\0\35\0,\n\0\36\0#\n\0\36\0$\n\0\36\0&\n\0\36\0'\n\0\36\0(\1\0\fURLUtil.java\0!\0\37\0\33\0\0\0\0\0\2\0\1\0\10\0\5\0\1\0\t\0\0\0\35\0\1\0\1\0\0\0\5*\267\0-\261\0\0\0\1\0\n\0\0\0\6\0\1\0\0\0!\0\t\0\32\0!\0\1\0\t\0\0\0\363\0\2\0\5\0\0\0r\273\0\35Y\267\0/L*\266\0007M,\306\0\25,\266\0.M+,\266\0002W+\22\2\266\0002W*\266\0006N-\306\0002-\266\0.N+-\266\0002W*\266\00046\4\25\4\2\240\0\t*\266\00036\4\25\4\2\237\0\17+\22\1\266\0002\25\4\266\0001W*\266\0005:\4\31\4\306\0\n+\31\4\266\0002W+\266\0000\260\0\0\0\2\0\f\0\0\0\33\0\4\375\0#\7\0\35\7\0\34\375\0%\7\0\34\1\372\0\21\374\0\21\7\0\34\0\n\0\0\0N\0\23\0\0\0-\0\10\0/\0\r\0000\0\21\0002\0\26\0003\0\34\0004\0#\0007\0(\0008\0,\0:\0001\0;\0007\0=\0=\0>\0C\0A\0I\0C\0O\0D\0[\0H\0a\0I\0f\0J\0m\0M\0\1\0\v\0\0\0\2\0008", 912) = 912 30059 lseek(4, 59823737, SEEK_SET) = 59823737 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\363\261!\30w\6\0\0w\6\0\0\35\0\0\0", 30) = 30 30059 lseek(4, 59823796, SEEK_SET) = 59823796 30059 read(4, "\312\376\272\276\0\0\0003\0[\10\0\7\10\0\24\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)Z\1\0\1/\1\0\6\1\0\4Code\1\0\17EnclosingMethod\1\0\nExceptions\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\naccess$100\1\0\10endsWith\1\0\6equals\1\0\4file\1\0\7getFile\1\0\tgetLoader\1\0\vgetProtocol\1\0\23java/io/IOException\1\0\23java/lang/Exception\1\0\20java/lang/Object\1\0\20java/lang/String\1\0\fjava/net/URL\1\0'java/security/PrivilegedExceptionAction\1\0\4lmap\1\0\3run\1\0\25sun/misc/URLClassPath\1\0\27sun/misc/URLClassPath$3\1\0 sun/misc/URLClassPath$FileLoader\1\0\37sun/misc/URLClassPath$JarLoader\1\0\34sun/misc/URLClassPath$Loader\1\0\6this$0\1\0\7val$url\7\0\30\7\0\31\7\0\32\7\0\33\7\0\34\7\0\35\7\0 \7\0!\7\0\"\7\0#\7\0$\1\0\16Ljava/net/URL;\1\0\23Ljava/util/HashMap;\1\0\27Lsun/misc/URLClassPath;\1\0[Ljava/lang/Object;Ljava/security/PrivilegedExceptionAction;\1\0\24()Ljava/lang/Object;\1\0\21(Ljava/net/URL;)V\1\0 ()Lsun/misc/URLClassPath$Loader;\1\0((Lsun/misc/URLClassPath;Ljava/net/URL;)V\1\0004(Lsun/misc/URLClassPath;)Ljava/net/URLStreamHandler;\1\0.(Ljava/net/URL"..., 1655) = 1655 30059 lseek(4, 59813361, SEEK_SET) = 59813361 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\256AX\25E(\0\0E(\0\0%\0\0\0", 30) = 30 30059 lseek(4, 59813428, SEEK_SET) = 59813428 30059 read(4, "\312\376\272\276\0\0\0003\1\273\10\0\t\10\0\n\10\0\26\10\0\35\10\0\36\10\0&\10\0E\10\0`\1\0\0\1\0\2!/\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\26(II)Ljava/lang/String;\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)I\1\0&(Ljava/lang/String;)Ljava/lang/String;\1\0\25(Ljava/lang/String;)V\1\0\25(Ljava/lang/String;)Z\1\0'(Ljava/lang/String;Ljava/lang/String;)V\1\0\1/\1\0\10\1\0\6\1\0\nCLASS_PATH\1\0\4Code\1\0\nExceptions\1\0\fInnerClasses\1\0\20Invalid Jar file\1\0\rInvalid index\1\0\fJAVA_VERSION\1\0\17LineNumberTable\1\0\22Ljava/lang/String;\1\0\4Name\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\17UA-Java-Version\1\0\1Z\1\0\23[Ljava/lang/Object;\1\0\17[Ljava/net/URL;\1\0\vaccess$1000\1\0\vaccess$1100\1\0\naccess$400\1\0\naccess$500\1\0\naccess$502\1\0\naccess$600\1\0\naccess$700\1\0\naccess$702\1\0\naccess$800\1\0\naccess$900\1\0\3add\1\0\6append\1\0\5check\1\0\33checkExtensionsDependencies\1\0\10checkJar\1\0\rcheckResource\1\0\5close\1\0\6closed\1\0\vcountTokens\1\0\3csu\1\0\6decode\1\0\fdoPrivileged\1\0\nencodePath\1\0\nensureOpen\1\0\7entries\1\0\6equals\1\0\6exists\1\0\4file\1\0\ffindResource\1\0\6forJar\1\0\3get\1\0\ngetBaseURL\1\0\fgetClassPath\1\0\fgetException\1\0\7getFile\1\0\10getIndex\1\0\vgetJarEntry"..., 10309) = 10309 30059 lseek(4, 59810677, SEEK_SET) = 59810677 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305Bx\rfE<\n\0\0<\n\0\0\"\0\0\0", 30) = 30 30059 lseek(4, 59810741, SEEK_SET) = 59810741 30059 read(4, "\312\376\272\276\0\0\0003\0z\10\0\t\10\0)\1\0\3()I\1\0\3()V\1\0\25(Ljava/lang/String;)V\1\0\6\1\0\4Code\1\0\nExceptions\1\0\4HEAD\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\nSourceFile\1\0\rStackMapTable\1\0\naccess$200\1\0\4base\1\0\5check\1\0\10checkJar\1\0\5close\1\0\nencodePath\1\0\ffindResource\1\0\ngetBaseURL\1\0\fgetClassPath\1\0\16getInputStream\1\0\ngetJarFile\1\0\vgetResource\1\0\17getResponseCode\1\0\7jarfile\1\0\21java/io/Closeable\1\0\23java/io/IOException\1\0\23java/io/InputStream\1\0\23java/lang/Exception\1\0\"java/lang/IllegalArgumentException\1\0\20java/lang/Object\1\0\20java/lang/String\1\0\32java/net/HttpURLConnection\1\0\31java/net/JarURLConnection\1\0\36java/net/MalformedURLException\1\0\fjava/net/URL\1\0\26java/net/URLConnection\1\0\25java/util/jar/JarFile\1\0\4name\1\0\16openConnection\1\0\nopenStream\1\0\20setRequestMethod\1\0\25sun/misc/URLClassPath\1\0\37sun/misc/URLClassPath$JarLoader\1\0\34sun/misc/URLClassPath$Loader\1\0\36sun/misc/URLClassPath$Loader$1\1\0\25sun/net/www/ParseUtil\7\0\34\7\0\35\7\0\36\7\0\37\7\0 \7\0!\7\0\"\7\0#\7\0$\7\0%\7\0&\7\0'\7\0(\7\0-\7\0.\7\0/\7\0000\7\0001\1\0\16Ljava/net/URL;\1\0\27Ljava/util/jar/JarFile;\1\0\27()Ljava/io/InputStream;\1\0\20()Ljava/net/URL;\1\0\21()[Ljava/net/"..., 2620) = 2620 30059 stat("/software/jdk1.7.0_25/jre/lib/ext/localedata.jar", {st_mode=S_IFREG|0644, st_size=1024028, ...}) = 0 30059 stat("/software/jdk1.7.0_25/jre/lib/ext/sunec.jar", {st_mode=S_IFREG|0644, st_size=15943, ...}) = 0 30059 stat("/software/jdk1.7.0_25/jre/lib/ext/zipfs.jar", {st_mode=S_IFREG|0644, st_size=68654, ...}) = 0 30059 stat("/software/jdk1.7.0_25/jre/lib/ext/sunjce_provider.jar", {st_mode=S_IFREG|0644, st_size=198317, ...}) = 0 30059 stat("/software/jdk1.7.0_25/jre/lib/ext/dnsns.jar", {st_mode=S_IFREG|0644, st_size=8934, ...}) = 0 30059 stat("/software/jdk1.7.0_25/jre/lib/ext/sunpkcs11.jar", {st_mode=S_IFREG|0644, st_size=238303, ...}) = 0 30059 lseek(4, 59809567, SEEK_SET) = 59809567 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\215~G\245\v\4\0\0\v\4\0\0-\0\0\0", 30) = 30 30059 lseek(4, 59809642, SEEK_SET) = 59809642 30059 read(4, "\312\376\272\276\0\0\0003\0;\10\0\5\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\30(Ljava/lang/Throwable;)V\1\0\2: \1\0\6\1\0\4Code\1\0\rConstantValue\1\0\1J\1\0\17LineNumberTable\1\0\nSourceFile\1\0\rStackMapTable\1\0\6append\1\0\texception\1\0\10getCause\1\0\10getClass\1\0\fgetException\1\0\7getName\1\0\17java/lang/Class\1\0\23java/lang/Exception\1\0\20java/lang/Object\1\0\20java/lang/String\1\0\27java/lang/StringBuilder\1\0\23java/lang/Throwable\1\0'java/security/PrivilegedActionException\1\0\20serialVersionUID\1\0\10toString\5A\217S\366R\21\365\272\7\0\23\7\0\24\7\0\25\7\0\26\7\0\27\7\0\30\7\0\31\1\0\25Ljava/lang/Exception;\1\0\23()Ljava/lang/Class;\1\0\27()Ljava/lang/Exception;\1\0\30(Ljava/lang/Exception;)V\1\0\27()Ljava/lang/Throwable;\1\0-(Ljava/lang/String;)Ljava/lang/StringBuilder;\f\0\16\0%\f\0\6\0\3\f\0\20\0&\f\0\22\0\2\f\0\33\0\2\f\0\6\0\4\f\0\r\0*\t\0$\0+\n\0\36\0.\n\0\37\0/\n\0\37\0000\n\0 \0-\n\0\"\0,\n\0\"\0/\n\0\"\0001\1\0\36PrivilegedActionException.java\0!\0$\0\37\0\0\0\2\0\32\0\32\0\t\0\1\0\10\0\0\0\2\0\34\0\2\0\16\0%\0\0\0\4\0\1\0\6\0(\0\1\0\7\0\0\0.\0\2\0\2\0\0\0\16*\1\300\0#\267\0005*+\265\0002\261\0\0\0\1\0\n\0\0\0\16\0\3\0\0\0B\0\10\0C\0\r\0D\0\1\0\21\0'\0\1\0\7\0\0\0\35\0\1\0\1\0\0\0\5*\264\0002\260\0\0\0\1\0\n\0\0\0\6\0\1\0\0\0V\0\1\0\17\0)\0\1\0\7\0\0\0\35\0\1\0\1\0\0\0\5*\264\0002\260\0\0\0\1\0\n\0\0\0\6\0\1\0\0\0b\0\1\0\33\0\2\0\1\0\7\0\0\0_\0\2\0\2\0\0\0001*\266\0006\266\0003L*\264\0002\306\0#\273\0\"Y\267\0007+\266\0009\22\1\266\0009*\264\0002\266\0004\266\0009\266\0008\247\0\4+\260\0\0\0\2\0\f\0\0\0\f\0\2\374"..., 1035) = 1035 30059 lseek(4, 58651956, SEEK_SET) = 58651956 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\31\227y\213\366\n\0\0\366\n\0\0'\0\0\0", 30) = 30 30059 lseek(4, 58652025, SEEK_SET) = 58652025 30059 read(4, "\312\376\272\276\0\0\0003\0\222\10\0\16\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)V\1\0\6\1\0\4Code\1\0\17EnclosingMethod\1\0\nExceptions\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\25Ljava/io/PrintStream;\1\0\10Opening \1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\23[Ljava/lang/String;\1\0\naccess$300\1\0\naccess$400\1\0\naccess$500\1\0\naccess$502\1\0\naccess$600\1\0\naccess$700\1\0\naccess$702\1\0\naccess$800\1\0\naccess$900\1\0\6append\1\0\vcontainsKey\1\0\tdumpStack\1\0\nensureOpen\1\0\3err\1\0\vgetJarFiles\1\0\vgetJarIndex\1\0\23java/io/IOException\1\0\23java/io/PrintStream\1\0\23java/lang/Exception\1\0\20java/lang/Object\1\0\27java/lang/StringBuilder\1\0\20java/lang/System\1\0\20java/lang/Thread\1\0\36java/net/MalformedURLException\1\0\fjava/net/URL\1\0'java/security/PrivilegedExceptionAction\1\0\21java/util/HashMap\1\0\7println\1\0\3put\1\0\3run\1\0\21sun/misc/JarIndex\1\0\25sun/misc/URLClassPath\1\0\37sun/misc/URLClassPath$JarLoader\1\0!sun/misc/URLClassPath$JarLoader$1\1\0\24sun/net/util/URLUtil\1\0\6this$0\1\0\10toString\1\0\17urlNoFragString\7\0\22\7\0#\7\0$\7\0%\7\0&\7\0'\7\0(\7\0)\7\0*\7\0+\7\0,\7\0-\7\0001\7\0002\7\0003\7\0004\7\0005\1\0!Lsun/misc/URLClas"..., 2806) = 2806 30059 lseek(4, 58650909, SEEK_SET) = 58650909 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305Bj\326H\r\335\3\0\0\335\3\0\0\34\0\0\0", 30) = 30 30059 lseek(4, 58650967, SEEK_SET) = 58650967 30059 read(4, "\312\376\272\276\0\0\0003\0@\10\0\3\10\0\34\1\0\0\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\25(Ljava/lang/Object;)Z\1\0&(Ljava/lang/String;)Ljava/lang/String;\1\0\25(Ljava/lang/String;)V\1\0\25(Ljava/lang/String;)Z\1\0\6\1\0\4Code\1\0\17LineNumberTable\1\0\22Ljava/lang/String;\1\0\nSourceFile\1\0\rStackMapTable\1\0\6decode\1\0\6equals\1\0\20equalsIgnoreCase\1\0\6exists\1\0\7getFile\1\0\7getHost\1\0\7getPath\1\0\fjava/io/File\1\0\20java/lang/Object\1\0\20java/lang/String\1\0\fjava/net/URL\1\0\tlocalhost\1\0\4path\1\0\26sun/misc/FileURLMapper\1\0\25sun/net/www/ParseUtil\1\0\3url\7\0\30\7\0\31\7\0\32\7\0\33\7\0\36\7\0\37\1\0\16Ljava/net/URL;\1\0\21(Ljava/net/URL;)V\f\0\35\0\16\f\0 \0'\f\0\v\0\5\f\0\24\0\6\f\0\22\0\7\f\0\25\0\4\f\0\26\0\4\f\0\27\0\4\f\0\v\0\t\f\0\23\0\n\f\0\21\0\10\t\0%\0)\t\0%\0*\n\0!\0,\n\0!\0001\n\0\"\0+\n\0#\0-\n\0#\0002\n\0$\0.\n\0$\0/\n\0%\0000\n\0&\0003\1\0\22FileURLMapper.java\0!\0%\0\"\0\0\0\2\0\0\0 \0'\0\0\0\0\0\35\0\16\0\0\0\3\0\1\0\v\0(\0\1\0\f\0\0\0*\0\2\0\2\0\0\0\n*\267\0008*+\265\0005\261\0\0\0\1\0\r\0\0\0\16\0\3\0\0\0000\0\4\0001\0\t\0002\0\1\0\27\0\4\0\1\0\f\0\0\0\205\0\2\0\2\0\0\0E*\264\0004\306\0\10*\264\0004\260*\264\0005\266\0\265\0004*\264\0004\260\0\0\0\2\0\20\0\0\0\n\0\3\f\374\0\35\7\0#\25\0\r\0\0\0\36\0\7\0\0\0:\0\7\0;\0\f\0=\0\24\0>\0*\0?\0005\0@\0@\0B\0\1\0\24\0\6\0\1\0\f\0\0\0O\0\3\0\3\0\0\0\31*\266\0=L+\307\0\5\3\254\273\0!Y+\267\0007M,\266\0006\254\0\0\0\2\0\20\0\0\0\10\0\1\374\0\v\7\0#\0\r\0\0\0\26\0\5\0\0\0I\0\5\0J\0\t\0K\0\v\0M\0\24\0N\0\1\0\17\0\0\0\2\0?", 989) = 989 30059 stat("/nfs/users/nfs_j/jkb/work/cram/cramtools-2.1.jar", {st_mode=S_IFREG|0644, st_size=5750715, ...}) = 0 30059 stat("/nfs/users/nfs_j/jkb/work/cram/cramtools-2.1.jar", {st_mode=S_IFREG|0644, st_size=5750715, ...}) = 0 30059 open("/nfs/users/nfs_j/jkb/work/cram/cramtools-2.1.jar", O_RDONLY) = 5 30059 fstat(5, {st_mode=S_IFREG|0644, st_size=5750715, ...}) = 0 30059 fcntl(5, F_GETFD) = 0 30059 fcntl(5, F_SETFD, FD_CLOEXEC) = 0 30059 read(5, "PK\3\4", 4) = 4 30059 lseek(5, 0, SEEK_END) = 5750715 30059 lseek(5, 5750587, SEEK_SET) = 5750587 30059 read(5, "l/ftp/FTPStream.classPK\1\2\24\3\n\0\0\10\10\0\16SrC`F\33A\312\7\0\0\254\17\0\0'\0\0\0\0\0\0\0\0\0\0\0\244\201\0066R\0net/sf/samtools/util/ftp/FTPUtils.classPK\5\6\0\0\0\0'\17'\17\220\201\5\0\25>R\0\0\0", 128) = 128 30059 mmap(NULL, 364475, PROT_READ, MAP_SHARED, 5, 0x523000) = 0x7fb28ece4000 30059 lseek(4, 56813236, SEEK_SET) = 56813236 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\310\2670]\264\25\0\0\264\25\0\0\27\0\0\0", 30) = 30 30059 lseek(4, 56813289, SEEK_SET) = 56813289 30059 read(4, "\312\376\272\276\0\0\0003\1\34\10\0\v\10\0\31\10\0\32\10\0$\10\0'\10\0(\10\0)\10\0,\10\0r\10\0w\1\0\1\n\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\26(II)Ljava/lang/String;\1\0\23(Ljava/io/Writer;)V\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)I\1\0&(Ljava/lang/String;)Ljava/lang/String;\1\0\25(Ljava/lang/String;)V\1\0\25(Ljava/lang/String;)Z\1\0'(Ljava/lang/String;Ljava/lang/String;)V\1\0\26([Ljava/lang/String;)V\1\0\4.jar\1\0\1/\1\0\10\1\0\6\1\0\1C\1\0\4Code\1\0\rConstantValue\1\0\5Entry\1\0\nExceptions\1\0\nINDEX_NAME\1\0\fInnerClasses\1\0\27JarIndex-Version: 1.0\n\n\1\0\17LineNumberTable\1\0\22Ljava/lang/String;\1\0\tMETA-INF/\1\0\23META-INF/INDEX.LIST\1\0\24META-INF/MANIFEST.MF\1\0\nSourceFile\1\0\rStackMapTable\1\0\4UTF8\1\0\1Z\1\0\23[Ljava/lang/String;\1\0\3add\1\0\vaddExplicit\1\0\taddToList\1\0\6append\1\0\5close\1\0\6concat\1\0\10contains\1\0\10endsWith\1\0\7entries\1\0\10entrySet\1\0\6equals\1\0\5flush\1\0\3get\1\0\16getInputStream\1\0\vgetJarEntry\1\0\vgetJarFiles\1\0\vgetJarIndex\1\0\6getKey\1\0\7getName\1\0\vgetProperty\1\0\10getValue\1\0\17hasMoreElements\1\0\7hasNext\1\0\10indexMap\1\0\visDirectory\1\0\10iterator\1\0\10jarFiles\1\0\6jarMap\1\0\26java/io/BufferedReader\1\0\26java/io/BufferedWriter\1\0\fjava/io/F"..., 5556) = 5556 30059 lseek(4, 56553965, SEEK_SET) = 56553965 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B\301\223(u\231\"\0\0\231\"\0\0\"\0\0\0", 30) = 30 30059 lseek(4, 56554029, SEEK_SET) = 56554029 30059 read(4, "\312\376\272\276\0\0\0003\1\202\10\0$\10\0%\10\0&\10\0'\10\0(\10\0)\10\0*\10\0+\10\0006\10\0007\10\0008\10\0:\10\0A\10\0B\10\0C\10\0D\10\0E\10\0F\10\0G\10\0M\10\0N\10\0O\10\0S\10\0T\10\0U\10\0Z\10\0[\10\0v\10\0w\10\0x\10\0y\10\0{\10\0|\10\0}\10\0\213\1\0\t against \1\0\26 appears to depend on \1\0\25 appers to depend on \1\0\33 attribute in its manifest \1\0\31 but does not define the \1\0\24 installation failed\1\0\30 installation successful\1\0\r looking for \1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)I\1\0&(Ljava/lang/String;)Ljava/lang/String;\1\0\25(Ljava/lang/String;)V\1\0'(Ljava/lang/String;Ljava/lang/String;)V\1\0\30(Ljava/lang/Throwable;)V\1\0\1-\1\0\4.jar\1\0\4.zip\1\0\6\1\0\23Checking extension \1\0\4Code\1\0\rConstantValue\1\0\5DEBUG\1\0\16EXTENSION_LIST\1\0\16EXTENSION_NAME\1\0\nExceptions\1\0\24Extension Installed \1\0\"Extension not currently installed \1\0\31Extensions are compatible\1\0\33Extensions are incompatible\1\0.Extensions require an upgrade or vendor switch\1\0\22Failed installing \1\0\7Found !\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\23Ljava/lang/Boolean;\1\0\22Ljava/lang/String;\1\0\4Name\1\0\24No dependencies for \1\0&Not Found ! adding to the classloader \1\0\26Re"..., 8857) = 8857 30059 mprotect(0x7fb314478000, 8192, PROT_READ|PROT_WRITE) = 0 30059 lseek(5, 43, SEEK_SET) = 43 30059 read(5, "PK\3\4\n\0\0\10\10\0\261`\273D\247#_g\206\0\0\0\236\0\0\0\24\0\0\0", 30) = 30 30059 lseek(5, 93, SEEK_SET) = 93 30059 read(5, "E\214\275\n\3020\24F\367@\336!/pC\222\266\0242\266]\34\n\16\342~\325\24\3\371\221\336\253\340\333\33\4q9\303w\370\316\212%n\201\30\316a\247X\213WV\33)V\214\5\346\204D^\225\300\2326}\3351\353\271\341Tk\")\276\26\216\310w\257\244\230\23611Lo\257^x\213Y\212C~\244\220Ca\344\226\375\347\235\266pq\335\370\273,\310\241\255\306\366`\6p\243\262\316\233\301w\275\24R|\0", 134) = 134 30059 lseek(5, 93, SEEK_SET) = 93 30059 read(5, "E\214\275\n\3020\24F\367@\336!/pC\222\266\0242\266]\34\n\16\342~\325\24\3\371\221\336\253\340\333\33\4q9\303w\370\316\212%n\201\30\316a\247X\213WV\33)V\214\5\346\204D^\225\300\2326}\3351\353\271\341Tk\")\276\26\216\310w\257\244\230\23611Lo\257^x\213Y\212C~\244\220Ca\344\226\375\347\235\266pq\335\370\273,\310\241\255\306\366`\6p\243\262\316\233\301w\275\24R|\0", 134) = 134 30059 lseek(4, 56804571, SEEK_SET) = 56804571 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B_%+n/\7\0\0/\7\0\0'\0\0\0", 30) = 30 30059 lseek(4, 56804640, SEEK_SET) = 56804640 30059 read(4, "\312\376\272\276\0\0\0003\0S\1\0\3()I\1\0\3()J\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\6\1\0\4Code\1\0\17EnclosingMethod\1\0\nExceptions\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\22Ljava/lang/String;\1\0\nSourceFile\1\0\naccess$400\1\0\naccess$500\1\0\rcheckResource\1\0\17getCertificates\1\0\16getCodeSigners\1\0\20getCodeSourceURL\1\0\20getContentLength\1\0\16getInputStream\1\0\vgetManifest\1\0\7getName\1\0\7getSize\1\0\6getURL\1\0\23java/io/IOException\1\0\26java/util/jar/JarEntry\1\0\25java/util/jar/JarFile\1\0\21sun/misc/Resource\1\0\25sun/misc/URLClassPath\1\0\37sun/misc/URLClassPath$JarLoader\1\0!sun/misc/URLClassPath$JarLoader$2\1\0\6this$0\1\0\tval$entry\1\0\10val$name\1\0\7val$url\7\0\31\7\0\32\7\0\33\7\0\34\7\0\35\7\0\36\7\0\37\1\0\16Ljava/net/URL;\1\0\30Ljava/util/jar/JarEntry;\1\0!Lsun/misc/URLClassPath$JarLoader;\1\0\27()Ljava/io/InputStream;\1\0\20()Ljava/net/URL;\1\0\35()[Ljava/security/CodeSigner;\1\0#()[Ljava/security/cert/Certificate;\1\0\32()Ljava/util/jar/Manifest;\1\0/(Ljava/util/zip/ZipEntry;)Ljava/io/InputStream;\1\0001(Lsun/misc/URLClassPath$JarLoader;)Ljava/net/URL;\1\0:(Lsun/misc/URLClassPath$JarLoader;)Ljava/util/jar/JarFile;\1\0@(Ljava/lang/String;ZLj"..., 1839) = 1839 30059 lseek(4, 59803679, SEEK_SET) = 59803679 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\272\371R\314\321\10\0\0\321\10\0\0\27\0\0\0", 30) = 30 30059 lseek(4, 59803732, SEEK_SET) = 59803732 30059 read(4, "\312\376\272\276\0\0\0003\0c\3\177\377\377\377\10\0\16\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4()[B\1\0\5(II)I\1\0\25(Ljava/lang/String;)V\1\0\7([BI)[B\1\0\7([BII)I\1\0\6\1\0\4Code\1\0\24Detect premature EOF\1\0\nExceptions\1\0\17LineNumberTable\1\0\nSourceFile\1\0\rStackMapTable\1\0\2[B\1\0\21cachedInputStream\1\0\3cis\1\0\5close\1\0\6copyOf\1\0\rcurrentThread\1\0\rgetByteBuffer\1\0\10getBytes\1\0\17getCertificates\1\0\16getCodeSigners\1\0\20getCodeSourceURL\1\0\20getContentLength\1\0\16getInputStream\1\0\vgetManifest\1\0\7getName\1\0\6getURL\1\0\tinterrupt\1\0\vinterrupted\1\0\24java/io/EOFException\1\0\23java/io/IOException\1\0\23java/io/InputStream\1\0\36java/io/InterruptedIOException\1\0\16java/lang/Math\1\0\20java/lang/Object\1\0\20java/lang/Thread\1\0\23java/lang/Throwable\1\0\20java/util/Arrays\1\0\3min\1\0\4read\1\0\21sun/misc/Resource\1\0\24sun/nio/ByteBuffered\7\0\23\7\0%\7\0&\7\0'\7\0(\7\0)\7\0*\7\0+\7\0,\7\0-\7\0000\7\0001\1\0\25Ljava/io/InputStream;\1\0\27()Ljava/io/InputStream;\1\0\24()Ljava/lang/Thread;\1\0\20()Ljava/net/URL;\1\0\27()Ljava/nio/ByteBuffer;\1\0\35()[Ljava/security/CodeSigner;\1\0#()[Ljava/security/cert/Certificate;\1\0\32()Ljava/util/jar/Manifest;\f\0\25\0>\f\0\36\0\3\f\0\f\0\5\f\0\26\0\5\f\0#\0\5\f\0$\0\6\f\0.\0\10\f\0\27"..., 2257) = 2257 30059 lseek(4, 56544693, SEEK_SET) = 56544693 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\314|\26\360\3$\0\0\3$\0\0\27\0\0\0", 30) = 30 30059 lseek(4, 56544746, SEEK_SET) = 56544746 30059 read(4, "\312\376\272\276\0\0\0003\1p\10\0\n\10\0\32\10\0\33\10\0\34\10\0\35\10\0!\10\0007\10\0\204\10\0\224\1\0\0\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4(I)I\1\0\4(I)V\1\0\5(II)I\1\0\26(II)Ljava/lang/String;\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)I\1\0&(Ljava/lang/String;)Ljava/lang/String;\1\0\25(Ljava/lang/String;)V\1\0\25(Ljava/lang/String;)Z\1\0'(Ljava/lang/String;Ljava/lang/String;)V\1\0\30(Ljava/lang/Throwable;)V\1\0\2, \1\0\n, version \1\0\r.package-info\1\0\1/\1\0\10\1\0\6\1\0\4Code\1\0\24Empty version string\1\0\nExceptions\1\0\24IMPLEMENTATION_TITLE\1\0\25IMPLEMENTATION_VENDOR\1\0\26IMPLEMENTATION_VERSION\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\21Ljava/lang/Class;\1\0\22Ljava/lang/String;\1\0\4Name\1\0\20PackageInfoProxy\1\0\31RuntimeVisibleAnnotations\1\0\6SEALED\1\0\23SPECIFICATION_TITLE\1\0\24SPECIFICATION_VENDOR\1\0\25SPECIFICATION_VERSION\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\2[I\1\0\24[Ljava/lang/Package;\1\0\23[Ljava/lang/String;\1\0\2\\.\1\0\naccess$000\1\0\naccess$100\1\0\naccess$200\1\0\naccess$400\1\0\raddSuppressed\1\0\6append\1\0\5close\1\0\6concat\1\0\23defineSystemPackage\1\0\fdoPrivileged\1\0\6equals\1\0\20equalsIgnoreCase\1\0\16forInputString\1\0\7forName\1\0\3ge"..., 9219) = 9219 30059 mprotect(0x7fb31447a000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 56539272, SEEK_SET) = 56539272 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\307wiz\342\24\0\0\342\24\0\0-\0\0\0", 30) = 30 30059 lseek(4, 56539347, SEEK_SET) = 56539347 30059 read(4, "\312\376\272\276\0\0\0003\1\26\10\0\n\10\0\v\10\0\f\10\0\r\10\0\33\10\0\34\10\0\35\10\0(\10\0H\1\0\v computed \1\0\v manifest \1\0\22 digest error for \1\0\10 digest=\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4()[B\1\0\4(B)V\1\0\4(I)V\1\0\26(II)Ljava/lang/String;\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)V\1\0\25(Ljava/lang/String;)Z\1\0\7([BII)V\1\0\7([B[B)Z\1\0\7-DIGEST\1\0\2./\1\0\1/\1\0\10\1\0\6\1\0\4Code\1\0\7ENGLISH\1\0\5Entry\1\0\nExceptions\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\22Ljava/lang/String;\1\0\22Ljava/util/Locale;\1\0\20Manifest Entry: \1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\1Z\1\0\2[B\1\0\2[C\1\0\33[Ljava/security/CodeSigner;\1\0\naccess$000\1\0\3add\1\0\6append\1\0\5clear\1\0\16createdDigests\1\0\5debug\1\0\fdecodeBuffer\1\0\7decoder\1\0\6digest\1\0\7digests\1\0\10endsWith\1\0\5entry\1\0\10entrySet\1\0\3get\1\0\fgetAlgorithm\1\0\rgetAttributes\1\0\10getEntry\1\0\vgetInstance\1\0\6getKey\1\0\10getValue\1\0\7hasNext\1\0\4hexc\1\0\7isEqual\1\0\10iterator\1\0\3jar\1\0\23java/io/IOException\1\0\20java/lang/Object\1\0\33java/lang/SecurityException\1\0\20java/lang/String\1\0\26java/lang/StringBuffer\1\0\27java/lang/StringBuilder\1\0\33java/security/MessageDigest\1\0&java/security/NoSuchAlgorithmExce"..., 5346) = 5346 30059 lseek(4, 56475687, SEEK_SET) = 56475687 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\217\255\r\360\377\7\0\0\377\7\0\0\34\0\0\0", 30) = 30 30059 lseek(4, 56475745, SEEK_SET) = 56475745 30059 read(4, "\312\376\272\276\0\0\0003\0;\10\0\10\1\0\3()I\1\0\3()V\1\0\4(I)V\1\0\25(Ljava/lang/String;)V\1\0\10\1\0\6\1\0,BASE64Decoder: Not enough bytes for an atom.\1\0\4Code\1\0\nExceptions\1\0\17LineNumberTable\1\0\nSourceFile\1\0\rStackMapTable\1\0\2[B\1\0\2[C\1\0\fbytesPerAtom\1\0\fbytesPerLine\1\0\ndecodeAtom\1\0\rdecode_buffer\1\0\23java/io/IOException\1\0\24java/io/OutputStream\1\0\33java/io/PushbackInputStream\1\0\tpem_array\1\0\21pem_convert_array\1\0\4read\1\0\treadFully\1\0\26sun/misc/BASE64Decoder\1\0\32sun/misc/CEFormatException\1\0\32sun/misc/CEStreamExhausted\1\0\31sun/misc/CharacterDecoder\1\0\5write\7\0\24\7\0\25\7\0\26\7\0\33\7\0\34\7\0\35\7\0\36\1\0\34(Ljava/io/InputStream;[BII)I\1\0007(Ljava/io/PushbackInputStream;Ljava/io/OutputStream;I)V\f\0\23\0\16\f\0\30\0\16\f\0\27\0\17\f\0\31\0\2\f\0\7\0\3\f\0\37\0\4\f\0\32\0'\f\0\7\0\5\t\0#\0)\t\0#\0*\t\0#\0+\n\0!\0.\n\0\"\0,\n\0#\0/\n\0$\0000\n\0%\0-\n\0&\0-\1\0\22BASE64Decoder.java\0!\0#\0&\0\0\0\3\0\32\0\27\0\17\0\0\0\32\0\30\0\16\0\0\0\0\0\23\0\16\0\0\0\5\0\1\0\7\0\3\0\1\0\t\0\0\0(\0\2\0\1\0\0\0\f*\267\0009*\7\274\10\265\0001\261\0\0\0\1\0\v\0\0\0\n\0\2\0\0\0=\0\4\0d\0\4\0\20\0\2\0\1\0\t\0\0\0\32\0\1\0\1\0\0\0\2\7\254\0\0\0\1\0\v\0\0\0\6\0\1\0\0\0A\0\4\0\21\0\2\0\1\0\t\0\0\0\33\0\1\0\1\0\0\0\3\20H\254\0\0\0\1\0\v\0\0\0\6\0\1\0\0\0F\0\4\0\22\0(\0\2\0\t\0\0\2L\0\6\0\t\0\0\1\201\0026\5\0026\6\0026\7\0026\10\35\5\242\0\r\273\0$Y\22\1\267\0007\277+\266\00056\4\25\4\2\240\0\v\273\0%Y\267\0008\277\25\4\20\n\237\377\350\25\4\20\r\237\377\341*\264\0001\3\25\4\221T*+*\264\0001\4\35\4d\266\00066\4\25\4"..., 2047) = 2047 30059 lseek(4, 56473122, SEEK_SET) = 56473122 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\260\251\242\225\310\t\0\0\310\t\0\0\37\0\0\0", 30) = 30 30059 lseek(4, 56473183, SEEK_SET) = 56473183 30059 read(4, "\312\376\272\276\0\0\0003\0c\1\0\3()I\1\0\3()V\1\0\4()[B\1\0\10(II[BI)V\1\0\5([B)V\1\0\6\1\0\4Code\1\0\nExceptions\1\0\17LineNumberTable\1\0\nSourceFile\1\0\rStackMapTable\1\0\fbytesPerAtom\1\0\fbytesPerLine\1\0\ndecodeAtom\1\0\fdecodeBuffer\1\0\22decodeBufferPrefix\1\0\22decodeBufferSuffix\1\0\30decodeBufferToByteBuffer\1\0\20decodeLinePrefix\1\0\20decodeLineSuffix\1\0\10getBytes\1\0\34java/io/ByteArrayInputStream\1\0\35java/io/ByteArrayOutputStream\1\0\23java/io/IOException\1\0\23java/io/InputStream\1\0\24java/io/OutputStream\1\0\33java/io/PushbackInputStream\1\0\20java/lang/Object\1\0\20java/lang/String\1\0\23java/nio/ByteBuffer\1\0\6length\1\0\4read\1\0\treadFully\1\0\32sun/misc/CEStreamExhausted\1\0\31sun/misc/CharacterDecoder\1\0\vtoByteArray\1\0\4wrap\7\0\26\7\0\27\7\0\30\7\0\31\7\0\32\7\0\33\7\0\34\7\0\35\7\0\36\7\0\"\7\0#\1\0\30(Ljava/io/InputStream;)V\1\0\31(Ljava/io/InputStream;)[B\1\0\34(Ljava/io/InputStream;[BII)I\1\0\26(Ljava/lang/String;)[B\1\0\31([B)Ljava/nio/ByteBuffer;\1\0.(Ljava/io/InputStream;Ljava/io/OutputStream;)V\1\0006(Ljava/io/PushbackInputStream;Ljava/io/OutputStream;)I\1\0006(Ljava/io/PushbackInputStream;Ljava/io/OutputStream;)V\1\0007(Ljava/io/PushbackInputStream;Ljava/"..., 2504) = 2504 30059 lseek(5, 43, SEEK_SET) = 43 30059 read(5, "PK\3\4\n\0\0\10\10\0\261`\273D\247#_g\206\0\0\0\236\0\0\0\24\0\0\0", 30) = 30 30059 lseek(5, 93, SEEK_SET) = 93 30059 read(5, "E\214\275\n\3020\24F\367@\336!/pC\222\266\0242\266]\34\n\16\342~\325\24\3\371\221\336\253\340\333\33\4q9\303w\370\316\212%n\201\30\316a\247X\213WV\33)V\214\5\346\204D^\225\300\2326}\3351\353\271\341Tk\")\276\26\216\310w\257\244\230\23611Lo\257^x\213Y\212C~\244\220Ca\344\226\375\347\235\266pq\335\370\273,\310\241\255\306\366`\6p\243\262\316\233\301w\275\24R|\0", 134) = 134 30059 lseek(4, 56460075, SEEK_SET) = 56460075 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305BpV\334c\2542\0\0\2542\0\0-\0\0\0", 30) = 30 30059 lseek(4, 56460150, SEEK_SET) = 56460150 30059 read(4, "\312\376\272\276\0\0\0003\2\32\10\0&\10\0'\10\0(\10\0)\10\0*\10\0+\10\0,\10\0=\10\0>\10\0?\10\0@\10\0A\10\0B\10\0C\10\0D\10\0E\10\0F\10\0G\10\0H\10\0M\10\0R\10\0V\10\0W\10\0[\10\0\\\10\0]\10\0^\10\0_\10\0b\10\0c\10\0m\10\0\221\10\0\227\10\0\300\10\0\304\10\0\305\10\0\312\1\0\v computed \1\0\v expected \1\0\16 re-computed \1\0\v sigfile \1\0\10 digest=\1\0\20 is inapplicable\1\0\33 signature file digest for \1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4()[B\1\0\25(I)Ljava/lang/String;\1\0\4(I)V\1\0\26(II)Ljava/lang/String;\1\0\25(Ljava/lang/Object;)V\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)I\1\0\25(Ljava/lang/String;)V\1\0\25(Ljava/lang/String;)Z\1\0\5([B)V\1\0\6([B)[B\1\0\7([B[B)Z\1\0\17) generated on \1\0\7-DIGEST\1\0\20-DIGEST-MANIFEST\1\0 -DIGEST-Manifest-Main-Attributes\1\0\1.\1\0\2./\1\0\4.DSA\1\0\3.EC\1\0\4.RSA\1\0\3.SF\1\0\1/\1\0\0031.0\1\0\10\1\0\6\1\0\vATTR_DIGEST\1\0\4Code\1\0\37Detected signature timestamp (#\1\0\7ENGLISH\1\0\5Entry\1\0\nExceptions\1\0\fInnerClasses\1\0:Invalid signature file digest for Manifest main attributes\1\0\17LineNumberTable\1\0\22Ljava/lang/String;\1\0\22Ljava/util/Locale;\1\0\24META-INF/MANIFEST.MF\1\0\30Manifest-Main-Attributes\1\0\4Name\1\0\21SIGNATURE_VERSION\1\0\tSignature\1\0\35Signature Block Certificate: \1\0\26Signature Block "..., 12972) = 12972 30059 mprotect(0x7fb31447b000, 8192, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb31447d000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb31447e000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(5, 757552, SEEK_SET) = 757552 30059 read(5, "PK\3\4\n\0\0\10\10\0\3526\266@\274\4]{l\17\0\0],\0\0\24\0\0\0", 30) = 30 30059 lseek(5, 757602, SEEK_SET) = 757602 30059 read(5, "\335Z[s\333\306\25~\367\257\330r\246Si\6\246\2354i\33\347\211\261\344\206\255CiD\271n&\223\207%\260 \267\6\260\310. \212\375\365=\227\275\201\244dw\372VM\2465I\354\331\263\347\362\235\357\234\205\20\237\371[\364\262\334)\361^\227\252s\352\3053O\376CY\247M'\276\236\277.\304\337d7J{\20_\277~\375\315\223\213v\303\320\277y\365j\277\337\317%m37v\373\252\341\255\334\253\27\270\360\376\372\356\247\265X\254\256\304\333\233\325\325\362~y\263Z\213w7w\342\303\372\272\20w\327\267w7W\37\336\342\327\5=u\265\\\337\337-\177\370\200\337\220\200\257\346\342J\325\272\323\3(\347\346/\27463\177\242\231p;\3314\242U\262\23\3\234tP\266uBv\225(MW\361*Q\33+F\247\naUoM5\226\370u\341E\341\263\225v\203\325\233\21\277\27\322\211\n\267T\225\330\34\304Z\225,\344+\220o\315\270\335\211\357\204\251\341\203\206\347L9\266\252\33\216\3652\366D\261\322\364\7\253\267\273A\230}\247\254\0\225`\241\36\16B\216\303\316X\375o\332\317\3139\267b\330\311A\300\246[+aa\267\245\207\274\0352\5\324V6\342\232D\237(1vx@\322^\tY\222\224\240\5\230\1\236\365b\f<\340\25\324\312\361\326`\320\301\232\246\20\322\252\360\241!\245\v<\r~;v\25,+M\333\232\316K\362\17\212\275\36v,\2077\234\213w\306\222\36\375h{\3\21\223\254\32\35\36|4\363Rft\24'.\364%/5{e\vp\237\5/\241\22\272\343\177\27b0\242\224\340t|\316K\341\237\310\2V\264\262\223[\205\316\303}\335X\356\274b\205\330\357\24\35\37\274O\373J\222\235[f\2571\232@\312\205\6M\310=n\247{\224T\353\32\254\331+[\242\350\213o_\377\376\222\2663`\0366|\0204\16n\0\253\243\17\300MV\271 \21DnT\7F(5\270r\"=\3233\271\374g3\316\304\5\254\305\177\331\331e\356u\370\17m\362\240\253\21eY\221\307\207\27\240\36A[\355P\21\320\273\325\316Q\300S\234q\22\220[NBm\r\273\225\220\202\220^\355q\244\365V\325\312ZXN\277\326d\361O\270Ek*\rG\223\224U\301\301\272+\233\221L\1I(:3\210F\267\32w\7?:S\17{\f/G\33\202S*\260~\310=\22\344\305\360\3E\310\377ZoGK\277\203[\32\225\301\307\315\346_\20\n\247\252\313\356\300\337\201;\306\206\362\243\266\246\205\37\313\235\354@\353\220 \20\25\235\303'e\10(\372\246\361\37k!\5\233\207\304\25\323\3z\31G\307\204\264\3515&\224!\345\3741\267\20\tp\6\370zr\340\34\275\340\244\17\214\336\16\345p\356\266\252\322R\f\207>?\366Gc?\235\200\302\36\276$\215\t\2070\322R\n\350.\34#&\0\233\316\37\253\225\25\0\311\203\324\215\3344!\3773\\*\20M1\0K\351CIF\\\10\350\6f\200\207#\274\261\245\340aMf\225\303\200\265\205,\24\264\365\".\340\0\352Q\266=\354\f\v\1\332!\314y!>\271\350{\5;?B25f\177\231\254p\245\254~\0+>(\201\6q\263\343\10\300=\316\333\300\237\336Kb\33\4\3057\322\241\363:J\305\n\367\300\350\207\350a\254\302\255\310]\230\v\373\235.w\31\30\200\263\6\250\1\220\231V=hr%F1\230\306\347\211P`ac\303'\20\341\335\234g\223\27\206UN9\210\24\262\276\204\315LCI\1\313\364Vw\260\313\251\317O\3618\340T=I\377B\34\233\317[\17\243\331"..., 3948) = 3948 30059 mprotect(0x7fb31447f000, 32768, PROT_READ|PROT_WRITE) = 0 30059 lseek(5, 761550, SEEK_SET) = 761550 30059 read(5, "PK\3\4\n\0\0\10\10\0\3526\266@:$\f\362~\0\0\0\261\0\0\0\23\0\0\0", 30) = 30 30059 lseek(5, 761599, SEEK_SET) = 761599 30059 read(5, "}\3149\16\303 \20@\321\236SL\231\24\1B\231\316\262\224\v\304\27 01H63b1\362\355\263)m\252\337<\375\201\255\v\10#\255+\245\362.g,E\214\304{\216s\250`\2646'\243\317\6\246\27\34\276\376F\217\332mF\270RK\336\326HI\210)\304\2\234\3117W!&\2674\217\5\312\217z\334p!F\17\367]\374\177\301!\324\312\27\245z\357\322~\230\244<\253\243\24O", 126) = 126 30059 lseek(5, 761725, SEEK_SET) = 761725 30059 read(5, "PK\3\4\n\0\0\10\10\0\0047\266@\324\236#\nq\0\0\0x\0\0\0A\0\0\0", 30) = 30 30059 lseek(5, 761820, SEEK_SET) = 761820 30059 read(5, "SvO\315K-J,IMQH\252T\360M,K\315\343R\16)M\0052+\25\214\214\24\f\314\254L\315\254\f,\24\234]\203C\24\214\f\f\215\270\312R\213\2123\363\363l\r\365L\364\f\271\322\213\362K\v\371\2075\0359\n\16\220\3257\2103p\253\203o\377F\356\200:\243w$\27\232\224\212y\254\331m\304\n\r\252\202^Y\221r\232G\314\333Y-\3\354\361\253c\"\26\232\2>5;!b\351\243\21\252\367\220\22\377\255\264.^\206\341z\275\16\250\3217\0202\t\253\355\205\247`\324\363\331\311\20uF\222\367y\312\224\2C\375^r\t\346]\334\21Z\200F\21]\200\236)]\243\363\214\203\214\343A\203\265\4K\347\311>Q\316\363\310\306\367\320\306`\225z\260m\37\1LFs28\236\221\351l@~>\236Mg\373\310\344\303t\376\367\213\367s\362\341\370\352\352\370|>=\231\221\213+2\2718\177=\235O/\316\341\353\r9>\377\225\274\233\236\277\336'\f\314\5r\330m!q\7\240&GS\262\330\370\265\n\243J\5\f\22\374V\5\213\370\222G\260\265<)i\302H\" \5r\214\221\202\311\214+t\251\2\5cd\223\362\214k\23K\252\273\257`o8\204\374(\244\370\310\"M \233r\365j\340\34\220\321\33\226\373.\270\2748\v_\4\7\230e\6\363\345\255\34256\272k\375\235\301;:88\f\377yv:\3\302\214\16y\2564\206\7P)\376R\31\340\251\210\214N\17\20F\266a\30\300\360\346\305o\7\277\35\4\267*\36\214a\277\243L\304,uq=6\fFa\3\206H\0058=\327c\23q\243D\212\262\230\306c\340Y\261\207\230\316\300`\243\260Z\263\230Tj\276\244\221\6\200\303\30ZN\243\320[\262\270\256*\215\217^\214\302\33OtX\311\336{\270\350>\301\230v\0306m\321\265\340\303\340Ep\330\224\235\323\214\215'\226\1\231\324\f\f\30\327K\231\216\235\265\235\30\337\336\225\304p\24\"\"\22@a5\365'f*\222\2740\25\vR\5\313\5\207X\313\265\315\271\214^C\ni\222\nqM\26Lk\210B\310C\fD\311RF!\272\201\4J\27F#\260\365\330\215\367\\\315j\253]'/\10_\362\234a\300\223\343\313\251\311\23\254\252\230\17X\220H\24577Y\33\23*\243\25\2771\t\5EV\5{\260\3L\361\330\361-\nI\27\24{9\220~Hy\351\212\322\21\376\353\0013r\4\267\330\271\6\255\\\232\303b\341:Z_MaOG\271\316\10lq\235y\212_n\337\356\254^\f^", 99) = 99 30059 lseek(5, 4403253, SEEK_SET) = 4403253 30059 read(5, "PK\3\4\n\0\0\10\10\0a:&=\275\23\375\330\200\6\0\0Q\26\0\0+\0\0\0", 30) = 30 30059 lseek(5, 4403326, SEEK_SET) = 4403326 30059 read(5, "\275Xms\3328\20\376\316\257\320\361\251\315\4\33\322tz\303q\236\243IzG/%\231@\256\355\247\216\260\205Qb\313\256$\363\362\357o\365b#\214II\347r\314d\202vW\253g_\265b\360K\247\323j!\370\\d\371\206\323x!\321\253\213\327\350\254\333\353\"\271 (\3\32e8A\270\220\213\214\303\332~\23\236\3366!D\313\261L\322\220xi\204\3464!(\242Br:+$\211\320\212\312\5\310P\201V\31\177Ds\245\"\212\250\244\31\350\325J(\3b\212\25\5q\22c\36Q\26\243\260B\224\255\30\341bAs\317`\275\206\243\230\0\325\5\213\10\327\347\17s\34\302?\3139E\377\300\6\245\356\314\353\242WJ\240mY\355\327\277i\35\233\254@)\336(\340\250\20\304\0\324\330\311:$\271\4P\200 \315\23\212YHJ#\252\23\214\365_\255\222l&1\310c\215\31esW\22aiP\253\317B\312\274\357\373\253\325\312\303\32\261\227\361\330O\214\244\360\257G\27W\343\311U\7P\233=\367,!B\200S\276\27\224\203\301\263\r\3029`\n\361\f\220&x\245\3\22s\2<\231)\314+\16\236e\361)\22\331\\\2560'Z\217\33\217\255\323J\204`\271+\0n\303\f\265\207\0234\232\264\321\373\341d49\325Z>\217\246\177\335\334O\321\347\341\335\335p<\35]M\320\315\35\272\270\31_\216\246\243\2331\254>\240\341\370+\372{4\276\20LO\300\335%79DV\210\235\302\332--\340v\214\216zi9U\362f\267F\374\362P\265\230\0254)\345\363\244\200\3323\3104\1\356n\364\36Z\36\334\4\"+xH\4R\315\316r\215x\271\254\341\267yi\32\216U\\\263\243n\213\351E\346\240\216\331\262o\324\216ag^\317\353\355\30g\5\310\232\204:\235\305\226\350\222]*\320i\24`)\1\260=\35\220\322hWF\231\227\341D\324\251\226n\332\227\376V\337\3467\354\33\370\rP\34b%\16\301\262^vc\2-1\247"..., 1664) = 1664 30059 lseek(4, 59803412, SEEK_SET) = 59803412 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B\236E\203#\323\0\0\0\323\0\0\0\32\0\0\0", 30) = 30 30059 lseek(4, 59803468, SEEK_SET) = 59803468 30059 read(4, "\312\376\272\276\0\0\0003\0\f\1\0\nExceptions\1\0\nSourceFile\1\0\rgetByteBuffer\1\0\23java/io/IOException\1\0\20java/lang/Object\1\0\24sun/nio/ByteBuffered\7\0\4\7\0\5\7\0\6\1\0\27()Ljava/nio/ByteBuffer;\1\0\21ByteBuffered.java\6\1\0\t\0\10\0\0\0\0\0\1\4\1\0\3\0\n\0\1\0\1\0\0\0\4\0\1\0\7\0\1\0\2\0\0\0\2\0\v", 211) = 211 30059 lseek(5, 101104, SEEK_SET) = 101104 30059 read(5, "PK\3\4\n\0\0\10\10\0\251`\273D\"2\321\27\1\n\0\0N\25\0\0\33\0\0\0", 30) = 30 30059 lseek(5, 101161, SEEK_SET) = 101161 30059 read(5, "\225W\tx\23\307\25\376\327Zil\261\200\21\26`\16s\304\1\331\226\0216`\300P\247D@qj\31\203\r\224@\322.\322Z\10\344\225\221\326\200\33\332\364\310\321+m\323+%=C\17z7\204\326\230Ph\322#m\323;\275\257\364\276\323\373\242\27\364\237Y\331\226m\331\320\317\3764\243\231\367\336\274\377\177o\336\33=~\371\341\213\0V\342\212\37sq\257\37s\360\32?^\213\327\371\361z\274A\316\356\363#\2027\312\215\23~\334/7\356\307}\245\270K\256\274\251\24-r|\263\37\215x\213\234\275\265\24o\223_\336.U\37\2206O\372Q\205w\224q\355\235S\360.\274[~< pJJ\275G\340\275\322\336\373\4\336\357\307||@\340\203R\374C\245\370\260\34\37\0248-\345\36\0228#\360\21\201\217\n\f\10\234\25\30\0248'%\36\226\37\347\245\356\307\374\270\200\213\2\37\367\343\21<*\265>!\360I?>\205O\313\303\37\23\370\214\37\253q\257\300g5@\203\321j\333V6\2326s9+'\3609\r\vv\231\351T\302tR\31\273\323\311\246\354\244e\307\373\243\31\373\210\225u\254\254\300\343\32\246\265YG\254\364\360\232\6_\207\2315{r\32<\351LR\303\2346\333r\"\271\356Ho*nf\23\221>'\225\216\264e\222\3535\210\270{\224\206\351m\7\315#\246\273\0273{\271W\326\231J\332\246\323\227\2654\254\31\275\273\301\375\2326\355d\304\365j}\301\212r\177Cm\313\372\26Z\361mH\331)\247\205\276\204jvi\320\243\231\204%OK\331V{_\317~+\333e\356Os%\320\226\211\233\351]f6%\277\347\27u\347@\212\276\315\36\2\20'\254H\224\37]\231L:G\353\323\273Sv\242\323!=\361-)+\235\320\320\22\272\272o\353k\nV\262Vw\332\212;\21\245O\223Z\267\206\312I\366u3\233\255\3260w\357d2i\313\246\214\326\252\241$\305\211n\233=\n\3438\3274x\17I\2274\314\30\347%#\233\260\30\240\254\225P\206)\344\355vQ\316\32\315V\177\357\20c\25\305\342\240a*9\212\37b\344\224\30\363\221\271.\260]\340\363\0326^\3c\322\312d\244U\214\304!f\246\354\230\345\34\310\320\315\372\3205Q\357\212K\356{H\354d\2\363\212\261>\274\353\357\31>[ )\360\5\r+\306y0\21\224a+*\247\334\33\24uCS=9\214\241h\225\346\372\366\3475\2{\213\354O\351\0351*\220\321P{U\347\nB\3507\23\211\216l&I\23\32V\207\332\342\231\236\310~\253/\347D\16r\332c\332\t+\33\271):4-\222\364\274~%\7\343\32\26_U\227XRv\3161\355\370\230\254\335\266\377 \271\342\276\221\327\313\337:\221\377J77\37\213[\275\262\\\21\343\27\5\276$\360e\rk\377\177\177\25\25t\331\227\262\217d\16\321\217P\221<\335;~IU\0313\233d\24f\26\331\26\370\212\300W)\"s\205\27)4\201\t_o\276\206V\25/>\325n\206\310\260\346\341l\344\231l\31\354\26\2O\220\301\r\361t\276\364\371;3}\331\270\265%%o\350\264a\23\313\345\301\0066c\213\201\257\341\353\274\214\6\276\201o\n|\313\300\267\361\35\3\337\305\367\f|\37?0\360$~\310t6\360#\374\330\300O\344r\32=\6~\212\237\221\373\350\266Xlc\373&\3m\210\31\3709~a\340\227R\344W\370\265\201\215\270Q\3407\6~\213\247\230\332c86\20\7cV>6\300\6^\200\337i\230?\31r\351\370\3575,\274J\\\245\330\37\330L\244\rG\252\33\370#"..., 2561) = 2561 30059 lseek(4, 59790653, SEEK_SET) = 59790653 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\3659\25\3\3\24\0\0\3\24\0\0\37\0\0\0", 30) = 30 30059 lseek(4, 59790714, SEEK_SET) = 59790714 30059 read(4, "\312\376\272\276\0\0\0003\0\325\10\0\32\10\0\33\10\0C\1\0\3()I\1\0\3()V\1\0\3()Z\1\0\4(I)V\1\0\25(Ljava/lang/String;)V\1\0\10\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\nExceptions\1\0\fInnerClasses\1\0\1J\1\0\17LineNumberTable\1\0\20Permissions.java\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\1Z\1\0\34[Ljava/io/ObjectStreamField;\1\0\23[Ljava/lang/Object;\1\0![Ljava/security/cert/Certificate;\1\0\3add\1\0\rallPermission\1\0\1\0\4Code\1\0\rConstantValue\1\0\1J\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\1Z\1\0\3add\1\0\6append\1\0\10elements\1\0\17hasMoreElements\1\0\7implies\1\0\nisReadOnly\1\0\24java/io/Serializable\1\0\20java/lang/Object\1\0\27java/lang/StringBuilder\1\0\30java/security/Permission\1\0\"java/security/PermissionCollection\1\0\25java/util/Enumeration\1\0 java/util/NoSuchElementException\1\0\vnextElement\1\0\10readOnly\1\0\20serialVersionUID\1\0\vsetReadOnly\1\0\10toString\5\242\244\332\326j\30\t)\7\0\33\7\0\34\7\0\35\7\0\36\7\0\37\7\0 \7\0!\1\0\24()Ljava/lang/Object;\1\0\35(Ljava/security/Permission;)V\1\0\35(Ljava/security/Permission;)Z\1\0\31()Ljava/util/Enumeration;\1\0-(Ljava/lang/String;)Ljava/lang/StringBuilder;\1\0005()Ljava/util/Enumeration;\f\0#\0\24\f\0\f\0\t\f\0\30\0\n\f\0\"\0000\f\0&\0\10\f\0\27\0003\f\0\26\0004\t\0-\0006\n\0*\0007\n\0*\0:\n\0+\0007\n\0+\0:\n\0+\0<\n\0,\0:\n\0-\0;\v\0.\0008\v\0.\0009\1\0\31PermissionCollection.java\4!\0-\0*\0\1\0)\0\2\0\32\0$\0\17\0\1\0\16\0\0\0\2\0'\0B\0#\0\24\0\0\0\7\0\1\0\f\0\t\0\1\0\r\0\0\0\35\0\1\0\1\0\0\0\5*\267\0>\261\0\0\0\1\0\20\0\0\0\6\0\1\0\0\0_\4\1\0\25\0001\0\0\4\1\0\31\0002\0\0\4\1\0\27\0003\0\1\0\21\0\0\0\2\0005\0\1\0%\0\t\0\1\0\r\0\0\0\"\0\2\0\1\0\0\0\6*"..., 1289) = 1289 30059 lseek(4, 59783691, SEEK_SET) = 59783691 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305BE&*\342\224\25\0\0\224\25\0\0001\0\0\0", 30) = 30 30059 lseek(4, 59783770, SEEK_SET) = 59783770 30059 read(4, "\312\376\272\276\0\0\0003\1?\10\0\v\10\0\f\10\0 \10\0\"\10\0#\10\0005\10\0006\10\0g\10\0m\10\0{\1\0\1\n\1\0\36 exists, but is not accessible\1\0\3()I\1\0\3()J\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4()[B\1\0\25(I)Ljava/lang/String;\1\0\4(J)V\1\0&(Ljava/lang/String;)Ljava/lang/String;\1\0,(Ljava/lang/String;)Ljava/lang/StringBuffer;\1\0\25(Ljava/lang/String;)V\1\0'(Ljava/lang/String;Ljava/lang/String;)V\1\0\5([B)V\1\0\10\1\0\6\1\0\1C\1\0\16CONTENT_LENGTH\1\0\fCONTENT_TYPE\1\0\4Code\1\0\37EEE, dd MMM yyyy HH:mm:ss 'GMT'\1\0\nExceptions\1\0\3GET\1\0\3GMT\1\0\1J\1\0\rLAST_MODIFIED\1\0\17LineNumberTable\1\0\22Ljava/lang/String;\1\0\22Ljava/util/Locale;\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\nTEXT_PLAIN\1\0\2US\1\0\1Z\1\0\23[Ljava/lang/String;\1\0\3add\1\0\6append\1\0\6asList\1\0\7connect\1\0\tconnected\1\0\16content-length\1\0\fcontent-type\1\0\vcontentType\1\0\6decode\1\0\6exists\1\0\4file\1\0\10filename\1\0\5files\1\0\6format\1\0\3get\1\0\10getBytes\1\0\20getContentLength\1\0\24getContentLengthLong\1\0\21getContentTypeFor\1\0\ngetDefault\1\0\16getFileNameMap\1\0\16getHeaderField\1\0\21getHeaderFieldKey\1\0\16getInputStream\1\0\vgetInstance\1\0\17getLastModified\1\0\7getPath\1\0\rgetPermission\1\0\rgetProperties\1\0\vgetT"..., 5524) = 5524 30059 mprotect(0x7fb314487000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 59779525, SEEK_SET) = 59779525 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\316cx\241\t\20\0\0\t\20\0\0\37\0\0\0", 30) = 30 30059 lseek(4, 59779586, SEEK_SET) = 59779586 30059 read(4, "\312\376\272\276\0\0\0003\0\274\10\0\32\10\0\33\10\0\34\10\0\37\10\0+\10\0000\10\0001\10\0002\10\0003\10\0S\10\0T\10\0a\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4(I)I\1\0\25(I)Ljava/lang/String;\1\0\4(I)V\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)I\1\0&(Ljava/lang/String;)Ljava/lang/String;\1\0\25(Ljava/lang/String;)V\1\0\25(Ljava/lang/String;)Z\1\0'(Ljava/lang/String;Ljava/lang/String;)V\1\0\1/\1\0\0047bit\1\0\0048bit\1\0\10\1\0\6\1\0\21Already connected\1\0\4Code\1\0\tEMPTY_MAP\1\0\1I\1\0\17LineNumberTable\1\0\22Ljava/lang/String;\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\22URLConnection.java\1\0\1Z\1\0\22addRequestProperty\1\0\6binary\1\0\10canCache\1\0\5close\1\0\tconnected\1\0\vcontainsKey\1\0\20content-encoding\1\0\16content-length\1\0\fcontent-type\1\0\17content/unknown\1\0\rcontentLength\1\0\vcontentType\1\0\10endsWith\1\0\20equalsIgnoreCase\1\0\tfindValue\1\0\20getContentLength\1\0\16getContentType\1\0\7getFile\1\0\16getHeaderField\1\0\21getHeaderFieldKey\1\0\16getInputStream\1\0\6getKey\1\0\rgetProperties\1\0\24getRequestProperties\1\0\22getRequestProperty\1\0\10getValue\1\0\30guessContentTypeFromName\1\0\32guessContentTypeFromStream\1\0\7indexOf\1\0\risProxiedHost\1\0\23java/io/IOException\1\0\23java/la"..., 4105) = 4105 30059 lseek(4, 59765558, SEEK_SET) = 59765558 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\261*!0U6\0\0U6\0\0\34\0\0\0", 30) = 30 30059 lseek(4, 59765616, SEEK_SET) = 59765616 30059 read(4, "\312\376\272\276\0\0\0003\2\5\10\0!\10\0006\10\0007\10\0;\10\0U\10\0V\10\0W\10\0X\10\0Y\10\0_\10\0`\10\0a\10\0e\10\0k\10\0m\10\0\240\10\0\241\10\0\242\10\0\243\10\0\244\10\0\245\10\0\246\10\0\250\10\0\310\10\0\311\10\0\322\10\0\327\10\0\330\10\0\361\10\0\366\10\0\367\10\0\376\1\0\0\1\0\3()I\1\0\3()J\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4(I)I\1\0\25(I)Ljava/lang/String;\1\0\4(I)V\1\0\26(II)Ljava/lang/String;\1\0\10(II[CI)V\1\0\4(J)J\1\0\4(J)V\1\0\25(Ljava/lang/String;)I\1\0%(Ljava/lang/String;)Ljava/lang/Class;\1\0&(Ljava/lang/String;)Ljava/lang/String;\1\0\25(Ljava/lang/String;)V\1\0'(Ljava/lang/String;Ljava/lang/String;)V\1\0\4(Z)V\1\0\7([BII)I\1\0\5([C)V\1\0\1.\1\0\1:\1\0\10\1\0\6\1\0\16ALL_PERMISSION\1\0\21Already connected\1\0\4Code\1\0\rConstantValue\1\0\nDeprecated\1\0\tEMPTY_MAP\1\0\nExceptions\1\0\1I\1\0\10INSTANCE\1\0\fInnerClasses\1\0\1J\1\0\17LineNumberTable\1\0\22Ljava/lang/String;\1\0\31RuntimeVisibleAnnotations\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\22URLConnection.java\1\0\1Z\1\0\2[B\1\0\2[C\1\0\2[I\1\0\naccess$000\1\0\3add\1\0\22addRequestProperty\1\0\24allowUserInteraction\1\0\6append\1\0\23application/java-vm\1\0$application/x-java-serialized-object\1\0\17application/xml\1\0\vaudio/basic\1\0\vaudio/x-wav\1\0\17checkSetFactory\1\0\10checkfpx\1\0\7connect\1\0\16connectTimeout\1\0\tconnected\1\0\20co"..., 13909) = 13909 30059 mprotect(0x7fb314488000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 59756365, SEEK_SET) = 59756365 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B/U\17M\213\36\0\0\213\36\0\0\37\0\0\0", 30) = 30 30059 lseek(4, 59756426, SEEK_SET) = 59756426 30059 read(4, "\312\376\272\276\0\0\0003\0\347\10\0\n\10\0\v\10\0\f\10\0\32\10\0!\10\0#\10\0$\10\0h\10\0i\1\0\0\1\0\2\r\n\1\0\10 pairs: \1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4(I)C\1\0\25(I)Ljava/lang/String;\1\0\26(II)Ljava/lang/String;\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)I\1\0&(Ljava/lang/String;)Ljava/lang/String;\1\0\25(Ljava/lang/String;)V\1\0\25(Ljava/lang/String;)Z\1\0'(Ljava/lang/String;Ljava/lang/String;)V\1\0\2: \1\0\6\1\0\4Code\1\0\5Entry\1\0\nExceptions\1\0\1I\1\0\fInnerClasses\1\0\10Kerberos\1\0\17LineNumberTable\1\0\5NTLM \1\0\tNegotiate\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\2[C\1\0\23[Ljava/lang/String;\1\0\naccess$000\1\0\naccess$100\1\0\naccess$200\1\0\3add\1\0\6append\1\0\tarraycopy\1\0\vcanonicalID\1\0\6charAt\1\0\vcopyValueOf\1\0\10entrySet\1\0\20equalsIgnoreCase\1\0\23filterAndAddHeaders\1\0\23filterNTLMResponses\1\0\rfindNextValue\1\0\tfindValue\1\0\5flush\1\0\3get\1\0\ngetHeaders\1\0\6getKey\1\0\10getValue\1\0\4grow\1\0\7hasNext\1\0\10iterator\1\0\23java/io/IOException\1\0\23java/io/InputStream\1\0\23java/io/PrintStream\1\0\20java/lang/Object\1\0\20java/lang/String\1\0\27java/lang/StringBuilder\1\0\20java/lang/System\1\0\23java/lang/Throwable\1\0\23java/util/ArrayList\1\0\25java/util/Coll"..., 7819) = 7819 30059 lseek(4, 59750686, SEEK_SET) = 59750686 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\33\210v0\365\25\0\0\365\25\0\0\34\0\0\0", 30) = 30 30059 lseek(4, 59750744, SEEK_SET) = 59750744 30059 read(4, "\312\376\272\276\0\0\0003\0\315\10\0\v\10\0\32\10\0:\10\0>\10\0F\10\0G\10\0Z\10\0\\\10\0^\10\0g\1\0\0\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\4()[C\1\0\4(I)C\1\0\4(I)I\1\0\25(I)Ljava/lang/String;\1\0\4(I)V\1\0\26(II)Ljava/lang/String;\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)I\1\0\25(Ljava/lang/String;)V\1\0\25(Ljava/lang/String;)Z\1\0'(Ljava/lang/String;Ljava/lang/String;)V\1\0\r<>\1\0\6\1\0\3ALL\1\0\1C\1\0\4Code\1\0\rConstantValue\1\0\6DELETE\1\0\7EXECUTE\1\0\nExceptions\1\0\23FilePermission.java\1\0\1I\1\0\fInnerClasses\1\0\1J\1\0\17LineNumberTable\1\0\22Ljava/lang/String;\1\0\4NONE\1\0\4READ\1\0\10READLINK\1\0\16RECURSIVE_CHAR\1\0\nSourceFile\1\0\rStackMapTable\1\0\tWILD_CHAR\1\0\5WRITE\1\0\1Z\1\0\2[C\1\0\naccess$000\1\0\7actions\1\0\6append\1\0\6charAt\1\0\5cpath\1\0\21defaultReadObject\1\0\22defaultWriteObject\1\0\6delete\1\0\tdirectory\1\0\fdoPrivileged\1\0\6equals\1\0\7execute\1\0\ngetActions\1\0\7getMask\1\0\7getName\1\0\10hashCode\1\0\7implies\1\0\21impliesIgnoreMask\1\0\4init\1\0\24invalid actions mask\1\0\24invalid permission: \1\0\fjava/io/File\1\0\26java/io/FilePermission\1\0\30java/io/FilePermission$1\1\0 java/io/FilePermissionCollection\1\0\23java/io/IOException\1\0\31java/io/ObjectInputStream\1\0\32java/i"..., 5621) = 5621 30059 mprotect(0x7fb314489000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 59749291, SEEK_SET) = 59749291 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\fQ\315\2207\5\0\0007\5\0\0\36\0\0\0", 30) = 30 30059 lseek(4, 59749351, SEEK_SET) = 59749351 30059 read(4, "\312\376\272\276\0\0\0003\0M\10\0\n\10\0\v\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\4(I)V\1\0\26(II)Ljava/lang/String;\1\0\25(Ljava/lang/String;)V\1\0\25(Ljava/lang/String;)Z\1\0\1*\1\0\1-\1\0\6\1\0\4Code\1\0\17EnclosingMethod\1\0\23FilePermission.java\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\naccess$000\1\0\6append\1\0\10endsWith\1\0\20getCanonicalPath\1\0\4init\1\0\fjava/io/File\1\0\26java/io/FilePermission\1\0\30java/io/FilePermission$1\1\0\23java/io/IOException\1\0\20java/lang/Object\1\0\20java/lang/String\1\0\27java/lang/StringBuilder\1\0\36java/security/PrivilegedAction\1\0\6length\1\0\3run\1\0\tsubstring\1\0\6this$0\1\0\10toString\7\0\32\7\0\33\7\0\34\7\0\35\7\0\36\7\0\37\7\0 \7\0!\1\0\30Ljava/io/FilePermission;\1\0FLjava/lang/Object;Ljava/security/PrivilegedAction;\1\0\33(Ljava/io/FilePermission;)V\1\0\24()Ljava/lang/Object;\1\0,(Ljava/io/FilePermission;)Ljava/lang/String;\1\0-(Ljava/lang/String;)Ljava/lang/StringBuilder;\f\0%\0/\f\0\"\0\3\f\0\f\0\5\f\0\31\0\6\f\0\30\0\4\f\0#\0\4\f\0&\0\4\f\0$\0\7\f\0\f\0\10\f\0\27\0\t\f\0\25\0003\f\0\26\0004\t\0)\0005\n\0'\0009\n\0'\0=\n\0(\0?\n\0)\0:\n\0+\0007\n\0,\0006\n\0,\0<\n\0,\0>\n\0-\0007\n\0-\0;\n\0-\0@\0 \0)\0+\0\1\0.\0\1\20\20\0%\0/\0\0\0\3\0\0\0\f\0001\0\1\0\r\0\0\0\"\0\2\0\2\0\0\0\n*+\265"..., 1335) = 1335 30059 lseek(4, 59709617, SEEK_SET) = 59709617 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\250\r\261\3110\r\0\0000\r\0\0&\0\0\0", 30) = 30 30059 lseek(4, 59709685, SEEK_SET) = 59709685 30059 read(4, "\312\376\272\276\0\0\0003\0\242\10\0\33\10\0\"\10\0009\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4(I)V\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)V\1\0\10\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\nExceptions\1\0\23FilePermission.java\1\0\fInnerClasses\1\0\1J\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\34[Ljava/io/ObjectStreamField;\1\0\3add\1\0\6addAll\1\0\6append\1\0>attempt to add a Permission to a readonly PermissionCollection\1\0\10elements\1\0\venumeration\1\0\3get\1\0\7getMask\1\0\7implies\1\0\21impliesIgnoreMask\1\0\24invalid permission: \1\0\nisReadOnly\1\0\26java/io/FilePermission\1\0 java/io/FilePermissionCollection\1\0\23java/io/IOException\1\0\31java/io/ObjectInputStream\1\0\"java/io/ObjectInputStream$GetField\1\0\32java/io/ObjectOutputStream\1\0#java/io/ObjectOutputStream$PutField\1\0\31java/io/ObjectStreamField\1\0\24java/io/Serializable\1\0 java/lang/ClassNotFoundException\1\0\"java/lang/IllegalArgumentException\1\0\20java/lang/Object\1\0\33java/lang/SecurityException\1\0\27java/lang/StringBuilder\1\0\23java/lang/Throwable\1\0\30java/security/Permission\1\0\"java/security/PermissionCollection\1\0\23j"..., 3376) = 3376 30059 lseek(4, 59708644, SEEK_SET) = 59708644 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B$\235\206\327\216\3\0\0\216\3\0\0!\0\0\0", 30) = 30 30059 lseek(4, 59708707, SEEK_SET) = 59708707 30059 read(4, "\312\376\272\276\0\0\0003\0'\10\0\t\10\0\n\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)V\1\0'(Ljava/lang/String;Ljava/lang/String;)V\1\0\r\1\0\21\1\0\6\1\0\22AllPermission.java\1\0\4Code\1\0\rConstantValue\1\0\1J\1\0\17LineNumberTable\1\0\nSourceFile\1\0\6equals\1\0\ngetActions\1\0\10hashCode\1\0\7implies\1\0\33java/security/AllPermission\1\0%java/security/AllPermissionCollection\1\0\30java/security/Permission\1\0\27newPermissionCollection\1\0\20serialVersionUID\5\327\206\231\324T/@\305\7\0\26\7\0\27\7\0\30\1\0\35(Ljava/security/Permission;)Z\1\0&()Ljava/security/PermissionCollection;\f\0\v\0\5\f\0\v\0\7\n\0\35\0\"\n\0\36\0\"\n\0\37\0#\0001\0\35\0\37\0\0\0\1\0\32\0\32\0\17\0\1\0\16\0\0\0\2\0\33\0\7\0\1\0\v\0\5\0\1\0\r\0\0\0#\0\2\0\1\0\0\0\7*\22\2\267\0&\261\0\0\0\1\0\20\0\0\0\n\0\2\0\0\0D\0\6\0E\0\1\0\v\0\10\0\1\0\r\0\0\0!\0\1\0\3\0\0\0\5*\267\0$\261\0\0\0\1\0\20\0\0\0\n\0\2\0\0\0R\0\4\0S\0\1\0\25\0 \0\1\0\r\0\0\0\32\0\1\0\2\0\0\0\2\4\254\0\0\0\1\0\20\0\0\0\6\0\1\0\0\0^\0\1\0\22\0\6\0\1\0\r\0\0\0\35\0\1\0\2\0\0\0\5+\301\0\35\254\0\0\0\1\0\20\0\0\0\6\0\1\0\0\0i\0\1\0\24\0\3\0\1\0\r\0\0\0\32\0\1\0\1\0\0\0\2\4\254\0\0\0\1\0\20\0\0\0\6\0\1\0\0\0s\0\1\0\23\0\4\0\1\0\r\0\0\0\33\0\1\0\1\0\0\0\3\22\1\260\0\0\0\1\0\20\0\0\0\6\0\1\0\0\0}\0\1\0\31\0!\0\1\0\r\0\0\0 \0\2\0\1\0\0\0\10\273\0\36Y\267\0%\260\0\0\0\1\0\20\0\0\0\6\0\1\0\0\0\212\0\1\0\21\0\0\0\2\0\f", 910) = 910 30059 lseek(4, 59701512, SEEK_SET) = 59701512 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B\373\216\233}\226\33\0\0\226\33\0\0(\0\0\0", 30) = 30 30059 lseek(4, 59701582, SEEK_SET) = 59701582 30059 read(4, "\312\376\272\276\0\0\0003\1\23\10\0\r\10\0\16\10\0\17\10\0\31\10\0\32\10\0\35\10\0\36\10\0%\10\0+\10\0h\10\0w\10\0x\1\0\0\1\0\1 \1\0\n not found\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\4()[B\1\0\4(I)V\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)V\1\0\5([B)V\1\0'([Ljava/lang/Object;)Ljava/lang/Object;\1\0\f(unresolved \1\0\1)\1\0\10\1\0\6\1\0\30Certificate factory for \1\0\23Certificate too big\1\0\4Code\1\0\rConstantValue\1\0\nExceptions\1\0\1J\1\0\17LineNumberTable\1\0\22Ljava/lang/String;\1\0?NoSuchMethodException:\n could not find proper constructor for \1\0\7PARAMS0\1\0\7PARAMS1\1\0\7PARAMS2\1\0\nSourceFile\1\0\rStackMapTable\1\0\24UnresolvedPermission\1\0\2[B\1\0\22[Ljava/lang/Class;\1\0![Ljava/security/cert/Certificate;\1\0\7actions\1\0\3add\1\0\6append\1\0\5certs\1\0\5clone\1\0\5close\1\0\vcontainsKey\1\0\5debug\1\0\21defaultReadObject\1\0\22defaultWriteObject\1\0\6equals\1\0\23generateCertificate\1\0\3get\1\0\ngetActions\1\0\10getClass\1\0\16getConstructor\1\0\ngetEncoded\1\0\vgetInstance\1\0\vgetIssuerDN\1\0\ngetMessage\1\0\fgetSubjectDN\1\0\7getType\1\0\24getUnresolvedActions\1\0\22getUnresolvedCerts\1\0\21getUnresolvedName\1\0\21getUnresolvedType\1\0\10hashCode\1\0\7implies\1\0\34java/io/ByteArrayInputStream\1\0\23ja"..., 7062) = 7062 30059 mprotect(0x7fb31448a000, 8192, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb31448c000, 8192, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 59696855, SEEK_SET) = 59696855 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B\263\244d`\346\21\0\0\346\21\0\0-\0\0\0", 30) = 30 30059 lseek(4, 59696930, SEEK_SET) = 59696930 30059 read(4, "\312\376\272\276\0\0\0003\0\340\10\0\21\10\0\22\10\0$\10\0&\10\0/\10\0M\10\0N\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4(I)V\1\0\26(II)Ljava/lang/String;\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)V\1\0\26(Ljava/lang/String;Z)V\1\0\1*\1\0\1.\1\0\10\1\0\6\1\0\24BasicPermission.java\1\0\4Code\1\0\rConstantValue\1\0\nExceptions\1\0\fInnerClasses\1\0\1J\1\0\17LineNumberTable\1\0\21Ljava/lang/Class;\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\4TYPE\1\0\1Z\1\0\34[Ljava/io/ObjectStreamField;\1\0\3add\1\0\vall_allowed\1\0\6append\1\0>attempt to add a Permission to a readonly PermissionCollection\1\0\10elements\1\0\venumeration\1\0\6equals\1\0\3get\1\0\20getCanonicalName\1\0\10getClass\1\0\17hasMoreElements\1\0\7implies\1\0\24invalid permission: \1\0\nisReadOnly\1\0\23java/io/IOException\1\0\31java/io/ObjectInputStream\1\0\"java/io/ObjectInputStream$GetField\1\0\32java/io/ObjectOutputStream\1\0#java/io/ObjectOutputStream$PutField\1\0\31java/io/ObjectStreamField\1\0\24java/io/Serializable\1\0\21java/lang/Boolean\1\0\17java/lang/Class\1\0 java/lang/ClassNotFoundException\1\0\"java/lang/IllegalArgumentException\1\0\20java/lang/Object\1\0\33java/lang/SecurityException\1\0\20j"..., 4582) = 4582 30059 mprotect(0x7fb31448e000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb31448f000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 55364638, SEEK_SET) = 55364638 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305Buc6=\306\1\0\0\306\1\0\0\24\0\0\0", 30) = 30 30059 lseek(4, 55364688, SEEK_SET) = 55364688 30059 read(4, "\312\376\272\276\0\0\0003\0\34\10\0\20\1\0\3()V\1\0%(Ljava/lang/String;)Ljava/lang/Class;\1\0\10\1\0\6\1\0\4Code\1\0\17LineNumberTable\1\0\21Ljava/lang/Class;\1\0\tSignature\1\0\nSourceFile\1\0\4TYPE\1\0\21getPrimitiveClass\1\0\17java/lang/Class\1\0\20java/lang/Object\1\0\16java/lang/Void\1\0\4void\7\0\r\7\0\16\7\0\17\1\0#Ljava/lang/Class;\f\0\v\0\10\f\0\5\0\2\f\0\f\0\3\t\0\23\0\25\n\0\21\0\27\n\0\22\0\26\1\0\tVoid.java\0001\0\23\0\22\0\0\0\1\0\31\0\v\0\10\0\1\0\t\0\0\0\2\0\24\0\2\0\2\0\5\0\2\0\1\0\6\0\0\0\35\0\1\0\1\0\0\0\5*\267\0\32\261\0\0\0\1\0\7\0\0\0\6\0\1\0\0\0000\0\10\0\4\0\2\0\1\0\6\0\0\0!\0\1\0\0\0\0\0\t\22\1\270\0\31\263\0\30\261\0\0\0\1\0\7\0\0\0\6\0\1\0\0\0+\0\1\0\n\0\0\0\2\0\33", 454) = 454 30059 lseek(5, 5286969, SEEK_SET) = 5286969 30059 read(5, "PK\3\4\n\0\0\10\10\0\17SrC\v\206\25\234x\10\0\0\204\22\0\0\34\0\0\0", 30) = 30 30059 lseek(5, 5287027, SEEK_SET) = 5287027 30059 read(5, "\215X\ttTg\25\376\376d&o\336\344\1YH\232\251(P\243\rY\210\245\205B\240\10\331\203C\240I\240\r\340\3622y\231\300@\373\370\344\7y\371\220\212\17c?\357}D\301\375A<\200\3*\36\304~\5\37e\346!\25\37c\346\343\314|B\305\303\314<\302\314A\25\2172\363If>\245\342\323\314\2141\363\31\25\237e\346s\314\34R\361\0303\237g\346\v\n\"\374\376\"{s\230\227#A\34\3051\5\307\0038\21\304MH*\30\17\342\26\334\25\304\4N\252\344\376\343\354\364)\246N\363\362%^\316(8\253\340\234@ lG\303\306\16\303\22\320:\342q\303i\262\364D\302H\10\314\214Zv\237n]\226\317\17\307\r\267>1P?dFt\247\277~\3305\255z\22WfT\226\v\370#\226\276{\267@qx\253\276C\257\267\364x\264^\"\222L\3556\243q\335\35v\f\201\331S\345+\252W\262J\204\351N=F*%Y*\335\256c\306\243\244\220o\17\273\2e)\221i\327\257\247}\227\244\206\36#i\301\n3n\272+\t\276\352\n\373\v6\n\370\232\354~B\236\0256\343F\347p\254\317pz\364>K\332\262#\272\265QwL\346\323\233>w\320\2448T\\\345\332d\257<\367\330\310P\346\350uW\330\347\373\261\v\205Q\303\355\210'\\=\36!\275\32\17?\257nn\2417\352\325\17\24'\f\267mJ\26+\253\246M#\373\31\260&O\250f\242%\316\367\352\277\266\323\233\250\f\254\324\321\31\335\256\36\331\266V\37\312\204\324\210\231\224\277\360\364(Y7\355\31t\354\235|~\371\346\254\335u}[\215\210+}U#vl\310\216\33q\202\366\r\351\216\233[\374:\r\253\260Z\303E|UC/6ix\22\333\25<\245\341i<\303\313\3274\f1\320\327\361\254\206o\340\233\32\236\303\263\n\236\327\360-4i\3706^\240Dm\336\244\340;\32\276\213\357)\370>\363\215\314\374@\301\17\231ib\346E\5?b\246\231\231\37+\370\t3\255\314\374T\301\317\230\351`\346\347\n~\301\314\32f~\251\340W\314t3\363k^~\303.\375V\303\357\370\326\3475\374\36\177\20\270\376r\336\272\315\330\220e\\\316\36U\331\10\375\325\255][\327\337?\257\275\275!\26kH$\370\342\317\320d\225\347d4\370\204\202?j\370\23\376\254\341/\34\221\327\343\r\32\376\312\324\337x\371;V\v\24M\315\225\300\334i:\210<\360(\32\32~SFH\16x\367H\3025b\224z\252<\352^*\342\324\305R"..., 2168) = 2168 30059 lseek(4, 54161658, SEEK_SET) = 54161658 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B\2001\350I\17\31\0\0\17\31\0\0\32\0\0\0", 30) = 30 30059 lseek(4, 54161714, SEEK_SET) = 54161714 30059 read(4, "\312\376\272\276\0\0\0003\1\31\10\0\7\10\0\25\10\0'\10\0(\10\0-\10\0007\1\0\1\"\1\0\3()I\1\0\3()J\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\26(I)Ljava/lang/Integer;\1\0\4(I)V\1\0\4(J)V\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)V\1\0\4(Z)V\1\0\6\1\0\vAM_PM_FIELD\1\0$Cannot format given Object as a Date\1\0\4Code\1\0\rConstantValue\1\0\nDATE_FIELD\1\0\21DAY_OF_WEEK_FIELD\1\0\32DAY_OF_WEEK_IN_MONTH_FIELD\1\0\21DAY_OF_YEAR_FIELD\1\0\7DEFAULT\1\0\tERA_FIELD\1\0\nExceptions\1\0\6FORMAT\1\0\4FULL\1\0\vHOUR0_FIELD\1\0\vHOUR1_FIELD\1\0\22HOUR_OF_DAY0_FIELD\1\0\22HOUR_OF_DAY1_FIELD\1\0\1I\1\0\10INSTANCE\1\0\23Illegal date style \1\0\23Illegal time style \1\0\fInnerClasses\1\0\1J\1\0\4LONG\1\0\17LineNumberTable\1\0\rM/d/yy h:mm a\1\0\6MEDIUM\1\0\21MILLISECOND_FIELD\1\0\fMINUTE_FIELD\1\0\vMONTH_FIELD\1\0\fSECOND_FIELD\1\0\5SHORT\1\0\nSourceFile\1\0\rStackMapTable\1\0\16TIMEZONE_FIELD\1\0\23Unparseable date: \"\1\0\23WEEK_OF_MONTH_FIELD\1\0\22WEEK_OF_YEAR_FIELD\1\0\nYEAR_FIELD\1\0\naccess$000\1\0\6append\1\0\10calendar\1\0\5clone\1\0\6equals\1\0\nerrorIndex\1\0\6format\1\0\3get\1\0\23getAvailableLocales\1\0\vgetCalendar\1\0\10getClass\1\0\17getDateInstance\1\0\23getDateTimeInstance\1\0\ngetDefault\1\0\21getFirstDayOfWeek\1\0\vgetInstance\1\0\22"..., 6415) = 6415 30059 lseek(4, 58687379, SEEK_SET) = 58687379 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\362\245\16W\277\n\0\0\277\n\0\0\26\0\0\0", 30) = 30 30059 lseek(4, 58687431, SEEK_SET) = 58687431 30059 read(4, "\312\376\272\276\0\0\0003\0o\10\0\r\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\4(I)V\1\0&(Ljava/lang/Object;)Ljava/lang/String;\1\0&(Ljava/lang/String;)Ljava/lang/Object;\1\0\25(Ljava/lang/String;)V\1\0\6\1\0\tAttribute\1\0\4Code\1\0\rConstantValue\1\0\nExceptions\1\0!Format.parseObject(String) failed\1\0\1I\1\0\fInnerClasses\1\0\1J\1\0\17LineNumberTable\1\0\nSourceFile\1\0\rStackMapTable\1\0\faddAttribute\1\0\5clone\1\0!createAttributedCharacterIterator\1\0\nerrorIndex\1\0\6format\1\0\31formatToCharacterIterator\1\0\vgetIterator\1\0\5index\1\0\24java/io/Serializable\1\0$java/lang/CloneNotSupportedException\1\0\23java/lang/Cloneable\1\0\20java/lang/Object\1\0\26java/lang/StringBuffer\1\0%java/text/AttributedCharacterIterator\1\0/java/text/AttributedCharacterIterator$Attribute\1\0\32java/text/AttributedString\1\0\27java/text/FieldPosition\1\0\20java/text/Format\1\0\26java/text/Format$Field\1\0\36java/text/Format$FieldDelegate\1\0\30java/text/ParseException\1\0\27java/text/ParsePosition\1\0\vparseObject\1\0\20serialVersionUID\1\0\10toString\5\373\330\274\22\351\17\30C\7\0\34\7\0\35\7\0\36\7\0\37\7\0 \7\0!\7\0\"\7\0#\7\0$\7\0%\7\0&\7\0'\7\0(\7\0)\1\0\24()Ljava/lang/Object;\1\0\26(Ljava/lang/String;I)V\1\0)()"..., 2751) = 2751 30059 mprotect(0x7fb314490000, 16384, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 54168129, SEEK_SET) = 54168129 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B\256\10\261\\5^\0\0005^\0\0 \0\0\0", 30) = 30 30059 lseek(4, 54168191, SEEK_SET) = 54168191 30059 read(4, "\312\376\272\276\0\0\0003\3\v\3\0\0\352`\3\0\0\377\377\3\177\377\377\377\10\0\24\10\0\26\10\0.\10\0003\10\0:\10\0>\10\0?\10\0F\10\0G\10\0Q\10\0\\\10\0]\10\0\205\10\0\265\10\0\266\10\0\275\1\0\0\1\0\23$assertionsDisabled\1\0\1'\1\0\3()C\1\0\3()I\1\0\3()J\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4(C)Z\1\0\4(I)C\1\0\4(I)I\1\0\25(I)Ljava/lang/String;\1\0\4(I)V\1\0\5(II)I\1\0\26(II)Ljava/lang/String;\1\0\5(II)V\1\0\10(II[CI)V\1\0\4(J)V\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)I\1\0,(Ljava/lang/String;)Ljava/lang/StringBuffer;\1\0\25(Ljava/lang/String;)V\1\0\25(Ljava/lang/String;)Z\1\0\25(Ljava/util/Locale;)V\1\0\4(Z)V\1\0\21.DateTimePatterns\1\0\10\1\0\6\1\0\5AM_PM\1\0\1C\1\0$Cannot format given Object as a Date\1\0\4Code\1\0\rConstantValue\1\0\fDAY_OF_MONTH\1\0\vDAY_OF_WEEK\1\0\24DAY_OF_WEEK_IN_MONTH\1\0\vDAY_OF_YEAR\1\0\20DateTimePatterns\1\0\3ERA\1\0\nExceptions\1\0\6FORMAT\1\0\3GMT\1\0\26GyMdkHmsSEDFwWahKzZYuX\1\0\5HOUR0\1\0\5HOUR1\1\0\fHOUR_OF_DAY0\1\0\fHOUR_OF_DAY1\1\0\1I\1\0\10INSTANCE\1\0\34Illegal pattern character '\1\0\33Illegal pattern character '\1\0\fInnerClasses\1\0\1J\1\0\17LineNumberTable\1\0\22Ljava/lang/String;\1\0\22Ljava/util/Locale;\1\0\vMILLISECOND\1\0\21MILLIS_PER_MINUTE\1\0\6MINUTE\1\0\5MONTH\1\0\37No date or time style specified\1\0\37PATTERN_INDEX"..., 24117) = 24117 30059 mprotect(0x7fb314494000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb314495000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb314496000, 8192, PROT_READ|PROT_WRITE) = 0 30059 lseek(5, 5286298, SEEK_SET) = 5286298 30059 read(5, "PK\3\4\n\0\0\10\10\0\17SrC\225t=\307\\\2\0\0\212\4\0\0%\0\0\0", 30) = 30 30059 lseek(5, 5286365, SEEK_SET) = 5286365 30059 read(5, "\215S\375O\323P\24=\217uk7\3127\f\207\10\202S7@* ~m\22\20\207Y\322l\311\n3\213?u\243\314\222\322\231\256\343\357\222\221\210\321h\370\331?\312xo\251\t\10\1^\223{rz\317=\367\366\275\327\337\177\276\377\2\260\2147qHXH\340\t\26e\244d\333\r\323\333\325:\276\355h\244N\377\253\310\t\310\0376*\245b\351\275\200T,m\225\311\366]\341\355\16Q9]\335\320w\n\206\300\354\307[\370\304\16M\247\303M\323\231\354m\364\322fk\327\22\30\320m\327*u\16\352\226\267m\326\35z#\7F\345=\201\325\214\276o\36\232\232c\272M\315\360=\333m\346\262\267\260\36\326[\r\323\251\232\236\315\216\241\255\344\232\7\26\347.Y\322\354y\333\265\3755\201\344\25\35\213\331*U\373\237l\372\266\270a7]\323\357x\344\24\311pB\3117\234\260x\345\\m\301\355\34\344o\34u\215z'\214V\307kX[6\17\311G\271\310.*\356\360\275H\251x\205\3272H7}\203\231\212)\344U<@:\fC\30U1\306!\311a\34\243\2\375\27'\244\303n8-\227\32\217f\262\347\246/\327\367\255\206OM\223W7\375\357h\202\373\226\273\352\254.\266\313\255/\321\345\35\244? \272\236\342\371\0\302\261\20\223!\2163\16N\360\6\220RB\34\23\270\v\201Ib\263\204\274\22]\210\257\3509E\344\v1\201{\24cAn\201\364S\230\16\365\253\350\t\336\366\216@\232\373\206\350)$.\350\271Pp\237\242z&\303\f\265\340<\355 E\266XB\204\36@\236\233\237\1\0\6\1\0\5BLACK\1\0\4Code\1\0\rConstantValue\1\0\5Entry\1\0\nExceptions\1\0\1I\1\0\fInnerClasses\1\0\1J\1\0\17LineNumberTable\1\0\22Ljava/lang/Object;\1\0\3RED\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\tUNBOUNDED\1\0\1Z\1\0\naccess$000\1\0\naccess$100\1\0\naccess$200\1\0\naccess$300\1\0\20addAllForTreeSet\1\0\17buildFromSorted\1\0\fceilingEntry\1\0\nceilingKey\1\0\5clear\1\0\5clone\1\0\5color\1\0\7colorOf\1\0\ncomparator\1\0\7compare\1\0\tcompareTo\1\0\17computeRedLevel\1\0\vcontainsKey\1\0\rcontainsValue\1\0\21defaultReadObject\1\0\22defaultWriteObject\1\0\vdeleteEntry\1\0\25descendingKeyIterator\1\0\20descendingKeySet\1\0\rdescendingMap\1\0\10entrySet\1\0\6equals\1\0\vexportEntry\1\0\nfirstEntry\1\0\10firstKey\1\0\20fixAfterDeletion\1\0\21fixAfterInsertion\1\0\nfloorEntry\1\0\10floorKey\1\0\3get\1\0\17getCeilingEntry\1\0\10getEntry\1\0\27getEntryUsingComparator\1\0\rgetFirstEntry\1\0\rgetFloorEntry\1\0\16getHigherEntry\1\0\6getKey\1\0\fgetLastEntry\1\0\rgetLower"..., 17631) = 17631 30059 mprotect(0x7fb314499000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb31449a000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 57989868, SEEK_SET) = 57989868 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305BH\230&\324U\6\0\0U\6\0\0\34\0\0\0", 30) = 30 30059 lseek(4, 57989926, SEEK_SET) = 57989926 30059 read(4, "\312\376\272\276\0\0\0003\0005\1\0\10(TK;)TK;\1\0\5Entry\1\0\fInnerClasses\1\0\tSignature\1\0\nSourceFile\1\0\fceilingEntry\1\0\nceilingKey\1\0\20descendingKeySet\1\0\rdescendingMap\1\0\nfirstEntry\1\0\nfloorEntry\1\0\10floorKey\1\0\7headMap\1\0\vhigherEntry\1\0\thigherKey\1\0\20java/lang/Object\1\0\rjava/util/Map\1\0\23java/util/Map$Entry\1\0\26java/util/NavigableMap\1\0\23java/util/SortedMap\1\0\tlastEntry\1\0\nlowerEntry\1\0\10lowerKey\1\0\17navigableKeySet\1\0\16pollFirstEntry\1\0\rpollLastEntry\1\0\6subMap\1\0\7tailMap\7\0\20\7\0\21\7\0\22\7\0\23\7\0\24\1\0YLjava/lang/Object;Ljava/util/SortedMap;\1\0\27()Ljava/util/Map$Entry;\1\0\37()Ljava/util/Map$Entry;\1\0\"(TK;)Ljava/util/Map$Entry;\1\0\32()Ljava/util/NavigableMap;\1\0\"()Ljava/util/NavigableMap;\1\0&(TK;Z)Ljava/util/NavigableMap;\1\0*(TK;ZTK;Z)Ljava/util/NavigableMap;\1\0\32()Ljava/util/NavigableSet;\1\0\37()Ljava/util/NavigableSet;\1\0\"(TK;)Ljava/util/SortedMap;\1\0%(TK;TK;)Ljava/util/SortedMap;\1\0&(Ljava/lang/Object;)Ljava/lang/Object;\1\0)(Ljava/lang/Object;)Ljava/util/Map$Entry;\1\0-("..., 1621) = 1621 30059 lseek(4, 57988848, SEEK_SET) = 57988848 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\331\217\305W\305\3\0\0\305\3\0\0\31\0\0\0", 30) = 30 30059 lseek(4, 57988903, SEEK_SET) = 57988903 30059 read(4, "\312\376\272\276\0\0\0003\0%\1\0\5()TK;\1\0\5Entry\1\0\fInnerClasses\1\0\tSignature\1\0\nSourceFile\1\0\ncomparator\1\0\10entrySet\1\0\10firstKey\1\0\7headMap\1\0\20java/lang/Object\1\0\rjava/util/Map\1\0\23java/util/Map$Entry\1\0\23java/util/SortedMap\1\0\6keySet\1\0\7lastKey\1\0\6subMap\1\0\7tailMap\1\0\6values\7\0\n\7\0\v\7\0\f\7\0\r\1\0SLjava/lang/Object;Ljava/util/Map;\1\0\24()Ljava/lang/Object;\1\0\30()Ljava/util/Collection;\1\0\35()Ljava/util/Collection;\1\0\30()Ljava/util/Comparator;\1\0\36()Ljava/util/Comparator<-TK;>;\1\0\21()Ljava/util/Set;\1\0\26()Ljava/util/Set;\1\0\"(TK;)Ljava/util/SortedMap;\1\0%(TK;TK;)Ljava/util/SortedMap;\1\0000()Ljava/util/Set;>;\1\0)(Ljava/lang/Object;)Ljava/util/SortedMap;\1\0;(Ljava/lang/Object;Ljava/lang/Object;)Ljava/util/SortedMap;\1\0\16SortedMap.java\6\1\0\26\0\23\0\1\0\24\0\0\0\t\4\1\0\6\0\33\0\1\0\4\0\0\0\2\0\34\4\1\0\20\0#\0\1\0\4\0\0\0\2\0 \4\1\0\t\0\"\0\1\0\4\0\0\0\2\0\37\4\1\0\21\0\"\0\1\0\4\0\0\0\2\0\37\4\1\0\10\0\30\0\1\0\4\0\0\0\2\0\1\4\1\0\17\0\30\0\1\0\4\0\0\0\2\0\1\4\1\0\16\0\35\0\1\0\4\0\0\0\2\0\36\4\1\0\22\0\31\0\1\0\4\0\0\0\2\0\32\4\1\0\7\0\35\0\1\0\4\0\0\0\2\0!\0\3\0\5\0\0\0\2\0$\0\4\0\0\0\2\0\27\0\3\0\0\0\n\0\1\0\25\0\24\0\2\6\t", 965) = 965 30059 lseek(5, 99915, SEEK_SET) = 99915 30059 read(5, "PK\3\4\n\0\0\10\10\0\251`\273Dd\236y\305\5\2\0\0\233\3\0\0\"\0\0\0", 30) = 30 30059 lseek(5, 99979, SEEK_SET) = 99979 30059 read(5, "\205R\313n\323@\24=\343<\353\2306\244\264\345Q\212\v-$A\301El@AHU\20\22R\240U\251\262\200\225\343\fd\"g\\<\16bW>\210\r\22\10\211\5\37\300G!\216\355\10X4\260\360\334\327\271\347\236\271\343\37?\277}\7p\17\267\227P\304\216\315c\327F\t\273\25\334\252\240)P\34\313\360D@\274\24\270t4\323\211\232\312\2012j\30\312}\255\243\304OT\244\215\200\333\17\242\2517\2243\223x\23\272S_\217d\354\35\372\261?\225\211\214\273\2%M\227P\2533\26(w:9qm$M\20\253\223\224G`\3650V:q\323\222K\6\367\355L%\4?TZ%\217\4\n\315\326\200\222z\321H\n\254\364\225\226\317g\323\241\214\217}\352\21h\364\243\300\17\7~\254\322x\236,&c\305\251\345L\n\35\347\251\3262\356\205\2761\251\232\255\276\226\211g^{\1\313^\217\307q\24\205f'\207w+h\t@`\263\271\0w\267\233J\262\336\357q?\v!\2\266\37\4\322\320\337#p{\21\331|h\213\313\266_D\2638\220OTz\207\345\337\220;\23\377\235O\206\377\254\333pdc\236\177\374\367\202\235\336\321\37637\311\250\\\7eT\34\254\240^A\233w\374\227(\201z:\332\v}\375\306;\30Nd\300\207\331Xpa\201\2653+p\371\177\225\220.\324Jg\323V\31\255\323.1c\277\202eP3pp\316`\31\5\346(\216\325\363D\335g\304\267\200\335\376\212B\273\360\5\342\23#\v\2154G\v\234\222\375\3V\35199\22\27\260\1\22\220\345\362\234\345A6\33(\221\305\372CP\316\32N\263\346\365\34\2207g\336\25lB\324\253\270\212\2559\215G+2\232\317\20\37\317\244\3115\244\315)M\1\3272\224\233\335\270\306\3326\277\353\00678\17l\266(\376&\326(\372\"-\352\325_", 517) = 517 30090 <... futex resumed> ) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091214, 534790000}, ffffffff 30059 lseek(5, 4406417, SEEK_SET) = 4406417 30059 read(5, "PK\3\4\n\0\0\10\10\0d:&=$5eO\36)\0\0AZ\0\0%\0\0\0", 30) = 30 30059 lseek(5, 4406484, SEEK_SET) = 4406484 30059 read(5, "\245[\t|T\325\325?\367\336Y^f\36\333\204\0\3\1\6d\t\231\204@\324\210a\221\35\243$ \10\2100$C\30H213aQ\353V\252u\327\252U\320\272\340\22\265Z\221J\0Q\304\r\267\326j\375l\353\326\272\264V\253\255u\251\265\255\312\367?\367\275y\231\231LX\332\237\344\275\373\356z\356\271g\371\237s\307\27\276{d/\21\215Uq\37\255\21_\344\321\255\342K\237\370\207\370\212K\377\344\307\327\374\371/.\375\333\207\307\177\370\361\r\177~\353\23\337\211\3(I\362J\341\247nR\372\245\222.~\270\375\264Kz0\245\364\372\350fix\305X\257\3143\244\317G\5\322\217)\244i\310n\374\321\235{\366\340RO~\364\342\266\0?\362\371\321\233\37\5\374\350\303\217\276\350\"\2760d?\356\32\344\245\373\363c\200_\26\312\201~\372\263\224^9\210;\16\346\232\220\217\302r\210W\0165\344Q>*\223~\356;\214+\207\373\251E\216\340\322HC\26\361{\224!\213\r\31\366\321dY\302\217R\236e4\323V\306\2171\374\300\26\312\371}\264W\214\342\346c\370q,\367\2560\344q\206\34\307\305\343\271\262\222K\343\3711\201\t\231\350\227\223\230\264\23\374T#'\363c\n\367\232j\310i\374\236\316\4\314\360\312\231\314\252Y~:U\236\310\217*C\236\344\225'{\345l\37-e\246-\221\325\374\250\341\307\34\257\234k\310S\f9\217W\231o\310\5\374>\225\37\v\371\261\210\t\225<\373i^\271\230\17\242\202g_b\310\245\374>\335\220\313|\362\f\271\234\37+\2742\302\357Y\314\225\225\206\2545d\235!\243\314\255U\374\250g\372V\363Fb\206\\c\310\265\206l\340\257F\236\251\311/\343\262\331\220g\32\262\205\373%x\315\244![\271\307:\236q=\327l`\2426r\207\263\370q6\257wN\36]%\277\347\225\347r\257\363\fy>\17\271\300\220\27\362\351~\337\220\233\f\371\3\36{\21?.\346\21?\364\312K\374\264E^\352\225\227q\345\345<\327\25^y\245!\257bJ\257\346\312k\362\350.\371#\237\274V^\347\225\327\33\342\n&\363\307>y\203\274\321\20\227x\305\331^\271\231\373m\361\312\233\270\353\315>z@\376\204\37s\230\310[XTn\365\241\3416C\336n\310\255\206\274\203\327^\347\225w\362\373.\257\274\333\220m>zD\336\303\204\337\313\314\355\305\253\337\307\263\376\224\27\276\237K\17\30\362g\374~\220\37\333\370\361\20\37\353vC\376\334\220\17\33r\207!\333\r\271\223\347\330\345\225\273}\364\222|\304'\367\310G\r\371\230!\367\362\200\307y\177\373\f\371\204!\2374\344S\314\237\247\271\376\31C\356\367\312g}\364\246|\316\220\3173\261/\30\362E&\342\27^\371K?\275+_\342y\177\345\225/s\377W\274\362\327^\371*3\342\377\f\371\232!\177c\310\337\32\362w\334\366\272\237\376-\337\360\3127}\364\251|\313+\337\366\321g\362-\336\36>~\357\243/\371\343f\371\7\257x\333'\337\221\357\362\343=\257|\237\307\376\221\37\177\362\312\17|\364\255\370BP\367\3513\246\236:k\371\334ys\346\316\230\267`\261\240\300\3545\221u\221\262\206HS}\331\374dK\254\251~\274\240n\323\342M\211d\244)\2710\322\320\32\305\250\306\345u\321DmK\2549\31C\213\240\36\326\250\326d\254\241\254:\322\214!y\363c\365M\221dk\v\272\327d\266N\350\274\304\354\332xc\331\312hk\"Y\266\6\305\306HS]\264\245ln\244%\322\30MF[\246w,6~\22O\336\270<\276rM\2646\211\245{\246"..., 8192) = 8192 30059 lseek(5, 4414676, SEEK_SET) = 4414676 30059 read(5, "7@B$\332\3\342F\2351\363\303\261\214\327\221\221\217\177Th\2230\21}\270\177~\361~2\3\17\27\247\331\321\216\370\327\303]d\225^\322JV\346\303\273k\351\344\237&\332p\377\257v\262r-\233\251g\351\250t\233\263\303JO\365\17\264\247\331\35t\303\337\206v\332\271\217vU\227L\33\367S\17~\355\6R\"\260Vt\234\254N-\310z\234\352\3524\366\206\34H}\207\270\323f\357\303:B\205 \251\211a\235#t\322\345CR\351r\26\362\275\10-\30[\27\336I\10\316'\266\35x\253\360~\307\212k\210!\33aK\232 \340q\32&\233\251T\236\tEM8\302=\f\342{\243\6H\375q\314V\216;\217F\3329\356L\221\276K\334\315\"\215\310j\213\352b\376|2\353\210\332\16\334\331\201\177\257\244\243 ?\367\303N?@\3\345v\32-\177N'\313\207i\241\334A\313\0\332\353$\"\37\211\10E\356\245k\345\343t\243\334G{\345\23\364\242|\222^\223O\323\273\362\31\372P\356\247O\344s\364\251|\211\276\221\277\23\3\344\353b\270|C\224\3107E\263"..., 2334) = 2334 30059 mprotect(0x7fb31449b000, 24576, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb3144a1000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb3144a2000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb3144a3000, 8192, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb3144a5000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb3144a6000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb3144a7000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb3144a8000, 12288, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 57937685, SEEK_SET) = 57937685 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\240\253\305\322!\3\0\0!\3\0\0001\0\0\0", 30) = 30 30059 lseek(4, 57937764, SEEK_SET) = 57937764 30059 read(4, "\312\376\272\276\0\0\0003\0 \1\0\3()V\1\0\30(Ljava/lang/Throwable;)V\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\1J\1\0\17LineNumberTable\1\0\nSourceFile\1\0\10getCause\1\0\22getTargetException\1\0&java/lang/ReflectiveOperationException\1\0\23java/lang/Throwable\1\0+java/lang/reflect/InvocationTargetException\1\0\20serialVersionUID\1\0\6target\0058\261&\216\326q$o\7\0\v\7\0\f\7\0\r\1\0\25Ljava/lang/Throwable;\1\0\27()Ljava/lang/Throwable;\1\0*(Ljava/lang/Throwable;Ljava/lang/String;)V\1\0*(Ljava/lang/String;Ljava/lang/Throwable;)V\f\0\17\0\25\f\0\3\0\2\f\0\3\0\30\t\0\24\0\31\n\0\22\0\32\n\0\22\0\33\1\0\36InvocationTargetException.java\0!\0\24\0\22\0\0\0\2\0\32\0\16\0\6\0\1\0\5\0\0\0\2\0\20\0\2\0\17\0\25\0\0\0\5\0\4\0\3\0\1\0\1\0\4\0\0\0%\0\2\0\1\0\0\0\t*\1\300\0\23\267\0\35\261\0\0\0\1\0\7\0\0\0\n\0\2\0\0\0?\0\10\0@\0\1\0\3\0\2\0\1\0\4\0\0\0.\0\2\0\2\0\0\0\16*\1\300\0\23\267\0\35*+\265\0\34\261\0\0\0\1\0\7\0\0\0\16\0\3\0\0\0H\0\10\0I\0\r\0J\0\1\0\3\0\27\0\1\0\4\0\0\0,\0\3\0\3\0\0\0\f*,\1\267\0\36*+\265\0\34\261\0\0\0\1\0\7\0\0\0\16\0\3\0\0\0T\0\6\0U\0\v\0V\0\1\0\n\0\26\0\1\0\4\0\0\0\35\0\1\0\1\0\0\0\5*\264\0\34\260\0\0\0\1\0\7\0\0\0\6\0\1\0\0\0b\0\1\0\t\0\26\0\1\0\4\0\0\0\35\0\1\0\1\0\0\0\5*\264\0\34\260\0\0\0\1\0\7\0\0\0\6\0\1\0\0\0m\0\1\0\10\0\0\0\2\0\37", 801) = 801 30059 lseek(4, 56774077, SEEK_SET) = 56774077 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\216>\210q\220\1\0\0\220\1\0\0&\0\0\0", 30) = 30 30059 lseek(4, 56774145, SEEK_SET) = 56774145 30059 read(4, "\312\376\272\276\0\0\0003\0\25\1\0\3()V\1\0\25(Ljava/lang/String;)V\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\1J\1\0\17LineNumberTable\1\0\nSourceFile\1\0 java/lang/IllegalAccessException\1\0&java/lang/ReflectiveOperationException\1\0\20serialVersionUID\5[\324(q\371){2\7\0\t\7\0\n\f\0\3\0\1\f\0\3\0\2\n\0\17\0\20\n\0\17\0\21\1\0\33IllegalAccessException.java\0!\0\16\0\17\0\0\0\1\0\32\0\v\0\6\0\1\0\5\0\0\0\2\0\f\0\2\0\1\0\3\0\1\0\1\0\4\0\0\0!\0\1\0\1\0\0\0\5*\267\0\22\261\0\0\0\1\0\7\0\0\0\n\0\2\0\0\0C\0\4\0D\0\1\0\3\0\2\0\1\0\4\0\0\0\"\0\2\0\2\0\0\0\6*+\267\0\23\261\0\0\0\1\0\7\0\0\0\n\0\2\0\0\0L\0\5\0M\0\1\0\10\0\0\0\2\0\24", 400) = 400 30059 lseek(4, 55581598, SEEK_SET) = 55581598 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\256_\5\326\220\1\0\0\220\1\0\0&\0\0\0", 30) = 30 30059 lseek(4, 55581666, SEEK_SET) = 55581666 30059 read(4, "\312\376\272\276\0\0\0003\0\25\1\0\3()V\1\0\25(Ljava/lang/String;)V\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\1J\1\0\17LineNumberTable\1\0\nSourceFile\1\0 java/lang/InstantiationException\1\0&java/lang/ReflectiveOperationException\1\0\20serialVersionUID\5\212\330>'M\325\205\212\7\0\t\7\0\n\f\0\3\0\1\f\0\3\0\2\n\0\17\0\20\n\0\17\0\21\1\0\33InstantiationException.java\0!\0\16\0\17\0\0\0\1\0\32\0\v\0\6\0\1\0\5\0\0\0\2\0\f\0\2\0\1\0\3\0\1\0\1\0\4\0\0\0!\0\1\0\1\0\0\0\5*\267\0\22\261\0\0\0\1\0\7\0\0\0\n\0\2\0\0\0005\0\4\0006\0\1\0\3\0\2\0\1\0\4\0\0\0\"\0\2\0\2\0\0\0\6*+\267\0\23\261\0\0\0\1\0\7\0\0\0\n\0\2\0\0\0?\0\5\0@\0\1\0\10\0\0\0\2\0\24", 400) = 400 30059 lseek(5, 4420429, SEEK_SET) = 4420429 30059 read(5, "PK\3\4\n\0\0\10\10\0d:&=8\t\226U&\1\0\0\27\2\0\0-\0\0\0", 30) = 30 30059 lseek(5, 4420504, SEEK_SET) = 4420504 30059 read(5, "\215PMO\0021\24\234\207\270(\242(\312\207F\17\236\24M\334x\306p1z\332\30#\204{Y\32(a\273\246t\325\277\345\311\304\203?\300\37e|\255F\215`b\17\323\367f^\347M\372\372\366\374\2\340\24\365\"\362\330t\260U@\265\200\32!8SZ\3316\241q\30\215\305\235\10'B\17\303\356\310\244\367\242?\221\255f\217\220?O\7\222P\216\224\226WY\322\227\246\3534B%Jc1\351\t\243\\\377I\346\355HM\t\315(N\223\260/\263\251\r\307\\&B\17\244\t\257\205\21\211\264\322\\<\304\362\326\252T\267\10d\t\325\271\353\231\377\231\253c\215\322C\37*\230\372\332\205\230\321\t\305N\232\231X^*\227\250>\273\364\304\275)a\21\201\2035\302\301?\323\22v\276\327\335d\332\252D~\211\330\307\2\177\256;9\220sg,p\327\346>\307wpt\374\4z\364\372\22c\321\263\r\236\334\3062W\265\217)\346W\274K\200\22V\331\303y\255\315\363\312\375\366\332\345\311\275?\274\312X\367^\33\376M\345\35", 294) = 294 30059 mprotect(0x7fb3144ab000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb3144ac000, 20480, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb3144b1000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb3144b2000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb3144b3000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb3144b4000, 24576, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb3144ba000, 16384, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb3144be000, 32768, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb3144c6000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 59339574, SEEK_SET) = 59339574 30059 read(4, "PK\3\4\n\0\0\0\0\0003\246\305B\330!\17\270\"\2\0\0\"\2\0\0\31\0\0\0", 30) = 30 30059 lseek(4, 59339629, SEEK_SET) = 59339629 30059 read(4, "\312\376\272\276\0\0\0003\0\33\1\0\3()V\1\0\25(Ljava/lang/String;)V\1\0\30(Ljava/lang/Throwable;)V\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\1J\1\0\17LineNumberTable\1\0\nSourceFile\1\0\23java/io/IOException\1\0\23java/lang/Exception\1\0\20serialVersionUID\5l\200sde%\360\253\7\0\n\7\0\v\1\0*(Ljava/lang/String;Ljava/lang/Throwable;)V\f\0\4\0\1\f\0\4\0\2\f\0\4\0\3\f\0\4\0\21\n\0\20\0\22\n\0\20\0\23\n\0\20\0\24\n\0\20\0\25\1\0\20IOException.java\0!\0\17\0\20\0\0\0\1\0\30\0\f\0\7\0\1\0\6\0\0\0\2\0\r\0\4\0\1\0\4\0\1\0\1\0\5\0\0\0!\0\1\0\1\0\0\0\5*\267\0\26\261\0\0\0\1\0\10\0\0\0\n\0\2\0\0\0/\0\4\0000\0\1\0\4\0\2\0\1\0\5\0\0\0\"\0\2\0\2\0\0\0\6*+\267\0\27\261\0\0\0\1\0\10\0\0\0\n\0\2\0\0\0:\0\5\0;\0\1\0\4\0\21\0\1\0\5\0\0\0#\0\3\0\3\0\0\0\7*+,\267\0\31\261\0\0\0\1\0\10\0\0\0\n\0\2\0\0\0Q\0\6\0R\0\1\0\4\0\3\0\1\0\5\0\0\0\"\0\2\0\2\0\0\0\6*+\267\0\30\261\0\0\0\1\0\10\0\0\0\n\0\2\0\0\0c\0\5\0d\0\1\0\t\0\0\0\2\0\32", 546) = 546 30059 mprotect(0x7fb3144c7000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb3144c8000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb3144c9000, 8192, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb3144cb000, 8192, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb3144cd000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb3144ce000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb3144cf000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb3144d0000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb3144d1000, 32768, PROT_READ|PROT_WRITE) = 0 30059 lseek(5, 4428087, SEEK_SET) = 4428087 30059 read(5, "PK\3\4\n\0\0\10\10\0d:&=]}\216\215\314\1\0\0\327\3\0\0)\0\0\0", 30) = 30 30059 lseek(5, 4428158, SEEK_SET) = 4428158 30059 read(5, "\215R]O\23Q\20=\323.-\273VAP\264\200R\344\303\305D6\3067\33341D#a\243\17\220&>\336.7x\233\355]\262\37\32\374U\370\324D\23\177\200?\3128w\333\342\26Z\343}\230\231;\367\23433\231\373\353\367\367\237\0^\340\251\203*6\252h8(a\303\230Mc\236T\261U\3056\241\322RZ\245mB\331\335\353\20\254\203\350T\22\26|\245\345\373\254\337\225\361\211\350\206\234Y\362\243@\204\35\21+s\37%\255\364\223J\10;~\20\365\275\256\314\222\324\353q\330\27\372T\306\236\322\251\214\265\10=_%i\322$\324\264\374\362:\216\305\205I\260\244\273\347\367\304g\341e\251\32\202\30c\37\2533-\322,f\371\347\255\243WCD(\364\231\367\241\333\223A\332l\337\240\265N\216\232m\346\272n\341\341 \nC\206\253H7\247\224\241\200\2602\35m\36&f\2758\37\317\2736\2251.\377nF\273\377 \315\232d\331=\234\322\264\225\250\257\334\5\35\22\366g\324\272A\33+:\307Q\26\7\362\2552s8\371F\366\r\262\206y\330\\\360/\353jC\346i\307\230]\302\326\177l\230\260x\275#B}\326N\314g\343v;\330D\205\277\2509\26\310t\303\326\341\233\307\236\330\317=\33\200\276qP\302-\266\225!@\3402\3022\370):\203x\355\251\21\31\321\232z\202.\277*C\222\321\355[\275\340We\364\310\350\365\255\306\374\252\214>\31rE=\366\262\25\211$\251\210 \202a\304\251\254\t\242\236\244\264RX\244\277\227u\214c\33\23\260\251\224\3571I;\342^J\211\337", 714) = 714 30059 lseek(5, 4405466, SEEK_SET) = 4405466 30059 read(5, "PK\3\4\n\0\0\10\10\0d:&=\203\275\252\360\304\0\0\0W\1\0\0002\0\0\0", 30) = 30 30059 lseek(5, 4405546, SEEK_SET) = 4405546 30059 read(5, "\215O;\n\302@\20}\343/\32-<\200\245\205\242\270\330\232\220F\20\4\301\"\271\300&.!!\331\300f#x5\v\17\340\241\304\365\203\210i\234\352\275\341}f\256\267\363\5\300\22}\v=\v6a\20\v\275.\344Q(-\24a<\331\245\374\310Y\306e\314\326\31/KgZ\333\20z~\22K\256+%\10\322\rV_\222}\230\212H;^-\310\r\2\307\253\247\271\263]T\344,\24U\251Yj`\316\345A(\266\365\265Jd\374\271\355e\367L\271\355\27\225\212\304&\311L\373\350W\267\341\221.\324i\361\250!\314\377\312~{\10\303\337?:\4B\3\217\241\26\241\211\226\341m\303\32\350\30d=Q\367\16", 196) = 196 30059 lseek(5, 4428618, SEEK_SET) = 4428618 30059 read(5, "PK\3\4\n\0\0\10\10\0d:&=\345Gy=W\1\0\0Y\2\0\0(\0\0\0", 30) = 30 30059 lseek(5, 4428688, SEEK_SET) = 4428688 30059 read(5, "\205Q\313N\2A\20\254\201\345\261+\312\303\7\242\36\320x\0\17n\274\n\341BbLX\365\0!\3618\300\4\7\227\301\354C\177KO$\232\370\1~\224\261g1`6$\316\241\253\273\322U\335\235\371\372~\377\4p\201C\v\31\354eP\266\220\320\270o\301\320X\311\340\200!\335\224J\6-\206d\255\336g0\332\263\221`\310;R\211\333p:\20^\217\17\\bJ\316l\310\335>\367\244\256\177I#x\220>\303\2513\234M\355\201\10\375\300\236P:\345j$<[\252@x\212\273\366\r\177\362\33\f\226\22/\327\334\177\240\222\241X\253;\23\376\314\3550\220Q\0075\230]9V<\10=\262n7;\227\213\6\227\253\261}7\230\210a\320\350\257\341Zq\247f\257\323\350\365\33-r,\320H:\345Q\214\226\203\255\356,\364\206\342J\352\3L\275\332\271V\347\220\205Ik\255\234\226\212\362\212\213y\235\374\1777\355\20\337\30\307H\323\227\350\227\4\323s)ZT\331\204\2140u6\7{\243$\201\r\212\351\210\254 G1\267h\300&\266\10M\344Q\240.-\256\22\352\227\375@\342~\216\344+\345\354\217\376\10\305\310\261D\252\355u*\203T\251\270\252\272T1\354D\331\356\17", 343) = 343 30059 lseek(5, 4425677, SEEK_SET) = 4425677 30059 read(5, "PK\3\4\n\0\0\10\10\0d:&=\0F\242\252j\1\0\0\363\2\0\0005\0\0\0", 30) = 30 30059 lseek(5, 4425760, SEEK_SET) = 4425760 30059 read(5, "\225RMO\302@\20}[J+\25\5\21\361\213\203\0364|$V.\36\204\220\30\22\23\223\252\7\f\367m\331`Ii\223\322\22\177\226^4\361\340\17\360G\31\247\245\32SH\324\313\314\354\233\367\336\316N\373\376\361\372\6\240\205\252\6\31\333\0322\330Q\261\253bO\305>\203\322\261];\3502dj\365\1\203\334\363\206\202\241`\330\256\270\t'\246\360\357\270\351\20R2<\213;\3\356\333\3219\1\345\340\336\2362\264\f\313\233\350\246\10\247\201>\246r\302\335\241\360u\313sg\302\17\204?\325\373\201o\273\243\336\27\320fP\223.\303q\315\30\363\31\327\35\356\216\22b\273\276\0101dg\334\t\343Q\2264\177s\2715\307\302\n\210(=\2342\344\372\366\310\345A\350\223\335\365\"k\371{\256R\257\350,\336\330\245\v\264\276\27\372\226\270\264\243\r\225S\232\223H\222\207\0025\2175\2543\350\377\\\35C1=.\303\321\237\346\305!}{\31\264H\372\0372\224i\n\212+t\322)3\312\331\306\v\330\23\25\22r\24\225\30\254B\243\230\237\23\260J\25\250\246\351\23\361\31e)\3224\37S\312\203XY\231w\23eT\25P\4+^\220\307F\342qNh\304R\32\315gHi\237\352\17\37\345\333GA)\362!t3\346\227\261\25\347\312'", 362) = 362 30059 lseek(5, 4405216, SEEK_SET) = 4405216 30059 read(5, "PK\3\4\n\0\0\10\10\0d:&=\250h\271m\261\0\0\0\"\1\0\0+\0\0\0", 30) = 30 30059 lseek(5, 4405289, SEEK_SET) = 4405289 30059 read(5, ";\365o\327>\6\6\6C\6\36v\6.v\6nF\6\366\344\374\274\262\324\242\22F\0065\r\237\254\304\262D\375\234\304\274t\375\340\222\242\314\274tkM$!\377\244\254\324\344\22kF\6\316\340\314\364\274\304\222\322\242TF\6ql\232BB\200\2524lB\2540u\333a3\220+8\277\264(9\325-3\7h\242\250'\304\30g\210\273R\213\364@:\30\31T\223\363s\365\223RK\213K\364\263\200\314\334\304\274\224\324\"}t\305\214\f\2\350\26\260120201\200\0#\v#\0033\3\v\220\317\n\34411\260\0011\204\305\316\300\1\2469\1", 177) = 177 30059 lseek(5, 4423944, SEEK_SET) = 4423944 30059 read(5, "PK\3\4\n\0\0\10\10\0d:&=6\235\177X\"\2\0\0\223\4\0\0006\0\0\0", 30) = 30 30059 lseek(5, 4424028, SEEK_SET) = 4424028 30059 read(5, "\225S[O\32A\30=\303ma\273E\245\205\322+X\25\20\252\213>5\325\220\264V\23\22\324&4&}\34\326\221.\201]3,\204\237e_\324\264I\373\336\37\325\364\233eKI\305\22w\223\271|\227s\276\357\314\314\317__\277\3\330\302\266\216{\310\353X\306K5\254hX\325\260\26GA\207\216\242\216\250r\352(iX\327Pf\210\355\332\216\355\325\30\322\245F\207\17\271\331\345N\333lz\322v\332;\353'\f\221=\367T0,4lG\34\rz-!?\362V\227,\251\206k\361\356\t\227\266\332\7\306\210\367\331\3563l7,\267g\266\304\240\357\231\35Z\366\270s*\244i\271\316PHO\310\276Yw<\321\26r\357\217e\207Aw\317=\333u\216x\317G\277Q\r\203\26\0000\24gU;e\n\340)'$F\f\313S\256q\23\7\256\354qo\177d\t\237\224\2\243C\336\35\20sa\16\364q\253#,O!\217\252\f\211\246\335v\2707\220\224\371~n\327\357x_LZ\336\235QoM\351\320t\7\322\22\7\266\0224\375\257P\233*\311\200\201\373\32*\6^a\303\300&L\206\334\234\26I\264\231\345}\340\222\24'\344\251H\235;y{Ll\240\212-\3id\30\252w=U\206\215;I\302\260tC\23\206\3709\227}A\333[ni\235n\206\177x\307g\f\231R}\366EH\266\205\267/\245+\307i\f\257g`\375\377\350\3\23\275+\365\312\324\27\6SGAc\222v5\204\350\7b\345\312\25\330\27Z\205\260@\243\356[s\352\361a\221V\231q\24\226\220\362Qbx\200\207\204\301\224\314\1\326\31E\207i\316V\256\21\272F\370\342\360\33\242\237\312\225T\354\22\332\25\342?(\16\320\20G$`I\372\361kd) \201\242\317\224'[\202\274\217\220\3659\263\23\316,\36+\316\305\267\304\371$\340|\363\267\376K$.&\365\307|\256g\267\324\376\324\257=D~\25\377\34/\3749\367\33", 546) = 546 30059 lseek(5, 4421593, SEEK_SET) = 4421593 30059 read(5, "PK\3\4\n\0\0\10\10\0d:&=\\\t1,B\2\0\0\273\4\0\0003\0\0\0", 30) = 30 30059 lseek(5, 4421674, SEEK_SET) = 4421674 30059 read(5, "\225S\331n\323@\24=\343\354\306\244!tcwBC\343\244\255Y\372\200\232(\22\255@\252\24\265\17\211*xB\216c\5G\211\0359\343H\375+\220 \225@\342\3\370(\304\35\333\255\262=\320\207\271\313\231\231s\227\271\363\347\357\317\337\0^\341P\206\202\235\f\356\240\224\302\v\0311\354\244\261+tY&PK\243\222FU\370{)\354\247p\220\202\316\240\f?\273#n\273\316\2311\264\30\362\315\27611\364\201\341\364\364\26\367l\247WcH\326m\307\346\r\206\215\362\362\266v\301\20?q\273ty\255i;\326\231?\354X^\333\350\f\2:\3274\6\27\206g\v?\2\343\374\213=f\320\233\246;\324;\226?\346z\237\314\241\341t-O7]gby\334\362\306\372\2611\266N\256]\312C\236\315ts\236\372rtM\177x;\336z\273]k\20\371\335\236\305\317g\370\327\313\332\252^d\351\330{\317s\275\20ax\273\242'+\272\264\212+11\6>\205\222\270\313\220i\331=\307\340\276G@\273\336>\232\271p\336\351[&\2575\226\241\325\245\236\206\21\226J\224[\256\357\231\326\7;x\232\271.\34\10j\0059\274T\220\305\32\303\326b\276\307\276= r\6VTh\332^+x\210G4\22\305#\325t\375A\327\331\345j\324c\265H\265\25U\356\252\n\336\210C\373\267z\21\206\334b\241\f\245\377\252\224!V\26\3\2314F#\313\351R\344U\23\273\4E\265Q\213\322\334\r\241x\201\376\214\2\232\vZ\222\350\t}\262\30\3319\334#\231'\357#\341\22i\271r\5V\251\376\200\364-8s\237d\2264\240\"\216\0022(b\235\274\315\36046\310B`m\21+\3036\331\"R\270\367\2004\23\275\215\242\274#-\366\22\225\357\220\276\336\4H\6`) \16/'\"\342\3559D\320\305\361\30O\"\272KJB\244\246\375B\354\323\25\342\371\304\24\311\312\24)R\3714\211\25202$\366hM!/\206\324\202\220jHrS\213\206\247A-\302zF\2264\223\206\26\245!\321-!\v\324\17\241\237\377\3", 578) = 578 30059 lseek(5, 4424574, SEEK_SET) = 4424574 30059 read(5, "PK\3\4\n\0\0\10\10\0d:&=N #k\37\2\0\0{\4\0\0003\0\0\0", 30) = 30 30059 lseek(5, 4424655, SEEK_SET) = 4424655 30059 read(5, "\225S[O\23A\30=\323\313n\273\256\5\213`\275\266(\264\245\25\26|2BH\220\300\3)`RC\342\343t\31\3526\355.\231n\233\376,|\1\242\211\276\373\243\214\337L\327Z\264Z\335Mfg\2769s\316\2313;_\277}\374\f`\3/,\334B\301\302\"\236\252\346\231\211%\23\313)\24-X(YH\252I\ve\23+&*\f\306\226\347{\3416\303|\271\326\342}\356\264\271\337t\352\241\364\374\346\346\312\tCb78\25\f35\317\27G\275NC\310\267\274\321\246J\266\26\270\274}\302\245\247\306Q1\21\276\367\272\fN\315\r:NC\364\272\241\323\242n\207\373\247B:n\340\367\205\f\205\354:\265\300o\356\376\30n2X\301y\350\5\376\21\357h\352\337\2540\230\321j\206\245IV\307J\212\233\26\304\304\200aq\254>\264\277\37\310\16\17\367\6\256\320\212\4L\366y\273G\262\305)\274\307\215\226pC\305tF\275OV\227a\245\326t;fC\370]\317l\223\331\341\316\256\220f\323uzBzBv\3157\256k\v\356TO=\253\f\272\273\357Y\256\263\311;\1\372\0055\fZ\10\300\220\33\246\366\214+\204\247\234X\217\333>\1.\\\221\261\325h\213\246G\t\221\2032\303h\335j9\334\363%e\256_]\f\357\212A%kCdTTyu\327\227M\361\326R}\312\234\257\177I%\31Hb\202$\357q\273+4,\0310QVM\225>m\227\r\254\240l\340\t\236R\3\206jz\317%u\217\3406\16\232\"\350&\225\302\263\215\0232\3\317\360\334\300-\334f(_w@\f\213\327j\3C\352|\277\311%>\373T\333\273\226\343JQ\245\360K\356\335\16\303\344\205.2\30\373\\v\305`\253\5\243\335\332c\230\312\357\f\237~\262%\274\r)]y\252\340\345\20\272\377_\214\320\205Y\372m\306\241\236\02105(ZS\264\253 B/\20/\226\216\300\276\221\25\301$\255z\340\235A\fY\244\311\232:\211\302\r\334\fP\342\310\220\217\321K\3\t\261\4E\253\250B:R\352c\344+\214tT\31_0V:F\354\30\361\303\37\320>\26K\351D\37\243G\320\177\r\350\222$\v\230#\252yL#w\206\2620\240,\340\216\242L\275&\312\351\220\362\325?\371}\214\35\16\360\342t\16\334\273D\372\335@z\204\316U\374}<\10\2763\177\1", 566) = 566 30059 lseek(5, 4423468, SEEK_SET) = 4423468 30059 read(5, "PK\3\4\n\0\0\10\10\0d:&=\340qp\277\213\1\0\0 \3\0\0003\0\0\0", 30) = 30 30059 lseek(5, 4423549, SEEK_SET) = 4423549 30059 read(5, "\225\222\333J\303@\20\206\377I\333\304\306\250\265\236O\365\0\212U4z\353\tD\20\204\242\27\225\202\227\333t\251[\322\4\322\244\370Xz\243\240\340\3\370P\342$\215\242UAofv\376\374\3631\263\331\227\327\307g\0\273X6\241c\306\300\254\t\rs&r\2307\260`\240d`\221\240\37(O\205G\204\314z\271F\310\236\370\rI\30\251(O\236G\355\272\f.E\335e\245X\361\35\341\326D\240\342:\25\263\341\265\352\20\354\212\343\267\355\272\214:\241\335\342c[x\r\31\330\216\357ue\20\312\240c\237*W\236\274\227\373\4#\375FXY\257\264DW\330\256\360\232v5\f\224\327\334/\367$\345'}l\317u\205\33%C|\363\22\326~'$\322E\275%\235\220\215\332\315\16!_UMO\204Q\300\270\263\357\256\23779\353a?68\370:\340\21\303\315\252\37\5\216\214k\236\363\313\276\333\261\331\302\0\362\4\353sc\254-Y\30A\201\260\365\257+$\24\372G'\254\376iv\302\304O\27V\3032\277\f\35\374o\370\325d8\363\274\34M\256l\316\3049\267\361\0\272\343\203\206A\216z\"\226`q\264z\6\fa\2303\305;\245\315\207\f\3238\347\237\240]m> s\333\7XI\0\223=S\n\210O\243(\202\n\307\214\32KQ{\354\211]\372\306\346=\262\375\234\322'\216\376\301\3211\36sX\235H\374\223\230J\362\364\33", 395) = 395 30059 lseek(5, 70954, SEEK_SET) = 70954 30059 read(5, "PK\3\4\n\0\0\10\10\0\251`\273D\236@l`_\"\0\0001G\0\0\32\0\0\0", 30) = 30 30059 lseek(5, 71010, SEEK_SET) = 71010 30059 read(5, "\275<\txT\325\325\347\334\367f\336\314\344%!\t\31\30 0\201 \1\2a\21\242\3\"I\10\30\314\202$\200\200\212\223\311K20\231\2113\23 Vm\335\227Z\267\272\201RW\32\367\242b\22\214\202+(\356[\255[\255U[\327\266V\255\33\222\377\234\367fM&\204\377\377\376\377\3673\357\335w\357\271\367\234{\366s\357\350\376\203\17\357\6\200\331\222\337\6\343p\233\202\277\263\201\300m\26\274\211\3377\333`\30\336b\305[\3616\v\336\256\340v\33\376\36;mx\7\336\311\303w\331\340\3\274[\301{l\220\301s\357e\360\373\370\361\7\5wX\360~\33\344\340\3\f\364\240\5w\332h\231\207\254\4\331e\3+vs\253\307\206\273\360an\365Z\251\357\21\5\37\265\340n\356\334\303\235\217)\370\270\r&\3406\376x\202\37O\362\343)\33>\215{-\270\217\1\237\341\217g\271{\277\25\237\303\347m\370\2\276\250\340K6(\306\227\271\373\25n\275\252\340k6\230\215\257s\317\33\334\372#\267\336\344\326\237\270\365\26\267\336\266\340;\274\346\273\274\310{6\3743\276\317\335\177Q\360\3\33,\344\235\314\306\277Z\361C\374\310\206\37\343\337\24\374\273\r*\f\352>\341\326\247\374\370\214\37\237s\337\27\334\372\2227\373\2174\374'\376\213\37_)\370o\v~m\203e\370\215\202\337Z\360?\n~\307\3\337+\370\203\rV\3407Vz\374\310\4\374\304\255\3\26\374\331\202\7y\344.^\251O\21`\21H\334\27B\21\222E\310\304 aR\204\331\6MBQ\204\305\6-\302J\274\0266\342\214H\263\tU\244[\205\212\7\210$\221\301\217L~\f\243>\221\305\217l^!\207\247\rWD.a\26v\213\30a\23#\205\203X'F\331\304h1\206\1\363\254b,\36\260\211\261b\234E8m\"_\214\247\0361\201\37\5\0261Q\21Gps\222\r\316\25\2056X%&3\242)\212\230J\333\25E\274\304\4~L\263\212\351\242\230\0373\230\350\231\212\230e\203\313\211h\242cv\2328R\314\341\307\\E\224X\341jB\10W\213\243\210\27\342h~\270\250OL`\370y61_\34\303\237\v\30\317\261\374X\310\304\226\246\2112Q\316\237\213H\367D\205E,f\264KL\300\377d\226\21\320q\242\222\273\226Z\304\361\fR\3053\252-\242F\7\231\267u?\330\240N\324Z\3042\2138\201\330.\226[D\235\rN%\303\20\365\314\373\25\212Xe\205nq\"\303\255\266\2105\f\264\326\"N\262\210\223\231\355\247X\304:\2338U\270\371\321\240\10\217\r\236\300\227\25\321h\203\247\204f\303\17E\23\2174[E\213\360\332\350\261\336\"6(\302\247\210V\33\22\347\360\242\347r\353<~\234\317c\0270\33/$\365\25\27\221=\210\213\21\314\313\334Awk\10A\255\364\373\265`\271\317\35\ni!E\\B=+\226W\225\7\374\33\265`X\v\"H\276@3\302\310*\277\26.\0165\25\267y=\356`cq{\330\353+\256\n4\317CP\312k\253\253Kk\26!dW\255wot\27\373\334\376\346\342\272p\320\353\347\341tZ+\24v\373\303+\335\276v\315\"~M\310\347{\375\336\360\2Z\273p\362J\4\271<\320\250!dVy\375ZM{k\203\26\254w7\3704^/\340q\373V\272\203^\376\216t\312\341\26/\321"..., 8192) = 8192 30059 lseek(5, 79202, SEEK_SET) = 79202 30059 read(5, "\262\17\362\23\255\360uZ\275(V\257\353V\2508\314\16K\27\274\21\3453\277\33{\340\217\273\340M\1\253X*\177r(;\2209o\30\226\v2\210\370mdL7Q\334\271\231\24\366\26(\301[a\1\336\6\345\270\35\252\360\367\304\267N8\5\357\2003\360.\312\r\357\205\233\361\17p\33\336\257K\340$\332t\21l\302\213\360bZ\261\4|x\t\311\317DY\257\206\227\222\211\230\241\nV\351\306\242P\346\273T\317,Xf\333c2\333\36\223\331\366\210\314FP\266\241Gx]\365\371|\313XmSl\265M\0219\225\260\337>\3\254d\3\272\273>Q\367\333\277Q\3602\262\5\375\337\313\1\372\310\247\310\211\20\264a\226\243\231\324\255\31<\244^\344\244I\301l\374\37KD\254\342u\332\2\37\273}A>{'\274\265\5\216\244\327\304}`\357\205\267WS\325\302\2472$\305wj:a?w\361h\17%\244F\367{\324\375 u\375y\v,5\346\25\365\302\373<\257\33\376\302R\377@\227\372_]&\236\3530%\254vF\302jr|5m\212^F-cS\323\227y\332%S\327\207[`j/|D\253a7|\0349\361\"[\373\33E\211\277G?>q\230h\205\354\"\207\276\36\315\372\264\7>\243\236,.T\247\3612\267t\301\347\211\346\330\0#\211\7\17\23Wz\371\177\257\2\303\360Q\230\200{\310\f\237\200R|\22\216\303\247\240\36\237&/\273\27\374\270\217L\354\31*8\236\243\2\343yR\220\27\340V|\21\356\303\227\240\27_\206\247\250\240\330\207\257\302~|\r\336\302?\222\327}\23>\303\267b\346[O\6\1775\231\264\f\353 \23\257\245\322\304\4\367\201\203\22\304-\324\272\201\24\221\315R\326e\301\251 \350\255)\21\225\371BO\361\330\314?\323S|E\235\23f}l\tq\342\6]Kn\204\177\350\356\312Lfc\245r\314\2\377\244\367\277\350\275\20f\243\25\370\177\356\261\222\342\210U\354\300]\342\376\205\16i\35\276 \235\272\320\361_", 607) = 607 30059 lseek(5, 68016, SEEK_SET) = 68016 30059 read(5, "PK\3\4\n\0\0\10\10\0\251`\273D\216*\37\327\303\10\0\0\365\21\0\0!\0\0\0", 30) = 30 30059 lseek(5, 68079, SEEK_SET) = 68079 30059 read(5, "\215Xiw\34G\25}\335\262-\313\222\27\311\361\216\2352\210X\22nM\210\343@\34\243X\32Y\266\210F\222G\222Ml\34\350\351\256\231)\273\247{\324\325-Y&\220\20\366}\337!\354\373\232\200\10\207\17\374\0~\n|\342\23\347p\16\34\356\353\356i\215,M\340\203\356T\335\272\365\352\325\253W\257\313\376\353\177\376\374\27\":G\177\332C\307\350\253=t\202\276\326CG\351\353\f\337`\370&\303\267\30\276\315\360\35\206\227\31\276\313\360=\206\3573\374\200\341\207\f?b\3701\303O\30~\312\3603\206\2373\374\202\341\227\f\277\352\246\337t\323o\r\332\355\5\265\31\271\"\275nz\5\275\231\254gP\337\264\357\313\260\350\331ZKm\320\351\31_F\5]-4\225c\207n!\216\224W\200z\2605\343)\203\216\225c?R\ry]iU\361\344\270\357\7\221\35\251\300\307|1\343\4\215BE\306:*\334A\263a\373\256\f\v\363vh7d$CL\337\351\243\t\251ia\371^\313\202g\226\227:\323\353J\355\204\252\311\306\f\32-\326m\277&\5\4\"\21\\\20\223\227'\226\256\234\25\323\263Ssg\305\215\361\362\354\364,\272\227\313\345\271\362\250A=N\340\257\310\20\313t\323\357\r\332\2278\\lq\6=\322\332\234\3o\nE\300b\20xzp\263\16.v\263`\251\2678\260\331\342\234\357\255\261\243W\r:\276\305\n\37\360r\254x\332\216\272\364\232,\254#\34\226\225\366\16\2463\270\223kq6\256\254\332\261\27][\300\331\340\216\34\261\254\214\261\226c\333S\321\232\245\235 \304i\277\274\204\244\211\352J\213l@$\3b\310\225\216j\330\36\362\221sM\372i\265\21AU\214/\24\247\247\205^kT\2oX\330Z\330\"3.Vl/\226\351\316\223\244\tUM\3710\262\331\366*\346x\1\262\331\215\223\213\331\312g\330\37\25%\345\253F\334\20\360\350\3349\16\277c{N\354\331\221,\271\213v-\t\177NY\r\327\212\230\354/\266(Q\232\24\2406\315\234ml\235\3517\266\314\234-e3{\274\300i\25\327\3\351\355Ok\262\322\21\356k\317\202\252\371v\24s\374\6\37\30\276\270\265v\215a\312\215q\4\262\306\1\304~m\307\301n\205n\"\304U\305\267X\213\213Z.\307\311\265\347J=v\353\302E\\\376\220\363\322\361b\255V@Y"..., 2243) = 2243 30059 lseek(5, 70322, SEEK_SET) = 70322 30059 read(5, "PK\3\4\n\0\0\10\10\0\251`\273DJ\344\346A3\2\0\0\35\4\0\0'\0\0\0", 30) = 30 30059 lseek(5, 70391, SEEK_SET) = 70391 30059 read(5, "\215S\331n\323@\24=\223\315\211I\332\320\215R\240\244+YJ]\301\33\255*A\4R$\247HM\251\324\307\2113M\35\342q5qJ?\253\274\20\211J\360\3167\360\2\374\7\342\216\23\322@\303\362`\337;\347\236{\356\342\361\247\357\357?\0x\214-\23),\33X1\21\301\252\2015\3\353&\342x`\"\211\274\201\242\201\222\201\r\206\304\216+\335`\227!\232/\0342\304\312~C0L\332\256\24{]\257.\324\1\257\267\t\231\262}\207\267\17\271r\365y\0\306\202\23\267\303\220~\265o\227}y&T \24\35+R\nUn\363NGPt\305\226\"\260:\307\226\243\270g\225\351\365\350\31\367VGs\266\31\f\247\177`X\316\333-~\306\2556\227M\253\26(W6\267\v}H\vQ\36\321\31U\317]\201U\336>\366\225'\32\24}~\356\210\323\300\365%\321b\\5\267t\363\327\24\0312\265\200;\257\253\3744\34\206V\304\260\376\347\322!\364\262\336\22N@\271\221sRM\325\334\246\344AWQ/\225\353,\333\361=\253.\272\235\300j\221\353q\331\20\312\252\364e\207\243\357\374:\331.\211\2335\277\253\34\361\302\325+\316\374\\\330\246\346\245q\3i\332\360h\216\306\0362,\376}\31\f\vW\35\356we\340zb\30\324\22\233i\314`\326\200\305\260\364\317\17\306\220\375}^\206\265\377\32\230av\334\226\351\356\315\217\342\7'\312\177\243?L\30\232\31\327\21rt\227S\240\205\321\225\217\322C\273\241S\206<\213,#\33/\366\300\336\222\23\301\4\275\23\32d\2371I~\272O@\26\323d\231\36~\220\354\221\230\226\233\276D\344\250\324C\364\242z\211\370\321F\17\211\217a\222\256\32#\212\226\234\320T\366\5)\366\25&\373\26J\347\10\323\377\337\34nQa\22\32\24\321\336\2\336\273\354:\10\371DM7\353&\23\321z 8|\3\275\266\221\230\265\333B\17=\326x\35\300\26\372m\341\240Mm\177\3", 259) = 259 30059 lseek(4, 28590375, SEEK_SET) = 28590375 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B.\272l\274\33\5\0\0\33\5\0\0!\0\0\0", 30) = 30 30059 lseek(4, 28590438, SEEK_SET) = 28590438 30059 read(4, "\312\376\272\276\0\0\0003\0D\10\0\3\10\0\v\1\0\n at index \1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0,(Ljava/lang/String;)Ljava/lang/StringBuffer;\1\0\25(Ljava/lang/String;)V\1\0'(Ljava/lang/String;Ljava/lang/String;)V\1\0((Ljava/lang/String;Ljava/lang/String;I)V\1\0\2: \1\0\6\1\0\4Code\1\0\rConstantValue\1\0\1I\1\0\1J\1\0\17LineNumberTable\1\0\22Ljava/lang/String;\1\0\nSourceFile\1\0\rStackMapTable\1\0\6append\1\0\10getIndex\1\0\10getInput\1\0\ngetMessage\1\0\tgetReason\1\0\5index\1\0\5input\1\0\23java/lang/Exception\1\0\"java/lang/IllegalArgumentException\1\0\36java/lang/NullPointerException\1\0\20java/lang/String\1\0\26java/lang/StringBuffer\1\0\33java/net/URISyntaxException\1\0\20serialVersionUID\1\0\10toString\5\35\253\24118\345\327\373\7\0\34\7\0\35\7\0\36\7\0\37\7\0 \7\0!\1\0\33(I)Ljava/lang/StringBuffer;\f\0\32\0\17\f\0\33\0\22\f\0\f\0\6\f\0\30\0\5\f\0\31\0\5\f\0#\0\5\f\0\f\0\10\f\0\25\0,\f\0\f\0\n\f\0\25\0\7\t\0+\0-\t\0+\0.\n\0&\0000\n\0&\0003\n\0'\0/\n\0(\0/\n\0*\0/\n\0*\0002\n\0*\0004\n\0*\0006\n\0+\0001\n\0+\0005\1\0\27URISyntaxException.java\0!\0+\0&\0\0\0\3\0\32\0\"\0\20\0\1\0\16\0\0\0\2\0$\0\2\0\33\0\22\0\0\0\2\0\32\0\17\0\0\0\6\0\1\0\f\0\n\0\1\0\r\0\0\0|\0\2\0\4\0\0\0-*,\267\0:+\306\0\7,\307\0\v\273\0(Y\267\0<\277\35\2\242\0\v\273\0'Y\267\0;\277*+\265\0008*\35\265\0007\261\0\0\0\2\0\24\0\0\0\25\0\3\377\0\r\0\4\7\0+\7\0)\7\0)\1\0\0\7\f\0\21\0\0\0\"\0\10\0\0\0>\0\5\0?\0\r\0@\0\25\0A\0\32\0B\0\"\0C\0'\0D\0,\0E\0\1\0\f\0\t\0\1\0\r\0\0\0$\0\4\0\3\0\0\0\10*+"..., 1307) = 1307 30059 lseek(4, 55416039, SEEK_SET) = 55416039 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\207\271\4\257g\1\0\0g\1\0\0\32\0\0\0", 30) = 30 30059 lseek(4, 55416095, SEEK_SET) = 55416095 30059 read(4, "\312\376\272\276\0\0\0003\0\25\1\0\3()V\1\0\25(Ljava/lang/String;)V\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\1J\1\0\17LineNumberTable\1\0\nSourceFile\1\0\24java/io/EOFException\1\0\23java/io/IOException\1\0\20serialVersionUID\5YI\247\367kS\354A\7\0\t\7\0\n\f\0\3\0\1\f\0\3\0\2\n\0\17\0\20\n\0\17\0\21\1\0\21EOFException.java\0!\0\16\0\17\0\0\0\1\0\32\0\v\0\6\0\1\0\5\0\0\0\2\0\f\0\2\0\1\0\3\0\1\0\1\0\4\0\0\0!\0\1\0\1\0\0\0\5*\267\0\22\261\0\0\0\1\0\7\0\0\0\n\0\2\0\0\0003\0\4\0004\0\1\0\3\0\2\0\1\0\4\0\0\0\"\0\2\0\2\0\0\0\6*+\267\0\23\261\0\0\0\1\0\7\0\0\0\n\0\2\0\0\0?\0\5\0@\0\1\0\10\0\0\0\2\0\24", 359) = 359 30059 lseek(4, 53862757, SEEK_SET) = 53862757 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\252\270\374bU\2\0\0U\2\0\0,\0\0\0", 30) = 30 30059 lseek(4, 53862831, SEEK_SET) = 53862831 30059 read(4, "\312\376\272\276\0\0\0003\0\33\1\0\3()V\1\0\25(Ljava/lang/String;)V\1\0\30(Ljava/lang/Throwable;)V\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\1J\1\0\17LineNumberTable\1\0\nSourceFile\1\0&java/security/GeneralSecurityException\1\0&java/security/NoSuchAlgorithmException\1\0\20serialVersionUID\5\230\261\31139\260U\276\7\0\n\7\0\v\1\0*(Ljava/lang/String;Ljava/lang/Throwable;)V\f\0\4\0\1\f\0\4\0\2\f\0\4\0\3\f\0\4\0\21\n\0\17\0\22\n\0\17\0\23\n\0\17\0\24\n\0\17\0\25\1\0\35NoSuchAlgorithmException.java\0!\0\20\0\17\0\0\0\1\0\32\0\f\0\7\0\1\0\6\0\0\0\2\0\r\0\4\0\1\0\4\0\1\0\1\0\5\0\0\0!\0\1\0\1\0\0\0\5*\267\0\26\261\0\0\0\1\0\10\0\0\0\n\0\2\0\0\0-\0\4\0.\0\1\0\4\0\2\0\1\0\5\0\0\0\"\0\2\0\2\0\0\0\6*+\267\0\27\261\0\0\0\1\0\10\0\0\0\n\0\2\0\0\0009\0\5\0:\0\1\0\4\0\21\0\1\0\5\0\0\0#\0\3\0\3\0\0\0\7*+,\267\0\31\261\0\0\0\1\0\10\0\0\0\n\0\2\0\0\0H\0\6\0I\0\1\0\4\0\3\0\1\0\5\0\0\0\"\0\2\0\2\0\0\0\6*+\267\0\30\261\0\0\0\1\0\10\0\0\0\n\0\2\0\0\0W\0\5\0X\0\1\0\t\0\0\0\2\0\32", 597) = 597 30059 lseek(4, 53862105, SEEK_SET) = 53862105 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\177\206\5lB\2\0\0B\2\0\0,\0\0\0", 30) = 30 30059 lseek(4, 53862179, SEEK_SET) = 53862179 30059 read(4, "\312\376\272\276\0\0\0003\0\33\1\0\3()V\1\0\25(Ljava/lang/String;)V\1\0\30(Ljava/lang/Throwable;)V\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\1J\1\0\17LineNumberTable\1\0\nSourceFile\1\0\23java/lang/Exception\1\0&java/security/GeneralSecurityException\1\0\20serialVersionUID\5\fj\366&\262\260\25\245\7\0\n\7\0\v\1\0*(Ljava/lang/String;Ljava/lang/Throwable;)V\f\0\4\0\1\f\0\4\0\2\f\0\4\0\3\f\0\4\0\21\n\0\17\0\22\n\0\17\0\23\n\0\17\0\24\n\0\17\0\25\1\0\35GeneralSecurityException.java\0!\0\20\0\17\0\0\0\1\0\32\0\f\0\7\0\1\0\6\0\0\0\2\0\r\0\4\0\1\0\4\0\1\0\1\0\5\0\0\0!\0\1\0\1\0\0\0\5*\267\0\26\261\0\0\0\1\0\10\0\0\0\n\0\2\0\0\0,\0\4\0-\0\1\0\4\0\2\0\1\0\5\0\0\0\"\0\2\0\2\0\0\0\6*+\267\0\27\261\0\0\0\1\0\10\0\0\0\n\0\2\0\0\0008\0\5\0009\0\1\0\4\0\21\0\1\0\5\0\0\0#\0\3\0\3\0\0\0\7*+,\267\0\31\261\0\0\0\1\0\10\0\0\0\n\0\2\0\0\0G\0\6\0H\0\1\0\4\0\3\0\1\0\5\0\0\0\"\0\2\0\2\0\0\0\6*+\267\0\30\261\0\0\0\1\0\10\0\0\0\n\0\2\0\0\0V\0\5\0W\0\1\0\t\0\0\0\2\0\32", 578) = 578 30059 lseek(4, 53858092, SEEK_SET) = 53858092 30059 read(4, "PK\3\4\n\0\0\0\0\0:\246\305B\345\366\331\275l\17\0\0l\17\0\0#\0\0\0", 30) = 30 30059 lseek(4, 53858157, SEEK_SET) = 53858157 30059 read(4, "\312\376\272\276\0\0\0003\0\313\3\0\0\213\37\3\0\0\377\377\10\0\22\10\0\26\10\0\27\10\0!\10\0$\10\0%\1\0\3()I\1\0\3()J\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\25(Ljava/lang/String;)V\1\0\4(Z)V\1\0\7([BII)I\1\0\7([BII)V\1\0-.read() returned value out of range -1..255: \1\0\6\1\0\4Code\1\0\rConstantValue\1\0\23Corrupt GZIP header\1\0\24Corrupt GZIP trailer\1\0\nExceptions\1\0\10FCOMMENT\1\0\6FEXTRA\1\0\5FHCRC\1\0\5FNAME\1\0\5FTEXT\1\0\nGZIP_MAGIC\1\0\1I\1\0\17LineNumberTable\1\0\22Not in GZIP format\1\0\nSourceFile\1\0\rStackMapTable\1\0\rStream closed\1\0\36Unsupported compression method\1\0\1Z\1\0\2[B\1\0\6append\1\0\tavailable\1\0\3buf\1\0\5close\1\0\6closed\1\0\3crc\1\0\nensureOpen\1\0\3eos\1\0\17getBytesWritten\1\0\10getClass\1\0\7getName\1\0\fgetRemaining\1\0\10getValue\1\0\2in\1\0\3inf\1\0\34java/io/ByteArrayInputStream\1\0\24java/io/EOFException\1\0\23java/io/IOException\1\0\23java/io/InputStream\1\0\33java/io/SequenceInputStream\1\0\17java/lang/Class\1\0\20java/lang/Object\1\0\27java/lang/StringBuilder\1\0\23java/util/zip/CRC32\1\0 java/util/zip/CheckedInputStream\1\0\35java/util/zip/GZIPInputStream\1\0\26java/util/zip/Inflater\1\0!java/util/zip/InflaterInputStream\1\0\32java/util/zip/ZipException\1\0\3len\1\0\4read\1\0\nreadHead"..., 3948) = 3948 30059 lseek(5, 1065964, SEEK_SET) = 1065964 30059 read(5, "PK\3\4\n\0\0\10\10\0WP\376@!\264w#\267\0\0\0\5\1\0\0#\0\0\0", 30) = 30 30059 lseek(5, 1066029, SEEK_SET) = 1066029 30059 read(5, "u\215\275\n\302@\20\204g\215\32\177\22\20{\5\273\244\361\300\326\312F,\24AA\3533YC\302\231\203\313\351\303Y\370\0>\224\230\250`\243S\354\24\363\355\314\375q\275\1\230\300w\321u\341\21<\31\3073\225&\371\211sK\30\6\313\234\255(\216\242\220'\253\265*\304v\266\332p\244M<\rw\4?a;O\25/X\306l\10\243 \374\365\361E\246\204F\244t\301\4'\250\32:[}6\21W\4\241\377a\367&\265l\306\231\274H\302\340O\341\33\"\364*L(\231'b}\3108\262M\2\241\206JN\275\334A\35(\275\201\346\313]\264\312\204\320.o\r\235'", 183) = 183 30059 lseek(4, 30721221, SEEK_SET) = 30721221 30059 read(4, "PK\3\4\n\0\0\0\0\0:\246\305BUf\32\303^\10\0\0^\10\0\0$\0\0\0", 30) = 30 30059 lseek(4, 30721287, SEEK_SET) = 30721287 30059 read(4, "\312\376\272\276\0\0\0003\0m\3\0\0\377\377\1\0\3()I\1\0\3()J\1\0\3()V\1\0\3()Z\1\0\5(IZ)V\1\0\7(I[BI)V\1\0\5([B)V\1\0\6([BI)V\1\0\7([BII)I\1\0\7([BII)V\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\nExceptions\1\0\nGZIP_MAGIC\1\0\1I\1\0\17LineNumberTable\1\0\nSourceFile\1\0\rStackMapTable\1\0\fTRAILER_SIZE\1\0\1Z\1\0\2[B\1\0\3buf\1\0\3crc\1\0\3def\1\0\7deflate\1\0\6finish\1\0\10finished\1\0\ngetTotalIn\1\0\10getValue\1\0\23java/io/IOException\1\0\24java/io/OutputStream\1\0\23java/util/zip/CRC32\1\0\26java/util/zip/Deflater\1\0\"java/util/zip/DeflaterOutputStream\1\0\36java/util/zip/GZIPOutputStream\1\0\3out\1\0\5reset\1\0\6update\1\0\23usesDefaultDeflater\1\0\5write\1\0\vwriteHeader\1\0\10writeInt\1\0\nwriteShort\1\0\fwriteTrailer\3\0\0\0\10\3\0\0\213\37\7\0 \7\0!\7\0\"\7\0#\7\0$\7\0%\1\0\26Ljava/io/OutputStream;\1\0\25Ljava/util/zip/CRC32;\1\0\30Ljava/util/zip/Deflater;\1\0\31(Ljava/io/OutputStream;)V\1\0\32(Ljava/io/OutputStream;I)V\1\0\33(Ljava/io/OutputStream;IZ)V\1\0\32(Ljava/io/OutputStream;Z)V\1\0003(Ljava/io/OutputStream;Ljava/util/zip/Deflater;IZ)V\f\0)\0\26\f\0\30\0\27\f\0&\0007\f\0\31\0008\f\0\32\0009\f\0\36\0\2\f\0\37\0\3\f\0\f\0\4\f\0\34\0\4\f\0'\0\4\f\0+\0\4\f\0\35\0\5\f\0\f\0\6\f\0,\0\7\f\0-\0\7\f\0*\0\10\f\0.\0\t\f\0\33\0\n\f\0(\0\v\f\0*\0\v\f\0\f\0<\f\0\f\0>\t\0006\0?\t\0006\0@\t\0006\0A\t\0006\0B\t\0006\0C\n\0002\0N\n\0002\0R\n\0003\0E\n\0003\0F\n\0003\0"..., 2142) = 2142 30059 lseek(4, 53855504, SEEK_SET) = 53855504 30059 read(4, "PK\3\4\n\0\0\0\0\0:\246\305B@'\330[\326\t\0\0\326\t\0\0(\0\0\0", 30) = 30 30059 lseek(4, 53855574, SEEK_SET) = 53855574 30059 read(4, "\312\376\272\276\0\0\0003\0m\10\0\23\10\0*\1\0\3()V\1\0\3()Z\1\0\4(I)V\1\0\25(Ljava/lang/String;)V\1\0\7([BII)I\1\0\7([BII)V\1\0\10([BIII)I\1\0\6\1\0\4Code\1\0\nExceptions\1\0\17LineNumberTable\1\0\nSourceFile\1\0\rStackMapTable\1\0\1Z\1\0\2[B\1\0\3buf\1\0\20buffer size <= 0\1\0\5close\1\0\6closed\1\0\3def\1\0\7deflate\1\0\3end\1\0\6finish\1\0\10finished\1\0\5flush\1\0\32java/io/FilterOutputStream\1\0\23java/io/IOException\1\0\24java/io/OutputStream\1\0\"java/lang/IllegalArgumentException\1\0#java/lang/IndexOutOfBoundsException\1\0\36java/lang/NullPointerException\1\0\26java/util/zip/Deflater\1\0\"java/util/zip/DeflaterOutputStream\1\0\nneedsInput\1\0\3out\1\0\10setInput\1\0\tsyncFlush\1\0\23usesDefaultDeflater\1\0\5write\1\0\32write beyond end of stream\7\0\34\7\0\35\7\0\36\7\0\37\7\0 \7\0!\7\0\"\7\0#\1\0\26Ljava/io/OutputStream;\1\0\30Ljava/util/zip/Deflater;\1\0\31(Ljava/io/OutputStream;)V\1\0\32(Ljava/io/OutputStream;Z)V\1\0001(Ljava/io/OutputStream;Ljava/util/zip/Deflater;)V\1\0002(Ljava/io/OutputStream;Ljava/util/zip/Deflater;I)V\1\0003(Ljava/io/OutputStream;Ljava/util/zip/Deflater;IZ)V\1\0002(Ljava/io/OutputStream;Ljava/util/zip/Deflater;Z)V\f\0\25\0\20\f\0'\0\20\f\0(\0\20\f\0\22\0\21\f\0%\0003\f\0\26\0004\f\0\n\0\3\f\0\24\0\3\f\0\27"..., 2518) = 2518 30059 lseek(4, 59160563, SEEK_SET) = 59160563 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B\331\332ct\313\20\0\0\313\20\0\0,\0\0\0", 30) = 30 30059 lseek(4, 59160637, SEEK_SET) = 59160637 30059 read(4, "\312\376\272\276\0\0\0003\0\302\1\0\3()I\1\0\3()V\1\0\4(I)Z\1\0\6\1\0\4Code\1\0\17LineNumberTable\1\0\21Ljava/lang/Class;\1\0\nSourceFile\1\0\rStackMapTable\1\0\4TYPE\1\0\26ensureClassInitialized\1\0\21getDeclaringClass\1\0\fgetModifiers\1\0\7getType\1\0\7isFinal\1\0\10isStatic\1\0\nisVolatile\1\0\21java/lang/Boolean\1\0\16java/lang/Byte\1\0\23java/lang/Character\1\0\17java/lang/Class\1\0\20java/lang/Double\1\0\17java/lang/Float\1\0\21java/lang/Integer\1\0\16java/lang/Long\1\0\20java/lang/Object\1\0\17java/lang/Short\1\0\27java/lang/reflect/Field\1\0\32java/lang/reflect/Modifier\1\0\20newFieldAccessor\1\0\17sun/misc/Unsafe\1\0*sun/reflect/UnsafeBooleanFieldAccessorImpl\1\0'sun/reflect/UnsafeByteFieldAccessorImpl\1\0,sun/reflect/UnsafeCharacterFieldAccessorImpl\1\0)sun/reflect/UnsafeDoubleFieldAccessorImpl\1\0&sun/reflect/UnsafeFieldAccessorFactory\1\0#sun/reflect/UnsafeFieldAccessorImpl\1\0(sun/reflect/UnsafeFloatFieldAccessorImpl\1\0*sun/reflect/UnsafeIntegerFieldAccessorImpl\1\0'sun/reflect/UnsafeLongFieldAccessorImpl\1\0)sun/reflect/UnsafeObjectFieldAccessorImpl\1\0003sun/reflect/UnsafeQualifiedBooleanFieldAccessorImpl\1\0000sun/refle"..., 4299) = 4299 30059 lseek(4, 59157049, SEEK_SET) = 59157049 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B#\364H\333^\r\0\0^\r\0\0>\0\0\0", 30) = 30 30059 lseek(4, 59157141, SEEK_SET) = 59157141 30059 read(4, "\312\376\272\276\0\0\0003\0\236\1\0\4(B)V\1\0\4(C)V\1\0\4(D)V\1\0\4(F)V\1\0\4(I)V\1\0\4(J)V\1\0\25(Ljava/lang/Object;)D\1\0\25(Ljava/lang/Object;)I\1\0\25(Ljava/lang/Object;)J\1\0\25(Ljava/lang/Object;)V\1\0\25(Ljava/lang/Object;)Z\1\0\4(S)V\1\0\4(Z)V\1\0\6\1\0\4Code\1\0\nExceptions\1\0\1I\1\0\17LineNumberTable\1\0\22Ljava/lang/Object;\1\0\nSourceFile\1\0\rStackMapTable\1\0\1Z\1\0\4base\1\0\5field\1\0\vfieldOffset\1\0\3get\1\0\ngetBoolean\1\0\7getByte\1\0\7getChar\1\0\10getClass\1\0\tgetDouble\1\0\10getFloat\1\0\6getInt\1\0\7getLong\1\0\21getObjectVolatile\1\0\10getShort\1\0\7getType\1\0\20isAssignableFrom\1\0\nisReadOnly\1\0\17java/lang/Class\1\0 java/lang/IllegalAccessException\1\0\"java/lang/IllegalArgumentException\1\0\20java/lang/Object\1\0\27java/lang/reflect/Field\1\0%newGetBooleanIllegalArgumentException\1\0\"newGetByteIllegalArgumentException\1\0\"newGetCharIllegalArgumentException\1\0$newGetDoubleIllegalArgumentException\1\0#newGetFloatIllegalArgumentException\1\0!newGetIntIllegalArgumentException\1\0\"newGetLongIllegalArgumentException\1\0#newGetShortIllegalArgumentException\1\0\21putObjectVolatile\1\0\3set\1\0\nsetBoolean\1\0\7setByte\1\0\7setChar\1\0\tsetDouble\1\0\10setF"..., 3422) = 3422 30059 lseek(4, 59156570, SEEK_SET) = 59156570 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305Bv\240[\321\211\1\0\0\211\1\0\0008\0\0\0", 30) = 30 30059 lseek(4, 59156656, SEEK_SET) = 59156656 30059 read(4, "\312\376\272\276\0\0\0003\0\22\1\0\6\1\0\4Code\1\0\17LineNumberTable\1\0\nSourceFile\1\0\1Z\1\0\nisReadOnly\1\0002sun/reflect/UnsafeQualifiedStaticFieldAccessorImpl\1\0)sun/reflect/UnsafeStaticFieldAccessorImpl\7\0\7\7\0\10\1\0\34(Ljava/lang/reflect/Field;)V\1\0\35(Ljava/lang/reflect/Field;Z)V\f\0\6\0\5\f\0\1\0\v\t\0\t\0\r\n\0\n\0\16\1\0+UnsafeQualifiedStaticFieldAccessorImpl.java\4 \0\t\0\n\0\0\0\1\0\24\0\6\0\5\0\0\0\1\0\0\0\1\0\f\0\1\0\2\0\0\0+\0\2\0\3\0\0\0\v*+\267\0\20*\34\265\0\17\261\0\0\0\1\0\3\0\0\0\16\0\3\0\0\0*\0\5\0+\0\n\0,\0\1\0\4\0\0\0\2\0\21", 393) = 393 30059 lseek(4, 57500158, SEEK_SET) = 57500158 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305BsX\215\1\0\1=\1\0\4Code\1\0\5Entry\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\22Ljava/lang/Object;\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\3TK;\1\0\3TV;\1\0\1Z\1\0\6append\1\0\5color\1\0\6equals\1\0\6getKey\1\0\10getValue\1\0\10hashCode\1\0\20java/lang/Object\1\0\27java/lang/StringBuilder\1\0\rjava/util/Map\1\0\23java/util/Map$Entry\1\0\21java/util/TreeMap\1\0\27java/util/TreeMap$Entry\1\0\3key\1\0\4left\1\0\6parent\1\0\5right\1\0\10setValue\1\0\10toString\1\0\tvalEquals\1\0\5value\7\0\35\7\0\36\7\0\37\7\0 \7\0!\7\0\"\1\0\31Ljava/util/TreeMap$Entry;\1\0!Ljava/util/TreeMap$Entry;\1\0YLjava/lang/Object;Ljava/util/Map$Entry;\1\0\24()Ljava/lang/Object;\1\0*(TK;TV;Ljava/util/TreeMap$Entry;)V\1\0&(Ljava/lang/Object;)Ljava/lang/Object;\1\0-(Ljava/lang/Object;)Ljava/lang/StringBuilder;\1\0-(Ljava/lang/String;)Ljava/lang/StringBuilder;\1\0@(Ljava/lang/Object;Ljava/lang/Object;Ljava/util/TreeMap$Entry;)V\f\0\30\0\26\f\0#\0\20\f\0*\0\20\f"..., 1857) = 1857 30059 lseek(5, 53924, SEEK_SET) = 53924 30059 read(5, "PK\3\4\n\0\0\10\10\0\251`\273D\2\273\343\300\267\"\0\0\224F\0\0\32\0\0\0", 30) = 30 30059 lseek(5, 53980, SEEK_SET) = 53980 30059 read(5, "\315zy@\\\325\365\3609\367\315\314\33\206\307\32\206\360 !C\2\t!\t\304\304@:\304\30 \304\20\201\304@\22I\\2\300\3&\0163tfH\202{5\266nm\325\2724nq\251b\255u\211\206\20\321\250\255u\251\255\255]\255m\355\356\332Z\265uO\344w\316}o`\200!I\333\357\217O\303}w9\367\334s\3179\367,\367\316\17?\177\364 \0,V6\272`\16^\247\342\365.\20x\235\vo\300o:q7\177oT\361&\25ov\201\23\257s\342-\374\275\325\211{\370{\233\vT\274=\31\357\300;\223\361[xW2\336\215\375\\\334\243\342\267]0\5\357\345\342;.\274\17\277\253\342\375.\230\212\17\270\360A|\210k{]p\25>\234\4\177\304G\270o\37\203\16p\337~.\6\271\357\0c}\224\7\206\\\360\">\306\265\307\223\340\f<\250\342\23N|\222\207\237\342\221\3571\241\337w\341\323\370\3\25\237q\301\2|6\211\212\347\270x\236\213\37\272h\326\v\\\373\21\27?f\232_T\361'.(\347\335\376\24_b\200\237\361\314\237'\301j\374\5\27\277\344\342W\274\310\235.\270\22\177\315\243/\333\301\374O\341\326o\234\370\n\257\372[\25\177\347\202U\314\300\337\273h\322\253\\\374\201\213?2\216?q\361g.\376\302\305_\223\361o\370\32\27\257s\361\6\27o&\343[x\227\23\3376\361\247U\257p\341\337\361\37\214\374\35'\376\323\5\355\370n\22\321\371\236\23\337W\361_.\3747~\340\302\17\361#\27~\214\237\250\370\251\vZy\371\317\30\362\20\27\207U\374\334\211\303.\350\24@@\2\235B\320N\205\222\4\255\302F\333\25v\2569h\t\241r\315\351\24I\252p\271 \"\222\271\2551t\212S\244\272D\232H\347\236\214$\221)\246\270\340<\221\345\24nUd\23Eb*\267s\270H\346Bw\211\\\221\307\320\323\210\271b:\367\345'\213\31x\217Sx\234\242\200$%f2\314,\206)TE\221S\314f\366\336\316\3559\252(&\361\213\271LE\211S\314s\211\371b\1\27\245<\\\246\212\205.\270A$\253\3428\27\354\26\213\234b\261*\216w\301\315b\t\27\345\252\250p\301\36\261\224\201\277\3005/\327*\271\266\214k'pm9/\177\242K\254\20U\334\254VE\215\v\356e.=-VrO\255*V\271\304Ib5\27uN\261\306%N\26\365.\270_4\270D\243X\253\212u\214\354\24.\326\273`\237hb\0067\223\246\210\r\324\207?\344\201\215\\lb>\237\312\3-\f\2679Il\21\247\271\304\351\342\fFt&7\267:\205\217\277\255\\\264q\321\236D\0\206\v~\":\270\326I\372!\272Xc\357R\205_\25\333\350\30\210\263\30{\200\371\332\357\24\335\364\25A\346t\220\273C\214\273\307%\276(\202N\21\266U\221>\271DDD\235\242\327)\266\363^v\360Vw\252\242\17\1\20\264\272`\320\10\327\4|\221\210\21Ap\254\363\205}\335TQ\2\241N\204\234\372\240\21-\213t\224\365\370\333|\341\366\262\336\250?PV\37\352\254DPk\32664T5\256D\310\254\337\346\333\356+\v\370\202\235eM\321\260?\310\303)5\241`$\352\vF7\372\2\275\206S\234M\270\227\371\203\376\350r\302]\222T\3459z\240Z^\346\344qh\213g\322\331\242\0\330\361O\334\212>\n\2003\34\257\311\240X\3009\216s\261\25\333(4?\337\321\207\355h\320\351\277\323\321\314\277T\2464\346>\307\311\330\205~\n\263_sd\310\24H\2057\35\251\270\r\317\"\273\360\241\3e\202\224\4\237\330?\307\0\255\346B\260\177\204\335\30$\231E\355\27[\22\334a\277P&M)x\266\375<\2314\245\212t\333\353\226,\227\222\206\206\260\207dy\267\355\24\374\"\206!C<`[\315\277\376\244\224i\257\255\226Nr9d\211}\266j\354\245Z\266\30\262-\303\355\270\3r\304\213\266\271\270\23\373\310\0327\302\267ep\237\33K\201,YU\22\247L\376T\362u\225\2448\233(\246\24H\251\205\343\206\311\244)\362V\363l\25\317\1\2<\2670Y\235v\30\212T5\241\324S\23\355\313\255\300h\224\237\213\361fS\213\361\206\221\341\326\255\310\17U\34D\303\216LFj`\341\266\2055\0335\324m\224p\301F\3\3536\356\340.a\361\357\235m\3343i\33X',\360(\274\370\300\363\271\213w\326\316\275O\0\301\336\216\"\251\233\241\210c\31\23\234s\305n\377P\372\ta\376O\325\204\345\323\360\331|\275\337\346\233?\26\341\304H\336\2527\366\333\377L\346)Q\207\260\362\337,K\351A\20\2110\335\26\257\217\366x\7\255\227N\225\257F\221\257\n9\0253\"\2038b\243\314\376\"\263\367\3102\2\36\177\5\235|/}F\346\223y\262_\220\313u? \367\"\245y\2463\347\324b\232O\351G./b\36W1\203\nV\261\306\276\206M\303\344\263L>\307\344\363L\276p\234\276\310\277_b\362e&_a\362U&_c\362u&\337`\362M&\337b\362\355\f}7C\337\23t\334\0177\346\324\266\3623\364\3ps)'([\f\2\25M\371\266\326J\v\272<\27\2508\257+\371\272\347\330\221\233o\304\236\237\7z\260\271cB\320\305R#\210\275\232Z\363\264\267\356\253B\20\204\261\35{a\200\375r\316\tk\371u\325\320q~\23\313\232\35\270*\312/\331\221]S\261\212\260\375X\200%\240\35\26\334\237\264,Df\371I0']\245\235\310\253\2631AcSU;\330P\22\0i\0\343rzfr\365\351QY\\\230]\34\225\317\26J\v\305\5\2603\245\322biLP\217\23\6\333*\202\233\f\375HP\257\tx\252)\23\364h\363p\16\242\311O\201\254\204\241\257\7\17\343\20bf\335\256\315z\276b\33\233\366\266\235\367\302<\363P\365Y\226\27\324\33\261\5\210U1\230\16\253((\177\364\301[\21ic\340\240\223\233Kv\\\225q(m9Y\230\227l\213\271u%\233\233\\\346\247J\205\3711\271X\363b\351U\244\216a\27\27#M\20r\270\356\325\325\10\216\336\33\251\212\212T\340\250Y\33\30A\347-\253%\262*,kE[\22\264\266RU\262\245\227Fo\"\30\225\215\0\321\327#\205zp%\234\301\223\253v\260\36\36\253\330^\23\244\225\34\322v-\346\374a\273\347\356\f\215\214I\304\0216b\4\306\271M\0228`Y\211\310\342\244\267bX\0244\3111\3249\7\2250\2221\230\4hNl\374\34q\354\24\322:\367\211\232\275SRN\30\271\250(qS\320)\313\202\10gOe\271r\34\326\245]A\316e\363`^\260\1\177\236\226\270\244]\231B9\372\36\255\266\32\234\21l\354Kn>i\0O\307\270\261\236\262\267\21\330q#\302\21\6_\243\276\226\360>*6_\216#\270\230\270\216-]U\345\327\21\331\35>tUP\267e%\2223K\300\304\222\31\223\345\255\206\27\243\33\21{\331\367\34U\366^\200\23Q4\5\307\7\322,\265\264\21wW=\327UA'F\212\0\0j\324Ul{h\344d\337\331d\217\323\224\246\373\372\371\364*\332V%e\273\vI\27\236\263\254\246\24I\263]\253\325\235\350\300\7\226R\225\264}_\262Z\0325'\336\17\265\366\221\314\3452p\334\305\tkm5l\337\213w-\215\254\232\253^\0264u\310N\212\220\6\201\274/\242\330\357G^\254\264\34jgh\10.\273\267t\271\256\34\324\324\377\346Z\320\203\311\326\335\303\373,mvtXs\202\256\25PG\214\226,\364*\273\274\274_\265\343\327D$u5l\370.wb35.\334gP\30\321n\35\267\324cY\255\365\371\231de\nx\277r\221 \324\n\254\255\330\33\332Te\302Z\261\341\307\212\2063\233X\"}\224\220rGM+\250\35\273V\3070\30Z\\\36\277U\30\27759\204\311\350\330u.\274\304\\\257e\245|j/?\225\260o\334`oj\240\340\373\211\315\201}\233\270\244\324n\177\323.\337\33\213\314\301x\364\24"..., 1954) = 1954 30059 lseek(4, 27744682, SEEK_SET) = 27744682 30059 read(4, "PK\3\4\n\0\0\0\0\0003\246\305B\226\273\332\376G\7\0\0G\7\0\0)\0\0\0", 30) = 30 30059 lseek(4, 27744753, SEEK_SET) = 27744753 30059 read(4, "\312\376\272\276\0\0\0003\0S\10\0\v\10\0\f\10\0\17\10\0\23\1\0\23$assertionsDisabled\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)V\1\0\10\1\0\6\1\0\4Code\1\0\fInnerClasses\1\0,Invalid type in enclosing method information\1\0\17LineNumberTable\1\0\21Ljava/lang/Class;\1\0\22Ljava/lang/String;\1\0&Malformed enclosing method information\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\1Z\1\0\23[Ljava/lang/Object;\1\0\ndescriptor\1\0\26desiredAssertionStatus\1\0\16enclosingClass\1\0\6equals\1\0\rgetDescriptor\1\0\21getEnclosingClass\1\0\7getName\1\0\risConstructor\1\0\10isMethod\1\0\tisPartial\1\0\30java/lang/AssertionError\1\0\17java/lang/Class\1\0\21java/lang/Class$1\1\0#java/lang/Class$EnclosingMethodInfo\1\0\34java/lang/ClassCastException\1\0\27java/lang/InternalError\1\0\20java/lang/Object\1\0\20java/lang/String\1\0\4name\7\0\30\7\0#\7\0$\7\0%\7\0&\7\0'\7\0(\7\0)\7\0*\1\0\24Ljava/lang/Class<*>;\1\0\23()Ljava/lang/Class;\1\0\26()Ljava/lang/Class<*>;\1\0\26([Ljava/lang/Object;)V\1\0)([Ljava/lang/Object;Ljava/lang/Class$1;)V\f\0\5\0\27\f\0\33\0\21\f\0\31\0\22\f\0+\0\22\f\0\f\0\7\f\0\32\0\10\f\0 \0\10\f\0\"\0\10\f\0\34\0\t\f\0\f\0008\f\0\f\0\n\t\0000\0:\t\0000\0;\t\0000\0<\t\0000\0=\n\0-\0>\n\0.\0?\n\0000\0@\n\0000\0A\n\0"..., 1863) = 1863 30059 lseek(5, 507692, SEEK_SET) = 507692 30059 read(5, "PK\3\4\n\0\0\10\10\0\257`\273D0\"%,\256\16\0\0s\35\0\0#\0\0\0", 30) = 30 30059 lseek(5, 507757, SEEK_SET) = 507757 30059 read(5, "\225Y\v|\234U\225\377\237df\276\311\227\257\257\264)L\237\323\22 M\322\16-4@\372LB\37S\2234MJK\212\10_&_\232i\347\305<\372@D(UD\24\25\304\335\262\353\n\370\350\352vU\n&\301\254\300>\331\355\212\256o\335\207\272\213\212\253\253\350\256\353\2\313\322\375\237of\222I3i+\277\346~\347\336{\356y\237s\317\35\316\274\371\305g\1\\-\0376\261\17g\f\374\275\211\n\234\361\343\313\372}\321\304l|\245\n_\305?\370\3615\3_7\361\r|\323\304\267\360m\335\376\216\211\357\342{\6\376\321\304L=\373O\212\376\317:\374\213\201\357\373\361\3\23s\361CE\372W?\376\315$\231\227\252\210\371#\23\7\361c\205~b\342e\374T\241\1777\321\215\237)\364s\3\377a\"\210_\370\361K\375\276\242\330\277\322\235_\353\360\237~\374\227~\177\243\303\177\353\360[\35\376G\261^\365\3435\375\276n\340\177\375x\303D\10\257\30\370?\23k\360\246\16g9\10\f\21\277T\230hV\322k\244\322\24\217x\253\304'\206\311\301\357\227*CL\23\33\245Z\267\255j\231!3u\230e\310l]\236\243C\215!s\r\231gb\233\222\336*\265\206\3147\261C.\321\341RC\2&:u\322\251\223\5\206,4\261K1\273e\221!\213M\354\306\31\16\262\204\342\312R\232I\202U\204\226\31\262\334/\227\231R'\227\233r\205\\I\373H=\r'+\364hC\2654\252,\2152\313D\2734)\4\277\254\364B\377\233\325\266\331\224U\22\3223W\371e\265!k\24\274Z\340\353\266\323v<#\260\302\211\204\223n\217\331\231\214\303ie,\271_piG\302\311\2062\203\241T4b\247\7B\271l4\26\352H\356_GS\265\357\354\354l\355\272AP\323q\300>d\207bvb\177\2507\233\216&t{F{2\221\311\332\211\354\36;\226s\374r\rY\255\217&\242\331\215\244]\277b\217\300\323\236\34p\4\263:\242\t\247+\27\357w\322\273\355\376\230\243\364\222\21;\266\307NGu^X\364d\207\242\24kiQ\240\10\245\16E\23\3\316\221P;\301\260BN\232\214\315\24%\310\336\230\261\367\363T]}G$\31\17\365;\271L6t\200`\334&b:\264\243\275\10\256SQ*\16D\4\313.\210J\304L\277 0E\337\266\\4\226G\360\304\355hB0\277\376\346\251FQNB\241jK\266\266\34\2118\251l4\231P\223E\212\212l\215\252\3123\363x\321dH\347D\360\245\235H2= XX\264B\306\216g\223\311X&\324\333\332\331\343n\252\220\321:\301\274\374a\327a\341\254\223\266\263\311t\236\204MIK\fYJB\371\364\270\10D\255\212N\210bD\363\366\25,\232r\256\255\265s\302\372\36;\275\237n\232[F}2O\25b\355\212\363{\261.\37\223j\222\336\254\0359\330i\247\334(0\360\20\v\nk\t+\10+\1\323\227\331h\310Z:}\334\216\31C\232i\377\10\365\314:\267\266\265\206o\35L\246\225v^\221\245\365\223\215:y\246\36\362G\306\221+4\342j\307Q\302\211T.Ke\34;\356Z\2311\263\244\214\"mvt\302\36\227\24\4i\357\231\"Iy\33\224\234]\222f\330%\343\273\235L\266xlo4;T\244/h;\2572\223g\341p\270LD\206\335\210\310\344bY\206&'\225\251$U\226(=\236v\6\363\202\372\270\326\251A\355\2\366\21\367H\212Z\261fd\234\333sN\"\342t\331qb\6\247\304\6\325\236\34T\376\344!'=\304\231Rq\325\33\257\37n\250\366\270k\353"..., 3758) = 3758 30059 lseek(5, 506426, SEEK_SET) = 506426 30059 read(5, "PK\3\4\n\0\0\10\10\0\257`\273D\252\16O!\252\4\0\0\373\10\0\0*\0\0\0", 30) = 30 30059 lseek(5, 506498, SEEK_SET) = 506498 30059 read(5, "\215VmO\\E\24>\263\vl\27\266@)`\213\326N--\260r\367\332V\253m\261\26\26hQ\336\\(U\352\333\335\335Yv\232\373\262\336\231E\32\377\201~511ibb\342wM\210\211\37\374\1\376\v\177\204_\215\317\314\356^\220@\355\7\316\2359\3479\3179s\316\231a\377\374\347\367?\210\350\6\211^:M\353Y\32\240\17\263\224\243\222\21\33Fl\32\361\320\210\255t\367\337\177\221Y=2\342##>\316\320\343\f}\302\350\224\37\355,\213]\341g\3503\354\226\333;F\271\2450\24q\321\367\224\22\212\321\245\345PhW\325\334\206\254xq\325mj\351\273@\217w<\3560:_j\206Z\6bK*Y\366\305l\30F\332\3232\n\341\317\227+Q\340\226ESi\367\t\226\201\27VE\354\256{\261\27\10-b\270w\207X\2\232r\20\276\317q\220\231\343\267\222\351\253\nU\211e\303\2201*\24\353^\270#8\0\334\2n\363\371\205\271\207\367\247\371\322\352\342\3324\1774[Z]Z\305v\241TZ+\25\30e+Q\270+b\204\311\320\27\214\372m\302\305\216\216\321\325\316\341*\310\306-BlF\221\257\306\377\213C\212Y\0316\232zQ\372\302\260<\361v=WF\256\331\303\230s\34kvj\326\236r\226\30\271\307\37;\311GY\347\303!\36\254{\272\316u\304=>7\273\302\243\230\27K\370\32N\243-\v.A\261'\252\5\276\26H\315e\215+\rV4\205\333\360|\262!\33b\n\307\36\212EM\304\"\254\210E\17\230V\332\243\216\223\250\235\232\321'\371\226\30\365\324e\265*\3024f\2131\332\332\254\v\236\240\271E\333L\246y3\304i\32\261\300tT9\302w\262\342\223\205\232'; %\370\204\362\2m\252\twY\335\233\230*pF\351\262'\31\261mFg\34\247\354\5\216\322O}\341X\16F7\213\365(\202kY\350\257\204\10m\35\254\211O\302o\312\206\263Ei+\3215ii\273\352\302o\340\20\216\323Z\244\234:\243\341\365X\206\232\33\215\365\24{R\2438]Z(m\261\255\305\305\22\214Q\300\315\216G5\256q\364rS\372\272\25\5\36\275\306\264\"\303\365\10C\312\320\334\376\226\257\23\310\320i\30\345\24\2542h\6\334\363\345N\30\10\204E\305b\315khcl\371\265\r\220\260y{\226-a\362\366:L\336\336\2132e\315\267\30\341\356\331\31\264D\225\326\226\343F\266\341\255\203\351\272T\34C\370\224\233\213\252\340=h\364\33\342\313\246i\361*n \346\2465\331>.\231\273\241Q\275\35\314\345p\233Y\265\241Nh\261\227\217F0\t\332(\35\240iL\317\f\n\243\357\242\361\223S[\250}1\252\302w`Y\206b\265\31\224E\274\351\225}\0339\252x\376\226\27K\263o+\273\f\0358\354[\241\216\336V\333\35{g\227\354\4\306\343-\34R\356\335\210\2321\206\337\216\367\340!H\301\234\317\274i\317\177\223\f\307P[?\177\370\1\32\302D\272\7\23\10B\236\243\"\315\347\310\243\241\34\365\33\221\247\327sT0\342\272\21o\321\315\34\3352b\306\210\367\350^\206\312\214\306_\344(H\376\240!k\345'\242\2423T\301\310\376\317\223\234\241\352\221\10'=mx|\355[\311\350\302s\23\302\363q|LF#\307\306\241K\370gs\32\257I/\376P\27bt\26\253\227\361\35\2464\215<\246\224\242QE/\3219E\347i\254B\27`~\225.\36\v\344\206\17\230\327\f\3722\314\343\t\220[`W\33xE\321U\232\330\246\311\4=\5\fZ\322F\237\265\350\224A3E\323\6\340@]H\0\243\7"..., 1194) = 1194 30059 lseek(5, 1058636, SEEK_SET) = 1058636 30059 read(5, "PK\3\4\n\0\0\10\10\0WP\376@@c=zo\1\0\0\335\2\0\0\"\0\0\0", 30) = 30 30059 lseek(5, 1058700, SEEK_SET) = 1058700 30059 read(5, "}\221\335N\302@\20\205\317\362WA\4A@D\374O\24\213\261\211^bH\214\321\304\4\275\20\302}\301\nk\2405mQ_\313+\22/|\0\37\3128S*\22\4\273\311\231\331\3353\337\314\246\237_\357\37\0N\260\21C\4\253,y\2265\226\202\202u\5E\201\310\2314\245[\25\10\226\16\233\2\241\v\353\336\20H\326\244i\334\16\372-\303n\350\255\36\235\244kV[\3575u[\362\336?\f\271]\351\10l\326L\303\325\234\7\315\321\373\256e\365\34\255~~s\371\3326\236\\i\231\25\201l\251\366\250?\353ZO7;Z\335\265\245\331\251p7\3410\370\317\225\200:\243`\342\244\321\265\255\27\36\301\243D\335\237-u\232\351\22\310\227\346\226\307\352\326\300n\33W\222\353S\223\223\37sI\34\n\26X\22,)\226\214@\361\277\27\v\24~\233\335\rLW\366\215\361%v\20\246\37\300_\10\202\341\244Q\332\235R\24\24\303\352\20\342\215\222\0b\2441\212\300&\231\267\260HY|d\242\270D\221\1\t\37P%'{#jy\210\3004a\227j\366\32\"8\r\333\247\242\3\17\266=\262\215a\212\17\343,\215\25r363k\304\3204U\245\21\313sFd\26\217\230\365jr\337", 367) = 367 30059 lseek(5, 125627, SEEK_SET) = 125627 30059 read(5, "PK\3\4\n\0\0\10\10\0\252`\273D\2332\361J\7\30\0\0v6\0\0\27\0\0\0", 30) = 30 30059 lseek(5, 125680, SEEK_SET) = 125680 30059 read(5, "\315Zy`T\325\325?\347f\2227\363\346\221\204\260\216l\1\2\204\260\204\35\35(\22\302b0\tHX\fZa\222\274\204\201\311L\234\231 \340\256\324\5\327\272\343\322\332\252M\255\326\252\265\223`Z\255]\240Zmk\27k\355\242\266\332\225V\255Z)\2\371~\347\275\231d&3I\240\177}\177\344\276\373\356;\367\334s\317\362;\347\336\311K'\236}\216\210\346\252{tz\222\227j\\\246\223\342\245N^&\317r\235\362y\271\213W\360J'\257\322\370,\235+x\265\316gs\245|\256\322\271\232\327h\274V\247\\\231{\216\220\257\223\246\306\205\221\365:o\340\215\322\333\244\223\213\317\325\301\247V^7;\371%\315\323\322|S><\343\344o\311\263A\343\230N;\345\331\256\323.yvh|@\247\213\371Y\235\366\240\341N\376\266\306\337\321\351r\321\302\16~N\266\371\274\306\337u\362\v:]\315M:=\310\337\23\262\357\213h?\220\251\330\320\17u\332\307\7e\344\220\306?r\321M\374\242\254\363\222\306?v\361\313\374\212N\267\362O4\376\251N\267\v\337Y\37437\277\312?\227\346\27\32\377R\247{\370W\322\274&#\277\26\255\274\256\361odm\213\372\r\215\177+\v\377Nl\371\274\f\377^\232?h\374\246N\217\360[\362\362\2664\177\224\346O\32\277#\317w5\376\263N\217\363_\344\345\257\322\374M\343\2773\345\254\365\205}\315\21&\243\"\0304\303\345\1_$b\3425\267\312\f7\231\r\25Q3\354\213\206\302\370\276\316\254\17\205\33jB\255\341z\223I+_SUUV\275\234\251\240r\273o\247\2574\340\v6\225\326D\303\376`\323\"\246A\345\241`$\352\vF7\372\2\255\246\223\377\201\225\26\373\203\376\350\22\246\254\342\251\33\231\34\345\241\6\360\311\253\364\7\315\352\326\346:3\274\336W\0270\205_\250\336\27\330\350\v\373\345=>\350\210n\363C\252!\225A3Z\32i,\255\207\320\245\226\210X,\2735\342k\2QQqe}\250\271\264\316l\215DK\267\243\333\354\v6\230\341\322\325\345\211\356\"YYm\257g\32? )\10#uL\236\264\355-k\365\7l\2G\263\317\37d\32^|^\272\16\254=\266\204C-\330y$\256\264\302t\361\213\222\325*k\372\213\230\206\332\354Z\243\376@i\302\2\370\306`\221_\265|~\225?\322\354\213\326o[\21\16\213eJS\270\256\364\357ZVV\265\322\0370\3172}\20\263\250\367\4\221\273\321/J\315\265\227\361\207J\205\34\343\256:_\363\246\260\37+2\215Kp\215\370\232\243\241P R\32gk\23\200:'l\211\3164*\215\264\246\254\312\336\27\310\246\246}"..., 6151) = 6151 30059 futex(0x7fb31443af54, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x7fb31443af50, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1}) = 1 30087 <... futex resumed> ) = 0 30087 futex(0x7fb31443af28, FUTEX_WAKE_PRIVATE, 1) = 0 30087 futex(0x7fb31443d954, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x7fb31443d950, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1} 30088 <... futex resumed> ) = 0 30087 <... futex resumed> ) = 1 30088 futex(0x7fb31443d928, FUTEX_WAIT_PRIVATE, 2, NULL 30087 futex(0x7fb31443d928, FUTEX_WAKE_PRIVATE, 1 30088 <... futex resumed> ) = -1 EAGAIN (Resource temporarily unavailable) 30087 <... futex resumed> ) = 0 30088 futex(0x7fb31443d928, FUTEX_WAKE_PRIVATE, 1 30059 lseek(5, 123487, SEEK_SET 30088 <... futex resumed> ) = 0 30059 <... lseek resumed> ) = 123487 30088 futex(0x7fb31443d954, FUTEX_WAIT_PRIVATE, 5, NULL 30059 read(5, "PK\3\4\n\0\0\10\10\0\252`\273DSP0\250\346\4\0\0\347\t\0\0\36\0\0\0", 30) = 30 30059 lseek(5, 123547, SEEK_SET) = 123547 30059 read(5, "\235VkO\33G\24\275\303\313\30\234\27\344\375\234\244$<\312z!\tiK(\215c\fqk\f\265\35\3224m\223\365z\214'Z\357\272;cJ\177N+\365k\245T\212\"\365C\177@\177T\3253\273\266\1\305I\37H\314\316\334{\346\314\271w\356\336\365\237\177\375\376\7\21\335\241\306\30\215\321v\222R\364e\222\222TJ\322e*\233Y\305\f\217\315\260c\206'\tz\232\240\257\31\215z\301nA\354\t/A\337`U\350\254\30\245\362\276/\302\254\347(%\24\243\353\5_h[\325\355\226t\235\260f\267\265\364l\240\247\272;\3563\272Pj\373Z6\305\216T\262\352\211\214\357\7\332\3212\360\261\237\27\334\240iWE[i\373%\246M\307\257\211\320\336vB\247)\264\10\261}\330\307\24\320\1\v\307\217[\26\224Y^,f\274&\224\33\312\226!c\224\3166\34\177Wp\0x\4X\346k\271\207\2177\346y\276\270\2765\317\237dJ\305|\21\313\\\251\264UJ3J\272\201\277'B\34\223\240\357\30\35\217\4g\2736F\267\272\301\271Pcg1T\202\300SSGq\220xb\317\361d-\212\251\223\264\27\214N\357\364\214e\35J(\363\335\37\31\335\355\222*\247\251\r\235]\316l\256KO\224\204\203\320\247\372\355\272o\242\337c4aY\7'u\223\260\322\t\373\300\303Uog7\21\345J)\237\255\314\363B\256\230\317\0251)\3471\255\244\23\3440\272\322\357\314CyXzG\36\336\273\r\232\223\241\250\213\20Va\222\373\322\331sl\31\330&V8\317ZV\317m\325\35\245\35\253\16\217\211\264\304\310\356_\27\275\vS\21\315\341\303\344\266\243\33\\\7\\7\4\3571\363\210\231\33\346y.5o\202\220W\5o\373 m\205\2U\\\343\340\346\22\374\373\230\317\264\225\340\323\335\273\301vY\333\237\346\365 \344b\337i\266<1\213\302I\4m\275\36\211=fY\230\267\332\272#\336:\254\"\366\360\207\231\315H@\232o5!\301p)]\203\323\224 NZ\17\302\246\243\0311\274w)\313\202\305\252wL7\267b\n\351sT\t\17A.Bp;~\314\32\301@s\274\205\374k@\36EE\324\343it\226K\333\306\37q\30%<\266\363\37\32\302\357\252\214\271\270T\\\213\375\10\n\336\221P\354F\357\326D|}\36*\315\216/\33)\0375W\30\373\7,\234\262\232\361\344\256\337\0248Iy\22\311W-\341\312::\203\251\221\371\303Y\\\346n#\\\\\276\267\264\260\260`-.\230?\0347\324\20^\313\2205p\264e\305\253\311X\273YD7\365}[\"3\303&\16t\205\223\261\260\270\357H\245M\331\225\241\302\321\355P\230\376r\324\275r\264\fW\1\277]\301U\265\220Y\325\275\267l\ty\202\326\356\305E\216\203\212Is\250[\221\276\324\253\214\6gfw <\33\324p\332\211\202\364E\261\335\254\212\260\342TM=L\24\2\327\361v\234P\232u\3078\244\33\22\322G\242.\207\311\305#\357\327\246\10w\305T\354\203\274\261r\320\16]\21\227\333X\344L\233\30L\357}\177\3574\273':\366\265\303\215\362\272y}MLM\303\366v\270i\236\242,\255\245\250J'R4n\6\227\256\246\350\222\31\322d\247\350\266\31\226\311NP\215\321\371w\251\307\355\34T\315V\365\245pu\202\20\305\265\177\370f$\250\316h\352\337\364\336\4\355\342\2\377{Cet\347\177\2644T]\364\351@Z\327r\353\231\307\205\312s\323W\213\33\271b\366)\243So\345\1]\256\177\250\214\316\364=\37\275\370\275\301\20\307Gz\f\237\364$\376q1\204\24c"..., 1254) = 1254 30087 mprotect(0x7fb27c021000, 20480, PROT_READ|PROT_WRITE) = 0 30059 futex(0x7fb31a6e7ba0, FUTEX_WAIT_PRIVATE, 2, NULL 30087 futex(0x7fb31a6e7ba0, FUTEX_WAKE_PRIVATE, 1 30059 <... futex resumed> ) = -1 EAGAIN (Resource temporarily unavailable) 30087 <... futex resumed> ) = 0 30059 futex(0x7fb31a6e7ba0, FUTEX_WAKE_PRIVATE, 1) = 0 30059 lseek(5, 121339, SEEK_SET) = 121339 30059 read(5, "PK\3\4\n\0\0\10\10\0\252`\273D\272^s\36 \10\0\0\324\20\0\0&\0\0\0", 30) = 30 30059 lseek(5, 121407, SEEK_SET) = 121407 30059 read(5, "\215X\373WT\327\25\376\316\314\35\3560\\y\5P^\212J\"\16*H\4M\4\"\220\30I\0\rch\3254\366:s\201\2133w\360\336;\6\265i\36M\3234M\232\230\324\274\233\246\366A\323\332\26\2238jlM\273V\227Y\253\257\37\332?\242\253\377AWV\226t\3573\227a\200\t\360\3\347\354s\316>\373\371\355}\317\360\327\333\237\336\4p7\376\34B3\254B\204\221,\302$N\251pxvU\264\361fJ\305i\236\237\10A\301T\21\316\340,\17\347B\264\367-\336{\222O\277\315\313\247B\10\342\351\20\236\301\263L}'\204\347\360]\246\236W\361\275\20\252`1\377\vL}\237/\275\310g?\340\345KL\275\314\303\17Cx\5\2572u\236\207\327xx]\305\217\202\270\20\302f\274\341\177jvv\2267\337d\215o\5\361\266\212wT\274\253\342=\201@\314\210\233\t\201\362\201\t\375\264\336\22\327\255\261\226\210k\233\326\330^\1\325I\246\354\250\341\10h\303F4i\307\"rM\313~\3132\354\276\270\3568|\272\361\330\200e\270-\316hK\324\326\23-\203\206=f4\346\336`Y\266\\\23w]\226\333\321\23n2\31wZ\"=\203\31vbT,c\312\25\250]\226\251`\334\320c\206-\260!\37\333~3n\34\220\f\314\332iZ\246\333-\320\326\224\3611\345\232\361\226\1\323q\367\256pw\353\10Y\323\227\214\221\303%\3\246e\f\245\22'\f\373\260~\"np\300\222Q=>\242\333&\257\275Ma\322_?\335r\307M\362\264XF\"\326\357\32\266\356&\311\332My\342\264\220\207\3\20'\333\4J\27[+P\265P\347\231\3119\275m\213x;W\312G7I[\23q\365\350\311A}R\n\221\230\370\261\212\367\5\n#\346\230\245\273)\233$\37^\34\264U\210^EX\3\321x\322!\361\376&^\0258\36\256\32V\306\221\242\333v#\7\311\260h\362\2314\250\343\2723$AC\342\216\322Z\217\235\326-\211\323\204\356\32\21\343T\312\220\313\315\371,\233;\316b+\350d/\24Gu+f\306HH\277\0253\246T\374D\240\276i\353\362\320\264\r'\25w%\221H\236f+\270Ll7\222\264]#\246\342\3\2160\321\7m\211\340\241\246\345\343\325\230\345\335\273\214\342\34\374\24:\363\302\363\336\310+\233\3205f\270\322\315\203\243\203\246\325\23'\20$\f+\23U\302t\300qu\233W\t\323\242\225\311\234\2\25\24\215\371\316q\360\304\204\21e\244\6;\243q\257\354B\231\324\261RZ\310\234\356\340\33\32\356\301\220\206\335\330C\270\323\360S\214\252\270(\260~y\4h\370\31~\256\241\5m\2\325_\31\r\215\232\364.\r\277\300/ULk8\214G5\264cB\303\10\253\34\344\241\35\35\32\f\214j\370\25>$\330k\3705~\243\341\22~KY\326\360;>\371=f\4\326.n\214\275)3N\21\323p\31\37i\370\30\237h\330\216\35\32\256\340C\ri\36\256\342\232\206\353\370T\305\r\r\177`I\177\304\214\206\233|\366\31\313\254\231\2279\234\262\\3a<0\0255&]3I\241\255z\324rR\223\223\22-\r\311I\316+\355\357\340x\221\330?\261\270v\263\264nd$\372\270kq\267\314)\267\273V\307I\211\240\372\0326F\r\233#2\244'\214\305\325\223"..., 2080) = 2080 30059 lseek(5, 1094462, SEEK_SET) = 1094462 30059 read(5, "PK\3\4\n\0\0\10\10\0WP\376@\247\247T:\377\0\0\0\2\2\0\0'\0\0\0", 30) = 30 30059 lseek(5, 1094531, SEEK_SET) = 1094531 30059 read(5, "\215\221MK\0031\20\206\337ikc\327\252UA\360\340A\20?.\6\274\256\224JA,T\v\356\301s\272;\226-1\201$\353\217\363\340\17\360G\211YA\17\326\217\036230\357\314\3730y}{~\1p\216\35\201u\201\r\201MBWy\317.d\326\5.\4\266\10\235\272\236\270\202]\354\216\214a7\324\265\310\23nO\306\206\203\364\17\322\253\307`\255\3662\273\274\271*5_\263\212\3\207_\243\351\351O\312;\316\255+F\201\235\n\326\245\265W93*T\216\t\367\343\271zRR+3\223\223\351\234\363\220.\354\250B\251\345P[\317j\252\371s\321\305\357^i?\272$\231\255\\\3165'aw\201\343\254\366%\34\374\vL\350}G$\34-\307(\260M8^\362z\204\375?\225m\2\241\21_3\376'\265\10-\254\306\252\211N\214\r$X\373\310]\210\230\223\250[A\17\355\301\336;", 255) = 255 30059 lseek(5, 1181981, SEEK_SET) = 1181981 30059 read(5, "PK\3\4\n\0\0\10\10\0WP\376@O\376\245\n\266\0\0\0\20\1\0\0,\0\0\0", 30) = 30 30059 lseek(5, 1182055, SEEK_SET) = 1182055 30059 read(5, "e\217\315\n\202@\24\205\317\315l\322\n\242E\217\20\265i\240e\206\20A\20\4-\222\366\243L\242L\16\350\330\303\265\350\1z\250h*\332\344\342\376\360q\3569\334\307\363v\7\260\300\200\301g\3501\364\tn\242t%\t\316tv\"x\307,-\204\251KK\326\253h\271\317\305Up%\212\224\37\342\\&&\10\233\350Kj\223)\2763\262\24F\227\253(\n\302\200\340\37u]&r\233)k8\336\274\243D\254\344O6\177_\22&\2054\274:\363J\\\214\326\252\372z5\324\204\341\1776a\324\f\357\20\10-[\216\375\226\332\2046\\\273\265\320\371t\206\356gz/", 182) = 182 30087 mprotect(0x7fb27c026000, 32768, PROT_READ|PROT_WRITE 30059 futex(0x7fb31a6e7ba0, FUTEX_WAIT_PRIVATE, 2, NULL 30087 <... mprotect resumed> ) = 0 30087 futex(0x7fb31a6e7ba0, FUTEX_WAKE_PRIVATE, 1) = 1 30059 <... futex resumed> ) = 0 30059 futex(0x7fb31a6e7ba0, FUTEX_WAKE_PRIVATE, 1) = 0 30087 futex(0x7fb31a6e7ba0, FUTEX_WAKE_PRIVATE, 1) = 0 30059 lseek(5, 124801, SEEK_SET) = 124801 30059 read(5, "PK\3\4\n\0\0\10\10\0\252`\273D\266\5$#\370\2\0\0\255\10\0\0$\0\0\0", 30) = 30 30059 lseek(5, 124867, SEEK_SET) = 124867 30059 read(5, "\235T\357O\323P\24=w\33\214\225n\214\1\303_0\24\304m \33\3\25\5QB$\301\200&\314\220\350'K\367\34\305\321\221\2663\376Y\232\200F?\370\221\17\376Q\306\373\272\302\6[\3314\313\356\373\321{\316=\367\274\366\375\376\363\363\27\200\5<\217\240\17\5\31\26dX\224\341\201\202\10\36\366\343\21\226\24<\306R\30\313a\254\20BG\232\263OHl\35h\237\264\\E3\313\271\242c\31fy\231\0200J28\204\364\226)\234\234\375!gk\207N\265Z\261s5\307\250\344\326+U[h{\25\261\351\10Ks\252\26\203\"E\243ljN\315\22\204\27]\302VZ\362\212k\333;B\257Z\245\345U\346\354\265\204V\22\26!\325.q\303\250\210\0357A\246\256\30\246\341\254\22\202\351\314.\267\267^-\261\220\201-\303\24\257j\207{\302z#\v\313\206\253\272V\331\325,C\256\275\315\220\263o\330\4\265^\272X\255Y:\357\252\233\246)\254\365\212f\333\202\237N\234i\320-\3550\267-\254\262\230j\6\260\210\245t\253\235\376-\236\233'\5Ov\221G\350\321\245\205\204h\321\321\364\217\333\332\221\327\200\242\351\272\260\355\251|>OXLwR\232i{\352\237\363\r\242\371|\201\260\321\221\250\225\307\207z\276Yc\241\261(\310\305\373\316u\256>\376L\307\327\343\254\336\202\254g\375{=\237\327\276\265\260\357\367\321p6\337\334>/\326\2728\257\356\373c\302\227\377A\350\257\273\16\221\325x\341r\315\311#V\21EL\305 \22*T\364\253Pd\30\302p\30OU\214\313q5\214g\204\361\253\265\20\342\2157\346\365\336\201\320\371\336\231\356N\36a\354Jc\10\203-\3051\301\267b\204\357\313\20\2R3\317\2\262\1w\344\226\300\267\206;\217\363\237\273\343y?\357qc\34G\334{\226\370\7\364d\277\243\347\253\233\232\344\250\360\10\212 D\nFy\255\326\223p\r7y\224\4\267<\202\267\234\31\344q@\22dgN\20\314\316\236\200\32T\t\326\6R\231*\212\10\305\20\243\1\227r\242\16\363(\345Lu\265\311Y\24c\214&i\274WF\367t\246\262\307\240S\250r\370\201^\2O\2\247P\344\360\raY6\350\226M\262ZP\2a\32B\234\2061J#\30\247dS7)\257t\252n_<\32\357cQ\267\275\202\271sc\216\21\372r\336M\257\334\244\340\5S\356H\32\6Ob\312\3/\263\0106\20\341\354\314;v\244= 30059 futex(0x7fb31a6e7ba0, FUTEX_WAIT_PRIVATE, 2, NULL 30087 <... mprotect resumed> ) = 0 30087 futex(0x7fb31a6e7ba0, FUTEX_WAKE_PRIVATE, 1) = 1 30059 <... futex resumed> ) = 0 30087 mprotect(0x7fb27c036000, 32768, PROT_READ|PROT_WRITE 30059 futex(0x7fb31a6e7ba0, FUTEX_WAIT_PRIVATE, 2, NULL 30087 <... mprotect resumed> ) = 0 30087 futex(0x7fb31a6e7ba0, FUTEX_WAKE_PRIVATE, 1) = 1 30059 <... futex resumed> ) = 0 30059 futex(0x7fb31a6e7ba0, FUTEX_WAKE_PRIVATE, 1) = 0 30059 lseek(5, 699335, SEEK_SET) = 699335 30059 read(5, "PK\3\4\n\0\0\10\10\0\251`\273D\247qb\200\203\2\0\0)\5\0\0008\0\0\0", 30) = 30 30059 lseek(5, 699421, SEEK_SET) = 699421 30059 read(5, "\235SmO\23A\20~\226^{m9(\226\202\200\340\v\242\266\240T\336DmCJj\301&gI\270\322\244\361\203\331\266W\223\3070O\30\362cM\312_\300\335~\376\26F\374\325\321I(\313_\21\274\204\"\vF\6\n\356\21j\2754\334\307\3?N\203$\224[\254!@/\240.\257\314_ tvC\271\212%\277\207G~\316c\204\361\204\260\247\304\241N\344\263\377\35J5\256\6.\20>G\304w\242\212\357\214\372\216\26\364\235\261\320\17\362\2]:\250U\245\213Q\243\32\354b\3148\7\243\245s\214\237\375m{\32A\302\23\214A\320\230\\\242l\"\7\2174\367d$\221\362\3552\342rpT\245`\25\267r\263\177\0", 643) = 643 30059 lseek(5, 1198081, SEEK_SET) = 1198081 30059 read(5, "PK\3\4\n\0\0\10\10\0WP\376@\353\271\r1w\1\0\0\373\2\0\0-\0\0\0", 30) = 30 30059 lseek(5, 1198156, SEEK_SET) = 1198156 30059 read(5, "\215\221oK\302P\24\306\237\253\346\322J\373\243ie\240P4\315\32\324\313B\210(\20\254 \305\367\323V\335\230[l\327\352k\365J\350E\37\240\17\25\2353\227\204\177\240\r\236s\356\275\317\371\235\263\335\257\357\217O\0G\330N\"\216\34K\236e\203eS\303\226\206\202@\374T:R\325\4\242z\271-\20;w\357,\201tC:\326u\277\327\261\274\226\331\261ig\265\341vM\273mz\222\327\341fL=J_\240\334p,e\370\367\206o\366\224\353\332\276\321W\3226n\373\216\222=\253~s\361\326\265\236\225t\235\23\201\254\336x2_L\3036\235\7\243\251<\351<\234pc\341s\217\211#\201\312\224\202?;\255G\317}\345i\2JB\375.\251\323T\227@^\237Y\236l\272}\257k]J\256\317M\316\177\310\205\213\3200\317\222bYa\311\10\354\375\363\27\10\24\306\235\315\263\253\3211J\230\243\353\341'\6\301\235H\23\264:\246((\316U\6\20\357\224D\220$MR\4\212d.a\201\262\305\241\211\342\22E\6\244B@\215\234\354\215W\366\7\210\214\23v\250f7 \254\17]!\201\2634\226\203\346\364\261!\253\216(\275\200V\331\257\16\20\35\207\351TT\16`\305\241m\4\323B\30g\253X#7c3\323F\214\215S\2534\342\301\214\21\231\305#f\203\232\365\37", 375) = 375 30087 mprotect(0x7fb27c03e000, 32768, PROT_READ|PROT_WRITE) = 0 30059 lseek(5, 5367442, SEEK_SET) = 5367442 30059 read(5, "PK\3\4\n\0\0\10\10\0\16SrC\1\346\31\221\200\6\0\0\352\f\0\0007\0\0\0", 30) = 30 30059 lseek(5, 5367527, SEEK_SET) = 5367527 30059 read(5, "\235V[w\23\327\31\335G\32ily\300\305D\3068q\300\340\20\331\6\24 \270\5\203\3\266q\221\357\305\24B\310\305cid\17\36\317\30\315\210\340\334\333\\\351\275\t\271\223<\344\205\27\262Vh\202(e\255\266\317y\313O\310C\337\372\vXi\311>GcY\276\260\322\306k\351;\267\357\354o\177\2673\376\372\277\177\373;\200\275\370$\2016L\326b\vL\35S5\310&\20EN\256-)\362u\230\306L\0026\316\311\3%f\245p\244\230K\300\205\227\240\236'g\363:\316'\260\1\223\362\254 \205/E \257\27%\320\5\271|V\307\305\0046cR\356,H\361\\\35\236\307\vR\274\250\343%\tG\235\227\345\311+\t\374\n\277\326\361\252\200a:N\306\365\3\323\315Z\276@\343\3609\363\202\231.\6\266\223\356\363\34\307\312\6\266\347v\v\324N\330\323\256\31\24\v\226\300\320\232J\207\206]+H\373\371\264o\316\5\236\347\370i\337\262f\315)\307\362\203\202e\316\245'\302\345\200\355X\23j\253\273\207\310Z\236k\201\365eP\333K\313s\356G\3636\t5W\266O\230n\316\233;\232%O?T\211\37\262];\350\21\330\220Z~\273\375\24q\373\274\34q\353\207m\327\32-\316MY\205\223\322\272@\303\260\2275\235Sf\301\226\353pS\vf\244\271}?\302\t\201\304\261\213Yk^\6\301\327\361\32y9\226;\35\314\320\207T\373 \245\345\345\325\374\t\201u\23\201\231\235\0351\347\27\355J|\16\251A\311\271f\336\363m\211# \6\345\341\254=_>\344JpW\227\16\217{d\252\321v\216\33\251\263\275\231L{F \226\365\212n@5\316\343S\305|\336*\10D\316\366r\345\345\363\276\25(\nR\221W\344(\246\230\326i+\230\360\212\205,\251\334\227j/G\3211\335\3514\235\263\335\351n\211\353x\276\245.\223\341\6\265:\272\254h\4O\223\225\4d\306*\321\220Y\364\363\324\210\330m\304\257*\233L`\25\314\300+P\243\236\210\256\225[V\204\313\22\2640_N\222\216\327u\274\301Rf\0253T\207\262N\230\375D\331\203\1UG\233Vgh\267\264k`\27\306\r\264\243C\240\351^5E_\nR\361M\3\235\330i\340!\354\240U\3o\341\222\216\337\30\350\302O\r\374V\212n\0342\360;\374^\307\37\f\34\226;\207\361G\201\355K\1\314\2709\353\342X1\30\313\367219\277\22\25\3}\350\227bP\212!\3\177\302\250\201?\343\222\2011\2143\304Ka:n\3723\23V`\340m\274c\3402\336e\0\f\274\207\3\6\336\307\7\2{\376\357j\25\330\270F\242\f|\210q\35\37\31\370\30W\4v\375\217\260\213\220-\325\3157\352\5\3\322\341\n83\277\326{\301F\\]\17\214\340\212V^]\222\262\f\243f\216\305\237LU\235\216M\235#p\267l2\243\32\201O\v\213\\\316\306=\333\rdW$\270\3217c\272\256\345\10\264.\226\275\313\v\331\362\256\257n\206*\335\213\16\336KA`\33;\364\7A\352i\365\350\224\3579\305\300\0327\345\363\20/Xs\336\0052\214\323\35\366\224\300\346\324\332\17\260\364\252\306\256\4\251q\221\363\312f\322gL\177\324\272\310^\327\\5,o\3520F\252\251-\223@\311\265\254\311\26\364\27\334\354L\301s\355\347\254\\u\316v\337\213\340\332\333h\345g\247\215\237\304(jd7A\340a\256\"HQ\262\27!\377\330j\224\353x\266\v\273y\226\346*\217\30g\300\266\216\233\20\35\2357\20\351\270\215\350\231\316\6\355&b7\20\377\v\364\216[\250\211\340\364u\205\367\10e"..., 1664) = 1664 30087 mprotect(0x7fb27c046000, 32768, PROT_READ|PROT_WRITE) = 0 30059 futex(0x7fb31a6e7ba0, FUTEX_WAKE_PRIVATE, 1 30087 mprotect(0x7fb27c04e000, 32768, PROT_READ|PROT_WRITE 30059 <... futex resumed> ) = 0 30087 <... mprotect resumed> ) = 0 30059 futex(0x7fb31a6e7ba0, FUTEX_WAIT_PRIVATE, 2, NULL 30087 futex(0x7fb31a6e7ba0, FUTEX_WAKE_PRIVATE, 1 30059 <... futex resumed> ) = -1 EAGAIN (Resource temporarily unavailable) 30087 <... futex resumed> ) = 0 30059 futex(0x7fb31a6e7ba0, FUTEX_WAKE_PRIVATE, 1) = 0 30059 lseek(5, 5371610, SEEK_SET) = 5371610 30059 read(5, "PK\3\4\n\0\0\10\10\0\rSrC\263\2\245\367N\2\0\0\306\3\0\0003\0\0\0", 30) = 30 30059 lseek(5, 5371691, SEEK_SET) = 5371691 30059 read(5, "\225RMO\23Q\24=\2573m\351P\254\"\370\331\252\25\305\26\2041j@\3\324XB\223\222j\0275$\312\306\351tZF\206\231\24635\370_\\\271q\355F\22M`k\374\21\376\20C\324\363\36\265\"\256l\362\336}\367\334;\347\234{\323\257?>\355\3\270\213;\6FPLb\306@\fE\3I\314&q\333@\\\202sI\314\v$\226]\337\215J\2Z\241\270!\240\257\6-G Ss}\347i\177\247\351\364\236YM\217\310x-\260-o\303\352\2712\37\200z\264\345\206\2f\315w\"3l\233\241\265\23\5\201\27\232\241\343l\313\2260\3529\326\216\331\30\244\r\225.Q\325s\374N\264\245T\327\5F\272A\350Fn\340\v\30k\273\266\323\225\3570\t\223\22\222\212\241\260\256\354\361\373\226@\262\260Y\256V\213U\201\270\355\5!\235hN\320Vl/\4R\35'j\4\375\236M|\242P\254\275\262^[\246g\371\35\223\372\256\337\241~J\362T\372\236\367\206\24$\223\334q;\350\373\221\200 \255h\n\3046\313d\244Q\246 30059 futex(0x7fb31a6e7ba0, FUTEX_WAIT_PRIVATE, 2, NULL 30087 <... mprotect resumed> ) = 0 30087 futex(0x7fb31a6e7ba0, FUTEX_WAKE_PRIVATE, 1) = 1 30059 <... futex resumed> ) = 0 30059 futex(0x7fb31a6e7ba0, FUTEX_WAKE_PRIVATE, 1 30087 mprotect(0x7fb27c05e000, 32768, PROT_READ|PROT_WRITE 30059 <... futex resumed> ) = 0 30087 <... mprotect resumed> ) = 0 30059 futex(0x7fb31a6e7ba0, FUTEX_WAIT_PRIVATE, 2, NULL 30087 futex(0x7fb31a6e7ba0, FUTEX_WAKE_PRIVATE, 1 30059 <... futex resumed> ) = -1 EAGAIN (Resource temporarily unavailable) 30087 <... futex resumed> ) = 0 30059 futex(0x7fb31a6e7ba0, FUTEX_WAKE_PRIVATE, 1) = 0 30059 lseek(5, 90883, SEEK_SET) = 90883 30059 read(5, "PK\3\4\n\0\0\10\10\0\252`\273D\3)D\30K\n\0\0\312\24\0\0\34\0\0\0", 30) = 30 30059 lseek(5, 90941, SEEK_SET) = 90941 30059 read(5, "\225Xi`\33\325\21\376\236-{\245\365\206$\316\251\220C\tNPb;2IC\301\16\201\304N\300\251\355\230\10\222:\264\320\265\364lo,i\305\356*q8J[J\357\203Rz@K\3576\275\322&!\225]\314QZ\312U\350I\17\350A[z\37\264\364\276 \375\336J\266e;\216\223\37\332}o\336\274\231y3\337\314\233\325\243/\334u/\200\365\242!\4\35o\327\321\200\2335\274CG9n\16\342\26\365~\247\216\331\2705\204w\341\335A\274G\303{u\334\206\333u\274\17\357W\313w\350\370\0>\250\341C:f\252\275\37V\354\37Q\217\217j\370X\20\37\3271\27\237PL\7\203\370\244N1\237\n\221\363\323:\365}F\215>\253\343\20>\247\341\363jrX\307R\34\321q\24wj8\246(_\320\261\2G4\344u\254\304\240\242\f\251\321\27\325\350.5\32\16\341n\334\243\343^\334\247\343K\270_\321\276\254\341+\32\36\320\21S\252\17\341\253J\354\203A<\244&\17kxD\307\271xT\303\327\202xL\307yx\\\303\327u4\341\33j\362M\r\337R\322\277\255\36\337Q\217'\324\343\273\352\361=\35\233\360}5\372\201\32=\251\36O\205\370\370\241\222\374#\201\312N\3231\323\256\200\321\232\311H\2479e\272\256t5\374X@\337f\245\344\216\234\227\315y\0023\233\355T\312\364\254LoK.\235\225\216\206\237pO\334JgSr\204\3624\305\25\306\2\20(O\331\275\2\v\3332\322\213\271=\261\254\2250\235d,\347Y\251X\233\335\333$\2405\357ho\337\334\321\"P\335\266\327\334g\306Rf\2467\26\367\34j\341\362\214f;\343zf\306\333e\246r2\210\237R\374F+cy\233(;\272z\227@\240\331NJ\332\326fedG.\335-\235\313\314\356\224T\362\354\204\231\332e:\226\232\27\211\1\257\317rK\fJ\360\340\261f>\326m3]\357jj\324\263T\355]\356\232\275d\257\211\266%\354t\254[\346\\/\266\227\303\264\231IJ'\266\275yd\330\244l(\333\233\20X>-+\31\335n\201\360\244\203n\311Y\251\2C mZ\31\201\371\321+&{Ci\0224j^\311\322\326\201\204\314z\226\235\341\336Y\355-\33\332-7mz\211\276\255\216c3\2\261q\347\334f\rl\331\334\256\"z\2114\251\257f\342\6e\200\351\364\322AsN\240\237\256\317\26\201\262l\n\377\325\24\220D\326r\267\207|\353G\370\\3\355\331v\312\215\271R\366\253P\270\236#\2715^\234*\243\342>I\205@I-\230(\260b\234*n\313%\274\234#}\245\5\36\356\230\351\310\36\351\310LB\306\355\234\223\220*\32\245\333\270\34\3339\236E\331\330c\r\10,=\251\217\2249\335\216\335/3\235V\226rk\v~\361\21\234\2603\211\234C\231^\314\364\354\264\225\210m\366_[xRi\252\220\210\244@t*_M\310&\205\366\270g&\372\333\315\254\217V\r\31\226(V'\326$\226\32\r?cyaQ\361\353\304#Lx\2326\32\177:[7\23\t\351\2725\353\32\32\4\26EWO\235t\301\215\211T1\211\364\2027\324\201U\202\217Z\267V\35\323\300e\270\334\300\36\\!\260`\n\320\362\220\272\201\237\343\31\3\277\300/5\374\312\300\257\361\33\352\330%\35\227\206E\210\346\23;@\303o\r\374\16\277\327\360\7\3\177\304\263\6\376\204g5\374\331\300s\370\213\300\222\223B\214\30\234&\335\224\335\1775\3607\364\21\316'\310\30\201\r\333L\36;\31\361\354\10\201\355\312\210\17o\351\21&n]$)\275\302r\232Ne5\210"..., 2635) = 2635 30059 futex(0x7fb314009354, FUTEX_WAIT_PRIVATE, 65, NULL 30087 futex(0x7fb314009354, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x7fb314009350, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1} 30059 <... futex resumed> ) = -1 EAGAIN (Resource temporarily unavailable) 30087 <... futex resumed> ) = 0 30059 futex(0x7fb314009328, FUTEX_WAIT_PRIVATE, 2, NULL 30087 futex(0x7fb314009328, FUTEX_WAKE_PRIVATE, 1 30059 <... futex resumed> ) = -1 EAGAIN (Resource temporarily unavailable) 30087 <... futex resumed> ) = 0 30059 futex(0x7fb314009328, FUTEX_WAKE_PRIVATE, 1 30087 futex(0x7fb31443af54, FUTEX_WAIT_PRIVATE, 5, NULL 30059 <... futex resumed> ) = 0 30059 futex(0x7fb31443d954, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x7fb31443d950, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1} 30088 <... futex resumed> ) = 0 30059 <... futex resumed> ) = 1 30088 futex(0x7fb31443d928, FUTEX_WAIT_PRIVATE, 2, NULL 30059 futex(0x7fb31443d928, FUTEX_WAKE_PRIVATE, 1 30088 <... futex resumed> ) = -1 EAGAIN (Resource temporarily unavailable) 30059 <... futex resumed> ) = 0 30088 futex(0x7fb31443d928, FUTEX_WAKE_PRIVATE, 1) = 0 30088 futex(0x7fb31443af54, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x7fb31443af50, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1}) = 1 30087 <... futex resumed> ) = 0 30087 futex(0x7fb31443af28, FUTEX_WAKE_PRIVATE, 1) = 0 30087 futex(0x7fb31443af54, FUTEX_WAIT_PRIVATE, 7, NULL 30059 lseek(5, 88082, SEEK_SET) = 88082 30059 read(5, "PK\3\4\n\0\0\10\10\0\252`\273D\346\206b\2000\6\0\0\304\v\0\0#\0\0\0", 30) = 30 30059 lseek(5, 88147, SEEK_SET) = 88147 30059 read(5, "\215VmoTE\24>\323\26J\351\2\5\4\3057\6\255\264\224\336]\5\361]\261,\24W\373\306\266\240\202\210\263\367\316n\247\334\267\336\271\267\24\342o\361\243\3375iLL4\361\253\237\374dbbb\342\17Q\2373ww[\264\250M:;s\346\231\363\362\234sf\356\217\177|\373=\21\235\247t?\35\244[#4F\237\214\320\1\272\315\303\247<\334\331\363g\367\217W\237\361\240xh\361\340\363\20\fS{\230:\202\366\205IgNo\350p\230\fVs\335\225\240J#\216uV\17\225\265\332\n:5\27\353\274f\333\265\324\370*\vjEn\302\32\320\343\275\23o\n:\321,\342\334D\372\206\261\246\25\352\2318Nr\225\233$\306y9\347'Q\255\245\v\233\327\3260\215T\34\350\254\266\2442\25\351\\g8\276'\306\24\320\1\17\346G=\17\236ya\351\314h\240\255\237\231\224\225\t\252\326WU\334\321\22\0\351\0o\310\313W.]\277:-\33\v\263\213\323\362\303\231\346Bc\1\313+\315\346b\263*h\304O\342\r\235\301\3140\335\25t\3209\\\357\311\4\235\356\5\347\303\233Z\35\303J\222\204v\374a\34\\\34Z\325a*H\334d/W\5\355\365\274Rrt)3q.y!\21\231\\/L\16:Y\337\254\t5\333\\S\33\252f\222\32\257\241\352\260\347\2318-r\2171^\333\201\6\274\206\240\332\356L\365C\260N\303N\257\256\256\254j\231\252|U\346\211\3141\2577g\346%\253dA\21CI\232ik\253r12\2714mis(E\32\245sAN\246&\325g\230\250L\267u\246c\37\316\34\367\274\376\312k+\34\351{\331\24\264\266\264\303^\37'\35\316\231\236\2260\25!\10\331\322;|\320\201\343\307 \246M\314'\v\253\345\204UQ\316\204\343\270\t6'd;\311\244\336TQ\32\302+)\350\0\253]\277\244\254^@\211\10:R\222\31\242\nj\3139\230\357\224\204:\230\327\2\316\213\35p\300\233\25\364\345\304\235\270\210Z:\253\272\375[\325\316\203\333\362\236\tC\366L\245\251\206/A\31\212\261\240\206\365\3612i\345\312\3042)r\346\310\235-Ie\335U\331h\227\7\322^\tK,\22\20\234\263\266U\35K\5\23\231V\201\225*C\202\270B\260u\317\200\2708\221\35\234\203\0\222$C\202\301\376P\347\201I]Q\225\223\1\357\201\240\223\365.s;<\260\245\22F\341\330p\2062\315,\302\35\341\224u\347g\233\272\267\350:\21q\254.\320Xw\320\227\33\232\203E6\240\343\231\222\207e\335\211t\23478;+I\23\307\26\312\236D;j\220\2503\225C\367\322\214C;\275\216\215\256Cn\355R+'k/\2714\266M\206\22\0\215\2512\331\264\254\235sR\253Q\316AO\314\225\267?R\233MH\263\0\326\304\373\310\271\347A\204\20\272\262\27\226\363\4\275\325f\242\331\216K\22\363\217\376\270/\2730(\332\v\262\332f\23E\302d\250\300U\202\327\23\276\335\324i\250|\375\17\327\313T:\224+P\5\37\327\vpaT(9q\35\227\242\221@\267U\21\346\327\226\341%\232\365q\317\353J\274\365B\205&\277\357Yx\2\216\276\270\16\342\235\326\356\206t\33r2\320\276\211\24W\6\247\25\26\334\25)\223\266\234Y\2567\32\322\336\217ZIxF*\224\215\354*\227\33*,\264\274\307U\305\r\227d\246cb(yX\367=\234\t\23\360\35\24\256\365{M\7\375U9ob\23\25\21W\351\371\363\10\345\260\351\30484\177\371\302\274\261\221\312}\334g\307p)9\251\27\5\27\274\250/_oX\v\225\n\26\262\230"..., 1584) = 1584 30059 lseek(5, 87188, SEEK_SET) = 87188 30059 read(5, "PK\3\4\n\0\0\10\10\0\252`\273D\276\310U\2509\3\0\0+\6\0\0'\0\0\0", 30) = 30 30059 lseek(5, 87257, SEEK_SET) = 87257 30059 read(5, "\205TYO\23Q\24\376n\27\246\324\201\"\310\16*\240P\212R\26\301\5\334@\220b\5\24\243\211\2748\324\251\214\266S\234\231*\376\v_L$Q\37\\\22\365A\203BQ\37|\344\301\37e<\347vl\253\226H\322\263\334{\356\367\235\371\316\t?~~\373\16`\30W\203\10a$\210\32\214TR4\312\3468\247'\330\234ds\212\315X%\306q\232\315\31N\317r\335\271 \316c\202\315\244\202)\5\323\2\276\244\221\322\5\252\343w\265\7Z\324\310D\247)\37\23P3Yg5\353,:\226\256\245\5\32\n\367\363%\347T\347\327\323\253\316#\1qS\240b\3340\r\347\214\2007\334{\235\240'3\267\t:\0247L}.\233^\326\255k\3322\223\325\3063\t-u]\263\f\316\335C\237\263b\330\2A\346\317sP\0231\323\324\255\311\224f\333:\335u\305M\335\211\332\311h\302\322\322\321I2C\323\232\355\334?T|\303\35=\264\f\207\1\3031\356B,\323/F\300Sk\t}\32512\246\255\340\"\225\205\227&\370\336\2634!\240P\22\223\345\336L2I6\245\233T\222Le\355\25\362\211T\306&\304\252EGK\334\273\254\255\312\226\25\314\10@\240=\274[[\203c\222`m@\240e\367\32jm1\223\265\22\372\264\234D\250x\331\317\232\253hD\223\212z4\250\250\303>\25\7\321\301\246\233MXE\37\232\24\304T\314\342\222\2128\233#\\\277\27\265\n.\253\230\303\274\212\5\314+\270\"\320\361_\375\4\366\225\33\264@\335\357\343\330|AH\201\246\335\276J\240F>Hi\346\235\350\342#\333\321\323\254-\23\324\27Vi\3012\314\342&yu\313\242\221\227\356!\255\224\276f\330\216-W\2127\354\266\236\322y\270\r\345\211I\222\20-;\340\245\37I\0\376#\325\244'\t\311*\360\260\2424\270f\312NPFSD0\262\rO\304\267\5\357\6e\36\264\360\31y\210'\360\211\247h\245\\\315W\242\r\7\300\203\247AP\5\243\314\222\247ZTG6\341k\315\301\37\361\376\201T\315\375\210g\10\210\347\250\22/$ZC\376\205\213\306Q'\272\10\365\20\305>\362\207%Cw9\206\276\34*\3122\274$\206W\304\360zW\206\236\177\30\302.\303-:\363\221\257\221\fm\3559(e9\336\"(\336!$\336K\216H\376M\201\243\306\345\340\250\227\276\307#\243\10E\336?xik]\336Q\312\270>\300\2749\4\376\326\377\3\24\361\261D\377\200\313U\212v\244\200\366\330\235\347\f\243\355\240\213\335'T\276As>\n\276A(O\264'\"\266\340\243\330\273\2166r\352\16\352\331\345P\265N\2272\252\276\261!w\211\273iA\5u\363\31\255b\23\235\364\264Gl\343\254\370B\377J\276\226t7\343vwTv\347\3519P\354\223\326\262\21\3\356\336\235$\317\332\370i\357D\361\223+\30\204V\2568>\177AZ?\0061$\237\r\313\372c\330O\276\226\242\20.\240\235\344\352\227u\201_", 825) = 825 30059 lseek(5, 80328, SEEK_SET) = 80328 30059 read(5, "PK\3\4\n\0\0\10\10\0\252`\273D\370oh\300\304\n\0\0\337\25\0\0,\0\0\0", 30) = 30 30059 lseek(5, 80402, SEEK_SET) = 80402 30059 read(5, "\225X\t|\24\345\25\377\277\315fgw2@\310\5\201(\21\202.\33\302\206\200\7D-$HI\232\3\10\242\1\17&\233\331\260\260\331]fg!h\25\357z\340\331\23\333\332\303Zj\17\vJ6h\252\265\27\266\366\262\227\266\265\375\365\260\247\326\336\326\266\212\370\336\314n6\211\233\4\177\277\344\233o\276\357}\357\374\277\367\275\331\247\337x\354\t\0\313h\256\17\315\270U\305\32\334\246\340v\25\5\270CV\356\224\341.\31\356\226\341\36\5\357\365\342}\n\336\257\242\10\37\220\341\203^|H\236\7T\370p\257\217\17~X\301G\24|TE)\356SQ\202\217\311\342\307\345\370'TT\342\223\n\356\227\227O\311\360\200\f\237\366\341 >#{\17\252\370,>'\263\317\373x\270[\364\371\202(\363\220\360\370\242\212\3758\244\340\260\27\17\213\264GT\34\301\240\2124\206|8\212GU\324\3411\5\303\362\274O\206/\25\341q 30087 <... futex resumed> ) = 0 30059 <... futex resumed> ) = 1 30087 futex(0x7fb31443af28, FUTEX_WAIT_PRIVATE, 2, NULL 30059 futex(0x7fb31443af28, FUTEX_WAKE_PRIVATE, 1 30087 <... futex resumed> ) = -1 EAGAIN (Resource temporarily unavailable) 30059 <... futex resumed> ) = 0 30087 futex(0x7fb31443af28, FUTEX_WAKE_PRIVATE, 1) = 0 30087 mprotect(0x7fb27c066000, 4096, PROT_READ|PROT_WRITE 30059 lseek(5, 83158, SEEK_SET 30087 <... mprotect resumed> ) = 0 30059 <... lseek resumed> ) = 83158 30059 read(5, "PK\3\4\n\0\0\10\10\0\252`\273Dw\27\330\7}\17\0\0Q\37\0\0#\0\0\0", 30) = 30 30059 lseek(5, 83223, SEEK_SET) = 83223 30059 read(5, "\235Y\t|\224\345\231\377?\223\311|s|\t\20\30`8\3\4\10\341\30n! \226\200H$\34\22<\2m\365c\362%\31\230\314\30498\264\27-\225Zm\353}\340\271\364H\17\267[]\222\210\21\252]\217\255v\267\207\355\326\272m\335v\265v{\330][\253E$\375?\337L2\23L .?\370\336\353y\237\367y\237\343\377<\357\360\334\351\307N\0X$\367\371q\36\276\347C3\376\255\270'\367GG\377\256\237\357\353\347\7\372\371\241~~d\340\307\332\376\304\17?\376\303\207\237\342E\3?\363\243\24/\3718\363\237\6~\356\307\10|\317\213_h\373K/^\366\342\277\264\373+/~\255\355\177\33x\305\217qxU\351\177c\3405\3\277\365c\22\376\307\217\211x\311\217\337\341\367z\300\37\f\374\321\217ix\335\317\301\237t\346\177}\370?\274\341\307\237\361\27\245zS\347\376j\340-?f\253\364o\343o>\234\304;>\234\302\273~\234F\217!\360\212\370\261\0\257\372\305%E~\234\24\267\37/H\261!\36\257\30~\324\211\227{\304\247\37\277W\2\206\230\332-\361\343|)\365\3130\31\356\227\21R\346\225\221\206\214\"#\t\0322\332\217\v\365\274\2232& c%\24\220q2> \23d\242~&\0312\331\220r]\231b\310T?6\3134?6J\205\316L\347\rd\206~fR^\251\364\311,\251\322\241\363\231m\310\34e;\327\217\6\231\307[I\330\220\371\206,\320\311\205~R,\242.d\261\366\226ho)m \347\31\262\214\232\220\345\206T\33\262B\340\211$\255\326\332zA\260n\227\265\307\nG\23\341\332x[&]\237N\332V+\t\212\222v\223\300\265\243F0\214];i\307#v}\"\223\214\330\202)uq;\35N5\205\225K\230\313\341\255\375I\310\300Hd\322d\230\22\370\327Ec\366fg$0k\343q;\271&f\245R6\327*v\364c\265\206\237\205\353\254T\372\352\212\374&2\363\267Z\373\266\332\221D\262\221{\344bN(\371z\333j\264\223\202\251\375x\244\322\311L$\235I\332\16\267,\rY\370\"\211x\332\212\306u\303\224\3016\364\222\250\206\2229\356\v\372\21\363\216\211\306h\2749\234]\16\257\336\311\355V$\355\10\275\265\3570{_\304nKG\23\361>\r\307,n\272\260wZ\25\224\264\367\330\311\24\325)\333y\241\235\311\304n;\276%\332\306\211\331\331-\231t4\26\246\330\221L\222\272M\207\255t\2425\32\t\257v\232\232D\"f[\312\310\2632\32\217\246W\t\256\255\34\320\230\3474Vm\201\204\334\303\333\255\330~\361\366\332\367!\304\254\313\4\3565\211F\312>\254\216\n\334\224i\335i'\267Y;c\234)\253KD\254\330eV2\252\343\334dq4\336h\357\343\335k\31\177\273\22\334\323\270\231\3568\272\357\6Y\333\367\371\243\273\315J\267(\257\367\210J/M\244\34\225\247\355x\312Q\271;\335\22\345\224gm\246\265MM8y0'\313\22\250\203\305\23M\331\263\270\257\244I\27k\254\224\275\311j\245\254\356\346k\242m<\241\321n\2622\261\364%\224\263\244>mEvo\264\332\234\3538Q\265\322\220\363\rYe\310\5\206|\200\10G\246}\346N\31\262\232\f\342\366\336\2559\257ZT9\353\377\341W\243\372\234x\275\225\252\261\355\270\2560X+\325\0\305\215\211\255\31\336^(r\316\23R6\315\26M\357\17oJ\324g\"-\253c\315\t\16[Z\v\375\320\233\262\257\316\2507\10\246\365\212\224\262Z\3234m*\\\277zc}n9\33\177j\n{_-\17\35Y`\212\332x"..., 3965) = 3965 30088 futex(0x7fb31443af54, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x7fb31443af50, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1} 30087 futex(0x7fb31443af54, FUTEX_WAIT_PRIVATE, 9, NULL 30088 <... futex resumed> ) = 0 30087 <... futex resumed> ) = -1 EAGAIN (Resource temporarily unavailable) 30088 futex(0x7fb31443d954, FUTEX_WAIT_PRIVATE, 7, NULL 30087 futex(0x7fb31443af28, FUTEX_WAKE_PRIVATE, 1) = 0 30059 lseek(5, 89731, SEEK_SET) = 89731 30059 read(5, "PK\3\4\n\0\0\10\10\0\252`\273D\321\363\317p9\4\0\0P\10\0\0)\0\0\0", 30) = 30 30059 lseek(5, 89802, SEEK_SET) = 89802 30059 read(5, "\255VmW\33E\24~&o\233l\27P \264\320@\245\5\rPX\241Uk\323R\t\24\33\10\241%\24,\251/\223\315,\256Mv\343d\323\27\375\252?C?\370\305\257\366\34l\217zN\217\237\375)\376\2\277T\275\263\tP\216`[\217p\316\314\275s\347\336y\356s\357\314\346\267?\177~\2\340\34l\35]\310h\270\244#\204\313\tRf\23\350\304\225\4\251\357%0\207\254\216y,\250\341\252\32\26u\274\217k\312\220S\352\222\206\274\206\25\206\330%\307u\374Y\206/\323\371\317\370]n:\236\231s\353M\277\350K\301k\231\274+|\263a\233\226\3445S\n\333\\\23\266\220\302\265D\321kJKdr-\267*w\267M\362q\334\355\314Vn\253\275\332\364\235\252iy\256\325\224\344\343\233\334\367j\216e\316\5S\326\363\252\202\273\231\261\r\206\310\274W\21\f]y\307\25\205f\255,\344:/Wi\245;\357Y\274\272\301\245\243\364\366b\304\377\324i0\30E\247V\257\212\205f\255.$\2519\327\25r\276\312\33\rA\326\321\3\320\347i\230Y\344\r\377\363\221g\2752\304\200\262\347\212\f\311C\t P\362`\312\f\303\317e\205Aw=\273\25\202\260\260\34C\207\255N\317\362\206(\360Z\220\331?\210\243\314\266\277p\352\264\177\213\2\324\370\3755ay\262B\0014)\356\n\331 \267DE\330\274Y\365o\20b\275,\275;\302\275\356\324\3110\361\22\224\223\353\325\373\226\250\373\216\34764\254RXW\334[\23\274\242\210<\227\36;\220 \345\345U\10\37e\2526\230s\345\206/\271\345\7t\266\234(b/\35\352s\252\237\274\306\33Y!\\ea\10\247U}\303\345\246\275\307\260K\24g\37\370\"\333\264\355\3005\344Q\212}{\364\2576\375g\371g\16\25I\266\261M\374+\262\26\230u/@F\256\35E\237[wVx=h\34\272-\32\256k\270A\351\267\352\264\350\250v\352\332o\216)\205\301\300+Xc\30{\341\223\224\303\244A\267\262h`\35\33\0066\361\201\206[\6\2660M'\32(\341\266\201\17\361\221\201\217\361\t\0010\300Q6`\341\264\201\nnk \24g^\240]\31\6\217\330\265k\217\355\n={\315\274\272W\352\335\325\203\5\240\322\35\306\374\377\373$,\275\364\2230\375\37zP\363\202\4\250\233tU\332V:\f#\245\243\336\202\375]\352\362Q\223\252F,\35\321\246\303\317\rB\217\220w\200\302\210]U\367\271\207n\324~\314\335xQ.%\177@\233\322c\245,\251U\247\346\370\301\215\241\347\"zO:>\265\205\226.es9EHT\324\352>m\217Z\304\21U\255\357p8x\215\276\3]P\177a0\352\314W\351\223\320M\33278\6\235\346\344\370\304\331\301\376H2\232\214}\235\324\222\361\376\304c\260\207d\10\241\207F\365A\1\353@/\353D/\351v\313\211\376O\4A\223\350\307\0\5V\322I\244\324n\222\0061D\307)\351\24\1\210\4\3220N#\32Hg\310\32\v\244\21Z\323\2i\224\326\342\201\364:\336@\2i\222#\24w\214\306qL\220\244@\317P|uV\374\27\204n=F\370\207=\2341\265\316\272\3\214FkO\33c\4g1\331N\372w\322\24\206\233\343;\210\374\212P>|9Eb\364\311wX\230\330A,5SPjjf\7\332\305\310\344#\3047\373\325\224\10\323\240?\30215}\213\216\326\246\360\2170h\241c\363\253\20\373\376\257\237\36\6\34+0S\304-\330q\304\331\t\3640\"\210\r`\224\235\3048K\341\2\33\304\0256\204\34;\205\2\331\327\331p\0\372<\1\33"..., 1081) = 1081 30087 futex(0x7fb31a6e7ba0, FUTEX_WAIT_PRIVATE, 2, NULL 30059 futex(0x7fb31a6e7ba0, FUTEX_WAKE_PRIVATE, 1 30087 <... futex resumed> ) = -1 EAGAIN (Resource temporarily unavailable) 30059 <... futex resumed> ) = 0 30087 futex(0x7fb31a6e7ba0, FUTEX_WAKE_PRIVATE, 1) = 0 30059 lseek(5, 94692, SEEK_SET) = 94692 30059 read(5, "PK\3\4\n\0\0\10\10\0\252`\273D0\16\321j\254\10\0\0\34\21\0\0\37\0\0\0", 30) = 30 30059 lseek(5, 94753, SEEK_SET) = 94753 30059 read(5, "\215Wy\\\24\347\31~\6\26f\31GT\24\221x0\32\214\213\242\213\212\21\320&QP\263\nH\334hE\333\264\303\356\7\214.3dfV\261W\322\373\276[[\355\235\246\265Gzxt\241\322\330#ml\323\264M\357\373>\354}\246\177\345\367k\372|\263\354\262\213(\3763\337\365~\357\373~\357\363\274\357\367\315c\377\273x\t\300F\374WC\r\\\25\236\206\22\331\372\32BH\207qL\266\307\345gD\305\211\n<\17\317\17\343\5\32^\210\27i\250\300}\262w\177\30/\326\270\362\222\n\356}\251\206\227\341\345\262\367\n\r\257\304\253d\357\325\25h\301kT\2746\214\327\311\311\327\313\3117\310\317\33\303x\223l\337\254Q\342-a\274U\305\3334\30\270O\305\3335\254\300I\25\357\320P\217\223\32\336\211S*NkX\205w\311\317\273+\360\36\274W\303\373\360~\r\37\300\3r\356\203\362\363\240\306\205\17I\371\17\207q&\214\217h\370(>\246\342\343\32\232\361\220\374|B\316|R\305\247\244/\237VP\336c\272\346\220\247@\217\331\266p\333S\246\347\t\16KS\316\200\202E\235\266\360\243^\177t\330J\230n2\232\366\255T\264\323\31\330\242@m\337\333\325\265\255\273CAU\347\21\363\230\31M\231\366@4\356\273\226-\227g\267;\266\347\233\266\177\300L\245\5\355l\265l\313\277\215\212#\r\7\24\204\332\235$g\347tZ\266\350N\17\365\t\367n\263/%\2442'a\246\16\230\256%\307\23\223!\177\320\242O\213s\336$\350r\264\235\237\235\326\310\235\302L\n\227\26CC\246e+X\0309|\265?\322\244BE\325\5K;F\22b\330\267\34\233{\227f\347\245\372\375\373b\361\23\266o\216\24\256\207Lw\200\16\314\237F5\2176<\21\302\25\327\366\257>\33fJ\227\34I(X\336\231p\206\242}\"\355\371\321#\354\16\2316\205\242\273\333s]\n\316qE\277p\205\235\20q'\355&\204\334U\250\237\313\321}\305\"\334U\332/#U\233\365\323r\242;\255\224\210\331\303i\237\356\ns\210\22\232\334\235\365j\252\313\236\357\246\23~\332\25\201\363\371\310\226\365[#RxY\2210\317\266}[\227\324\237\27\254\260\305\361\234\346\331q\337L\34\3552\207\3\fUt3\277\230ZL$\322\234\f'\271U\234%\253\351Q>\324\2248\247\342<\211\227\30\24\211\243\304\242\307\364}a\307\274\270\260=+ Cud\32|\17\221\220\303R\324%\5J\323\256E\274\323\n*\213p\245\207\341\255\211\324\4\21\265l\314\344\1H\273\"\264\326\311]:\266a\273\2c&L\25\324\315\0\246\324\364\31F\207a\34\fv\352\310`T\307\30b\344\3244\214T\361Y\35\0271\256\240y\247I\377\222\206\357\30d\231'\214\200k\202\347\364\32\215\244\360\263\253C\302\363\314\1a\364\211\224s\274\315P\3619\35\17K\v\227\360y\331\333.\341\20\302HK\2516c\355\240\216/\340\213:\276\204GT|Y\307W\360\250\216\313xL\305\327u<\216o\350\370&\276\245c+\236\241`\356\244\177{\373\216\210\204\257\240\246}\337\266.\243\237\246\r\3133\\qo\332rEr\235\241\343\t|[\307w\344\336\357\342\21\5\215y~^%-O\224p\354~\313\0352\272:6yr\367\367p\273\16\vG\310_\242eL\340)w\331\216o\0343SVr\35\253\300uR\225X\314\220\"\22\213\357\363\10\327\310\17\25?\320\361C\374H\301\222\353q]j\371\261\216\237\340\247\344\260\216\237\341\347*~\241\343\227\370\225\212_\353\370\r~\253\343w\370\275\216?\340\212\216?\342O"..., 2220) = 2220 30087 futex(0x7fb31443af54, FUTEX_WAIT_PRIVATE, 11, NULL 30059 lseek(5, 93576, SEEK_SET) = 93576 30059 read(5, "PK\3\4\n\0\0\10\10\0\252`\273D;\2=\316\30\4\0\0\302\7\0\0&\0\0\0", 30) = 30 30059 lseek(5, 93644, SEEK_SET) = 93644 30059 read(5, "\215U{s\0335\20_\331i\2348nK\\RHxT)n^\370|<\32\36I(u\235\24458\17\234\0073\300\f\310g9V\270\2079\351\342|-\230\3110\303\37|\0>\24\303\256\316q\223\301\241\374q\222v\367\247\335\337\356J\272\277\376\376\343O\0\370\30\16\362\220\207\247\223P\200\352$L\3023\32j4l\322\2605\1\3334?\317A=\7_1\230\360\243\223\206<\223~\16\32(5\6\22\203B=\fe\\\363\205\326R3\230o\204\322\270\272\343\366\224'\342\266\233\30\345\273\210.]\356Xg0\333LB\243\2y\254\264j\371\262\32\206\221\21FE!\356\347\r/\n\334\226L\264qOq\31\210\260-cw_\304\"\220F\306\270\375V\210K\204f\34\f?\3458\310\314\361S2Sm\251\275X\365\310\31\203J\255+\302\23\311\21\300-`\215on=;z^\346\365\335\355\2752\377\266\332\334\255\357\242\270\325l\3565+\f&\275(<\2231\206\311\301.\203;\226p\355R\307`\34129\17\331\2705\34\16\243\310\327\245\3538\2448A\200m\345Krr*\316\204\253\"\227d\264M;\216\n{\211q\10\343t,(\343\324\31\270\243S\37r\322\326\303\3250s\207]\311{\302t\271\211\270\301u\255Y\335\341\344\222\222\211eG\3062\364\320\377}\307\31JNGh#\206\201\233\fN\367\257\270\30\342\270\305Yoe\256\f\17\220\27oI\236\204\310\255\27K\354w\233#E\256\220\3469\256\227\22-\371\242\26\201\241\242\340v\325>_\344\235(\346\362\\\4=_.W8\203\261\256\364{\f\330w\24\274\313`\334qRM\36\23\355\2508\330\331\\ep\333q\6\242\23\264Q\376\241&|/\361\205\221\34\355\326\251\226\277$\304S\363@\206\324pITl\16])\260r\25\336D\210B\246|t\372<\262\7\205j\245\302S\351\231\243&\266\241@\375!\311Ib\305`\265n\5\2166\33V\370\376\225\32\275$q=4\203\342\245\351(\366\261\276\3300<\221\305\3640\370x,\335\3\23\253\360d\335\346\212\221\234\336%h-\265P\264\0u\264\34\330\256\345m\31a\323\260%)_\331\306\260\343\33*T\346\t\203\354\322\3621V\273\26\265\261\315w\33*\224\273I\320\222\361\241hQ\343\213\215\310\23\376\261\210\25\311\3\345\230\351*\274X\343\366\266\341\342\341\277\316\373\266:\177a3,\245\30\244\237?\210\222\330\223\351i/^\3U([z\23\376\373N\223\227\342@\277y\365\2oT9\235%\312\262\243\316\323\323\235\26\230\367\225\351F\211\301V8\375X\331\"Q\371\373\335\10\373jo@\1\37\271\307\5\330\203\273\5\230\242\341\21,\24`\231\2062,0(u\215\351\255\271n\277\337\257\310\226\252\10\257\222\374\354\312P\244\331\342\261s\37\351\2\270\360A\16\366\361azU)\30\274\366\262\271{-\352H\16\276a\360\340\25\17b\16\360\n\226\376\317\303\202O\237}\251\360\5\275\221\f\336\365\321\361\30\314\214\214\1\34\237\371<\376\22r\370a\235\0\363\300\325[8OC\26\212\337CF\303=\r\257\303\214\206\373\360\206\7s\326\374\366H\340;\32\336%\314\3Bs4\317\337\0|\250\341\275!\260\204f\354\316\0008m\201l\0\\\324\260\204\312\345\241\371\2365g\310\3144\254\320\376\367Q]\276\1\340\20\240\202jl\344H\300\207\4\370\10U\364W|\214\363*\256~D3i\346W~\7\266\362\33d. \273\222\275\2001\32n\3210\276R\314]\300\304\257\10\312\300'8\316\301\270\3358\6?a\35\25F\362a\6\"\324\307\360)"..., 1048) = 1048 30059 lseek(5, 111341, SEEK_SET) = 111341 30059 read(5, "PK\3\4\n\0\0\10\10\0\252`\273D\260\312\6\266L\21\0\0000!\0\0$\0\0\0", 30) = 30 30059 lseek(5, 111407, SEEK_SET) = 111407 30059 read(5, "\215X\vxT\325\265\376W\346q&'\7\10\301\0\203<\6\10\22\362`D\5q\22A\36\2\321$\4\302\303@QO&'\311\340d&\316\234\1\241\255\326\226V\355\333\266\266\305Z\37\250M[\373\0\304I0>\372\272\324\366\326>n[\255\326\332\332\336\326{\275\367\266\367}\255Us\377}\316L2\201\211\360}\363\235\263\317\336k\257\265\366Z\377z\354\371\341\333\217?\5\340b\371\226\216F\274\246\341_t\224\340\265\0\376U\275\377MG9\376\\\212\277\340\337\3\370\17\r\377\251\343\277\360\337:\376\7\377\253\226\377O\307\353\370\253\2067tLV{\377\246\310\337T\217\2674\274\35\300\210\216i\2\22\211\4\244D\307_\304S\212\311\342\325Q*>5\362\353\242I@\223R\35s\360\232\232\321\313\244L\2142\231$\223\325c\212&\345\232L\325Q%\25je\232\2429O\223J\35\3252]=f\3502S\202\272\314\222\3635\231\35\2209:\352e\256z\314S\273B\212f\276\332\265@\227\205R\245F\213\224\374\v\324h\261zT\253\317%\272\324(\272R\251\325\244. \365\245\334\274T=\302:\26\312\205J\321e\212\360\"M.\326\261N\20\220K\324\312\362\200\254P\213\227\252\307JEq\231&\21\35WK\203b\331\250h.W\243Ujm\265&W\4dM@\326\352\330\"\25\232\254\323\261]\326kr\245\216\235\262^\227\r\262Q\223M:v\3415>\244I\223\253t\354\221\2535i\326q\235\232\274N\346k\322\242\336\255::e\263z\264\251\307\26%j\253.\355\262M\227\355\262C\227\235rM@:4\331\245#.\25\352\261[i\371.\201\277\315L\231}i\201\321\224HX\251uq3\235\266\370\351k\267nlZ/\360\304\223=\202\231\315\t\313\16\247\273\303\375\261\250\231\352\ng\354X<\334\234\354i\20h\3536\267\264\254i%iE\363^s\237\31\216\233\211\236p\273\235\212%\324\362\244u\311D\3326\23\366\0163\236\261\2\262\207\"\33c\211\230\275\212\274\253\227\354\20x\327%\273,\301\224\346X\302j\315\364uZ\251mfg\334R\374\222Q3\276\303L\305\324wn\322k\367\306\250^(\257P\224\332\207\327'\367'\342I\263k\253\325m\245\254D\324JS\262\336O\25\354\355i\263\207\333\252\252\233\243\311\276p\247\225I\333\341\275\34\366\231\211.+\25\276j]~\330\240t)\331\33\25\314?+)\t\323\235\202\340\31\7^\233\211\305]\2o\237\31K\10\246W\357>\323*J\222P\251\312\202\245+o\212Z\375v,\231P\314c]\352Q%8\317\245p\314\335d[)\323N*\346\236\276\256\345dA;,\314\333!m\366\331\311d<\35n_\323B\327e\224\25\266Z\321d\252\213\364\376\224eR-\301\274b\344\33bq\222\232\271\203%\311u\272+6\226\fo\316\330\375\31\233z[f\237:\225\231\352\341\372\264\"\207\242\224\376\34\224\26\237\3059U.\346\324\226XWs,m\v\312\v\16\252f\32\224\22\343\334\177\240?\17\201\225\247\3216\236M\234\3\345\206U\n\215\355\266\31\275\241\305\354wXi\270\213)\213\331\2129J\223k5\271\216\371D\223\353\211\235Qw\3608S\273r,\363v\345\\muq\23\235~\214]M\312\331Z\237\225vq\350\211%\307\34\317\315M\233\307;>=n1Qh\373\v\316\355\230\224\321\251|89\326\223H\246\254\326\244\275!\231I\20P\262\213\347\2123\310\232\255D\217\335\313\t\346\224\251\232\230\314cL\256\202\322vn1\355L\212\32\266\237\333\371\316\331\364\256\35&9!\2317\243"..., 4428) = 4428 30059 lseek(5, 109577, SEEK_SET) = 109577 30059 read(5, "PK\3\4\n\0\0\10\10\0\252`\273D\256\300.\27!\4\0\0\261\7\0\0+\0\0\0", 30) = 30 30059 lseek(5, 109650, SEEK_SET) = 109650 30059 read(5, "\215UmS\34E\20\356\271\203\34/gB@\0221o\23%! \313\32#\32\3b\340\16\"z\34x\20R\245\237\366\366\346\356\6\367f.;\263`\345_i\25e\225\37\374\1\376\r\313*\377\201U~\260|f\367\16\202b\314\207\235\235\356~\272\373\351\236\336\331_\376\372\351g\"z@\373#4D\353\3034B\33\303T\240'n\371\334-\233n\371\242@\225\2m1\32\212t\253\"\16ET\240mH\225\236\304\250\270\251\224\210KQ`\2140\214nW\224\260\276i\372]\31\6q\303O\254\214|\240\247\373\36K\214\246j\211\262\262#\366\245\221\365H\254*\245m`\245V\360\347\225Pw\374\272H\214\365\17\260\355\4\252!b\177'\210\203\216\260\"\206\373\240\302\26\320\234\207\364\243\236\7f^\224\221\31m\10\23\306\262\353\2021Z(\265\3\325\22\34\0\236\2\36\361\362\372\332\323'\363|\263\272\261=\317\237\255\326\252\233U\210\353\265\332vm\201\321p\250\325\241\210\221\246@_1\272\230\22.\365u\214\356\366\213\v\301\306/a\331\323:2\323gq\2408\320\26Q\227\21\373\332\261l3\272\340y\231fb'\226\312r'pT\306\237'\322\242\235.\336\206\214\204\313y\20\34\6\276\324\276\223\21\252\350yRu\23\3535S{\316\333d\344\237\337\244\23\366&u~\231Pi\257-x7\260mn5\267\330\227j\253[\\\307|\r/\27\331\351\305w6\16B\313\215x\236\10\25\n\276U^\344a[\204\337\232\244c\320\237\201\326\v\331M\253\31169\357\5N\263\244;\335X\30\303\233\201\261\1?\222\310\342\354p(t\32\213\25iP\342XVW6\16\320\200\323\360\256l\251\300&1\312\232\376\207y9\223#\234\237\277k\321\263\326\322\n\\\326Wy\4+\327\315\263\334x\23\245\34\265e\330N\213\353\27`\270i\353$j\360\272\340\r}\244\"\0354D\3\274\2060'6k\370\270\3479A\252t\2O\272\274\301\350r\371T\237\366\10\216\27AY\307\242\252\355\206NT#u\317T\36\206\330kf\312\207e\255f,\372!#\16_Xxj9%6\317\17px\\\32\223\10\216\236\5\261B\215H0\22I%*B\265,\306\206\341\254'\370\350\203\177\224:\273\20\215)1\336%\263;3;\263\237\231\335\375\376\343\313W\0\217\361(\2035\2242\330\306\216\22w\323\260PV\342\236Rw-T,T\31\254N\363\340m\373\371!\3k1d\33\201\214b.\343\36\367\347\302\244D%\206\204\3443\301PhO\371;\356\372\\\216\335n\34zr\374\204\301\234\r\17\30RO=\351\305\317\30\212\225\213\213\252=J\321\10\206\224\"\327\366\2448\234\317\372\"|\315\373\276N\32\f\270\337\343\241\247\364\2451\21O\274\210!\331\25'\255&\203\335\222R\204\r\237G\221 \363n[\212\330\215F\356 \3443\267\31\274\227~\300\207\257\304H\204B\16DT\326a\304fxC\252\250\33\363\301Q\207\37\353\334\272j\207ao\5\347j\362L7\230\207\3\361\302S`\233\27w\253\253(\33y\324(\261\215}\334\267Q\207k#\207K6\262J\324\361\300\302C\206\362\377p3\344\377p\274\354O\305 \376\313\264@\243\306W\24]\312\27r\34O\264J\307\227\216\346\375h\271\240XiUW\235\330F\245\265\332\261\365o<\224\350\356\254\321\2150q\3id\300\260N\232\1\233$\325\t\365\345\364h\220/\217\313$\v\244}B\222,@\307\371\f\346\324j\3470\362\245\3419\3143$\234\332\31\222\332\262\375\21E\247f.\275\t\362\247\310\345P\3607d\325@\216\17Xwh\232 \307\251\6\271BrGC\215\220\300\230\364\t\256\301\243\373=\245\27p\204&|\2641\303UZ\261\261\200@\221V@\317\256\23,\243b@\250\346O\n0,\334\264p\v\310[\272\202\333\313\n\336P\250z\v\271E\5\212k\237\340Ou\251\212\241@\273\3\1\311cj\315\t\345\r\365\236\245E\330\357=s\272QL\317T\253\f\372\267t\226;\330\244Q5\325\302\36\261f~\1", 562) = 562 30090 <... futex resumed> ) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091214, 584889000}, ffffffff 30059 lseek(5, 133715, SEEK_SET) = 133715 30059 read(5, "PK\3\4\n\0\0\10\10\0\252`\273D\311:T\n\316\f\0\0S\31\0\0#\0\0\0", 30) = 30 30059 lseek(5, 133780, SEEK_SET) = 133780 30059 read(5, "\265Yy`\24\325\31\377\275d\263ow2\t!\260\201\345\\ \201\315\305\22\216\0\1\21\22\256`\22\"\3410F\304\311fH\0267\273aw\26\301\252=\244Vz\330\242\266\25\265\326Rml\265\255(\206h\204\332\326jkk\255\326\36\332\332\303\336\366\276\255\265\246\2777\273I6f!\366\217B2\363\336\367\276\367\276\373\367\276\201\247\336x\344\f\200%b\267\206:\234\224xHC\26N\272\320\247\336\2474\24\240\337\215\207\361\210\v\3\22\217j8\2153\32\276\200\307\324\362\0275|\t_\226x\\C\276\332\373\25\305\376\204z<)\361U\27\276\246a\22\236RL_w\341\33\32\217y\332M\316ojp\343\0315\372\226\206g\361\234\32}[=\236W\v\337\221\370\256\6\37\276\247\341\373xA\342E7~\200\37j\230\207\227$~\244a>~\254V~\242(?U\323\227s\3613\374\\=~!\361K\r\277\302\257\25\3717\352\260W$~\253\241\n\277\223\370\275\206%8\251\341\17\370\243\206?\341\317\352\361\27\27\376\252\f\371\233\v\177w\223\355\37\352\361O\27^u\341_n\274\206\177+\366\327]\370\217\voH\fj\2Bh\"Kd\323&\341\240\362\"\307\r\267p\n8\233\215\230\321\35\27\320\353#\0213V\0276\342q\223SG\263\21\212\t@ ;\34\355\24\230\332\0201\255@|o\240'\0244b\35\201\204\25\n\7\32\242\235\253\4d\335\326\306\306uM\353\5\n\33\366\31\7\214@\330\210t\6Z\254X(\242\226\363\352\242\221\270eD\254\235F8a\272\204\244\320\325\241H\310Z\303\263\375\245;)\253.\332a\nLh\10E\314\246Dw\273\31\333n\264\207Mu^4h\204w\32\261\220\232\247\210\16\253+D\5g\17)\24\244\376\201\v\23F8d\35j\tFcf\213eXq\n\326z\250\201\265#ntrW\261\277!\30\355\16\264\233\211\270\25\330\307a\267\21\3510c\201-uC\303UJ\225\254}A\2019\343\262\2221\336.\340\35com\"\24N28\272\215PD\240\310\3376\326)J\222\240R\236\264\245\r\7\203f\217\25\212F\324^#\326I\23'e\330J\347\365\244\"6\377\334\36(NFVE\200\363\340\345\215F\217\355A\t\376<\316\244g\252\323I\303rU\320;Bq\213n\367'\345\206\242\201\215\241\260\271\252\326\326\227\366\212Z[\267X1\355oS\343\260\31\341X\324s\36\342\300\31W\322y\2203fr\324!0w\224\216q+\226\10Z\211\230\31\250\343t\233\315C\375&'\305\331)Uo\2311\303\212\332\36\334\33R\361\316\37\255\f\335\322a\3565\22a+\335b\245@|\330\241\344\255\217\364$,\372\3144\272\225\317\272L\203a9\267>\233m\36r\v;\7\316\302\30\215X\f\254\315\247\"\21W\247\316\33\305\334\256r`\204\261\331fRu\222t\312\210\232\266\301\353b1\343P\3\375n[\0343\367+\337na\342\214\316\375C=C\371\2772\323\346\325\343\373y\315*)\\R\270\245\320\244\310%>\21\225$\216H\241\23}$\342R\344I\221/\305\4\201\34\273r\4\246\373\333\266\324\16\273\264Y\21S.\2653\"$\340\336\257\202\2607\244\274\340\16\305\327'#\303\265\213\351\236\366\20!\205I\340\350\261\261\244x\334|\r)7\225\264\2755\276\34C\31Oo\365\214\n|\272\226\312\0222s=\273\3338H\255\350W'G\r&+\323\2717\32\3536,\211\343R\24H1\221\210\313[D\212B\1\327\352`8\205PZK4\21\v\232\33\355T,\32\243\314B%VG\v\266\vL9\v"..., 3278) = 3278 30059 lseek(5, 132816, SEEK_SET) = 132816 30059 read(5, "PK\3\4\n\0\0\10\10\0\252`\273D\3\\\241\211;\3\0\0\321\5\0\0*\0\0\0", 30) = 30 30059 lseek(5, 132888, SEEK_SET) = 132888 30059 read(5, "\215Tmo\23G\20~\326\16\27186\220&@\32^7\255!`r>\332\362\16\5\22\7\252H&\1'\4\t>\255\317\233x\243\363\236s\273\27\324_P$>\361S@\212\220\370\300\17\340G\241\316\236/4\245)\360a\337f\236\231yfvv?~z\377\1\300oX\30\205\207\313%\224p\245\204a\\u\32357]\367p\323\303-\206\221(\336h\312m\31y\370\235N\315\374\304PY\324Z&\215H\30#\r\303tSK\33\230\365\240\257B\221t\202\324\252( tu\327\202|M\265RmUO\256)\243\332\221\234\323:\266\302\252X\223=o\206q/h\313\324\330`\223\266=\241;2\t\36\211D\364\244\225\t\231\37\320\264%h\301\247\360e\337'f~4 S\356H\23&\252\357\2341\324\33]\2417$'\0\317\0007\371\302\375\371'\177\314\362\305\245\7\313\263\374\351\\kiq\211\216\367[\255\345V\235\241\24\306z[&\24\306\303]\206C\31\341\306\256\214\341\334nr!\261\t\0324\255\306qd\252\377\306\21\305\241\256\214\372\f\354\231c\331e\30\366\375\201d\342Q\242\264\345\356\300)3\276\225*Kq\225\356\247\366\201\212\244\v\272)\266E\240\342\300\235\311W\305\3673\265\277\236\351\v\376\"C\260\177\225>\3237\231\361^F\323\253]\311\373\302v\271\215\271\245}\2435\367\220\307\t\237\247\305y\246\364':r]\244\221}\234\212H\331?W\3028\241\200\214\342M\372~\256\363\267\6J\337\f\264\362\211\221\344O\31\276-\242Tra\270\3409\326\271\357)c\224\336\340\271\31\317\314\352\274\31\277\220\306r2\2734\313_tU\330\345\244H\244\351\307\272c\34\307\231\351\31\2564_\27\306n\21\267\341\333J+{\207\241x\376\302\32\25\270\21w(\372\341\246\322r)\355\265e\262*\332\256<\343\3158\24\321\232H\224;\347\302!G\220|d]d\276\274\307\275\351\256P#\232\352\0GU\33]\211\323$\224\203\2339\366\37`\335]\225\353\371\257\367\254\3634\236\313\27\3666\350\324\343\275U\341\306\275\2cUh\352\25\314\340|\5\367P\251`\304M?b\252\202\237Q\3650\307P\375\36\372\fcY'E\364\6\202\345\366\246\f\255\207y\2063\337x\240\36\32_D\370\277F\247\247\230\275\34\206S_%D\245\333?&\303\321}\343\200\323\327\343\321\3174D\203\322\7\303A\332\235\240\365\20\2128\374\34\5\2031\203\0370n0\201#!&IM%\312\201\3072`!\7\0367dI\300\223\2449\205\323\373:;\343b\222\237i\7\374\211\324T\352\0348\361\2173fp\326\1\316\221\10\356\206h\275@\273\207\244v\222\311\332;\260\332[\24vP\254\25w0T\33;\275\203\3oHU@\215\346\361,\243\277h~\2112^a\f\257q\221$\225\2019fQ\247\265\210 \263\270\224\305/\223\356\27\32\277\32\372\250\313$8N\200\22nc\364\336\24\216\342\16e\353~\352\33\3601\3627", 827) = 827 30059 lseek(5, 132419, SEEK_SET) = 132419 30059 read(5, "PK\3\4\n\0\0\10\10\0\252`\273D\6X\306\353G\1\0\0\355\1\0\0(\0\0\0", 30) = 30 30059 lseek(5, 132489, SEEK_SET) = 132489 30059 read(5, "\205P\313J\0031\24=\351L;:\216\266V\255\317\242H\27\265\vg\341Rq\321\202`)>\250\24\\\246c\324\224i\0062\231\202;\37_\344\242\10.\374\0?J\274\31\334\t\232pO\356#\347\236\344~~\275\177\0008@\335G\21+\263pQ\263\260\352a\335\303\6C1J2e\30X\227\374\t\2173A~\233\241t$\2254\307\224lv\333{\3\6\267\223\334P\255\334\223J\234e\343\241\320W|\30S\246\332K\"\36\17\270\2266\376I\272\346^\246t\\p\251\31\202S\245\204\356\304\1\0\4Code\1\0\1I\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\23[Ljava/lang/Object;\1\0\naccess$100\1\0\naccess$200\1\0\26checkForComodification\1\0\6cursor\1\0\20expectedModCount\1\0\7hasNext\1\0\37java/lang/IllegalStateException\1\0#java/lang/IndexOutOfBoundsException\1\0\20java/lang/Object\1\0\23java/util/ArrayList\1\0\25java/util/ArrayList$1\1\0\27java/util/ArrayList$Itr\1\0)java/util/ConcurrentModificationException\1\0\22java/util/Iterator\1\0 java/util/NoSuchElementException\1\0\7lastRet\1\0\10modCount\1\0\4next\1\0\6remove\1\0\6this$0\7\0\f\7\0\23\7\0\24\7\0\25\7\0\26\7\0\27\7\0\30\7\0\31\7\0\32\7\0\33\1\0\25Ljava/util/ArrayList;\1\0+Ljava/lang/Object;Ljava/util/Iterator;\1\0\24()Ljava/lang/Object;\1\0\25(I)Ljava/lang/Object;\1\0\30(Ljava/util/ArrayList;)I\1\0\30(Ljava/util/ArrayList;)V\1\0*(Ljava/util/ArrayList;)[Ljava/lang/Object;\1\0/(Ljava/util/ArrayList;Ljava/util/ArrayList$1;)V\f\0\20\0\6\f\0\21\0\6\f\0\34\0\6\f\0\35\0\6\f\0 \0+\f\0\4\0\2\f\0\17\0\2\f\0\37\0.\f\0\r\0/\f\0\4\0000\f\0\16\0001\t\0%\0006\t\0'\0003\t\0'\0004\t\0'\0005\t\0'\0007\n\0\"\0008\n\0$\0008\n\0%\0:\n\0%\0;\n\0%\0=\n\0'\0009\n\0'\0<\n\0(\0008\n\0*\0008\1\0\16ArrayList.java\1\0\3Itr\0 \0'\0$\0\1\0)\0\4"..., 1669) = 1669 30059 lseek(5, 99117, SEEK_SET) = 99117 30059 read(5, "PK\3\4\n\0\0\10\10\0\251`\273D\\\255}Y\236\0\0\0\312\0\0\0\35\0\0\0", 30) = 30 30059 lseek(5, 99176, SEEK_SET) = 99176 30059 read(5, "m\214A\n\3020\20E\377h5Z\213v#n]\2706\210G(\n.\304\205^ \306X[b\2M\365p.<\200\207\22\247\10\256\234\317\237\341\303\177\363z?\236\0\226H\4\204@L\210\367\376Vi\263.\254!\f\263J]\17\336\3330/\325]\21F+\247\255\17\205\313\267\246\276\370\223\300\2000q\246\226\341,5\227\345\217\230-\10 $\33\347L\225Y\25\202\t\204\264\371#\255r\271\334\35K\243k\302\370/\236N\31n\341;m\0268E\350\360\215\320\345\335g\307\334\241&\245\275\17", 158) = 158 30059 lseek(5, 100496, SEEK_SET) = 100496 30059 read(5, "PK\3\4\n\0\0\10\10\0\251`\273D\342\t\307\304\t\2\0\0h\4\0\0009\0\0\0", 30) = 30 30059 lseek(5, 100583, SEEK_SET) = 100583 30059 read(5, "\235S\333n\323@\20=\223\213\335\272\246\r!\5\n\24\350\225$\205\32Q\361B\243\212*\22\242R\240\22)y\3378\333\340\310YW\366:\202\217\350\3\177\2/\200x\340\3\370(\3048\16\1\322\250\202\276\314\314\216\317\234\2313\353\375\376\343\3537\0;\330\266``\331\302m\334\261P\304]\vy\254\230X3\261nb\203`\324<\345\351=B\266\\i\21r\365\240#\t\v\rO\311\227q\277-\303#\321\3669Sl\4\256\360[\"\364\222\363(\231\323o\274\210\260\334\22\276\327\21\332\vTS\207\236\352J\345\276\253\7j C-C\202}\240\224\f\353\276\210\"\311\360\307\r%\265\23\35;n(\372N\235\315Q\20\370\321\372\271,\273\4\323M\17&\356\21J\323\320\204\347\345FO\f\204\343\v\325u\322\17\273\225_\375\"\321\327I'\247\271\377\342\231\347\313WRtd8\265/\267\243(Q}\206\215\2609\265\307\357\324a\273']\315\300\314\333\207\204\331\246\327UB\307!\357+8\213j\270A\337i\3138\322N\217\303\276P<\222s\220\322\216\325\327.\"a\217G\260\232A\34\2722\201\22\346\307\273\336N\346\2601\203Y\23e\33\25Tml\241d\3432J&\356\23v.pE\204\302\244<\302\306?\3513\361\200\360\350\3775\376\3252M\23\346t\360\372\344\204\1778\21\261\350R\2712\355\22\315\201\360cyxLX\234*\225\377\352s\307\301\n?$\3L\304\317,\313\236w\311\326\342\223\303\236\330\347\253\237A\0379\310`\216\2551L\236\302fk\247\0\\B\201=%k\37\25\327\330g\330\317l}B\346\v\262\37&\352\337\17\353\257\246\230Q}\22-r\216\n\373\314tm\304\364\2041\t\312\2502Un\222\347\364\17\36c\314c\340z\302\303\202\226\206\370\33\2709\364\267\260\300\276\310Q\36\253\230g\251El\342\312\323\245\237", 521) = 521 30059 lseek(5, 99334, SEEK_SET) = 99334 30059 read(5, "PK\3\4\n\0\0\10\10\0\251`\273D\10]\204K\375\1\0\0\357\3\0\0*\0\0\0", 30) = 30 30059 lseek(5, 99406, SEEK_SET) = 99406 30059 read(5, "\215RMo\323@\20}\223\17;uM\32BZ(_\245\220\226$\205.\22\342B\243\n\24\t\251\222E\17i{\342\262q\266\301\221cGk;\342\7\364\300\317\201\v \16\374\0~\24b\234\244\201\246\221\332\313\274\331\361{og\306\373\373\317\317_\0^b\327\202\201\7\26\36b\303B\31\217,\344\261i\342\211\211\252\211-\202\321\364\2/\336'dk\365\23B\256\25v\25a\305\361\2\365>\31t\224>\222\35\237+e't\245\177\"\265\227\236\247\305\\\374\321\213\10EG\215\224\337\n\203\221\322\261\322\4\373 \10\224n\3712\212\24\177\337v\2\25\213\350T\270Z\16D\213\303Q\30\372Q\365\242l\217`\272\223\203\211\247\204\202\23\366\306\f\302\253\232\323\227#)|\31\364D;\326^\320\333\253\237\233\16=W\352\256Hb\317\27,\251\236\313\330\217\242\264\361KR\356h\241\341\277\322a\247\257\334\230\211\231O/\10Km\257\27\3108\321<\362\207\313,\307\r\7\242\243\222(\26}N\0072\350*-\16&\266\263\361\232W\366\273\317\367Y\3550\321\256z\347\245\353-\316V\265\233^j\243\200%\0235\33u4l\354\240b\343&*&\236\21\252\327\3310\2414\337\320\247\351\356\265N\263;[ggk\372\327|\360\7\370\243\324\2735m\0017q\223\311\336{\3569\347\316\334\334\237\277\276\377\0\360\6\317\35\354;x\352\340\231@Q\313\210\22\201\365j\255\323\350\313\241tC\251{n\313\32\245{\207\2+o\265\216\255\264*\326g\364Y\246\241\25X\n(\361\215\32d\240\300Z\265\226'\204@\311\320\327T\31\n\4\n\325\332U\201\2333Z\271\246~G#\276\2024\312\216\306\34\257\360\233?V\16d\222|\213\r+\313~\254\207d,\31\201\325\33\255NC&q\247W\r?\216\334.\245\211u\373\34FR\7d\334\251.q/\342\323I\302\374rK\365\264\264\251!\201\223\177\35\217^\346\373y\177\2376u:zq|x\314v\v_T\20\20\17b\261\25\247\306\247s\25\262q\345R\32\236,\363^g\376\2\233\315T[\25\321'\225\250nH\263\261\362\360\367\256\335AN\vn\223\345:\213\270Kq(\303\224}\17\376C\275\214C\345\217X\3404?^\264\275\367u\201\355|I[\232\36Yf\356\347\327\353!E\354\331\36\r(\353\177\356\325\33g\2;\271\263\231>V`yf\366\241\333'\237\367e7\327\1776\201\3\301k1\307'\333\220\322\274\300<\212\234-pV\350\0\f8(M\200\4e\6\26\2614\1\256p\207\201\273\267\31\25\334\233\0\36\226\31X\271-\271\217U\356:\6|\254a\235\2039<\340\302\303\33L\0067\306\245M<\342\377\26G[\\~L\330\306\16v\263\260\3A\330\303\223?", 460) = 460 30059 lseek(4, 60450954, SEEK_SET) = 60450954 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305Bf|\374\273c\1\0\0c\1\0\0%\0\0\0", 30) = 30 30059 lseek(4, 60451021, SEEK_SET) = 60451021 30059 read(4, "\312\376\272\276\0\0\0003\0\21\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\25(Ljava/lang/Object;)Z\1\0\tSignature\1\0\nSourceFile\1\0\16annotationType\1\0\6equals\1\0\10hashCode\1\0\20java/lang/Object\1\0\37java/lang/annotation/Annotation\1\0\10toString\7\0\t\7\0\n\1\0\23()Ljava/lang/Class;\1\0007()Ljava/lang/Class<+Ljava/lang/annotation/Annotation;>;\1\0\17Annotation.java\6\1\0\r\0\f\0\0\0\0\0\4\4\1\0\7\0\3\0\0\4\1\0\10\0\1\0\0\4\1\0\v\0\2\0\0\4\1\0\6\0\16\0\1\0\4\0\0\0\2\0\17\0\1\0\5\0\0\0\2\0\20", 355) = 355 30059 lseek(4, 46945781, SEEK_SET) = 46945781 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\324\16\313\211H<\0\0H<\0\0-\0\0\0", 30) = 30 30059 lseek(4, 46945856, SEEK_SET) = 46945856 30059 read(4, "\312\376\272\276\0\0\0003\2\20\3\0\0\377\377\10\0!\10\0\"\10\0#\10\0&\10\0(\10\0+\10\0003\10\0004\10\0005\10\0007\10\0D\10\0E\1\0\23$assertionsDisabled\1\0\3()B\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()S\1\0\3()V\1\0\3()Z\1\0\25(D)Ljava/lang/Double;\1\0\4(I)D\1\0\4(I)F\1\0\4(I)I\1\0\4(I)J\1\0\26(I)Ljava/lang/Integer;\1\0\25(I)Ljava/lang/String;\1\0\4(I)V\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)V\1\0\25(Ljava/lang/String;)Z\1\0\30(Ljava/lang/Throwable;)V\1\0\1.\1\0\2: \1\0\1;\1\0\10\1\0\6\1\0\32Array with component tag: \1\0\4Code\1\0 Duplicate annotation for class: \1\0\27EMPTY_ANNOTATIONS_ARRAY\1\0\26EMPTY_ANNOTATION_ARRAY\1\0(Invalid member-value tag in annotation: \1\0\17LineNumberTable\1\0\21Ljava/lang/Class;\1\0\7RUNTIME\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\4TYPE\1\0\36Unexpected end of annotations.\1\0(Unexpected end of parameter annotations.\1\0\1V\1\0\1Z\1\0\1[\1\0\2[B\1\0\2[C\1\0\2[D\1\0\2[F\1\0\2[I\1\0\2[J\1\0\23[Ljava/lang/Object;\1\0\23[Ljava/lang/String;\1\0\"[Ljava/lang/annotation/Annotation;\1\0\2[S\1\0\2[Z\1\0#[[Ljava/lang/annotation/Annotation;\1\0\t[unknown]\1\0\1]\1\0\6accept\1\0\3add\1\0\20annotationForMap\1\0\16annotationType\1\0\6append\1\0\26desiredAssertionStatus\1\0\10emptyMap\1\0\10endsWith\1\0\6"..., 15432) = 15432 30059 lseek(4, 46976219, SEEK_SET) = 46976219 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B\353\2008\230\265.\0\0\265.\0\0001\0\0\0", 30) = 30 30059 lseek(4, 46976298, SEEK_SET) = 46976298 30059 read(4, "\312\376\272\276\0\0\0003\1u\10\0\26\10\0\27\10\0$\10\0%\10\0(\10\0)\10\0/\10\0000\10\0C\10\0D\10\0E\10\0F\10\0G\10\0H\10\0I\10\0J\10\0K\10\0L\10\0M\10\0S\1\0\23$assertionsDisabled\1\0\1'\1\0\2'.\1\0\3()C\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4()[C\1\0\4(C)Z\1\0\6(C[C)Z\1\0\4(I)V\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)V\1\0\7([CII)V\1\0\1.\1\0.; expected in signature of type variable named\1\0\10\1\0\6\1\0!Array signature not allowed here.\1\0\16Bound expected\1\0\1C\1\0\4Code\1\0\rConstantValue\1\0\5DEBUG\1\0\3EOI\1\0\35Expected Field Type Signature\1\0\31Failure to make progress!\1\0\1I\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\1Z\1\0\2[C\1\0/[Lsun/reflect/generics/tree/ClassTypeSignature;\1\0/[Lsun/reflect/generics/tree/FieldTypeSignature;\1\0000[Lsun/reflect/generics/tree/FormalTypeParameter;\1\0)[Lsun/reflect/generics/tree/TypeArgument;\1\0*[Lsun/reflect/generics/tree/TypeSignature;\1\0\3add\1\0\7advance\1\0\6append\1\0\7current\1\0\26desiredAssertionStatus\1\0\5error\1\0\fexpected '('\1\0\fexpected ')'\1\0\22expected ';' got '\1\0\fexpected '<'\1\0\34expected '<' or ';' but got \1\0!expected '<' or ';' or '.', got '\1\0\25expected a class type"..., 11957) = 11957 30059 mprotect(0x7fb3144d9000, 8192, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb3144db000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 47035851, SEEK_SET) = 47035851 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\216-\36\376\255\0\0\0\255\0\0\0,\0\0\0", 30) = 30 30059 lseek(4, 47035925, SEEK_SET) = 47035925 30059 read(4, "\312\376\272\276\0\0\0003\0\t\1\0\nSourceFile\1\0\20java/lang/Object\1\0&sun/reflect/generics/tree/TypeArgument\1\0\"sun/reflect/generics/tree/TypeTree\7\0\2\7\0\3\7\0\4\1\0\21TypeArgument.java\6\1\0\6\0\5\0\1\0\7\0\0\0\0\0\1\0\1\0\0\0\2\0\10", 173) = 173 30059 lseek(4, 47036350, SEEK_SET) = 47036350 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\235\vZ\3731\1\0\0001\1\0\0(\0\0\0", 30) = 30 30059 lseek(4, 47036420, SEEK_SET) = 47036420 30059 read(4, "\312\376\272\276\0\0\0003\0\r\1\0\tSignature\1\0\nSourceFile\1\0\6accept\1\0\20java/lang/Object\1\0\36sun/reflect/generics/tree/Tree\1\0\"sun/reflect/generics/tree/TypeTree\7\0\4\7\0\5\7\0\6\1\0001(Lsun/reflect/generics/visitor/TypeTreeVisitor;)V\1\0004(Lsun/reflect/generics/visitor/TypeTreeVisitor<*>;)V\1\0\rTypeTree.java\6\1\0\t\0\7\0\1\0\10\0\0\0\1\4\1\0\3\0\n\0\1\0\1\0\0\0\2\0\v\0\1\0\2\0\0\0\2\0\f", 305) = 305 30059 lseek(4, 47035670, SEEK_SET) = 47035670 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\10#\27\300s\0\0\0s\0\0\0$\0\0\0", 30) = 30 30059 lseek(4, 47035736, SEEK_SET) = 47035736 30059 read(4, "\312\376\272\276\0\0\0003\0\7\1\0\nSourceFile\1\0\20java/lang/Object\1\0\36sun/reflect/generics/tree/Tree\7\0\2\7\0\3\1\0\tTree.java\6\1\0\5\0\4\0\0\0\0\0\0\0\1\0\1\0\0\0\2\0\6", 115) = 115 30059 lseek(4, 47034273, SEEK_SET) = 47034273 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\276\356\210\266\37\5\0\0\37\5\0\0008\0\0\0", 30) = 30 30059 lseek(4, 47034359, SEEK_SET) = 47034359 30059 read(4, "\312\376\272\276\0\0\0003\0000\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\6\1\0\4Code\1\0\17LineNumberTable\1\0\22Ljava/lang/String;\1\0\tSignature\1\0\nSourceFile\1\0\1Z\1\0)[Lsun/reflect/generics/tree/TypeArgument;\1\0\6accept\1\0\6dollar\1\0\tgetDollar\1\0\7getName\1\0\20getTypeArguments\1\0\20java/lang/Object\1\0\4make\1\0\4name\1\0,sun/reflect/generics/tree/FieldTypeSignature\1\0002sun/reflect/generics/tree/SimpleClassTypeSignature\1\0,sun/reflect/generics/visitor/TypeTreeVisitor\1\0\10typeArgs\1\0\35visitSimpleClassTypeSignature\7\0\21\7\0\24\7\0\25\7\0\26\1\0007(Lsun/reflect/generics/tree/SimpleClassTypeSignature;)V\1\0+()[Lsun/reflect/generics/tree/TypeArgument;\1\0001(Lsun/reflect/generics/visitor/TypeTreeVisitor;)V\1\0004(Lsun/reflect/generics/visitor/TypeTreeVisitor<*>;)V\1\0?(Ljava/lang/String;Z[Lsun/reflect/generics/tree/TypeArgument;)V\1\0r(Ljava/lang/String;Z[Lsun/reflect/generics/tree/TypeArgument;)Lsun/reflect/generics/tree/SimpleClassTypeSignature;\f\0\r\0\n\f\0\23\0\7\f\0\27\0\v\f\0\4\0\2\f\0\30\0\35\f\0\4\0!\t\0\33\0#\t\0\33\0$\t\0\33\0%\n\0\31\0&\n\0\33\0(\v\0\34\0'\1\0\35SimpleClassTypeSignature.java\0!\0\33\0\31\0\1\0\32\0\3\0\2\0\r\0\n\0\0\0\2\0\23\0\7\0\0\0\2\0\27\0\v\0\0\0\6\0\2\0\4\0!\0\1\0"..., 1311) = 1311 30059 mprotect(0x7fb3144dc000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 47026647, SEEK_SET) = 47026647 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B[\213\210H\26\1\0\0\26\1\0\0002\0\0\0", 30) = 30 30059 lseek(4, 47026727, SEEK_SET) = 47026727 30059 read(4, "\312\376\272\276\0\0\0003\0\r\1\0\nSourceFile\1\0\20java/lang/Object\1\0\"sun/reflect/generics/tree/BaseType\1\0,sun/reflect/generics/tree/FieldTypeSignature\1\0&sun/reflect/generics/tree/TypeArgument\1\0'sun/reflect/generics/tree/TypeSignature\7\0\2\7\0\3\7\0\4\7\0\5\7\0\6\1\0\27FieldTypeSignature.java\6\1\0\t\0\7\0\3\0\10\0\v\0\n\0\0\0\0\0\1\0\1\0\0\0\2\0\f", 278) = 278 30059 lseek(4, 47018950, SEEK_SET) = 47018950 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\365\306\330}\252\0\0\0\252\0\0\0(\0\0\0", 30) = 30 30059 lseek(4, 47019020, SEEK_SET) = 47019020 30059 read(4, "\312\376\272\276\0\0\0003\0\t\1\0\nSourceFile\1\0\20java/lang/Object\1\0\"sun/reflect/generics/tree/BaseType\1\0'sun/reflect/generics/tree/TypeSignature\7\0\2\7\0\3\7\0\4\1\0\rBaseType.java\6\1\0\6\0\5\0\1\0\7\0\0\0\0\0\1\0\1\0\0\0\2\0\10", 170) = 170 30059 lseek(4, 47036098, SEEK_SET) = 47036098 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\220oN\7\261\0\0\0\261\0\0\0-\0\0\0", 30) = 30 30059 lseek(4, 47036173, SEEK_SET) = 47036173 30059 read(4, "\312\376\272\276\0\0\0003\0\t\1\0\nSourceFile\1\0\20java/lang/Object\1\0$sun/reflect/generics/tree/ReturnType\1\0'sun/reflect/generics/tree/TypeSignature\7\0\2\7\0\3\7\0\4\1\0\22TypeSignature.java\6\1\0\7\0\5\0\1\0\6\0\0\0\0\0\1\0\1\0\0\0\2\0\10", 177) = 177 30059 lseek(4, 47032813, SEEK_SET) = 47032813 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305BN\354\314\355\251\0\0\0\251\0\0\0*\0\0\0", 30) = 30 30059 lseek(4, 47032885, SEEK_SET) = 47032885 30059 read(4, "\312\376\272\276\0\0\0003\0\t\1\0\nSourceFile\1\0\20java/lang/Object\1\0$sun/reflect/generics/tree/ReturnType\1\0\"sun/reflect/generics/tree/TypeTree\7\0\2\7\0\3\7\0\4\1\0\17ReturnType.java\6\1\0\6\0\5\0\1\0\7\0\0\0\0\0\1\0\1\0\0\0\2\0\10", 169) = 169 30059 lseek(4, 47024397, SEEK_SET) = 47024397 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\v\271\2461\365\4\0\0\365\4\0\0002\0\0\0", 30) = 30 30059 lseek(4, 47024477, SEEK_SET) = 47024477 30059 read(4, "\312\376\272\276\0\0\0003\0(\1\0\3()V\1\0\6\1\0\4Code\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\6accept\1\0\7getPath\1\0\20java/lang/Object\1\0\4make\1\0\4path\1\0,sun/reflect/generics/tree/ClassTypeSignature\1\0,sun/reflect/generics/tree/FieldTypeSignature\1\0,sun/reflect/generics/visitor/TypeTreeVisitor\1\0\27visitClassTypeSignature\7\0\t\7\0\f\7\0\r\7\0\16\1\0\20Ljava/util/List;\1\0FLjava/util/List;\1\0\22()Ljava/util/List;\1\0\23(Ljava/util/List;)V\1\0001(Lsun/reflect/generics/tree/ClassTypeSignature;)V\1\0001(Lsun/reflect/generics/visitor/TypeTreeVisitor;)V\1\0004(Lsun/reflect/generics/visitor/TypeTreeVisitor<*>;)V\1\0@(Ljava/util/List;)Lsun/reflect/generics/tree/ClassTypeSignature;\1\0H()Ljava/util/List;\1\0I(Ljava/util/List;)V\1\0v(Ljava/util/List;)Lsun/reflect/generics/tree/ClassTypeSignature;\f\0\v\0\24\f\0\2\0\1\f\0\2\0\27\f\0\17\0\30\t\0\21\0\37\n\0\20\0 \n\0\21\0!\v\0\23\0\"\1\0\27ClassTypeSignature"..., 1269) = 1269 30059 lseek(4, 47012805, SEEK_SET) = 47012805 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\302(4\212v\6\0\0v\6\0\0+\0\0\0", 30) = 30 30059 lseek(4, 47012878, SEEK_SET) = 47012878 30059 read(4, "\312\376\272\276\0\0\0003\0B\1\0\6\1\0\4Code\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\25computeEnclosingScope\1\0\21getEnclosingClass\1\0\27getEnclosingConstructor\1\0\22getEnclosingMethod\1\0\10getRecvr\1\0\17java/lang/Class\1\0\35java/lang/reflect/Constructor\1\0\30java/lang/reflect/Method\1\0\4make\1\0(sun/reflect/generics/scope/AbstractScope\1\0%sun/reflect/generics/scope/ClassScope\1\0+sun/reflect/generics/scope/ConstructorScope\1\0%sun/reflect/generics/scope/DummyScope\1\0&sun/reflect/generics/scope/MethodScope\1\0 sun/reflect/generics/scope/Scope\7\0\f\7\0\r\7\0\16\7\0\20\7\0\21\7\0\22\7\0\23\7\0\24\7\0\25\1\0bLsun/reflect/generics/scope/AbstractScope;>;Lsun/reflect/generics/scope/Scope;\1\0\23()Ljava/lang/Class;\1\0\24(Ljava/lang/Class;)V\1\0\27(Ljava/lang/Class<*>;)V\1\0!()Ljava/lang/reflect/Constructor;\1\0(()Ljava/lang/reflect/GenericDeclaration;\1\0)(Ljava/lang/reflect/GenericDeclaration;)V\1\0\34()Ljava/lang/reflect/Method;\1\0)()Lsun/reflect/generics/scope/DummyScope;\1\0$()Lsun/reflect/generics/scope/Scope;\1\0:(Ljava/lang/Class;)Lsun/reflect/generics/scop"..., 1654) = 1654 30059 lseek(4, 47017528, SEEK_SET) = 47017528 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\3521\364<\f\1\0\0\f\1\0\0&\0\0\0", 30) = 30 30059 lseek(4, 47017596, SEEK_SET) = 47017596 30059 read(4, "\312\376\272\276\0\0\0003\0\v\1\0\tSignature\1\0\nSourceFile\1\0\20java/lang/Object\1\0\6lookup\1\0 sun/reflect/generics/scope/Scope\7\0\3\7\0\5\1\0004(Ljava/lang/String;)Ljava/lang/reflect/TypeVariable;\1\0007(Ljava/lang/String;)Ljava/lang/reflect/TypeVariable<*>;\1\0\nScope.java\6\1\0\7\0\6\0\0\0\0\0\1\4\1\0\4\0\10\0\1\0\1\0\0\0\2\0\t\0\1\0\2\0\0\0\2\0\n", 268) = 268 30059 lseek(4, 47011218, SEEK_SET) = 47011218 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\373s\253\366\347\5\0\0\347\5\0\0.\0\0\0", 30) = 30 30059 lseek(4, 47011294, SEEK_SET) = 47011294 30059 read(4, "\312\376\272\276\0\0\0003\0B\1\0\24()Ljava/lang/String;\1\0\5()TD;\1\0\3()V\1\0\25(Ljava/lang/Object;)Z\1\0\6(TD;)V\1\0\6\1\0\4Code\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\3TD;\1\0![Ljava/lang/reflect/TypeVariable;\1\0\25computeEnclosingScope\1\0\16enclosingScope\1\0\6equals\1\0\21getEnclosingScope\1\0\7getName\1\0\10getRecvr\1\0\21getTypeParameters\1\0\20java/lang/Object\1\0\20java/lang/String\1\0$java/lang/reflect/GenericDeclaration\1\0\36java/lang/reflect/TypeVariable\1\0\6lookup\1\0\5recvr\1\0(sun/reflect/generics/scope/AbstractScope\1\0 sun/reflect/generics/scope/Scope\7\0\r\7\0\25\7\0\26\7\0\27\7\0\30\7\0\33\7\0\34\1\0&Ljava/lang/reflect/GenericDeclaration;\1\0\"Lsun/reflect/generics/scope/Scope;\1\0_Ljava/lang/Object;Lsun/reflect/generics/scope/Scope;\1\0(()Ljava/lang/reflect/GenericDeclaration;\1\0)(Ljava/lang/reflect/GenericDeclaration;)V\1\0#()[Ljava/lang/reflect/TypeVariable;\1\0$()Lsun/reflect/generics/scope/Scope;\1\0004(Ljava/lang/String;)Ljava/lang/reflect/TypeVariable;\1\0007(Ljava/lang/String;)Ljava/lang/reflect/TypeVariable<*>;\f\0\32\0$\f\0\17\0%\f\0\6"..., 1511) = 1511 30059 lseek(4, 46970028, SEEK_SET) = 46970028 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305BB\274\3278\337\22\0\0\337\22\0\0008\0\0\0", 30) = 30 30059 lseek(4, 46970114, SEEK_SET) = 46970114 30059 read(4, "\312\376\272\276\0\0\0003\0\253\10\0\t\1\0\23$assertionsDisabled\1\0\3()V\1\0\3()Z\1\0\25(Ljava/lang/Object;)V\1\0\10\1\0\6\1\0\4Code\1\0\24Constructor expected\1\0\17LineNumberTable\1\0\21Ljava/lang/Class;\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\4TYPE\1\0\1Z\1\0\4decl\1\0\26desiredAssertionStatus\1\0\20findTypeVariable\1\0\7forName\1\0\10getClass\1\0\16getClassLoader\1\0\7getDecl\1\0\21getDeclaringClass\1\0\16getDeclsLoader\1\0\10getScope\1\0\30java/lang/AssertionError\1\0\21java/lang/Boolean\1\0\16java/lang/Byte\1\0\23java/lang/Character\1\0\17java/lang/Class\1\0 java/lang/ClassNotFoundException\1\0\20java/lang/Double\1\0\17java/lang/Float\1\0\21java/lang/Integer\1\0\16java/lang/Long\1\0\20java/lang/Object\1\0\17java/lang/Short\1\0!java/lang/TypeNotPresentException\1\0\16java/lang/Void\1\0\27java/lang/reflect/Array\1\0\35java/lang/reflect/Constructor\1\0\30java/lang/reflect/Method\1\0\6lookup\1\0\4make\1\0\rmakeArrayType\1\0\10makeBool\1\0\10makeByte\1\0\10makeChar\1\0\nmakeDouble\1\0\tmakeFloat\1\0\7makeInt\1\0\10makeLong\1\0\rmakeNamedType\1\0\25makeParameterizedType\1\0\tmakeShort\1\0\20makeTypeVariable\1\0\10makeVoid\1\0\fmakeWildcard\1\0\vnewInstance\1\0\5scope\1\0002sun/reflect/generics/"..., 4831) = 4831 30059 mprotect(0x7fb3144dd000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 46974945, SEEK_SET) = 46974945 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305Bx\343^\237\252\4\0\0\252\4\0\0002\0\0\0", 30) = 30 30059 lseek(4, 46975025, SEEK_SET) = 46975025 30059 read(4, "\312\376\272\276\0\0\0003\0 \1\0\tSignature\1\0\nSourceFile\1\0\20findTypeVariable\1\0\20java/lang/Object\1\0\rmakeArrayType\1\0\10makeBool\1\0\10makeByte\1\0\10makeChar\1\0\nmakeDouble\1\0\tmakeFloat\1\0\7makeInt\1\0\10makeLong\1\0\rmakeNamedType\1\0\25makeParameterizedType\1\0\tmakeShort\1\0\20makeTypeVariable\1\0\10makeVoid\1\0\fmakeWildcard\1\0,sun/reflect/generics/factory/GenericsFactory\7\0\4\7\0\23\1\0\32()Ljava/lang/reflect/Type;\1\0,(Ljava/lang/String;)Ljava/lang/reflect/Type;\1\0002(Ljava/lang/reflect/Type;)Ljava/lang/reflect/Type;\1\0004(Ljava/lang/String;)Ljava/lang/reflect/TypeVariable;\1\0007(Ljava/lang/String;)Ljava/lang/reflect/TypeVariable<*>;\1\0c(Ljava/lang/String;[Lsun/reflect/generics/tree/FieldTypeSignature;)Ljava/lang/reflect/TypeVariable;\1\0f(Ljava/lang/String;[Lsun/reflect/generics/tree/FieldTypeSignature;)Ljava/lang/reflect/TypeVariable<*>;\1\0\200([Lsun/reflect/generics/tree/FieldTypeSignature;[Lsun/reflect/generics/tree/FieldTypeSignature;)Ljava/lang/reflect/WildcardType;\1\0p(Ljava/lang/reflect/Type;[Ljava/lang/reflect/Type;Ljava/lang/reflect/Type;)Ljava/lang/reflect/Param"..., 1194) = 1194 30059 lseek(4, 47040169, SEEK_SET) = 47040169 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305Be\210|\334\364\30\0\0\364\30\0\0*\0\0\0", 30) = 30 30059 lseek(4, 47040241, SEEK_SET) = 47040241 30059 read(4, "\312\376\272\276\0\0\0003\0\354\10\0\3\10\0\t\1\0\1$\1\0\23$assertionsDisabled\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\25(Ljava/lang/String;)V\1\0\1.\1\0\10\1\0\6\1\0\4Code\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\1Z\1\0\31[Ljava/lang/reflect/Type;\1\0\6accept\1\0\6append\1\0\26desiredAssertionStatus\1\0\7factory\1\0\20findTypeVariable\1\0\tgetBounds\1\0\20getComponentType\1\0\tgetDollar\1\0\ngetFactory\1\0\rgetIdentifier\1\0\16getLowerBounds\1\0\7getName\1\0\7getPath\1\0\tgetResult\1\0\20getTypeArguments\1\0\16getUpperBounds\1\0\7hasNext\1\0\7isEmpty\1\0\10iterator\1\0\30java/lang/AssertionError\1\0\17java/lang/Class\1\0\20java/lang/Object\1\0\20java/lang/String\1\0\27java/lang/StringBuilder\1\0\26java/lang/reflect/Type\1\0\22java/util/Iterator\1\0\16java/util/List\1\0\4make\1\0\rmakeArrayType\1\0\10makeBool\1\0\10makeByte\1\0\10makeChar\1\0\nmakeDouble\1\0\tmakeFloat\1\0\7makeInt\1\0\10makeLong\1\0\rmakeNamedType\1\0\25makeParameterizedType\1\0\tmakeShort\1\0\20makeTypeVariable\1\0\10makeVoid\1\0\fmakeWildcard\1\0\4next\1\0\22reifyTypeArguments\1\0\nresultType\1\0,sun/reflect/generics/factory/GenericsFactory\1\0,sun/reflect/generics/tree/ArrayTypeSignature\1\0,sun/refl"..., 6388) = 6388 30059 lseek(4, 47046629, SEEK_SET) = 47046629 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305BW\223\2\356\24\6\0\0\24\6\0\0002\0\0\0", 30) = 30 30059 lseek(4, 47046709, SEEK_SET) = 47046709 30059 read(4, "\312\376\272\276\0\0\0003\0,\1\0\5()TT;\1\0\tSignature\1\0\nSourceFile\1\0\tgetResult\1\0\20java/lang/Object\1\0,sun/reflect/generics/visitor/TypeTreeVisitor\1\0\27visitArrayTypeSignature\1\0\25visitBooleanSignature\1\0\24visitBottomSignature\1\0\22visitByteSignature\1\0\22visitCharSignature\1\0\27visitClassTypeSignature\1\0\24visitDoubleSignature\1\0\23visitFloatSignature\1\0\30visitFormalTypeParameter\1\0\21visitIntSignature\1\0\22visitLongSignature\1\0\23visitShortSignature\1\0\35visitSimpleClassTypeSignature\1\0\32visitTypeVariableSignature\1\0\23visitVoidDescriptor\1\0\rvisitWildcard\7\0\5\7\0\6\1\0(Ljava/lang/Object;\1\0\24()Ljava/lang/Object;\1\0001(Lsun/reflect/generics/tree/ArrayTypeSignature;)V\1\0/(Lsun/reflect/generics/tree/BooleanSignature;)V\1\0.(Lsun/reflect/generics/tree/BottomSignature;)V\1\0,(Lsun/reflect/generics/tree/ByteSignature;)V\1\0,(Lsun/reflect/generics/tree/CharSignature;)V\1\0001(Lsun/reflect/generics/tree/ClassTypeSignature;)V\1\0.(Lsun/reflect/generics/tree/DoubleSignature;)V\1\0-(Lsun/reflect/generics/tree/FloatSignature;)V\1\0002(Lsun/reflect/generics/tree/FormalT"..., 1556) = 1556 30059 lseek(4, 28437072, SEEK_SET) = 28437072 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B5\267\270\354\340\0\0\0\340\0\0\0(\0\0\0", 30) = 30 30059 lseek(4, 28437142, SEEK_SET) = 28437142 30059 read(4, "\312\376\272\276\0\0\0003\0\v\1\0\nSourceFile\1\0\27getGenericComponentType\1\0\20java/lang/Object\1\0\"java/lang/reflect/GenericArrayType\1\0\26java/lang/reflect/Type\7\0\3\7\0\4\7\0\5\1\0\32()Ljava/lang/reflect/Type;\1\0\25GenericArrayType.java\6\1\0\7\0\6\0\1\0\10\0\0\0\1\4\1\0\2\0\t\0\0\0\1\0\1\0\0\0\2\0\n", 224) = 224 30059 lseek(4, 46962273, SEEK_SET) = 46962273 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B \213\333wA\22\0\0A\22\0\0+\0\0\0", 30) = 30 30059 lseek(4, 46962346, SEEK_SET) = 46962346 30059 read(4, "\312\376\272\276\0\0\0003\0\324\10\0\t\10\0\n\10\0\v\10\0\f\10\0\r\10\0\16\10\0\25\10\0\33\1\0\1\n\1\0\16 Inherited: \1\0\24 Member defaults: \1\0\21 Member types: \1\0\25 Retention policy: \1\0\v has params\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0,(Ljava/lang/String;)Ljava/lang/StringBuffer;\1\0\25(Ljava/lang/String;)V\1\0\6\1\0\21Annotation Type:\n\1\0\5CLASS\1\0\4Code\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\21Ljava/lang/Class;\1\0\26Not an annotation type\1\0\7RUNTIME\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\4TYPE\1\0\1Z\1\0\33[Ljava/lang/reflect/Method;\1\0\6append\1\0\fdoPrivileged\1\0\rgetAnnotation\1\0\21getAnnotationType\1\0\17getDefaultValue\1\0\vgetInstance\1\0\21getJavaLangAccess\1\0\7getName\1\0\21getParameterTypes\1\0\rgetReturnType\1\0\tinherited\1\0\33invocationHandlerReturnType\1\0\fisAnnotation\1\0\23isAnnotationPresent\1\0\visInherited\1\0\21java/lang/Boolean\1\0\16java/lang/Byte\1\0\23java/lang/Character\1\0\17java/lang/Class\1\0\20java/lang/Double\1\0\17java/lang/Float\1\0\"java/lang/IllegalArgumentException\1\0\21java/lang/Integer\1\0\16java/lang/Long\1\0\20java/lang/Object\1\0\17java/lang/Short\1\0\20java/lang/String\1\0\26java/lang/StringBuffer\1\0\27java/lang/StringBuild"..., 4673) = 4673 30059 mprotect(0x7fb3144de000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 27828242, SEEK_SET) = 27828242 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305BL\177\360\242\350\3\0\0\350\3\0\0*\0\0\0", 30) = 30 30059 lseek(4, 27828314, SEEK_SET) = 27828314 30059 read(4, "\312\376\272\276\0\0\0003\0/\10\0\10\10\0\v\10\0\f\1\0\7$VALUES\1\0\3()V\1\0\10\1\0\6\1\0\5CLASS\1\0\4Code\1\0\17LineNumberTable\1\0\7RUNTIME\1\0\6SOURCE\1\0\tSignature\1\0\nSourceFile\1\0'[Ljava/lang/annotation/RetentionPolicy;\1\0\5clone\1\0\16java/lang/Enum\1\0$java/lang/annotation/RetentionPolicy\1\0\7valueOf\1\0\6values\7\0\17\7\0\21\7\0\22\1\0&Ljava/lang/annotation/RetentionPolicy;\1\0008Ljava/lang/Enum;\1\0\24()Ljava/lang/Object;\1\0\26(Ljava/lang/String;I)V\1\0)()[Ljava/lang/annotation/RetentionPolicy;\1\0:(Ljava/lang/String;)Ljava/lang/annotation/RetentionPolicy;\1\0005(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Enum;\f\0\10\0\30\f\0\v\0\30\f\0\f\0\30\f\0\4\0\17\f\0\20\0\32\f\0\7\0\33\f\0\23\0\36\t\0\27\0\37\t\0\27\0 \t\0\27\0!\t\0\27\0\"\n\0\25\0#\n\0\26\0$\n\0\26\0%\n\0\27\0$\1\0\24RetentionPolicy.java@1\0\27\0\26\0\0\0\4@\31\0\f\0\30\0\0@\31\0\10\0\30\0\0@\31\0\v\0\30\0\0\20\32\0\4\0\17\0\0\0\4\0\t\0\24\0\34\0\1\0\t\0\0\0\"\0\1\0\0\0\0\0\n\262\0)\266\0*\300\0\25\260\0\0\0\1\0\n\0\0\0\6\0\1\0\0\0%\0\t\0\23\0\35\0\1\0\t\0\0\0#\0\2\0\1\0\0\0\v\23\0\27*\270\0,\300\0\27\260\0\0\0\1\0\n\0\0\0\6\0\1\0\0\0%\0\2\0\7\0\33\0\2\0\t\0\0\0\37\0\3\0\3\0\0\0\7*+\34\267\0+\261\0\0\0\1\0\n\0\0\0\6\0\1\0\0\0%\0\r\0\0\0\2\0\5\0\10\0\6\0\5\0\1\0\t\0\0\0e\0\4\0\0\0\0\0A\273\0\27Y\22\3\3\267\0-\263\0(\273\0\27Y\22\1\4\267\0-\263\0&\273\0\27Y\22\2\5\267\0-\263\0'\6\275\0\27Y\3\262\0(SY\4\262\0&SY\5\262\0'S\263\0)\261\0\0\0\1\0\n\0\0\0\22\0\4\0\0\0)\0\r\0000\0\32\0008\0'\0%\0\2\0\16\0\0\0\2\0.\0\r\0\0\0\2\0\31", 1000) = 1000 30059 lseek(4, 46961288, SEEK_SET) = 46961288 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\247d\300m\216\3\0\0\216\3\0\0-\0\0\0", 30) = 30 30059 lseek(4, 46961363, SEEK_SET) = 46961363 30059 read(4, "\312\376\272\276\0\0\0003\0*\1\0\3()V\1\0\6\1\0\4Code\1\0\17EnclosingMethod\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\21Ljava/lang/Class;\1\0\tSignature\1\0\nSourceFile\1\0\22getDeclaredMethods\1\0\17java/lang/Class\1\0\20java/lang/Object\1\0\36java/security/PrivilegedAction\1\0\3run\1\0%sun/reflect/annotation/AnnotationType\1\0'sun/reflect/annotation/AnnotationType$1\1\0\6this$0\1\0\23val$annotationClass\7\0\v\7\0\f\7\0\r\7\0\17\7\0\20\1\0'Lsun/reflect/annotation/AnnotationType;\1\0OLjava/lang/Object;Ljava/security/PrivilegedAction<[Ljava/lang/reflect/Method;>;\1\0\24(Ljava/lang/Class;)V\1\0\24()Ljava/lang/Object;\1\0\35()[Ljava/lang/reflect/Method;\1\0;(Lsun/reflect/annotation/AnnotationType;Ljava/lang/Class;)V\f\0\22\0\7\f\0\21\0\30\f\0\2\0\1\f\0\2\0\32\f\0\n\0\34\f\0\16\0\34\t\0\27\0\36\t\0\27\0\37\n\0\23\0\"\n\0\24\0 \n\0\27\0#\1\0\23AnnotationType.java\0 \0\27\0\24\0\1\0\25\0\2\20\20\0\22\0\7\0\0\20\20\0\21\0\30\0\0\0\3\0\0\0\2\0\35\0\1\0\3\0\0\0'\0\2\0\3\0\0\0\17*+\265\0%*,\265\0$*\267\0'\261\0\0\0\1\0\6\0\0\0\6\0\1\0\0\0e\0\1\0\16\0\34\0\1\0\3\0\0\0 \0\1\0\1\0\0\0\10*\264\0$\266\0&\260\0\0\0\1\0\6\0\0\0\6\0\1\0\0\0h\20A\0\16\0\33\0\1\0\3\0\0\0\35\0\1\0\1\0\0\0\5*\266\0(\260\0\0\0\1\0\6\0\0\0\6\0\1\0\0\0e\0\4\0\t\0\0\0\2\0)\0\4\0\0\0\4\0\26\0!\0\10\0\0\0\2\0\31\0\5\0\0\0\n\0\1\0\27\0\0\0\0\0\0", 910) = 910 30059 mprotect(0x7fb3144df000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb3144e0000, 8192, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 46968893, SEEK_SET) = 46968893 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\v\340io:\1\0\0:\1\0\0+\0\0\0", 30) = 30 30059 lseek(4, 46968966, SEEK_SET) = 46968966 30059 read(4, "\312\376\272\276\0\0\0003\0\21\1\0\3()V\1\0\6\1\0\4Code\1\0\17LineNumberTable\1\0\nSourceFile\1\0\21generateException\1\0\24java/io/Serializable\1\0\20java/lang/Object\1\0%sun/reflect/annotation/ExceptionProxy\7\0\7\7\0\10\7\0\t\1\0\36()Ljava/lang/RuntimeException;\f\0\2\0\1\n\0\v\0\16\1\0\23ExceptionProxy.java\4!\0\f\0\v\0\1\0\n\0\0\0\2\0\1\0\2\0\1\0\1\0\3\0\0\0\35\0\1\0\1\0\0\0\5*\267\0\17\261\0\0\0\1\0\4\0\0\0\6\0\1\0\0\0'\4\4\0\6\0\r\0\0\0\1\0\5\0\0\0\2\0\20", 314) = 314 30059 lseek(4, 59025988, SEEK_SET) = 59025988 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B^_s\240\210\3\0\0\210\3\0\0$\0\0\0", 30) = 30 30059 lseek(4, 59026054, SEEK_SET) = 59026054 30059 read(4, "\312\376\272\276\0\0\0003\0009\3\177\377\377\177\10\0\25\1\0\3()V\1\0\4(I)V\1\0\5(II)I\1\0\25(Ljava/lang/String;)I\1\0&(Ljava/lang/String;)Ljava/lang/String;\1\0\10\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\1I\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\nSourceFile\1\0\rStackMapTable\1\0\24[Ljava/lang/Integer;\1\0\5cache\1\0\20getSavedProperty\1\0\4high\1\0#java.lang.Integer.IntegerCache.high\1\0\21java/lang/Integer\1\0\36java/lang/Integer$IntegerCache\1\0\16java/lang/Math\1\0\20java/lang/Object\1\0\20java/lang/String\1\0\3low\1\0\3max\1\0\3min\1\0\10parseInt\1\0\vsun/misc/VM\3\377\377\377\200\7\0\26\7\0\27\7\0\30\7\0\31\7\0\32\7\0\37\f\0\24\0\f\f\0\22\0\21\f\0\t\0\3\f\0\t\0\4\f\0\34\0\5\f\0\35\0\5\f\0\36\0\6\f\0\23\0\7\t\0\"\0'\t\0\"\0(\n\0!\0*\n\0!\0-\n\0#\0+\n\0#\0,\n\0$\0)\n\0&\0.\1\0\fInteger.java\1\0\fIntegerCache\0 \0\"\0$\0\0\0\3\0\30\0\33\0\f\0\1\0\v\0\0\0\2\0 \0\30\0\24\0\f\0\0\0\30\0\22\0\21\0\0\0\2\0\2\0\t\0\3\0\1\0\n\0\0\0\35\0\1\0\1\0\0\0\5*\267\0005\261\0\0\0\1\0\16\0\0\0\6\0\1\0\0\2l\0\10\0\10\0\3\0\1\0\n\0\0\0\271\0\5\0\4\0\0\0V\20\177;\22\2\270\0006L+\306\0\26+\270\0002=\34\20\177\270\0003=\34\22\1\270\0004;\32\263\0/\262\0/\20\200d\4`\275\0!\263\0000\20\200=\3>\35\262\0000\276\242\0\31\262\0000\35\273\0!Y\34\204\2\1\267\0001S\204\3\1\247\377\345\261\0\0\0\2\0\20\0\0\0\25\0\3\375\0 \1\7\0%\375\0\26\1\1\377\0\35\0\0\0\0\0\16\0\0\0006\0\r\0\0\2[\0\3\2\\\0\t\2^\0\r\2_\0\22\2`\0\31\2b\0 \2d\0$\2f\0002\2g\0005\2h\0?\2i\0O\2h\0U\2j\0\2\0\17\0\0\0\2\0007\0\r\0\0\0\n\0\1\0\"\0!\0008\0\n", 904) = 904 30059 lseek(5, 4425198, SEEK_SET) = 4425198 30059 read(5, "PK\3\4\n\0\0\10\10\0d:&=\f\200\17\\\220\1\0\0\37\3\0\0001\0\0\0", 30) = 30 30059 lseek(5, 4425277, SEEK_SET) = 4425277 30059 read(5, "\225RKK\303@\20\3766m\23\215Uk}\277\365\340\253\242\321\253\26ADA\250z\250\n\36\267\351R\267\264\233\262M\212?K/\n\nz\367G\211\2234>\260\5\3652\337\314\3547\337\314\354\356\353\333\3433\200m\314\33301ia\312\206\201I\33)L[\230\2610ka\216\301\314K%\375=\206\304\352\332%C\362\300+\v\206\301\202T\3424\250\227\204>\347\245\32e\262\5\317\345\265K\256e\30\307\311\244\177-\233\f\33\5\327\253;%\0214}\247Jn\235\253\262\320\216\353\251\226\320\276\320M\347\324;\370\10v\31\254\370\204ay\265P\345-\356\324\270\2528E_KU\331]\353L1\244Z\274\26Dct9\374M\345\254T\25\256OD\343f\213\241\267(+\212\373\201&\271\223NV\367]\216\333\262\237[\344;;\356Q\3\273\350\5\332\25G2\274\235\314\267\2557Cz\32=\350eX\371*\275P\315\240\321\360\210Q>k\10\315}\351\251\303\33W4B'\215Ad\30\326\377q\271\324\364\347B\fK\177\332\10\213\3643L\320\353\320\257I\20\322\254dm\212\34BF\230\312=\200\335\221c\240\217\254\31%g\220&\233n\23\320\217\1B\26N\36\27\347\211m\20\366<\301\270z@\342\345G\375BT?\326\346\304\365\2417\204,Xf\237\224\206c\245\235X\311\314\255\337#y\333u\216\266\216\371\251cb$\324\241\354h\304\37\303x\204\23\357", 400) = 400 30059 lseek(4, 27827684, SEEK_SET) = 27827684 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B_\347g\265\354\1\0\0\354\1\0\0$\0\0\0", 30) = 30 30059 lseek(4, 27827750, SEEK_SET) = 27827750 30059 read(4, "\312\376\272\276\0\0\0003\0\23\1\0\17ANNOTATION_TYPE\1\0\7RUNTIME\1\0\31RuntimeVisibleAnnotations\1\0\nSourceFile\1\0\20java/lang/Object\1\0\37java/lang/annotation/Annotation\1\0\36java/lang/annotation/Retention\1\0\5value\7\0\5\7\0\6\7\0\7\1\0!Ljava/lang/annotation/Documented;\1\0\"Ljava/lang/annotation/ElementType;\1\0 Ljava/lang/annotation/Retention;\1\0&Ljava/lang/annotation/RetentionPolicy;\1\0\35Ljava/lang/annotation/Target;\1\0(()Ljava/lang/annotation/RetentionPolicy;\1\0\16Retention.java&\1\0\v\0\t\0\1\0\n\0\0\0\1\4\1\0\10\0\21\0\0\0\2\0\4\0\0\0\2\0\22\0\3\0\0\0\37\0\3\0\f\0\0\0\16\0\1\0\10e\0\17\0\2\0\20\0\1\0\10[\0\1e\0\r\0\1", 492) = 492 30059 lseek(4, 27827177, SEEK_SET) = 27827177 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B!\363QG\271\1\0\0\271\1\0\0$\0\0\0", 30) = 30 30059 lseek(4, 27827243, SEEK_SET) = 27827243 30059 read(4, "\312\376\272\276\0\0\0003\0\22\1\0\17ANNOTATION_TYPE\1\0\7RUNTIME\1\0\31RuntimeVisibleAnnotations\1\0\nSourceFile\1\0\20java/lang/Object\1\0\37java/lang/annotation/Annotation\1\0\36java/lang/annotation/Inherited\1\0\5value\7\0\5\7\0\6\7\0\7\1\0!Ljava/lang/annotation/Documented;\1\0\"Ljava/lang/annotation/ElementType;\1\0 Ljava/lang/annotation/Retention;\1\0&Ljava/lang/annotation/RetentionPolicy;\1\0\35Ljava/lang/annotation/Target;\1\0\16Inherited.java&\1\0\v\0\t\0\1\0\n\0\0\0\0\0\2\0\4\0\0\0\2\0\21\0\3\0\0\0\37\0\3\0\f\0\0\0\16\0\1\0\10e\0\17\0\2\0\20\0\1\0\10[\0\1e\0\r\0\1", 441) = 441 30059 lseek(4, 59034299, SEEK_SET) = 59034299 30059 read(4, "PK\3\4\n\0\0\0\0\0003\246\305BH\204u\252K\3\0\0K\3\0\0\27\0\0\0", 30) = 30 30059 lseek(4, 59034352, SEEK_SET) = 59034352 30059 read(4, "\312\376\272\276\0\0\0003\0,\1\0\3()V\1\0\4(Z)V\1\0\6\1\0\4Code\1\0\17EnclosingMethod\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\21Ljava/lang/Class;\1\0\32Ljava/lang/reflect/Method;\1\0\tSignature\1\0\nSourceFile\1\0\26getEnumConstantsShared\1\0\17java/lang/Class\1\0\21java/lang/Class$4\1\0\20java/lang/Object\1\0\30java/lang/reflect/Method\1\0\36java/security/PrivilegedAction\1\0\3run\1\0\rsetAccessible\1\0\6this$0\1\0\nval$values\7\0\r\7\0\16\7\0\17\7\0\20\7\0\21\1\0DLjava/lang/Object;Ljava/security/PrivilegedAction;\1\0\24()Ljava/lang/Object;\1\0\25()[Ljava/lang/Object;\1\0\22()Ljava/lang/Void;\1\0.(Ljava/lang/Class;Ljava/lang/reflect/Method;)V\f\0\24\0\10\f\0\25\0\t\f\0\3\0\1\f\0\23\0\2\f\0\f\0\35\f\0\22\0\36\t\0\27\0 \t\0\27\0!\n\0\27\0%\n\0\30\0\"\n\0\31\0#\1\0\nClass.java\0 \0\27\0\30\0\1\0\32\0\2\20\20\0\25\0\t\0\0\20\20\0\24\0\10\0\0\0\3\0\0\0\3\0\37\0\1\0\4\0\0\0'\0\2\0\3\0\0\0\17*+\265\0&*,\265\0'*\267\0)\261\0\0\0\1\0\7\0\0\0\6\0\1\0\0\v\326\0\1\0\22\0\36\0\1\0\4\0\0\0&\0\2\0\1\0\0\0\n*\264\0'\4\266\0*\1\260\0\0\0\1\0\7\0\0\0\n\0\2\0\0\v\330\0\10\v\331\20A\0\22\0\34\0\1\0\4\0\0\0\35\0\1\0\1\0\0\0\5*\266\0(\260\0\0\0\1\0\7\0\0\0\6\0\1\0\0\v\326\0\4\0\v\0\0\0\2\0+\0\5\0\0\0\4\0\26\0$\0\n\0\0\0\2\0\33\0\6\0\0\0\n\0\1\0\27\0\0\0\0\0\0", 843) = 843 30059 lseek(4, 59032560, SEEK_SET) = 59032560 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\344\344\362\307\203\6\0\0\203\6\0\0*\0\0\0", 30) = 30 30059 lseek(4, 59032632, SEEK_SET) = 59032632 30059 read(4, "\312\376\272\276\0\0\0003\0R\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0009(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;\1\0\6\1\0\4Code\1\0\nExceptions\1\0\1I\1\0\17LineNumberTable\1\0\32Ljava/lang/reflect/Method;\1\0\nSourceFile\1\0\rStackMapTable\1\0\16generateMethod\1\0\21getDeclaringClass\1\0\21getExceptionTypes\1\0\fgetModifiers\1\0\7getName\1\0\21getParameterTypes\1\0\rgetReturnType\1\0\22inflationThreshold\1\0\6invoke\1\0\7invoke0\1\0\"java/lang/IllegalArgumentException\1\0+java/lang/reflect/InvocationTargetException\1\0\30java/lang/reflect/Method\1\0\6method\1\0\16numInvocations\1\0\6parent\1\0\vsetDelegate\1\0\tsetParent\1\0(sun/reflect/DelegatingMethodAccessorImpl\1\0#sun/reflect/MethodAccessorGenerator\1\0\36sun/reflect/MethodAccessorImpl\1\0$sun/reflect/NativeMethodAccessorImpl\1\0\35sun/reflect/ReflectionFactory\7\0\27\7\0\30\7\0\31\7\0\37\7\0 \7\0!\7\0\"\7\0#\1\0*Lsun/reflect/DelegatingMethodAccessorImpl;\1\0\23()Ljava/lang/Class;\1\0\24()[Ljava/lang/Class;\1\0\35(Ljava/lang/reflect/Method;)V\1\0-(Lsun/reflect/DelegatingMethodAccessorImpl;)V\1\0#(Lsun/reflect/MethodAccessorImpl;)V\1\0S(Ljava/lang/reflect/Method;Ljava/lang"..., 1667) = 1667 30059 lseek(4, 59031800, SEEK_SET) = 59031800 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\307\255\371\374\254\2\0\0\254\2\0\0.\0\0\0", 30) = 30 30059 lseek(4, 59031876, SEEK_SET) = 59031876 30059 read(4, "\312\376\272\276\0\0\0003\0\36\1\0\3()V\1\0009(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;\1\0\6\1\0\4Code\1\0\nExceptions\1\0\17LineNumberTable\1\0\nSourceFile\1\0\10delegate\1\0\6invoke\1\0\"java/lang/IllegalArgumentException\1\0+java/lang/reflect/InvocationTargetException\1\0\vsetDelegate\1\0(sun/reflect/DelegatingMethodAccessorImpl\1\0\36sun/reflect/MethodAccessorImpl\7\0\n\7\0\v\7\0\r\7\0\16\1\0 Lsun/reflect/MethodAccessorImpl;\1\0#(Lsun/reflect/MethodAccessorImpl;)V\f\0\10\0\23\f\0\3\0\1\f\0\f\0\24\f\0\t\0\2\t\0\21\0\25\n\0\21\0\27\n\0\22\0\26\n\0\22\0\30\1\0!DelegatingMethodAccessorImpl.java\0 \0\21\0\22\0\0\0\1\0\2\0\10\0\23\0\0\0\3\0\0\0\3\0\24\0\1\0\4\0\0\0*\0\2\0\2\0\0\0\n*\267\0\33*+\266\0\32\261\0\0\0\1\0\6\0\0\0\16\0\3\0\0\0$\0\4\0%\0\t\0&\0\1\0\t\0\2\0\2\0\4\0\0\0\"\0\3\0\3\0\0\0\n*\264\0\31+,\266\0\34\260\0\0\0\1\0\6\0\0\0\6\0\1\0\0\0+\0\5\0\0\0\6\0\2\0\17\0\20\0\0\0\f\0\24\0\1\0\4\0\0\0\"\0\2\0\2\0\0\0\6*+\265\0\31\261\0\0\0\1\0\6\0\0\0\n\0\2\0\0\0/\0\5\0000\0\1\0\7\0\0\0\2\0\35", 684) = 684 30059 lseek(4, 46967019, SEEK_SET) = 46967019 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B7\324V\322l\3\0\0l\3\0\0A\0\0\0", 30) = 30 30059 lseek(4, 46967114, SEEK_SET) = 46967114 30059 read(4, "\312\376\272\276\0\0\0003\0$\1\0\3()V\1\0\25(Ljava/lang/String;)V\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\1J\1\0\17LineNumberTable\1\0\22Ljava/lang/String;\1\0\32Ljava/lang/reflect/Method;\1\0\nSourceFile\1\0\tfoundType\1\0\21generateException\1\0004java/lang/annotation/AnnotationTypeMismatchException\1\0\6member\1\0\20serialVersionUID\1\0\tsetMember\1\0;sun/reflect/annotation/AnnotationTypeMismatchExceptionProxy\1\0%sun/reflect/annotation/ExceptionProxy\5l\333\273\244K`\233\276\7\0\r\7\0\21\7\0\22\1\0\36()Ljava/lang/RuntimeException;\1\0/(Ljava/lang/reflect/Method;Ljava/lang/String;)V\1\0Y(Ljava/lang/reflect/Method;)Lsun/reflect/annotation/AnnotationTypeMismatchExceptionProxy;\f\0\v\0\10\f\0\16\0\t\f\0\3\0\1\f\0\3\0\31\t\0\26\0\33\t\0\26\0\34\n\0\25\0\36\n\0\27\0\35\1\0)AnnotationTypeMismatchExceptionProxy.java\0 \0\26\0\27\0\0\0\3\0\32\0\17\0\6\0\1\0\5\0\0\0\2\0\23\0\2\0\16\0\t\0\0\0\2\0\v\0\10\0\0\0\3\0\0\0\3\0\2\0\1\0\4\0\0\0*\0\2\0\2\0\0\0\n*\267\0\"*+\265\0\37\261\0\0\0\1\0\7\0\0\0\16\0\3\0\0\0/\0\4\0000\0\t\0001\0\0\0\20\0\32\0\1\0\4\0\0\0#\0\2\0\2\0\0\0\7*+\265\0 *\260\0\0\0\1\0\7\0\0\0\n\0\2\0\0\0004\0\5\0005\0\4\0\f\0\30\0\1\0\4\0\0\0(\0\4\0\1\0\0\0\20\273\0\25Y*\264\0 *\264\0\37\267\0!\260\0\0\0\1\0\7\0\0\0\6\0\1\0\0\0009\0\1\0\n\0\0\0\2\0#", 876) = 876 30059 lseek(4, 46937096, SEEK_SET) = 46937096 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305BR\377\t\360\227!\0\0\227!\0\0008\0\0\0", 30) = 30 30059 lseek(4, 46937182, SEEK_SET) = 46937182 30059 read(4, "\312\376\272\276\0\0\0003\1\235\10\0*\10\0005\10\0:\10\0F\10\0H\10\0Q\10\0_\10\0\222\1\0\23$assertionsDisabled\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\26(I)Ljava/lang/Integer;\1\0\4(I)V\1\0\25(Ljava/lang/Object;)I\1\0'(Ljava/lang/Object;)Ljava/lang/Boolean;\1\0&(Ljava/lang/Object;)Ljava/lang/String;\1\0\25(Ljava/lang/Object;)V\1\0\25(Ljava/lang/Object;)Z\1\0'(Ljava/lang/Object;Ljava/lang/Object;)Z\1\0S(Ljava/lang/Object;Ljava/lang/reflect/Method;[Ljava/lang/Object;)Ljava/lang/Object;\1\0009(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;\1\0,(Ljava/lang/String;)Ljava/lang/StringBuffer;\1\0\25(Ljava/lang/String;)V\1\0\5([B)I\1\0\7([B[B)Z\1\0\5([C)I\1\0\7([C[C)Z\1\0\5([D)I\1\0\7([D[D)Z\1\0\5([F)I\1\0\7([F[F)Z\1\0\5([I)I\1\0\7([I[I)Z\1\0\5([J)I\1\0\7([J[J)Z\1\0\5([S)I\1\0\7([S[S)Z\1\0\5([Z)I\1\0\7([Z[Z)Z\1\0\2, \1\0\10\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\5Entry\1\0\nExceptions\1\0\fInnerClasses\1\0\1J\1\0\17LineNumberTable\1\0\21Ljava/lang/Class;\1\0/Non-annotation type in annotation serial stream\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\1Z\1\0\1[\1\0\2[B\1\0\2[C\1\0\2[D\1\0\2[F\1\0\2[I\1\0\2[J\1\0\22[Ljava/lang/Class;\1\0\23[Ljava/lang/Object;\1\0\33[Ljava/lang/"..., 8599) = 8599 30059 lseek(4, 59383203, SEEK_SET) = 59383203 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\5\325\225\31\200\7\0\0\200\7\0\0 \0\0\0", 30) = 30 30059 lseek(4, 59383265, SEEK_SET) = 59383265 30059 read(4, "\312\376\272\276\0\0\0003\0S\1\0\3()I\1\0\3()V\1\0\6(I)TE;\1\0\t(ITE;)TE;\1\0\25(Ljava/lang/Object;)I\1\0\25(Ljava/lang/Object;)Z\1\0\7([TE;)V\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\fInnerClasses\1\0\1J\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\23[Ljava/lang/Object;\1\0\4[TE;\1\0\1a\1\0\tarraycopy\1\0\5clone\1\0\10contains\1\0\6copyOf\1\0\6equals\1\0\3get\1\0\10getClass\1\0\7indexOf\1\0\24java/io/Serializable\1\0\36java/lang/NullPointerException\1\0\20java/lang/Object\1\0\20java/lang/System\1\0\26java/util/AbstractList\1\0\20java/util/Arrays\1\0\32java/util/Arrays$ArrayList\1\0\26java/util/RandomAccess\1\0\20serialVersionUID\1\0\3set\1\0\4size\1\0\7toArray\5\331\244<\276\315\210\6\322\7\0\21\7\0\34\7\0\35\7\0\36\7\0\37\7\0 \7\0!\7\0\"\7\0#\1\0 ([TT;)[TT;\1\0aLjava/util/AbstractList;Ljava/util/RandomAccess;Ljava/io/Serializable;\1\0\23()Ljava/lang/Class;\1\0\24()Ljava/lang/Object;\1\0\25()[Ljava/lang/Object;\1\0\25(I)Ljava/lang/Object;\1\0\26([Ljava/lang/Object;)V\1\0'(ILjava/lang/Object;)Ljava/lang/Object;\1\0*(Ljava/lang/Object;ILjava/lang/Object;II)V\1\0(([Ljava/lang/Object;)[Ljava/lang/Object;\1\0:([Ljava/lang/Object;ILja"..., 1920) = 1920 30059 lseek(4, 59692766, SEEK_SET) = 59692766 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B \254\251c=\6\0\0=\6\0\0 \0\0\0", 30) = 30 30059 lseek(4, 59692828, SEEK_SET) = 59692828 30059 read(4, "\312\376\272\276\0\0\0003\0K\1\0\3()I\1\0\5()TE;\1\0\3()V\1\0\3()Z\1\0\6\1\0\21AbstractList.java\1\0\4Code\1\0\1I\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\26checkForComodification\1\0\6cursor\1\0\20expectedModCount\1\0\3get\1\0\7hasNext\1\0\37java/lang/IllegalStateException\1\0#java/lang/IndexOutOfBoundsException\1\0\20java/lang/Object\1\0\26java/util/AbstractList\1\0\30java/util/AbstractList$1\1\0\32java/util/AbstractList$Itr\1\0)java/util/ConcurrentModificationException\1\0\22java/util/Iterator\1\0 java/util/NoSuchElementException\1\0\7lastRet\1\0\10modCount\1\0\4next\1\0\6remove\1\0\4size\1\0\6this$0\7\0\23\7\0\24\7\0\25\7\0\26\7\0\27\7\0\30\7\0\31\7\0\32\7\0\33\1\0\30Ljava/util/AbstractList;\1\0+Ljava/lang/Object;Ljava/util/Iterator;\1\0\24()Ljava/lang/Object;\1\0\25(I)Ljava/lang/Object;\1\0\33(Ljava/util/AbstractList;)V\1\0005(Ljava/util/AbstractList;Ljava/util/AbstractList$1;)V\f\0\17\0\10\f\0\20\0\10\f\0\34\0\10\f\0\35\0\10\f\0!\0+\f\0 \0\1\f\0\5\0\3\f\0\16\0\3\f\0\21\0.\f\0\37\0.\f\0\5\0/\t\0%\0004\t\0'\0001\t\0'\0002\t\0'\0003\t\0'\0005\n\0\"\0007\n\0$\0007\n\0%\0006\n\0%\0009\n\0%\0:\n\0'\0008\n\0'\0;\n\0(\0007\n\0*\0007\1\0\3Itr\0 \0'\0$\0\1\0)\0\4\0\0\0\17\0\10\0\0\0\0\0\34\0\10\0\0\0\0\0\20\0\10\0\0\20\20\0!\0+\0\0\0\6\0\2\0\5\0/\0\1\0\7\0\0\0C\0\2\0\2\0\0\0\37*+\265\0@*\267\0B*\3\265\0=*\2\265\0?**\264\0@"..., 1597) = 1597 30059 lseek(4, 43269535, SEEK_SET) = 43269535 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B\256\2015\256\325?\0\0\325?\0\0\35\0\0\0", 30) = 30 30059 lseek(4, 43269594, SEEK_SET) = 43269594 30059 read(4, "\312\376\272\276\0\0\0003\2\254\3\312\376\272\276\3\0\0\377\377\10\0$\10\0%\10\0'\10\0)\10\0*\10\0000\10\0002\10\0004\10\0006\10\0007\10\0008\10\0Q\10\0U\10\0[\10\0a\10\0}\10\0\220\10\0\224\10\0\226\10\0\241\10\0\257\10\0\273\10\0\274\10\0\302\10\0\303\10\0\304\10\0\311\10\0\314\10\0\331\10\0\335\10\1\21\10\1\36\10\1 \1\0\v and others\1\0 but incompatible return types: \1\0\23$assertionsDisabled\1\0\1(\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4()[B\1\0\4(I)V\1\0\25(Ljava/lang/Object;)V\1\0\25(Ljava/lang/Object;)Z\1\0%(Ljava/lang/String;)Ljava/lang/Class;\1\0&(Ljava/lang/String;)Ljava/lang/String;\1\0\25(Ljava/lang/String;)V\1\0@(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;\1\0((Ljava/lang/reflect/InvocationHandler;)V\1\0\7(SSSS)V\1\0\1;\1\0\10\1\0\6\1\0\tACC_FINAL\1\0\vACC_PRIVATE\1\0\nACC_PUBLIC\1\0\nACC_STATIC\1\0\tACC_SUPER\1\0\27CLASSFILE_MAJOR_VERSION\1\0\27CLASSFILE_MINOR_VERSION\1\0\16CONSTANT_CLASS\1\0\17CONSTANT_DOUBLE\1\0\16CONSTANT_FIELD\1\0\16CONSTANT_FLOAT\1\0\20CONSTANT_INTEGER\1\0\30CONSTANT_INTERFACEMETHOD\1\0\rCONSTANT_LONG\1\0\17CONSTANT_METHOD\1\0\24CONSTANT_NAMEANDTYPE\1\0\17CONSTANT_STRING\1\0\20CONSTANT_UNICODE\1\0\rCONSTANT_UTF8\1\0\4Code\1\0\rConstantValue\1\0\nExceptions\1\0\1I\1\0\fInnerClasses\1\0\1L\1\0\17LineNumberTable\1\0\21Ljava/lang/Class;\1\0\22Ljava/lang/St"..., 16341) = 16341 30059 mprotect(0x7fb3144e2000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 57254333, SEEK_SET) = 57254333 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B\252q\2563\312\2\0\0\312\2\0\0*\0\0\0", 30) = 30 30059 lseek(4, 57254405, SEEK_SET) = 57254405 30059 read(4, "\312\376\272\276\0\0\0003\0%\1\0\3()V\1\0\25(Ljava/lang/String;)V\1\0\25(Ljava/lang/String;)Z\1\0\6\1\0\4Code\1\0\17LineNumberTable\1\0\22Ljava/lang/String;\1\0\tSignature\1\0\nSourceFile\1\0\ngetBoolean\1\0\21java/lang/Boolean\1\0\20java/lang/Object\1\0\36java/security/PrivilegedAction\1\0\3run\1\0$sun/security/action/GetBooleanAction\1\0\7theProp\1\0\7valueOf\7\0\v\7\0\f\7\0\r\7\0\17\1\0GLjava/lang/Object;Ljava/security/PrivilegedAction;\1\0\25()Ljava/lang/Boolean;\1\0\26(Z)Ljava/lang/Boolean;\1\0\24()Ljava/lang/Object;\f\0\20\0\7\f\0\4\0\1\f\0\16\0\27\f\0\21\0\30\f\0\n\0\3\t\0\25\0\32\n\0\22\0\35\n\0\22\0\36\n\0\23\0\33\n\0\25\0\34\1\0\25GetBooleanAction.java\0!\0\25\0\23\0\1\0\24\0\1\0\2\0\20\0\7\0\0\0\3\0\1\0\4\0\2\0\1\0\5\0\0\0*\0\2\0\2\0\0\0\n*\267\0\"*+\265\0\37\261\0\0\0\1\0\6\0\0\0\16\0\3\0\0\0;\0\4\0<\0\t\0=\0\1\0\16\0\27\0\1\0\5\0\0\0#\0\1\0\1\0\0\0\v*\264\0\37\270\0!\270\0 \260\0\0\0\1\0\6\0\0\0\6\0\1\0\0\0F\20A\0\16\0\31\0\1\0\5\0\0\0\35\0\1\0\1\0\0\0\5*\266\0#\260\0\0\0\1\0\6\0\0\0\6\0\1\0\0\0001\0\2\0\t\0\0\0\2\0$\0\10\0\0\0\2\0\26", 714) = 714 30059 lseek(4, 59498856, SEEK_SET) = 59498856 30059 read(4, "PK\3\4\n\0\0\0\0\0003\246\305B\263,i\345y\1\0\0y\1\0\0$\0\0\0", 30) = 30 30059 lseek(4, 59498922, SEEK_SET) = 59498922 30059 read(4, "\312\376\272\276\0\0\0003\0\25\1\0\3()V\1\0\25(Ljava/lang/String;)V\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\1J\1\0\17LineNumberTable\1\0\nSourceFile\1\0\23java/lang/Exception\1\0\36java/lang/InterruptedException\1\0\20serialVersionUID\5\\\375\250\303\1\336\267\371\7\0\t\7\0\n\f\0\3\0\1\f\0\3\0\2\n\0\16\0\20\n\0\16\0\21\1\0\31InterruptedException.java\0!\0\17\0\16\0\0\0\1\0\32\0\v\0\6\0\1\0\5\0\0\0\2\0\f\0\2\0\1\0\3\0\1\0\1\0\4\0\0\0!\0\1\0\1\0\0\0\5*\267\0\22\261\0\0\0\1\0\7\0\0\0\n\0\2\0\0\0009\0\4\0:\0\1\0\3\0\2\0\1\0\4\0\0\0\"\0\2\0\2\0\0\0\6*+\267\0\23\261\0\0\0\1\0\7\0\0\0\n\0\2\0\0\0C\0\5\0D\0\1\0\10\0\0\0\2\0\24", 377) = 377 30059 lseek(4, 43251732, SEEK_SET) = 43251732 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B\337?\265}\242\17\0\0\242\17\0\0*\0\0\0", 30) = 30 30059 lseek(4, 43251804, SEEK_SET) = 43251804 30059 read(4, "\312\376\272\276\0\0\0003\0\302\3\0\0\377\377\10\0!\10\0?\10\0@\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()S\1\0\3()V\1\0\3()Z\1\0\4(F)S\1\0\4(F)V\1\0\4(I)S\1\0\4(I)V\1\0\5(IS)V\1\0\6(ISS)V\1\0\25(Ljava/lang/Object;)V\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)V\1\0\4(S)V\1\0\6\1\0\4Code\1\0\5Entry\1\0\nExceptions\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\1Z\1\0\3add\1\0\10addEntry\1\0\6append\1\0!constant pool size limit exceeded\1\0\3get\1\0\10getClass\1\0\vgetFieldRef\1\0\10getFloat\1\0\vgetIndirect\1\0\ngetInteger\1\0\25getInterfaceMethodRef\1\0\fgetMethodRef\1\0\16getNameAndType\1\0\tgetString\1\0\7getUtf8\1\0\10getValue\1\0\7hasNext\1\0\10iterator\1\0\30java/io/DataOutputStream\1\0\23java/io/IOException\1\0\17java/lang/Float\1\0\"java/lang/IllegalArgumentException\1\0\21java/lang/Integer\1\0\27java/lang/InternalError\1\0\36java/lang/NullPointerException\1\0\20java/lang/Object\1\0\17java/lang/Short\1\0\27java/lang/StringBuilder\1\0\23java/util/ArrayList\1\0\21java/util/HashMap\1\0\22java/util/Iterator\1\0\16java/util/List\1\0\rjava/util/Map\1\0\33late constant pool addition\1\0\35late constant pool addition: \1\0\3map\1\0\4next\1\0\4pool\1\0\3put\1\0\10readOnly\1\0\vsetRe"..., 4002) = 4002 30059 mprotect(0x7fb3144e3000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 43262255, SEEK_SET) = 43262255 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B\237\360\350\35)\34\0\0)\34\0\0)\0\0\0", 30) = 30 30059 lseek(4, 43262326, SEEK_SET) = 43262326 30059 read(4, "\312\376\272\276\0\0\0003\1Q\3\0\0\377\377\10\0\34\10\0\37\10\0 \10\0\"\10\0'\10\0)\10\0*\10\0.\10\0G\10\0T\10\0X\10\0Z\10\0d\10\0j\10\0n\10\0p\10\0q\10\0r\10\0u\10\0\211\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4(I)V\1\0\25(Ljava/lang/Object;)Z\1\0S(Ljava/lang/Object;Ljava/lang/reflect/Method;[Ljava/lang/Object;)Ljava/lang/Object;\1\0&(Ljava/lang/String;)Ljava/lang/String;\1\0\25(Ljava/lang/String;)V\1\0@(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;\1\0\30(Ljava/lang/Throwable;)V\1\0\7(SSSS)V\1\0\6\1\0\4Code\1\0\nExceptions\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\21Ljava/lang/Class;\1\0\22Ljava/lang/String;\1\0%Ljava/lang/reflect/InvocationHandler;\1\0\32Ljava/lang/reflect/Method;\1\0\1S\1\0\nSourceFile\1\0\rStackMapTable\1\0\4TYPE\1\0\2[I\1\0\22[Ljava/lang/Class;\1\0\2[S\1\0\naccess$000\1\0\vaccess$1000\1\0\vaccess$1100\1\0\vaccess$1200\1\0\vaccess$1300\1\0\vaccess$1400\1\0\vaccess$1500\1\0\vaccess$1600\1\0\vaccess$1700\1\0\vaccess$1800\1\0\vaccess$1900\1\0\naccess$200\1\0\naccess$400\1\0\naccess$508\1\0\naccess$600\1\0\naccess$700\1\0\naccess$800\1\0\naccess$900\1\0\3add\1\0\6append\1\0\4code\1\0\30code size limit exceeded\1\0\27codeFieldInitialization\1\0\25codeUnwrapReturnValue\1\0\20codeWrapA"..., 7209) = 7209 30059 lseek(4, 27746616, SEEK_SET) = 27746616 30059 read(4, "PK\3\4\n\0\0\0\0\0003\246\305B#\0\17\354\34\10\0\0\34\10\0\0!\0\0\0", 30) = 30 30059 lseek(4, 27746679, SEEK_SET) = 27746679 30059 read(4, "\312\376\272\276\0\0\0003\0M\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\25(Ljava/lang/Object;)Z\1\0)([Ljava/lang/Object;I)[Ljava/lang/Object;\1\0\6\1\0\4Code\1\0\1I\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\nSourceFile\1\0\rStackMapTable\1\0\33[Ljava/lang/reflect/Method;\1\0\naccess$100\1\0\3add\1\0\6addAll\1\0\22addAllIfNotPresent\1\0\17addIfNotPresent\1\0\16compactAndTrim\1\0\6copyOf\1\0\6equals\1\0\3get\1\0\10getArray\1\0\7getName\1\0\21getParameterTypes\1\0\rgetReturnType\1\0\17java/lang/Class\1\0\33java/lang/Class$MethodArray\1\0\20java/lang/Object\1\0\30java/lang/reflect/Method\1\0\20java/util/Arrays\1\0\6length\1\0\7methods\1\0\30removeByNameAndSignature\7\0\r\7\0\33\7\0\34\7\0\35\7\0\36\7\0\37\1\0\23()Ljava/lang/Class;\1\0\24()[Ljava/lang/Class;\1\0 (Ljava/lang/Class$MethodArray;)V\1\0\35()[Ljava/lang/reflect/Method;\1\0\35(I)Ljava/lang/reflect/Method;\1\0\35(Ljava/lang/reflect/Method;)V\1\0\36([Ljava/lang/reflect/Method;)V\1\0)([Ljava/lang/Object;[Ljava/lang/Object;)Z\f\0 \0\10\f\0!\0\r\f\0 \0\1\f\0\6\0\3\f\0\32\0)\f\0\31\0*\f\0\25\0\4\f\0\30\0\2\f\0\26\0-\f\0\17\0.\f\0\22\0.\f\0\24\0\5\f\0\16\0000\t\0%\0001\t\0%\0002\n\0$\0=\n\0%\0003\n\0%\0009\n\0%\0:\n\0%\0;\n\0&\0004\n\0'\0005\n\0'\0006\n\0'\0007\n\0'\0008\n\0(\0<\1\0\nClass.java\1\0\vMethodArray\0 \0%\0&\0\0\0\2\0\2\0!\0\r\0\0\0\2\0 \0"..., 2076) = 2076 30059 lseek(4, 59122341, SEEK_SET) = 59122341 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\216\255\r\24\264\3\0\0\264\3\0\0\36\0\0\0", 30) = 30 30059 lseek(4, 59122401, SEEK_SET) = 59122401 30059 read(4, "\312\376\272\276\0\0\0003\0000\1\0\3()I\1\0\3()V\1\0\25(Ljava/lang/Object;)Z\1\0\6\1\0\4Code\1\0\1I\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\5clear\1\0\10contains\1\0\rcontainsValue\1\0\10iterator\1\0\34java/util/AbstractCollection\1\0\21java/util/HashMap\1\0\23java/util/HashMap$1\1\0\30java/util/HashMap$Values\1\0\20newValueIterator\1\0\4size\1\0\6this$0\7\0\17\7\0\20\7\0\21\7\0\22\1\0#Ljava/util/AbstractCollection;\1\0\23Ljava/util/HashMap;\1\0\26(Ljava/util/HashMap;)V\1\0\26()Ljava/util/Iterator;\1\0\33()Ljava/util/Iterator;\1\0+(Ljava/util/HashMap;Ljava/util/HashMap$1;)V\f\0\24\0\6\f\0\25\0\33\f\0\4\0\2\f\0\v\0\2\f\0\r\0\3\f\0\4\0\34\f\0\23\0\35\t\0\27\0 \t\0\31\0!\n\0\26\0\"\n\0\27\0#\n\0\27\0$\n\0\27\0&\n\0\31\0%\1\0\fHashMap.java\1\0\6Values\0000\0\31\0\26\0\0\0\1\20\20\0\25\0\33\0\0\0\6\0\2\0\4\0\34\0\1\0\5\0\0\0\"\0\2\0\2\0\0\0\n*+\265\0(*\267\0)\261\0\0\0\1\0\10\0\0\0\6\0\1\0\0\3\360\0\1\0\16\0\35\0\2\0\5\0\0\0 \0\1\0\1\0\0\0\10*\264\0(\266\0,\260\0\0\0\1\0\10\0\0\0\6\0\1\0\0\3\362\0\t\0\0\0\2\0\36\0\1\0\24\0\1\0\1\0\5\0\0\0 \0\1\0\1\0\0\0\10*\264\0(\264\0'\254\0\0\0\1\0\10\0\0\0\6\0\1\0\0\3\365\0\1\0\f\0\3\0\1\0\5\0\0\0!\0\2\0\2\0\0\0\t*\264\0(+\266\0+\254\0\0\0\1\0\10\0\0\0\6\0\1\0\0\3\370\0\1\0\v\0\2\0\1\0\5\0\0\0$\0\1\0\1\0\0\0\10*\264\0(\266\0*\261\0\0\0\1\0\10\0\0\0\n\0\2\0\0\3\373\0\7\3\374\20\0\0\4\0\37\0\1\0\5\0\0\0\36\0\2\0\3\0\0\0\6*+\267\0-\261\0\0\0\1\0\10\0\0\0\6\0\1\0\0\3\360\0\3\0\n\0\0\0\2\0.\0\t\0\0\0\2\0\32\0\7\0\0\0\22\0\2\0\31\0\27\0/\0\22\0\30\0\27\0\0\20\10", 948) = 948 30059 lseek(4, 59121457, SEEK_SET) = 59121457 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\215\\D\0001\3\0\0001\3\0\0%\0\0\0", 30) = 30 30059 lseek(4, 59121524, SEEK_SET) = 59121524 30059 read(4, "\312\376\272\276\0\0\0003\0*\1\0\5()TV;\1\0\6\1\0\4Code\1\0\5Entry\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\22Ljava/lang/Object;\1\0\tSignature\1\0\nSourceFile\1\0\21java/util/HashMap\1\0\23java/util/HashMap$1\1\0\27java/util/HashMap$Entry\1\0\36java/util/HashMap$HashIterator\1\0\37java/util/HashMap$ValueIterator\1\0\4next\1\0\tnextEntry\1\0\6this$0\1\0\5value\7\0\n\7\0\v\7\0\f\7\0\r\7\0\16\1\0\23Ljava/util/HashMap;\1\0-Ljava/util/HashMap.HashIterator;\1\0\24()Ljava/lang/Object;\1\0\26(Ljava/util/HashMap;)V\1\0\33()Ljava/util/HashMap$Entry;\1\0+(Ljava/util/HashMap;Ljava/util/HashMap$1;)V\f\0\22\0\7\f\0\21\0\30\f\0\2\0\33\f\0\20\0\34\t\0\25\0\36\t\0\27\0\37\n\0\26\0 \n\0\27\0 \n\0\27\0!\1\0\fHashIterator\1\0\fHashMap.java\1\0\rValueIterator\0000\0\27\0\26\0\0\0\1\20\20\0\21\0\30\0\0\0\3\0\2\0\2\0\33\0\1\0\3\0\0\0#\0\2\0\2\0\0\0\v*+\265\0#*+\267\0$\261\0\0\0\1\0\6\0\0\0\6\0\1\0\0\3\230\0\1\0\17\0\32\0\2\0\3\0\0\0 \0\1\0\1\0\0\0\10*\266\0&\264\0\"\260\0\0\0\1\0\6\0\0\0\6\0\1\0\0\3\232\0\10\0\0\0\2\0\1\20\0\0\2\0\35\0\1\0\3\0\0\0\36\0\2\0\3\0\0\0\6*+\267\0%\261\0\0\0\1\0\6\0\0\0\6\0\1\0\0\3\230\0\3\0\t\0\0\0\2\0(\0\10\0\0\0\2\0\31\0\5\0\0\0\"\0\4\0\25\0\23\0\4\0\10\0\26\0\23\0'\4\2\0\27\0\23\0)\0\22\0\24\0\23\0\0\20\10", 817) = 817 30059 lseek(4, 43257480, SEEK_SET) = 43257480 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B\361\5\247e\305\10\0\0\305\10\0\0(\0\0\0", 30) = 30 30059 lseek(4, 43257550, SEEK_SET) = 43257550 30059 read(4, "\312\376\272\276\0\0\0003\0\200\10\0\10\10\0\t\1\0\3()I\1\0\3()V\1\0\3()Z\1\0\4(I)V\1\0\6\1\0\4Code\1\0\nExceptions\1\0\1I\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\22Ljava/lang/String;\1\0\1S\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\2[S\1\0\naccess$400\1\0\vaccessFlags\1\0\tcatchType\1\0\4code\1\0\22declaredExceptions\1\0\ndescriptor\1\0\5endPc\1\0\16exceptionTable\1\0\7getUtf8\1\0\thandlerPc\1\0\7hasNext\1\0\10iterator\1\0\35java/io/ByteArrayOutputStream\1\0\30java/io/DataOutputStream\1\0\23java/io/IOException\1\0\20java/lang/Object\1\0\23java/util/ArrayList\1\0\22java/util/Iterator\1\0\16java/util/List\1\0\tmaxLocals\1\0\10maxStack\1\0\4name\1\0\4next\1\0\4size\1\0\7startPc\1\0\27sun/misc/ProxyGenerator\1\0$sun/misc/ProxyGenerator$ConstantPool\1\0+sun/misc/ProxyGenerator$ExceptionTableEntry\1\0\"sun/misc/ProxyGenerator$MethodInfo\1\0\6this$0\1\0\5write\1\0\10writeInt\1\0\nwriteShort\1\0\7writeTo\7\0\37\7\0 \7\0!\7\0\"\7\0#\7\0$\7\0%\7\0,\7\0-\7\0.\7\0/\1\0\37Ljava/io/ByteArrayOutputStream;\1\0\20Ljava/util/List;\1\0\31Lsun/misc/ProxyGenerator;\1\0?Ljava/util/List;\1\0\35(Ljava/io/DataOutputStream;)V\1\0\31(Ljava/io/OutputStream;)V\1\0\24()Ljava/lang/Objec"..., 2245) = 2245 30059 lseek(4, 43249949, SEEK_SET) = 43249949 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B\354\333\33\203\244\6\0\0\244\6\0\0005\0\0\0", 30) = 30 30059 lseek(4, 43250032, SEEK_SET) = 43250032 30059 read(4, "\312\376\272\276\0\0\0003\0m\10\0\30\1\0\3()D\1\0\3()F\1\0\3()I\1\0\3()J\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\4(D)V\1\0\4(F)V\1\0\4(I)V\1\0\4(J)V\1\0\25(Ljava/lang/Object;)V\1\0\25(Ljava/lang/String;)V\1\0\6\1\0\4Code\1\0\5Entry\1\0\nExceptions\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\22Ljava/lang/Object;\1\0\nSourceFile\1\0\rStackMapTable\1\0\6append\1\0\23bogus value entry: \1\0\vdoubleValue\1\0\nfloatValue\1\0\10intValue\1\0\30java/io/DataOutputStream\1\0\23java/io/IOException\1\0\20java/lang/Double\1\0\17java/lang/Float\1\0\21java/lang/Integer\1\0\27java/lang/InternalError\1\0\16java/lang/Long\1\0\20java/lang/String\1\0\27java/lang/StringBuilder\1\0\tlongValue\1\0\27sun/misc/ProxyGenerator\1\0\31sun/misc/ProxyGenerator$1\1\0$sun/misc/ProxyGenerator$ConstantPool\1\0*sun/misc/ProxyGenerator$ConstantPool$Entry\1\0/sun/misc/ProxyGenerator$ConstantPool$ValueEntry\1\0\10toString\1\0\5value\1\0\5write\1\0\twriteByte\1\0\vwriteDouble\1\0\nwriteFloat\1\0\10writeInt\1\0\twriteLong\1\0\10writeUTF\6@\30\0\0\0\0\0\0\7\0\34\7\0\35\7\0\36\7\0\37\7\0 \7\0!\7\0\"\7\0#\7\0$\7\0&\7\0'\7\0(\7\0)\7\0*\1\0\35(Ljava/io/DataOutputStream;)V\1\0\36(Lsun/misc/ProxyGenerator$1;)V\1\0-(Ljava/lang/Object;)Ljava/lang/StringBuilder;\1\0-(Ljava/l"..., 1700) = 1700 30059 lseek(4, 43247983, SEEK_SET) = 43247983 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B\253;%\247C\2\0\0C\2\0\0000\0\0\0", 30) = 30 30059 lseek(4, 43248061, SEEK_SET) = 43248061 30059 read(4, "\312\376\272\276\0\0\0003\0\35\1\0\3()V\1\0\6\1\0\4Code\1\0\5Entry\1\0\nExceptions\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\nSourceFile\1\0\23java/io/IOException\1\0\20java/lang/Object\1\0\27sun/misc/ProxyGenerator\1\0\31sun/misc/ProxyGenerator$1\1\0$sun/misc/ProxyGenerator$ConstantPool\1\0*sun/misc/ProxyGenerator$ConstantPool$Entry\1\0\5write\7\0\t\7\0\n\7\0\v\7\0\f\7\0\r\7\0\16\1\0\35(Ljava/io/DataOutputStream;)V\1\0\36(Lsun/misc/ProxyGenerator$1;)V\f\0\2\0\1\n\0\21\0\30\n\0\25\0\30\1\0\fConstantPool\1\0\23ProxyGenerator.java\4 \0\25\0\21\0\0\0\0\0\3\0\2\0\2\0\1\0\1\0\3\0\0\0\35\0\1\0\1\0\0\0\5*\267\0\31\261\0\0\0\1\0\7\0\0\0\6\0\1\0\0\7f\4\1\0\17\0\26\0\1\0\5\0\0\0\4\0\1\0\20\20\0\0\2\0\27\0\1\0\3\0\0\0\35\0\1\0\2\0\0\0\5*\267\0\32\261\0\0\0\1\0\7\0\0\0\6\0\1\0\0\7f\0\2\0\10\0\0\0\2\0\34\0\6\0\0\0\32\0\3\0\24\0\22\0\33\0\n\0\25\0\24\0\4\4\n\0\23\0\0\0\0\0\10", 579) = 579 30059 lseek(4, 52942165, SEEK_SET) = 52942165 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\324\27\234\333X\16\0\0X\16\0\0\36\0\0\0", 30) = 30 30059 lseek(4, 52942225, SEEK_SET) = 52942225 30059 read(4, "\312\376\272\276\0\0\0003\0{\3\0\0\377\377\3\177\377\377\377\10\0\5\10\0\37\1\0\6 bytes\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\4(D)J\1\0\4(D)V\1\0\4(F)I\1\0\4(F)V\1\0\4(I)C\1\0\4(I)V\1\0\4(J)V\1\0\25(Ljava/lang/String;)V\1\0\4(Z)V\1\0\7([BII)V\1\0\6\1\0\4Code\1\0\nExceptions\1\0\1I\1\0\17LineNumberTable\1\0\nSourceFile\1\0\rStackMapTable\1\0\2[B\1\0\6append\1\0\7bytearr\1\0\6charAt\1\0\20doubleToLongBits\1\0\31encoded string too long: \1\0\16floatToIntBits\1\0\5flush\1\0\10incCount\1\0\22java/io/DataOutput\1\0\30java/io/DataOutputStream\1\0\32java/io/FilterOutputStream\1\0\23java/io/IOException\1\0\24java/io/OutputStream\1\0\36java/io/UTFDataFormatException\1\0\20java/lang/Double\1\0\17java/lang/Float\1\0\20java/lang/String\1\0\27java/lang/StringBuilder\1\0\6length\1\0\3out\1\0\4size\1\0\10toString\1\0\5write\1\0\fwriteBoolean\1\0\vwriteBuffer\1\0\twriteByte\1\0\nwriteBytes\1\0\twriteChar\1\0\nwriteChars\1\0\vwriteDouble\1\0\nwriteFloat\1\0\10writeInt\1\0\twriteLong\1\0\nwriteShort\1\0\10writeUTF\1\0\7written\7\0\32\7\0#\7\0$\7\0%\7\0&\7\0'\7\0(\7\0)\7\0*\7\0+\7\0,\1\0\26Ljava/io/OutputStream;\1\0\31(Ljava/io/OutputStream;)V\1\0\34(I)Ljava/lang/StringBuilder;\1\0)(Ljava/lang/String;Ljava/io/DataOutput;)I\1\0-(Ljava/lang/String;)Ljava/lang/StringBu"..., 3672) = 3672 30059 lseek(4, 56939589, SEEK_SET) = 56939589 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305BD\274\363\210o\2\0\0o\2\0\0\30\0\0\0", 30) = 30 30059 lseek(4, 56939643, SEEK_SET) = 56939643 30059 read(4, "\312\376\272\276\0\0\0003\0\36\1\0\4(D)V\1\0\4(F)V\1\0\4(I)V\1\0\4(J)V\1\0\25(Ljava/lang/String;)V\1\0\4(Z)V\1\0\5([B)V\1\0\7([BII)V\1\0\nExceptions\1\0\nSourceFile\1\0\22java/io/DataOutput\1\0\23java/io/IOException\1\0\20java/lang/Object\1\0\5write\1\0\fwriteBoolean\1\0\twriteByte\1\0\nwriteBytes\1\0\twriteChar\1\0\nwriteChars\1\0\vwriteDouble\1\0\nwriteFloat\1\0\10writeInt\1\0\twriteLong\1\0\nwriteShort\1\0\10writeUTF\7\0\v\7\0\f\7\0\r\1\0\17DataOutput.java\6\1\0\32\0\34\0\0\0\0\0\16\4\1\0\16\0\3\0\1\0\t\0\0\0\4\0\1\0\33\4\1\0\16\0\7\0\1\0\t\0\0\0\4\0\1\0\33\4\1\0\16\0\10\0\1\0\t\0\0\0\4\0\1\0\33\4\1\0\17\0\6\0\1\0\t\0\0\0\4\0\1\0\33\4\1\0\20\0\3\0\1\0\t\0\0\0\4\0\1\0\33\4\1\0\30\0\3\0\1\0\t\0\0\0\4\0\1\0\33\4\1\0\22\0\3\0\1\0\t\0\0\0\4\0\1\0\33\4\1\0\26\0\3\0\1\0\t\0\0\0\4\0\1\0\33\4\1\0\27\0\4\0\1\0\t\0\0\0\4\0\1\0\33\4\1\0\25\0\2\0\1\0\t\0\0\0\4\0\1\0\33\4\1\0\24\0\1\0\1\0\t\0\0\0\4\0\1\0\33\4\1\0\21\0\5\0\1\0\t\0\0\0\4\0\1\0\33\4\1\0\23\0\5\0\1\0\t\0\0\0\4\0\1\0\33\4\1\0\31\0\5\0\1\0\t\0\0\0\4\0\1\0\33\0\1\0\n\0\0\0\2\0\35", 623) = 623 30059 lseek(4, 43248640, SEEK_SET) = 43248640 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B\314\304\354\355\307\4\0\0\307\4\0\0008\0\0\0", 30) = 30 30059 lseek(4, 43248726, SEEK_SET) = 43248726 30059 read(4, "\312\376\272\276\0\0\0003\0007\1\0\3()I\1\0\4(I)V\1\0\5(IS)V\1\0\6(ISS)V\1\0\25(Ljava/lang/Object;)Z\1\0\6\1\0\4Code\1\0\5Entry\1\0\nExceptions\1\0\1I\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\1S\1\0\nSourceFile\1\0\rStackMapTable\1\0\6equals\1\0\10hashCode\1\0\6index0\1\0\6index1\1\0\30java/io/DataOutputStream\1\0\23java/io/IOException\1\0\27sun/misc/ProxyGenerator\1\0\31sun/misc/ProxyGenerator$1\1\0$sun/misc/ProxyGenerator$ConstantPool\1\0*sun/misc/ProxyGenerator$ConstantPool$Entry\1\0002sun/misc/ProxyGenerator$ConstantPool$IndirectEntry\1\0\3tag\1\0\5write\1\0\twriteByte\1\0\nwriteShort\7\0\24\7\0\25\7\0\26\7\0\27\7\0\30\7\0\31\7\0\32\1\0\35(Ljava/io/DataOutputStream;)V\1\0\36(Lsun/misc/ProxyGenerator$1;)V\f\0\33\0\n\f\0\22\0\r\f\0\23\0\r\f\0\35\0\2\f\0\36\0\2\f\0\6\0'\t\0%\0(\t\0%\0)\t\0%\0*\n\0\37\0+\n\0\37\0,\n\0$\0-\1\0\fConstantPool\1\0\rIndirectEntry\1\0\23ProxyGenerator.java\0 \0%\0$\0\0\0\3\0\2\0\33\0\n\0\0\0\2\0\22\0\r\0\0\0\2\0\23\0\r\0\0\0\5\0\1\0\6\0\3\0\1\0\7\0\0\0=\0\2\0\3\0\0\0\25*\1\267\0003*\33\265\0.*\34\265\0/*\3\265\0000\261\0\0\0\1\0\f\0\0\0\26\0\5\0\0\7\250\0\5\7\251\0\n\7\252\0\17\7\253\0\24\7\254\0\1\0\6\0\4\0\1\0\7\0\0\0=\0\2\0\4\0\0\0\25*\1\267\0003*\33\265\0.*\34\265\0/*\35\265\0000\261\0\0\0\1\0\f\0\0\0\26\0\5\0\0\7\262\0\5\7\263\0\n\7\264\0\17\7\265\0\24\7\266\0\1\0\34\0&\0\2\0\7\0\0\0o\0\2\0\2\0\0\0=+*\264\0.\266\0001+*\264\0/\266\0002*\264\0.\20\t\237\0\36*\264\0.\20\n\237\0\25*\264\0.\20\v\237\0\f*\264\0.\20\f\240\0\v+*\264\0000\266\0002\261\0\0\0\2\0\17\0\0\0\4\0\0024\7\0\f\0\0\0\26\0\5\0\0\7\271\0\10\7\272\0\20\7\277\0004\7\304\0<\7\306\0\t"..., 1223) = 1223 30059 lseek(4, 43256367, SEEK_SET) = 43256367 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B6\236jd\24\4\0\0\24\4\0\0'\0\0\0", 30) = 30 30059 lseek(4, 43256436, SEEK_SET) = 43256436 30059 read(4, "\312\376\272\276\0\0\0003\0007\1\0\3()V\1\0\4(I)V\1\0\6\1\0\4Code\1\0\nExceptions\1\0\1I\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\22Ljava/lang/String;\1\0\nSourceFile\1\0\naccess$400\1\0\vaccessFlags\1\0\ndescriptor\1\0\7getUtf8\1\0\30java/io/DataOutputStream\1\0\23java/io/IOException\1\0\20java/lang/Object\1\0\4name\1\0\27sun/misc/ProxyGenerator\1\0$sun/misc/ProxyGenerator$ConstantPool\1\0!sun/misc/ProxyGenerator$FieldInfo\1\0\6this$0\1\0\5write\1\0\nwriteShort\7\0\17\7\0\20\7\0\21\7\0\23\7\0\24\7\0\25\1\0\31Lsun/misc/ProxyGenerator;\1\0\35(Ljava/io/DataOutputStream;)V\1\0\25(Ljava/lang/String;)S\1\0A(Lsun/misc/ProxyGenerator;)Lsun/misc/ProxyGenerator$ConstantPool;\1\0A(Lsun/misc/ProxyGenerator;Ljava/lang/String;Ljava/lang/String;I)V\f\0\f\0\6\f\0\r\0\t\f\0\22\0\t\f\0\26\0\37\f\0\3\0\1\f\0\30\0\2\f\0\16\0!\f\0\v\0\"\t\0\36\0$\t\0\36\0%\t\0\36\0&\t\0\36\0'\n\0\31\0)\n\0\33\0(\n\0\34\0+\n\0\35\0*\1\0\fConstantPool\1\0\tFieldInfo\1\0\23ProxyGenerator.java\0 \0\36\0\33\0\0\0\4\0\1\0\f\0\6\0\0\0\1\0\22\0\t\0\0\0\1\0\r\0\t\0\0\20\20\0\26\0\37\0\0\0\2\0\1\0\3\0#\0\1\0\4\0\0\0\\\0\2\0\5\0\0\0,*+\265\0/*\267\0001*,\265\0.*-\265\0-*\25\4\265\0,+\270\0002,\266\0003W+\270\0002-\266\0003W\261\0\0\0\1\0\10\0\0\0\36\0\7\0\0\2\277\0\t\2\300\0\16\2\301\0\23\2\302\0\31\2\310\0\"\2\311\0+\2\312\0\1\0\27\0 \0\2\0\4\0\0\0Z\0\3\0\2\0\0\0002+*\264\0,\266\0000+*\264\0/\270\0002*\264\0.\266\0003\266\0000+*\264\0/\270\0002*\264\0-\266\0003\266\0000+\3\266\0000\261\0\0\0\1\0\10\0\0\0\26\0\5\0\0\2\322\0\10\2\324\0\32\2\326\0,\2\330\0001\2\331"..., 1044) = 1044 30059 lseek(4, 43259795, SEEK_SET) = 43259795 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B\250\31\246\315O\t\0\0O\t\0\0/\0\0\0", 30) = 30 30059 lseek(4, 43259872, SEEK_SET) = 43259872 30059 read(4, "\312\376\272\276\0\0\0003\0\224\10\0\7\10\0\10\10\0\16\10\0\17\10\0\33\1\0\23$assertionsDisabled\1\0\1(\1\0\2()\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\25(I)Ljava/lang/String;\1\0&(Ljava/lang/String;)Ljava/lang/String;\1\0\2)L\1\0\1;\1\0\10\1\0\6\1\0\4Code\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\21Ljava/lang/Class;\1\0\22Ljava/lang/String;\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\4TYPE\1\0\5Value\1\0\1Z\1\0\naccess$000\1\0\3add\1\0\6append\1\0\16baseTypeString\1\0\26desiredAssertionStatus\1\0\3get\1\0\10getClass\1\0\7getName\1\0\visPrimitive\1\0\30java/lang/AssertionError\1\0\21java/lang/Boolean\1\0\16java/lang/Byte\1\0\23java/lang/Character\1\0\17java/lang/Class\1\0\20java/lang/Double\1\0\17java/lang/Float\1\0\21java/lang/Integer\1\0\16java/lang/Long\1\0\20java/lang/Object\1\0\17java/lang/Short\1\0\20java/lang/String\1\0\27java/lang/StringBuilder\1\0\27java/lang/reflect/Array\1\0\21java/util/HashMap\1\0\rjava/util/Map\1\0\vnewInstance\1\0\3put\1\0\tsubstring\1\0\27sun/misc/ProxyGenerator\1\0)sun/misc/ProxyGenerator$PrimitiveTypeInfo\1\0\5table\1\0\10toString\1\0\20unwrapMethodDesc\1\0\20unwrapMethodName\1\0\20wrapperClassName\1\0\22wrapperValueOfDesc\7\0&\7\0'\7\0(\7\0)\7\0*\7\0+\7\0,\7\0-\7\0.\7\0/\7\0000\7\0001\7\0002\7\0003"..., 2383) = 2383 30059 lseek(4, 43255806, SEEK_SET) = 43255806 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B\202\"6\307\342\1\0\0\342\1\0\0001\0\0\0", 30) = 30 30059 lseek(4, 43255885, SEEK_SET) = 43255885 30059 read(4, "\312\376\272\276\0\0\0003\0\37\1\0\3()V\1\0\7(SSSS)V\1\0\6\1\0\4Code\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\1S\1\0\nSourceFile\1\0\tcatchType\1\0\5endPc\1\0\thandlerPc\1\0\20java/lang/Object\1\0\7startPc\1\0\27sun/misc/ProxyGenerator\1\0+sun/misc/ProxyGenerator$ExceptionTableEntry\7\0\f\7\0\16\7\0\17\f\0\t\0\7\f\0\n\0\7\f\0\v\0\7\f\0\r\0\7\f\0\3\0\1\t\0\22\0\23\t\0\22\0\24\t\0\22\0\25\t\0\22\0\26\n\0\20\0\27\1\0\23ExceptionTableEntry\1\0\23ProxyGenerator.java\0 \0\22\0\20\0\0\0\4\0\1\0\r\0\7\0\0\0\1\0\n\0\7\0\0\0\1\0\v\0\7\0\0\0\1\0\t\0\7\0\0\0\1\0\1\0\3\0\2\0\1\0\4\0\0\0F\0\2\0\5\0\0\0\32*\267\0\34*\33\265\0\33*\34\265\0\31*\35\265\0\32*\25\4\265\0\30\261\0\0\0\1\0\6\0\0\0\32\0\6\0\0\2\351\0\4\2\352\0\t\2\353\0\16\2\354\0\23\2\355\0\31\2\356\0\2\0\10\0\0\0\2\0\36\0\5\0\0\0\n\0\1\0\22\0\21\0\35\0\n", 482) = 482 30059 mprotect(0x7fb3144e4000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 27829314, SEEK_SET) = 27829314 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305Bl-s\277\343\1\0\0\343\1\0\0!\0\0\0", 30) = 30 30059 lseek(4, 27829377, SEEK_SET) = 27829377 30059 read(4, "\312\376\272\276\0\0\0003\0\23\1\0\17ANNOTATION_TYPE\1\0\7RUNTIME\1\0\31RuntimeVisibleAnnotations\1\0\nSourceFile\1\0\vTarget.java\1\0\20java/lang/Object\1\0\37java/lang/annotation/Annotation\1\0\33java/lang/annotation/Target\1\0\5value\7\0\6\7\0\7\7\0\10\1\0!Ljava/lang/annotation/Documented;\1\0\"Ljava/lang/annotation/ElementType;\1\0 Ljava/lang/annotation/Retention;\1\0&Ljava/lang/annotation/RetentionPolicy;\1\0\35Ljava/lang/annotation/Target;\1\0%()[Ljava/lang/annotation/ElementType;&\1\0\f\0\n\0\1\0\v\0\0\0\1\4\1\0\t\0\22\0\0\0\2\0\4\0\0\0\2\0\5\0\3\0\0\0\37\0\3\0\r\0\0\0\17\0\1\0\te\0\20\0\2\0\21\0\1\0\t[\0\1e\0\16\0\1", 483) = 483 30059 lseek(4, 27824725, SEEK_SET) = 27824725 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\316b\2248\361\4\0\0\361\4\0\0&\0\0\0", 30) = 30 30059 lseek(4, 27824793, SEEK_SET) = 27824793 30059 read(4, "\312\376\272\276\0\0\0003\0C\10\0\r\10\0\16\10\0\20\10\0\21\10\0\23\10\0\24\10\0\25\10\0\30\1\0\7$VALUES\1\0\3()V\1\0\10\1\0\6\1\0\17ANNOTATION_TYPE\1\0\vCONSTRUCTOR\1\0\4Code\1\0\5FIELD\1\0\16LOCAL_VARIABLE\1\0\17LineNumberTable\1\0\6METHOD\1\0\7PACKAGE\1\0\tPARAMETER\1\0\tSignature\1\0\nSourceFile\1\0\4TYPE\1\0#[Ljava/lang/annotation/ElementType;\1\0\5clone\1\0\16java/lang/Enum\1\0 java/lang/annotation/ElementType\1\0\7valueOf\1\0\6values\7\0\31\7\0\33\7\0\34\1\0\"Ljava/lang/annotation/ElementType;\1\0004Ljava/lang/Enum;\1\0\24()Ljava/lang/Object;\1\0\26(Ljava/lang/String;I)V\1\0%()[Ljava/lang/annotation/ElementType;\1\0006(Ljava/lang/String;)Ljava/lang/annotation/ElementType;\1\0005(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Enum;\f\0\r\0\"\f\0\16\0\"\f\0\20\0\"\f\0\21\0\"\f\0\23\0\"\f\0\24\0\"\f\0\25\0\"\f\0\30\0\"\f\0\t\0\31\f\0\32\0$\f\0\f\0%\f\0\35\0(\t\0!\0)\t\0!\0*\t\0!\0+\t\0!\0,\t\0!\0-\t\0!\0.\t\0!\0/\t\0!\0000\t\0!\0001\n\0\37\0002\n\0 \0003\n\0 \0004\n\0!\0003\1\0\20ElementType.java@1\0!\0 \0\0\0\t@\31\0\30\0\"\0\0@\31\0\20\0\"\0\0@\31\0\23\0\"\0\0@\31\0\25\0\"\0\0@\31\0\16\0\"\0\0@\31\0\21\0\"\0\0@\31\0\r\0\"\0\0@\31\0\24\0\"\0\0\20\32\0\t\0\31\0\0\0\4\0\t\0\36\0&\0\1\0\17\0\0\0\"\0\1\0\0\0\0\0\n\262\0=\266\0>\300\0\37\260\0\0\0\1\0\22\0\0\0\6\0\1\0\0\0'\0\t\0\35\0'\0\1\0\17\0\0\0#\0\2\0\1\0\0\0\v\23\0!*\270\0@\300\0!\260\0\0\0\1\0\22\0\0\0\6\0\1\0\0\0'\0\2\0\f\0%\0\2\0\17\0\0\0\37\0\3\0\3\0\0\0\7*+\34\267\0?\261\0\0\0\1\0\22\0\0\0\6\0\1"..., 1265) = 1265 30059 lseek(4, 27824215, SEEK_SET) = 27824215 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\235f\203G\273\1\0\0\273\1\0\0%\0\0\0", 30) = 30 30059 lseek(4, 27824282, SEEK_SET) = 27824282 30059 read(4, "\312\376\272\276\0\0\0003\0\22\1\0\17ANNOTATION_TYPE\1\0\7RUNTIME\1\0\31RuntimeVisibleAnnotations\1\0\nSourceFile\1\0\20java/lang/Object\1\0\37java/lang/annotation/Annotation\1\0\37java/lang/annotation/Documented\1\0\5value\7\0\5\7\0\6\7\0\7\1\0!Ljava/lang/annotation/Documented;\1\0\"Ljava/lang/annotation/ElementType;\1\0 Ljava/lang/annotation/Retention;\1\0&Ljava/lang/annotation/RetentionPolicy;\1\0\35Ljava/lang/annotation/Target;\1\0\17Documented.java&\1\0\v\0\t\0\1\0\n\0\0\0\0\0\2\0\4\0\0\0\2\0\21\0\3\0\0\0\37\0\3\0\f\0\0\0\16\0\1\0\10e\0\17\0\2\0\20\0\1\0\10[\0\1e\0\r\0\1", 443) = 443 30059 lseek(4, 56264263, SEEK_SET) = 56264263 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305Bhj\360%\34\7\0\0\34\7\0\0$\0\0\0", 30) = 30 30059 lseek(4, 56264329, SEEK_SET) = 56264329 30059 read(4, "\312\376\272\276\0\0\0003\0Q\1\0\3()I\1\0\5()TE;\1\0\3()V\1\0\3()Z\1\0\25(Ljava/lang/Object;)V\1\0\6(TE;)V\1\0\6\1\0\21AbstractList.java\1\0\4Code\1\0\1I\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\3add\1\0\26checkForComodification\1\0\6cursor\1\0\20expectedModCount\1\0\3get\1\0\vhasPrevious\1\0\37java/lang/IllegalStateException\1\0#java/lang/IndexOutOfBoundsException\1\0\26java/util/AbstractList\1\0\30java/util/AbstractList$1\1\0\32java/util/AbstractList$Itr\1\0\36java/util/AbstractList$ListItr\1\0)java/util/ConcurrentModificationException\1\0\26java/util/ListIterator\1\0 java/util/NoSuchElementException\1\0\7lastRet\1\0\10modCount\1\0\tnextIndex\1\0\10previous\1\0\rpreviousIndex\1\0\3set\1\0\6this$0\7\0\26\7\0\27\7\0\30\7\0\31\7\0\32\7\0\33\7\0\34\7\0\35\7\0\36\1\0\30Ljava/util/AbstractList;\1\0>Ljava/util/AbstractList.Itr;Ljava/util/ListIterator;\1\0\24()Ljava/lang/Object;\1\0\25(I)Ljava/lang/Object;\1\0\26(ILjava/lang/Object;)V\1\0\34(Ljava/util/AbstractList;I)V\1\0'(ILjava/lang/Object;)Ljava/lang/Object;\1\0005(Ljava/util/AbstractList;Ljava/util/AbstractList$1;)V\f\0\22\0\n\f\0\23\0\n\f\0\37\0\n\f\0 \0\n\f\0%\0/\f\0\7\0\3\f\0\21\0\3\f\0\24\0002\f\0\20\0003\f\0$\0005\f\0\7"..., 1820) = 1820 30059 lseek(4, 57393877, SEEK_SET) = 57393877 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305Bq\335\37\344\372\1\0\0\372\1\0\0\34\0\0\0", 30) = 30 30059 lseek(4, 57393935, SEEK_SET) = 57393935 30059 read(4, "\312\376\272\276\0\0\0003\0\33\1\0\3()I\1\0\5()TE;\1\0\3()V\1\0\3()Z\1\0\25(Ljava/lang/Object;)V\1\0\6(TE;)V\1\0\tSignature\1\0\nSourceFile\1\0\3add\1\0\7hasNext\1\0\vhasPrevious\1\0\20java/lang/Object\1\0\22java/util/Iterator\1\0\26java/util/ListIterator\1\0\4next\1\0\tnextIndex\1\0\10previous\1\0\rpreviousIndex\1\0\6remove\1\0\3set\7\0\f\7\0\r\7\0\16\1\0ALjava/lang/Object;Ljava/util/Iterator;\1\0\24()Ljava/lang/Object;\1\0\21ListIterator.java\6\1\0\27\0\25\0\1\0\26\0\0\0\t\4\1\0\n\0\4\0\0\4\1\0\17\0\31\0\1\0\7\0\0\0\2\0\2\4\1\0\v\0\4\0\0\4\1\0\21\0\31\0\1\0\7\0\0\0\2\0\2\4\1\0\20\0\1\0\0\4\1\0\22\0\1\0\0\4\1\0\23\0\3\0\0\4\1\0\24\0\5\0\1\0\7\0\0\0\2\0\6\4\1\0\t\0\5\0\1\0\7\0\0\0\2\0\6\0\2\0\10\0\0\0\2\0\32\0\7\0\0\0\2\0\30", 506) = 506 30059 futex(0x7fb31443d954, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x7fb31443d950, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1} 30088 <... futex resumed> ) = 0 30088 futex(0x7fb31443d928, FUTEX_WAIT_PRIVATE, 2, NULL 30059 <... futex resumed> ) = 1 30059 futex(0x7fb31443d928, FUTEX_WAKE_PRIVATE, 1 30088 <... futex resumed> ) = 0 30059 <... futex resumed> ) = 1 30088 futex(0x7fb31443d928, FUTEX_WAKE_PRIVATE, 1) = 0 30088 futex(0x7fb31443af54, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x7fb31443af50, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1}) = 1 30087 <... futex resumed> ) = 0 30087 futex(0x7fb31443af28, FUTEX_WAKE_PRIVATE, 1) = 0 30087 futex(0x7fb31443af54, FUTEX_WAIT_PRIVATE, 13, NULL 30059 mprotect(0x7fb3144e5000, 4096, PROT_READ|PROT_WRITE) = 0 30088 futex(0x7fb31443d954, FUTEX_WAIT_PRIVATE, 9, NULL 30059 futex(0x7fb31443af54, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x7fb31443af50, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1} 30087 <... futex resumed> ) = 0 30059 <... futex resumed> ) = 1 30087 futex(0x7fb31443af28, FUTEX_WAIT_PRIVATE, 2, NULL 30059 futex(0x7fb31443af28, FUTEX_WAKE_PRIVATE, 1 30087 <... futex resumed> ) = -1 EAGAIN (Resource temporarily unavailable) 30059 <... futex resumed> ) = 0 30087 futex(0x7fb31443af28, FUTEX_WAKE_PRIVATE, 1) = 0 30087 futex(0x7fb31443d954, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x7fb31443d950, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1} 30088 <... futex resumed> ) = 0 30087 <... futex resumed> ) = 1 30088 futex(0x7fb31443d928, FUTEX_WAIT_PRIVATE, 2, NULL 30087 futex(0x7fb31443d928, FUTEX_WAKE_PRIVATE, 1 30088 <... futex resumed> ) = -1 EAGAIN (Resource temporarily unavailable) 30087 <... futex resumed> ) = 0 30088 futex(0x7fb31443d928, FUTEX_WAKE_PRIVATE, 1) = 0 30088 futex(0x7fb31443d954, FUTEX_WAIT_PRIVATE, 11, NULL 30087 mprotect(0x7fb27c067000, 45056, PROT_READ|PROT_WRITE) = 0 30087 mprotect(0x7fb27c072000, 4096, PROT_READ|PROT_WRITE) = 0 30087 mprotect(0x7fb27c073000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb3144e6000, 32768, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb3144ee000, 8192, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 28442821, SEEK_SET) = 28442821 30059 read(4, "PK\3\4\n\0\0\0\0\0008\246\305B8\353\25\242\363\2\0\0\363\2\0\0004\0\0\0", 30) = 30 30059 lseek(4, 28442903, SEEK_SET) = 28442903 30059 read(4, "\312\376\272\276\0\0\0003\0\37\1\0\30(Ljava/lang/Throwable;)V\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\1J\1\0\17LineNumberTable\1\0\nSourceFile\1\0\10getCause\1\0\26getUndeclaredThrowable\1\0\32java/lang/RuntimeException\1\0\23java/lang/Throwable\1\0.java/lang/reflect/UndeclaredThrowableException\1\0\20serialVersionUID\1\0\23undeclaredThrowable\5\4\224\330\334s\371\374\377\7\0\n\7\0\v\7\0\f\1\0\25Ljava/lang/Throwable;\1\0\27()Ljava/lang/Throwable;\1\0*(Ljava/lang/Throwable;Ljava/lang/String;)V\1\0*(Ljava/lang/String;Ljava/lang/Throwable;)V\f\0\16\0\24\f\0\2\0\1\f\0\2\0\27\t\0\23\0\30\n\0\21\0\31\n\0\21\0\32\1\0!UndeclaredThrowableException.java\0!\0\23\0\21\0\0\0\2\0\30\0\r\0\5\0\1\0\4\0\0\0\2\0\17\0\2\0\16\0\24\0\0\0\4\0\1\0\2\0\1\0\1\0\3\0\0\0.\0\2\0\2\0\0\0\16*\1\300\0\22\267\0\34*+\265\0\33\261\0\0\0\1\0\6\0\0\0\16\0\3\0\0\0K\0\10\0L\0\r\0M\0\1\0\2\0\26\0\1\0\3\0\0\0,\0\3\0\3\0\0\0\f*,\1\267\0\35*+\265\0\33\261\0\0\0\1\0\6\0\0\0\16\0\3\0\0\0Z\0\6\0[\0\v\0\\\0\1\0\t\0\25\0\1\0\3\0\0\0\35\0\1\0\1\0\0\0\5*\264\0\33\260\0\0\0\1\0\6\0\0\0\6\0\1\0\0\0i\0\1\0\10\0\25\0\1\0\3\0\0\0\35\0\1\0\1\0\0\0\5*\264\0\33\260\0\0\0\1\0\6\0\0\0\6\0\1\0\0\0u\0\1\0\7\0\0\0\2\0\36", 755) = 755 30087 mprotect(0x7fb27c074000, 57344, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb3144f0000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb3144f1000, 12288, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 59274573, SEEK_SET) = 59274573 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\252\207\342i\216\1\0\0\216\1\0\0%\0\0\0", 30) = 30 30059 lseek(4, 59274640, SEEK_SET) = 59274640 30059 read(4, "\312\376\272\276\0\0\0003\0\25\1\0\3()V\1\0\25(Ljava/lang/String;)V\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\1J\1\0\17LineNumberTable\1\0\nSourceFile\1\0\37java/lang/NoSuchMethodException\1\0&java/lang/ReflectiveOperationException\1\0\20serialVersionUID\5E\335\275\236^\306\5\333\7\0\t\7\0\n\f\0\3\0\1\f\0\3\0\2\n\0\17\0\20\n\0\17\0\21\1\0\32NoSuchMethodException.java\0!\0\16\0\17\0\0\0\1\0\32\0\v\0\6\0\1\0\5\0\0\0\2\0\f\0\2\0\1\0\3\0\1\0\1\0\4\0\0\0!\0\1\0\1\0\0\0\5*\267\0\22\261\0\0\0\1\0\7\0\0\0\n\0\2\0\0\0*\0\4\0+\0\1\0\3\0\2\0\1\0\4\0\0\0\"\0\2\0\2\0\0\0\6*+\267\0\23\261\0\0\0\1\0\7\0\0\0\n\0\2\0\0\0003\0\5\0004\0\1\0\10\0\0\0\2\0\24", 398) = 398 30087 mprotect(0x7fb27c082000, 20480, PROT_READ|PROT_WRITE) = 0 30087 mprotect(0x7fb27c087000, 90112, PROT_READ|PROT_WRITE) = 0 30059 lseek(5, 4417536, SEEK_SET) = 4417536 30059 read(5, "PK\3\4\n\0\0\10\10\0d:&=L|\276h\0\v\0\0/\30\0\0/\0\0\0", 30) = 30 30059 lseek(5, 4417613, SEEK_SET) = 4417613 30059 read(5, "\225X\txT\325\25\376\357d&o2y!aB\200\201(aQ\223\tI\252 j\200HDP0,\32\32\5\324t2y\304\27gsf\202\306Vk\213\212\266\325\332\326.\244U[k\215Z\253\200&\1i\1[\305\252\265\255\255\265\273\335W[\273\267\332E\375\357}o^\336L&`?\276\334w\227s\316=\313\177\316\271\3033\257?v\20\300\311\342\270\0\316\301\35eX\215;\3\34\356\222\313Ok\370L\0w\343\263\345\360\341\36\271\375\271\0\356\305p\0\367\341~\r\17\224\243\34\237\367\343\301\0\276\200\207$\353\303r\330-\207=r\330+Y\36\221\263G\3131\202Q9\33\223\263}R\302\376\0\36\303\1\271\367E\r_\322p0\200Z\334!\217\17\371qX.\36\227\303\227%\331W4;\234\245\271\370x\372\243\274u\233\231\350\315\267C\240\271\210\277\32\216\26M\21\0218\241\270\216\23i\223\324!mdT\210Dj\322\260:\306e$\32\315\314\252x*;HH\327ODJ\3\201'\350&\257\2147\2474\241\306E\265\352\252\250\221\363M\300\r\250@\237\221=;\207\226i\365\r\305Rh\212\242q!5\237\316\301j\31\3516\330~\367s\276\236\312S%a\362o\r\235\235\351\311\317$\213\361\254\0013f\1W'\217c\262\300<\336r\314\34\225\367\254\266\242:;O\253\3024\25503\353h\244\271\301\266\241\244^\272\254L!b\323`\212\376\232\352\342^\31cN\223kz>\"Ig\243rZ!\361\262p\233T'\322\333\333\25\211\r\30\223D\211\350\367m\267\316\3f\246\335\251\33\345\31#;\276\362\326o\221\224\202\376\232^D\212u\30\23\250r\1\262\303\314\310Xy\214\253\3509\27\317\232X\314\350\213\304\332\243Q#\223q\303\240\314\3148\201\367f\225\7\246D\223\211\355F:k\344l\320\315\314\312dL\372Q\371\254\222>\214\230\tW\214\26\24h\260l\"~\224[\314\214\225\350\304}F\31\301\275l\262\323\236\6:U~\2546\245gC\305R\272Y\212\325q!^\326\261\36\33t$p\221\216?\340\217\2s\216\221:\32^\321\361'\374Y\307_0\240\343r\3044\374UG\32\177\323\360w\35\377\300?\5\346\277\205\274\325q\23\6\4\240\341_:^\305k:\316\305"..., 2816) = 2816 30087 mprotect(0x7fb27c09d000, 69632, PROT_READ|PROT_WRITE) = 0 30087 mprotect(0x7fb27c0ae000, 32768, PROT_READ|PROT_WRITE 30059 mprotect(0x7fb3144f4000, 8192, PROT_READ|PROT_WRITE 30087 <... mprotect resumed> ) = 0 30059 <... mprotect resumed> ) = 0 30087 mprotect(0x7fb27c0b6000, 32768, PROT_READ|PROT_WRITE) = 0 30087 mprotect(0x7fb27c0be000, 32768, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb3144f6000, 4096, PROT_READ|PROT_WRITE) = 0 30087 mprotect(0x7fb27c0c6000, 32768, PROT_READ|PROT_WRITE) = 0 30059 lseek(5, 4420798, SEEK_SET) = 4420798 30059 read(5, "PK\3\4\n\0\0\10\10\0d:&=-\nq\25\213\1\0\0\230\2\0\0%\0\0\0", 30) = 30 30059 lseek(5, 4420865, SEEK_SET) = 4420865 30059 read(5, "\205RMO\333@\20}K\2\206\26HH\241\24(\37\342\20\265\7\2608s\242\215#E\2b%\6\265\352\1m\314\20md\257\243\335uD\376Z\17\374\0~\24b\34\241&\225\"qX\355\350\315\274\367ff\367\371\345\357\23\2003\34x\330\363\360\325\303\276\300v#h^\334\\Fw\3550j\265\257\357\302N\320l\375\n\272\2\265\313\201\34I?\221\272\357w\235Q\272\177.\260\3663\323\326I\355ne\222\3232*\2\353\206l\226\233\230~\344\372>!\201\315o\337\347Q7.\264\316\234t*\323\rz\220y\342\4 \360\301\322P\32\3512c\5\304\21\353e\303\242&4\364\240\36\251\0O\270\2318KS\251\357\33dc\243&\5L\355N|\233\252p\255\204\254\222\222#cO\vw\201\235N\256\235J\351VY\325Khj\317\232G3\35\312\177\t\277\303|]D\334\357\342\250\30Q\240\376Ni\230%*\0363\301\353\334\\G\255\253@`\177>%\222\246O\216+\217\347\347\203\204R\326\214\306C\342\242r\364;d\255C\236\334\357Qn\235?x[\2\31\177:\254@u*\326\356\r(\346\275\36\316\325\237n\240\316[\305\2\237\22\237\35\224\261\310\367\22\177\216\5x(\227\5\226\261R\274\r#%\213\217\f\254\316\2k\f\254\317\2\25\6\252\377QXic\242W\303'\276\3678\332\344\364\26\3413\266\361\245\10\377@\20\233\357\276\2", 395) = 395 30087 mprotect(0x7fb27c0ce000, 53248, PROT_READ|PROT_WRITE) = 0 30090 <... futex resumed> ) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091214, 635004000}, ffffffff 30087 mprotect(0x7fb27c0db000, 4096, PROT_READ|PROT_WRITE) = 0 30059 futex(0x7fb31443d954, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x7fb31443d950, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1} 30088 <... futex resumed> ) = 0 30088 futex(0x7fb31443d928, FUTEX_WAIT_PRIVATE, 2, NULL 30059 <... futex resumed> ) = 1 30059 futex(0x7fb31443d928, FUTEX_WAKE_PRIVATE, 1 30088 <... futex resumed> ) = 0 30059 <... futex resumed> ) = 1 30088 futex(0x7fb31443d928, FUTEX_WAKE_PRIVATE, 1) = 0 30087 mprotect(0x7fb27c0dc000, 8192, PROT_READ|PROT_WRITE) = 0 30087 futex(0x7fb31443af54, FUTEX_WAIT_PRIVATE, 15, NULL 30059 lseek(4, 29604324, SEEK_SET) = 29604324 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\235U\220\17\367\3\0\0\367\3\0\0)\0\0\0", 30) = 30 30059 lseek(4, 29604395, SEEK_SET) = 29604395 30059 read(4, "\312\376\272\276\0\0\0003\0+\1\0\5()TE;\1\0\3()V\1\0\3()Z\1\0\10\1\0\6\1\0\4Code\1\0\16EMPTY_ITERATOR\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\7hasNext\1\0\37java/lang/IllegalStateException\1\0\20java/lang/Object\1\0\25java/util/Collections\1\0\27java/util/Collections$1\1\0#java/util/Collections$EmptyIterator\1\0\22java/util/Iterator\1\0 java/util/NoSuchElementException\1\0\4next\1\0\6remove\7\0\r\7\0\16\7\0\17\7\0\20\7\0\21\7\0\22\7\0\23\1\0%Ljava/util/Collections$EmptyIterator;\1\0009Ljava/util/Collections$EmptyIterator;\1\0ALjava/lang/Object;Ljava/util/Iterator;\1\0\24()Ljava/lang/Object;\1\0\34(Ljava/util/Collections$1;)V\f\0\7\0\35\f\0\5\0\2\t\0\32\0\"\n\0\26\0#\n\0\27\0#\n\0\32\0#\n\0\34\0#\1\0\20Collections.java\1\0\rEmptyIterator\0 \0\32\0\27\0\1\0\33\0\1\0\30\0\7\0\35\0\1\0\n\0\0\0\2\0\36\0\6\0\2\0\5\0\2\0\1\0\6\0\0\0\35\0\1\0\1\0\0\0\5*\267\0&\261\0\0\0\1\0\t\0\0\0\6\0\1\0\0\v\271\0\1\0\f\0\3\0\1\0\6\0\0\0\32\0\1\0\1\0\0\0\2\3\254\0\0\0\1\0\t\0\0\0\6\0\1\0\0\v\275\0\1\0\24\0 \0\2\0\6\0\0\0 \0\2\0\1\0\0\0\10\273\0\34Y\267\0(\277\0\0\0\1\0\t\0\0\0\6\0\1\0\0\v\276\0\n\0\0\0\2\0\1\0\1\0\25\0\2\0\1\0\6\0\0\0 \0\2\0\1\0\0\0\10\273\0\26Y\267\0%\277\0\0\0\1\0\t\0\0\0\6\0\1\0\0\v\277\20\0\0\5\0!\0\1\0\6\0\0\0\35\0\1\0\2\0\0\0\5*\267\0'\261\0\0\0\1\0\t\0\0\0\6\0\1\0\0\v\271\0\10\0\4\0\2\0\1\0\6\0\0\0#\0\2\0\0\0\0\0\v\273\0\32Y\267\0'\263\0$\261\0\0\0\1\0\t\0\0\0\6\0\1\0\0\v\272\0\3\0\v\0\0\0\2\0)\0\n\0\0\0\2\0\37\0\10\0\0\0\22\0\2\0"..., 1015) = 1015 30059 lseek(4, 58661727, SEEK_SET) = 58661727 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305Bj\346\362\322\36\4\0\0\36\4\0\0+\0\0\0", 30) = 30 30059 lseek(4, 58661800, SEEK_SET) = 58661800 30059 read(4, "\312\376\272\276\0\0\0003\0.\1\0\6\1\0\4Code\1\0\5Entry\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\27java/util/LinkedHashMap\1\0\31java/util/LinkedHashMap$1\1\0\35java/util/LinkedHashMap$Entry\1\0%java/util/LinkedHashMap$EntryIterator\1\0*java/util/LinkedHashMap$LinkedHashIterator\1\0\rjava/util/Map\1\0\23java/util/Map$Entry\1\0\4next\1\0\tnextEntry\1\0\6this$0\7\0\10\7\0\t\7\0\n\7\0\v\7\0\f\7\0\r\7\0\16\1\0\31Ljava/util/LinkedHashMap;\1\0SLjava/util/LinkedHashMap.LinkedHashIterator;>;\1\0\24()Ljava/lang/Object;\1\0\34(Ljava/util/LinkedHashMap;)V\1\0!()Ljava/util/LinkedHashMap$Entry;\1\0\27()Ljava/util/Map$Entry;\1\0\37()Ljava/util/Map$Entry;\1\0007(Ljava/util/LinkedHashMap;Ljava/util/LinkedHashMap$1;)V\f\0\21\0\31\f\0\1\0\34\f\0\20\0\35\f\0\17\0\36\f\0\1\0 \t\0\25\0!\n\0\25\0\"\n\0\25\0#\n\0\25\0$\n\0\26\0%\1\0\rEntryIterator\1\0\22LinkedHashIterator\1\0\22LinkedHashMap.java\0 \0\25\0\26\0\0\0\1\20\20\0\21\0\31\0\0\0\4\0\2\0\1\0\34\0\1\0\2\0\0\0$\0\3\0\2\0\0\0\f*+\265\0&*+\1\267\0*\261\0\0\0\1\0\5\0\0\0\6\0\1\0\0\1\234\0\1\0\17\0\36\0\2\0\2\0\0\0\35\0\1\0\1\0\0\0\5*\266\0(\260\0\0\0\1\0\5\0\0\0\6\0\1\0\0\1\235\0\6\0\0\0\2\0\37\20A\0\17\0\33\0\1\0\2\0\0\0\35\0\1\0\1\0\0\0\5*\266\0)\260\0\0\0\1\0\5\0\0\0\6\0\1\0\0\1\234\20\0\0\1\0 \0\1\0\2\0\0\0\36\0\2\0\3\0\0\0\6*+\267\0'\261\0\0\0\1\0\5\0\0\0\6\0\1\0\0\1\234\0\3\0\7\0\0\0\2\0-\0\6"..., 1054) = 1054 30088 mprotect(0x7fb270021000, 90112, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 59680778, SEEK_SET) = 59680778 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\310\224\16\353\366\6\0\0\366\6\0\0000\0\0\0", 30) = 30 30059 lseek(4, 59680856, SEEK_SET) = 59680856 30059 read(4, "\312\376\272\276\0\0\0003\0N\1\0\3()V\1\0\3()Z\1\0\6\1\0\4Code\1\0\5Entry\1\0\1I\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\22Ljava/lang/Object;\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\naccess$100\1\0\5after\1\0\20expectedModCount\1\0\7hasNext\1\0\37java/lang/IllegalStateException\1\0\20java/lang/Object\1\0)java/util/ConcurrentModificationException\1\0\22java/util/Iterator\1\0\27java/util/LinkedHashMap\1\0\31java/util/LinkedHashMap$1\1\0\35java/util/LinkedHashMap$Entry\1\0*java/util/LinkedHashMap$LinkedHashIterator\1\0 java/util/NoSuchElementException\1\0\3key\1\0\flastReturned\1\0\10modCount\1\0\tnextEntry\1\0\6remove\1\0\6this$0\7\0\21\7\0\22\7\0\23\7\0\24\7\0\25\7\0\26\7\0\27\7\0\30\7\0\31\1\0\31Ljava/util/LinkedHashMap;\1\0\37Ljava/util/LinkedHashMap$Entry;\1\0'Ljava/util/LinkedHashMap$Entry;\1\0ALjava/lang/Object;Ljava/util/Iterator;\1\0\34(Ljava/util/LinkedHashMap;)V\1\0!()Ljava/util/LinkedHashMap$Entry;\1\0)()Ljava/util/LinkedHashMap$Entry;\1\0&(Ljava/lang/Object;)Ljava/lang/Object;\1\0007(Ljava/util/LinkedHashMap;Ljava/util/LinkedHashMap$1;)V\1\0:(Ljava/util/LinkedHashMap;)Ljava/util/LinkedHas"..., 1782) = 1782 30059 lseek(5, 4421260, SEEK_SET) = 4421260 30059 read(5, "PK\3\4\n\0\0\10\10\0d:&=\24\357\244\5\6\1\0\0\257\1\0\0)\0\0\0", 30) = 30 30059 lseek(5, 4421331, SEEK_SET 30088 mprotect(0x7fb270037000, 40960, PROT_READ|PROT_WRITE 30059 <... lseek resumed> ) = 4421331 30088 <... mprotect resumed> ) = 0 30059 read(5, "\205\220KK\303@\24\205\317\255\251\321\372\252\217\215\210(\nE7\r\256])T\20|\2244\n\342j\222^\302\224\311D\222I\241\177\315\205?\300\37%\336ta\25\2.\346\316\31\3567\347p\357\347\327\373\7\200\v\354\370\330\362\321\365\261MhO\225\251\230\260wv~7QS\25\30e\323`\344\nm\323KBg\224WE\3027\332\10\263\33r9\177^Wvl\270_\363\204\375\260\262Ng\374\254K\35\33\276\2626w\312\351\334\226\204\343_\236\352\247\21\204\354\330\326J\22z\377 \303\334\350d&\240\37>=D\267\367\3\302a\363\227H\25);!O\232\373\3\303\231xF\2637\26\310\213^\206\342u\232\344Y\20sU\272`\"2Sv\314E\360wPBwa\370\30O8q\204\243\306\214\305\364=\2\241%gIvN\236\4\242-\252\205\345y\365\261\"\367\201\250Ua\1\0\4Code\1\0\nExceptions\1\0\1I\1\0\17LineNumberTable\1\0\nSourceFile\1\0\rStackMapTable\1\0\1Z\1\0\fbooleanValue\1\0\tensureObj\1\0\vfieldOffset\1\0\3get\1\0\ngetBoolean\1\0\7getByte\1\0\7getChar\1\0\tgetDouble\1\0\10getFloat\1\0\6getInt\1\0\7getLong\1\0\10getShort\1\0\7isFinal\1\0\21java/lang/Boolean\1\0 java/lang/IllegalAccessException\1\0\"java/lang/IllegalArgumentException\1\0\"newGetByteIllegalArgumentException\1\0\"newGetCharIllegalArgumentException\1\0$newGetDoubleIllegalArgumentException\1\0#newGetFloatIllegalArgumentException\1\0!newGetIntIllegalArgumentException\1\0\"newGetLongIllegalArgumentException\1\0#newGetShortIllegalArgumentException\1\0\nputBoolean\1\0\3set\1\0\nsetBoolean\1\0\7setByte\1\0\7setChar\1\0\tsetDouble\1\0\10setFloat\1\0\6setInt\1\0\7setLong\1\0\10setShort\1\0\17sun/misc/Unsafe\1\0*sun/reflect/UnsafeBooleanFieldAccessorImpl\1\0#sun/reflect/UnsafeFieldAccessorImpl\1\0%throwFinalFieldIll"..., 3162) = 3162 30088 mprotect(0x7fb270041000, 8192, PROT_READ|PROT_WRITE) = 0 30088 mprotect(0x7fb270043000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 57373398, SEEK_SET) = 57373398 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B\356Pa>\26\r\0\0\26\r\0\0/\0\0\0", 30) = 30 30059 lseek(4, 57373475, SEEK_SET) = 57373475 30059 read(4, "\312\376\272\276\0\0\0003\0\235\1\0\4(B)V\1\0\4(C)V\1\0\4(D)V\1\0\4(F)V\1\0\4(I)V\1\0\4(J)V\1\0\25(Ljava/lang/Object;)D\1\0\25(Ljava/lang/Object;)I\1\0\25(Ljava/lang/Object;)J\1\0\25(Ljava/lang/Object;)V\1\0\25(Ljava/lang/Object;)Z\1\0\4(S)V\1\0\4(Z)V\1\0\6\1\0\4Code\1\0\nExceptions\1\0\1I\1\0\17LineNumberTable\1\0\nSourceFile\1\0\rStackMapTable\1\0\1Z\1\0\tensureObj\1\0\5field\1\0\vfieldOffset\1\0\3get\1\0\ngetBoolean\1\0\7getByte\1\0\7getChar\1\0\10getClass\1\0\tgetDouble\1\0\10getFloat\1\0\6getInt\1\0\7getLong\1\0\tgetObject\1\0\10getShort\1\0\7getType\1\0\20isAssignableFrom\1\0\7isFinal\1\0\17java/lang/Class\1\0 java/lang/IllegalAccessException\1\0\"java/lang/IllegalArgumentException\1\0\20java/lang/Object\1\0\27java/lang/reflect/Field\1\0%newGetBooleanIllegalArgumentException\1\0\"newGetByteIllegalArgumentException\1\0\"newGetCharIllegalArgumentException\1\0$newGetDoubleIllegalArgumentException\1\0#newGetFloatIllegalArgumentException\1\0!newGetIntIllegalArgumentException\1\0\"newGetLongIllegalArgumentException\1\0#newGetShortIllegalArgumentException\1\0\tputObject\1\0\3set\1\0\nsetBoolean\1\0\7setByte\1\0\7setChar\1\0\tsetDouble\1\0\10setFloat\1\0\6setInt\1\0\7setLong\1\0\10setShort\1"..., 3350) = 3350 30059 futex(0x7fb31443af54, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x7fb31443af50, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1} 30087 <... futex resumed> ) = 0 30059 <... futex resumed> ) = 1 30087 futex(0x7fb31443af28, FUTEX_WAIT_PRIVATE, 2, NULL 30059 futex(0x7fb31443af28, FUTEX_WAKE_PRIVATE, 1 30087 <... futex resumed> ) = -1 EAGAIN (Resource temporarily unavailable) 30059 <... futex resumed> ) = 0 30087 futex(0x7fb31443af28, FUTEX_WAKE_PRIVATE, 1) = 0 30088 mprotect(0x7fb270044000, 110592, PROT_READ|PROT_WRITE) = 0 30087 futex(0x7fb31443af54, FUTEX_WAIT_PRIVATE, 17, NULL 30088 madvise(0x7fb27005a000, 20480, MADV_DONTNEED) = 0 30059 futex(0x7fb31443af54, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x7fb31443af50, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1} 30087 <... futex resumed> ) = 0 30059 <... futex resumed> ) = 1 30087 futex(0x7fb31443af28, FUTEX_WAIT_PRIVATE, 2, NULL 30059 futex(0x7fb31443af28, FUTEX_WAKE_PRIVATE, 1 30087 <... futex resumed> ) = -1 EAGAIN (Resource temporarily unavailable) 30059 <... futex resumed> ) = 0 30087 futex(0x7fb31443af28, FUTEX_WAKE_PRIVATE, 1) = 0 30088 mprotect(0x7fb27005f000, 32768, PROT_READ|PROT_WRITE) = 0 30087 mprotect(0x7fb27c0de000, 32768, PROT_READ|PROT_WRITE 30088 futex(0x7fb31a6e7ba0, FUTEX_WAIT_PRIVATE, 2, NULL 30087 <... mprotect resumed> ) = 0 30087 futex(0x7fb31a6e7ba0, FUTEX_WAKE_PRIVATE, 1 30088 <... futex resumed> ) = 0 30087 <... futex resumed> ) = 1 30088 futex(0x7fb31a6e7ba0, FUTEX_WAKE_PRIVATE, 1) = 0 30087 futex(0x7fb31a6e7ba0, FUTEX_WAKE_PRIVATE, 1) = 0 30059 mprotect(0x7fb3144f7000, 20480, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 57420687, SEEK_SET) = 57420687 30059 read(4, 30087 mprotect(0x7fb27c0e6000, 32768, PROT_READ|PROT_WRITE 30059 <... read resumed> "PK\3\4\n\0\0\0\0\0006\246\305BH\3\3000(\r\0\0(\r\0\0-\0\0\0", 30) = 30 30087 <... mprotect resumed> ) = 0 30059 lseek(4, 57420762, SEEK_SET) = 57420762 30059 read(4, 30087 mprotect(0x7fb27c0ee000, 32768, PROT_READ|PROT_WRITE 30059 <... read resumed> "\312\376\272\276\0\0\0003\0\226\1\0\3()B\1\0\3()C\1\0\3()I\1\0\3()J\1\0\3()S\1\0\4(D)V\1\0\4(F)V\1\0\4(J)V\1\0\25(Ljava/lang/Object;)D\1\0\25(Ljava/lang/Object;)I\1\0\25(Ljava/lang/Object;)J\1\0\25(Ljava/lang/Object;)V\1\0\25(Ljava/lang/Object;)Z\1\0\4(Z)V\1\0\6\1\0\4Code\1\0\nExceptions\1\0\1I\1\0\17LineNumberTable\1\0\nSourceFile\1\0\rStackMapTable\1\0\1Z\1\0\tbyteValue\1\0\tcharValue\1\0\tensureObj\1\0\vfieldOffset\1\0\3get\1\0\ngetBoolean\1\0\7getByte\1\0\7getChar\1\0\tgetDouble\1\0\10getFloat\1\0\6getInt\1\0\7getLong\1\0\10getShort\1\0\10intValue\1\0\7isFinal\1\0\16java/lang/Byte\1\0\23java/lang/Character\1\0 java/lang/IllegalAccessException\1\0\"java/lang/IllegalArgumentException\1\0\21java/lang/Integer\1\0\16java/lang/Long\1\0\17java/lang/Short\1\0\tlongValue\1\0%newGetBooleanIllegalArgumentException\1\0\"newGetByteIllegalArgumentException\1\0\"newGetCharIllegalArgumentException\1\0!newGetIntIllegalArgumentException\1\0#newGetShortIllegalArgumentException\1\0\7putLong\1\0\3set\1\0\nsetBoolean\1\0\7setByte\1\0\7setChar\1\0\tsetDouble\1\0\10setFloat\1\0\6setInt\1\0\7setLong\1\0\10setShort\1\0\nshortValue\1\0\17sun/misc/Unsafe\1\0#sun/reflect/UnsafeFieldAccessorImpl\1\0'sun/reflect/UnsafeLongFie"..., 3368) = 3368 30088 futex(0x7fb31a6e7ba0, FUTEX_WAIT_PRIVATE, 2, NULL 30087 <... mprotect resumed> ) = 0 30087 futex(0x7fb31a6e7ba0, FUTEX_WAKE_PRIVATE, 1 30088 <... futex resumed> ) = 0 30087 <... futex resumed> ) = 1 30088 futex(0x7fb31a6e7ba0, FUTEX_WAKE_PRIVATE, 1) = 0 30087 mprotect(0x7fb27c0f6000, 32768, PROT_READ|PROT_WRITE) = 0 30087 mprotect(0x7fb27c0fe000, 32768, PROT_READ|PROT_WRITE) = 0 30088 mprotect(0x7fb270067000, 32768, PROT_READ|PROT_WRITE) = 0 30088 mprotect(0x7fb27006f000, 32768, PROT_READ|PROT_WRITE) = 0 30087 mprotect(0x7fb27c106000, 45056, PROT_READ|PROT_WRITE) = 0 30088 mprotect(0x7fb270077000, 167936, PROT_READ|PROT_WRITE) = 0 30088 madvise(0x7fb270097000, 36864, MADV_DONTNEED) = 0 30059 lseek(4, 57417359, SEEK_SET) = 57417359 30087 mprotect(0x7fb27c111000, 4096, PROT_READ|PROT_WRITE 30059 read(4, 30087 <... mprotect resumed> ) = 0 30059 <... read resumed> "PK\3\4\n\0\0\0\0\0006\246\305B\250!\370l\262\f\0\0\262\f\0\0000\0\0\0", 30) = 30 30087 mprotect(0x7fb27c112000, 32768, PROT_READ|PROT_WRITE 30059 lseek(4, 57417437, SEEK_SET 30087 <... mprotect resumed> ) = 0 30059 <... lseek resumed> ) = 57417437 30059 read(4, "\312\376\272\276\0\0\0003\0\220\1\0\3()B\1\0\3()C\1\0\3()I\1\0\3()S\1\0\4(D)V\1\0\4(F)V\1\0\4(I)V\1\0\4(J)V\1\0\25(Ljava/lang/Object;)D\1\0\25(Ljava/lang/Object;)I\1\0\25(Ljava/lang/Object;)J\1\0\25(Ljava/lang/Object;)V\1\0\25(Ljava/lang/Object;)Z\1\0\4(Z)V\1\0\6\1\0\4Code\1\0\nExceptions\1\0\1I\1\0\17LineNumberTable\1\0\nSourceFile\1\0\rStackMapTable\1\0\1Z\1\0\tbyteValue\1\0\tcharValue\1\0\tensureObj\1\0\vfieldOffset\1\0\3get\1\0\ngetBoolean\1\0\7getByte\1\0\7getChar\1\0\tgetDouble\1\0\10getFloat\1\0\6getInt\1\0\7getLong\1\0\10getShort\1\0\10intValue\1\0\7isFinal\1\0\16java/lang/Byte\1\0\23java/lang/Character\1\0 java/lang/IllegalAccessException\1\0\"java/lang/IllegalArgumentException\1\0\21java/lang/Integer\1\0\17java/lang/Short\1\0%newGetBooleanIllegalArgumentException\1\0\"newGetByteIllegalArgumentException\1\0\"newGetCharIllegalArgumentException\1\0#newGetShortIllegalArgumentException\1\0\6putInt\1\0\3set\1\0\nsetBoolean\1\0\7setByte\1\0\7setChar\1\0\tsetDouble\1\0\10setFloat\1\0\6setInt\1\0\7setLong\1\0\10setShort\1\0\nshortValue\1\0\17sun/misc/Unsafe\1\0#sun/reflect/UnsafeFieldAccessorImpl\1\0*sun/reflect/UnsafeIntegerFieldAccessorImpl\1\0%throwFinalFieldIllegalAccessException\1\0 throw"..., 3250) = 3250 30088 madvise(0x7fb27008f000, 32768, MADV_DONTNEED) = 0 30088 mprotect(0x7fb2700a0000, 32768, PROT_READ|PROT_WRITE) = 0 30087 mprotect(0x7fb27c11a000, 32768, PROT_READ|PROT_WRITE) = 0 30087 mprotect(0x7fb27c122000, 32768, PROT_READ|PROT_WRITE) = 0 30088 madvise(0x7fb27009f000, 36864, MADV_DONTNEED) = 0 30088 mprotect(0x7fb2700a8000, 4096, PROT_READ|PROT_WRITE) = 0 30088 mprotect(0x7fb2700a9000, 147456, PROT_READ|PROT_WRITE) = 0 30088 mprotect(0x7fb2700cd000, 32768, PROT_READ|PROT_WRITE) = 0 30088 futex(0x7fb31a6e7ba0, FUTEX_WAIT_PRIVATE, 2, NULL 30059 futex(0x7fb31a6e7ba0, FUTEX_WAKE_PRIVATE, 1 30088 <... futex resumed> ) = -1 EAGAIN (Resource temporarily unavailable) 30059 <... futex resumed> ) = 0 30088 futex(0x7fb31a6e7ba0, FUTEX_WAKE_PRIVATE, 1 30059 lseek(4, 55379029, SEEK_SET 30088 <... futex resumed> ) = 0 30059 <... lseek resumed> ) = 55379029 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B\204\301\363\220\354$\0\0\354$\0\0)\0\0\0", 30) = 30 30059 lseek(4, 55379100, SEEK_SET) = 55379100 30059 read(4, "\312\376\272\276\0\0\0003\1\262\3\0\0\377\377\10\0\23\10\0\33\10\0#\10\0$\10\0%\10\0'\10\0(\10\0)\10\0000\10\0d\10\0t\10\0\237\10\0\240\10\0\241\10\0\242\10\0\250\10\0\251\1\0\1(\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()S\1\0\3()V\1\0\3()Z\1\0\4()[B\1\0\4(I)V\1\0009(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;\1\0,(Ljava/lang/String;)Ljava/lang/StringBuffer;\1\0\25(Ljava/lang/String;)V\1\0\4(S)V\1\0\7(SIBI)V\1\0\6(SII)V\1\0\5(SS)S\1\0\5(SS)V\1\0'([Ljava/lang/Object;)Ljava/lang/Object;\1\0\1)\1\0\21, numCPEntries = \1\0\10\1\0\6\1\0\30Adjust this code (cpi = \1\0'Can't handle more than 65535 parameters\1\0\4Code\1\0\rConstantValue\1\0\1I\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\21Ljava/lang/Class;\1\0,Must have found at least identity conversion\1\0\26NUM_BASE_CPOOL_ENTRIES\1\0\vNUM_METHODS\1\0\37NUM_SERIALIZATION_CPOOL_ENTRIES\1\0\1S\1\0\nSourceFile\1\0\rStackMapTable\1\0\4TYPE\1\0\1Z\1\0\22[Ljava/lang/Class;\1\0\3add\1\0\6append\1\0\3asm\1\0\4bind\1\0\26buildInternalSignature\1\0\ncanWidenTo\1\0\16classCastClass\1\0\21constructorSymnum\1\0\3cpi\1\0\6create\1\0\31ctorIndexForPrimitiveType\1\0\16declaringClass\1\0\fdoPrivileged\1\0\34emitBoxingContantPoolEntries\1\0\35emitCommonConstantPoolEntries\1\0\25emitConstantPoolClass\1\0\"emitCons"..., 9452) = 9452 30087 futex(0x7fb31443af54, FUTEX_WAIT_PRIVATE, 19, NULL 30059 lseek(4, 55368123, SEEK_SET) = 55368123 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B\4br\214Y*\0\0Y*\0\0#\0\0\0", 30) = 30 30059 lseek(4, 55368188, SEEK_SET) = 55368188 30059 read(4, "\312\376\272\276\0\0\0003\1\353\10\0>\10\0?\10\0@\10\0A\10\0B\10\0C\10\0D\10\0E\10\0F\10\0G\10\0H\10\0I\10\0J\10\0K\10\0L\10\0O\10\0Q\10\0R\10\0S\10\0W\10\0X\10\0Z\10\0[\10\0\\\10\0]\10\0_\10\0`\10\0a\10\0b\10\0c\10\0d\10\0e\10\0f\10\0k\10\0s\10\0w\10\0x\10\0y\10\0\201\10\0\205\10\0\207\10\0\222\10\0\242\10\0\262\10\0\274\10\0\275\10\0\276\10\0\300\10\0\301\10\0\302\10\0\303\10\0\304\10\0\306\10\0\310\10\0\311\10\0\312\10\0\315\10\0\317\10\0\324\10\0\354\10\0\367\1\0\3()B\1\0\3()C\1\0\3()D\1\0\3()F\1\0\3()I\1\0\3()J\1\0\24()Ljava/lang/String;\1\0\3()S\1\0\3()V\1\0\3()Z\1\0\4(B)V\1\0\4(C)V\1\0\4(D)V\1\0\4(F)V\1\0\4(I)V\1\0\4(I)Z\1\0\5(II)I\1\0\4(J)V\1\0&(Ljava/lang/String;)Ljava/lang/String;\1\0\25(Ljava/lang/String;)V\1\0\30(Ljava/lang/Throwable;)V\1\0\4(S)V\1\0\6(SII)V\1\0\5(SS)S\1\0\5(SS)V\1\0\4(Z)V\1\0\1;\1\0\10\1\0\6\1\0\1B\1\0\1C\1\0\4Code\1\0\rConstantValue\1\0\1D\1\0\nExceptions\1\0\1F\1\0\1I\1\0\27Illegal exception table\1\0\27Illegal primitive type \1\0\1J\1\0\1L\1\0\17LineNumberTable\1\0\21Ljava/lang/Class;\1\0\30NUM_BOXING_CPOOL_ENTRIES\1\0\30NUM_COMMON_CPOOL_ENTRIES\1\0\1S\1\0\2S0\1\0\2S1\1\0\2S2\1\0\2S3\1\0\2S4\1\0\2S5\1\0\2S6\1\0 Should have found primitive type\1\0\nSourceFile\1\0\rStackMapTable\1\0\4TYPE\1\0\1V\1\0\1Z\1\0\1[\1\0\22[Ljava/lang/Class;\1\0\3add\1\0\6append\1\0\3asm\1\0\16booleanCtorIdx\1\0\nbooleanIdx\1\0\17booleanUnboxIdx\1\0\fbooleanValue\1\0\vbyteCtorIdx\1\0\7byteIdx\1\0\fbyteUnboxIdx\1\0\tbyteValue\1\0\ncanWidenTo\1\0\tcharValue\1\0\20char"..., 10841) = 10841 30059 lseek(4, 55365142, SEEK_SET) = 55365142 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B2\217\26hc\v\0\0c\v\0\0$\0\0\0", 30) = 30 30059 lseek(4, 55365208, SEEK_SET) = 55365208 30059 read(4, "\312\376\272\276\0\0\0003\0\246\1\0\nACC_PUBLIC\1\0\1B\1\0\16CONSTANT_Class\1\0\21CONSTANT_Fieldref\1\0\33CONSTANT_InterfaceMethodref\1\0\22CONSTANT_Methodref\1\0\24CONSTANT_NameAndType\1\0\17CONSTANT_String\1\0\rCONSTANT_Utf8\1\0\rConstantValue\1\0\1S\1\0\nSourceFile\1\0\20java/lang/Object\1\0\nopc_aaload\1\0\17opc_aconst_null\1\0\vopc_aload_0\1\0\vopc_aload_1\1\0\vopc_aload_2\1\0\vopc_aload_3\1\0\vopc_areturn\1\0\17opc_arraylength\1\0\fopc_astore_0\1\0\fopc_astore_1\1\0\fopc_astore_2\1\0\fopc_astore_3\1\0\nopc_athrow\1\0\ropc_checkcast\1\0\7opc_d2f\1\0\7opc_d2i\1\0\7opc_d2l\1\0\vopc_dload_0\1\0\vopc_dload_1\1\0\vopc_dload_2\1\0\vopc_dload_3\1\0\vopc_dreturn\1\0\7opc_dup\1\0\nopc_dup_x1\1\0\7opc_f2d\1\0\7opc_f2i\1\0\7opc_f2l\1\0\vopc_fload_0\1\0\vopc_fload_1\1\0\vopc_fload_2\1\0\vopc_fload_3\1\0\vopc_freturn\1\0\fopc_getfield\1\0\ropc_getstatic\1\0\10opc_goto\1\0\7opc_i2b\1\0\7opc_i2c\1\0\7opc_i2d\1\0\7opc_i2f\1\0\7opc_i2l\1\0\7opc_i2s\1\0\ropc_if_icmpeq\1\0\10opc_ifeq\1\0\ropc_ifnonnull\1\0\nopc_ifnull\1\0\vopc_iload_0\1\0\vopc_iload_1\1\0\vopc_iload_2\1\0\vopc_iload_3\1\0\16opc_instanceof\1\0\23opc_invokeinterface\1\0\21opc_invokespecial\1\0\20opc_invokestatic\1\0\21opc_invokevirtual\1\0\vopc_ireturn\1\0\7opc_l2d\1\0\7opc_l2"..., 2915) = 2915 30088 mprotect(0x7fb2700d5000, 69632, PROT_READ|PROT_WRITE 30059 lseek(4, 55364138, SEEK_SET 30088 <... mprotect resumed> ) = 0 30059 <... lseek resumed> ) = 55364138 30088 mprotect(0x7fb2700e6000, 36864, PROT_READ|PROT_WRITE 30059 read(4, 30088 <... mprotect resumed> ) = 0 30059 <... read resumed> "PK\3\4\n\0\0\0\0\0006\246\305B[!\226q\263\1\0\0\263\1\0\0#\0\0\0", 30) = 30 30059 lseek(4, 55364203, SEEK_SET) = 55364203 30059 read(4, "\312\376\272\276\0\0\0003\0\26\1\0\3()V\1\0\4(I)V\1\0\6\1\0\4Code\1\0\17LineNumberTable\1\0\nSourceFile\1\0\6create\1\0\20java/lang/Object\1\0\35sun/reflect/ByteVectorFactory\1\0\32sun/reflect/ByteVectorImpl\7\0\10\7\0\t\7\0\n\1\0\32()Lsun/reflect/ByteVector;\1\0\33(I)Lsun/reflect/ByteVector;\f\0\3\0\1\f\0\3\0\2\n\0\v\0\20\n\0\r\0\20\n\0\r\0\21\1\0\26ByteVectorFactory.java\0 \0\f\0\v\0\0\0\0\0\3\0\0\0\3\0\1\0\1\0\4\0\0\0\35\0\1\0\1\0\0\0\5*\267\0\22\261\0\0\0\1\0\5\0\0\0\6\0\1\0\0\0\34\0\10\0\7\0\16\0\1\0\4\0\0\0 \0\2\0\0\0\0\0\10\273\0\rY\267\0\23\260\0\0\0\1\0\5\0\0\0\6\0\1\0\0\0\36\0\10\0\7\0\17\0\1\0\4\0\0\0!\0\3\0\1\0\0\0\t\273\0\rY\32\267\0\24\260\0\0\0\1\0\5\0\0\0\6\0\1\0\0\0\"\0\1\0\6\0\0\0\2\0\25", 435) = 435 30059 lseek(4, 55362899, SEEK_SET) = 55362899 30059 read(4, 30088 mprotect(0x7fb2700ef000, 40960, PROT_READ|PROT_WRITE 30059 <... read resumed> "PK\3\4\n\0\0\0\0\0007\246\305B'tR4\231\4\0\0\231\4\0\0 \0\0\0", 30) = 30 30088 <... mprotect resumed> ) = 0 30059 lseek(4, 55362961, SEEK_SET) = 55362961 30059 read(4, 30088 mprotect(0x7fb2700f9000, 36864, PROT_READ|PROT_WRITE 30059 <... read resumed> "\312\376\272\276\0\0\0003\0/\1\0\3()I\1\0\3()V\1\0\4()[B\1\0\4(B)V\1\0\4(I)B\1\0\4(I)V\1\0\5(IB)V\1\0\6\1\0\4Code\1\0\1I\1\0\17LineNumberTable\1\0\nSourceFile\1\0\rStackMapTable\1\0\2[B\1\0\3add\1\0\tarraycopy\1\0\4data\1\0\3get\1\0\7getData\1\0\tgetLength\1\0\20java/lang/Object\1\0\20java/lang/System\1\0\3pos\1\0\3put\1\0\6resize\1\0\26sun/reflect/ByteVector\1\0\32sun/reflect/ByteVectorImpl\1\0\4trim\7\0\25\7\0\26\7\0\32\7\0\33\1\0*(Ljava/lang/Object;ILjava/lang/Object;II)V\f\0\27\0\n\f\0\21\0\16\f\0\10\0\2\f\0\10\0\6\f\0\31\0\6\f\0\20\0!\t\0 \0\"\t\0 \0#\n\0\35\0$\n\0\36\0'\n\0 \0%\n\0 \0&\1\0\23ByteVectorImpl.java\0 \0 \0\35\0\1\0\37\0\2\0\2\0\21\0\16\0\0\0\2\0\27\0\n\0\0\0\t\0\1\0\10\0\2\0\1\0\t\0\0\0#\0\2\0\1\0\0\0\7*\20d\267\0,\261\0\0\0\1\0\v\0\0\0\n\0\2\0\0\0!\0\6\0\"\0\1\0\10\0\6\0\1\0\t\0\0\0005\0\2\0\2\0\0\0\21*\267\0**\33\274\10\265\0)*\2\265\0(\261\0\0\0\1\0\v\0\0\0\22\0\4\0\0\0$\0\4\0%\0\v\0&\0\20\0'\0\1\0\24\0\1\0\1\0\t\0\0\0\37\0\2\0\1\0\0\0\7*\264\0(\4`\254\0\0\0\1\0\v\0\0\0\6\0\1\0\0\0*\0\1\0\22\0\5\0\1\0\t\0\0\0G\0\2\0\2\0\0\0\32\33*\264\0)\276\241\0\r*\33\267\0-*\33\265\0(*\264\0)\0333\254\0\0\0\2\0\r\0\0\0\3\0\1\23\0\v\0\0\0\22\0\4\0\0\0.\0\t\0/\0\16\0000\0\23\0002\0\1\0\30\0\7\0\1\0\t\0\0\0L\0\3\0\3\0\0\0\33\33*\264\0)\276\241\0\r*\33\267\0-*\33\265\0(*\264\0)\33\34T\261\0\0\0\2\0\r\0\0\0\3\0\1\23\0\v\0\0\0\26\0\5\0\0\0006\0\t\0007\0\16\0008\0\23\0:\0\32\0;\0\1\0\17\0\4\0\1\0\t\0\0\0S\0\3\0\2\0\0\0&*Y\264\0(\4`Z\265\0(*\264\0)\276\241\0\v**\264\0(\267\0-*\264\0)*\264\0(\33T\261\0\0\0\2\0\r\0\0\0\3\0\1\33\0\v\0\0\0\22\0\4\0\0\0>\0\23\0?\0\33\0A\0%\0B\0\1\0\34\0\2\0\1\0\t\0\0\0^\0\6\0\2\0\0\0-*\264\0(*\264\0)\276\4d\237\0!*\264\0(\4`\274\10L*\264\0)\3+\3*\264\0(\4`\270\0+*+\265\0)\261\0\0\0\2\0\r\0\0\0\3\0\1,\0\v\0\0\0\26\0\5\0\0\0E\0\16\0"..., 1177) = 1177 30088 <... mprotect resumed> ) = 0 30059 lseek(4, 55362592, SEEK_SET) = 55362592 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305BcB\214\212\371\0\0\0\371\0\0\0\34\0\0\0", 30) = 30 30059 lseek(4, 55362650, SEEK_SET) = 55362650 30059 read(4, "\312\376\272\276\0\0\0003\0\23\1\0\3()I\1\0\3()V\1\0\4()[B\1\0\4(B)V\1\0\4(I)B\1\0\5(IB)V\1\0\nSourceFile\1\0\3add\1\0\3get\1\0\7getData\1\0\tgetLength\1\0\20java/lang/Object\1\0\3put\1\0\26sun/reflect/ByteVector\1\0\4trim\7\0\f\7\0\16\1\0\17ByteVector.java\6\0\0\21\0\20\0\0\0\0\0\6\4\1\0\v\0\1\0\0\4\1\0\t\0\5\0\0\4\1\0\r\0\6\0\0\4\1\0\10\0\4\0\0\4\1\0\17\0\2\0\0\4\1\0\n\0\3\0\0\0\1\0\7\0\0\0\2\0\22", 249) = 249 30059 lseek(4, 55353530, SEEK_SET) = 55353530 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B]\372\v:$#\0\0$#\0\0$\0\0\0", 30) = 30 30059 lseek(4, 55353596, SEEK_SET) = 55353596 30059 read(4, "\312\376\272\276\0\0\0003\0\300\3\312\376\272\276\10\0\23\1\0\3()I\1\0\3()S\1\0\3()V\1\0\4(B)V\1\0\4(I)B\1\0\4(I)V\1\0\5(IB)V\1\0\25(Ljava/lang/String;)V\1\0\4(S)V\1\0\5(SI)V\1\0\7(SIBI)V\1\0\6(SII)V\1\0\5(SS)V\1\0\6\1\0\4Code\1\0\1I\1\0!Illegal use of ClassFileAssembler\1\0\17LineNumberTable\1\0\1S\1\0\nSourceFile\1\0\rStackMapTable\1\0\2[B\1\0\3add\1\0\6append\1\0\5cpIdx\1\0\3cpi\1\0\6create\1\0\10decStack\1\0\10emitByte\1\0\25emitConstantPoolClass\1\0\30emitConstantPoolFieldref\1\0\"emitConstantPoolInterfaceMethodref\1\0\31emitConstantPoolMethodref\1\0\33emitConstantPoolNameAndType\1\0\26emitConstantPoolString\1\0\24emitConstantPoolUTF8\1\0\7emitInt\1\0\23emitMagicAndVersion\1\0\temitShort\1\0\6encode\1\0\3get\1\0\7getData\1\0\tgetLength\1\0\fgetMaxLocals\1\0\vgetMaxStack\1\0\10getStack\1\0\10incStack\1\0\20java/lang/Object\1\0\32java/lang/RuntimeException\1\0\tmaxLocals\1\0\10maxStack\1\0\nopc_aaload\1\0\17opc_aconst_null\1\0\vopc_aload_0\1\0\vopc_aload_1\1\0\vopc_aload_2\1\0\vopc_aload_3\1\0\vopc_areturn\1\0\17opc_arraylength\1\0\fopc_astore_0\1\0\fopc_astore_1\1\0\fopc_astore_2\1\0\fopc_astore_3\1\0\nopc_athrow\1\0\ropc_checkcast\1\0\vopc_dload_0\1\0\vopc_dload_1\1\0\vopc_dload_2\1\0\vopc_dload_3\1\0\vopc_dreturn\1\0\7opc_dup\1\0\nopc_dup_x"..., 8996) = 8996 30059 lseek(4, 55352415, SEEK_SET) = 55352415 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305Bi\232\360\237'\4\0\0'\4\0\0\26\0\0\0", 30) = 30 30088 madvise(0x7fb2700f5000, 53248, MADV_DONTNEED 30059 lseek(4, 55352467, SEEK_SET 30088 <... madvise resumed> ) = 0 30059 <... lseek resumed> ) = 55352467 30059 read(4, "\312\376\272\276\0\0\0003\0*\3\0\0\377\377\10\0\t\1\0\3()I\1\0\3()V\1\0\4(I)C\1\0\25(Ljava/lang/String;)I\1\0\25(Ljava/lang/String;)V\1\0\6\1\0*Bug in sun.reflect bootstrap UTF-8 encoder\1\0\4Code\1\0\17LineNumberTable\1\0\nSourceFile\1\0\rStackMapTable\1\0\2[B\1\0\6charAt\1\0\6encode\1\0(java/lang/ArrayIndexOutOfBoundsException\1\0\27java/lang/InternalError\1\0\20java/lang/Object\1\0\20java/lang/String\1\0\6length\1\0\20sun/reflect/UTF8\1\0\nutf8Length\7\0\16\7\0\21\7\0\22\7\0\23\7\0\24\7\0\26\1\0\26(Ljava/lang/String;)[B\f\0\25\0\3\f\0\10\0\4\f\0\17\0\5\f\0\27\0\6\f\0\10\0\7\n\0\32\0#\n\0\33\0 \n\0\34\0\37\n\0\34\0!\n\0\35\0\"\1\0\tUTF8.java\0 \0\35\0\33\0\0\0\0\0\3\0\0\0\10\0\4\0\1\0\n\0\0\0\35\0\1\0\1\0\0\0\5*\267\0%\261\0\0\0\1\0\v\0\0\0\6\0\1\0\0\0 \0\10\0\20\0\36\0\1\0\n\0\0\1J\0\5\0\6\0\0\0\275*\266\0&<*\270\0(\274\10M\3>\0036\4\25\4\33\242\0\230*\25\4\266\0'\22\1~6\5\25\5\4\241\0\26\25\5\20\177\243\0\17,\35\204\3\1\25\5\221T\247\0n\25\5\231\0\23\25\5\21\0\200\241\0.\25\5\21\7\377\243\0&,\35\204\3\1\21\0\300\25\5\20\6z`\221T,\35\204\3\1\21\0\200\25\5\20?~`\221T\247\0006,\35\204\3\1\21\0\340\25\5\20\fz`\221T,\35\204\3\1\21\0\200\25\5\20\6z\20?~`\221T,\35\204\3\1\21\0\200\25\5\20?~`\221T\204\4\1\247\377h\247\0\17:\4\273\0\32Y\22\2\267\0$\277,\260\0\1\0\16\0\254\0\257\0\31\0\2\0\r\0\0\0#\0\10\377\0\21\0\5\7\0\34\1\7\0\30\1\1\0\0\374\0)\1\24\"\372\0002\372\0\5B\7\0\31\v\0\v\0\0\0J\0\22\0\0\0#\0\5\0$\0\f\0%\0\16\0'\0\27\0(\0\"\0)\0/\0*\0;\0+\0P\0-\0`\0.\0s\0000\0\203\0001\0\226\0002\0\246\0'\0\254\0008\0\257\0005\0\261\0006\0\273\0009\0\n\0\27\0\6\0\1\0\n\0\0\0\253\0\2\0\5\0\0\0Q*\266\0&<\3=\3>\35\33\242\0D*\35\266\0'\22\1~6\4\25\4\4\241\0\20\25\4\20\177\243\0\t\204\2\1\247\0!\25\4\231\0\23\25\4\21\0\200\241\0\21\25\4\21\7\377\243\0\t\204\2\2\247\0\6\204\2\3\204\3\1\247\377\275\34\254\0\0\0\2\0\r\0\0\0\24\0\6\376\0\t\1\1\1\374\0!\1\24\5\372\0\2\372\0"..., 1063) = 1063 30088 mprotect(0x7fb270102000, 12288, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 55351256, SEEK_SET) = 55351256 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B22\205\20R\4\0\0R\4\0\0\27\0\0\0", 30) = 30 30059 lseek(4, 55351309, SEEK_SET) = 55351309 30059 read(4, "\312\376\272\276\0\0\0003\0N\1\0\3()S\1\0\3()V\1\0\3()Z\1\0\4(I)V\1\0\25(Ljava/lang/Object;)Z\1\0\5(SS)V\1\0\6\1\0\4Code\1\0\1I\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\1S\1\0\nSourceFile\1\0\rStackMapTable\1\0\3add\1\0\3asm\1\0\4bind\1\0\temitShort\1\0\tgetLength\1\0\7hasNext\1\0\10instrBCI\1\0\10iterator\1\0\20java/lang/Object\1\0\23java/util/ArrayList\1\0\22java/util/Iterator\1\0\16java/util/List\1\0\4next\1\0\10patchBCI\1\0\7patches\1\0\10setStack\1\0\nstackDepth\1\0\36sun/reflect/ClassFileAssembler\1\0\21sun/reflect/Label\1\0\33sun/reflect/Label$PatchInfo\7\0\27\7\0\30\7\0\31\7\0\32\7\0 \7\0!\7\0\"\1\0\20Ljava/util/List;\1\0 Lsun/reflect/ClassFileAssembler;\1\0\24()Ljava/lang/Object;\1\0\26()Ljava/util/Iterator;\1\0&(Lsun/reflect/ClassFileAssembler;SSI)V\f\0\37\0\t\f\0\25\0\f\f\0\34\0\f\f\0\35\0*\f\0\20\0+\f\0\23\0\1\f\0\7\0\2\f\0\24\0\3\f\0\36\0\4\f\0\22\0\6\f\0\33\0,\f\0\17\0\5\f\0\26\0-\f\0\7\0.\t\0(\0002\t\0)\0/\t\0)\0000\t\0)\0001\t\0)\0003\n\0#\0005\n\0$\0005\n\0'\0004\n\0'\0007\n\0'\0008\n\0)\0<\v\0%\0006\v\0%\0009\v\0&\0:\v\0&\0;\1\0\nLabel.java\1\0\tPatchInfo\0 \0(\0#\0\0\0\1\0\2\0\35\0*\0\0\0\3\0\1\0\7\0\2\0\1\0\10\0\0\0000\0\3\0\1\0\0\0\20*\267\0B*\273\0$Y\267\0C\265\0=\261\0\0\0\1\0\v\0\0\0\16\0\3\0\0\0:\0\4\0008\0\17\0;\0\0\0\17\0.\0\1\0\10\0\0\0003\0\7\0\5\0\0\0\27*\264\0=\273\0)Y+\34\35\25\4\267\0G\271\0J\2\0W\261\0\0\0\1\0\v\0\0\0\n\0\2\0\0\0B\0\26\0C\0\1\0\21\0\2\0\1\0\10\0\0\0\217\0\3\0\5\0\0\0J*\264\0=\271\0K\1\0L+\271\0H\1\0\231\0009+\271\0I\1\0\300\0)M,\264\0A\266\0D>\35,\264\0?d\2236\4,\264\0A,\264\0@\25"..., 1106) = 1106 30059 lseek(4, 55350683, SEEK_SET) = 55350683 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B\330\317[\334\376\1\0\0\376\1\0\0!\0\0\0", 30) = 30 30059 lseek(4, 55350746, SEEK_SET) = 55350746 30059 read(4, "\312\376\272\276\0\0\0003\0!\1\0\3()V\1\0\6\1\0\4Code\1\0\1I\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\1S\1\0\nSourceFile\1\0\3asm\1\0\10instrBCI\1\0\20java/lang/Object\1\0\10patchBCI\1\0\nstackDepth\1\0\21sun/reflect/Label\1\0\33sun/reflect/Label$PatchInfo\7\0\v\7\0\16\7\0\17\1\0 Lsun/reflect/ClassFileAssembler;\1\0&(Lsun/reflect/ClassFileAssembler;SSI)V\f\0\r\0\4\f\0\n\0\7\f\0\f\0\7\f\0\t\0\23\f\0\2\0\1\t\0\22\0\25\t\0\22\0\26\t\0\22\0\27\t\0\22\0\30\n\0\20\0\31\1\0\nLabel.java\1\0\tPatchInfo\0 \0\22\0\20\0\0\0\4\0\0\0\t\0\23\0\0\0\0\0\n\0\7\0\0\0\0\0\f\0\7\0\0\0\0\0\r\0\4\0\0\0\1\0\0\0\2\0\24\0\1\0\3\0\0\0F\0\2\0\5\0\0\0\32*\267\0\36*+\265\0\35*\34\265\0\33*\35\265\0\34*\25\4\265\0\32\261\0\0\0\1\0\6\0\0\0\32\0\6\0\0\0+\0\4\0,\0\t\0-\0\16\0.\0\23\0/\0\31\0000\0\2\0\10\0\0\0\2\0\37\0\5\0\0\0\n\0\1\0\22\0\21\0 \0\10", 510) = 510 30088 madvise(0x7fb2700f5000, 65536, MADV_DONTNEED) = 0 30059 lseek(4, 55348933, SEEK_SET) = 55348933 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B/me\304\215\6\0\0\215\6\0\0+\0\0\0", 30) = 30 30059 lseek(4, 55349006, SEEK_SET) = 55349006 30059 read(4, "\312\376\272\276\0\0\0003\0K\1\0\3()V\1\0\6\1\0\4Code\1\0\17EnclosingMethod\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\21Ljava/lang/Class;\1\0\22Ljava/lang/String;\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\2[B\1\0\vdefineClass\1\0\10generate\1\0\16getClassLoader\1\0\tinitCause\1\0\17java/lang/Class\1\0 java/lang/IllegalAccessException\1\0 java/lang/InstantiationException\1\0\27java/lang/InternalError\1\0\20java/lang/Object\1\0\36java/security/PrivilegedAction\1\0\vnewInstance\1\0\3run\1\0\30sun/reflect/ClassDefiner\1\0\35sun/reflect/MagicAccessorImpl\1\0#sun/reflect/MethodAccessorGenerator\1\0%sun/reflect/MethodAccessorGenerator$1\1\0\6this$0\1\0\tval$bytes\1\0\22val$declaringClass\1\0\21val$generatedName\7\0\21\7\0\22\7\0\23\7\0\24\7\0\25\7\0\26\7\0\31\7\0\32\7\0\33\7\0\34\1\0%Lsun/reflect/MethodAccessorGenerator;\1\0SLjava/lang/Object;Ljava/security/PrivilegedAction;\1\0\31()Ljava/lang/ClassLoader;\1\0\24()Ljava/lang/Object;\1\0!()Lsun/reflect/MagicAccessorImpl;\1\0,(Ljava/lang/Throwable;)Ljava/lang/Throwable;\1\0@(Ljava/lang/String;[BIILjava/lang/ClassLoader;)Ljava/lang/Class;\1\0M(Lsun/reflect/MethodAccessorGen"..., 1677) = 1677 30088 mprotect(0x7fb270105000, 20480, PROT_READ|PROT_WRITE) = 0 30088 mprotect(0x7fb27010a000, 36864, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 55347987, SEEK_SET) = 55347987 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305BE0H\247v\3\0\0v\3\0\0\36\0\0\0", 30) = 30 30059 lseek(4, 55348047, SEEK_SET) = 55348047 30059 read(4, "\312\376\272\276\0\0\0003\0+\1\0\3()V\1\0\10\1\0\6\1\0\21ClassDefiner.java\1\0\4Code\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\nSourceFile\1\0\vdefineClass\1\0\fdoPrivileged\1\0\tgetUnsafe\1\0\25java/lang/ClassLoader\1\0\20java/lang/Object\1\0\36java/security/AccessController\1\0\17sun/misc/Unsafe\1\0\30sun/reflect/ClassDefiner\1\0\32sun/reflect/ClassDefiner$1\1\0\6unsafe\7\0\f\7\0\r\7\0\16\7\0\17\7\0\20\7\0\21\1\0\21Lsun/misc/Unsafe;\1\0\32(Ljava/lang/ClassLoader;)V\1\0\23()Lsun/misc/Unsafe;\1\0004(Ljava/security/PrivilegedAction;)Ljava/lang/Object;\1\0@(Ljava/lang/String;[BIILjava/lang/ClassLoader;)Ljava/lang/Class;\1\0`(Ljava/lang/String;[BIILjava/lang/ClassLoader;Ljava/security/ProtectionDomain;)Ljava/lang/Class;\f\0\22\0\31\f\0\3\0\1\f\0\3\0\32\f\0\v\0\33\f\0\n\0\34\f\0\t\0\36\t\0\27\0\37\n\0\24\0 \n\0\25\0#\n\0\26\0\"\n\0\26\0$\n\0\30\0!\0 \0\27\0\24\0\0\0\1\0\30\0\22\0\31\0\0\0\3\0\0\0\3\0\1\0\1\0\5\0\0\0\35\0\1\0\1\0\0\0\5*\267\0&\261\0\0\0\1\0\7\0\0\0\6\0\1\0\0\0$\0\10\0\t\0\35\0\1\0\5\0\0\0;\0\7\0\6\0\0\0\37\273\0\30Y\31\4\267\0*\270\0'\300\0\23:\5\262\0%*+\34\35\31\5\1\266\0)\260\0\0\0\1\0\7\0\0\0\n\0\2\0\0\0009\0\21\0?\0\10\0\2\0\1\0\1\0\5\0\0\0\37\0\1\0\0\0\0\0\7\270\0(\263\0%\261\0\0\0\1\0\7\0\0\0\6\0\1\0\0\0%\0\2\0\10\0\0\0\2\0\4\0\6\0\0\0\n\0\1\0\30\0\0\0\0\0\10", 886) = 886 30059 lseek(4, 55347091, SEEK_SET) = 55347091 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B\231X\307\244B\3\0\0B\3\0\0 \0\0\0", 30) = 30 30059 lseek(4, 55347153, SEEK_SET) = 55347153 30059 read(4, "\312\376\272\276\0\0\0003\0&\1\0\3()V\1\0\6\1\0\21ClassDefiner.java\1\0\4Code\1\0\17EnclosingMethod\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\vdefineClass\1\0\20java/lang/Object\1\0\36java/security/PrivilegedAction\1\0\3run\1\0\30sun/reflect/ClassDefiner\1\0\32sun/reflect/ClassDefiner$1\1\0!sun/reflect/DelegatingClassLoader\1\0\25val$parentClassLoader\7\0\v\7\0\f\7\0\16\7\0\17\7\0\20\1\0\27Ljava/lang/ClassLoader;\1\0KLjava/lang/Object;Ljava/security/PrivilegedAction;\1\0\31()Ljava/lang/ClassLoader;\1\0\32(Ljava/lang/ClassLoader;)V\1\0\24()Ljava/lang/Object;\1\0@(Ljava/lang/String;[BIILjava/lang/ClassLoader;)Ljava/lang/Class;\f\0\21\0\27\f\0\2\0\1\f\0\r\0\31\f\0\2\0\32\f\0\n\0\34\t\0\25\0\35\n\0\22\0\36\n\0\25\0\37\n\0\26\0 \0000\0\25\0\22\0\1\0\23\0\1\20\20\0\21\0\27\0\0\0\3\0\0\0\2\0\32\0\1\0\4\0\0\0\"\0\2\0\2\0\0\0\n*+\265\0\"*\267\0#\261\0\0\0\1\0\7\0\0\0\6\0\1\0\0\0:\0\1\0\r\0\31\0\1\0\4\0\0\0$\0\3\0\1\0\0\0\f\273\0\26Y*\264\0\"\267\0%\260\0\0\0\1\0\7\0\0\0\6\0\1\0\0\0<\20A\0\r\0\33\0\1\0\4\0\0\0\35\0\1\0\1\0\0\0\5*\266\0$\260\0\0\0\1\0\7\0\0\0\6\0\1\0\0\0:\0\4\0\t\0\0\0\2\0\3\0\5\0\0\0\4\0\24\0!\0\10\0\0\0\2\0\30\0\6\0\0\0\n\0\1\0\25\0\0\0\0\0\10", 834) = 834 30059 lseek(4, 55346018, SEEK_SET) = 55346018 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B\2236f\320\341\3\0\0\341\3\0\0002\0\0\0", 30) = 30 30059 lseek(4, 55346098, SEEK_SET) = 55346098 30059 read(4, "\312\376\272\276\0\0\0003\0001\1\0\3()V\1\0\30(Ljava/lang/Throwable;)V\1\0'([Ljava/lang/Object;)Ljava/lang/Object;\1\0\6\1\0\4Code\1\0\nExceptions\1\0\17LineNumberTable\1\0\nSourceFile\1\0\rStackMapTable\1\0\20allocateInstance\1\0\vconstructor\1\0\21getDeclaringClass\1\0\"java/lang/IllegalArgumentException\1\0 java/lang/InstantiationException\1\0\35java/lang/reflect/Constructor\1\0+java/lang/reflect/InvocationTargetException\1\0\vnewInstance\1\0\17sun/misc/Unsafe\1\0,sun/reflect/BootstrapConstructorAccessorImpl\1\0#sun/reflect/ConstructorAccessorImpl\1\0#sun/reflect/UnsafeFieldAccessorImpl\1\0\6unsafe\7\0\r\7\0\16\7\0\17\7\0\20\7\0\22\7\0\23\7\0\24\7\0\25\1\0\37Ljava/lang/reflect/Constructor;\1\0\21Lsun/misc/Unsafe;\1\0\23()Ljava/lang/Class;\1\0\"(Ljava/lang/reflect/Constructor;)V\1\0%(Ljava/lang/Class;)Ljava/lang/Object;\f\0\v\0\37\f\0\26\0 \f\0\4\0\1\f\0\f\0!\f\0\4\0\2\f\0\n\0#\t\0\34\0$\t\0\36\0%\n\0\31\0'\n\0\32\0(\n\0\33\0)\n\0\35\0&\1\0%BootstrapConstructorAccessorImpl.java\0 \0\34\0\35\0\0\0\1\0\2\0\v\0\37\0\0\0\2\0\0\0\4\0\"\0\1\0\5\0\0\0*\0\2\0\2\0\0\0\n*\267\0/*+\265\0*\261\0\0\0\1\0\7\0\0\0\16\0\3\0\0\0%\0\4\0&\0\t\0'\0\1\0\21\0\3\0\2\0\5\0\0\0L\0\3\0\3\0\0\0\30\262\0+*\264\0*\266\0,\266\0.\260M\273\0\32Y,\267\0-\277\0\1\0\0\0\r\0\16\0\30\0\2\0\t\0\0\0\6\0\1N\7\0\30\0\7\0\0\0\16\0\3\0\0\0-\0\16\0/\0\17\0000\0\6\0\0\0\6\0\2\0\27\0\32\0\1\0\10\0\0\0\2\0000", 993) = 993 30088 madvise(0x7fb2700f5000, 122880, MADV_DONTNEED) = 0 30088 mprotect(0x7fb270113000, 12288, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 27772938, SEEK_SET) = 27772938 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\313\326\272\301\t\2\0\0\t\2\0\0\32\0\0\0", 30) = 30 30059 lseek(4, 27772994, SEEK_SET) = 27772994 30059 read(4, "\312\376\272\276\0\0\0003\0\30\1\0\vCONSTRUCTOR\1\0\5FIELD\1\0\16LOCAL_VARIABLE\1\0\6METHOD\1\0\7PACKAGE\1\0\tPARAMETER\1\0\7RUNTIME\1\0\31RuntimeVisibleAnnotations\1\0\nSourceFile\1\0\4TYPE\1\0\24java/lang/Deprecated\1\0\20java/lang/Object\1\0\37java/lang/annotation/Annotation\1\0\5value\7\0\v\7\0\f\7\0\r\1\0!Ljava/lang/annotation/Documented;\1\0\"Ljava/lang/annotation/ElementType;\1\0 Ljava/lang/annotation/Retention;\1\0&Ljava/lang/annotation/RetentionPolicy;\1\0\35Ljava/lang/annotation/Target;\1\0\17Deprecated.java&\1\0\17\0\20\0\1\0\21\0\0\0\0\0\2\0\t\0\0\0\2\0\27\0\10\0\0\0=\0\3\0\22\0\0\0\24\0\1\0\16e\0\25\0\7\0\26\0\1\0\16[\0\7e\0\23\0\1e\0\23\0\2e\0\23\0\3e\0\23\0\4e\0\23\0\5e\0\23\0\6e\0\23\0\n", 521) = 521 30088 madvise(0x7fb2700f5000, 135168, MADV_DONTNEED) = 0 30088 mprotect(0x7fb270116000, 4096, PROT_READ|PROT_WRITE) = 0 30088 madvise(0x7fb2700f5000, 139264, MADV_DONTNEED) = 0 30059 mprotect(0x7fb3144fc000, 8192, PROT_READ|PROT_WRITE) = 0 30088 madvise(0x7fb2700ed000, 32768, MADV_DONTNEED) = 0 30088 madvise(0x7fb2700af000, 253952, MADV_DONTNEED) = 0 30088 futex(0x7fb31443d954, FUTEX_WAIT_PRIVATE, 13, NULL 30059 lseek(5, 569457, SEEK_SET) = 569457 30059 read(5, "PK\3\4\n\0\0\10\10\0\251`\273D\273`\222\221\275\6\0\0\25\16\0\0%\0\0\0", 30) = 30 30059 lseek(5, 569524, SEEK_SET) = 569524 30059 read(5, "\225V]s\33\325\31~V\337^\313\337\371\200H\261\25B\203\254\306Q\0105\1\22\3\262M\250\3006\301J\25B\2x-\255\355M\244]\263Z\3051\320\302L\231)\314\264\303\5\264\f\37\303\24\343\231\300L:m:u\222\1\306\275\352M\377B\357z\307-\227\264Sx\316\331\325J\266\5\2443\232\363\236\363\236\363\276\317\363~\234\263\372\347\377>\337\4p\37~\31D\317\370\243*\222xZ\305~\314vpV\20\303\0311\374BE\21g\305\354\0311\234\23\303\263b8/,.D\361\\\24\317\253\350\306l\f/\0109'\6-\206y!K*\272P\26'\365\30\26bXT\261\4C\305E\\\212\241\22E5\nS\201Z\323_\254\353fI\317\227\25(y\5\361\206bF\253\352\n\372\247.j\227\265lE3\27\263\5\3076\314\305\23\n:l}A\267\305!\5\201\363\343\nb\313V\315p\f\213\16\303\363ZM\257QU\262.\353\266\266(\217\24\10T5jU\315)-\211\315\310I\3034\234\207\25\334\221\316\357\0048?>\\T\20\232\260\3124\356\2312L}\246^\235\327\3553\332|ER\262JZ\245\250\331\206X{\312\220\263d\320\361\201)Sw\262\265\205l\311\326\252Y\322\314\3166\250\236\261\265\322\245\32\331\337\331\0363/@\325\25\303,[+\5\343%\372\354Z\324\235BKz\202\351a&\250\247E\353\346hWz\270]\226\372x\360\254tw\332\317N\217\257\233\322\315Eg\211\321P\343sl(#\272Y\253\333t\35N\347%\257p\315\321l\207\24t\223D\272\n\16c\231\326\226\275\340\273\252\314\365)\313^\321\354\362\31\213\311HK#\305\240'S\27\360\364`\3535\335\221Ap\253\323\5\230%a\332G*\r\\Q\274\234\343z`]\203\313\302Tm\224\262\261\303r\306\233\345\24\332N\255\\\236\360\v\36\321\252V\335\244\272\213\352\351\226\272\253\5\253n\227\364S\206`\275k[i\216\210\34\3061\214\243b\230\210c\20Cq\244p \216\273p0\n+\216e\274\30\307Op0\216C\270'\216\264\30\356\26\247\3061\241`_\263\10\263\2047\252\372cWJ\372\262\233\371\275\333+4^7*e\335V0\350\26$e\324R\216e\245\310\266RI-XvJ\346<\25\207\215\232\30\30O8\305\374SS\307\250\340x9\216\207\361\210\202C3\372J\252q\5\204\237y}\325\342AgIO\371W\345\241\224\202c\23\232iZN\252\266d,8Ds\301t\273i\314\337\26\253#Q\254\304q\5\253Q\274\24\307\313xE\301]\236\23Qty\330\355\331\324<\223\270b\331\345\232@\32\372\221{\240\240\267\231\220\247\346/\352%\206\327\335TMk\242\37\202U\303\364\2320/\312\272\274,\373o$\275\263\337w^\1/\301\274\tI\366\314\17l\307\34\313U)\330\335\316sq\v\331\302j\315\321\253|\2044\333\326VK\326\362\252\202L\253\231\33\315\211|\33U\276\351\253\356\30\225lN\270`.B\vF\245\302\0\323\347\v\205\341\"\16\360\321\334\317\7:\212\200hB\316\2\242\17\245d+Jy\267\324\367\213n\224\222\r)eZ\312^(\354\217\f\307\237rUD\30!J5\2238<\322\257\334D\340\272\364qX\350(A\37\35\3648\302Y\306=\211#\310\2r&\30(r&8\4\344L\260\10J\214\243\36\306\347\\\207)'37\21\314$6\20\312\34\336@83\262\201Hfwhd\363\26\242_\3066\20\363\27\35\33\350h]\250\231\320\6:37\20o\262\313\20\v\214(\304\270:\210\326M\315\0wR\344:B\216\17"..., 1725) = 1725 30059 lseek(5, 1061020, SEEK_SET) = 1061020 30059 read(5, "PK\3\4\n\0\0\10\10\0WP\376@\333I\21>M\20\0\0Q+\0\0#\0\0\0", 30) = 30 30059 lseek(5, 1061085, SEEK_SET) = 1061085 30059 read(5, "\235X\t|\24\327y\377>\255\366\320j$\244\5q)6\302\200\20Z\2018\f\30\0042B\10!\33IX+\4\302v\360\262\32\304\332\253]y\17\f\261\35\37qb\307\361\221\313\216Mz\345$mh\nN, J\354\244\207\323\244\351\345\326\211\333\264i\2356i\22\267\251\335\244\207]7\352\377{3\232\235\235\235\205u\370\2417\363\276y\357{\377\357\376\336~\353\227_~\216\210\326\363\323U\324K3A\2122\371\231\203\344a\2\205+d\360\370\2712\10\262\242xe\360\371\331\37\244j\203\22\220\241J\206`\200\253\3\254\5\361Z#Cm\200\347\4\271\216\353em\250\232\347\362lr\7\212\201\236\203\266\351\334\256\356\356\236}\303];\367\366\314\22#\330f\34\237\313\306\23\355\21=\333!P\343\343\311h6\227\306\271\313\n\277n+\306\332)h#\303]\3\273\272\206v\t\22\360\254\236\30\322\243cJ!\31\246:\33\217\275\361\214\34\261\311A\332\2667\251g\3333G\3333\321\211l*\225\310\264G\272\372-\36Cz,\225\36S'\315\231\330\227N\215\247\243\23\6\r\334\257.\207U\301&\3r\36b\177t\262P\r `Eo!\305E\364rA\327\27\202V\347\365\374J\334\213\345\230;\21\321o\317\351\311\230\276+\36\313\306S\311h\372$\323J\267\315\305\v\305\330\23\335\251\211\t=\231\205*\227\27\251\322\325\332\301\254~\"\273\7r\212/\327O\300C\343cQ\341\330\223N\247\322\2312\255\353\330fXw\\\317F\340\365c\321\364\330pt\34\254\352[V\25\371gewjL\27\213\305\223\372@n\342\210\236\36\216\36I\350\22I\251X41\22M\307en\22+\263\307\342`\264\304\r\303\356xB7\4\1\333\25\316\243J\210\357\333\26O\306\263\235L\236\226U#\320\0060\217\350\351\f\4a\2327\313\2430\232eMwZ\217fS\320X\203\10\351b\263U\330[\256\325j\300\303\36b\241\2\354f\220]SD,;\314\252m\30\2316\267\24\vuI\254&'(?\31\235\0\3\315\16W\200\225\311\317\t\r\312\313\270+\257\265\245L\335\211\311B\31\27\16\325\321\261\261\274\310\315\227\344g\302\21^\265\231\2\232d\314r\24\323\334\322W\236\6kf\371\367%\307\364\23L\334\207\204j\263\216InpS)\226j\263\333\7\224!\300\255\300o\346\2668\335Fd\232\223.\324\273d\206\262\254S\21GW0\317\306"..., 4173) = 4173 30059 lseek(5, 995018, SEEK_SET) = 995018 30059 read(5, "PK\3\4\n\0\0\10\10\0WP\376@8\302\306\222e\4\0\0\227\t\0\0-\0\0\0", 30) = 30 30059 lseek(5, 995093, SEEK_SET) = 995093 30059 read(5, "\215UmS\33U\24~6\tY\10\233RB\337\324\n\251\264\220\4\332\330\27\2646\210P\232\32*/\266\241P\252\266\336$\227\260\260\331\215\2737\214\376\6\177\10_\372Ag4\f2\243~jg\374Q\326sw\227\220,\351\310\207\334={\356\271\317}\316s\316\311\376\363\357\37\177\2\270\205Z\f\227\220W\3610\206\20\362}\270\210/\373Q\300\202\212Gr\347\253\30y\26\245gI.\313rYQ\361\265\212\3071\304\221\357\305\23\371,\312\330Ui=\225\v\235\322\260&}\353ry\246bC\305s\5\375\2659!l\275\324\20\334Q0\260\270\315vY\266!t#\273\304\3529\5}E\275j2\321\260\271\202\251\316\335i\357\325`f5[$\f\263\232;\351\231!\214\350\264n\352bFA8\225^S\20\231\267*\\\336\245\233|\271Q+q{\225\225\f\362$\26\25523\326\230\255\313w\337\31\21[:1K/\232\\d\235\315\254\303j\302\262\f';Wr\204\315\312\2428\267T\340\254\302\355'\274l\331\25\272O\253r\321\312J\301X\352$\255\364I\27\321\333\341?I\26]\2664\247\3r\274\vd\233g\245\264\315\313\"'\223\355\331eF\203w\242\372\333\n\342E\301\312;$\245\233\253[\222GT\25\317P\20{\300\3536/3\301+\377{\345Q^te\274=}\222n0\225n+\\\221\213\234\212o\210Y\336\0246\345\253-\230&\267\347\r\34682z9\30=\335Y\365\253\356\261S\326^V\277\207\350,P\2\347R]E\37`-\252\371\37\32\314P0\231:u\255\323\317\335\6a\202\4>\306)0g\313\3531j\270\5\272\202\30\220\322f\205\331\225UV\245$\257\275#\311`\347\306\212V\303.\363\207\272\354\304\313\357`qC\36\325\360!\206I\353cT\311\202\364\322\360\36\336W\361\255\206\357\360B\301\331\340=\32^\"\247!\205\333\32\276\307\v\r\f%\reLQ\311\217c\237\232N\243^\267lj\205\225:\267\231\320-3\377c\231\327\245\241\340b\20\365~C7\210 \221^\342b\313\252$MK$\365Z\335\3405n\22Hr\323\262\357%5T\3005l\242*\255-\231\203\256a\33;\32\f\314\22\201S\326\241#-\257\273\25\fui\33j\316\16/U\210j\23\30\321\243\351\35161\275\302\362\22\244\177\25\233\327\254]Y\344z\203 \356v\2018-(\227\334\212\222H\224\325\353\334\244\204\256\237\352O\303\227YbP\36\356\fQ\342\35\215\356:s\1\300.l\202\200\347\273\21\240\351\216r9%N \340\10\220\346\241w\313o\377\310\25\372P\\\242O\n\r\207lBz~@o!\\F\37\331\324\257\264\216\220g\6a\262\200\263\231}(\231C\2046\366\21\376\35\221_\335\350$\255\362K\4|\204\10Fq\205,\315\213'\317\250\213\177\25\327|\254\373\24)c\317d~Cd\342\0=!\374\215\350/-\244\250{r\314E\271\340E\372(\322\32\3038\355+4\ri\332\223x?\23\2670=\23\231\211\3117P\225=\250\223M\250M\364Jv\3416v\2670\210\333.n\322;\321\302M\370\270\322\312`\202\242'\311\276\211\320[:\32Vq]\305\r\25Y\204T|\254\342\346[y\345\2617\354y\351\215\256\200\233.\r\253\237\256\343\323\33!r\203~\312}!\254\357a\300}\233<@,\214\365c\256\t\322P*\36\301\27d\317Q\r\346\3338\217\2648\217\2648\217\20\347q\237s\4\241D?y\357`\312\327\347\216\253\27i \257;@\277\202\240\326\205\266\212\305||\257\17>#\337=\344\374T\n\204."..., 1125) = 1125 30059 mprotect(0x7fb3144fe000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(5, 537141, SEEK_SET) = 537141 30059 read(5, "PK\3\4\n\0\0\10\10\0\251`\273D\177\301\4]\v\25\0\0\317+\0\0000\0\0\0", 30) = 30 30059 lseek(5, 537219, SEEK_SET) = 537219 30059 read(5, "\245X\v|T\305\271\377\276\263g\367\354nN\310\0036\260\4$@\224<\t\20\215\32\"B\"H4!@\2(Ta\263\331$\v\233\335ew\203R\255Z\213\357V\261\265U\261\25J-\251\217VA\10A\224j\253\240\255m\355\265Wo\333\333V\332\333\367\353\366uU\312\243\377o\316.\331\204\5\302m~\23193\337\314|\257\371^\263\337:\376\302\1\"\252\346\357\271)F\207]\264\236~\356F\367\v\31\375\217\233\n\351\227\322\375\312\240_\273\311\240\337H\367[\201\374Nv\375\336M\177\240?J\367'\351\376l\320\377\272)\207\16;\351/n\372+\375M\272\277\313\306\177d\321\377\321\373\6}\340\246\2:\354\246\17\351\210A\377t\223\227\16\33tT\360\35\226\275\307\4\375q\231\276\357\302\332\t7]\313\204\363\314\230\262&S\233t\272tv7;\330\220\5\247\214\\\322\271e!K:S\246\331\6\21728\307MU\340\211s\361\345<\351\362\245\33\355\246\351<\306\305\36.pQ\234\307\272\350\17<\316\315^\36\357\344B\371Np\363D>\317\205n\222\213\213x\262\33\335\24\201Mus1\237\17\221\370\202,\236\306%\322\225\n\233e\262\245\\6W\30\\\351\246\205<\35z\344*94C\272\231Bi\226\v\254U\273\371B\36/\260\213\244\253\21\330\305N\276D\300\23D[\277t\363\245\\+Xg\273\271\216/3x\216\34\276\334\5\341\346\272y\236u\270\336\315\r|\205\301\363\335\264\232\27\270\370J^\350F\327(\323\253d\303\325r\270\311\205\375\315\322-\222\325\26A\264XF\343eu\211\240\274XFK\205\\\253\301mn\212\340fx\231\301\313\r^\301DLfc8\34\2105\204|\361x \316\224\35\217\6\374\301\316\240\337\227\10F\302L\371Mk}\33|U!_\270\253\2525\21\v\206\273f\343\352\242\221P\320\277\261)\30O0\345Z;z\23\301P\225@\260\356j\rv\205}\211\336X\200\351\222a\313uM\341@\242*\336Y\345\217\371z\252B\221x|c\325\342X \36\210mP$\27+\324\263\347\0\315\304X\300\327\261 \240\20-\216\304\203\262\334\20\351\211\372b\276D$\306T\220\206z\20\216\203\v3.\f\245\34\10\373#\35\20\247J\210\254\356\264\250\304\253\226\16\222T<8\352\202\341`b\16\223\247\344TM\224.g\322\33\"\35\0203\247)\30\16,\352\355i\17\304\332|\355\241\200h.\342\367\205\226\373bA\231'\201z\242;\10-WdP\302\222^_(\230\330\330\352\217@\3324\205\200\211\261]\201\304):\n\312u\345\227\224\236\252\376\332S\200\347\240t\227\350c14\326\303\344-\31\202'\274.\320\241H\2246B\222\220\272\375\202\314;\230\354\33|\241^H\314\215\262i\210*6FS\352\250\314x\272.M\323\r\335`\305\237\10\304\24s\331\255\t\237\177]\263/\232t\327\372~\355\243\225\212\277s\357\235\311$\31)\375\347\336s\317\371\236\277\357q\276I\236\374\323\303\217\2\330$\7C\330\200S\363p\23\36\322p:\204j\367c\"\204I\234Q\253)\r\17k8\33\302<\234\n!\210O\251\325#A<\252\336\217\251\307\343j\373\323\352\361\31\r\237\r!\214\317)\306\317\327\340\34\276\240\36Oh\370b\10\213\361\244\206\303!|\t_\16\361\370+A|U}|M}|=\204o\340\233\212\346\237\24\303\267\324\336\2675|G\303?\207\260\6\337\255\301\367\360}%\371\7j\365/!\374+~\250h~T\203\177\303\277\327\340?\360\237\352\361c\r?\321\360_J\373\177k\370i\20O\205\3603\374<\210_\204\320\206_j\370U\10[\224\251[\360\353 ~\23\302o\361\273 ~\257\234\370C\20\377\23\302\377\342\377\224%\377\257\310\237\16\342\31\305\376G\r\347\203xV\331\361i\r\177\n\241\33\247\202\270\20\24P\271\10\225IUH\252\305\27\22\277\4\310)ZP\202A\231\247I\210\374R\23\24]\235\317\27Tgr\303\202%\275Y\323\216\347\207\342c\351\244a\245\342\5;\235\211\367\346\206;\4\1+\337\235\316\230\202\370,\32\313\0342-3\2334\343\373\212\253~\363\216\202z+\6\262\206\207\214\274m\0247{\262)s\\\320\362\27\305t\317\241\246\214\245\251\334\221l&g\244\366[i3\337e\16\345,\263\333Hg\322Y\232-=\264/i$G\314\3\202\332\336\333\214\303\206kz\302\30#\357\274\376\364p\326\260\v\26\255\337=\363t\273\373\2311\262\303\361~\333\242\264\216\262\35\332\24?`\32\267\227\34\333~\250\253\263\243\223\"C\311\21\353F\303\266M++\210\224\311\264\314as<\356\35)\330\266\247\263i\273\223\0007\255\277E\340\333\225K\231\312\306t\326\354+\214\16\232\326~cP\241\32\356\315%\215\314-\206\225V\337\336\246\317\36I\347\5\253\212P%-c\3241j\32\351\\\301J*\214\0275\271F\244sq\7u\245l^Z\201\347Fm\301\314c\312\36r\366\347\367\333F\362v\"\341\250d^\260\246\4\33\233\236g\220\225\272P2c\32\326.\25\6&\340\20\225\367d\275\257\306\246\2718\257?\324%\360\17\36\265M\272X\245>|Yc\324\201b\16-Cl\t\226_,4\244i\234\211\341\321\261\"\216\253\2363\246l\3\304p\330\264K\333]F^\31\326TB\"o\214\332\271\\&\37\357\337\231(\372\276\317L\346\254T\307A\317\27\227E\250\261\241L\343\236\361\2449f\247sN:X\16\207\340\362K\20\313<\261\255\243}\4\305\361)k+\341\7\231J\243\251\315N;\371\16)\24\316\216\255]\16\245`q\5\254]\3W\316\n\352\215\316\253\334<\355\260\253\210\1I\257\21\324\227%v\17\23\332\260s\26\251jh\325\264E\301\274g\265 v\351Y\323\241\311\2Mj\331\22\231\233e>$vo\246\31\243f>o\f\253\364,\226\275\231rN<\337\362f\262`\245\355\243\361\276\\\177!9\26233\234\343\347\310h\271/U\252t\32Ji\337\223\35+\330\204\3034FU\366\247\f\333 \232i\242Y\2602\232,d+e\n\227\4\3445Y\244I\230\3162)\246\235]S)\221\313P\352M\347m\212\17\36.q,\234{Z;\335"..., 3523) = 3523 30059 lseek(5, 4609801, SEEK_SET) = 4609801 30059 read(5, "PK\3\4\n\0\0\10\10\0\17SrC\250\233\352\3559\1\0\0&\2\0\0#\0\0\0", 30) = 30 30059 lseek(5, 4609866, SEEK_SET) = 4609866 30059 read(5, "}\220\337J\2A\24\306\277Q\333M3-S\203 *(\360O\264\320\255\341M\24\4KD\212\367\343:\351\204\316\312\356X\275VWB\27=@\17\25\235\31\315\302\244\2758g\316\231\357\374\3167\373\361\371\366\16\340\34\273\31\244\260cB\321E\311E\231\301\271\220J\352&C\251\342?\362'\356\r\271\352{-\35I\325oT;\f\251\313\260'\30\362\276T\342v2\352\212\250\315\273C\352\24\3740\340\303\16\217\244\251\347\315\224\36\310\230\341\300WB{\361\2037\226\1\217z\336\235MW/\201\30k\31\252\6\203;\22q\314\373\226\363g/Cm\205\233_\235\366 \n\237\315Fk1\255\277Kz\306J\25C\246\25N\242@\\K#*.\371933Y\254\3011!\307\260\377\257}\206\275\237%\367\23\245\345H,.q\204$\375`\363%\300\f\223\242KU\223\352\4e\247V\237\202\275\332\373u\212\31\333=&\345\t\322t*\317T\324\337\260\24\7Yl\22\303\260rs\326\r\355HRvk\365\323)\22\313\260\n\rU-\354p&[\300\3349\314\234\362\330\262\26\267\355t\341\v", 313) = 313 30059 mprotect(0x7fb314502000, 32768, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 58806689, SEEK_SET) = 58806689 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\260:\320\332j\210\0\0j\210\0\0\35\0\0\0", 30) = 30 30059 lseek(4, 58806748, SEEK_SET) = 58806748 30059 read(4, "\312\376\272\276\0\0\0003\4\241\3\0\1\0\0\3\0\1\7\0\10\0*\10\0,\10\0001\10\0M\10\0N\10\0O\10\0P\10\0Q\10\0R\10\0S\10\0V\10\0X\10\0Y\10\0Z\10\0]\10\0f\10\0i\10\0s\10\0y\10\0\224\10\0\230\10\0\231\10\0\235\10\0\236\10\0\237\10\0\246\10\0\252\10\0\255\10\0\256\10\0\257\10\0\260\10\0\275\10\0\276\10\0\346\10\0\347\10\1\224\10\1\225\10\1\271\10\1\274\1\0\0\1\0\23$assertionsDisabled\1\0\1'\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\3(?:\1\0\25(C)Ljava/lang/String;\1\0\4(C)Z\1\0\5(CC)I\1\0\4(I)C\1\0\4(I)I\1\0\26(I)Ljava/lang/Integer;\1\0\25(I)Ljava/lang/String;\1\0\4(I)V\1\0\4(I)Z\1\0\5(I)[C\1\0\26(II)Ljava/lang/String;\1\0\5(II)V\1\0\5(II)Z\1\0\6(III)Z\1\0\5(IZ)V\1\0\25(Ljava/lang/Object;)V\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)I\1\0&(Ljava/lang/String;)Ljava/lang/String;\1\0\25(Ljava/lang/String;)V\1\0\25(Ljava/lang/String;)Z\1\0((Ljava/lang/String;Ljava/lang/String;I)V\1\0\4(Z)V\1\0\5(ZZ)I\1\0\5([I)V\1\0\7([II)[I\1\0\7([III)V\1\0\30(named capturing group <\1\0\1)\1\0\34**** end contents Curly body\1\0!**** end contents GroupCurly body\1\0\33**** end contents Loop body\1\0\35**** end contents prolog loop\1\0\7->next:\1\0\10\1\0\6\1\0\17> does not exit\1\0\24> is already defined\1\0\3>, \1\0\2>}\1\0\vAccept Node\1\0\3All\1\0\4BOTH\1\0\20Bad class syntax\1\0\5Begin\1\0\10CANON_EQ\1\0\20CASE_INSENSITIVE\1\0\10COMMENTS\1\0\4Code\1\0\rConstantVal"..., 34922) = 34922 30059 mprotect(0x7fb31450a000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb31450b000, 8192, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb31450d000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 30650824, SEEK_SET) = 30650824 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\347\332\265%\n\2\0\0\n\2\0\0\37\0\0\0", 30) = 30 30059 lseek(4, 30650885, SEEK_SET) = 30650885 30059 read(4, "\312\376\272\276\0\0\0003\0\33\1\0\3()V\1\0\6\1\0\4Code\1\0\17EnclosingMethod\1\0\1I\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\4Node\1\0\nSourceFile\1\0\rStackMapTable\1\0\27java/util/regex/Matcher\1\0\27java/util/regex/Pattern\1\0\31java/util/regex/Pattern$4\1\0\34java/util/regex/Pattern$Node\1\0\flookbehindTo\1\0\5match\7\0\v\7\0\f\7\0\r\7\0\16\1\0005(Ljava/util/regex/Matcher;ILjava/lang/CharSequence;)Z\f\0\17\0\5\f\0\2\0\1\t\0\21\0\26\n\0\24\0\27\1\0\fPattern.java\0000\0\23\0\24\0\0\0\0\0\2\0\0\0\2\0\1\0\1\0\3\0\0\0\35\0\1\0\1\0\0\0\5*\267\0\31\261\0\0\0\1\0\7\0\0\0\6\0\1\0\0\23\215\0\0\0\20\0\25\0\1\0\3\0\0\0001\0\2\0\4\0\0\0\16\34+\264\0\30\240\0\7\4\247\0\4\3\254\0\0\0\2\0\n\0\0\0\5\0\2\f@\1\0\7\0\0\0\6\0\1\0\0\23\217\0\3\0\t\0\0\0\2\0\32\0\4\0\0\0\4\0\22\0\0\0\6\0\0\0\22\0\2\0\23\0\0\0\0\0\10\0\24\0\22\0\10\0\10", 522) = 522 30059 lseek(4, 58805787, SEEK_SET) = 58805787 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\0014\323%F\3\0\0F\3\0\0\"\0\0\0", 30) = 30 30059 lseek(4, 58805851, SEEK_SET) = 58805851 30059 read(4, "\312\376\272\276\0\0\0003\0003\1\0\3()V\1\0\6\1\0\4Code\1\0\1I\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\4Node\1\0\nSourceFile\1\0\rStackMapTable\1\0\1Z\1\0\2[I\1\0\6accept\1\0\rdeterministic\1\0\5first\1\0\6groups\1\0\20java/lang/Object\1\0\27java/util/regex/Matcher\1\0\27java/util/regex/Pattern\1\0\34java/util/regex/Pattern$Node\1\0 java/util/regex/Pattern$TreeInfo\1\0\4last\1\0\5match\1\0\4next\1\0\5study\7\0\20\7\0\21\7\0\22\7\0\23\7\0\24\1\0\36Ljava/util/regex/Pattern$Node;\1\0%(Ljava/util/regex/Pattern$TreeInfo;)Z\1\0005(Ljava/util/regex/Matcher;ILjava/lang/CharSequence;)Z\f\0\16\0\4\f\0\25\0\4\f\0\r\0\n\f\0\17\0\v\f\0\f\0\36\f\0\27\0\36\f\0\2\0\1\f\0\30\0\37\t\0\32\0!\t\0\32\0\"\t\0\32\0$\t\0\33\0%\t\0\34\0&\t\0\35\0#\n\0\31\0'\n\0\34\0(\1\0\fPattern.java\1\0\10TreeInfo\0 \0\34\0\31\0\0\0\1\0\0\0\27\0\36\0\0\0\3\0\0\0\2\0\1\0\1\0\3\0\0\0,\0\2\0\1\0\0\0\f*\267\0/*\262\0,\265\0-\261\0\0\0\1\0\6\0\0\0\16\0\3\0\0\r\23\0\4\r\24\0\v\r\25\0\0\0\26\0 \0\1\0\3\0\0\0?\0\3\0\4\0\0\0\33+\34\265\0*+\264\0+\3+\264\0)O+\264\0+\4+\264\0*O\4\254\0\0\0\1\0\6\0\0\0\22\0\4\0\0\r\32\0\5\r\33\0\17\r\34\0\31\r\35\0\0\0\30\0\37\0\1\0\3\0\0\0>\0\2\0\2\0\0\0\25*\264\0-\306\0\f*\264\0-+\266\0000\254+\264\0.\254\0\0\0\2\0\t\0\0\0\3\0\1\20\0\6\0\0\0\16\0\3\0\0\r#\0\7\r$\0\20\r&\0\2\0\10\0\0\0\2\0001\0\5\0\0\0\22\0\2\0\34\0\33\0\7\0\10\0\35\0\33\0002\0\30", 838) = 838 30059 lseek(4, 58805086, SEEK_SET) = 58805086 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\260\375\234yy\2\0\0y\2\0\0&\0\0\0", 30) = 30 30059 lseek(4, 58805154, SEEK_SET) = 58805154 30059 read(4, "\312\376\272\276\0\0\0003\0(\1\0\3()V\1\0\6\1\0\4Code\1\0\1I\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\4Node\1\0\nSourceFile\1\0\rStackMapTable\1\0\2[I\1\0\nacceptMode\1\0\5first\1\0\6groups\1\0\27java/util/regex/Matcher\1\0\27java/util/regex/Pattern\1\0 java/util/regex/Pattern$LastNode\1\0\34java/util/regex/Pattern$Node\1\0\4last\1\0\5match\1\0\2to\7\0\16\7\0\17\7\0\20\7\0\21\1\0005(Ljava/util/regex/Matcher;ILjava/lang/CharSequence;)Z\f\0\v\0\4\f\0\f\0\4\f\0\22\0\4\f\0\24\0\4\f\0\r\0\n\f\0\2\0\1\t\0\25\0\32\t\0\25\0\33\t\0\25\0\34\t\0\25\0\35\t\0\25\0\36\n\0\30\0\37\1\0\10LastNode\1\0\fPattern.java\0 \0\27\0\30\0\0\0\0\0\2\0\0\0\2\0\1\0\1\0\3\0\0\0\35\0\1\0\1\0\0\0\5*\267\0%\261\0\0\0\1\0\6\0\0\0\6\0\1\0\0\r+\0\0\0\23\0\31\0\1\0\3\0\0\0b\0\3\0\4\0\0\0-+\264\0 \4\240\0\r\34+\264\0#\237\0\5\3\254+\34\265\0\"+\264\0$\3+\264\0!O+\264\0$\4+\264\0\"O\4\254\0\0\0\2\0\t\0\0\0\3\0\1\22\0\6\0\0\0\32\0\6\0\0\r2\0\20\r3\0\22\r4\0\27\r5\0!\r6\0+\r7\0\2\0\10\0\0\0\2\0'\0\5\0\0\0\22\0\2\0\27\0\26\0&\0\10\0\30\0\26\0\7\0\10", 633) = 633 30059 lseek(4, 58804257, SEEK_SET) = 58804257 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\350\273\354\244\370\2\0\0\370\2\0\0'\0\0\0", 30) = 30 30059 lseek(4, 58804326, SEEK_SET) = 58804326 30059 read(4, "\312\376\272\276\0\0\0003\0&\1\0\3()V\1\0\4(I)V\1\0\6\1\0\4Code\1\0\1I\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\4Node\1\0\nSourceFile\1\0\2[I\1\0\27java/util/regex/Matcher\1\0\27java/util/regex/Pattern\1\0!java/util/regex/Pattern$GroupHead\1\0\34java/util/regex/Pattern$Node\1\0\nlocalIndex\1\0\6locals\1\0\5match\1\0\10matchRef\1\0\4next\7\0\v\7\0\f\7\0\r\7\0\16\1\0\36Ljava/util/regex/Pattern$Node;\1\0005(Ljava/util/regex/Matcher;ILjava/lang/CharSequence;)Z\f\0\17\0\5\f\0\20\0\n\f\0\23\0\30\f\0\3\0\1\f\0\21\0\31\t\0\24\0\33\t\0\26\0\32\t\0\26\0\34\n\0\27\0\35\n\0\27\0\36\1\0\tGroupHead\1\0\fPattern.java\0000\0\26\0\27\0\0\0\1\0\0\0\17\0\5\0\0\0\3\0\0\0\3\0\2\0\1\0\4\0\0\0*\0\2\0\2\0\0\0\n*\267\0\"*\33\265\0 \261\0\0\0\1\0\7\0\0\0\16\0\3\0\0\21\306\0\4\21\307\0\t\21\310\0\0\0\21\0\31\0\1\0\4\0\0\0W\0\4\0\6\0\0\0/+\264\0\37*\264\0 .6\4+\264\0\37*\264\0 \34O*\264\0!+\34-\266\0#6\5+\264\0\37*\264\0 \25\4O\25\5\254\0\0\0\1\0\7\0\0\0\26\0\5\0\0\21\312\0\v\21\313\0\25\21\314\0!\21\315\0,\21\316\0\0\0\22\0\31\0\1\0\4\0\0\0Y\0\4\0\6\0\0\0001+\264\0\37*\264\0 .6\4+\264\0\37*\264\0 \34\2\202O*\264\0!+\34-\266\0#6\5+\264\0\37*\264\0 \25\4O\25\5\254\0\0\0\1\0\7\0\0\0\26\0\5\0\0\21\321\0\v\21\322\0\27\21\323\0#\21\324\0.\21\325\0\2\0\t\0\0\0\2\0%\0\6\0\0\0\22\0\2\0\26\0\25\0$\0\30\0\27\0\25\0\10\0\10", 760) = 760 30059 lseek(4, 58514387, SEEK_SET) = 58514387 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\334F&!\370\v\0\0\370\v\0\0\33\0\0\0", 30) = 30 30059 lseek(4, 58514444, SEEK_SET) = 58514444 30059 read(4, "\312\376\272\276\0\0\0003\0g\3\0\0\200\0\3\0\0\201\n\3\0\0\201\v\3\0\0\201\f\3\0\0\201\r\3\0\0\201\16\3\0\0\201\17\3\0\0\202\n\3\0\0\202\v\3\0\0\202\f\3\0\0\202\r\3\0\0\202\16\3\0\0\202\17\3\0\0\204\0\3\0\0\204\1\3\0\0\204\2\3\0\0\204\3\3\0\0\204\4\3\0\0\204\5\3\0\0\204\6\3\0\0\204\7\3\0\0\204\10\3\0\0\204\t\3\0\1\7\0\3\0\1\20\0\1\0\3()V\1\0\4(I)I\1\0\4(I)Z\1\0\5(II)Z\1\0\10\1\0\6\1\0\5ALNUM\1\0\5ALPHA\1\0\5ASCII\1\0\5BLANK\1\0\5CNTRL\1\0\4Code\1\0\rConstantValue\1\0\5DIGIT\1\0\5GRAPH\1\0\3HEX\1\0\1I\1\0\5LOWER\1\0\17LineNumberTable\1\0\5PUNCT\1\0\5SPACE\1\0\nSourceFile\1\0\rStackMapTable\1\0\5UNDER\1\0\5UPPER\1\0\4WORD\1\0\6XDIGIT\1\0\2[I\1\0\5ctype\1\0\7getType\1\0\7isAlnum\1\0\7isAlpha\1\0\7isAscii\1\0\7isCntrl\1\0\7isDigit\1\0\7isGraph\1\0\nisHexDigit\1\0\7isLower\1\0\nisOctDigit\1\0\7isPrint\1\0\7isPunct\1\0\7isSpace\1\0\6isType\1\0\7isUpper\1\0\6isWord\1\0\20java/lang/Object\1\0\25java/util/regex/ASCII\1\0\7toDigit\1\0\7toLower\1\0\7toUpper\3\0\0\1\0\3\0\0\2\0\3\0\0\3\0\3\0\0\4\0\3\0\0\7\0\3\0\0\10\0\3\0\0\20\0\3\0\0\27\0\3\0\0 \0\3\0\0@\0\3\0\0\377\0\3\0\1\0\0\7\0G\7\0H\f\0006\0005\f\0\37\0\32\f\0007\0\33\f\0?\0\34\f\0E\0\34\f\0D\0\35\t\0Y\0Z\n\0X\0[\n\0Y\0\\\n\0Y\0]\n\0Y\0^\n\0Y\0_\1\0\nASCII.java\0000\0Y\0X\0\0\0\20\0\30\0002\0*\0\1\0&\0\0\0\2\0L\0\30\0+\0*\0\1\0&\0\0\0\2\0M\0\30\0'\0*\0\1\0&\0\0\0\2\0O\0\30\0.\0*\0\1\0&\0\0\0\2\0Q\0\30\0-\0*\0\1\0&\0\0\0\2\0R\0\30\0$\0*\0\1\0&\0\0\0\2\0T\0\30\0#\0*\0\1\0&\0\0\0\2\0U\0\30\0)\0*\0\1\0&\0\0\0\2\0\1\0\30\0001\0*\0\1\0&\0\0\0\2\0W\0\30\0\"\0*\0\1\0&\0\0\0\2\0V\0\30\0!\0*\0\1\0&\0\0\0\2\0N\0\30\0 \0*\0\1\0&\0\0\0\2\0P\0\30\0(\0*\0\1\0&\0\0\0\2\0S\0\30\0003\0*\0\1\0&\0\0\0\2\0\30\0\30"..., 3064) = 3064 30059 lseek(4, 30681484, SEEK_SET) = 30681484 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\20\321W\352\222\3\0\0\222\3\0\0$\0\0\0", 30) = 30 30059 lseek(4, 30681550, SEEK_SET) = 30681550 30059 read(4, "\312\376\272\276\0\0\0003\0009\1\0\4(I)C\1\0\4(I)I\1\0\5([I)V\1\0\6\1\0\4Code\1\0\1I\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\4Node\1\0\nSourceFile\1\0\rStackMapTable\1\0\1Z\1\0\2[I\1\0\6buffer\1\0\6charAt\1\0\6hitEnd\1\0\26java/lang/CharSequence\1\0\25java/util/regex/ASCII\1\0\27java/util/regex/Matcher\1\0\27java/util/regex/Pattern\1\0\34java/util/regex/Pattern$Node\1\0\36java/util/regex/Pattern$SliceI\1\0!java/util/regex/Pattern$SliceNode\1\0\5match\1\0\4next\1\0\2to\1\0\7toLower\7\0\r\7\0\21\7\0\22\7\0\23\7\0\24\7\0\25\7\0\26\7\0\27\1\0\36Ljava/util/regex/Pattern$Node;\1\0005(Ljava/util/regex/Matcher;ILjava/lang/CharSequence;)Z\f\0\32\0\6\f\0\20\0\f\f\0\16\0\r\f\0\31\0$\f\0\17\0\1\f\0\33\0\2\f\0\4\0\3\f\0\30\0%\t\0\37\0&\t\0\37\0'\t\0\"\0(\t\0\"\0)\n\0\36\0+\n\0!\0-\n\0#\0,\v\0\35\0*\1\0\fPattern.java\1\0\6SliceI\1\0\tSliceNode\0 \0\"\0#\0\0\0\0\0\2\0\0\0\4\0\3\0\1\0\5\0\0\0\"\0\2\0\2\0\0\0\6*+\267\0004\261\0\0\0\1\0\10\0\0\0\n\0\2\0\0\17(\0\5\17)\0\0\0\30\0%\0\1\0\5\0\0\0\265\0\4\0\10\0\0\0`*\264\0000:\4\31\4\2766\5\0036\6\25\6\25\5\242\0@\34\25\6`+\264\0.\241\0\n+\4\265\0/\3\254-\34\25\6`\271\0005\2\0006\7\31\4\25\6.\25\7\237\0\22\31\4\25\6.\25\7\270\0002\237\0\5\3\254\204\6\1\247\377\277*\264\0001+\34\25\5`-\266\0003\254\0\0\0\2\0\v\0\0\0\17\0\4\376\0\16\7\0\34\1\1\30$\372\0\5\0\10\0\0\0.\0\v\0\0\17+\0\6\17,\0\v\17-\0\25\17.\0 \17/\0%\0170\0'\0172\0003\0173\0J\0175\0L\17-\0R\0177\0\2\0\n\0\0\0\2\0006\0\7\0\0\0\32\0\3\0!\0 \0\t\0\10\0\"\0 \0007\0\10\0#\0 \0008\0\10", 914) = 914 30059 lseek(4, 30683583, SEEK_SET) = 30683583 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\245\177\321X\226\2\0\0\226\2\0\0'\0\0\0", 30) = 30 30059 lseek(4, 30683652, SEEK_SET) = 30683652 30059 read(4, "\312\376\272\276\0\0\0003\0)\1\0\3()V\1\0\5([I)V\1\0\6\1\0\4Code\1\0\1I\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\4Node\1\0\nSourceFile\1\0\2[I\1\0\6buffer\1\0\27java/util/regex/Pattern\1\0\34java/util/regex/Pattern$Node\1\0!java/util/regex/Pattern$SliceNode\1\0 java/util/regex/Pattern$TreeInfo\1\0\tmaxLength\1\0\tminLength\1\0\4next\1\0\5study\7\0\f\7\0\r\7\0\16\7\0\17\1\0\36Ljava/util/regex/Pattern$Node;\1\0%(Ljava/util/regex/Pattern$TreeInfo;)Z\f\0\20\0\5\f\0\21\0\5\f\0\v\0\n\f\0\22\0\30\f\0\3\0\1\f\0\23\0\31\t\0\26\0\34\t\0\26\0\35\t\0\27\0\32\t\0\27\0\33\n\0\25\0\36\n\0\25\0\37\1\0\fPattern.java\1\0\tSliceNode\1\0\10TreeInfo\0 \0\26\0\25\0\0\0\1\0\0\0\v\0\n\0\0\0\2\0\0\0\3\0\2\0\1\0\4\0\0\0*\0\2\0\2\0\0\0\n*\267\0$*+\265\0 \261\0\0\0\1\0\7\0\0\0\16\0\3\0\0\17\1\0\4\17\2\0\t\17\3\0\0\0\23\0\31\0\1\0\4\0\0\0E\0\3\0\2\0\0\0%+Y\264\0#*\264\0 \276`\265\0#+Y\264\0\"*\264\0 \276`\265\0\"*\264\0!+\266\0%\254\0\0\0\1\0\7\0\0\0\16\0\3\0\0\17\5\0\16\17\6\0\34\17\7\0\2\0\t\0\0\0\2\0&\0\6\0\0\0\32\0\3\0\25\0\24\0\10\0\10\0\26\0\24\0'\0\10\0\27\0\24\0(\0\30", 662) = 662 30059 lseek(4, 30669345, SEEK_SET) = 30669345 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305BE!\255\257\0\2\0\0\0\2\0\0!\0\0\0", 30) = 30 30059 lseek(4, 30669408, SEEK_SET) = 30669408 30059 read(4, "\312\376\272\276\0\0\0003\0\30\1\0\3()V\1\0\4(I)Z\1\0\6\1\0\4Code\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\nSourceFile\1\0\rStackMapTable\1\0\risSatisfiedBy\1\0\27java/util/regex/Pattern\1\0\31java/util/regex/Pattern$1\1\0$java/util/regex/Pattern$CharProperty\1\0\33java/util/regex/Pattern$Dot\7\0\n\7\0\v\7\0\f\7\0\r\1\0\36(Ljava/util/regex/Pattern$1;)V\f\0\3\0\22\n\0\20\0\23\1\0\fCharProperty\1\0\3Dot\1\0\fPattern.java\0000\0\21\0\20\0\0\0\0\0\2\0\0\0\3\0\1\0\1\0\4\0\0\0\36\0\2\0\1\0\0\0\6*\1\267\0\24\261\0\0\0\1\0\6\0\0\0\6\0\1\0\0\17\320\0\0\0\t\0\2\0\1\0\4\0\0\0E\0\2\0\2\0\0\0\"\33\20\n\237\0\35\33\20\r\237\0\27\33\4\200\21 )\237\0\16\33\21\0\205\237\0\7\4\247\0\4\3\254\0\0\0\2\0\10\0\0\0\5\0\2 @\1\0\6\0\0\0\6\0\1\0\0\17\322\0\2\0\7\0\0\0\2\0\27\0\5\0\0\0\32\0\3\0\20\0\16\0\25\4\n\0\21\0\16\0\26\0\30\0\17\0\0\0\0\0\10", 512) = 512 30059 lseek(4, 58791465, SEEK_SET) = 58791465 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\200BI\1\0\4Code\1\0\1I\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\4Node\1\0\nSourceFile\1\0\rStackMapTable\1\0\1Z\1\0\tcharCount\1\0\vcodePointAt\1\0\ncomplement\1\0\6hitEnd\1\0\risSatisfiedBy\1\0\23java/lang/Character\1\0\27java/util/regex/Matcher\1\0\27java/util/regex/Pattern\1\0\31java/util/regex/Pattern$1\1\0$java/util/regex/Pattern$CharProperty\1\0&java/util/regex/Pattern$CharProperty$1\1\0\34java/util/regex/Pattern$Node\1\0 java/util/regex/Pattern$TreeInfo\1\0\5match\1\0\tmaxLength\1\0\tminLength\1\0\4next\1\0\5study\1\0\2to\7\0\22\7\0\23\7\0\24\7\0\25\7\0\26\7\0\27\7\0\30\7\0\31\1\0\36Ljava/util/regex/Pattern$Node;\1\0\34(Ljava/lang/CharSequence;I)I\1\0\36(Ljava/util/regex/Pattern$1;)V\1\0(()Ljava/util/regex/Pattern$CharProperty;\1\0)(Ljava/util/regex/Pattern$CharProperty;)V\1\0%(Ljava/util/regex/Pattern$TreeInfo;)Z\1\0005(Ljava/util/regex/Matcher;ILjava/lang/CharSequence;)Z\f\0\33\0\6\f\0\34\0\6\f\0\37\0\6\f\0\20\0\f\f\0\35\0(\f\0\4\0\1\f\0\r\0\2\f\0\21\0\3\f\0\16\0)\f\0\4\0,\f\0\36\0-\f\0\32\0.\t\0!\0001\t\0!\0002\t\0$\0003\t\0'\0/\t\0'\0000\n\0 \0005\n\0 \0007\n\0$\0004\n\0$\0006\n\0%\0008\n\0&\0004\n\0&\0009\n\0&\0:\1\0\fCharProperty\1\0\fPattern.java\1\0\10TreeInfo\4 \0$\0&\0\0\0\0\0\6\0\2\0\4\0\1\0\1\0\5\0\0\0\35\0\1\0\1\0\0\0\5*\267\0E\261\0\0\0\1"..., 1370) = 1370 30059 lseek(4, 58777122, SEEK_SET) = 58777122 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\353I\6\256E\10\0\0E\10\0\0#\0\0\0", 30) = 30 30059 lseek(4, 58777187, SEEK_SET) = 58777187 30059 read(4, "\312\376\272\276\0\0\0003\0P\3\17\377\377\377\1\0\3()V\1\0\6\1\0\4Code\1\0\1I\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\4Node\1\0\nSourceFile\1\0\rStackMapTable\1\0\1Z\1\0\4atom\1\0\4cmax\1\0\4cmin\1\0\rdeterministic\1\0\27java/util/regex/Matcher\1\0\27java/util/regex/Pattern\1\0\35java/util/regex/Pattern$Curly\1\0\34java/util/regex/Pattern$Node\1\0 java/util/regex/Pattern$TreeInfo\1\0\4last\1\0\5match\1\0\6match0\1\0\6match1\1\0\6match2\1\0\tmaxLength\1\0\10maxValid\1\0\tminLength\1\0\4next\1\0\5reset\1\0\5study\1\0\4type\7\0\20\7\0\21\7\0\22\7\0\23\7\0\24\1\0\36Ljava/util/regex/Pattern$Node;\1\0$(Ljava/util/regex/Pattern$Node;III)V\1\0%(Ljava/util/regex/Pattern$TreeInfo;)Z\1\0006(Ljava/util/regex/Matcher;IILjava/lang/CharSequence;)Z\1\0005(Ljava/util/regex/Matcher;ILjava/lang/CharSequence;)Z\f\0\r\0\5\f\0\16\0\5\f\0\25\0\5\f\0\32\0\5\f\0\34\0\5\f\0 \0\5\f\0\17\0\v\f\0\33\0\v\f\0\f\0&\f\0\35\0&\f\0\3\0\2\f\0\36\0\2\f\0\37\0(\f\0\27\0)\f\0\30\0)\f\0\31\0)\f\0\26\0*\t\0!\0-\t\0#\0+\t\0#\0,\t\0#\0000\t\0#\0003\t\0#\0004\t\0%\0.\t\0%\0/\t\0%\0001\t\0%\0002\n\0#\0008\n\0#\0009\n\0#\0:\n\0$\0005\n\0$\0007\n\0$\0;\n\0%\0006\1\0\5Curly\1\0\fPattern.java\1\0\10TreeInfo\0000\0#\0$\0\0\0\4\0\0\0\f\0&\0\0\0\0\0 \0\5\0\0\0\0\0\16\0\5\0\0\0\0\0\r\0\5\0\0\0\6\0\0\0\3\0'\0\1\0\4\0\0\0F\0\2\0\5\0\0\0\32*\267\0I*+\265\0@*\25\4\265\0?*\34\265\0>*\35\265\0=\261\0\0\0\1\0\7\0\0\0\32\0\6\0\0\20\24\0\4\20\25\0\t\20\26\0\17\20\27\0\24\20\30\0\31\20\31\0\0\0\26\0*\0\1\0\4\0\0\0\247\0\5\0\5\0\0"..., 2117) = 2117 30059 lseek(4, 58776220, SEEK_SET) = 58776220 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\360\351\361{E\3\0\0E\3\0\0#\0\0\0", 30) = 30 30059 lseek(4, 58776285, SEEK_SET) = 58776285 30059 read(4, "\312\376\272\276\0\0\0003\0003\1\0\4(I)C\1\0\5([I)V\1\0\6\1\0\4Code\1\0\1I\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\4Node\1\0\nSourceFile\1\0\rStackMapTable\1\0\1Z\1\0\2[I\1\0\6buffer\1\0\6charAt\1\0\6hitEnd\1\0\26java/lang/CharSequence\1\0\27java/util/regex/Matcher\1\0\27java/util/regex/Pattern\1\0\34java/util/regex/Pattern$Node\1\0\35java/util/regex/Pattern$Slice\1\0!java/util/regex/Pattern$SliceNode\1\0\5match\1\0\4next\1\0\2to\7\0\f\7\0\20\7\0\21\7\0\22\7\0\23\7\0\24\7\0\25\1\0\36Ljava/util/regex/Pattern$Node;\1\0005(Ljava/util/regex/Matcher;ILjava/lang/CharSequence;)Z\f\0\30\0\5\f\0\17\0\v\f\0\r\0\f\f\0\27\0 \f\0\16\0\1\f\0\3\0\2\f\0\26\0!\t\0\33\0\"\t\0\33\0#\t\0\36\0$\t\0\36\0%\n\0\35\0(\n\0\37\0'\v\0\32\0&\1\0\fPattern.java\1\0\5Slice\1\0\tSliceNode\0000\0\36\0\37\0\0\0\0\0\2\0\0\0\3\0\2\0\1\0\4\0\0\0\"\0\2\0\2\0\0\0\6*+\267\0.\261\0\0\0\1\0\7\0\0\0\n\0\2\0\0\17\21\0\5\17\22\0\0\0\26\0!\0\1\0\4\0\0\0\240\0\4\0\7\0\0\0O*\264\0+:\4\31\4\2766\5\0036\6\25\6\25\5\242\0/\34\25\6`+\264\0)\241\0\n+\4\265\0*\3\254\31\4\25\6.-\34\25\6`\271\0/\2\0\237\0\5\3\254\204\6\1\247\377\320*\264\0,+\34\25\5`-\266\0-\254\0\0\0\2\0\n\0\0\0\17\0\4\376\0\16\7\0\31\1\1\30\23\372\0\5\0\7\0\0\0*\0\n\0\0\17\24\0\6\17\25\0\v\17\26\0\25\17\27\0 \17\30\0%\17\31\0'\17\33\0009\17\34\0;\17\26\0A\17\36\0\2\0\t\0\0\0\2\0000\0\6\0\0\0\32\0\3\0\35\0\34\0\10\0\10\0\36\0\34\0001\0\30\0\37\0\34\0002\0\10", 837) = 837 30059 lseek(4, 58775430, SEEK_SET) = 58775430 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305Be\314\26\252\325\2\0\0\325\2\0\0#\0\0\0", 30) = 30 30059 lseek(4, 58775495, SEEK_SET) = 58775495 30059 read(4, "\312\376\272\276\0\0\0003\0/\1\0\3()V\1\0\6\1\0\5Begin\1\0\4Code\1\0\1I\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\4Node\1\0\nSourceFile\1\0\rStackMapTable\1\0\1Z\1\0\2[I\1\0\17anchoringBounds\1\0\5first\1\0\4from\1\0\6groups\1\0\27java/util/regex/Matcher\1\0\27java/util/regex/Pattern\1\0\35java/util/regex/Pattern$Begin\1\0\34java/util/regex/Pattern$Node\1\0\4last\1\0\5match\1\0\4next\7\0\21\7\0\22\7\0\23\7\0\24\1\0\36Ljava/util/regex/Pattern$Node;\1\0005(Ljava/util/regex/Matcher;ILjava/lang/CharSequence;)Z\f\0\16\0\5\f\0\17\0\5\f\0\25\0\5\f\0\r\0\v\f\0\20\0\f\f\0\27\0\34\f\0\2\0\1\f\0\26\0\35\t\0\30\0\36\t\0\30\0\37\t\0\30\0 \t\0\30\0!\t\0\30\0\"\t\0\32\0#\n\0\33\0$\n\0\33\0%\1\0\fPattern.java\0000\0\32\0\33\0\0\0\0\0\2\0\0\0\2\0\1\0\1\0\4\0\0\0\35\0\1\0\1\0\0\0\5*\267\0,\261\0\0\0\1\0\7\0\0\0\6\0\1\0\0\r\214\0\0\0\26\0\35\0\1\0\4\0\0\0}\0\4\0\5\0\0\0>+\264\0)\231\0\n+\264\0'\247\0\4\0036\4\34\25\4\240\0(*\264\0++\34-\266\0-\231\0\33+\34\265\0&+\264\0*\3\34O+\264\0*\4+\264\0(O\4\254\3\254\0\0\0\2\0\n\0\0\0\t\0\3\16@\1\374\0,\1\0\7\0\0\0\36\0\7\0\0\r\216\0\21\r\220\0$\r\221\0)\r\222\0000\r\223\0:\r\224\0<\r\226\0\2\0\t\0\0\0\2\0.\0\6\0\0\0\22\0\2\0\32\0\31\0\3\0\30\0\33\0\31\0\10\0\10", 725) = 725 30059 lseek(4, 58774116, SEEK_SET) = 58774116 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B`\371\332\20\341\4\0\0\341\4\0\0#\0\0\0", 30) = 30 30059 lseek(4, 58774181, SEEK_SET) = 58774181 30059 read(4, "\312\376\272\276\0\0\0003\0G\1\0\3()V\1\0\6\1\0\4Code\1\0\5First\1\0\1I\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\4Node\1\0\nSourceFile\1\0\rStackMapTable\1\0\1Z\1\0\naccess$300\1\0\4atom\1\0\rdeterministic\1\0\5first\1\0\6hitEnd\1\0\27java/util/regex/Matcher\1\0\27java/util/regex/Pattern\1\0\33java/util/regex/Pattern$BnM\1\0\35java/util/regex/Pattern$First\1\0\34java/util/regex/Pattern$Node\1\0 java/util/regex/Pattern$TreeInfo\1\0\4last\1\0\5match\1\0\10maxValid\1\0\4next\1\0\10optimize\1\0\5study\1\0\2to\7\0\21\7\0\22\7\0\23\7\0\24\7\0\25\7\0\26\1\0\36Ljava/util/regex/Pattern$Node;\1\0\35(Ljava/lang/CharSequence;II)I\1\0!(Ljava/util/regex/Pattern$Node;)V\1\0%(Ljava/util/regex/Pattern$TreeInfo;)Z\1\0005(Ljava/util/regex/Matcher;ILjava/lang/CharSequence;)Z\1\0>(Ljava/util/regex/Pattern$Node;)Ljava/util/regex/Pattern$Node;\f\0\17\0\5\f\0\27\0\5\f\0\35\0\5\f\0\16\0\v\f\0\20\0\v\f\0\31\0\v\f\0\r\0$\f\0\32\0$\f\0\2\0\1\f\0\f\0%\f\0\34\0'\f\0\30\0(\f\0\33\0)\t\0\36\0*\t\0\36\0+\t\0\36\0,\t\0\36\0.\t\0!\0000\t\0!\0001\t\0#\0-\t\0#\0/\n\0\37\0003\n\0 \0006\n\0\"\0002\n\0\"\0004\n\0\"\0005\1\0\3BnM\1\0\fPattern.java\1\0\10TreeInfo\0000\0!\0\"\0\0\0\1\0\0\0\r\0$\0\0\0\3\0\0\0\2\0&\0\1\0\3\0\0\0-\0\2\0\2\0\0\0\r*\267\0A*+\270\0@\265\0;\261\0\0\0\1\0\7\0\0\0\16\0\3\0\0\23\21\0\4\23\22\0\f\23\23\0\0\0\30\0(\0\1\0\3\0\0\0\263\0\4\0\4\0\0\0m*\264\0;\301\0 \231\0&*\264\0;+\34-\266\0C\231\0\27*\264\0<++\264\0008-\266\0C\231\0\7\4\247\0\4\3\254\34+\264\0009"..., 1249) = 1249 30059 lseek(4, 58772926, SEEK_SET) = 58772926 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\333=D\271e\4\0\0e\4\0\0#\0\0\0", 30) = 30 30059 lseek(4, 58772991, SEEK_SET) = 58772991 30059 read(4, "\312\376\272\276\0\0\0003\0B\1\0\3()V\1\0\6\1\0\4Code\1\0\1I\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\4Node\1\0\nSourceFile\1\0\rStackMapTable\1\0\5Start\1\0\1Z\1\0\2[I\1\0\rdeterministic\1\0\5first\1\0\6groups\1\0\6hitEnd\1\0\27java/util/regex/Matcher\1\0\27java/util/regex/Pattern\1\0\34java/util/regex/Pattern$Node\1\0\35java/util/regex/Pattern$Start\1\0 java/util/regex/Pattern$TreeInfo\1\0\4last\1\0\5match\1\0\10maxValid\1\0\tminLength\1\0\4next\1\0\5study\1\0\2to\7\0\21\7\0\22\7\0\23\7\0\24\7\0\25\1\0\36Ljava/util/regex/Pattern$Node;\1\0!(Ljava/util/regex/Pattern$Node;)V\1\0%(Ljava/util/regex/Pattern$TreeInfo;)Z\1\0005(Ljava/util/regex/Matcher;ILjava/lang/CharSequence;)Z\f\0\16\0\4\f\0\26\0\4\f\0\31\0\4\f\0\34\0\4\f\0\r\0\v\f\0\20\0\v\f\0\30\0\v\f\0\17\0\f\f\0\32\0\"\f\0\2\0\1\f\0\33\0$\f\0\27\0%\t\0\35\0&\t\0\35\0'\t\0\35\0)\t\0\35\0+\t\0\35\0-\t\0 \0(\t\0 \0.\t\0!\0(\t\0!\0*\t\0!\0,\n\0\37\0/\n\0\37\0000\n\0\37\0001\n\0!\0/\1\0\fPattern.java\1\0\10TreeInfo\0 \0 \0\37\0\0\0\1\0\0\0\31\0\4\0\0\0\3\0\0\0\2\0#\0\1\0\3\0\0\0O\0\2\0\3\0\0\0#*\267\0<*+\265\0008\273\0!Y\267\0?M*\264\0008,\266\0=W*,\264\0009\265\0007\261\0\0\0\1\0\6\0\0\0\32\0\6\0\0\rC\0\4\rD\0\t\rE\0\21\rF\0\32\rG\0\"\rH\0\0\0\27\0%\0\1\0\3\0\0\0\261\0\4\0\5\0\0\0Z\34+\264\0004*\264\0007d\244\0\n+\4\265\0005\3\254+\264\0004*\264\0007d6\4\34\25\4\243\0001*\264\0008+\34-\266\0>\231\0\36+\34\265\0002+\264\0006\3+\264\0002O+\264\0006\4+\264\0003O\4\254\204\2\1\247\377\317+\4\265\0005\3\254\0\0\0\2\0\t\0\0\0\t\0\4\24\374\0\n\1-\5\0\6\0\0\0006\0\r\0\0\rJ\0\r\rK\0\22\rL\0\24\rN\0\37\rO\0%\rP\0002\rQ\0007\rR\0A\rS\0K\rT"..., 1125) = 1125 30059 lseek(4, 58772338, SEEK_SET) = 58772338 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\254\226\222\t\10\2\0\0\10\2\0\0&\0\0\0", 30) = 30 30059 lseek(4, 58772406, SEEK_SET) = 58772406 30059 read(4, "\312\376\272\276\0\0\0003\0\"\1\0\3()V\1\0\6\1\0\4Code\1\0\1I\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\nSourceFile\1\0\1Z\1\0\rdeterministic\1\0\20java/lang/Object\1\0\27java/util/regex/Pattern\1\0 java/util/regex/Pattern$TreeInfo\1\0\tmaxLength\1\0\10maxValid\1\0\tminLength\1\0\5reset\7\0\n\7\0\v\7\0\f\f\0\r\0\4\f\0\17\0\4\f\0\t\0\10\f\0\16\0\10\f\0\2\0\1\f\0\20\0\1\t\0\23\0\24\t\0\23\0\25\t\0\23\0\26\t\0\23\0\27\n\0\21\0\30\n\0\23\0\31\1\0\fPattern.java\1\0\10TreeInfo\0000\0\23\0\21\0\0\0\4\0\0\0\17\0\4\0\0\0\0\0\r\0\4\0\0\0\0\0\16\0\10\0\0\0\0\0\t\0\10\0\0\0\2\0\0\0\2\0\1\0\1\0\3\0\0\0)\0\1\0\1\0\0\0\t*\267\0\36*\266\0\37\261\0\0\0\1\0\6\0\0\0\16\0\3\0\0\6\326\0\4\6\327\0\10\6\330\0\0\0\20\0\1\0\1\0\3\0\0\0=\0\2\0\1\0\0\0\25*\3\265\0\33*\3\265\0\32*\4\265\0\35*\4\265\0\34\261\0\0\0\1\0\6\0\0\0\26\0\5\0\0\6\332\0\5\6\333\0\n\6\334\0\17\6\335\0\24\6\336\0\2\0\7\0\0\0\2\0 \0\5\0\0\0\n\0\1\0\23\0\22\0!\0\30", 520) = 520 30059 lseek(5, 5031562, SEEK_SET) = 5031562 30059 read(5, "PK\3\4\n\0\0\10\10\0\20SrC\265\321{\30\222\4\0\0 \t\0\0:\0\0\0", 30) = 30 30059 lseek(5, 5031650, SEEK_SET) = 5031650 30059 read(5, "\235V{W\23G\24\377\r$\331\260, \210\17\244\264\213\240\205\10\4[\265-P4PbS!*\241 \364a\207\315\220,,\273qw\26\361\243\360\t\372\257\326s@\3139\265\177\367#yNk\357l@\303\313s\24\316\231;s\347>~\3675\233\177\376\373\363/\0_`S\307\247\230\320\321\205I\35\337a\252\201v\331F\334\306\367\215\310\341\7\265\334\3210\255#\211\31\35\215\310k\270\253\350=\r\3675\314&Q\320\321\2149\r?\352h\305\274\206\5\r\17t\264c\"\211EE\227\224\331\237\324\356g\35\247\361\213\206_utbB\303C\r\2771\200\301\310\271\256\360'\35\36\4\"`8\225\315\24\3462\17\247\36\314M\345\v\271\273\371\2C\313\364*\337\340\351P\332N\272 \344(CC\301.\271\\\206\276`\3509x;V=:\334-\245\v\322\267\335\322\3508i$\306l\327\226\343\f\365}\375\363\f\261I\257(\224e\333\25\371p}Y\370s|\331!N\333\264gqg\236\373\266:\3571c\262l\23\264\33\323\256\220\351`%]\261-\356\27\323\276X\21\276p-\221\236\335\337\25\304\243P\321\254\355\210,\267\244\347?!\347\347KB\36+\302p\263\257\212\327\366\322\2121\332\377a>\310xl%2\324|\320\16\303\255C\226\227>\3344#\273\237\35\260\222\367d\326\v\335\342\324\246%*\322\366\\\222\252\27\233R%\356H\336\31\352\354^\206\366\232\2\345\244\3609e\205\356:\244\37\272\26\227\"\317\327E\220\221\ve[\212\240\302-r\312\226(.\227\370\fM\5\311\255\265\31^\211jA\315\250\201kX\246\6dH\216Y\316^Y\365\202\27\372\373I\355~_=\206\24\32\3\227p\331\300\0\206\311\226\1\vE\3\335\270\250A\30XA\211|\30(\3036\260\2125\352\311\303\241\31p\260n\300\205\3070|RVsnQl\212b\226\7\222\327\342P\276+\f]\357\315+%\376\235\323\234\343\210\22w(\23R\324Hd\ne/t\212\246+6\204o\226y\245\"\334\1sYX<\f\204)6\355@*\237\246\267b\252\36\tH$\240k\341\232VYXk\2428\244\240F\361@\17\334]^\25\226j\371\243}M\317YmY\0314\32\375|\324\310\355}\375\307\215H\323\201\327\213z\332~k\352\354\276\306\341\321\321\250\220\371h\352\3505\213F%:\34\364PEI\322I\341\26\203\5[\226\31\316\364\35\205\240\ftZ\334\235\364\5\265Wm\323\316\n\36\225\253\365\360\33\265t\f\217\36\325\3241\326k8se\337{\254\2068\22n;\362<\0213\21\365p\221:\3448\240GX{\rE1\266P\2323\313\201\347\204R\334\343*\324\244\364\252B'D=O\363\336E_?\365\t\352P\263O\264\207Nu\350E\214\366\364>\320\3729q\322D\351K\205xj\7\354Y$\322Gk\"b\366\241\237V\243*\200\24\256\20m\240wepOy\230\244\325]\"\25{\201\272\247\207\264Gj\264\23\30\"WU\355\341\2526\273BP\22\304\333Lm\243~\346\17\304^\"\316\220\37|\211\4\303\26\262\264\321\30\376Fr$6\320\21\333F\303\26\322\235[\350N\275\200\276\205\v\273h\\$\320\306\323\221\370.\232\27\333Z:\342;8\365j\27\255\213\251\316\35\264=\375\375\315\316.N"..., 1170) = 1170 30059 lseek(4, 59340175, SEEK_SET) = 59340175 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\213Q\332\v\377\2\0\0\377\2\0\0#\0\0\0", 30) = 30 30059 lseek(4, 59340240, SEEK_SET) = 59340240 30059 read(4, "\312\376\272\276\0\0\0003\0*\10\0\4\10\0\5\10\0\n\1\0\0\1\0\2 (\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\25(Ljava/lang/String;)V\1\0'(Ljava/lang/String;Ljava/lang/String;)V\1\0\1)\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\1J\1\0\17LineNumberTable\1\0\nSourceFile\1\0\rStackMapTable\1\0\6append\1\0\35java/io/FileNotFoundException\1\0\23java/io/IOException\1\0\20java/lang/String\1\0\27java/lang/StringBuilder\1\0\20serialVersionUID\1\0\10toString\5\363\212+\326\340!j\344\7\0\23\7\0\24\7\0\25\7\0\26\1\0-(Ljava/lang/String;)Ljava/lang/StringBuilder;\f\0\v\0\7\f\0\30\0\6\f\0\v\0\10\f\0\22\0\37\n\0\34\0 \n\0\34\0\"\n\0\36\0 \n\0\36\0!\n\0\36\0#\1\0\32FileNotFoundException.java\0!\0\33\0\34\0\0\0\1\0\32\0\27\0\16\0\1\0\r\0\0\0\2\0\31\0\3\0\1\0\v\0\7\0\1\0\f\0\0\0!\0\1\0\1\0\0\0\5*\267\0$\261\0\0\0\1\0\17\0\0\0\n\0\2\0\0\0003\0\4\0004\0\1\0\v\0\10\0\1\0\f\0\0\0\"\0\2\0\2\0\0\0\6*+\267\0%\261\0\0\0\1\0\17\0\0\0\n\0\2\0\0\0@\0\5\0A\0\2\0\v\0\t\0\1\0\f\0\0\0\202\0\4\0\3\0\0\0007*\273\0\36Y\267\0&+\266\0(,\307\0\10\22\1\247\0\33\273\0\36Y\267\0&\22\2\266\0(,\266\0(\22\3\266\0(\266\0'\266\0(\266\0'\267\0%\261\0\0\0\2\0\21\0\0\0)\0\2\377\0\25\0\3\6\7\0\35\7\0\35\0\2\6\7\0\36\377\0\27\0\3\6\7\0\35\7\0\35\0\3\6\7\0\36\7\0\35\0\17\0\0\0\n\0\2\0\0\0M\0006\0P\0\1\0\20\0\0\0\2\0)", 767) = 767 30059 lseek(5, 5030690, SEEK_SET) = 5030690 30059 read(5, "PK\3\4\n\0\0\10\10\0\17SrC\270M\10\313\22\1\0\0007\2\0\0003\0\0\0", 30) = 30 30059 lseek(5, 5030771, SEEK_SET) = 5030771 30059 read(5, "\225\220\315J\303@\24\205\317\255m\323?5j\273\361\t\222\205\16\270\355B\2\"X*\202\1\27\356\322\3446\244\304\211N&\322\276\232\v\37\300\207\22'\251\265B\\\330Y\314\31\356\334\363\235\231\373\361\371\366\16\340\2#\v'\26\206\204Q\314\332\347\227\202e\310WI\250\223L\6jEp\35w*Y\213|.\362\340IgY\232\v\337\273\255\267\216\t\3\311\313\37\10\341lk}N\302@EB\361\234Uy)\3567\247M\273\261\267\24\347\254\t{\216\373@\350&\371\215\214x\311QUy$\364\177=\221p\351L\27\301k \322@\306\302\327*\221\361x\267<\273\344\25\263\374\273\342\231h\357\17\350d\262\33\266\243\263\265\22304\23\250\361\10=?+T\310\327Ij\376qZc\224\365\363\322fF\370\357\3405\314\336\246\335\315\26\34\3526\201\320@\271\254\246\31$\232\200\321\26\332\225Z\350T\332E\257\322>\6\225\356\343\240\322C\330\306I82{\3\307_", 274) = 274 30059 lseek(4, 58440613, SEEK_SET) = 58440613 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305BV\246\2\26?\2\0\0?\2\0\0%\0\0\0", 30) = 30 30059 lseek(4, 58440680, SEEK_SET) = 58440680 30059 read(4, "\312\376\272\276\0\0\0003\0\33\1\0\3()V\1\0\25(Ljava/lang/String;)V\1\0\30(Ljava/lang/Throwable;)V\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\1J\1\0\17LineNumberTable\1\0\nSourceFile\1\0\37java/lang/IllegalStateException\1\0\32java/lang/RuntimeException\1\0\20serialVersionUID\5\346WU\346\232F\362H\7\0\n\7\0\v\1\0*(Ljava/lang/String;Ljava/lang/Throwable;)V\f\0\4\0\1\f\0\4\0\2\f\0\4\0\3\f\0\4\0\21\n\0\20\0\22\n\0\20\0\23\n\0\20\0\24\n\0\20\0\25\1\0\32IllegalStateException.java\0!\0\17\0\20\0\0\0\1\0\30\0\f\0\7\0\1\0\6\0\0\0\2\0\r\0\4\0\1\0\4\0\1\0\1\0\5\0\0\0!\0\1\0\1\0\0\0\5*\267\0\26\261\0\0\0\1\0\10\0\0\0\n\0\2\0\0\0,\0\4\0-\0\1\0\4\0\2\0\1\0\5\0\0\0\"\0\2\0\2\0\0\0\6*+\267\0\27\261\0\0\0\1\0\10\0\0\0\n\0\2\0\0\0007\0\5\0008\0\1\0\4\0\21\0\1\0\5\0\0\0#\0\3\0\3\0\0\0\7*+,\267\0\31\261\0\0\0\1\0\10\0\0\0\n\0\2\0\0\0K\0\6\0L\0\1\0\4\0\3\0\1\0\5\0\0\0\"\0\2\0\2\0\0\0\6*+\267\0\30\261\0\0\0\1\0\10\0\0\0\n\0\2\0\0\0]\0\5\0^\0\1\0\t\0\0\0\2\0\32", 575) = 575 30059 lseek(5, 5031045, SEEK_SET) = 5031045 30059 read(5, "PK\3\4\n\0\0\10\10\0\20SrC\305\224E\271\253\1\0\0\325\2\0\0<\0\0\0", 30) = 30 30059 lseek(5, 5031135, SEEK_SET) = 5031135 30059 read(5, "\235R]k\324@\24=\263\215M6F[S\253\326\257~X\273\335U3UD\204-})\26\205\325\202\221\26|\233Mfw\247\304\211N&\242\376+_\24|\360\7\370\243\304\233\214\202 \370\320\201\271\347\336\223\271g\356\275\223\37?\277}\7\360\0\275\20!\256\6\270\26\242\213\353\1n\4\270\31`5\300Z\200u\37\33>n1\314\357*\255\354\36\303\334v\377\210\301\333/s\311\2600RZ\276\250\337\214\245y%\306\0051\361\250\314Dq$\214j\342\337\244gg\252b\0C\364Lki\366\vQU\222\230\307#--\257&\374\255\312\204\311\271\221\23i\244\316$\177\371\307K\345\273\272\301\3U\310\3\221\331\322|\334\274?d\350\246j\252\205\255\r\351\367F'\342\275\340\265U\5\177*\252Y*\355\256\243\n\241\247<\265F\351\351p\217\262\302\264\254\215\23cX\377\337%I\223O\35>\321YQV\224\377\\\332Y\231\373\330\214p\26\21M$\231\210\312\212\10\267\261E\345\270(\231~\242\21\221\357\276\267\241\227\330\17\226\301o\240%\36\235\256i\206\v\377\264\311\360\3604bT\243\310s\206\345\355\277\306t8>\221\231\35\366_c\207~\204\20\315\242Gk\272%\1\0\4Code\1\0\5Entry\1\0\1I\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\5clear\1\0\10contains\1\0\vcontainsKey\1\0\10iterator\1\0\25java/util/AbstractSet\1\0\21java/util/HashMap\1\0\23java/util/HashMap$1\1\0\27java/util/HashMap$Entry\1\0\30java/util/HashMap$KeySet\1\0\16newKeyIterator\1\0\6remove\1\0\21removeEntryForKey\1\0\4size\1\0\6this$0\7\0\21\7\0\22\7\0\23\7\0\24\7\0\25\1\0\34Ljava/util/AbstractSet;\1\0\23Ljava/util/HashMap;\1\0\26(Ljava/util/HashMap;)V\1\0\26()Ljava/util/Iterator;\1\0\33()Ljava/util/Iterator;\1\0+(Ljava/util/HashMap;Ljava/util/HashMap$1;)V\1\0-(Ljava/lang/Object;)Ljava/util/HashMap$Entry;\f\0\31\0\7\f\0\32\0!\f\0\4\0\2\f\0\r\0\2\f\0\17\0\3\f\0\4\0\"\f\0\26\0#\f\0\30\0&\t\0\34\0'\t\0\37\0(\n\0\33\0)\n\0\34\0*\n\0\34\0+\n\0\34\0-\n\0\34\0.\n\0\37\0,\1\0\fHashMap.java\1\0\6KeySet\0000\0\37\0\33\0\0\0\1\20\20\0\32\0!\0\0\0\7\0\2\0\4\0\"\0\1\0\5\0\0\0\"\0\2\0\2\0\0\0\n*+\265\0000*\267\0001\261\0\0\0\1\0\t\0\0\0\6\0\1\0\0\3\314\0\1\0\20\0#\0\2\0\5\0\0\0 \0\1\0\1\0\0\0\10*\264\0000\266\0004\260\0\0\0\1\0\t\0\0\0\6\0\1\0\0\3\316\0\n\0\0\0\2\0$\0\1\0\31\0\1\0\1\0\5\0\0\0 \0\1\0\1\0\0\0\10*\264\0000\264\0/\254\0\0\0\1\0\t\0\0\0\6\0\1\0\0\3\321\0\1\0\16\0\3\0\1\0\5\0\0\0!\0\2\0\2\0\0\0\t*\264\0000+\266\0003\254\0\0\0\1\0\t\0\0\0\6\0\1\0\0\3\324\0\1\0\27\0\3\0\1\0\5\0\0\0004\0\2\0\2\0\0\0\21*\264\0000+\266\0005\306\0\7\4\247\0\4\3\254\0\0\0\2\0\f\0\0\0\5\0\2\17@\1\0\t\0\0\0\6\0\1\0\0\3\327"..., 1144) = 1144 30059 lseek(4, 58507401, SEEK_SET) = 58507401 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\355\201#\232\31\3\0\0\31\3\0\0#\0\0\0", 30) = 30 30059 lseek(4, 58507466, SEEK_SET) = 58507466 30059 read(4, "\312\376\272\276\0\0\0003\0)\1\0\5()TK;\1\0\6\1\0\4Code\1\0\5Entry\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\6getKey\1\0\21java/util/HashMap\1\0\23java/util/HashMap$1\1\0\27java/util/HashMap$Entry\1\0\36java/util/HashMap$HashIterator\1\0\35java/util/HashMap$KeyIterator\1\0\4next\1\0\tnextEntry\1\0\6this$0\7\0\n\7\0\v\7\0\f\7\0\r\7\0\16\1\0\23Ljava/util/HashMap;\1\0-Ljava/util/HashMap.HashIterator;\1\0\24()Ljava/lang/Object;\1\0\26(Ljava/util/HashMap;)V\1\0\33()Ljava/util/HashMap$Entry;\1\0+(Ljava/util/HashMap;Ljava/util/HashMap$1;)V\f\0\21\0\27\f\0\t\0\31\f\0\2\0\32\f\0\20\0\33\t\0\26\0\35\n\0\24\0\36\n\0\25\0\37\n\0\26\0\37\n\0\26\0 \1\0\fHashIterator\1\0\fHashMap.java\1\0\vKeyIterator\0000\0\26\0\25\0\0\0\1\20\20\0\21\0\27\0\0\0\3\0\2\0\2\0\32\0\1\0\3\0\0\0#\0\2\0\2\0\0\0\v*+\265\0!*+\267\0#\261\0\0\0\1\0\6\0\0\0\6\0\1\0\0\3\236\0\1\0\17\0\31\0\2\0\3\0\0\0 \0\1\0\1\0\0\0\10*\266\0%\266\0\"\260\0\0\0\1\0\6\0\0\0\6\0\1\0\0\3\240\0\7\0\0\0\2\0\1\20\0\0\2\0\34\0\1\0\3\0\0\0\36\0\2\0\3\0\0\0\6*+\267\0$\261\0\0\0\1\0\6\0\0\0\6\0\1\0\0\3\236\0\3\0\10\0\0\0\2\0'\0\7\0\0\0\2\0\30\0\5\0\0\0\"\0\4\0\24\0\22\0\4\0\10\0\25\0\22\0&\4\2\0\26\0\22\0(\0\22\0\23\0\22\0\0\20\10", 793) = 793 30090 <... futex resumed> ) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091214, 685104000}, ffffffff 30059 lseek(5, 5024238, SEEK_SET) = 5024238 30059 read(5, "PK\3\4\n\0\0\10\10\0\20SrC\237\345\263\240J\16\0\0\220\35\0\0006\0\0\0", 30) = 30 30059 lseek(5, 5024322, SEEK_SET) = 5024322 30059 read(5, "\225W\t|\24\327y\377?i\245Y\255F'H l\360\200\301\350\2\331\330\221\203d\300HF ,\4H\2Y\340\203\321\356\2544\366jW\354\2148\3344\216\323\220\322$m\232\326\215\203\2238G\223\3224n\v\216-\t\3136n\323@K\235\264i\223\246\251\323$M\235\246w\342\236vc\233\374\277\231\331\325JH\24\375\244}\363\315{\357\273\317\271\364\366s/\2\330\240\356\213\340^\274\250\341\274\206\227\"\310\307\37\204\361\207\362\374\262,\177$\313W\"\310\303\205\"\34\304\305\10\376\30\177\242\341R\4\272\340\374\251\206\227\303\370j\4e\370\232l\375\231\\\372\363\10\227\257\313\362\27\21\334\200\277\224\275o\310\35375\374\225<\277\25A\r^\24\350\257e\371\266\334\372\33\r\257\204\361\35\1/\310\346\337\206\361\335\10J\345\345{\370~1\376\16?\20\254\37\204\361\367\302\355\202\354\274*;\257\26\343\207\370\7Y~\244\341\0375\374S\4\353\361\317\0214\341_\"\370W\374[\30\377\256\341\307\2\376DN^\223\223\377\10\343?\5\367\277\204\323\177\207\361?\21\374/^\17\343\215\10\376\17?\225\33o\312\362V>\365\206\354\275-\313\345\210\202RU%H\325\24E-\21\272K5U\243\251e\232\272N\241\270m_G\307\266\236\7z;\17l#\275N\205\222\366T\322q\315\244\273\337L\214Y\nZt\330L&\255\204\302\r]\17\232G\314\246\244\235j\n\366\234\246\16;a\265\373/\255\n\5v2f\35Sh\354JZn\223\23o\32\265\243f:\326\224\266\342V\332JF\255\246\16\223\264{\255\303c\362\326)\267\211V\342\241u\272V\332tSi\205\305>\2431\327N4evy\255\250\327\36J\232\356X\232Rm\237\343\312\35\v\340\272-\351\246\217\267n&\325\302;\354\244\355nV\330T\353\323\244z\242U\353Bt\250\333\257\20jO\305(YY\227\235\264\272\307F\6\255t\2379\230\340NeW*j&\366\233i[\336\203Mee\r\0320\354N\271\35\251\261dl\333\261\2505\352\332\251$\205\v\271\303\266\243\260a^Y<\366Vl\206H\236\364\304\215\333\302\250t\246V\nyvR\241f\306ngrt\314\355u\323\2269\"\356\350u\315\350C\273\314QOT\t\26\274\302\304\362\222\361\222B\305,;\211\356\221\254\320\224\266\310v\2\261\24\362k\353\16P\2068=\354\311\330\351\7\310\212\3314f\vY\24\227\333\35\236\6E^x\370p\325\220\345N\23\362\314f\216p\177\231p\350\241\1\354\264\25\233y\201B\244-W\341\272\250\231l\247\212\256\225k\264\36\313\214Y\3519\264\242\330+\35\223\241q\274}\330\212>t\227\35\25\365\314\364\361\255C\246\315\f\t4\31\16\360\22fr\250\211&\264\223C\331\310q\314\0217\225b\226\364n\335\225q\3164\235\5\7X\211\23ly\301\253p\343\325\370\364X\321T:FKF\354l\274+\334\262\340\24\221\360\275BAn:W\350\243\260\366\32\25W(\317\240O'}\365\314,9>\232\311\224\215WK\365\253\250\276\271US\327\373\25\333\217\233+%Q\250\253\255\273f\241\213sh(l\231\303\361u\363\232\267'\3e\10H\345\211\246\222\256=Dk\10\341\261\301\214M\2662X\267\316A}\347\316\205\321\317\223\370\254\312\206u\347\356\334\312R>\232rl\201;\223\355\201\30z\322:\346\266\231\216\325;j\262D\224\r\36w-\247/\325"..., 3658) = 3658 30059 lseek(5, 5014298, SEEK_SET) = 5014298 30059 read(5, "PK\3\4\n\0\0\10\10\0\20SrC\362/K\326\t\7\0\0\223\16\0\0007\0\0\0", 30) = 30 30059 lseek(5, 5014383, SEEK_SET) = 5014383 30059 read(5, "\225W\213w\24W\35\376f_\263\331Lx\244\220\24\205tA\220\354&a\201b\325\200\324\5\222\262i\262\211\331\204\20\24\351dw\222\f\335\314lgf\333\200Z_\370\252\257\252\255J\255\255\317\342\243*\250\335\264\256\247x\216\347p<\376I\352\21\277{g\223\335l6\10\347\204;w\357\375=\277\337w\177\367\362\317\377\376\345]\0Gq+\206\1\314\265\241\37\371\30\207B\f\6\346U,\304\20\306\234\212E\25f\fQ\\\216A\305\3231\34DQ\354,\305`\301\216\241\204g\204\252\243\302U\341\251(\307\320\211\271(\236\25\337\347\304\260,\6\352l\307\25\241}\265\r\237\302\247\333\361\31<\337\216\317\342sb\370\274\212/\304\320\203/\212\341Z\24_\22\337/\213\341+*\276\32\305\327b\330\217k*^\20\6\256\211\341\353*\276\21CR\4\370M\25\337R\361m\5\241y\263h(\3302zY\177VO\231vj\230\277\217+\350t\215g\312\206\2257\316\230y\317\264-\335\271\242\340\340\250ex)w>\345\352K\236m\27\335T.=\226\333 H\365\310\t\3232\275\223\n\266\367\256\267\2348G\237\247\355\2}n\0355-#[^\2323\234)}ND\3219j\347\365\3429\3351\305\357\332b8O\351\274\202\375\255\234O\31\313\336YC/\30\216\260\231\27\236\27\345O\5\217\264\222\0271\370\362\24Uh}\247\37^Q\267\26RC\313y\243$r\340^\310[4]\5\217\256\32)\231y\335)\244\34c\336pD\266\251\364\234\3539z\336\33\326]O_\305\240\6^\254\320\0ZG\316\323\363O\217\351%\231\217\204\376\5\26^A\327\274i\0256\242\247\240\247\31\263\346\342\2641k\303r)/0\253'\220\363\34\323Z\240@\300\334\257`\207\277S\366\314b*\343\31\216\356\331\"\353-\365\340\262\372\22!\330\276~ah\331\343\232\240\305\324\225\222\221+\227J\266\343\31\5\302u\201\311\324e)G\6\252x\221 .\30^\253D\22\275\211\373fL\324\263\375\360\31xo\242URm\246\233\261\n\306\262\210%\330\233`4\355\r~\25<\336\273Q+\261i\375&Wg\253\6\4w\362\266\345\231\214`\2330\\\236[=\3i\"\222na}d\344\301\354\207I\25\207\266\224\21\22\314\365\354\22\251\222\263\313\216O\34\26~SR\35\22\2765<\212\357hH\341\260\206!\f\253\370\256\206\357\341\230\202}\377\377d\360\3606\vIb\234*\317\2138\v\342,N\326NNw#\3352V\251\3541_C_\22\376\217\211\341%\rS\230\326\3602\276\257\342\7\32&\221S\361C\r\327\361\212\206#8\252\340\241\26\247J\301\236\365`M\310O\303~w3\302\247\312fQ\206\2248m\227\213\205\270e{q\273dX\361\325\312\304\353|\214\v\312\16\3065\374\10\257\212\341\307\"\322\3274\274\216i\25?\321\360S\374L\305\3175\374\2\277$i5\274\201\31\r7\360+V\273\331\255\206_\3437B\375\267\254\331!\341B\303\233\370\235\206\337\343\17D\273.\236)\26\215\5\275\230v\26\312K\206\3455\2442 \260\213\233\256\fY\217\273\253\307(\276\306\20\31o\334\343\31\33\214+\320\0321\327p\0233\254X\335\321\264\265fa\274$\2162\2354x;\362\300]j]\326\343s\227\215\1\0\4Code\1\0\rConstantValue\1\0\1J\1\0\17LineNumberTable\1\0\nSourceFile\1\0\32java/lang/RuntimeException\1\0'java/lang/UnsupportedOperationException\1\0\20serialVersionUID\5\356\301e\347\22\203\213\177\7\0\n\7\0\v\1\0*(Ljava/lang/String;Ljava/lang/Throwable;)V\f\0\4\0\1\f\0\4\0\2\f\0\4\0\3\f\0\4\0\21\n\0\17\0\22\n\0\17\0\23\n\0\17\0\24\n\0\17\0\25\1\0\"UnsupportedOperationException.java\0!\0\20\0\17\0\0\0\1\0\30\0\f\0\7\0\1\0\6\0\0\0\2\0\r\0\4\0\1\0\4\0\1\0\1\0\5\0\0\0!\0\1\0\1\0\0\0\5*\267\0\26\261\0\0\0\1\0\10\0\0\0\n\0\2\0\0\0*\0\4\0+\0\1\0\4\0\2\0\1\0\5\0\0\0\"\0\2\0\2\0\0\0\6*+\267\0\27\261\0\0\0\1\0\10\0\0\0\n\0\2\0\0\0004\0\5\0005\0\1\0\4\0\21\0\1\0\5\0\0\0#\0\3\0\3\0\0\0\7*+,\267\0\31\261\0\0\0\1\0\10\0\0\0\n\0\2\0\0\0H\0\6\0I\0\1\0\4\0\3\0\1\0\5\0\0\0\"\0\2\0\2\0\0\0\6*+\267\0\30\261\0\0\0\1\0\10\0\0\0\n\0\2\0\0\0Z\0\5\0[\0\1\0\t\0\0\0\2\0\32", 591) = 591 30059 stat("/nfs/srpipe_references/references/Plasmodium_falciparum/default/all/fasta/all.fa", {st_mode=S_IFREG|0664, st_size=23680979, ...}) = 0 30059 stat("/nfs/srpipe_references/references/Plasmodium_falciparum/default/all/fasta/all.fa.fai", {st_mode=S_IFREG|0664, st_size=431, ...}) = 0 30059 lseek(5, 5020681, SEEK_SET) = 5020681 30059 read(5, "PK\3\4\n\0\0\10\10\0\20SrCn\211U'W\t\0\0\330\23\0\0000\0\0\0", 30) = 30 30059 lseek(5, 5020759, SEEK_SET) = 5020759 30059 read(5, "\235W\211\177\24\345\31~f\257Iv\207\303@\2\313!\33\265$$@\300\2J\270*\24t\221\0%\34\345\220v\262;I\6\226\231\2703\v\1\254\330j\361\254w\253@[z\t\266\322\26[M\210i\25zhk\17m\255\255\255\255\255\366\376\37P\372\2743\223d\227l\25\370\375\222\357x\277\357\275\237\367\375f_~\357\271\347\1\\\215\377\3061\17\7T\334\26G\10\7*Q\215O\307\361\31\334\36\347\352\2168*\361\331\4\16\342N\25w\251\270[\305=q$p\240\2\367\312|_\5>'\363\375q\304\361\200\334{P8\36\22\336\207U<\"\363\2432|>\201/\3401\31\36\227\v\207T\34\216c\"\216\310\360X\5\276(\363\227*\360e\231\217\312\360\225\4\276\212\257\311\360\3658\276\201'd8\26\307q<)\3037\343\370\26\236\22I'T|\273\2\337\21#\276+F\234\24#\236\26\225\337\253\300\367e\363\214\f\317&\320#F\34\304\243*zU\234R0\3121n.\30V\306Xn\271y\323pHY\265C\337\2557\25\\3\327\324\242w-PP\331jvX\272[\310\33\n\326\227\236.\364\2679\335\352hj\245\0\253c\301*\313p\233\234\366\246.3\243\347\263My\243\335\310\213\202\246\25\272\343\352\255\201\272\264\2255\272E\347\336\5\213\251\"\266\320\264Lw\261\202\313\352}\211\246\335\264\302\314\31\v\246mT\20Yfg\r1\314\264\214\325\205]mF~\275\336\226#\245j\225\235\321s\33\365\274)\373\200\30q;M\2721\375\"\354\20\37MY\210J\5#KMP\20\256\0273\302z6\253`N\375E;(\314qsp\257`\366E\213\240\366\274\341*\30\321\352\352\231\235\f\274\347,\321\310\320\221S\337E\263W\\\274e\303\263'\266F\r\337L\3252\366\254\366DW\r\277H\305\224\247\347\30\352\352\372\242\3435m;\214\214\273`\332\26\312\261\335N#_\312\35\0343 \336\241g\vsf\272rql\21\270\322\244\350\256\235\227\334\370W\275+5\245)\337\3335\220\366\353\313\360.\274\4,\262^U\364\21\4]z\336\361\217|T0\316N!\307\34\304\\{\247a\321\357\311E*\363F\207\321\315\212p3\235\353\274{\22\240\214m\271f\7\335s\314}\224\240\254TP\221\243\375\256i[\n\2646\3351\234\265F^p\315\323\264\220\366\272E$\325\311\350\226%n\217)R\325\352\23\251`\204S\354\1E\220gJ\txW\333\356\n\273`e\227wg\214.QK\377\16\253xNE\277\212\37\260kPH\247\356\244\213\300Y\222\315\1T0\233q\337\33\37\20#:\f\267\230iy9\246K@y\205\31\244\216\231\256\237V\36\16\351\262\7\227\222k\257\262\31\366\315\303\1ZD\3614\20c\227\246!\336j\27\362\31\303\307\320\270\3417g\212\"\r\v\261\234\307Cn\21\0;\215\354\r\272\323\311b\327p-\346\253\370\241\206\347\261H\303v\31^\300i\25g4\374\10?V\320t\221\226\21\273\245\34k\275i\20%\3\246\24\245si\301\314e\5\212\25\313<\34\244\3524\374\4?U\220\252K\351\271\274\241g\367\246\214n\323q\235\224i\245\332Eo\312\353y35\274\210\323\342\341K\32~\206\237kxYV+p\275\202\206\v\267[C\6\3735tc/\313S\303/\360K\r\277\302\2575\254C+\237\215a\345!\n\27)\270\252~f\343\264mnc\375\266,g\247\374\254\341\25\274\252\240\326+\25Z\275[\317\231\331T\2165(\276x^\244\332\231\300f\r\277\21W~\213\327X@\32~'\26\275\216\337\253\370\203\2067"..., 2391) = 2391 30059 stat("/nfs/srpipe_references/references/Plasmodium_falciparum/default/all/fasta/all.fa.fai", {st_mode=S_IFREG|0664, st_size=431, ...}) = 0 30059 lseek(5, 4971021, SEEK_SET) = 4971021 30059 read(5, "PK\3\4\n\0\0\10\10\0\20SrCZ>\3078\213\34\0\0\214A\0\0\35\0\0\0", 30) = 30 30059 lseek(5, 4971080, SEEK_SET) = 4971080 30059 read(5, "\265Z\v\\\\\325\231\377\276\303\300\275\f\3!\20H\10yL\336\4\10D4\17\311\303\4\2\21\5\22Cb$\17u\200!\214\201\31\234\31\362\360\375\212\257j[\255Z\223\326g\325Tkm|,\304\322\252\265\325v\333n\273\355vk\237\266\332\335\266\333n\353\366\255\256\312\376\277s\357\334\2713\fI\272\277\335\230\334{\3569\337\371\336\257s\306\257\177\360\371\27\210\250N=\346\245W\371\n\203\2574\371*/)\276\332K\27\3625\6_k\360u^2\370\n\223\257\227\367\r2\177HF7z)\307\2\273\311\344\233\345}\213\311\267\312\373C\362\270\315\344\333M\376\260\311\0371\371\2432q\207\311w\232\3741\223\3572\371n\223\3571\371\343&\337k\362aY\324bU)3U\362\250\26\212K\362T\215\252\25\232s\344s\2514\320\25\214n\rt\365c\246\2505\322\35\350??\20\r\311\267=\351\211\367\205\200\243\2545\34\214\327\306zk\7C\335\201hOm(R\333\22\331\26\17\365\257b\232\"t\242\361\346P\177\260%\266%\30\350\261vN\256h\275$\260/ \240\262\264J\323\356\r\311RA\352\nS~G<\320\275\267-0hSMA\271=\32\212[\3239\203\201h0\34\207\317\202#\vdC(\32\354\216G\242\7\335pY=\241h&\210$s\205I\2\261\246K\207\2\375L\263\323\370\315\300}\1770\\\307\304-L*v\232(\305\r\322\22\36\34\212w\304\243\301\300\300*\1\0\244\247k\250\27pjg\2035\256\263p`\212\301C\211\263\275eS\323\201\356\340`<\24\t\313V\275\247\267\16)\310 \304\327Q\200&\331\355\10]\26l\217\204w\4\243\21\230,2\30\f\313ls$*\302\205\302{"..., 7307) = 7307 30059 lseek(5, 1189891, SEEK_SET) = 1189891 30059 read(5, "PK\3\4\n\0\0\10\10\0WP\376@\21\344\344r\30\7\0\0\325\r\0\0!\0\0\0", 30) = 30 30059 lseek(5, 1189954, SEEK_SET) = 1189954 30059 read(5, "\235W\373S\33\327\25\376.z\254$\326\304\20\300\3066\rN\234\4\4A\211\343&\rr\250y&`\f.\302\270\306m\335E\272\302\353H+u\265\262!}\245\255\373J\337i\372 \255\333\324}\320\207\333\202;\203\235z\306\223\376\232\231v\246\377M'\323$\375\356\356\"\204D\335Lg\340\334\273\347\236{\357w\276\363\330\325[\357\376\365.\200\243\270\31\303CX\322p1\212\7a\306\320\200K14\343\205(r\310k\260b\320\260\24AA\215E%>\245\204\35C\tN#\312\270\334\210+XVbE\303\213j\353\247\225\370\214\22\237U\342sJ|>\304\313\304\t\212\30\257y)\202/\304x\376\27#\370R\4Wc\3702\276\242\254\276\252\304\327\242\370:^\326\360\r\r\337\24hM\315\rM\217\16\315\216^\30>3>>6{!5\2610& &\4b\243\262h\313\264\341\310\214@\307l\331r\314\274\2347K\346bN\16YV\3011\34\263`\225\4\332\247.\31\227\215D\316\260\226\22\333{\222\2\341\231\351\261\v\317\r\363\270I\201=#4v\f\313\2317re\251\360B\341\25\320\346\316\316\320*\345\252^rU\221\361\211y\2653\3053\216\233\226\351\f\n\4\272{\346\5\202#\205\214\24\270o\312\264\344t9\277(\3559\203x\4Z\246\ni#7o\330\246z\366\225A\347\242I\200\235S\226t\22\245l\242d\344\235B!WJ\224\0353\227\230\2309\303\2018\367:\205\341r6+m\231I9\2664\362\2\307\272=\247\314Bb\302*\226\35O\237\354\251h\2676T\257\22m\311\337\337\266\353v\262\220r\214\364\v\247\214\242\217\2601#s\322\221\343fN\22hK\367\371\312>\245J*\227EV\240i\247\232\236\31\266}\204<\234\257[\310I\213\v\r&E(\253\216\3250\"\260\257\273*H\23\216\264\325\365\356\361\255\336\202\307\210Zp\nv\262\242\336i\257b\275\203\346\225\342\26\325Gv\261?\276\23\334`R\303\267\4\242)s\3112\234\262\315]\217\356\6\253n\233\202\271\307,\315\312\245r\316\260O\33\316E\201\346\356\32\246\26\350\273\362\227\234Z\362\312\234\314\27\307\335\247\321\352+\30\7\323ZJ\326kjx\234\354\251\345U\230\214.s;k.\253d\253;@\305\236)\241V5'_\0345m\306S\317\233\326\360\212#K\343\266\224,_\26\325\330rZ\26\335\302\321\360m\201\221\377\7]\35\270\275K\322\31\225Y\243\234s\346\334\273\251\352\256\263\n\226K\222+\1\302\323\360\35V\331\361t\316/\256X\252P\266\323\322c\254\321+\214~\265]g\v{R\340\340=\322^\307\21<\254\354\276\253\343{xE\303\367u\274\212\0370\347j\375\30.\233\271\214\202\320>R(\3472]\354!]^\376w\251\310u\351\370!~\244\304\217u\254\3425\r?\321\361S\\\323\3603\35?\307\353\314\36\35\277\300+:\256\343\227$\267\332=\35\277R\v\277V\3427X\323\361[\374N\307\357\361\244\216\24\346\230t\312\367~\313\310\323\362\17\270\301\212R\273\373\315B?\331\310(\302D\202\244\350\370#\376\244|\271\246\304\2375\254\353\330\300\303$\340\36\35\204do{:\263xI\246\35\246H}U\t\334_i\n3\225<\330\261\333\343\211\355v\367\3663\241*!\354Q\346v\304\205\235\273WJ\216d\363\tH\333\256nA\247yhU\2172\212Ei\261\247?\266K\356\365\324\251\374\240%k\354=?\357i\37q\n[\376\264v\327\33&\253\370\250B\310\372)\252\247\34\231i\333\r\341\374\26\271;\232\6\2573+<\267o]W\333\325"..., 1816) = 1816 30059 mprotect(0x7fb31450e000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb31450f000, 8192, PROT_READ|PROT_WRITE) = 0 30059 lseek(5, 730486, SEEK_SET) = 730486 30059 read(5, "PK\3\4\n\0\0\10\10\0wc\224=\272r\nS\266\35\0\0\2653\0\0.\0\0\0", 30) = 30 30059 lseek(5, 730562, SEEK_SET) = 730562 30059 read(5, "\255Z\t|\224\325\265?\367\336o\326L\302$\344\3&\223@\220-L\26\226\340\10a\21\22\266\260$H\22\220M2I\6\22Hf\342d\2\1\225\202Fk\335P\\*K%\2004\326\245\255\326\200\325\326\245\213V\333\332\276\252}\325V[\265U\253\317\266\266\266\266Ok\336\377\334\3712\31\2\276\327\367{\2576\347\236\273\237\375\234\373\r\317}\372\350\343D4U\234p\211<1\332)\306\270E\276\30\353\242\2508\317E\263\3048\6\343\271;\301M\355b\242CLr\223KL\344\221\2\6\223\31\4\30\24\272\1\212\30\24;D\211SLqS\246\230\352\20\323\34b\272\233L1\321)J\271\235\301\340|\247\10r{\201\233\262\305T\247\230\351\24\263\234\242\314)f;\304\0347\215\25\23\371\240\271\f\3461\270\220\301|\247X\300T\224;E\5\267\v\235b\21\37\262\330)\2268\305R&\242\222\327-c\260\234\301\n\6+\235\242\212\333j^\260\212\261\213\30[\355\0205npW\313#u\314\325\32\6ky\356b\6\353\30\254\347\331\r,\234B\276r#\217mbp\211Slf\341\3243\0101h\340\245\215\f\232\270\33fl\vc[\03143ha\260\215'\266\363\31\255\214\265\361X\204A\224A\273\"qM\17O\\\352\02417.\356\340\245q\236\353dzw8\305N\36\351b\260\213\301n\6\2271\270\234\301\25\274y\17\203\317qw/\357\334\347\242K\305\225\314\337U<\321\315\23W3\270\306!>\357\20\327:\304\27\4\31\vC\361\220 Oe$\22\216U\264\206::\302\35\30\5\22\27$*\0059\242\261\226\255\253\3421A\351\r\255\321\306\3555-\273\303\323\246N\335.h\230\356\257\16E\232\242m-\35\341&\254_/\310\336\320Q\336\271e\213FV\264\354\10\vR\215\261FA\271+\242\261\255SB\355\241\306\346\360\224x4\332\3321\245awK\373\364)\25\253+fcu\2442R\327\201\325\262%\"\310\\\261-\264#4\245%:\2452\322\336\31\257\211\307\302\2416\254Jk\354\214\305\302\221xEs\10\4\251E\325\213AVE4\322\21\17E\342kB\255\235a\5\313&A\2315\265\vV\327n._Q]\261|3\360\332E'\233P"..., 7606) = 7606 30059 lseek(5, 726962, SEEK_SET) = 726962 30059 read(5, "PK\3\4\n\0\0\10\10\0wc\224=\332@8\242\363\t\0\0\264\21\0\0+\0\0\0", 30) = 30 30059 lseek(5, 727035, SEEK_SET) = 727035 30059 read(5, "U\330\t\234\216\325\36\7\360\363?\0073dy~\366%\225P\272\225\221\212nI1\215\245\313\274b\310P\246\2311i\0303\214\221\242(\355\213\270-\332\265PiSJ\211B\253V-Z\264\27\355W\251\264/W\367\367;\317\333\3473\227\317\347\375\316y\275\363<\3479\313\377w^/\354Z\273\3369\327\313uo\354\274\333;\307u\315q\335\3145++\235Q1\260\252\246|\312\250\312\331\25\346l(\337\313\257\251\236QWZ]7\246\264jfEpv\376\315\346\232\17\0370\266d\300\260\21C\6\224\214\32:\256 8g\336\\S\275\233\2379\246\240dXA!\337s\355\3145\0309\272p\200~v\351\317\3\365\263\231\313-,\31<23z\304(\265\33\231k4\370\357+\271\336\346r\nK\206\26\25\214\214\377\330\200}\320\205G\25\f+\310/\312\3047\7\2154\327\252p\364\360\222\314\30~jH&ST2\260\270\250 ~\276\265\271\206\265\2053\247\3160\347\307\363\1r\373\225WUVW\326\3657\27z\3547\206\335\310\257\231\310\207k1\254\262\272\202\237+\253\250-*-\253\342;MF\325\314\254-\257\30T\251F\253\201\343*\247\365\376\373\341g\364\234\\zjiS\327\321u2\327\275\246vR^\351\264\322\362S*\362\352jj\252f\344\225\315\346g\363\376\3777\314%\372\235\274\252\322\352Iy\231\262\311\25\345u|N\357\324\307\335\\\7\327\3005\344\2304b\313\273\34\266s\353\265\33\263\335\244^[\237oZ\257\335\214\355\346\365\332-\330N\352\265\301v\313z\355Vl\267\256\327n\303v\333z\355vl\267\257\327\356\300\277|\3248k\271nw\327\231\356\341\\\213\351\3545\377\264(\206w\2175)\16\360S2\305\r\340_\315\0247L\346e\212\33\301\266f\212s\20\226f\212s\21ze\212\223F\10\7\222\34\270\257H.|\37\322\30\356\27\322\4\341\35\262\33\374\33\244)\334&\322\f\266\2214G(!-`\333I\2\377\31\1\334N\322\22\341!\322\n\356-\322\32\376\3\322\6ah\273\260\1_\25_\\-\201\240B]\37\366eI\323\t;\222vB2\221\245\277gw\337\5Q\360\301\37\340\217\22o\352\7\26*80\303\271\347\336{\346\334\231\273\373\233[\0[X/c\f\265\22L|.c\26s\26\346-,\20\212;\262'\365.aa\323;\363\317}G*\347(\323q\246[:\21~w\333u\353\247\4sOu\4\241\342\311\2368\314\272m\221\234\370\355\210\231\252\247\2?:\365\23\231\307O\244\251\177\313\224P\367zB;i\350\3042\360\223N.\275\227\245Zu\233}\31\17]B\260\325\253\230P\33m\206Pnga(\222\226\354\363=\344\22\246\2\325\215\23\221\246R\365\217\347-\212\367\361|\236\220\177U\317\354&\240\376\216\377\377\363\371\303g\373\232\236\356\352\252\352oU\315\364\344\331\303\17<\f\0\3D?7\364\307M\234\334\304\311f\35\370\237\320\234\2\200\333\2037c\253\7Zp\213\7.\3046\23o\361\200\27\333\334\324r+'QNn3\361v\23\267z \21\333\\x\7\347\3338\331\356\302;9\277\313\3A\334\341\302\273\271\363=\234\354\344!\357\345d\227\211\273]\270\307\3]p\7_\271\217\223\3739y\200I\332\313\323=\310\245\207\270\367\303\234\354\343\344\21N\36\365\340c\3708\227\236`\362\236\344d\277\211Oy\250\377\323\334\374\f\17\364,\217\361\234\6x\321f.=\317m/\360\325\277s\362\"W_\342\322\313\234\274\302\311\253&\276\346\302\177\270\360u\17\234\304\224\277\341\302\177\272\360M\27\276\345\302\267\371\206w8\371\27\317\367.\23\367\36W\337\347\344\3\276\377CN>\342\344cN>\341\344\0'\237r\362\31'\7\371\266\3179\371\202\223/9\371\212\223\2579\371\206\371\376\255v\342\206g\332\271\363w\334\366='?p\362on\373\221K\377\341)\177\342\352\317\234\374\302\325_9\371\215\223\33799\304\375\16s\302C\t\340\4\251*\4'\32'\222\333tN\fNLnsq\342\346\304\303\211\227\330\7\310\th\320\225\222\366\367\332\325x>\r\240\235\206\277H\370\271_\2'\1\352WrH\3\351\377Y\3_\237\203\32\364<\367AS\4M\221h\212$\0049\252\274\271\34\3017\276\256\256\262qdMySSe\23\202\177\362\370)\245#&EFN,\32\177\306h\232m<\265\215\254\257kj.\257k\236Q^\263\260\222\246\2\344\216\303O\357\350\310\215n\4\263ht\361\344\341E\23\21\334#'\215\36>\315.\373\307N\33=\274x\364\264\322\361##E\305\3345@\363N\32]T\324\271\215V\345+\232<|\322\244\322\342q\323F\27\215\343\266\24j\0335zj\361\270Nm\36\4\357i\221i\23K\307\f\37Y\34\231\306M]\20\202\247\26E\246\25\227\26\25\17\0379\261\324\241H\373\214V9~\312\310\"\0041\223\326!i\221\315Dd}c\365\274\251\315\215D\330\354\232\3729g\27U/\253\0348`\300\331\10\1U\237V^WQ_[\335TYA\313?\3\301\230\3354b\341\334\271\2520\251zQ%\2026\247q\16B\326\244\372\306y\375\313\33\312\347TU\366o\256\257\257i\352?{YuC~\377\221\323F\236H\275\353\306\327Mo\242\336\262nr\361\30\4\327\342\372\306\263G\325\327Q\213\233\213\223\252k\253\211\32\337\334\352\306\246\346\341\315\315\225\265\rT\365\316Y\330\330XY\327<\262\252\234\10t7.\254\233TY7\257\271\212\356W\304\321\330\334\251\276vvu]e\205\252%\225\327\324\324/.\237]S9\"\266\34\232\264BIw\300_\3228\342\f\312\"\v\233\33\0266\02757V\226\327\366d} \272\265\372\205DG\352\244\371\345\213\312\373W\327\367\357\334\207.'V\315\236\\~v\345\310\372\212J\2332R\32w\357\231#g\216\37?\276\317\f\232\230\257\20+'\21}S\26\326\316\256l,f\322\210\314I\365s\312kf\2247Vs\335i\304j\222\315\262e4ksm\3\25\353\6R\262t)\227\362\231O\225\325\363\252\232K\2715^\246v\217SV\367"..., 8192) = 8192 30059 lseek(5, 747532, SEEK_SET) = 747532 30059 read(5, "\16\316\246\276\v\344\265\312P5\20o\22HB{\225\301\230\0\tx2\34$\36\26P(p\n\225\f\30B\6\352!*\2310\224\214\326\223\312x\365\204\311\316\35\304\211\270yj\214\233\247F\3059vakc\362\204y8\\\271(\202\317\3269\334\34L=(\264\204z\333\251(u\234\213\361\205Rq\217 \350\264`\327\260\241)\356\220\335qe\205\335-\356v\313\3156\205\270\245P\222O Xf\33\230\226\207\34\21\217e\264\252\242A6\205\234\371|u's<\353>(S\254\274\275\203\225\303H\344 \327\203Kn \300\272\0012\344\215\320En\"v\336\4\275\345fb\347\3150\214B\261\321r\v\214\227\267\300Ty+\234&\267C\25\365\255\223w\305Y8\214\266\312He\303s\241\257b\215\233\374\250\t*^2\310S\33\253\342%\23z\303)\312Ss\321\206?Cm\16fa}\234\205\365q\26\326\307-\374<\24\264\21\330\302\237\245\24\234Y8*\356\7\377Nu7\365?\20{xe\347\345\223\203A\307\21\356\3277[+\316\16\6\253\3022\30\214\253jJ\256E\214)+X\337\376]\337lIj\367y\264\375\25m\30\365k\205P\216\354\233]\260^\275\336V\217\204Z4b\333\247\177\10\2314\16Y\371\206\322\276\226A\375\247q\255\312Vq\27\267\17\377/\203*\no-\27Q\0\211\24\314\252\350JRt\305W\221\266F\264\375a\25\335n\246\330\313\216\270\216\210\267\226\21\177A\336C\222\333\tA\272\224!w\223\344\366@Oy\37\f\220\367C\241|\0F\311}0I>\2\263(\237-\37\207y\362\t\250\225OB\223|\n\316\225OC\213|\6.\225\317\3025\362y\270A\276\0\267\310\277\3036\371\"\334#_&\323\362\n<+_\203\27\350\372\253\324\377M\371&\274'\337\202O\344\333J\352-\4 \275\25\314\262\f{B6\216V^t2\5\240{\225g=\206\0\334.]\1\243\235\215s)\214S\375LX\4s\324U\216a\16\304=\365w\235'\202Ax\35\307PI\300<\362\320\355(\260\26\226:Q`\0234\375I\02486\26\344\342e\324\306 \265-\307\310T\221X \2133G|\244\35g)\357}\214z\2052V\355/\332\36\255\320H\202\243\355b?t\10\273\31\217Z\341x\226\231\222\241\341\310\320`\31\32-:\313\220\234}\222\234nK\316\340\247\23.\365\336\372\277\272'\366\f\343\212\34\313P\222\325\217\220\354l2c \337\3C\276\17~\371!$\311\217 S~B{\362\0\34'?#\351\36\244\375\370\5I\366K\230.\277\"\351~M\322\375\226\234\206\357H\262\7a\251\374\21V\310\377\300%\362'\270J\376\f\327\312\337`=\335w\223*awxm\n+\203uOP\270cf\222`6\304uC\f\27s3\242pN\233a\340P\334Lh\331\t\255\240\363\276|(\321\177\270\206\376\2609VLd\6\262i\223\266\231\334\211\353\t\221\267u\323`\256vF\247|\354\217\33\302\216Z\251\250\245\345l\323\314Z\321\242\255g\243C\311\376cZ6Q\314j6\321\257I\325\2721[K\314\16iy\7\331M\257\214\327\251\366\22\352\346\10\211\230\370\3021\276\2024C\3771\312[\5\332\222\361\6\231\205\247\7Y\357\231\36\224 \323&\346\230{\315T\212\326\2540$l\fw\257\225\307@N\233\25\247\235<\327\335\24\5\256i]\"kZ\204\351\rs\f\277\303\240 as%\243\203\305TJ\24Dr\322\321P\220\272T\266\310\21\202cf\261\220\20n9;\36|\351^\216\244\240\37\243\n\16\340a\5{\321\253`?\372\10t\350x\277\2147\25\274\205[\n\242\330\247\340m\214J\350\372o\225\220\260e\371\222\243E\303\326s\242J\271\211\242\253\332\222\227j\230\266\2322\213F\222\271\274\243\340]\274\247\340\30\216\263\24c)\306\322\31\226\316Hh\257-\355\330\300PU\354\361\1\333\26\271<\337U\265MUK$\250\331Uz\6\252\333\344\352\214H\231\5\241\332\31\241\n\"Fb\212\22\245\352\226\312)\266\205\321\251\252\224\260\254\352\344\237\224\5\313\356ef\267\251z\316\255r\232\235\211\16\352\351\230a\213\264((x\37\37\260\301\207\n\356\340#\31\37+\370\4\237JP\367\375\313\37e\242\266\27\6\213z6\3111?\303\347\n\276\300\227\34sXB\37S\342;\271\254LC}p]U{NO\210N\5g\271\262#\354\336\272v\323\320\243\253~\237\356!_\345+^\276\346\214\337V0\316\225\217\376\317\27\265\224\254\232\201 A\251F\224\320\274\264\215\215TU\261\355\37\6\226\204\206\264\260c\206ekF\202\"\354\17\257~Q\335\3772\361\352\n\302\22\24)\262\206o\325\311\271L\301\234\343q\340L.\1771\237\324\3341\340<\363\226\265\200\331.Y\346\351\vw\363$\360\207c\356\\\10\330\246k\306\276\2615\7Ac\355\31\271\323\340H\333\31g\22\320\320\251\267\2123VY\325\32\216\255\35\306\257\345\363\302HJ\330\373\340\344\254\356:rl\n\257\236\330\315\313g\345Y\323=\201N\372\215\332C?\242>\204xn\220\24\3429\341|i\204\320\327\303C\205\276\1H\324L\217\320\372(\355~!\17\37}\17D\26 E\244yx\"=\363\360F"..., 1524) = 1524 30059 lseek(4, 59242436, SEEK_SET) = 59242436 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305Bn\0343\261\254\0\0\0\254\0\0\0\34\0\0\0", 30) = 30 30059 lseek(4, 59242494, SEEK_SET) = 59242494 30059 read(4, "\312\376\272\276\0\0\0003\0\t\1\0\nSourceFile\1\0\6accept\1\0\26java/io/FilenameFilter\1\0\20java/lang/Object\7\0\3\7\0\4\1\0#(Ljava/io/File;Ljava/lang/String;)Z\1\0\23FilenameFilter.java\6\1\0\5\0\6\0\0\0\0\0\1\4\1\0\2\0\7\0\0\0\1\0\1\0\0\0\2\0\10", 172) = 172 30059 lseek(5, 5284326, SEEK_SET) = 5284326 30059 read(5, "PK\3\4\n\0\0\10\10\0\20SrC\307(\220\262x\2\0\0%\5\0\0-\0\0\0", 30) = 30 30059 lseek(5, 5284401, SEEK_SET) = 5284401 30059 read(5, "\215\223\337O\23A\20\307\277K\217^9\213\320\"XE\345\360\27\275\252\234\342\233E| \222`\212}h%\301\267\345X\313\342\365\356r\335\22\371S\374/$\321\220H\"\357\376Q\306\331^[\17\212\t\17w\263;;\363\375\314\314\336\375\376\363\363\27\200\25\274\264`\341\321\4&\360\330\304R\16e\v\0318&*9<\261\220\325\313\247&\236\231X6\341\232x\316\220\223J\304\\\211=\6\366\221!\273*\3\251\326\0302eg\233\301X\17\367\4\303TM\6\342}\267\275+\342&\337\365\311S\254\205\36\367\267y,\365\276\3574\324\276\35408\265@(\267\363\311\215\244\307\343=\267\253\244\357nj\fE\325\3O\364\326*\214\253\fs\347u\216\242\201\326\362UEV\233\315\352Zu\330H\30\223h\331\251\35\360C\236JJh\223\r\305\275\317[<\352C&\32\262\25p\325\215i=\177i\322@=\33\213vxHa\343\236\37v\310Zo\277x\"R2\f:&^0\264W\233\257\222|\237\7-\267\276{ \310H*\355\274\315j\10\271(\275m\247\240a\312\300SL\33h@\314@#\3724\314\30\230E\247\201z\\5p\7}\2\315\0278\24\350\17T\226\314]\317q\212\245\212\316\225\262\355Y\273\262\n\311\264\31\rsL6\317\264\235\2\355\227\236\320\31\357\277\334\v\304j\355\v\\\273\204\230*\354R\243qg\321\261\217\235\265!Wi<\371\277\25\247\352\266^\334\300\2\221\277\t\350*$\252Nfm\333u^3\221\337\343]\27V-\303-\342V\204\306\23\347\33$\271\216!\272\220\6]b\205\376t4@,\306\207F\2210=\215h\242x3\3152>\2\210\247\6\216 R'PR\251\17\20\307\10\35A}\357\23\264\320\2503H\31ET\31C\234\326\6\335#\332\204V\264\323\373:=*E\256\320\323\201\03342\365,\275\31UO\204\3527h\352[\250\241w\24\10\371\224\f\2062QEW\37\320\335\364U*u\323\274\237\32 \340{C\33Y*\vTsU2y\375\35z%\20\0368\314}\206\366b\340\4\221\257>m\27\272)Y%i+\333Wf\20Vf\21S2\350T\346\320\255,\370\"\272\t\23&\375]T.\201\36D)\322\3433\244\252\204\305\241\374D\247\206[\277\331\236\206\333<\364\322\234z?\250\351p`<\302\212>\"zV\306\212\347gU\236#\265%\214\315\220\345\376\300r:`\n\247\216\241\37\326\320\214V\321\204\3\32\25\t\37\225$\315\374\36\300]?z\17\203h\363\317\221\3568\370\27\371\3", 790) = 790 30059 lseek(5, 1051405, SEEK_SET) = 1051405 30059 read(5, "PK\3\4\n\0\0\10\10\0WP\376@\360\361B\352j\3\0\0004\6\0\0\36\0\0\0", 30) = 30 30059 lseek(5, 1051465, SEEK_SET) = 1051465 30059 read(5, "}T\355R\333V\20=\27\33,\224K\2j |$!\224$\265I\202\333\264\264i\241I\300\210V\251\261)\2\22\234\266\252l_SQY\362H2S\372L\375\321Nf\300\323\314\364\1\362P\231\354\225Uh\300\364\207v\367\356\307\331\325\271+\275y\373\367?\0\36\242\246b\32\213\31,\251\350\303\242\202\257\245~,\305\23\25O\261\234\301\212\n\5\5)\310s\23\253\322\3223XS1\204o\244x\"\305\267\n\f\31~6H\342;\5E\251\327\25\224\244.+\330\220\301\357\345aS\201\231\"|\310\303V\6\333\31\3540\360\302\246\276\274\245[FiU\177\301\300*\fj\342Z_]\240\370\266\251[\313\346n\251`\31e\206\221By}cS7M\243\\\262\212\372\216^\244\32\203\341\322\312\366\332\232\276i\231FEg\30Xr<'z\314\220\312\346\250G\272\340\327\5\303\225\242\343\211R\273Y\25\301\226]u\311\243\25\375\232\355\356\330\201#\317\2113\35\375\342\204\f\223EOD\371\260\221\17\355f\344\373n\230_\25\r\273\355F\341\"\215\261'\"3\n\34oo#\360[\"\210\16\31\36e\213\373\366\201\235wmo/\337\r.\236\367\344\316\273\250\245g7\343qz\304Ru\321\240\0205\\\241)\204\355\235v\34\353\321\261\222#\6\373\17l\267M\200\227\251\312\360\242\377\2570r\304\237\262Ts\23\316T\323o\0075\261\346H2\206\376}\351yY\307\361\21\262\f\327\316b\254\264\35\267.\2\206\f\221\265_\377u\236\3439^p\354\242\222\301K\216\37\220'\316N\253\2227\221p?r\314#\317\361\23\254\367Rhl\261'\2\231\3623\207\215*\255B-\20v$,\307\253\213\3378>\305g\34\2670C\23'\201f}\201\343C\351\341\355PXvx\350\325,\307\347\230\225\276\221\232\337l\5\"\f\35\337\263\\q \\\216\317\361\5\307m\334\241\5\252\266\33\r\21X\241\363\273\340\270+]\343\27-\0\303\360\351\240\345\352\276\250E\264sv\253%\274:\303\203\36\34\237\277\365\2042\272`%\362\273.\206\253\331\236\353\361\237n\346a\30\211&\215K7{z\255\351lE\3569o\331A(\22r\31F{\rR\221\331\206\314V\342l\342\371\202L\0033\364\241N\323\337\242\37\23\222h\262&$\275\261\236M4\221\27\353\273\261\356\7\223+B2G\247\1\0\6\1\0\1?\1\0\2?(\1\0\17BOOLEAN_PATTERN\1\0\vBUFFER_SIZE\1\0\4Code\1\0\rConstantValue\1\0\nExceptions\1\0\20FIND_ANY_"..., 25368) = 25368 30059 lseek(4, 58799119, SEEK_SET) = 58799119 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\321\230\307(\305\23\0\0\305\23\0\0/\0\0\0", 30) = 30 30059 lseek(4, 58799196, SEEK_SET) = 58799196 30059 read(4, "\312\376\272\276\0\0\0003\1/\3\0\0\200\0\3\0\1\0\0\3\0\4\0\0\3\0\10\0\0\3\0\r\200\0\3\0\20\0\0\3\0 \0\0\3\0@\0\0\3\0\200\0\0\3\1\0\0\0\3\2\0\0\0\3\4\0\0\0\3\10\0\0\0\3\20\0\0\0\3\36\0\0\0\3 \0\0\0\3@\0\0\0\3a\360\0\0\10\0`\10\0a\10\0b\10\0c\10\0d\10\0e\10\0f\10\0g\10\0h\10\0i\10\0k\10\0l\10\0m\10\0o\10\0p\10\0q\10\0r\10\0t\10\0u\10\0v\10\0w\10\0x\10\0y\10\0z\10\0{\10\0|\10\0}\10\0~\10\0\177\10\0\200\10\0\201\10\0\202\10\0\203\10\0\204\10\0\205\10\0\206\10\0\207\10\0\210\10\0\211\10\0\212\10\0\213\10\0\214\10\0\215\10\0\217\10\0\220\10\0\221\10\0\223\10\0\225\10\0\226\10\0\227\10\0\230\10\0\231\10\0\232\10\0\233\10\0\300\10\0\301\10\0\302\10\0\303\10\0\304\10\0\305\10\0\306\10\0\307\10\0\310\10\0\311\10\0\312\10\0\313\10\0\314\10\0\315\10\0\316\10\0\317\10\0\320\10\0\321\1\0\3()V\1\0\4(I)V\1\0\5(II)V\1\0\10\1\0\6\1\0\5ASCII\1\0\5Alnum\1\0\5Alpha\1\0\5Blank\1\0\1C\1\0\2Cc\1\0\2Cf\1\0\2Cn\1\0\5Cntrl\1\0\2Co\1\0\4Code\1\0\2Cs\1\0\5Digit\1\0\5Graph\1\0\fInnerClasses\1\0\1L\1\0\2L1\1\0\2LC\1\0\2LD\1\0\17LineNumberTable\1\0\2Ll\1\0\2Lm\1\0\2Lo\1\0\5Lower\1\0\2Lt\1\0\2Lu\1\0\1M\1\0\2Mc\1\0\2Me\1\0\2Mn\1\0\1N\1\0\2Nd\1\0\2Nl\1\0\2No\1\0\1P\1\0\2Pc\1\0\2Pd\1\0\2Pe\1\0\2Pf\1\0\2Pi\1\0\2Po\1\0\5Print\1\0\2Ps\1\0\5Punct\1\0\1S\1\0\2Sc\1\0\tSignature\1\0\2Sk\1\0\2Sm\1\0\2So\1\0\nSourceFile\1\0\5Space\1\0\rStackMapTable\1\0\5Upper\1\0\6XDigit\1\0\1Z\1\0\2Zl\1\0\2Zp\1\0\2Zs\1\0\3all\1\0\17charPropertyFor\1\0\vdefCategory\1\0\10defClone\1\0\10defCtype\1\0\10defRange\1\0\3get\1\0\20java/lang/Object\1\0\21java/util/HashMap\1\0\27java/util/regex/Pattern\1\0$java/util/regex/Pattern$CharProperty\1\0)java/util/regex/Pattern$CharPropertyNames\1\0+java/util/regex/Pattern$CharProperty"..., 5061) = 5061 30059 lseek(4, 58798186, SEEK_SET) = 58798186 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\245\222\313eV\3\0\0V\3\0\0001\0\0\0", 30) = 30 30059 lseek(4, 58798265, SEEK_SET) = 58798265 30059 read(4, "\312\376\272\276\0\0\0003\0)\1\0\4(I)V\1\0\6\1\0\4Code\1\0\17EnclosingMethod\1\0\1I\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\nSourceFile\1\0\vdefCategory\1\0\27java/util/regex/Pattern\1\0\31java/util/regex/Pattern$1\1\0 java/util/regex/Pattern$Category\1\0$java/util/regex/Pattern$CharProperty\1\0)java/util/regex/Pattern$CharPropertyNames\1\0+java/util/regex/Pattern$CharPropertyNames$1\1\0=java/util/regex/Pattern$CharPropertyNames$CharPropertyFactory\1\0\4make\1\0\fval$typeMask\7\0\n\7\0\v\7\0\f\7\0\r\7\0\16\7\0\17\7\0\20\1\0\26(Ljava/lang/String;I)V\1\0\36(Ljava/util/regex/Pattern$1;)V\1\0(()Ljava/util/regex/Pattern$CharProperty;\f\0\22\0\5\f\0\2\0\1\f\0\t\0\32\f\0\2\0\33\t\0\30\0\35\n\0\25\0\36\n\0\31\0 \1\0\10Category\1\0\fCharProperty\1\0\23CharPropertyFactory\1\0\21CharPropertyNames\1\0\fPattern.java\0000\0\30\0\31\0\0\0\1\20\20\0\22\0\5\0\0\0\2\0\0\0\2\0\1\0\1\0\3\0\0\0#\0\2\0\2\0\0\0\v*\33\265\0!*\1\267\0#\261\0\0\0\1\0\7\0\0\0\6\0\1\0\0\25W\0\0\0\21\0\34\0\1\0\3\0\0\0$\0\3\0\1\0\0\0\f\273\0\25Y*\264\0!\267\0\"\260\0\0\0\1\0\7\0\0\0\6\0\1\0\0\25X\0\3\0\10\0\0\0\2\0(\0\4\0\0\0\4\0\27\0\37\0\6\0\0\0002\0\6\0\25\0\23\0$\0\30\0\27\0\23\0'\0\n\0\30\0\0\0\0\0\10\0\31\0\27\0&\4\n\0\26\0\23\0%\4\n\0\24\0\0\0\0\0\10", 854) = 854 30059 lseek(4, 58797447, SEEK_SET) = 58797447 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\347&\24\362\202\2\0\0\202\2\0\0C\0\0\0", 30) = 30 30059 lseek(4, 58797544, SEEK_SET) = 58797544 30059 read(4, "\312\376\272\276\0\0\0003\0\35\1\0\3()V\1\0\6\1\0\4Code\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\nSourceFile\1\0\20java/lang/Object\1\0\27java/util/regex/Pattern\1\0\31java/util/regex/Pattern$1\1\0$java/util/regex/Pattern$CharProperty\1\0)java/util/regex/Pattern$CharPropertyNames\1\0=java/util/regex/Pattern$CharPropertyNames$CharPropertyFactory\1\0\4make\7\0\7\7\0\10\7\0\t\7\0\n\7\0\v\7\0\f\1\0\36(Ljava/util/regex/Pattern$1;)V\1\0(()Ljava/util/regex/Pattern$CharProperty;\f\0\2\0\1\n\0\16\0\26\n\0\23\0\26\1\0\fCharProperty\1\0\23CharPropertyFactory\1\0\21CharPropertyNames\1\0\fPattern.java\4 \0\23\0\16\0\0\0\0\0\3\0\2\0\2\0\1\0\1\0\3\0\0\0\35\0\1\0\1\0\0\0\5*\267\0\27\261\0\0\0\1\0\5\0\0\0\6\0\1\0\0\25Q\4\0\0\r\0\25\0\0\20\0\0\2\0\24\0\1\0\3\0\0\0\35\0\1\0\2\0\0\0\5*\267\0\30\261\0\0\0\1\0\5\0\0\0\6\0\1\0\0\25Q\0\2\0\6\0\0\0\2\0\34\0\4\0\0\0\"\0\4\0\22\0\17\0\33\0\n\0\23\0\22\0\32\4\n\0\21\0\17\0\31\4\n\0\20\0\0\0\0\0\10", 642) = 642 30059 lseek(4, 58796482, SEEK_SET) = 58796482 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\224\35F]v\3\0\0v\3\0\0001\0\0\0", 30) = 30 30059 lseek(4, 58796561, SEEK_SET) = 58796561 30059 read(4, "\312\376\272\276\0\0\0003\0+\1\0\5(II)V\1\0\6\1\0\4Code\1\0\17EnclosingMethod\1\0\1I\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\nSourceFile\1\0\naccess$600\1\0\10defRange\1\0\27java/util/regex/Pattern\1\0\31java/util/regex/Pattern$1\1\0$java/util/regex/Pattern$CharProperty\1\0)java/util/regex/Pattern$CharPropertyNames\1\0+java/util/regex/Pattern$CharPropertyNames$2\1\0=java/util/regex/Pattern$CharPropertyNames$CharPropertyFactory\1\0\4make\1\0\tval$lower\1\0\tval$upper\7\0\v\7\0\f\7\0\r\7\0\16\7\0\17\7\0\20\1\0\27(Ljava/lang/String;II)V\1\0\36(Ljava/util/regex/Pattern$1;)V\1\0(()Ljava/util/regex/Pattern$CharProperty;\1\0*(II)Ljava/util/regex/Pattern$CharProperty;\f\0\22\0\5\f\0\23\0\5\f\0\n\0\32\f\0\2\0\33\f\0\t\0\35\t\0\30\0\36\t\0\30\0\37\n\0\24\0\"\n\0\31\0!\1\0\fCharProperty\1\0\23CharPropertyFactory\1\0\21CharPropertyNames\1\0\fPattern.java\0000\0\30\0\31\0\0\0\2\20\20\0\22\0\5\0\0\20\20\0\23\0\5\0\0\0\2\0\0\0\2\0\1\0\1\0\3\0\0\0(\0\2\0\3\0\0\0\20*\33\265\0#*\34\265\0$*\1\267\0&\261\0\0\0\1\0\7\0\0\0\6\0\1\0\0\25]\0\0\0\21\0\34\0\1\0\3\0\0\0$\0\2\0\1\0\0\0\f*\264\0#*\264\0$\270\0%\260\0\0\0\1\0\7\0\0\0\6\0\1\0\0\25^\0\3\0\10\0\0\0\2\0*\0\4\0\0\0\4\0\27\0 \0\6\0\0\0*\0\5\0\27\0\24\0)\0\n\0\30\0\0\0\0\0\10\0\31\0\27\0(\4\n\0\26\0\24\0'\4\n\0\25\0\0\0\0\0\10", 886) = 886 30059 lseek(4, 58795650, SEEK_SET) = 58795650 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\30\\\177E\361\2\0\0\361\2\0\0001\0\0\0", 30) = 30 30059 lseek(4, 58795729, SEEK_SET) = 58795729 30059 read(4, "\312\376\272\276\0\0\0003\0\"\1\0\3()V\1\0\6\1\0\3All\1\0\4Code\1\0\17EnclosingMethod\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\nSourceFile\1\0\27java/util/regex/Pattern\1\0\31java/util/regex/Pattern$1\1\0\33java/util/regex/Pattern$All\1\0$java/util/regex/Pattern$CharProperty\1\0)java/util/regex/Pattern$CharPropertyNames\1\0+java/util/regex/Pattern$CharPropertyNames$5\1\0=java/util/regex/Pattern$CharPropertyNames$CharPropertyFactory\1\0\4make\7\0\t\7\0\n\7\0\v\7\0\f\7\0\r\7\0\16\7\0\17\1\0\36(Ljava/util/regex/Pattern$1;)V\1\0(()Ljava/util/regex/Pattern$CharProperty;\f\0\2\0\1\f\0\2\0\30\n\0\23\0\32\n\0\27\0\33\1\0\fCharProperty\1\0\23CharPropertyFactory\1\0\21CharPropertyNames\1\0\fPattern.java\0000\0\26\0\27\0\0\0\0\0\2\0\0\0\2\0\1\0\1\0\4\0\0\0\36\0\2\0\1\0\0\0\6*\1\267\0\35\261\0\0\0\1\0\7\0\0\0\6\0\1\0\0\25\304\0\0\0\20\0\31\0\1\0\4\0\0\0 \0\2\0\1\0\0\0\10\273\0\23Y\267\0\34\260\0\0\0\1\0\7\0\0\0\6\0\1\0\0\25\305\0\3\0\10\0\0\0\2\0!\0\5\0\0\0\4\0\25\0\0\0\6\0\0\0002\0\6\0\23\0\21\0\3\0\30\0\25\0\21\0 \0\n\0\26\0\0\0\0\0\10\0\27\0\25\0\37\4\n\0\24\0\21\0\36\4\n\0\22\0\0\0\0\0\10", 753) = 753 30059 lseek(4, 58794729, SEEK_SET) = 58794729 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\306\376Z\204J\3\0\0J\3\0\0001\0\0\0", 30) = 30 30059 lseek(4, 58794808, SEEK_SET) = 58794808 30059 read(4, "\312\376\272\276\0\0\0003\0)\1\0\4(I)V\1\0\6\1\0\4Code\1\0\17EnclosingMethod\1\0\1I\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\nSourceFile\1\0\10defCtype\1\0\27java/util/regex/Pattern\1\0\31java/util/regex/Pattern$1\1\0$java/util/regex/Pattern$CharProperty\1\0)java/util/regex/Pattern$CharPropertyNames\1\0+java/util/regex/Pattern$CharPropertyNames$3\1\0=java/util/regex/Pattern$CharPropertyNames$CharPropertyFactory\1\0\35java/util/regex/Pattern$Ctype\1\0\4make\1\0\tval$ctype\7\0\n\7\0\v\7\0\f\7\0\r\7\0\16\7\0\17\7\0\20\1\0\26(Ljava/lang/String;I)V\1\0\36(Ljava/util/regex/Pattern$1;)V\1\0(()Ljava/util/regex/Pattern$CharProperty;\f\0\22\0\5\f\0\2\0\1\f\0\t\0\32\f\0\2\0\33\t\0\27\0\35\n\0\30\0 \n\0\31\0\36\1\0\fCharProperty\1\0\23CharPropertyFactory\1\0\21CharPropertyNames\1\0\5Ctype\1\0\fPattern.java\0000\0\27\0\30\0\0\0\1\20\20\0\22\0\5\0\0\0\2\0\0\0\2\0\1\0\1\0\3\0\0\0#\0\2\0\2\0\0\0\v*\33\265\0!*\1\267\0\"\261\0\0\0\1\0\7\0\0\0\6\0\1\0\0\25c\0\0\0\21\0\34\0\1\0\3\0\0\0$\0\3\0\1\0\0\0\f\273\0\31Y*\264\0!\267\0#\260\0\0\0\1\0\7\0\0\0\6\0\1\0\0\25d\0\3\0\10\0\0\0\2\0(\0\4\0\0\0\4\0\26\0\37\0\6\0\0\0002\0\6\0\26\0\23\0&\0\n\0\27\0\0\0\0\0\10\0\30\0\26\0%\4\n\0\31\0\23\0'\0\30\0\25\0\23\0$\4\n\0\24\0\0\0\0\0\10", 842) = 842 30059 lseek(4, 58794004, SEEK_SET) = 58794004 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305BMe\207\321\206\2\0\0\206\2\0\0001\0\0\0", 30) = 30 30059 lseek(4, 58794083, SEEK_SET) = 58794083 30059 read(4, "\312\376\272\276\0\0\0003\0\37\1\0\3()V\1\0\4(I)Z\1\0\6\1\0\4Code\1\0\17EnclosingMethod\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\nSourceFile\1\0\visLowerCase\1\0\risSatisfiedBy\1\0\23java/lang/Character\1\0\27java/util/regex/Pattern\1\0\31java/util/regex/Pattern$1\1\0)java/util/regex/Pattern$CharPropertyNames\1\0+java/util/regex/Pattern$CharPropertyNames$6\1\0;java/util/regex/Pattern$CharPropertyNames$CloneableProperty\7\0\v\7\0\f\7\0\r\7\0\16\7\0\17\7\0\20\1\0\36(Ljava/util/regex/Pattern$1;)V\f\0\t\0\2\f\0\3\0\27\n\0\21\0\30\n\0\26\0\31\1\0\21CharPropertyNames\1\0\21CloneableProperty\1\0\fPattern.java\0000\0\25\0\26\0\0\0\0\0\2\0\0\0\3\0\1\0\1\0\4\0\0\0\36\0\2\0\1\0\0\0\6*\1\267\0\33\261\0\0\0\1\0\7\0\0\0\6\0\1\0\0\25\330\0\0\0\n\0\2\0\1\0\4\0\0\0\35\0\1\0\2\0\0\0\5\33\270\0\32\254\0\0\0\1\0\7\0\0\0\6\0\1\0\0\25\332\0\3\0\10\0\0\0\2\0\36\0\5\0\0\0\4\0\24\0\0\0\6\0\0\0\"\0\4\0\24\0\22\0\34\0\n\0\25\0\0\0\0\0\10\0\26\0\24\0\35\4\n\0\23\0\0\0\0\0\10", 646) = 646 30059 lseek(4, 58792907, SEEK_SET) = 58792907 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\272J\244\354\352\3\0\0\352\3\0\0A\0\0\0", 30) = 30 30059 lseek(4, 58793002, SEEK_SET) = 58793002 30059 read(4, "\312\376\272\276\0\0\0003\0.\1\0\3()V\1\0\25(Ljava/lang/Object;)V\1\0\6\1\0\4Code\1\0\nExceptions\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\nSourceFile\1\0\rStackMapTable\1\0\5clone\1\0\30java/lang/AssertionError\1\0$java/lang/CloneNotSupportedException\1\0\23java/lang/Cloneable\1\0\20java/lang/Object\1\0\27java/util/regex/Pattern\1\0\31java/util/regex/Pattern$1\1\0$java/util/regex/Pattern$CharProperty\1\0)java/util/regex/Pattern$CharPropertyNames\1\0;java/util/regex/Pattern$CharPropertyNames$CloneableProperty\7\0\v\7\0\f\7\0\r\7\0\16\7\0\17\7\0\20\7\0\21\7\0\22\7\0\23\1\0\24()Ljava/lang/Object;\1\0\36(Ljava/util/regex/Pattern$1;)V\1\0?()Ljava/util/regex/Pattern$CharPropertyNames$CloneableProperty;\f\0\3\0\1\f\0\n\0\35\f\0\3\0\2\f\0\3\0\36\f\0\n\0\37\n\0\24\0\"\n\0\27\0!\n\0\32\0#\n\0\34\0 \n\0\34\0$\1\0\fCharProperty\1\0\21CharPropertyNames\1\0\21CloneableProperty\1\0\fPattern.java\4 \0\34\0\32\0\1\0\26\0\0\0\4\0\2\0\3\0\1\0\1\0\4\0\0\0\36\0\2\0\1\0\0\0\6*\1\267\0'\261\0\0\0\1\0\7\0\0\0\6\0\1\0\0\25g\0\1\0\n\0\37\0\1\0\4\0\0\0F\0\3\0\2\0\0\0\22*\267\0&\300\0\34\260L\273\0\24Y+\267\0%\277\0\1\0\0\0\7\0\10\0\25\0\2\0\t\0\0\0\6\0\1H\7\0\25\0\7\0\0\0\16\0\3\0\0\25l\0\10\25m\0\t\25n\20A\0\n\0\35\0\2\0\4\0\0\0\35\0\1\0\1\0\0\0\5*\266\0)\260\0\0\0\1\0\7\0\0\0\6\0\1\0\0\25g\0\5\0\0\0\4\0\1\0\25\20\0\0\3\0\36\0\1\0\4\0\0\0\35\0\1\0\2\0\0\0\5*\267\0(\261\0\0\0\1\0\7\0\0\0\6\0\1\0\0\25g\0\2\0\10\0\0\0\2\0-\0\6\0\0\0\"\0\4\0\32\0\30\0*\4\n\0\33\0\30\0+\0\n\0\34\0\33\0,\4\n\0\31\0\0\0\0"..., 1002) = 1002 30059 lseek(4, 58790256, SEEK_SET) = 58790256 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305Be\1\334\250j\4\0\0j\4\0\0001\0\0\0", 30) = 30 30059 lseek(4, 58790335, SEEK_SET) = 58790335 30059 read(4, "\312\376\272\276\0\0\0003\0+\1\0\6\1\0\4Code\1\0\17EnclosingMethod\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\nSourceFile\1\0\5clone\1\0\10defClone\1\0\27java/util/regex/Pattern\1\0\31java/util/regex/Pattern$1\1\0$java/util/regex/Pattern$CharProperty\1\0)java/util/regex/Pattern$CharPropertyNames\1\0+java/util/regex/Pattern$CharPropertyNames$4\1\0=java/util/regex/Pattern$CharPropertyNames$CharPropertyFactory\1\0;java/util/regex/Pattern$CharPropertyNames$CloneableProperty\1\0\4make\1\0\5val$p\7\0\t\7\0\n\7\0\v\7\0\f\7\0\r\7\0\16\7\0\17\1\0=Ljava/util/regex/Pattern$CharPropertyNames$CloneableProperty;\1\0\36(Ljava/util/regex/Pattern$1;)V\1\0(()Ljava/util/regex/Pattern$CharProperty;\1\0?()Ljava/util/regex/Pattern$CharPropertyNames$CloneableProperty;\1\0@(Ljava/util/regex/Pattern$CharPropertyNames$CloneableProperty;)V\1\0R(Ljava/lang/String;Ljava/util/regex/Pattern$CharPropertyNames$CloneableProperty;)V\f\0\21\0\31\f\0\1\0\32\f\0\7\0\34\f\0\10\0\36\t\0\26\0\37\n\0\27\0 \n\0\30\0!\1\0\fCharProperty\1\0\23CharPropertyFactory\1\0\21CharPropertyNames\1\0\21CloneableProperty\1\0\fPattern.java\0000\0\26\0\27\0\0\0\1\20\20\0\21\0\31\0\0\0\2\0\0\0\1\0\35\0\1\0\2\0\0\0#\0\2\0\2\0\0\0\v*+\265\0#*\1\267\0$\261\0\0\0\1\0\5\0\0"..., 1130) = 1130 30059 lseek(4, 58789531, SEEK_SET) = 58789531 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\313Htf\206\2\0\0\206\2\0\0001\0\0\0", 30) = 30 30059 lseek(4, 58789610, SEEK_SET) = 58789610 30059 read(4, "\312\376\272\276\0\0\0003\0\37\1\0\3()V\1\0\4(I)Z\1\0\6\1\0\4Code\1\0\17EnclosingMethod\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\nSourceFile\1\0\risSatisfiedBy\1\0\visUpperCase\1\0\23java/lang/Character\1\0\27java/util/regex/Pattern\1\0\31java/util/regex/Pattern$1\1\0)java/util/regex/Pattern$CharPropertyNames\1\0+java/util/regex/Pattern$CharPropertyNames$7\1\0;java/util/regex/Pattern$CharPropertyNames$CloneableProperty\7\0\v\7\0\f\7\0\r\7\0\16\7\0\17\7\0\20\1\0\36(Ljava/util/regex/Pattern$1;)V\f\0\n\0\2\f\0\3\0\27\n\0\21\0\30\n\0\26\0\31\1\0\21CharPropertyNames\1\0\21CloneableProperty\1\0\fPattern.java\0000\0\25\0\26\0\0\0\0\0\2\0\0\0\3\0\1\0\1\0\4\0\0\0\36\0\2\0\1\0\0\0\6*\1\267\0\33\261\0\0\0\1\0\7\0\0\0\6\0\1\0\0\25\333\0\0\0\t\0\2\0\1\0\4\0\0\0\35\0\1\0\2\0\0\0\5\33\270\0\32\254\0\0\0\1\0\7\0\0\0\6\0\1\0\0\25\335\0\3\0\10\0\0\0\2\0\36\0\5\0\0\0\4\0\24\0\0\0\6\0\0\0\"\0\4\0\24\0\22\0\34\0\n\0\25\0\0\0\0\0\10\0\26\0\24\0\35\4\n\0\23\0\0\0\0\0\10", 646) = 646 30059 lseek(4, 58788805, SEEK_SET) = 58788805 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\264B\214\330\207\2\0\0\207\2\0\0001\0\0\0", 30) = 30 30059 lseek(4, 58788884, SEEK_SET) = 58788884 30059 read(4, "\312\376\272\276\0\0\0003\0\37\1\0\3()V\1\0\4(I)Z\1\0\6\1\0\4Code\1\0\17EnclosingMethod\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\nSourceFile\1\0\fisAlphabetic\1\0\risSatisfiedBy\1\0\23java/lang/Character\1\0\27java/util/regex/Pattern\1\0\31java/util/regex/Pattern$1\1\0)java/util/regex/Pattern$CharPropertyNames\1\0+java/util/regex/Pattern$CharPropertyNames$8\1\0;java/util/regex/Pattern$CharPropertyNames$CloneableProperty\7\0\v\7\0\f\7\0\r\7\0\16\7\0\17\7\0\20\1\0\36(Ljava/util/regex/Pattern$1;)V\f\0\t\0\2\f\0\3\0\27\n\0\21\0\30\n\0\26\0\31\1\0\21CharPropertyNames\1\0\21CloneableProperty\1\0\fPattern.java\0000\0\25\0\26\0\0\0\0\0\2\0\0\0\3\0\1\0\1\0\4\0\0\0\36\0\2\0\1\0\0\0\6*\1\267\0\33\261\0\0\0\1\0\7\0\0\0\6\0\1\0\0\25\336\0\0\0\n\0\2\0\1\0\4\0\0\0\35\0\1\0\2\0\0\0\5\33\270\0\32\254\0\0\0\1\0\7\0\0\0\6\0\1\0\0\25\340\0\3\0\10\0\0\0\2\0\36\0\5\0\0\0\4\0\24\0\0\0\6\0\0\0\"\0\4\0\24\0\22\0\34\0\n\0\25\0\0\0\0\0\10\0\26\0\24\0\35\4\n\0\23\0\0\0\0\0\10", 647) = 647 30059 lseek(4, 58788078, SEEK_SET) = 58788078 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\32Z\266D\210\2\0\0\210\2\0\0001\0\0\0", 30) = 30 30059 lseek(4, 58788157, SEEK_SET) = 58788157 30059 read(4, "\312\376\272\276\0\0\0003\0\37\1\0\3()V\1\0\4(I)Z\1\0\6\1\0\4Code\1\0\17EnclosingMethod\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\nSourceFile\1\0\risIdeographic\1\0\risSatisfiedBy\1\0\23java/lang/Character\1\0\27java/util/regex/Pattern\1\0\31java/util/regex/Pattern$1\1\0)java/util/regex/Pattern$CharPropertyNames\1\0+java/util/regex/Pattern$CharPropertyNames$9\1\0;java/util/regex/Pattern$CharPropertyNames$CloneableProperty\7\0\v\7\0\f\7\0\r\7\0\16\7\0\17\7\0\20\1\0\36(Ljava/util/regex/Pattern$1;)V\f\0\t\0\2\f\0\3\0\27\n\0\21\0\30\n\0\26\0\31\1\0\21CharPropertyNames\1\0\21CloneableProperty\1\0\fPattern.java\0000\0\25\0\26\0\0\0\0\0\2\0\0\0\3\0\1\0\1\0\4\0\0\0\36\0\2\0\1\0\0\0\6*\1\267\0\33\261\0\0\0\1\0\7\0\0\0\6\0\1\0\0\25\341\0\0\0\n\0\2\0\1\0\4\0\0\0\35\0\1\0\2\0\0\0\5\33\270\0\32\254\0\0\0\1\0\7\0\0\0\6\0\1\0\0\25\343\0\3\0\10\0\0\0\2\0\36\0\5\0\0\0\4\0\24\0\0\0\6\0\0\0\"\0\4\0\24\0\22\0\34\0\n\0\25\0\0\0\0\0\10\0\26\0\24\0\35\4\n\0\23\0\0\0\0\0\10", 648) = 648 30059 lseek(4, 58787351, SEEK_SET) = 58787351 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305BX\375\272\261\207\2\0\0\207\2\0\0002\0\0\0", 30) = 30 30059 lseek(4, 58787431, SEEK_SET) = 58787431 30059 read(4, "\312\376\272\276\0\0\0003\0\37\1\0\3()V\1\0\4(I)Z\1\0\6\1\0\4Code\1\0\17EnclosingMethod\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\nSourceFile\1\0\risSatisfiedBy\1\0\visTitleCase\1\0\23java/lang/Character\1\0\27java/util/regex/Pattern\1\0\31java/util/regex/Pattern$1\1\0)java/util/regex/Pattern$CharPropertyNames\1\0,java/util/regex/Pattern$CharPropertyNames$10\1\0;java/util/regex/Pattern$CharPropertyNames$CloneableProperty\7\0\v\7\0\f\7\0\r\7\0\16\7\0\17\7\0\20\1\0\36(Ljava/util/regex/Pattern$1;)V\f\0\n\0\2\f\0\3\0\27\n\0\21\0\30\n\0\26\0\31\1\0\21CharPropertyNames\1\0\21CloneableProperty\1\0\fPattern.java\0000\0\25\0\26\0\0\0\0\0\2\0\0\0\3\0\1\0\1\0\4\0\0\0\36\0\2\0\1\0\0\0\6*\1\267\0\33\261\0\0\0\1\0\7\0\0\0\6\0\1\0\0\25\344\0\0\0\t\0\2\0\1\0\4\0\0\0\35\0\1\0\2\0\0\0\5\33\270\0\32\254\0\0\0\1\0\7\0\0\0\6\0\1\0\0\25\346\0\3\0\10\0\0\0\2\0\36\0\5\0\0\0\4\0\24\0\0\0\6\0\0\0\"\0\4\0\24\0\22\0\34\0\n\0\25\0\0\0\0\0\10\0\26\0\24\0\35\4\n\0\23\0\0\0\0\0\10", 647) = 647 30059 lseek(4, 58786628, SEEK_SET) = 58786628 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\252\301\1h\203\2\0\0\203\2\0\0002\0\0\0", 30) = 30 30059 lseek(4, 58786708, SEEK_SET) = 58786708 30059 read(4, "\312\376\272\276\0\0\0003\0\37\1\0\3()V\1\0\4(I)Z\1\0\6\1\0\4Code\1\0\17EnclosingMethod\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\nSourceFile\1\0\7isDigit\1\0\risSatisfiedBy\1\0\23java/lang/Character\1\0\27java/util/regex/Pattern\1\0\31java/util/regex/Pattern$1\1\0)java/util/regex/Pattern$CharPropertyNames\1\0,java/util/regex/Pattern$CharPropertyNames$11\1\0;java/util/regex/Pattern$CharPropertyNames$CloneableProperty\7\0\v\7\0\f\7\0\r\7\0\16\7\0\17\7\0\20\1\0\36(Ljava/util/regex/Pattern$1;)V\f\0\t\0\2\f\0\3\0\27\n\0\21\0\30\n\0\26\0\31\1\0\21CharPropertyNames\1\0\21CloneableProperty\1\0\fPattern.java\0000\0\25\0\26\0\0\0\0\0\2\0\0\0\3\0\1\0\1\0\4\0\0\0\36\0\2\0\1\0\0\0\6*\1\267\0\33\261\0\0\0\1\0\7\0\0\0\6\0\1\0\0\25\347\0\0\0\n\0\2\0\1\0\4\0\0\0\35\0\1\0\2\0\0\0\5\33\270\0\32\254\0\0\0\1\0\7\0\0\0\6\0\1\0\0\25\351\0\3\0\10\0\0\0\2\0\36\0\5\0\0\0\4\0\24\0\0\0\6\0\0\0\"\0\4\0\24\0\22\0\34\0\n\0\25\0\0\0\0\0\10\0\26\0\24\0\35\4\n\0\23\0\0\0\0\0\10", 643) = 643 30059 lseek(4, 58785903, SEEK_SET) = 58785903 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\307\16\247\267\205\2\0\0\205\2\0\0002\0\0\0", 30) = 30 30059 lseek(4, 58785983, SEEK_SET) = 58785983 30059 read(4, "\312\376\272\276\0\0\0003\0\37\1\0\3()V\1\0\4(I)Z\1\0\6\1\0\4Code\1\0\17EnclosingMethod\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\nSourceFile\1\0\tisDefined\1\0\risSatisfiedBy\1\0\23java/lang/Character\1\0\27java/util/regex/Pattern\1\0\31java/util/regex/Pattern$1\1\0)java/util/regex/Pattern$CharPropertyNames\1\0,java/util/regex/Pattern$CharPropertyNames$12\1\0;java/util/regex/Pattern$CharPropertyNames$CloneableProperty\7\0\v\7\0\f\7\0\r\7\0\16\7\0\17\7\0\20\1\0\36(Ljava/util/regex/Pattern$1;)V\f\0\t\0\2\f\0\3\0\27\n\0\21\0\30\n\0\26\0\31\1\0\21CharPropertyNames\1\0\21CloneableProperty\1\0\fPattern.java\0000\0\25\0\26\0\0\0\0\0\2\0\0\0\3\0\1\0\1\0\4\0\0\0\36\0\2\0\1\0\0\0\6*\1\267\0\33\261\0\0\0\1\0\7\0\0\0\6\0\1\0\0\25\352\0\0\0\n\0\2\0\1\0\4\0\0\0\35\0\1\0\2\0\0\0\5\33\270\0\32\254\0\0\0\1\0\7\0\0\0\6\0\1\0\0\25\354\0\3\0\10\0\0\0\2\0\36\0\5\0\0\0\4\0\24\0\0\0\6\0\0\0\"\0\4\0\24\0\22\0\34\0\n\0\25\0\0\0\0\0\10\0\26\0\24\0\35\4\n\0\23\0\0\0\0\0\10", 645) = 645 30059 lseek(4, 58785179, SEEK_SET) = 58785179 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305Bb\27Se\204\2\0\0\204\2\0\0002\0\0\0", 30) = 30 30059 lseek(4, 58785259, SEEK_SET) = 58785259 30059 read(4, "\312\376\272\276\0\0\0003\0\37\1\0\3()V\1\0\4(I)Z\1\0\6\1\0\4Code\1\0\17EnclosingMethod\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\nSourceFile\1\0\10isLetter\1\0\risSatisfiedBy\1\0\23java/lang/Character\1\0\27java/util/regex/Pattern\1\0\31java/util/regex/Pattern$1\1\0)java/util/regex/Pattern$CharPropertyNames\1\0,java/util/regex/Pattern$CharPropertyNames$13\1\0;java/util/regex/Pattern$CharPropertyNames$CloneableProperty\7\0\v\7\0\f\7\0\r\7\0\16\7\0\17\7\0\20\1\0\36(Ljava/util/regex/Pattern$1;)V\f\0\t\0\2\f\0\3\0\27\n\0\21\0\30\n\0\26\0\31\1\0\21CharPropertyNames\1\0\21CloneableProperty\1\0\fPattern.java\0000\0\25\0\26\0\0\0\0\0\2\0\0\0\3\0\1\0\1\0\4\0\0\0\36\0\2\0\1\0\0\0\6*\1\267\0\33\261\0\0\0\1\0\7\0\0\0\6\0\1\0\0\25\355\0\0\0\n\0\2\0\1\0\4\0\0\0\35\0\1\0\2\0\0\0\5\33\270\0\32\254\0\0\0\1\0\7\0\0\0\6\0\1\0\0\25\357\0\3\0\10\0\0\0\2\0\36\0\5\0\0\0\4\0\24\0\0\0\6\0\0\0\"\0\4\0\24\0\22\0\34\0\n\0\25\0\0\0\0\0\10\0\26\0\24\0\35\4\n\0\23\0\0\0\0\0\10", 644) = 644 30059 lseek(4, 58784448, SEEK_SET) = 58784448 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\17v\325p\213\2\0\0\213\2\0\0002\0\0\0", 30) = 30 30059 lseek(4, 58784528, SEEK_SET) = 58784528 30059 read(4, "\312\376\272\276\0\0\0003\0\37\1\0\3()V\1\0\4(I)Z\1\0\6\1\0\4Code\1\0\17EnclosingMethod\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\nSourceFile\1\0\17isLetterOrDigit\1\0\risSatisfiedBy\1\0\23java/lang/Character\1\0\27java/util/regex/Pattern\1\0\31java/util/regex/Pattern$1\1\0)java/util/regex/Pattern$CharPropertyNames\1\0,java/util/regex/Pattern$CharPropertyNames$14\1\0;java/util/regex/Pattern$CharPropertyNames$CloneableProperty\7\0\v\7\0\f\7\0\r\7\0\16\7\0\17\7\0\20\1\0\36(Ljava/util/regex/Pattern$1;)V\f\0\t\0\2\f\0\3\0\27\n\0\21\0\30\n\0\26\0\31\1\0\21CharPropertyNames\1\0\21CloneableProperty\1\0\fPattern.java\0000\0\25\0\26\0\0\0\0\0\2\0\0\0\3\0\1\0\1\0\4\0\0\0\36\0\2\0\1\0\0\0\6*\1\267\0\33\261\0\0\0\1\0\7\0\0\0\6\0\1\0\0\25\360\0\0\0\n\0\2\0\1\0\4\0\0\0\35\0\1\0\2\0\0\0\5\33\270\0\32\254\0\0\0\1\0\7\0\0\0\6\0\1\0\0\25\362\0\3\0\10\0\0\0\2\0\36\0\5\0\0\0\4\0\24\0\0\0\6\0\0\0\"\0\4\0\24\0\22\0\34\0\n\0\25\0\0\0\0\0\10\0\26\0\24\0\35\4\n\0\23\0\0\0\0\0\10", 651) = 651 30059 lseek(4, 58783711, SEEK_SET) = 58783711 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\331\220\223\332\221\2\0\0\221\2\0\0002\0\0\0", 30) = 30 30059 lseek(4, 58783791, SEEK_SET) = 58783791 30059 read(4, "\312\376\272\276\0\0\0003\0\37\1\0\3()V\1\0\4(I)Z\1\0\6\1\0\4Code\1\0\17EnclosingMethod\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\nSourceFile\1\0\25isJavaIdentifierStart\1\0\risSatisfiedBy\1\0\23java/lang/Character\1\0\27java/util/regex/Pattern\1\0\31java/util/regex/Pattern$1\1\0)java/util/regex/Pattern$CharPropertyNames\1\0,java/util/regex/Pattern$CharPropertyNames$15\1\0;java/util/regex/Pattern$CharPropertyNames$CloneableProperty\7\0\v\7\0\f\7\0\r\7\0\16\7\0\17\7\0\20\1\0\36(Ljava/util/regex/Pattern$1;)V\f\0\t\0\2\f\0\3\0\27\n\0\21\0\30\n\0\26\0\31\1\0\21CharPropertyNames\1\0\21CloneableProperty\1\0\fPattern.java\0000\0\25\0\26\0\0\0\0\0\2\0\0\0\3\0\1\0\1\0\4\0\0\0\36\0\2\0\1\0\0\0\6*\1\267\0\33\261\0\0\0\1\0\7\0\0\0\6\0\1\0\0\25\363\0\0\0\n\0\2\0\1\0\4\0\0\0\35\0\1\0\2\0\0\0\5\33\270\0\32\254\0\0\0\1\0\7\0\0\0\6\0\1\0\0\25\365\0\3\0\10\0\0\0\2\0\36\0\5\0\0\0\4\0\24\0\0\0\6\0\0\0\"\0\4\0\24\0\22\0\34\0\n\0\25\0\0\0\0\0\10\0\26\0\24\0\35\4\n\0\23\0\0\0\0\0\10", 657) = 657 30059 lseek(4, 58782975, SEEK_SET) = 58782975 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\35Eyr\220\2\0\0\220\2\0\0002\0\0\0", 30) = 30 30059 lseek(4, 58783055, SEEK_SET) = 58783055 30059 read(4, "\312\376\272\276\0\0\0003\0\37\1\0\3()V\1\0\4(I)Z\1\0\6\1\0\4Code\1\0\17EnclosingMethod\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\nSourceFile\1\0\24isJavaIdentifierPart\1\0\risSatisfiedBy\1\0\23java/lang/Character\1\0\27java/util/regex/Pattern\1\0\31java/util/regex/Pattern$1\1\0)java/util/regex/Pattern$CharPropertyNames\1\0,java/util/regex/Pattern$CharPropertyNames$16\1\0;java/util/regex/Pattern$CharPropertyNames$CloneableProperty\7\0\v\7\0\f\7\0\r\7\0\16\7\0\17\7\0\20\1\0\36(Ljava/util/regex/Pattern$1;)V\f\0\t\0\2\f\0\3\0\27\n\0\21\0\30\n\0\26\0\31\1\0\21CharPropertyNames\1\0\21CloneableProperty\1\0\fPattern.java\0000\0\25\0\26\0\0\0\0\0\2\0\0\0\3\0\1\0\1\0\4\0\0\0\36\0\2\0\1\0\0\0\6*\1\267\0\33\261\0\0\0\1\0\7\0\0\0\6\0\1\0\0\25\366\0\0\0\n\0\2\0\1\0\4\0\0\0\35\0\1\0\2\0\0\0\5\33\270\0\32\254\0\0\0\1\0\7\0\0\0\6\0\1\0\0\25\370\0\3\0\10\0\0\0\2\0\36\0\5\0\0\0\4\0\24\0\0\0\6\0\0\0\"\0\4\0\24\0\22\0\34\0\n\0\25\0\0\0\0\0\10\0\26\0\24\0\35\4\n\0\23\0\0\0\0\0\10", 656) = 656 30059 lseek(4, 58782235, SEEK_SET) = 58782235 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\301\2655\4\224\2\0\0\224\2\0\0002\0\0\0", 30) = 30 30059 lseek(4, 58782315, SEEK_SET) = 58782315 30059 read(4, "\312\376\272\276\0\0\0003\0\37\1\0\3()V\1\0\4(I)Z\1\0\6\1\0\4Code\1\0\17EnclosingMethod\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\nSourceFile\1\0\risSatisfiedBy\1\0\30isUnicodeIdentifierStart\1\0\23java/lang/Character\1\0\27java/util/regex/Pattern\1\0\31java/util/regex/Pattern$1\1\0)java/util/regex/Pattern$CharPropertyNames\1\0,java/util/regex/Pattern$CharPropertyNames$17\1\0;java/util/regex/Pattern$CharPropertyNames$CloneableProperty\7\0\v\7\0\f\7\0\r\7\0\16\7\0\17\7\0\20\1\0\36(Ljava/util/regex/Pattern$1;)V\f\0\n\0\2\f\0\3\0\27\n\0\21\0\30\n\0\26\0\31\1\0\21CharPropertyNames\1\0\21CloneableProperty\1\0\fPattern.java\0000\0\25\0\26\0\0\0\0\0\2\0\0\0\3\0\1\0\1\0\4\0\0\0\36\0\2\0\1\0\0\0\6*\1\267\0\33\261\0\0\0\1\0\7\0\0\0\6\0\1\0\0\25\371\0\0\0\t\0\2\0\1\0\4\0\0\0\35\0\1\0\2\0\0\0\5\33\270\0\32\254\0\0\0\1\0\7\0\0\0\6\0\1\0\0\25\373\0\3\0\10\0\0\0\2\0\36\0\5\0\0\0\4\0\24\0\0\0\6\0\0\0\"\0\4\0\24\0\22\0\34\0\n\0\25\0\0\0\0\0\10\0\26\0\24\0\35\4\n\0\23\0\0\0\0\0\10", 660) = 660 30059 lseek(4, 58781496, SEEK_SET) = 58781496 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\377\237\233 \223\2\0\0\223\2\0\0002\0\0\0", 30) = 30 30059 lseek(4, 58781576, SEEK_SET) = 58781576 30059 read(4, "\312\376\272\276\0\0\0003\0\37\1\0\3()V\1\0\4(I)Z\1\0\6\1\0\4Code\1\0\17EnclosingMethod\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\nSourceFile\1\0\risSatisfiedBy\1\0\27isUnicodeIdentifierPart\1\0\23java/lang/Character\1\0\27java/util/regex/Pattern\1\0\31java/util/regex/Pattern$1\1\0)java/util/regex/Pattern$CharPropertyNames\1\0,java/util/regex/Pattern$CharPropertyNames$18\1\0;java/util/regex/Pattern$CharPropertyNames$CloneableProperty\7\0\v\7\0\f\7\0\r\7\0\16\7\0\17\7\0\20\1\0\36(Ljava/util/regex/Pattern$1;)V\f\0\n\0\2\f\0\3\0\27\n\0\21\0\30\n\0\26\0\31\1\0\21CharPropertyNames\1\0\21CloneableProperty\1\0\fPattern.java\0000\0\25\0\26\0\0\0\0\0\2\0\0\0\3\0\1\0\1\0\4\0\0\0\36\0\2\0\1\0\0\0\6*\1\267\0\33\261\0\0\0\1\0\7\0\0\0\6\0\1\0\0\25\374\0\0\0\t\0\2\0\1\0\4\0\0\0\35\0\1\0\2\0\0\0\5\33\270\0\32\254\0\0\0\1\0\7\0\0\0\6\0\1\0\0\25\376\0\3\0\10\0\0\0\2\0\36\0\5\0\0\0\4\0\24\0\0\0\6\0\0\0\"\0\4\0\24\0\22\0\34\0\n\0\25\0\0\0\0\0\10\0\26\0\24\0\35\4\n\0\23\0\0\0\0\0\10", 659) = 659 30059 lseek(4, 58780759, SEEK_SET) = 58780759 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\334\256\231\213\221\2\0\0\221\2\0\0002\0\0\0", 30) = 30 30059 lseek(4, 58780839, SEEK_SET) = 58780839 30059 read(4, "\312\376\272\276\0\0\0003\0\37\1\0\3()V\1\0\4(I)Z\1\0\6\1\0\4Code\1\0\17EnclosingMethod\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\nSourceFile\1\0\25isIdentifierIgnorable\1\0\risSatisfiedBy\1\0\23java/lang/Character\1\0\27java/util/regex/Pattern\1\0\31java/util/regex/Pattern$1\1\0)java/util/regex/Pattern$CharPropertyNames\1\0,java/util/regex/Pattern$CharPropertyNames$19\1\0;java/util/regex/Pattern$CharPropertyNames$CloneableProperty\7\0\v\7\0\f\7\0\r\7\0\16\7\0\17\7\0\20\1\0\36(Ljava/util/regex/Pattern$1;)V\f\0\t\0\2\f\0\3\0\27\n\0\21\0\30\n\0\26\0\31\1\0\21CharPropertyNames\1\0\21CloneableProperty\1\0\fPattern.java\0000\0\25\0\26\0\0\0\0\0\2\0\0\0\3\0\1\0\1\0\4\0\0\0\36\0\2\0\1\0\0\0\6*\1\267\0\33\261\0\0\0\1\0\7\0\0\0\6\0\1\0\0\25\377\0\0\0\n\0\2\0\1\0\4\0\0\0\35\0\1\0\2\0\0\0\5\33\270\0\32\254\0\0\0\1\0\7\0\0\0\6\0\1\0\0\26\1\0\3\0\10\0\0\0\2\0\36\0\5\0\0\0\4\0\24\0\0\0\6\0\0\0\"\0\4\0\24\0\22\0\34\0\n\0\25\0\0\0\0\0\10\0\26\0\24\0\35\4\n\0\23\0\0\0\0\0\10", 657) = 657 30059 lseek(4, 58780032, SEEK_SET) = 58780032 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B1\2064.\207\2\0\0\207\2\0\0002\0\0\0", 30) = 30 30059 lseek(4, 58780112, SEEK_SET) = 58780112 30059 read(4, "\312\376\272\276\0\0\0003\0\37\1\0\3()V\1\0\4(I)Z\1\0\6\1\0\4Code\1\0\17EnclosingMethod\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\nSourceFile\1\0\risSatisfiedBy\1\0\visSpaceChar\1\0\23java/lang/Character\1\0\27java/util/regex/Pattern\1\0\31java/util/regex/Pattern$1\1\0)java/util/regex/Pattern$CharPropertyNames\1\0,java/util/regex/Pattern$CharPropertyNames$20\1\0;java/util/regex/Pattern$CharPropertyNames$CloneableProperty\7\0\v\7\0\f\7\0\r\7\0\16\7\0\17\7\0\20\1\0\36(Ljava/util/regex/Pattern$1;)V\f\0\n\0\2\f\0\3\0\27\n\0\21\0\30\n\0\26\0\31\1\0\21CharPropertyNames\1\0\21CloneableProperty\1\0\fPattern.java\0000\0\25\0\26\0\0\0\0\0\2\0\0\0\3\0\1\0\1\0\4\0\0\0\36\0\2\0\1\0\0\0\6*\1\267\0\33\261\0\0\0\1\0\7\0\0\0\6\0\1\0\0\26\2\0\0\0\t\0\2\0\1\0\4\0\0\0\35\0\1\0\2\0\0\0\5\33\270\0\32\254\0\0\0\1\0\7\0\0\0\6\0\1\0\0\26\4\0\3\0\10\0\0\0\2\0\36\0\5\0\0\0\4\0\24\0\0\0\6\0\0\0\"\0\4\0\24\0\22\0\34\0\n\0\25\0\0\0\0\0\10\0\26\0\24\0\35\4\n\0\23\0\0\0\0\0\10", 647) = 647 30059 lseek(4, 58779304, SEEK_SET) = 58779304 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305BuR\37\274\210\2\0\0\210\2\0\0002\0\0\0", 30) = 30 30059 lseek(4, 58779384, SEEK_SET) = 58779384 30059 read(4, "\312\376\272\276\0\0\0003\0\37\1\0\3()V\1\0\4(I)Z\1\0\6\1\0\4Code\1\0\17EnclosingMethod\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\nSourceFile\1\0\risSatisfiedBy\1\0\fisWhitespace\1\0\23java/lang/Character\1\0\27java/util/regex/Pattern\1\0\31java/util/regex/Pattern$1\1\0)java/util/regex/Pattern$CharPropertyNames\1\0,java/util/regex/Pattern$CharPropertyNames$21\1\0;java/util/regex/Pattern$CharPropertyNames$CloneableProperty\7\0\v\7\0\f\7\0\r\7\0\16\7\0\17\7\0\20\1\0\36(Ljava/util/regex/Pattern$1;)V\f\0\n\0\2\f\0\3\0\27\n\0\21\0\30\n\0\26\0\31\1\0\21CharPropertyNames\1\0\21CloneableProperty\1\0\fPattern.java\0000\0\25\0\26\0\0\0\0\0\2\0\0\0\3\0\1\0\1\0\4\0\0\0\36\0\2\0\1\0\0\0\6*\1\267\0\33\261\0\0\0\1\0\7\0\0\0\6\0\1\0\0\26\5\0\0\0\t\0\2\0\1\0\4\0\0\0\35\0\1\0\2\0\0\0\5\33\270\0\32\254\0\0\0\1\0\7\0\0\0\6\0\1\0\0\26\7\0\3\0\10\0\0\0\2\0\36\0\5\0\0\0\4\0\24\0\0\0\6\0\0\0\"\0\4\0\24\0\22\0\34\0\n\0\25\0\0\0\0\0\10\0\26\0\24\0\35\4\n\0\23\0\0\0\0\0\10", 648) = 648 30059 lseek(4, 30665226, SEEK_SET) = 30665226 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\311`\366\237\210\2\0\0\210\2\0\0002\0\0\0", 30) = 30 30059 lseek(4, 30665306, SEEK_SET) = 30665306 30059 read(4, "\312\376\272\276\0\0\0003\0\37\1\0\3()V\1\0\4(I)Z\1\0\6\1\0\4Code\1\0\17EnclosingMethod\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\nSourceFile\1\0\fisISOControl\1\0\risSatisfiedBy\1\0\23java/lang/Character\1\0\27java/util/regex/Pattern\1\0\31java/util/regex/Pattern$1\1\0)java/util/regex/Pattern$CharPropertyNames\1\0,java/util/regex/Pattern$CharPropertyNames$22\1\0;java/util/regex/Pattern$CharPropertyNames$CloneableProperty\7\0\v\7\0\f\7\0\r\7\0\16\7\0\17\7\0\20\1\0\36(Ljava/util/regex/Pattern$1;)V\f\0\t\0\2\f\0\3\0\27\n\0\21\0\30\n\0\26\0\31\1\0\21CharPropertyNames\1\0\21CloneableProperty\1\0\fPattern.java\0000\0\25\0\26\0\0\0\0\0\2\0\0\0\3\0\1\0\1\0\4\0\0\0\36\0\2\0\1\0\0\0\6*\1\267\0\33\261\0\0\0\1\0\7\0\0\0\6\0\1\0\0\26\10\0\0\0\n\0\2\0\1\0\4\0\0\0\35\0\1\0\2\0\0\0\5\33\270\0\32\254\0\0\0\1\0\7\0\0\0\6\0\1\0\0\26\n\0\3\0\10\0\0\0\2\0\36\0\5\0\0\0\4\0\24\0\0\0\6\0\0\0\"\0\4\0\24\0\22\0\34\0\n\0\25\0\0\0\0\0\10\0\26\0\24\0\35\4\n\0\23\0\0\0\0\0\10", 648) = 648 30059 lseek(4, 30665954, SEEK_SET) = 30665954 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\364\267\373B\206\2\0\0\206\2\0\0002\0\0\0", 30) = 30 30059 lseek(4, 30666034, SEEK_SET) = 30666034 30059 read(4, "\312\376\272\276\0\0\0003\0\37\1\0\3()V\1\0\4(I)Z\1\0\6\1\0\4Code\1\0\17EnclosingMethod\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\nSourceFile\1\0\nisMirrored\1\0\risSatisfiedBy\1\0\23java/lang/Character\1\0\27java/util/regex/Pattern\1\0\31java/util/regex/Pattern$1\1\0)java/util/regex/Pattern$CharPropertyNames\1\0,java/util/regex/Pattern$CharPropertyNames$23\1\0;java/util/regex/Pattern$CharPropertyNames$CloneableProperty\7\0\v\7\0\f\7\0\r\7\0\16\7\0\17\7\0\20\1\0\36(Ljava/util/regex/Pattern$1;)V\f\0\t\0\2\f\0\3\0\27\n\0\21\0\30\n\0\26\0\31\1\0\21CharPropertyNames\1\0\21CloneableProperty\1\0\fPattern.java\0000\0\25\0\26\0\0\0\0\0\2\0\0\0\3\0\1\0\1\0\4\0\0\0\36\0\2\0\1\0\0\0\6*\1\267\0\33\261\0\0\0\1\0\7\0\0\0\6\0\1\0\0\26\v\0\0\0\n\0\2\0\1\0\4\0\0\0\35\0\1\0\2\0\0\0\5\33\270\0\32\254\0\0\0\1\0\7\0\0\0\6\0\1\0\0\26\r\0\3\0\10\0\0\0\2\0\36\0\5\0\0\0\4\0\24\0\0\0\6\0\0\0\"\0\4\0\24\0\22\0\34\0\n\0\25\0\0\0\0\0\10\0\26\0\24\0\35\4\n\0\23\0\0\0\0\0\10", 646) = 646 30059 lseek(4, 58771822, SEEK_SET) = 58771822 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\253\212\20\353\305\1\0\0\305\1\0\0!\0\0\0", 30) = 30 30059 lseek(4, 58771885, SEEK_SET) = 58771885 30059 read(4, "\312\376\272\276\0\0\0003\0\27\1\0\3()V\1\0\4(I)Z\1\0\6\1\0\3All\1\0\4Code\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\nSourceFile\1\0\risSatisfiedBy\1\0\27java/util/regex/Pattern\1\0\31java/util/regex/Pattern$1\1\0\33java/util/regex/Pattern$All\1\0$java/util/regex/Pattern$CharProperty\7\0\n\7\0\v\7\0\f\7\0\r\1\0\36(Ljava/util/regex/Pattern$1;)V\f\0\3\0\22\n\0\21\0\23\1\0\fCharProperty\1\0\fPattern.java\0000\0\20\0\21\0\0\0\0\0\2\0\0\0\3\0\1\0\1\0\5\0\0\0\36\0\2\0\1\0\0\0\6*\1\267\0\24\261\0\0\0\1\0\7\0\0\0\6\0\1\0\0\17\307\0\0\0\t\0\2\0\1\0\5\0\0\0\32\0\1\0\2\0\0\0\2\4\254\0\0\0\1\0\7\0\0\0\6\0\1\0\0\17\311\0\2\0\10\0\0\0\2\0\26\0\6\0\0\0\32\0\3\0\20\0\16\0\4\0\30\0\21\0\16\0\25\4\n\0\17\0\0\0\0\0\10", 453) = 453 30059 lseek(4, 58770521, SEEK_SET) = 58770521 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\310\301\247!\321\4\0\0\321\4\0\0&\0\0\0", 30) = 30 30059 lseek(4, 58770589, SEEK_SET) = 58770589 30059 read(4, "\312\376\272\276\0\0\0003\0B\1\0\23$assertionsDisabled\1\0\3()V\1\0\3()Z\1\0\4(I)I\1\0\4(I)Z\1\0\5([Z)V\1\0\10\1\0\6\1\0\4Code\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\nSourceFile\1\0\rStackMapTable\1\0\1Z\1\0\2[Z\1\0\3add\1\0\4bits\1\0\26desiredAssertionStatus\1\0\7isAscii\1\0\risSatisfiedBy\1\0\30java/lang/AssertionError\1\0\23java/lang/Character\1\0\17java/lang/Class\1\0\25java/util/regex/ASCII\1\0\27java/util/regex/Pattern\1\0\31java/util/regex/Pattern$1\1\0 java/util/regex/Pattern$BitClass\1\0'java/util/regex/Pattern$BmpCharProperty\1\0\7toLower\1\0\vtoLowerCase\1\0\7toUpper\1\0\vtoUpperCase\7\0\25\7\0\26\7\0\27\7\0\30\7\0\31\7\0\32\7\0\33\7\0\34\1\0\36(Ljava/util/regex/Pattern$1;)V\1\0&(II)Ljava/util/regex/Pattern$BitClass;\f\0\1\0\16\f\0\21\0\17\f\0\10\0\2\f\0\22\0\3\f\0\35\0\4\f\0\36\0\4\f\0\37\0\4\f\0 \0\4\f\0\23\0\5\f\0\10\0)\t\0'\0+\t\0'\0,\n\0!\0-\n\0\"\0000\n\0\"\0002\n\0#\0.\n\0$\0/\n\0$\0001\n\0$\0003\n\0(\0004\1\0\10BitClass\1\0\17BmpCharProperty\1\0\fPattern.java\0000\0'\0(\0\0\0\2\0\20\0\21\0\17\0\0\20\30\0\1\0\16\0\0\0\5\0\0\0\10\0\2\0\1\0\t\0\0\0'\0\2\0\1\0\0\0\17*\1\267\0>*\21\1\0\274\4\265\0006\261\0\0\0\1\0\v\0\0\0\6\0\1\0\0\f\300\0\2\0\10\0\6\0\1\0\t\0\0\0#\0\2\0\2\0\0\0\v*\1\267\0>*+\265\0006\261\0\0\0\1\0\v\0\0\0\6\0\1\0\0\f\301\0\0\0\20\0*\0\1\0\t\0\0\0\251\0\3\0\3\0\0\0a\262\0005\232\0\26\33\233\0\n\33\21\0\377\244\0\v\273\0!Y\267\0007\277\34\5~\231\0<\33\270\0=\231\0\32*\264\0006\33\270\0<\4T*\264\0006\33\270\0;\4T\247\0\36\34\20@~\231\0\27*\264\0006\33\270\0008\4T*\264\0006\33\270\0009\4T*\264\0006\33\4T*\260\0\0\0\2\0\r\0\0\0\6\0"..., 1233) = 1233 30059 lseek(4, 58769520, SEEK_SET) = 58769520 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B*\321e\\\236\3\0\0\236\3\0\0-\0\0\0", 30) = 30 30059 lseek(4, 58769595, SEEK_SET) = 58769595 30059 read(4, "\312\376\272\276\0\0\0003\0007\1\0\3()V\1\0\4(I)C\1\0\4(I)Z\1\0\6\1\0\4Code\1\0\1I\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\4Node\1\0\nSourceFile\1\0\rStackMapTable\1\0\1Z\1\0\6charAt\1\0\6hitEnd\1\0\risSatisfiedBy\1\0\26java/lang/CharSequence\1\0\27java/util/regex/Matcher\1\0\27java/util/regex/Pattern\1\0\31java/util/regex/Pattern$1\1\0'java/util/regex/Pattern$BmpCharProperty\1\0$java/util/regex/Pattern$CharProperty\1\0\34java/util/regex/Pattern$Node\1\0\5match\1\0\4next\1\0\2to\7\0\20\7\0\21\7\0\22\7\0\23\7\0\24\7\0\25\7\0\26\1\0\36Ljava/util/regex/Pattern$Node;\1\0\36(Ljava/util/regex/Pattern$1;)V\1\0005(Ljava/util/regex/Matcher;ILjava/lang/CharSequence;)Z\f\0\31\0\6\f\0\16\0\f\f\0\30\0!\f\0\4\0\1\f\0\r\0\2\f\0\17\0\3\f\0\4\0\"\f\0\27\0#\t\0\33\0$\t\0\33\0%\t\0\36\0&\n\0\36\0'\n\0\36\0)\n\0\37\0*\n\0 \0+\v\0\32\0(\1\0\17BmpCharProperty\1\0\fCharProperty\1\0\fPattern.java\4 \0\36\0\37\0\0\0\0\0\3\0\2\0\4\0\1\0\1\0\5\0\0\0\36\0\2\0\1\0\0\0\6*\1\267\0001\261\0\0\0\1\0\10\0\0\0\6\0\1\0\0\16\200\0\0\0\27\0#\0\1\0\5\0\0\0b\0\4\0\4\0\0\0002\34+\264\0,\242\0&*-\34\271\0003\2\0\266\0000\231\0\26*\264\0.+\34\4`-\266\0002\231\0\7\4\247\0\4\3\254+\4\265\0-\3\254\0\0\0\2\0\v\0\0\0\6\0\3)@\1\0\0\10\0\0\0\22\0\4\0\0\16\202\0\10\16\203\0+\16\206\0000\16\207\20\0\0\4\0\"\0\1\0\5\0\0\0\35\0\1\0\2\0\0\0\5*\267\0/\261\0\0\0\1\0\10\0\0\0\6\0\1\0\0\16\200\0\2\0\n\0\0\0\2\0006\0\7\0\0\0\"\0\4\0\36\0\34\0004\4\n\0\37\0\34\0005\4\n\0 \0\34\0\t\0\10\0\35\0\0\0\0\0\10", 926) = 926 30059 lseek(4, 30648176, SEEK_SET) = 30648176 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\372N\355\334f\2\0\0f\2\0\0\37\0\0\0", 30) = 30 30059 lseek(4, 30648237, SEEK_SET) = 30648237 30059 read(4, "\312\376\272\276\0\0\0003\0#\1\0\4(I)Z\1\0\5(II)V\1\0\6(III)Z\1\0\6\1\0\4Code\1\0\17EnclosingMethod\1\0\1I\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\nSourceFile\1\0\naccess$200\1\0\risSatisfiedBy\1\0\27java/util/regex/Pattern\1\0\31java/util/regex/Pattern$1\1\0$java/util/regex/Pattern$CharProperty\1\0\10rangeFor\1\0\tval$lower\1\0\tval$upper\7\0\r\7\0\16\7\0\17\1\0\36(Ljava/util/regex/Pattern$1;)V\1\0*(II)Ljava/util/regex/Pattern$CharProperty;\f\0\21\0\7\f\0\22\0\7\f\0\v\0\3\f\0\4\0\26\f\0\20\0\27\t\0\24\0\30\t\0\24\0\31\n\0\23\0\32\n\0\25\0\33\1\0\fCharProperty\1\0\fPattern.java\0000\0\24\0\25\0\0\0\2\20\20\0\21\0\7\0\0\20\20\0\22\0\7\0\0\0\2\0\0\0\4\0\2\0\1\0\5\0\0\0(\0\2\0\3\0\0\0\20*\33\265\0\35*\34\265\0\36*\1\267\0 \261\0\0\0\1\0\t\0\0\0\6\0\1\0\0\17\247\0\0\0\f\0\1\0\1\0\5\0\0\0%\0\3\0\2\0\0\0\r*\264\0\35\33*\264\0\36\270\0\37\254\0\0\0\1\0\t\0\0\0\6\0\1\0\0\17\251\0\3\0\n\0\0\0\2\0\"\0\6\0\0\0\4\0\23\0\34\0\10\0\0\0\22\0\2\0\24\0\0\0\0\0\10\0\25\0\23\0!\4\n", 614) = 614 30059 lseek(4, 58767817, SEEK_SET) = 58767817 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\264L\335\177\306\2\0\0\306\2\0\0,\0\0\0", 30) = 30 30059 lseek(4, 58767891, SEEK_SET) = 58767891 30059 read(4, "\312\376\272\276\0\0\0003\0!\1\0\4(I)Z\1\0\6\1\0\4Code\1\0\17EnclosingMethod\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\nSourceFile\1\0\rStackMapTable\1\0\ncomplement\1\0\risSatisfiedBy\1\0\27java/util/regex/Pattern\1\0\31java/util/regex/Pattern$1\1\0$java/util/regex/Pattern$CharProperty\1\0&java/util/regex/Pattern$CharProperty$1\1\0\6this$0\7\0\v\7\0\f\7\0\r\7\0\16\1\0&Ljava/util/regex/Pattern$CharProperty;\1\0\36(Ljava/util/regex/Pattern$1;)V\1\0(()Ljava/util/regex/Pattern$CharProperty;\1\0)(Ljava/util/regex/Pattern$CharProperty;)V\f\0\17\0\24\f\0\n\0\1\f\0\2\0\25\f\0\t\0\26\t\0\23\0\30\n\0\22\0\31\n\0\22\0\32\1\0\fCharProperty\1\0\fPattern.java\0 \0\23\0\22\0\0\0\1\20\20\0\17\0\24\0\0\0\2\0\0\0\2\0\27\0\1\0\3\0\0\0#\0\2\0\2\0\0\0\v*+\265\0\34*\1\267\0\36\261\0\0\0\1\0\6\0\0\0\6\0\1\0\0\16g\0\0\0\n\0\1\0\1\0\3\0\0\0004\0\2\0\2\0\0\0\21*\264\0\34\33\266\0\35\232\0\7\4\247\0\4\3\254\0\0\0\2\0\10\0\0\0\5\0\2\17@\1\0\6\0\0\0\6\0\1\0\0\16i\0\3\0\7\0\0\0\2\0 \0\4\0\0\0\4\0\22\0\33\0\5\0\0\0\32\0\3\0\22\0\20\0\37\4\n\0\23\0\0\0\0\0\0\0\21\0\0\0\0\0\10", 710) = 710 30059 lseek(4, 58768601, SEEK_SET) = 58768601 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\2633\315,Z\3\0\0Z\3\0\0\37\0\0\0", 30) = 30 30059 lseek(4, 58768662, SEEK_SET) = 58768662 30059 read(4, "\312\376\272\276\0\0\0003\0$\1\0\4(I)Z\1\0\6\1\0\4Code\1\0\17EnclosingMethod\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\nSourceFile\1\0\rStackMapTable\1\0\fintersection\1\0\risSatisfiedBy\1\0\27java/util/regex/Pattern\1\0\31java/util/regex/Pattern$1\1\0\31java/util/regex/Pattern$6\1\0$java/util/regex/Pattern$CharProperty\1\0\7val$lhs\1\0\7val$rhs\7\0\v\7\0\f\7\0\r\7\0\16\1\0&Ljava/util/regex/Pattern$CharProperty;\1\0\36(Ljava/util/regex/Pattern$1;)V\1\0O(Ljava/util/regex/Pattern$CharProperty;Ljava/util/regex/Pattern$CharProperty;)V\1\0t(Ljava/util/regex/Pattern$CharProperty;Ljava/util/regex/Pattern$CharProperty;)Ljava/util/regex/Pattern$CharProperty;\f\0\17\0\25\f\0\20\0\25\f\0\n\0\1\f\0\2\0\26\f\0\t\0\30\t\0\23\0\31\t\0\23\0\32\n\0\24\0\33\n\0\24\0\34\1\0\fCharProperty\1\0\fPattern.java\0000\0\23\0\24\0\0\0\2\20\20\0\17\0\25\0\0\20\20\0\20\0\25\0\0\0\2\0\0\0\2\0\27\0\1\0\3\0\0\0(\0\2\0\3\0\0\0\20*+\265\0\36*,\265\0\37*\1\267\0!\261\0\0\0\1\0\6\0\0\0\6\0\1\0\0\24'\0\0\0\n\0\1\0\1\0\3\0\0\0?\0\2\0\2\0\0\0\34*\264\0\36\33\266\0 \231\0\22*\264\0\37\33\266\0 \231\0\7\4\247\0\4\3\254\0\0\0\2\0\10\0\0\0\5\0\2\32@\1\0\6\0\0\0\6\0\1\0\0\24)\0\3\0\7\0\0\0\2\0#\0\4\0\0\0\4\0\21\0\35\0\5\0\0\0\32\0\3\0\23\0\0\0\0\0\10\0\24\0\21\0\"\4\n\0\22\0\0\0\0\0\10", 858) = 858 30059 open("/nfs/srpipe_references/references/Plasmodium_falciparum/default/all/fasta/all.fa.fai", O_RDONLY) = 6 30059 fstat(6, {st_mode=S_IFREG|0664, st_size=431, ...}) = 0 30059 fcntl(6, F_GETFD) = 0 30059 fcntl(6, F_SETFD, FD_CLOEXEC) = 0 30059 lseek(4, 58745692, SEEK_SET) = 58745692 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B\r\207\31R/V\0\0/V\0\0 \0\0\0", 30) = 30 30059 lseek(4, 58745754, SEEK_SET) = 58745754 30059 read(4, "\312\376\272\276\0\0\0003\2-\10\0 \10\0-\10\0.\10\0/\10\0001\10\0004\10\0N\10\0\237\1\0\23$assertionsDisabled\1\0\3()I\1\0\3()J\1\0\3()V\1\0\3()Z\1\0\4(I)I\1\0\4(I)V\1\0\4(I)Z\1\0\5(II)I\1\0\6(IJJ)J\1\0\7(IJJI)J\1\0\4(J)J\1\0\4(J)V\1\0\4(J)Z\1\0\5(JJ)I\1\0\5(JJ)J\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)V\1\0\30(Ljava/lang/Throwable;)V\1\0\4(Z)V\1\0\10\1\0\6\1\0\nBufferPool\1\0BChannel not open for writing - cannot extend file to required size\1\0\4Code\1\0\rConstantValue\1\0\nExceptions\1\0\1I\1\0\fInnerClasses\1\0\1J\1\0\17LineNumberTable\1\0\22Ljava/lang/Object;\1\0\24MAPPED_TRANSFER_SIZE\1\0\6MAP_PV\1\0\6MAP_RO\1\0\6MAP_RW\1\0\nMap failed\1\0\21Negative position\1\0\rNegative size\1\0\7PRIVATE\1\0\30Position + size overflow\1\0\tREAD_ONLY\1\0\nREAD_WRITE\1\0\36Size exceeds Integer.MAX_VALUE\1\0\nSourceFile\1\0\rStackMapTable\1\0\rTRANSFER_SIZE\1\0\1Z\1\0\26[Ljava/nio/ByteBuffer;\1\0\naccess$000\1\0\3add\1\0\raddSuppressed\1\0\25allocationGranularity\1\0\6append\1\0\5begin\1\0\5check\1\0\10checkAll\1\0\5clean\1\0\7cleaner\1\0\5clear\1\0\5close\1\0\rcurrentThread\1\0\26desiredAssertionStatus\1\0\fdoPrivileged\1\0\23duplicateForMapping\1\0\3end\1\0\nensureOpen\1\0\6equals\1\0\5erase\1\0\5false\1\0\2fd\1\0\5fdVal\1\0\rfileLockTable\1\0\rfi"..., 22063) = 22063 30059 mprotect(0x7fb314517000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 58742744, SEEK_SET) = 58742744 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305BI\274\353\234C\v\0\0C\v\0\0#\0\0\0", 30) = 30 30059 lseek(4, 58742809, SEEK_SET) = 58742809 30059 read(4, "\312\376\272\276\0\0\0003\0k\1\0\3()J\1\0\3()V\1\0\4(I)V\1\0\4(Z)V\1\0\10\1\0\6\1\0\4Code\1\0\nExceptions\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\rNO_ATTRIBUTES\1\0\tSignature\1\0\nSourceFile\1\0([Ljava/nio/file/attribute/FileAttribute;\1\0\6addAll\1\0\5force\1\0\rgetFileSystem\1\0\23java/io/IOException\1\0\35java/nio/channels/FileChannel\1\0%java/nio/channels/FileChannel$MapMode\1\0&java/nio/channels/GatheringByteChannel\1\0'java/nio/channels/ScatteringByteChannel\1\0%java/nio/channels/SeekableByteChannel\1\0002java/nio/channels/spi/AbstractInterruptibleChannel\1\0\30java/nio/file/FileSystem\1\0\22java/nio/file/Path\1\0%java/nio/file/attribute/FileAttribute\1\0$java/nio/file/spi/FileSystemProvider\1\0\25java/util/Collections\1\0\21java/util/HashSet\1\0\4lock\1\0\3map\1\0\16newFileChannel\1\0\4open\1\0\10position\1\0\10provider\1\0\4read\1\0\4size\1\0\ftransferFrom\1\0\ntransferTo\1\0\10truncate\1\0\7tryLock\1\0\5write\5\177\377\377\377\377\377\377\377\7\0\22\7\0\23\7\0\24\7\0\25\7\0\26\7\0\27\7\0\30\7\0\31\7\0\32\7\0\33\7\0\34\7\0\35\7\0\36\1\0+[Ljava/nio/file/attribute/FileAttribute<*>;\1\0\30(Ljava/nio/ByteBuffer;)I\1\0\31(Ljava/nio/ByteBuffer;J)I\1\0\31([Ljava/nio/ByteBuffer;)J\1\0\33([Ljava/nio/ByteBuffer;"..., 2883) = 2883 30059 lseek(4, 28808726, SEEK_SET) = 28808726 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305Ba\nT\313\272\1\0\0\272\1\0\0+\0\0\0", 30) = 30 30059 lseek(4, 28808799, SEEK_SET) = 28808799 30059 read(4, "\312\376\272\276\0\0\0003\0\24\1\0\3()J\1\0\nExceptions\1\0\nSourceFile\1\0\23java/io/IOException\1\0\20java/lang/Object\1\0\35java/nio/channels/ByteChannel\1\0%java/nio/channels/SeekableByteChannel\1\0\10position\1\0\4read\1\0\4size\1\0\10truncate\1\0\5write\7\0\4\7\0\5\7\0\6\7\0\7\1\0\30(Ljava/nio/ByteBuffer;)I\1\0*(J)Ljava/nio/channels/SeekableByteChannel;\1\0\30SeekableByteChannel.java\6\1\0\20\0\16\0\1\0\17\0\0\0\6\4\1\0\t\0\21\0\1\0\2\0\0\0\4\0\1\0\r\4\1\0\f\0\21\0\1\0\2\0\0\0\4\0\1\0\r\4\1\0\10\0\1\0\1\0\2\0\0\0\4\0\1\0\r\4\1\0\10\0\22\0\1\0\2\0\0\0\4\0\1\0\r\4\1\0\n\0\1\0\1\0\2\0\0\0\4\0\1\0\r\4\1\0\v\0\22\0\1\0\2\0\0\0\4\0\1\0\r\0\1\0\3\0\0\0\2\0\23", 442) = 442 30059 lseek(4, 58742468, SEEK_SET) = 58742468 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305Bk\221\315\212\323\0\0\0\323\0\0\0#\0\0\0", 30) = 30 30059 lseek(4, 58742533, SEEK_SET) = 58742533 30059 read(4, "\312\376\272\276\0\0\0003\0\v\1\0\nSourceFile\1\0\20java/lang/Object\1\0\35java/nio/channels/ByteChannel\1\0%java/nio/channels/ReadableByteChannel\1\0%java/nio/channels/WritableByteChannel\7\0\2\7\0\3\7\0\4\7\0\5\1\0\20ByteChannel.java\6\1\0\7\0\6\0\2\0\10\0\t\0\0\0\0\0\1\0\1\0\0\0\2\0\n", 211) = 211 30059 lseek(4, 58742135, SEEK_SET) = 58742135 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305Bj\3227u\4\1\0\0\4\1\0\0+\0\0\0", 30) = 30 30059 lseek(4, 58742208, SEEK_SET) = 58742208 30059 read(4, "\312\376\272\276\0\0\0003\0\16\1\0\nExceptions\1\0\nSourceFile\1\0\23java/io/IOException\1\0\20java/lang/Object\1\0\31java/nio/channels/Channel\1\0%java/nio/channels/ReadableByteChannel\1\0\4read\7\0\3\7\0\4\7\0\5\7\0\6\1\0\30(Ljava/nio/ByteBuffer;)I\1\0\30ReadableByteChannel.java\6\1\0\v\0\t\0\1\0\n\0\0\0\1\4\1\0\7\0\f\0\1\0\1\0\0\0\4\0\1\0\10\0\1\0\2\0\0\0\2\0\r", 260) = 260 30059 lseek(4, 58741843, SEEK_SET) = 58741843 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305BK\r>\365\347\0\0\0\347\0\0\0\37\0\0\0", 30) = 30 30059 lseek(4, 58741904, SEEK_SET) = 58741904 30059 read(4, "\312\376\272\276\0\0\0003\0\20\1\0\3()V\1\0\3()Z\1\0\nExceptions\1\0\nSourceFile\1\0\5close\1\0\6isOpen\1\0\21java/io/Closeable\1\0\23java/io/IOException\1\0\20java/lang/Object\1\0\31java/nio/channels/Channel\7\0\7\7\0\10\7\0\t\7\0\n\1\0\fChannel.java\6\1\0\16\0\r\0\1\0\v\0\0\0\2\4\1\0\6\0\2\0\0\4\1\0\5\0\1\0\1\0\3\0\0\0\4\0\1\0\f\0\1\0\4\0\0\0\2\0\17", 231) = 231 30059 lseek(4, 58741509, SEEK_SET) = 58741509 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305BT\373Dk\5\1\0\0\5\1\0\0+\0\0\0", 30) = 30 30059 lseek(4, 58741582, SEEK_SET) = 58741582 30059 read(4, "\312\376\272\276\0\0\0003\0\16\1\0\nExceptions\1\0\nSourceFile\1\0\23java/io/IOException\1\0\20java/lang/Object\1\0\31java/nio/channels/Channel\1\0%java/nio/channels/WritableByteChannel\1\0\5write\7\0\3\7\0\4\7\0\5\7\0\6\1\0\30(Ljava/nio/ByteBuffer;)I\1\0\30WritableByteChannel.java\6\1\0\v\0\t\0\1\0\n\0\0\0\1\4\1\0\7\0\f\0\1\0\1\0\0\0\4\0\1\0\10\0\1\0\2\0\0\0\2\0\r", 261) = 261 30059 lseek(4, 58741111, SEEK_SET) = 58741111 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\346\302-\232D\1\0\0D\1\0\0,\0\0\0", 30) = 30 30059 lseek(4, 58741185, SEEK_SET) = 58741185 30059 read(4, "\312\376\272\276\0\0\0003\0\17\1\0\nExceptions\1\0\nSourceFile\1\0\23java/io/IOException\1\0\20java/lang/Object\1\0&java/nio/channels/GatheringByteChannel\1\0%java/nio/channels/WritableByteChannel\1\0\5write\7\0\3\7\0\4\7\0\5\7\0\6\1\0\31([Ljava/nio/ByteBuffer;)J\1\0\33([Ljava/nio/ByteBuffer;II)J\1\0\31GatheringByteChannel.java\6\1\0\n\0\t\0\1\0\v\0\0\0\2\4\1\0\7\0\r\0\1\0\1\0\0\0\4\0\1\0\10\4\1\0\7\0\f\0\1\0\1\0\0\0\4\0\1\0\10\0\1\0\2\0\0\0\2\0\16", 324) = 324 30059 lseek(4, 58740711, SEEK_SET) = 58740711 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305BU\340\230\240E\1\0\0E\1\0\0-\0\0\0", 30) = 30 30059 lseek(4, 58740786, SEEK_SET) = 58740786 30059 read(4, "\312\376\272\276\0\0\0003\0\17\1\0\nExceptions\1\0\nSourceFile\1\0\23java/io/IOException\1\0\20java/lang/Object\1\0%java/nio/channels/ReadableByteChannel\1\0'java/nio/channels/ScatteringByteChannel\1\0\4read\7\0\3\7\0\4\7\0\5\7\0\6\1\0\31([Ljava/nio/ByteBuffer;)J\1\0\33([Ljava/nio/ByteBuffer;II)J\1\0\32ScatteringByteChannel.java\6\1\0\v\0\t\0\1\0\n\0\0\0\2\4\1\0\7\0\r\0\1\0\1\0\0\0\4\0\1\0\10\4\1\0\7\0\f\0\1\0\1\0\0\0\4\0\1\0\10\0\1\0\2\0\0\0\2\0\16", 325) = 325 30059 lseek(4, 58738200, SEEK_SET) = 58738200 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\372]\365\33y\t\0\0y\t\0\0008\0\0\0", 30) = 30 30059 lseek(4, 58738286, SEEK_SET) = 58738286 30059 read(4, "\312\376\272\276\0\0\0003\0b\1\0\3()V\1\0\3()Z\1\0\4(Z)V\1\0\6\1\0\4Code\1\0\nExceptions\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\22Ljava/lang/Object;\1\0\nSourceFile\1\0\rStackMapTable\1\0\1Z\1\0\naccess$000\1\0\naccess$100\1\0\naccess$102\1\0\naccess$202\1\0\5begin\1\0\tblockedOn\1\0\5close\1\0\tcloseLock\1\0\rcurrentThread\1\0\3end\1\0\21getJavaLangAccess\1\0\20implCloseChannel\1\0\tinterrupt\1\0\vinterrupted\1\0\vinterruptor\1\0\risInterrupted\1\0\6isOpen\1\0\23java/io/IOException\1\0\20java/lang/Object\1\0\20java/lang/Thread\1\0\23java/lang/Throwable\1\0,java/nio/channels/AsynchronousCloseException\1\0\31java/nio/channels/Channel\1\0,java/nio/channels/ClosedByInterruptException\1\0&java/nio/channels/InterruptibleChannel\1\0002java/nio/channels/spi/AbstractInterruptibleChannel\1\0004java/nio/channels/spi/AbstractInterruptibleChannel$1\1\0\4open\1\0\27sun/misc/JavaLangAccess\1\0\26sun/misc/SharedSecrets\1\0\30sun/nio/ch/Interruptible\7\0\36\7\0\37\7\0 \7\0!\7\0\"\7\0#\7\0$\7\0%\7\0&\7\0'\7\0)\7\0*\7\0+\1\0\22Ljava/lang/Thread;\1\0\32Lsun/nio/ch/Interruptible;\1\0\24()Ljava/lang/Thread;\1\0\25(Ljava/lang/Thread;)V\1\0007(Ljava/nio/channels/spi/AbstractInterruptibleChannel;)V\1\0007(L"..., 2425) = 2425 30059 lseek(4, 58737884, SEEK_SET) = 58737884 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\247+W\214\362\0\0\0\362\0\0\0,\0\0\0", 30) = 30 30059 lseek(4, 58737958, SEEK_SET) = 58737958 30059 read(4, "\312\376\272\276\0\0\0003\0\16\1\0\3()V\1\0\nExceptions\1\0\nSourceFile\1\0\5close\1\0\23java/io/IOException\1\0\20java/lang/Object\1\0\31java/nio/channels/Channel\1\0&java/nio/channels/InterruptibleChannel\7\0\5\7\0\6\7\0\7\7\0\10\1\0\31InterruptibleChannel.java\6\1\0\f\0\n\0\1\0\v\0\0\0\1\4\1\0\4\0\1\0\1\0\2\0\0\0\4\0\1\0\t\0\1\0\3\0\0\0\2\0\r", 242) = 242 30059 lseek(4, 28939021, SEEK_SET) = 28939021 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\237h\357L\37\1\0\0\37\1\0\0+\0\0\0", 30) = 30 30059 lseek(4, 28939094, SEEK_SET) = 28939094 30059 read(4, "\312\376\272\276\0\0\0003\0\16\1\0\24()Ljava/lang/String;\1\0\5()TT;\1\0\tSignature\1\0\nSourceFile\1\0\20java/lang/Object\1\0%java/nio/file/attribute/FileAttribute\1\0\4name\1\0\5value\7\0\5\7\0\6\1\0(Ljava/lang/Object;\1\0\24()Ljava/lang/Object;\1\0\22FileAttribute.java\6\1\0\n\0\t\0\0\0\0\0\2\4\1\0\7\0\1\0\0\4\1\0\10\0\f\0\1\0\3\0\0\0\2\0\2\0\2\0\4\0\0\0\2\0\r\0\3\0\0\0\2\0\v", 287) = 287 30059 lseek(4, 58731079, SEEK_SET) = 58731079 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B\n\361\252\336b\32\0\0b\32\0\0\25\0\0\0", 30) = 30 30059 lseek(4, 58731130, SEEK_SET) = 58731130 30059 read(4, "\312\376\272\276\0\0\0003\1:\10\0\6\10\0#\10\0`\10\0d\10\0t\1\0\0\1\0\23$assertionsDisabled\1\0\3()I\1\0\3()J\1\0\3()V\1\0\3()Z\1\0\4(I)V\1\0\4(J)B\1\0\4(J)V\1\0\5(JB)V\1\0\6(JJB)V\1\0\25(Ljava/lang/Object;)V\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)V\1\0\25(Ljava/lang/String;)Z\1\0'([Ljava/lang/Object;)Ljava/lang/Object;\1\0\10\1\0\6\1\0\4Code\1\0\nExceptions\1\0\1I\1\0\7IOV_MAX\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\22Ljava/lang/String;\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\22TEMP_BUF_POOL_SIZE\1\0\34Temporary selector not empty\1\0\tUtil.java\1\0\1Z\1\0\26[Ljava/nio/ByteBuffer;\1\0\4_get\1\0\4_put\1\0\naccess$000\1\0\naccess$302\1\0\naccess$402\1\0\7address\1\0\16allocateDirect\1\0\natBugLevel\1\0\vbufferCache\1\0\10bugLevel\1\0\10capacity\1\0\5clean\1\0\7cleaner\1\0\26desiredAssertionStatus\1\0\33directByteBufferConstructor\1\0\34directByteBufferRConstructor\1\0\fdoPrivileged\1\0\6equals\1\0\5erase\1\0\4free\1\0\3get\1\0\7getByte\1\0\30getTemporaryDirectBuffer\1\0\24getTemporarySelector\1\0\tgetUnsafe\1\0\22initDBBConstructor\1\0\23initDBBRConstructor\1\0\7initIDs\1\0\10isBooted\1\0\7isEmpty\1\0\23java/io/IOException\1\0\30java/lang/AssertionError\1\0\17java/lang/Class\1\0 java/lang/Ille"..., 6754) = 6754 30059 mprotect(0x7fb314518000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 58725060, SEEK_SET) = 58725060 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305BC\223\213\244N\27\0\0N\27\0\0\27\0\0\0", 30) = 30 30059 lseek(4, 58725113, SEEK_SET) = 58725113 30059 read(4, "\312\376\272\276\0\0\0003\0\306\10\0\26\1\0\23$assertionsDisabled\1\0\3()I\1\0\3()J\1\0\3()V\1\0\3()Z\1\0\4(I)I\1\0\4(I)V\1\0\4(I)Z\1\0\5(IJ)V\1\0\25(Ljava/lang/String;)V\1\0\4(Z)J\1\0\5([B)Z\1\0\10\1\0\6\1\0\4Code\1\0\nExceptions\1\0\1I\1\0\7IOV_MAX\1\0\1J\1\0\17LineNumberTable\1\0\20Read-only buffer\1\0\nSourceFile\1\0\rStackMapTable\1\0\1Z\1\0\26[Ljava/nio/ByteBuffer;\1\0\7address\1\0\tclearRefs\1\0\21configureBlocking\1\0\26desiredAssertionStatus\1\0\5drain\1\0\5fdVal\1\0\4flip\1\0\3get\1\0\tgetBuffer\1\0\vgetPosition\1\0\fgetRemaining\1\0\tgetShadow\1\0\30getTemporaryDirectBuffer\1\0\7initIDs\1\0\6iovMax\1\0\nisReadOnly\1\0\26java/io/FileDescriptor\1\0\23java/io/IOException\1\0\30java/lang/AssertionError\1\0\17java/lang/Class\1\0\"java/lang/IllegalArgumentException\1\0\20java/lang/Object\1\0\23java/lang/Throwable\1\0\23java/nio/ByteBuffer\1\0\5limit\1\0\4load\1\0\10makePipe\1\0\5newFD\1\0\37offerFirstTemporaryDirectBuffer\1\0\36offerLastTemporaryDirectBuffer\1\0\10position\1\0\5pread\1\0\3put\1\0\7putBase\1\0\6putLen\1\0\6pwrite\1\0\vrandomBytes\1\0\4read\1\0\24readIntoNativeBuffer\1\0\5readv\1\0\tremaining\1\0\tsetBuffer\1\0\tsetShadow\1\0\10setfdVal\1\0\27sun/nio/ch/DirectBuffer\1\0\21sun/nio/ch/IOUtil\1\0\27sun/nio/ch/IOVecWr"..., 5966) = 5966 30059 lseek(4, 59432979, SEEK_SET) = 59432979 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B\246\30\206V\202\2\0\0\202\2\0\0+\0\0\0", 30) = 30 30059 lseek(4, 59433052, SEEK_SET) = 59433052 30059 read(4, "\312\376\272\276\0\0\0003\0 \1\0\3()V\1\0\25(Ljava/lang/String;)V\1\0\6\1\0\4Code\1\0\17LineNumberTable\1\0\22Ljava/lang/String;\1\0\tSignature\1\0\nSourceFile\1\0\20java/lang/Object\1\0\20java/lang/System\1\0\36java/security/PrivilegedAction\1\0\vloadLibrary\1\0\3run\1\0%sun/security/action/LoadLibraryAction\1\0\6theLib\7\0\t\7\0\n\7\0\v\7\0\16\1\0DLjava/lang/Object;Ljava/security/PrivilegedAction;\1\0\24()Ljava/lang/Object;\1\0\22()Ljava/lang/Void;\f\0\17\0\6\f\0\3\0\1\f\0\f\0\2\f\0\r\0\26\t\0\23\0\27\n\0\20\0\30\n\0\21\0\31\n\0\23\0\32\1\0\26LoadLibraryAction.java\0!\0\23\0\20\0\1\0\22\0\1\0\2\0\17\0\6\0\0\0\3\0\1\0\3\0\2\0\1\0\4\0\0\0*\0\2\0\2\0\0\0\n*\267\0\34*+\265\0\33\261\0\0\0\1\0\5\0\0\0\16\0\3\0\0\0;\0\4\0<\0\t\0=\0\1\0\r\0\26\0\1\0\4\0\0\0%\0\1\0\1\0\0\0\t*\264\0\33\270\0\35\1\260\0\0\0\1\0\5\0\0\0\n\0\2\0\0\0C\0\7\0D\20A\0\r\0\25\0\1\0\4\0\0\0\35\0\1\0\1\0\0\0\5*\266\0\36\260\0\0\0\1\0\5\0\0\0\6\0\1\0\0\0/\0\2\0\10\0\0\0\2\0\37\0\7\0\0\0\2\0\24", 642) = 642 30059 stat("/software/jdk1.7.0_25/jre/lib/amd64/libnet.so", {st_mode=S_IFREG|0755, st_size=109903, ...}) = 0 30059 open("/software/jdk1.7.0_25/jre/lib/amd64/libnet.so", O_RDONLY|O_CLOEXEC) = 7 30059 read(7, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\260E\0\0\0\0\0\0@\0\0\0\0\0\0\0p\\\1\0\0\0\0\0\0\0\0\0@\0008\0\6\0@\0\37\0\34\0\1\0\0\0\5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\334L\1\0\0\0\0\0\334L\1\0\0\0\0\0\0\0 \0\0\0\0\0\1\0\0\0\6\0\0\0\0P\1\0\0\0\0\0\0P!\0\0\0\0\0\0P!\0\0\0\0\0\210\7\0\0\0\0\0\0008\f\0\0\0\0\0\0\0\0 \0\0\0\0\0\2\0\0\0\6\0\0\0008P\1\0\0\0\0\0008P!\0\0\0\0\0008P!\0\0\0\0\0 \2\0\0\0\0\0\0 \2\0\0\0\0\0\0\10\0\0\0\0\0\0\0\4\0\0\0\4\0\0\0\220\1\0\0\0\0\0\0\220\1\0\0\0\0\0\0\220\1\0\0\0\0\0\0$\0\0\0\0\0\0\0$\0\0\0\0\0\0\0\4\0\0\0\0\0\0\0P\345td\4\0\0\0h4\1\0\0\0\0\0h4\1\0\0\0\0\0h4\1\0\0\0\0\0l\4\0\0\0\0\0\0l\4\0\0\0\0\0\0\4\0\0\0\0\0\0\0Q\345td\6\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10\0\0\0\0\0\0\0\4\0\0\0\24\0\0\0\3\0\0\0GNU\0XS\372.\6\301\304\330\335\323\4 %\0Y\23\223\254n>\0\0\0\0007\1\0\0\251\0\0\0T\0\0\0 \0\0\0x\0\0\0+\0\0\0\0\0\0\0)\0\0\0\0\0\0\0\0\0\0\0\t\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0007\0\0\0\0\0\0\0\0\0\0\0\5\0\0\0003\0\0\0\"\0\0\0\0\0\0\0R\0\0\0\0\0\0\0\250\0\0\0\0\0\0\0\211\0\0\0\0\0\0\0\0\0\0\0002\0\0\0=\0\0\0\0\0\0\0\216\0\0\0\0\0\0\0t\0\0\0\0\0\0\0]\0\0\0\0\0\0\0O\0\0\0\0\0\0\0~\0\0\0$\0\0\0\0\0\0\0y\0\0\0I\0\0\0\202\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\31\0\0\0\215\0\0\0\0\0\0\0000\0\0\0\0\0\0\0\24\0\0\0M\0\0\0\0\0\0\0\213\0\0\0\0\0\0\0001\0\0\0\0\0\0\0%\0\0\0!\0\0\0\205\0\0\0\0\0\0\0C\0\0\0\0\0\0\0W\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\207\0\0\0\227\0\0\0K\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0/\0\0\0f\0\0\0\0\0\0\0^\0\0\0\0\0\0\0\0\0\0\0\2\0\0\0\0\0\0\0\36\0\0\0|\0\0\0<\0\0\0>\0\0\0\240\0\0\0\0\0\0\0\236\0\0\0\0\0\0\0\231\0\0\0", 832) = 832 30059 fstat(7, {st_mode=S_IFREG|0755, st_size=109903, ...}) = 0 30059 mprotect(0x7fb314519000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mmap(NULL, 2186296, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 7, 0) = 0x7fb28eace000 30059 mprotect(0x7fb28eae3000, 2097152, PROT_NONE) = 0 30059 mmap(0x7fb28ece3000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 7, 0x15000) = 0x7fb28ece3000 30059 close(7) = 0 30059 getrlimit(RLIMIT_NOFILE, {rlim_cur=128*1024, rlim_max=128*1024}) = 0 30059 mmap(NULL, 6295552, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb28e4cd000 30059 rt_sigaction(SIGRT_30, {0x7fb28ead9dc0, [], SA_RESTORER, 0x7fb31aeeacb0}, NULL, 8) = 0 30059 rt_sigprocmask(SIG_UNBLOCK, [RT_30], NULL, 8) = 0 30059 socket(PF_INET6, SOCK_STREAM, IPPROTO_IP) = 7 30059 getsockname(0, 0x7fb31b2f57f0, [28]) = -1 ENOTSOCK (Socket operation on non-socket) 30059 open("/proc/net/if_inet6", O_RDONLY) = 8 30059 fstat(8, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0 30059 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb31b30d000 30059 read(8, "00000000000000000000000000000001 01 80 10 80 lo\nfe80000000000000ae162dfffeb7bc44 03 40 20 80 site\n", 1024) = 108 30059 close(8) = 0 30059 munmap(0x7fb31b30d000, 4096) = 0 30059 close(7) = 0 30059 open("/proc/net/ipv6_route", O_RDONLY) = 7 30059 fstat(7, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0 30059 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb31b30d000 30059 read(7, "fe800000000000000000000000000000 40 00000000000000000000000000000000 00 00000000000000000000000000000000 00000100 00000000 00000000 00000001 site\n00000000000000000000000000000000 00 00000000000000000000000000000000 00 00000000000000000000000000000000 ffffffff 00000001 00000009 00200200 lo\n00000000000000000000000000000001 80 00000000000000000000000000000000 00 00000000000000000000000000000000 00000000 00000001 00000272 80200001 lo\nfe80000000000000ae162dfffeb7bc44 80 00000000000000000000000000000000 00 00000000000000000000000000000000 00000000 00000001 00000000 80200001 lo\nff000000000000000000000000000000 08 00000000000000000000000000000000 00 00000000000000000000000000000000 00000100 00000000 00000000 00000001 site\n00000000000000000000000000000000 00 00000000000000000000000000000000 00 00000000000000000000000000000000 ffffffff 00000001 00000009 00200200 lo\n", 1024) = 900 30059 read(7, "", 1024) = 0 30059 close(7) = 0 30059 munmap(0x7fb31b30d000, 4096) = 0 30059 open("/proc/net/if_inet6", O_RDONLY) = 7 30059 fstat(7, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0 30059 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb31b30d000 30059 read(7, "00000000000000000000000000000001 01 80 10 80 lo\nfe80000000000000ae162dfffeb7bc44 03 40 20 80 site\n", 1024) = 108 30059 close(7) = 0 30059 munmap(0x7fb31b30d000, 4096) = 0 30059 open("/proc/net/if_inet6", O_RDONLY) = 7 30059 fstat(7, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0 30059 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb31b30d000 30059 read(7, "00000000000000000000000000000001 01 80 10 80 lo\nfe80000000000000ae162dfffeb7bc44 03 40 20 80 site\n", 1024) = 108 30059 read(7, "", 1024) = 0 30059 close(7) = 0 30059 munmap(0x7fb31b30d000, 4096) = 0 30059 stat("/software/jdk1.7.0_25/jre/lib/amd64/libnio.so", {st_mode=S_IFREG|0755, st_size=91216, ...}) = 0 30059 open("/software/jdk1.7.0_25/jre/lib/amd64/libnio.so", O_RDONLY|O_CLOEXEC) = 7 30059 read(7, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0000i\0\0\0\0\0\0@\0\0\0\0\0\0\0H\f\1\0\0\0\0\0\0\0\0\0@\0008\0\6\0@\0\37\0\34\0\1\0\0\0\5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0004\371\0\0\0\0\0\0004\371\0\0\0\0\0\0\0\0 \0\0\0\0\0\1\0\0\0\6\0\0\0\0\0\1\0\0\0\0\0\0\0!\0\0\0\0\0\0\0!\0\0\0\0\0T\6\0\0\0\0\0\0\10\10\0\0\0\0\0\0\0\0 \0\0\0\0\0\2\0\0\0\6\0\0\0000\0\1\0\0\0\0\0000\0!\0\0\0\0\0000\0!\0\0\0\0\0 \2\0\0\0\0\0\0 \2\0\0\0\0\0\0\10\0\0\0\0\0\0\0\4\0\0\0\4\0\0\0\220\1\0\0\0\0\0\0\220\1\0\0\0\0\0\0\220\1\0\0\0\0\0\0$\0\0\0\0\0\0\0$\0\0\0\0\0\0\0\4\0\0\0\0\0\0\0P\345td\4\0\0\0\320\332\0\0\0\0\0\0\320\332\0\0\0\0\0\0\320\332\0\0\0\0\0\0\224\5\0\0\0\0\0\0\224\5\0\0\0\0\0\0\4\0\0\0\0\0\0\0Q\345td\6\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10\0\0\0\0\0\0\0\4\0\0\0\24\0\0\0\3\0\0\0GNU\0G3\30'\324\210\3441h\362aA>\360\275\2266\27\243\255\0\0\0\0/\2\0\0 \1\0\0\0\0\0\0\346\0\0\0\0\0\0\0\301\0\0\0\0\0\0\0\0\0\0\0\361\0\0\0\0\0\0\0_\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0005\0\0\0\0\0\0\0a\0\0\0\0\0\0\0O\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\4\0\0\0S\0\0\0\0\0\0\0\5\0\0\0\362\0\0\0\0\0\0\0@\0\0\0\27\1\0\0\0\0\0\0\0\0\0\0\230\0\0\0\0\0\0\0\0\0\0\0\375\0\0\0\0\0\0\0\343\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\356\0\0\0\0\0\0\0\211\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\34\1\0\0\0\0\0\0\0\0\0\0\312\0\0\0000\0\0\0\31\1\0\0\0\0\0\0\\\0\0\0\0\0\0\0#\0\0\0f\0\0\0\247\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\33\1\0\0\0\0\0\0?\0\0\0\30\1\0\0\202\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\275\0\0\0\0\0\0\0\313\0\0\0\0\0\0\0g\0\0\0\241\0\0\0\364\0\0\0\243\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0I\0\0\0\0\0\0\0\37\1\0\0\0\0\0\0004\0\0\0\227\0\0\0F\0\0\0\310\0\0\0\7\1\0\0\353\0\0\0E\0\0\0\0\0\0\0", 832) = 832 30059 fstat(7, {st_mode=S_IFREG|0755, st_size=91216, ...}) = 0 30059 mmap(NULL, 2164744, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 7, 0) = 0x7fb28e2bc000 30059 mprotect(0x7fb28e2cc000, 2097152, PROT_NONE) = 0 30059 mmap(0x7fb28e4cc000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 7, 0x10000) = 0x7fb28e4cc000 30059 close(7) = 0 30059 lseek(4, 44418954, SEEK_SET) = 44418954 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B\360\205\217\221L\2\0\0L\2\0\0\27\0\0\0", 30) = 30 30059 lseek(4, 44419007, SEEK_SET) = 44419007 30059 read(4, "\312\376\272\276\0\0\0003\0\34\1\0\3()V\1\0\6\1\0\4Code\1\0\17EnclosingMethod\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\tUtil.java\1\0\finitialValue\1\0\25java/lang/ThreadLocal\1\0\17sun/nio/ch/Util\1\0\21sun/nio/ch/Util$1\1\0\33sun/nio/ch/Util$BufferCache\7\0\v\7\0\f\7\0\r\7\0\16\1\0006Ljava/lang/ThreadLocal;\1\0\24()Ljava/lang/Object;\1\0\37()Lsun/nio/ch/Util$BufferCache;\f\0\2\0\1\f\0\n\0\25\n\0\17\0\26\n\0\21\0\27\n\0\22\0\26\1\0\vBufferCache\0000\0\21\0\17\0\0\0\0\0\3\0\0\0\2\0\1\0\1\0\3\0\0\0\35\0\1\0\1\0\0\0\5*\267\0\30\261\0\0\0\1\0\6\0\0\0\6\0\1\0\0\0005\0\4\0\n\0\25\0\1\0\3\0\0\0 \0\2\0\1\0\0\0\10\273\0\22Y\267\0\32\260\0\0\0\1\0\6\0\0\0\6\0\1\0\0\0008\20D\0\n\0\24\0\1\0\3\0\0\0\35\0\1\0\1\0\0\0\5*\266\0\31\260\0\0\0\1\0\6\0\0\0\6\0\1\0\0\0005\0\4\0\10\0\0\0\2\0\t\0\4\0\0\0\4\0\20\0\0\0\7\0\0\0\2\0\23\0\5\0\0\0\22\0\2\0\21\0\0\0\0\0\10\0\22\0\20\0\33\0\n", 588) = 588 30059 stat("/software/jdk1.7.0_25/jre/lib/amd64/libnet.so", {st_mode=S_IFREG|0755, st_size=109903, ...}) = 0 30059 stat("/software/jdk1.7.0_25/jre/lib/amd64/libnio.so", {st_mode=S_IFREG|0755, st_size=91216, ...}) = 0 30059 lseek(4, 58715054, SEEK_SET) = 58715054 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B\16\3144\322\22\7\0\0\22\7\0\0 \0\0\0", 30) = 30 30059 lseek(4, 58715116, SEEK_SET) = 58715116 30059 read(4, "\312\376\272\276\0\0\0003\0Q\1\0\23$assertionsDisabled\1\0\3()I\1\0\3()J\1\0\3()V\1\0\3()Z\1\0\4(I)V\1\0\4(J)V\1\0\10\1\0\6\1\0\4Code\1\0\1I\1\0\17LineNumberTable\1\0\nSourceFile\1\0\rStackMapTable\1\0\1Z\1\0\2[J\1\0\3add\1\0\tarraycopy\1\0\7current\1\0\rcurrentThread\1\0\26desiredAssertionStatus\1\0\4elts\1\0\tinterrupt\1\0\30java/lang/AssertionError\1\0\17java/lang/Class\1\0\36java/lang/InterruptedException\1\0\20java/lang/Object\1\0\20java/lang/System\1\0\20java/lang/Thread\1\0\23java/lang/Throwable\1\0\tnotifyAll\1\0\6remove\1\0\6signal\1\0\rsignalAndWait\1\0\27sun/nio/ch/NativeThread\1\0\32sun/nio/ch/NativeThreadSet\1\0\4used\1\0\4wait\1\0\16waitingToEmpty\5\377\377\377\377\377\377\377\377\7\0\30\7\0\31\7\0\32\7\0\33\7\0\34\7\0\35\7\0\36\7\0#\7\0$\1\0\24()Ljava/lang/Thread;\1\0*(Ljava/lang/Object;ILjava/lang/Object;II)V\f\0%\0\v\f\0\1\0\17\f\0'\0\17\f\0\26\0\20\f\0\23\0\3\f\0\t\0\4\f\0\27\0\4\f\0\37\0\4\f\0&\0\4\f\0\25\0\5\f\0!\0\7\f\0\24\0003\f\0\22\0004\t\0002\0005\t\0002\0006\t\0002\0007\t\0002\0008\n\0*\0:\n\0+\0>\n\0-\0:\n\0-\0<\n\0-\0=\n\0.\0A\n\0/\0;\n\0/\0@\n\0001\0009\n\0001\0?\1\0\24NativeThreadSet.java\0 \0002\0-\0\0\0\4\0\2\0\26\0\20\0\0\0\2\0%\0\v\0\0\0\2\0'\0\17\0\0\20\30\0\1\0\17\0\0\0\5\0\0\0\t\0\6\0\1\0\n\0\0\0005\0\2\0\2\0\0\0\21*\267\0H*\3\265\0B*\33\274\v\265\0E\261\0\0\0\1\0\f\0\0\0\22\0\4\0\0\0&\0\4\0#\0\t\0'\0\20\0(\0\0\0\21\0\2\0\1\0\n\0\0\1H\0\5\0\t\0\0\0\233\270\0N@\37\t\224\232\0\7\24\0(@*YN\302\0036\4*\264\0B*\264\0E\276\241\0-*\264\0E\2766\5\25\5\5h6\6\25\6\274\v:\7*\264\0E\3\31\7\3\25\5\270\0K*\31\7\265\0E"..., 1810) = 1810 30059 lseek(4, 44087513, SEEK_SET) = 44087513 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B\264\371\205\266\n\t\0\0\n\t\0\0#\0\0\0", 30) = 30 30059 lseek(4, 44087578, SEEK_SET) = 44087578 30059 read(4, "\312\376\272\276\0\0\0003\0_\1\0\3()V\1\0\4(I)V\1\0\4(Z)V\1\0\10\1\0\6\1\0\4Code\1\0\nExceptions\1\0\17LineNumberTable\1\0\nSourceFile\1\0\5close\1\0\6close0\1\0\ncloseIntFD\1\0\23duplicateForMapping\1\0\5force\1\0\6force0\1\0\4init\1\0\26java/io/FileDescriptor\1\0\23java/io/IOException\1\0\4load\1\0\4lock\1\0\5lock0\1\0\10preClose\1\0\tpreClose0\1\0\5pread\1\0\6pread0\1\0\6pwrite\1\0\7pwrite0\1\0\4read\1\0\5read0\1\0\5readv\1\0\6readv0\1\0\7release\1\0\10release0\1\0\4size\1\0\5size0\1\0\31sun/nio/ch/FileDispatcher\1\0\35sun/nio/ch/FileDispatcherImpl\1\0\17sun/nio/ch/Util\1\0\10truncate\1\0\ttruncate0\1\0\5write\1\0\6write0\1\0\6writev\1\0\7writev0\7\0\21\7\0\22\7\0$\7\0%\7\0&\1\0\33(Ljava/io/FileDescriptor;)J\1\0\33(Ljava/io/FileDescriptor;)V\1\0\34(Ljava/io/FileDescriptor;J)I\1\0\35(Ljava/io/FileDescriptor;JI)I\1\0\35(Ljava/io/FileDescriptor;JI)J\1\0\36(Ljava/io/FileDescriptor;JIJ)I\1\0\35(Ljava/io/FileDescriptor;JJ)V\1\0\34(Ljava/io/FileDescriptor;Z)I\1\0\37(Ljava/io/FileDescriptor;ZJJZ)I\1\0002(Ljava/io/FileDescriptor;)Ljava/io/FileDescriptor;\1\0000(Ljava/io/FileDescriptor;JIJLjava/lang/Object;)I\f\0\5\0\1\f\0\20\0\1\f\0\23\0\1\f\0#\0002\f\0\v\0003\f\0\27\0003\f\0(\0004\f\0\35\0005\f\0*\0005\f\0\37\0006\f\0,\0006\f\0\31\0007\f\0\33\0007\f\0!\0008\f\0\17\0009\f\0\25\0:\n\0-\0=\n"..., 2314) = 2314 30059 mprotect(0x7fb31451a000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 58724202, SEEK_SET) = 58724202 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B\360\375\373\244\35\3\0\0\35\3\0\0\37\0\0\0", 30) = 30 30059 lseek(4, 58724263, SEEK_SET) = 58724263 30059 read(4, "\312\376\272\276\0\0\0003\0&\1\0\3()V\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\nExceptions\1\0\1I\1\0\vINTERRUPTED\1\0\6LOCKED\1\0\17LineNumberTable\1\0\7NO_LOCK\1\0\vRET_EX_LOCK\1\0\nSourceFile\1\0\23duplicateForMapping\1\0\5force\1\0\23java/io/IOException\1\0\4lock\1\0\7release\1\0\4size\1\0\31sun/nio/ch/FileDispatcher\1\0\33sun/nio/ch/NativeDispatcher\1\0\10truncate\3\377\377\377\377\3\0\0\0\0\3\0\0\0\1\3\0\0\0\2\7\0\17\7\0\23\7\0\24\1\0\33(Ljava/io/FileDescriptor;)J\1\0\34(Ljava/io/FileDescriptor;J)I\1\0\35(Ljava/io/FileDescriptor;JJ)V\1\0\34(Ljava/io/FileDescriptor;Z)I\1\0\37(Ljava/io/FileDescriptor;ZJJZ)I\1\0002(Ljava/io/FileDescriptor;)Ljava/io/FileDescriptor;\f\0\2\0\1\n\0\34\0#\1\0\23FileDispatcher.java\4 \0\33\0\34\0\0\0\4\0\31\0\n\0\6\0\1\0\4\0\0\0\2\0\26\0\31\0\10\0\6\0\1\0\4\0\0\0\2\0\27\0\31\0\v\0\6\0\1\0\4\0\0\0\2\0\30\0\31\0\7\0\6\0\1\0\4\0\0\0\2\0\31\0\7\0\0\0\2\0\1\0\1\0\3\0\0\0\35\0\1\0\1\0\0\0\5*\267\0$\261\0\0\0\1\0\t\0\0\0\6\0\1\0\0\0\36\4\0\0\16\0 \0\1\0\5\0\0\0\4\0\1\0\32\4\0\0\25\0\36\0\1\0\5\0\0\0\4\0\1\0\32\4\0\0\22\0\35\0\1\0\5\0\0\0\4\0\1\0\32\4\0\0\20\0!\0\1\0\5\0\0\0\4\0\1\0\32\4\0\0\21\0\37\0\1\0\5\0\0\0\4\0\1\0\32\4\0\0\r\0\"\0\1\0\5\0\0\0\4\0\1\0\32\0\1\0\f\0\0\0\2\0%", 797) = 797 30059 lseek(4, 58723355, SEEK_SET) = 58723355 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B\200{co\20\3\0\0\20\3\0\0!\0\0\0", 30) = 30 30059 lseek(4, 58723418, SEEK_SET) = 58723418 30059 read(4, "\312\376\272\276\0\0\0003\0!\10\0\10\1\0\3()V\1\0\25(Ljava/lang/String;)V\1\0\6\1\0\4Code\1\0\nExceptions\1\0\17LineNumberTable\1\0\25Operation Unsupported\1\0\nSourceFile\1\0\5close\1\0\23java/io/IOException\1\0\20java/lang/Object\1\0\10preClose\1\0\5pread\1\0\6pwrite\1\0\4read\1\0\5readv\1\0\33sun/nio/ch/NativeDispatcher\1\0\5write\1\0\6writev\7\0\v\7\0\f\7\0\22\1\0\33(Ljava/io/FileDescriptor;)V\1\0\35(Ljava/io/FileDescriptor;JI)I\1\0\35(Ljava/io/FileDescriptor;JI)J\1\0000(Ljava/io/FileDescriptor;JIJLjava/lang/Object;)I\f\0\4\0\2\f\0\4\0\3\n\0\25\0\35\n\0\26\0\34\1\0\25NativeDispatcher.java\4 \0\27\0\26\0\0\0\0\0\t\0\0\0\4\0\2\0\1\0\5\0\0\0\35\0\1\0\1\0\0\0\5*\267\0\37\261\0\0\0\1\0\7\0\0\0\6\0\1\0\0\0#\4\0\0\20\0\31\0\1\0\6\0\0\0\4\0\1\0\25\0\0\0\16\0\33\0\2\0\5\0\0\0\"\0\3\0\10\0\0\0\n\273\0\25Y\22\1\267\0\36\277\0\0\0\1\0\7\0\0\0\6\0\1\0\0\0,\0\6\0\0\0\4\0\1\0\25\4\0\0\21\0\32\0\1\0\6\0\0\0\4\0\1\0\25\4\0\0\23\0\31\0\1\0\6\0\0\0\4\0\1\0\25\0\0\0\17\0\33\0\2\0\5\0\0\0\"\0\3\0\10\0\0\0\n\273\0\25Y\22\1\267\0\36\277\0\0\0\1\0\7\0\0\0\6\0\1\0\0\0008\0\6\0\0\0\4\0\1\0\25\4\0\0\24\0\32\0\1\0\6\0\0\0\4\0\1\0\25\4\0\0\n\0\30\0\1\0\6\0\0\0\4\0\1\0\25\0\0\0\r\0\30\0\2\0\5\0\0\0\31\0\0\0\2\0\0\0\1\261\0\0\0\1\0\7\0\0\0\6\0\1\0\0\0F\0\6\0\0\0\4\0\1\0\25\0\1\0\t\0\0\0\2\0 ", 784) = 784 30059 socketpair(PF_FILE, SOCK_STREAM, 0, [7, 8]) = 0 30059 close(8) = 0 30059 lseek(4, 29818252, SEEK_SET) = 29818252 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305Bp\215\227vH\7\0\0H\7\0\0\27\0\0\0", 30) = 30 30059 lseek(4, 29818305, SEEK_SET) = 29818305 30059 read(4, "\312\376\272\276\0\0\0003\0H\10\0\17\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\25(Ljava/lang/Object;)I\1\0&(Ljava/lang/Object;)Ljava/lang/String;\1\0\25(Ljava/lang/Object;)V\1\0\25(Ljava/lang/Object;)Z\1\0'(Ljava/lang/Object;Ljava/lang/Object;)Z\1\0008(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/String;\1\0\25(Ljava/lang/String;)V\1\0\6\1\0\4Code\1\0\17LineNumberTable\1\0'No java.util.Objects instances for you!\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\7compare\1\0\ndeepEquals\1\0\vdeepEquals0\1\0\6equals\1\0\4hash\1\0\10hashCode\1\0\30java/lang/AssertionError\1\0\36java/lang/NullPointerException\1\0\20java/lang/Object\1\0\20java/lang/String\1\0\20java/util/Arrays\1\0\24java/util/Comparator\1\0\21java/util/Objects\1\0\16requireNonNull\1\0\10toString\1\0\7valueOf\7\0\31\7\0\32\7\0\33\7\0\34\7\0\35\7\0\36\7\0\37\1\0\36(TT;)TT;\1\0000(TT;Ljava/lang/String;)TT;\1\0;(TT;TT;Ljava/util/Comparator<-TT;>;)I\1\0\26([Ljava/lang/Object;)I\1\0&(Ljava/lang/Object;)Ljava/lang/Object;\1\0'(Ljava/lang/Object;Ljava/lang/Object;)I\1\0008(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;\1"..., 1864) = 1864 30059 lseek(4, 58710449, SEEK_SET) = 58710449 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B\311\302\27M\277\21\0\0\277\21\0\0 \0\0\0", 30) = 30 30059 lseek(4, 58710511, SEEK_SET) = 58710511 30059 read(4, "\312\376\272\276\0\0\0003\0\277\10\0\10\10\0\t\10\0\32\10\0\34\10\0#\10\0A\10\0B\1\0\1\"\1\0\n\" is null!\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)V\1\0\6\1\0\4Code\1\0\nExceptions\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\nSourceFile\1\0\rStackMapTable\1\0\naccess$000\1\0\6append\1\0\fblockingLock\1\0\2ch\1\0\fcheckNotNull\1\0\6csName\1\0\6equals\1\0\nforDecoder\1\0\nforEncoder\1\0\7forName\1\0\ngetChannel\1\0\10getClass\1\0\2in\1\0\nisBlocking\1\0\27java/io/FileInputStream\1\0\30java/io/FileOutputStream\1\0\23java/io/IOException\1\0\36java/lang/NullPointerException\1\0\20java/lang/Object\1\0\32java/lang/RuntimeException\1\0\27java/lang/StringBuilder\1\0\23java/lang/Throwable\1\0\23java/nio/ByteBuffer\1\0\32java/nio/channels/Channels\1\0\34java/nio/channels/Channels$1\1\0\34java/nio/channels/Channels$2\1\0\34java/nio/channels/Channels$3\1\0002java/nio/channels/Channels$ReadableByteChannelImpl\1\0002java/nio/channels/Channels$WritableByteChannelImpl\1\0.java/nio/channels/IllegalBlockingModeException\1\0#java/nio/channels/SelectableChannel\1\0%java/nio/channels/WritableByteChannel\1\0\30java/nio/charset/Charset\1\0\37java/nio"..., 4543) = 4543 30059 lseek(4, 58709378, SEEK_SET) = 58709378 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\201~\231b\370\3\0\0\370\3\0\0\31\0\0\0", 30) = 30 30059 lseek(4, 58709433, SEEK_SET) = 58709433 30059 read(4, "\312\376\272\276\0\0\0003\0001\1\0\24()Ljava/lang/String;\1\0\4(I)V\1\0\25(Ljava/lang/Object;)Z\1\0'(Ljava/lang/Object;Ljava/lang/Object;)Z\1\0\6\1\0\4Code\1\0\17EnclosingMethod\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\7compile\1\0\6create\1\0\6equals\1\0\7hasName\1\0\20java/lang/String\1\0\21java/util/Scanner\1\0\23java/util/Scanner$1\1\0\27java/util/regex/Pattern\1\0\7pattern\1\0\21sun/misc/LRUCache\1\0\6this$0\7\0\20\7\0\21\7\0\22\7\0\23\7\0\25\1\0\23Ljava/util/Scanner;\1\0@Lsun/misc/LRUCache;\1\0\27(Ljava/util/Scanner;I)V\1\0&(Ljava/lang/Object;)Ljava/lang/Object;\1\0.(Ljava/util/regex/Pattern;Ljava/lang/String;)Z\1\0-(Ljava/lang/String;)Ljava/util/regex/Pattern;\f\0\26\0\34\f\0\5\0\2\f\0\16\0\3\f\0\24\0\1\f\0\17\0 \f\0\f\0!\f\0\r\0!\t\0\31\0\"\n\0\27\0$\n\0\31\0&\n\0\31\0(\n\0\32\0%\n\0\32\0'\n\0\33\0#\1\0\fScanner.java\0 \0\31\0\33\0\0\0\1\20\20\0\26\0\34\0\0\0\5\0\0\0\5\0\36\0\1\0\6\0\0\0#\0\2\0\3\0\0\0\v*+\265\0)*\34\267\0/\261\0\0\0\1\0\t\0\0\0\6\0\1\0\0\1\231\0\4\0\r\0!\0\1\0\6\0\0\0\35\0\1\0\2\0\0\0\5+\270\0.\260\0\0\0\1\0\t\0\0\0\6\0\1\0\0\1\233\0\4\0\17\0 \0\1\0\6\0\0\0!\0\2\0\3\0\0\0\t+\266\0-,\266\0*\254\0\0\0\1\0\t\0\0\0\6\0\1\0\0\1\236\20D\0\17\0\4\0\1\0\6\0\0\0%\0\3\0\3\0\0\0\r*+\300\0\32,\300\0\27\266\0+\254\0\0\0\1\0\t\0\0\0\6\0\1\0\0\1\231\20D\0\r\0\37\0\1\0\6\0\0\0!\0\2\0\2\0\0\0\t*+\300\0\27\266\0,\260\0\0\0\1\0\t\0\0\0\6\0\1\0\0\1\231\0\4\0\v\0\0\0\2\0000\0\7\0\0\0\4\0\30\0\0\0\n\0\0\0\2\0\35"..., 1016) = 1016 30059 lseek(4, 58708323, SEEK_SET) = 58708323 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\226\272^\356\352\3\0\0\352\3\0\0\27\0\0\0", 30) = 30 30059 lseek(4, 58708376, SEEK_SET) = 58708376 30059 read(4, "\312\376\272\276\0\0\0003\0*\1\0\3()V\1\0\4(I)V\1\0'(Ljava/lang/Object;Ljava/lang/Object;)Z\1\0\10(TN;)TV;\1\0\t(TV;TN;)Z\1\0\6\1\0\4Code\1\0\1I\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\23[Ljava/lang/Object;\1\0\4[TV;\1\0\6create\1\0\7forName\1\0\7hasName\1\0\20java/lang/Object\1\0\vmoveToFront\1\0\2oa\1\0\4size\1\0\21sun/misc/LRUCache\7\0\r\7\0\22\7\0\26\1\0<Ljava/lang/Object;\1\0\27([Ljava/lang/Object;I)V\1\0&(Ljava/lang/Object;)Ljava/lang/Object;\f\0\25\0\10\f\0\24\0\r\f\0\6\0\1\f\0\23\0\33\f\0\17\0\34\f\0\21\0\3\t\0\31\0\35\t\0\31\0\36\n\0\30\0\37\n\0\31\0 \n\0\31\0!\n\0\31\0\"\1\0\rLRUCache.java\4!\0\31\0\30\0\0\0\2\0\2\0\24\0\r\0\1\0\n\0\0\0\2\0\16\0\22\0\25\0\10\0\0\0\5\0\1\0\6\0\2\0\1\0\7\0\0\0003\0\2\0\2\0\0\0\17*\267\0%*\1\265\0$*\33\265\0#\261\0\0\0\1\0\t\0\0\0\22\0\4\0\0\0&\0\4\0#\0\t\0'\0\16\0(\4\4\0\17\0\34\0\1\0\n\0\0\0\2\0\4\4\4\0\21\0\3\0\1\0\n\0\0\0\2\0\5\0\t\0\23\0\33\0\1\0\7\0\0\0[\0\5\0\4\0\0\0\35*\0332M\33>\35\236\0\21*\35*\35\4d2S\204\3\377\247\377\361*\3,S\261\0\0\0\2\0\f\0\0\0\f\0\2\375\0\6\7\0\30\1\372\0\21\0\t\0\0\0\32\0\6\0\0\0/\0\4\0000\0\n\0001\0\22\0000\0\30\0002\0\34\0003\0\1\0\20\0\34\0\2\0\7\0\0\0\333\0\3\0\4\0\0\0q*\264\0$\307\0\24**\264\0#\275\0\30\300\0\27\265\0$\247\0009\3=\34*\264\0$\276\242\0.*\264\0$\0342N-\307\0\6\247\0\32*-+\266\0(\231\0\21\34\236\0\v*\264\0$\34\270\0&-\260\204\2\1\247\377\317*+\266\0'M*\264\0$*\264\0$\276\4d,S*\264\0$*\264\0$\276\4d\270\0&,\260\0\0\0\2\0\f\0\0\0\24\0\6\30\374\0\1\1\374\0\26\7\0\30\24\372\0\1\372\0\5\0\t\0\0\0>\0\17\0\0\0006\0\7\0007\0\30\0009\0#\0:\0*\0;\0.\0<\0001\0=\0:\0>\0>\0?\0F\0@\0H\0009\0N\0F\0T\0G\0a\0H\0o\0I\0\n\0\0\0\2\0\4\0\2\0\v\0\0\0\2\0)\0\n\0\0\0\2"..., 1002) = 1002 30059 mprotect(0x7fb31451b000, 8192, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 58699294, SEEK_SET) = 58699294 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\272:\261W\n#\0\0\n#\0\0\35\0\0\0", 30) = 30 30059 lseek(4, 58699353, SEEK_SET) = 58699353 30059 read(4, "\312\376\272\276\0\0\0003\1J\10\0\32\10\0\33\10\0)\10\0+\10\0000\10\0001\10\0005\10\0006\10\0007\10\0008\10\0009\10\0;\10\0<\10\0A\10\0B\10\0H\10\0M\10\0_\10\0|\10\0}\10\0\210\10\0\215\10\0\216\10\0\230\10\0\231\1\0\v lastmatch=\1\0\10 region=\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4(I)C\1\0\4(I)I\1\0\25(I)Ljava/lang/String;\1\0\4(I)Z\1\0\5(II)I\1\0\5(II)Z\1\0\25(Ljava/lang/Object;)Z\1\0&(Ljava/lang/String;)Ljava/lang/String;\1\0\25(Ljava/lang/String;)V\1\0\1,\1\0\6\1\0\1>\1\0\4Code\1\0\rConstantValue\1\0\tENDANCHOR\1\0\1I\1\0\27Illegal group reference\1\0\23Illegal start index\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\10NOANCHOR\1\0\tNo group \1\0\24No group with name <\1\0\24No group with name {\1\0\22No match available\1\0\16No match found\1\0\4Node\1\0\17Null group name\1\0\26Pattern cannot be null\1\0\nSourceFile\1\0\rStackMapTable\1\0\1Z\1\0\2[I\1\0\t[pattern=\1\0\1]\1\0\nacceptMode\1\0\17anchoringBounds\1\0\6append\1\0\21appendReplacement\1\0\nappendTail\1\0\26capturing group name {\1\0\23capturingGroupCount\1\0\6charAt\1\0\5clone\1\0\vcontainsKey\1\0\3end\1\0\4find\1\0\5first\1\0\4from\1\0\3get\1\0\16getSubSequence\1\0\rgetTextLength\1\0\5group\1\0\ngroupCount\1\0\6groups\1\0\22hasAnchoringBounds\1\0\24hasTransparentBounds\1\0\6hitEnd\1\0\7indexOf\1\0\10intValue\1\0\7isDigit\1\0\7isLower\1\0\7isUppe"..., 8970) = 8970 30059 mprotect(0x7fb31451d000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 58698961, SEEK_SET) = 58698961 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\16\357/.\16\1\0\0\16\1\0\0!\0\0\0", 30) = 30 30059 lseek(4, 58699024, SEEK_SET) = 58699024 30059 read(4, "\312\376\272\276\0\0\0003\0\17\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\4(I)I\1\0\25(I)Ljava/lang/String;\1\0\nSourceFile\1\0\3end\1\0\5group\1\0\ngroupCount\1\0\20java/lang/Object\1\0\33java/util/regex/MatchResult\1\0\5start\7\0\t\7\0\n\1\0\20MatchResult.java\6\1\0\r\0\f\0\0\0\0\0\7\4\1\0\v\0\1\0\0\4\1\0\v\0\3\0\0\4\1\0\6\0\1\0\0\4\1\0\6\0\3\0\0\4\1\0\7\0\2\0\0\4\1\0\7\0\4\0\0\4\1\0\10\0\1\0\0\0\1\0\5\0\0\0\2\0\16", 270) = 270 30059 lseek(4, 29808693, SEEK_SET) = 29808693 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\263a\223,\365\5\0\0\365\5\0\0\37\0\0\0", 30) = 30 30059 lseek(4, 29808754, SEEK_SET) = 29808754 30059 read(4, "\312\376\272\276\0\0\0003\0O\10\0\20\10\0\21\10\0\37\10\0 \10\0!\10\0\"\10\0#\10\0$\10\0%\10\0&\1\0\7$VALUES\1\0\3()V\1\0\10\1\0\6\1\0\4Code\1\0\7DISPLAY\1\0\6FORMAT\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\22Ljava/lang/String;\1\0\tSignature\1\0\nSourceFile\1\0\34[Ljava/util/Locale$Category;\1\0\5clone\1\0\ncountryKey\1\0\16java/lang/Enum\1\0\20java/util/Locale\1\0\31java/util/Locale$Category\1\0\vlanguageKey\1\0\tscriptKey\1\0\24user.country.display\1\0\23user.country.format\1\0\25user.language.display\1\0\24user.language.format\1\0\23user.script.display\1\0\22user.script.format\1\0\24user.variant.display\1\0\23user.variant.format\1\0\7valueOf\1\0\6values\1\0\nvariantKey\7\0\27\7\0\32\7\0\33\7\0\34\1\0\33Ljava/util/Locale$Category;\1\0-Ljava/lang/Enum;\1\0\24()Ljava/lang/Object;\1\0\26(Ljava/lang/String;I)V\1\0\36()[Ljava/util/Locale$Category;\1\0/(Ljava/lang/String;)Ljava/util/Locale$Category;\1\0005(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Enum;\1\0K(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V\1\0^(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V\f\0\31\0\24\f\0\35\0\24\f\0\36"..., 1525) = 1525 30059 mprotect(0x7fb31451e000, 8192, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 29802907, SEEK_SET) = 29802907 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\r%\264m\207\2\0\0\207\2\0\0\30\0\0\0", 30) = 30 30059 lseek(4, 29802961, SEEK_SET) = 29802961 30059 read(4, "\312\376\272\276\0\0\0003\0(\1\0$$SwitchMap$java$util$Locale$Category\1\0\3()I\1\0\3()V\1\0\10\1\0\4Code\1\0\7DISPLAY\1\0\17EnclosingMethod\1\0\6FORMAT\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\nSourceFile\1\0\rStackMapTable\1\0\2[I\1\0\32java/lang/NoSuchFieldError\1\0\20java/lang/Object\1\0\20java/util/Locale\1\0\22java/util/Locale$1\1\0\31java/util/Locale$Category\1\0\7ordinal\1\0\6values\7\0\16\7\0\17\7\0\20\7\0\21\7\0\22\1\0\33Ljava/util/Locale$Category;\1\0\36()[Ljava/util/Locale$Category;\f\0\1\0\r\f\0\6\0\32\f\0\10\0\32\f\0\23\0\2\f\0\24\0\33\t\0\30\0\34\t\0\31\0\35\t\0\31\0\36\n\0\31\0\37\n\0\31\0 \1\0\10Category\1\0\vLocale.java\20 \0\30\0\26\0\0\0\1\20\30\0\1\0\r\0\0\0\1\0\10\0\4\0\3\0\1\0\5\0\0\0b\0\3\0\1\0\0\0(\270\0%\276\274\n\263\0!\262\0!\262\0\"\266\0$\4O\247\0\4K\262\0!\262\0#\266\0$\5O\247\0\4K\261\0\2\0\t\0\24\0\27\0\25\0\30\0#\0&\0\25\0\2\0\f\0\0\0\f\0\4W\7\0\25\0M\7\0\25\0\0\n\0\0\0\6\0\1\0\0\2\376\0\3\0\v\0\0\0\2\0'\0\7\0\0\0\4\0\27\0\0\0\t\0\0\0\22\0\2\0\30\0\27\0\0\20\10\0\31\0\27\0&@\31", 647) = 647 30059 lseek(4, 58690182, SEEK_SET) = 58690182 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B[\372\250\0\21\"\0\0\21\"\0\0\34\0\0\0", 30) = 30 30059 lseek(4, 58690240, SEEK_SET) = 58690240 30059 read(4, "\312\376\272\276\0\0\0003\1V\10\0\6\10\0\31\10\0\34\10\0(\10\0-\1\0\1\"\1\0\3()D\1\0\3()I\1\0\3()J\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\25(D)Ljava/lang/String;\1\0\26(I)Ljava/lang/Integer;\1\0\4(I)V\1\0\5(II)I\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)V\1\0005(Ljava/lang/String;Ljava/text/DecimalFormatSymbols;)V\1\0\4(Z)V\1\0\10\1\0\6\1\0\1B\1\0\rCURRENCYSTYLE\1\0&Cannot format given Object as a Number\1\0\4Code\1\0\rConstantValue\1\0\31Digit count range invalid\1\0\nExceptions\1\0\6FORMAT\1\0\16FRACTION_FIELD\1\0\1I\1\0\10INSTANCE\1\0\fINTEGERSTYLE\1\0\rINTEGER_FIELD\1\0\fInnerClasses\1\0\1J\1\0\17LineNumberTable\1\0\vNUMBERSTYLE\1\0\16NumberPatterns\1\0\fPERCENTSTYLE\1\0\17SCIENTIFICSTYLE\1\0\nSourceFile\1\0\rStackMapTable\1\0\25Unparseable number: \"\1\0\1Z\1\0\23[Ljava/lang/String;\1\0\naccess$000\1\0&adjustForCurrencyDefaultFractionDigits\1\0\6append\1\0\tbitLength\1\0\20cachedLocaleData\1\0\5clone\1\0\24currentSerialVersion\1\0\21defaultReadObject\1\0\22defaultWriteObject\1\0\vdoubleValue\1\0\6equals\1\0\nerrorIndex\1\0\6format\1\0\3get\1\0\23getAvailableLocales\1\0\10getClass\1\0\vgetCurrency\1\0\23getCurrencyInstance\1\0\ngetDefault\1\0\vgetInstance\1\0\22getIntegerInstance\1\0\22getLocali"..., 8721) = 8721 30059 mprotect(0x7fb314520000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 58686895, SEEK_SET) = 58686895 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B\237\353.\353\236\1\0\0\236\1\0\0(\0\0\0", 30) = 30 30059 lseek(4, 58686965, SEEK_SET) = 58686965 30059 read(4, "\312\376\272\276\0\0\0003\0\22\1\0\3()V\1\0\6\1\0\4Code\1\0\17LineNumberTable\1\0\nSourceFile\1\0\23getCurrencyInstance\1\0\22getIntegerInstance\1\0\21getNumberInstance\1\0\22getPercentInstance\1\0\"java/text/spi/NumberFormatProvider\1\0#java/util/spi/LocaleServiceProvider\7\0\n\7\0\v\1\0,(Ljava/util/Locale;)Ljava/text/NumberFormat;\f\0\2\0\1\n\0\r\0\17\1\0\31NumberFormatProvider.java\4!\0\f\0\r\0\0\0\0\0\5\0\4\0\2\0\1\0\1\0\3\0\0\0!\0\1\0\1\0\0\0\5*\267\0\20\261\0\0\0\1\0\4\0\0\0\n\0\2\0\0\0-\0\4\0.\4\1\0\6\0\16\0\0\4\1\0\7\0\16\0\0\4\1\0\10\0\16\0\0\4\1\0\t\0\16\0\0\0\1\0\5\0\0\0\2\0\21", 414) = 414 30059 lseek(4, 58686536, SEEK_SET) = 58686536 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305BwM\344^ \1\0\0 \1\0\0)\0\0\0", 30) = 30 30059 lseek(4, 58686607, SEEK_SET) = 58686607 30059 read(4, "\312\376\272\276\0\0\0003\0\17\1\0\3()V\1\0\6\1\0\4Code\1\0\17LineNumberTable\1\0\nSourceFile\1\0\23getAvailableLocales\1\0\20java/lang/Object\1\0#java/util/spi/LocaleServiceProvider\7\0\7\7\0\10\1\0\25()[Ljava/util/Locale;\f\0\2\0\1\n\0\t\0\f\1\0\32LocaleServiceProvider.java\4!\0\n\0\t\0\0\0\0\0\2\0\4\0\2\0\1\0\1\0\3\0\0\0!\0\1\0\1\0\0\0\5*\267\0\r\261\0\0\0\1\0\4\0\0\0\n\0\2\0\0\0z\0\4\0{\4\1\0\6\0\v\0\0\0\1\0\5\0\0\0\2\0\16", 288) = 288 30059 lseek(4, 58676768, SEEK_SET) = 58676768 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\t\263QZ\342%\0\0\342%\0\0(\0\0\0", 30) = 30 30059 lseek(4, 58676838, SEEK_SET) = 58676838 30059 read(4, "\312\376\272\276\0\0\0003\1Y\10\0\v\10\0\f\10\0\24\10\0\27\10\0\30\10\0\33\10\0!\10\0P\10\0p\10\0z\1\0\0\1\0\t locale: \1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4(I)V\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)V\1\0005) has non-empty extensions, but has illformed fields.\1\0\10\1\0\6\1\0pA locale sensitive service provider returned null for a localized objects, which should not happen. provider: \1\0\tA locale(\1\0\4Code\1\0\fInnerClasses\1\0\2JP\1\0\17LineNumberTable\1\0\22Ljava/util/Locale;\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\2TH\1\0\23[Ljava/lang/Object;\1\0\23[Ljava/util/Locale;\1\0\naccess$000\1\0\naccess$100\1\0\naccess$200\1\0\naccess$300\1\0\3add\1\0\6addAll\1\0\23allAvailableLocales\1\0\6append\1\0\23availableJRELocales\1\0\20availableLocales\1\0\5build\1\0\17clearExtensions\1\0\5clone\1\0\6config\1\0\10contains\1\0\vcontainsKey\1\0\fdoPrivileged\1\0\6equals\1\0\ffindProvider\1\0\3get\1\0\26getAllAvailableLocales\1\0\23getAvailableLocales\1\0\23getCandidateLocales\1\0\ngetCountry\1\0\20getExtensionKeys\1\0\rgetJRELocales\1\0\vgetLanguage\1\0\tgetLocale\1\0\22getLocalizedObject\1\0\26getLocalizedObjectImpl\1\0\tgetLogger\1\0\17getLookupLocale\1\0\20getLookupLocales"..., 9698) = 9698 30059 mprotect(0x7fb314521000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 50985408, SEEK_SET) = 50985408 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\371\256\2=\263\27\0\0\263\27\0\0&\0\0\0", 30) = 30 30059 lseek(4, 50985476, SEEK_SET) = 50985476 30059 read(4, "\312\376\272\276\0\0\0003\1\4\10\0\5\10\0\21\10\0_\10\0`\1\0\0\1\0\23$assertionsDisabled\1\0\3()C\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4(C)C\1\0\4(C)Z\1\0\25(Ljava/lang/Object;)Z\1\0&(Ljava/lang/String;)Ljava/lang/String;\1\0\25(Ljava/lang/String;)Z\1\0\1-\1\0\10\1\0\6\1\0\21CALENDAR_JAPANESE\1\0\vCA_JAPANESE\1\0\4Code\1\0\5Entry\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\22Ljava/lang/String;\1\0\vNUMBER_THAI\1\0\7NU_THAI\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\1Z\1\0\3add\1\0\6append\1\0\tcharValue\1\0\26desiredAssertionStatus\1\0\10emptyMap\1\0\10emptySet\1\0\10entrySet\1\0\6equals\1\0\fextensionMap\1\0\3get\1\0\fgetExtension\1\0\21getExtensionValue\1\0\5getID\1\0\6getKey\1\0\7getKeys\1\0\32getUnicodeLocaleAttributes\1\0\24getUnicodeLocaleKeys\1\0\24getUnicodeLocaleType\1\0\10getValue\1\0\7hasNext\1\0\10hashCode\1\0\2id\1\0\7isEmpty\1\0\30isExtensionSingletonChar\1\0\5isKey\1\0\26isPrivateusePrefixChar\1\0\nisValidKey\1\0\27isValidUnicodeLocaleKey\1\0\10iterator\1\0\30java/lang/AssertionError\1\0\23java/lang/Character\1\0\17java/lang/Class\1\0\20java/lang/Object\1\0\20java/lang/String\1\0\27java/lang/StringBuilder\1\0\25java/util/Collections\1\0\22java/util/Iterator\1\0\rjava/util/Map\1\0\23jav"..., 6067) = 6067 30059 lseek(4, 57051983, SEEK_SET) = 57051983 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\17\301$\334\356\1\0\0\356\1\0\0(\0\0\0", 30) = 30 30059 lseek(4, 57052053, SEEK_SET) = 57052053 30059 read(4, "\312\376\272\276\0\0\0003\0\32\1\0\3()V\1\0\4(C)V\1\0\10\1\0\6\1\0\4Code\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\nSourceFile\1\0\rStackMapTable\1\0\26[Ljava/lang/Character;\1\0\5cache\1\0\23java/lang/Character\1\0\"java/lang/Character$CharacterCache\1\0\20java/lang/Object\7\0\f\7\0\r\7\0\16\f\0\v\0\n\f\0\4\0\1\f\0\4\0\2\t\0\20\0\22\n\0\17\0\24\n\0\21\0\23\1\0\16Character.java\1\0\16CharacterCache\0 \0\20\0\21\0\0\0\1\0\30\0\v\0\n\0\0\0\2\0\2\0\4\0\1\0\1\0\5\0\0\0\35\0\1\0\1\0\0\0\5*\267\0\27\261\0\0\0\1\0\7\0\0\0\6\0\1\0\0\21\6\0\10\0\3\0\1\0\1\0\5\0\0\0_\0\5\0\1\0\0\0(\21\0\200\275\0\17\263\0\25\3;\32\262\0\25\276\242\0\27\262\0\25\32\273\0\17Y\32\222\267\0\26S\204\0\1\247\377\347\261\0\0\0\2\0\t\0\0\0\t\0\2\374\0\v\1\372\0\33\0\7\0\0\0\26\0\5\0\0\21\10\0\t\21\v\0\23\21\f\0!\21\v\0'\21\r\0\2\0\10\0\0\0\2\0\30\0\6\0\0\0\n\0\1\0\20\0\17\0\31\0\n", 494) = 494 30059 lseek(4, 51001091, SEEK_SET) = 51001091 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\310\351U\262\16\16\0\0\16\16\0\0,\0\0\0", 30) = 30 30059 lseek(4, 51001165, SEEK_SET) = 51001165 30059 read(4, "\312\376\272\276\0\0\0003\0\265\10\0\23\10\0&\10\0009\10\0G\10\0N\1\0\3()C\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4(C)C\1\0\4(C)V\1\0\4(C)Z\1\0\25(I)Ljava/lang/String;\1\0&(Ljava/lang/String;)Ljava/lang/String;\1\0\25(Ljava/lang/String;)V\1\0\25(Ljava/lang/String;)Z\1\0'(Ljava/lang/String;Ljava/lang/String;)V\1\0\1-\1\0\10\1\0\6\1\0\1C\1\0\vCA_JAPANESE\1\0\4Code\1\0\rConstantValue\1\0\tEMPTY_MAP\1\0\tEMPTY_SET\1\0\5Entry\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\7NU_THAI\1\0\tSINGLETON\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\6append\1\0\nattributes\1\0\2ca\1\0\10emptyMap\1\0\10emptySet\1\0\10entrySet\1\0\3get\1\0\5getID\1\0\6getKey\1\0\32getUnicodeLocaleAttributes\1\0\24getUnicodeLocaleKeys\1\0\24getUnicodeLocaleType\1\0\10getValue\1\0\7hasNext\1\0\24isAlphaNumericString\1\0\visAttribute\1\0\7isEmpty\1\0\5isKey\1\0\17isSingletonChar\1\0\fisTypeSubtag\1\0\10iterator\1\0\10japanese\1\0\20java/lang/String\1\0\27java/lang/StringBuilder\1\0\25java/util/Collections\1\0\22java/util/Iterator\1\0\rjava/util/Map\1\0\23java/util/Map$Entry\1\0\rjava/util/Set\1\0\23java/util/SortedMap\1\0\23java/util/SortedSet\1\0\6keySet\1\0\10keywords\1\0\6length\1\0\4next\1\0\2nu\1\0\10setValue\1\0\fsingletonMap\1\0\tsubstring\1\0\31"..., 3598) = 3598 30059 lseek(4, 50958577, SEEK_SET) = 50958577 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\251:\217\300\270\3\0\0\270\3\0\0\37\0\0\0", 30) = 30 30059 lseek(4, 50958638, SEEK_SET) = 50958638 30059 read(4, "\312\376\272\276\0\0\0003\0004\10\0\7\1\0\3()C\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\4(C)V\1\0\25(Ljava/lang/String;)V\1\0\1-\1\0\6\1\0\1C\1\0\4Code\1\0\17LineNumberTable\1\0\22Ljava/lang/String;\1\0\nSourceFile\1\0\6append\1\0\5getID\1\0\6getKey\1\0\10getValue\1\0\2id\1\0\20java/lang/Object\1\0\27java/lang/StringBuilder\1\0\3key\1\0\10setValue\1\0\31sun/util/locale/Extension\1\0\10toString\1\0\5value\7\0\23\7\0\24\7\0\27\1\0\26(CLjava/lang/String;)V\1\0\34(C)Ljava/lang/StringBuilder;\1\0-(Ljava/lang/String;)Ljava/lang/StringBuilder;\f\0\25\0\t\f\0\22\0\f\f\0\31\0\f\f\0\10\0\4\f\0\17\0\3\f\0\30\0\3\f\0\26\0\6\f\0\16\0\36\f\0\16\0\37\t\0\34\0 \t\0\34\0!\t\0\34\0\"\n\0\32\0#\n\0\33\0#\n\0\33\0%\n\0\33\0'\n\0\33\0(\n\0\34\0$\n\0\34\0&\1\0\16Extension.java\0 \0\34\0\32\0\0\0\3\0\22\0\25\0\t\0\0\0\2\0\31\0\f\0\0\0\2\0\22\0\f\0\0\0\7\0\4\0\10\0\5\0\1\0\n\0\0\0*\0\2\0\2\0\0\0\n*\267\0,*\33\265\0)\261\0\0\0\1\0\v\0\0\0\16\0\3\0\0\0'\0\4\0(\0\t\0)\0\0\0\10\0\35\0\1\0\n\0\0\0003\0\2\0\3\0\0\0\17*\267\0,*\33\265\0)*,\266\0002\261\0\0\0\1\0\v\0\0\0\22\0\4\0\0\0+\0\4\0,\0\t\0-\0\16\0.\0\4\0\26\0\6\0\1\0\n\0\0\0D\0\3\0\2\0\0\0$*+\265\0+*\273\0\33Y\267\0-*\264\0)\266\0/\22\1\266\0000+\266\0000\266\0.\265\0*\261\0\0\0\1\0\v\0\0\0\16\0\3\0\0\0001\0\5\0002\0#\0003\0\1\0\20\0\2\0\1\0\n\0\0\0\35\0\1\0\1\0\0\0\5*\264\0)\254\0\0\0\1\0\v\0\0\0\6\0\1\0\0\0006\0\1\0\21\0\3\0\1\0\n\0\0\0\35\0\1\0\1\0\0\0\5*\264\0+\260\0\0\0\1\0\v\0\0\0\6\0\1\0\0\0:\0\1\0\17\0\3\0\1\0\n\0\0\0\35\0\1\0\1\0\0\0\5*\264\0*\260\0\0\0\1\0\v\0\0\0\6\0\1\0\0\0>\0\1\0\30\0\3\0\1\0\n\0\0\0\35\0\1\0\1\0\0\0\5*\266\0001\260\0\0\0\1\0\v\0\0\0\6\0\1\0\0\0B\0\1\0\r\0\0\0\2\0003", 952) = 952 30059 lseek(4, 29613134, SEEK_SET) = 29613134 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\326\33\313\2604\10\0\0004\10\0\0(\0\0\0", 30) = 30 30059 lseek(4, 29613204, SEEK_SET) = 29613204 30059 read(4, "\312\376\272\276\0\0\0003\0W\1\0\3()I\1\0\3()V\1\0\3()Z\1\0\25(Ljava/lang/Object;)Z\1\0'(Ljava/lang/Object;Ljava/lang/Object;)Z\1\0\t(TK;TV;)V\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\5Entry\1\0\fInnerClasses\1\0\1J\1\0\17LineNumberTable\1\0\22Ljava/lang/Object;\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\3TK;\1\0\3TV;\1\0\vcontainsKey\1\0\rcontainsValue\1\0\10entrySet\1\0\2eq\1\0\3get\1\0\7isEmpty\1\0\24java/io/Serializable\1\0\20java/lang/Object\1\0\25java/util/AbstractMap\1\0*java/util/AbstractMap$SimpleImmutableEntry\1\0\25java/util/Collections\1\0\"java/util/Collections$SingletonMap\1\0\rjava/util/Map\1\0\23java/util/Map$Entry\1\0\1k\1\0\6keySet\1\0\20serialVersionUID\1\0\tsingleton\1\0\4size\1\0\1v\1\0\6values\5\237#\t\221q\177k\221\7\0\32\7\0\33\7\0\34\7\0\35\7\0\36\7\0\37\7\0 \7\0!\1\0\26Ljava/util/Collection;\1\0\33Ljava/util/Collection;\1\0\17Ljava/util/Set;\1\0\24Ljava/util/Set;\1\0.Ljava/util/Set;>;\1\0_Ljava/util/AbstractMap;Ljava/io/Serializable;\1\0\27(Ljava/lang/Object;)TV;\1\0\30()Ljava/util/Collection;\1\0\35()Ljava/util/Collection;\1\0\21()Ljava/util/Set;\1\0\26()Ljava/util/Set;\1"..., 2100) = 2100 30059 lseek(4, 59684802, SEEK_SET) = 59684802 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\361\336\345\210\211\3\0\0\211\3\0\0\35\0\0\0", 30) = 30 30059 lseek(4, 59684861, SEEK_SET) = 59684861 30059 read(4, "\312\376\272\276\0\0\0003\0000\4?@\0\0\1\0\3()I\1\0\3()V\1\0\4(I)V\1\0\5(IF)V\1\0\6(IFZ)V\1\0\5(II)I\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\1J\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\6addAll\1\0\24java/io/Serializable\1\0\23java/lang/Cloneable\1\0\16java/lang/Math\1\0\24java/util/Collection\1\0\21java/util/HashSet\1\0\27java/util/LinkedHashSet\1\0\rjava/util/Set\1\0\3max\1\0\20serialVersionUID\1\0\4size\5\330l\327Z\225\335*\36\7\0\20\7\0\21\7\0\22\7\0\23\7\0\24\7\0\25\7\0\26\1\0mLjava/util/HashSet;Ljava/util/Set;Ljava/lang/Cloneable;Ljava/io/Serializable;\1\0\31(Ljava/util/Collection;)V\1\0\31(Ljava/util/Collection;)Z\1\0\37(Ljava/util/Collection<+TE;>;)V\f\0\31\0\2\f\0\10\0\6\f\0\27\0\7\f\0\17\0%\n\0\36\0)\n\0 \0(\n\0!\0*\v\0\37\0'\1\0\22LinkedHashSet.java\0!\0!\0 \0\3\0\"\0\35\0\34\0\1\0\32\0\30\0\v\0\1\0\n\0\0\0\2\0\32\0\4\0\1\0\10\0\5\0\1\0\t\0\0\0$\0\4\0\3\0\0\0\10*\33$\4\267\0,\261\0\0\0\1\0\f\0\0\0\n\0\2\0\0\0\206\0\7\0\207\0\1\0\10\0\4\0\1\0\t\0\0\0%\0\4\0\2\0\0\0\t*\33\22\1\4\267\0,\261\0\0\0\1\0\f\0\0\0\n\0\2\0\0\0\222\0\10\0\223\0\1\0\10\0\3\0\1\0\t\0\0\0&\0\4\0\1\0\0\0\n*\20\20\22\1\4\267\0,\261\0\0\0\1\0\f\0\0\0\n\0\2\0\0\0\232\0\t\0\233\0\1\0\10\0$\0\2\0\t\0\0\0;\0\4\0\2\0\0\0\33*\5+\271\0.\1\0h\20\v\270\0+\22\1\4\267\0,*+\266\0-W\261\0\0\0\1\0\f\0\0\0\16\0\3\0\0\0\250\0\24\0\251\0\32\0\252\0\r\0\0\0\2\0&\0\2\0\16\0\0\0\2\0/\0\r\0\0\0\2\0#", 905) = 905 30059 mprotect(0x7fb314522000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 58675449, SEEK_SET) = 58675449 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\366X\346\226\337\4\0\0\337\4\0\0*\0\0\0", 30) = 30 30059 lseek(4, 58675521, SEEK_SET) = 58675521 30059 read(4, "\312\376\272\276\0\0\0003\0B\1\0\3()V\1\0\3()Z\1\0\25(Ljava/lang/Object;)Z\1\0\6\1\0\4Code\1\0\17EnclosingMethod\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\21Ljava/lang/Class;\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\naccess$000\1\0\3add\1\0\7hasNext\1\0\10iterator\1\0\20java/lang/Object\1\0'java/security/PrivilegedExceptionAction\1\0\22java/util/Iterator\1\0\27java/util/ServiceLoader\1\0\rjava/util/Set\1\0#java/util/spi/LocaleServiceProvider\1\0\rloadInstalled\1\0\4next\1\0\3run\1\0\"sun/util/LocaleServiceProviderPool\1\0$sun/util/LocaleServiceProviderPool$1\1\0\6this$0\1\0\5val$c\7\0\21\7\0\22\7\0\23\7\0\24\7\0\25\7\0\26\7\0\32\7\0\33\1\0$Lsun/util/LocaleServiceProviderPool;\1\0OLjava/lang/Object;Ljava/security/PrivilegedExceptionAction;\1\0\24(Ljava/lang/Class;)V\1\0\24()Ljava/lang/Object;\1\0\26()Ljava/util/Iterator;\1\0008(Lsun/util/LocaleServiceProviderPool;Ljava/lang/Class;)V\1\0,(Ljava/lang/Class;)Ljava/util/ServiceLoader;\1\0005(Lsun/util/LocaleServiceProviderPool;)Ljava/util/Set;\f\0\35\0\t\f\0\34\0&\f\0\4\0\1\f\0\17\0\2\f\0\4\0(\f\0\30\0)\f\0\16\0\3\f\0\20\0*\f\0\27\0,\f\0\r\0-\t\0%\0.\t\0%\0/\n\0\36\0000\n\0!\0005\n\0!\0006\n\0$\0007\v\0 \0001\v\0 \0003\v\0\"\0004\1\0\36LocaleServiceProviderPool."..., 1247) = 1247 30059 lseek(4, 58669418, SEEK_SET) = 58669418 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305BI\300\25\363T\27\0\0T\27\0\0\35\0\0\0", 30) = 30 30059 lseek(4, 58669477, SEEK_SET) = 58669477 30059 read(4, "\312\376\272\276\0\0\0003\0\373\10\0\22\10\0\23\10\0\27\10\0\30\10\0\32\10\0\33\10\0%\10\0=\10\0b\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\4(I)I\1\0\4(I)Z\1\0\26(II)Ljava/lang/String;\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)V\1\0\1:\1\0\2: \1\0\6\1\0\4Code\1\0\rConstantValue\1\0 Error closing configuration file\1\0 Error reading configuration file\1\0\nExceptions\1\0!Illegal configuration-file syntax\1\0\35Illegal provider-class name: \1\0\fInnerClasses\1\0\17LineNumberTable\1\0\21Ljava/lang/Class;\1\0\22Ljava/lang/String;\1\0\22META-INF/services/\1\0\6PREFIX\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\1]\1\0\naccess$100\1\0\naccess$200\1\0\naccess$300\1\0\naccess$400\1\0\naccess$500\1\0\3add\1\0\6append\1\0\tcharCount\1\0\5clear\1\0\5close\1\0\vcodePointAt\1\0\10contains\1\0\vcontainsKey\1\0\rcurrentThread\1\0\4fail\1\0\25getContextClassLoader\1\0\7getName\1\0\tgetParent\1\0\24getSystemClassLoader\1\0\7indexOf\1\0\24isJavaIdentifierPart\1\0\25isJavaIdentifierStart\1\0\10iterator\1\0\30java.util.ServiceLoader[\1\0\26java/io/BufferedReader\1\0\23java/io/IOException\1\0\23java/io/InputStream\1\0\31java/io/InputStreamReader\1\0\23java/lang/Character\1\0\17java/lang/Class\1\0\25java/lang/ClassLoader\1\0\22ja"..., 5972) = 5972 30059 lseek(4, 58665838, SEEK_SET) = 58665838 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305BX\367Y\345\264\r\0\0\264\r\0\0*\0\0\0", 30) = 30 30059 lseek(4, 58665910, SEEK_SET) = 58665910 30059 read(4, "\312\376\272\276\0\0\0003\0\253\10\0\7\10\0\10\10\0\t\10\0\20\10\0\25\10\0\26\1\0\34 could not be instantiated: \1\0\16 not a subtype\1\0\n not found\1\0\24()Ljava/lang/String;\1\0\5()TS;\1\0\3()V\1\0\3()Z\1\0\6\1\0\4Code\1\0\"Error locating configuration files\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\21Ljava/lang/Class;\1\0\22Ljava/lang/String;\1\0\22META-INF/services/\1\0\tProvider \1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\naccess$100\1\0\naccess$200\1\0\naccess$300\1\0\naccess$400\1\0\6append\1\0\4cast\1\0\7configs\1\0\7forName\1\0\7getName\1\0\fgetResources\1\0\22getSystemResources\1\0\17hasMoreElements\1\0\7hasNext\1\0\20isAssignableFrom\1\0\23java/io/IOException\1\0\17java/lang/Class\1\0\25java/lang/ClassLoader\1\0 java/lang/ClassNotFoundException\1\0\17java/lang/Error\1\0\20java/lang/Object\1\0\20java/lang/String\1\0\27java/lang/StringBuilder\1\0\23java/lang/Throwable\1\0'java/lang/UnsupportedOperationException\1\0\fjava/net/URL\1\0\25java/util/Enumeration\1\0\22java/util/Iterator\1\0\27java/util/LinkedHashMap\1\0 java/util/NoSuchElementException\1\0\27java/util/ServiceLoader\1\0\31java/util/ServiceLoader$1\1\0$java/util/ServiceLoader$LazyIterator\1\0\6loader\1\0\vnewInstance\1\0\4n"..., 3508) = 3508 30059 lseek(4, 58664297, SEEK_SET) = 58664297 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\352\330|g\310\5\0\0\310\5\0\0\37\0\0\0", 30) = 30 30059 lseek(4, 58664358, SEEK_SET) = 58664358 30059 read(4, "\312\376\272\276\0\0\0003\0N\1\0\5()TS;\1\0\3()V\1\0\3()Z\1\0\6\1\0\4Code\1\0\17EnclosingMethod\1\0\5Entry\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\naccess$400\1\0\naccess$500\1\0\10entrySet\1\0\10getValue\1\0\7hasNext\1\0\10iterator\1\0\20java/lang/Object\1\0'java/lang/UnsupportedOperationException\1\0\22java/util/Iterator\1\0\27java/util/LinkedHashMap\1\0\rjava/util/Map\1\0\23java/util/Map$Entry\1\0\27java/util/ServiceLoader\1\0\31java/util/ServiceLoader$1\1\0$java/util/ServiceLoader$LazyIterator\1\0\rjava/util/Set\1\0\16knownProviders\1\0\4next\1\0\6remove\1\0\6this$0\7\0\23\7\0\24\7\0\25\7\0\26\7\0\27\7\0\30\7\0\31\7\0\32\7\0\33\7\0\34\1\0\24Ljava/util/Iterator;\1\0\31Ljava/util/ServiceLoader;\1\0+Ljava/lang/Object;Ljava/util/Iterator;\1\0BLjava/util/Iterator;>;\1\0\24()Ljava/lang/Object;\1\0\26()Ljava/util/Iterator;\1\0\34(Ljava/util/ServiceLoader;)V\1\0\21()Ljava/util/Set;\1\0004(Ljava/util/ServiceLoader;)Ljava/util/LinkedHashMap;\1\0A(Ljava/util/ServiceLoader;)Ljava/util/ServiceLoader$LazyIterator;\f\0\35\0+\f\0 \0,\f\0\4\0\2\f\0\21\0\3\f\0\20\0/\f\0\36\0/\f\0\22\0000\f\0\17\0002\f\0\r\0003\f\0\16\0004\t\0(\0005\t\0(\0006\n\0!\0007\n\0\"\0007"..., 1480) = 1480 30059 lseek(4, 43228885, SEEK_SET) = 43228885 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\25\317\251\313\201\3\0\0\201\3\0\0+\0\0\0", 30) = 30 30059 lseek(4, 43228958, SEEK_SET) = 43228958 30059 read(4, "\312\376\272\276\0\0\0003\0001\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\10\1\0\6\1\0\4Code\1\0\fInnerClasses\1\0\rLauncher.java\1\0\17LineNumberTable\1\0\nSourceFile\1\0\rStackMapTable\1\0\17[Ljava/net/URL;\1\0\naccess$100\1\0\naccess$400\1\0\3bcp\1\0\fdoPrivileged\1\0\20java/lang/Object\1\0\fjava/net/URL\1\0\36java/security/AccessController\1\0\21sun/misc/Launcher\1\0%sun/misc/Launcher$BootClassPathHolder\1\0'sun/misc/Launcher$BootClassPathHolder$1\1\0\25sun/misc/URLClassPath\7\0\v\7\0\20\7\0\21\7\0\22\7\0\23\7\0\24\7\0\25\7\0\26\1\0\27Lsun/misc/URLClassPath;\1\0$()Ljava/net/URLStreamHandlerFactory;\1\0004(Ljava/security/PrivilegedAction;)Ljava/lang/Object;\1\0004([Ljava/net/URL;Ljava/net/URLStreamHandlerFactory;)V\f\0\16\0\37\f\0\4\0\2\f\0\r\0\1\f\0\f\0 \f\0\17\0!\f\0\4\0\"\t\0\34\0#\n\0\30\0$\n\0\32\0'\n\0\33\0%\n\0\33\0&\n\0\35\0$\n\0\36\0(\1\0\23BootClassPathHolder\0 \0\34\0\30\0\0\0\1\0\30\0\16\0\37\0\0\0\2\0\2\0\4\0\2\0\1\0\5\0\0\0\35\0\1\0\1\0\0\0\5*\267\0*\261\0\0\0\1\0\10\0\0\0\6\0\1\0\0\1g\0\10\0\3\0\2\0\1\0\5\0\0\0b\0\4\0\1\0\0\0+\270\0,\306\0\24\273\0\35Y\267\0.\270\0+\300\0\27K\247\0\10\3\275\0\31K\273\0\36Y*\270\0-\267\0/\263\0)\261\0\0\0\2\0\n\0\0\0\t\0\2\27\374\0\4\7\0\27\0\10\0\0\0\26\0\5\0\0\1k\0\6\1l\0\27\1\202\0\34\1\204\0*\1\205\0\2\0\t\0\0\0\2\0\7\0\6\0\0\0\22\0\2\0\34\0\33\0000\0\n\0\35\0\0\0\0\0\10", 897) = 897 30059 lseek(4, 43227552, SEEK_SET) = 43227552 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305Bf\265p\366\352\4\0\0\352\4\0\0-\0\0\0", 30) = 30 30059 lseek(4, 43227627, SEEK_SET) = 43227627 30059 read(4, "\312\376\272\276\0\0\0003\0E\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\25(Ljava/lang/Object;)Z\1\0\6\1\0\4Code\1\0\17EnclosingMethod\1\0\fInnerClasses\1\0\rLauncher.java\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\17[Ljava/io/File;\1\0\naccess$200\1\0\naccess$300\1\0\naccess$400\1\0\3add\1\0\rgetParentFile\1\0\visDirectory\1\0\fjava/io/File\1\0\20java/lang/Object\1\0\36java/security/PrivilegedAction\1\0\21java/util/HashSet\1\0\rjava/util/Set\1\0\21registerDirectory\1\0\3run\1\0\21sun/misc/Launcher\1\0%sun/misc/Launcher$BootClassPathHolder\1\0'sun/misc/Launcher$BootClassPathHolder$1\1\0\22sun/misc/MetaIndex\7\0\16\7\0\25\7\0\26\7\0\27\7\0\30\7\0\31\7\0\34\7\0\35\7\0\36\7\0\37\1\0CLjava/lang/Object;Ljava/security/PrivilegedAction<[Ljava/net/URL;>;\1\0\20()Ljava/io/File;\1\0\21(Ljava/io/File;)V\1\0\24()Ljava/lang/Object;\1\0\21()[Ljava/net/URL;\1\0#(Ljava/lang/String;)[Ljava/io/File;\1\0 ([Ljava/io/File;)[Ljava/net/URL;\f\0\5\0\2\f\0\24\0\3\f\0\23\0+\f\0\32\0,\f\0\22\0\4\f\0\21\0\1\f\0\33\0.\f\0\17\0/\f\0\20\0000\n\0!\0002\n\0!\0003\n\0\"\0001\n\0$\0001\n\0&\0006\n\0&\0008\n\0&\0009\n\0(\0007\n\0)\0004\v\0%\0005\1\0\23BootClassPathHolder\0000\0(\0\"\0\1\0#\0\0\0\3\0\0\0\5\0\2\0\1\0\6\0\0\0\35\0\1\0\1\0\0\0\5*\267\0<\261\0\0\0\1\0\n\0\0\0\6\0\1\0\0\1m\0\1\0\33\0.\0\1\0\6\0\0\0\266\0\2\0\6\0\0\0P\270\0>\270\0?L+\276=\273"..., 1258) = 1258 30059 stat("/software/jdk1.7.0_25/jre/lib/resources.jar", {st_mode=S_IFREG|0755, st_size=2479402, ...}) = 0 30059 stat("/software/jdk1.7.0_25/jre/lib/meta-index", {st_mode=S_IFREG|0755, st_size=2097, ...}) = 0 30059 open("/software/jdk1.7.0_25/jre/lib/meta-index", O_RDONLY 30090 <... futex resumed> ) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091214, 735198000}, ffffffff 30059 <... open resumed> ) = 8 30059 fstat(8, {st_mode=S_IFREG|0755, st_size=2097, ...}) = 0 30059 fcntl(8, F_GETFD) = 0 30059 fcntl(8, F_SETFD, FD_CLOEXEC) = 0 30059 lstat("/software", {st_mode=S_IFDIR|0755, st_size=20480, ...}) = 0 30059 lstat("/software/jdk1.7.0_25", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 30059 lstat("/software/jdk1.7.0_25/jre", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 30059 lstat("/software/jdk1.7.0_25/jre/lib", {st_mode=S_IFDIR|0755, st_size=8192, ...}) = 0 30059 stat("/software/jdk1.7.0_25/jre/lib", {st_mode=S_IFDIR|0755, st_size=8192, ...}) = 0 30059 stat("/software/jdk1.7.0_25/jre/lib", {st_mode=S_IFDIR|0755, st_size=8192, ...}) = 0 30059 read(8, "% VERSION 2\n% WARNING: this file is auto-generated; do not edit\n% UNSUPPORTED: this file and its format may change and/or\n% may be removed in a future release\n! alt-rt.jar\njava/math\njava/util\n# charsets.jar\nMETA-INF/services/java.nio.charset.spi.CharsetProvider\nsun/nio\nsun/awt\nsun/io\n# jce.jar\njavax/crypto\nsun/security\nMETA-INF/ORACLE_J.RSA\nMETA-INF/ORACLE_J.SF\n! jfr.jar\noracle/jrockit/\ncom/oracle/\n! jsse.jar\nsun/security\ncom/sun/net/\n! management-agent.jar\n@ resources.jar\ncom/sun/java/util/jar/pack/\nMETA-INF/services/javax.print.PrintServiceLookup\ncom/sun/corba/\nMETA-INF/services/javax.sound.midi.spi.SoundbankReader\nsun/print\nMETA-INF/services/javax.sound.midi.spi.MidiFileReader\njavax/swing\nMETA-INF/services/javax.sound.sampled.spi.AudioFileReader\nMETA-INF/services/javax.sound.midi.spi.MidiDeviceProvider\nsun/net\nMETA-INF/services/javax.sound.sampled.spi.AudioFileWriter\ncom/sun/imageio/\ncom/sun/servicetag/\nMETA-INF/services/sun.java2d.pipe.RenderingEngine\nMETA-INF/services/java.sql.D"..., 8192) = 2097 30059 fstat(8, {st_mode=S_IFREG|0755, st_size=2097, ...}) = 0 30059 lseek(8, 0, SEEK_CUR) = 2097 30059 lseek(8, 0, SEEK_END) = 2097 30059 lseek(8, 2097, SEEK_SET) = 2097 30059 read(8, "", 8192) = 0 30059 close(8) = 0 30059 stat("/software/jdk1.7.0_25/jre/lib/rt.jar", {st_mode=S_IFREG|0644, st_size=62611458, ...}) = 0 30059 stat("/software/jdk1.7.0_25/jre/lib/sunrsasign.jar", 0x7fb31b2f5db0) = -1 ENOENT (No such file or directory) 30059 stat("/software/jdk1.7.0_25/jre/lib/jsse.jar", {st_mode=S_IFREG|0644, st_size=580526, ...}) = 0 30059 stat("/software/jdk1.7.0_25/jre/lib/jce.jar", {st_mode=S_IFREG|0755, st_size=109196, ...}) = 0 30059 stat("/software/jdk1.7.0_25/jre/lib/charsets.jar", {st_mode=S_IFREG|0644, st_size=3649132, ...}) = 0 30059 stat("/software/jdk1.7.0_25/jre/lib/jfr.jar", {st_mode=S_IFREG|0755, st_size=462133, ...}) = 0 30059 stat("/software/jdk1.7.0_25/jre/classes", 0x7fb31b2f5db0) = -1 ENOENT (No such file or directory) 30059 stat("/software/jdk1.7.0_25/jre/meta-index", 0x7fb31b2f5d10) = -1 ENOENT (No such file or directory) 30059 lstat("/software", {st_mode=S_IFDIR|0755, st_size=20480, ...}) = 0 30059 lstat("/software/jdk1.7.0_25", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 30059 lstat("/software/jdk1.7.0_25/jre", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 30059 lstat("/software/jdk1.7.0_25/jre/lib", {st_mode=S_IFDIR|0755, st_size=8192, ...}) = 0 30059 lstat("/software/jdk1.7.0_25/jre/lib/resources.jar", {st_mode=S_IFREG|0755, st_size=2479402, ...}) = 0 30059 stat("/software/jdk1.7.0_25/jre/lib/resources.jar", {st_mode=S_IFREG|0755, st_size=2479402, ...}) = 0 30059 stat("/software/jdk1.7.0_25/jre/lib/resources.jar", {st_mode=S_IFREG|0755, st_size=2479402, ...}) = 0 30059 stat("/software/jdk1.7.0_25/jre/lib/resources.jar", {st_mode=S_IFREG|0755, st_size=2479402, ...}) = 0 30059 stat("/software/jdk1.7.0_25/jre/lib/rt.jar", {st_mode=S_IFREG|0644, st_size=62611458, ...}) = 0 30059 stat("/software/jdk1.7.0_25/jre/lib/sunrsasign.jar", 0x7fb31b2f5c20) = -1 ENOENT (No such file or directory) 30059 stat("/software/jdk1.7.0_25/jre/lib/jsse.jar", {st_mode=S_IFREG|0644, st_size=580526, ...}) = 0 30059 stat("/software/jdk1.7.0_25/jre/lib/jce.jar", {st_mode=S_IFREG|0755, st_size=109196, ...}) = 0 30059 stat("/software/jdk1.7.0_25/jre/lib/charsets.jar", {st_mode=S_IFREG|0644, st_size=3649132, ...}) = 0 30059 stat("/software/jdk1.7.0_25/jre/lib/jfr.jar", {st_mode=S_IFREG|0755, st_size=462133, ...}) = 0 30059 lstat("/software", {st_mode=S_IFDIR|0755, st_size=20480, ...}) = 0 30059 lstat("/software/jdk1.7.0_25", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 30059 lstat("/software/jdk1.7.0_25/jre", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 30059 lstat("/software/jdk1.7.0_25/jre/classes", 0x7fb31b2f3b70) = -1 ENOENT (No such file or directory) 30059 lstat("/software", {st_mode=S_IFDIR|0755, st_size=20480, ...}) = 0 30059 lstat("/software/jdk1.7.0_25", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 30059 lstat("/software/jdk1.7.0_25/jre", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 30059 stat("/software/jdk1.7.0_25/jre/classes", 0x7fb31b2f5b40) = -1 ENOENT (No such file or directory) 30059 stat("/software/jdk1.7.0_25/jre/classes", 0x7fb31b2f5c20) = -1 ENOENT (No such file or directory) 30059 lseek(4, 58659970, SEEK_SET) = 58659970 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\256\327.\206\255\5\0\0\255\5\0\0\35\0\0\0", 30) = 30 30059 lseek(4, 58660029, SEEK_SET) = 58660029 30059 read(4, "\312\376\272\276\0\0\0003\0F\1\0\3()V\1\0\3()Z\1\0\6\1\0\4Code\1\0\17EnclosingMethod\1\0\1I\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\22Ljava/lang/String;\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\1Z\1\0\naccess$000\1\0\vgetResource\1\0\fgetResources\1\0\17hasMoreElements\1\0\5index\1\0\20java/lang/Object\1\0\25java/util/Enumeration\1\0 java/util/NoSuchElementException\1\0\4next\1\0\vnextElement\1\0\3res\1\0\25sun/misc/URLClassPath\1\0\27sun/misc/URLClassPath$2\1\0\34sun/misc/URLClassPath$Loader\1\0\6this$0\1\0\tval$check\1\0\10val$name\7\0\23\7\0\24\7\0\25\7\0\31\7\0\32\7\0\33\1\0\23Lsun/misc/Resource;\1\0\27Lsun/misc/URLClassPath;\1\0>Ljava/lang/Object;Ljava/util/Enumeration;\1\0\24()Ljava/lang/Object;\1\0\25()Lsun/misc/Resource;\1\0-(Lsun/misc/URLClassPath;Ljava/lang/String;Z)V\1\0,(Ljava/lang/String;Z)Ljava/util/Enumeration;\1\0((Ljava/lang/String;Z)Lsun/misc/Resource;\1\0008(Lsun/misc/URLClassPath;I)Lsun/misc/URLClassPath$Loader;\f\0\22\0\6\f\0\35\0\r\f\0\36\0\t\f\0\30\0%\f\0\34\0&\f\0\3\0\1\f\0\26\0\2\f\0\27\0)\f\0\20\0+\f\0\17\0,\f\0\16\0-\t\0#\0.\t\0#\0/\t\0#\0000\t\0#\0001\t\0#\0002\n\0\37\0003\n\0!\0003\n\0\"\0008\n\0#\0004\n\0#\0005\n\0$\0007\1\0\6Loader\1\0\21URLClassPath.java\0 \0#\0\37\0\1\0 \0\5\0\2\0\22\0\6\0\0\0\2\0\30\0%\0\0\20\20\0\36\0\t\0\0\20\20\0\35\0"..., 1453) = 1453 30059 mprotect(0x7fb314523000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 58659050, SEEK_SET) = 58659050 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305BK\376 Z]\3\0\0]\3\0\0\35\0\0\0", 30) = 30 30059 lseek(4, 58659109, SEEK_SET) = 58659109 30059 read(4, "\312\376\272\276\0\0\0003\0-\1\0\3()V\1\0\3()Z\1\0\6\1\0\20ClassLoader.java\1\0\4Code\1\0\17EnclosingMethod\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\25getBootstrapResources\1\0\6getURL\1\0\17hasMoreElements\1\0\25java/lang/ClassLoader\1\0\27java/lang/ClassLoader$2\1\0\20java/lang/Object\1\0\25java/util/Enumeration\1\0\vnextElement\1\0\21sun/misc/Resource\1\0\5val$e\7\0\16\7\0\17\7\0\20\7\0\21\7\0\23\1\0\27Ljava/util/Enumeration;\1\0009Ljava/lang/Object;Ljava/util/Enumeration;\1\0\24()Ljava/lang/Object;\1\0\20()Ljava/net/URL;\1\0\32(Ljava/util/Enumeration;)V\1\0+(Ljava/lang/String;)Ljava/util/Enumeration;\f\0\24\0\32\f\0\3\0\1\f\0\r\0\2\f\0\22\0\34\f\0\f\0\35\f\0\22\0\35\f\0\v\0\37\t\0\26\0 \n\0\26\0%\n\0\27\0!\n\0\31\0$\v\0\30\0\"\v\0\30\0#\0000\0\26\0\27\0\1\0\30\0\1\20\20\0\24\0\32\0\0\0\4\0\0\0\3\0\36\0\1\0\5\0\0\0\"\0\2\0\2\0\0\0\n*+\265\0'*\267\0)\261\0\0\0\1\0\10\0\0\0\6\0\1\0\0\5\35\0\1\0\22\0\35\0\1\0\5\0\0\0(\0\1\0\1\0\0\0\20*\264\0'\271\0,\1\0\300\0\31\266\0*\260\0\0\0\1\0\10\0\0\0\6\0\1\0\0\5\37\0\1\0\r\0\2\0\1\0\5\0\0\0\"\0\1\0\1\0\0\0\n*\264\0'\271\0+\1\0\254\0\0\0\1\0\10\0\0\0\6\0\1\0\0\5\"\20A\0\22\0\34\0\1\0\5\0\0\0\35\0\1\0\1\0\0\0\5*\266\0(\260\0\0\0\1\0\10\0\0\0\6\0\1\0\0\5\35\0\4\0\n\0\0\0\2\0\4\0\6\0\0\0\4\0\25\0&\0\t\0\0\0\2\0\33\0\7\0\0\0\n\0\1\0\26\0\0\0\0\0\10", 861) = 861 30059 lseek(4, 58657556, SEEK_SET) = 58657556 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\362\302x\20\233\5\0\0\233\5\0\0\35\0\0\0", 30) = 30 30059 lseek(4, 58657615, SEEK_SET) = 58657615 30059 read(4, "\312\376\272\276\0\0\0003\0F\1\0\3()V\1\0\3()Z\1\0\6\1\0\4Code\1\0\17EnclosingMethod\1\0\1I\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\22Ljava/lang/String;\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\1Z\1\0\naccess$000\1\0\ffindResource\1\0\rfindResources\1\0\17hasMoreElements\1\0\5index\1\0\20java/lang/Object\1\0\25java/util/Enumeration\1\0 java/util/NoSuchElementException\1\0\4next\1\0\vnextElement\1\0\25sun/misc/URLClassPath\1\0\27sun/misc/URLClassPath$1\1\0\34sun/misc/URLClassPath$Loader\1\0\6this$0\1\0\3url\1\0\tval$check\1\0\10val$name\7\0\23\7\0\24\7\0\25\7\0\30\7\0\31\7\0\32\1\0\16Ljava/net/URL;\1\0\27Lsun/misc/URLClassPath;\1\0009Ljava/lang/Object;Ljava/util/Enumeration;\1\0\24()Ljava/lang/Object;\1\0\20()Ljava/net/URL;\1\0-(Lsun/misc/URLClassPath;Ljava/lang/String;Z)V\1\0#(Ljava/lang/String;Z)Ljava/net/URL;\1\0,(Ljava/lang/String;Z)Ljava/util/Enumeration;\1\0008(Lsun/misc/URLClassPath;I)Lsun/misc/URLClassPath$Loader;\f\0\22\0\6\f\0\35\0\r\f\0\36\0\t\f\0\34\0%\f\0\33\0&\f\0\3\0\1\f\0\26\0\2\f\0\27\0)\f\0\17\0+\f\0\20\0,\f\0\16\0-\t\0#\0.\t\0#\0/\t\0#\0000\t\0#\0001\t\0#\0002\n\0\37\0003\n\0!\0003\n\0\"\0008\n\0#\0004\n\0#\0005\n\0$\0006\1\0\6Loader\1\0\21URLClassPath.java\0 \0#\0\37\0\1\0 \0\5\0\2\0\22\0\6\0\0\0\2\0\34\0%\0\0\20\20\0\36\0\t\0\0\20\20\0\35\0\r\0\0\20\20\0\33\0&\0\0\0\5\0\0\0\3\0"..., 1435) = 1435 30059 lseek(4, 58655795, SEEK_SET) = 58655795 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\301R\30\243\244\6\0\0\244\6\0\0\37\0\0\0", 30) = 30 30059 lseek(4, 58655856, SEEK_SET) = 58655856 30059 read(4, "\312\376\272\276\0\0\0003\0N\1\0\3()V\1\0\3()Z\1\0\6\1\0\4Code\1\0\17EnclosingMethod\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\23URLClassLoader.java\1\0\naccess$000\1\0\naccess$200\1\0\10checkURL\1\0\fdoPrivileged\1\0\rfindResources\1\0\17hasMoreElements\1\0\20java/lang/Object\1\0\fjava/net/URL\1\0\27java/net/URLClassLoader\1\0\31java/net/URLClassLoader$3\1\0\33java/net/URLClassLoader$3$1\1\0\36java/security/AccessController\1\0\25java/util/Enumeration\1\0 java/util/NoSuchElementException\1\0\4next\1\0\vnextElement\1\0\25sun/misc/URLClassPath\1\0\6this$0\1\0\3url\1\0\5val$e\7\0\22\7\0\23\7\0\24\7\0\25\7\0\26\7\0\27\7\0\30\7\0\31\7\0\34\1\0\16Ljava/net/URL;\1\0\31Ljava/net/URLClassLoader;\1\0\27Ljava/util/Enumeration;\1\0009Ljava/lang/Object;Ljava/util/Enumeration;\1\0\24()Ljava/lang/Object;\1\0\20()Ljava/net/URL;\1\0\36(Ljava/net/URLClassLoader$3;)V\1\0\36(Ljava/net/URL;)Ljava/net/URL;\1\0?(Ljava/net/URLClassLoader;)Ljava/security/AccessControlContext;\1\0+(Ljava/lang/String;)Ljava/util/Enumeration;\1\0003(Ljava/net/URLClassLoader;Ljava/util/Enumeration;)V\1\0002(Ljava/net/URLClassLoader;)Lsun/misc/URLClassPath"..., 1700) = 1700 30059 lseek(4, 58654831, SEEK_SET) = 58654831 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B/^\246 \204\3\0\0\204\3\0\0\"\0\0\0", 30) = 30 30059 lseek(4, 58654895, SEEK_SET) = 58654895 30059 read(4, "\312\376\272\276\0\0\0003\0*\1\0\5()TE;\1\0\3()V\1\0\3()Z\1\0\6\1\0\4Code\1\0\1I\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\30[Ljava/util/Enumeration;\1\0\5enums\1\0\17hasMoreElements\1\0\5index\1\0\20java/lang/Object\1\0\25java/util/Enumeration\1\0 java/util/NoSuchElementException\1\0\4next\1\0\vnextElement\1\0\34sun/misc/CompoundEnumeration\7\0\17\7\0\20\7\0\21\7\0\24\1\0DLjava/lang/Object;Ljava/util/Enumeration;\1\0\24()Ljava/lang/Object;\1\0\33([Ljava/util/Enumeration;)V\f\0\16\0\6\f\0\f\0\v\f\0\4\0\2\f\0\r\0\3\f\0\22\0\3\f\0\23\0\32\t\0\30\0\34\t\0\30\0\35\n\0\25\0\36\n\0\27\0\36\n\0\30\0 \v\0\26\0\37\v\0\26\0!\1\0\30CompoundEnumeration.java\0!\0\30\0\25\0\1\0\26\0\2\0\2\0\f\0\v\0\0\0\2\0\16\0\6\0\0\0\4\0\1\0\4\0\33\0\1\0\5\0\0\0003\0\2\0\2\0\0\0\17*\267\0$*\3\265\0\"*+\265\0#\261\0\0\0\1\0\7\0\0\0\22\0\4\0\0\0'\0\4\0%\0\t\0(\0\16\0)\0\2\0\22\0\3\0\1\0\5\0\0\0m\0\3\0\1\0\0\0:*\264\0\"*\264\0#\276\242\0/*\264\0#*\264\0\"2\306\0\26*\264\0#*\264\0\"2\271\0'\1\0\231\0\5\4\254*Y\264\0\"\4`\265\0\"\247\377\313\3\254\0\0\0\2\0\n\0\0\0\5\0\3\0*\f\0\7\0\0\0\26\0\5\0\0\0,\0\f\0-\0)\0.\0+\0000\0008\0002\0\1\0\r\0\3\0\1\0\5\0\0\0\35\0\1\0\1\0\0\0\5*\267\0&\254\0\0\0\1\0\7\0\0\0\6\0\1\0\0\0006\0\1\0\23\0\32\0\2\0\5\0\0\0G\0\2\0\1\0\0\0\36*\267\0&\232\0\v\273\0\27Y\267\0%\277*\264\0#*\264\0\"2\271\0(\1\0\260\0\0\0\2\0\n\0\0\0\3\0\1\17\0\7\0\0\0\16\0\3\0\0\0:\0\7\0;\0\17\0=\0\10\0\0\0\2\0\1\0\2\0\t\0\0\0\2\0)\0\10\0\0\0\2\0\31", 900) = 900 30059 stat("/software/jdk1.7.0_25/jre/lib/resources.jar", {st_mode=S_IFREG|0755, st_size=2479402, ...}) = 0 30059 stat("/software/jdk1.7.0_25/jre/lib/rt.jar", {st_mode=S_IFREG|0644, st_size=62611458, ...}) = 0 30059 stat("/software/jdk1.7.0_25/jre/lib/sunrsasign.jar", 0x7fb31b2f5aa0) = -1 ENOENT (No such file or directory) 30059 stat("/software/jdk1.7.0_25/jre/lib/jsse.jar", {st_mode=S_IFREG|0644, st_size=580526, ...}) = 0 30059 stat("/software/jdk1.7.0_25/jre/lib/jce.jar", {st_mode=S_IFREG|0755, st_size=109196, ...}) = 0 30059 stat("/software/jdk1.7.0_25/jre/lib/charsets.jar", {st_mode=S_IFREG|0644, st_size=3649132, ...}) = 0 30059 stat("/software/jdk1.7.0_25/jre/lib/jfr.jar", {st_mode=S_IFREG|0755, st_size=462133, ...}) = 0 30059 stat("/software/jdk1.7.0_25/jre/classes", 0x7fb31b2f5aa0) = -1 ENOENT (No such file or directory) 30059 lseek(4, 58649947, SEEK_SET) = 58649947 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B`A\21\355\203\3\0\0\203\3\0\0!\0\0\0", 30) = 30 30059 lseek(4, 58650010, SEEK_SET) = 58650010 30059 read(4, "\312\376\272\276\0\0\0003\0001\1\0\3()V\1\0\3()Z\1\0\6\1\0\4Code\1\0\17EnclosingMethod\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\23URLClassLoader.java\1\0\17hasMoreElements\1\0\20java/lang/Object\1\0\fjava/net/URL\1\0\31java/net/URLClassLoader$3\1\0\33java/net/URLClassLoader$3$1\1\0\36java/security/PrivilegedAction\1\0\25java/util/Enumeration\1\0\4next\1\0\vnextElement\1\0\3run\1\0\6this$1\1\0\5val$e\7\0\r\7\0\16\7\0\17\7\0\20\7\0\21\7\0\22\1\0\33Ljava/net/URLClassLoader$3;\1\0\27Ljava/util/Enumeration;\1\0BLjava/lang/Object;Ljava/security/PrivilegedAction;\1\0\24()Ljava/lang/Object;\1\0\20()Ljava/net/URL;\1\0\36(Ljava/net/URLClassLoader$3;)V\f\0\26\0\36\f\0\27\0\37\f\0\3\0\1\f\0\f\0\2\f\0\23\0\2\f\0\24\0!\f\0\25\0\"\t\0\32\0%\t\0\33\0$\n\0\30\0&\n\0\33\0*\v\0\35\0'\v\0\35\0)\0 \0\33\0\30\0\1\0\34\0\1\20\20\0\26\0\36\0\0\0\3\0\0\0\3\0#\0\1\0\4\0\0\0\"\0\2\0\2\0\0\0\n*+\265\0,*\267\0-\261\0\0\0\1\0\7\0\0\0\6\0\1\0\0\2E\0\1\0\25\0\"\0\1\0\4\0\0\0J\0\1\0\1\0\0\0!*\264\0,\264\0+\271\0/\1\0\232\0\5\1\260*\264\0,\264\0+\271\0000\1\0\300\0\31\260\0\0\0\2\0\n\0\0\0\3\0\1\21\0\7\0\0\0\16\0\3\0\0\2G\0\17\2H\0\21\2I\20A\0\25\0!\0\1\0\4\0\0\0\35\0\1\0\1\0\0\0\5*\266\0.\260\0\0\0\1\0\7\0\0\0\6\0\1\0\0\2E\0\4\0\t\0\0\0\2\0\v\0\5\0\0\0\4\0\32\0(\0\10\0\0\0\2\0 \0\6\0\0\0\22\0\2\0\32\0\0\0\0\0\0\0\33\0\0\0\0\0\0", 899) = 899 30059 lseek(4, 58646218, SEEK_SET) = 58646218 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B\370G\252\204P\16\0\0P\16\0\0#\0\0\0", 30) = 30 30059 lseek(4, 58646283, SEEK_SET) = 58646283 30059 read(4, "\312\376\272\276\0\0\0003\0\267\10\0-\10\0;\10\0<\10\0=\10\0H\10\0K\10\0M\10\0N\10\0R\10\0S\10\0T\10\0U\10\0V\10\0W\10\0`\10\0a\10\0c\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\25(I)Ljava/lang/String;\1\0\26(II)Ljava/lang/String;\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)I\1\0&(Ljava/lang/String;)Ljava/lang/String;\1\0\25(Ljava/lang/String;)V\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\22Ljava/lang/String;\1\0\nSourceFile\1\0\rStackMapTable\1\0\23[Ljava/util/Locale;\1\0\naccess$000\1\0\6append\1\0\fbooleanValue\1\0\5clone\1\0\vcountTokens\1\0\20createLocaleList\1\0\fdoPrivileged\1\0\6equals\1\0\3ext\1\0\16forLanguageTag\1\0\23getAvailableLocales\1\0\tgetBundle\1\0\17getCalendarData\1\0\20getCollationData\1\0\20getCurrencyNames\1\0\21getDateFormatData\1\0\16getLocaleNames\1\0\23getNumberFormatData\1\0\30getSupportedLocaleString\1\0\20getTimeZoneNames\1\0\7indexOf\1\0\26isNonEuroLangSupported\1\0\10ja-JP-JP\1\0!ja-JP-u-ca-japanese-x-lvariant-JP\1\0\tjava.home\1\0\fjava/io/File\1\0\21java/lang/Boolean\1\0\20java/lang/Object\1\0\20java/lang/String\1\0\27java/lang/StringBuilder\1\0\36java/security/AccessController\1\0\20java/util/Locale\1\0\30java/util/ResourceBundle\1\0\31java"..., 3664) = 3664 30059 lseek(4, 58644888, SEEK_SET) = 58644888 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305BV\207\315\232\357\4\0\0\357\4\0\0%\0\0\0", 30) = 30 30059 lseek(4, 58644955, SEEK_SET) = 58644955 30059 read(4, "\312\376\272\276\0\0\0003\0005\1\0\3()V\1\0\6\1\0\4Code\1\0\7Control\1\0\17EnclosingMethod\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\22Ljava/lang/String;\1\0\22Ljava/util/Locale;\1\0\tSignature\1\0\nSourceFile\1\0\tgetBundle\1\0\24getRBControlInstance\1\0\20java/lang/Object\1\0\36java/security/PrivilegedAction\1\0\30java/util/ResourceBundle\1\0 java/util/ResourceBundle$Control\1\0\3run\1\0\35sun/util/resources/LocaleData\1\0\37sun/util/resources/LocaleData$1\1\0=sun/util/resources/LocaleData$LocaleDataResourceBundleControl\1\0\fval$baseName\1\0\nval$locale\7\0\16\7\0\17\7\0\20\7\0\21\7\0\23\7\0\24\7\0\25\1\0NLjava/lang/Object;Ljava/security/PrivilegedAction;\1\0\24()Ljava/lang/Object;\1\0\34()Ljava/util/ResourceBundle;\1\0A()Lsun/util/resources/LocaleData$LocaleDataResourceBundleControl;\1\0'(Ljava/lang/String;Ljava/util/Locale;)V\1\0@(Ljava/lang/String;Ljava/util/Locale;)Ljava/util/ResourceBundle;\1\0b(Ljava/lang/String;Ljava/util/Locale;Ljava/util/ResourceBundle$Control;)Ljava/util/ResourceBundle;\f\0\26\0\10\f\0\27\0\t\f\0\2\0\1\f\0\22\0!\f\0\r\0\"\f\0\f\0$\f\0\f\0%\t\0\35\0&\t\0\35\0'\n\0\30\0(\n\0\32\0,\n\0\35\0)\n\0\36\0*\1\0\17LocaleData.java\1\0\37LocaleD"..., 1263) = 1263 30059 lseek(4, 58642670, SEEK_SET) = 58642670 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B \\\16XI\10\0\0I\10\0\0C\0\0\0", 30) = 30 30059 lseek(4, 58642767, SEEK_SET) = 58642767 30059 read(4, "\312\376\272\276\0\0\0003\0k\10\0\3\10\0\24\1\0\1 \1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\26(II)Ljava/lang/String;\1\0\25(Ljava/lang/String;)I\1\0&(Ljava/lang/String;)Ljava/lang/String;\1\0\10\1\0\6\1\0\4Code\1\0\7Control\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\2_#\1\0\6append\1\0\23getCandidateLocales\1\0\21getFallbackLocale\1\0\24getRBControlInstance\1\0\tgetScript\1\0\30getSupportedLocaleString\1\0\7hasNext\1\0\7indexOf\1\0\10iterator\1\0\36java/lang/NullPointerException\1\0\20java/lang/String\1\0\27java/lang/StringBuilder\1\0\22java/util/Iterator\1\0\16java/util/List\1\0\20java/util/Locale\1\0\30java/util/ResourceBundle\1\0 java/util/ResourceBundle$Control\1\0\6length\1\0\4next\1\0\21rbControlInstance\1\0\6remove\1\0\7replace\1\0\tsubstring\1\0\33sun/util/LocaleDataMetaInfo\1\0\35sun/util/resources/LocaleData\1\0=sun/util/resources/LocaleData$LocaleDataResourceBundleControl\1\0\rtoLanguageTag\1\0\10toString\7\0\36\7\0\37\7\0 \7\0!\7\0\"\7\0#\7\0$\7\0%\7\0,\7\0-\7\0.\1\0?Lsun/util/resources/LocaleData$LocaleDataResourceBundleControl;\1\0\24()Ljava/lang/Object;\1\0\26(CC)Ljava/lang/String;\1\0\26()Ljava/util/Iterator;"..., 2121) = 2121 30059 lseek(4, 59385185, SEEK_SET) = 59385185 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\363\344-\241\251\33\0\0\251\33\0\0&\0\0\0", 30) = 30 30059 lseek(4, 59385253, SEEK_SET) = 59385253 30059 read(4, "\312\376\272\276\0\0\0003\0014\10\0\7\10\0\10\10\0G\10\0H\10\0r\10\0y\1\0\0\1\0! cannot be cast to ResourceBundle\1\0\3()I\1\0\3()J\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\25(I)Ljava/lang/String;\1\0\4(I)V\1\0\25(Ljava/lang/Object;)Z\1\0%(Ljava/lang/String;)Ljava/lang/Class;\1\0\25(Ljava/lang/String;)V\1\0\4(Z)V\1\0\10\1\0\6\1\0\20CANDIDATES_CACHE\1\0\4Code\1\0\rConstantValue\1\0\7Control\1\0\nExceptions\1\0\fFORMAT_CLASS\1\0\16FORMAT_DEFAULT\1\0\21FORMAT_PROPERTIES\1\0\10INSTANCE\1\0\fInnerClasses\1\0\1J\1\0\17LineNumberTable\1\0\22Ljava/util/Locale;\1\0\4ROOT\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\16TTL_DONT_CACHE\1\0\31TTL_NO_EXPIRATION_CONTROL\1\0\vaccess$1000\1\0\vaccess$1100\1\0\vaccess$1200\1\0\naccess$300\1\0\naccess$800\1\0\naccess$900\1\0\6append\1\0\6asList\1\0\5close\1\0\fdoPrivileged\1\0\6equals\1\0\3get\1\0\rgetBaseLocale\1\0\23getCandidateLocales\1\0\ngetControl\1\0\ngetCountry\1\0\ngetDefault\1\0\fgetException\1\0\21getFallbackLocale\1\0\ngetFormats\1\0\vgetJarEntry\1\0\vgetLanguage\1\0\17getLastModified\1\0\7getName\1\0\24getNoFallbackControl\1\0\vgetResource\1\0\tgetScript\1\0\7getTime\1\0\rgetTimeToLive\1\0\ngetVariant\1\0\20isAssignableFrom\1\0\njava.class\1\0\17java.properties\1\0\23java/io/"..., 7081) = 7081 30059 mprotect(0x7fb314524000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 29837404, SEEK_SET) = 29837404 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\20\232\355N\v\r\0\0\v\r\0\0009\0\0\0", 30) = 30 30059 lseek(4, 29837491, SEEK_SET) = 29837491 30059 read(4, "\312\376\272\276\0\0\0003\0\222\10\0\17\10\0\30\10\0\33\10\0\34\10\0\35\10\0!\10\0\"\10\0#\10\0%\10\0)\10\0A\10\0C\10\0D\10\0I\1\0\0\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\5(II)I\1\0\26(II)Ljava/lang/String;\1\0\25(Ljava/lang/Object;)Z\1\0\6\1\0\2CN\1\0\4Code\1\0\7Control\1\0\2HK\1\0\4Hans\1\0\4Hant\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\22Ljava/util/Locale;\1\0\2MO\1\0\2NO\1\0\2NY\1\0\4ROOT\1\0\2SG\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\2TW\1\0\3add\1\0\fcreateObject\1\0\6equals\1\0\ngetCountry\1\0\16getDefaultList\1\0\vgetInstance\1\0\vgetLanguage\1\0\tgetRegion\1\0\tgetScript\1\0\ngetVariant\1\0\7hasNext\1\0\10iterator\1\0\20java/lang/String\1\0\22java/util/Iterator\1\0\24java/util/LinkedList\1\0\16java/util/List\1\0\20java/util/Locale\1\0\30java/util/ResourceBundle\1\0\32java/util/ResourceBundle$1\1\0 java/util/ResourceBundle$Control\1\0003java/util/ResourceBundle$Control$CandidateListCache\1\0\vlastIndexOf\1\0\6length\1\0\2nb\1\0\4next\1\0\2nn\1\0\2no\1\0\4size\1\0\tsubstring\1\0\32sun/util/locale/BaseLocale\1\0!sun/util/locale/LocaleObjectCache\1\0\2zh\7\0006\7\0007\7\0008\7\0009\7\0:\7\0;\7\0<\7\0=\7\0>\7\0G\7\0H\1\0eLsun/util/locale/LocaleObjectCache;>;\1\0\24()Ljav"..., 3339) = 3339 30059 lseek(4, 59364442, SEEK_SET) = 59364442 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B0\201\276\222V2\0\0V2\0\0\36\0\0\0", 30) = 30 30059 lseek(4, 59364502, SEEK_SET) = 59364502 30059 read(4, "\312\376\272\276\0\0\0003\1\322\10\0\n\10\0\30\10\0\31\10\0\34\10\0\35\10\0$\10\0%\10\0&\10\0002\1\0\0\1\0\23$assertionsDisabled\1\0\3()I\1\0\3()J\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4(I)V\1\0\25(Ljava/lang/Object;)Z\1\0'(Ljava/lang/Object;Ljava/lang/Object;)Z\1\0&(Ljava/lang/String;)Ljava/lang/Object;\1\0&(Ljava/lang/String;)Ljava/lang/String;\1\0\25(Ljava/lang/String;)V\1\0\25(Ljava/lang/String;)Z\1\0\6, key \1\0\t, locale \1\0\10\1\0\6\1\0 Can't find bundle for base name \1\0\37Can't find resource for bundle \1\0\4Code\1\0\rConstantValue\1\0\7Control\1\0\1I\1\0\22INITIAL_CACHE_SIZE\1\0\fInnerClasses\1\0\25Invalid Control: TTL=\1\0$Invalid Control: getCandidateLocales\1\0\33Invalid Control: getFormats\1\0\17LineNumberTable\1\0\22Ljava/lang/String;\1\0\22Ljava/util/Locale;\1\0\22NONEXISTENT_BUNDLE\1\0\4ROOT\1\0\31RuntimeVisibleAnnotations\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\1Z\1\0\23[Ljava/lang/String;\1\0\1_\1\0\naccess$000\1\0\naccess$200\1\0\naccess$300\1\0\naccess$400\1\0\naccess$500\1\0\naccess$600\1\0\naccess$602\1\0\naccess$700\1\0\naccess$702\1\0\3add\1\0\6addAll\1\0\6append\1\0\10cacheKey\1\0\tcacheList\1\0\tcheckList\1\0\5clear\1\0\nclearCache\1\0\5clone\1\0\10contains\1\0\vcontai"..., 12886) = 12886 30059 mprotect(0x7fb314525000, 8192, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb314527000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 59363755, SEEK_SET) = 59363755 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\232\300\f,q\2\0\0q\2\0\0 \0\0\0", 30) = 30 30059 lseek(4, 59363817, SEEK_SET) = 59363817 30059 read(4, "\312\376\272\276\0\0\0003\0\31\10\0\n\1\0\24()Ljava/lang/String;\1\0\3()V\1\0&(Ljava/lang/String;)Ljava/lang/Object;\1\0\6\1\0\4Code\1\0\17EnclosingMethod\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\22NONEXISTENT_BUNDLE\1\0\tSignature\1\0\nSourceFile\1\0\7getKeys\1\0\17handleGetObject\1\0\30java/util/ResourceBundle\1\0\32java/util/ResourceBundle$1\1\0\10toString\7\0\17\7\0\20\1\0\31()Ljava/util/Enumeration;\1\0-()Ljava/util/Enumeration;\f\0\5\0\3\n\0\22\0\26\1\0\23ResourceBundle.java\0000\0\23\0\22\0\0\0\0\0\4\0\0\0\5\0\3\0\1\0\6\0\0\0\35\0\1\0\1\0\0\0\5*\267\0\27\261\0\0\0\1\0\t\0\0\0\6\0\1\0\0\1\22\0\1\0\r\0\24\0\2\0\6\0\0\0\32\0\1\0\1\0\0\0\2\1\260\0\0\0\1\0\t\0\0\0\6\0\1\0\0\1\23\0\v\0\0\0\2\0\25\0\4\0\16\0\4\0\1\0\6\0\0\0\32\0\1\0\2\0\0\0\2\1\260\0\0\0\1\0\t\0\0\0\6\0\1\0\0\1\24\0\1\0\21\0\2\0\1\0\6\0\0\0\33\0\1\0\1\0\0\0\3\22\1\260\0\0\0\1\0\t\0\0\0\6\0\1\0\0\1\25\0\3\0\f\0\0\0\2\0\30\0\7\0\0\0\4\0\22\0\0\0\10\0\0\0\n\0\1\0\23\0\0\0\0\0\10", 625) = 625 30059 lseek(4, 59362040, SEEK_SET) = 59362040 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\\p\177Ui\6\0\0i\6\0\0,\0\0\0", 30) = 30 30059 lseek(4, 59362114, SEEK_SET) = 59362114 30059 read(4, "\312\376\272\276\0\0\0003\0J\1\0\3()V\1\0%(Ljava/lang/String;)Ljava/lang/Class;\1\0\10\1\0\6\1\0\4Code\1\0\nExceptions\1\0\10INSTANCE\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\naccess$000\1\0\fdoPrivileged\1\0\7forName\1\0\vgetResource\1\0\23getResourceAsStream\1\0\24getSystemClassLoader\1\0\21getSystemResource\1\0\31getSystemResourceAsStream\1\0\17java/lang/Class\1\0\25java/lang/ClassLoader\1\0 java/lang/ClassNotFoundException\1\0\36java/security/AccessController\1\0\30java/util/ResourceBundle\1\0\32java/util/ResourceBundle$1\1\0&java/util/ResourceBundle$RBClassLoader\1\0(java/util/ResourceBundle$RBClassLoader$1\1\0\tloadClass\1\0\6loader\7\0\25\7\0\26\7\0\27\7\0\30\7\0\31\7\0\32\7\0\33\7\0\34\1\0\27Ljava/lang/ClassLoader;\1\0(Ljava/util/ResourceBundle$RBClassLoader;\1\0\31()Ljava/lang/ClassLoader;\1\0\37(Ljava/util/ResourceBundle$1;)V\1\0*()Ljava/util/ResourceBundle$RBClassLoader;\1\0)(Ljava/lang/String;)Ljava/io/InputStream;\1\0((Ljava/lang/String;)Ljava/lang/Class<*>;\1\0004(Ljava/security/PrivilegedAction;)Ljava/lang/Object;\1\0\"(Ljava/lang/String;)Ljava/net/URL;\f\0\36\0'\f\0\7\0(\f\0\4\0\1\f\0\22\0)\f\0\21\0"..., 1641) = 1641 30059 lseek(4, 59361168, SEEK_SET) = 59361168 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\4\343\222\260\34\3\0\0\34\3\0\0.\0\0\0", 30) = 30 30059 lseek(4, 59361244, SEEK_SET) = 59361244 30059 read(4, "\312\376\272\276\0\0\0003\0\"\1\0\3()V\1\0\6\1\0\4Code\1\0\17EnclosingMethod\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\20java/lang/Object\1\0\36java/security/PrivilegedAction\1\0\30java/util/ResourceBundle\1\0\32java/util/ResourceBundle$1\1\0&java/util/ResourceBundle$RBClassLoader\1\0(java/util/ResourceBundle$RBClassLoader$1\1\0\3run\7\0\t\7\0\n\7\0\v\7\0\f\7\0\r\7\0\16\1\0\\Ljava/lang/Object;Ljava/security/PrivilegedAction;\1\0\24()Ljava/lang/Object;\1\0\37(Ljava/util/ResourceBundle$1;)V\1\0*()Ljava/util/ResourceBundle$RBClassLoader;\f\0\2\0\1\f\0\2\0\30\f\0\17\0\31\n\0\20\0\32\n\0\24\0\33\n\0\25\0\34\1\0\rRBClassLoader\1\0\23ResourceBundle.java\0000\0\25\0\20\0\1\0\21\0\0\0\3\0\0\0\2\0\1\0\1\0\3\0\0\0\35\0\1\0\1\0\0\0\5*\267\0\35\261\0\0\0\1\0\6\0\0\0\6\0\1\0\0\1\267\0\1\0\17\0\31\0\1\0\3\0\0\0!\0\3\0\1\0\0\0\t\273\0\24Y\1\267\0\36\260\0\0\0\1\0\6\0\0\0\6\0\1\0\0\1\271\20A\0\17\0\27\0\1\0\3\0\0\0\35\0\1\0\1\0\0\0\5*\266\0\37\260\0\0\0\1\0\6\0\0\0\6\0\1\0\0\1\267\0\4\0\10\0\0\0\2\0!\0\4\0\0\0\4\0\24\0\0\0\7\0\0\0\2\0\26\0\5\0\0\0\32\0\3\0\24\0\22\0 \0\n\0\25\0\0\0\0\0\10\0\23\0\0\0\0\0\10", 796) = 796 30059 lseek(4, 59356919, SEEK_SET) = 59356919 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305BT\235\353\2T\20\0\0T\20\0\0'\0\0\0", 30) = 30 30059 lseek(4, 59356988, SEEK_SET) = 59356988 30059 read(4, "\312\376\272\276\0\0\0003\0\246\10\0\10\10\0\17\10\0\20\10\0\21\10\0\22\10\0\24\10\0\36\1\0\2\"\"\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)V\1\0\30(Ljava/lang/Throwable;)V\1\0\10(format=\1\0\2)]\1\0\5, lc=\1\0\6, ldr=\1\0\6\1\0\tCacheKey[\1\0\4Code\1\0\1I\1\0\fInnerClasses\1\0\1J\1\0\17LineNumberTable\1\0\22Ljava/lang/String;\1\0\22Ljava/util/Locale;\1\0\nSourceFile\1\0\rStackMapTable\1\0\2__\1\0\naccess$200\1\0\naccess$400\1\0\naccess$500\1\0\naccess$600\1\0\naccess$602\1\0\naccess$700\1\0\naccess$702\1\0\6append\1\0\21calculateHashCode\1\0\5cause\1\0\5clone\1\0\6equals\1\0\16expirationTime\1\0\6format\1\0\3get\1\0\10getCause\1\0\tgetFormat\1\0\tgetLoader\1\0\tgetLocale\1\0\7getName\1\0\ngetVariant\1\0\10hashCode\1\0\rhashCodeCache\1\0\34java/lang/ClassCastException\1\0\25java/lang/ClassLoader\1\0 java/lang/ClassNotFoundException\1\0$java/lang/CloneNotSupportedException\1\0\23java/lang/Cloneable\1\0\27java/lang/InternalError\1\0\36java/lang/NullPointerException\1\0\20java/lang/Object\1\0\20java/lang/String\1\0\27java/lang/StringBuilder\1\0\20java/util/Locale\1\0\30java/util/ResourceBundle\1\0!java/util/ResourceBundle$CacheKey\1\0(java/util/ResourceBundle$LoaderReference\1\0\6"..., 4180) = 4180 30059 lseek(4, 59355947, SEEK_SET) = 59355947 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\317\204x\31\200\3\0\0\200\3\0\0.\0\0\0", 30) = 30 30059 lseek(4, 59356023, SEEK_SET) = 59356023 30059 read(4, "\312\376\272\276\0\0\0003\0 \1\0\6\1\0\4Code\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\10cacheKey\1\0\vgetCacheKey\1\0\33java/lang/ref/WeakReference\1\0\30java/util/ResourceBundle\1\0!java/util/ResourceBundle$CacheKey\1\0*java/util/ResourceBundle$CacheKeyReference\1\0(java/util/ResourceBundle$LoaderReference\7\0\t\7\0\n\7\0\v\7\0\f\7\0\r\1\0#Ljava/util/ResourceBundle$CacheKey;\1\0bLjava/lang/ref/WeakReference;Ljava/util/ResourceBundle$CacheKeyReference;\1\0%()Ljava/util/ResourceBundle$CacheKey;\1\0003(Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;)V\1\0[(Ljava/lang/ClassLoader;Ljava/lang/ref/ReferenceQueue;Ljava/util/ResourceBundle$CacheKey;)V\f\0\7\0\23\f\0\1\0\26\t\0\22\0\30\n\0\16\0\31\1\0\10CacheKey\1\0\21CacheKeyReference\1\0\17LoaderReference\1\0\23ResourceBundle.java\0000\0\22\0\16\0\1\0\21\0\1\0\2\0\7\0\23\0\0\0\2\0\0\0\1\0\27\0\1\0\2\0\0\0,\0\3\0\4\0\0\0\f*+,\267\0\33*-\265\0\32\261\0\0\0\1\0\4\0\0\0\16\0\3\0\0\2\241\0\6\2\242\0\v\2\243\0\1\0\10\0\25\0\1\0\2\0\0\0\35\0\1\0\1\0\0\0\5*\264\0\32\260\0\0\0\1\0\4\0\0\0\6\0\1\0\0\2\246\0\3\0\6\0\0\0\2\0\37\0\5\0\0\0\2\0\24\0\3\0\0\0\32\0\3\0\21\0\17\0\35\6\n\0\22\0\17\0\36\0\32\0\20\0\17\0\34\0\32", 896) = 896 30059 mprotect(0x7fb314528000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 59355531, SEEK_SET) = 59355531 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305BPa4\226R\1\0\0R\1\0\0000\0\0\0", 30) = 30 30059 lseek(4, 59355609, SEEK_SET) = 59355609 30059 read(4, "\312\376\272\276\0\0\0003\0\20\1\0\fInnerClasses\1\0\nSourceFile\1\0\vgetCacheKey\1\0\20java/lang/Object\1\0\30java/util/ResourceBundle\1\0!java/util/ResourceBundle$CacheKey\1\0*java/util/ResourceBundle$CacheKeyReference\7\0\4\7\0\5\7\0\6\7\0\7\1\0%()Ljava/util/ResourceBundle$CacheKey;\1\0\10CacheKey\1\0\21CacheKeyReference\1\0\23ResourceBundle.java\6\0\0\v\0\10\0\0\0\0\0\1\4\1\0\3\0\f\0\0\0\2\0\2\0\0\0\2\0\17\0\1\0\0\0\22\0\2\0\v\0\t\0\16\6\n\0\n\0\t\0\r\0\32", 338) = 338 30059 lseek(4, 59354265, SEEK_SET) = 59354265 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305Bb\267\214\5\242\4\0\0\242\4\0\0002\0\0\0", 30) = 30 30059 lseek(4, 59354345, SEEK_SET) = 59354345 30059 read(4, "\312\376\272\276\0\0\0003\0004\1\0\3()V\1\0\10\1\0\6\1\0\nCLASS_ONLY\1\0\4Code\1\0\7Control\1\0\fFORMAT_CLASS\1\0\21FORMAT_PROPERTIES\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\17PROPERTIES_ONLY\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\naccess$800\1\0\naccess$900\1\0\7formats\1\0\ngetFormats\1\0\36java/lang/NullPointerException\1\0\30java/util/ResourceBundle\1\0 java/util/ResourceBundle$Control\1\0,java/util/ResourceBundle$SingleFormatControl\7\0\23\7\0\24\7\0\25\7\0\26\1\0\20Ljava/util/List;\1\0\"Ljava/util/ResourceBundle$Control;\1\0$Ljava/util/List;\1\0\23(Ljava/util/List;)V\1\0$()Ljava/util/ResourceBundle$Control;\1\0'(Ljava/util/List;)V\1\0$(Ljava/lang/String;)Ljava/util/List;\1\0008(Ljava/lang/String;)Ljava/util/List;\f\0\7\0\33\f\0\10\0\33\f\0\21\0\33\f\0\4\0\34\f\0\v\0\34\f\0\3\0\1\f\0\3\0\36\t\0\32\0#\t\0\32\0$\t\0\32\0%\t\0\32\0&\t\0\32\0'\n\0\27\0(\n\0\31\0(\n\0\32\0)\1\0\23ResourceBundle.java\1\0\23SingleFormatControl\0 \0\32\0\31\0\0\0\3\0\32\0\v\0\34\0\0\0\32\0\4\0\34\0\0\0\22\0\21\0\33\0\1\0\f\0\0\0\2\0\35\0\5\0\4\0\3\0\36\0\2\0\5\0\0\0*\0\2\0\2\0\0\0\n*\267\0000*+\265\0,\261\0\0\0\1\0\n\0\0\0\16\0\3\0\0\v?\0\4\v@\0\t\vA\0\f\0\0\0\2\0 \0\1\0\22\0!\0\2\0\5\0\0\0:\0\2\0\2\0\0\0\21+\307\0\v\273\0\27Y\267\0/\277*\264\0,\260\0\0\0\2\0\16\0\0\0\3\0\1\f\0\n\0\0\0\16\0\3\0\0\vD\0\4\vE\0\f\vG\0\f\0\0\0\2\0\"\20"..., 1186) = 1186 30059 lseek(4, 57902594, SEEK_SET) = 57902594 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305BnF#\374\256&\0\0\256&\0\0\32\0\0\0", 30) = 30 30059 lseek(4, 57902650, SEEK_SET) = 57902650 30059 read(4, "\312\376\272\276\0\0\0003\1$\10\0\23\10\0\31\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\5()TE;\1\0\3()V\1\0\25(I)Ljava/lang/String;\1\0\6(I)TE;\1\0\4(I)V\1\0\4(I)Z\1\0\t(ITE;)TE;\1\0\7(ITE;)V\1\0\25(Ljava/lang/Object;)I\1\0\25(Ljava/lang/Object;)V\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)V\1\0\6(TE;)V\1\0\6(TE;)Z\1\0\10, Size: \1\0\6\1\0\4Code\1\0\rConstantValue\1\0\nExceptions\1\0\1I\1\0\7Index: \1\0\fInnerClasses\1\0\1J\1\0\17LineNumberTable\1\0\22Ljava/lang/Object;\1\0\4Node\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\23[Ljava/lang/Object;\1\0\3add\1\0\6addAll\1\0\10addFirst\1\0\7addLast\1\0\6append\1\0\21checkElementIndex\1\0\22checkPositionIndex\1\0\5clear\1\0\5clone\1\0\10contains\1\0\21defaultReadObject\1\0\22defaultWriteObject\1\0\22descendingIterator\1\0\7element\1\0\6equals\1\0\5first\1\0\3get\1\0\10getClass\1\0\20getComponentType\1\0\10getFirst\1\0\7getLast\1\0\7indexOf\1\0\16isElementIndex\1\0\17isPositionIndex\1\0\4item\1\0\23java/io/IOException\1\0\31java/io/ObjectInputStream\1\0\32java/io/ObjectOutputStream\1\0\24java/io/Serializable\1\0\17java/lang/Class\1\0 java/lang/ClassNotFoundException\1\0$java/lang/CloneNotSupportedException\1\0\23java/lang/Cloneable\1\0#java/lang/IndexOutOfBoundsExce"..., 9902) = 9902 30059 lseek(4, 57898895, SEEK_SET) = 57898895 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\tn]\v\377\7\0\0\377\7\0\0&\0\0\0", 30) = 30 30059 lseek(4, 57898963, SEEK_SET) = 57898963 30059 read(4, "\312\376\272\276\0\0\0003\0W\10\0\f\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\6(I)TE;\1\0\t(ITE;)TE;\1\0\7(ITE;)V\1\0\25(Ljava/lang/Object;)V\1\0\25(Ljava/lang/String;)V\1\0\6\1\0\4Code\1\0\7Index: \1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\3add\1\0\6addAll\1\0\6append\1\0\3get\1\0\7hasNext\1\0\10iterator\1\0#java/lang/IndexOutOfBoundsException\1\0\27java/lang/StringBuilder\1\0\26java/util/AbstractList\1\0 java/util/AbstractSequentialList\1\0\24java/util/Collection\1\0\22java/util/Iterator\1\0\26java/util/ListIterator\1\0 java/util/NoSuchElementException\1\0\flistIterator\1\0\4next\1\0\6remove\1\0\3set\1\0\10toString\7\0\27\7\0\30\7\0\31\7\0\32\7\0\33\7\0\34\7\0\35\7\0\36\1\0003Ljava/util/AbstractList;\1\0\24()Ljava/lang/Object;\1\0\25(I)Ljava/lang/Object;\1\0\26(ILjava/lang/Object;)V\1\0\34(I)Ljava/lang/StringBuilder;\1\0\32(ILjava/util/Collection;)Z\1\0 (ILjava/util/Collection<+TE;>;)Z\1\0\26()Ljava/util/Iterator;\1\0\33()Ljava/util/Iterator;\1\0\32()Ljava/util/ListIterator;\1\0\33(I)Ljava/util/ListIterator;\1\0 (I)Ljava/util/ListIterator;\1\0'(ILjava/lang/Object;)Ljava/lang/Object;\1\0-(Ljava/lang/String;)Lj"..., 2047) = 2047 30059 lseek(4, 29802129, SEEK_SET) = 29802129 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305Bf\321\271\315\315\2\0\0\315\2\0\0\37\0\0\0", 30) = 30 30059 lseek(4, 29802190, SEEK_SET) = 29802190 30059 read(4, "\312\376\272\276\0\0\0003\0\"\1\0\3()V\1\0\6\1\0\4Code\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\22Ljava/lang/Object;\1\0\4Node\1\0\tSignature\1\0\nSourceFile\1\0\3TE;\1\0\4item\1\0\20java/lang/Object\1\0\24java/util/LinkedList\1\0\31java/util/LinkedList$Node\1\0\4next\1\0\4prev\7\0\f\7\0\r\7\0\16\1\0\33Ljava/util/LinkedList$Node;\1\0 Ljava/util/LinkedList$Node;\1\0(Ljava/lang/Object;\1\0F(Ljava/util/LinkedList$Node;TE;Ljava/util/LinkedList$Node;)V\1\0K(Ljava/util/LinkedList$Node;Ljava/lang/Object;Ljava/util/LinkedList$Node;)V\f\0\v\0\6\f\0\17\0\24\f\0\20\0\24\f\0\2\0\1\t\0\23\0\31\t\0\23\0\32\t\0\23\0\33\n\0\21\0\34\1\0\17LinkedList.java\0 \0\23\0\21\0\0\0\3\0\0\0\v\0\6\0\1\0\10\0\0\0\2\0\n\0\0\0\17\0\24\0\1\0\10\0\0\0\2\0\25\0\0\0\20\0\24\0\1\0\10\0\0\0\2\0\25\0\1\0\0\0\2\0\30\0\2\0\3\0\0\0<\0\2\0\4\0\0\0\24*\267\0 *,\265\0\35*-\265\0\36*+\265\0\37\261\0\0\0\1\0\5\0\0\0\26\0\5\0\0\3\302\0\4\3\303\0\t\3\304\0\16\3\305\0\23\3\306\0\10\0\0\0\2\0\27\0\3\0\t\0\0\0\2\0!\0\10\0\0\0\2\0\26\0\4\0\0\0\n\0\1\0\23\0\22\0\7\0\n", 717) = 717 30059 lseek(4, 58639311, SEEK_SET) = 58639311 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\363y\203\26\340\f\0\0\340\f\0\0!\0\0\0", 30) = 30 30059 lseek(4, 58639374, SEEK_SET) = 58639374 30059 read(4, "\312\376\272\276\0\0\0003\0=\10\0\r\10\0\16\10\0\17\10\0\20\10\0\21\10\0\22\10\0#\10\0$\10\0%\10\0&\10\0'\10\0(\1\3F be be_BY bg bg_BG ca ca_ES cs cs_CZ da da_DK de de_AT de_CH de_DE de_LU el el_CY el_GR en en_AU en_CA en_GB en_IE en_IN en_MT en_NZ en_PH en_SG en_US en_ZA es es_AR es_BO es_CL es_CO es_CR es_DO es_EC es_ES es_GT es_HN es_MX es_NI es_PA es_PE es_PR es_PY es_SV es_US es_UY es_VE et et_EE fi fi_FI fr fr_BE fr_CA fr_CH fr_FR fr_LU ga ga_IE hr hr_HR hu hu_HU in in_ID is is_IS it it_CH it_IT lt lt_LT lv lv_LV mk mk_MK ms ms_MY mt mt_MT nl nl_BE nl_NL no no_NO no_NO_NY pl pl_PL pt pt_BR pt_PT ro ro_RO ru ru_RU sk sk_SK sl sl_SI sq sq_AL sr sr_BA sr_CS sr_Latn sr_Latn_BA sr_Latn_ME sr_Latn_RS sr_ME sr_RS sv sv_SE tr tr_TR uk uk_UA | ar ar_AE ar_BH ar_DZ ar_EG ar_IQ ar_JO ar_KW ar_LB ar_LY ar_MA ar_OM ar_QA ar_SA ar_SD ar_SY ar_TN ar_YE hi_IN iw iw_IL ja ja_JP ja_JP_JP ko ko_KR th th_TH th_TH_TH vi vi_VN zh zh_CN zh_HK zh_SG zh_TW \1\0\343 be bg ca cs da de el el_CY en en_GB en_IE en_MT es es_ES es_US et fi fr fr_CA hr hu in_ID is it lt lv mk ms_"..., 3296) = 3296 30059 mprotect(0x7fb314529000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 58636449, SEEK_SET) = 58636449 30059 read(4, "PK\3\4\n\0\0\0\0\0=\246\305B\2330\\\315\355\n\0\0\355\n\0\0#\0\0\0", 30) = 30 30059 lseek(4, 58636514, SEEK_SET) = 58636514 30059 read(4, "\312\376\272\276\0\0\0003\0\343\10\0h\10\0i\10\0j\10\0k\10\0l\10\0n\10\0o\10\0p\10\0q\10\0r\10\0t\10\0u\10\0v\10\0w\10\0x\10\0y\10\0z\10\0{\10\0|\10\0~\10\0\177\10\0\200\10\0\201\10\0\202\10\0\203\10\0\204\10\0\205\10\0\206\10\0\207\10\0\210\10\0\211\10\0\212\10\0\213\10\0\214\10\0\215\10\0\216\10\0\217\10\0\220\10\0\221\10\0\222\10\0\223\10\0\224\10\0\225\10\0\226\10\0\227\10\0\230\10\0\231\10\0\232\10\0\233\10\0\235\10\0\236\10\0\237\10\0\240\10\0\241\10\0\242\10\0\243\10\0\244\10\0\245\10\0\246\10\0\247\10\0\250\10\0\251\10\0\252\10\0\253\10\0\254\10\0\255\10\0\256\10\0\257\10\0\260\10\0\261\10\0\262\10\0\263\10\0\264\10\0\265\10\0\267\10\0\270\10\0\271\10\0\272\10\0\273\10\0\274\10\0\275\10\0\276\10\0\277\10\0\300\10\0\302\10\0\303\10\0\304\10\0\306\10\0\307\10\0\310\10\0\311\10\0\312\10\0\313\10\0\314\10\0\320\10\0\321\10\0\322\10\0\324\10\0\325\10\0\326\10\0\327\10\0\330\10\0\331\1\0\0\1\0\1#\1\0\6#,##0%\1\0\24#,##0.###;-#,##0.###\1\0\1%\1\0\3()V\1\0\1,\1\0\1-\1\0\1.\1\0\0010\1\0\1;\1\0\6\1\0\2AD\1\0\2AM\1\0\vAmPmMarkers\1\0\3Apr\1\0\5April\1\0\3Aug\1\0\6August\1\0\4B.E.\1\0\2BC\1\0\4Code\1\0\24DateTimePatternChars\1\0\20DateTimePatterns\1\0\20DayAbbreviations\1\0\10DayNames\1\0\3Dec\1\0\10December\1\0\1E\1\0\22EEEE d MMMM G yyyy\1\0\22EEEE, MMMM d, yyyy\1\0\4Eras\1\0\3Feb\1\0\10February\1\0\3Fri\1\0\6Friday\1\0\17GGGG yyyy MMM d\1\0\20GGGG yyyy MMMM d\1\0\27GGGG yyyy MMMM d (EEEE)\1\0\10Gy.MM.dd\1\0\23GyMdkHmsSEDFwWahKzZ\1\0\1H\1\0\4H:mm\1\0\7H:mm:ss\1\0\tH:mm:ss z\1\0\6Heisei\1\0\3Jan\1\0\7January\1\0\3Jul\1\0\4July\1\0\3Jun\1\0\4June\1\0\17LineNumberTable\1\0\1M\1\0\6M/d/yy\1\0\vMMM d, yyyy\1\0\fMMMM d, yyyy\1\0\3Mar\1\0\5March\1\0\3May\1\0\5Meiji\1\0\3Mon\1\0\6Monday\1\0\22MonthAbbreviations\1\0\nMonthNames\1\0\3Nov\1\0\10November\1\0\16NumberElements\1\0\16Num"..., 2797) = 2797 30059 mprotect(0x7fb31452a000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 59342864, SEEK_SET) = 59342864 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\2027\373\240\317\6\0\0\317\6\0\0\"\0\0\0", 30) = 30 30059 lseek(4, 59342928, SEEK_SET) = 59342928 30059 read(4, "\312\376\272\276\0\0\0003\0M\1\0\3()V\1\0\4(I)V\1\0&(Ljava/lang/String;)Ljava/lang/Object;\1\0\6\1\0\4Code\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\24[[Ljava/lang/Object;\1\0\3get\1\0\vgetContents\1\0\7getKeys\1\0\17handleGetObject\1\0\fhandleKeySet\1\0\36java/lang/NullPointerException\1\0\20java/lang/Object\1\0\20java/lang/String\1\0\25java/util/Enumeration\1\0\21java/util/HashMap\1\0\34java/util/ListResourceBundle\1\0\rjava/util/Map\1\0\30java/util/ResourceBundle\1\0\rjava/util/Set\1\0\6keySet\1\0\nloadLookup\1\0\6lookup\1\0\6parent\1\0\3put\1\0\"sun/util/ResourceBundleEnumeration\7\0\n\7\0\20\7\0\21\7\0\22\7\0\23\7\0\24\7\0\25\7\0\26\7\0\27\7\0\30\7\0\36\1\0\17Ljava/util/Map;\1\0\32Ljava/util/ResourceBundle;\1\0005Ljava/util/Map;\1\0\26()[[Ljava/lang/Object;\1\0\31()Ljava/util/Enumeration;\1\0\21()Ljava/util/Set;\1\0&(Ljava/lang/Object;)Ljava/lang/Object;\1\0-()Ljava/util/Enumeration;\1\0%()Ljava/util/Set;\1\0)(Ljava/util/Set;Ljava/util/Enumeration;)V\1\0008(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;\f\0\33\0*\f\0\34\0+\f\0\4\0\1\f\0\32\0\1\f\0\4\0\2\f\0\f\0-\f\0\r\0.\f\0\31\0/\f\0\v\0000\f"..., 1743) = 1743 30059 lseek(4, 58635471, SEEK_SET) = 58635471 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\263\376\235\326\206\3\0\0\206\3\0\0.\0\0\0", 30) = 30 30059 lseek(4, 58635547, SEEK_SET) = 58635547 30059 read(4, "\312\376\272\276\0\0\0003\0 \1\0\6\1\0\4Code\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\10cacheKey\1\0\vgetCacheKey\1\0\33java/lang/ref/SoftReference\1\0\30java/util/ResourceBundle\1\0(java/util/ResourceBundle$BundleReference\1\0!java/util/ResourceBundle$CacheKey\1\0*java/util/ResourceBundle$CacheKeyReference\7\0\t\7\0\n\7\0\v\7\0\f\7\0\r\1\0#Ljava/util/ResourceBundle$CacheKey;\1\0eLjava/lang/ref/SoftReference;Ljava/util/ResourceBundle$CacheKeyReference;\1\0%()Ljava/util/ResourceBundle$CacheKey;\1\0003(Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;)V\1\0^(Ljava/util/ResourceBundle;Ljava/lang/ref/ReferenceQueue;Ljava/util/ResourceBundle$CacheKey;)V\f\0\7\0\23\f\0\1\0\26\t\0\20\0\30\n\0\16\0\31\1\0\17BundleReference\1\0\10CacheKey\1\0\21CacheKeyReference\1\0\23ResourceBundle.java\0000\0\20\0\16\0\1\0\22\0\1\0\2\0\7\0\23\0\0\0\2\0\0\0\1\0\27\0\1\0\2\0\0\0,\0\3\0\4\0\0\0\f*+,\267\0\33*-\265\0\32\261\0\0\0\1\0\4\0\0\0\16\0\3\0\0\2\263\0\6\2\264\0\v\2\265\0\1\0\10\0\25\0\1\0\2\0\0\0\35\0\1\0\1\0\0\0\5*\264\0\32\260\0\0\0\1\0\4\0\0\0\6\0\1\0\0\2\270\0\3\0\6\0\0\0\2\0\37\0\5\0\0\0\2\0\24\0\3\0\0\0\32\0\3\0\20\0\17\0\34\0\32\0\22\0\17\0\36\6\n\0\21\0\17\0\35\0\32", 902) = 902 30059 lseek(4, 58634833, SEEK_SET) = 58634833 30059 read(4, "PK\3\4\n\0\0\0\0\0@\246\305B\366\235\v\215:\2\0\0:\2\0\0&\0\0\0", 30) = 30 30059 lseek(4, 58634901, SEEK_SET) = 58634901 30059 read(4, "\312\376\272\276\0\0\0003\0!\10\0\7\10\0\10\10\0\f\10\0\r\10\0\17\10\0\27\1\0\6#,##0%\1\0\24#,##0.###;-#,##0.###\1\0\3()V\1\0\6\1\0\4Code\1\0\24DateTimePatternChars\1\0\23GyMdkHmsSEDFwWahKzZ\1\0\17LineNumberTable\1\0\16NumberPatterns\1\0\nSourceFile\1\0\23[Ljava/lang/Object;\1\0\vgetContents\1\0\20java/lang/Object\1\0\20java/lang/String\1\0\34java/util/ListResourceBundle\1\0 sun/text/resources/FormatData_en\1\0\26\302\244#,##0.00;-\302\244#,##0.00\7\0\21\7\0\23\7\0\24\7\0\25\7\0\26\1\0\26()[[Ljava/lang/Object;\f\0\n\0\t\n\0\33\0\36\1\0\22FormatData_en.java\0!\0\34\0\33\0\0\0\0\0\2\0\1\0\n\0\t\0\1\0\v\0\0\0\35\0\1\0\1\0\0\0\5*\267\0\37\261\0\0\0\1\0\16\0\0\0\6\0\1\0\0\0-\0\24\0\22\0\35\0\1\0\v\0\0\0P\0\n\0\1\0\0\0008\5\275\0\30Y\3\5\275\0\31Y\3\22\5SY\4\6\275\0\32Y\3\22\2SY\4\22\6SY\5\22\1SSSY\4\5\275\0\31Y\3\22\3SY\4\22\4SS\260\0\0\0\1\0\16\0\0\0\6\0\1\0\0\0007\0\1\0\20\0\0\0\2\0 ", 570) = 570 30059 lseek(4, 58634253, SEEK_SET) = 58634253 30059 read(4, "PK\3\4\n\0\0\0\0\0@\246\305BQC\217:\375\1\0\0\375\1\0\0)\0\0\0", 30) = 30 30059 lseek(4, 58634324, SEEK_SET) = 58634324 30059 read(4, "\312\376\272\276\0\0\0003\0\35\10\0\5\10\0\6\10\0\v\10\0\23\1\0\6#,##0%\1\0\24#,##0.###;-#,##0.###\1\0\3()V\1\0\6\1\0\4Code\1\0\17LineNumberTable\1\0\16NumberPatterns\1\0\nSourceFile\1\0\23[Ljava/lang/Object;\1\0\vgetContents\1\0\20java/lang/Object\1\0\20java/lang/String\1\0\34java/util/ListResourceBundle\1\0#sun/text/resources/FormatData_en_US\1\0\27\302\244#,##0.00;(\302\244#,##0.00)\7\0\r\7\0\17\7\0\20\7\0\21\7\0\22\1\0\26()[[Ljava/lang/Object;\f\0\10\0\7\n\0\27\0\32\1\0\25FormatData_en_US.java\0!\0\30\0\27\0\0\0\0\0\2\0\1\0\10\0\7\0\1\0\t\0\0\0\35\0\1\0\1\0\0\0\5*\267\0\33\261\0\0\0\1\0\n\0\0\0\6\0\1\0\0\0-\0\24\0\16\0\31\0\1\0\t\0\0\0?\0\n\0\1\0\0\0'\4\275\0\24Y\3\5\275\0\25Y\3\22\3SY\4\6\275\0\26Y\3\22\2SY\4\22\4SY\5\22\1SSS\260\0\0\0\1\0\n\0\0\0\6\0\1\0\0\0002\0\1\0\f\0\0\0\2\0\34", 509) = 509 30059 lseek(4, 58626231, SEEK_SET) = 58626231 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B_~}\332\24\37\0\0\24\37\0\0$\0\0\0", 30) = 30 30059 lseek(4, 58626297, SEEK_SET) = 58626297 30059 read(4, "\312\376\272\276\0\0\0003\0014\10\0\t\10\0%\10\0*\10\0+\10\0u\10\0\220\10\0\221\10\0\224\1\0\0\1\0\3()C\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\25(C)Ljava/lang/String;\1\0\4(C)V\1\0\4(I)C\1\0\4(I)V\1\0\25(Ljava/lang/Object;)Z\1\0&(Ljava/lang/String;)Ljava/lang/String;\1\0\25(Ljava/lang/String;)V\1\0\25(Ljava/util/Locale;)V\1\0\10\1\0\6\1\0\1C\1\0\4Code\1\0\rConstantValue\1\0\nExceptions\1\0\6FORMAT\1\0\1I\1\0\fInnerClasses\1\0\1J\1\0\17LineNumberTable\1\0\22Ljava/lang/String;\1\0\22Ljava/util/Locale;\1\0\3NaN\1\0\16NumberElements\1\0\4ROOT\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\2TH\1\0\3XXX\1\0\23[Ljava/lang/Object;\1\0\23[Ljava/lang/String;\1\0\naccess$000\1\0\20cachedLocaleData\1\0\6charAt\1\0\5clone\1\0\10currency\1\0\16currencySymbol\1\0\24currentSerialVersion\1\0\20decimalSeparator\1\0\21defaultReadObject\1\0\5digit\1\0\6equals\1\0\vexponential\1\0\24exponentialSeparator\1\0\3get\1\0\23getAvailableLocales\1\0\10getClass\1\0\ngetCountry\1\0\vgetCurrency\1\0\17getCurrencyCode\1\0\21getCurrencySymbol\1\0\23getDecimalSeparator\1\0\ngetDefault\1\0\10getDigit\1\0\24getExponentSeparator\1\0\24getExponentialSymbol\1\0\24getGroupingSeparator\1\0\vgetInfinity\1\0\vgetInstance\1\0\36getInternationalCurrencySymbol\1\0\22getL"..., 7956) = 7956 30059 lseek(4, 58625809, SEEK_SET) = 58625809 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B|\211\236aX\1\0\0X\1\0\0000\0\0\0", 30) = 30 30059 lseek(4, 58625887, SEEK_SET) = 58625887 30059 read(4, "\312\376\272\276\0\0\0003\0\17\1\0\3()V\1\0\6\1\0\4Code\1\0\17LineNumberTable\1\0\nSourceFile\1\0\vgetInstance\1\0*java/text/spi/DecimalFormatSymbolsProvider\1\0#java/util/spi/LocaleServiceProvider\7\0\7\7\0\10\1\0004(Ljava/util/Locale;)Ljava/text/DecimalFormatSymbols;\f\0\2\0\1\n\0\n\0\f\1\0!DecimalFormatSymbolsProvider.java\4!\0\t\0\n\0\0\0\0\0\2\0\4\0\2\0\1\0\1\0\3\0\0\0!\0\1\0\1\0\0\0\5*\267\0\r\261\0\0\0\1\0\4\0\0\0\n\0\2\0\0\0-\0\4\0.\4\1\0\6\0\v\0\0\0\1\0\5\0\0\0\2\0\16", 344) = 344 30059 lseek(4, 58616012, SEEK_SET) = 58616012 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\\n\302\16\17&\0\0\17&\0\0\30\0\0\0", 30) = 30 30059 lseek(4, 58616066, SEEK_SET) = 58616066 30059 read(4, "\312\376\272\276\0\0\0003\1\225\3\200\0\0\0\3\0\3\377\0\10\0\10\10\0\t\10\0\33\10\0<\10\0k\1\0000 is ignored because of the invalid country code.\1\0007 is ignored because the value format is not recognized.\1\0\3()I\1\0\3()J\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\5(CC)I\1\0\6(CCI)V\1\0\4(I)C\1\0\26(I)Ljava/lang/Integer;\1\0\25(I)Ljava/lang/String;\1\0\4(I)V\1\0\4(I)Z\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)I\1\0&(Ljava/lang/String;)Ljava/lang/String;\1\0\25(Ljava/lang/String;)V\1\0'(Ljava/lang/String;Ljava/lang/String;)V\1\0\1-\1\0\10\1\0\6\1\0\6A_TO_Z\1\0\21COUNTRY_TYPE_MASK\1\0\36COUNTRY_WITHOUT_CURRENCY_ENTRY\1\0\4Code\1\0\rConstantValue\1\0\7DISPLAY\1\0\vDISPLAYNAME\1\0\nExceptions\1\0\1I\1\0\25INVALID_COUNTRY_ENTRY\1\0\fInnerClasses\1\0\1J\1\0\17LineNumberTable\1\0\22Ljava/lang/String;\1\0\22Ljava/util/Locale;\1\0\fMAGIC_NUMBER\1\0\21NUMERIC_CODE_MASK\1\0\22NUMERIC_CODE_SHIFT\1\0\4ROOT\1\0'SIMPLE_CASE_COUNTRY_DEFAULT_DIGITS_MASK\1\0(SIMPLE_CASE_COUNTRY_DEFAULT_DIGITS_SHIFT\1\0#SIMPLE_CASE_COUNTRY_FINAL_CHAR_MASK\1\0\30SIMPLE_CASE_COUNTRY_MASK\1\0 SPECIAL_CASE_COUNTRY_INDEX_DELTA\1\0\37SPECIAL_CASE_COUNTRY_INDEX_MASK\1\0\31SPECIAL_CASE_COUNTRY_MASK\1\0\6S"..., 9743) = 9743 30059 mprotect(0x7fb31452b000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb31452c000, 8192, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 58612216, SEEK_SET) = 58612216 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305BZ\241\3435\234\16\0\0\234\16\0\0\32\0\0\0", 30) = 30 30059 lseek(4, 58612272, SEEK_SET) = 58612272 30059 read(4, "\312\376\272\276\0\0\0003\0\335\3CurD\10\0\21\10\0\24\10\0\25\10\0,\10\0-\10\0.\10\0006\10\0K\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0&(Ljava/lang/String;)Ljava/lang/String;\1\0\25(Ljava/lang/String;)V\1\0\30(Ljava/lang/Throwable;)V\1\0&([A-Z]{3})\\s*,\\s*(\\d{3})\\s*,\\s*([0-3])\1\0\6\1\0\4Code\1\0!Currency data format is incorrect\1\0#Currency data is possibly corrupted\1\0\17EnclosingMethod\1\0\1I\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\22Ljava/lang/String;\1\0\22Ljava/util/Locale;\1\0\4ROOT\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\2[I\1\0\2[J\1\0\23[Ljava/lang/String;\1\0\naccess$000\1\0\naccess$100\1\0\naccess$200\1\0\naccess$300\1\0\naccess$400\1\0\raddSuppressed\1\0\6append\1\0\5close\1\0\7compile\1\0\rcurrency.data\1\0\23currency.properties\1\0008currency.properties is ignored because of an IOException\1\0\vdataVersion\1\0\6exists\1\0\rformatVersion\1\0\vgetProperty\1\0\7hasNext\1\0\tinitCause\1\0\10iterator\1\0\tjava.home\1\0\33java/io/BufferedInputStream\1\0\27java/io/DataInputStream\1\0\fjava/io/File\1\0\27java/io/FileInputStream\1\0\22java/io/FileReader\1\0\23java/io/IOException\1\0\27java/lang/InternalError\1\0\20java/lang/Object\1\0\20java/lang/String\1\0\27java/lang/"..., 3740) = 3740 30059 lseek(4, 58509537, SEEK_SET) = 58509537 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305BH(F=\267\22\0\0\267\22\0\0\35\0\0\0", 30) = 30 30059 lseek(4, 58509596, SEEK_SET) = 58509596 30059 read(4, "\312\376\272\276\0\0\0003\0\235\10\0009\10\0:\1\0\3()B\1\0\3()C\1\0\3()D\1\0\3()F\1\0\3()I\1\0\3()J\1\0\24()Ljava/lang/String;\1\0\3()S\1\0\3()V\1\0\3()Z\1\0\4(I)F\1\0\4(I)I\1\0\4(I)V\1\0\4(J)D\1\0\4(J)J\1\0\25(Ljava/lang/String;)V\1\0\5([B)I\1\0\5([B)V\1\0\7([BII)I\1\0\7([BII)V\1\0\7([CII)V\1\0\6\1\0\4Code\1\0\nDeprecated\1\0\nExceptions\1\0\17LineNumberTable\1\0\31RuntimeVisibleAnnotations\1\0\nSourceFile\1\0\rStackMapTable\1\0\2[B\1\0\2[C\1\0\6append\1\0\tarraycopy\1\0\7bytearr\1\0\7chararr\1\0\vcopyValueOf\1\0\2in\1\0\16intBitsToFloat\1\0\21java/io/DataInput\1\0\27java/io/DataInputStream\1\0\24java/io/EOFException\1\0\31java/io/FilterInputStream\1\0\23java/io/IOException\1\0\23java/io/InputStream\1\0\33java/io/PushbackInputStream\1\0\36java/io/UTFDataFormatException\1\0\20java/lang/Double\1\0\17java/lang/Float\1\0#java/lang/IndexOutOfBoundsException\1\0\20java/lang/String\1\0\27java/lang/StringBuilder\1\0\20java/lang/System\1\0\nlineBuffer\1\0\20longBitsToDouble\1\0\34malformed input around byte \1\0)malformed input: partial character at end\1\0\4read\1\0\vreadBoolean\1\0\nreadBuffer\1\0\10readByte\1\0\10readChar\1\0\nreadDouble\1\0\treadFloat\1\0\treadFully\1\0\7readInt\1\0\10readLine\1\0\10readLong\1\0\treadShort\1\0\7readUTF\1"..., 4791) = 4791 30059 lseek(4, 58508795, SEEK_SET) = 58508795 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\252\231\24\250\261\2\0\0\261\2\0\0\27\0\0\0", 30) = 30 30059 lseek(4, 58508848, SEEK_SET) = 58508848 30059 read(4, "\312\376\272\276\0\0\0003\0$\1\0\3()B\1\0\3()C\1\0\3()D\1\0\3()F\1\0\3()I\1\0\3()J\1\0\24()Ljava/lang/String;\1\0\3()S\1\0\3()Z\1\0\4(I)I\1\0\5([B)V\1\0\7([BII)V\1\0\nExceptions\1\0\nSourceFile\1\0\21java/io/DataInput\1\0\23java/io/IOException\1\0\20java/lang/Object\1\0\vreadBoolean\1\0\10readByte\1\0\10readChar\1\0\nreadDouble\1\0\treadFloat\1\0\treadFully\1\0\7readInt\1\0\10readLine\1\0\10readLong\1\0\treadShort\1\0\7readUTF\1\0\20readUnsignedByte\1\0\21readUnsignedShort\1\0\tskipBytes\7\0\17\7\0\20\7\0\21\1\0\16DataInput.java\6\1\0 \0\"\0\0\0\0\0\17\4\1\0\27\0\v\0\1\0\r\0\0\0\4\0\1\0!\4\1\0\27\0\f\0\1\0\r\0\0\0\4\0\1\0!\4\1\0\37\0\n\0\1\0\r\0\0\0\4\0\1\0!\4\1\0\22\0\t\0\1\0\r\0\0\0\4\0\1\0!\4\1\0\23\0\1\0\1\0\r\0\0\0\4\0\1\0!\4\1\0\35\0\5\0\1\0\r\0\0\0\4\0\1\0!\4\1\0\33\0\10\0\1\0\r\0\0\0\4\0\1\0!\4\1\0\36\0\5\0\1\0\r\0\0\0\4\0\1\0!\4\1\0\24\0\2\0\1\0\r\0\0\0\4\0\1\0!\4\1\0\30\0\5\0\1\0\r\0\0\0\4\0\1\0!\4\1\0\32\0\6\0\1\0\r\0\0\0\4\0\1\0!\4\1\0\26\0\4\0\1\0\r\0\0\0\4\0\1\0!\4\1\0\25\0\3\0\1\0\r\0\0\0\4\0\1\0!\4\1\0\31\0\7\0\1\0\r\0\0\0\4\0\1\0!\4\1\0\34\0\7\0\1\0\r\0\0\0\4\0\1\0!\0\1\0\16\0\0\0\2\0#", 689) = 689 30059 open("/software/jdk1.7.0_25/jre/lib/currency.data", O_RDONLY) = 8 30059 fstat(8, {st_mode=S_IFREG|0555, st_size=4200, ...}) = 0 30059 fcntl(8, F_GETFD) = 0 30059 fcntl(8, F_SETFD, FD_CLOEXEC) = 0 30059 read(8, "CurD\0\0\0\1\0\0\0\227\0\0\0\177\0\0\0\177\0\0\0\177\0\0\0\201\0\3\20C\0\3\313M\0\0\0\202\0\0\0\177\0\0\0\202\0\0\0\177\0\0\0\177\0\0\10K\0\0003C\0\2\24F\0\3\315@\0\0\0\177\0\0\0\200\0\0 R\0\0\0\203\0\0\0\201\0\0$C\0\0\0\177\0\2\25F\0\0\0\201\0\0\0\177\0\0\0\204\0\3\321L\0\0004C\0\0\0\177\0\0002S\0\0\0\201\0\0\0\205\0\3\317M\0\0000c\0\0l\5\0\0\0\205\0\0\0\177\0\0\0\201\0\0\1\0\4Code\1\0\17LineNumberTable\1\0\nSourceFile\1\0\rStackMapTable\1\0@The currencyCode is not in the form of three upper-case letters.\1\0\33The locale is not available\1\0\2[C\1\0\6asList\1\0\10contains\1\0\23getAvailableLocales\1\0\16getDisplayName\1\0\tgetSymbol\1\0\"java/lang/IllegalArgumentException\1\0\36java/lang/NullPointerException\1\0\20java/lang/String\1\0\20java/util/Arrays\1\0\16java/util/List\1\0\"java/util/spi/CurrencyNameProvider\1\0#java/util/spi/LocaleServiceProvider\1\0\vtoCharArray\7\0\16\7\0\24\7\0\25\7\0\26\7\0\27\7\0\30\7\0\31\7\0\32\1\0\25()[Ljava/util/Locale;\1\0%([Ljava/lang/Object;)Ljava/util/List;\1\0008(Ljava/lang/String;Ljava/util/Locale;)Ljava/lang/String;\f\0\7\0\3\f\0\33\0\4\f\0\20\0\5\f\0\7\0\6\f\0\21\0$\f\0\17\0%\n\0\35\0*\n\0\36\0'\n\0\37\0(\n\0 \0,\n\0\"\0+\n\0#\0'\v\0!\0)\1\0\31CurrencyNameProvider.java\4!\0\"\0#\0\0\0\0\0\3\0\4\0\7\0\3\0\1\0\10\0\0\0!\0\1\0\1\0\0\0\5*\267\0002\261\0\0\0\1\0\t\0\0\0\n\0\2\0\0\0002\0\4\0003\4\1\0\23\0&\0\0\0\1\0\22\0&\0\1\0\10\0\0\0\354\0\3\0\10\0\0\0|+\306\0\7,\307\0\v\273\0\36Y\267\0.\277+\266\0/N-\276\6\237\0\r\273\0\35Y\22\1\267\0-\277-:\4\31\4\2766\5\0036\6\25\6\25\5\242\0(\31\4\25\00646\7\25\7\20A\241\0\n\25\7\20Z\244\0\r\273\0\35Y\22\1\267\0-\277\204\6\1\247\377\327*\266\0001\270\0000:\4\31\4,\271\0003\2\0\232\0\r\273\0\35Y\22\2\267\0-\277\1\260\0\0\0\2\0\v\0\0\0\"\0\10\10\7\374\0\24\7\0\34"..., 1094) = 1094 30059 lseek(4, 58593468, SEEK_SET) = 58593468 30059 read(4, "PK\3\4\n\0\0\0\0\0=\246\305B\245\226\26\240lD\0\0lD\0\0&\0\0\0", 30) = 30 30059 lseek(4, 58593536, SEEK_SET) = 58593536 30059 read(4, "\312\376\272\276\0\0\0003\5\37\10\0\377\10\1\0\10\1\1\10\1\2\10\1\3\10\1\4\10\1\5\10\1\6\10\1\7\10\1\10\10\1\t\10\1\n\10\1\v\10\1\f\10\1\r\10\1\16\10\1\17\10\1\20\10\1\22\10\1\23\10\1\24\10\1\25\10\1\26\10\1\27\10\1\30\10\1\31\10\1\32\10\1\33\10\1\34\10\1\35\10\1\36\10\1\37\10\1 \10\1!\10\1\"\10\1#\10\1$\10\1%\10\1&\10\1'\10\1(\10\1)\10\1*\10\1+\10\1,\10\1-\10\0010\10\0011\10\1:\10\1B\10\1C\10\1G\10\1H\10\1I\10\1J\10\1K\10\1L\10\1M\10\1N\10\1O\10\1P\10\1Q\10\1R\10\1d\10\1e\10\1f\10\1g\10\1h\10\1m\10\1n\10\1o\10\1p\10\1q\10\1r\10\1}\10\1~\10\1\177\10\1\200\10\1\207\10\1\210\10\1\211\10\1\212\10\1\213\10\1\214\10\1\215\10\1\216\10\1\217\10\1\220\10\1\221\10\1\236\10\1\237\10\1\240\10\1\241\10\1\242\10\1\247\10\1\250\10\1\251\10\1\252\10\1\253\10\1\254\10\1\255\10\1\256\10\1\267\10\1\270\10\1\271\10\1\275\10\1\276\10\1\277\10\1\300\10\1\301\10\1\302\10\1\303\10\1\304\10\1\305\10\1\312\10\1\313\10\1\314\10\1\315\10\1\316\10\1\317\10\1\320\10\1\321\10\1\322\10\1\334\10\1\335\10\1\336\10\1\337\10\1\340\10\1\341\10\1\342\10\1\343\10\1\344\10\1\345\10\1\346\10\1\347\10\1\350\10\1\351\10\1\352\10\1\353\10\1\354\10\1\355\10\2\0\10\2\1\10\2\2\10\2\3\10\2\4\10\2\5\10\2\6\10\2\t\10\2\20\10\2\22\10\2\23\10\2\24\10\2\25\10\2\26\10\2\27\10\2\30\10\2\31\10\2$\10\2&\10\2'\10\2(\10\2)\10\2*\10\2+\10\0021\10\0022\10\0023\10\0024\10\0025\10\0026\10\0027\10\0028\10\0029\10\2:\10\2;\10\2<\10\2=\10\2>\10\2?\10\2@\10\2A\10\2B\10\2`\10\2a\10\2b\10\2c\10\2d\10\2e\10\2f\10\2g\10\2h\10\2i\10\2j\10\2k\10\2x\10\2y\10\2}\10\2~\10\2\177\10\2\200\10\2\201\10\2\204\10\2\210\10\2\211\10\2\212\10\2\213\10\2\220\10\2\221\10\2\222\10\2\223\10\2\224\10\2\225\10\2\226\10\2\227\10\2\230\10\2\231\10\2\232\10\2\233\10\2\234\10\2\235\10\2\236\10\2\237\10\2\240\10\2\241\10\2\242\10\2\243\10\2\244\10\2\245\10\2\250\10\2\251\10\2\252\10\2\253\10\2\254\10\2\255\10\2\263\10\2\264\10\2\265\10\2\266\10\2\267\10\2\270\10\2\271\10\2\272\10\2\273\10\2\274\10\2\275\10\2\276\10\2\277\10\2\300\10\2\301\10\2\302\10\2\303\1\0\3()V\1\0\6\1\0\3ADP\1\0\3AED\1\0\3AFA\1\0\3AFN\1\0\3ALL\1\0\3AMD\1\0\3ANG\1\0\3AOA\1\0\3ARS\1\0\3ATS\1\0\3AUD\1\0\3AWG\1\0\3AYM\1\0\3AZM\1\0\3AZN\1\0\16Afghan Afghani\1\0\32Afghan Afghani (1927-2002)\1\0\fAlbanian Lek\1\0\16Algerian Dinar\1\0\17Andorran Peseta\1\0\16Angolan Kwanza\1\0\16Argentine Pes"..., 17516) = 17516 30059 mprotect(0x7fb31452e000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb31452f000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb314530000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb314531000, 8192, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb314533000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb314534000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb314535000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 58593140, SEEK_SET) = 58593140 30059 read(4, "PK\3\4\n\0\0\0\0\0=\246\305B\0340\5n\0\1\0\0\0\1\0\0*\0\0\0", 30) = 30 30059 lseek(4, 58593212, SEEK_SET) = 58593212 30059 read(4, "\312\376\272\276\0\0\0003\0\r\1\0\3()V\1\0\6\1\0\4Code\1\0\17LineNumberTable\1\0\nSourceFile\1\0$sun/util/resources/LocaleNamesBundle\1\0)sun/util/resources/OpenListResourceBundle\7\0\6\7\0\7\f\0\2\0\1\n\0\t\0\n\1\0\26LocaleNamesBundle.java\4!\0\10\0\t\0\0\0\0\0\1\0\4\0\2\0\1\0\1\0\3\0\0\0!\0\1\0\1\0\0\0\5*\267\0\v\261\0\0\0\1\0\4\0\0\0\n\0\2\0\0\0&\0\4\0'\0\1\0\5\0\0\0\2\0\f", 256) = 256 30059 mprotect(0x7fb314536000, 8192, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 58591111, SEEK_SET) = 58591111 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\233\303\354\26\240\7\0\0\240\7\0\0/\0\0\0", 30) = 30 30059 lseek(4, 58591188, SEEK_SET) = 58591188 30059 read(4, "\312\376\272\276\0\0\0003\0W\1\0\3()V\1\0\4(I)V\1\0&(Ljava/lang/String;)Ljava/lang/Object;\1\0\6\1\0\4Code\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\24[[Ljava/lang/Object;\1\0\tcreateMap\1\0\3get\1\0\vgetContents\1\0\7getKeys\1\0\tgetParent\1\0\rhandleGetKeys\1\0\17handleGetObject\1\0\36java/lang/NullPointerException\1\0\20java/lang/Object\1\0\20java/lang/String\1\0\25java/util/Enumeration\1\0\21java/util/HashMap\1\0\rjava/util/Map\1\0\30java/util/ResourceBundle\1\0\rjava/util/Set\1\0\6keySet\1\0\nloadLookup\1\0\33loadLookupTablesIfNecessary\1\0\6lookup\1\0\6parent\1\0\3put\1\0\"sun/util/ResourceBundleEnumeration\1\0)sun/util/resources/OpenListResourceBundle\7\0\n\7\0\22\7\0\23\7\0\24\7\0\25\7\0\26\7\0\27\7\0\30\7\0\31\7\0 \7\0!\1\0\17Ljava/util/Map;\1\0\32Ljava/util/ResourceBundle;\1\0\26()[[Ljava/lang/Object;\1\0\31()Ljava/util/Enumeration;\1\0\22(I)Ljava/util/Map;\1\0\21()Ljava/util/Set;\1\0-()Lsun/util/resources/OpenListResourceBundle;\1\0&(Ljava/lang/Object;)Ljava/lang/Object;\1\0-()Ljava/util/Enumeration;\1\0%()Ljava/util/Set;\1\0)(Ljava/util/Set;Ljava/util/Enumeration;)V\1\0008(Ljava/lang/Object;Lj"..., 1952) = 1952 30059 lseek(4, 58590624, SEEK_SET) = 58590624 30059 read(4, "PK\3\4\n\0\0\0\0\0=\246\305B)\357\37\237\235\1\0\0\235\1\0\0,\0\0\0", 30) = 30 30059 lseek(4, 58590698, SEEK_SET) = 58590698 30059 read(4, "\312\376\272\276\0\0\0003\0\27\10\0\3\10\0\t\1\0\1$\1\0\3()V\1\0\6\1\0\4Code\1\0\17LineNumberTable\1\0\nSourceFile\1\0\3USD\1\0\23[Ljava/lang/Object;\1\0\vgetContents\1\0\20java/lang/Object\1\0&sun/util/resources/CurrencyNames_en_US\1\0$sun/util/resources/LocaleNamesBundle\7\0\n\7\0\f\7\0\r\7\0\16\1\0\26()[[Ljava/lang/Object;\f\0\5\0\4\n\0\22\0\24\1\0\30CurrencyNames_en_US.java\0001\0\21\0\22\0\0\0\0\0\2\0\1\0\5\0\4\0\1\0\6\0\0\0\35\0\1\0\1\0\0\0\5*\267\0\25\261\0\0\0\1\0\7\0\0\0\6\0\1\0\0\0\5\0\24\0\v\0\23\0\1\0\6\0\0\0.\0\7\0\1\0\0\0\26\4\275\0\17Y\3\5\275\0\20Y\3\22\2SY\4\22\1SS\260\0\0\0\1\0\7\0\0\0\6\0\1\0\0\0\7\0\1\0\10\0\0\0\2\0\26", 413) = 413 30059 lseek(4, 58559949, SEEK_SET) = 58559949 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B8\245\307\35\230w\0\0\230w\0\0\35\0\0\0", 30) = 30 30059 lseek(4, 58560008, SEEK_SET) = 58560008 30059 read(4, "\312\376\272\276\0\0\0003\3U\3\177\377\377\377\10\0\26\10\0\30\10\0\31\10\0\32\10\0\33\10\0\34\10\0\35\10\0\36\10\0=\10\0D\10\0K\10\0^\10\0_\10\0`\10\0a\10\0b\10\0v\10\0w\10\0x\10\0\233\1\0\0\1\0\23$assertionsDisabled\1\0\16' in pattern \"\1\0\2'%\1\0\2''\1\0\2'-\1\0\3'\302\244\1\0\5'\302\244\302\244\1\0\4'\342\200\260\1\0\3()C\1\0\3()D\1\0\3()I\1\0\3()J\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\25(C)Ljava/lang/String;\1\0\4(C)V\1\0\5(CI)I\1\0\4(D)V\1\0\4(D)Z\1\0\4(I)C\1\0\4(I)I\1\0\25(I)Ljava/lang/String;\1\0\4(I)V\1\0\5(II)I\1\0\26(II)Ljava/lang/String;\1\0\4(J)V\1\0\25(Ljava/lang/Object;)Z\1\0,(Ljava/lang/String;)Ljava/lang/StringBuffer;\1\0\25(Ljava/lang/String;)V\1\0005(Ljava/lang/String;Ljava/text/DecimalFormatSymbols;)V\1\0\26(Ljava/lang/String;Z)V\1\0\25(Ljava/util/Locale;)V\1\0\4(Z)V\1\0\7(ZDIZ)V\1\0\5(ZJ)V\1\0\6(ZJI)V\1\0\5(ZZ)Z\1\0\1-\1\0\10\1\0\6\1\0\1B\1\0\1C\1\0\10CURRENCY\1\0\rCURRENCY_SIGN\1\0&Cannot format given Object as a Number\1\0\4Code\1\0\rConstantValue\1\0\21DECIMAL_SEPARATOR\1\0\26DOUBLE_FRACTION_DIGITS\1\0\25DOUBLE_INTEGER_DIGITS\1\0\30Digit count out of range\1\0\1E\1\0\10EXPONENT\1\0\rEXPONENT_SIGN\1\0\17EXPONENT_SYMBOL\1\0\27EmptyFieldPositionArray\1\0\nExceptions\1\0\6FORMAT\1\0\10FRACTION\1\0\22GROUPING_SEPARATOR\1\0\tHALF_EVEN\1\0\1I\1\0\7INTEGER\1\0\fInnerClasses\1\0\1J\1\0\17LineNumberTa"..., 30616) = 30616 30059 mprotect(0x7fb314538000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb314539000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 58557121, SEEK_SET) = 58557121 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305BU\340\321\224\321\n\0\0\321\n\0\0\35\0\0\0", 30) = 30 30059 lseek(4, 58557180, SEEK_SET) = 58557180 30059 read(4, "\312\376\272\276\0\0\0003\0q\10\0\n\10\0\v\10\0\f\10\0\25\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\4(I)V\1\0\25(Ljava/lang/Object;)Z\1\0\v,attribute=\1\0\f,beginIndex=\1\0\n,endIndex=\1\0\6\1\0\4Code\1\0\10Delegate\1\0\1I\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\nSourceFile\1\0\rStackMapTable\1\0\7[field=\1\0\naccess$100\1\0\naccess$200\1\0\6append\1\0\tattribute\1\0\nbeginIndex\1\0\10endIndex\1\0\6equals\1\0\5field\1\0\rgetBeginIndex\1\0\10getClass\1\0\vgetEndIndex\1\0\10getField\1\0\21getFieldAttribute\1\0\20getFieldDelegate\1\0\7getName\1\0\10hashCode\1\0\17java/lang/Class\1\0\20java/lang/Object\1\0\27java/lang/StringBuilder\1\0\27java/text/FieldPosition\1\0\31java/text/FieldPosition$1\1\0 java/text/FieldPosition$Delegate\1\0\20java/text/Format\1\0\26java/text/Format$Field\1\0\36java/text/Format$FieldDelegate\1\0\fmatchesField\1\0\rsetBeginIndex\1\0\vsetEndIndex\1\0\10toString\7\0&\7\0'\7\0(\7\0)\7\0*\7\0+\7\0,\7\0-\7\0.\1\0\30Ljava/text/Format$Field;\1\0\23()Ljava/lang/Class;\1\0\34(C)Ljava/lang/StringBuilder;\1\0\34(I)Ljava/lang/StringBuilder;\1\0\32()Ljava/text/Format$Field;\1\0\33(Ljava/text/Format$Field;)V\1\0\33(Ljava/text/Format$Field;)Z\1\0\34(Ljava/text/Format$Field;I)V\1\0\34(Ljava/text/Format$Fi"..., 2769) = 2769 30059 lseek(4, 58549586, SEEK_SET) = 58549586 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B\233J\260b8\35\0\0008\35\0\0\31\0\0\0", 30) = 30 30059 lseek(4, 58549641, SEEK_SET) = 58549641 30059 read(4, "\312\376\272\276\0\0\0003\0\376\10\0!\10\0\"\10\0#\10\0$\10\0000\10\0n\1\0!$SwitchMap$java$math$RoundingMode\1\0\23$assertionsDisabled\1\0\3()D\1\0\3()I\1\0\3()J\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4()[C\1\0\4(C)V\1\0\25(D)Ljava/lang/String;\1\0\4(I)V\1\0\4(I)Z\1\0\5(I)[C\1\0\10(II[CI)V\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)D\1\0,(Ljava/lang/String;)Ljava/lang/StringBuffer;\1\0\25(Ljava/lang/String;)V\1\0\6(ZDI)V\1\0\7(ZDIZ)V\1\0\5(ZJ)V\1\0\6(ZJI)V\1\0\5(ZZ)Z\1\0\7([CII)I\1\0\7([CII)V\1\0\0010\1\0\0020.\1\0\0020E\1\0\0239223372036854775808\1\0\10\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\tHALF_EVEN\1\0\1I\1\0\fInnerClasses\1\0\fLONG_MIN_REP\1\0\17LineNumberTable\1\0\30Ljava/lang/StringBuffer;\1\0\tMAX_COUNT\1\0LRounding needed with the rounding mode being set to RoundingMode.UNNECESSARY\1\0\nSourceFile\1\0\rStackMapTable\1\0\1Z\1\0\4ZERO\1\0\2[C\1\0\2[I\1\0\6append\1\0\tarraycopy\1\0\5clear\1\0\5clone\1\0\5count\1\0\4data\1\0\tdecimalAt\1\0\26desiredAssertionStatus\1\0\6digits\1\0\6equals\1\0\fextendDigits\1\0\ffitsIntoLong\1\0\rgetBigDecimal\1\0\10getChars\1\0\fgetDataChars\1\0\tgetDouble\1\0\7getLong\1\0\17getStringBuffer\1\0\10hashCode\1\0\17isLongMIN_VALUE\1\0\nisNegative\1\0\6isZero\1\0\35java/lang/ArithmeticExc"..., 7480) = 7480 30059 mprotect(0x7fb31453a000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 58547918, SEEK_SET) = 58547918 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\345\35TiJ\6\0\0J\6\0\0\34\0\0\0", 30) = 30 30059 lseek(4, 58547976, SEEK_SET) = 58547976 30059 read(4, "\312\376\272\276\0\0\0003\0S\10\0\20\10\0\22\10\0\23\10\0\24\10\0\25\10\0\26\10\0\34\10\0\35\10\0\37\1\0\7$VALUES\1\0\3()V\1\0\4(I)V\1\0\25(Ljava/lang/String;)V\1\0\10\1\0\6\1\0\7CEILING\1\0\4Code\1\0\4DOWN\1\0\5FLOOR\1\0\tHALF_DOWN\1\0\tHALF_EVEN\1\0\7HALF_UP\1\0\1I\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\vUNNECESSARY\1\0\2UP\1\0\31[Ljava/math/RoundingMode;\1\0\25argument out of range\1\0\5clone\1\0\16java/lang/Enum\1\0\"java/lang/IllegalArgumentException\1\0\26java/math/RoundingMode\1\0\7oldMode\1\0\7valueOf\1\0\6values\7\0\36\7\0!\7\0\"\7\0#\1\0\30Ljava/math/RoundingMode;\1\0*Ljava/lang/Enum;\1\0\24()Ljava/lang/Object;\1\0\26(Ljava/lang/String;I)V\1\0\27(Ljava/lang/String;II)V\1\0\33()[Ljava/math/RoundingMode;\1\0\33(I)Ljava/math/RoundingMode;\1\0,(Ljava/lang/String;)Ljava/math/RoundingMode;\1\0005(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Enum;\f\0$\0\27\f\0\20\0+\f\0\22\0+\f\0\23\0+\f\0\24\0+\f\0\25\0+\f\0\26\0+\f\0\34\0+\f\0\35\0+\f\0\n\0\36\f\0 \0-\f\0\17\0\r\f\0\17\0.\f\0\17\0/\f\0%\0003\t\0*\0004\t\0*\0005\t\0*\0006\t\0*\0007\t\0*\0008\t\0*\0009\t\0*\0:\t\0*\0;\t\0*\0<\t\0*\0=\n\0'\0>\n\0(\0@\n\0(\0B\n\0)\0?\n\0*\0A\1\0\21RoundingMode.java@1\0*\0(\0\0\0\n@\31\0\35\0+\0\0@\31\0\22\0+\0\0@\31\0\20\0+\0\0@\31\0\23\0+\0\0@\31\0\26\0+\0\0@\31\0\24\0+\0\0@\31\0\25\0+\0\0@\31\0\34\0+\0\0\0\20\0$\0\27\0\0\20\32\0\n\0\36\0"..., 1610) = 1610 30059 mprotect(0x7fb31453b000, 16384, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 58535016, SEEK_SET) = 58535016 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\t\2473v\354\4\0\0\354\4\0\0:\0\0\0", 30) = 30 30059 lseek(4, 58535104, SEEK_SET) = 58535104 30059 read(4, "\312\376\272\276\0\0\0003\0004\1\0\3()V\1\0\6\1\0\4Code\1\0\17EnclosingMethod\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\nSourceFile\1\0\rStackMapTable\1\0\naccess$000\1\0\naccess$100\1\0\naccess$102\1\0\naccess$202\1\0\5begin\1\0\20implCloseChannel\1\0\tinterrupt\1\0\23java/io/IOException\1\0\20java/lang/Object\1\0\23java/lang/Throwable\1\0002java/nio/channels/spi/AbstractInterruptibleChannel\1\0004java/nio/channels/spi/AbstractInterruptibleChannel$1\1\0\30sun/nio/ch/Interruptible\1\0\6this$0\7\0\20\7\0\21\7\0\22\7\0\23\7\0\24\7\0\25\1\0004Ljava/nio/channels/spi/AbstractInterruptibleChannel;\1\0\25(Ljava/lang/Thread;)V\1\0007(Ljava/nio/channels/spi/AbstractInterruptibleChannel;)V\1\0007(Ljava/nio/channels/spi/AbstractInterruptibleChannel;)Z\1\0008(Ljava/nio/channels/spi/AbstractInterruptibleChannel;Z)Z\1\0H(Ljava/nio/channels/spi/AbstractInterruptibleChannel;)Ljava/lang/Object;\1\0Z(Ljava/nio/channels/spi/AbstractInterruptibleChannel;Ljava/lang/Thread;)Ljava/lang/Thread;\f\0\26\0\35\f\0\2\0\1\f\0\r\0\1\f\0\16\0\1\f\0\n\0 \f\0\v\0!\f\0\t\0\"\f\0\f\0#\t\0\33\0$\n\0\30\0%\n\0\32\0'\n\0\32\0(\n\0\32\0)\n\0\32\0*\n\0\32\0+\1\0!AbstractInterruptibleChannel.java\0 \0\33\0\30\0\1\0\34\0\1\20\20\0\26\0\35\0\0\0\2\0\0\0\2\0\37\0\1\0\3\0\0\0\"\0\2\0"..., 1260) = 1260 30059 lseek(4, 58534794, SEEK_SET) = 58534794 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\327\343\f!\242\0\0\0\242\0\0\0\36\0\0\0", 30) = 30 30059 lseek(4, 58534854, SEEK_SET) = 58534854 30059 read(4, "\312\376\272\276\0\0\0003\0\t\1\0\nSourceFile\1\0\tinterrupt\1\0\20java/lang/Object\1\0\30sun/nio/ch/Interruptible\7\0\3\7\0\4\1\0\25(Ljava/lang/Thread;)V\1\0\22Interruptible.java\6\1\0\6\0\5\0\0\0\0\0\1\4\1\0\2\0\7\0\0\0\1\0\1\0\0\0\2\0\10", 162) = 162 30059 lseek(4, 58534351, SEEK_SET) = 58534351 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B\247\1X\10\200\1\0\0\200\1\0\0\35\0\0\0", 30) = 30 30059 lseek(4, 58534410, SEEK_SET) = 58534410 30059 read(4, "\312\376\272\276\0\0\0003\0\32\1\0\3()J\1\0\3()V\1\0\4(J)V\1\0\10\1\0\6\1\0\4Code\1\0\17LineNumberTable\1\0\nSourceFile\1\0\7current\1\0\4init\1\0\20java/lang/Object\1\0\4load\1\0\6signal\1\0\27sun/nio/ch/NativeThread\1\0\17sun/nio/ch/Util\7\0\v\7\0\16\7\0\17\f\0\5\0\2\f\0\n\0\2\f\0\f\0\2\n\0\20\0\23\n\0\21\0\24\n\0\22\0\25\1\0\21NativeThread.java\0 \0\21\0\20\0\0\0\0\0\5\0\0\0\5\0\2\0\1\0\6\0\0\0\35\0\1\0\1\0\0\0\5*\267\0\26\261\0\0\0\1\0\7\0\0\0\6\0\1\0\0\0(\1\10\0\t\0\1\0\0\1\10\0\r\0\3\0\0\1\10\0\n\0\2\0\0\0\10\0\4\0\2\0\1\0\6\0\0\0'\0\0\0\0\0\0\0\7\270\0\30\270\0\27\261\0\0\0\1\0\7\0\0\0\16\0\3\0\0\0009\0\3\0:\0\6\0;\0\1\0\10\0\0\0\2\0\31", 384) = 384 30059 rt_sigaction(SIGRT_30, {0x7fb28e2c5e10, [], SA_RESTORER, 0x7fb31aeeacb0}, {0x7fb28ead9dc0, [], SA_RESTORER, 0x7fb31aeeacb0}, 8) = 0 30059 lseek(4, 44423134, SEEK_SET) = 44423134 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B\340\304\362\330\301\6\0\0\301\6\0\0!\0\0\0", 30) = 30 30059 lseek(4, 44423197, SEEK_SET) = 44423197 30059 read(4, "\312\376\272\276\0\0\0003\0I\1\0\23$assertionsDisabled\1\0\3()I\1\0\3()V\1\0\3()Z\1\0\4(I)I\1\0\10\1\0\6\1\0\4Code\1\0\1I\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\nSourceFile\1\0\rStackMapTable\1\0\tUtil.java\1\0\1Z\1\0\26[Ljava/nio/ByteBuffer;\1\0\naccess$000\1\0\7buffers\1\0\10capacity\1\0\5count\1\0\26desiredAssertionStatus\1\0\3get\1\0\7isEmpty\1\0\30java/lang/AssertionError\1\0\17java/lang/Class\1\0\20java/lang/Object\1\0\23java/nio/ByteBuffer\1\0\5limit\1\0\4next\1\0\nofferFirst\1\0\tofferLast\1\0\vremoveFirst\1\0\6rewind\1\0\5start\1\0\17sun/nio/ch/Util\1\0\33sun/nio/ch/Util$BufferCache\7\0\20\7\0\30\7\0\31\7\0\32\7\0\33\7\0#\7\0$\1\0\23()Ljava/nio/Buffer;\1\0\24(I)Ljava/nio/Buffer;\1\0\27()Ljava/nio/ByteBuffer;\1\0\30(I)Ljava/nio/ByteBuffer;\1\0\30(Ljava/nio/ByteBuffer;)Z\f\0\24\0\t\f\0\"\0\t\f\0\1\0\17\f\0\22\0\20\f\0\21\0\2\f\0\23\0\2\f\0\7\0\3\f\0\25\0\4\f\0\35\0\5\f\0!\0,\f\0\34\0-\t\0+\0001\t\0+\0002\t\0+\0003\t\0+\0004\n\0&\0007\n\0'\0008\n\0(\0007\n\0)\0006\n\0)\0:\n\0)\0;\n\0*\0005\n\0+\0009\1\0\vBufferCache\0 \0+\0(\0\0\0\4\0\2\0\22\0\20\0\0\0\2\0\24\0\t\0\0\0\2\0\"\0\t\0\0\20\30\0\1\0\17\0\0\0\10\0\2\0\35\0\5\0\1\0\10\0\0\0 \0\2\0\2\0\0\0\10\33\4`\270\0Fp\254\0\0\0\1\0\v\0\0\0\6\0\1\0\0\0J\0\0\0\7\0\3\0\1\0\10\0\0\0/\0\2\0\1\0\0\0\17*\267\0B*\270\0F\275\0)\265\0?\261\0\0\0\1\0\v\0\0\0\16\0\3\0\0\0M\0\4\0N\0\16\0O\0\0\0\26\0/\0\1\0\10\0\0\1$\0\4\0\6\0\0\0\217*\264\0<\232\0\5\1\260*\264\0?M,*\264\0=2N-\266\0C\33\242\0K\1N*\264\0=6\4*\25\4\267\0GY6\4*\264\0=\237\0#,\25\0042:\5\31\5\307\0\6\247\0\25\31\5\266\0C\33"..., 1729) = 1729 30059 mprotect(0x7fb31453f000, 8192, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 58520095, SEEK_SET) = 58520095 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305BSz\327\333\251\4\0\0\251\4\0\0+\0\0\0", 30) = 30 30059 lseek(4, 58520168, SEEK_SET) = 58520168 30059 read(4, "\312\376\272\276\0\0\0003\0H\1\0\23$assertionsDisabled\1\0\3()V\1\0\3()Z\1\0\4(J)V\1\0\5(JI)V\1\0\6(JJI)V\1\0\10\1\0\6\1\0\4Code\1\0\1I\1\0\fInnerClasses\1\0\1J\1\0\17LineNumberTable\1\0\nSourceFile\1\0\rStackMapTable\1\0\1Z\1\0\7address\1\0\10capacity\1\0\26desiredAssertionStatus\1\0\nfreeMemory\1\0\tgetUnsafe\1\0\30java/lang/AssertionError\1\0\17java/lang/Class\1\0\20java/lang/Object\1\0\22java/lang/Runnable\1\0\rjava/nio/Bits\1\0\31java/nio/DirectByteBuffer\1\0\33java/nio/DirectByteBuffer$1\1\0%java/nio/DirectByteBuffer$Deallocator\1\0\3run\1\0\4size\1\0\17sun/misc/Unsafe\1\0\17unreserveMemory\1\0\6unsafe\7\0\26\7\0\27\7\0\30\7\0\31\7\0\32\7\0\33\7\0\34\7\0\35\7\0 \1\0\21Lsun/misc/Unsafe;\1\0#(JJILjava/nio/DirectByteBuffer$1;)V\1\0\23()Lsun/misc/Unsafe;\f\0\22\0\n\f\0\21\0\f\f\0\37\0\f\f\0\1\0\20\f\0\"\0,\f\0\10\0\2\f\0\23\0\3\f\0\24\0\4\f\0!\0\5\f\0\10\0\6\f\0\25\0.\t\0*\0/\t\0*\0000\t\0*\0001\t\0*\0002\t\0*\0003\n\0#\0004\n\0$\0005\n\0%\0004\n\0'\0007\n\0*\0008\n\0+\0006\n\0+\0009\1\0\vDeallocator\1\0\25DirectByteBuffer.java\0 \0*\0%\0\1\0&\0\5\0\n\0\"\0,\0\0\0\2\0\21\0\f\0\0\0\2\0\37\0\f\0\0\0\2\0\22\0\n\0\0\20\30\0\1\0\20\0\0\0\4\0\2\0\10\0\6\0\1\0\t\0\0\0j\0\4\0\6\0\0\0)*\267\0A\262\0=\232\0\21\37\t\224\232\0\v\273\0#Y\267\0?\277*\37\265\0;*!\265\0<*\25\5\265\0:\261\0\0\0\2\0\17\0\0\0\17\0\1\377\0\30\0\4\7\0*\4\4\1\0\0\0\r\0\0\0\32\0\6\0\0\0R\0\4\0S\0\30\0T\0\35\0U\0\"\0V\0(\0W\0\1\0\36\0\2\0\1\0\t\0\0\0Z\0\4\0\1\0\0\0%*\264\0;\t\224\232\0\4\261\262\0>*\264\0;\266\0D*\t\265\0;*\264\0<*\264\0:\270\0B\261\0\0\0\2\0\17\0\0\0\3"..., 1193) = 1193 30059 lseek(4, 58518416, SEEK_SET) = 58518416 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305Ba\n\311\346[\6\0\0[\6\0\0\26\0\0\0", 30) = 30 30059 lseek(4, 58518468, SEEK_SET) = 58518468 30059 read(4, "\312\376\272\276\0\0\0003\0G\1\0\3()V\1\0\10\1\0\6\1\0\4Code\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\nSourceFile\1\0\rStackMapTable\1\0\3add\1\0\5clean\1\0\6create\1\0\fdoPrivileged\1\0\ndummyQueue\1\0\5first\1\0\22java/lang/Runnable\1\0\23java/lang/Throwable\1\0\36java/lang/ref/PhantomReference\1\0\34java/lang/ref/ReferenceQueue\1\0\36java/security/AccessController\1\0\4next\1\0\4prev\1\0\6remove\1\0\3run\1\0\20sun/misc/Cleaner\1\0\22sun/misc/Cleaner$1\1\0\5thunk\7\0\17\7\0\20\7\0\21\7\0\22\7\0\23\7\0\30\7\0\31\1\0\24Ljava/lang/Runnable;\1\0\36Ljava/lang/ref/ReferenceQueue;\1\0\22Lsun/misc/Cleaner;\1\0\25(Lsun/misc/Cleaner;)Z\1\0004(Ljava/security/PrivilegedAction;)Ljava/lang/Object;\1\0)(Ljava/lang/Object;Ljava/lang/Runnable;)V\1\0*(Lsun/misc/Cleaner;Ljava/lang/Throwable;)V\1\0003(Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;)V\1\0&(Lsun/misc/Cleaner;)Lsun/misc/Cleaner;\1\0:(Ljava/lang/Object;Ljava/lang/Runnable;)Lsun/misc/Cleaner;\f\0\32\0\"\f\0\r\0#\f\0\16\0$\f\0\24\0$\f\0\25\0$\f\0\3\0\1\f\0\27\0\1\f\0\26\0%\f\0\f\0&\f\0\3\0'\f\0\3\0(\f\0\3\0)\f\0\t\0*\t\0 \0,\t\0 \0-\t\0 \0.\t\0 \0/\t\0 \0000\n\0\35\0007\n\0\36\0001\n\0\37\0004\n\0 \0003\n\0 \0005\n\0 \0008\n\0!\0006\v\0\33\0002\1\0\fCleaner.java\0!\0 \0\35\0\0\0\5\0\32\0\r\0#\0\0\0\n\0\16\0$\0\0\0\2\0\24\0$\0\0\0\2\0\25\0$\0\0\0\22\0\32\0\"\0\0\0\6"..., 1627) = 1627 30059 read(6, "Pf3D7_01\t640851\t10\t60\t61\nPf3D7_02\t947102\t651552\t60\t61\nPf3D7_03\t1067971\t1614450\t60\t61\nPf3D7_04\t1200490\t2700231\t60\t61\nPf3D7_05\t1343557\t3920740\t60\t61\nPf3D7_06\t1418242\t5286700\t60\t61\nPf3D7_07\t1445207\t6728590\t60\t61\nPf3D7_08\t1472805\t8197894\t60\t61\nPf3D7_09\t1541735\t9695256\t60\t61\nPf3D7_10\t1687656\t11262697\t60\t61\nPf3D7_11\t2038340\t12978491\t60\t61\nPf3D7_12\t2271494\t15050814\t60\t61\nPf3D7_13\t2925236\t17360177\t60\t61\nPf3D7_14\t3291936\t20334177\t60\t61\n", 8192) = 431 30059 lseek(4, 58517508, SEEK_SET) = 58517508 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B\354@\345\313U\3\0\0U\3\0\0\31\0\0\0", 30) = 30 30059 lseek(4, 58517563, SEEK_SET) = 58517563 30059 read(4, "\312\376\272\276\0\0\0003\0)\1\0\3()V\1\0\4(I)I\1\0\4(I)Z\1\0\4(J)J\1\0\4(J)Z\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\3EOF\1\0\1I\1\0\vINTERRUPTED\1\0\17LineNumberTable\1\0\nSourceFile\1\0\rStackMapTable\1\0\6THROWN\1\0\vUNAVAILABLE\1\0\vUNSUPPORTED\1\0\20UNSUPPORTED_CASE\1\0\5check\1\0\10checkAll\1\0\20java/lang/Object\1\0\tnormalize\1\0\23sun/nio/ch/IOStatus\3\377\377\377\372\3\377\377\377\373\3\377\377\377\374\3\377\377\377\375\3\377\377\377\376\3\377\377\377\377\5\377\377\377\377\377\377\377\372\5\377\377\377\377\377\377\377\376\5\377\377\377\377\377\377\377\377\7\0\25\7\0\27\f\0\6\0\1\n\0$\0&\1\0\rIOStatus.java\0000\0%\0$\0\0\0\6\0\30\0\t\0\n\0\1\0\10\0\0\0\2\0\35\0\30\0\20\0\n\0\1\0\10\0\0\0\2\0\34\0\30\0\v\0\n\0\1\0\10\0\0\0\2\0\33\0\30\0\21\0\n\0\1\0\10\0\0\0\2\0\32\0\30\0\17\0\n\0\1\0\10\0\0\0\2\0\31\0\30\0\22\0\n\0\1\0\10\0\0\0\2\0\30\0\6\0\2\0\6\0\1\0\1\0\7\0\0\0\35\0\1\0\1\0\0\0\5*\267\0'\261\0\0\0\1\0\f\0\0\0\6\0\1\0\0\0!\0\10\0\26\0\2\0\1\0\7\0\0\0003\0\2\0\1\0\0\0\n\32\20\376\240\0\5\3\254\32\254\0\0\0\2\0\16\0\0\0\3\0\1\10\0\f\0\0\0\16\0\3\0\0\0;\0\6\0<\0\10\0=\0\10\0\23\0\3\0\1\0\7\0\0\0/\0\2\0\1\0\0\0\f\32\20\376\241\0\7\4\247\0\4\3\254\0\0\0\2\0\16\0\0\0\5\0\2\n@\1\0\f\0\0\0\6\0\1\0\0\0A\0\10\0\26\0\4\0\1\0\7\0\0\0005\0\4\0\2\0\0\0\f\36\24\0 \224\232\0\5\t\255\36\255\0\0\0\2\0\16\0\0\0\3\0\1\n\0\f\0\0\0\16\0\3\0\0\0E\0\10\0F\0\n\0G\0\10\0\23\0\5\0\1\0\7\0\0\0001\0\4\0\2\0\0\0\16\36\24\0 \224\233\0\7\4\247\0\4\3\254\0\0\0\2\0\16\0\0\0\5\0\2\f@\1\0\f\0\0\0\6\0\1\0\0\0K\0\10\0\24\0\5\0\1\0\7\0\0\0:\0\4\0\2\0\0\0\26\36\24\0\"\224\235\0\v\36\24\0\36\224\234\0\7\4\247\0\4\3\254\0\0\0\2\0\16\0\0\0\6\0\3\20\3@\1\0\f\0\0\0\6\0\1\0\0\0P\0\1\0\r\0\0\0\2\0(", 853) = 853 30059 read(6, "", 8192) = 0 30059 lseek(4, 58546995, SEEK_SET) = 58546995 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B|u\246\214V\3\0\0V\3\0\0'\0\0\0", 30) = 30 30059 lseek(4, 58547064, SEEK_SET) = 58547064 30059 read(4, "\312\376\272\276\0\0\0003\0/\1\0\3()V\1\0\5(II)V\1\0\6\1\0\4Code\1\0\1I\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\4Node\1\0\nSourceFile\1\0\rStackMapTable\1\0\2[I\1\0\ngroupIndex\1\0\6groups\1\0\27java/util/regex/Matcher\1\0\27java/util/regex/Pattern\1\0!java/util/regex/Pattern$GroupTail\1\0\34java/util/regex/Pattern$Node\1\0\4last\1\0\nlocalIndex\1\0\6locals\1\0\5match\1\0\4next\7\0\16\7\0\17\7\0\20\7\0\21\1\0\36Ljava/util/regex/Pattern$Node;\1\0005(Ljava/util/regex/Matcher;ILjava/lang/CharSequence;)Z\f\0\f\0\5\f\0\22\0\5\f\0\23\0\5\f\0\r\0\v\f\0\24\0\v\f\0\26\0\33\f\0\3\0\1\f\0\25\0\34\t\0\27\0\36\t\0\27\0 \t\0\27\0!\t\0\31\0\35\t\0\31\0\37\t\0\31\0\"\n\0\32\0#\n\0\32\0$\1\0\tGroupTail\1\0\fPattern.java\0000\0\31\0\32\0\0\0\2\0\0\0\23\0\5\0\0\0\0\0\f\0\5\0\0\0\2\0\0\0\3\0\2\0\1\0\4\0\0\0005\0\3\0\3\0\0\0\21*\267\0+*\33\265\0)*\34\34`\265\0(\261\0\0\0\1\0\7\0\0\0\22\0\4\0\0\21\371\0\4\21\372\0\t\21\373\0\20\21\374\0\0\0\25\0\34\0\1\0\4\0\0\0\310\0\4\0\7\0\0\0o+\264\0'*\264\0).6\4\25\4\233\0[+\264\0&*\264\0(.6\5+\264\0&*\264\0(\4`.6\6+\264\0&*\264\0(\25\4O+\264\0&*\264\0(\4`\34O*\264\0*+\34-\266\0,\231\0\5\4\254+\264\0&*\264\0(\25\5O+\264\0&*\264\0(\4`\25\6O\3\254+\34\265\0%\4\254\0\0\0\2\0\n\0\0\0\v\0\2\376\0N\1\1\1\371\0\31\0\7\0\0\0006\0\r\0\0\21\376\0\v\21\377\0\20\22\2\0\33\22\3\0(\22\5\0003\22\6\0?\22\7\0L\22\10\0N\22\n\0Y\22\v\0f\22\f\0h\22\20\0m\22\21\0\2\0\t\0\0\0\2\0.\0\6\0\0\0\22\0\2\0\31\0\30\0-\0\30\0\32\0\30\0\10\0\10", 854) = 854 30059 lseek(4, 30678915, SEEK_SET) = 30678915 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\236\354+\26\30\2\0\0\30\2\0\0$\0\0\0", 30) = 30 30059 lseek(4, 30678981, SEEK_SET) = 30678981 30059 read(4, "\312\376\272\276\0\0\0003\0\34\1\0\4(I)V\1\0\4(I)Z\1\0\6\1\0\4Code\1\0\1I\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\nSourceFile\1\0\rStackMapTable\1\0\1c\1\0\risSatisfiedBy\1\0\27java/util/regex/Pattern\1\0\31java/util/regex/Pattern$1\1\0'java/util/regex/Pattern$BmpCharProperty\1\0\36java/util/regex/Pattern$Single\7\0\f\7\0\r\7\0\16\7\0\17\1\0\36(Ljava/util/regex/Pattern$1;)V\f\0\n\0\5\f\0\3\0\24\t\0\23\0\25\n\0\22\0\26\1\0\17BmpCharProperty\1\0\fPattern.java\1\0\6Single\0000\0\23\0\22\0\0\0\1\0\20\0\n\0\5\0\0\0\2\0\0\0\3\0\1\0\1\0\4\0\0\0#\0\2\0\2\0\0\0\v*\1\267\0\30*\33\265\0\27\261\0\0\0\1\0\7\0\0\0\6\0\1\0\0\16\234\0\0\0\v\0\2\0\1\0\4\0\0\0001\0\2\0\2\0\0\0\16\33*\264\0\27\240\0\7\4\247\0\4\3\254\0\0\0\2\0\t\0\0\0\5\0\2\f@\1\0\7\0\0\0\6\0\1\0\0\16\236\0\2\0\10\0\0\0\2\0\32\0\6\0\0\0\32\0\3\0\22\0\20\0\31\4\n\0\23\0\20\0\33\0\30\0\21\0\0\0\0\0\10", 536) = 536 30059 lseek(4, 58546328, SEEK_SET) = 58546328 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\210\6\5\nZ\2\0\0Z\2\0\0#\0\0\0", 30) = 30 30059 lseek(4, 58546393, SEEK_SET) = 58546393 30059 read(4, "\312\376\272\276\0\0\0003\0\"\1\0\4(I)V\1\0\4(I)Z\1\0\5(II)Z\1\0\6\1\0\4Code\1\0\1I\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\nSourceFile\1\0\rStackMapTable\1\0\5ctype\1\0\risSatisfiedBy\1\0\6isType\1\0\25java/util/regex/ASCII\1\0\27java/util/regex/Pattern\1\0\31java/util/regex/Pattern$1\1\0'java/util/regex/Pattern$BmpCharProperty\1\0\35java/util/regex/Pattern$Ctype\7\0\16\7\0\17\7\0\20\7\0\21\7\0\22\1\0\36(Ljava/util/regex/Pattern$1;)V\f\0\v\0\6\f\0\r\0\3\f\0\4\0\30\t\0\27\0\31\n\0\23\0\32\n\0\26\0\33\1\0\17BmpCharProperty\1\0\5Ctype\1\0\fPattern.java\0000\0\27\0\26\0\0\0\1\0\20\0\v\0\6\0\0\0\2\0\0\0\4\0\1\0\1\0\5\0\0\0#\0\2\0\2\0\0\0\v*\1\267\0\36*\33\265\0\34\261\0\0\0\1\0\10\0\0\0\6\0\1\0\0\16\366\0\0\0\f\0\2\0\1\0\5\0\0\0;\0\2\0\2\0\0\0\30\33\21\0\200\242\0\22\33*\264\0\34\270\0\35\231\0\7\4\247\0\4\3\254\0\0\0\2\0\n\0\0\0\5\0\2\26@\1\0\10\0\0\0\6\0\1\0\0\16\370\0\2\0\t\0\0\0\2\0!\0\7\0\0\0\32\0\3\0\26\0\24\0\37\4\n\0\27\0\24\0 \0\30\0\25\0\0\0\0\0\10", 602) = 602 30059 lseek(4, 58541162, SEEK_SET) = 58541162 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\217\17&\363T\3\0\0T\3\0\0\37\0\0\0", 30) = 30 30059 lseek(4, 58541223, SEEK_SET) = 58541223 30059 read(4, "\312\376\272\276\0\0\0003\0$\1\0\4(I)Z\1\0\6\1\0\4Code\1\0\17EnclosingMethod\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\nSourceFile\1\0\rStackMapTable\1\0\risSatisfiedBy\1\0\27java/util/regex/Pattern\1\0\31java/util/regex/Pattern$1\1\0\31java/util/regex/Pattern$5\1\0$java/util/regex/Pattern$CharProperty\1\0\5union\1\0\7val$lhs\1\0\7val$rhs\7\0\n\7\0\v\7\0\f\7\0\r\1\0&Ljava/util/regex/Pattern$CharProperty;\1\0\36(Ljava/util/regex/Pattern$1;)V\1\0O(Ljava/util/regex/Pattern$CharProperty;Ljava/util/regex/Pattern$CharProperty;)V\1\0t(Ljava/util/regex/Pattern$CharProperty;Ljava/util/regex/Pattern$CharProperty;)Ljava/util/regex/Pattern$CharProperty;\f\0\17\0\25\f\0\20\0\25\f\0\t\0\1\f\0\2\0\26\f\0\16\0\30\t\0\23\0\31\t\0\23\0\32\n\0\24\0\33\n\0\24\0\34\1\0\fCharProperty\1\0\fPattern.java\0000\0\23\0\24\0\0\0\2\20\20\0\17\0\25\0\0\20\20\0\20\0\25\0\0\0\2\0\0\0\2\0\27\0\1\0\3\0\0\0(\0\2\0\3\0\0\0\20*+\265\0\36*,\265\0\37*\1\267\0!\261\0\0\0\1\0\6\0\0\0\6\0\1\0\0\24\35\0\0\0\t\0\1\0\1\0\3\0\0\0@\0\2\0\2\0\0\0\34*\264\0\36\33\266\0 \232\0\16*\264\0\37\33\266\0 \231\0\7\4\247\0\4\3\254\0\0\0\2\0\10\0\0\0\6\0\3\26\3@\1\0\6\0\0\0\6\0\1\0\0\24\37\0\3\0\7\0\0\0\2\0#\0\4\0\0\0\4\0\21\0\35\0\5\0\0\0\32\0\3\0\23\0\0\0\0\0\10\0\24\0\21\0\"\4\n\0\22\0\0\0\0\0\10", 852) = 852 30059 lseek(4, 58538159, SEEK_SET) = 58538159 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\311\303\303W\232\2\0\0\232\2\0\0(\0\0\0", 30) = 30 30059 lseek(4, 58538229, SEEK_SET) = 58538229 30059 read(4, "\312\376\272\276\0\0\0003\0#\1\0\3()V\1\0\6\1\0\4Code\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\4Node\1\0\nSourceFile\1\0\1Z\1\0\rdeterministic\1\0\27java/util/regex/Pattern\1\0\"java/util/regex/Pattern$BranchConn\1\0\34java/util/regex/Pattern$Node\1\0 java/util/regex/Pattern$TreeInfo\1\0\5match\1\0\4next\1\0\5study\7\0\n\7\0\v\7\0\f\7\0\r\1\0\36Ljava/util/regex/Pattern$Node;\1\0%(Ljava/util/regex/Pattern$TreeInfo;)Z\1\0005(Ljava/util/regex/Matcher;ILjava/lang/CharSequence;)Z\f\0\t\0\10\f\0\17\0\25\f\0\2\0\1\f\0\16\0\27\t\0\22\0\31\t\0\24\0\30\n\0\23\0\32\n\0\23\0\33\1\0\nBranchConn\1\0\fPattern.java\1\0\10TreeInfo\0000\0\22\0\23\0\0\0\0\0\3\0\0\0\2\0\1\0\1\0\3\0\0\0\35\0\1\0\1\0\0\0\5*\267\0\36\261\0\0\0\1\0\5\0\0\0\6\0\1\0\0\21p\0\0\0\16\0\27\0\1\0\3\0\0\0#\0\4\0\4\0\0\0\v*\264\0\34+\34-\266\0\37\254\0\0\0\1\0\5\0\0\0\6\0\1\0\0\21r\0\0\0\20\0\26\0\1\0\3\0\0\0\35\0\1\0\2\0\0\0\5+\264\0\35\254\0\0\0\1\0\5\0\0\0\6\0\1\0\0\21u\0\2\0\7\0\0\0\2\0!\0\4\0\0\0\32\0\3\0\22\0\21\0 \0\30\0\23\0\21\0\6\0\10\0\24\0\21\0\"\0\30", 666) = 666 30059 lseek(4, 58536364, SEEK_SET) = 58536364 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\247N7>\301\6\0\0\301\6\0\0$\0\0\0", 30) = 30 30059 lseek(4, 58536430, SEEK_SET) = 58536430 30059 read(4, "\312\376\272\276\0\0\0003\0P\3\177\377\377\377\1\0\3()V\1\0\5(II)I\1\0\6\1\0\4Code\1\0\1I\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\4Node\1\0\nSourceFile\1\0\rStackMapTable\1\0\1Z\1\0\3add\1\0\tarraycopy\1\0\5atoms\1\0\4conn\1\0\rdeterministic\1\0\16java/lang/Math\1\0\20java/lang/System\1\0\27java/util/regex/Pattern\1\0\36java/util/regex/Pattern$Branch\1\0\34java/util/regex/Pattern$Node\1\0 java/util/regex/Pattern$TreeInfo\1\0\5match\1\0\3max\1\0\tmaxLength\1\0\10maxValid\1\0\3min\1\0\tminLength\1\0\4next\1\0\5reset\1\0\4size\1\0\5study\7\0\22\7\0\23\7\0\24\7\0\25\7\0\26\7\0\27\1\0\36Ljava/util/regex/Pattern$Node;\1\0\37[Ljava/util/regex/Pattern$Node;\1\0!(Ljava/util/regex/Pattern$Node;)V\1\0%(Ljava/util/regex/Pattern$TreeInfo;)Z\1\0005(Ljava/util/regex/Matcher;ILjava/lang/CharSequence;)Z\1\0*(Ljava/lang/Object;ILjava/lang/Object;II)V\1\0](Ljava/util/regex/Pattern$Node;Ljava/util/regex/Pattern$Node;Ljava/util/regex/Pattern$Node;)V\f\0\32\0\6\f\0\35\0\6\f\0 \0\6\f\0\21\0\f\f\0\33\0\f\f\0\20\0(\f\0\36\0(\f\0\17\0)\f\0\4\0\2\f\0\37\0\2\f\0\31\0\3\f\0\34\0\3\f\0!\0+\f\0\30\0,\f\0\16\0-\t\0%\0001\t\0%\0004\t\0%\0006\t\0&\0005\t\0'\0/\t\0'\0000\t\0'\0002\t\0'\0003\n\0\"\0009\n\0\"\0:\n\0#\0=\n\0&\0007\n\0&\0;\n\0&\0<\n\0'\0008\1\0\6Branch\1\0\fPattern.java\1\0\10TreeInfo\0000\0%\0&\0\0\0\3\0\0\0\17\0)\0\0\0\0\0 \0\6\0\0\0\0\0\20\0(\0\0\0\4\0\0\0\4"..., 1729) = 1729 30059 lseek(4, 30668002, SEEK_SET) = 30668002 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B@\335\324\304\375\4\0\0\375\4\0\0$\0\0\0", 30) = 30 30059 lseek(4, 30668068, SEEK_SET) = 30668068 30059 read(4, "\312\376\272\276\0\0\0003\0C\1\0\3()I\1\0\3()V\1\0\4(I)C\1\0\4(Z)V\1\0\6\1\0\4Code\1\0\6Dollar\1\0\1I\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\4Node\1\0\nSourceFile\1\0\rStackMapTable\1\0\1Z\1\0\17anchoringBounds\1\0\6charAt\1\0\rdeterministic\1\0\rgetTextLength\1\0\6hitEnd\1\0\26java/lang/CharSequence\1\0\27java/util/regex/Matcher\1\0\27java/util/regex/Pattern\1\0\36java/util/regex/Pattern$Dollar\1\0\34java/util/regex/Pattern$Node\1\0 java/util/regex/Pattern$TreeInfo\1\0\5match\1\0\tmultiline\1\0\4next\1\0\nrequireEnd\1\0\5study\1\0\2to\7\0\24\7\0\25\7\0\26\7\0\27\7\0\30\7\0\31\1\0\36Ljava/util/regex/Pattern$Node;\1\0%(Ljava/util/regex/Pattern$TreeInfo;)Z\1\0005(Ljava/util/regex/Matcher;ILjava/lang/CharSequence;)Z\f\0\37\0\10\f\0\17\0\16\f\0\21\0\16\f\0\23\0\16\f\0\33\0\16\f\0\35\0\16\f\0\34\0&\f\0\22\0\1\f\0\5\0\2\f\0\20\0\3\f\0\36\0'\f\0\32\0(\t\0!\0)\t\0!\0*\t\0!\0,\t\0!\0.\t\0#\0-\t\0#\0/\t\0%\0+\n\0!\0000\n\0$\0001\n\0$\0003\n\0$\0004\v\0 \0002\1\0\fPattern.java\1\0\10TreeInfo\0000\0#\0$\0\0\0\1\0\0\0\33\0\16\0\0\0\3\0\0\0\5\0\4\0\1\0\6\0\0\0*\0\2\0\2\0\0\0\n*\267\0=*\33\265\0009\261\0\0\0\1\0\n\0\0\0\16\0\3\0\0\16\0\0\4\16\1\0\t\16\2\0\0\0\32\0(\0\1\0\6\0\0\1i\0\4\0\6\0\0\0\321+\264\0006\231\0\n+\264\0005\247\0\7+\266\0<6\4*\264\0009\232\0;\34\25\4\5d\242\0\5\3\254\34\25\4\5d\240\0)-\34\271\0@\2\0006\5\25\5\20\r\237\0\5\3\254-\34\4`\271\0@\2\0006\5\25\5\20\n\237\0\5\3\254\34\25\4\242\0f-\34\271\0@\2\0006\5\25\5\20\n\240\0)\34\236\0\23-\34\4d\271\0@\2\0\20\r\240\0\5\3\254*\264\0009\231\0;*\264\0:+\34-\266\0?\254\25\5\20\r\237\0\25\25\5\21\0\205\237\0\r\25\5\4\200\21 )\240\0\25*\264\0009\231\0"..., 1277) = 1277 30059 lseek(4, 57542825, SEEK_SET) = 57542825 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B`\271\177i\324\1\0\0\324\1\0\0\36\0\0\0", 30) = 30 30059 lseek(4, 57542885, SEEK_SET) = 57542885 30059 read(4, "\312\376\272\276\0\0\0003\0\32\1\0\3()V\1\0\4(J)V\1\0\10\1\0\6\1\0\4Code\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\nSourceFile\1\0\rStackMapTable\1\0\5cache\1\0\16java/lang/Long\1\0\30java/lang/Long$LongCache\1\0\20java/lang/Object\7\0\v\7\0\f\7\0\r\1\0\21[Ljava/lang/Long;\f\0\n\0\21\f\0\4\0\1\f\0\4\0\2\t\0\17\0\22\n\0\16\0\24\n\0\20\0\23\1\0\tLong.java\1\0\tLongCache\0 \0\17\0\20\0\0\0\1\0\30\0\n\0\21\0\0\0\2\0\2\0\4\0\1\0\1\0\5\0\0\0\35\0\1\0\1\0\0\0\5*\267\0\27\261\0\0\0\1\0\7\0\0\0\6\0\1\0\0\2 \0\10\0\3\0\1\0\1\0\5\0\0\0c\0\6\0\1\0\0\0,\21\1\0\275\0\16\263\0\25\3;\32\262\0\25\276\242\0\33\262\0\25\32\273\0\16Y\32\21\0\200d\205\267\0\26S\204\0\1\247\377\343\261\0\0\0\2\0\t\0\0\0\t\0\2\374\0\v\1\372\0\37\0\7\0\0\0\26\0\5\0\0\2\"\0\t\2%\0\23\2&\0%\2%\0+\2'\0\2\0\10\0\0\0\2\0\30\0\6\0\0\0\n\0\1\0\17\0\16\0\31\0\n", 468) = 468 30059 lseek(5, 1104648, SEEK_SET) = 1104648 30059 read(5, "PK\3\4\n\0\0\10\10\0WP\376@\300Bw\23\7\f\0\0\216\30\0\0'\0\0\0", 30) = 30 30059 lseek(5, 1104717, SEEK_SET) = 1104717 30059 read(5, "\235W\v|S\325\31\377\237\274n\232\336\2264\320V@]\345Y\232B\25\1\205V0\264\201v4\2414-,\276\330%\275\264\3014\251\311-\203=\334&:\235ss/\347p\17'\250l\312&\202\264 >\247\302\34667\235\233\323\275\337\357\367\334\234S\331\377\334\233\246\267i\234\374\226\337/\347\236\357\334s\276\347\377\373\276s\237|\355\376\207\0,\0263}\230\213/\370\20\302]e\234\335-\207\375r\370\242\34\276\344\303=8\340\303\2758\250\340\220\202\373|\360\341./\16\313\347\210\34F}(\303\21\311\344\250\17M\270\337\213c\222x@\16\17z\361\220\27\17+x\304\207Z)\244\26\217*\370\262\0173\344\211\31x\314\213\307\345\363\t9\34\227\303\t9|E\16_\225\303\223r\370\232\202\257Kn\337\220\374\237\222Z}S\222\337*\307\323x\246\34\337\306\263r\370\216\202\347\312\261\20\337S\360\274|\276 w\177_\356\376\201\234\375P\16?\362\342\307\362\371\250\27?\221,~\252\340g^\374\334\213_x\361K\37~\205_\373\260\34\277\361\342\267\322\354\337)\370\275\202?\10T\f\306\364+\206\365tB\217j\203\272@\240s\233\266]kJi\351\376\246\230\221M\246\373\233\5*\v\233:\322}\372\16\1\321!0\245\260\330\251\247\373\215\1\201\252XxCo8\332\32\336\34\rE\302\233{Bk\311\2775\223\316\31Z\332\330\250\245\206\311\177jaOg8\272\266\247\335\332\245D\332\226Z35\24\213\205#\253;\343\371\27\275\335\35\326\254<\326\25n\355\10\307,\252\2667\272.\272~Sts\21;'\343\16\201\231\335\341X\270{c\270ms\244;\32\331\32WB\215\16\251Ge\256\10\2\0251CK\\\36\321\206L\321\0047\21K=\373uc\"\314\246\325/(\5\264)\271\342\215U\266\243cB\234\365\v\210\277\252\334\3447\256zS-\367v\vl\345<\34\312\345\364\301-\251\235\244rv\312'\31\17\351\211\244N\327\370r6\302o\23\231\307\273?7i\2512\231\213Q\303\261U\201y\365\247\340\337\5\27\21\3232\34\221\276\245\364\253\345\203A\315\30hZ\235\354\357H\33\4H\266\331\334\242\31\346\26\227\234qaP\273\\g.\10\314*\5\tkI\212\347\36\236\0274\3039\234MR\315\211\257X\241hmxGB\0372\222\314L\5\177$\334\250\243\226\312\25\301m\375\226mz\30205\26\231\211\205!\377J\300;\240\345\6\362X\224^c\242\367i\331\276\36\255\237\334\252\306blK\254\271\305k\257\223N\356D*\223\326\255\375\247\202Z\267\2366\262\214\252;l=\325\216tZ\317\266\2464\306[\32f\23Jp\3161w\361\230#9\207X\264\275\354`fjFF\306\300\231\325\r\31\242\t\t\265sh,\251\232K\261,aM)\373\24\374\211b\215\354pZ&\330D\300\317{\375\370N\314\25w2_\213\23\374\263h\270\264l\226\326\270Rz\232\17"..., 3079) = 3079 30059 mprotect(0x7fb314541000, 8192, PROT_READ|PROT_WRITE) = 0 30059 lseek(5, 5023150, SEEK_SET) = 5023150 30059 read(5, "PK\3\4\n\0\0\10\10\0\20SrC^S\266\20\355\3\0\0008\10\0\0005\0\0\0", 30) = 30 30059 lseek(5, 5023233, SEEK_SET) = 5023233 30059 read(5, "\225U\313s\333t\20\376~\266,\331\216\234\207\33;\264P0\2174\266\34j\232\22 \270\2046\241\2416NS\306L;\201\223\342(\216\212+\27I\351P\376\16.\364\324\23\f3a\6fp\233a\206N\271r\346\315\2153\3348v\30v\177\26\212\355\350\302\301\273\253\325>\276\375vm\177\377\3177\17\0,\340\3554Rx)\205\f^f\361\n\213%\26\257\262\250\2628\227\304k\32\226\323x\35\347\323\270\200\2254V\361\206\206\213\254\327X\274)\240\266\272\216o\267\5\262\215\353\346-\263\3221\235v\245\351\273\266\323\256\n$;\335\226\351\333]G@\324\5\24\317\376\310\22\320\267L\317\362\256Xn\303v\350Q\324\330u\333\37pe<\353\203=\313iY5g\333\372\220\272\234\263\35\333_\0268Q<\332\246^\257\325j\245\253T~\265\273M\311\23\\\343\362\336\215-\313}\307\334\352X\214\215`t\256\232\256\315\317\201S\361wmO\340L\303\261\374\212\267S\271i\267Lw\273\342Z;\226\313\255+k\246\347\233\315A \27\35\337\275Mc\245\332\226\277\32\314=],EM\236\362\16Cr\21\240\31\357\30\225i\204\4\305\213%\242H#_S\2624A\326\312\20Q\24Q\v\374ClMr\3160aI\277\333oD\334\321\33\263\343\215\300\330\330\272n\265\374j\351]\201D\327\337\265\334\341\r\6\257\5\322\362\245\34\234\326\322\364\315\326\373\353\346MI!]\0025\3325\275\335>\357\351fw\317mYk6\263;s\224\275\323\\^\307q\\\3221\211)\35Y\34\3231\315\"\207\274\216\31\26\217!/p\241\177T\205Y\257Z\370\357\202\n\263\333\325\2\337\2174\6/\250\357\30`\204\34D\312\3500\32j:\352xKC\203\365\272\206\313:6pE\240\362?/@\307<\236\327q\26E\271\23\332\344\370a\263F\227I\327n\231\235=kcG\340X\261>x \374\232h\235:\364\324\34\337j3\377\371bm02\360W\207F\t\227\272\323uo\230\276\300R\304m\275\27\261\347\243Q(\320w\204Q\356!f\24z\210\33y\245\7\305\310\251=$\214\234\326\203j\344\222=h_\311\202O\220|\6I\222?@\301\217T\340'\214\343gj\374\v\25\376\225\300\375\206S\370\35')\342\0224.\217'\361\24 -\206+\244\305\200c\322b\310\212\264\30\264*-\206\335\317e\340I\312)\340\351\0v\2054\327H\30_#\366e\10J\225\316?dc\275\37\0204V\10\360\263A\3622Es[U\316{8RZz\377\244\234\277d\205|?*\204\256\6\320\5\236\303l\10$\26\2\211\1771\2\344\357\10 \202\230\211JVF\223\37E&\317\241\30AAb\1778Y(\221\311\245\310du49\23\231lD&k\243\311S\221\311\345ps\255`\274\245l2\371-R\233q\336`sSa\376\16\350ghS\222!-\225';\300XsSc\230l\35@\37\331\2668>\320p)lH_\362\240\341}\332}\234\364\265\362w\310\334A\"\276o\224?EB\331/?Df\235\273\317\323\347\36\306?\301\"\267\246'\345\343;(1 \262\343d\237d d'\356\"\313H\310T\357BS>\203\22\347\371\343\22N\236\346\2058\5M\314!%J\230\24e\344\304\274\204W\350C\10O\351\32NK\32sX\301\v\344\213\341\214\34BI\251\217\370oz\341\1\0\4Code\1\0\5Entry\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\22Ljava/lang/Object;\1\0\tSignature\1\0\nSourceFile\1\0\27java/util/LinkedHashMap\1\0\31java/util/LinkedHashMap$1\1\0\35java/util/LinkedHashMap$Entry\1\0*java/util/LinkedHashMap$LinkedHashIterator\1\0%java/util/LinkedHashMap$ValueIterator\1\0\4next\1\0\tnextEntry\1\0\6this$0\1\0\5value\7\0\n\7\0\v\7\0\f\7\0\r\7\0\16\1\0\31Ljava/util/LinkedHashMap;\1\0009Ljava/util/LinkedHashMap.LinkedHashIterator;\1\0\24()Ljava/lang/Object;\1\0\34(Ljava/util/LinkedHashMap;)V\1\0!()Ljava/util/LinkedHashMap$Entry;\1\0007(Ljava/util/LinkedHashMap;Ljava/util/LinkedHashMap$1;)V\f\0\22\0\7\f\0\21\0\30\f\0\2\0\33\f\0\20\0\34\f\0\2\0\35\t\0\25\0\36\t\0\27\0\37\n\0\26\0\"\n\0\27\0 \n\0\27\0!\1\0\22LinkedHashIterator\1\0\22LinkedHashMap.java\1\0\rValueIterator\0 \0\27\0\26\0\0\0\1\20\20\0\21\0\30\0\0\0\3\0\2\0\2\0\33\0\1\0\3\0\0\0$\0\3\0\2\0\0\0\f*+\265\0$*+\1\267\0%\261\0\0\0\1\0\6\0\0\0\6\0\1\0\0\1\230\0\1\0\17\0\32\0\2\0\3\0\0\0 \0\1\0\1\0\0\0\10*\266\0'\264\0#\260\0\0\0\1\0\6\0\0\0\6\0\1\0\0\1\231\0\10\0\0\0\2\0\1\20\0\0\2\0\35\0\1\0\3\0\0\0\36\0\2\0\3\0\0\0\6*+\267\0&\261\0\0\0\1\0\6\0\0\0\6\0\1\0\0\1\230\0\3\0\t\0\0\0\2\0)\0\10\0\0\0\2\0\31\0\5\0\0\0\"\0\4\0\25\0\23\0\4\0\n\0\26\0\23\0(\4\2\0\27\0\23\0*\0\2\0\24\0\23\0\0\20\10", 913) = 913 30059 stat("/nfs/srpipe_references/references/Plasmodium_falciparum/default/all/fasta/all.fa.fai", {st_mode=S_IFREG|0664, st_size=431, ...}) = 0 30059 stat("/nfs/srpipe_references/references/Plasmodium_falciparum/default/all/fasta/all.fa.fai", {st_mode=S_IFREG|0664, st_size=431, ...}) = 0 30059 stat("/nfs/srpipe_references/references/Plasmodium_falciparum/default/all/fasta/all.fa.fai", {st_mode=S_IFREG|0664, st_size=431, ...}) = 0 30059 access("/nfs/srpipe_references/references/Plasmodium_falciparum/default/all/fasta/all.fa.fai", R_OK) = 0 30059 open("/nfs/srpipe_references/references/Plasmodium_falciparum/default/all/fasta/all.fa.fai", O_RDONLY) = 9 30059 fstat(9, {st_mode=S_IFREG|0664, st_size=431, ...}) = 0 30059 fcntl(9, F_GETFD) = 0 30059 fcntl(9, F_SETFD, FD_CLOEXEC) = 0 30059 read(9, "Pf3D7_01\t640851\t10\t60\t61\nPf3D7_02\t947102\t651552\t60\t61\nPf3D7_03\t1067971\t1614450\t60\t61\nPf3D7_04\t1200490\t2700231\t60\t61\nPf3D7_05\t1343557\t3920740\t60\t61\nPf3D7_06\t1418242\t5286700\t60\t61\nPf3D7_07\t1445207\t6728590\t60\t61\nPf3D7_08\t1472805\t8197894\t60\t61\nPf3D7_09\t1541735\t9695256\t60\t61\nPf3D7_10\t1687656\t11262697\t60\t61\nPf3D7_11\t2038340\t12978491\t60\t61\nPf3D7_12\t2271494\t15050814\t60\t61\nPf3D7_13\t2925236\t17360177\t60\t61\nPf3D7_14\t3291936\t20334177\t60\t61\n", 8192) = 431 30059 read(9, "", 8192) = 0 30090 <... futex resumed> ) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091214, 785296000}, ffffffff 30059 read(9, "", 8192) = 0 30059 lseek(5, 700064, SEEK_SET) = 700064 30059 read(5, "PK\3\4\n\0\0\10\10\0\251`\273D\216\213\25\"\200\30\0\0T:\0\0#\0\0\0", 30) = 30 30059 lseek(5, 700129, SEEK_SET) = 700129 30059 read(5, "\265[\t|T\325\325?\347\316\362f\206G\226IB2!\300\200\212\220\325\242\245\30\326$\20\10\204\200Y\300\200(\223\311K\0303\231\301Y\20\264b7\333\332\275bk\343\212k\264ZE\224\204\32\4\273\210[[\333\252m\355f7\267\332\326Vm\353B\233\357\234\373\336\274\274L&!\372\375\312\17\356\275\357.\377\263\334s\3179\367\216>\371\337\207\216\2\300\231\302\347\206}\270\320C\305G\270X\344\201N<\233\373\252\271X\254\340\22\17(z\317R.\226q\261\234\247\256P\260F\301Z\17da\235\7\246\342J\356\\\345\201k\261\236\213\325\n\256qa\203\7\362q-\177\257sa#\327\353\271h\342b\3\27\33\2718\207\227n\344\342\34\5\233]\330\342\301Vl\343\221M\\lV\360\\\256\333=p\32n\341\326V.\316\343b\33\257:\237[\27p\261\335\3K1\240`\207\v\203\36\250b\322K\261\223\v\315\205]\\w{p\7\206x\325\205\374\331\303E\230?{\247`\4\243\\\354T\360\"\356\216y0\216\t\5\223\n\356\362@\r\236\355\302\213\271\336\315\305\36\17\254\300\265.\274\304\205\227\272\360\243.\274\314\205{yu=\203]\256\340\307<\320\204\37w\341'x\366'\271\223\344\370\224\202Wx\240\25?\355\301\317\340g\31\377J\27~\216\353\317\273\360\v\n~Q\301/y\340<\374\262\33\277\202_\365\300V\274\312C\255}\274\374j\17~\r\277\316}\365\n^\343\301o`\237\202\327z\240\v\257\343\342z\236s\3\23\275\321\3\275x\223\202\373\25\274\231\233\267x \214\267\362\360m\n\336\356\201\213\270g\37\336\241`\277\v\357\364@\202\325\24\306\273\\\370M7\336\215\367x\360[x/\317\270\217[\7\24\326t2\247fZ\265\30\301\335\333\20\257\rE\0021\202\300-\10\316\336\206H\247\266\33\241x\f^m\315z9F\253r\250\263Y\vFc\235\365\201 \tD\213\347d\242?j\16\255SzunN\316n&\3450\0M\347Y\10Y\215\27\6v\5\252B\321*\376\246\241\231\335Zb\345D\32Z8o\376\7\323\221\275.\332I\24\263\33C\21\255)\331\333\241\305Zy7\211d\374$$?2\357\203P\234\277\211\254\2461\32\f\2047\5b!&e\320s.\tEB\211e\10E\363L\351\33\";\223\tZ\254\5z\345B{bG\210\254n\326\304\204I*g\\.B(\310\210\205\220;o\264\212%z\227T\376\254\264\241\261\23\335!6\25}\253|\231\271\335\302\363\246h\201n-\266\222\354\204U\354M\303\225S\374\23\22\0335\205enkn\3144\305\226\214\205M\253I\315C\250\31\273CqM\353a}\353\372\251j1>\r\2563@\333i&\351\261\352}\"!8\202\341h\234\304\266\315c\230\251-\211@\260g}`\247\261\3339Z\204\33L\247%\232\214\5\251\313>O\22T\364\221NR\230\336\222\347\262.\20\334"..., 6272) = 6272 30059 mprotect(0x7fb314543000, 16384, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb314547000, 8192, PROT_READ|PROT_WRITE) = 0 30059 lseek(5, 1094214, SEEK_SET) = 1094214 30059 read(5, "PK\3\4\n\0\0\10\10\0WP\376@\310\311Q8\264\0\0\0@\1\0\0&\0\0\0", 30) = 30 30059 lseek(5, 1094282, SEEK_SET) = 1094282 30059 read(5, ";\365o\327>\6\6\6#\6nv\6Nv\6.F\6\376\344\242\324\304\222\324`G\337\240\324\344\374\242\24F\6\33\r\237\274\324\22\375\3424\375\342\304\334\222\374\374\234b}\240\254[fN\252GjbJj\221\265&6y\210nk\270\201N\10\3=\t\31\350\351\31\34\354\t\1\321N\230\246;!\231\316\25\234_Z\224\234\n\322\314\310 \n\267\327-1\271$\277\250R/+\261,\221\221A\1\247\373\240\352\30\31\4@*\365s\22\363\322\365\375\223\262R\223K\330\30\31\30\31\230\30@\200\211\205\221\201\231\201\205\201\1H\2632\260\1E\30\31\330A\342\f\34\0", 180) = 180 30059 lseek(5, 5369191, SEEK_SET) = 5369191 30059 read(5, "PK\3\4\n\0\0\10\10\0\16SrCAkq\22\36\t\0\0j\21\0\0007\0\0\0", 30) = 30 30059 lseek(5, 5369276, SEEK_SET) = 5369276 30059 read(5, "\225W[tTW\31\376\366\334\316\231\223C\200\201\tLHJB\213L&\2044\200\301\16\205\226D.Is\203\4\20\250\222Ir\222L3\2313\314\234\341Rj\251m\261b\265\332\226\322\2\265\2\202\321\32\264\3202`\251\244\365B\265^\227\317}\361\305\265\372\342Z._\\]h\374\366\231I2\t\3jVr\366\277\367\376\357\377\367\377\347\344\243\177\277{\3\300J\374IC\35\366k\244\16xI\35t\217\347~\344\356\220|<.\37\207U<\241\341\313xR\303\21<\245\340+^<\215g\24<\253\241\30\7T\34\225\353WU<'\327\257\311\3071\r_\307\363\32\276\201o*xA\305\267\344\341\267U\274\250\342%\r\v\360\262\212\343\32^\301\t\5\257\312\3655\25'%\313)\25\247U\274\256a1\276#\37oh\370.\316\310\307Y\271=\247\340{\32B8\257\342\202\206\357cD\301\17d\10g\244\216c\n~\250\340M\0015a\246\242V\324\214\v\210f\201Y\275f\3342\342V\213\21\37\260\6\5\234\351dL\240\270\345\261\310\376Hm\334\260j\267okY+\340N$\315\203\207\4\346L]t\310\23^y\36\214\306\243\326z\201\271\301\351RU;\4\\\215f\237!0\273%\0327\332\322\303=F\262+\322\23\343\211\257\305\354\215\304vD\222Q\271\317\35\272\254\301hJ`U\213T\221\352\257ME\206-\323\214\245jS\2061$YRV\322\210\f\327v\346\266[\272\272::\355#\372Q9\303\374LO\245;Jt n&\215>rg\257c\221\370@m\326\261Mfr8bm<\330k$dz\250q\336\264\334\320P4> =\237\222\314\236\221uV\247\25\351\35j\215$\354H\354\\\377H\301\250\202\213\4\4\263\32\254b\256=\261\\\222]\251\241h\202K\260Y\36\v\226\242\250\347\220e\244\272\314N\373B\233\364\202\331p\32f\277\255a\267\24d\344YA\231\\F\316P\224\340\236\206\246\246\252&V\251\327L\307-j$\255\32\361\276m\364\221i\25\374\363g\275\216\232\265M\355\3711zz\322\375\375FR\300\261\247\201;\263\277?eP\203\223\256\322\17& n\364f\321R6\225\320-\226\225`\212\33'o\251\310!+\227g%\236H[\223\265\361\312\360lo\24\354%\252\25\374\230`\265\177\177\302_\351y\314L\31v\230;\354'#pZ\303\314\205w\300\260:\315t\262\227\267\363\203U\205\222\257e\3577E%\206\26\334\16\216\25RFG\30\33\344\303\324\261\n\253u|V>>\207\7t\324c\r!\337\230-vM\266\332\n\336\322q\t\227\25\274\255\343\35\\\21X\374_\0\243 \243\343*\256\321\205\231>6\244\243\261>\231\344\312\235\33\266\2655\265m\16W4\305\367Gb\321\276\212\34\304*\262\320\250\10\352\370)\336eM+*\372\315d\270Bn\257\353x\17)\5?\323q\3c\n\336\327\361\1~.p\357\224\231\246x\237q\260=m\265\3677\20\1}\251I\247\250\251\335.\351:\251\351\27L\364rZZGx,g\341%)S2&\0\2V\307/\361+\201\322;\327Yr\334\224\240\221h\265U~Hx\325P\255]\\\35\277\306ot|\204\337\262\300:v\342\v:\3422\341\277\203\311v*\200@\35\277\207\304\370\352\272z\366\212\216?\340\217,\363\4\343\306\366My\221\324\375\337SA\240\346\177\224\231\340\327\363G\10A1}\206p\376\315,m~XS\220\2378\265\31\273\6\223\346\201\354\200\273g\246;i+\32\313\246\231\4\23QL\264oaW\23]Q#\306\346^]p\252\345\343\277`K\24"..., 2334) = 2334 30059 lseek(5, 5362133, SEEK_SET) = 5362133 30059 read(5, "PK\3\4\n\0\0\10\10\0\16SrC\370)\362\265\266\4\0\0M\n\0\0;\0\0\0", 30) = 30 30059 lseek(5, 5362222, SEEK_SET) = 5362222 30059 read(5, "\255T\335S\33U\34=7Y\222\220.\320\362e\313G\201R\21\26\333\0mA[l!\02444\320\226\0\26Pq\201\r\254\204M&\273 \366\275\17\372\334\27\247\216\257\276\2643:S`Fg\374\3|\362\17r\34\317\275\273\r\204\362P\30ar\367~\236s~\277\337\271\367\257\177\177\377\23\300\0\276\214\243\36\237V\242\16\237\311&%\233\311(\36\304Q\201\264\34L\205\21\375\33q\366\246\345\326\207r\341\221l\36\313\271\03197#\207\31\331\314\312\341\234l\346\243\370<\212'Q,\10@@O9\216U\34\313\231\256k\271\2\215\343\273^r;\233\265\212\326Z\312)l{\31\257h\231[\2u\367\307'F\347\322\263\313\311\271\211\211\361\231\345Ljq\\@\244\4\252\306\362\216\353\231\2167o\346\266-\201\370\212:\237\261\237rP\365m\321,\24\254\26570\211\264cy\t7\233p\315-/\237\317\271\t\327\2626\315\225\234\345\252\35\211L0\364\17\334\21\250^\t\344\274\201\230~W\210d\331\301\253'GF\206X!\357\332\236\235w\30\317\244@d\330vl\357\256\300\215\356S\212M\365\314\vhc\3715\6^\223\266\35kz{k\305*\316\312-\2\265\351\374\252\231\2337\213\266\34\7\223\232\267a3\355Cg\213\211\342#n\220\226\201\323\252\225b#9\313Y\3676\4\302\335=\f]s7\355\2?\335\223r\24)Z\336\216\231cE\345t:\330Y\225\361\314\325\315)\263\20D\20\37\337]\265\n2}n\24\213\22\2034>\206\314\6\251\326\24<\235\"V\4\242\335K\311TJ\216\"~a\5BKI\216\362\331\254ky\304s\222\337y\226;\243\316U\254\346\362\256\245\316\23,l\345\263\252O\232\312u\313\313\344\267\213\253\\\255\357\356I\177c\356\230\211\234\351\254'\30\236\355\25435q\177}\302\2262\233O\316\340uyNG'Ft\264\240IG+.\353\350\300\25\201\377\325f\222bIG\33\332e\357\252\216\17qM\307\27\370H\307u$t\334\302\240\216!9\34\302m\35\367\244\2361\334\27\270u&\25\2\327Ne\6:\360l\321\366\363eP\251\267\363\211\324\303\222\25\4\276\177g;\36\263t\272\4w\344\222\246\316X\214~\345\362K\364\2122U\312\361\327GwL;'\267\263\322u|\23\301\27\362\22\377\233\370 6s\24B\f\265\322\17\354\237\227\226\200\374c\361\324\227\356`{\216{YI\266\357s\264\213(\302\374v\31\7\20F\313\36BF\357\36\302F\345\0364\343\17T,\30\306k\204[\304\1\"{\210\376\2468\272\3306!\302\366\0164\f\243\22\237\240\32w\251\350\0361G\360\1W\332}Tt\243Gqw\301\240\32\241zR_H\251\350\rT\214pw\210\337\230\321[\33;@\345!O\\\315'\251rL\3416\372\373J\270\261\0WHc\6h\3\n]\242Q\372>\342\257Jh\0215?\241\220t\177O\200$\244\235\271K\236\377\221Y\255\340\267\257\215\0\321}\234{\366\374'\\\224\375\266}\350Ic\3415\264\16\223\t\352x\305I\255\315L\32\35\373\250j\223\373\3770u\nx6\252\372K\317\221\10\321\334\22\317\201>\\x\216\27\332\357\1E\301\240\357}S\350\3\3628S<\341\37\270\341rY5\312\312G\16\263P\250t\221\360\233\2131tJt\202\2\335wq\327\365\225++\356+\6\217\342\234v\21t\345\"\370N!\217P\310\257e\35\357\253\260\261\326\226f`0\205W\364\210\273\216M}#\364*\244u\232\204mlPq+\f\266;\364\221\2258\30]\351\251j\2747\6[\355O\307y\244\fRaw\323\206\330\273\316@\326t9\207!\1}Ix\300`\275\373>\212m\364\327\226\2748>\21\226\352\310\23\237\337\374\271\240\304\"\364\340\327E\377\322\370\307\210\1?1\370f\240d(\373r_\200}\306\227\36H\342\330O\312O0\200\343ph\0\203\370\206H\30\201K$Ga\214\344x$\323\221\234\200I\222\227\341\n\311)\230&9\3WI\316\302\0342\316\223\257k4_h\315\27q\276\4\327\311n\31VZ\372U\234\337\200\233\255y&\301 \373\7O\16c\324\270[\260F\322\200\273\264v\217\306u\30\242\344{\360\331\204Tb\0n\243\274\2637\363\23", 687) = 687 30059 lseek(5, 682760, SEEK_SET) = 682760 30059 read(5, "PK\3\4\n\0\0\10\10\0\257`\273D:\30\20\266K\21\0\0\234(\0\0$\0\0\0", 30) = 30 30059 lseek(5, 682826, SEEK_SET) = 682826 30059 read(5, "\255Y\v|S\327y\377\177\222\254+]_\2771 0\330\30B\374\3008\t\346\21\33\10\266\301\301\304\330\4\23\267&i\211\220\257A KF\222\tN\233\264i\272\255{?\322v\313\243K\226us\227\261\rH\260C\334%\355\272\222\255{u]\327\254k\327v\353\332\265\351c]\233>\362 \354\177\216\256d\311\2261I\203\177\277s\316=\217\357|\217\377\3678\3423\257?\363,\200\rr\237\211\1\274\350\307m\370\216j\276\253\232\357\251\346\373\5\320\377\334\337\362\343\177\361\3\3\377g\302\217\27}\370\241\352\177\244\232\227T\363c\23?\301OM\236\370\231:\366\262\201WL\224\343U\23\257\341\222\232y]5\227\331\10\270K\304\20\227O\334&\2\342Q\223\5\206x\325\274a\212O\374j\3064\261B\n\r\261L\324J\241\372(R\243\"\265\253\330\220\22CJM\324I\231_\312\245B\35XdH\245\211u\262X},Q\243\245\252\t\370d\231\332\350Q\7\227\373qV\252T\263B5+\r\2516\261Yj\324\255\253\324\206\332BY-kL\271F\326*2\327\32Rgb;^5\244\336\220\6\23\355\322h\310:C\232L\354\2242J'\353\375\322,\327\251\346zu\366\206B\331 -\246l\224\26\365\331\242\330\333d\310f\23\275\262E57\252\206\33Z\245\315\220\255&\372\361\242!\333\f\271I\0\201\325\35\215\332\361\316H0\221\260\23\2\317p8b\v\212{\216\5O\6\233\303\261\346.~\267\tJ\342\366\260\35\267\243!\273?6\26\17q\313\252\236\250\235lN\f7\207\342\301\221f.7\357\317\335\302S\336\243vp\310\216\vjs6'\222\361\261Pr,n7w\362s\267\336\303\335\2560\31\250\314\334\334\35\35\35K\366'\343vpD/&\5\253\323d\22\301\221d,\26I4\367\267\357\335o\207b\361\241\356\244\35\17&c\212\216w\244;:d\237\22,\233\263\275\243}\257^\343.3\265\253K\313[1\262+\32<\34\261\365Tg0t4\34=\"\220\203\324Oj[\212\17A {\343^{$\26\37\337\33\34\35\325\333\27\235\fF\302C\301d8\26\345vNQ\27\343\206\264se \317\212\240%\2378\212\241\375Z%k\362\235\"\347F(6\26M*\265\312\36A\221=2\232\34O\213O\351\267\206\243\341\344v\301\315u\271F\314\253\330\5\215X?@Pt\306\206\250\244\222\236p\324\356\35\0339l\307\17(\35\10\312{b\241`d \30\17\253og\322\223<\252\fY3G\270\316\375\331\322Q\220\242\376d0t\234\372\323'5(;\f\3514d\247`\307|\334\247\276\256\206m\343pp$e^\177x\306\324\276pFU\327\324\325_\25\240L\252jh\267\3ew\235\242m\356:\25\262G\225i(j\251\2551\241\350\247\275cu\335\225m\333vPQ\361\306\35\242\325\v\354\2460\251;\206\250t;\17T=u\232\340R{^t\226\245\226:\343\241\316\243v\350\270\236\253H\330\311\214\300]\301\20\305\35Wj\231_+\316\246\224~\207\323'j\27>@\305\37\r&\34\307\244\16\351Z\276#v\322\231\250\312c\211\214\257\32\262\213X\341f\245\220\264\31V\345\267\335\314\26\336(v&\236D\202\321#\315\31\233\221d\211\240P\335\237\1\203+\21\26\254\310G3\203\4\306{\355V\363\334\333?\32\214\266\315\345j,\31\2164wFb\t[\233f\6V\276a\347\320<\367fh\22\300\375\341#\321\240\n\231\202\241\267\206\201\255\363\333\254m;\257\\\356(|_,\254\202\215\242\35%h\24 \t\371\352\371\325\357\260\\p"..., 4427) = 4427 30059 mprotect(0x7fb314549000, 12288, PROT_READ|PROT_WRITE) = 0 30059 lseek(5, 1004657, SEEK_SET) = 1004657 30059 read(5, "PK\3\4\n\0\0\10\10\0WP\376@\332;\22\317 \30\0\0x=\0\0#\0\0\0", 30) = 30 30059 lseek(5, 1004722, SEEK_SET) = 1004722 30059 read(5, "\275Z\t|T\325\325?\347ef\336\314\360\10I \204\260\16\210\222\204}\267\211 I \30vC\200\6\2542L^\302\310d&\316L \261\265Vjkk\335\332Z[\324V\353\206\255\266\"\232D\233V\272X\\\272ov\257\265Zk\367}\321\17\345\373\237\373\336\254y!\1\373\253\302}w\336\275\347\334s\376\367\234s\317\271\217g\337\370\334\23D\264H[\352\243\33x\2234\233\245\331\"\315\205\3224I\263U\232f?\335\310\333\244\267]\232\35\322\274U\232\26ivJ\263K\232\213t~\233\237\212\370b\235/\321y\267\237\306\362\305~*\221\346\6\16\312\310\36\351\205\374t-\267J\317\224^\233\217\333y\257\316a?M\341m^\276T\236\373\274\34\221g\207\237\243\34\23&\235B\177\231\237\343\234\220^R\347./\357\367S\5\37\360r\267\274\352\361\362\345:\277]\30\277\303\317W\360;\3754\217\257\324\371]~Z\304W\n\217\253F\361A\276J\347w{\371j?-\23\312\367\10\345{u\276F\347\367\371\251\206\337\357\247\363\370Z\235?\340\247\363\371:\235\257\367\362\r:\337\350\247Z\276\311O\365\374A\235?\344\276\362\244\365\237\237\32\370\3032t\263\316\37\361\362-~Z\317\7|t\v\177T\232\217\211$\207\244w\253\364n\223\305ow\333\244'u\376\270\237\266\363'\274|\207\210v\247\217?\311w\371\371n\276\307\313\367\212$\7\344\365}\322\34\326\371~?\355\346m\322|J\347O\373)$\303\273\371\1?u\363\203:\177\306\313\237\25\270\36\362\362\21/?\354\247v\31\277\201\217\n\16\217\370\351\n~\324\317\275\334\347\345~/?&\277\37\367\362\347t\36\360S\27\177~\24\177\201\237\320\371\2300\373\242P|\311\313_\226\205\277\242\363\2232\371\253\322\34\227\221\247D\211\247u~\306O\7\371Y/\177Mv\360\353\302\373\33\322|S\232oy\371\333:\177GF\276+\315\367\244\371\276\316?\320\371\207:\377\230\211\230\214\306h\324\214\327G\202\211\204\231`\232\\W\273\261!\0341\33\243\255f\367\266hG\260\263\323lmL\232\361`2\26g*\307\360\205]f\274\7s\3602\34m\317\214\215\313&M\275\326\371'L>E\322\334\323i2\215I\315J\323\215\352hLl5\315}\301=\21\214\363N&\275ck2n\6;\230fl\210\232\311\371\211\266\371\211`G2\26\213$\346w%\303\221\371u\341h0\336S\37k5C5L\343;\352c\35\235q\23\32\2646F;\273\222)\352\205CPGb\241}\216$5\"\215Hw\201\31l5!\333\264A\34\266Z\342[\0230\337\337\241\364\225wL\205\33.\r\356\17\316\17\307\346\313o\214z\254Q\246\211\203\30\1\0075\206Yc\261f<\221l2C\261x\353\226X8\232\224\265y\35SQG}W\376F\207\327\274\370\255\37s\360;\35~\257\303\353:\274\341\307\37p\302\217\223\370\243\27\23>\201\37\363D\374R .\35\fR\0227\357\213\307+^?j\360\3\237\3708K\241\16~\335yC\317xt(*\24S\212\365^\t\231K\251W\2>)\363\243\201\24\371\34T:3T\254\337\353j\246\v\2\350*\344\223Y:\237\347\223\331J\266\334+s\374X\255\267\2422W\207\n\257T\372\244JIUSM\t\353\346\342U7\364?\213\371\37\244VO\\\240\222\327)\321\v\375R/o*\224\245r\221\256\32tX\346\2&&\364\376\233\275\322\350\225\213\275\362\26A\351\232x\"\326\25K\17\304\223\321L<\225\24\230m\311d,\335\222\210\16\r\305\206\4\336\201\316L:\26\35\20\204\332\257\213\336\20\255\217\247\352\333\222\203\303\31{\373R\201{@i\10\26\266'c\231\372\241\376\372\241\350@&\225J\f\325\17g\342\211\372\316XlO\264'\21\313\235/\262\3167\17\367\367\307\322\202\202\253\232\5\305\3-\303\351t,\231iN\244z\367\10J\262\317\233\372\373\207b\31\201\264\351!\353mS__:6D\311d\275 0\320\36\35\262o\265\307\222\2732\273y\267G\237\326\16'o\212\17\16*\2073\310\325<\345\30\345r\365\f\367\v\252sZ6\357\313\304\232\322\351\350\276M\303\231|}]\261T\202\334U\354\226Tr(\23Mf\266F\23\3031\342\v?\341\340\353\226\264>\24\v<+\342\311xf\225`v\315i\321[\262U`\264\244\372\10_i{<\31\3338<\320\23Kw)^\202`{\2527\232\330\32M\307\365\331\33142\273\343T~\351Y\224jI\r\f*D\261\276\251\206\362\f9\226,\233\24FMaK\321o\31\261d\352\33\206R\353\336\336\330\240\272\306\320\344E\345\275\245\243\335\272\350\32N'r\367\262/\00455\347\344\16\26k\312E\251LZ\272ew\214\362\247{\311\313\250\331\256/\335\275\272E\274\267\v\n\311\"\236\260qp\325,Q\237\350\314D{\367l\210\16:\350\270{\23\251!\373\255\22&\213>n\326\\\325\254\207==\216\317\371t_\341\26\314\254YbK\236\210&w\325S\250xr\27\245\227^j\236\340\211\314\300\340\346\224J\323\323\222\244\37\32})\275\345\355O\r'\373ZH\312K\332mmJ\335\337\233\32\334\227uBO\312q\\O\"\353\226\251t|\27\203,\221=b\f\21\tUs\275\205\342\240r\t\364\346L\227\365\374\340p\362\324M\272`\277\245$A)\331\25\313\250\2556\247\342\311\214j\307mF\206\351l;\21\245l\270\353\357\331uS\177\226JQ|\210\216\33\357\263\303\367L\36\272]Q\245\272\31/H'\350\334\261\310\256#\214\312\321\2X\355\243\270:\f\213"..., 4914) = 4914 30059 lseek(5, 1127898, SEEK_SET) = 1127898 30059 read(5, "PK\3\4\n\0\0\10\10\0WP\376@6J\313\313\333\r\0\0\\%\0\0#\0\0\0", 30) = 30 30059 lseek(5, 1127963, SEEK_SET) = 1127963 30059 read(5, "\265Y\7|\33\345\25\177\237\333\"\322I\234\316\31@\367\244-m\241\213\331]\350\240\205\4b\3n\t\245%\320\224BK[J\351.e\225\2260J\27\24\372\336w\247\323Y>Y6i\177I\356\356\33\357\377\346\367\336\373\224\323\257\337u7\0\254a;\\\320\nO\26\341\343)z\214\207\245h\217\244FhlL\346k\203\221d\26\205\322\356#\205\222\\p\0063l\365\301\270\354O\205\361eYT\36\343\350\377\243\1\372y`\225\311\n\251H\230\241\370\220\32\306\251%U9\374\266\227\350\vU\303\313\202\216\320\207\251j/\306@H\223\302\7;\244\4\267\34O{\370\267\32\355\252o\v*}\362\21\277\24\36DiQ\210*\2165\313\262\326!\307PD\4H\360\35\345\372\222_\r\373\7\345\360A>W\221\224\265L\235\30,\263\25{\274\342\316A)\31191\310\253Z\211\";\7d\315\230\230W5>[\264\370:\370*\235\306p4\236\2249]\217\300jP[$\265f\214E6\364\2319c&\322\330\37\273\246\354\324\23\37\274\231\311l\220\353r\370\322\36\221\314\344JZ`\212\311Df\26\363\332\310\311s\252\237\314\303=\231\316`E\241\310\200\"iC*\332m\373\244"..., 3547) = 3547 30059 lseek(5, 1072363, SEEK_SET) = 1072363 30059 read(5, "PK\3\4\n\0\0\10\10\0WP\376@\232\312\2160p\1\0\0\361\2\0\0(\0\0\0", 30) = 30 30059 lseek(5, 1072433, SEEK_SET) = 1072433 30059 read(5, "\205\221\333N\302@\20\206\377\205B\5\21\0249\251xB\243X\214M\364\22Cb\214$&\325\33\10\367\5+\324@k\332\242\276\226W$^\370\0>\224q\246Tb8\304n\362\317\354\356?\337\314\246_\337\37\237\0\316\261\35G\24y\226\2\313\6\313\246\214-\31E\201\350\245i\231^M \\>i\tH\327\366\203!\220\322L\313\270\37\16\332\206\323\324\333}:IkvG\357\267t\307\344}p(y=\323\0258\324,\303S\335G\325\325\7\236m\367]\265quW\267\235\201\356\335\274u\214g\317\264\255\252@\266\254=\351/\272\332\327\255\256\332\360\34\323\352V\271\247p\31?s%\240\314)\370s\322\3549\366+\17\342Sb\336\357\226:\315u\t\24\312\v\313\343\r{\350t\214\272\311\365\371\331\371\317\2700\1\31K,I\2265\226\214@\351\377\327\v\24\347\230&\327\330G\204~\n\177\22\0047!\215\321\356\202\242\240\30QF\20\357\224\204\20'\215S\4v\310\274\213e\312\22c\23\305\25\212\fH\6\200\0329\331\33U*#\204\246\t%\2529\360\t\271\261+ p\226\302\252\337\234\336\31\260n\21\246\5\310J\345t\204\3604\354\210\212\216}\330\336\3306\201\311\1\214\2634\326\311\315\330\314\274\21\245i\252B#V\26\214\310,\0361\353\327\344~\0", 368) = 368 30059 lseek(5, 1050718, SEEK_SET) = 1050718 30059 read(5, "PK\3\4\n\0\0\10\10\0WP\376@M\17q\273d\2\0\0\356\4\0\0-\0\0\0", 30) = 30 30059 lseek(5, 1050793, SEEK_SET) = 1050793 30059 read(5, "\225T]O\23A\24=\323\257m\267\5\264\270(\10\24\360\203\2\312\252\257\240\t\253!6)\30YCBx\232n\247\355\340v\27\267S\"\376\10\177\213>5\221\304\37\240\377\311xw\332T\0026\325>\314={?\316\2713w\246?~}\373\16\340\31\236\2320\260j\240l\"\2015\3\353&R\3300\360\310\300c\3\233\f\231m\31H\365\202!Y^;dH\275\f\353\202a\252*\3\261\337m\327D\364\216\327|\362\24\253\241\307\375C\36\311\370{\340L\251\226\3540\254U\3\241\354N\303\356\360\266\nC\277c\277\22\r\336\365\225\273\263w \2740\252\357rO\205\321\371\0261{\221\340J\f#\f\333\345k\345\24\335\225\276x-x]D[\327\351\207\325D\230i\351,\206\322\30\232\241\266\363G\2732N\273Rq\335J\377w\354\\o\304\271\324\310L$\32\"\22\201'\\\361\241\33\333JP\27\37\31X\205a\222\373\262\31\264E\240\\\305#E\16j\245\276\317\333\242*\202\246jQ\226K\3166?=\225A\363m\227\322\3259C^\306\24\344qd\300\220\365d\223GT\300\220n\370\274IGo\3044\3323\327\246\255\35\214h\241\30\7w\256\264`\312\240#\"\345\312O4\312\351\263\301h\373\3758~\350\275gH\34;\224\347\206\335\310\23\361\2510\314\217\30\355\346\t?\343\5\344`2\314\216\234W\234`\377%\301\271\234\360\204a\365\37/\24\303\215X\327\366y\320\264\337\324N\204G\373Z\32)?\254Z\31{\347\350-\330\377w9\16\261\214\f\2756\232\23=\275$Y:\fZ\363\364e\223ed\323\353=\260\257\4\22(\320\232\321\316,&h-\364\0230\211)\262\2641\334\34\24?'\262\4\331\334\5\22G\33=$\277\\!(h\202\231~\322\200 FELk\335[\260\6T?)6I\266t\201\324\321\306\374\202\225\262\322V\3062\254\254\225\263L+o\25f'zH_\25X\324\2\237\373\245C\201\322@ F3\270\255\345K\270C(\251\321,\346\350\317&Fw\t\2455\232\247hF\243\5B\206F\213\204\262\32\225\10\3454Z\"dj\264L(\257\321\n\241\202F\367p\237:bx\240\373|\370\33", 612) = 612 30059 open("a.sam", O_RDONLY) = 10 30059 fstat(10, {st_mode=S_IFREG|0644, st_size=310, ...}) = 0 30059 fcntl(10, F_GETFD) = 0 30059 fcntl(10, F_SETFD, FD_CLOEXEC) = 0 30059 lseek(5, 617054, SEEK_SET) = 617054 30059 read(5, "PK\3\4\n\0\0\10\10\0\251`\273D\21)6\2739\4\0\0\333\7\0\0&\0\0\0", 30) = 30 30059 lseek(5, 617122, SEEK_SET) = 617122 30059 read(5, "\215TkS\23g\24~6\267\r\313\"\1\1\271h\5D\233\v\222\n\nX\220K\270H0\301\226XZ\241\267%\254\260\270\311\322\315\246S>\3657\364\253_\372\7\234\216N\v2\255\343\330/\355L\177S\247\323\347}\23\22\212\264\366C\316\236\333{\316\363>\347\274\371\343\257\237_\1\30\201\241\341<\306\33\320\210\333\32\336\307\204\320&\205\270\243a\n\323B\314h\230EJ\303\34\346E`A\305\242\306\357\270\206\273X\22\207\322B[\26\276{adDNV\305\212\202P\301\330\266\362\217\25\3706R\n\364\202\261\353\270k\246[\262\234\242\2E\272\254\342\t\227\317\332R\320T2\n\213\226m.\231\306\226\351*\270\234)\232^\262\364(I\277\3478v)\231\233\315\326\23&\330f\322*Z\336\224\2\1774\266\246 0\347l\231\n\2323V\321\\)\0276M\367\201\261i\323\323\232q\362\206\275f\270\226\260\253\316\200\267c\225\24\364\37w\311\273F!Y\362\334r\336+\273fr\216f\255\321h4\235\316\354\32_\33I\333(n's\236k\25\267'\336\202O@R\322\242\373\33'\25\4K\246\227\236W\320\36}3*\16\206KR\27)\301\274\355\24\tx \32\373?XC\346We\303.\235*}\177s\327\314{\23\261u\222\345l\356\376\23U5H\270;\34C\3163\362\217\263\306\236\344\211#W\320\306\316gdk\v\337\344\315=\217\23,\251\270O\314\223y\273:\20-\347\224\335\274)\330\340@\352\370\206D\31\35\27qIG\27\332U|\240\343C\254\352\350\300\5\35\235\270\240\"\247\343\1>\322\261\206\217U|\242\343!\326Ul\350\370\24\237\351\350F\217\202\336\267\261\240\342s\0351|\241#\201/\205\30\24f\\l\310\352lVG\33\332\25DN\337\210\f\327]s\202\363\25\307\313\225\367\366\34\3273\267jw=>Y\366,;9\353\272\306>\271\16<\262l\233\334G7R)1\276\310\351\241\222\235m\323K\355{\246\310\216\306\304\273\10\331fq\333\333\221\353\313=9W?\2235\244\233\217\204\343\347\356\211\360\311\222\373%\317,(h0D\373\274\263\267\257 ~\306\264\323g\270\322\2\336\245\377\334\\\5}\365U\373\327\307\247\362\256\33\251\330:n\360\331\237\347_J\220\23%\263\324\0241N\371\355\224\337\0261kis~\374\252\324\270\2\224\357\320\272\7\0375\240=\376\2J<\322\3662|\0_\374'\370\374G\360?g\300\207\313\224\255\10P\366S\366@\347\3416\\A/=z\3450\372\30\203,|\245Z\370\7\204\10\n\2309\253p\274\347\273\3\4\342\27)\203\327\17\21\362\313\0005U(\257\216\20>BC\274+p\0\255\216\241\37a\312\253'0\\\343\225\336%\216(ns\305\246\21\227\230nV\372V1\t\255\3\3\22\347\f)\31`5\241u\261\222_j\202\226\0\343\327X\253\202}\225\330EVw\242\206M\342\242\251V\260\325Qi2\363:\353\r\311\356\35\225\223\265\356\335Dw\225u\25\361\10\252\365\277%B\2215\366\v\32\37\276\200\236I\260\322JE\251\233i\31\271\35!\36\214\257\243\23\301G\307\224\25\2118\324\303<\253M\273S2\2208m\223\\\271x\n\304XK\25\2476\266\t\323\246>\203\355\334\235y^\313c(\5\221J)\264(\324 ?\342\226\241\34\n\335QY\22\20o:-\377\236?r7\342q\350R\250\214C\n\255L\372\227\322\\\270\361\373N\207\306_\205\205\22\303\336?\336@\7\344\tR\271^<\316\364_z\375\375\nk\27\5\372h3l0\223A\363\fU.)#-\35\274\200=\323\242@\6P\313\300&fi\256N\f(\243\2X\fsD\214\316c\201:5\352Y\244\213D\226P\237\"\215<\350'iby\212\254`\225*\206\265<}\375\23", 336) = 336 30059 lseek(5, 1200590, SEEK_SET) = 1200590 30059 read(5, "PK\3\4\n\0\0\10\10\0WP\376@\335\314\263}\275\10\0\0r\20\0\0-\0\0\0", 30) = 30 30059 lseek(5, 1200665, SEEK_SET) = 1200665 30059 read(5, "\215W[tTW\31\376\366\334\316\231\223C\10C&tBR\302\245e2!\244\1\32d(\264$\2I\314\r\22@.ZN2'\311\300df\2309\303\245\325\26\nT\321Z\333\212T.\255\265\266Fk\252\5\233\1K%\255\27\252\265\276\370\354\213/\256\325\27\327r\371\342\352B\343\267\317L\222!\fhV\262\367\277\367\376\357\227o&\37\377\347\275\33\0V\341O\32\32\221\326HY^R\31\367d\376G\236\16\313\345\210\\\216\2528\246\341\t<\251\341+\370\252\202\247\274x\32\307\25\234\320P\nK\3053r?\251\342\224\334O\313\345Y\r_\303\327\25\234Q\361\ry\376\246\212\347T|KC\5\236W\361m\r/\340E\5/\311\375;\32\316\342\273*\316I\276\227U|O\305y\r\367\343\202\\.j\270\204W\344\362\252<~_\301k\32B\370\201\212\3275\374\20o(xS\206\360\212T\364\254\202\37)\30\25P\223\211t\324\212&\342\2\242]`\316@\"n\231q\253\303\214\17Y\303\2\316L*&P\332q\3008l4\304M\253a\307\366\216\365\2\356d*q\364\230@\331\314C\217\274\341\223\347\221h\201sx_\307\255\1\334N\"\212\17\244_J\342C\334\221\2562ei\26t,&1\210y\351,IsW\232e\31\372\221\216\217uT\4\264\206\333t\4\206\252_\332_\331\226\353[\313\364o\tD\33n p\261{\374\251\355\325\375\335r\255\346\4A'$~\333\365\334\260$p.w\372\355\374&q\27\375:qSU\327sV\333\273[N\3533{K2\245\253~\315nn\332-W\372\235C-\334\221t\371\252\347\204V\320\260\2{7\364\375f`\265C\267im8\316#\31'\3017\302\226c\357\222=y\367q\315\331\v]\337\vt\334\243\232\246\343m\207;T\236\313\323\215:~C\355\277\0208\263\21\332\265G+\366\236b\323\361\t\t\3br\311\335\223b\7\366\374\300\225P\2\202\357j\244\250\v\350\271\7\v\225J\236E\212\325\374\266\27\362\222\373\370V\273\321pZ\2\221\7\v\364\374F#p\344\225'\303\232~\340(\326Me\31\236\330v\302\r\277\335\252\361\374|.\177T\250\246\355m[\314\304\365\266e&G\367\313\252\21\243\257&{]\276c`\24\263\6\206q^ \363OM\241\214\226\f\254\03201\242c\305\3008&\f\254J\3636\246\4&O\370+^\335y\274\326\16\327\32\v\314\256\36t\353i\240\200i\203\3436+ws\6\326P\24\230\372\237\255!\307\277F\36Ge{Gf\325\17\227\245\210\256\6\201\341\343\373\312Z\317\351d\337\250\275ZOYz\2437\206\303\315\36\310\335\272\357z\241l]\212\7\345\255\300o\266Cg\335\16w0\301O(\315O,\302\207%\206\374\261\202\264\3`O\220\341\315\5z\237#\246b2\205C\210\302\364sD\n/\20\275?\235\326\16\21{\216\370\217\n\343\"m\32Z\307\16#A\304Q\342\275\301\223\221\243\3671\206\254b\311(>\2017\271\327\270^\342\303\236\321^P\237|\204;\252(Ed\221pH5G\1\2410s\205\4\3162\330\f\232\323]C\326-\242\364\2r\255\336\230\"\272\10S\250\250\32\300\16f\2669L\16a\234e\261Mn\306\346\226\215(-R\0334\342\311\212\21\231\305#\346\203\232\3027", 372) = 372 30059 lseek(4, 27775545, SEEK_SET) = 27775545 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\r\302\242\364\214\1\0\0\214\1\0\0*\0\0\0", 30) = 30 30059 lseek(4, 27775617, SEEK_SET) = 27775617 30059 read(4, "\312\376\272\276\0\0\0003\0\25\1\0\3()V\1\0\25(Ljava/lang/String;)V\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\1J\1\0\17LineNumberTable\1\0\nSourceFile\1\0$java/lang/NegativeArraySizeException\1\0\32java/lang/RuntimeException\1\0\20serialVersionUID\5\203\247D\0313\303|\213\7\0\t\7\0\n\f\0\3\0\1\f\0\3\0\2\n\0\17\0\20\n\0\17\0\21\1\0\37NegativeArraySizeException.java\0!\0\16\0\17\0\0\0\1\0\32\0\v\0\6\0\1\0\5\0\0\0\2\0\f\0\2\0\1\0\3\0\1\0\1\0\4\0\0\0!\0\1\0\1\0\0\0\5*\267\0\22\261\0\0\0\1\0\7\0\0\0\n\0\2\0\0\0+\0\4\0,\0\1\0\3\0\2\0\1\0\4\0\0\0\"\0\2\0\2\0\0\0\6*+\267\0\23\261\0\0\0\1\0\7\0\0\0\n\0\2\0\0\0005\0\5\0006\0\1\0\10\0\0\0\2\0\24", 396) = 396 30059 lseek(4, 54076770, SEEK_SET) = 54076770 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305Bb\266C\223B\3\0\0B\3\0\0\31\0\0\0", 30) = 30 30059 lseek(4, 54076825, SEEK_SET) = 54076825 30059 read(4, "\312\376\272\276\0\0\0003\0*\1\0\3()J\1\0\3()V\1\0\4(I)V\1\0\5(II)I\1\0\10(I[BII)I\1\0\5([B)V\1\0\7([BII)V\1\0\6\1\0\4Code\1\0\1I\1\0\17LineNumberTable\1\0\nSourceFile\1\0\rStackMapTable\1\0\3crc\1\0\10getValue\1\0(java/lang/ArrayIndexOutOfBoundsException\1\0\36java/lang/NullPointerException\1\0\20java/lang/Object\1\0\23java/util/zip/CRC32\1\0\26java/util/zip/Checksum\1\0\5reset\1\0\6update\1\0\vupdateBytes\5\0\0\0\0\377\377\377\377\7\0\20\7\0\21\7\0\22\7\0\23\7\0\24\f\0\16\0\n\f\0\10\0\2\f\0\26\0\4\f\0\27\0\5\t\0\35\0\37\n\0\32\0 \n\0\33\0 \n\0\34\0 \n\0\35\0!\n\0\35\0\"\1\0\nCRC32.java\0!\0\35\0\34\0\1\0\36\0\1\0\2\0\16\0\n\0\0\0\10\0\1\0\10\0\2\0\1\0\t\0\0\0!\0\1\0\1\0\0\0\5*\267\0&\261\0\0\0\1\0\v\0\0\0\n\0\2\0\0\0)\0\4\0*\0\1\0\26\0\3\0\1\0\t\0\0\0)\0\3\0\2\0\0\0\r**\264\0#\33\270\0'\265\0#\261\0\0\0\1\0\v\0\0\0\n\0\2\0\0\0004\0\f\0005\0\1\0\26\0\7\0\1\0\t\0\0\0j\0\5\0\4\0\0\0003+\307\0\v\273\0\33Y\267\0%\277\34\233\0\17\35\233\0\v\34+\276\35d\244\0\v\273\0\32Y\267\0$\277**\264\0#+\34\35\270\0(\265\0#\261\0\0\0\2\0\r\0\0\0\5\0\3\f\17\7\0\v\0\0\0\32\0\6\0\0\0;\0\4\0<\0\f\0>\0\34\0?\0$\0A\0002\0B\0\1\0\26\0\6\0\1\0\t\0\0\0,\0\5\0\2\0\0\0\20**\264\0#+\3+\276\270\0(\265\0#\261\0\0\0\1\0\v\0\0\0\n\0\2\0\0\0J\0\17\0K\0\1\0\25\0\2\0\1\0\t\0\0\0\"\0\2\0\1\0\0\0\6*\3\265\0#\261\0\0\0\1\0\v\0\0\0\n\0\2\0\0\0Q\0\5\0R\0\1\0\17\0\1\0\1\0\t\0\0\0\"\0\4\0\1\0\0\0\n*\264\0#\205\24\0\30\177\255\0\0\0\1\0\v\0\0\0\6\0\1\0\0\0X\1\n\0\26\0\4\0\0\1\n\0\27\0\5\0\0\0\1\0\f\0\0\0\2\0)", 834) = 834 30059 lseek(4, 54076512, SEEK_SET) = 54076512 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305BnL\351p\310\0\0\0\310\0\0\0\34\0\0\0", 30) = 30 30059 lseek(4, 54076570, SEEK_SET) = 54076570 30059 read(4, "\312\376\272\276\0\0\0003\0\16\1\0\3()J\1\0\3()V\1\0\4(I)V\1\0\7([BII)V\1\0\nSourceFile\1\0\10getValue\1\0\20java/lang/Object\1\0\26java/util/zip/Checksum\1\0\5reset\1\0\6update\7\0\7\7\0\10\1\0\rChecksum.java\6\1\0\f\0\v\0\0\0\0\0\4\4\1\0\n\0\3\0\0\4\1\0\n\0\4\0\0\4\1\0\6\0\1\0\0\4\1\0\t\0\2\0\0\0\1\0\5\0\0\0\2\0\r", 200) = 200 30059 lseek(4, 30711067, SEEK_SET) = 30711067 30059 read(4, "PK\3\4\n\0\0\0\0\0:\246\305B\226\343 \265|\4\0\0|\4\0\0&\0\0\0", 30) = 30 30059 lseek(4, 30711135, SEEK_SET) = 30711135 30059 read(4, "\312\376\272\276\0\0\0003\0005\1\0\3()I\1\0\4(I)V\1\0\4(J)J\1\0\7([BII)I\1\0\7([BII)V\1\0\6\1\0\4Code\1\0\nExceptions\1\0\17LineNumberTable\1\0\nSourceFile\1\0\rStackMapTable\1\0\2[B\1\0\5cksum\1\0\vgetChecksum\1\0\2in\1\0\31java/io/FilterInputStream\1\0\23java/io/IOException\1\0\23java/io/InputStream\1\0 java/util/zip/CheckedInputStream\1\0\26java/util/zip/Checksum\1\0\4read\1\0\4skip\1\0\6update\5\377\377\377\377\377\377\377\377\7\0\f\7\0\20\7\0\21\7\0\22\7\0\23\7\0\24\1\0\25Ljava/io/InputStream;\1\0\30Ljava/util/zip/Checksum;\1\0\30(Ljava/io/InputStream;)V\1\0\32()Ljava/util/zip/Checksum;\1\0000(Ljava/io/InputStream;Ljava/util/zip/Checksum;)V\f\0\17\0 \f\0\r\0!\f\0\25\0\1\f\0\27\0\2\f\0\25\0\4\f\0\27\0\5\f\0\6\0\"\t\0\36\0%\t\0\36\0&\n\0\33\0+\n\0\35\0'\n\0\35\0)\n\0\36\0)\v\0\37\0(\v\0\37\0*\1\0\27CheckedInputStream.java\0!\0\36\0\33\0\0\0\1\0\2\0\r\0!\0\0\0\5\0\1\0\6\0$\0\1\0\7\0\0\0+\0\2\0\3\0\0\0\v*+\267\0.*,\265\0-\261\0\0\0\1\0\t\0\0\0\16\0\3\0\0\0001\0\5\0002\0\n\0003\0\1\0\25\0\1\0\2\0\7\0\0\0I\0\2\0\2\0\0\0\31*\264\0,\266\0/<\33\2\237\0\r*\264\0-\33\271\0002\2\0\33\254\0\0\0\2\0\v\0\0\0\6\0\1\374\0\27\1\0\t\0\0\0\22\0\4\0\0\0;\0\10\0<\0\r\0=\0\27\0?\0\10\0\0\0\4\0\1\0\34\0\1\0\25\0\4\0\2\0\7\0\0\0K\0\4\0\4\0\0\0\36*\264\0,+\34\35\266\0000>\35\2\237\0\17*\264\0-+\34\35\271\0003\4\0\35\254\0\0\0\2\0\v\0\0\0\3\0\1\34\0\t\0\0\0\22\0\4\0\0\0R\0\v\0S\0\20\0T\0\34\0V\0\10\0\0\0\4\0\1\0\34\0\1\0\26\0\3\0\2\0\7\0\0\0\307\0\7\0\10\0\0\0I\21\2\0\274\10N\t7\4\26\4\37\224\234\0009\37\26\4e7\6*-\3\26\6-\276\205\224\234\0\t\26\6\210\247\0\5-\276\266\0001\2057\6\26\6\24\0\30\224\232\0\6\26\4\255\26\4\26\6a7\4\247\377\306\26\4\255\0\0\0\2\0\v\0\0\0<\0\5\375\0\t\7\0\32\4\377\0\36\0\5\7\0\36\4\7\0\32\4\4"..., 1148) = 1148 30059 lseek(4, 30732128, SEEK_SET) = 30732128 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\2535\17\213m\1\0\0m\1\0\0 \0\0\0", 30) = 30 30059 lseek(4, 30732190, SEEK_SET) = 30732190 30059 read(4, "\312\376\272\276\0\0\0003\0\25\1\0\3()V\1\0\25(Ljava/lang/String;)V\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\1J\1\0\17LineNumberTable\1\0\nSourceFile\1\0\23java/io/IOException\1\0\32java/util/zip/ZipException\1\0\20serialVersionUID\5o\6h\242;\300\324\317\7\0\t\7\0\n\f\0\3\0\1\f\0\3\0\2\n\0\16\0\20\n\0\16\0\21\1\0\21ZipException.java\0!\0\17\0\16\0\0\0\1\0\32\0\v\0\6\0\1\0\5\0\0\0\2\0\f\0\2\0\1\0\3\0\1\0\1\0\4\0\0\0!\0\1\0\1\0\0\0\5*\267\0\22\261\0\0\0\1\0\7\0\0\0\n\0\2\0\0\0/\0\4\0000\0\1\0\3\0\2\0\1\0\4\0\0\0\"\0\2\0\2\0\0\0\6*+\267\0\23\261\0\0\0\1\0\7\0\0\0\n\0\2\0\0\0:\0\5\0;\0\1\0\10\0\0\0\2\0\24", 365) = 365 30059 lseek(5, 1148367, SEEK_SET) = 1148367 30059 read(5, "PK\3\4\n\0\0\10\10\0WP\376@\312X\257\25^\22\0\0;$\0\0\"\0\0\0", 30) = 30 30059 lseek(5, 1148431, SEEK_SET) = 1148431 30059 read(5, "\245Y\v|T\345\225?g^wf2\223\204\220D\22!\f\310#\217\tAD\202\3\202I\10\20L\2\230\360\3665$7\311\340\344N\230\271\341!U\320Rk\265\272[\353nW|\261\356\326\270-\335R[\201\26\305\326>\354vw\333\335\326m\327\335\325\335\332\272E\335\272m\331\272U\301\364\177\276{\347\25\6\354ow~\231{\277\347\371\316\371\237\3477\371\336\7_;ED\v\370\36?\355\243\237k\364\272\217n\245\377\324\350\27~r\321iy\274\341\2477\351-\215\276\343\247\377\242_\312\310\317\375X\363\266\227\376[:\277\222\316\257\245\365\33\215\316\370\251\224\376\307\r\212\264\177||\334\215\357\370\1t4\372\255\227\336\361\322\377\312\272\337\371\251RH\357\243\337\310\343]?\275G\357\373\250\203\316jt\316K\37\370i:\235\366\3218\235\3651\341A+\350\254\227\31[\331\341g'\273\374\354f\217<4u\22>\343vc\334j\310\261^\366\312\22\37\250\263\337\313E`\223\3^\16B\n.\366r\211\227Keh\222\306e~\212p\271\227\36\361\223\203+\274\\)\357K\2749D7\372\24\335\305\265\347\363\2203\262v\373\16\275\317\\RW\210Q-\2360\6!\30D]\203\236\31\35\354\216\16+\306\n,v\357\22\4\362'm\342L\216\324v\246\252\363\266\265\216\306\342\375zr\211E\274w\357\10\366s\33P\3551\243}\267tEG\224\320\3603\246\300\240n\266$\223\321\275\326\252\312\332\363\217\331Z\327&\370\250ywT\3262\371c\251\rF*6h\350\375 \275\25\244\373\22\303#\tC7L\213\320\244\34:m\361h*\5f*\363\201\307:\33\374\362\211\213\227\326/[\242\361\312\264\211\224Z\240+>7Zp\314)\300hA\2609\6\203H\352&T\27\327\215As\10&\261;\326\257\33\275\211\254\4\205\304\256\333\6\345\270\206\243\251[\200\363\2665\32\35\201\341Y\214\2447\266X`h\212\236\320)M\317\vZ\3750\33\234\n\273\301\220\306\253\201^\273a&\261!\320a\30zRI\252\303\350\352\n\230\222-\313\250\31\2137Aa\263\324N\210\3434\205\250\317\30\35^i;\203\363\26\35$})\265OY\225s\227<}=\3401j\216&\201\326\332?\364\204\245\177\210Q/\3\37\25}\tc\227\2364\255E\275\tk\352C\335\"\377\354|cf0:#g\302r\332\225\211\344p\324l\337\323\247\217\230\261\204\1\263\230\n\223\357Kd\17\267\3147\303\301\234\v\313:\301y\266\255\4J\266/\212M9\266\265\312\243G\36\35\242"..., 4702) = 4702 30059 lseek(4, 56458799, SEEK_SET) = 56458799 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\177o\217\315\317\2\0\0\317\2\0\0%\0\0\0", 30) = 30 30059 lseek(4, 56458866, SEEK_SET) = 56458866 30059 read(4, "\312\376\272\276\0\0\0003\0'\10\0\3\10\0\n\1\0\1\"\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\25(Ljava/lang/String;)V\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\23For input string: \"\1\0\1J\1\0\17LineNumberTable\1\0\nSourceFile\1\0\6append\1\0\16forInputString\1\0\"java/lang/IllegalArgumentException\1\0\37java/lang/NumberFormatException\1\0\27java/lang/StringBuilder\1\0\20serialVersionUID\1\0\10toString\5\330v\211?\373\214\352\22\7\0\20\7\0\21\7\0\22\1\0005(Ljava/lang/String;)Ljava/lang/NumberFormatException;\1\0-(Ljava/lang/String;)Ljava/lang/StringBuilder;\f\0\7\0\5\f\0\24\0\4\f\0\7\0\6\f\0\16\0\33\n\0\27\0\34\n\0\27\0\36\n\0\30\0\36\n\0\31\0\34\n\0\31\0\35\n\0\31\0\37\1\0\32NumberFormatException.java\0!\0\30\0\27\0\0\0\1\0\30\0\23\0\v\0\1\0\t\0\0\0\2\0\25\0\3\0\1\0\7\0\5\0\1\0\10\0\0\0!\0\1\0\1\0\0\0\5*\267\0 \261\0\0\0\1\0\f\0\0\0\n\0\2\0\0\0-\0\4\0.\0\1\0\7\0\6\0\1\0\10\0\0\0\"\0\2\0\2\0\0\0\6*+\267\0!\261\0\0\0\1\0\f\0\0\0\n\0\2\0\0\0007\0\5\0008\0\10\0\17\0\32\0\1\0\10\0\0\0008\0\4\0\1\0\0\0 \273\0\30Y\273\0\31Y\267\0#\22\2\266\0%*\266\0%\22\1\266\0%\266\0$\267\0\"\260\0\0\0\1\0\f\0\0\0\6\0\1\0\0\0A\0\1\0\r\0\0\0\2\0&", 719) = 719 30059 futex(0x7fb31443af54, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x7fb31443af50, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1}) = 1 30087 <... futex resumed> ) = 0 30087 futex(0x7fb31443af28, FUTEX_WAKE_PRIVATE, 1) = 0 30059 lseek(5, 1183957, SEEK_SET 30087 futex(0x7fb31443d954, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x7fb31443d950, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1} 30059 <... lseek resumed> ) = 1183957 30088 <... futex resumed> ) = 0 30087 <... futex resumed> ) = 1 30088 futex(0x7fb31443d928, FUTEX_WAIT_PRIVATE, 2, NULL 30087 futex(0x7fb31443d928, FUTEX_WAKE_PRIVATE, 1 30088 <... futex resumed> ) = -1 EAGAIN (Resource temporarily unavailable) 30087 <... futex resumed> ) = 0 30088 futex(0x7fb31443d928, FUTEX_WAKE_PRIVATE, 1 30059 read(5, 30088 <... futex resumed> ) = 0 30059 <... read resumed> "PK\3\4\n\0\0\10\10\0WP\376@*\vL\200\247\1\0\0h\3\0\0:\0\0\0", 30) = 30 30088 futex(0x7fb31443d954, FUTEX_WAIT_PRIVATE, 15, NULL 30059 lseek(5, 1184045, SEEK_SET) = 1184045 30059 read(5, "\235\221\301N\333@\20\206\377!NL\322\264\1\n)mi\1\211C\10\10KPq\1!!\240j$SQ%\345\276\204-,2kdo(\257\305)R\17}\200>\24b\306q)J\203*\325\226fvf\377\377\333\361\372\327\335\217\237\0\326\261XA\t\257%\274\221\360V\302\234\217\367>\346\t\245mc\215\333!\24\32\313\307\4o/>\325\204Zh\254\376\334\273<\321IG\235D\334\231\n\343\256\212\216Ub\244\316\233\236;7)a\272e\257UdN\367\225\323\0077]}\345Ll\t\325\226\265:\331\213T\232jVm\206V\273 \375\26\244\352\322\305q\224\6=g\242@LG*Iu\2624\n\263E\230i\204\27\352Z\5\221\262gA\333%\306\236m\311\254\224\312X\177m\21\232#\f\217:\235\363$\376.\37\220Q\312\356w\311'\215T\21f\33O\332+\355\270\227t\365G#\376\332\237\217Y\23C\25>\306%LHx)\241\356c\201\360\341\177\256\20207lk\357\36>\332\236\377\7\25\213(\362\277\227\307\3\311l\34\313\\mp&\316\305f\37t\313\2131T8V8\203>\301\243\26\236q]\35\2108\3278\v`\"\7\354\260\222\265(5W\372\30\33&\204(\322aF\250\17T9AV\223\230\312\16\347\353\311Y-\24\370\5\374\346\312j\37\205a\330\21J\364%\203-\fd\0170?\207\311j\0323\254\26l}\324\210\3360\265\303#~}bDa\21w_e\236Y\274\310\\\304\27\361\16\317Q\276\7", 423) = 423 30059 lseek(4, 53435053, SEEK_SET) = 53435053 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\267\34\37Iv\1\0\0v\1\0\0\36\0\0\0", 30) = 30 30059 lseek(4, 53435113, SEEK_SET) = 53435113 30059 read(4, "\312\376\272\276\0\0\0003\0\24\1\0\3()I\1\0\25(Ljava/lang/String;)V\1\0\6\1\0\4Code\1\0\1I\1\0\17LineNumberTable\1\0\nSourceFile\1\0\verrorOffset\1\0\16getErrorOffset\1\0\23java/lang/Exception\1\0\30java/text/ParseException\7\0\n\7\0\v\1\0\26(Ljava/lang/String;I)V\f\0\10\0\5\f\0\3\0\2\t\0\r\0\17\n\0\f\0\20\1\0\23ParseException.java\0!\0\r\0\f\0\0\0\1\0\2\0\10\0\5\0\0\0\2\0\1\0\3\0\16\0\1\0\4\0\0\0+\0\2\0\3\0\0\0\v*+\267\0\22*\34\265\0\21\261\0\0\0\1\0\6\0\0\0\16\0\3\0\0\0<\0\5\0=\0\n\0>\0\1\0\t\0\1\0\1\0\4\0\0\0\35\0\1\0\1\0\0\0\5*\264\0\21\254\0\0\0\1\0\6\0\0\0\6\0\1\0\0\0D\0\1\0\7\0\0\0\2\0\23", 374) = 374 30059 lseek(5, 1180875, SEEK_SET) = 1180875 30059 read(5, "PK\3\4\n\0\0\10\10\0WP\376@\361h0u\7\4\0\0\301\7\0\0-\0\0\0", 30) = 30 30059 lseek(5, 1180950, SEEK_SET) = 1180950 30059 read(5, "uTmS\33U\30=\233\267%\313\")\5JC\337,\332&\213%6\212V\251i\3$5\232\6%@\r\255\342\22\26XH6L\262\261\216?\305?\340\27\234\261N\1\247\314\350\267v\306\337\344\250\347\336lC:,_\356\275\373\274\234\3479\347y\222\277\377}\361'\2004\276\215\342\16>\3210\214O5\214`&\312\327]\25\237\251\310\364\341\236\206\373\310j\210`VC\30s\3029/\216\234\370\314\253x\240\342s\r\203(h\370\2_\212\243(<\17U\224T,\250\370JA\244i\231\33VS\301Xq\307\374\301L\331\215\324l{s\323jZ\33\213\3223\243@\253\331\216Uj\327\327E\234R\240a\317\262v\255\215\"\315\n\206:\2115\323\331J\225\335\246\355l1%r\327vl7C\330D\27\267\340\354\265]FXf}&\271\242 4\327\330`\376`\261\213\276d\256\327$b\243j\326V\314\246-\276=c\310\335\266[\n\222E\307rS\255\315T\313\254\273\215F\255\225j\273v\255\333\263\300\352\366\35\20\t#\276\365\25\\\364o\254 :\323\326%\\\331\376\211\205\373\204B\35\252\303\211\244\37\331`\323r)\214\365F\261\205\334\217Uk\317\265\33\16#\6\312\256Y\335}h\356I2*\276\226\23x@\307\226\345\26{\324\r&\222\3247$\364U\20\256\326\32-K\32ES\345F\273Y\265\362\266P\343\302i\302S\242\264\212E\35e\304u\\\306\rqL\353\270\210\270\202Q\377\351R\7\37\25^\373\302\313K\371[wT,\351X\306\212\200{$\216ot\\\300\230\216q\\\322\221@R\301y\37\332\nn\372\216j\261\355\270v\335\352\211\24\230\25\212\242c\25i\35\217\361D\307\207\230>\v\3404u\5\261\223\261,\254\357XU\316\343\252o\362\31I\235Y*\30\367M*,,\363\342\374\313K\331\322|vq~mv9\237\317-\256\225\v\2539\356\270\304qH\277\272m6[D\230\353\334\n\324\315F\263d\3269\261\251\304\351\325\361\266\311'\223;\223\366_\320\263S\304\222\f\237$y?\3\271\320c\275\305\227\266\233\215\247b\17eF\244f9[\3566\37\2/\313\236C\211Br\16o\363\177d\4\\\34\0041$\346\315\377\243\200\330%ys\364\274#\364_\306\25\236W\371\225ed\200w\324\230\374\35\312\21\2\317d\3505\236\232tL\241\17)\2\203\2402\20\3271\1\310\327;x\2270\2\356\206\7W\207J@`\3028B\320\10\36 d\34#\\9F\24429\244\376\201\276#D/\35A;@\377I\241!\204x\336\346i\0204\315\2\37\310\202\327:P\335\202\23^A\361\272IN\1\276\271\311^\351\27\36\223\264Qy\216P\350{Q\3739\364\227\210\211\253h(\7\320\177A??\372\0171P\234\374\255x\214\301\312\344\21b\177\21A#b\2o\21Ctt\235\244\201\31Z38\207{\244~\237\212\315\222\346<\243r\254\231\227\35\32\354y\224\261\6\225U\350\rx\257$yL\342=\331k\332\353\377\226\2240x\345\37\250*\246\376\23\302\251T\226\307\373|\337f\\\207GJJ\n\204\331ih\277+RD\32K\262\254\336\t\360\200\25\312\365:\371WO\204\214\340\374\n\343\206GWr\0378a\334q\207\3\373\342q\210s?#\22\323\344G\360\20C\373DS9\226\221\256 \6\245\0\36\321Z\241\375\t=\253$\363\2305\277#\3555\212b\262\207uLc\243\273+\243=\"dzD\210\"\264L\322\321>A\203\177\31^\353O\275\326\343rR\235\276\317\277\321\3643F\206I~\260\333V\234\262\0\333\264"..., 1031) = 1031 30087 mprotect(0x7fb27c12a000, 40960, PROT_READ|PROT_WRITE) = 0 30087 mprotect(0x7fb27c134000, 4096, PROT_READ|PROT_WRITE) = 0 30059 futex(0x7fb31443d954, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x7fb31443d950, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1} 30088 <... futex resumed> ) = 0 30059 <... futex resumed> ) = 1 30088 futex(0x7fb31443d928, FUTEX_WAIT_PRIVATE, 2, NULL 30059 futex(0x7fb31443d928, FUTEX_WAKE_PRIVATE, 1 30088 <... futex resumed> ) = -1 EAGAIN (Resource temporarily unavailable) 30059 <... futex resumed> ) = 0 30088 futex(0x7fb31443d928, FUTEX_WAKE_PRIVATE, 1) = 0 30059 lseek(5, 1116892, SEEK_SET 30087 mprotect(0x7fb27c135000, 8192, PROT_READ|PROT_WRITE 30059 <... lseek resumed> ) = 1116892 30087 <... mprotect resumed> ) = 0 30059 read(5, "PK\3\4\n\0\0\10\10\0WP\376@A\257;\214\336\26\0\0\2072\0\0(\0\0\0", 30) = 30 30059 lseek(5, 1116962, SEEK_SET) = 1116962 30059 read(5, "\245[\t|T\325\325?\347e\2227\231\274\2200a\v\353\4\2\204,l\262\231\4HH\2\f&!$\201\30\24qH&a0\231\2113\23\26\321j\353RZ\265j\335\20\255\212\255\315\327b\255 L\300\264\322\326\26\213\325\256j\367\275\265\213\335\355Ji\371\376\347\2767K\222\t\344\363\343\367\233\373\356\273\357\336s\317\371\237\365\336\350+\377}\341E\"Z\254\271\35t\230\313\35\364q^\251\363*\7\245\360\312t\214\254\326\271\302Ai\346Ke:}\236\327H\257J\347j\7e\230\3035\322\254\225f\235\316\353\35\224m\16\273\245\331 d\257\320\271V^\352\0344\236\353\245\331\230N}\334 \275M\16:\302\2152\253I\232fi6K\263E\350\267\350|\245\235[\205\203\255\322\\%\315\325\16\312\343m:_\343\240\271\274]\246]+\215G\232\35\31\334\306\3552\313\233B\331D2\326\221z\301\372\347\340N\336\231\301>\336%\315uv\356\312\340n\366gp\200{2\370z\16J\23\3229\234A\245\334\253\363ny\356q\360^\336'\374\337\220\16^\367\v\3037\352|\223\203\326\360J;\277G\244\270Y\347[\344\371^\7\255\345m\322{\237\310p\253l\177\233\254\272\335\316w\350\374~\7\325\3636;\37\220\347\7\34\374A\276Sz\373t\276\313\316w\247\263\203?d\347{\4\374{u\376\260\235\357\267\363\0032\372\240\350\345j\21\355!!\366\260\235\17\332\371\21\7\265\361!\235\37\225\347c2\376\21;?n\347'\354\374\244(\352\260\316O\211\230\37u\320.\376\2304O\v;\37\267\323\377\330\271Og\264\237\260\363'\5\253#\16\272\236\237\321\371S\16\332\315\317\212\250\237\26\366\237\223\371G\5\345c\262w\217\214=/c\307\245wBz\21\351\365K\357\244\364N\t\201\27t\36\320\3713\16\272\203?+\357/\n(\247\5\344\317\331\371\363v\376\202\274\277$\323\277h\347/9\370\f\277,(\234\226\346\313B\n\275r\276Qz\373D\266\323v>+\317W\354\374\25y\276*\300\275&Z9-P}U\347\257\331\371\353\16z\\\214\342\33\16\376&\177K\320x]\24\365\206\10\363\246\316\337\326\371;L\304d\270\375~o\260\252\313\23\nyCL\331\r\236`\310\333\276\336\353i\367\6k}~\257\316\337\305\250\371\336\350m\v\4\333\233\367\365x\231\306\256\257\251\254\256i\334^\353\256\257\331\336\324\\\331\330\314\344\254\335\345\331\355Y\320\345\361w.h\n\7}\376\3162\246\314\252\200?\24\366\370\303[<]\275X\230\321\275\326\327\3455\t2\315\250\365{\303\vB\35\vB\236\356p \320\25Z\320TY\27\237\200\365\351\335\315\236\316\252@\273\267\215i\372\260\331\315\336\275\341\350wL6\272\253z\203A\257?,\2543\351\335\215\326>y\303V\366\206}]\vdZct'\275\273)\320\33l\303\272\364\220\367\372^\257\277M!b\neM\17\205\205\245&_\247\337\23\356\rb\352\322!\237\313\223\t\324d\2213\1,[\5\32\216 \266]\27\f\364\366`\217e\243!\322\30]\220H%\f\371\243X\346\16\203\177M\257\257\313\224m\334nO\227\257\335\23\366\5\374\346'\260\0037\373>\276lI\362\205i\311H\2121\341\312O\266\n\373\244\355\t\372\302\302\314$\223\31_`\301\232\336\216\16o\320\333\336\242\276`\316\304\346\312u\333\257\250i\335\276\245\262v3\214\247\246\241\262\261\262yc\243\235\177\300\224\265\326]S[\35\37d\32S\265\261\256\256\246\276y{Cc\315Z\367\225L9\371b\254A\331;T\355\vyvty\333\231x+v/\367\371"..., 5854) = 5854 30087 mprotect(0x7fb27c137000, 8192, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 27664663, SEEK_SET) = 27664663 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\311\322\36\322^\6\0\0^\6\0\0\36\0\0\0", 30) = 30 30059 lseek(4, 27664723, SEEK_SET) = 27664723 30059 read(4, "\312\376\272\276\0\0\0003\0K\10\0\2\1\0\0\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\4(C)V\1\0\4(D)V\1\0\4(F)V\1\0\4(I)V\1\0\4(J)V\1\0\25(Ljava/lang/Object;)V\1\0\25(Ljava/lang/String;)V\1\0\4(Z)V\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\1J\1\0\17LineNumberTable\1\0\nSourceFile\1\0\rStackMapTable\1\0\6append\1\0\tinitCause\1\0\30java/lang/AssertionError\1\0\17java/lang/Error\1\0\20java/lang/Object\1\0\27java/lang/StringBuilder\1\0\23java/lang/Throwable\1\0\20serialVersionUID\1\0\10toString\5\272m.\253\375A=\346\7\0\26\7\0\27\7\0\30\7\0\31\7\0\32\1\0\34(C)Ljava/lang/StringBuilder;\1\0\34(D)Ljava/lang/StringBuilder;\1\0\34(F)Ljava/lang/StringBuilder;\1\0\34(I)Ljava/lang/StringBuilder;\1\0\34(J)Ljava/lang/StringBuilder;\1\0\34(Z)Ljava/lang/StringBuilder;\1\0-(Ljava/lang/Object;)Ljava/lang/StringBuilder;\1\0-(Ljava/lang/String;)Ljava/lang/StringBuilder;\1\0*(Ljava/lang/String;Ljava/lang/Throwable;)V\1\0,(Ljava/lang/Throwable;)Ljava/lang/Throwable;\f\0\r\0\4\f\0\34\0\3\f\0\r\0\v\f\0\24\0$\f\0\24\0%\f\0\24\0&\f\0\24\0'\f\0\24\0(\f\0\24\0)\f\0\24\0*\f\0\24\0+\f\0\r\0,\f\0\25\0-\n\0\37\0000\n\0\37\0:\n\0 \0.\n\0 \0000\n\0 \0009\n\0\"\0.\n\0\"\0/\n\0\"\0001\n\0\"\0002\n\0\"\0003\n\0\"\0004\n\0\"\0005\n\0\"\0006\n\0\"\0007\n\0\"\0008\1\0\23AssertionError.java\0!\0\37\0 \0\0\0\1\0\32\0\33\0\20\0\1\0\17\0\0\0\2\0\35\0\n\0\1\0\r\0\4\0\1\0\16\0\0\0!\0\1\0\1\0\0\0\5*\267\0=\261\0\0\0\1"..., 1630) = 1630 30087 futex(0x7fb31a6e7ba0, FUTEX_WAKE_PRIVATE, 1) = 0 30059 lseek(5, 1072801, SEEK_SET) = 1072801 30059 read(5, "PK\3\4\n\0\0\10\10\0WP\376@\2569\25\251\304\6\0\0*\17\0\0&\0\0\0", 30) = 30 30059 lseek(5, 1072869, SEEK_SET) = 1072869 30059 read(5, "\215WYW\33\347\31~\6\204F\210\1\t\261\304\330uL\23/ \260i\234\264ilB\255\310\30\313A\202HX)\331\310 \r [\232\3013#j\3226\335\323\335\3357wON\352\33_$mC\342\366\264'W\271\350u\362gzz\232>\337\247A\214\304p\322\303\341[\336\357]\236we\370\327\177\377\366O\0g\361Z\24\367c\265\33\203(E\271\224{``\255\7\353\330\20KE\305\365\36\250\250\252\250\211\335\24<\226X6#\270!v;\2'\0027\202\272\270mE\3619\334T\261\35E7^\22\313\347\5\371\vB\377\27U\274\34\301\227\242\3702\276\22\305\10\276\32\305\327\360u\25\337P0\270\230_\230\313\247\262+s\371\205\253\213+\231\213+K\2519\5\211\371k\372\226>U\325\315\365\251\202kW\314\365\363\nz\323\226\351\270\272\351\26\365j\335P\20\337\225\315\245\262\263\r\271\201]Rq6_\310,\344\32\324xz!\233M\345.\256\314gr\36\343\321\305\374l1\263p\265\260\22\f V[\264\255u[\257\315\331V}3S\246\365\302\22U\244\362\222\241@\216\6\304\272[\251N\25\f\227\370\272\v\225uSw\3536\261=\330\372:\275\337\237\31J\204\247+f\305\235Q04\266\237a\274\250 \224\266\312\206\260U1\215\\\275\266j\330K\372j\325\20\1\262Jz\265\250\333\25q\367\210!w\243\342(x`\3364\334)gm\312\321k\256eU\235\251B*\353\271\2237J\226]\246\351\276\3156\377\36\r\200\360\321\212\4\310.\303t\355m\356\263\215]\313\230\246a\247\253\272\343\30\2043\344\vEV\337<.\271\210\240\243r\234\371\367=f\\\303\326]\313\226oD\24w\354R\2135\5\303\255noo\356\272~>\310H@\324\203\363\320[p\365\322u\312Im,b\26\275\212W\350\322\272\341\212\340\f\216\215\7Ud?\237\333\353\244o\217\226\323k\204\326\347\264\21B\246\334|\302E\303v*\226I\232\263\237\246n\355\236\204\352\264U\253\351fY\24DCu\v\241\247\344\277\215H\v\306V\305\252;\3550G\234\203\337\242\306\215zeK\2572\257\nN\214\375\37U\360\214,>\235\354a\312\352U\247\255\244\27V\257\31%W\362)Vk{{O\n\"\33\272\263\321\250\367\316\261\361\fU\331\206S\257R\247\302K\214\2760KfY\267\313K\372:\r\364\357\346\304\327\202'\332i\0074^d\272T\365Z\217\266X\303\321\202U\267K\306\245\212(\246\241v\7\317\10%\32&\260\242\341$F5|\23\317\251\370\226\206o\343;\254\23\r\337\305\3674|\37\267T\374\200C(\240\0245\374\20\267X\322\355h4\374\10\2674\374\30?\321p\21iV\376bN\303O\3613\236\2129.\351yA[\324\360s\374B\305/5\374\n\267\25\214~TJ4\24\260\244\341i|V\303\257\305r\nc\f\331\36\262\313\f6\343C\345\231\213*~\243\341\267\370\235\360\360\367*\376\240\341\217xU\301\251v#\251U\307\265\365\222Kc\227\r\275l\330\273m\231\330\337\304l*f,\345\322\313\325\272+\346@oKb\230\203J\223u\270%m\2769\240\262&r\306MW\246I\24\231)/\255\355\330\254\240\336\226\300\263\200\210\340I\203\23)\302\203\367GCs|\250\350c\320\324\v\34\305\332z\213\340\311\240\211\0354#bz3\6\263\2425\24L\356\357\250\3\"+\33&\336\356i\303\0379_Yl-\241\220D\32M\354\31\275\334\354\252\370^xR\266\255oS:\254;\363\25Gv\371\263\1\355\352K\212`\243\342\2211\37-mU\253"..., 1732) = 1732 30059 futex(0x7fb31a6e7ba0, FUTEX_WAKE_PRIVATE, 1) = 0 30059 lseek(5, 1074601, SEEK_SET) = 1074601 30059 read(5, "PK\3\4\n\0\0\10\10\0WP\376@\224#U\222r\t\0\0004\26\0\0(\0\0\0", 30) = 30 30059 lseek(5, 1074671, SEEK_SET) = 1074671 30059 read(5, "\215W\211{\23\307\25\377\255-key}\311\7\30B\3\211\1#;8\320\224r\225DH2\26\226%\241\225!\"m\225\265\264\330\2Y2\273k\2i\223\320\264i\323\244M\357\3z\37\tMK[\310a 4i\322\3\332\364n\323\373\370C\372\365+}\263;\226W\362\270\341\363\347\331y3\363\336\373\275sF\257\377\367\245W\0l\305?\375\330\204\247\232\261\16\37\363\323\360\361\26|\2\237l\301\247\360i6|F\306\347Z \343\3632\316\260\357Yv\346\vl\370\242\17_b\337/\373\360\25\37\276\352\303\327|\370\272\214o\370\321\205o\372\360\264\17\317\260\3519?\276\205g}\370\266\17\337\361\341\274\37\337\305\367\330\360}6<\313\4\\\360\343\"\236\223\361\274\37\315x\201\r/24\3632.\371p\331\217+x\311\217\365\270*\343\7\22\224\231\264\256\25\366\31\225\271\331XAB ~T;\241\r\227\264\362\324\260j\31\305\362\324.\t\235\351h(\222\333\227NN\244r\261H.\23\332'\2415\\)\233\226V\266\16j\2459]B\217\353\214\32\32O\305\243\316\271\265\251t4\22\vg\242\221\3348MB\211\\,\241F\323\231\234\32;\314\217\364DB\231h.=\221\310\245\322\311\310D8\312U\264\215\304\223\207r\311t$\232v\26:\306\242\331\234\32=0\21M\2049o{$\252\206\323\261T&\226L8+\235\251x(3\222L\217\347&\22\261\f\327\300\231b\211}\271p4\221Y\20\250T\317\332dK<\2667\35Jg\271\205j&\224\210\204\3226\32\225T9\256\231\263\212\245aU\267\310/\315jq\252\254Ys\6\331\177{\355\356\356\245~\334C\34\336\335\305r\321\332C\210\6\226\36\330tP\202'\\)\350LW\261\254'\346f&u#\243M\226t\26\230J^+\35\324\214\"\243\371\242\307\232.\232\22\372\343e\335\0326\217\f\233\332\214U\251\224\314a\212@5\254i=_1\n\244\274\241H\1\336!P|3\354\f\\\223^\266\214S\364\215:_%V.\353F\270\244\231\246N0z\\.\30\327f\373\355S\266\336~\t\335\256\315\230\245\33\232U1h\257\3034\362)\2432eh3\216\"\t\275\265\226\236\232]\260v\227H\276\300\321b\327\267\252\226\226?F|\2664\252\16*@\31/\2235S\272\305R\277{`\223(\371\333h\273\246D\232iA\325ff\31\244fsq\336t\302\251\4?\355\307\213\223\206\306\\\3447]D;\355\244J\232u\244b\314LP\36\320\212Y\277\3220;G\211\350:H\224\351\246|\263\325)\323\224\236+G4\213%\310\2|\333?l\215\271\276@\"\25:6R\252<\2204\n\272A\244YC6\37Y\2343[\307\364S\252~|N/\347Ih\233Y\267\320r\314M1\353\252\0\272\6\352\365\263\234\221\215\205\375\216\372m\31\2578a ^\346SG,y=Ly\306\340t\231\242Uo\236O\30\332\210n\346\215\342\254U\254\224\35\2645\v-\0057u\v\363\252\241\27\212yK/\214\323W+\307\312\246nXj\361A\326\301j\342\37#\35S:K\321f\323N\205\264>K\"\314\377+\242w@ \201y\241ovy\246.\1\217\214\37\222w\311\364\"%\25\231+a\343\300MU\351a\273)h\304\340%n\255d\326\265\232\344\344Q=o\331\347\244Jm\273\347[\224a\323\2329\355\364\241\306\201M1'o\251z\312\5\315(d\264)\222\331Y\223lN7\\_\277\266L\17\364\355\316\227x\27$\361\344\34\277Z\2313\362\372H\221U\321\212\245Vmfb\24\354\306\223\n"..., 2418) = 2418 30087 mprotect(0x7fb27c139000, 36864, PROT_READ|PROT_WRITE) = 0 30059 lseek(5, 1114111, SEEK_SET) = 1114111 30059 read(5, "PK\3\4\n\0\0\10\10\0WP\376@r\363O\245\204\2\0\0I\5\0\0009\0\0\0", 30) = 30 30059 lseek(5, 1114198, SEEK_SET) = 1114198 30059 read(5, "\235TmO\323P\30=w\353\326\256\224\267\201\214\315\371\2\242n\240\fD\20\335\304-\210@2E)\222,~*\245\314\222\2565]G\364\263\177HF\"F\243\341\263\177E\177\203\361\271\227\306\200\20M\326&\347\344\364y;\367\346\336~\377\365\371\33\200;\250$ \241\240b\n\3232\2622fT$q\227\303\254\202\1\225\202s<\343\236\202\24\347y\5\303\234\357+Hs~\240 \303\271(\243\304\20Yy\314\320\267b\31\333\226\277n\231\236\277\275\361\356\215\305\240\255\272\256\345/:F\263i5\31f\253\256\25\24\232;\205\246\321\10<\317i\26\364\312\323\r\353mp\\\271\350m[\346\330\337]\212\324^\177A\260\276L\360\234\303\342\32\203<\266Y\251\276\\\322\31\346^u\3306\276g8-\356k>\227\357\264\207\304#\f\275U\333\265\236\265\32[\226\277al9\364E\26\315\327v\30Vs\325]c\317(8\206[/\350\201o\273\365b\276\303q\311\252g\32\316\246\341\333|J8Jr\215\206\305cg\306\320\32K\266k\7\v\fC\347\270X\315oRu\360\332\246=H\350v\3355\202\226O\235\2429\36PJ\246\23\26/\237\250]r[\215RG\366\27\310\217\252{-\337\264\236\330\334x\352l\325$\37\244\341\"?\222Y\r\17\261 \343\21\303L\7\3634\214\240\254\341\6n\2060\200!\r)\16\303\34\322\0342\30b\3509\275:\206\230\351x.\31\34\314\345O\254|mk\3272\3Z\304\350\377\335\320a?\271\341\342\n\24\317;\7\247G\27\313St\251\222tC\343\34547\f\20\247B\36\0169\35r\206s_\206\357\26UHH\340\22.\203\341\n\251Qb\376\250m\260\217\210\34!\372\201\24\303U\336[\304~P\376\210\310\343\371\263\210\210\257]\3\220\306?!v\4\211\27DN\25\\#\324\216\3230\206\353\"N[K\310[L#J/ \217Od\17\21\337\377G\271\214\34\367\216\274\310\31\207\202\t\302c'\357i%\374\251\177\201TK\312\321C(\7H\10\241JBt\t\241\305\204\350\26\242'.D\257\20}\262\20\375\312WR\3216\235\355\232\324F\227^\213\265\321\255\327\342m\364\3525\271\215~\375\0l\377\317\266\250d\5\370\211\nY\215\206\326n\341\266\340I\\\20\31t_\350\3479X\316\374\6", 644) = 644 30087 mprotect(0x7fb27c142000, 8192, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 54225408, SEEK_SET) = 54225408 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\0362\316\230#\n\0\0#\n\0\0\32\0\0\0", 30) = 30 30059 lseek(4, 54225464, SEEK_SET) = 54225464 30059 read(4, "\312\376\272\276\0\0\0003\0`\10\0\20\10\0!\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\4(I)V\1\0\26(II)Ljava/lang/String;\1\0,(Ljava/lang/String;)Ljava/lang/StringBuffer;\1\0\25(Ljava/lang/String;)V\1\0\7([CII)V\1\0\6\1\0\4Code\1\0\nExceptions\1\0\17LineNumberTable\1\0\22Ljava/lang/Object;\1\0\30Ljava/lang/StringBuffer;\1\0\24Negative buffer size\1\0\nSourceFile\1\0\rStackMapTable\1\0\6append\1\0\3buf\1\0\5close\1\0\5flush\1\0\tgetBuffer\1\0\23java/io/IOException\1\0\24java/io/StringWriter\1\0\16java/io/Writer\1\0\26java/lang/CharSequence\1\0\"java/lang/IllegalArgumentException\1\0#java/lang/IndexOutOfBoundsException\1\0\20java/lang/String\1\0\26java/lang/StringBuffer\1\0\4lock\1\0\4null\1\0\vsubSequence\1\0\tsubstring\1\0\10toString\1\0\5write\7\0\30\7\0\31\7\0\32\7\0\33\7\0\34\7\0\35\7\0\36\7\0\37\1\0\31(C)Ljava/io/StringWriter;\1\0\23(C)Ljava/io/Writer;\1\0\31(C)Ljava/lang/Appendable;\1\0\34(II)Ljava/lang/CharSequence;\1\0\27(Ljava/lang/String;II)V\1\0\32()Ljava/lang/StringBuffer;\1\0\33(C)Ljava/lang/StringBuffer;\1\0\36([CII)Ljava/lang/StringBuffer;\1\0000(Ljava/lang/CharSequence;)Ljava/io/StringWriter;\1\0002(Ljava/lang/CharSequence;II)Ljava/io/StringWriter;\1\0*(Ljava/lang/CharSequence;)Lja"..., 2595) = 2595 30087 mprotect(0x7fb27c144000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(5, 1102776, SEEK_SET) = 1102776 30059 read(5, "PK\3\4\n\0\0\10\10\0WP\376@)\270C\313\7\7\0\0i\17\0\0+\0\0\0", 30) = 30 30059 lseek(5, 1102849, SEEK_SET) = 1102849 30059 read(5, "\215W\373s\33W\25\376V^ymy-?\3428\265\335\20\331I\33Gr\254\20\322\7q\32\342\270\tUb;\20\247NSZ\350Z\332\310\353H+gwU\354\226R\36)o\n\205\362h\313\253@\33`\314L;C\25Lf\240?\225\31\376\r\376\213B\t\337\275Z\257V\217\202\306\343\3738\367\336\357\234\363\235\307\332\377\370\317_\376\n\340(\376\20\303A\230\32\256\306\20\201\331\215\3\310kX\215!Z\335X1\16\246\30\326b\270\206B\17\212\2605\224\304\274\336\203\353pz\340\302\23C9\6\35O\213\341\363\342tC\303\246\206gb\330\r\263\v\317\212\371\vbx.\206!|Q\334x^\274\377\222\30\276,\206\257\210\247_\25\252n\210\325\vB\3665a\335\3275|C\314\337\24\303\2674|[A\254\270d^/\233v\326t\25\364\317\257\31O\33\351\262g\25\322\363\226\353\315(\350^\262\362\266\341\225\35S\301}\r\307'\346m\323K\273W\323\256Q\364J\245\202\233^\232]\330\201\273hfKNn\346$1\364@\307\202\261\256\240/\4C\1/\234\255\227\234\250n\v\206\235O/y\216e\347g\332\324\324y\302\262-\357\244\202\216\311C\313\n\324\271R\316\24\n-\333\\,\27WL\347\222\261R\240dp\276\2245\n\313\206c\211\275/T\275U\213$\34\374_\272\36\266\262\236U\262\rg\223\332vM6\362%\225\26\270R0\\\257bs}G\315\203\215\257\332\243Q@\353y\323\v\205kp\362Ps\300\36h\22\266\33\246\236\20\272\300i\216\302\2416\220H\200m\24%\307M\357\351\201[\347A\247#\37)\330\337\26r\304:\240`(\344^\3063\35\303+9<\213Zv\316\334P\240d\24\364.yF\366\0323IR\256\341;t\316\310\345j\316\335;\331\206>\301x\334\255\223\211\227\231\366X\350\335y\231\251\332\325\37b\327\27\355nEqF\222T\275\267H\"\331\"H\251k=c\312\254\346\361 \221.\232WMG\\\2317\355\274\267*\217\316q\344K\216\5\323&\21\334k\226{\246\270\356m\312\363\307\3117\201\215\202\333\240\372\302\312\232\231e\362\362\202R\252\17\234\177$\213\303\360\330>\24t\255\32\356j\265\260bK\245\262\2235\317Z\"\257G[\226\311\264\300\322\221\306\21\326K-p\263\216cl\212\344\3241\211C\n\6jG\217\20\236\241\3231\205\303:fq\277\206\357\352x\21\337\323\360}\35/\341\7\n\306\377o\0t\374\20G4\274\254\343G\3701\23@\307O\360\31\35?\305+:^\305k:~\206\237\353\370\5~\251`\242\346m\246P0\363Fa\326\311\227\213\246\355\235\331\310\232\353\302\17\5{\32\3u\272l\25r\246\243\340\364\234a\333%/\301\374J\354\304-!\310J\30\5\3074r\233\ts\203~\272\t\313N\264d\350xB\307\257\360\272\216_\v\223\322\370\215\216\337\342I\35K\270\244\343\r\261z\to\352\270 \266\3071\243\343\246X=.\334\371\35~\257\340\236\266\332\225\216'\4\324\n.1\25\33\343\313\2307\327\24\223\244&\234+\221\32\211%>\23e\273X\312YWeg\233\227\335n\242\271\0256\267\246\336\272.\317\234d\"\313ZlN\305V)\30\315\26L\203f\305\353\201\231\221V`\362p]\367\v\265\7\215Y\273hnx\242=\311ih\262\245\222~\267\251LU\226<[A_\250\200\27e\207\253\207\10z\\\307z\331\253\265\3710|\233\216v\32\353\353\246\315fs\270e\17\376\220T\344\303.\257T\25}Ho\241\27=\331\222\355\31\226\355\2367EW`\326\212\273\231\226v\f"..., 1799) = 1799 30087 mprotect(0x7fb27c145000, 4096, PROT_READ|PROT_WRITE) = 0 30059 fstat(10, {st_mode=S_IFREG|0644, st_size=310, ...}) = 0 30059 lseek(10, 0, SEEK_CUR) = 310 30059 lseek(10, 0, SEEK_END) = 310 30059 lseek(10, 310, SEEK_SET) = 310 30059 fstat(10, {st_mode=S_IFREG|0644, st_size=310, ...}) = 0 30059 lseek(10, 0, SEEK_CUR) = 310 30059 lseek(10, 0, SEEK_END) = 310 30059 lseek(10, 310, SEEK_SET) = 310 30059 lseek(5, 1114842, SEEK_SET) = 1114842 30059 read(5, "PK\3\4\n\0\0\10\10\0WP\376@\356\246Zp\253\7\0\0\\\20\0\0009\0\0\0", 30) = 30 30059 lseek(5, 1114929, SEEK_SET) = 1114929 30059 read(5, "\235W[W\33\327\25\376\2164\322\3502\200\220\1\203I\23\205R\233k0\304\227\0040F\6ad\3\302 \354\340$%\2034\26\3\272\220\231\221o\275\271m\2324I\357is\241i\323\246ihS\247\265I\220\355\270\313\355S\37\372\7\372\320\207\376\211\256v\325M\353\3563\22\22\210Y5\313\17\2329\227}\276\375\355\313\331{\364\347\377~r\7@\17~\357\306cP\371c\321\203.,\211Hz `\211\257\244\370#\355B\306\203&,\213x\336\3\17\226\\\320\370\\\347\17\303\203nd\271\330y\21\27\\\270\350\306%\\\366\240\3_p\323\316\27]\370\22\27\373\262\210\257xP\317\317^\341\357\257\362\307\327\\\370:\177\277\300\317|\303\213\27\361\22\177|S\304\313\374\314+.\274\352\302\267\370\346\267\371\372w\\\370\256\v\337\343\363\357\363\371\17D\274\346\301\17\361#\21\257\213x\203\241:5\252\310qE\233Rb\31-\36\275\264\254\210x\223\301W\276\312 \205\323iE\33J\312\272\256\350\f\7\307\322\212\321\245\237\353\322\345\224\221\311$\365\256\351\340xT\271h\344O\16e\342J\254\271\34\245\217\2412uR\271tZNf\225IY\325\10\250jlQ>/we\r5\3315./\223\210{ZM\244e#\253)\\\315\226\335\376\3744)\247\23]\323\206\246\246\23}\333W\0068FRM+\244F\2153\260\263\f\273\2329o\315P3i}X\325\345\371\244B;NcA\325\233\36734\357\300\32Bu\366\253i\325\30`x\262e'\7\266Sk=\315 \360Mn71\234\310\246\346\25-\312\3510\370\307219yZ\326T>/,2\205\263+\1\205\223I%!'\203Z\"\233R\322F\350bLY\346V\21;\357\222r)\230\216\233\316%\213\237\336\256\236\340T\372\205\211\4\267\234\342<)k\272\22\317\223\346\204v\30\330\362c\204,$\315\343~+\255\316s\252\222\214\223\276\212iC\216-Q M\353\314$|\215RW\304\10\335\4\262@\325\307Jq\263\267\264R\344<\232\362|V\325\310\37\t\206\332\26\v\237\222\220\335\340\273\273\22\212\261=q\17\267\264>`\256zc\231\264!\253i\235R\226t,\361\247\213t\24<\274\327\212\214\225\371^MIe\316+\205cvM1\310,9\26StJ\276\375\224~#;I\247\355No\335vul\27\t\315\325\37K\26\362\224\\H\31\347\231\316d\265\2302\242\362\204\332\275\35\3711\16#\341 \16I\350\307\21\t\0038G\245\241\4>*\353\v\244@\302\223\350\225\320\207^J\242A\to\341)\206\372\222\301\301\215+\26\322\264\214F2n\t+\370\261\204\267\361\23\t?\305;\22\366\343\0C\323\375\323\231\341\221\231\264F\301H\244\325\313J<\260`\262\rhfx\2\206Y\247~.\341\27xO\302/\361\276\204U\16\314z\271\302_\221\221\345Q8\226U\223\4@VMj\31J\275T`\231\274I\33\1\262\343\327\370\200?~C\2272@A\356=\317\3E\2\252&\341*>\224\360[\274'\342w\22\236\3015\t\327\261F\27\247\\\201\204\217p\215\326\313\0\2T\361\0021*\232\v\212\36\270\240\32\v\1\t\37s\322\353\310\361-~i\2)U7\251\320%\nP\"K\270\301%nr=M\367\317\v\21\267$|\2\212\363\343\17\220D[L\211\314/*1cg@\333/\232G7d\315\320\317\220\225\f\16}9\251\22\324>\253KbY\232\334zv^7'\374\236\207-o\222hz6B\331\31\266\274|\17r\317E\334&\232\26'\3152$\27\363\2719o\245\220\177\325\317"..., 1963) = 1963 30059 lseek(4, 29562414, SEEK_SET) = 29562414 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\326c\5?\221\r\0\0\221\r\0\0!\0\0\0", 30) = 30 30059 lseek(4, 29562477, SEEK_SET) = 29562477 30059 read(4, "\312\376\272\276\0\0\0003\0\225\10\0\16\10\0\22\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\25(I)Ljava/lang/String;\1\0\6(I)TE;\1\0\4(I)V\1\0\5(II)V\1\0\6(III)V\1\0\t(ITE;)TE;\1\0\7(ITE;)V\1\0\25(Ljava/lang/String;)V\1\0\10, Size: \1\0\6\1\0\4Code\1\0\1I\1\0\7Index: \1\0\fInnerClasses\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\naccess$200\1\0\3add\1\0\6addAll\1\0\6append\1\0\26checkForComodification\1\0\velementData\1\0\3get\1\0\10iterator\1\0#java/lang/IndexOutOfBoundsException\1\0\27java/lang/StringBuilder\1\0\26java/util/AbstractList\1\0\23java/util/ArrayList\1\0\33java/util/ArrayList$SubList\1\0\35java/util/ArrayList$SubList$1\1\0\24java/util/Collection\1\0)java/util/ConcurrentModificationException\1\0\26java/util/RandomAccess\1\0\flistIterator\1\0\10modCount\1\0\6offset\1\0\16outOfBoundsMsg\1\0\6parent\1\0\fparentOffset\1\0\nrangeCheck\1\0\20rangeCheckForAdd\1\0\6remove\1\0\vremoveRange\1\0\3set\1\0\4size\1\0\7subList\1\0\21subListRangeCheck\1\0\6this$0\1\0\10toString\7\0 \7\0!\7\0\"\7\0#\7\0$\7\0%\7\0&\7\0'\7\0(\1\0\30Ljava/util/AbstractList;\1\0\35Ljava/util/AbstractList;\1\0\25Ljava/util/ArrayList;\1\0005Ljava/util/AbstractList;Ljava/util/RandomAccess;\1\0\25(I)Ljava/l"..., 3473) = 3473 30087 futex(0x7fb31443af54, FUTEX_WAIT_PRIVATE, 21, NULL 30059 lseek(4, 29559731, SEEK_SET) = 29559731 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305Bfna\273:\n\0\0:\n\0\0#\0\0\0", 30) = 30 30059 lseek(4, 29559796, SEEK_SET) = 29559796 30059 read(4, "\312\376\272\276\0\0\0003\0g\1\0\3()I\1\0\5()TE;\1\0\3()V\1\0\3()Z\1\0\25(Ljava/lang/Object;)V\1\0\6(TE;)V\1\0\6\1\0\4Code\1\0\17EnclosingMethod\1\0\1I\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\23[Ljava/lang/Object;\1\0\naccess$200\1\0\3add\1\0\26checkForComodification\1\0\6cursor\1\0\20expectedModCount\1\0\7hasNext\1\0\vhasPrevious\1\0\37java/lang/IllegalStateException\1\0#java/lang/IndexOutOfBoundsException\1\0\20java/lang/Object\1\0\23java/util/ArrayList\1\0\33java/util/ArrayList$SubList\1\0\35java/util/ArrayList$SubList$1\1\0)java/util/ConcurrentModificationException\1\0\26java/util/ListIterator\1\0 java/util/NoSuchElementException\1\0\7lastRet\1\0\flistIterator\1\0\10modCount\1\0\4next\1\0\tnextIndex\1\0\10previous\1\0\rpreviousIndex\1\0\6remove\1\0\3set\1\0\4size\1\0\6this$0\1\0\6this$1\1\0\tval$index\1\0\nval$offset\7\0\20\7\0\30\7\0\31\7\0\32\7\0\33\7\0\34\7\0\35\7\0\36\7\0\37\7\0 \1\0\25Ljava/util/ArrayList;\1\0\35Ljava/util/ArrayList$SubList;\1\0/Ljava/lang/Object;Ljava/util/ListIterator;\1\0\24()Ljava/lang/Object;\1\0\25(I)Ljava/lang/Object;\1\0\26(ILjava/lang/Object;)V\1\0\"(Ljava/util/ArrayList$SubList;II)V\1\0\33(I)Ljava/util/ListIterator;"..., 2618) = 2618 30059 lseek(5, 1113489, SEEK_SET) = 1113489 30059 read(5, "PK\3\4\n\0\0\10\10\0WP\376@\215\"\204\205&\2\0\0\30\4\0\0*\0\0\0", 30) = 30 30059 lseek(5, 1113561, SEEK_SET) = 1113561 30059 read(5, "\235RmO\323P\24~n7\326\255\26\251\363e8P\21\252n\276P\25\266\230h\210\4\206\0207\206t\342\7>\335u\27V,-i;\304_\344g51\306\30~\200\277\306_`<\267\2\3730\214\206d}\316\363\234\334\363\334\263s\317\217_\337\16\1\36\350\3201\254c\32\226\216\207x\304P\374{\17:M\230\216\315H\230\225P\201\305 \207fE[\326\361\320\254S\206F\276`\320W|\2372\36\217\"\0211\30\375\233\232\355\35\341\304\f\223\377\366b\230\371\217\v\7_\311\30Le\366\271\327\223\235<)\2257\353gp\245GQ\226\27\31*g,V\211\272>\367\222\235\241%R\326^\20\254K\260_\21,4\215\t\332\345s\264\333\314\30\225/%\31\2628\217\21\212\6\251\237H\21\3^\177\5;\374\256}\206\362I\376R_\220N7? \3752\221\31\222C}\251\222\314\364e\226\244\332\2279\222\331D~\304\20r\270\204\2\305QL\3416\305;\264\4\25\212U\314c\221b\rk\260)\246p\201\332\310$\315\264\220'\234M\252\200\213\344\0\252;f\325\23V;a\255\23v\231\2761hoT\\A\343\24\240\213\ntD!\353\253\24\323(\36\231\347)\247Ied\311\240\210{\317\213\277\1", 550) = 550 30059 lseek(4, 27776013, SEEK_SET) = 27776013 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\257\273\371p\204\1\0\0\204\1\0\0 \0\0\0", 30) = 30 30059 lseek(4, 27776075, SEEK_SET) = 27776075 30059 read(4, "\312\376\272\276\0\0\0003\0\25\1\0\3()V\1\0\25(Ljava/lang/String;)V\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\1J\1\0\17LineNumberTable\1\0\nSourceFile\1\0&java/lang/IncompatibleClassChangeError\1\0\32java/lang/NoSuchFieldError\1\0\20serialVersionUID\5\320\10K\f\277F\0u\7\0\t\7\0\n\f\0\3\0\1\f\0\3\0\2\n\0\16\0\20\n\0\16\0\21\1\0\25NoSuchFieldError.java\0!\0\17\0\16\0\0\0\1\0\32\0\v\0\6\0\1\0\5\0\0\0\2\0\f\0\2\0\1\0\3\0\1\0\1\0\4\0\0\0!\0\1\0\1\0\0\0\5*\267\0\22\261\0\0\0\1\0\7\0\0\0\n\0\2\0\0\0/\0\4\0000\0\1\0\3\0\2\0\1\0\4\0\0\0\"\0\2\0\2\0\0\0\6*+\267\0\23\261\0\0\0\1\0\7\0\0\0\n\0\2\0\0\0009\0\5\0:\0\1\0\10\0\0\0\2\0\24", 388) = 388 30059 lseek(5, 1135292, SEEK_SET) = 1135292 30059 read(5, "PK\3\4\n\0\0\10\10\0WP\376@\362|i\2678\20\0\0\273#\0\0\36\0\0\0", 30) = 30 30059 lseek(5, 1135352, SEEK_SET) = 1135352 30059 read(5, "\265X\r|\24\345\231\177\236\375\310n6K2\tI \233\20\26\214\220l\22\202\200\264\2\"\311\22\310B\22b\262\200\210\226l\222I\262\272\354\206\335\r\5\333R\254\330\17Z+\240\247b\255P\256\212\225\251\5k\3\10\2g[\353\365\354\225\266\266^\353\365\352W\275z\365,w\327\273k)%\375\2773\263\233\231\315*\312\357\347\376\366\235\231\347y?\236\257\377\373<\357\314\17/>}\212\210\346\360\2\27\315\243\27]4\227~..\277\20\227\227\304\345_\34\364K\7\375\312E\16z\321I/\213\373\277\212\313\257\305\345\337\\\224C\277q\321+\364\252\30\373\232\270\274\356\2407\\TH\277u\322\233\342\376\357\342\362;\321\363\226\223\376C\314\372}\36\275M\377).\357\344\321\37\350\234\270\374\227\203\376\333ES\350\177r\351[\364G\7\375\257\223\376O\214\370\1771\341O.\362\322oD\317\237s\351<\375\305I\27\\\364W\272\350\242Q&\7\263\213|\364\242\203-.\252c+f\261M<\331!\230s\4\351\20\244\323\301\271\16v1\25\373W\265ut6wu5/\335\320|\375\352\306\326\r\255\253\3262q\23\323\4\177,\232H\206\242\3115\241\310\260l\205g\210I2\214o\24c\5\237\315|\177\212o1\363\333R|\253\231\277<\305\267\231\371\235)\276\335\314\357J\361s\314\3745)\276\303\314\17\246\370N3\177m\212\237k\346\257K\361]f~K\212\237g\346\257L\361\335f\376\322\24\177\202\231\337\224\342\347\233\371\355)~\1S\311\270\270\264\4\226\2670\25\232\374/xb\202d\356\360\247;\274\346\216\345\351\216%\346\216\240\3261::\272\335\334\321\236\3568g\356hK/5\333\334\321\231\356\3500wt\245;\272\315\35k\322\35C\346\216\265i\341\273\314\35\353\322\35\373\315\35-\351\216\303\346\216\225\351\2163\346\216\245\351\216\263\346\216\246t\307+L\5m\2157l\350h\351\24f\370Wu6c\207\4\204\30273\345,\nG\303\311\305L\326\352\2325L6\177\254O\306\204\326pTn\37\336\330#\307\203\241\236\0108E\255\261\336PdM(\36\26\264\316\264%\7\303\t&OkTN6$\372\33\22\241\215\311X,\222h\350jl[\235\fG\22\v\231J{\266&\345D0\346\217m\34\212\313\211\204\334\327\24J\310\230\225S\275\276\251f=vjn\\\16\245\230\26\301(\350\315\34\313al\350\256d\250\367\326\266\320\220*\334Aw`\355\214\201\301X\223\20\306\344\254\16\254o\n\324d,\26\210\366\311[ 8\"G\7\222\203@\357X\327\252\376\376\204\234\204\27\342\342:\251w0\24\317T\2715\366qX\\\35\250\301\242\266\0360\230&g\33\327\22\36\30\24K\230\230\232f\352\22\223\263\365h\223\362\243\261\370\306P$|\233\254\333m\27>BX\354=\32\355\36\32\214\313}\301\330\262P\"\271\t\366\213\356\326[B\233C\r\221Pt\240\241+\31\17G\7\340t[_(\31\202(\364\7\2YG\344\364\f\367\367\313q<\304t\323\355\302\0305\4~\7=\254\231\352gr\251\"\273zcq\30\354\356\27\202\203\261\16\301\23\362\307/\255:\335\336\257)X\224UtB,\226\20\22\3745\1\10\354\205\351\fQ\216\270<0\247'\34\25vCmtY{\344\1\\\345(\204M\32\212\307z\3416\344\3630\314\v\307\242\315\361x,\236p0\22W\361\30W\223#G{\267B\337@4*\307\375\221PBu_\213\256\3570\260\331\320\32N$\27\256\310\6\335e\341\210\334\tL\312\361\252l\313.\24\21)\330lV\203\251*\333R\31\312\302"..., 4152) = 4152 30088 madvise(0x7fb2700af000, 16384, MADV_DONTNEED) = 0 30088 futex(0x7fb31443d954, FUTEX_WAIT_PRIVATE, 17, NULL 30059 lseek(5, 1230665, SEEK_SET) = 1230665 30059 read(5, "PK\3\4\n\0\0\10\10\0WP\376@\261E\17\337\230\20\0\0\312 \0\0%\0\0\0", 30) = 30 30059 lseek(5, 1230732, SEEK_SET) = 1230732 30059 read(5, "\215W\v|S\327y\377\216\356\275\272\222,\333\262A\6\333\262\21\304\t\262dc\222\200\227\202q\202\35h\235\330&\305\6\312c\304\327\326\265-\20\222\247\7\1\322diG\273\320v}dM\27\322\226\22\323\216-!\31\331V\343\4\342lk\327\264\331\332\244\353B\272.m\323n\351+]\333\255]\3260\300\375\177\347^=\f\342\7\370\307\325\271\347|\347{\374\277\347}\361\342\2633Dt\223h\362\320J\232)\243\347\351\357\\\364\367:\375\203\207T\353\375Ke\364e\372G~|\205\367^`\302\257\362\n\217\257\321\213\36ZA\377\344\241&\372g~|\235\37\337\340\307K\374x\231\37\337\324\351_\\\364-\276\362\257.z\305C\363\351\254\213^\345\243o\363\346\313\314\342\337\370\365;\374\370w\17\275F\337\345\203\357\361\353\367]\364:\23\374@\247\37\362\373\177\360\343?=\364\6\375\210\267\177\314\257?\321\351\247.\372\231\207\302t\2267\337d\26?w\321\1771\227\263\374\370\5\353\372K\246\375\225N\377\255\323\377\10\252\332t\327]\3536\336\335\275v`\335\335\33\326\257\37X7(Ht\t*\357N&\322\31#\221\331l\304\263\2462;;\373\272 gG,\21\313t\nRB\315\233\5\251\335\311\250)\250\2627\2260\373\263{\206\315\324\2401\34\307Nuor\304\210o6R1~\2677\325\314x,-hqo\302\314\264\245G\333\322\306\236L2\31O\267e3\261x\333@&\25K\214m\302r5Hw%c\tA\35\241\336]\306^\243-n$\306l\202\325\326\216\274\322\235\214\307\315\221L,\231X\335|9!\224L\16\357b]\nG\33\206w\341\2\216\34\261&A\363\213x\365d\314\224\221I\246p\346N\233\23\206|\231{9\317W\5_\30RSZ\25A\256D2\263>\226Jg\200\3446\250\2212\261\252\275\214SW6\26\217\232,\261f.\\\373'r\220\325\227\24\32118\270\272\23\327\312\0072\306\310\356>cBR#Xu\372\265\364\251{ 6\22602\331\24Xl\351\30\\u9\2\235\327\212\254%\253$\274\357(\301c\373\345\242J\336\235W\202\20\341\265\227c\r\320\372\212t\351\215\245\371L\335\16M\4\371/9\311aq\3335\233\311|J\352\244\245'\3421x\252\371*v\331[\335\315=\202*2)#\26\307\253\265)H7r+g&\271\333L\244/\261\265 -j\306c{\20!\335\360\327\36c\337\240M-\300UO\344\3364\244`\n:)f\"\212\314\327iDP@\352\211\364\03412&\334l\256\3337b\246\323\271+e\231do\362\0363\325m\2449\351B]\315\310f1,\0176ML\344\16\264\320\366.\316a\21\303zx\177\206awl\7\2513n&\3062\343\10>#\2356S\231\356q$\303\10\322#\335\237\314\364$r\346\205J\241\324]\22X\307\10\270\251F*\325\304\"`\257\n\21X\227\305\20ecF\234%\10\362\26\275\261\345#\374\253\323\275\310\247{\222\251\350\226\2241!hi\t\251=%\205\252\360\n\314\24`U\16x\271D\365\332\206i|\304\346\246\201Ju\216\371\0\356\305\315^y\253\"n\2443\3\23\306\210\331\223\210\232\373\300B\372\241;9\261\177}*\t\257U\305\354\302\10\330s\210\324\204\266\227VE\267\210%\300=\222n\240$\235;=\236L\345)\7 U\372e\216\204\256\322\306F\215\214!h!\316{J\353\340\34\316\216\216\232\200\331\231\34\35MsA\202I|6\230\354\262\234_S\2\332f\16\10\17k\321e__X\312\1=\222na\3124\242\375\331x|"..., 4248) = 4248 30059 lseek(4, 53330926, SEEK_SET) = 53330926 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B9i\224fa\4\0\0a\4\0\0004\0\0\0", 30) = 30 30059 lseek(4, 53331008, SEEK_SET) = 53331008 30059 read(4, "\312\376\272\276\0\0\0003\0009\1\0\5()TE;\1\0\3()V\1\0\3()Z\1\0\6\1\0\4Code\1\0\17EnclosingMethod\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\1c\1\0\7hasNext\1\0\1i\1\0\10iterator\1\0\20java/lang/Object\1\0'java/lang/UnsupportedOperationException\1\0\24java/util/Collection\1\0\25java/util/Collections\1\0,java/util/Collections$UnmodifiableCollection\1\0.java/util/Collections$UnmodifiableCollection$1\1\0\22java/util/Iterator\1\0\4next\1\0\6remove\1\0\6this$0\7\0\17\7\0\20\7\0\21\7\0\22\7\0\23\7\0\24\7\0\25\1\0\26Ljava/util/Collection;\1\0.Ljava/util/Collections$UnmodifiableCollection;\1\0\24Ljava/util/Iterator;\1\0\32Ljava/util/Iterator<+TE;>;\1\0+Ljava/lang/Object;Ljava/util/Iterator;\1\0\24()Ljava/lang/Object;\1\0001(Ljava/util/Collections$UnmodifiableCollection;)V\1\0\26()Ljava/util/Iterator;\f\0\v\0 \f\0\30\0!\f\0\r\0\"\f\0\4\0\2\f\0\f\0\3\f\0\26\0%\f\0\16\0'\t\0\35\0(\t\0\36\0)\t\0\36\0*\n\0\31\0+\n\0\32\0+\v\0\33\0.\v\0\37\0,\v\0\37\0-\1\0\20Collections.java\1\0\26UnmodifiableCollection\0 \0\36\0\31\0\1\0\37\0\2\0\22\0\r\0\"\0\1\0\t\0\0\0\2\0#\20\20\0\30\0!\0\0\0\4\0\0\0\4\0&\0\1\0\5\0\0\0006\0\2\0\2\0\0\0\32*+\265\0000*\267\0002**\264\0000\264\0/\271\0004\1\0\265\0001\261\0\0\0\1\0\10\0\0\0\n\0\2\0\0\4'\0\t\4(\0\1\0\f\0\3\0\1\0\5\0\0\0\"\0\1\0\1\0\0\0\n*\264\0001\271\0005\1\0\254\0\0\0\1\0\10\0\0\0\6\0\1\0\0\4*\0\1\0\26\0%\0\2\0\5\0\0\0\"\0\1\0\1\0\0\0\n*\264\0001\271\0006\1\0\260\0"..., 1121) = 1121 30059 lseek(5, 1229721, SEEK_SET) = 1229721 30059 read(5, "PK\3\4\n\0\0\10\10\0WP\376@u\35\362\253g\3\0\0U\6\0\0+\0\0\0", 30) = 30 30059 lseek(5, 1229794, SEEK_SET) = 1229794 30059 read(5, "\215S]S\23I\24=\235\231\220d\230@6k\320]\343\27\2562\214J\\?X\24\210 \212f\r\353\326B\201Z\265\256C\322\300\3500\241&\235-\377\212o\276\371\302\3Va\254\362\301\37\340o\262v\275\267\31C\304X\345\313\355\356\333\347~\234\323\267?\374\367\356=\200KX\260\220\303\305\f\6\361+\233Ki\\N\343\212\205\253\30O\3437vMXd\256\261\347:\233I6Sl\246\331\224S\270\221\302L\n\263\2\31\265!\27U\344\207\353\2\371\352S\357_\257\24x\341zi\3177)\320WkE\1776\232\2\242\"`\5~(\377hm\256\312\210n\246\374\320We\201\202\363u\340\350\262\2009\327\250K\201\301j'h\311[\r$\27j\324\274`\331\213|>\307NSm\370Tf\244\32JUj\256\225\232\336\246j4\202f\251\245\374 N\313\231\376\222^]F\324\231 t:\242\23{\5\0169\243\275\372/8\217z\372\323M\345EJ3\313\373a-h\325\345\222\2146\375\320S\215\210\351>\22\350\17\345sU]\253\204u\371\234\370\312\260\256\361\331E\345\325\236-x[\272s\22\223\\\353RU\273\2641\234Q\222\313\334\222\362\231@\262\0264\232R;I\25k\261\321\212jr\336g\322\205\203\274\306\270U\33\207q\301\306!\24l\f\241 \220\310Z\324\221\225\302M\33s\270E\373\254\215<~\264q\2\247l\334\206kc\36wl\334E\205\315\3576\356\241*p\346\273\264\24\310\355\vt\177\365\251\254)\201\23=C\277\21\364y\202\254Hn\5^M\316\6\201\300D\217\261\3501(=\207.\220\341\272\332\20H\371\254\375\3755\22\321\251TX\323L\263\265\332\214\313\25\234J\317\360!\306\366\36\346\r/\232%v&E\316\341\24\375\222\34\4~\200Aj\222\236\364\275\22,\273^\207\364\332G\367\207q\204\354OtZ\203I7\300\260\373\26\3025\336 \301\306p\317\345\315|\262\215\276|J/o\220~\255s\374Lv\10I\262g(r\30\31\234\306\0F\250\262\203\243\372NgC\21\307\0\275;N]\320\373\322\303\236\214k^$\214\340N\\\343-2;\235\274}\332;\246\363\330{\2108O\202\307b/Z\270\304\215\353+w\227\232\335E\272\r\353%\222b\207\3679\213\275m\364O\27\23/q\226\17e7\0061\267\207\2730\314'L\220|\307\332\260w4\244x\364\5R\346+\230\306\223q\323-2\342 \266`\266\221\345^\r\335\3538\262d'\210\3735R|\222XN\221\22\323\244B\31\227q\203v34\3007ij\347\360\0\267\360\17\315\264O\36\346V&^\16E\f\323{\30\314\244\243\226\242\34\277\20\317\343X&}\v\304\373\36Fc\334\3B\235\245\235Ij\203Pf\356#\256\212\377\251\0173\5G\10\322\230N\350\234\22\354\241h7V\275\244_\1H\22\35c\373\200\350\v]\242'\343v\4\316u\202W\342'+~)zb\233\367{\222\17lw\304\31\320\264\226i]!q\36v\345.\306\271G4V\360\254\236\307\205\270\310\365\270\210\335\365b\373Sg\351\311\372\33\375x\334\225\320\3564;\246\221\245O", 871) = 871 30059 lseek(4, 30656594, SEEK_SET) = 30656594 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B|\23\301c\355\7\0\0\355\7\0\0!\0\0\0", 30) = 30 30059 lseek(4, 30656657, SEEK_SET) = 30656657 30059 read(4, "\312\376\272\276\0\0\0003\0c\1\0\3()V\1\0\4(I)C\1\0\5(II)I\1\0\6\1\0\4Code\1\0\1I\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\4Node\1\0\nSourceFile\1\0\rStackMapTable\1\0\1Z\1\0\2[I\1\0\6buffer\1\0\6charAt\1\0\5first\1\0\6groups\1\0\6hitEnd\1\0\26java/lang/CharSequence\1\0\16java/lang/Math\1\0\27java/util/regex/Matcher\1\0\27java/util/regex/Pattern\1\0\33java/util/regex/Pattern$BnM\1\0\34java/util/regex/Pattern$BnMS\1\0\34java/util/regex/Pattern$Node\1\0\35java/util/regex/Pattern$Slice\1\0\36java/util/regex/Pattern$SliceS\1\0 java/util/regex/Pattern$TreeInfo\1\0\4last\1\0\7lastOcc\1\0\5match\1\0\3max\1\0\10maxValid\1\0\tminLength\1\0\4next\1\0\10optimize\1\0\7optoSft\1\0\5study\1\0\2to\7\0\r\7\0\23\7\0\24\7\0\25\7\0\26\7\0\27\7\0\30\7\0\31\7\0\32\7\0\33\7\0\34\1\0\36Ljava/util/regex/Pattern$Node;\1\0'([I[I[ILjava/util/regex/Pattern$Node;)V\1\0%(Ljava/util/regex/Pattern$TreeInfo;)Z\1\0005(Ljava/util/regex/Matcher;ILjava/lang/CharSequence;)Z\1\0>(Ljava/util/regex/Pattern$Node;)Ljava/util/regex/Pattern$Node;\f\0\20\0\6\f\0\35\0\6\f\0\"\0\6\f\0'\0\6\f\0\22\0\f\f\0!\0\f\f\0\16\0\r\f\0\21\0\r\f\0\36\0\r\f\0%\0\r\f\0#\0003\f\0\4\0\1\f\0\17\0\2\f\0 \0\3\f\0\4\0004\f\0&\0005\f\0\37\0006\t\0+\0008\t\0+\0009\t\0+\0;\t\0+\0<\t\0+\0?\t\0-\0>\t\0-\0@\t\0-\0A\t\0-\0B\t\0/\0B\t\0000\0>\t\0002\0:\t\0002\0=\n\0*\0E\n\0-\0F\n\0.\0F\n\0/\0C\n\0/\0G\n\0"..., 2029) = 2029 30059 lseek(5, 695391, SEEK_SET) = 695391 30059 read(5, "PK\3\4\n\0\0\10\10\0\251`\273DaK\302\210\v\5\0\0P\v\0\0006\0\0\0", 30) = 30 30059 lseek(5, 695475, SEEK_SET) = 695475 30059 read(5, "\225V\335S\23W\24\377\335lp\227\315\"\30P\253\242\306\252@\262j\254U\253BQ\244R\242\10J\324V\355\327\222\\`q\263\233\356n@k\255\375n\237\372\7\364\241\323'_Zg\264S\343Xg\332>\361\320\277\251\323\351\271\273k\10\4R\372\220s\317=\367\334s~\347\353n\376\372\347\267\337\1\274\212oU\354\301\371V\244pA\2201A.\266\342\4\306U\"\23\t\\\302e\31\223\t\344qE\306U\31\327T$p^\301[b}[\205\202\353\nn\210\365\246\202w\304\372\2568yO\301\373\n>P`\10\7S*\n(\n9W\241bZ\230\235\21dV\20S%\247s2,\31%\0316C\373\202k\224\313\274\230\363\271k\370\216\313\3207fs?\353Mg=\243\344;\216\345e+\276ie\207-\307\343\306\224\305_h\3663\264\346\315\31\333\360+.g8\267\316k\3\rz\371\241\213\223\274\340\270\305\376A\262\251\224]>o:\25\217aG\23U\6\265\340\224\312F\4z\377\332\252\30355\272\264a\300\264M\177\220A_w\230\351k\f\361a\247H1\266\217\2316\37\257\224\246\270{E\3500$\307\234\202a]3\\S\354#a\334\2375\t~r\310\363\270\353\327\33c\320r\266\315\335a\313\2403\3229\262\32\356\21\323\342\223\334(rw_\243\t\221\"\263fn\313r\377w\312/0\214\2567\276\346\365\20\301kF\0\"\357\270>/\312(\213\272\23?\341\22@\206\361FGQ\10\243a\0105\335\376\364\332\256\352\233\312[2\276\352\215Um3\264\345}\243p\353\242Q~Q\5\233\337\366\31v\3665q+:\302\345^\305\362i\360\30Z\n\";\fR\237\210[\2365\274\361\300\6\355o\4\232%g\236\216\273\310\344\2341od-\303\236\311NL\315\361\202/\0322\357T\334\2\27\360\250\370\313\352xH\250k\3201\254\241\27}\32\322\310h\330\213}\32>\304\200\6\27\236\f_\303 \336d\330\266&\\\31\25\r\363X`\330\275\344?gY|\306\260(z\237\237\273]\340e\337th\260\267.i\344}\327\264g\316VL+H\252\22\32\363R\32n\343\216\206\217p\227!\226\"T\37\v\216\235\322p\17\237\210\303\373$O\247(\30o\326\251X\305\24M\34O\31\323T+\22v\245S\v\263\334N\211r\221\371\324\202\351\317\222\311O\361\231\214\3175|\201\273\32\276\24D\307W\32\316\212\320\337\3009\r#\202\33\304i\31_3\34\376\277\355\317\320\2612\365\f{\376\263\257d|\303\320\273\316f\242\24Ul/hw\206\3153\334_zBr\266\347\33v\201\n\334\333\254\257\226\2759=\353\33D\206\275\353\260G\361O\23\344\0g(%,'W\235\301\250\305\233\34\245s\324\325\342\371\267)\320\203}c+[\246?\335 \212\272\210\302JPbD\231\306\215R\303LD\327\tl\2404\315]NI\v57\221h\310\242\17G\211\333>u\255\33\16\30A\351\356\3135s\250\210J\210\207\223\241s\231\267@H\n\355+D4\302t%\364\252\370Nh\217*\272Z\2404\357;\233\366\342\332\347a\373\320w5E\237_\206\227!!)f\233\370\375\364\341\217\241\207~4\365\1O\203O\253Lg:\16\320\376 \355\346h\215\321\332\225y\n\226aO\20\23D\312\350O\20\177Lr\t\207\210nA\v\261\7\21\2272h\225tl\224\16\241S\312\"\33\234\5\367q\230\376f \340\216\6\376\217\21\257\321\32Jzj\210\216\23\367\32N\21\255\367\337\255/B\325\177A\313\3\250!\202G\31\275\212\r\1\267\2\307Q$\244c\350\220"..., 1291) = 1291 30059 lseek(5, 1123049, SEEK_SET) = 1123049 30059 read(5, "PK\3\4\n\0\0\10\10\0WP\376@\35\253\304=\241\22\0\0\342(\0\0002\0\0\0", 30) = 30 30059 lseek(5, 1123129, SEEK_SET) = 1123129 30059 read(5, "\2659\rxT\325\225\347\274\371y/3/!\31\230h$\310D\3\371\233\20\10\10\32H \204D\242I $\200\210V\207\311K28y\23g\336 \370\207\377\365\277\376U\r\326?\264\304*V\2602\1QQ[\361\247j\265vmmw\255]w\267\333\272\335vmk-\242\3549\367\275If\222!\241\356\267_\276\271\357\336s\317\337=\347\334s\317\275y\343\253g_\0\200j\374\245\v.\207\17\263\250\371\265\v\266\302G2\374\206\7\377\352\202\217\341\337d\370w\5\376\303\0052\374\226\307\377\311\315\357\230\340\367\n|\302\337\377b\310\37d\370o\5\376\350\202\\F\373\23\374\217\f\237\312\360g\27x\341#\5\376\302\337\277*\360\31\177\377\306\370\237+\360w\27\330\341\220\2_(pX\201/\31\372\0257G\\\10\210.\224\320\306=\273\202\16\5\235.\224QQ0KA\27\321\241[A\225\230a\266\2029D\204\223\270\311uc\36z\2707\331\205S\320\313\275|\31\217s\301)x,R\360$\6\236\314\300bnf(8S\301\22\5KyT\246`\271\202\25\n\372\25\254Tp\26\303\252\270\231\315\315\34n\252\271\231\253\340<\5OQp>\217\26(x\252\202\247q\267F\301\205\n.R\260\226Gu\334,f\201K\270W\237E\315R\3565p\263L\301F\3766)x:\177\227\363t3\367\316`\2223\271\327\342\306Vls\343\n\370=5\270R\306v\27\364\341*\266P\7cu*\270\232\255\260\306\205k\361,\31\327\361\340l7\274\211\353e<'\v.\302sy\360\r\356\235\307\34\317\347&\300\244\33d\f\312\330%\243\206 \3675\205\264pW\fa\362\372\226\215\201M\201\252p@\357\251\3520\242!\275g!\202\323\350\r\305\212g#Lo\3215\243*\326]\25\v\364\31\221H8V\325Q\337\332\251m6Vi\201.-\312\250\213Bz\310\250C8\251t\2\334\2625\10\366\206H\27\311\237\324\22\322\265\266x\337\6-\332\31\330\20&\210\247%\22\f\204\327\4\242!\36[@;\253\201\220\263J\vF\242]\315\206\26\r\30\221(\202\332\254\353Z\264!\34\210\3054\232\2375\276\340\342tr\3229\273\303\10\4/h\r\364\v9\302.\335\10\216`8\22#\251\266R\326T\356\r\304\332\210\207\30\237M\272\350b0\255\264,\2234S\304B\31{\310\"Q\255/\262\211\30)\375\201hLk\326\211\254\244t\254\231\307B\312\232i\177\20aQ\312\224i\245\246H\264/`4n\16j\375F(\242\323\0320\306F\313\340\273\254nvm[\240\217\227\22\325H86\323\346E\360n\n\204C]\1C[\245ukQM\17j&\3221\352F6qDuA\221%\26\306>$\346!\362\207\26\215F\242\255Z,\26\350!Pq&\v\2551\205\223\362\215\214L\212J\241b\204)\246\244\270\21\nW\245x(K\217\17\207h\26\2611\355\2130u\34\343\223~\335\341@\17Q\330\372#\324\332\373\2\375\27\262[C=\1\n\232\254>^\272\271d\231\373+\31\311\21\212\205.&H\356\246t\375h*7E\265\226P\314 \1\371\351Q\272\245?\31\251\363G\341.:\26\23\324Q\274\364Rn\2261$\343F\204\274\21\7\5\272\226\6Dl{38G\270b\2039?)\24\23l\223$\264\354\322\6\21\257\33\304\10\33\222q\330\31\240\330\234\235q\223Z\6\314,)\2437\307\306\243J\312\307\265z\275\253)\314\202\306\356I\222\277\306BY\255\307B=\272\326U\37\215\6\2660>\321\333"..., 4769) = 4769 30059 lseek(5, 1078182, SEEK_SET) = 1078182 30059 read(5, "PK\3\4\n\0\0\10\10\0WP\376@\207\211\273*\3718\0\0N\215\0\0\37\0\0\0", 30) = 30 30059 lseek(5, 1078243, SEEK_SET) = 1078243 30059 read(5, "\255|\t`\24E\326\360\253\252>&\223\16\271\201\220\0\303\35\222p\312%w\10\t\4\223\0\t\207\340\1C2\201h\222\t\231\4\304\23o\376%]\277\242\342k\37\377\37]\277\361\303q\374[\352\373\35\25\337S\361\3\25\207\374\3740\377\221\356\216\340\235\200d\301\4O\26B(T\250\272\320\374P&\364$\341\23IT\370\251\232\214\360\302 \320\24*zP5U\27i~\230/\322\251H\366\213\f\221IwY\272\310\366\211\236~X$z\371Eo\221CE\37*r\251W\236z\304\372\217j}Q\n\242\37\321\321\237\252\1\277\30 \6&a1\210\252\203\251\30\202\\\213\241t7L\27\371>1\334\17\253\0213\326\v\250(\244\242\210\212\21T\214\244b\24\25\243\251\30C\10\307\352\3428]\214\323\305x\237\230\340\23\23\321V\304$\224\2218\336\17\355\204\252ML\226TmD[R\361\17\316\303\212OL!\230\251\272\230f\221\274\321|H\217}b\272\37.\0203t13\312\317F\353!\234\347\207\313D\261.f\371D\211\37\256\22\275t1\333'JuQ\346\23stv\262O\314%\322\312\251\230G\305\t\272\250\360\211J]T\371\304|],\360\211\205~\330-\252\251\250\361\211E>\261\230\300\226\370\304R\23781\t[\227\371\305rq\222_\234,N\361\211SQ\323\246@V\370\304J\237\10\322\355*\237\250\365\211:b?Dx\352u\261\232\256k|\242A\27\247\371a\257XC\365\323\t\270Q\27M~x\204?\254\213fB\37\366\303c\242\205\24\275\226`ZII\21\2l\243\242\235\212uT\254\247\342\f\237\330@\3273\2518\213\212\263\2518\207\212s\2518\217\212\215T\234O\305\5>VA\263\365\33\262\322WI\304\27\372\304E\272\270\330'.\361\211K}b\223O\\\206\363G\\\356\23W\370\304\225>\361\v\342\366\227\324\347M\277\270J\374*\211\235 \256\366\243i^C\366v\255Ol\246\346\353\310\212\256\247\21n\300)\"n\324\305\226$\321!n\362\211\233\375\360\261\270E\27\267\322\234z\223 nC\266h\222\36\246j\276\330\212SS\334N\254nE\20\261\225\372\335\341\23wR\277\273P0b-\265\334\355\23\367\320u\233O\334K\327_\373\304o\350z\237Ol'\244\367S\345\267>\361;\252\354\240n;\351n\27\25\17\370\304\203\364x\267Ot\212\0\32\211x\17\vj\331\343\23{\t\342!\252<\354\23\373\350\372\210O<\352\23\217Q\373~\252?\356\23O\3204x\322/\236\22)\324\362{\237x\232\36\37\240\312A\237x\206\256\317\372\304s\324\370<\315\240\27\250x\221\212\227\350\331\37|\342\2174\235_\246\342\25\237x\225\32_\363\211\327\211\320\24td\342\rjy\323'\336\"\24o\373\304\237h\304"..., 8192) = 8192 30059 lseek(5, 1086435, SEEK_SET) = 1086435 30059 read(5, "\3767\366\276%\204\347P\10\24`V\346vH\243\352\204\252x\345\216\217*w>)w\1\376-\334\v\325\271w\200\266\355\310\273\244\330\5wPG\274\251\311]I\325\272\355\216\300G\316Z\236\f\32O\201A\274\7\214\345\2510\236\247\3014\236\0163x&\234\300{J\1\24 \21\203\320\211\376\235\375\3\231MCC\210\252\267\322\236\26\225\354\3[\275\231\240j\207 \t\325{\10\6\353\354\303\244\357 \31\37\375\323\236\215\323\255x\317\277\17\26-\313X\274\7\226\354\217\237\317\274\257c\356\371\355A\374\366\334\373\310\323-\244\273\334\2\37\354\351\26\376\345 $\32<\243[Hw\305\234<\37T>\365$$\331M\310\24OB>\363&$\331M\310\f$df\302\355\204I\310\347v\210p\262\345\26\7 !\306A\350M\263\370\0\244\27\354\205\245\346\204>q\267\214y\r\327\256\215\227@\17>\33\362x\231\203\330\1\361\273\266<\34\343\277v<\261\312\242\272\17m\202\\I\30\267\243\227;l>\01799\1\374\274\2Ry\25d\361\5\220\303\27:8\353cs\326\307\316#|\201\316\301\34\357\22\371\33Y\270qA\352S\16\302db\342\0\34'9\303\333NXF\24t\302\362]\320\353n\334\205\340\262\320\201\1_\26\234\324\t\247`I\217\366\302\251\324;\306\273\\\f\3702\344}9\362~\22\214\340\247\300t\276\322!\203\222x\31LGj\276\362\310\263H\331\256pk~\215g\236\345k\366?\253\377\34K\206\311\24`\255t\t\315\324K#\n\255\31\205\26N\260\21\373\6\343-t\317t^\336B\272\314B\232M\212\221:1b\212\211\2417Y_\207\350\327#\3723P'g\242N\316r\f\223m\17\223m\r\303\330w\354{{\0016\207\351\213\32\10>\10\253:\241Vn^\17\242\215Sj\240\16Y\n\271v\256\374\22\224\364\245\220\3017\341P\227;\206\352k\r\325\3c\200\37\342w\256Y\346\316\365\220\347\\KuK\374j\317\271v\330\236k1\211\347R\256\320K\342\327\241Hn@\221\334\230@\342\321I\367\243\275\231\234mm&S\211\"\345\334-\336\333]~\253\203\266\324\2708\222\247\310-\356\21\332uK\214\225\3264\246\244Y}\7\244\354\203\325\3132\326\354\201\206\375\261\350\333\244\366\16\320\371\235\220\316\357v \317\210\267Y\fQ9\263\211\235h\211/\251`\17\234\206\177\247\307Dh:\234\373@\341\333\35\330\222\242\333g\372<\302\213c5!\307;\216\3161\243/a\2740\352\t1\356\351\16\243\222\220\321F7\243\217!\243\373=\31Um$\245\26YiDV\232/!]O9\360\244\305\323\325C\322\245%@\231\226\20\345s\335\241\324\23\262\332\344f\365ed\365\25OV}\t\350\n$\244\353\215\356\350JJHW\263\233\256w\220\256w=\351\362'\240kfB\272\336\357\216\256\344\204t\205\335t\375\v\351\372\267']\206\215\244\314\242+\235\350J\207\215\t\t\373\324\201(=\236\260TIXJ\2\234\f\22\342\374\272;\234=\22\340\344\211q\36\352\16gj\2\234JB\234Bt\2073\215\247[8gX\21\252^\220\253\354\201\26W\34$\374\240\211d\207K\326m\227\254\363\f\214\234\tY\226\0272\325\3Y:\"\313\350\6Y6\"\343\356\0\255\23\326\272q\365\301p?\327;@3q\361\236\262\306\350\0032\213\274\271\26yFA\256\216\344y\255Cb\0\3228\10\222\305`\7n\303\306m\330t\366\266\261\316\264\260\372\nr\323|"..., 6393) = 6393 30059 lseek(5, 1057407, SEEK_SET) = 1057407 30059 read(5, "PK\3\4\n\0\0\10\10\0WP\376@\324Q\274\33\205\4\0\0\273\10\0\0*\0\0\0", 30) = 30 30059 lseek(5, 1057479, SEEK_SET) = 1057479 30059 read(5, "\215U\337S\33U\24\376n~\223nB\2\24\305\250\4\2105\354R\242\26\320\n\266\244\10-5\244\325 \n:N/a\t\333.\273\230\335`\31\377\22\237\354\324\321\276\360\2003\5f\354\214\372$3\372/9\216\347\336]\226\210<\344!w\317\271\334=\337w\276\357\334\345\317\177~\371\25\300;\270\237D/\336\357B\f\323b\231\21\313\7b\357F\0347\223\224\314\212\244,\242\262\210n\211hN,\37\3061\237\300B\22)\334\26\371\35\261,\212\345n\34\0371\204]\336``5\206\350.7[:CO\345!\337\345%\223[\215\322\275\365\207z\335\235f\210X\372c\227\341J\305\322\335\222\263Yr\370\266k\333\246S\252\225\227n\31\26o\356-\363F\331\332X\0215\350|l\306\260\f\367\6C\177\261\366\377z\243+Tq\316\336 \264\356\212a\351\325\326\366\272\336\\\346\353\246\304\267\353\334\\\341MC\344\376f\304\3352\34*\253\177\335\342&\5\227\213\27T]\243Fl\206T\315\345\365GK|\307\1777\355\356\355\3505\276\251\317\373/\217\26;kC\24$`N\215'\266\270\263\3451\16\27G\27\211ISwZ&\375\205Q\22\251\333;{\f\305\342h\307\3724u\227\364&\367\30\342\r\335\255Jyc\206\345\350M\n\252\2352\354\24/\302]\267)a\267\355]]HP\353\374\335M\303\332 \247\f\347S\3131\32\226\276Qn6\371\236T\202\24J\326\354V\263\256/\30B\353\201\213j\214\v\253\24\274\202\212\202\2271\240\240\17\227\25\364\343%\5K\2502\24:!\242\240\2007\24\3441\244\340M\24E\271\234\2\rc\f\203g\243\260h\232z\203\2334\1\256>\377\270\256\357\270\206m1\214\317q+o[\346^\336S8\357\30V\303\324\3634\374%9\366\371\272\275\275N\220\342\2703.\212\337S\360\26\336Vp\r\23\n&1\301\2209?qR\1\32\345\4\0318gr\207F\253\227F\340\354\230\334\234>7\2555\267I\340t\0070D\267\260\227\356w\30Y!\tEY\241\n=#B'z&\301D\237\264\276J\331:Bt\26\350S\217\301Tv\210\220\232;DX\35;D\344g\332\17\3415Z\373\21\245\365\n\325(\240\213\244J\243H(\243x\235v\363\336\373\30\224\325E$p\231\214\4r\210bR\330\307\333\242\365Q\253\352s\2045\372}/\241\236#r\202\224&\37\23\317\220\25\33\";B\342;\214P\26:AF\223\217x\344\31\"\362\225\220\3308B\327~\370\214\242\247\3175\372 N\20\321I\314b\n\25\\o\243Z\r\250VI\307\1\237j\22\361T&\225\235e\270D;4\202>\337\373>\337>\301w&3\230\333R%\255\344\203\231\334~\340\212'\314M\302\236E\17\312mh\247nD\321M.\251T\225\211\261\366\253[\344\2438Ux\201\330\252@\20\305\217q\251\"\272#?4Uv\250\3200h\7\347lX@\6\267I\354;mh\5\37-C\270W\203\336\22`\177c8N\2061\224\2\354\222\344B\314\4\306A\320JLn.\311\242\212w\300/\312\304\225\361_\376\213(\10\3005\355\204\n\34h\222n\352\5R\253=\351ct\377\246y\275\204\237\"\251\251\222\375\251\337O\310f\201x\272I\216&UML\373\201*==BFfA\273Sd&\36011\373\204&k\231Z^!\203>#9W"..., 1157) = 1157 30059 lseek(5, 1056860, SEEK_SET) = 1056860 30059 read(5, "PK\3\4\n\0\0\10\10\0WP\376@y\26Pc\316\1\0\0J\3\0\0007\0\0\0", 30) = 30 30059 lseek(5, 1056945, SEEK_SET) = 1056945 30059 read(5, "\225R\337k\323@\34\377|\333,Yk\326\316\251u:u[[\273t\33\v\352\343D\250\202 d\372\320\255\240o\327\364\254\231\331e$\351\260\377\223\17\n\352@\301G\37\374\233D\374\3365\n\342\303f \337_w\367\371q\334\367\237\237\277\2\270\213\215**Xu\260VA\t\353:4\253\34Vu\325\322k\355\n\207\226\203\333\4\373~\244\242\374\1\241\341\365\203Cq\"\374X\250\261\377lx(\303|\267; X\217\222\221$\324\203H\311\247\223\243\241L\367\3050\346\311R\220\204\"\36\2104\322}1\264\362WQF\270\27(\231\373\331K?\23Gy\222\304\231\337\357\355=\214\224H\247\373b\334S\243\3\225Ec%G\2754\25\323\201\210'r\227P\316\305\230@}\302\334\211\36i\216\17741G\230\34O\t\236\327=\213\3457\260\235\312\234\21\t\235\363\236X\350\347\"|\275'\216\215/sU\365(\373K5\353\365\272/\10\325~2IC\3718\322\376;g\372\334\321\216\\Tq\201p\347\277o\311\305E,\271\270\204\313.:Xvq\5\rB\373<\256\370\342\224|\223c\235\237A\5\372+\203\264\16\216.wO\270/sv6W\266OA\357\271,a\201\243~<@\0236Z\250q\2656\333\206:\26\r\214\24351\210\256X\30\357&-\253\200U\260\314\371\366\27\224\236o~@\231\177\353\24s\1g\373\33j[:\177\202\363\21\363[\357\214(\315Y3\34\33\314\3401s\327\3606f8\5\357\"3]\3052\263\\\343n\36\364\3M\7\327\271_\301\215\202{\233\263\326U\262\336\376qc\233\311\216Atg\253\5\"\341\246\351n\375\2", 462) = 462 30059 lseek(5, 1146178, SEEK_SET) = 1146178 30059 read(5, "PK\3\4\n\0\0\10\10\0WP\376@\272\353\255\305\256\5\0\0\366\n\0\0$\0\0\0", 30) = 30 30059 lseek(5, 1146244, SEEK_SET) = 1146244 30059 read(5, "\215VYw\23e\30~&\231d\322t\350\22\232B\313\322\226\315t\243\10\212P\312\226\0220\222\266\322\226B\251\n\323dH\7\246IH&\10\210\270\201\v\356\212K\221\33\365\202\33/\n\234\223\202=\7\275\326?\340\265\377B\217\202\3177I\323\322\206\342\315\267\315\273=\317\373\276\3377\277=\370\371>\200\315\270\341\305:\364\227a\r\6\274\360a\320\203\303\n\206\274p\241_\354\217\224\343(\206\313q\f#bxI\301\313^\224\343\25!p\\\254N\210\225&\206Q/\242\210)\320\205\36\225O\"\356\245\3311\5\206\7\247\204\304i/ja\n_\343^$\220\24\372)!}F\234\245=\310\10\23\226\7Y\5g\205n\277\202W%\224\35\v\365\367\35\17\16\17\206$HA\356{\303\275\241\302\276,c$\342\246n%\23\22\32#\t\335\352\310\234\354\310h\343V2if:\6\365sV\267\21\327\322\335\311\230\36\335!\301\335e$\fk\227\4g\240yH\202,\316%TF\214\204\336\233\35\37\325\323\203\332\250\311\23_$\31\325\314!-m\210}\341P\266\306\214\214\0045\256[\3\263^\327\4\232\377\207_=\21\265]\265\6\26\10\333\202;\232#\247\264\263Z\207\251%\342\35\3V\232\366\251\246F\305\267\220\251\217\353\tK\302\352\322\272\205\357\224w\30\353$\324\344-e-\303\354\10[zZ\263\222i~s\331\266$,{L\0\344$\255\323I\335\202@\202Y\303\214\351Bb\311\200\245EO\367h)\233\21\326\211\202s\4G\2143\340\26\200XH\316\214;\267\251'\342\326\30s\32\226\340I\246\362\221Jh(\255\321\227*B\221\f&\336\232\341Xd\253\4w^\33o\360\274\2453g\216\221 \vS\1=)Ff\237\0217\210T\16\4\233\217\321Z\224\356\273\242f\2412\274\3\311l:\252\3577D\312\227>\232\311\215\302\217\212\26\264\252\10\240Y\305y\\\240\201\26\262\372\30\322T\274\206\213\n^Wq\to\220-\25o\342\202\212\267\360\266\204\225\213eS\305;\270\254\342\n\336U\361\36\336\27\253\17T\\\305\207\n>R\3611>\221\340/\251\257\340S\25\237\341s\25\21\364\260j\353\370\356:Q/\372\211\253z\321@\366\314\v\205\263\33\222\270_8\266q\327\301Y\342\354j\231\202t\213\v\7\332\vB@\0036rT\363\2\24\25\352e\330\204\247\v\312+\355/\200|\33\216I\316\322\34\335v\216\233\261\245 \371;\355\2728GZspN\300\355\223'"..., 1454) = 1454 30059 lseek(5, 1044285, SEEK_SET) = 1044285 30059 read(5, "PK\3\4\n\0\0\10\10\0WP\376@\277\276kx\273\v\0\0007\32\0\0\33\0\0\0", 30) = 30 30059 lseek(5, 1044342, SEEK_SET) = 1044342 30059 read(5, "\235W{|\24\325\25\376\356\354f_\231\20\10,$\22`\201\10!\1\22\242\2154\241@\10(\201\20\37\241\10\202\225aw\222\flv\343\356\204\207b\37\212\326g\305G[\202\266\2426D-*R\f\4|\200m\361U_\325>|\364\245\265\266\265\255\332\352\317\237\24\264\347\314L&\263\233]\340\327?\346\316\275w\316\375\316\371\316\271\367\234;\317}~\340\t\0U\370$\200Z\\\347\305\365\1H\270\316\217j\334\220\213\33qS\0\337\301\315\334\333\352\305-\374\276\225\233\333\270\271\235\233\357\346\342{\370>7\333\374\230\205\256\0|\330\36\300\35\270\223{?\10\20\320\17yx\27\367n\347f\207\237\206w{q\217\37\367\342G>t\7P\210\235<\331\343\305}^\334\37\300X\\\347\303\3\374\3761\257\335\305\275\7\3\30\203\207|x\330\207\335\f\363\0107{\270\371\211\17{}x\324\207^\37\366\371\260\237\241\372\2709\300\315An\36\343\346qn\236\340\346I/\0161\337\303\334<\25\300O\3613n~\356\305\21/\236\26\200\200\334\20\213\251\211\372\250\222L\252I\201\274\260\326\252$\26D\325v5\246\323xh\343Ze\275R\321\251k\321\212F-\251\327\n\370\233\265\326\230\242w&T\201\312\264\317\263\32c\252^\221l\251H*\355z<\36MV\324;\360jg\323r\317,-\246\351\263\5\\\245S\226\t\270\353\343\21\2\312o\324bjSg\373\0325\261TY\23\245\231\202\306xX\211.S\22\32\217\255I\267\336\246\221U\2432\253!\364\341\245\351\6\263\222\221\251X\233:\372\361\316H\27?)\1\206\33\332\252\352\365\251~*(\2352\330SU\203&O\301?\371i\340\2\343K\33\246\234x\235\200\320\350i \247*\221\10\2578\261<\223\220\303)J\306\236L\303\320Xg{\32i\212 \251\364j\311\5\355\35\372&c|\21\271\202\10\\\240\266\250\t5\26V\33\325X\253\336FBj\277\"I+\21\30\341\360K\203\256&\24=\316\321\363D-\361\274f]\t\257[\242t\30q\362\342\31:\224\2\205\204|\36\21T#\203\360\363\f\245J\244\177\234a\0374\374_\3416\t.S\242\32\371\365tk}T\211\265V4\353\t-\326Z\273(C\340\345\230\272Q?\267\303\344%0.\263\226~\1\16\337ZrL\274C\300\227 \22MJ\273q\0\6\351\"\344\204\32\216'\"\346I\241u\213\310\353\t\225\334:4\251\2521\362@t@\255\240`T\237\224ps\335\22\203\235\242k\361\330\202D\202\354\231]\353\305\263^<'\260\370T\10\237\"\246\300\20-\231j\341\204,\373\324\366\f\357\247|-\331\20\233\257:\226\25h\311\372\250\326\321A\326\fL\16\323\222\2747R\346<\352\245\235J\224vj\320\311\343\3345k\325\260n`\213x\252\237\255O\0029\306\351\240\364I!iS\222mf\226\362\351q\323\t\264\203\373\317vj|\2\315\361\316DX=[\343\354\0220\310Lg1\31\365\230O\333r\300su\211\204\262\211\335'c\16\346\222\303e<\217_x\361\202\214\27\361\222\214\227\361\212@\361\211\266\247\214\245\370\206\214_b\205\214\213\260R\306\253x\215\216\212\214_\361\340\327\370\215\214\337\342u\31o\340M\n\246\214\267X\360w\334\250h\221\361{\226\332\214\313d\374\1\353(\26'\17\242\27\177\224\3616\336\241\203\264PIDBa+\10\241\270\345\361P,\256\207\24=\224\324\225\204\36\242\261\32\213\204\342-\241\372\206s\352.`\27\374Y\306\273\254l\334\200\353\32\242Q\265U\211\322\201\327\325\5\33\303j\7\253\243\24\237\356\334y\235Z4"..., 3003) = 3003 30059 lseek(5, 1048682, SEEK_SET) = 1048682 30059 read(5, "PK\3\4\n\0\0\10\10\0WP\376@\212-\200\243\263\7\0\0\231\17\0\0#\0\0\0", 30) = 30 30059 lseek(5, 1048747, SEEK_SET) = 1048747 30059 read(5, "\255W[xT\325\25\376O\346vf\30\302$\20.)\10b\250I(\244\10\26\310\215\334\0062%7rB\310\200\32N&'\311\340\344L:3\301[[\244\326\242\242\305k\325\202E\213\326\252c\v\214$\324\250\370\334\247\276\365\251O}\352S\237\372\344\367\365\353\277\366\34\310d\34\314K\347\373\326u\357\265\366^k\257\265N\362\327\377~\376\25\200\7p\313\0177\236\r\340W8\347C\314\207\347\2\330\215\347\5\275 +\347\5\275(\350%\37~\35@\0\27\4\275,\232W\4\275*\3505A\257\vzC\320o\4\275)\350-Ao\v\372\255\17\27}\270\24\300z\274\243\343wB/\vzW\320{\1\254\303\357\375\330\203+\1\356}_t\37\350\330+\302\37t\354\327\321\250\243IG\263\216\26\35\255:\16\350h\23\257\37\n\372\243\240\217\4},\350\23AYA\237\372\360'\37\376\254\1\32\202\21\333\266R\235\t3\235\266\322\32\264^\r\233{l+\323\220\236hH\233\323\231d2\221n\350\214O\232\251\376\31+ef\222\251&\356\212\20\272\10}\4\203\320M\30\320P\26>BfD\203\273\177`\224\236\264\16\r+;\223v:c\332\231a31k\271\230\\\344\327#\302ky\276K\370\262<\337'\274+\317\33\302\273\363|\267\360\236\345\246\177B\303\356\332oG\\\267\254\343\312\236d\314L\f\233\251\270\370s\234\272ms\232\304\333\34\267\343\231V\r\33J\270\216\34?\336Y7\314\275\231\251\270i\233\231\331\224\330\326:\353\256\332:\276\335\252;O4\224\f\333\263\323\22vd\371\333ic,B#c\306\36\3555g\234\313\5\307\342\266\231z\342\266\37-N\225Ev(\331\241\26\304\3652\216\353\244\7$\235y\273\316\305\362Y\336\224m\241g\222\206Sekj\353J\325\231\336\34K8\271c\374\314\302\256\202]r\357\346e\216i\245\223\200\221\234M\305\254\203q\211\272r\311\372N\361\26\304\230L\267X\20WqM\303\246\357\364\30\304\24\256\7\221@.\210\243\30\16\342\230\240\0210\234Pq\0\262\355\263 n\340L\20Q\34\17b/\366\5\261_P\243\240&A\315\202Z\4\265\n: \250\r\373\230\302Ew\221D\302\2324\23\355\251I\266\255\235\t?\36\263f2\361\244\255a]\361\231\35\263\361\304\270\225\222\243\317j\330x\324NY\261\344\244\35\177\322\32\337\262$\220\306-A\314a^\320\315 ~.wL\340/A|\216\205 \276\300\227\262\360\225\350\246\2038!\227zH\320\303\202\36\0214*\350\244 Sn[\276\364]8A\2773\2155\2738\270b\211\244m\25\277}\377\330)+\226\341\263=X\330,j87\225j\314\245\347\322nm\251&\223\332\361\324\236P\235\344\215\333\254Q&\317k\316\314X\366\270\206\35%[\376.\251\345\21\33\245\347\356\276\\U\312\35\17\256\2551\36\213gbS\354\301\32f\247"..., 1971) = 1971 30059 lseek(5, 1047345, SEEK_SET) = 1047345 30059 read(5, "PK\3\4\n\0\0\10\10\0WP\376@\351\337\271\361^\2\0\0R\4\0\0\"\0\0\0", 30) = 30 30059 lseek(5, 1047409, SEEK_SET) = 1047409 30059 read(5, "\205RKo\22Q\24\376\356\314\360\206\362\250\324\7PJ\37\312+\22\32\2431%\325\244\321\244\t\225EM\23]y\301+L\35\230:\f\256\374\31\256\334\270R7,4\261\232\2700\272q\341o2\326s/\23lZ\322.\270\347\3343\347\234\357\301\375\375\367\333w\0\353(\207\341G!\4\3\313\362X\t`5\2145\\\r\340\32\203\337\22\203\256\333c`\333\fA\373@8\334\265\35\206|s \334\332\360Ym\310\373\256m[\303\332\226\331\345N\313k\330\240\311\20690\335M\206\225\342\3669\315\245=\6c\313~*\30\342Ms \36\214\372m\341<\344m\213*\251\246\335\341\326\36wLy\367\212\206\3333\207\f\213\263\27\337\263D_\f\\\"\21\352\n\267\351)\320\213%\322\20\241Jk*\243P,\235/D\274\30q\213\320\322\305\346>\177\311k\26\37tk\255\366\276\350\270\33\245\307d\215-Y\236\372\244Xr\227!\266\353\362\316\363\35~\240\310\223\275\344d\217\17{\23\305~G\fG\26\265\205w\355\221\323\21\367M)0y\\\310u\271;\212\10\212Q\4\20\214\"\2040C\366,\355\1\224\242\310a\236!q\222\230r\202\34\317\235)\34\5z\v~z \32R\22\224\262\224\304\245\350\3\331\210(\2351\272=\242\16\235b\274\374\25\254\2349\204V\256\36B\377\244F\347\324\230A\347\262|Z\264`\225jk\210Sei2\206\4\222\200\312$\fS\231\4\322(Oa\336\203\251Q\224\337|\345\317\320\306\323\345~U,\252\205\321I\203\267\220\341\2\3223\206\365\217'\206\2533\207\27p\321\33~\355\t\254\227+\357\3413\306\225\2370\336\300\247\217+?`\354H:U\372\275\225\25\271\236.\372;y1$K]\1]QN\326I\340:\1\334 ^7\311\220[\304\353\3661+\352S+\352\270\204\313\4\237F\226f\223D C\325\10\214@\360\17\222\1d%\333\334\324\233W\324\240Q\314K2\215D>\323\223D~!&\303\27\370>\300\320\23742\377\371\314)\274M\222{\207\326\334U\34\26&+<\16>\302]T\177\207D\316@;\242\202F\310d$;\222\16\252\\c\322\330\274rt\351\37", 606) = 606 30059 lseek(5, 1110690, SEEK_SET) = 1110690 30059 read(5, "PK\3\4\n\0\0\10\10\0WP\376@\25'\0N\304\5\0\0\217\n\0\0 \0\0\0", 30) = 30 30059 lseek(5, 1110752, SEEK_SET) = 1110752 30059 read(5, "}\226YX\23W\30\206\277\201H\0161\310\342Z\261\32\321j\22@0\356(*\4\20,\1$,\2nC\30B L0\31(\332V\355\276\332j\355j\27\273\330\335ZW\260\342\322\335\326\247\327\275\356u\257{\331j\377\377\344\24\236*\255\27\337\373\316v\346\237s\376\23\271y\353\3625\0>\334t\240\21\207\5\202\16T\341\205t\212\27\5\232\231G\4Z\230G\5Z\231/\tlg\36\23hc\276,\320\316|E\240\203\371\252\300\16\346k\2;\231\257\v\354b\276!\260\233y\\`\17\363M\1\235\371\226@'\363m\201\20\363\35\201.\346\t\1\203\371\256@7\363=\2010\363}\201\36\346\7\2\21\346I\201^\346\207\2}\314\217\4\242\314\217\5\372\231\237\10\230\314O\5b\314\317\4\6\230\237\v\354e\236\22\2103\277\20H0O\333\361%\363\f\307Y;\316\361\214\34v\300\217\363v\\\260\343\242\3[y\246F\230\243\34\227\34\250\301W|\307e\7\306p\305\216\253\32R\32\267h\320\202$\265\345\24\r\315\34t*\245\214\317\5\267Q\0048\352\2\24\325\305\34\3139|\24\315|\241A^\255\246\250\341\250\256\341'*(\374<\200\237\257\372\371\331F~b\33G\220\303\357\347h\340C\276Z\306\21\250\242\250\224#s\324\363\263U\355\32\322\23\0213\0345\254\230\251a^\255iXE\211\356\242\204\336o\305b\321DQ\260,\320\244\207\233\255Ht\275\6G\302\212\323\315t\"\241azGm\257>\244\27Eu3\\\24\224\27\350\226\264\r\0213bm\324\220\352\366\264h\260\371c]\206\206\314\332\210i\324\r\366w\32\361&\2753Jgrjc!=\332\242\307#|\254N\332\254\236\10\215\354\f\33Vp\242\250\371n\317\377\227\225\21\264\364P_@\37P\303d\364\353}Fy\304\324\343\373\350&\r3\335wW\352\241\371K\265\370j\316d\237!\207\10\376\363\265\216(G?\207\311\21\343\30\340\330\313\21\347H\240IC\326\235\23\340\304\20\36p\302\302\240\206\271\377\275DN\\\303u\ry\23\217\327D\243FX\217\226\305\303\203\375\206iU\16\207\214\1+\302\213=\373\316w\224\17F\242]F\\\203;y\354\242Esu\305\214\204\313\214Y\256\36}\310pE\r3l\365\270=\256\322R\227\257\304\345\304\327\370\306\211o\361\35O\356\367N\374\200\37\355\270\341\304O\370\371_\37Q\337\331k\204,\352\331\344\0\262gi\203\245\351\3\3\206\331\245\241p\262\276\271\353\224*\220\232AX\261\344)\r3\334\223\266\313\244\235H\333$-\324\243\307\313\250\24\233\273\306C{w\301\235\2239H\323\250\36\340\31\245\6\355\334g\31\211\246\361\27\316rw\224O\362J,\244\337\255F\372q\317C6\367\27Y6\267\230d\213b\253\342v\3056\305v\305\16\305\35\212;\25w)\356V\334\243\250+v*\206\24\273\24\r\305n\305\260b\217bD\261W\261O1\252\330\257h*\306\24\7\24\367*\306\25\23\222\16\356Sb\0167-\321\6\215\367\36\345~@\373\v\251d\320\352\275\243\320\274\336\234\224\21\244^\204\215l\212\26442\2734A\226.\315A6U\232\223,C\3324\262LiYd\331\322r\310\246K\233A6S\332,\262"..., 1476) = 1476 30090 <... futex resumed> ) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091214, 835423000}, ffffffff 30059 lseek(5, 535361, SEEK_SET) = 535361 30059 read(5, "PK\3\4\n\0\0\10\10\0\251`\273D\37\21P\316\3\2\0\0Q\4\0\0002\0\0\0", 30) = 30 30059 lseek(5, 535441, SEEK_SET) = 535441 30059 read(5, "\225S\315O\23A\24\377M\277\26\266\273P\21\277EQQ\332B\330\212\307\22\22\323H\322X\5\255\341\340\305Lw\2072d\273cf\247D\376'/^4z0\236\275q\360\3371\276\2356F\213$\3660o\336\347\357\315\373\230\357?\277|\5\360\10u\27%,\227\221\307\35\7w]\24q\317\301\212\203\373\16\0360\224\266d\"\3156C\276Z\333g(\264T$\30\346;2\21\317\207\203\236\320\257x/&\315BG\205<\336\347Zf\362XY0\2072e\0\203\327N\22\241[1OSA\232\215N\"L\220\36\4\241\346\203 Viz\22\274\30\362X\232\223n\250\264\330\323\"\25\372\230\33\251\222\225\315&\203\23\252\301[\256\t3\254\376\25+\222PE2\351\7Z\360\350\315\201\340fH\261\301K\222vFBsZ\377Z\233!\247\03624\246\215\314\3426\31V\253\235#~\314\203\230\223\367n\357H\204\246yVc\323\274kd\255;c\313,\364\200\331\256\354'\26\232\341\365y\230C#\343\240e\333\303\215\322[\323>z\233\262\271]5\324\241\330\221\331\324\226\316\233\304F\226\217\206\377$\tid\204\372L\230C\0259X\3650\203Y\17U\324h\266\323\345\367p\1\v\f\353\323,\4Ce\262\31\f\213\377\352\6C\375\377\201\31\312}a\366\250\264\221D+\337F\203>D\2116\330\241\317\222\247C\205\222\344\22\27\320M\313\215b\375\23\330\7br(\23-Y\345)<\242\336\310\1>*\310\276\1\225:\16\356\220w\0067\267\366\0319*\337\322\350\375\4\312\17\213\262<\362\34\243d\334E,Z\373\34.\21\227\253<&\344\313c\344\247\344\235\371\373\365\265o\310\257\323\371\210\302$\360\351\37\300\376o`\37Wp\325\332}\\#.\207\2\256\333\310\33\270i\357%\334\242\273\200\333D\347\351\270\344]\264\2613\277\0", 515) = 515 30059 lseek(5, 534590, SEEK_SET) = 534590 30059 read(5, "PK\3\4\n\0\0\10\10\0\251`\273D\334\264\250.\263\2\0\0\277\5\0\0002\0\0\0", 30) = 30 30059 lseek(5, 534670, SEEK_SET) = 534670 30059 read(5, "\225T[O\23A\24\376\246\335vi\331\n\"\250UQ\301\2\275\301rQT\212\30C4!\226\213)\301[|\30\266#\fnw\311\356\224\330\237\342O0\341\305\304`\342\203\361\331\37E<\263%J\4bIvgf\317\234\363\235o\2763g\177\35~\377\1`\6\217\323\350B1\205\4J)\2241\236\306\4l\23\223i\230\23021mb\306\304]\206\344\274\364\244Z`\210\347\v\33\f\306\242_\27\f=U\351\211\225fcS\4\353|\323%K_\325w\270\273\301\3\251\277\217\214\206\332\226!\3\30\254%\317\23\301\242\313\303P\220e\242\352\te\207\357m'\340\r\333\365\303\260e\277hrW\252V\315\361\3\261\26\210P\4{\\I\337\313MU\30L\307o\354\362\2000W\363\247\304\36\367_\363]\351\264*\235y\25\226\30b\376\24\303hg\376\332{\232\6E!\205\377\34b=\20\\5\204\247t\224\242\250$\3415]\305\300(k\246\246\270\363a\231\357FZ\231\270\3070\226\257\356\360=n\273\334\333\262W7w\204\243*'-\21\345\217\223Z\362\23{z\207\230\245jr\313\343\252\251\365Z;\v\263\251\244k/F\262r\345\7\363\235\t\260@9\3225\277\0318\342\231\3245\36<\253n\23:\v]\225\247\236Ch\322\333Z\26j\333\257\233\230\265p\37\17,\244\321m\341!\262tv\vs\250\230\230\267\360\10t\327r\235P\261p\t\375\f\345\363\334$\206\336\177\325`\350?M\16\252F\207\325e(vN\201\352N\tB\21\35A\352V\310\35/zM\5$T\245p\254BU\31\352\272\246\324\337|\206j\355\222\362\343\235\336\277ur'\210\3229\334\251\343\374\240.=\356F\235\277\204I\372/tQ#\247\350\357\21\247\227\212\247\333\232V6\315\324\343H\24\277\201}\241E\f\31\32\223\221\261\206\v4Zm\7\364\240\17\372o@\205;\n\376L\336I\232\307J_\21[)\3230gd\215\257\210\37\300\30oO\365\331\304@\342\23\222\3\211\375\370~\224]\303_\213\302^\22\350+b\362\32\203x\203a\274\305\10\336E)\27\332\260G)\365j\0\227#\32c\270B\253\30E\16\343*\262\204\327\215\33\204\227\205A(i\\\247\257\4\255\"\332\207\0301q\223\36\326\373\204h\337:\242\375\234\242\264\n\231b\351'\22ez\17\220\334?\365\354\267\333\216\177\210d\3102\24\355g\210\300\20E\30\270\23E\346\210\274\236G\211\"\310\232G\1\27#\251\251\32Ql\327o", 691) = 691 30059 lseek(4, 29565950, SEEK_SET) = 29565950 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305BLR1\267\336\2\0\0\336\2\0\0&\0\0\0", 30) = 30 30059 lseek(4, 29566018, SEEK_SET) = 29566018 30059 read(4, "\312\376\272\276\0\0\0003\0*\10\0\17\1\0\3()V\1\0\3()Z\1\0\25(Ljava/lang/String;)V\1\0\10\1\0\6\1\0\4Code\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\nSourceFile\1\0\1Z\1\0\naccess$000\1\0\fbooleanValue\1\0\fdoPrivileged\1\0#java.util.Arrays.useLegacyMergeSort\1\0\21java/lang/Boolean\1\0\20java/lang/Object\1\0\36java/security/AccessController\1\0\20java/util/Arrays\1\0 java/util/Arrays$LegacyMergeSort\1\0$sun/security/action/GetBooleanAction\1\0\ruserRequested\7\0\20\7\0\21\7\0\22\7\0\23\7\0\24\7\0\25\1\0004(Ljava/security/PrivilegedAction;)Ljava/lang/Object;\f\0\26\0\v\f\0\6\0\2\f\0\r\0\3\f\0\6\0\4\f\0\16\0\35\t\0\33\0\36\n\0\27\0 \n\0\30\0\37\n\0\31\0\"\n\0\34\0!\1\0\vArrays.java\1\0\17LegacyMergeSort\0000\0\33\0\30\0\0\0\1\0\32\0\26\0\v\0\0\0\3\0\0\0\6\0\2\0\1\0\7\0\0\0\35\0\1\0\1\0\0\0\5*\267\0%\261\0\0\0\1\0\t\0\0\0\6\0\1\0\0\1\202\20\10\0\f\0\3\0\1\0\7\0\0\0\34\0\1\0\0\0\0\0\4\262\0#\254\0\0\0\1\0\t\0\0\0\6\0\1\0\0\1\202\0\10\0\5\0\2\0\1\0\7\0\0\0.\0\3\0\0\0\0\0\26\273\0\34Y\22\1\267\0'\270\0&\300\0\27\266\0$\263\0#\261\0\0\0\1\0\t\0\0\0\6\0\1\0\0\1\203\0\2\0\n\0\0\0\2\0(\0\10\0\0\0\n\0\1\0\33\0\32\0)\0\30", 734) = 734 30059 lseek(4, 29857356, SEEK_SET) = 29857356 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305BN\17\314*\335\"\0\0\335\"\0\0\27\0\0\0", 30) = 30 30059 lseek(4, 29857409, SEEK_SET) = 29857409 30059 read(4, "\312\376\272\276\0\0\0003\0\271\3\0\1\321o\10\0\22\10\0\23\10\0\27\10\0.\1\0\23$assertionsDisabled\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4(I)I\1\0\4(I)V\1\0\7(I)[TT;\1\0\5(II)I\1\0\5(II)V\1\0\6(III)V\1\0\7(IIII)V\1\0\25(Ljava/lang/String;)V\1\0\1)\1\0\f) > toIndex(\1\0\10\1\0\6\1\0\4Code\1\0000Comparison method violates its general contract!\1\0\rConstantValue\1\0\1I\1\0\32INITIAL_TMP_STORAGE_LENGTH\1\0\17LineNumberTable\1\0\nMIN_GALLOP\1\0\tMIN_MERGE\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\1Z\1\0\2[I\1\0\23[Ljava/lang/Object;\1\0\4[TT;\1\0\1a\1\0\6append\1\0\tarraycopy\1\0\nbinarySort\1\0\1c\1\0\7compare\1\0\30countRunAndMakeAscending\1\0\26desiredAssertionStatus\1\0\16ensureCapacity\1\0\nfromIndex(\1\0\ngallopLeft\1\0\vgallopRight\1\0(java/lang/ArrayIndexOutOfBoundsException\1\0\30java/lang/AssertionError\1\0\17java/lang/Class\1\0\"java/lang/IllegalArgumentException\1\0\16java/lang/Math\1\0\20java/lang/Object\1\0\27java/lang/StringBuilder\1\0\20java/lang/System\1\0\20java/util/Arrays\1\0\24java/util/Comparator\1\0\21java/util/TimSort\1\0\7mergeAt\1\0\rmergeCollapse\1\0\22mergeForceCollapse\1\0\7mergeHi\1\0\7mergeLo\1\0\3min\1\0\tminGallop\1\0\fminRunLength\1\0\7pushRun\1\0\nrangeCheck\1\0\freverseRan"..., 8925) = 8925 30059 lseek(4, 29557820, SEEK_SET) = 29557820 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B(\245\367&8\7\0\0008\7\0\0!\0\0\0", 30) = 30 30059 lseek(4, 29557883, SEEK_SET) = 29557883 30059 read(4, "\312\376\272\276\0\0\0003\0S\1\0\3()I\1\0\5()TE;\1\0\3()V\1\0\3()Z\1\0\25(Ljava/lang/Object;)V\1\0\6(TE;)V\1\0\6\1\0\4Code\1\0\1I\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\23[Ljava/lang/Object;\1\0\naccess$200\1\0\3add\1\0\26checkForComodification\1\0\6cursor\1\0\20expectedModCount\1\0\vhasPrevious\1\0\37java/lang/IllegalStateException\1\0#java/lang/IndexOutOfBoundsException\1\0\23java/util/ArrayList\1\0\25java/util/ArrayList$1\1\0\27java/util/ArrayList$Itr\1\0\33java/util/ArrayList$ListItr\1\0)java/util/ConcurrentModificationException\1\0\26java/util/ListIterator\1\0 java/util/NoSuchElementException\1\0\7lastRet\1\0\10modCount\1\0\tnextIndex\1\0\10previous\1\0\rpreviousIndex\1\0\3set\1\0\6this$0\7\0\17\7\0\26\7\0\27\7\0\30\7\0\31\7\0\32\7\0\33\7\0\34\7\0\35\7\0\36\1\0\25Ljava/util/ArrayList;\1\0;Ljava/util/ArrayList.Itr;Ljava/util/ListIterator;\1\0\24()Ljava/lang/Object;\1\0\26(ILjava/lang/Object;)V\1\0\31(Ljava/util/ArrayList;I)V\1\0'(ILjava/lang/Object;)Ljava/lang/Object;\1\0*(Ljava/util/ArrayList;)[Ljava/lang/Object;\1\0/(Ljava/util/ArrayList;Ljava/util/ArrayList$1;)V\f\0\23\0\t\f\0\24\0\t\f\0\37\0\t\f\0 \0\t\f\0%\0000\f\0\7\0\3\f\0\22\0\3\f\0\21\0003\f\0$\0005\f\0"..., 1848) = 1848 30059 lseek(4, 29738335, SEEK_SET) = 29738335 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\201\16S\322l\37\0\0l\37\0\0\31\0\0\0", 30) = 30 30059 lseek(4, 29738390, SEEK_SET) = 29738390 30059 read(4, "\312\376\272\276\0\0\0003\1C\10\0\3\10\0.\1\0008%(\\d+\\$)?([-#+ 0,(\\<]*)?(\\d+)?(\\.\\d+)?([tT])?([a-zA-Z%])\1\0\3()C\1\0\3()D\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\25(C)Ljava/lang/String;\1\0\4(D)D\1\0\4(I)C\1\0\25(I)Ljava/lang/String;\1\0\4(I)Z\1\0\26(II)Ljava/lang/String;\1\0\23(Ljava/io/Writer;)V\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)V\1\0'(Ljava/lang/String;Ljava/lang/String;)V\1\0\25(Ljava/util/Locale;)V\1\0\10\1\0\6\1\0\1C\1\0\4Code\1\0\rConstantValue\1\0\1D\1\0\nExceptions\1\0\6FORMAT\1\0\1I\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\22Ljava/lang/String;\1\0\22Ljava/util/Locale;\1\0\fMAX_FD_CHARS\1\0\nSourceFile\1\0\rStackMapTable\1\0\2US\1\0\23[Ljava/lang/Object;\1\0#[Ljava/util/Formatter$FormatString;\1\0\1a\1\0\naccess$000\1\0\naccess$200\1\0\naccess$202\1\0\naccess$300\1\0\3add\1\0\6charAt\1\0\vcharsetName\1\0\tcheckText\1\0\5close\1\0\7compile\1\0\3end\1\0\nensureOpen\1\0\6equals\1\0\4find\1\0\5flush\1\0\7forName\1\0\6format\1\0\17formatSpecifier\1\0\tfsPattern\1\0\ngetDefault\1\0\vgetInstance\1\0\7getZero\1\0\fgetZeroDigit\1\0\5index\1\0\vioException\1\0\26java/io/BufferedWriter\1\0\21java/io/Closeable\1\0\fjava/io/File\1\0\35java/io/FileNotFoundException\1\0\30java/io/Fil"..., 8044) = 8044 30059 lseek(4, 58545086, SEEK_SET) = 58545086 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\355\366(\246\232\4\0\0\232\4\0\0\"\0\0\0", 30) = 30 30059 lseek(4, 58545150, SEEK_SET) = 58545150 30059 read(4, "\312\376\272\276\0\0\0003\0006\1\0\3()V\1\0\6\1\0\4Code\1\0\1I\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\4Node\1\0\nSourceFile\1\0\rStackMapTable\1\0\1Z\1\0\4atom\1\0\rdeterministic\1\0\27java/util/regex/Matcher\1\0\27java/util/regex/Pattern\1\0\34java/util/regex/Pattern$Node\1\0\34java/util/regex/Pattern$Ques\1\0 java/util/regex/Pattern$TreeInfo\1\0\4last\1\0\5match\1\0\tminLength\1\0\4next\1\0\5study\1\0\4type\7\0\r\7\0\16\7\0\17\7\0\20\7\0\21\1\0\36Ljava/util/regex/Pattern$Node;\1\0\"(Ljava/util/regex/Pattern$Node;I)V\1\0%(Ljava/util/regex/Pattern$TreeInfo;)Z\1\0005(Ljava/util/regex/Matcher;ILjava/lang/CharSequence;)Z\f\0\22\0\4\f\0\24\0\4\f\0\27\0\4\f\0\f\0\n\f\0\v\0\35\f\0\25\0\35\f\0\2\0\1\f\0\26\0\37\f\0\23\0 \t\0\30\0!\t\0\33\0#\t\0\33\0%\t\0\33\0&\t\0\34\0\"\t\0\34\0$\n\0\32\0'\n\0\32\0(\n\0\32\0)\1\0\fPattern.java\1\0\4Ques\1\0\10TreeInfo\0000\0\33\0\32\0\0\0\2\0\0\0\v\0\35\0\0\0\0\0\27\0\4\0\0\0\3\0\0\0\2\0\36\0\1\0\3\0\0\0003\0\2\0\3\0\0\0\17*\267\0000*+\265\0,*\34\265\0+\261\0\0\0\1\0\6\0\0\0\22\0\4\0\0\17\350\0\4\17\351\0\t\17\352\0\16\17\353\0\0\0\23\0 \0\1\0\3\0\0\1\5\0\4\0\4\0\0\0\300*\264\0+\252\0\0\0\0\0\0\231\0\0\0\0\0\0\0\2\0\0\0\34\0\0\0L\0\0\0|*\264\0,+\34-\266\0002\231\0\23*\264\0-++\264\0*-\266\0002\232\0\20*\264\0-+\34-\266\0002\231\0\7\4\247\0\4\3\254*\264\0-+\34-\266\0002\232\0 *\264\0,+\34-\266\0002\231\0\27*\264\0-++\264\0*-\266\0002\231\0\7\4\247\0\4\3\254*\264\0,+\34-\266\0002\231\0\10+\264\0*=*\264\0-+\34-\266\0002\254*\264\0,+\34-\266\0002\231\0\27*\264\0-++\264\0*-\266\0002\231\0\7\4\247\0\4\3\254\0\0\0\2\0\t\0\0\0\23\0\16 \34\f\3@\1\0)\3@\1\0\21\n @\1\0\6\0\0\0\32\0\6\0\0\17\355\0 \17\357\0P\17\362\0\200\17\365\0\222\17\366\0\235"..., 1178) = 1178 30059 lseek(4, 29704464, SEEK_SET) = 29704464 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\315\365KE\265\3\0\0\265\3\0\0%\0\0\0", 30) = 30 30059 lseek(4, 29704531, SEEK_SET) = 29704531 30059 read(4, "\312\376\272\276\0\0\0003\0000\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\6\1\0\4Code\1\0\nExceptions\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\22Ljava/lang/String;\1\0\nSourceFile\1\0\naccess$000\1\0\6append\1\0\5index\1\0\23java/io/IOException\1\0\24java/lang/Appendable\1\0\20java/lang/Object\1\0\23java/util/Formatter\1\0\37java/util/Formatter$FixedString\1\0 java/util/Formatter$FormatString\1\0\5print\1\0\1s\1\0\6this$0\1\0\10toString\7\0\16\7\0\17\7\0\20\7\0\21\7\0\22\7\0\23\1\0\25Ljava/util/Formatter;\1\0000(Ljava/lang/CharSequence;)Ljava/lang/Appendable;\1\0-(Ljava/util/Formatter;)Ljava/lang/Appendable;\1\0*(Ljava/util/Formatter;Ljava/lang/String;)V\1\0'(Ljava/lang/Object;Ljava/util/Locale;)V\f\0\25\0\t\f\0\26\0\36\f\0\4\0\3\f\0\f\0\37\f\0\v\0 \t\0\34\0#\t\0\34\0$\n\0\32\0%\n\0\33\0'\v\0\31\0&\1\0\vFixedString\1\0\fFormatString\1\0\16Formatter.java\0 \0\34\0\32\0\1\0\35\0\2\0\2\0\25\0\t\0\0\20\20\0\26\0\36\0\0\0\4\0\0\0\4\0!\0\1\0\5\0\0\0'\0\2\0\3\0\0\0\17*+\265\0)*\267\0**,\265\0(\261\0\0\0\1\0\10\0\0\0\6\0\1\0\0\n\0\0\1\0\r\0\1\0\1\0\5\0\0\0\33\0\1\0\1\0\0\0\3\20\376\254\0\0\0\1\0\10\0\0\0\6\0\1\0\0\n\1\0\1\0\24\0\"\0\2\0\5\0\0\0*\0\2\0\3\0\0\0\22*\264\0)\270\0+*\264\0(\271\0,\2\0W\261\0\0\0\1\0\10\0\0\0\6\0\1\0\0\n\3\0\6\0\0\0\4\0\1\0\30\0\1\0\27\0\2\0\1\0\5\0\0\0\35\0\1\0\1\0\0\0\5*\264\0(\260\0\0\0\1\0\10\0\0\0\6\0\1\0\0\n\4\0\2\0\n\0\0\0\2\0/\0\7\0\0\0\22\0\2\0\34\0\33\0-\0\2\0\35\0\33\0.\6\n", 949) = 949 30059 lseek(4, 29737904, SEEK_SET) = 29737904 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\3\341\253\247k\1\0\0k\1\0\0&\0\0\0", 30) = 30 30059 lseek(4, 29737972, SEEK_SET) = 29737972 30059 read(4, "\312\376\272\276\0\0\0003\0\24\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\nExceptions\1\0\fInnerClasses\1\0\nSourceFile\1\0\5index\1\0\23java/io/IOException\1\0\20java/lang/Object\1\0\23java/util/Formatter\1\0 java/util/Formatter$FormatString\1\0\5print\1\0\10toString\7\0\7\7\0\10\7\0\t\7\0\n\1\0'(Ljava/lang/Object;Ljava/util/Locale;)V\1\0\fFormatString\1\0\16Formatter.java\6\0\0\20\0\16\0\0\0\0\0\3\4\1\0\6\0\1\0\0\4\1\0\v\0\21\0\1\0\3\0\0\0\4\0\1\0\r\4\1\0\f\0\2\0\0\0\2\0\5\0\0\0\2\0\23\0\4\0\0\0\n\0\1\0\20\0\17\0\22\6\n", 363) = 363 30059 lseek(4, 29711445, SEEK_SET) = 29711445 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305BW\5\377\36\24g\0\0\24g\0\0)\0\0\0", 30) = 30 30059 lseek(4, 29711516, SEEK_SET) = 29711516 30059 read(4, "\312\376\272\276\0\0\0003\3D\3\0\0\352`\3\0\17B@\10\0009\10\0:\10\0;\10\0?\10\0I\10\0J\10\0P\10\0R\10\0U\10\0Z\10\0\352\10\0\354\10\1\5\1\0\23$assertionsDisabled\1\0\3()B\1\0\3()C\1\0\3()D\1\0\3()F\1\0\3()I\1\0\3()J\1\0\24()Ljava/lang/String;\1\0\3()S\1\0\3()V\1\0\3()Z\1\0\4()[C\1\0\4(C)C\1\0\25(C)Ljava/lang/String;\1\0\4(C)Z\1\0\4(D)D\1\0\4(D)I\1\0\4(D)J\1\0\25(D)Ljava/lang/String;\1\0\4(D)Z\1\0\5(DD)I\1\0\5(DI)D\1\0\4(I)C\1\0\4(I)I\1\0\25(I)Ljava/lang/String;\1\0\4(I)V\1\0\4(I)Z\1\0\5(I)[C\1\0\26(II)Ljava/lang/String;\1\0\4(J)D\1\0\4(J)V\1\0\25(Ljava/lang/Object;)V\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)I\1\0&(Ljava/lang/String;)Ljava/lang/String;\1\0\25(Ljava/lang/String;)V\1\0\4(Z)V\1\0\5([C)I\1\0\5([C)V\1\0\6([C)[C\1\0\7([CI)[C\1\0\0020X\1\0\0020x\1\0\0101.0p1024\1\0\10\1\0\6\1\0\tALTERNATE\1\0\2AM\1\0\1C\1\0\4Code\1\0\rDECIMAL_FLOAT\1\0\nExceptions\1\0\4Form\1\0\7GENERAL\1\0\5GROUP\1\0\7HALF_UP\1\0\1I\1\0\10INFINITY\1\0\10Infinity\1\0\fInnerClasses\1\0\rLEADING_SPACE\1\0\fLEFT_JUSTIFY\1\0\17LineNumberTable\1\0\22Ljava/util/Locale;\1\0\3NAN\1\0\4NONE\1\0\3NaN\1\0\vPARENTHESES\1\0\4PLUS\1\0\2PM\1\0\10PREVIOUS\1\0\nSCIENTIFIC\1\0\nSourceFile\1\0\rStackMapTable\1\0\1T\1\0\tUPPERCASE\1\0\2US\1\0\1Z\1\0\4ZERO\1\0\10ZERO_PAD\1\0\2[C\1\0\23[Ljava/lang/String;\1\0\3abs\1\0\naccess$000\1\0\naccess$100\1\0\nacce"..., 26388) = 26388 30059 lseek(4, 29705480, SEEK_SET) = 29705480 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\240\365\367\366\274\n\0\0\274\n\0\0\37\0\0\0", 30) = 30 30059 lseek(4, 29705541, SEEK_SET) = 29705541 30059 read(4, "\312\376\272\276\0\0\0003\0o\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\4()[C\1\0\25(C)Ljava/lang/String;\1\0\4(I)V\1\0\25(Ljava/lang/String;)V\1\0\10\1\0\6\1\0\tALTERNATE\1\0\4Code\1\0\5GROUP\1\0\1I\1\0\fInnerClasses\1\0\rLEADING_SPACE\1\0\fLEFT_JUSTIFY\1\0\17LineNumberTable\1\0\4NONE\1\0\vPARENTHESES\1\0\4PLUS\1\0\10PREVIOUS\1\0\nSourceFile\1\0\rStackMapTable\1\0\tUPPERCASE\1\0\10ZERO_PAD\1\0\2[C\1\0\naccess$100\1\0\3add\1\0\6append\1\0\10contains\1\0\3dup\1\0\5flags\1\0\20java/lang/Object\1\0\20java/lang/String\1\0\27java/lang/StringBuilder\1\0'java/util/DuplicateFormatFlagsException\1\0\23java/util/Formatter\1\0\31java/util/Formatter$Flags\1\0%java/util/UnknownFormatFlagsException\1\0\5parse\1\0\6remove\1\0\vtoCharArray\1\0\10toString\1\0\7valueOf\7\0\32\7\0!\7\0\"\7\0#\7\0$\7\0%\7\0&\7\0'\1\0\33Ljava/util/Formatter$Flags;\1\0\34(C)Ljava/lang/StringBuilder;\1\0\35()Ljava/util/Formatter$Flags;\1\0\36(C)Ljava/util/Formatter$Flags;\1\0\36(Ljava/util/Formatter$Flags;)Z\1\0/(Ljava/util/Formatter$Flags;)Ljava/lang/String;\1\0/(Ljava/lang/String;)Ljava/util/Formatter$Flags;\1\0008(Ljava/util/Formatter$Flags;)Ljava/util/Formatter$Flags;\1\0S(Ljava/util/Formatter$Flags;Ljava/ut"..., 2748) = 2748 30059 lseek(4, 29700690, SEEK_SET) = 29700690 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305BJ\24\256\200\206\7\0\0\206\7\0\0$\0\0\0", 30) = 30 30059 lseek(4, 29700756, SEEK_SET) = 29700756 30059 read(4, "\312\376\272\276\0\0\0003\0S\1\0\3()V\1\0\4(C)Z\1\0\6\1\0\7BOOLEAN\1\0\rBOOLEAN_UPPER\1\0\1C\1\0\tCHARACTER\1\0\17CHARACTER_UPPER\1\0\4Code\1\0\rConstantValue\1\0\tDATE_TIME\1\0\17DATE_TIME_UPPER\1\0\rDECIMAL_FLOAT\1\0\17DECIMAL_INTEGER\1\0\7GENERAL\1\0\rGENERAL_UPPER\1\0\10HASHCODE\1\0\16HASHCODE_UPPER\1\0\21HEXADECIMAL_FLOAT\1\0\27HEXADECIMAL_FLOAT_UPPER\1\0\23HEXADECIMAL_INTEGER\1\0\31HEXADECIMAL_INTEGER_UPPER\1\0\fInnerClasses\1\0\16LINE_SEPARATOR\1\0\17LineNumberTable\1\0\rOCTAL_INTEGER\1\0\fPERCENT_SIGN\1\0\nSCIENTIFIC\1\0\20SCIENTIFIC_UPPER\1\0\6STRING\1\0\fSTRING_UPPER\1\0\nSourceFile\1\0\rStackMapTable\1\0\visCharacter\1\0\7isFloat\1\0\tisGeneral\1\0\tisInteger\1\0\6isText\1\0\7isValid\1\0\20java/lang/Object\1\0\23java/util/Formatter\1\0\36java/util/Formatter$Conversion\3\0\0\0%\3\0\0\0A\3\0\0\0B\3\0\0\0C\3\0\0\0E\3\0\0\0G\3\0\0\0H\3\0\0\0S\3\0\0\0T\3\0\0\0X\3\0\0\0a\3\0\0\0b\3\0\0\0c\3\0\0\0d\3\0\0\0e\3\0\0\0f\3\0\0\0g\3\0\0\0h\3\0\0\0n\3\0\0\0o\3\0\0\0s\3\0\0\0t\3\0\0\0x\7\0(\7\0)\7\0*\f\0\3\0\1\f\0\"\0\2\f\0#\0\2\f\0$\0\2\f\0%\0\2\f\0&\0\2\n\0B\0E\n\0D\0F\n\0D\0G\n\0D\0H\n\0D\0I\n\0D\0J\1\0\nConversion\1\0\16Formatter.java\0 \0D\0B\0\0\0\27\0\30\0\16\0\6\0\1\0\n\0\0\0\2\0008\0\30\0\32\0\6\0\1\0\n\0\0\0\2\0>\0\30\0\25\0\6\0\1\0\n\0\0\0\2\0A\0\30\0\26\0\6\0\1\0\n\0\0\0\2\0004\0\30\0\34\0\6\0\1\0\n\0\0\0\2\0009\0\30\0\35\0\6\0\1\0\n\0\0\0\2\0/\0\30\0\17\0\6\0\1\0\n\0\0\0\2\0;\0\30\0\20\0\6\0\1\0\n\0\0\0\2\0000\0\30\0\r\0\6\0\1\0\n\0\0"..., 1926) = 1926 30059 lseek(4, 29698948, SEEK_SET) = 29698948 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\362\276I\v\242\0\0\0\242\0\0\0\33\0\0\0", 30) = 30 30059 lseek(4, 29699005, SEEK_SET) = 29699005 30059 read(4, "\312\376\272\276\0\0\0003\0\t\1\0\nSourceFile\1\0\10formatTo\1\0\20java/lang/Object\1\0\25java/util/Formattable\7\0\3\7\0\4\1\0\33(Ljava/util/Formatter;III)V\1\0\20Formattable.java\6\1\0\6\0\5\0\0\0\0\0\1\4\1\0\2\0\7\0\0\0\1\0\1\0\0\0\2\0\10", 162) = 162 30059 lseek(4, 52981904, SEEK_SET) = 52981904 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B\20\34l]\222\3\0\0\222\3\0\0'\0\0\0", 30) = 30 30059 lseek(4, 52981973, SEEK_SET) = 52981973 30059 read(4, "\312\376\272\276\0\0\0003\0'\1\0\3()I\1\0\3()V\1\0\6\1\0\4Code\1\0\nExceptions\1\0\fHandler.java\1\0\1I\1\0\17LineNumberTable\1\0\22Ljava/lang/String;\1\0\nSourceFile\1\0\16getDefaultPort\1\0\23java/io/IOException\1\0\16java/net/Proxy\1\0\31java/net/URLStreamHandler\1\0\16openConnection\1\0\5proxy\1\0\tproxyPort\1\0!sun/net/www/protocol/http/Handler\1\0+sun/net/www/protocol/http/HttpURLConnection\7\0\f\7\0\r\7\0\16\7\0\22\7\0\23\1\0\26(Ljava/lang/String;I)V\1\0((Ljava/net/URL;)Ljava/net/URLConnection;\1\0008(Ljava/net/URL;Ljava/net/Proxy;)Ljava/net/URLConnection;\1\0D(Ljava/net/URL;Ljava/net/Proxy;Lsun/net/www/protocol/http/Handler;)V\f\0\21\0\7\f\0\20\0\t\f\0\3\0\2\f\0\17\0\33\f\0\3\0\34\t\0\27\0\35\t\0\27\0\36\n\0\26\0\37\n\0\27\0 \n\0\30\0!\0!\0\27\0\26\0\0\0\2\0\4\0\20\0\t\0\0\0\4\0\21\0\7\0\0\0\5\0\4\0\v\0\1\0\1\0\4\0\0\0\33\0\1\0\1\0\0\0\3\20P\254\0\0\0\1\0\10\0\0\0\6\0\1\0\0\0*\0\1\0\3\0\2\0\1\0\4\0\0\0003\0\2\0\1\0\0\0\17*\267\0$*\1\265\0#*\2\265\0\"\261\0\0\0\1\0\10\0\0\0\22\0\4\0\0\0-\0\4\0.\0\t\0/\0\16\0000\0\1\0\3\0\31\0\1\0\4\0\0\0003\0\2\0\3\0\0\0\17*\267\0$*+\265\0#*\34\265\0\"\261\0\0\0\1\0\10\0\0\0\22\0\4\0\0\0002\0\4\0003\0\t\0004\0\16\0005\0\4\0\17\0\32\0\2\0\4\0\0\0\"\0\3\0\2\0\0\0\n*+\1\300\0\25\266\0%\260\0\0\0\1\0\10\0\0\0\6\0\1\0\0\0009\0\5\0\0\0\4\0\1\0\24\0\4\0\17\0\33\0\2\0\4\0\0\0#\0\5\0\3\0\0\0\v\273\0\30Y+,*\267\0&\260\0\0\0\1\0\10\0\0\0\6\0\1\0\0\0>\0\5\0\0\0\4\0\1\0\24\0\1\0\n\0\0\0\2\0\6", 914) = 914 30059 mprotect(0x7fb31456c000, 16384, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 43846026, SEEK_SET) = 43846026 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B\231\245+\234\1\262\0\0\1\262\0\0001\0\0\0", 30) = 30 30059 lseek(4, 43846105, SEEK_SET) = 43846105 30059 read(4, "\312\376\272\276\0\0\0003\6w\10\0002\10\0003\10\0005\10\0U\10\0[\10\0d\10\0e\10\0g\10\0i\10\0k\10\0m\10\0t\10\0x\10\0{\10\0|\10\0}\10\0\200\10\0\201\10\0\202\10\0\204\10\0\207\10\0\210\10\0\211\10\0\227\10\0\237\10\0\241\10\0\242\10\0\244\10\0\250\10\0\251\10\0\264\10\0\273\10\0\303\10\0\312\10\0\326\10\0\344\10\0\356\10\0\360\10\0\370\10\1e\10\1l\10\1n\10\1\301\10\1\314\10\1\316\10\1\367\10\2L\10\2Y\1\0\0\1\0\1 \1\0\3 / \1\0\6 Java/\1\0\27 doesn't support output\1\0\n for URL: \1\0\n returned \1\0\4 to \1\0\1\"\1\0/$SwitchMap$sun$net$www$protocol$http$AuthScheme\1\0\3()I\1\0\3()J\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4(I)C\1\0\4(I)I\1\0\25(I)Ljava/lang/String;\1\0\4(I)V\1\0\4(I)Z\1\0\5(II)I\1\0\26(II)Ljava/lang/String;\1\0\4(J)V\1\0\25(Ljava/lang/Object;)V\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)I\1\0&(Ljava/lang/String;)Ljava/lang/String;\1\0\25(Ljava/lang/String;)V\1\0\25(Ljava/lang/String;)Z\1\0'(Ljava/lang/String;Ljava/lang/String;)V\1\0\30(Ljava/lang/Throwable;)V\1\0\4(Z)V\1\0\5([B)I\1\0\1)\1\0\1/\1\0\f100-Continue\1\0\1:\1\0\1;\1\0\2; \1\0\10\1\0\6\1\0\31>>>> Headers are filtered\1\0\6Accept\1\0\36Access-Control-Request-Headers\1\0\35Access-Control-Request-Method\1\0\21Already connected\1\0\26Authentication failure\1\0\23Authentication-Info\1\0\rAuthorization\1\0\5BASIC\1\0\7CONNECT\1\0\22Cache Request for \1\0\rCache-Control\1\0GCannot read from URLConnecti"..., 45569) = 45569 30059 mprotect(0x7fb314570000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb314571000, 8192, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb314573000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb314574000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb314575000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 56786672, SEEK_SET) = 56786672 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B\223 \260\372\355\30\0\0\355\30\0\0 \0\0\0", 30) = 30 30059 lseek(4, 56786734, SEEK_SET) = 56786734 30059 read(4, "\312\376\272\276\0\0\0003\1<\10\0\25\10\0'\10\0*\10\0+\10\0,\10\0-\10\0001\10\0004\10\0005\10\0006\10\0007\10\0008\10\0_\10\0c\10\0d\10\0e\10\0i\10\0l\10\0q\10\0\210\1\0\4 GMT\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4(I)I\1\0\25(I)Ljava/lang/String;\1\0\4(I)V\1\0\5(II)I\1\0\26(II)Ljava/lang/String;\1\0\4(J)V\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)I\1\0&(Ljava/lang/String;)Ljava/lang/String;\1\0\25(Ljava/lang/String;)V\1\0\25(Ljava/lang/String;)Z\1\0'(Ljava/lang/String;Ljava/lang/String;)V\1\0\4(Z)V\1\0\1:\1\0\10\1\0\6\1\0\21Already connected\1\0%Can't reset method: already connected\1\0+Can't set streaming mode: already connected\1\0#Chunked encoding streaming mode set\1\0\4Code\1\0\rConstantValue\1\0\22DEFAULT_CHUNK_SIZE\1\0\6DELETE\1\0\nDeprecated\1\0\nExceptions\1\0\37Fixed length streaming mode set\1\0\3GET\1\0\3GMT\1\0\4HEAD\1\0\7HTTP/1.\1\0\rHTTP_ACCEPTED\1\0\20HTTP_BAD_GATEWAY\1\0\17HTTP_BAD_METHOD\1\0\20HTTP_BAD_REQUEST\1\0\23HTTP_CLIENT_TIMEOUT\1\0\rHTTP_CONFLICT\1\0\fHTTP_CREATED\1\0\25HTTP_ENTITY_TOO_LARGE\1\0\16HTTP_FORBIDDEN\1\0\24HTTP_GATEWAY_TIMEOUT\1\0\tHTTP_GONE\1\0\23HTTP_INTERNAL_ERROR\1\0\24HTTP_LENGTH_REQUIRED\1\0\17HTTP_MOVED_PERM\1\0\17HTTP_MOVED_TEMP\1\0\20HTTP_MULT_CHOICE\1\0\23HTTP"..., 6381) = 6381 30059 lseek(4, 55420666, SEEK_SET) = 55420666 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B\256\217\nb\273\3\0\0\273\3\0\0*\0\0\0", 30) = 30 30059 lseek(4, 55420738, SEEK_SET) = 55420738 30059 read(4, "\312\376\272\276\0\0\0003\0.\1\0\3()V\1\0\4(I)V\1\0\25(Ljava/lang/String;)V\1\0\6\1\0\4Code\1\0\1I\1\0\17LineNumberTable\1\0\22Ljava/lang/String;\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\1Z\1\0\ndefaultSet\1\0\ndefaultVal\1\0\ngetInteger\1\0\21java/lang/Integer\1\0\20java/lang/Object\1\0\36java/security/PrivilegedAction\1\0\3run\1\0$sun/security/action/GetIntegerAction\1\0\7theProp\7\0\20\7\0\21\7\0\22\7\0\24\1\0GLjava/lang/Object;Ljava/security/PrivilegedAction;\1\0\25()Ljava/lang/Integer;\1\0\24()Ljava/lang/Object;\1\0\26(Ljava/lang/String;I)V\1\0'(Ljava/lang/String;)Ljava/lang/Integer;\f\0\16\0\6\f\0\r\0\f\f\0\25\0\10\f\0\4\0\1\f\0\4\0\2\f\0\23\0\33\f\0\17\0\36\t\0\31\0\37\t\0\31\0 \t\0\31\0!\n\0\26\0#\n\0\26\0%\n\0\27\0\"\n\0\31\0$\1\0\25GetIntegerAction.java\0!\0\31\0\27\0\1\0\30\0\3\0\2\0\25\0\10\0\0\0\2\0\16\0\6\0\0\0\2\0\r\0\f\0\0\0\4\0\1\0\4\0\3\0\1\0\5\0\0\0003\0\2\0\2\0\0\0\17*\267\0+*\3\265\0'*+\265\0(\261\0\0\0\1\0\7\0\0\0\22\0\4\0\0\0N\0\4\0F\0\t\0O\0\16\0P\0\1\0\4\0\35\0\1\0\5\0\0\0E\0\2\0\3\0\0\0\31*\267\0+*\3\265\0'*+\265\0(*\34\265\0&*\4\265\0'\261\0\0\0\1\0\7\0\0\0\32\0\6\0\0\0Y\0\4\0F\0\t\0Z\0\16\0[\0\23\0\\\0\30\0]\0\1\0\23\0\33\0\1\0\5\0\0\0S\0\3\0\2\0\0\0!*\264\0(\270\0*L+\307\0\26*\264\0'\231\0\17\273\0\26Y*\264\0&\267\0)\260+\260\0\0\0\2\0\v\0\0\0\10\0\1\374\0\37\7\0\26\0\7\0\0\0\22\0\4\0\0\0l\0\10\0m\0\23\0n\0\37\0o\20A\0\23\0\34\0\1\0\5\0\0\0\35\0\1\0\1\0\0\0\5*\266\0,\260\0\0\0\1\0\7\0\0\0\6\0\1\0\0\0B\0\2\0\n\0\0\0\2\0-\0\t\0\0\0\2\0\32", 955) = 955 30059 lseek(4, 51019490, SEEK_SET) = 51019490 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\304\261\203w\261\22\0\0\261\22\0\0%\0\0\0", 30) = 30 30059 lseek(4, 51019557, SEEK_SET) = 51019557 30059 read(4, "\312\376\272\276\0\0\0003\0\305\10\0\26\10\0\27\10\0\33\10\0\34\10\0\35\10\0\37\10\0#\10\0$\10\0(\10\0)\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\25(I)Ljava/lang/String;\1\0\4(I)V\1\0\4(I)Z\1\0\25(Ljava/lang/Object;)V\1\0\25(Ljava/lang/String;)V\1\0\10\1\0\6\1\0\3ALL\1\0\6CONFIG\1\0\4Code\1\0\rConstantValue\1\0\5Entry\1\0\4FINE\1\0\5FINER\1\0\6FINEST\1\0\1I\1\0\4INFO\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\22Ljava/lang/String;\1\0\3OFF\1\0\6SEVERE\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\7UNKNOWN\1\0\7WARNING\1\0\1Z\1\0\naccess$000\1\0\fbooleanValue\1\0\6config\1\0\fdefaultLevel\1\0\5doLog\1\0\fdoPrivileged\1\0\16effectiveLevel\1\0\10entrySet\1\0\4fine\1\0\5finer\1\0\6finest\1\0\3get\1\0\10getLevel\1\0\fgetLevelName\1\0\tgetLogger\1\0\7getName\1\0\10getValue\1\0\7hasNext\1\0\4info\1\0\visAvailable\1\0\tisEnabled\1\0\nisLoggable\1\0\10iterator\1\0\21java/lang/Boolean\1\0\20java/lang/Object\1\0\20java/lang/String\1\0\33java/lang/ref/WeakReference\1\0\36java/security/AccessController\1\0\21java/util/HashMap\1\0\22java/util/Iterator\1\0\rjava/util/Map\1\0\23java/util/Map$Entry\1\0\rjava/util/Set\1\0\6logger\1\0\7loggers\1\0\16loggingEnabled\1\0\4name\1\0\rnewJavaLogger\1\0\4next\1\0\3put\1\0\27redirectPlatformLoggers\1\0\10setLevel\1\0\6severe\1\0\37su"..., 4785) = 4785 30059 lseek(4, 51011405, SEEK_SET) = 51011405 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\7j\301\214\222\3\0\0\222\3\0\0'\0\0\0", 30) = 30 30059 lseek(4, 51011474, SEEK_SET) = 51011474 30059 read(4, "\312\376\272\276\0\0\0003\0-\10\0\16\10\0\17\1\0\3()V\1\0&(Ljava/lang/String;)Ljava/lang/String;\1\0\6\1\0\4Code\1\0\17EnclosingMethod\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\vgetProperty\1\0\36java.util.logging.config.class\1\0\35java.util.logging.config.file\1\0\21java/lang/Boolean\1\0\20java/lang/Object\1\0\20java/lang/String\1\0\20java/lang/System\1\0\36java/security/PrivilegedAction\1\0\3run\1\0\37sun/util/logging/PlatformLogger\1\0!sun/util/logging/PlatformLogger$1\1\0\7valueOf\7\0\20\7\0\21\7\0\22\7\0\23\7\0\24\7\0\26\7\0\27\1\0GLjava/lang/Object;Ljava/security/PrivilegedAction;\1\0\25()Ljava/lang/Boolean;\1\0\26(Z)Ljava/lang/Boolean;\1\0\24()Ljava/lang/Object;\f\0\5\0\3\f\0\25\0!\f\0\30\0\"\f\0\r\0\4\n\0\31\0&\n\0\32\0$\n\0\34\0'\n\0\37\0%\1\0\23PlatformLogger.java\0000\0\37\0\32\0\1\0\35\0\0\0\3\0\0\0\5\0\3\0\1\0\6\0\0\0\35\0\1\0\1\0\0\0\5*\267\0)\261\0\0\0\1\0\t\0\0\0\6\0\1\0\0\0i\0\1\0\25\0!\0\1\0\6\0\0\0Q\0\1\0\3\0\0\0\35\22\1\270\0*L\22\2\270\0*M+\307\0\7,\306\0\7\4\247\0\4\3\270\0(\260\0\0\0\2\0\f\0\0\0\16\0\3\375\0\24\7\0\33\7\0\33\3@\1\0\t\0\0\0\16\0\3\0\0\0k\0\6\0l\0\f\0m\20A\0\25\0#\0\1\0\6\0\0\0\35\0\1\0\1\0\0\0\5*\266\0+\260\0\0\0\1\0\t\0\0\0\6\0\1\0\0\0i\0\4\0\v\0\0\0\2\0,\0\7\0\0\0\4\0\36\0\0\0\n\0\0\0\2\0 \0\10\0\0\0\n\0\1\0\37\0\0\0\0\0\10", 914) = 914 30059 lseek(4, 51015683, SEEK_SET) = 51015683 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\311\355\304\203\220\16\0\0\220\16\0\0001\0\0\0", 30) = 30 30059 lseek(4, 51015762, SEEK_SET) = 51015762 30059 read(4, "\312\376\272\276\0\0\0003\0\274\3\177\377\377\377\10\0\t\10\0\n\10\0M\10\0T\10\0U\10\0V\10\0W\1\0\0\1\0\1 \1\0\3()I\1\0\3()J\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\25(I)Ljava/lang/String;\1\0\4(I)V\1\0\4(I)Z\1\0\4(J)V\1\0\23(Ljava/io/Writer;)V\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)I\1\0\25(Ljava/lang/String;)V\1\0\10\1\0\6\1\0\4Code\1\0\1I\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\25Ljava/io/PrintStream;\1\0\22Ljava/lang/String;\1\0\nSourceFile\1\0\rStackMapTable\1\0\naccess$000\1\0\6append\1\0\5close\1\0\21currentTimeMillis\1\0\4date\1\0\rdefaultStream\1\0\5doLog\1\0\16effectiveLevel\1\0\6equals\1\0\3err\1\0\6format\1\0\rformatMessage\1\0\fformatString\1\0\rgetCallerInfo\1\0\fgetClassName\1\0\21getJavaLangAccess\1\0\10getLevel\1\0\rgetMethodName\1\0\17getSimpleFormat\1\0\22getStackTraceDepth\1\0\24getStackTraceElement\1\0\7indexOf\1\0\tisEnabled\1\0\nisLoggable\1\0\23java/io/PrintStream\1\0\23java/io/PrintWriter\1\0\24java/io/StringWriter\1\0\23java/lang/Exception\1\0\20java/lang/Object\1\0\33java/lang/StackTraceElement\1\0\20java/lang/String\1\0\27java/lang/StringBuilder\1\0\20java/lang/System\1\0\23java/lang/Throwable\1\0\27java/text/MessageFormat\1\0\16java/util/Date\1\0\nlevelValue\1\0\4name\1\0\5print\1\0\17printSt"..., 3728) = 3728 30059 lseek(4, 51008068, SEEK_SET) = 51008068 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305Bb_x\347\306\f\0\0\306\f\0\0%\0\0\0", 30) = 30 30059 lseek(4, 51008135, SEEK_SET) = 51008135 30059 read(4, "\312\376\272\276\0\0\0003\0}\10\0\5\10\0\6\10\0\31\10\0*\1\0\0\1\0A%1$tb %1$td, %1$tY %1$tl:%1$tM:%1$tS %1$Tp %2$s%n%4$s: %5$s%6$s%n\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0&(Ljava/lang/Object;)Ljava/lang/String;\1\0\25(Ljava/lang/Object;)V\1\0'(Ljava/lang/Object;Ljava/lang/Object;)Z\1\0&(Ljava/lang/String;)Ljava/lang/Object;\1\0&(Ljava/lang/String;)Ljava/lang/String;\1\0'(Ljava/lang/String;Ljava/lang/String;)V\1\0\10\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\16DEFAULT_FORMAT\1\0\17FORMAT_PROP_KEY\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\22Ljava/lang/String;\1\0\17Should not here\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\fdoPrivileged\1\0\17ensureAvailable\1\0\6format\1\0\10getLevel\1\0\fgetLevelName\1\0\tgetLogger\1\0\16getLoggerLevel\1\0\16getLoggerNames\1\0\23getParentLoggerName\1\0\vgetProperty\1\0\17getSimpleFormat\1\0\visAvailable\1\0\nisLoggable\1\0(java.util.logging.SimpleFormatter.format\1\0\30java/lang/AssertionError\1\0\"java/lang/IllegalArgumentException\1\0\20java/lang/Object\1\0\20java/lang/String\1\0\36java/security/AccessController\1\0\16java/util/Date\1\0\3log\1\0\nparseLevel\1\0\5proxy\1\0\10setLevel\1\0\16setLoggerLevel\1\0\35su"..., 3270) = 3270 30059 lseek(4, 51005822, SEEK_SET) = 51005822 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B\2\324\354\2223\5\0\0003\5\0\0'\0\0\0", 30) = 30 30059 lseek(4, 51005891, SEEK_SET) = 51005891 30059 read(4, "\312\376\272\276\0\0\0003\0@\10\0\t\10\0\22\1\0\3()V\1\0\25(Ljava/lang/Object;)V\1\0\4(Z)V\1\0\6\1\0\4Code\1\0\17EnclosingMethod\1\0\10INSTANCE\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\7forName\1\0\3get\1\0\20getDeclaredField\1\0\"java.util.logging.LoggingProxyImpl\1\0\30java/lang/AssertionError\1\0\17java/lang/Class\1\0 java/lang/ClassNotFoundException\1\0 java/lang/IllegalAccessException\1\0\36java/lang/NoSuchFieldException\1\0\20java/lang/Object\1\0\27java/lang/reflect/Field\1\0\36java/security/PrivilegedAction\1\0\3run\1\0\rsetAccessible\1\0\35sun/util/logging/LoggingProxy\1\0\37sun/util/logging/LoggingSupport\1\0!sun/util/logging/LoggingSupport$1\7\0\23\7\0\24\7\0\25\7\0\26\7\0\27\7\0\30\7\0\31\7\0\32\7\0\35\7\0\36\7\0\37\1\0SLjava/lang/Object;Ljava/security/PrivilegedAction;\1\0\24()Ljava/lang/Object;\1\0!()Lsun/util/logging/LoggingProxy;\1\0&(Ljava/lang/Object;)Ljava/lang/Object;\1\0-(Ljava/lang/String;)Ljava/lang/reflect/Field;\1\0=(Ljava/lang/String;ZLjava/lang/ClassLoader;)Ljava/lang/Class;\f\0\6\0\3\f\0\34\0\5\f\0\6\0\4\f\0\33\0-\f\0\20\0.\f\0\21\0/\f\0\17\0000\n\0 \0003\n\0!\0006\n\0!\0007\n\0%\0001\n\0&\0002\n\0&\0005\n\0*\0004\1\0\23Lo"..., 1331) = 1331 30059 lseek(4, 30537618, SEEK_SET) = 30537618 30059 read(4, "PK\3\4\n\0\0\0\0\0P\246\305B;m^?\237\v\0\0\237\v\0\0(\0\0\0", 30) = 30 30059 lseek(4, 30537688, SEEK_SET) = 30537688 30059 read(4, "\312\376\272\276\0\0\0003\0y\10\0\3\10\0\24\1\0\1\"\1\0\24()Ljava/lang/String;\1\0\3()V\1\0&(Ljava/lang/Object;)Ljava/lang/String;\1\0'(Ljava/lang/Object;Ljava/lang/Object;)Z\1\0&(Ljava/lang/String;)Ljava/lang/Object;\1\0&(Ljava/lang/String;)Ljava/lang/String;\1\0\25(Ljava/lang/String;)V\1\0'(Ljava/lang/String;Ljava/lang/String;)V\1\0\10\1\0\6\1\0\4Code\1\0\10INSTANCE\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\17Unknown level \"\1\0\6append\1\0\tfindLevel\1\0\10getLevel\1\0\fgetLevelName\1\0\rgetLogManager\1\0\tgetLogger\1\0\16getLoggerLevel\1\0\16getLoggerNames\1\0\20getLoggingMXBean\1\0\23getParentLoggerName\1\0\21getPlatformLogger\1\0\vgetProperty\1\0\nisLoggable\1\0\"java/lang/IllegalArgumentException\1\0\20java/lang/Object\1\0\27java/lang/StringBuilder\1\0\27java/util/logging/Level\1\0\34java/util/logging/LogManager\1\0\30java/util/logging/Logger\1\0\37java/util/logging/LoggingMXBean\1\0\"java/util/logging/LoggingProxyImpl\1\0\3log\1\0\nparseLevel\1\0\10setLevel\1\0\16setLoggerLevel\1\0\35sun/util/logging/LoggingProxy\1\0\10toString\7\0\"\7\0#\7\0$\7\0%\7\0&\7\0'\7\0(\7\0)\7\0.\1\0\37Lsun/util/logging/LoggingProxy;\1\0\22()Ljava/util/List"..., 2975) = 2975 30059 lseek(4, 51004763, SEEK_SET) = 51004763 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305BF\3\231\37\342\3\0\0\342\3\0\0#\0\0\0", 30) = 30 30059 lseek(4, 51004828, SEEK_SET) = 51004828 30059 read(4, "\312\376\272\276\0\0\0003\0 \1\0&(Ljava/lang/Object;)Ljava/lang/String;\1\0'(Ljava/lang/Object;Ljava/lang/Object;)Z\1\0&(Ljava/lang/String;)Ljava/lang/Object;\1\0&(Ljava/lang/String;)Ljava/lang/String;\1\0'(Ljava/lang/String;Ljava/lang/String;)V\1\0\tSignature\1\0\nSourceFile\1\0\10getLevel\1\0\fgetLevelName\1\0\tgetLogger\1\0\16getLoggerLevel\1\0\16getLoggerNames\1\0\23getParentLoggerName\1\0\vgetProperty\1\0\nisLoggable\1\0\20java/lang/Object\1\0\3log\1\0\nparseLevel\1\0\10setLevel\1\0\16setLoggerLevel\1\0\35sun/util/logging/LoggingProxy\7\0\20\7\0\25\1\0\22()Ljava/util/List;\1\0&(Ljava/lang/Object;)Ljava/lang/Object;\1\0'(Ljava/lang/Object;Ljava/lang/Object;)V\1\0&()Ljava/util/List;\1\0009(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/String;)V\1\0L(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/String;[Ljava/lang/Object;)V\1\0N(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/String;Ljava/lang/Throwable;)V\1\0\21LoggingProxy.java\6\1\0\27\0\26\0\0\0\0\0\16\4\1\0\n\0\3\0\0\4\1\0\10\0\31\0\0\4\1\0\23\0\32\0\0\4\1\0\17\0\2\0\0\4\1\0\21\0\34\0\0\4\1\0\21\0\36\0\0\4\201\0\21\0\35\0\0\4\1\0\f\0\30\0\1\0\6\0\0\0\2\0\33\4\1\0\v\0\4\0\0\4\1\0\24\0\5\0\0\4\1\0\r\0\4\0\0\4\1\0\22\0\3\0\0\4\1\0\t\0\1\0\0\4\1\0\16\0\4\0\0\0\1\0\7\0\0\0\2\0\37", 994) = 994 30059 lseek(4, 51007222, SEEK_SET) = 51007222 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B\354\375;N\t\3\0\0\t\3\0\0'\0\0\0", 30) = 30 30059 lseek(4, 51007291, SEEK_SET) = 51007291 30059 read(4, "\312\376\272\276\0\0\0003\0%\10\0\16\1\0\24()Ljava/lang/String;\1\0\3()V\1\0&(Ljava/lang/String;)Ljava/lang/String;\1\0\6\1\0\4Code\1\0\17EnclosingMethod\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\vgetProperty\1\0\17getSimpleFormat\1\0(java.util.logging.SimpleFormatter.format\1\0\20java/lang/Object\1\0\20java/lang/System\1\0\36java/security/PrivilegedAction\1\0\3run\1\0\37sun/util/logging/LoggingSupport\1\0!sun/util/logging/LoggingSupport$2\7\0\17\7\0\20\7\0\21\7\0\23\7\0\24\1\0FLjava/lang/Object;Ljava/security/PrivilegedAction;\1\0\24()Ljava/lang/Object;\1\0\25(Z)Ljava/lang/String;\f\0\5\0\3\f\0\22\0\2\f\0\r\0\34\f\0\f\0\4\n\0\25\0\35\n\0\26\0 \n\0\31\0\36\1\0\23LoggingSupport.java\0000\0\31\0\25\0\1\0\27\0\0\0\3\0\0\0\5\0\3\0\1\0\6\0\0\0\35\0\1\0\1\0\0\0\5*\267\0!\261\0\0\0\1\0\t\0\0\0\6\0\1\0\0\0\234\0\1\0\22\0\2\0\1\0\6\0\0\0\36\0\1\0\1\0\0\0\6\22\1\270\0\"\260\0\0\0\1\0\t\0\0\0\6\0\1\0\0\0\236\20A\0\22\0\33\0\1\0\6\0\0\0\35\0\1\0\1\0\0\0\5*\266\0#\260\0\0\0\1\0\t\0\0\0\6\0\1\0\0\0\234\0\4\0\v\0\0\0\2\0$\0\7\0\0\0\4\0\30\0\37\0\n\0\0\0\2\0\32\0\10\0\0\0\n\0\1\0\31\0\0\0\0\0\10", 777) = 777 30059 lseek(4, 55732858, SEEK_SET) = 55732858 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\254\222\25o\0340\0\0\0340\0\0\24\0\0\0", 30) = 30 30059 lseek(4, 55732908, SEEK_SET) = 55732908 30059 read(4, "\312\376\272\276\0\0\0003\1\317\3\200\0\0\0\3\357O\212\0\3\0\0\352`\3\20\260v\0\10\0(\10\0D\10\0S\10\0U\10\0V\10\0Y\10\0_\10\0a\10\0c\10\0e\10\0g\10\0k\10\0\212\10\0\216\10\0\244\10\0\245\10\0\246\10\0\250\10\0\251\10\0\252\10\0\254\10\0\255\10\0\260\10\0\261\10\0\263\10\0\264\10\0\265\10\0\271\10\0\272\10\0\320\10\0\321\10\0\327\10\0\330\10\0\331\10\0\332\1\0\4 GMT\1\0\3()I\1\0\3()J\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4(C)C\1\0\4(I)C\1\0\4(I)V\1\0\5(II)I\1\0\5(II)V\1\0\6(III)V\1\0\10(IIIII)V\1\0\t(IIIIII)J\1\0\t(IIIIII)V\1\0\4(J)I\1\0\4(J)V\1\0\6(J[I)I\1\0\25(Ljava/lang/Object;)I\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)V\1\0\10\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\4Date\1\0\nDeprecated\1\0\nExceptions\1\0\3GMT\1\0\1I\1\0\fInnerClasses\1\0\1J\1\0\17LineNumberTable\1\0\22Ljava/util/Locale;\1\0\31RuntimeVisibleAnnotations\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\2US\1\0\3UTC\1\0\2[I\1\0\23[Ljava/lang/String;\1\0\5after\1\0\2am\1\0\6append\1\0\5april\1\0\6august\1\0\6before\1\0\5cdate\1\0\3cdt\1\0\6charAt\1\0\5clear\1\0\5clone\1\0\tcompareTo\1\0\rconvertToAbbr\1\0\3cst\1\0\21currentTimeMillis\1\0\10december\1\0\23defaultCenturyStart\1\0\3edt\1\0\6equals\1\0\3est\1\0\10fastTime\1\0\10february\1\0\vfloorDivide\1\0\7forName\1\0\6format\1\0\6friday\1\0\4gcal\1\0\17getCalendarDate\1\0\21getCalendarSystem\1\0\7getDate\1\0\23getDateTimeInstance\1\0\6getDay\1\0\rgetDayOfMonth\1\0\fgetDayOfWeek\1\0\rgetDe"..., 12316) = 12316 30059 lseek(4, 55729047, SEEK_SET) = 55729047 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B:\31\3046\237\16\0\0\237\16\0\0&\0\0\0", 30) = 30 30059 lseek(4, 55729115, SEEK_SET) = 55729115 30059 read(4, "\312\376\272\276\0\0\0003\0\240\10\0\25\10\0\26\10\0\31\10\0002\10\0005\10\0006\10\0@\10\0K\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\4(I)V\1\0\25(Ljava/lang/Object;)Z\1\0%(Ljava/lang/String;)Ljava/lang/Class;\1\0\25(Ljava/lang/String;)Z\1\0\10\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\22GREGORIAN_INSTANCE\1\0\tGregorian\1\0\16JulianCalendar\1\0\17LineNumberTable\1\0\22Ljava/lang/String;\1\0\26LocalGregorianCalendar\1\0\fPACKAGE_NAME\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\1Z\1\0\23[Ljava/lang/String;\1\0\6append\1\0\tcalendars\1\0\10endsWith\1\0\6equals\1\0\7forName\1\0\3get\1\0\17getCalendarDate\1\0\6getEra\1\0\7getEras\1\0\24getGregorianCalendar\1\0\31getLocalGregorianCalendar\1\0\16getMonthLength\1\0\7getName\1\0\17getNthDayOfWeek\1\0\7getTime\1\0\rgetWeekLength\1\0\rgetYearLength\1\0\25getYearLengthInMonths\1\0\tgregorian\1\0\tinitNames\1\0\vinitialized\1\0\16internal error\1\0\10japanese\1\0\17java/lang/Class\1\0\23java/lang/Exception\1\0\20java/lang/Object\1\0\32java/lang/RuntimeException\1\0\20java/lang/String\1\0\27java/lang/StringBuilder\1\0\23java/lang/Throwable\1\0&java/util/concurrent/ConcurrentHashMap\1\0\"java/util/concurrent/ConcurrentMap\1\0\6julian\1\0\tnamePairs\1\0\5names\1\0\17newCalenda"..., 3743) = 3743 30059 lseek(4, 55727304, SEEK_SET) = 55727304 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305BH\267\241\347\220\6\0\0\220\6\0\0!\0\0\0", 30) = 30 30059 lseek(4, 55727367, SEEK_SET) = 55727367 30059 read(4, "\312\376\272\276\0\0\0003\0009\10\0\16\1\0\3()J\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\6\1\0\4Code\1\0\4Date\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\nSourceFile\1\0\21currentTimeMillis\1\0\17getCalendarDate\1\0\7getName\1\0\tgregorian\1\0\20java/lang/System\1\0\17newCalendarDate\1\0\36sun/util/calendar/BaseCalendar\1\0\33sun/util/calendar/Gregorian\1\0 sun/util/calendar/Gregorian$Date\7\0\17\7\0\21\7\0\22\7\0\23\1\0\27(Ljava/util/TimeZone;)V\1\0\"()Lsun/util/calendar/CalendarDate;\1\0#(J)Lsun/util/calendar/CalendarDate;\1\0$()Lsun/util/calendar/Gregorian$Date;\1\0%(J)Lsun/util/calendar/Gregorian$Date;\1\0007(JLjava/util/TimeZone;)Lsun/util/calendar/CalendarDate;\1\0006(Ljava/util/TimeZone;)Lsun/util/calendar/CalendarDate;\1\0C(JLsun/util/calendar/CalendarDate;)Lsun/util/calendar/CalendarDate;\1\0009(JLjava/util/TimeZone;)Lsun/util/calendar/Gregorian$Date;\1\0008(Ljava/util/TimeZone;)Lsun/util/calendar/Gregorian$Date;\1\0E(JLsun/util/calendar/CalendarDate;)Lsun/util/calendar/Gregorian$Date;\f\0\v\0\2\f\0\5\0\4\f\0\5\0\30\f\0\f\0\33\f\0\20\0\33\f\0\f\0\34\f\0\f\0\37\f\0\f\0 \f\0\20\0!\f\0\f\0\"\n\0\24\0#\n\0\25\0$\n\0\25\0)\n\0\26\0&\n\0\26\0'\n\0\26\0(\n\0\26\0*\n\0\26\0+\n\0\26\0,\n\0\27\0$\n\0\27\0%\1\0\16Gregorian.ja"..., 1680) = 1680 30059 lseek(4, 55719586, SEEK_SET) = 55719586 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\215\345\5\310\344\35\0\0\344\35\0\0$\0\0\0", 30) = 30 30059 lseek(4, 55719652, SEEK_SET) = 55719652 30059 read(4, "\312\376\272\276\0\0\0003\1U\3\200\0\0\0\3\0\0\216\254\3\0\n\371;\3\0\n\372\250\3\0\n\374\25\3\0\n\375\203\3\0\n\376\360\3\0\v\0]\3\0\v\1\312\3\0\v\0038\3\0\v\4\245\3\0\v\6\22\3\0\v\7\177\3\0\v\10\355\3\0\v\nZ\3\0\v\v\307\3\0\v\r4\3\0\v\16\242\3\0\v\20\17\3\0\v\21|\3\0\v\22\351\3\0\v\24W\3\0\v\25\304\3\0\v\0271\3\0\v\30\236\3\0\v\32\f\3\0\v\33y\3\0\v\34\346\3\0\v\36S\3\0\v\37\301\3\0\v!.\3\0\v\"\233\3\0\v$\10\3\0\v%v\3\0\v&\343\3\0\v(P\3\0\v)\275\3\0\v++\3\0\v,\230\3\0\v.\5\3\0\v/r\3\0\v0\340\3\0\v2M\3\0\v3\272\3\0\v5'\3\0\v6\225\3\0\v8\2\3\0\v9o\3\0\v:\334\3\0\v\1\0\6\1\0\31ACCUMULATED_DAYS_IN_MONTH\1\0\36ACCUMULATED_DAYS_IN_MONTH_LEAP\1\0\5APRIL\1\0\6AUGUST\1\0\tBASE_YEAR\1\0\4Code\1\0\rConstantValue\1\0\rDAYS_IN_MONTH\1\0\10DECEMBER\1\0\4Date\1\0\10FEBRUARY\1\0\vFIXED_DATES\1\0\6FRIDAY\1\0\1I\1\0\25Illegal month value: \1\0\fInnerClasses\1\0\7JANUARY\1\0\4JULY\1\0\4JUNE\1\0\17LineNumberTable\1\0\5MARCH\1\0\3MAY\1\0\6MONDAY\1\0\10NOVEMBER\1\0\7OCTOBER\1\0\10SATURDAY\1\0\tSEPTEMBER\1\0\6SUNDAY\1\0\nSourceFile\1\0\rStackMapTable\1\0\10THURSDAY\1\0\7TUESDAY\1\0\tWEDNESDAY\1\0\1Z\1\0\2[I\1\0\6ap"..., 7652) = 7652 30059 lseek(4, 55713666, SEEK_SET) = 55713666 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305BvO\302\327\332\26\0\0\332\26\0\0(\0\0\0", 30) = 30 30059 lseek(4, 55713736, SEEK_SET) = 55713736 30059 read(4, "\312\376\272\276\0\0\0003\0\367\3\0\0\352`\3\0006\356\200\3\5&\\\0\10\0_\1\0\3()I\1\0\3()J\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4(I)V\1\0\4(J)I\1\0\4(J)V\1\0\5(JI)J\1\0\5(JJ)J\1\0\6(J[I)I\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)V\1\0\4(Z)V\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\rDAY_IN_MILLIS\1\0\fEPOCH_OFFSET\1\0\16HOUR_IN_MILLIS\1\0\1I\1\0\17LineNumberTable\1\0\20MINUTE_IN_MILLIS\1\0\20SECOND_IN_MILLIS\1\0\nSourceFile\1\0\rStackMapTable\1\0\2[I\1\0\30[Lsun/util/calendar/Era;\1\0\6append\1\0\tarraycopy\1\0\5clone\1\0\21currentTimeMillis\1\0\6equals\1\0\4eras\1\0\vfloorDivide\1\0\17getCalendarDate\1\0\34getCalendarDateFromFixedDate\1\0\25getDayOfWeekDateAfter\1\0\26getDayOfWeekDateBefore\1\0\32getDayOfWeekDateOnOrBefore\1\0\6getEra\1\0\7getEras\1\0\fgetFixedDate\1\0\10getHours\1\0\tgetMillis\1\0\ngetMinutes\1\0\7getName\1\0\17getNthDayOfWeek\1\0\tgetOffset\1\0\ngetOffsets\1\0\24getOffsetsByStandard\1\0\20getOffsetsByWall\1\0\fgetRawOffset\1\0\ngetSeconds\1\0\7getTime\1\0\fgetTimeOfDay\1\0\21getTimeOfDayValue\1\0\rgetWeekLength\1\0\7getZone\1\0\rgetZoneOffset\1\0\nisLeapYear\1\0\fisNormalized\1\0\16isStandardTime\1\0\"java/lang/IllegalArgumentException\1\0\20java/lang/String\1\0\27java/lang/StringBuilder\1\0\20java/la"..., 5850) = 5850 30059 lseek(4, 43844725, SEEK_SET) = 43844725 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B\213\204z\324\272\4\0\0\272\4\0\0=\0\0\0", 30) = 30 30059 lseek(4, 43844816, SEEK_SET) = 43844816 30059 read(4, "\312\376\272\276\0\0\0003\0003\10\0\f\10\0\r\10\0\20\1\0\7$VALUES\1\0\3()V\1\0\10\1\0\6\1\0\4Code\1\0\26HttpURLConnection.java\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\4NONE\1\0\5SETUP\1\0\tSignature\1\0\nSourceFile\1\0\tTUNNELING\1\0:[Lsun/net/www/protocol/http/HttpURLConnection$TunnelState;\1\0\5clone\1\0\16java/lang/Enum\1\0+sun/net/www/protocol/http/HttpURLConnection\1\0007sun/net/www/protocol/http/HttpURLConnection$TunnelState\1\0\7valueOf\1\0\6values\7\0\21\7\0\23\7\0\24\7\0\25\1\0009Lsun/net/www/protocol/http/HttpURLConnection$TunnelState;\1\0KLjava/lang/Enum;\1\0\24()Ljava/lang/Object;\1\0\26(Ljava/lang/String;I)V\1\0<()[Lsun/net/www/protocol/http/HttpURLConnection$TunnelState;\1\0M(Ljava/lang/String;)Lsun/net/www/protocol/http/HttpURLConnection$TunnelState;\1\0005(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Enum;\f\0\f\0\34\f\0\r\0\34\f\0\20\0\34\f\0\4\0\21\f\0\22\0\36\f\0\7\0\37\f\0\26\0\"\t\0\33\0#\t\0\33\0$\t\0\33\0%\t\0\33\0&\n\0\30\0'\n\0\31\0(\n\0\31\0)\n\0\33\0(\1\0\vTunnelState@0\0\33\0\31\0\0\0\4@\31\0\f\0\34\0\0@\31\0\r\0\34\0\0@\31\0\20\0\34\0\0\20\32\0\4\0\21\0\0\0\4\0\t\0\27\0 \0\1\0\10\0\0\0\"\0\1\0\0\0\0\0\n\262\0-\266\0.\300\0\30\260\0\0\0\1\0\v\0\0\0\6\0\1\0\0\1`\0\t\0\26\0!\0\1\0\10\0\0\0#\0\2\0\1\0\0\0\v\23\0\33*\270\0000\300\0\33\260\0\0\0\1\0\v\0\0"..., 1210) = 1210 30059 lseek(4, 43829025, SEEK_SET) = 43829025 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305BZ@w6|\3\0\0|\3\0\0003\0\0\0", 30) = 30 30059 lseek(4, 43829106, SEEK_SET) = 43829106 30059 read(4, "\312\376\272\276\0\0\0003\0&\1\0\3()V\1\0\6\1\0\4Code\1\0\17EnclosingMethod\1\0\26HttpURLConnection.java\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\ngetDefault\1\0\20java/lang/Object\1\0\26java/net/CookieHandler\1\0\36java/security/PrivilegedAction\1\0\3run\1\0+sun/net/www/protocol/http/HttpURLConnection\1\0-sun/net/www/protocol/http/HttpURLConnection$2\1\0\6this$0\7\0\v\7\0\f\7\0\r\7\0\17\7\0\20\1\0-Lsun/net/www/protocol/http/HttpURLConnection;\1\0LLjava/lang/Object;Ljava/security/PrivilegedAction;\1\0\24()Ljava/lang/Object;\1\0\32()Ljava/net/CookieHandler;\1\0000(Lsun/net/www/protocol/http/HttpURLConnection;)V\1\0D(Ljava/net/URL;Ljava/net/Proxy;Lsun/net/www/protocol/http/Handler;)V\f\0\21\0\27\f\0\2\0\1\f\0\n\0\32\f\0\16\0\32\f\0\2\0\34\t\0\26\0\35\n\0\22\0\36\n\0\23\0\37\n\0\26\0 \0 \0\26\0\22\0\1\0\24\0\1\20\20\0\21\0\27\0\0\0\3\0\0\0\2\0\33\0\1\0\3\0\0\0\"\0\2\0\2\0\0\0\n*+\265\0\"*\267\0#\261\0\0\0\1\0\7\0\0\0\6\0\1\0\0\2\343\0\1\0\16\0\32\0\1\0\3\0\0\0\34\0\1\0\1\0\0\0\4\270\0$\260\0\0\0\1\0\7\0\0\0\6\0\1\0\0\2\345\20A\0\16\0\31\0\1\0\3\0\0\0\35\0\1\0\1\0\0\0\5*\266\0%\260\0\0\0\1\0\7\0\0\0\6\0\1\0\0\2\343\0\4\0\t\0\0\0\2\0\5\0\4\0\0\0\4\0\25\0!\0\10\0\0\0\2\0\30\0\6\0\0\0\n\0\1\0\26\0\0\0\0\0\0", 892) = 892 30059 lseek(4, 28500934, SEEK_SET) = 28500934 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305Bf\264\354\243&\5\0\0&\5\0\0\34\0\0\0", 30) = 30 30059 lseek(4, 28500992, SEEK_SET) = 28500992 30059 read(4, "\312\376\272\276\0\0\0003\0005\1\0\3()V\1\0\6\1\0\4Code\1\0\nExceptions\1\0\34GET_COOKIEHANDLER_PERMISSION\1\0\17LineNumberTable\1\0\34SET_COOKIEHANDLER_PERMISSION\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\17checkPermission\1\0\rcookieHandler\1\0\3get\1\0\ngetDefault\1\0\22getSecurityManager\1\0\23java/io/IOException\1\0\20java/lang/Object\1\0\31java/lang/SecurityManager\1\0\20java/lang/System\1\0\26java/net/CookieHandler\1\0\3put\1\0\nsetDefault\1\0#sun/security/util/SecurityConstants\7\0\20\7\0\21\7\0\22\7\0\23\7\0\24\7\0\27\1\0\30Ljava/net/CookieHandler;\1\0\30Ljava/net/NetPermission;\1\0\35()Ljava/lang/SecurityManager;\1\0\32()Ljava/net/CookieHandler;\1\0\33(Ljava/net/CookieHandler;)V\1\0\35(Ljava/security/Permission;)V\1\0 (Ljava/net/URI;Ljava/util/Map;)V\1\0.(Ljava/net/URI;Ljava/util/Map;)Ljava/util/Map;\1\0X(Ljava/net/URI;Ljava/util/Map;>;)V\1\0\236(Ljava/net/URI;Ljava/util/Map;>;)Ljava/util/Map;>;\f\0\f\0\36\f\0\5\0\37\f\0\7\0\37\f\0\2\0\1\f\0\17\0 \f\0\v\0#\t\0\34\0(\t\0\35\0)\t\0\35\0*\n\0\31\0+\n\0\32\0-\n\0\33\0"..., 1318) = 1318 30059 lseek(4, 43829998, SEEK_SET) = 43829998 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305BI\365\247\25|\3\0\0|\3\0\0003\0\0\0", 30) = 30 30059 lseek(4, 43830079, SEEK_SET) = 43830079 30059 read(4, "\312\376\272\276\0\0\0003\0&\1\0\3()V\1\0\6\1\0\4Code\1\0\17EnclosingMethod\1\0\26HttpURLConnection.java\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\ngetDefault\1\0\20java/lang/Object\1\0\26java/net/ResponseCache\1\0\36java/security/PrivilegedAction\1\0\3run\1\0+sun/net/www/protocol/http/HttpURLConnection\1\0-sun/net/www/protocol/http/HttpURLConnection$3\1\0\6this$0\7\0\v\7\0\f\7\0\r\7\0\17\7\0\20\1\0-Lsun/net/www/protocol/http/HttpURLConnection;\1\0LLjava/lang/Object;Ljava/security/PrivilegedAction;\1\0\24()Ljava/lang/Object;\1\0\32()Ljava/net/ResponseCache;\1\0000(Lsun/net/www/protocol/http/HttpURLConnection;)V\1\0D(Ljava/net/URL;Ljava/net/Proxy;Lsun/net/www/protocol/http/Handler;)V\f\0\21\0\27\f\0\2\0\1\f\0\n\0\32\f\0\16\0\32\f\0\2\0\34\t\0\26\0\35\n\0\22\0\36\n\0\23\0\37\n\0\26\0 \0 \0\26\0\22\0\1\0\24\0\1\20\20\0\21\0\27\0\0\0\3\0\0\0\2\0\33\0\1\0\3\0\0\0\"\0\2\0\2\0\0\0\n*+\265\0\"*\267\0#\261\0\0\0\1\0\7\0\0\0\6\0\1\0\0\2\352\0\1\0\16\0\32\0\1\0\3\0\0\0\34\0\1\0\1\0\0\0\4\270\0$\260\0\0\0\1\0\7\0\0\0\6\0\1\0\0\2\354\20A\0\16\0\31\0\1\0\3\0\0\0\35\0\1\0\1\0\0\0\5*\266\0%\260\0\0\0\1\0\7\0\0\0\6\0\1\0\0\2\352\0\4\0\t\0\0\0\2\0\5\0\4\0\0\0\4\0\25\0!\0\10\0\0\0\2\0\30\0\6\0\0\0\n\0\1\0\26\0\0\0\0\0\0", 892) = 892 30059 lseek(4, 28565336, SEEK_SET) = 28565336 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B\231{a^\343\4\0\0\343\4\0\0\34\0\0\0", 30) = 30 30059 lseek(4, 28565394, SEEK_SET) = 28565394 30059 read(4, "\312\376\272\276\0\0\0003\0004\1\0\3()V\1\0\6\1\0\4Code\1\0\nExceptions\1\0\34GET_RESPONSECACHE_PERMISSION\1\0\17LineNumberTable\1\0\34SET_RESPONSECACHE_PERMISSION\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\17checkPermission\1\0\3get\1\0\ngetDefault\1\0\22getSecurityManager\1\0\23java/io/IOException\1\0\20java/lang/Object\1\0\31java/lang/SecurityManager\1\0\20java/lang/System\1\0\26java/net/ResponseCache\1\0\3put\1\0\nsetDefault\1\0#sun/security/util/SecurityConstants\1\0\20theResponseCache\7\0\17\7\0\20\7\0\21\7\0\22\7\0\23\7\0\26\1\0\30Ljava/net/NetPermission;\1\0\30Ljava/net/ResponseCache;\1\0\35()Ljava/lang/SecurityManager;\1\0\32()Ljava/net/ResponseCache;\1\0\33(Ljava/net/ResponseCache;)V\1\0\35(Ljava/security/Permission;)V\1\0?(Ljava/net/URI;Ljava/net/URLConnection;)Ljava/net/CacheRequest;\1\0I(Ljava/net/URI;Ljava/lang/String;Ljava/util/Map;)Ljava/net/CacheResponse;\1\0\201(Ljava/net/URI;Ljava/lang/String;Ljava/util/Map;>;)Ljava/net/CacheResponse;\f\0\5\0\36\f\0\7\0\36\f\0\27\0\37\f\0\2\0\1\f\0\16\0 \f\0\v\0#\t\0\34\0)\t\0\35\0'\t\0\35\0(\n\0\31\0*\n\0\32\0,\n\0\33\0+\1\0\22ResponseCache.java\4!\0\34\0\31\0\0\0\1\0\n\0\27\0\37\0\0\0\5\0\1\0\2\0\1\0\1\0\3\0\0\0\35\0\1\0"..., 1251) = 1251 30059 lseek(4, 43832206, SEEK_SET) = 43832206 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B\217\357\362\211D\3\0\0D\3\0\0003\0\0\0", 30) = 30 30059 lseek(4, 43832287, SEEK_SET) = 43832287 30059 read(4, "\312\376\272\276\0\0\0003\0&\1\0\3()V\1\0\6\1\0\4Code\1\0\17EnclosingMethod\1\0\26HttpURLConnection.java\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\ngetDefault\1\0\20java/lang/Object\1\0\26java/net/ProxySelector\1\0\36java/security/PrivilegedAction\1\0\fplainConnect\1\0\3run\1\0+sun/net/www/protocol/http/HttpURLConnection\1\0-sun/net/www/protocol/http/HttpURLConnection$5\1\0\6this$0\7\0\v\7\0\f\7\0\r\7\0\20\7\0\21\1\0-Lsun/net/www/protocol/http/HttpURLConnection;\1\0LLjava/lang/Object;Ljava/security/PrivilegedAction;\1\0\24()Ljava/lang/Object;\1\0\32()Ljava/net/ProxySelector;\1\0000(Lsun/net/www/protocol/http/HttpURLConnection;)V\f\0\22\0\30\f\0\2\0\1\f\0\16\0\1\f\0\n\0\33\f\0\17\0\33\t\0\27\0\35\n\0\23\0\36\n\0\24\0 \n\0\27\0!\0 \0\27\0\23\0\1\0\25\0\1\20\20\0\22\0\30\0\0\0\3\0\0\0\2\0\34\0\1\0\3\0\0\0\"\0\2\0\2\0\0\0\n*+\265\0\"*\267\0#\261\0\0\0\1\0\7\0\0\0\6\0\1\0\0\3\223\0\1\0\17\0\33\0\1\0\3\0\0\0\34\0\1\0\1\0\0\0\4\270\0$\260\0\0\0\1\0\7\0\0\0\6\0\1\0\0\3\225\20A\0\17\0\32\0\1\0\3\0\0\0\35\0\1\0\1\0\0\0\5*\266\0%\260\0\0\0\1\0\7\0\0\0\6\0\1\0\0\3\223\0\4\0\t\0\0\0\2\0\5\0\4\0\0\0\4\0\26\0\37\0\10\0\0\0\2\0\31\0\6\0\0\0\n\0\1\0\27\0\0\0\0\0\0", 836) = 836 30059 lseek(4, 56230120, SEEK_SET) = 56230120 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B\223\344\261\226\266\5\0\0\266\5\0\0\34\0\0\0", 30) = 30 30059 lseek(4, 56230178, SEEK_SET) = 56230178 30059 read(4, "\312\376\272\276\0\0\0003\0D\10\0\34\1\0\3()V\1\0%(Ljava/lang/String;)Ljava/lang/Class;\1\0\10\1\0\6\1\0\4Code\1\0\34GET_PROXYSELECTOR_PERMISSION\1\0\17LineNumberTable\1\0\34SET_PROXYSELECTOR_PERMISSION\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\17checkPermission\1\0\rconnectFailed\1\0\7forName\1\0\ngetDefault\1\0\22getSecurityManager\1\0\20isAssignableFrom\1\0\17java/lang/Class\1\0\23java/lang/Exception\1\0\20java/lang/Object\1\0\31java/lang/SecurityManager\1\0\20java/lang/System\1\0\26java/net/ProxySelector\1\0\vnewInstance\1\0\6select\1\0\nsetDefault\1\0 sun.net.spi.DefaultProxySelector\1\0#sun/security/util/SecurityConstants\1\0\20theProxySelector\7\0\23\7\0\24\7\0\25\7\0\26\7\0\27\7\0\30\7\0\35\1\0\30Ljava/net/NetPermission;\1\0\30Ljava/net/ProxySelector;\1\0\24(Ljava/lang/Class;)Z\1\0\24()Ljava/lang/Object;\1\0\35()Ljava/lang/SecurityManager;\1\0\32()Ljava/net/ProxySelector;\1\0\33(Ljava/net/ProxySelector;)V\1\0\35(Ljava/security/Permission;)V\1\0 (Ljava/net/URI;)Ljava/util/List;\1\0>(Ljava/net/URI;Ljava/net/SocketAddress;Ljava/io/IOException;)V\1\0002(Ljava/net/URI;)Ljava/util/List;\f\0\7\0&\f\0\t\0&\f\0\36\0'\f\0\5\0\2\f\0\22\0(\f\0\31\0)\f\0\21\0*\f\0\r\0-"..., 1462) = 1462 30059 lseek(4, 56226392, SEEK_SET) = 56226392 30059 read(4, "PK\3\4\n\0\0\0\0\0A\246\305B\243\275aBL\16\0\0L\16\0\0&\0\0\0", 30) = 30 30059 lseek(4, 56226460, SEEK_SET) = 56226460 30059 read(4, "\312\376\272\276\0\0\0003\0\267\10\0\22\10\0 \10\0*\10\0008\10\0009\10\0;\10\0@\10\0A\10\0C\10\0D\10\0F\10\0G\10\0U\10\0W\10\0X\10\0Z\10\0[\1\0\10 host = \1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4(I)I\1\0\25(I)Ljava/lang/String;\1\0\4(I)V\1\0\26(II)Ljava/lang/String;\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)I\1\0\25(Ljava/lang/String;)V\1\0\25(Ljava/lang/String;)Z\1\0\10\1\0\6\1\0\30Arguments can't be null.\1\0\4Code\1\0\rConstantValue\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\22Ljava/lang/String;\1\0\23SOCKS_PROXY_VERSION\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\22URI can't be null.\1\0\1Z\1\0\23[Ljava/lang/String;\1\0\24[[Ljava/lang/String;\1\0\naccess$000\1\0\naccess$100\1\0\naccess$200\1\0\3add\1\0\6append\1\0\fbooleanValue\1\0\rconnectFailed\1\0\vdefaultPort\1\0\fdoPrivileged\1\0\20equalsIgnoreCase\1\0\3ftp\1\0\tftp.proxy\1\0\17ftpNonProxyInfo\1\0\10ftpProxy\1\0\fgetAuthority\1\0\7getHost\1\0\tgetScheme\1\0\16getSystemProxy\1\0\6gopher\1\0\vgopherProxy\1\0\20hasSystemProxies\1\0\4http\1\0\nhttp.proxy\1\0\20httpNonProxyInfo\1\0\5https\1\0\vhttps.proxy\1\0\7indexOf\1\0\4init\1\0\21java/lang/Boolean\1\0\"java/lang/IllegalArgumentException\1\0\20java/lang/String\1\0\27java/lang/StringBuilder\1\0\16java/net/Proxy\1\0\26j"..., 3660) = 3660 30059 lseek(4, 56225592, SEEK_SET) = 56225592 30059 read(4, "PK\3\4\n\0\0\0\0\0A\246\305B\261\353\3765\332\2\0\0\332\2\0\0(\0\0\0", 30) = 30 30059 lseek(4, 56225662, SEEK_SET) = 56225662 30059 read(4, "\312\376\272\276\0\0\0003\0\"\10\0\v\1\0\3()V\1\0\6\1\0\4Code\1\0\17EnclosingMethod\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\ngetBoolean\1\0\31java.net.useSystemProxies\1\0\20java/lang/Object\1\0\36java/security/PrivilegedAction\1\0\3run\1\0\25sun/net/NetProperties\1\0 sun/net/spi/DefaultProxySelector\1\0\"sun/net/spi/DefaultProxySelector$1\7\0\f\7\0\r\7\0\17\7\0\20\7\0\21\1\0GLjava/lang/Object;Ljava/security/PrivilegedAction;\1\0\25()Ljava/lang/Boolean;\1\0\24()Ljava/lang/Object;\1\0'(Ljava/lang/String;)Ljava/lang/Boolean;\f\0\3\0\2\f\0\16\0\30\f\0\n\0\32\n\0\22\0\33\n\0\24\0\35\n\0\26\0\34\1\0\31DefaultProxySelector.java\0000\0\26\0\22\0\1\0\23\0\0\0\3\0\0\0\3\0\2\0\1\0\4\0\0\0\35\0\1\0\1\0\0\0\5*\267\0\36\261\0\0\0\1\0\7\0\0\0\6\0\1\0\0\0\\\0\1\0\16\0\30\0\1\0\4\0\0\0\36\0\1\0\1\0\0\0\6\22\1\270\0\37\260\0\0\0\1\0\7\0\0\0\6\0\1\0\0\0^\20A\0\16\0\31\0\1\0\4\0\0\0\35\0\1\0\1\0\0\0\5*\266\0 \260\0\0\0\1\0\7\0\0\0\6\0\1\0\0\0\\\0\4\0\t\0\0\0\2\0!\0\5\0\0\0\4\0\25\0\0\0\10\0\0\0\2\0\27\0\6\0\0\0\n\0\1\0\26\0\0\0\0\0\10", 730) = 730 30059 lseek(4, 56223203, SEEK_SET) = 56223203 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B\340\246\222\311\34\t\0\0\34\t\0\0\33\0\0\0", 30) = 30 30059 lseek(4, 56223260, SEEK_SET) = 56223260 30059 read(4, "\312\376\272\276\0\0\0003\0r\10\0\r\10\0\34\10\0,\10\0/\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\4(I)V\1\0&(Ljava/lang/String;)Ljava/lang/String;\1\0\25(Ljava/lang/String;)V\1\0'(Ljava/lang/String;Ljava/lang/String;)V\1\0\10\1\0\6\1\0\27Can't find java.home ??\1\0\4Code\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\nSourceFile\1\0\rStackMapTable\1\0\naccess$000\1\0\5close\1\0\6decode\1\0\fdoPrivileged\1\0\3get\1\0\ngetBoolean\1\0\20getCanonicalPath\1\0\ngetInteger\1\0\vgetProperty\1\0\tjava.home\1\0\33java/io/BufferedInputStream\1\0\fjava/io/File\1\0\27java/io/FileInputStream\1\0\21java/lang/Boolean\1\0\17java/lang/Error\1\0\23java/lang/Exception\1\0\"java/lang/IllegalArgumentException\1\0\21java/lang/Integer\1\0\36java/lang/NullPointerException\1\0\37java/lang/NumberFormatException\1\0\20java/lang/Object\1\0\20java/lang/String\1\0\20java/lang/System\1\0\36java/security/AccessController\1\0\24java/util/Properties\1\0\3lib\1\0\4load\1\0\25loadDefaultProperties\1\0\16net.properties\1\0\5props\1\0\25sun/net/NetProperties\1\0\27sun/net/NetProperties$1\1\0\7valueOf\7\0\35\7\0\36\7\0\37\7\0 \7\0!\7\0\"\7\0#\7\0$\7\0%\7\0&\7\0'\7\0(\7\0)\7\0*\7\0+\7\0001\7\0002\1\0\26Ljava/util/Properties;\1\0\30(Ljava/io/InputStream;)V\1\0'(L"..., 2332) = 2332 30059 lseek(4, 56222546, SEEK_SET) = 56222546 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B\346\271\323\264V\2\0\0V\2\0\0\35\0\0\0", 30) = 30 30059 lseek(4, 56222605, SEEK_SET) = 56222605 30059 read(4, "\312\376\272\276\0\0\0003\0\35\1\0\3()V\1\0\6\1\0\4Code\1\0\17EnclosingMethod\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\naccess$000\1\0\20java/lang/Object\1\0\36java/security/PrivilegedAction\1\0\3run\1\0\25sun/net/NetProperties\1\0\27sun/net/NetProperties$1\7\0\n\7\0\v\7\0\r\7\0\16\1\0DLjava/lang/Object;Ljava/security/PrivilegedAction;\1\0\24()Ljava/lang/Object;\1\0\22()Ljava/lang/Void;\f\0\2\0\1\f\0\t\0\1\f\0\f\0\25\n\0\17\0\26\n\0\21\0\27\n\0\22\0\30\1\0\22NetProperties.java\0000\0\22\0\17\0\1\0\20\0\0\0\3\0\0\0\2\0\1\0\1\0\3\0\0\0\35\0\1\0\1\0\0\0\5*\267\0\31\261\0\0\0\1\0\6\0\0\0\6\0\1\0\0\0-\0\1\0\f\0\25\0\1\0\3\0\0\0!\0\1\0\1\0\0\0\5\270\0\32\1\260\0\0\0\1\0\6\0\0\0\n\0\2\0\0\0/\0\3\0000\20A\0\f\0\24\0\1\0\3\0\0\0\35\0\1\0\1\0\0\0\5*\266\0\33\260\0\0\0\1\0\6\0\0\0\6\0\1\0\0\0-\0\4\0\10\0\0\0\2\0\34\0\4\0\0\0\4\0\21\0\0\0\7\0\0\0\2\0\23\0\5\0\0\0\n\0\1\0\22\0\0\0\0\0\10", 598) = 598 30059 open("/software/jdk1.7.0_25/jre/lib/net.properties", O_RDONLY) = 11 30059 fstat(11, {st_mode=S_IFREG|0755, st_size=3070, ...}) = 0 30059 fcntl(11, F_GETFD) = 0 30059 fcntl(11, F_SETFD, FD_CLOEXEC) = 0 30059 lseek(4, 59439991, SEEK_SET) = 59439991 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305BM\236\343\305\256\7\0\0\256\7\0\0%\0\0\0", 30) = 30 30059 lseek(4, 59440058, SEEK_SET) = 59440058 30059 read(4, "\312\376\272\276\0\0\0003\0I\3\177\377\377\377\1\0\3()I\1\0\3()V\1\0\5([B)I\1\0\5([C)I\1\0\6\1\0\4Code\1\0\nExceptions\1\0\1I\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\nSourceFile\1\0\rStackMapTable\1\0\2[B\1\0\2[C\1\0\tarraycopy\1\0\tinByteBuf\1\0\tinCharBuf\1\0\7inLimit\1\0\5inOff\1\0\10inStream\1\0\23java/io/IOException\1\0\23java/io/InputStream\1\0\16java/io/Reader\1\0\20java/lang/Object\1\0\20java/lang/System\1\0\24java/util/Properties\1\0\37java/util/Properties$LineReader\1\0\7lineBuf\1\0\4read\1\0\10readLine\1\0\6reader\1\0\6this$0\7\0\26\7\0\27\7\0\30\7\0\31\7\0\32\7\0\33\7\0\34\1\0\25Ljava/io/InputStream;\1\0\20Ljava/io/Reader;\1\0\26Ljava/util/Properties;\1\0.(Ljava/util/Properties;Ljava/io/InputStream;)V\1\0)(Ljava/util/Properties;Ljava/io/Reader;)V\1\0*(Ljava/lang/Object;ILjava/lang/Object;II)V\f\0\23\0\t\f\0\24\0\t\f\0\21\0\16\f\0\22\0\17\f\0\35\0\17\f\0\25\0)\f\0 \0*\f\0!\0+\f\0\6\0\3\f\0\36\0\4\f\0\36\0\5\f\0\20\0.\t\0(\0/\t\0(\0000\t\0(\0001\t\0(\0002\t\0(\0003\t\0(\0004\t\0(\0005\t\0(\0006\n\0#\0008\n\0$\0009\n\0%\0007\n\0&\0:\1\0\nLineReader\1\0\17Properties.java\0 \0(\0%\0\0\0\10\0\0\0\21\0\16\0\0\0\0\0\22\0\17\0\0\0\0\0\35\0\17\0\0\0\0\0\23\0\t\0\0\0\0\0\24\0\t\0\0\0\0\0\25\0)\0\0\0\0\0 \0*\0\0\20\20\0!\0+\0\0\0\3\0\1\0\6\0,\0\1\0\7\0\0\0[\0\2\0\3\0\0\0+*+\265\0B*\267\0E*\21\4\0\274\5\265\0?*\3\265\0;*\3\265\0<*,\265\0@*\21 \0\274\10\265\0=\261\0\0\0\1\0\v\0\0\0\36\0\7\0\0\1\223\0\t\1\237\0\22\1\240\0\27\1\241\0\34\1\224\0!\1\225\0*\1\226\0\1\0\6\0-\0\1\0\7\0\0\0[\0\2\0\3\0\0\0+*+\265\0"..., 1966) = 1966 30059 read(11, "############################################################\n# \tDefault Networking Configuration File\n#\n# This file may contain default values for the networking system properties.\n# These values are only used when the system properties are not specified\n# on the command line or set programatically.\n# For now, only the various proxy settings can be configured here.\n############################################################\n\n# Whether or not the DefaultProxySelector will default to System Proxy\n# settings when they do exist.\n# Set it to 'true' to enable this feature and check for platform\n# specific proxy settings\n# Note that the system properties that do explicitely set proxies\n# (like http.proxyHost) do take precedence over the system settings\n# even if java.net.useSystemProxies is set to true.\n \njava.net.useSystemProxies=false\n\n#------------------------------------------------------------------------\n# Proxy configuration for the various protocol handlers.\n# DO NOT uncomment these"..., 8192) = 3070 30059 fstat(11, {st_mode=S_IFREG|0755, st_size=3070, ...}) = 0 30059 lseek(11, 0, SEEK_CUR) = 3070 30059 lseek(11, 0, SEEK_END) = 3070 30059 lseek(11, 3070, SEEK_SET) = 3070 30059 read(11, "", 8192) = 0 30059 close(11) = 0 30059 lseek(4, 56190147, SEEK_SET) = 56190147 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\356lt]W[\0\0W[\0\0\22\0\0\0", 30) = 30 30059 lseek(4, 56190195, SEEK_SET) = 56190195 30059 read(4, "\312\376\272\276\0\0\0003\2\345\10\0\30\10\0\31\10\0\33\10\0:\10\0;\10\0<\10\0=\10\0>\10\0?\10\0@\10\0A\10\0B\10\0C\10\0D\10\0E\10\0F\10\0G\10\0f\10\0\202\10\0\206\10\0\207\10\0\211\10\0\214\1\0\0\1\0\10$,;:@&=+\1\0\23$assertionsDisabled\1\0\1%\1\0\3()B\1\0\3()I\1\0\3()J\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4()[C\1\0\4(C)I\1\0\4(C)Z\1\0\5(CC)B\1\0\5(CC)J\1\0\6(CJJ)Z\1\0\4(I)C\1\0\4(I)I\1\0\25(I)Ljava/lang/String;\1\0\4(I)V\1\0\5(II)I\1\0\26(II)Ljava/lang/String;\1\0\25(Ljava/lang/Object;)I\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)I\1\0&(Ljava/lang/String;)Ljava/lang/String;\1\0,(Ljava/lang/String;)Ljava/lang/StringBuffer;\1\0\25(Ljava/lang/String;)V\1\0\25(Ljava/lang/String;)Z\1\0'(Ljava/lang/String;Ljava/lang/String;)V\1\0\4(Z)V\1\0\7([CII)V\1\0\7([C[I)I\1\0\7([C[I)V\1\0\3+-.\1\0\1-\1\0\t-_.!~*'()\1\0\1.\1\0\5.:@[]\1\0\1/\1\0\2//\1\0\3//[\1\0\1:\1\0\7:@&=+$,\1\0\2;/\1\0\f;/?:@&=+$,[]\1\0\7;:&=+$,\1\0\t;?:@&=+$,\1\0\10\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\nExceptions\1\0\4Form\1\0\7H_ALPHA\1\0\nH_ALPHANUM\1\0\6H_DASH\1\0\7H_DIGIT\1\0\5H_DOT\1\0\tH_ESCAPED\1\0\5H_HEX\1\0\16H_LEFT_BRACKET\1\0\nH_LOWALPHA\1\0\6H_MARK\1\0\6H_PATH\1\0\7H_PCHAR\1\0\nH_REG_NAME\1\0\nH_RESERVED\1\0\10H_SCHEME\1\0\10H_SERVER\1\0\20H_SERVER_PERCENT\1\0\fH_UNRESERVED\1\0\tH_UPALPHA\1\0\6H_URIC\1\0\17H_URIC_NO_SLASH"..., 23383) = 23383 30059 lseek(4, 56181180, SEEK_SET) = 56181180 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305BS[>m\320\"\0\0\320\"\0\0\31\0\0\0", 30) = 30 30059 lseek(4, 56181235, SEEK_SET) = 56181235 30059 read(4, "\312\376\272\276\0\0\0003\1e\10\0)\10\0*\10\0+\10\0,\10\0@\10\0A\10\0B\10\0C\10\0E\10\0F\10\0I\10\0K\10\0L\10\0M\10\0N\10\0O\10\0P\10\0Q\10\0U\10\0V\10\0W\10\0X\10\0\\\10\0\202\10\0\206\10\0\207\10\0\210\10\0\211\10\0\214\10\0\215\10\0\216\10\0\236\10\0\247\10\0\250\10\0\251\10\0\261\10\0\262\10\0\263\10\0\264\10\0\271\1\0\0\1\0\v following \1\0\1#\1\0\1%\1\0\3()I\1\0\3()J\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\4(C)Z\1\0\6(CJJ)Z\1\0\4(I)C\1\0\4(I)I\1\0\5(II)I\1\0\26(II)Ljava/lang/String;\1\0\6(IIC)I\1\0\6(IIC)Z\1\0\7(IIJJ)I\1\0\6(IIZ)I\1\0\25(Ljava/lang/String;)I\1\0\25(Ljava/lang/String;)V\1\0'(Ljava/lang/String;Ljava/lang/String;)V\1\0((Ljava/lang/String;Ljava/lang/String;I)V\1\0\4(Z)V\1\0\1/\1\0\3/?#\1\0\1:\1\0\2::\1\0\6\1\0\2?#\1\0\1@\1\0\4Code\1\0\nExceptions\1\0\tExpected \1\0\1I\1\0\fIPv4 address\1\0\25IPv6 address too long\1\0\26IPv6 address too short\1\0(IPv6 hexadecimal digit sequence too long\1\0\25Illegal character in \1\0\36Illegal character in authority\1\0\35Illegal character in hostname\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\22Ljava/lang/String;\1\0\26Malformed IPv4 address\1\0\26Malformed IPv6 address\1\0\25Malformed escape pair\1\0\25Malformed port number\1\0\nSourceFile\1\0\rStackMapTable\1\0\1Z\1\0\1]\1\0\naccess$002\1\0\naccess$100\1\0\vaccess$1002\1\0\vaccess$1102\1\0\vaccess$1200\1\0\vaccess$1300\1\0\vaccess$1402\1\0\vaccess$"..., 8912) = 8912 30059 mprotect(0x7fb314576000, 8192, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 56221499, SEEK_SET) = 56221499 30059 read(4, "PK\3\4\n\0\0\0\0\0A\246\305B\232\252\324L\306\3\0\0\306\3\0\0003\0\0\0", 30) = 30 30059 lseek(4, 56221580, SEEK_SET) = 56221580 30059 read(4, "\312\376\272\276\0\0\0003\0002\10\0\17\10\0\23\10\0\26\1\0\3()V\1\0\10\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\22Ljava/lang/String;\1\0\nSourceFile\1\0\fdefStringVal\1\0\ndefaultVal\1\0\21ftp.nonProxyHosts\1\0\17ftpNonProxyInfo\1\0\thostsPool\1\0\vhostsSource\1\0\22http.nonProxyHosts\1\0\20httpNonProxyInfo\1\0\20java/lang/Object\1\0#localhost|127.*|[::1]|0.0.0.0|[::0]\1\0\10property\1\0 sun/net/spi/DefaultProxySelector\1\0-sun/net/spi/DefaultProxySelector$NonProxyInfo\7\0\25\7\0\30\7\0\31\1\0\25Lsun/misc/RegexpPool;\1\0/Lsun/net/spi/DefaultProxySelector$NonProxyInfo;\1\0N(Ljava/lang/String;Ljava/lang/String;Lsun/misc/RegexpPool;Ljava/lang/String;)V\f\0\16\0\v\f\0\22\0\v\f\0\27\0\v\f\0\21\0\35\f\0\20\0\36\f\0\24\0\36\f\0\6\0\4\f\0\6\0\37\t\0\34\0 \t\0\34\0!\t\0\34\0\"\t\0\34\0#\t\0\34\0$\t\0\34\0%\n\0\32\0&\n\0\34\0'\1\0\31DefaultProxySelector.java\1\0\fNonProxyInfo\0 \0\34\0\32\0\0\0\7\0\30\0\r\0\v\0\1\0\10\0\0\0\2\0\3\0\0\0\22\0\v\0\0\0\0\0\21\0\35\0\0\0\20\0\27\0\v\0\0\0\20\0\16\0\v\0\0\0\10\0\20\0\36\0\0\0\10\0\24\0\36\0\0\0\2\0\0\0\6\0\37\0\1\0\7\0\0\0F\0\2\0\5\0\0\0\32*\267\0.*+\265\0**,\265\0)*-\265\0+*\31\4\265\0(\261\0\0\0\1\0\n\0\0\0\32\0\6\0\0\0{\0\4\0|\0\t\0}\0\16\0~\0\23\0\177\0\31\0\200\0\10\0\5\0\4\0\1\0\7\0\0\0=\0\6\0\0\0\0\0!\273\0\34Y\22\1\1\1\22\3\267\0/\263\0,\273\0\34Y\22\2\1\1\22\3\267\0/\263\0-\261\0\0\0\1\0\n\0\0\0\n\0\2\0\0\0x\0\20\0y\0\2\0\f\0\0\0\2\0000\0\t\0\0\0\n\0\1\0\34\0\33\0001\0\10", 966) = 966 30059 lseek(4, 43678020, SEEK_SET) = 43678020 30059 read(4, "PK\3\4\n\0\0\0\0\0A\246\305B\323\256z3h\17\0\0h\17\0\0(\0\0\0", 30) = 30 30059 lseek(4, 43678090, SEEK_SET) = 43678090 30059 read(4, "\312\376\272\276\0\0\0003\0\303\10\0\24\10\0\32\10\0C\10\0D\10\0E\10\0S\10\0T\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\25(Ljava/lang/Object;)Z\1\0&(Ljava/lang/String;)Ljava/lang/Object;\1\0&(Ljava/lang/String;)Ljava/lang/String;\1\0\25(Ljava/lang/String;)Z\1\0\6\1\0\4Code\1\0\17EnclosingMethod\1\0\4HTTP\1\0\4Host\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\23Ljava/lang/Boolean;\1\0\22Ljava/lang/String;\1\0\10NO_PROXY\1\0\4Port\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\4TRUE\1\0\4Type\1\0\24[[Ljava/lang/String;\1\0\naccess$000\1\0\naccess$100\1\0\naccess$200\1\0\3add\1\0\6append\1\0\6create\1\0\20createUnresolved\1\0\ndefaultVal\1\0\6equals\1\0\20equalsIgnoreCase\1\0\3get\1\0\ngetInteger\1\0\rhasMoreTokens\1\0\thostsPool\1\0\vhostsSource\1\0\10intValue\1\0\21java/lang/Boolean\1\0\21java/lang/Integer\1\0\20java/lang/Object\1\0\20java/lang/String\1\0\27java/lang/StringBuilder\1\0\23java/lang/Throwable\1\0\32java/net/InetSocketAddress\1\0\16java/net/Proxy\1\0\23java/net/Proxy$Type\1\0\36java/security/PrivilegedAction\1\0\31java/util/StringTokenizer\1\0\6length\1\0\5match\1\0\tnextToken\1\0\10property\1\0\5props\1\0\3run\1\0\6select\1\0\6socket\1\0\5socks\1\0\21socksProxyVersion\1\0\24sun/misc/REException\1\0\23su"..., 3944) = 3944 30059 lseek(4, 56179422, SEEK_SET) = 56179422 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\222\223&~\254\6\0\0\254\6\0\0\24\0\0\0", 30) = 30 30059 lseek(4, 56179472, SEEK_SET) = 56179472 30059 read(4, "\312\376\272\276\0\0\0003\0R\10\0\5\10\0\6\10\0\17\10\0$\1\0\3 @ \1\0 is not compatible with address \1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)V\1\0\10\1\0\6\1\0\4Code\1\0\6DIRECT\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\10NO_PROXY\1\0\nSourceFile\1\0\rStackMapTable\1\0\4Type\1\0\7address\1\0\6append\1\0\6equals\1\0\10hashCode\1\0\"java/lang/IllegalArgumentException\1\0\20java/lang/Object\1\0\27java/lang/StringBuilder\1\0\32java/net/InetSocketAddress\1\0\16java/net/Proxy\1\0\23java/net/Proxy$Type\1\0\26java/net/SocketAddress\1\0\2sa\1\0\10toString\1\0\4type\1\0\5type \7\0\32\7\0\33\7\0\34\7\0\35\7\0\36\7\0\37\7\0 \1\0\20Ljava/net/Proxy;\1\0\25Ljava/net/Proxy$Type;\1\0\30Ljava/net/SocketAddress;\1\0\27()Ljava/net/Proxy$Type;\1\0\32()Ljava/net/SocketAddress;\1\0-(Ljava/lang/Object;)Ljava/lang/StringBuilder;\1\0-(Ljava/lang/String;)Ljava/lang/StringBuilder;\1\0000(Ljava/net/Proxy$Type;Ljava/net/SocketAddress;)V\f\0\22\0,\f\0\17\0-\f\0#\0-\f\0!\0.\f\0\31\0\7\f\0\r\0\t\f\0\30\0\n\f\0\"\0\10\f\0\r\0\v\f\0#\0/\f\0\26\0000\f\0\27\0001\f\0\27\0002\t\0)\0004\t\0)\0006\t\0)\0007\t\0*\0005\n\0%\0<\n\0&\0008\n\0&\0009\n\0&\0:\n\0'\0009\n\0'\0;\n\0'\0?\n\0'\0@\n\0)\0009\n\0)\0=\n\0)\0>\n\0*\0008\1\0\nProxy.java\0!\0)\0&\0\0\0\3\0\2\0#\0-\0\0\0\2\0!\0.\0\0\0\31\0\22\0,\0\0\0\10\0\2\0\r\0\t"..., 1708) = 1708 30059 lseek(4, 56178424, SEEK_SET) = 56178424 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305BUV\342\237\257\3\0\0\257\3\0\0\31\0\0\0", 30) = 30 30059 lseek(4, 56178479, SEEK_SET) = 56178479 30059 read(4, "\312\376\272\276\0\0\0003\0003\10\0\t\10\0\n\10\0\r\1\0\7$VALUES\1\0\3()V\1\0\10\1\0\6\1\0\4Code\1\0\6DIRECT\1\0\4HTTP\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\5SOCKS\1\0\tSignature\1\0\nSourceFile\1\0\4Type\1\0\26[Ljava/net/Proxy$Type;\1\0\5clone\1\0\16java/lang/Enum\1\0\16java/net/Proxy\1\0\23java/net/Proxy$Type\1\0\7valueOf\1\0\6values\7\0\21\7\0\23\7\0\24\7\0\25\1\0\25Ljava/net/Proxy$Type;\1\0'Ljava/lang/Enum;\1\0\24()Ljava/lang/Object;\1\0\26(Ljava/lang/String;I)V\1\0\30()[Ljava/net/Proxy$Type;\1\0)(Ljava/lang/String;)Ljava/net/Proxy$Type;\1\0005(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Enum;\f\0\t\0\34\f\0\n\0\34\f\0\r\0\34\f\0\4\0\21\f\0\22\0\36\f\0\7\0\37\f\0\26\0\"\t\0\33\0#\t\0\33\0$\t\0\33\0%\t\0\33\0&\n\0\30\0'\n\0\31\0(\n\0\31\0)\n\0\33\0(\1\0\nProxy.java@1\0\33\0\31\0\0\0\4@\31\0\t\0\34\0\0@\31\0\n\0\34\0\0@\31\0\r\0\34\0\0\20\32\0\4\0\21\0\0\0\4\0\t\0\27\0 \0\1\0\10\0\0\0\"\0\1\0\0\0\0\0\n\262\0-\266\0.\300\0\30\260\0\0\0\1\0\f\0\0\0\6\0\1\0\0\0-\0\t\0\26\0!\0\1\0\10\0\0\0#\0\2\0\1\0\0\0\v\23\0\33*\270\0000\300\0\33\260\0\0\0\1\0\f\0\0\0\6\0\1\0\0\0-\0\2\0\7\0\37\0\2\0\10\0\0\0\37\0\3\0\3\0\0\0\7*+\34\267\0/\261\0\0\0\1\0\f\0\0\0\6\0\1\0\0\0-\0\16\0\0\0\2\0\5\0\10\0\6\0\5\0\1\0\10\0\0\0e\0\4\0\0\0\0\0A\273\0\33Y\22\1\3\267\0001\263\0*\273\0\33Y\22\2\4\267\0001\263\0+\273\0\33Y\22\3\5\267\0001\263\0,\6\275\0\33Y\3\262\0*SY\4\262\0+SY\5\262\0,S\263\0-\261\0\0\0\1\0\f\0\0\0\22\0\4\0\0\0001\0\r\0005\0\32\0009\0'\0-\0\3\0\17\0\0\0\2\0002\0\16\0\0\0\2\0\35\0\v\0\0\0\n\0\1\0\33\0\32\0\20@\31", 943) = 943 30059 lseek(4, 43727584, SEEK_SET) = 43727584 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B\3269\356\261\220@\0\0\220@\0\0!\0\0\0", 30) = 30 30059 lseek(4, 43727647, SEEK_SET) = 43727647 30059 read(4, "\312\376\272\276\0\0\0003\2\276\10\0!\10\0\"\10\0$\10\0009\10\0:\10\0;\10\0<\10\0?\10\0A\10\0C\10\0E\10\0G\10\0K\10\0M\10\0N\10\0O\10\0V\10\0W\10\0[\10\0^\10\0a\10\0l\10\0p\10\0q\10\0\242\10\0\243\10\0\245\10\0\322\10\0\331\10\0\377\10\1\24\10\1\31\1\0\0\1\0\23 encoding not found\1\0\23$assertionsDisabled\1\0\1(\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4(I)C\1\0\4(I)I\1\0\25(I)Ljava/lang/String;\1\0\4(I)V\1\0\4(I)Z\1\0\26(II)Ljava/lang/String;\1\0\25(Ljava/lang/Object;)V\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)I\1\0&(Ljava/lang/String;)Ljava/lang/String;\1\0,(Ljava/lang/String;)Ljava/lang/StringBuffer;\1\0\25(Ljava/lang/String;)V\1\0\25(Ljava/lang/String;)Z\1\0'(Ljava/lang/String;Ljava/lang/String;)V\1\0\4(Z)V\1\0\7([BII)I\1\0\1)\1\0\1/\1\0\2//\1\0\1:\1\0\10\1\0\6\1\0\7CONNECT\1\0\4Code\1\0\nConnection\1\0\rConstantValue\1\0\fContent-type\1\0\nDeprecated\1\0!Duplicate put to keep alive cache\1\0\nExceptions\1\0\4HEAD\1\0\4HTTP\1\0\rHTTP_CONTINUE\1\0\1I\1\0\30Illegal character in URL\1\0\fInnerClasses\1\0\nKeep-Alive\1\0+KeepAlive stream retrieved from the cache, \1\0\27KeepAlive stream used: \1\0\17LineNumberTable\1\0\25Ljava/io/PrintStream;\1\0\22Ljava/lang/String;\1\0\22Ljava/util/Locale;\1\0\10NO_PROXY\1\0\3New\1\0\4POST\1\0\20Proxy-Connection\1\0\31Runtime"..., 16528) = 16528 30059 mprotect(0x7fb314578000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 43342391, SEEK_SET) = 43342391 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B~\246\276\246?\23\0\0?\23\0\0\33\0\0\0", 30) = 30 30059 lseek(4, 43342448, SEEK_SET) = 43342448 30059 read(4, "\312\376\272\276\0\0\0003\0\334\10\0\r\10\0\27\10\0.\10\0I\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4(I)V\1\0\25(Ljava/lang/String;)V\1\0\25(Ljava/lang/String;)Z\1\0\7([B[B)Z\1\0Q0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_.!~*'();/?:@&=+$,\1\0\10\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\27DEFAULT_CONNECT_TIMEOUT\1\0\24DEFAULT_READ_TIMEOUT\1\0\6DIRECT\1\0\nExceptions\1\0\1I\1\0\tISO8859_1\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\25Ljava/io/PrintStream;\1\0\22Ljava/lang/String;\1\0\10NO_PROXY\1\0\5SOCKS\1\0\nSourceFile\1\0\rStackMapTable\1\0\4Type\1\0\2[I\1\0\23[Ljava/lang/String;\1\0\6append\1\0\5close\1\0\vcloseServer\1\0\7connect\1\0\16connectTimeout\1\0\fcreateSocket\1\0\25defaultConnectTimeout\1\0\20defaultSoTimeout\1\0\tdoConnect\1\0\fdoPrivileged\1\0\10encoding\1\0\22encoding not found\1\0\6equals\1\0\10getBytes\1\0\21getConnectTimeout\1\0\16getInputStream\1\0\17getLocalAddress\1\0\17getOutputStream\1\0\16getReadTimeout\1\0\17isASCIISuperset\1\0\33java/io/BufferedInputStream\1\0\34java/io/BufferedOutputStream\1\0\23java/io/IOException\1\0\23java/io/PrintStream\1\0$java/io/UnsupportedEncodingException\1\0\23java/lang/Exception\1\0\27java/lang/InternalError\1\0\20"..., 4927) = 4927 30059 lseek(4, 43339545, SEEK_SET) = 43339545 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305BT\364>\0359\4\0\0009\4\0\0\35\0\0\0", 30) = 30 30059 lseek(4, 43339604, SEEK_SET) = 43339604 30059 read(4, "\312\376\272\276\0\0\0003\0;\10\0\n\10\0\21\10\0\32\10\0\33\1\0\3()I\1\0\3()V\1\0\6\1\0\4Code\1\0\17EnclosingMethod\1\0\tISO8859_1\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\2[I\1\0\23[Ljava/lang/String;\1\0\rfile.encoding\1\0\ngetInteger\1\0\vgetProperty\1\0\10intValue\1\0\21java/lang/Integer\1\0\20java/lang/Object\1\0\20java/lang/System\1\0\36java/security/PrivilegedAction\1\0\3run\1\0$sun.net.client.defaultConnectTimeout\1\0!sun.net.client.defaultReadTimeout\1\0\25sun/net/NetworkClient\1\0\27sun/net/NetworkClient$1\1\0\10val$encs\1\0\10val$vals\7\0\25\7\0\26\7\0\27\7\0\30\7\0\34\7\0\35\1\0DLjava/lang/Object;Ljava/security/PrivilegedAction;\1\0\24()Ljava/lang/Object;\1\0\30([I[Ljava/lang/String;)V\1\0\22()Ljava/lang/Void;\1\0((Ljava/lang/String;I)Ljava/lang/Integer;\1\0008(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;\f\0\37\0\17\f\0\36\0\20\f\0\24\0\5\f\0\7\0\6\f\0\31\0)\f\0\22\0*\f\0\23\0+\t\0%\0,\t\0%\0-\n\0 \0.\n\0 \0001\n\0!\0/\n\0\"\0002\n\0%\0000\1\0\22NetworkClient.java\0000\0%\0!\0\1\0#\0\2\20\20\0\37\0\17\0\0\20\20\0\36\0\20\0\0\0\3\0\0\0\7\0(\0\1\0\10\0\0\0'\0\2\0\3\0\0\0\17*+\265\0003*,\265\0004*\267\0007\261\0\0\0\1\0\f\0\0\0\6\0\1\0\0\0H\0\1\0\31\0)\0\1\0\10\0\0\0Q\0\4\0\1\0\0\0-*\264\0003\3\22\4\3\270\0006\266\0005O*\264\0003\4\22\3\3\270\0006\266\0005O*\264\0004\3\22\2\22\1\270\0008S\1\260\0\0\0\1\0\f\0\0\0\22\0\4\0\0\0J\0\17\0K\0\36\0L\0+\0M\20A\0\31\0'"..., 1081) = 1081 30059 lseek(4, 43746036, SEEK_SET) = 43746036 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305Be\352\250;\207\21\0\0\207\21\0\0%\0\0\0", 30) = 30 30059 lseek(4, 43746103, SEEK_SET) = 43746103 30059 read(4, "\312\376\272\276\0\0\0003\0\326\10\0&\1\0\3()I\1\0\3()J\1\0\3()V\1\0\3()Z\1\0\4(I)V\1\0\4(J)V\1\0\25(Ljava/lang/Object;)Z\1\0\10\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\nExceptions\1\0\1I\1\0\fInnerClasses\1\0\1J\1\0\23KeepAliveCache.java\1\0\10LIFETIME\1\0\17LineNumberTable\1\0\17MAX_CONNECTIONS\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\naccess$000\1\0\naccess$002\1\0\3add\1\0\5clear\1\0\vcloseServer\1\0\21currentTimeMillis\1\0\fdoPrivileged\1\0\telementAt\1\0\5empty\1\0\3get\1\0\23getKeepAliveTimeout\1\0\21getMaxConnections\1\0\7hasNext\1\0\2hc\1\0\23http.maxConnections\1\0\ridleStartTime\1\0\10intValue\1\0\7isAlive\1\0\10iterator\1\0\23java/io/IOException\1\0 java/io/NotSerializableException\1\0 java/lang/ClassNotFoundException\1\0\21java/lang/Integer\1\0\36java/lang/InterruptedException\1\0\20java/lang/Object\1\0\22java/lang/Runnable\1\0\20java/lang/System\1\0\20java/lang/Thread\1\0\23java/lang/Throwable\1\0\fjava/net/URL\1\0\36java/security/AccessController\1\0\23java/util/ArrayList\1\0\21java/util/HashMap\1\0\22java/util/Iterator\1\0\16java/util/List\1\0\rjava/util/Set\1\0\16keepAliveTimer\1\0\6keySet\1\0\3nap\1\0\4next\1\0\3put\1\0\nreadObject\1\0\6remove\1\0\fremoveVector\1\0\6result\1\0\3run\1\0\20seria"..., 4487) = 4487 30059 mprotect(0x7fb314579000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 43751949, SEEK_SET) = 43751949 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B!\370`\204d\4\0\0d\4\0\0#\0\0\0", 30) = 30 30059 lseek(4, 43752014, SEEK_SET) = 43752014 30059 read(4, "\312\376\272\276\0\0\0003\0B\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\25(Ljava/lang/Object;)Z\1\0\6\1\0\4Code\1\0\1I\1\0\23KeepAliveCache.java\1\0\17LineNumberTable\1\0\22Ljava/lang/Object;\1\0\22Ljava/lang/String;\1\0\nSourceFile\1\0\rStackMapTable\1\0\6append\1\0\6equals\1\0\7getHost\1\0\7getPort\1\0\vgetProtocol\1\0\10hashCode\1\0\4host\1\0\20java/lang/Object\1\0\20java/lang/String\1\0\27java/lang/StringBuilder\1\0\fjava/net/URL\1\0\3obj\1\0\4port\1\0\10protocol\1\0\35sun/net/www/http/KeepAliveKey\1\0\10toString\7\0\25\7\0\26\7\0\27\7\0\30\7\0\34\1\0\34(I)Ljava/lang/StringBuilder;\1\0#(Ljava/net/URL;Ljava/lang/Object;)V\1\0-(Ljava/lang/String;)Ljava/lang/StringBuilder;\f\0\32\0\7\f\0\31\0\n\f\0\24\0\v\f\0\33\0\v\f\0\21\0\1\f\0\23\0\1\f\0\5\0\3\f\0\17\0\4\f\0\20\0\2\f\0\22\0\2\f\0\35\0\2\f\0\16\0#\f\0\16\0%\t\0\"\0&\t\0\"\0'\t\0\"\0(\t\0\"\0)\n\0\36\0+\n\0\36\0,\n\0\37\0+\n\0\37\0-\n\0 \0,\n\0 \0000\n\0 \0001\n\0 \0002\n\0!\0*\n\0!\0.\n\0!\0/\0 \0\"\0\36\0\0\0\4\0\2\0\33\0\v\0\0\0\2\0\24\0\v\0\0\0\2\0\32\0\7\0\0\0\2\0\31\0\n\0\0\0\3\0\1\0\5\0$\0\1\0\6\0\0\0r\0\2\0\3\0\0\0006*\267\0008*\1\265\0006*\1\265\0005*\3\265\0003*\1\265\0004*+\266\0A\265\0006*+\266\0@\265\0005*+\266\0?\265\0003*,\265\0004\261\0\0\0\1\0\t\0\0\0*\0\n\0\0\0012\0\4\1(\0\t\1)\0\16\1*\0\23\1+\0\30\0013\0 \0014\0(\0015\0000\0016\0005\0017\0\1\0\17\0\4\0\1\0\6\0\0\0{\0\2\0\3\0\0\0F+\301\0\"\232\0\5\3\254+\300\0\"M*\264\0005,\264\0005\266\0:\231\0+*\264\0003,\264\0003\240\0 *\264\0006,\264\0006\266\0:\231\0\22*\264\0004,\264\0004\246\0\7\4\247\0\4\3\254\0\0\0\2\0\r\0\0\0\v\0\3\t\374\0:\7\0\"@\1\0\t\0\0\0\22\0\4\0\0\1>\0\7\1?\0\t\1@\0\16\1A\0\1\0"..., 1124) = 1124 30059 lseek(4, 43719928, SEEK_SET) = 43719928 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B\242\330\36\34%\20\0\0%\20\0\0\"\0\0\0", 30) = 30 30059 lseek(4, 43719992, SEEK_SET) = 43719992 30059 read(4, "\312\376\272\276\0\0\0003\0\342\10\0\10\10\0\t\10\0\n\10\0\v\10\0\f\10\0\30\10\0\"\1\0\1\n\1\0\t\n------>\n\1\0\t\n<------\n\1\0\1#\1\0\2%d\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\25(I)Ljava/lang/String;\1\0\4(I)V\1\0\23(Ljava/io/Writer;)V\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)I\1\0\25(Ljava/lang/String;)V\1\0\25(Ljava/lang/String;)Z\1\0\1,\1\0\10\1\0\6\1\0\4Code\1\0\nExceptions\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\5URL: \1\0\1Z\1\0\23[Ljava/lang/String;\1\0\3add\1\0\6append\1\0\10capFiles\1\0\5close\1\0\7compile\1\0\fdoPrivileged\1\0\6exists\1\0\4file\1\0\4find\1\0\5flush\1\0\3get\1\0\ngetCapture\1\0\tgetLogger\1\0\7getName\1\0\10incoming\1\0\7indexOf\1\0\4init\1\0\vinitialized\1\0\7isEmpty\1\0\risInitialized\1\0\26java/io/BufferedReader\1\0\26java/io/BufferedWriter\1\0\fjava/io/File\1\0\35java/io/FileNotFoundException\1\0\22java/io/FileReader\1\0\22java/io/FileWriter\1\0\23java/io/IOException\1\0\17java/lang/Class\1\0\21java/lang/Integer\1\0\20java/lang/Object\1\0\20java/lang/String\1\0\27java/lang/StringBuilder\1\0\23java/lang/Throwable\1\0\fjava/net/URL\1\0\36java/security/AccessController\1\0\23java/util/ArrayList\1\0\20java/util/Random\1\0\27java/util/rege"..., 4133) = 4133 30059 lseek(4, 43719147, SEEK_SET) = 43719147 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B\n=\323,\313\2\0\0\313\2\0\0$\0\0\0", 30) = 30 30059 lseek(4, 43719213, SEEK_SET) = 43719213 30059 read(4, "\312\376\272\276\0\0\0003\0$\10\0\21\1\0\24()Ljava/lang/String;\1\0\3()V\1\0&(Ljava/lang/String;)Ljava/lang/String;\1\0\6\1\0\4Code\1\0\17EnclosingMethod\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\3get\1\0\4init\1\0\20java/lang/Object\1\0\36java/security/PrivilegedAction\1\0\3run\1\0\31sun.net.http.captureRules\1\0\25sun/net/NetProperties\1\0\34sun/net/www/http/HttpCapture\1\0\36sun/net/www/http/HttpCapture$1\7\0\16\7\0\17\7\0\22\7\0\23\7\0\24\1\0FLjava/lang/Object;Ljava/security/PrivilegedAction;\1\0\24()Ljava/lang/Object;\f\0\5\0\3\f\0\r\0\3\f\0\20\0\2\f\0\f\0\4\n\0\25\0\34\n\0\27\0\37\n\0\31\0\36\1\0\20HttpCapture.java\0000\0\31\0\25\0\1\0\26\0\0\0\3\0\0\0\5\0\3\0\1\0\6\0\0\0\35\0\1\0\1\0\0\0\5*\267\0 \261\0\0\0\1\0\t\0\0\0\6\0\1\0\0\0C\0\1\0\20\0\2\0\1\0\6\0\0\0\36\0\1\0\1\0\0\0\6\22\1\270\0!\260\0\0\0\1\0\t\0\0\0\6\0\1\0\0\0E\20A\0\20\0\33\0\1\0\6\0\0\0\35\0\1\0\1\0\0\0\5*\266\0\"\260\0\0\0\1\0\t\0\0\0\6\0\1\0\0\0C\0\4\0\v\0\0\0\2\0#\0\7\0\0\0\4\0\30\0\35\0\n\0\0\0\2\0\32\0\10\0\0\0\n\0\1\0\31\0\0\0\0\0\10", 715) = 715 30059 lseek(4, 56299167, SEEK_SET) = 56299167 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B\364\30\10\0?\10\0@\10\0A\10\0B\10\0F\10\0G\10\0H\10\0J\10\0L\10\0O\10\0Y\10\0Z\10\0[\10\0d\10\0\203\10\0\204\10\0\261\10\0\314\10\0\315\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4(I)V\1\0\6(III)V\1\0\25(Ljava/lang/String;)V\1\0\4(Z)V\1\0\5(ZI)V\1\0\v,localport=\1\0\6,port=\1\0\26: invalid address type\1\0\10\1\0\6\1\0\rAlready bound\1\0\4Code\1\0\nDeprecated\1\0\nExceptions\1\0\fInnerClasses\1\0\rInvalid Proxy\1\0\17LineNumberTable\1\0\22Ljava/lang/Object;\1\0\10NO_PROXY\1\0\31RuntimeVisibleAnnotations\1\0\5SOCKS\1\0\6Socket\1\0 Socket input is already shutdown\1\0\30Socket input is shutdown\1\0\20Socket is closed\1\0\27Socket is not connected\1\0!Socket output is already shutdown\1\0\31Socket output is shutdown\1\0!SocketImpl.connect(addr, timeout)\1\0\fSocket[addr=\1\0\23Socket[unconnected]\1\0\nSourceFile\1\0\rStackMapTable\1\0\4Type\1\0\22Unresolved address\1\0\30Unsupported address type\1\0\31Urgent data not supported\1\0\1Z\1\0\1]\1\0\7address\1\0\21already connected\1\0\17anyLocalAddress\1\0\6append\1\0\4bind\1\0\fbooleanValue\1\0\5bound\1\0\fcheckAddress\1\0\fcheckConnect\1\0\fcheckOldImpl\1\0\17checkSetFactory\1\0\5close\1\0\tcloseLock\1\0\6closed\1\0\7connect\1\0\""..., 13529) = 13529 30059 mprotect(0x7fb31457a000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 56238380, SEEK_SET) = 56238380 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B\f\274Cy\240B\0\0\240B\0\0\36\0\0\0", 30) = 30 30059 lseek(4, 56238440, SEEK_SET) = 56238440 30059 read(4, "\312\376\272\276\0\0\0003\2%\10\0&\10\0009\10\0<\10\0>\10\0A\10\0E\10\0G\10\0H\10\0I\10\0J\10\0K\10\0L\10\0N\10\0O\10\0P\10\0Q\10\0R\10\0S\10\0T\10\0U\10\0V\10\0W\10\0X\10\0Y\10\0Z\10\0[\10\0\\\10\0]\10\0a\10\0b\10\0c\10\0e\10\0g\10\0\324\10\0\334\10\0\345\10\0\347\1\0\0\1\0\23$assertionsDisabled\1\0\3()I\1\0\3()J\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4()[B\1\0\4()[C\1\0\4(I)V\1\0\4(J)I\1\0\25(Ljava/lang/Object;)V\1\0\25(Ljava/lang/String;)I\1\0&(Ljava/lang/String;)Ljava/lang/String;\1\0\25(Ljava/lang/String;)V\1\0\25(Ljava/lang/String;)Z\1\0\5([B)V\1\0\10([BIII)I\1\0\5([C)V\1\0\1:\1\0\10\1\0\6\1\0\35Can't connect to SOCKS proxy:\1\0\4Code\1\0\21Connect timed out\1\0\nExceptions\1\0\1I\1\0\nISO-8859-1\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\22Ljava/lang/String;\1\0!Malformed reply from SOCKS server\1\0\10NO_PROXY\1\0'Reply from SOCKS server badly formatted\1\0+Reply from SOCKS server contains bad status\1\0+Reply from SOCKS server contains wrong code\1\0&Reply from SOCKS server has bad length\1\0(Reply from SOCKS server has bad length: \1\0'Reply from SOCKS server has bad version\1\0\5SOCKS\1\0\35SOCKS : No acceptable methods\1\0\35SOCKS : authentication failed\1\0%SOCKS V4 requires IPv4 only addresses\1\0\33SOCKS authentication faile"..., 17056) = 17056 30059 mprotect(0x7fb31457b000, 8192, PROT_READ|PROT_WRITE) = 0 30059 mprotect(0x7fb31457d000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 56237490, SEEK_SET) = 56237490 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B\0231\242zB\3\0\0B\3\0\0\32\0\0\0", 30) = 30 30059 lseek(4, 56237546, SEEK_SET) = 56237546 30059 read(4, "\312\376\272\276\0\0\0003\0*\1\0\21ADDR_TYPE_NOT_SUP\1\0\4BIND\1\0\21CMD_NOT_SUPPORTED\1\0\7CONNECT\1\0\fCONN_REFUSED\1\0\rConstantValue\1\0\fDEFAULT_PORT\1\0\vDOMAIN_NAME\1\0\17GENERAL_FAILURE\1\0\6GSSAPI\1\0\20HOST_UNREACHABLE\1\0\1I\1\0\4IPV4\1\0\4IPV6\1\0\17NET_UNREACHABLE\1\0\vNOT_ALLOWED\1\0\7NO_AUTH\1\0\nNO_METHODS\1\0\nPROTO_VERS\1\0\vPROTO_VERS4\1\0\nREQUEST_OK\1\0\nSourceFile\1\0\vTTL_EXPIRED\1\0\tUDP_ASSOC\1\0\nUSER_PASSW\1\0\20java/lang/Object\1\0\24java/net/SocksConsts\3\377\377\377\377\3\0\0\0\0\3\0\0\0\1\3\0\0\0\2\3\0\0\0\3\3\0\0\0\4\3\0\0\0\5\3\0\0\0\6\3\0\0\0\7\3\0\0\0\10\3\0\0\0048\7\0\32\7\0\33\1\0\20SocksConsts.java\6\0\0(\0'\0\0\0\26\0\31\0\24\0\f\0\1\0\6\0\0\0\2\0!\0\31\0\23\0\f\0\1\0\6\0\0\0\2\0\"\0\31\0\7\0\f\0\1\0\6\0\0\0\2\0&\0\31\0\21\0\f\0\1\0\6\0\0\0\2\0\35\0\31\0\n\0\f\0\1\0\6\0\0\0\2\0\36\0\31\0\31\0\f\0\1\0\6\0\0\0\2\0\37\0\31\0\22\0\f\0\1\0\6\0\0\0\2\0\34\0\31\0\4\0\f\0\1\0\6\0\0\0\2\0\36\0\31\0\2\0\f\0\1\0\6\0\0\0\2\0\37\0\31\0\30\0\f\0\1\0\6\0\0\0\2\0 \0\31\0\r\0\f\0\1\0\6\0\0\0\2\0\36\0\31\0\10\0\f\0\1\0\6\0\0\0\2\0 \0\31\0\16\0\f\0\1\0\6\0\0\0\2\0!\0\31\0\25\0\f\0\1\0\6\0\0\0\2\0\35\0\31\0\t\0\f\0\1\0\6\0\0\0\2\0\36\0\31\0\20\0\f\0\1\0\6\0\0\0\2\0\37\0\31\0\17\0\f\0\1\0\6\0\0\0\2\0 \0\31\0\v\0\f\0\1\0\6\0\0\0\2\0!\0\31\0\5\0\f\0\1\0\6\0\0\0\2\0\"\0\31\0\27\0\f\0\1\0\6\0\0\0\2\0#\0\31\0\3\0\f\0\1\0\6\0\0\0\2\0$\0\31\0\1\0\f\0\1\0\6\0\0\0\2\0%\0\0\0\1\0\26\0\0\0\2\0)", 834) = 834 30059 lseek(4, 56236380, SEEK_SET) = 56236380 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B\353\243\16\351\32\4\0\0\32\4\0\0\36\0\0\0", 30) = 30 30059 lseek(4, 56236440, SEEK_SET) = 56236440 30059 read(4, "\312\376\272\276\0\0\0003\0.\1\0\3()I\1\0\3()V\1\0\4(I)V\1\0\26(ILjava/lang/Object;)I\1\0\4(Z)V\1\0\10\1\0\6\1\0\4Code\1\0\nExceptions\1\0\17LineNumberTable\1\0\nSourceFile\1\0\2fd\1\0\tinitProto\1\0\23java/io/IOException\1\0 java/net/AbstractPlainSocketImpl\1\0\30java/net/PlainSocketImpl\1\0\30java/net/SocketException\1\0\fsocketAccept\1\0\17socketAvailable\1\0\nsocketBind\1\0\fsocketClose0\1\0\rsocketConnect\1\0\fsocketCreate\1\0\17socketGetOption\1\0\fsocketListen\1\0\24socketSendUrgentData\1\0\17socketSetOption\1\0\16socketShutdown\7\0\16\7\0\17\7\0\20\7\0\21\1\0\30Ljava/io/FileDescriptor;\1\0\33(Ljava/io/FileDescriptor;)V\1\0\27(IZLjava/lang/Object;)V\1\0\32(Ljava/net/InetAddress;I)V\1\0\33(Ljava/net/InetAddress;II)V\1\0\30(Ljava/net/SocketImpl;)V\f\0\f\0!\f\0\7\0\2\f\0\r\0\2\t\0\37\0'\n\0\36\0(\n\0\37\0)\1\0\24PlainSocketImpl.java\0 \0\37\0\36\0\0\0\0\0\17\0\0\0\7\0\2\0\1\0\10\0\0\0\35\0\1\0\1\0\0\0\5*\267\0+\261\0\0\0\1\0\n\0\0\0\6\0\1\0\0\0-\0\0\0\7\0\"\0\1\0\10\0\0\0*\0\2\0\2\0\0\0\n*\267\0+*+\265\0*\261\0\0\0\1\0\n\0\0\0\16\0\3\0\0\0002\0\4\0003\0\t\0004\1\0\0\27\0\5\0\1\0\t\0\0\0\4\0\1\0\35\1\0\0\26\0%\0\1\0\t\0\0\0\4\0\1\0\35\1\0\0\24\0$\0\1\0\t\0\0\0\4\0\1\0\35\1\0\0\31\0\3\0\1\0\t\0\0\0\4\0\1\0\35\1\0\0\22\0&\0\1\0\t\0\0\0\4\0\1\0\35\1\0\0\23\0\1\0\1\0\t\0\0\0\4\0\1\0\35\1\0\0\25\0\5\0\1\0\t\0\0\0\4\0\1\0\35\1\0\0\34\0\3\0\1\0\t\0\0\0\4\0\1\0\35\1\10\0\r\0\2\0\0\1\0\0\33\0#\0\1\0\t\0\0\0\4\0\1\0 \1\0\0\30\0\4\0\1\0\t\0\0\0\4\0\1\0 \1\0\0\32\0\3\0\1\0\t\0\0\0\4\0\1\0\35\0\10\0\6\0\2"..., 1050) = 1050 30059 mprotect(0x7fb31457e000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 28487886, SEEK_SET) = 28487886 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305Bj\272X\30\355)\0\0\355)\0\0&\0\0\0", 30) = 30 30059 lseek(4, 28487954, SEEK_SET) = 28487954 30059 read(4, "\312\376\272\276\0\0\0003\1\203\10\0\36\10\0\37\10\0#\10\0.\10\0/\10\0000\10\0001\10\0004\10\0=\10\0>\10\0?\10\0@\10\0A\10\0B\10\0{\10\0\251\10\0\254\10\0\255\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4(I)V\1\0\26(ILjava/lang/Object;)I\1\0\25(Ljava/lang/String;)V\1\0\4(Z)V\1\0\10\1\0\6\1\0\34AbstractPlainSocketImpl.java\1\0\34Bad parameter for SO_TIMEOUT\1\0\30Bad parameter for option\1\0\24CONNECTION_NOT_RESET\1\0\20CONNECTION_RESET\1\0\30CONNECTION_RESET_PENDING\1\0\25Cannot re-bind socket\1\0\4Code\1\0\rConstantValue\1\0\nExceptions\1\0\5FALSE\1\0\1I\1\0\17LineNumberTable\1\0\23Ljava/lang/Boolean;\1\0\22Ljava/lang/Object;\1\0\7SHUT_RD\1\0\7SHUT_WR\1\0\rSocket Closed\1\0\rSocket closed\1\0\30Socket input is shutdown\1\0\31Socket output is shutdown\1\0\nSourceFile\1\0\rStackMapTable\1\0\16Stream closed.\1\0\1Z\1\0\6accept\1\0\tacquireFD\1\0\4addr\1\0\7address\1\0\rafterUdpClose\1\0\6append\1\0\tavailable\1\0\27bad argument for IP_TOS\1\0\36bad parameter for SO_KEEPALIVE\1\0\36bad parameter for SO_OOBINLINE\1\0\36bad parameter for SO_REUSEADDR\1\0(bad parameter for SO_SNDBUF or SO_RCVBUF\1\0\35bad parameter for TCP_NODELAY\1\0\rbeforeTcpBind\1\0\20beforeTcpConnect\1\0\17beforeUdpCreate\1\0\4bind\1\0\fbooleanValue\1\0\5close\1\0\fclo"..., 10733) = 10733 30059 lseek(4, 56233760, SEEK_SET) = 56233760 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B\21\216\266_\5\n\0\0\5\n\0\0\31\0\0\0", 30) = 30 30059 lseek(4, 56233815, SEEK_SET) = 56233815 30059 read(4, "\312\376\272\276\0\0\0003\0u\10\0\16\10\0\17\10\0\25\10\0\26\10\0\30\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4(I)V\1\0\6(III)V\1\0\25(Ljava/lang/String;)V\1\0\4(Z)V\1\0\v,localport=\1\0\6,port=\1\0\6\1\0\4Code\1\0\nExceptions\1\0\1I\1\0\17LineNumberTable\1\0\27Method not implemented!\1\0\fSocket[addr=\1\0\nSourceFile\1\0\1]\1\0\6accept\1\0\7address\1\0\6append\1\0\tavailable\1\0\4bind\1\0\5close\1\0\7connect\1\0\6create\1\0\2fd\1\0\21getFileDescriptor\1\0\16getInetAddress\1\0\16getInputStream\1\0\fgetLocalPort\1\0\17getOutputStream\1\0\7getPort\1\0\17getServerSocket\1\0\tgetSocket\1\0\23java/io/IOException\1\0\20java/lang/Object\1\0\27java/lang/StringBuilder\1\0\23java/net/SocketImpl\1\0\26java/net/SocketOptions\1\0\6listen\1\0\tlocalport\1\0\4port\1\0\5reset\1\0\16sendUrgentData\1\0\fserverSocket\1\0\31setPerformancePreferences\1\0\17setServerSocket\1\0\tsetSocket\1\0\rshutdownInput\1\0\16shutdownOutput\1\0\6socket\1\0\22supportsUrgentData\1\0\10toString\7\0*\7\0+\7\0,\7\0-\7\0.\1\0\30Ljava/io/FileDescriptor;\1\0\26Ljava/net/InetAddress;\1\0\27Ljava/net/ServerSocket;\1\0\21Ljava/net/Socket;\1\0\32()Ljava/io/FileDescriptor;\1\0\27()Ljava/io/InputStream;\1\0\30()Ljava/io/OutputStream;\1\0\26(Ljava/lang/String;I)V\1\0\34(I)Ljava/lan"..., 2565) = 2565 30059 lseek(4, 56232917, SEEK_SET) = 56232917 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B\327\26x\200\21\3\0\0\21\3\0\0\34\0\0\0", 30) = 30 30059 lseek(4, 56232975, SEEK_SET) = 56232975 30059 read(4, "\312\376\272\276\0\0\0003\0,\1\0\rConstantValue\1\0\nExceptions\1\0\1I\1\0\17IP_MULTICAST_IF\1\0\20IP_MULTICAST_IF2\1\0\21IP_MULTICAST_LOOP\1\0\6IP_TOS\1\0\vSO_BINDADDR\1\0\fSO_BROADCAST\1\0\fSO_KEEPALIVE\1\0\tSO_LINGER\1\0\fSO_OOBINLINE\1\0\tSO_RCVBUF\1\0\fSO_REUSEADDR\1\0\tSO_SNDBUF\1\0\nSO_TIMEOUT\1\0\nSourceFile\1\0\vTCP_NODELAY\1\0\tgetOption\1\0\20java/lang/Object\1\0\30java/net/SocketException\1\0\26java/net/SocketOptions\1\0\tsetOption\3\0\0\0\1\3\0\0\0\3\3\0\0\0\4\3\0\0\0\10\3\0\0\0\17\3\0\0\0\20\3\0\0\0\22\3\0\0\0\37\3\0\0\0 \3\0\0\0\200\3\0\0\20\1\3\0\0\20\2\3\0\0\20\3\3\0\0\20\6\7\0\24\7\0\25\7\0\26\1\0\25(I)Ljava/lang/Object;\1\0\26(ILjava/lang/Object;)V\1\0\22SocketOptions.java\6\1\0(\0&\0\0\0\16\0\31\0\22\0\3\0\1\0\1\0\0\0\2\0\30\0\31\0\10\0\3\0\1\0\1\0\0\0\2\0\34\0\31\0\16\0\3\0\1\0\1\0\0\0\2\0\32\0\31\0\t\0\3\0\1\0\1\0\0\0\2\0 \0\31\0\4\0\3\0\1\0\1\0\0\0\2\0\35\0\31\0\5\0\3\0\1\0\1\0\0\0\2\0\37\0\31\0\6\0\3\0\1\0\1\0\0\0\2\0\36\0\31\0\7\0\3\0\1\0\1\0\0\0\2\0\31\0\31\0\v\0\3\0\1\0\1\0\0\0\2\0!\0\31\0\20\0\3\0\1\0\1\0\0\0\2\0%\0\31\0\17\0\3\0\1\0\1\0\0\0\2\0\"\0\31\0\r\0\3\0\1\0\1\0\0\0\2\0#\0\31\0\n\0\3\0\1\0\1\0\0\0\2\0\33\0\31\0\f\0\3\0\1\0\1\0\0\0\2\0$\0\2\4\1\0\27\0*\0\1\0\2\0\0\0\4\0\1\0'\4\1\0\23\0)\0\1\0\2\0\0\0\4\0\1\0'\0\1\0\21\0\0\0\2\0+", 785) = 785 30059 stat("/software/jdk1.7.0_25/jre/lib/amd64/libnet.so", {st_mode=S_IFREG|0755, st_size=109903, ...}) = 0 30059 mprotect(0x7fb31457f000, 4096, PROT_READ|PROT_WRITE) = 0 30059 socketpair(PF_FILE, SOCK_STREAM, 0, [11, 12]) = 0 30059 shutdown(11, 2 /* send and receive */) = 0 30059 close(12) = 0 30059 lseek(4, 56255791, SEEK_SET) = 56255791 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B\"\347:m)\24\0\0)\24\0\0 \0\0\0", 30) = 30 30059 lseek(4, 56255853, SEEK_SET) = 56255853 30059 read(4, "\312\376\272\276\0\0\0003\0\361\3\0\0\377\377\10\0 \10\0,\10\0<\10\0=\10\0>\10\0?\10\0X\10\0Y\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4(I)I\1\0\4(I)V\1\0\25(Ljava/lang/Object;)Z\1\0&(Ljava/lang/String;)Ljava/lang/String;\1\0\25(Ljava/lang/String;)V\1\0\30(Ljava/lang/Throwable;)V\1\0\10\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\nExceptions\1\0\rFIELDS_OFFSET\1\0\fInnerClasses\1\0\1J\1\0\17LineNumberTable\1\0\21Ljava/lang/Class;\1\0\nSourceFile\1\0\rStackMapTable\1\0\24Stream data required\1\0\4TYPE\1\0\6UNSAFE\1\0\34[Ljava/io/ObjectStreamField;\1\0\naccess$100\1\0\naccess$200\1\0\naccess$300\1\0\naccess$400\1\0\naccess$500\1\0\naccess$600\1\0\naccess$700\1\0\naccess$800\1\0\4addr\1\0\17anyLocalAddress\1\0\6append\1\0\tcheckHost\1\0\tcheckPort\1\0\20createUnresolved\1\0\6equals\1\0\3get\1\0\ngetAddress\1\0\tgetByName\1\0\20getDeclaredField\1\0\vgetHostName\1\0\rgetHostString\1\0\7getPort\1\0\tgetUnsafe\1\0\10hashCode\1\0\6holder\1\0\10hostname\1\0$hostname and addr can't both be null\1\0\26hostname can't be null\1\0\fisUnresolved\1\0\23java/io/IOException\1\0\36java/io/InvalidObjectException\1\0\31java/io/ObjectInputStream\1\0\"java/io/ObjectInputStream$GetField\1\0\32java/io/ObjectOutputStream\1\0#java/io/"..., 5161) = 5161 30059 lseek(4, 56255496, SEEK_SET) = 56255496 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\34\214\356\224\355\0\0\0\355\0\0\0\34\0\0\0", 30) = 30 30059 lseek(4, 56255554, SEEK_SET) = 56255554 30059 read(4, "\312\376\272\276\0\0\0003\0\17\1\0\3()V\1\0\6\1\0\4Code\1\0\17LineNumberTable\1\0\nSourceFile\1\0\24java/io/Serializable\1\0\20java/lang/Object\1\0\26java/net/SocketAddress\7\0\6\7\0\7\7\0\10\f\0\2\0\1\n\0\n\0\f\1\0\22SocketAddress.java\4!\0\v\0\n\0\1\0\t\0\0\0\1\0\1\0\2\0\1\0\1\0\3\0\0\0\35\0\1\0\1\0\0\0\5*\267\0\r\261\0\0\0\1\0\4\0\0\0\6\0\1\0\0\0)\0\1\0\5\0\0\0\2\0\16", 237) = 237 30059 lseek(4, 56283545, SEEK_SET) = 56283545 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305BI\2049\356\316<\0\0\316<\0\0\32\0\0\0", 30) = 30 30059 lseek(4, 56283601, SEEK_SET) = 56283601 30059 read(4, "\312\376\272\276\0\0\0003\2\217\10\0\35\10\0\37\10\0004\10\0005\10\0006\10\0007\10\0:\10\0;\10\0>\10\0Q\10\0V\10\0Z\10\0\\\10\0]\10\0t\10\0{\10\0\226\10\0\230\10\0\232\10\0\233\10\0\237\10\0\254\10\0\255\10\0\340\10\0\347\10\0\372\10\1\3\10\1\6\1\0\0\1\0\23$assertionsDisabled\1\0\1%\1\0\3()I\1\0\3()J\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4()[B\1\0\5(CI)I\1\0\4(I)C\1\0\4(I)I\1\0\25(I)Ljava/lang/String;\1\0\4(I)Z\1\0\26(II)Ljava/lang/String;\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)I\1\0%(Ljava/lang/String;)Ljava/lang/Class;\1\0\25(Ljava/lang/String;)V\1\0\25(Ljava/lang/String;)Z\1\0'(Ljava/lang/String;Ljava/lang/String;)V\1\0\30(Ljava/lang/Throwable;)V\1\0\6([B)[B\1\0\1/\1\0\35:\ncheck impl.prefix property \1\0\2: \1\0\26: invalid IPv6 address\1\0\10\1\0\6\1\0\36Cannot access class: java.net.\1\0\32Class not found: java.net.\1\0\4Code\1\0\rConstantValue\1\0 Could not instantiate: java.net.\1\0\nExceptions\1\0\rFIELDS_OFFSET\1\0\1I\1\0\4IPv4\1\0\4IPv6\1\0\20InetAddress.java\1\0\fInnerClasses\1\0\1J\1\0\17LineNumberTable\1\0\25Ljava/io/PrintStream;\1\0\21Ljava/lang/Class;\1\0\22Ljava/lang/Object;\1\0\22Ljava/lang/String;\1\0\10Negative\1\0\10Positive\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0%System property impl.prefix incorrect\1\0\4TYPE\1\0\4Type\1\0\6UNSAFE\1\0\1Z\1\0\1[\1\0"..., 15566) = 15566 30059 mprotect(0x7fb314580000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 28554560, SEEK_SET) = 28554560 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B\23S\35Q\256\v\0\0\256\v\0\0008\0\0\0", 30) = 30 30059 lseek(4, 28554646, SEEK_SET) = 28554646 30059 read(4, "\312\376\272\276\0\0\0003\0r\10\0\10\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)Z\1\0\1:\1\0\6\1\0\4Code\1\0\1I\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\22Ljava/lang/String;\1\0\nSourceFile\1\0\rStackMapTable\1\0\naccess$100\1\0\naccess$200\1\0\naccess$300\1\0\naccess$400\1\0\naccess$500\1\0\naccess$600\1\0\naccess$700\1\0\naccess$800\1\0\4addr\1\0\6append\1\0\6equals\1\0\20equalsIgnoreCase\1\0\ngetAddress\1\0\16getHostAddress\1\0\vgetHostName\1\0\rgetHostString\1\0\7getPort\1\0\10hashCode\1\0\6holder\1\0\10hostname\1\0\fisUnresolved\1\0\20java/lang/Object\1\0\20java/lang/String\1\0\27java/lang/StringBuilder\1\0\24java/net/InetAddress\1\0&java/net/InetAddress$InetAddressHolder\1\0\32java/net/InetSocketAddress\1\0\34java/net/InetSocketAddress$1\1\0002java/net/InetSocketAddress$InetSocketAddressHolder\1\0\4port\1\0\vtoLowerCase\1\0\10toString\7\0&\7\0'\7\0(\7\0)\7\0*\7\0+\7\0,\7\0-\1\0\26Ljava/net/InetAddress;\1\0\34(I)Ljava/lang/StringBuilder;\1\0\30()Ljava/net/InetAddress;\1\0*()Ljava/net/InetAddress$InetAddressHolder;\1\0007(Ljava/net/InetSocketAddress$InetSocketAddressHolder;)I\1\0007(Ljava/net/InetSocketAddress$InetSocketAd"..., 2990) = 2990 30059 stat("/software/jdk1.7.0_25/jre/lib/amd64/libnet.so", {st_mode=S_IFREG|0755, st_size=109903, ...}) = 0 30059 lseek(4, 28553168, SEEK_SET) = 28553168 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\32Q\365\346\302\2\0\0\302\2\0\0,\0\0\0", 30) = 30 30059 lseek(4, 28553242, SEEK_SET) = 28553242 30059 read(4, "\312\376\272\276\0\0\0003\0\"\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\6\1\0\4Code\1\0\1I\1\0\20InetAddress.java\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\22Ljava/lang/String;\1\0\nSourceFile\1\0\7address\1\0\6family\1\0\ngetAddress\1\0\tgetFamily\1\0\vgetHostName\1\0\10hostName\1\0\20java/lang/Object\1\0\24java/net/InetAddress\1\0&java/net/InetAddress$InetAddressHolder\7\0\22\7\0\23\7\0\24\1\0\27(Ljava/lang/String;II)V\f\0\f\0\6\f\0\r\0\6\f\0\21\0\n\f\0\4\0\3\t\0\27\0\31\t\0\27\0\32\t\0\27\0\33\n\0\25\0\34\1\0\21InetAddressHolder\0 \0\27\0\25\0\0\0\3\0\0\0\21\0\n\0\0\0\0\0\f\0\6\0\0\0\0\0\r\0\6\0\0\0\5\0\0\0\4\0\3\0\1\0\5\0\0\0\35\0\1\0\1\0\0\0\5*\267\0 \261\0\0\0\1\0\t\0\0\0\6\0\1\0\0\0\320\0\0\0\4\0\30\0\1\0\5\0\0\0<\0\2\0\4\0\0\0\24*\267\0 *+\265\0\37*\34\265\0\35*\35\265\0\36\261\0\0\0\1\0\t\0\0\0\26\0\5\0\0\0\322\0\4\0\323\0\t\0\324\0\16\0\325\0\23\0\326\0\0\0\20\0\2\0\1\0\5\0\0\0\35\0\1\0\1\0\0\0\5*\264\0\37\260\0\0\0\1\0\t\0\0\0\6\0\1\0\0\0\333\0\0\0\16\0\1\0\1\0\5\0\0\0\35\0\1\0\1\0\0\0\5*\264\0\35\254\0\0\0\1\0\t\0\0\0\6\0\1\0\0\0\344\0\0\0\17\0\1\0\1\0\5\0\0\0\35\0\1\0\1\0\0\0\5*\264\0\36\254\0\0\0\1\0\t\0\0\0\6\0\1\0\0\0\356\0\2\0\v\0\0\0\2\0\7\0\10\0\0\0\n\0\1\0\27\0\26\0!\0\10", 706) = 706 30059 lseek(4, 56281355, SEEK_SET) = 56281355 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B;e\311\204P\10\0\0P\10\0\0 \0\0\0", 30) = 30 30059 lseek(4, 56281417, SEEK_SET) = 56281417 30059 read(4, "\312\376\272\276\0\0\0003\0n\1\0\3()I\1\0\3()J\1\0\3()V\1\0\3()Z\1\0\25(Ljava/lang/Object;)Z\1\0\6\1\0\4Code\1\0\20InetAddress.java\1\0\fInnerClasses\1\0\1J\1\0\17LineNumberTable\1\0\10Positive\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\4Type\1\0\3add\1\0\5cache\1\0\21currentTimeMillis\1\0\nexpiration\1\0\3get\1\0\vgetNegative\1\0\tgetPolicy\1\0\7hasNext\1\0\10iterator\1\0\20java/lang/Object\1\0\20java/lang/String\1\0\20java/lang/System\1\0\24java/net/InetAddress\1\0\32java/net/InetAddress$Cache\1\0\37java/net/InetAddress$Cache$Type\1\0\37java/net/InetAddress$CacheEntry\1\0\22java/util/Iterator\1\0\27java/util/LinkedHashMap\1\0\24java/util/LinkedList\1\0\rjava/util/Set\1\0\6keySet\1\0\4next\1\0\3put\1\0\6remove\1\0\36sun/net/InetAddressCachePolicy\1\0\4type\5\377\377\377\377\377\377\377\377\7\0\32\7\0\33\7\0\34\7\0\35\7\0\36\7\0\37\7\0 \7\0!\7\0\"\7\0#\7\0$\7\0)\1\0!Ljava/net/InetAddress$Cache$Type;\1\0\31Ljava/util/LinkedHashMap;\1\0NLjava/util/LinkedHashMap;\1\0\24()Ljava/lang/Object;\1\0\33([Ljava/net/InetAddress;J)V\1\0$(Ljava/net/InetAddress$Cache$Type;)V\1\0\26()Ljava/util/Iterator;\1\0\21()Ljava/util/Set;\1\0&(Ljava/lang/Object;)Ljava/lang/Object;\1\0005(Ljava"..., 2128) = 2128 30059 lseek(4, 56280267, SEEK_SET) = 56280267 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\26\34\254\v\375\3\0\0\375\3\0\0%\0\0\0", 30) = 30 30059 lseek(4, 56280334, SEEK_SET) = 56280334 30059 read(4, "\312\376\272\276\0\0\0003\0002\10\0\v\10\0\f\1\0\7$VALUES\1\0\3()V\1\0\10\1\0\6\1\0\4Code\1\0\20InetAddress.java\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\10Negative\1\0\10Positive\1\0\tSignature\1\0\nSourceFile\1\0\4Type\1\0\"[Ljava/net/InetAddress$Cache$Type;\1\0\5clone\1\0\16java/lang/Enum\1\0\24java/net/InetAddress\1\0\32java/net/InetAddress$Cache\1\0\37java/net/InetAddress$Cache$Type\1\0\7valueOf\1\0\6values\7\0\20\7\0\22\7\0\23\7\0\24\7\0\25\1\0!Ljava/net/InetAddress$Cache$Type;\1\0003Ljava/lang/Enum;\1\0\24()Ljava/lang/Object;\1\0\26(Ljava/lang/String;I)V\1\0$()[Ljava/net/InetAddress$Cache$Type;\1\0005(Ljava/lang/String;)Ljava/net/InetAddress$Cache$Type;\1\0005(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Enum;\f\0\v\0\35\f\0\f\0\35\f\0\3\0\20\f\0\21\0\37\f\0\6\0 \f\0\26\0#\t\0\34\0$\t\0\34\0%\t\0\34\0&\n\0\30\0'\n\0\31\0(\n\0\31\0)\n\0\34\0(\1\0\5Cache@0\0\34\0\31\0\0\0\3@\31\0\f\0\35\0\0@\31\0\v\0\35\0\0\20\32\0\3\0\20\0\0\0\4\0\t\0\27\0!\0\1\0\7\0\0\0\"\0\1\0\0\0\0\0\n\262\0,\266\0-\300\0\30\260\0\0\0\1\0\n\0\0\0\6\0\1\0\0\2\334\0\t\0\26\0\"\0\1\0\7\0\0\0#\0\2\0\1\0\0\0\v\23\0\34*\270\0/\300\0\34\260\0\0\0\1\0\n\0\0\0\6\0\1\0\0\2\334\0\2\0\6\0 \0\2\0\7\0\0\0\37\0\3\0\3\0\0\0\7*+\34\267\0.\261\0\0\0\1\0\n\0\0\0\6\0\1\0\0\2\334\0\r\0\0\0\2\0\4\0\10\0\5\0\4\0\1\0\7\0\0\0F\0\4\0\0\0\0\0.\273\0\34Y\22\2\3\267\0000\263\0+\273\0\34Y\22\1\4\267\0000\263\0*\5\275\0\34Y\3\262\0+SY\4\262\0*S\263\0,\261\0\0\0\1\0\n\0\0\0\6\0\1\0\0\2\334\0\3\0\16\0\0\0\2\0\10\0\r\0\0\0\2\0\36\0\t\0"..., 1021) = 1021 30059 lseek(4, 56279656, SEEK_SET) = 56279656 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B\2730\213q \2\0\0 \2\0\0%\0\0\0", 30) = 30 30059 lseek(4, 56279723, SEEK_SET) = 56279723 30059 read(4, "\312\376\272\276\0\0\0003\0 \10\0\7\10\0\10\1\0\3()V\1\0\3()Z\1\0\6\1\0\4Code\1\0\20Inet4AddressImpl\1\0\20Inet6AddressImpl\1\0\20InetAddress.java\1\0\17LineNumberTable\1\0\nSourceFile\1\0\rStackMapTable\1\0\6create\1\0\17isIPv6Supported\1\0\20java/lang/Object\1\0\20java/lang/String\1\0\24java/net/InetAddress\1\0\37java/net/InetAddressImplFactory\1\0\10loadImpl\7\0\17\7\0\20\7\0\21\7\0\22\1\0\34()Ljava/net/InetAddressImpl;\1\0.(Ljava/lang/String;)Ljava/net/InetAddressImpl;\f\0\5\0\3\f\0\16\0\4\f\0\23\0\31\n\0\24\0\32\n\0\26\0\34\n\0\27\0\33\0 \0\27\0\24\0\0\0\0\0\3\0\0\0\5\0\3\0\1\0\6\0\0\0\35\0\1\0\1\0\0\0\5*\267\0\35\261\0\0\0\1\0\n\0\0\0\6\0\1\0\0\6D\0\10\0\r\0\30\0\1\0\6\0\0\0006\0\1\0\0\0\0\0\21\270\0\37\231\0\10\22\2\247\0\5\22\1\270\0\36\260\0\0\0\2\0\f\0\0\0\7\0\2\vA\7\0\25\0\n\0\0\0\6\0\1\0\0\6G\1\10\0\16\0\4\0\0\0\1\0\v\0\0\0\2\0\t", 544) = 544 30059 lseek(4, 28549065, SEEK_SET) = 28549065 30059 read(4, "PK\3\4\n\0\0\0\0\0A\246\305B\206\25\323\254\204\10\0\0\204\10\0\0\37\0\0\0", 30) = 30 30059 lseek(4, 28549126, SEEK_SET) = 28549126 30059 read(4, "\312\376\272\276\0\0\0003\0p\10\0\n\10\0.\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4()[B\1\0\25(Ljava/lang/Object;)Z\1\0\v([BII[BII)Z\1\0\2::\1\0\6\1\0\4Code\1\0\nExceptions\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\22Ljava/lang/String;\1\0\nSourceFile\1\0\rStackMapTable\1\0\1Z\1\0\2[B\1\0\17anyLocalAddress\1\0\ngetAddress\1\0\10getClass\1\0\rgetHostByAddr\1\0\20getInetAddresses\1\0\20getLocalHostName\1\0\ngetScopeId\1\0\17hasMoreElements\1\0\6holder\1\0\10hostName\1\0\nisInstance\1\0\visReachable\1\0\fisReachable0\1\0\23java/io/IOException\1\0\17java/lang/Class\1\0\20java/lang/Object\1\0\31java/net/Inet4AddressImpl\1\0\25java/net/Inet6Address\1\0\31java/net/Inet6AddressImpl\1\0\24java/net/InetAddress\1\0&java/net/InetAddress$InetAddressHolder\1\0\30java/net/InetAddressImpl\1\0\31java/net/NetworkInterface\1\0\35java/net/UnknownHostException\1\0\25java/util/Enumeration\1\0\tlocalhost\1\0\21lookupAllHostAddr\1\0\17loopbackAddress\1\0\vnextElement\1\0\21preferIPv6Address\7\0\24\7\0\"\7\0#\7\0$\7\0%\7\0&\7\0'\7\0(\7\0)\7\0*\7\0+\7\0,\7\0-\1\0\26Ljava/net/InetAddress;\1\0\23()Ljava/lang/Class;\1\0\24()Ljava/lang/Object;\1\0\27(Ljava/lang/String;[B)V\1\0\26([B)Ljava/lang/String;\1\0\30()Ljava/net/InetAddres"..., 2180) = 2180 30059 lseek(4, 56277243, SEEK_SET) = 56277243 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\275b\3\v4\2\0\0004\2\0\0\36\0\0\0", 30) = 30 30059 lseek(4, 56277303, SEEK_SET) = 56277303 30059 read(4, "\312\376\272\276\0\0\0003\0\27\1\0\24()Ljava/lang/String;\1\0\nExceptions\1\0\nSourceFile\1\0\17anyLocalAddress\1\0\rgetHostByAddr\1\0\20getLocalHostName\1\0\visReachable\1\0\23java/io/IOException\1\0\20java/lang/Object\1\0\30java/net/InetAddressImpl\1\0\35java/net/UnknownHostException\1\0\21lookupAllHostAddr\1\0\17loopbackAddress\7\0\10\7\0\t\7\0\n\7\0\v\1\0\26([B)Ljava/lang/String;\1\0\30()Ljava/net/InetAddress;\1\0+(Ljava/lang/String;)[Ljava/net/InetAddress;\1\0006(Ljava/net/InetAddress;ILjava/net/NetworkInterface;I)Z\1\0\24InetAddressImpl.java\6\0\0\20\0\17\0\0\0\0\0\6\4\1\0\6\0\1\0\1\0\2\0\0\0\4\0\1\0\21\4\1\0\f\0\24\0\1\0\2\0\0\0\4\0\1\0\21\4\1\0\5\0\22\0\1\0\2\0\0\0\4\0\1\0\21\4\1\0\4\0\23\0\0\4\1\0\r\0\23\0\0\4\1\0\7\0\25\0\1\0\2\0\0\0\4\0\1\0\16\0\1\0\3\0\0\0\2\0\26", 564) = 564 30059 lseek(4, 56276399, SEEK_SET) = 56276399 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\332\331\262\252\22\3\0\0\22\3\0\0\34\0\0\0", 30) = 30 30059 lseek(4, 56276457, SEEK_SET) = 56276457 30059 read(4, "\312\376\272\276\0\0\0003\0'\1\0\3()V\1\0\6\1\0\4Code\1\0\17EnclosingMethod\1\0\nExceptions\1\0\20InetAddress.java\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\nSourceFile\1\0\20createNSProvider\1\0\rgetHostByAddr\1\0\4impl\1\0\20java/lang/Object\1\0\24java/net/InetAddress\1\0\26java/net/InetAddress$1\1\0\30java/net/InetAddressImpl\1\0\35java/net/UnknownHostException\1\0\21lookupAllHostAddr\1\0#sun/net/spi/nameservice/NameService\7\0\r\7\0\16\7\0\17\7\0\20\7\0\21\7\0\23\1\0\32Ljava/net/InetAddressImpl;\1\0\26([B)Ljava/lang/String;\1\0+(Ljava/lang/String;)[Ljava/net/InetAddress;\1\0009(Ljava/lang/String;)Lsun/net/spi/nameservice/NameService;\f\0\f\0\32\f\0\2\0\1\f\0\v\0\33\f\0\22\0\34\f\0\n\0\35\t\0\25\0\36\n\0\24\0\37\v\0\27\0 \v\0\27\0!\0000\0\26\0\24\0\1\0\31\0\0\0\3\0\0\0\2\0\1\0\1\0\3\0\0\0\35\0\1\0\1\0\0\0\5*\267\0$\261\0\0\0\1\0\10\0\0\0\6\0\1\0\0\3{\0\1\0\22\0\34\0\2\0\3\0\0\0\"\0\2\0\2\0\0\0\n\262\0#+\271\0&\2\0\260\0\0\0\1\0\10\0\0\0\6\0\1\0\0\3~\0\5\0\0\0\4\0\1\0\30\0\1\0\v\0\33\0\2\0\3\0\0\0\"\0\2\0\2\0\0\0\n\262\0#+\271\0%\2\0\260\0\0\0\1\0\10\0\0\0\6\0\1\0\0\3\202\0\5\0\0\0\4\0\1\0\30\0\3\0\t\0\0\0\2\0\6\0\4\0\0\0\4\0\25\0\"\0\7\0\0\0\n\0\1\0\26\0\0\0\0\0\10", 786) = 786 30059 lseek(4, 56276010, SEEK_SET) = 56276010 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B\24^\366\370>\1\0\0>\1\0\0)\0\0\0", 30) = 30 30059 lseek(4, 56276081, SEEK_SET) = 56276081 30059 read(4, "\312\376\272\276\0\0\0003\0\16\1\0\nExceptions\1\0\nSourceFile\1\0\rgetHostByAddr\1\0\20java/lang/Object\1\0\35java/net/UnknownHostException\1\0\21lookupAllHostAddr\1\0#sun/net/spi/nameservice/NameService\7\0\4\7\0\5\7\0\7\1\0\26([B)Ljava/lang/String;\1\0+(Ljava/lang/String;)[Ljava/net/InetAddress;\1\0\20NameService.java\6\1\0\n\0\10\0\0\0\0\0\2\4\1\0\6\0\f\0\1\0\1\0\0\0\4\0\1\0\t\4\1\0\3\0\v\0\1\0\1\0\0\0\4\0\1\0\t\0\1\0\2\0\0\0\2\0\r", 318) = 318 30059 lseek(4, 56277867, SEEK_SET) = 56277867 30059 read(4, "PK\3\4\n\0\0\0\0\0A\246\305B\321\252\35\264\300\6\0\0\300\6\0\0\37\0\0\0", 30) = 30 30059 lseek(4, 56277928, SEEK_SET) = 56277928 30059 read(4, "\312\376\272\276\0\0\0003\0W\10\0\10\10\0&\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4()[B\1\0\t([BI[BI)Z\1\0\0070.0.0.0\1\0\6\1\0\4Code\1\0\nExceptions\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\22Ljava/lang/String;\1\0\nSourceFile\1\0\rStackMapTable\1\0\2[B\1\0\17anyLocalAddress\1\0\ngetAddress\1\0\rgetHostByAddr\1\0\20getInetAddresses\1\0\20getLocalHostName\1\0\17hasMoreElements\1\0\6holder\1\0\10hostName\1\0\visReachable\1\0\fisReachable0\1\0\23java/io/IOException\1\0\20java/lang/Object\1\0\25java/net/Inet4Address\1\0\31java/net/Inet4AddressImpl\1\0\24java/net/InetAddress\1\0&java/net/InetAddress$InetAddressHolder\1\0\30java/net/InetAddressImpl\1\0\31java/net/NetworkInterface\1\0\35java/net/UnknownHostException\1\0\25java/util/Enumeration\1\0\tlocalhost\1\0\21lookupAllHostAddr\1\0\17loopbackAddress\1\0\vnextElement\7\0\21\7\0\34\7\0\35\7\0\36\7\0\37\7\0 \7\0!\7\0\"\7\0#\7\0$\7\0%\1\0\26Ljava/net/InetAddress;\1\0\24()Ljava/lang/Object;\1\0\27(Ljava/lang/String;[B)V\1\0\26([B)Ljava/lang/String;\1\0\30()Ljava/net/InetAddress;\1\0*()Ljava/net/InetAddress$InetAddressHolder;\1\0\31()Ljava/util/Enumeration;\1\0+(Ljava/lang/String;)[Ljava/net/InetAddress;\1\0006(Ljava/net/InetAddress;ILjava/net/Netw"..., 1728) = 1728 30059 lseek(4, 56261014, SEEK_SET) = 56261014 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\367Y\n\232x\f\0\0x\f\0\0\33\0\0\0", 30) = 30 30059 lseek(4, 56261071, SEEK_SET) = 56261071 30059 read(4, "\312\376\272\276\0\0\0003\0l\3\340\0\0\0\3\360\0\0\0\3\377\0\0\0\3\0\0\377\0\3\0\377\0\0\10\0\r\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4()[B\1\0\25(Ljava/lang/Object;)Z\1\0\1.\1\0\10\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\nExceptions\1\0\1I\1\0\10INADDRSZ\1\0\fInnerClasses\1\0\1J\1\0\17LineNumberTable\1\0\22Ljava/lang/String;\1\0\nSourceFile\1\0\rStackMapTable\1\0\2[B\1\0\7address\1\0\6append\1\0\6equals\1\0\6family\1\0\ngetAddress\1\0\16getHostAddress\1\0\vgetHostName\1\0\10hashCode\1\0\6holder\1\0\10hostName\1\0\4init\1\0\21isAnyLocalAddress\1\0\22isLinkLocalAddress\1\0\21isLoopbackAddress\1\0\nisMCGlobal\1\0\risMCLinkLocal\1\0\risMCNodeLocal\1\0\fisMCOrgLocal\1\0\risMCSiteLocal\1\0\22isMulticastAddress\1\0\22isSiteLocalAddress\1\0\35java/io/ObjectStreamException\1\0\20java/lang/String\1\0\27java/lang/StringBuilder\1\0\25java/net/Inet4Address\1\0\24java/net/InetAddress\1\0&java/net/InetAddress$InetAddressHolder\1\0\10loopback\1\0\23numericToTextFormat\1\0\20serialVersionUID\1\0\10toString\1\0\fwriteReplace\3\0\0\0\4\3\177\0\0\1\5-\233W\257\237\343\353\333\7\0\33\7\0001\7\0002\7\0003\7\0004\7\0005\7\0006\1\0\24()Ljava/lang/Object;\1\0\26(Ljava/lang/String;I)V\1\0\27(Ljava/lang/String;[B)V\1\0\26([B)Ljava/lang/String;\1\0\34(I)Ljava/lang/StringBuilder;\1\0*()Ljava/n"..., 3192) = 3192 30059 mprotect(0x7fb314581000, 8192, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 53104573, SEEK_SET) = 53104573 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B\227$\252\253\364\10\0\0\364\10\0\0$\0\0\0", 30) = 30 30059 lseek(4, 53104639, SEEK_SET) = 53104639 30059 read(4, "\312\376\272\276\0\0\0003\0b\10\0\32\10\0001\10\0002\1\0\3()I\1\0\3()V\1\0\4(I)V\1\0\5(II)V\1\0\25(Ljava/lang/String;)V\1\0\10\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\20DEFAULT_POSITIVE\1\0\7FOREVER\1\0\1I\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\22Ljava/lang/String;\1\0\5NEVER\1\0\nSourceFile\1\0\rStackMapTable\1\0\1Z\1\0\vcachePolicy\1\0\17cachePolicyProp\1\0\27cachePolicyPropFallback\1\0%can't make InetAddress cache more lax\1\0\ncheckValue\1\0\fdoPrivileged\1\0\3get\1\0\vgetNegative\1\0\22getSecurityManager\1\0\10intValue\1\0\21java/lang/Integer\1\0\37java/lang/NumberFormatException\1\0\20java/lang/Object\1\0\33java/lang/SecurityException\1\0\20java/lang/String\1\0\20java/lang/System\1\0\36java/security/AccessController\1\0\23negativeCachePolicy\1\0\27negativeCachePolicyProp\1\0\37negativeCachePolicyPropFallback\1\0!networkaddress.cache.negative.ttl\1\0\30networkaddress.cache.ttl\1\0\23propertyNegativeSet\1\0\vpropertySet\1\0\vsetIfNotSet\1\0\23setNegativeIfNotSet\1\0\35sun.net.inetaddr.negative.ttl\1\0\24sun.net.inetaddr.ttl\1\0\36sun/net/InetAddressCachePolicy\1\0 sun/net/InetAddressCachePolicy$1\1\0 sun/net/InetAddressCachePolicy$2\1\0$sun/security/action/GetIntege"..., 2292) = 2292 30059 mprotect(0x7fb314583000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 53103779, SEEK_SET) = 53103779 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B\37\10\"\256\326\2\0\0\326\2\0\0&\0\0\0", 30) = 30 30059 lseek(4, 53103847, SEEK_SET) = 53103847 30059 read(4, "\312\376\272\276\0\0\0003\0\"\10\0\20\1\0\24()Ljava/lang/String;\1\0\3()V\1\0&(Ljava/lang/String;)Ljava/lang/String;\1\0\6\1\0\4Code\1\0\17EnclosingMethod\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\vgetProperty\1\0\20java/lang/Object\1\0\36java/security/PrivilegedAction\1\0\26java/security/Security\1\0\30networkaddress.cache.ttl\1\0\3run\1\0\36sun/net/InetAddressCachePolicy\1\0 sun/net/InetAddressCachePolicy$1\7\0\r\7\0\16\7\0\17\7\0\22\7\0\23\1\0FLjava/lang/Object;Ljava/security/PrivilegedAction;\1\0\24()Ljava/lang/Object;\f\0\5\0\3\f\0\21\0\2\f\0\f\0\4\n\0\24\0\33\n\0\26\0\35\n\0\30\0\34\1\0\33InetAddressCachePolicy.java\0000\0\30\0\24\0\1\0\25\0\0\0\3\0\0\0\5\0\3\0\1\0\6\0\0\0\35\0\1\0\1\0\0\0\5*\267\0\36\261\0\0\0\1\0\t\0\0\0\6\0\1\0\0\0\\\0\1\0\21\0\2\0\1\0\6\0\0\0\36\0\1\0\1\0\0\0\6\22\1\270\0\37\260\0\0\0\1\0\t\0\0\0\6\0\1\0\0\0^\20A\0\21\0\32\0\1\0\6\0\0\0\35\0\1\0\1\0\0\0\5*\266\0 \260\0\0\0\1\0\t\0\0\0\6\0\1\0\0\0\\\0\4\0\v\0\0\0\2\0!\0\7\0\0\0\4\0\27\0\0\0\n\0\0\0\2\0\31\0\10\0\0\0\n\0\1\0\30\0\0\0\0\0\10", 726) = 726 30059 lseek(4, 56508033, SEEK_SET) = 56508033 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B\337]XD;8\0\0;8\0\0\34\0\0\0", 30) = 30 30059 lseek(4, 56508091, SEEK_SET) = 56508091 30059 read(4, "\312\376\272\276\0\0\0003\0027\10\0-\10\0.\10\0?\10\0B\10\0C\10\0D\10\0I\10\0K\10\0L\10\0R\10\0S\10\0`\10\0a\10\0b\10\0j\10\0x\10\0\206\10\0\216\10\0\217\10\0\220\10\0\221\10\0\274\10\0\301\10\0\302\10\0\303\10\0\307\10\0\314\10\0\317\10\0\321\10\0\322\10\0\323\10\0\324\10\0\325\10\0\326\10\0\327\10\0\330\10\0\334\10\0\342\10\0\343\10\0\344\10\0\357\10\0\360\10\0\361\10\0\362\1\0\0\1\0\1 \1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4(I)I\1\0\25(I)Ljava/lang/String;\1\0\4(I)V\1\0\26(II)Ljava/lang/String;\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)I\1\0%(Ljava/lang/String;)Ljava/lang/Class;\1\0&(Ljava/lang/String;)Ljava/lang/String;\1\0\25(Ljava/lang/String;)V\1\0\25(Ljava/lang/String;)Z\1\0'(Ljava/lang/String;Ljava/lang/String;)V\1\0\4(Z)V\1\0\1.\1\0\10\1\0\6\1\0\1=\1\0\4Alg.\1\0\nAlg.Alias.\1\0\4Code\1\0\nDeprecated\1\0\tEMPTY_SET\1\0\nExceptions\1\0\rImplementedIn\1\0\fInnerClasses\1\0\16Invalid filter\1\0\7KeySize\1\0\17LineNumberTable\1\0\22Ljava/lang/String;\1\0\31RuntimeVisibleAnnotations\1\0\tSignature\1\0\nSourceFile\1\0\3Spi\1\0\23Spi class not found\1\0\rStackMapTable\1\0\23[Ljava/lang/Object;\1\0\31[Ljava/security/Provider;\1\0\naccess$000\1\0\3add\1\0\vaddProvider\1\0\6append\1\0\5check\1\0\17checkPermission\1\0\23checkSecurityAccess\1\0\tclassName\1\0\5close\1\0\36com.sun.crypto.provider.SunJCE\1\0%com.sun.net.ssl.internal.ssl.Provider\1"..., 14395) = 14395 30059 mprotect(0x7fb314584000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 56507378, SEEK_SET) = 56507378 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305Bl{\16,S\2\0\0S\2\0\0\36\0\0\0", 30) = 30 30059 lseek(4, 56507438, SEEK_SET) = 56507438 30059 read(4, "\312\376\272\276\0\0\0003\0\35\1\0\3()V\1\0\6\1\0\4Code\1\0\17EnclosingMethod\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\naccess$000\1\0\20java/lang/Object\1\0\36java/security/PrivilegedAction\1\0\26java/security/Security\1\0\30java/security/Security$1\1\0\3run\7\0\n\7\0\v\7\0\f\7\0\r\1\0DLjava/lang/Object;Ljava/security/PrivilegedAction;\1\0\24()Ljava/lang/Object;\1\0\22()Ljava/lang/Void;\f\0\2\0\1\f\0\t\0\1\f\0\16\0\25\n\0\17\0\26\n\0\21\0\27\n\0\22\0\30\1\0\rSecurity.java\0000\0\22\0\17\0\1\0\20\0\0\0\3\0\0\0\2\0\1\0\1\0\3\0\0\0\35\0\1\0\1\0\0\0\5*\267\0\31\261\0\0\0\1\0\6\0\0\0\6\0\1\0\0\0C\0\1\0\16\0\25\0\1\0\3\0\0\0!\0\1\0\1\0\0\0\5\270\0\32\1\260\0\0\0\1\0\6\0\0\0\n\0\2\0\0\0E\0\3\0F\20A\0\16\0\24\0\1\0\3\0\0\0\35\0\1\0\1\0\0\0\5*\266\0\33\260\0\0\0\1\0\6\0\0\0\6\0\1\0\0\0C\0\4\0\10\0\0\0\2\0\34\0\4\0\0\0\4\0\21\0\0\0\7\0\0\0\2\0\23\0\5\0\0\0\n\0\1\0\22\0\0\0\0\0\10", 595) = 595 30059 stat("/software/jdk1.7.0_25/jre/lib/security/java.security", {st_mode=S_IFREG|0644, st_size=17511, ...}) = 0 30059 open("/software/jdk1.7.0_25/jre/lib/security/java.security", O_RDONLY) = 12 30059 fstat(12, {st_mode=S_IFREG|0644, st_size=17511, ...}) = 0 30059 fcntl(12, F_GETFD) = 0 30059 fcntl(12, F_SETFD, FD_CLOEXEC) = 0 30059 read(12, "#\n# This is the \"master security properties file\".\n#\n# In this file, various security properties are set for use by\n# java.security classes. This is where users can statically register\n# Cryptography Package Providers (\"providers\" for short). The term\n# \"provider\" refers to a package or set of packages that supply a\n# concrete implementation of a subset of the cryptography aspects of\n# the Java Security API. A provider may, for example, implement one or\n# more digital signature algorithms or message digest algorithms.\n#\n# Each provider must implement a subclass of the Provider class.\n# To register a provider in this master security properties file,\n# specify the Provider subclass name and priority in the format\n#\n# security.provider.=\n#\n# This declares a provider, and specifies its preference\n# order n. The preference order is the order in which providers are\n# searched for requested algorithms (when no specific provider is\n# requested). The order is 1-based; 1 is the "..., 8192) = 8192 30059 futex(0x7fb31443af54, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x7fb31443af50, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1}) = 1 30087 <... futex resumed> ) = 0 30087 futex(0x7fb31443af28, FUTEX_WAKE_PRIVATE, 1 30059 read(12, 30087 <... futex resumed> ) = 0 30059 <... read resumed> "ust manager factory algorithms for\n# the javax.net.ssl package.\n#\nssl.KeyManagerFactory.algorithm=SunX509\nssl.TrustManagerFactory.algorithm=PKIX\n\n#\n# The Java-level namelookup cache policy for successful lookups:\n#\n# any negative value: caching forever\n# any positive value: the number of seconds to cache an address for\n# zero: do not cache\n#\n# default value is forever (FOREVER). For security reasons, this\n# caching is made forever when a security manager is set. When a security\n# manager is not set, the default behavior in this implementation\n# is to cache for 30 seconds.\n#\n# NOTE: setting this to anything other than the default value can have\n# serious security implications. Do not set it unless\n# you are sure you are not exposed to DNS spoofing attack.\n#\n#networkaddress.cache.ttl=-1\n\n# The Java-level namelookup cache policy for failed lookups:\n#\n# any negative value: cache forever\n# any positive value: the number of seconds to cache negative lookup results\n# zero: do not "..., 8192) = 8192 30087 futex(0x7fb31443d954, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x7fb31443d950, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1} 30088 <... futex resumed> ) = 0 30087 <... futex resumed> ) = 1 30088 futex(0x7fb31443d928, FUTEX_WAIT_PRIVATE, 2, NULL 30087 futex(0x7fb31443d928, FUTEX_WAKE_PRIVATE, 1 30088 <... futex resumed> ) = -1 EAGAIN (Resource temporarily unavailable) 30087 <... futex resumed> ) = 0 30088 futex(0x7fb31443d928, FUTEX_WAKE_PRIVATE, 1) = 0 30088 futex(0x7fb31443d954, FUTEX_WAIT_PRIVATE, 19, NULL 30059 read(12, "Algorithms=MD2\n\n# Algorithm restrictions for Secure Socket Layer/Transport Layer Security\n# (SSL/TLS) processing\n#\n# In some environments, certain algorithms or key lengths may be undesirable\n# when using SSL/TLS. This section describes the mechanism for disabling\n# algorithms during SSL/TLS security parameters negotiation, including cipher\n# suites selection, peer authentication and key exchange mechanisms.\n#\n# For PKI-based peer authentication and key exchange mechanisms, this list\n# of disabled algorithms will also be checked during certification path\n# building and validation, including algorithms used in certificates, as\n# well as revocation information such as CRLs and signed OCSP Responses.\n# This is in addition to the jdk.certpath.disabledAlgorithms property above.\n#\n# See the specification of \"jdk.certpath.disabledAlgorithms\" for the\n# syntax of the disabled algorithm string.\n#\n# Note: This property is currently used by Oracle's JSSE implementation.\n# It is not guaranteed to "..., 8192) = 1127 30059 fstat(12, {st_mode=S_IFREG|0644, st_size=17511, ...}) = 0 30059 lseek(12, 0, SEEK_CUR) = 17511 30059 lseek(12, 0, SEEK_END) = 17511 30059 lseek(12, 17511, SEEK_SET) = 17511 30059 read(12, "", 8192) = 0 30059 close(12) = 0 30059 lseek(4, 53102976, SEEK_SET) = 53102976 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305BR\177;\331\337\2\0\0\337\2\0\0&\0\0\0", 30) = 30 30059 lseek(4, 53103044, SEEK_SET) = 53103044 30059 read(4, "\312\376\272\276\0\0\0003\0\"\10\0\20\1\0\24()Ljava/lang/String;\1\0\3()V\1\0&(Ljava/lang/String;)Ljava/lang/String;\1\0\6\1\0\4Code\1\0\17EnclosingMethod\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\vgetProperty\1\0\20java/lang/Object\1\0\36java/security/PrivilegedAction\1\0\26java/security/Security\1\0!networkaddress.cache.negative.ttl\1\0\3run\1\0\36sun/net/InetAddressCachePolicy\1\0 sun/net/InetAddressCachePolicy$2\7\0\r\7\0\16\7\0\17\7\0\22\7\0\23\1\0FLjava/lang/Object;Ljava/security/PrivilegedAction;\1\0\24()Ljava/lang/Object;\f\0\5\0\3\f\0\21\0\2\f\0\f\0\4\n\0\24\0\33\n\0\26\0\35\n\0\30\0\34\1\0\33InetAddressCachePolicy.java\0000\0\30\0\24\0\1\0\25\0\0\0\3\0\0\0\5\0\3\0\1\0\6\0\0\0\35\0\1\0\1\0\0\0\5*\267\0\36\261\0\0\0\1\0\t\0\0\0\6\0\1\0\0\0\200\0\1\0\21\0\2\0\1\0\6\0\0\0\36\0\1\0\1\0\0\0\6\22\1\270\0\37\260\0\0\0\1\0\t\0\0\0\6\0\1\0\0\0\202\20A\0\21\0\32\0\1\0\6\0\0\0\35\0\1\0\1\0\0\0\5*\266\0 \260\0\0\0\1\0\t\0\0\0\6\0\1\0\0\0\200\0\4\0\v\0\0\0\2\0!\0\7\0\0\0\4\0\27\0\0\0\n\0\0\0\2\0\31\0\10\0\0\0\n\0\1\0\30\0\0\0\0\0\10", 735) = 735 30059 lseek(4, 59682638, SEEK_SET) = 59682638 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\233\v\365>y\3\0\0y\3\0\0)\0\0\0", 30) = 30 30059 lseek(4, 59682709, SEEK_SET) = 59682709 30059 read(4, "\312\376\272\276\0\0\0003\0*\1\0\5()TK;\1\0\6\1\0\4Code\1\0\5Entry\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\6getKey\1\0\27java/util/LinkedHashMap\1\0\31java/util/LinkedHashMap$1\1\0\35java/util/LinkedHashMap$Entry\1\0#java/util/LinkedHashMap$KeyIterator\1\0*java/util/LinkedHashMap$LinkedHashIterator\1\0\4next\1\0\tnextEntry\1\0\6this$0\7\0\n\7\0\v\7\0\f\7\0\r\7\0\16\1\0\31Ljava/util/LinkedHashMap;\1\0009Ljava/util/LinkedHashMap.LinkedHashIterator;\1\0\24()Ljava/lang/Object;\1\0\34(Ljava/util/LinkedHashMap;)V\1\0!()Ljava/util/LinkedHashMap$Entry;\1\0007(Ljava/util/LinkedHashMap;Ljava/util/LinkedHashMap$1;)V\f\0\21\0\27\f\0\t\0\31\f\0\2\0\32\f\0\20\0\33\f\0\2\0\34\t\0\25\0\35\n\0\24\0\36\n\0\25\0\37\n\0\25\0 \n\0\26\0!\1\0\vKeyIterator\1\0\22LinkedHashIterator\1\0\22LinkedHashMap.java\0 \0\25\0\26\0\0\0\1\20\20\0\21\0\27\0\0\0\3\0\2\0\2\0\32\0\1\0\3\0\0\0$\0\3\0\2\0\0\0\f*+\265\0\"*+\1\267\0&\261\0\0\0\1\0\6\0\0\0\6\0\1\0\0\1\224\0\1\0\17\0\31\0\2\0\3\0\0\0 \0\1\0\1\0\0\0\10*\266\0%\266\0#\260\0\0\0\1\0\6\0\0\0\6\0\1\0\0\1\225\0\7\0\0\0\2\0\1\20\0\0\2\0\34\0\1\0\3\0\0\0\36\0\2\0\3\0\0\0\6*+\267\0$\261\0\0\0\1\0\6\0\0\0\6\0\1\0\0\1\224\0\3\0\10\0\0\0\2\0)\0\7\0\0\0\2\0\30\0\5\0\0\0\"\0\4\0\24\0\22\0\4\0\n\0\25\0\22\0'\0\2\0\26\0\22\0(\4\2\0\23\0\22\0\0\20\10", 889) = 889 30059 mprotect(0x7fb314585000, 4096, PROT_READ|PROT_WRITE) = 0 30059 lseek(4, 57394441, SEEK_SET) = 57394441 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\257w[\374\362\t\0\0\362\t\0\0\"\0\0\0", 30) = 30 30059 lseek(4, 57394505, SEEK_SET) = 57394505 30059 read(4, "\312\376\272\276\0\0\0003\0j\1\0\3()I\1\0\5()TE;\1\0\3()V\1\0\3()Z\1\0\25(Ljava/lang/Object;)V\1\0\6(TE;)V\1\0\6\1\0\4Code\1\0\1I\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\22Ljava/lang/Object;\1\0\4Node\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\3add\1\0\26checkForComodification\1\0\20expectedModCount\1\0\7hasNext\1\0\vhasPrevious\1\0\4item\1\0\37java/lang/IllegalStateException\1\0\20java/lang/Object\1\0)java/util/ConcurrentModificationException\1\0\24java/util/LinkedList\1\0\34java/util/LinkedList$ListItr\1\0\31java/util/LinkedList$Node\1\0\26java/util/ListIterator\1\0 java/util/NoSuchElementException\1\0\4last\1\0\flastReturned\1\0\nlinkBefore\1\0\10linkLast\1\0\10modCount\1\0\4next\1\0\tnextIndex\1\0\4node\1\0\4prev\1\0\10previous\1\0\rpreviousIndex\1\0\6remove\1\0\3set\1\0\4size\1\0\6this$0\1\0\6unlink\7\0\27\7\0\30\7\0\31\7\0\32\7\0\33\7\0\34\7\0\35\7\0\36\1\0\26Ljava/util/LinkedList;\1\0\33Ljava/util/LinkedList$Node;\1\0 Ljava/util/LinkedList$Node;\1\0/Ljava/lang/Object;Ljava/util/ListIterator;\1\0\24()Ljava/lang/Object;\1\0\32(Ljava/util/LinkedList;I)V\1\0\36(I)Ljava/util/LinkedList$Node;\1\0/(Ljava/util/LinkedList$Node;)Ljava/lang/Object;\1\0000(Ljava/lang/Object;Ljava/util/"..., 2546) = 2546 30059 lseek(4, 53102480, SEEK_SET) = 53102480 30059 read(4, "PK\3\4\n\0\0\0\0\0004\246\305B^\214v\342\255\1\0\0\255\1\0\0%\0\0\0", 30) = 30 30059 lseek(4, 53102547, SEEK_SET) = 53102547 30059 read(4, "\312\376\272\276\0\0\0003\0\32\1\0\3()V\1\0\6\1\0\4Code\1\0\20InetAddress.java\1\0\fInnerClasses\1\0\1J\1\0\17LineNumberTable\1\0\nSourceFile\1\0\27[Ljava/net/InetAddress;\1\0\taddresses\1\0\nexpiration\1\0\20java/lang/Object\1\0\24java/net/InetAddress\1\0\37java/net/InetAddress$CacheEntry\7\0\f\7\0\r\7\0\16\1\0\33([Ljava/net/InetAddress;J)V\f\0\v\0\6\f\0\n\0\t\f\0\2\0\1\t\0\21\0\23\t\0\21\0\24\n\0\17\0\25\1\0\nCacheEntry\0000\0\21\0\17\0\0\0\2\0\0\0\n\0\t\0\0\0\0\0\v\0\6\0\0\0\1\0\0\0\2\0\22\0\1\0\3\0\0\0003\0\3\0\4\0\0\0\17*\267\0\30*+\265\0\27* \265\0\26\261\0\0\0\1\0\7\0\0\0\22\0\4\0\0\2\313\0\4\2\314\0\t\2\315\0\16\2\316\0\2\0\10\0\0\0\2\0\4\0\5\0\0\0\n\0\1\0\21\0\20\0\31\0\30", 429) = 429 30059 lseek(4, 56213578, SEEK_SET) = 56213578 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B<\203W\34\270\36\0\0\270\36\0\0\33\0\0\0", 30) = 30 30059 lseek(4, 56213635, SEEK_SET) = 56213635 30059 read(4, "\312\376\272\276\0\0\0003\1\f\3\0\0\377\0\10\0\16\10\0\17\10\0\35\10\0*\10\0+\10\0000\10\0005\10\0P\10\0Q\10\0R\10\0t\10\0u\1\0\0\1\0\1%\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4()[B\1\0\4(I)C\1\0\25(I)Ljava/lang/String;\1\0\4(I)V\1\0\26(II)Ljava/lang/String;\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)I\1\0,(Ljava/lang/String;)Ljava/lang/StringBuffer;\1\0\25(Ljava/lang/String;)V\1\0\1:\1\0\10\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\nExceptions\1\0\1I\1\0\10INADDRSZ\1\0\7INT16SZ\1\0\fInnerClasses\1\0\1J\1\0\17LineNumberTable\1\0\22Ljava/lang/String;\1\0*No matching address found for interface : \1\0\26SocketException thrown\1\0\nSourceFile\1\0\rStackMapTable\1\0\1Z\1\0\2[B\1\0\31addr is of illegal length\1\0\6append\1\0\17cached_scope_id\1\0\6charAt\1\0\5clone\1\0,could not enumerate local network interfaces\1\0\21defaultReadObject\1\0\22defaultWriteObject\1\0\22deriveNumericScope\1\0\32differentLocalAddressTypes\1\0\6equals\1\0\6family\1\0\ngetAddress\1\0\fgetByAddress\1\0\tgetByName\1\0\10getClass\1\0\16getClassLoader\1\0\tgetFamily\1\0\16getHostAddress\1\0\20getInetAddresses\1\0\7getName\1\0\24getNetworkInterfaces\1\0\ngetScopeId\1\0\22getScopedInterface\1\0\17hasMoreElements\1\0\10hashCode\1\0\6holder\1\0\10hostName\1"..., 7864) = 7864 30059 socket(PF_FILE, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0) = 12 30059 connect(12, {sa_family=AF_FILE, path="/var/run/nscd/socket"}, 110) = -1 ENOENT (No such file or directory) 30059 close(12) = 0 30059 socket(PF_FILE, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0) = 12 30059 connect(12, {sa_family=AF_FILE, path="/var/run/nscd/socket"}, 110) = -1 ENOENT (No such file or directory) 30059 close(12) = 0 30059 open("/etc/host.conf", O_RDONLY|O_CLOEXEC) = 12 30059 fstat(12, {st_mode=S_IFREG|0644, st_size=92, ...}) = 0 30059 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb31b30d000 30059 read(12, "# The \"order\" line is only used by old versions of the C library.\norder hosts,bind\nmulti on\n", 4096) = 92 30059 read(12, "", 4096) = 0 30059 close(12) = 0 30059 munmap(0x7fb31b30d000, 4096) = 0 30059 futex(0x7fb31aabdb40, FUTEX_WAKE_PRIVATE, 2147483647) = 0 30059 open("/etc/resolv.conf", O_RDONLY|O_CLOEXEC) = 12 30059 fstat(12, {st_mode=S_IFREG|0644, st_size=279, ...}) = 0 30059 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb31b30d000 30059 read(12, "# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)\n# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN\nnameserver 172.18.255.1\nnameserver 172.18.255.2\nnameserver 172.18.255.3\nsearch sanger.ac.uk internal.sanger.ac.uk hinxtonit.com\n", 4096) = 279 30059 read(12, "", 4096) = 0 30059 close(12) = 0 30059 munmap(0x7fb31b30d000, 4096) = 0 30059 open("/etc/hosts", O_RDONLY|O_CLOEXEC) = 12 30059 fstat(12, {st_mode=S_IFREG|0644, st_size=304, ...}) = 0 30059 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb31b30d000 30059 read(12, "127.0.0.1\tlocalhost\n::1\t\tlocalhost ip6-localhost ip6-loopback\nfe00::0\t\tip6-localnet\nff00::0\t\tip6-mcastprefix\nff02::1\t\tip6-allnodes\nff02::2\t\tip6-allrouters\n\n172.17.97.41 precisefai.internal.sanger.ac.uk\n172.17.49.13 seq3d.internal.sanger.ac.uk seq3d\n172.17.9.12 it-admin.internal.sanger.ac.uk it-admin\n", 4096) = 304 30059 read(12, "", 4096) = 0 30059 close(12) = 0 30059 munmap(0x7fb31b30d000, 4096) = 0 30059 open("/software/jdk1.7.0_25/bin/../jre/lib/amd64/jli/libnss_dns.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) 30059 open("/usr/local/lsf/9.1/linux2.6-glibc2.3-x86_64/lib/libnss_dns.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) 30059 open("/nfs/users/nfs_j/jkb/sys/Linux_x86_64/lib/libnss_dns.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) 30059 open("/software/oracle-ic-11.2/libnss_dns.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) 30059 open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 12 30059 fstat(12, {st_mode=S_IFREG|0644, st_size=104396, ...}) = 0 30059 mmap(NULL, 104396, PROT_READ, MAP_PRIVATE, 12, 0) = 0x7fb31b11f000 30059 close(12) = 0 30059 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) 30059 open("/lib/x86_64-linux-gnu/libnss_dns.so.2", O_RDONLY|O_CLOEXEC) = 12 30059 read(12, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\320\17\0\0\0\0\0\0@\0\0\0\0\0\0\0\0r\0\0\0\0\0\0\0\0\0\0@\0008\0\t\0@\0\36\0\35\0\6\0\0\0\5\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0\370\1\0\0\0\0\0\0\370\1\0\0\0\0\0\0\10\0\0\0\0\0\0\0\3\0\0\0\4\0\0\0000_\0\0\0\0\0\0000_\0\0\0\0\0\0000_\0\0\0\0\0\0\34\0\0\0\0\0\0\0\34\0\0\0\0\0\0\0\20\0\0\0\0\0\0\0\1\0\0\0\5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0le\0\0\0\0\0\0le\0\0\0\0\0\0\0\0 \0\0\0\0\0\1\0\0\0\6\0\0\0\240m\0\0\0\0\0\0\240m \0\0\0\0\0\240m \0\0\0\0\0@\3\0\0\0\0\0\0P\3\0\0\0\0\0\0\0\0 \0\0\0\0\0\2\0\0\0\6\0\0\0\310m\0\0\0\0\0\0\310m \0\0\0\0\0\310m \0\0\0\0\0\340\1\0\0\0\0\0\0\340\1\0\0\0\0\0\0\10\0\0\0\0\0\0\0\4\0\0\0\4\0\0\0008\2\0\0\0\0\0\0008\2\0\0\0\0\0\0008\2\0\0\0\0\0\0D\0\0\0\0\0\0\0D\0\0\0\0\0\0\0\4\0\0\0\0\0\0\0P\345td\4\0\0\0L_\0\0\0\0\0\0L_\0\0\0\0\0\0L_\0\0\0\0\0\0\234\0\0\0\0\0\0\0\234\0\0\0\0\0\0\0\4\0\0\0\0\0\0\0Q\345td\6\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10\0\0\0\0\0\0\0R\345td\4\0\0\0\240m\0\0\0\0\0\0\240m \0\0\0\0\0\240m \0\0\0\0\0`\2\0\0\0\0\0\0`\2\0\0\0\0\0\0\1\0\0\0\0\0\0\0\4\0\0\0\24\0\0\0\3\0\0\0GNU\0\t\216\3174:k\233>;\25\275\23\310\277\322\342\320\243jD\4\0\0\0\20\0\0\0\1\0\0\0GNU\0\0\0\0\0\2\0\0\0\6\0\0\0\30\0\0\0\0\0\0\0\r\0\0\0\"\0\0\0\1\0\0\0\6\0\0\0M\3\4\3\1\302\n\21\0\0\0\0\"\0\0\0#\0\0\0$\0\0\0\0\0\0\0%\0\0\0&\0\0\0\0\0\0\0'\0\0\0(\0\0\0)\0\0\0\0\0\0\0\0\0\0\0\1\222\206\321Yl\251\344)\316gq\31h\251\344\307\20\250\357\357L\211\217a\242\222\6\274\313\17\272\223\20X\2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\3\0\v\0\370\r\0\0\0\0\0\0\0\0\0\0\0\0\0\0p\0\0\0\22\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\5\1\0\0\22\0\0\0", 832) = 832 30087 mprotect(0x7fb27c146000, 36864, PROT_READ|PROT_WRITE 30059 fstat(12, 30087 <... mprotect resumed> ) = 0 30059 <... fstat resumed> {st_mode=S_IFREG|0644, st_size=31104, ...}) = 0 30059 mmap(NULL, 2126064, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 12, 0) = 0x7fb28e0b4000 30059 mprotect(0x7fb28e0bb000, 2093056, PROT_NONE) = 0 30059 mmap(0x7fb28e2ba000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 12, 0x6000) = 0x7fb28e2ba000 30059 close(12) = 0 30059 open("/software/jdk1.7.0_25/bin/../jre/lib/amd64/jli/libresolv.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) 30059 open("/usr/local/lsf/9.1/linux2.6-glibc2.3-x86_64/lib/libresolv.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) 30059 open("/nfs/users/nfs_j/jkb/sys/Linux_x86_64/lib/libresolv.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) 30059 open("/software/oracle-ic-11.2/libresolv.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) 30059 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) 30059 open("/lib/x86_64-linux-gnu/libresolv.so.2", O_RDONLY|O_CLOEXEC) = 12 30059 read(12, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\2209\0\0\0\0\0\0@\0\0\0\0\0\0\0\210\223\1\0\0\0\0\0\0\0\0\0@\0008\0\t\0@\0\37\0\36\0\6\0\0\0\5\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0\370\1\0\0\0\0\0\0\370\1\0\0\0\0\0\0\10\0\0\0\0\0\0\0\3\0\0\0\4\0\0\0000T\1\0\0\0\0\0000T\1\0\0\0\0\0000T\1\0\0\0\0\0\34\0\0\0\0\0\0\0\34\0\0\0\0\0\0\0\20\0\0\0\0\0\0\0\1\0\0\0\5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\204v\1\0\0\0\0\0\204v\1\0\0\0\0\0\0\0 \0\0\0\0\0\1\0\0\0\6\0\0\0\330\204\1\0\0\0\0\0\330\204!\0\0\0\0\0\330\204!\0\0\0\0\0\210\r\0\0\0\0\0\0\2405\0\0\0\0\0\0\0\0 \0\0\0\0\0\2\0\0\0\6\0\0\0\310\215\1\0\0\0\0\0\310\215!\0\0\0\0\0\310\215!\0\0\0\0\0\320\1\0\0\0\0\0\0\320\1\0\0\0\0\0\0\10\0\0\0\0\0\0\0\4\0\0\0\4\0\0\0008\2\0\0\0\0\0\0008\2\0\0\0\0\0\0008\2\0\0\0\0\0\0D\0\0\0\0\0\0\0D\0\0\0\0\0\0\0\4\0\0\0\0\0\0\0P\345td\4\0\0\0LT\1\0\0\0\0\0LT\1\0\0\0\0\0LT\1\0\0\0\0\0\314\3\0\0\0\0\0\0\314\3\0\0\0\0\0\0\4\0\0\0\0\0\0\0Q\345td\6\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10\0\0\0\0\0\0\0R\345td\4\0\0\0\330\204\1\0\0\0\0\0\330\204!\0\0\0\0\0\330\204!\0\0\0\0\0(\v\0\0\0\0\0\0(\v\0\0\0\0\0\0\1\0\0\0\0\0\0\0\4\0\0\0\24\0\0\0\3\0\0\0GNU\0\210n\344\340I\24RNj(`\34\261\2339\26\301c\366\207\4\0\0\0\20\0\0\0\1\0\0\0GNU\0\0\0\0\0\2\0\0\0\6\0\0\0\30\0\0\0\0\0\0\0\235\0\0\0?\0\0\0\20\0\0\0\n\0\0\0\0\0@\0\0\0\200\0\0F \24\0013\244\232\202\202\20\0\2\5\1\20!\2\30\1 \220T\207\200@\0 \20\0\0\0\200\10\0\26\304\20\0\20\"\0\2\20\20\30H\4`\304 @ \4B1\6Z\34\200<\20H4\200\0\20\221\1\1\10\204\200\0\0\4@\t\0\0D\0\0\200\4\10\20\1\20H\0@\220\224\32\n\0\20Y\20\201\23\0\10\344\f4\4\0\200\6\20\0!\4\7\1\2411\16?\0\0\0\0\0\0\0\0\0\0\0@\0\0\0A\0\0\0B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", 832) = 832 30059 fstat(12, {st_mode=S_IFREG|0644, st_size=105288, ...}) = 0 30059 mprotect(0x7fb314586000, 4096, PROT_READ|PROT_WRITE) = 0 30059 mmap(NULL, 2210424, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 12, 0) = 0x7fb28de98000 30059 mprotect(0x7fb28deb0000, 2097152, PROT_NONE) = 0 30059 mmap(0x7fb28e0b0000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 12, 0x18000) = 0x7fb28e0b0000 30059 mmap(0x7fb28e0b2000, 6776, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fb28e0b2000 30059 close(12) = 0 30059 mprotect(0x7fb28e0b0000, 4096, PROT_READ) = 0 30059 mprotect(0x7fb28e2ba000, 4096, PROT_READ) = 0 30059 munmap(0x7fb31b11f000, 104396) = 0 30059 stat("/etc/resolv.conf", {st_mode=S_IFREG|0644, st_size=279, ...}) = 0 30059 open("/etc/resolv.conf", O_RDONLY|O_CLOEXEC) = 12 30059 fstat(12, {st_mode=S_IFREG|0644, st_size=279, ...}) = 0 30059 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb31b30d000 30059 read(12, "# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)\n# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN\nnameserver 172.18.255.1\nnameserver 172.18.255.2\nnameserver 172.18.255.3\nsearch sanger.ac.uk internal.sanger.ac.uk hinxtonit.com\n", 4096) = 279 30059 read(12, "", 4096) = 0 30059 close(12) = 0 30059 munmap(0x7fb31b30d000, 4096) = 0 30090 <... futex resumed> ) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1 30059 socket(PF_INET, SOCK_DGRAM|SOCK_NONBLOCK, IPPROTO_IP 30090 <... futex resumed> ) = 0 30059 <... socket resumed> ) = 12 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091214, 885540000}, ffffffff 30059 connect(12, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("172.18.255.1")}, 16) = 0 30059 poll([{fd=12, events=POLLOUT}], 1, 0) = 1 ([{fd=12, revents=POLLOUT}]) 30059 sendto(12, "\377i\1\0\0\1\0\0\0\0\0\0\3www\3ebi\2ac\2uk\0\0\34\0\1", 31, MSG_NOSIGNAL, NULL, 0) = 31 30059 poll([{fd=12, events=POLLIN}], 1, 5000) = 1 ([{fd=12, revents=POLLIN}]) 30059 ioctl(12, FIONREAD, [108]) = 0 30059 recvfrom(12, "\377i\201\200\0\1\0\1\0\1\0\0\3www\3ebi\2ac\2uk\0\0\34\0\1\300\f\0\5\0\1\0\0\0X\0\v\3www\4gslb\300\20\300/\0\6\0\1\0\0\7\6\0*\6gslb01\300\20\nhostmaster\300\20w\375\310X\0\0\16\20\0\0\1,\0006\356\200\0\0\16\20", 1024, 0, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("172.18.255.1")}, [16]) = 108 30087 mprotect(0x7fb27c14f000, 53248, PROT_READ|PROT_WRITE 30059 close(12 30087 <... mprotect resumed> ) = 0 30059 <... close resumed> ) = 0 30059 stat("/etc/resolv.conf", {st_mode=S_IFREG|0644, st_size=279, ...}) = 0 30059 socket(PF_INET, SOCK_DGRAM|SOCK_NONBLOCK, IPPROTO_IP) = 12 30059 connect(12, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("172.18.255.1")}, 16) = 0 30059 poll([{fd=12, events=POLLOUT}], 1, 0) = 1 ([{fd=12, revents=POLLOUT}]) 30059 sendto(12, "q\333\1\0\0\1\0\0\0\0\0\0\3www\3ebi\2ac\2uk\0\0\1\0\1", 31, MSG_NOSIGNAL, NULL, 0) = 31 30059 poll([{fd=12, events=POLLIN}], 1, 5000 30087 mprotect(0x7fb27c15c000, 36864, PROT_READ|PROT_WRITE) = 0 30087 mprotect(0x7fb27c165000, 45056, PROT_READ|PROT_WRITE) = 0 30087 madvise(0x7fb27c16f000, 4096, MADV_DONTNEED) = 0 30087 mprotect(0x7fb27c170000, 4096, PROT_READ|PROT_WRITE) = 0 30087 madvise(0x7fb27c16f000, 8192, MADV_DONTNEED) = 0 30087 madvise(0x7fb27c14a000, 151552, MADV_DONTNEED) = 0 30087 futex(0x7fb31443af54, FUTEX_WAIT_PRIVATE, 23, NULL 30059 <... poll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) 30059 ioctl(12, FIONREAD, [70]) = 0 30059 recvfrom(12, "q\333\201\200\0\1\0\2\0\0\0\0\3www\3ebi\2ac\2uk\0\0\1\0\1\300\f\0\5\0\1\0\0\0X\0\v\3www\4gslb\300\20\300+\0\1\0\1\0\0\0\n\0\4\301>\300P", 1024, 0, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("172.18.255.1")}, [16]) = 70 30059 close(12) = 0 30059 lseek(4, 56232491, SEEK_SET) = 56232491 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305Bp\361\201Sn\1\0\0n\1\0\0\36\0\0\0", 30) = 30 30059 lseek(4, 56232551, SEEK_SET) = 56232551 30059 read(4, "\312\376\272\276\0\0\0003\0\25\1\0\3()V\1\0\25(Ljava/lang/String;)V\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\1J\1\0\17LineNumberTable\1\0\nSourceFile\1\0\23java/io/IOException\1\0\30java/net/SocketException\1\0\20serialVersionUID\5\255\237\211\305A\37^j\7\0\t\7\0\n\f\0\3\0\1\f\0\3\0\2\n\0\16\0\20\n\0\16\0\21\1\0\24SocketException.java\0!\0\17\0\16\0\0\0\1\0\32\0\v\0\6\0\1\0\5\0\0\0\2\0\f\0\2\0\1\0\3\0\2\0\1\0\4\0\0\0\"\0\2\0\2\0\0\0\6*+\267\0\23\261\0\0\0\1\0\7\0\0\0\n\0\2\0\0\0/\0\5\0000\0\1\0\3\0\1\0\1\0\4\0\0\0!\0\1\0\1\0\0\0\5*\267\0\22\261\0\0\0\1\0\7\0\0\0\n\0\2\0\0\0005\0\4\0006\0\1\0\10\0\0\0\2\0\24", 366) = 366 30059 socket(PF_INET6, SOCK_STREAM, IPPROTO_IP) = 12 30059 setsockopt(12, SOL_IPV6, IPV6_V6ONLY, [0], 4) = 0 30059 lseek(4, 28581574, SEEK_SET) = 28581574 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B\307\321\312S\20\3\0\0\20\3\0\0 \0\0\0", 30) = 30 30059 lseek(4, 28581636, SEEK_SET) = 28581636 30059 read(4, "\312\376\272\276\0\0\0003\0'\1\0\3()V\1\0\6\1\0\4Code\1\0\17EnclosingMethod\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\7connect\1\0\ngetDefault\1\0\20java/lang/Object\1\0\26java/net/ProxySelector\1\0\30java/net/SocksSocketImpl\1\0\32java/net/SocksSocketImpl$3\1\0\36java/security/PrivilegedAction\1\0\3run\1\0\6this$0\7\0\v\7\0\f\7\0\r\7\0\16\7\0\17\1\0\32Ljava/net/SocksSocketImpl;\1\0LLjava/lang/Object;Ljava/security/PrivilegedAction;\1\0\24()Ljava/lang/Object;\1\0\32()Ljava/net/ProxySelector;\1\0\34(Ljava/net/SocketAddress;I)V\1\0\35(Ljava/net/SocksSocketImpl;)V\f\0\21\0\27\f\0\2\0\1\f\0\n\0\32\f\0\20\0\32\f\0\t\0\33\t\0\25\0\35\n\0\22\0\36\n\0\23\0\37\n\0\25\0 \1\0\24SocksSocketImpl.java\0 \0\25\0\22\0\1\0\26\0\1\20\20\0\21\0\27\0\0\0\3\0\0\0\2\0\34\0\1\0\3\0\0\0\"\0\2\0\2\0\0\0\n*+\265\0\"*\267\0#\261\0\0\0\1\0\6\0\0\0\6\0\1\0\0\1b\0\1\0\20\0\32\0\1\0\3\0\0\0\34\0\1\0\1\0\0\0\4\270\0$\260\0\0\0\1\0\6\0\0\0\6\0\1\0\0\1d\20A\0\20\0\31\0\1\0\3\0\0\0\35\0\1\0\1\0\0\0\5*\266\0%\260\0\0\0\1\0\6\0\0\0\6\0\1\0\0\1b\0\4\0\10\0\0\0\2\0&\0\4\0\0\0\4\0\24\0!\0\7\0\0\0\2\0\30\0\5\0\0\0\n\0\1\0\25\0\0\0\0\0\0", 784) = 784 30059 lseek(4, 43338752, SEEK_SET) = 43338752 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305B\3\n\255^\345\2\0\0\345\2\0\0\26\0\0\0", 30) = 30 30059 lseek(4, 43338804, SEEK_SET) = 43338804 30059 read(4, "\312\376\272\276\0\0\0003\0%\1\0\3()V\1\0\10\1\0\6\1\0\4Code\1\0\nExceptions\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\10Provider\1\0\nSourceFile\1\0\rbeforeTcpBind\1\0\20beforeTcpConnect\1\0\21implBeforeTcpBind\1\0\24implBeforeTcpConnect\1\0\23java/io/IOException\1\0\20java/lang/Object\1\0\10provider\1\0\20sun/net/NetHooks\1\0\31sun/net/NetHooks$Provider\1\0\27sun/net/sdp/SdpProvider\7\0\16\7\0\17\7\0\21\7\0\22\7\0\23\1\0\33Lsun/net/NetHooks$Provider;\1\0002(Ljava/io/FileDescriptor;Ljava/net/InetAddress;I)V\f\0\20\0\31\f\0\3\0\1\f\0\f\0\32\f\0\r\0\32\t\0\26\0\33\n\0\25\0\34\n\0\27\0\35\n\0\27\0\36\n\0\30\0\34\1\0\rNetHooks.java\0001\0\26\0\25\0\0\0\1\0\32\0\20\0\31\0\0\0\4\0\1\0\3\0\1\0\1\0\4\0\0\0!\0\1\0\1\0\0\0\5*\267\0 \261\0\0\0\1\0\7\0\0\0\n\0\2\0\0\0'\0\4\0000\0\t\0\n\0\32\0\2\0\4\0\0\0&\0\4\0\3\0\0\0\n\262\0\37*+\34\266\0!\261\0\0\0\1\0\7\0\0\0\n\0\2\0\0\0V\0\t\0W\0\5\0\0\0\4\0\1\0\24\0\t\0\v\0\32\0\2\0\4\0\0\0&\0\4\0\3\0\0\0\n\262\0\37*+\34\266\0\"\261\0\0\0\1\0\7\0\0\0\n\0\2\0\0\0a\0\t\0b\0\5\0\0\0\4\0\1\0\24\0\10\0\2\0\1\0\1\0\4\0\0\0#\0\2\0\0\0\0\0\v\273\0\30Y\267\0#\263\0\37\261\0\0\0\1\0\7\0\0\0\6\0\1\0\0\0L\0\2\0\t\0\0\0\2\0$\0\6\0\0\0\n\0\1\0\27\0\26\0\10\4\t", 741) = 741 30059 lseek(4, 43663883, SEEK_SET) = 43663883 30059 read(4, "PK\3\4\n\0\0\0\0\0007\246\305B\374`\357* \31\0\0 \31\0\0\35\0\0\0", 30) = 30 30059 lseek(4, 43663942, SEEK_SET) = 43663942 30059 read(4, "\312\376\272\276\0\0\0003\1*\3\0\0\377\377\10\0\20\10\0\21\10\0\37\10\0\"\10\0'\10\0.\10\0/\10\0000\10\0006\10\0008\10\0=\10\0>\10\0C\10\0D\1\0\27%s to %s:%d (no match)\n\1\0/%s to %s:%d (socket converted to SDP protocol)\n\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4(I)C\1\0\4(I)I\1\0\26(I)Ljava/lang/Integer;\1\0\25(I)Ljava/lang/String;\1\0\26(II)Ljava/lang/String;\1\0\25(Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)I\1\0\25(Ljava/lang/String;)V\1\0\25(Ljava/lang/String;)Z\1\0\1*\1\0\6\1\0\6Action\1\0\32Action '%s' not recognized\1\0\4BIND\1\0\7CONNECT\1\0\4Code\1\0\rConstantValue\1\0\24Error reading %s: %s\1\0\nExceptions\1\0\1I\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\25Ljava/io/PrintStream;\1\0\10MAX_PORT\1\0\23Malformed line '%s'\1\0\31Malformed port range '%s'\1\0\25Malformed prefix '%s'\1\0\10Provider\1\0\4Rule\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0)Unknown host or malformed IP address '%s'\1\0\1Z\1\0\1[\1\0\2[I\1\0\23[Ljava/lang/String;\1\0\27[Ljava/net/InetAddress;\1\0![Lsun/net/sdp/SdpProvider$Action;\1\0\3\\s+\1\0\1]\1\0\3add\1\0\6append\1\0\6charAt\1\0\5close\1\0\20com.sun.sdp.conf\1\0\21com.sun.sdp.debug\1\0\rconvertSocket\1\0\26convertTcpToSdpIfMatch\1\0\fdoPrivileged\1\0\7enabled\1\0\6equals\1\0\20equalsIgno"..., 6432) = 6432 30059 lseek(4, 43338250, SEEK_SET) = 43338250 30059 read(4, "PK\3\4\n\0\0\0\0\0006\246\305Bu\6\300\306\271\1\0\0\271\1\0\0\37\0\0\0", 30) = 30 30059 lseek(4, 43338311, SEEK_SET) = 43338311 30059 read(4, "\312\376\272\276\0\0\0003\0\27\1\0\3()V\1\0\6\1\0\4Code\1\0\nExceptions\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\10Provider\1\0\nSourceFile\1\0\21implBeforeTcpBind\1\0\24implBeforeTcpConnect\1\0\23java/io/IOException\1\0\20java/lang/Object\1\0\20sun/net/NetHooks\1\0\31sun/net/NetHooks$Provider\7\0\v\7\0\f\7\0\r\7\0\16\1\0002(Ljava/io/FileDescriptor;Ljava/net/InetAddress;I)V\f\0\2\0\1\n\0\20\0\24\1\0\rNetHooks.java\4!\0\22\0\20\0\0\0\0\0\3\0\4\0\2\0\1\0\1\0\3\0\0\0\35\0\1\0\1\0\0\0\5*\267\0\25\261\0\0\0\1\0\6\0\0\0\6\0\1\0\0\0004\4\1\0\t\0\23\0\1\0\4\0\0\0\4\0\1\0\17\4\1\0\n\0\23\0\1\0\4\0\0\0\4\0\1\0\17\0\2\0\10\0\0\0\2\0\26\0\5\0\0\0\n\0\1\0\22\0\21\0\7\4\t", 441) = 441 30059 connect(12, {sa_family=AF_INET6, sin6_port=htons(80), inet_pton(AF_INET6, "::ffff:193.62.192.80", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, 28 30090 <... futex resumed> ) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091214, 935676000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091214, 985835000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091215, 35987000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091215, 86115000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091215, 136253000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091215, 186379000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091215, 236760000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091215, 286912000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091215, 337047000}, ffffffff 30083 <... futex resumed> ) = -1 ETIMEDOUT (Connection timed out) 30083 futex(0x7fb3143e1928, FUTEX_WAKE_PRIVATE, 1) = 0 30083 futex(0x7fb3143e1954, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091216, 327781000}, ffffffff 30090 <... futex resumed> ) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091215, 387164000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091215, 437279000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091215, 487417000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091215, 537571000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091215, 587682000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091215, 637793000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091215, 687926000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091215, 738055000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091215, 788187000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091215, 838335000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091215, 888447000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091215, 938585000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091215, 988728000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091216, 38860000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091216, 88982000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091216, 139105000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091216, 189244000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091216, 239379000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091216, 289519000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091216, 339678000}, ffffffff 30083 <... futex resumed> ) = -1 ETIMEDOUT (Connection timed out) 30083 futex(0x7fb3143e1928, FUTEX_WAKE_PRIVATE, 1) = 0 30083 futex(0x7fb3143e1954, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091217, 327906000}, ffffffff 30090 <... futex resumed> ) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091216, 389788000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091216, 439911000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091216, 490028000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091216, 540156000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091216, 590310000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091216, 640461000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091216, 690581000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091216, 740696000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091216, 790831000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091216, 840985000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091216, 891132000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091216, 941298000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091216, 991446000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091217, 41553000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091217, 91696000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091217, 141861000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091217, 192016000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091217, 242162000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091217, 292287000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091217, 342423000}, ffffffff 30083 <... futex resumed> ) = -1 ETIMEDOUT (Connection timed out) 30083 futex(0x7fb3143e1928, FUTEX_WAKE_PRIVATE, 1) = 0 30083 futex(0x7fb3143e1954, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091218, 328042000}, ffffffff 30090 <... futex resumed> ) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091217, 392529000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091217, 442664000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091217, 492796000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091217, 542902000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091217, 593025000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091217, 643142000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091217, 693279000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091217, 743423000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091217, 793556000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091217, 843684000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091217, 893799000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091217, 943947000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091217, 994089000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091218, 44226000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091218, 94363000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091218, 144490000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091218, 194619000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091218, 244762000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091218, 294895000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091218, 345021000}, ffffffff 30083 <... futex resumed> ) = -1 ETIMEDOUT (Connection timed out) 30083 futex(0x7fb3143e1928, FUTEX_WAKE_PRIVATE, 1) = 0 30083 futex(0x7fb3143e1954, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091219, 328165000}, ffffffff 30090 <... futex resumed> ) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091218, 395128000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091218, 445257000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb3143e1954, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x7fb3143e1950, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1}) = 1 30083 <... futex resumed> ) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091218, 495463000}, ffffffff 30083 futex(0x7fb3143e1928, FUTEX_WAKE_PRIVATE, 1) = 0 30083 mprotect(0x7fb31b316000, 4096, PROT_READ) = 0 30083 mprotect(0x7fb31b316000, 4096, PROT_READ|PROT_WRITE) = 0 30083 mprotect(0x7fb31b317000, 4096, PROT_NONE) = 0 30083 mprotect(0x7fb31b317000, 4096, PROT_READ) = 0 30083 futex(0x7fb3143e1954, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 3, {1412091219, 445818000}, ffffffff 30090 <... futex resumed> ) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091218, 545612000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091218, 595732000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091218, 645858000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091218, 695978000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091218, 746112000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091218, 796265000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091218, 846373000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091218, 896503000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091218, 946618000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091218, 996758000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091219, 46903000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091219, 97023000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091219, 147156000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091219, 197290000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091219, 247439000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091219, 297576000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091219, 347725000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091219, 397868000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091219, 447977000}, ffffffff 30083 <... futex resumed> ) = -1 ETIMEDOUT (Connection timed out) 30083 futex(0x7fb3143e1928, FUTEX_WAKE_PRIVATE, 1) = 0 30083 futex(0x7fb3143e1954, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091220, 445995000}, ffffffff 30090 <... futex resumed> ) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 madvise(0x7fb270087000, 163840, MADV_DONTNEED) = 0 30090 madvise(0x7fb27007d000, 40960, MADV_DONTNEED) = 0 30090 madvise(0x7fb27c13a000, 65536, MADV_DONTNEED) = 0 30090 madvise(0x7fb27c130000, 40960, MADV_DONTNEED) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091219, 498285000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091219, 548408000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091219, 598536000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091219, 648688000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091219, 698799000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091219, 748928000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091219, 799063000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091219, 849170000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091219, 899293000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091219, 949424000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091219, 999529000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091220, 49638000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091220, 99779000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091220, 149893000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091220, 200011000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091220, 250124000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091220, 300233000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091220, 350371000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091220, 400496000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091220, 450646000}, ffffffff 30083 <... futex resumed> ) = -1 ETIMEDOUT (Connection timed out) 30083 futex(0x7fb3143e1928, FUTEX_WAKE_PRIVATE, 1) = 0 30083 futex(0x7fb3143e1954, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091221, 446154000}, ffffffff 30090 <... futex resumed> ) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091220, 500753000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091220, 550857000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091220, 601005000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091220, 651148000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091220, 701278000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091220, 751437000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091220, 801568000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091220, 851674000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091220, 901795000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091220, 951948000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091221, 2093000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091221, 52204000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091221, 102327000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091221, 152431000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091221, 202578000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091221, 252737000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091221, 302872000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091221, 352988000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091221, 403116000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091221, 453237000}, ffffffff 30083 <... futex resumed> ) = -1 ETIMEDOUT (Connection timed out) 30083 futex(0x7fb3143e1928, FUTEX_WAKE_PRIVATE, 1) = 0 30083 futex(0x7fb3143e1954, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091222, 446325000}, ffffffff 30090 <... futex resumed> ) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091221, 503357000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091221, 553497000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091221, 603641000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091221, 653757000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091221, 703866000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091221, 754027000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091221, 804181000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091221, 854326000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091221, 904454000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091221, 954573000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091222, 4729000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091222, 54864000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091222, 104981000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091222, 155128000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091222, 205260000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091222, 255391000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091222, 305548000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091222, 355666000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091222, 405809000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091222, 455954000}, ffffffff 30083 <... futex resumed> ) = -1 ETIMEDOUT (Connection timed out) 30083 futex(0x7fb3143e1928, FUTEX_WAKE_PRIVATE, 1) = 0 30083 futex(0x7fb3143e1954, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091223, 446489000}, ffffffff 30090 <... futex resumed> ) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091222, 506064000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091222, 556184000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091222, 606312000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091222, 656420000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091222, 706531000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091222, 756675000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091222, 806781000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091222, 856910000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091222, 907034000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091222, 957141000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091223, 7269000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091223, 57407000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091223, 107534000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091223, 157687000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091223, 207791000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091223, 257905000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091223, 308037000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091223, 358153000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091223, 408320000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091223, 458473000}, ffffffff 30083 <... futex resumed> ) = -1 ETIMEDOUT (Connection timed out) 30083 futex(0x7fb3143e1928, FUTEX_WAKE_PRIVATE, 1) = 0 30083 futex(0x7fb3143e1954, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091224, 446621000}, ffffffff 30090 <... futex resumed> ) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091223, 508588000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091223, 558710000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091223, 608836000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091223, 658986000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091223, 709136000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091223, 759264000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091223, 809380000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091223, 859498000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091223, 909634000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091223, 959786000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091224, 9915000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091224, 60039000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091224, 110154000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091224, 160279000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091224, 210442000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091224, 260603000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091224, 310716000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091224, 360846000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091224, 410966000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091224, 461080000}, ffffffff 30083 <... futex resumed> ) = -1 ETIMEDOUT (Connection timed out) 30083 futex(0x7fb3143e1928, FUTEX_WAKE_PRIVATE, 1) = 0 30083 futex(0x7fb3143e1954, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091225, 446771000}, ffffffff 30090 <... futex resumed> ) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091224, 511202000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091224, 561343000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091224, 611459000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091224, 661581000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091224, 711729000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091224, 761870000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091224, 811983000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091224, 862108000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091224, 912219000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091224, 962343000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091225, 12500000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091225, 62655000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091225, 112803000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091225, 162913000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091225, 213028000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091225, 263165000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091225, 313285000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091225, 363399000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091225, 413519000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091225, 463649000}, ffffffff 30083 <... futex resumed> ) = -1 ETIMEDOUT (Connection timed out) 30083 futex(0x7fb3143e1928, FUTEX_WAKE_PRIVATE, 1) = 0 30083 futex(0x7fb3143e1954, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091226, 446910000}, ffffffff 30090 <... futex resumed> ) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091225, 513760000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091225, 563888000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091225, 614039000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091225, 664178000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091225, 714284000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091225, 764424000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091225, 814546000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091225, 864658000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091225, 914796000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091225, 964938000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091226, 15073000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091226, 65206000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091226, 115332000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091226, 165456000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091226, 215589000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091226, 265737000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091226, 315888000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091226, 366041000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091226, 416165000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091226, 466279000}, ffffffff 30083 <... futex resumed> ) = -1 ETIMEDOUT (Connection timed out) 30083 futex(0x7fb3143e1928, FUTEX_WAKE_PRIVATE, 1) = 0 30083 futex(0x7fb3143e1954, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091227, 447055000}, ffffffff 30090 <... futex resumed> ) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091226, 516401000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091226, 566547000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091226, 616695000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091226, 666829000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091226, 716939000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091226, 767060000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091226, 817176000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091226, 867321000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091226, 917444000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091226, 967552000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091227, 17680000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091227, 67830000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091227, 117981000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091227, 168140000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091227, 218292000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091227, 268399000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091227, 318528000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091227, 368678000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091227, 418831000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091227, 468989000}, ffffffff 30083 <... futex resumed> ) = -1 ETIMEDOUT (Connection timed out) 30083 futex(0x7fb3143e1928, FUTEX_WAKE_PRIVATE, 1) = 0 30083 futex(0x7fb3143e1954, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091228, 447221000}, ffffffff 30090 <... futex resumed> ) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091227, 519110000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091227, 569225000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091227, 619337000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091227, 669480000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091227, 719634000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091227, 769791000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091227, 819924000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091227, 870033000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091227, 920158000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091227, 970310000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091228, 20459000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091228, 70606000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091228, 120763000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091228, 170904000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091228, 221028000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091228, 271184000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091228, 321336000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091228, 371451000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091228, 421589000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091228, 471739000}, ffffffff 30083 <... futex resumed> ) = -1 ETIMEDOUT (Connection timed out) 30083 futex(0x7fb3143e1928, FUTEX_WAKE_PRIVATE, 1) = 0 30083 futex(0x7fb3143e1954, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091229, 447350000}, ffffffff 30090 <... futex resumed> ) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091228, 521869000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091228, 572004000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091228, 622132000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091228, 672263000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091228, 722400000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091228, 772546000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091228, 822679000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091228, 872812000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091228, 922958000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091228, 973073000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091229, 23221000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091229, 73364000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091229, 123515000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091229, 173662000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091229, 223773000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091229, 273924000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091229, 324065000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091229, 374173000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091229, 424321000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091229, 474470000}, ffffffff 30083 <... futex resumed> ) = -1 ETIMEDOUT (Connection timed out) 30083 futex(0x7fb3143e1928, FUTEX_WAKE_PRIVATE, 1) = 0 30083 futex(0x7fb3143e1954, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091230, 447484000}, ffffffff 30090 <... futex resumed> ) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091229, 524610000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091229, 574757000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091229, 624910000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091229, 675048000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091229, 725196000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091229, 775352000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091229, 825522000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091229, 875640000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091229, 925763000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091229, 975906000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091230, 26034000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091230, 76171000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091230, 126344000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091230, 176492000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091230, 226626000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091230, 276761000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091230, 326917000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091230, 377077000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091230, 427215000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091230, 477354000}, ffffffff 30083 <... futex resumed> ) = -1 ETIMEDOUT (Connection timed out) 30083 futex(0x7fb3143e1928, FUTEX_WAKE_PRIVATE, 1) = 0 30083 futex(0x7fb3143e1954, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091231, 447600000}, ffffffff 30090 <... futex resumed> ) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091230, 527472000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091230, 577598000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091230, 627743000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091230, 677896000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091230, 728049000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091230, 778156000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091230, 828300000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091230, 878408000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091230, 928524000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091230, 978679000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091231, 28805000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091231, 78926000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091231, 129068000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091231, 179188000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091231, 229305000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091231, 279449000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091231, 329568000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091231, 379711000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091231, 429818000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091231, 479965000}, ffffffff 30083 <... futex resumed> ) = -1 ETIMEDOUT (Connection timed out) 30083 futex(0x7fb3143e1928, FUTEX_WAKE_PRIVATE, 1) = 0 30083 futex(0x7fb3143e1954, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091232, 447726000}, ffffffff 30090 <... futex resumed> ) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091231, 530091000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091231, 580232000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091231, 630367000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091231, 680503000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091231, 730645000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091231, 780786000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091231, 830947000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091231, 881106000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091231, 931255000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091231, 981386000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091232, 31503000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091232, 81636000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091232, 131795000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091232, 181954000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091232, 232115000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091232, 282230000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091232, 332372000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091232, 382530000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091232, 432638000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091232, 482775000}, ffffffff 30083 <... futex resumed> ) = -1 ETIMEDOUT (Connection timed out) 30083 futex(0x7fb3143e1928, FUTEX_WAKE_PRIVATE, 1) = 0 30083 futex(0x7fb3143e1954, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091233, 447882000}, ffffffff 30090 <... futex resumed> ) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091232, 532915000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091232, 583051000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091232, 633206000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091232, 683367000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091232, 733525000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091232, 783683000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091232, 833832000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091232, 883984000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091232, 934132000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091232, 984277000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091233, 34434000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091233, 84590000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091233, 134758000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091233, 184913000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091233, 235057000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091233, 285218000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091233, 335378000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091233, 385521000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091233, 435673000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091233, 485824000}, ffffffff 30083 <... futex resumed> ) = -1 ETIMEDOUT (Connection timed out) 30083 futex(0x7fb3143e1928, FUTEX_WAKE_PRIVATE, 1) = 0 30083 futex(0x7fb3143e1954, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091234, 448007000}, ffffffff 30090 <... futex resumed> ) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091233, 535957000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091233, 586094000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091233, 636219000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091233, 686352000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091233, 736488000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091233, 786634000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091233, 836787000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091233, 886936000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091233, 937045000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091233, 987180000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091234, 37337000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091234, 87502000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091234, 137630000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091234, 187763000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091234, 238158000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091234, 288314000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091234, 338481000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091234, 388645000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091234, 438804000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091234, 488973000}, ffffffff 30083 <... futex resumed> ) = -1 ETIMEDOUT (Connection timed out) 30083 futex(0x7fb3143e1928, FUTEX_WAKE_PRIVATE, 1) = 0 30083 futex(0x7fb3143e1954, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091235, 448120000}, ffffffff 30090 <... futex resumed> ) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091234, 539085000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091234, 589214000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091234, 639354000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091234, 689468000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091234, 739620000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091234, 789751000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091234, 839860000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091234, 889974000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091234, 940107000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091234, 990255000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091235, 40398000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091235, 90548000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091235, 140690000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091235, 190826000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091235, 240951000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091235, 291068000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091235, 341185000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091235, 391314000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091235, 441461000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091235, 491590000}, ffffffff 30083 <... futex resumed> ) = -1 ETIMEDOUT (Connection timed out) 30083 futex(0x7fb3143e1928, FUTEX_WAKE_PRIVATE, 1) = 0 30083 futex(0x7fb3143e1954, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091236, 448238000}, ffffffff 30090 <... futex resumed> ) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091235, 541740000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091235, 591900000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091235, 642033000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091235, 692182000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091235, 742293000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091235, 792436000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091235, 842604000}, ffffffff 30059 <... connect resumed> ) = -1 ETIMEDOUT (Connection timed out) 30059 lseek(4, 56177994, SEEK_SET) = 56177994 30059 read(4, "PK\3\4\n\0\0\0\0\0A\246\305B_o\254Hq\1\0\0q\1\0\0\37\0\0\0", 30) = 30 30059 lseek(4, 56178055, SEEK_SET) = 56178055 30059 read(4, "\312\376\272\276\0\0\0003\0\25\1\0\3()V\1\0\25(Ljava/lang/String;)V\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\1J\1\0\17LineNumberTable\1\0\nSourceFile\1\0\31java/net/ConnectException\1\0\30java/net/SocketException\1\0\20serialVersionUID\0055+\341\342\250\367/\277\7\0\t\7\0\n\f\0\3\0\1\f\0\3\0\2\n\0\17\0\20\n\0\17\0\21\1\0\25ConnectException.java\0!\0\16\0\17\0\0\0\1\0\32\0\v\0\6\0\1\0\5\0\0\0\2\0\f\0\2\0\1\0\3\0\2\0\1\0\4\0\0\0\"\0\2\0\2\0\0\0\6*+\267\0\23\261\0\0\0\1\0\7\0\0\0\n\0\2\0\0\0/\0\5\0000\0\1\0\3\0\1\0\1\0\4\0\0\0\35\0\1\0\1\0\0\0\5*\267\0\22\261\0\0\0\1\0\7\0\0\0\6\0\1\0\0\0005\0\1\0\10\0\0\0\2\0\24", 369) = 369 30059 dup2(11, 12) = 12 30059 close(12) = 0 30059 write(2, "Exception in thread \"main\" ", 27) = 27 30059 lseek(4, 27812444, SEEK_SET) = 27812444 30059 read(4, "PK\3\4\n\0\0\0\0\0003\246\305B\243\335\v\375\273\2\0\0\273\2\0\0,\0\0\0", 30) = 30 30059 lseek(4, 27812518, SEEK_SET) = 27812518 30059 read(4, "\312\376\272\276\0\0\0003\0!\1\0\25(Ljava/lang/Object;)V\1\0\6\1\0\4Code\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\25Ljava/io/PrintStream;\1\0\nSourceFile\1\0\23java/io/PrintStream\1\0\23java/lang/Throwable\1\0\25java/lang/Throwable$1\1\0'java/lang/Throwable$PrintStreamOrWriter\1\0&java/lang/Throwable$WrappedPrintStream\1\0\4lock\1\0\vprintStream\1\0\7println\7\0\10\7\0\t\7\0\n\7\0\v\7\0\f\1\0\30(Ljava/io/PrintStream;)V\1\0\24()Ljava/lang/Object;\1\0\32(Ljava/lang/Throwable$1;)V\f\0\16\0\6\f\0\17\0\1\f\0\2\0\27\t\0\24\0\30\n\0\20\0\31\n\0\23\0\32\1\0\23PrintStreamOrWriter\1\0\16Throwable.java\1\0\22WrappedPrintStream\0 \0\24\0\23\0\0\0\1\0\22\0\16\0\6\0\0\0\3\0\0\0\2\0\25\0\1\0\3\0\0\0+\0\2\0\2\0\0\0\v*\1\267\0\35*+\265\0\33\261\0\0\0\1\0\5\0\0\0\16\0\3\0\0\2\342\0\5\2\343\0\n\2\344\0\0\0\r\0\26\0\1\0\3\0\0\0\35\0\1\0\1\0\0\0\5*\264\0\33\260\0\0\0\1\0\5\0\0\0\6\0\1\0\0\2\347\0\0\0\17\0\1\0\1\0\3\0\0\0%\0\2\0\2\0\0\0\t*\264\0\33+\266\0\34\261\0\0\0\1\0\5\0\0\0\n\0\2\0\0\2\353\0\10\2\354\0\2\0\7\0\0\0\2\0\37\0\4\0\0\0\32\0\3\0\23\0\21\0\36\4\n\0\24\0\21\0 \0\n\0\22\0\21\0\0\20\10", 699) = 699 30059 lseek(4, 27811163, SEEK_SET) = 27811163 30059 read(4, "PK\3\4\n\0\0\0\0\0003\246\305BBs\313z\354\1\0\0\354\1\0\0-\0\0\0", 30) = 30 30059 lseek(4, 27811238, SEEK_SET) = 27811238 30059 read(4, "\312\376\272\276\0\0\0003\0\31\1\0\3()V\1\0\25(Ljava/lang/Object;)V\1\0\6\1\0\4Code\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\nSourceFile\1\0\20java/lang/Object\1\0\23java/lang/Throwable\1\0\25java/lang/Throwable$1\1\0'java/lang/Throwable$PrintStreamOrWriter\1\0\4lock\1\0\7println\7\0\10\7\0\t\7\0\n\7\0\v\1\0\24()Ljava/lang/Object;\1\0\32(Ljava/lang/Throwable$1;)V\f\0\3\0\1\n\0\16\0\24\n\0\21\0\24\1\0\23PrintStreamOrWriter\1\0\16Throwable.java\4 \0\21\0\16\0\0\0\0\0\4\0\2\0\3\0\1\0\1\0\4\0\0\0\35\0\1\0\1\0\0\0\5*\267\0\25\261\0\0\0\1\0\6\0\0\0\6\0\1\0\0\2\327\4\0\0\f\0\22\0\0\4\0\0\r\0\2\0\0\20\0\0\3\0\23\0\1\0\4\0\0\0\35\0\1\0\2\0\0\0\5*\267\0\26\261\0\0\0\1\0\6\0\0\0\6\0\1\0\0\2\327\0\2\0\7\0\0\0\2\0\30\0\5\0\0\0\22\0\2\0\21\0\17\0\27\4\n\0\20\0\17\0\0\20\10", 492) = 492 30059 lseek(4, 60065363, SEEK_SET) = 60065363 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B\22\225F\204G#\0\0G#\0\0\37\0\0\0", 30) = 30 30059 lseek(4, 60065424, SEEK_SET) = 60065424 30059 read(4, "\312\376\272\276\0\0\0003\1$\3\37\377\377\377\3 \0\0\0\3@\0\0\0\10\0\26\10\0>\1\0\3()I\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\3()Z\1\0\4(I)I\1\0\4(I)V\1\0\5(II)I\1\0\25(Ljava/lang/Object;)I\1\0\25(Ljava/lang/Object;)V\1\0\25(Ljava/lang/Object;)Z\1\0'(Ljava/lang/Object;Ljava/lang/Object;)Z\1\0\25(Ljava/lang/String;)V\1\0\v(TK;TV;)TV;\1\0\t(TK;TV;)V\1\0\10\1\0\6\1\0\23Capacity exhausted.\1\0\4Code\1\0\rConstantValue\1\0\20DEFAULT_CAPACITY\1\0\5Entry\1\0\nExceptions\1\0\1I\1\0\fInnerClasses\1\0\1J\1\0\17LineNumberTable\1\0\22Ljava/lang/Object;\1\0\20MAXIMUM_CAPACITY\1\0\20MINIMUM_CAPACITY\1\0\10NULL_KEY\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\23[Ljava/lang/Object;\1\0\naccess$000\1\0\naccess$010\1\0\naccess$100\1\0\vaccess$1500\1\0\vaccess$1600\1\0\naccess$200\1\0\naccess$204\1\0\naccess$300\1\0\naccess$400\1\0\naccess$600\1\0\6append\1\0\10capacity\1\0\5clear\1\0\5clone\1\0\rcloseDeletion\1\0\vcontainsKey\1\0\17containsMapping\1\0\rcontainsValue\1\0\21defaultReadObject\1\0\22defaultWriteObject\1\0\10entrySet\1\0\6equals\1\0\35expectedMaxSize is negative: \1\0\3get\1\0\6getKey\1\0\10getValue\1\0\7hasNext\1\0\4hash\1\0\10hashCode\1\0\20identityHashCode\1\0\4init\1\0\7isEmpty\1\0\10iterator\1\0\23java/io/IOException\1\0\31java/io/Obje"..., 9031) = 9031 30059 lseek(4, 59690905, SEEK_SET) = 59690905 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B4\226E2\1\7\0\0\1\7\0\0&\0\0\0", 30) = 30 30059 lseek(4, 59690973, SEEK_SET) = 59690973 30059 read(4, "\312\376\272\276\0\0\0003\0T\1\0\3()I\1\0\3()V\1\0\3()Z\1\0\25(Ljava/lang/Object;)I\1\0\25(Ljava/lang/Object;)Z\1\0\6\1\0\4Code\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\tSignature\1\0\nSourceFile\1\0\rStackMapTable\1\0\naccess$000\1\0\5clear\1\0\10contains\1\0\vcontainsKey\1\0\7hasNext\1\0\10hashCode\1\0\20identityHashCode\1\0\10iterator\1\0\20java/lang/System\1\0\25java/util/AbstractSet\1\0\24java/util/Collection\1\0\31java/util/IdentityHashMap\1\0\33java/util/IdentityHashMap$1\1\0%java/util/IdentityHashMap$KeyIterator\1\0 java/util/IdentityHashMap$KeySet\1\0\22java/util/Iterator\1\0\4next\1\0\6remove\1\0\tremoveAll\1\0\4size\1\0\6this$0\7\0\25\7\0\26\7\0\27\7\0\30\7\0\31\7\0\32\7\0\33\7\0\34\1\0\34Ljava/util/AbstractSet;\1\0\33Ljava/util/IdentityHashMap;\1\0\24()Ljava/lang/Object;\1\0\31(Ljava/util/Collection;)Z\1\0\34(Ljava/util/Collection<*>;)Z\1\0\36(Ljava/util/IdentityHashMap;)I\1\0\36(Ljava/util/IdentityHashMap;)V\1\0\26()Ljava/util/Iterator;\1\0\33()Ljava/util/Iterator;\1\0&(Ljava/lang/Object;)Ljava/lang/Object;\1\0;(Ljava/util/IdentityHashMap;Ljava/util/IdentityHashMap$1;)V\f\0!\0+\f\0\6\0\2\f\0\16\0\2\f\0\36\0\2\f\0\21\0\3\f\0\35\0,\f\0\23\0\4\f\0\17\0\5\f\0\20\0\5\f\0\r\0/\f\0\6\0000\f\0\24\0001\f\0\36\0003\f\0\6\0004\t\0(\0005\n\0\"\0;\n\0"..., 1793) = 1793 30059 write(2, "java.lang.reflect.InvocationTargetException", 43) = 43 30059 write(2, "\n", 1) = 1 30059 write(2, "\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)", 63) = 63 30059 write(2, "\n", 1) = 1 30059 write(2, "\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)", 81) = 81 30059 write(2, "\n", 1) = 1 30059 write(2, "\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)", 89) = 89 30059 write(2, "\n", 1) = 1 30059 write(2, "\tat java.lang.reflect.Method.invoke(Method.java:606)", 52) = 52 30059 write(2, "\n", 1) = 1 30059 write(2, "\tat net.sf.cram.CramTools.invoke(CramTools.java:93)", 51) = 51 30059 write(2, "\n", 1) = 1 30059 write(2, "\tat net.sf.cram.CramTools.main(CramTools.java:123)", 50) = 50 30059 write(2, "\n", 1) = 1 30059 write(2, "Caused by: java.lang.RuntimeException: java.net.ConnectException: Connection timed out", 86) = 86 30059 write(2, "\n", 1) = 1 30059 write(2, "\tat net.sf.cram.ref.ReferenceSource.getReferenceBases(ReferenceSource.java:113)", 79) = 79 30059 write(2, "\n", 1) = 1 30059 write(2, "\tat net.sf.cram.Bam2Cram.main(Bam2Cram.java:282)", 48) = 48 30059 write(2, "\n", 1) = 1 30059 write(2, "\t... 6 more", 11) = 11 30059 write(2, "\n", 1) = 1 30059 write(2, "Caused by: java.net.ConnectException: Connection timed out", 58) = 58 30059 write(2, "\n", 1) = 1 30059 write(2, "\tat java.net.PlainSocketImpl.socketConnect(Native Method)", 57) = 57 30059 write(2, "\n", 1) = 1 30059 write(2, "\tat java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)", 80) = 80 30059 write(2, "\n", 1) = 1 30059 write(2, "\tat java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)", 87) = 87 30059 write(2, "\n", 1) = 1 30059 write(2, "\tat java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)", 78) = 78 30059 write(2, "\n", 1) = 1 30059 write(2, "\tat java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)", 62) = 62 30059 write(2, "\n", 1) = 1 30059 write(2, "\tat java.net.Socket.connect(Socket.java:579)", 44) = 44 30059 write(2, "\n", 1) = 1 30059 write(2, "\tat java.net.Socket.connect(Socket.java:528)", 44) = 44 30059 write(2, "\n", 1) = 1 30059 write(2, "\tat sun.net.NetworkClient.doConnect(NetworkClient.java:180)", 59) = 59 30059 write(2, "\n", 1) = 1 30059 write(2, "\tat sun.net.www.http.HttpClient.openServer(HttpClient.java:378)", 63) = 63 30059 write(2, "\n", 1) = 1 30059 write(2, "\tat sun.net.www.http.HttpClient.openServer(HttpClient.java:473)", 63) = 63 30059 write(2, "\n", 1) = 1 30059 write(2, "\tat sun.net.www.http.HttpClient.(HttpClient.java:203)", 59) = 59 30059 write(2, "\n", 1) = 1 30059 write(2, "\tat sun.net.www.http.HttpClient.New(HttpClient.java:290)", 56) = 56 30059 write(2, "\n", 1) = 1 30059 write(2, "\tat sun.net.www.http.HttpClient.New(HttpClient.java:306)", 56) = 56 30059 write(2, "\n", 1) = 1 30059 write(2, "\tat sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:995)", 92) = 92 30059 write(2, "\n", 1) = 1 30090 <... futex resumed> ) = -1 ETIMEDOUT (Connection timed out) 30059 write(2, "\tat sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:931)", 88 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1 30059 <... write resumed> ) = 88 30090 <... futex resumed> ) = 0 30090 futex(0x7fb31444a754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1412091235, 892723000}, ffffffff 30059 write(2, "\n", 1) = 1 30059 write(2, "\tat sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:849)", 83) = 83 30059 write(2, "\n", 1) = 1 30059 write(2, "\tat sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1299)", 91) = 91 30059 write(2, "\n", 1) = 1 30059 write(2, "\tat java.net.URL.openStream(URL.java:1037)", 42) = 42 30059 write(2, "\n", 1) = 1 30059 write(2, "\tat net.sf.cram.ref.ReferenceSource.findBasesByMD5(ReferenceSource.java:158)", 76) = 76 30059 write(2, "\n", 1) = 1 30059 write(2, "\tat net.sf.cram.ref.ReferenceSource.getReferenceBases(ReferenceSource.java:111)", 79) = 79 30059 write(2, "\n", 1) = 1 30059 write(2, "\t... 7 more", 11) = 11 30059 write(2, "\n", 1) = 1 30059 mmap(0x7fb31b1f9000, 12288, PROT_NONE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x7fb31b1f9000 30059 rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0 30059 sched_getaffinity(30059, 32, {ffffffff, 0, 0, 0}) = 32 30059 sched_getaffinity(30059, 32, {ffffffff, 0, 0, 0}) = 32 30059 gettid() = 30059 30059 rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0 30059 rt_sigprocmask(SIG_UNBLOCK, [HUP INT ILL BUS FPE SEGV USR2 TERM], NULL, 8) = 0 30059 rt_sigprocmask(SIG_BLOCK, [QUIT], NULL, 8) = 0 30059 mmap(0x7fb31b1f9000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fb31b1f9000 30059 mprotect(0x7fb31b1f9000, 12288, PROT_NONE) = 0 30059 lseek(4, 60085646, SEEK_SET) = 60085646 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B-}\313\324\214\v\0\0\214\v\0\0\30\0\0\0", 30) = 30 30059 lseek(4, 60085700, SEEK_SET) = 60085700 30059 read(4, "\312\376\272\276\0\0\0003\0r\10\0\4\10\0\26\10\0\27\1\0\23 already registered\1\0\24()Ljava/lang/String;\1\0\3()V\1\0\4(I)V\1\0\25(Ljava/lang/String;)V\1\0\4(Z)V\1\0\10\1\0\6\1\0\4Code\1\0\rConstantValue\1\0\nFINALIZERS\1\0\5HOOKS\1\0\1I\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\22Ljava/lang/Object;\1\0\20MAX_SYSTEM_HOOKS\1\0\7RUNNING\1\0\26Shutdown hook at slot \1\0\24Shutdown in progress\1\0\nSourceFile\1\0\rStackMapTable\1\0\1Z\1\0\25[Ljava/lang/Runnable;\1\0\3add\1\0\6append\1\0\22currentRunningHook\1\0\4exit\1\0\4halt\1\0\5halt0\1\0\10haltLock\1\0\5hooks\1\0\37java/lang/IllegalStateException\1\0\27java/lang/InternalError\1\0\20java/lang/Object\1\0\22java/lang/Runnable\1\0\22java/lang/Shutdown\1\0\24java/lang/Shutdown$1\1\0\27java/lang/Shutdown$Lock\1\0\27java/lang/StringBuilder\1\0\25java/lang/ThreadDeath\1\0\23java/lang/Throwable\1\0\4lock\1\0\3run\1\0\20runAllFinalizers\1\0\23runFinalizersOnExit\1\0\10runHooks\1\0\10sequence\1\0\26setRunFinalizersOnExit\1\0\10shutdown\1\0\5state\1\0\10toString\3\0\0\0\0\3\0\0\0\1\3\0\0\0\2\3\0\0\0\n\7\0$\7\0%\7\0&\7\0'\7\0(\7\0)\7\0*\7\0+\7\0,\7\0-\1\0\31(IZLjava/lang/Runnable;)V\1\0\31(Ljava/lang/Shutdown$1;)V\1\0\34(I)Ljava/lang/StringBuilder;\1\0-(Ljava/lang/String;)Ljava/lang/StringBuilder;\f"..., 2956) = 2956 30059 lseek(4, 60076569, SEEK_SET) = 60076569 30059 read(4, "PK\3\4\n\0\0\0\0\0005\246\305B(G12y\1\0\0y\1\0\0\35\0\0\0", 30) = 30 30059 lseek(4, 60076628, SEEK_SET) = 60076628 30059 read(4, "\312\376\272\276\0\0\0003\0\25\1\0\3()V\1\0\6\1\0\4Code\1\0\fInnerClasses\1\0\17LineNumberTable\1\0\nSourceFile\1\0\20java/lang/Object\1\0\22java/lang/Shutdown\1\0\24java/lang/Shutdown$1\1\0\27java/lang/Shutdown$Lock\7\0\7\7\0\10\7\0\t\7\0\n\1\0\31(Ljava/lang/Shutdown$1;)V\f\0\2\0\1\n\0\v\0\20\n\0\16\0\20\1\0\4Lock\1\0\rShutdown.java\0 \0\16\0\v\0\0\0\0\0\2\0\2\0\2\0\1\0\1\0\3\0\0\0\35\0\1\0\1\0\0\0\5*\267\0\21\261\0\0\0\1\0\5\0\0\0\6\0\1\0\0\0<\20\0\0\2\0\17\0\1\0\3\0\0\0\35\0\1\0\2\0\0\0\5*\267\0\22\261\0\0\0\1\0\5\0\0\0\6\0\1\0\0\0<\0\2\0\6\0\0\0\2\0\24\0\4\0\0\0\22\0\2\0\16\0\f\0\23\0\n\0\r\0\f\0\0\20\10", 377) = 377 30059 futex(0x7fb31444a754, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x7fb31444a750, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1} 30090 <... futex resumed> ) = 0 30059 <... futex resumed> ) = 1 30090 futex(0x7fb31444a728, FUTEX_WAIT_PRIVATE, 2, NULL 30059 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1 30090 <... futex resumed> ) = -1 EAGAIN (Resource temporarily unavailable) 30059 <... futex resumed> ) = 0 30090 futex(0x7fb31444a728, FUTEX_WAKE_PRIVATE, 1 30059 futex(0x7fb314009154, FUTEX_WAIT_PRIVATE, 1, NULL 30090 <... futex resumed> ) = 0 30090 futex(0x7fb314009154, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x7fb314009150, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1}) = 1 30059 <... futex resumed> ) = 0 30090 madvise(0x7fb28ed3d000, 1028096, MADV_DONTNEED 30059 futex(0x7fb314009128, FUTEX_WAKE_PRIVATE, 1 30090 <... madvise resumed> ) = 0 30059 <... futex resumed> ) = 0 30090 _exit(0) = ? 30059 futex(0x7fb31a6d0f00, FUTEX_WAKE_PRIVATE, 1 30086 <... futex resumed> ) = 0 30059 <... futex resumed> ) = 1 30059 mmap(0x7fb31b1f9000, 12288, PROT_NONE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x7fb31b1f9000 30059 futex(0x7fb3143e1954, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x7fb3143e1950, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1} 30086 mmap(0x7fb28f141000, 12288, PROT_NONE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0 30059 <... futex resumed> ) = 1 30086 <... mmap resumed> ) = 0x7fb28f141000 30083 <... futex resumed> ) = 0 30086 rt_sigprocmask(SIG_SETMASK, [QUIT], 30083 futex(0x7fb3143e1928, FUTEX_WAIT_PRIVATE, 2, NULL 30086 <... rt_sigprocmask resumed> NULL, 8) = 0 30083 <... futex resumed> ) = -1 EAGAIN (Resource temporarily unavailable) 30086 madvise(0x7fb28f141000, 1028096, MADV_DONTNEED 30083 futex(0x7fb3143e1928, FUTEX_WAKE_PRIVATE, 1) = 0 30086 <... madvise resumed> ) = 0 30083 mprotect(0x7fb31b316000, 4096, PROT_READ 30086 _exit(0) = ? 30083 <... mprotect resumed> ) = 0 30083 mprotect(0x7fb31b316000, 4096, PROT_READ|PROT_WRITE) = 0 30083 mprotect(0x7fb31b317000, 4096, PROT_NONE) = 0 30083 madvise(0x7fb28f444000, 1028096, MADV_DONTNEED) = 0 30083 _exit(0) = ? 30059 futex(0x7fb3143e1928, FUTEX_WAKE_PRIVATE, 1) = 0 30059 rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0 30059 unlink("/tmp/hsperfdata_jkb/30058") = 0 30059 madvise(0x7fb31b1f9000, 1028096, MADV_DONTNEED) = 0 30059 _exit(0) = ? 30058 <... futex resumed> ) = 0 30058 close(3) = 0 30058 exit_group(1) = ? io_lib-1.14.6/tests/data/xx#supplementary.sam0000644000031500020650000000044712473067163016103 00000000000000@SQ SN:xx LN:30 @SQ SN:yy LN:20 a1 67 xx 1 1 4M = 6 20 AAAA * a1 227 xx 6 1 4M = 12 -20 AAAA * a1 2291 xx 12 1 4M = 17 -20 TTTT * a1 147 xx 17 1 4M = 1 -20 TTTT * a1 323 yy 1 1 4M = 6 20 AAAA * a1 483 yy 6 1 4M = 12 -20 AAAA * a1 2547 yy 12 1 4M = 17 -20 TTTT * a1 403 yy 17 1 4M = 1 -20 TTTT * io_lib-1.14.6/tests/data/ce#5b_java.sam0000644000031500020650000000323112617156041014416 00000000000000I 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 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 AS:i:-18 XS: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 AS:i:-18 XS: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 AS:i:-18 XS: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 AS:i:-18 XS:i:-18 YT:Z:UU VI 0 CHROMOSOME_V 10 1 7S20M1D23M10I30M10S * 0 0 AGCCTAAGCCTAAGCCTAAGCCTAAGCTAAGCCTAAGCCTAAGCCTAAGCTTTTTTTTTTCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA * VI 256 CHROMOSOME_V 10 1 7S20M1D23M10I30M10S * 0 0 * * io_lib-1.14.6/tests/data/aux#aux_java.cram0000644000031500020650000000727612617157266015304 00000000000000CRAMaux#aux.sam ¢ …£„„1@HD VN:1.4 SO:unsorted @SQ SN:Sheila LN:20 M5:7ddd8a4b4f2c1dec43476a738b1a9b72 @RG ID:ID SM:foo @PG ID:0 CL:java /nfs/users/nfs_j/jkb/work/cram/cramtools/cramtools-3.0.jar cram --capture-all-tags -n -Q -R tests/data/aux.fa -I tests/data/aux#aux.sam -O tests/data/aux#aux_java.cram PN:cramtools VN:3.0-b39 „¤84Q „]Ö»r „R„R€’RNAPRRSMTD~BCBBIBBSBBcBBiBBsBA!AACAAcAF0fF1fF2fF3fF4fF5fF6fH0BH1BI0cI1cI2cI3CI4CI5sI6sI7SI8SI9iIAiZ0Zi1ci2ci3ci4si5si6si7si8ii9iiAiiBi—BFAPFP FCQSDLBATN€Ï)àA!AàACAàAcAàBCBàBIBàBSBàBcBàBiBàBsBàF0fàF1fàF2fàF3fàF4fàF5fàF6fàH0BàH1BàI0càI1càI2càI3CàI4CàI5sàI6sàI7SàI8SàI9iàIAiàZ0Zài1cài2cài3cài4sài5sài6sài7sài8iài9iàiAiàiBi)NF RL RGMQ VRN NPTSFNBSINTC#MFNSÿÿÿÿÿCFTLRIRSSCHC PD ‚#)àA!AàACAàAcAàBCB àBCBàBCBàBIB àBIBàBIBàBSB àBSBàBSBàBcB àBcBàBcBàBiB àBiBàBiBàBsB àBsBàBsBàF0fàF1fàF2fàF3fàF4fàF5fàF6fàH0B àH0BàH0BàH1B àH1BàH1BàI0càI1càI2càI3CàI4CàI5sàI6sàI7SàI8SàI9iàIAiàZ0Z àZ0ZàZ0Zài1cài2cài3cài4sài5sài6sài7sài8iài9iàiAiàiBiÈOÝt&&àH0BàH1BàBcBàZ0ZàBsBàBCBàBSBàBiBàBIBÿÿÿÿÿ}ÝŠKO,ìCGjs‹›rB1BcÚ9£î^kK 2U¿ï•`¯Ø S1BcÚ9£î^kK 2U¿ï•`¯Ø B5Bc@σá5~︽ñT(PÖm€Ö ä W܃ô©!ÓléÎGÐÑ<]…ò°ÿƒÒ‡~ì/c¹1½GAz¥82zù'Ú>S5Bc@σá5~︽ñT(PÖm€Ö ä W܃ô©!ÓléÎGÐÑ<]…ò°ÿƒÒ‡~ì/c¹1½GAz¥82zù'Ú>BDBc™¢¹SDBcNï3ÉõRðø9I¸àH0B<3†Û‚I‚Ic‚Iª‚IÿcÿcÿI:€’<€8€ýó,Q²øØŠÆÀ¼$  ÿ ÿ€€€ €U`ä/àH1BI @ …ÿ‚ ‚¾‚Þ„ÿ cÿcÿ­ÿ¾ïÿÞ­ÿÿGÿEMP. ÙÈ‹s+JMñỄnúãLÎãäÿ€€€€×¯ƒ ‡ÿ ˆ ÿ€€‰]s€oÿo…¸‚I€’$$€’€ƒmÿ‚Iƒ’Ç€ã!€ãC€ãc€ã€ã€‚ª€ãÿ‚ª‡ÿ„ÿ„‡b‚v$‚vÕ‚vÿ;’ÿ!‡ÿˆ$ÿ?ÿCÿ`ÿcÿŠª…U€‚…ÿ„?‚¿‚ÿ’!‡ÿ¡ˆ¡ÿ«`‡ÿàˆ¼«ÿ¿ÿÕ¼ÿàÿÿ$ƒmƒm‚Iÿ…¸îµW!ÿYŸ&HîÕ_YzFÏS1õç_ð:׉ö%Y…úÇajìÃ1àBcBF = …ÿ‚ ‚‚€„ÿ cÿcÿ€ÿÿÿGÿEMP .L”ó’àZ0ZK B „ „a‡ÿ sÿ sÿacÿceÿe‡ÿ ˆpaÿspÿ@HDÈ¥25”àBsBKB‰š ™€ƒ3ÿ™€ÿÿ sÿsÿ€‡ÿˆÿÿ³‰.6PuÇU÷½†SK½÷±àBCBB 9 ‰ÿ‚ ‚‚ÿ cÿcÿ€ÿ€ÿÿÿKÿILéG~èg-EâOàBSBNE‰› ™™€™ÿ™ÿ sÿsÿÿ€ÿÿÿ‡ÿÿˆ´‰Q‡OÖä ïK[d÷?èRàBiBTKŠÿ€‚ÿÿÿiÿiÿ€‡ÿˆÿ…UÿŠªÜ¥ ¯Eî3kºªv¦»YØždàBIBJA‹n$€$ÿ‚Iÿiÿiÿÿ€ÿÿÿ‚ªÿU©Ó Úó¯ nJ?·Ã÷#AäÿÿÿÿàEOF½ÙOîcKio_lib-1.14.6/tests/data/aux#aux_java.sam0000644000031500020650000000124212617157642015123 00000000000000Fred 16 Sheila 1 86 10M * 0 0 GCTAGCTCAG ********** A!:A:! F0:f:-1.0 H0:B:c,-86 I0:i:0 Z0:Z:space space F1:f:0.0 H1:B:c,-34,-83,0,-66,-17 I1:i:1 i1:i:-1 F2:f:1.0 I2:i:127 i2:i:-127 F3:f:9.9E-19 I3:i:128 i3:i:-128 F4:f:-9.9E-19 I4:i:255 i4:i:-255 F5:f:9.9E19 I5:i:256 i5:i:-256 F6:f:-9.9E19 I6:i:32767 i6:i:-32767 I7:i:32768 i7:i:-32768 I8:i:65535 i8:i:-65535 I9:i:65536 i9:i:-65536 IA:i:2147483647 iA:i:-2147483647 iB:i:-2147483648 AC:A:C RG:Z:ID Ac:A:c Jim 16 Sheila 11 11 10M * 0 0 AAAAAAAAAA * BC:B:c,0,127,-128,-1 BI:B:i,0,2147483647,-2147483648,-1 BS:B:s,0,32767,-32768,-1 Bc:B:c,-128,-127,0,127 Bi:B:i,-2147483648,-2147483647,0,2147483647 Bs:B:s,-32768,-32767,0,32767 io_lib-1.14.6/tests/data/xx#large_aux.cram0000644000031500020650000005421412617157713015306 00000000000000CRAMxx#large_aux.sam ¢ …£„„@HD VN:1.4 @SQ SN:xx LN:30 M5:75af4295ad451a1e871f86c0f65d221e @PG ID:0 CL:java /nfs/users/nfs_j/jkb/work/cram/cramtools/cramtools-3.0.jar cram --capture-all-tags -n -Q -R tests/data/xx.fa -I tests/data/xx#large_aux.sam -O tests/data/xx#large_aux.cram PN:cramtools VN:3.0-b39 ÌfkÉT  «íû潫â«â‰RNAPRRSMTDˆþZZZaacabcaccadcaecafcagcahcaicajcakcalcamcancaocapcaqcarcascatcaucavcawcaxcaycazcbacbbcbccbdcbecbfcbgcbhcbicbjcbkcblcbmcbncbocbpcbqcbrcbscbtcbucbvcbwcbxcbycbzccaccbcccccdcceccfccgcchcciccjcckcclccmccnccoccpccqccrccscctccuccvccwccxccycczcdacdbcdccddcdecdfcdgcdhcdicdjcdkcdlcdmcdncdocdpcdqcdrcdscdtcducdvcdwcdxcdycdzceacebceccedceecefcegcehceicejcekcelcemcenceocepceqcercescetceucevcewcexceycezcfacfbcfccfdcfecffcfgcfhcficfjcfkcflcfmcfncfocfpcfqcfrcfscftcfucfvcfwcfxcfycfzcgacgbcgccgdcgecgfcggcghcgicgjcgkcglcgmcgncgocgpcgqcgrcgscgtcgucgvcgwcgxcgycgzchachbchcchdchechfchgchhchichjchkchlchmchnchochpchqchrchschtchuchvchwchxchychzciacibciccidciecifcigcihciicijcikcilcimcinciocipciqcirciscitciucivciwcixciycizcjacjbcjccjdcjecjfcjgcjhcjicjjcjkcjlcjmcjncjocjpcjqcjrcjscjtcjucAacAbcAccAdcAecAfcAgcAhcAicAjcAkcAlcAmcAncAocApcAqcArcAscAtcAucAvcAwcAxcAycAzcBacBbcBccBdcBecBfcBgcBhcBicBjcBkcBlcBmcBncBocBpcBqcBrcBscBtcBucBvcBwcBxcBycBzcCacCbcCccCdcCecCfcCgcChcCicCjcCkcClcCmcCncCocCpcCqcCrcCscCtcCucCvcCwcCxcCycCzcDacDbcDccDdcDecDfcDgcDhcDicDjcDkcDlcDmcDncDocDpcDqcDrcDscDtcDucDvcDwcDxcDycDzcEacEbcEccEdcEecEfcEgcEhcEicEjcEkcElcEmcEncEocEpcEqcErcEscEtcEucEvcEwcExcEycEzcFacFbcFccFdcFecFfcFgcFhcFicFjcFkcFlcFmcFncFocFpcFqcFrcFscFtcFucFvcFwcFxcFycFzcGacGbcGccGdcGecGfcGgcGhcGicGjcGkcGlcGmcGncGocGpcGqcGrcGscGtcGucGvcGwcGxcGycGzcHacHbcHccHdcHecHfcHgcHhcHicHjcHkcHlcHmcHncHocHpcHqcHrcHscHtcHucHvcHwcHxcHycHzcIacIbcIccIdcIecIfcIgcIhcIicIjcIkcIlcImcIncIocIpcIqcIrcIscItcIucIvcIwcIxcIycIzcJacJbcJccJdcJecJfcJgcJhcJicJjcJkcJlcJmcJncJocJpcJqcJrcJscJtcJucaacabcaccadcaecafcagcahcaicajcakcalcamcancaocapcaqcarcascatcaucavcawcaxcaycazcbacbbcbccbdcbecbfcbgcbhcbicbjcbkcblcbmcbncbocbpcbqcbrcbscbtcbucbvcbwcbxcbycbzccaccbcccccdcceccfccgcchcciccjcckcclccmccnccoccpccqccrccscctccuccvccwccxccycczcdacdbcdccddcdecdfcdgcdhcdicdjcdkcdlcdmcdncdocdpcdqcdrcdscdtcducdvcdwcdxcdycdzceacebceccedceecefcegcehceicejcekcelcemcenceocepceqcercescetceucevcewcexceycezcfacfbcfccfdcfecffcfgcfhcficfjcfkcflcfmcfncfocfpcfqcfrcfscftcfucfvcfwcfxcfycfzcgacgbcgccgdcgecgfcggcghcgicgjcgkcglcgmcgncgocgpcgqcgrcgscgtcgucgvcgwcgxcgycgzchachbchcchdchechfchgchhchichjchkchlchmchnchochpchqchrchschtchuchvchwchxchychzciacibciccidciecifcigcihciicijcikcilcimcinciocipciqcirciscitciucivciwcixciycizcjacjbcjccjdcjecjfcjgcjhcjicjjcjkcjlcjmcjncjocjpcjqcjrcjscjtcjucŠÍBFAPFP FCQSDLBATN‰ÿÿàAacàAbcàAccàAdcàAecàAfcàAgcàAhcàAicàAjcàAkcàAlcàAmcàAncàAocàApcàAqcàArcàAscàAtcàAucàAvcàAwcàAxcàAycàAzcàBacàBbcàBccàBdcàBecàBfcàBgcàBhcàBicàBjcàBkcàBlcàBmcàBncàBocàBpcàBqcàBrcàBscàBtcàBucàBvcàBwcàBxcàBycàBzcàCacàCbcàCccàCdcàCecàCfcàCgcàChcàCicàCjcàCkcàClcàCmcàCncàCocàCpcàCqcàCrcàCscàCtcàCucàCvcàCwcàCxcàCycàCzcàDacàDbcàDccàDdcàDecàDfcàDgcàDhcàDicàDjcàDkcàDlcàDmcàDncàDocàDpcàDqcàDrcàDscàDtcàDucàDvcàDwcàDxcàDycàDzcàEacàEbcàEccàEdcàEecàEfcàEgcàEhcàEicàEjcàEkcàElcàEmcàEncàEocàEpcàEqcàErcàEscàEtcàEucàEvcàEwcàExcàEycàEzcàFacàFbcàFccàFdcàFecàFfcàFgcàFhcàFicàFjcàFkcàFlcàFmcàFncàFocàFpcàFqcàFrcàFscàFtcàFucàFvcàFwcàFxcàFycàFzcàGacàGbcàGccàGdcàGecàGfcàGgcàGhcàGicàGjcàGkcàGlcàGmcàGncàGocàGpcàGqcàGrcàGscàGtcàGucàGvcàGwcàGxcàGycàGzcàHacàHbcàHccàHdcàHecàHfcàHgcàHhcàHicàHjcàHkcàHlcàHmcàHncàHocàHpcàHqcàHrcàHscàHtcàHucàHvcàHwcàHxcàHycàHzcàIacàIbcàIccàIdcàIecàIfcàIgcàIhcàIicàIjcàIkcàIlcàImcàIncàIocàIpcàIqcàIrcàIscàItcàIucàIvcàIwcàIxcàIycàIzcàJacàJbcàJccàJdcàJecàJfcàJgcàJhcàJicàJjcàJkcàJlcàJmcàJncàJocàJpcàJqcàJrcàJscàJtcàJucàZZZàaacàabcàaccàadcàaecàafcàagcàahcàaicàajcàakcàalcàamcàancàaocàapcàaqcàarcàascàatcàaucàavcàawcàaxcàaycàazcàbacàbbcàbccàbdcàbecàbfcàbgcàbhcàbicàbjcàbkcàblcàbmcàbncàbocàbpcàbqcàbrcàbscàbtcàbucàbvcàbwcàbxcàbycàbzcàcacàcbcàcccàcdcàcecàcfcàcgcàchcàcicàcjcàckcàclcàcmcàcncàcocàcpcàcqcàcrcàcscàctcàcucàcvcàcwcàcxcàcycàczcàdacàdbcàdccàddcàdecàdfcàdgcàdhcàdicàdjcàdkcàdlcàdmcàdncàdocàdpcàdqcàdrcàdscàdtcàducàdvcàdwcàdxcàdycàdzcàeacàebcàeccàedcàeecàefcàegcàehcàeicàejcàekcàelcàemcàencàeocàepcàeqcàercàescàetcàeucàevcàewcàexcàeycàezcàfacàfbcàfccàfdcàfecàffcàfgcàfhcàficàfjcàfkcàflcàfmcàfncàfocàfpcàfqcàfrcàfscàftcàfucàfvcàfwcàfxcàfycàfzcàgacàgbcàgccàgdcàgecàgfcàggcàghcàgicàgjcàgkcàglcàgmcàgncàgocàgpcàgqcàgrcàgscàgtcàgucàgvcàgwcàgxcàgycàgzcàhacàhbcàhccàhdcàhecàhfcàhgcàhhcàhicàhjcàhkcàhlcàhmcàhncàhocàhpcàhqcàhrcàhscàhtcàhucàhvcàhwcàhxcàhycàhzcàiacàibcàiccàidcàiecàifcàigcàihcàiicàijcàikcàilcàimcàincàiocàipcàiqcàircàiscàitcàiucàivcàiwcàixcàiycàizcàjacàjbcàjccàjdcàjecàjfcàjgcàjhcàjicàjjcàjkcàjlcàjmcàjncàjocàjpcàjqcàjrcàjscàjtcàjucÿ  NF RL RGÿÿÿÿÿMQRN NPTSFNBSINTC €ÿþMFNSÿÿÿÿÿCFTLRIRSSCHC PD —üÿàAacàAbcàAccàAdcàAecàAfcàAgcàAhcàAicàAjcàAkcàAlcàAmcàAncàAocàApcàAqcàArcàAscàAtcàAucàAvcàAwcàAxcàAycàAzcàBacàBbcàBccàBdcàBecàBfcàBgcàBhcàBicàBjcàBkcàBlcàBmcàBncàBocàBpcàBqcàBrcàBscàBtcàBucàBvcàBwcàBxcàBycàBzcàCacàCbcàCccàCdcàCecàCfcàCgcàChcàCicàCjcàCkcàClcàCmcàCncàCocàCpcàCqcàCrcàCscàCtcàCucàCvcàCwcàCxcàCycàCzcàDacàDbcàDccàDdcàDecàDfcàDgcàDhcàDicàDjcàDkcàDlcàDmcàDncàDocàDpcàDqcàDrcàDscàDtcàDucàDvcàDwcàDxcàDycàDzcàEacàEbcàEccàEdcàEecàEfcàEgcàEhcàEicàEjcàEkcàElcàEmcàEncàEocàEpcàEqcàErcàEscàEtcàEucàEvcàEwcàExcàEycàEzcàFacàFbcàFccàFdcàFecàFfcàFgcàFhcàFicàFjcàFkcàFlcàFmcàFncàFocàFpcàFqcàFrcàFscàFtcàFucàFvcàFwcàFxcàFycàFzcàGacàGbcàGccàGdcàGecàGfcàGgcàGhcàGicàGjcàGkcàGlcàGmcàGncàGocàGpcàGqcàGrcàGscàGtcàGucàGvcàGwcàGxcàGycàGzcàHacàHbcàHccàHdcàHecàHfcàHgcàHhcàHicàHjcàHkcàHlcàHmcàHncàHocàHpcàHqcàHrcàHscàHtcàHucàHvcàHwcàHxcàHycàHzcàIacàIbcàIccàIdcàIecàIfcàIgcàIhcàIicàIjcàIkcàIlcàImcàIncàIocàIpcàIqcàIrcàIscàItcàIucàIvcàIwcàIxcàIycàIzcàJacàJbcàJccàJdcàJecàJfcàJgcàJhcàJicàJjcàJkcàJlcàJmcàJncàJocàJpcàJqcàJrcàJscàJtcàJucàZZZ àZZZàZZZàaacàabcàaccàadcàaecàafcàagcàahcàaicàajcàakcàalcàamcàancàaocàapcàaqcàarcàascàatcàaucàavcàawcàaxcàaycàazcàbacàbbcàbccàbdcàbecàbfcàbgcàbhcàbicàbjcàbkcàblcàbmcàbncàbocàbpcàbqcàbrcàbscàbtcàbucàbvcàbwcàbxcàbycàbzcàcacàcbcàcccàcdcàcecàcfcàcgcàchcàcicàcjcàckcàclcàcmcàcncàcocàcpcàcqcàcrcàcscàctcàcucàcvcàcwcàcxcàcycàczcàdacàdbcàdccàddcàdecàdfcàdgcàdhcàdicàdjcàdkcàdlcàdmcàdncàdocàdpcàdqcàdrcàdscàdtcàducàdvcàdwcàdxcàdycàdzcàeacàebcàeccàedcàeecàefcàegcàehcàeicàejcàekcàelcàemcàencàeocàepcàeqcàercàescàetcàeucàevcàewcàexcàeycàezcàfacàfbcàfccàfdcàfecàffcàfgcàfhcàficàfjcàfkcàflcàfmcàfncàfocàfpcàfqcàfrcàfscàftcàfucàfvcàfwcàfxcàfycàfzcàgacàgbcàgccàgdcàgecàgfcàggcàghcàgicàgjcàgkcàglcàgmcàgncàgocàgpcàgqcàgrcàgscàgtcàgucàgvcàgwcàgxcàgycàgzcàhacàhbcàhccàhdcàhecàhfcàhgcàhhcàhicàhjcàhkcàhlcàhmcàhncàhocàhpcàhqcàhrcàhscàhtcàhucàhvcàhwcàhxcàhycàhzcàiacàibcàiccàidcàiecàifcàigcàihcàiicàijcàikcàilcàimcàincàiocàipcàiqcàircàiscàitcàiucàivcàiwcàixcàiycàizcàjacàjbcàjccàjdcàjecàjfcàjgcàjhcàjicàjjcàjkcàjlcàjmcàjncàjocàjpcàjqcàjrcàjscàjtcàjucEêq- àZZZÿÿÿÿÿÅ,nƒ&ÀqÚwfÜnžWB1BcÚ9£î^kK 2U¿ï•`¯Ø S1BcÚ9£î^kK 2U¿ï•`¯Ø B5Bc@σá5~︽ñT(PÖm€Ö ä W܃ô©!ÓléÎGÐÑ<]…ò°ÿƒÒ‡~ì/c¹1½GAz¥82zù'Ú>S5Bc@σá5~︽ñT(PÖm€Ö ä W܃ô©!ÓléÎGÐÑ<]…ò°ÿƒÒ‡~ì/c¹1½GAz¥82zù'Ú>BDBcmr¬ÖSDBcÎ86Ðq§(çŠÆÀ¼½¬½‹K4L4J2íDKL€Eôðÿ€€€€V‚# ÿ€€€€gÉ$š%…úúÿÿ¶‚Œ¶‚Œ¶‚ŒG”Œ¼YÁ|àZZZ¦VÍ»¤M&¤» !„z‡ÿÍ„!!×"("X"×#(#×$($×%(%×&(&×'('×(((×)()×*(*×+(+×,(,×-(-×.(.×/(/×0(0×1(1×2(2×3(3×4(4×5(5×6(6×7(7×8(8×9(9×:(:×;(;×<(<×=(=×>(>×?(?×@(@×A(A×B(B×C(C×D(D×E(E×F(F×G(G×H(H×I(I×J(J×K(K×L(L×M(M×N(N×O(O×P(P×Q(Q×R(R×S(S×T(T×U(U×V(V×W(W×X(X×Y(Y×Z(Z×[([×\(\×](]×^(^×_(_×`(`×a(a×b(b×c(c×d(d×e(e×f(f×g(g×h(h×i(i×j(j×k(k×l(l×m(m×n(n×o(o×p(p×q(q×r(r×s(s×t(t×u(u×v(v×w(w×x(x×y(y×z(!(zÖ¡!ÿ»¡ÿÍ»ÿøÏ7Ë@ €èE ÀcÁ|û/5P«á£äö0æKÚ¤äÔ.Bõ±FY„²;¦Í¨£­`y2 ¢ 5ÍÛÄc6ÉÙ KÒ³þìwÜZÕ•ùj!=1@Q]Bÿ²G*Ö¿qÞQA,‘NF—Ñÿ Ý‹/“Ä{7ɰß÷…ý=€š£k¯§¯")ýÅϲòc¢®„ÄÂ0/öê¼SÕê.¬£#Ƒף× {È& 2>ónÔ½³ð¦ÖNU·E£`“WHGC\{˜B™—¾,øÍ|Uož5·T1îÍŸLŠj¿½`&õ¹MÞfª89l”"#ô’ņÆë‡×¿Ì9¡¥“yGma}Ž~ñø¥>]–¾¿½NL¬ŠÒ[ya$Ý*nö¨ [¼ðÆ4Œ! hþ-'–¸5IGð&Ó'JÜðž©ëd;)š°ƒ·ZðQ2b.\'tEÅ“¸ˆ8;PŽA¿OЬQ7c0NgEnÿïý/Oʵ7•Ov÷æê'€{–Aò£?"²P/®UÇ‘0%å¼ðƒâêÛÈ0#ûC«Êâ öÕt KÃÔnäCÚðB<ÒNY·Y™±q;“,£Güæy˜Ío ¾æåÄ|¶YÙQ «³qy!]*«Z¨c’ùù!9Q˜˜,ÿ>°4ÖTŸUÞŸÚL‘û…Ñ`ì$‹¨Î{ªÂ2ß”?d=ýukÅÈ­¯‡ˆëò9'q„“/aæñS~.>é…Æ¾F£Ny{Ò<2$·¯Ôö1c¦¼zÚU!­c`þÊÛ§'{*ƒ—&½8ÍÇD<žÈb;çÁàƒÍÙQtðù\ZÍŒºuôîÞoê}6··žòÍ>¸‹O½E{¹—}f¸È[l¼dôEߨ<éœ[í¶Y'|BjÝÿézÊúédu?z¬´²Å3dŒwLDÙtf”¿÷‘×*½F)îý³IX}Ž_ÆD/´Ê-:„á~Ípu¤‹q °ó]¼›Ìû±ëQ¯æÁýÂlëÕöB·×ÉÇtàPÞâOeÄÑ7Qúçgü 릊;O—½˜•YæÞ4{qsøòó}…/Û‘0«ÒåÆ_1âj0ûÈ|™«AâPLtd>¶ÔéwÚqãÒÂáðˆ#Ò±¶ê3ŸeüÿͰÍpRæI¸ç¶²ì ¦óly«pa*rÈGcŸyù…Xƒ˜ð1°tÕaŸÓøøÚÆœÇûÉÙìg¯¨4Ð\Âyo¼?¤8ˆýÀlr·V<Õœý»©@°yˆÈô/x£ÓNäöHñ¢äš FV®ü¿Î}±_ÇC„ Dipîw³Õ;Ù$~ŒF|Ûž9|6…]€tdz˜0{=°¦øzƒå zù4{ ù}7Ú•¡ÓVZYzlÖÄv.HðÏ€q¸­²mˆî¬%bHh’Ö”k±ÔB°ua.I{÷U¢âÔ°½å¬þý‘7}s8D³á -Fj~?KÍE±¬öëwrmJ d¾¦í´‹+c‡×8I­[Us ˜¦‡Ö”\d©èŸ¯™§^ŒÒȯH”Û6øM™·"¥Œo å.?;ïGZ¨ÀŒ«;£F¼¶®‘“%â0‘’?Ñâú£°‡›–’#šlJJeöA1¢£(®Xaó³ªw"[ˆ¡œlàFà8ëÂJ–‡>íÃ9åTííÊô¼l7÷„¿§•ðÎÜFD.>Q[Nâû|›ƒP.V¨!!Á@NÁœ«—v+I¡É1ÔÄÍ,žïì+¡£Ììþštˆžü^o—Űâá¨Ns©ÝÑ÷"žÊY¬­û+,cœÇã@'«®Ë«i¼h ‚!Úô´0VOŽ çlI.ßî€SXÓ²œ§Ìâ5<}?h-=G”ýB—v».Óý÷9±Ôrý˜:ÿ¬¢Ïy‹¯8 ®EáÑÝ“F¬´<¬í•’ã²êÛ:YˆÎ—&ÀGÃSØ=£3…å|ZF­blx+ uoOÙ)õß ˆ•ú,±zOÔòF|=ÓnbKŠ×lwÓìzÄQ¦Åõ‹yÃ׎¿Ú[{X ˜ò&ÖšÔ·dò*Ò¯XQ|ŒÀ(«HZ ¸!ø—+$"-´º•mî?=™’GNŽ‘Œ¦½MSfç¶¾%³½’ã¼âƒ˜©‡´î’6×lòÝeIðç¢ösîS^À06]ÈÀ[\ÛœÙ,íþU¼ÜÈèÒ[ଙ$ƒØsÇÊH§}‘P|- +5´¸£—$ó0j9¡†.r!±¶ó„°oÿÍlUy =•EÍpO“6åK 4•þ[“êÜÉøˆÕBjWÃ1À$£]GœƒF“ˆxA# oFï9õ <¢“Œs•Éñر…‰òš/S|¯ë©b)”¤lÏÚLì¢ú‚QÂ2¿ê>†ÃÕÐÚ£\ ך0|/·&9/ÒóuÁ|³µ0«ÖEÔ¾!WŒ“$C…UºB°î,ƒÊ’UÌm‘Gõ†M’ÒçJMß¾e‹½9À¼s©Ž©&‡žäª×1ÎÝL»Šçj¸àÃ&âM8 68A#À"…‹Û’í¡1†[ïp×§ß5uM7Cy†'«}ž)ñئ]²µh“6¼L>n[¯(eÝšuX¨ k«ðŸæ¯ *s-oàÿ¸ëÎIÞ(pÓ‰°'JlnÈ©cö%)/?·]dÙ2 ð­ ¤Ñr:Àqþ[Aw¨¬‹uê0.z&nÊ'ý„=ŵq¡ÃvÔ±'»­ˆA@ØC?,6=P·PU+:[% éùðñ€ýÛ¼˜ûWŸ«¿§£öþÐK>yäèƒB ÝÜ{YÁ¬;µœ£~Oy Î “™óÄ­‹ÄÙ®ÇO³ ÚÅa:cZ›¹êù?!’¿SQèä‹ÿc^øÖ¥Þs§²‘˜o|ÑpR*‹ý8W{0ЉßåºQ=ÞTÂk>îZ¯{Púótåòê2%„Vu/ä§S¡Á.‰¸ÆhÉ£=ÆÕ{m>ô2õyEÔÖ9¦ 'ƒU‡KS`ø{‰{{¥F—‘̺ÍJÑZ<ózbñÈàØ ÙÙWÉù ®Œü%ÏîîêÈvÔ·t5–ÍŠQ#T½(û¨¹sÚQf>Ìl[r‰ôÀ)¨jù2¯Þó©¨y…àÅ›Õ_01d)2ñ&ÁÜuž '¾Ó¢v¹Ée9¾°£Œõ›F)IÆH¦_ÛN­´x¿2„Ð5pûc‹L ó”²ÌAÈw÷I¸YlÕž=BdÙÇéS²P‘i¿OE&Q7ü Ngé¸ÿmª/Ozd7•9/÷æ®<€{xPò;Ü­„þ/ÁËg‘€×›å©yKâW+00gv`R¶îâ:¤âtñ”ÇÔ†\ÚïΣÒn°/{O±ÈuÒÞtáü§®Ícyæζ)¼S ÝØyf²Ž*ÜÄc=ÐhùØ +˜ qœ°šúŸë«Úv:û޽¾ì“®:¨z .ÂàÏ?ûŽ7úá›NÐTìnÈô¥ û}œ´–Œ_µtÙ¥»ïvT¦;•Ã|#ësß”à”ÕIq†Øu‰öÞ}‡|Võ‹é£_I]…»0D9í©v¬¼Ó²ÒªòŒÔɈGI9ŃàŽÒÕ¦Î/cJÞQözRH³ñ"Fé§_*ÂK¬¢OˆKSêÔ<Û–Êö–£üÛÇ• ¦’šƒìá¹È´á&CÄ7ÔÊ¥ÅÕÛ%¦Ãñc“Ce¡p<ŽâY@Û™)¶ÊuIq¹e_,,´æk „ojžpåSU‹Yu¦ó«æÌ!-q«“’H_l¥ B9 .Ç,$P4|GOUˆ°7Lúg…ùL$È2OÎÐЕ2þTædç{uÇòò­Å“/ë…‘qmå¡ âñ¶r0ë$…½tâF¸ tÒ)Ô<ð)Ú¯9Òcx$§Ú4ݱcÍ ÛóOü'‡Î̓Yhæ8†E¶Dì[ Û‹yÁüÇ*ÍùfcðS—ùÍmÒô¸ü˜¹f°6ÃåŸòýÙÚ‹•ûO´sì{_“¨}ôøÂ[+ò?d˜;ú¤bNŽeçf¯¥1Ån}þ¶sŒjšÍµla©¥Ž«T ê†ÍÆër»}/2vÿ³éXŽ ŒH޾K¸Â V ðÖü‰QçÙ¤¡Qò°ì‰&›t?'ëü€Žæ—BQÂá´<ösÀúɈUàtӬ؜ÑÃ%çÇý÷ë«;«zK˜ ?ˆYÚ4Ô4VÂÊølÚÛ….” €šÒ²ö¹1&žÔ|hÜÅA”»¦B(“¶.=pw÷\ãÔÛð¬TÊÒß¹8eáuk°F«jR<ÝSç’ØuÛlÎñ-aÀ´GSMHy3Ô¥X| ƒ­s+à|aOšˆøÇ ‹ùÙú–Èz:Ð\Äý¼=kƒ‹K 5ñêw –5ѦÝÙ–‹ˆ×ó…‡[Éq‰˜ŸãWÖ“fZd¸ %¯9ëñŒ2¸Ha8BøX¤™"0d”[Iã?Qç{Gò4 Œvѽa¶ ™Ÿ%a’ w•âQŸ~‡Ó’YùŒlj´ÅeCl´¢_Ž•® „6¯Á\cÝv[ôÕòíä÷D2£ÐŸ06/¾7ÀM“9­¥Uœö ÎʯzZm›…«†Øº£Ò¡_®ß`xâ‹£\?À ÷úŽF×›‡­±#ªƒJª÷öŠ,Ÿ£àŦ]eó }w#•$ˆ‹y0l¡žj8ïe>Jß)í10å7.ÀÊ'-*7в§Ø½{ܵÿ>6’N>¿®|(|iPukŠ2Áæ*£T«àÑ´vëQÔÉ(9RÖ°õ n‹Ýö…¤j? ÿdzlB”Pú7ÍðZGúN[×rÑw° žu³©Yz¸Î+'ð‰œ=g¿'¡gd˱ƒÝh­¦ÌØcN06ã$ ß!$SG:œÂ…éâHÖ€}%f¼-£_WPŒ§—´ÉGAy9V¸ƒrš>Ýò£ÁñNÿœìGyÆßÑšE™Op“‹ÉëÇĺ•Ú€œê:·™ˆ¹¦î?Ñÿй£ä ^ ŒFzhx§ooY°õR\Æ8™•ŠÜ0±º©òT…%|îqbPÇÇltì2ÆoQÔ‚ò^ÃÁ× Úžá Éó{Æ3O·>~óÒyÄ>|Ïì«'Kу!Üt$¦º¥³ùîÌUD’Ñ¿‘z§ÑMçz¾WD½®¨é¼%8ê©é‘vÓ´×5ž ÝòçT}ÃûhÚM¼68¨ÀrFÛ)×[h<É{ÞéùÁ•=iy·Å–îx0%ÜŠ2x¸2ÜvN'|ÍŒ"ÁŒ ûkŒ²©÷° jTŸ§ ŸÚ¥”ûiA`ìµa¨§ªÂ½×”?7&úÞsÅN>¬‡P9¥õº“} GaŒ‡~µ…À>¥ $¾TºeNZÙÒë(%$»™öv——¼X Î3!ŽþÉm^Æ–‹"ed`ËúÙ}ƒYòd+Ž&gÙá'"ÌŽtEQ”Åß<:,ûú¼ûUÉÁŽÓŠœžCc% HE÷ÊéïÂÊKعOˆ&ÑêÔ–ÊŸ¦£LùÛÇH“ Tÿšƒ`å¹ÈìÌ&CjÔÊ-3ÅÕ¦Ã@8“CÜøp<“ÃY-ÕÛ™÷ùÊUMq¹ÿô,JækɦojJAåS½kYu|â«©·!-!Ÿ«|’HVØ¥)à9 S-,0.4|[~UˆP½L%õ…ùäY$È¥ÎÐm[2þM¢dzsu/'8­\¼Ië$zq‘O;²îñŒv!eo…"ÑFuH§µÊ<×éf¯x+¯cœvºzÚUêc7å8ÛH‰,'8áу™†8 vDjÎJo>­Á[èŠÍœä¯ðU›Íô¹tôÐÄÅ6-–Âò'ŠU‹Õ ´O³ï{êæ}µl²[^úTd<}f¡š^Oúî“€‹>(ºá¿Eîáh4Š7*I9¥tÂ%ø.c§‰ì¡ŽÈâÏè®@™ìJ¶£ƒ*Ku°àÍe3ˆE,‡‘G þš}žY­–UËMV¦„¢æúùq%È“·æë_H†ƒ ]Žë.ê|7$wÀGŒ³°UÉúA‘ÖLôú29BÐ Ú‡T"\u玸.òŒT“*Ó…|$» Va~rI%S$ ´wtÂ-ç xŽz)Ï)éŒ9Àئ$/ÀOüݭу ö]œOÎ3RÎz ˜h… üEºCÄ[_×I‹x(:Ç\;Xf÷n-—×®Uұ¨üƒu¬f÷Æ~埑ÙÙ¦DeûÆsઓ$´±ø0÷ôòj!IT>aÖÎ_þñ)üñ0¨oÀ™(ø*ÂS²»ˆ;{õ¯Ê¥F¥6 ®ââiv™¶q2¼QºT¦Ta´ªGÔkWR%=ÑŒ%gÝ•q¤×1ahig®SÕ ¢Ór¾!yúQ˜’rÿ>é ÖTè©ÞŸOΑP‰Ñ`“¿‹.d{ª Ýß”PÌ=šNkÅë$¯‡‡!ò9?„“5Â/aHS~H%.>ңƾüP£N_´{ÒPG2$kVÔöÞš¦¼ñòNU!†G`þxßš{7p—&éëÍoº<ž,œb;€™àƒîÙQVù\—¹Œº&îÞxŒê}‡h··ÌÍ>|°uƽ#™¹—µ0f¸El¼%ô=qåöÇô‹ßJåzk_Ôoø°‚?L^ Y$ 2gá*s{Žøœ÷ìðUƒ30t ¥¦ÆíÓù“V¶Dö±—¿ÿ´”ÑBRVbÔÃíDéÛ 4ê ‘Ù9=´ŠõÁ þË6"·Å^Ü«žì¼þ¸¨Ã;RÙD÷aYâ{jàXÚbÐþ_EÁŒ«KÇ>¤±o2Ÿ œ¡{°¬«GñÏj £:w‚ÔéEºÚqXŒÒÂ#<³.±¶MŽ3yšüÿL•Íp ÅæI¨Å¶²”y ¦®y«‡*rmócŸ[Íù…L+¸˜ð%°t6_ŸÓÝPÚÆøåûɪìg ¨4F3ÂyŠÇ?¤ûýÀ‰þÈw ÔˆPï'\\ã,æ(Œ ÕéÖS±/j8yÚ“€…„b· R(1¶ˆáz&ÐÒ­IÁ;Ê îa§87*b½½ÿæÇ”JÈ¢ÎÌçì»4ÔSÚt¯«ZÀ?]u$œào?‚q!X`žè€¸×«šƒ%½E÷'½ð»íÈŒM6f‡ß Œu<¨ð(¶wÀÛBcú§évÓoé(©z.' ²t1ŒœÕdDÕ>s]mò‹r6á]* £Œ‹Þ}÷Ú£\Š©??Iâuj¿äû¶ÝÓÒ{¤­+s|FŒ †‚|ãç̧*}Xʆ%fÂVd:}ëk€Üzž IÌtŠ`º)½?CpLJsnÁy}v%sÛl‰/«U¤¼_ºPájþ+þÈθ«YóWLÝjÉ>†".²ó‡áˆ°HˆšlöêšÅŸÉ=.Í%p’'¸Ç pì<[óNÉpñ¬È3W•¬ÀÑ$kVœN1“ÖÕ•#%øïôœ<$_Œ¡¯šñ¾Ð'oŽ/ê8(ë|lé”6ýñÚ÷°Júàô×2s£„>¦ö8Тü\¹aš¥®G|g}ª95Caui»µŸ<¾Ô ª;Œh=¦…Om°ønOƒÇ@FÌ=üÝõmLŠ’ …M{wVex´¾$©U|`&(íäj…\Î t¼»”š¸A°ëâa‹8§—lA×Ú…&b#ís:![¬V35¿VPCÀº«8úG)Óɦ1!Àh/~$o®e„$ÙÂT %L-] } —™KN3²lk$#4— ™_&ÎÑšËz¬çƒ…¬Õ+ºãçÙ_:üx—ðt\½Å÷Øx,×…£¼±þÁƒb÷ ‹CŸÙ.H¦Êée „Âq¹$OÔÑ0»jÓ@¦>Š,L)Ó·H0z+TÀÅ `*yñ첎{{-ò¿šþ@®ò>ÜiXè“À -2Z{÷MT—µô´-~Ô• ¦R=“AN­kݦ®â¤S ·aŸm³›|8ãØíƒ’à^´è-Ä6c.-ò~{Is½ö˜õrSpYpÀý¥q]0[xå¢qÞsG>8lU{åcI%:Ïzu¶ÏO§­ î2ª¸QDoþ Õ»s§ô,tE—-f9àt¯ƒühº‡Ìê Gø8¥L‰,ß¿{Ñ&ב†ÀJvRÄóJ ñ­-ØŠ˜mÙ¯òï q„ütÈ~žÕÈÅÈØt³CŠUy1#´…w(ï´sæQÓ>²æ*[TrŽÀhDƒ+<|:žÆÊs oùC¿‚ýhh^¿ó* #áÞ;ø{G[§Oïó̓Ï>@Œ™ì›£ƒîÆÍt¡ÛE¦*xGùô}Dºû–¿VѰ”¢MAùò÷ÈDl¸ëé’ÕƒêAdë‘ïé7´†‘ &EXüɸéÖÁm¼`zB¨ 9‡®uûÛx. ;ïág=Ó›—KìÙ0üW~`@1Sî¦wâ¸çÇÓ-z„Ï£8Õ/ó¦OímüMȃÎñÞœR¥c˜»vü?Ü)Ä4ö I`;f:›¥ÜXE&=-”UöÏ ¨ôû ¬ÑÜš~ûsÙÌ?ÊëŽÆtñ“ªZ>z±û0ô{ûIöNáÖâ&Ðþ«nüÊto(|•»AˆŸ*»¯j¦¾Ã6:^*½TqŸ§,*o—Ô`RÝY8ÄÍªŠ°¬”ºýKT£4Åî¯ ‡PÛ\ÿt9 1“Ú¿ýañh=~J*ÿ>-‡¾0ø«Nã§kÒœŸ$6ÏTö™Ú¼º£r!”¾þzͪEb‘G+&ó}òç–³žŽVv;ࢌƒgù]Q¢È$\뇺óƒ Þ‚ë }x7Þ·±>‘úÉÆ&Öæ—,î¸ÚB¼f‡í:àuaÔ&.DýÂ,¬.Ó(GùÒ¾1[63~݈SJ¢Gw}´ÊçÍÙízo{ŽÏ£ €ºy¦”ù˜œü/DƒÓ!œŒZÄR ˜Uì#ü(‰pÄ;þ ICd:K͆Xâ· -P|†Ul„?¨èÏX¬(Žˆ~‰õIÙî¡€Æã‹¹ªÜµ‚±×n)ôú+Ó^¿•èLE ¦¶ê“˜è÷ÂÏÐ&ÖUïj(º¸wš}¯5“Â(µñž¾xtÔÂjðM‚Åk3ÂF• Uüð±´Œ»÷ïr¶æ]pp²Ö--T{B p2Y¹[™£ÂdnïX/@1jËqwÝîçˆÂ©àÐ_“"GéHÔ‚ÞÑ4"~;+G_ £ËX¢¥äBôAk‰Ýcž'*ŽŽÎz‡±e;Â?{jáÂ8îÖžÈ"™¯(ûœ!HFÓ µ3º±ªQèkË>³S[P|ÛÙ._<Æ0TW—Î0PÑé·n†óIÁäižÚŠr¢ëßqì6§Žýjÿ] oÕ0¨µ2ƒù Ž|L©Ó¦,T:¼ €1ÜcKÖó O«5mΓ h´5MEn€[PÞ‹¾Ý¬Ç ò©fEwu—A»‰Ò0³ü…‚¸fáˆå€_Ù@–óaŽ´s¢\M“íÑø<9xòãæGö]Z½ØÎj²D®`µSíZÅjc/m:U¼ÚëBZS^Áž“‰6q˜¡O1¶HW›QÛeQ€—yÀCúOa€ö—(úÔÔ õœ΀U²BïõãxJÒê|nÄ04¿G”+‹¨õjLð$‘žî–­÷lf—šÿŽW![5QH©´^óBÆÊmÒŸCó”áÈq:>Ì“W·…#S8Gš¹è<ŽÐÓœ²û Ú²RtmVa–Çl`Çæk×ä4òÇCóÒ†˜8]Œ¼'µ‹\MȧÑ8ø‘åÜÂo˜ÞUT¤Ì& ãÝáB˜)§•RaÔ(Ÿû«nj$öéK€^‡Ä~§Øš}y$'+ƒûvMïáÁ­uÕ?»^…¿kaÿÿÿÿàEOF½ÙOîcKio_lib-1.14.6/tests/data/xx#large_aux_java.cram0000644000031500020650000005421412617157726016313 00000000000000CRAMxx#large_aux.sam ¢ …£„„@HD VN:1.4 @SQ SN:xx LN:30 M5:75af4295ad451a1e871f86c0f65d221e @PG ID:0 CL:java /nfs/users/nfs_j/jkb/work/cram/cramtools/cramtools-3.0.jar cram --capture-all-tags -n -Q -R tests/data/xx.fa -I tests/data/xx#large_aux.sam -O tests/data/xx#large_aux_java.cram PN:cramtools VN:3.0-b39 ²áD•T  «íû潫â«â‰RNAPRRSMTDˆþZZZaacabcaccadcaecafcagcahcaicajcakcalcamcancaocapcaqcarcascatcaucavcawcaxcaycazcbacbbcbccbdcbecbfcbgcbhcbicbjcbkcblcbmcbncbocbpcbqcbrcbscbtcbucbvcbwcbxcbycbzccaccbcccccdcceccfccgcchcciccjcckcclccmccnccoccpccqccrccscctccuccvccwccxccycczcdacdbcdccddcdecdfcdgcdhcdicdjcdkcdlcdmcdncdocdpcdqcdrcdscdtcducdvcdwcdxcdycdzceacebceccedceecefcegcehceicejcekcelcemcenceocepceqcercescetceucevcewcexceycezcfacfbcfccfdcfecffcfgcfhcficfjcfkcflcfmcfncfocfpcfqcfrcfscftcfucfvcfwcfxcfycfzcgacgbcgccgdcgecgfcggcghcgicgjcgkcglcgmcgncgocgpcgqcgrcgscgtcgucgvcgwcgxcgycgzchachbchcchdchechfchgchhchichjchkchlchmchnchochpchqchrchschtchuchvchwchxchychzciacibciccidciecifcigcihciicijcikcilcimcinciocipciqcirciscitciucivciwcixciycizcjacjbcjccjdcjecjfcjgcjhcjicjjcjkcjlcjmcjncjocjpcjqcjrcjscjtcjucAacAbcAccAdcAecAfcAgcAhcAicAjcAkcAlcAmcAncAocApcAqcArcAscAtcAucAvcAwcAxcAycAzcBacBbcBccBdcBecBfcBgcBhcBicBjcBkcBlcBmcBncBocBpcBqcBrcBscBtcBucBvcBwcBxcBycBzcCacCbcCccCdcCecCfcCgcChcCicCjcCkcClcCmcCncCocCpcCqcCrcCscCtcCucCvcCwcCxcCycCzcDacDbcDccDdcDecDfcDgcDhcDicDjcDkcDlcDmcDncDocDpcDqcDrcDscDtcDucDvcDwcDxcDycDzcEacEbcEccEdcEecEfcEgcEhcEicEjcEkcElcEmcEncEocEpcEqcErcEscEtcEucEvcEwcExcEycEzcFacFbcFccFdcFecFfcFgcFhcFicFjcFkcFlcFmcFncFocFpcFqcFrcFscFtcFucFvcFwcFxcFycFzcGacGbcGccGdcGecGfcGgcGhcGicGjcGkcGlcGmcGncGocGpcGqcGrcGscGtcGucGvcGwcGxcGycGzcHacHbcHccHdcHecHfcHgcHhcHicHjcHkcHlcHmcHncHocHpcHqcHrcHscHtcHucHvcHwcHxcHycHzcIacIbcIccIdcIecIfcIgcIhcIicIjcIkcIlcImcIncIocIpcIqcIrcIscItcIucIvcIwcIxcIycIzcJacJbcJccJdcJecJfcJgcJhcJicJjcJkcJlcJmcJncJocJpcJqcJrcJscJtcJucaacabcaccadcaecafcagcahcaicajcakcalcamcancaocapcaqcarcascatcaucavcawcaxcaycazcbacbbcbccbdcbecbfcbgcbhcbicbjcbkcblcbmcbncbocbpcbqcbrcbscbtcbucbvcbwcbxcbycbzccaccbcccccdcceccfccgcchcciccjcckcclccmccnccoccpccqccrccscctccuccvccwccxccycczcdacdbcdccddcdecdfcdgcdhcdicdjcdkcdlcdmcdncdocdpcdqcdrcdscdtcducdvcdwcdxcdycdzceacebceccedceecefcegcehceicejcekcelcemcenceocepceqcercescetceucevcewcexceycezcfacfbcfccfdcfecffcfgcfhcficfjcfkcflcfmcfncfocfpcfqcfrcfscftcfucfvcfwcfxcfycfzcgacgbcgccgdcgecgfcggcghcgicgjcgkcglcgmcgncgocgpcgqcgrcgscgtcgucgvcgwcgxcgycgzchachbchcchdchechfchgchhchichjchkchlchmchnchochpchqchrchschtchuchvchwchxchychzciacibciccidciecifcigcihciicijcikcilcimcinciocipciqcirciscitciucivciwcixciycizcjacjbcjccjdcjecjfcjgcjhcjicjjcjkcjlcjmcjncjocjpcjqcjrcjscjtcjucŠÍBFAPFP FCQSDLBATN‰ÿÿàAacàAbcàAccàAdcàAecàAfcàAgcàAhcàAicàAjcàAkcàAlcàAmcàAncàAocàApcàAqcàArcàAscàAtcàAucàAvcàAwcàAxcàAycàAzcàBacàBbcàBccàBdcàBecàBfcàBgcàBhcàBicàBjcàBkcàBlcàBmcàBncàBocàBpcàBqcàBrcàBscàBtcàBucàBvcàBwcàBxcàBycàBzcàCacàCbcàCccàCdcàCecàCfcàCgcàChcàCicàCjcàCkcàClcàCmcàCncàCocàCpcàCqcàCrcàCscàCtcàCucàCvcàCwcàCxcàCycàCzcàDacàDbcàDccàDdcàDecàDfcàDgcàDhcàDicàDjcàDkcàDlcàDmcàDncàDocàDpcàDqcàDrcàDscàDtcàDucàDvcàDwcàDxcàDycàDzcàEacàEbcàEccàEdcàEecàEfcàEgcàEhcàEicàEjcàEkcàElcàEmcàEncàEocàEpcàEqcàErcàEscàEtcàEucàEvcàEwcàExcàEycàEzcàFacàFbcàFccàFdcàFecàFfcàFgcàFhcàFicàFjcàFkcàFlcàFmcàFncàFocàFpcàFqcàFrcàFscàFtcàFucàFvcàFwcàFxcàFycàFzcàGacàGbcàGccàGdcàGecàGfcàGgcàGhcàGicàGjcàGkcàGlcàGmcàGncàGocàGpcàGqcàGrcàGscàGtcàGucàGvcàGwcàGxcàGycàGzcàHacàHbcàHccàHdcàHecàHfcàHgcàHhcàHicàHjcàHkcàHlcàHmcàHncàHocàHpcàHqcàHrcàHscàHtcàHucàHvcàHwcàHxcàHycàHzcàIacàIbcàIccàIdcàIecàIfcàIgcàIhcàIicàIjcàIkcàIlcàImcàIncàIocàIpcàIqcàIrcàIscàItcàIucàIvcàIwcàIxcàIycàIzcàJacàJbcàJccàJdcàJecàJfcàJgcàJhcàJicàJjcàJkcàJlcàJmcàJncàJocàJpcàJqcàJrcàJscàJtcàJucàZZZàaacàabcàaccàadcàaecàafcàagcàahcàaicàajcàakcàalcàamcàancàaocàapcàaqcàarcàascàatcàaucàavcàawcàaxcàaycàazcàbacàbbcàbccàbdcàbecàbfcàbgcàbhcàbicàbjcàbkcàblcàbmcàbncàbocàbpcàbqcàbrcàbscàbtcàbucàbvcàbwcàbxcàbycàbzcàcacàcbcàcccàcdcàcecàcfcàcgcàchcàcicàcjcàckcàclcàcmcàcncàcocàcpcàcqcàcrcàcscàctcàcucàcvcàcwcàcxcàcycàczcàdacàdbcàdccàddcàdecàdfcàdgcàdhcàdicàdjcàdkcàdlcàdmcàdncàdocàdpcàdqcàdrcàdscàdtcàducàdvcàdwcàdxcàdycàdzcàeacàebcàeccàedcàeecàefcàegcàehcàeicàejcàekcàelcàemcàencàeocàepcàeqcàercàescàetcàeucàevcàewcàexcàeycàezcàfacàfbcàfccàfdcàfecàffcàfgcàfhcàficàfjcàfkcàflcàfmcàfncàfocàfpcàfqcàfrcàfscàftcàfucàfvcàfwcàfxcàfycàfzcàgacàgbcàgccàgdcàgecàgfcàggcàghcàgicàgjcàgkcàglcàgmcàgncàgocàgpcàgqcàgrcàgscàgtcàgucàgvcàgwcàgxcàgycàgzcàhacàhbcàhccàhdcàhecàhfcàhgcàhhcàhicàhjcàhkcàhlcàhmcàhncàhocàhpcàhqcàhrcàhscàhtcàhucàhvcàhwcàhxcàhycàhzcàiacàibcàiccàidcàiecàifcàigcàihcàiicàijcàikcàilcàimcàincàiocàipcàiqcàircàiscàitcàiucàivcàiwcàixcàiycàizcàjacàjbcàjccàjdcàjecàjfcàjgcàjhcàjicàjjcàjkcàjlcàjmcàjncàjocàjpcàjqcàjrcàjscàjtcàjucÿ  NF RL RGÿÿÿÿÿMQRN NPTSFNBSINTC €ÿþMFNSÿÿÿÿÿCFTLRIRSSCHC PD —üÿàAacàAbcàAccàAdcàAecàAfcàAgcàAhcàAicàAjcàAkcàAlcàAmcàAncàAocàApcàAqcàArcàAscàAtcàAucàAvcàAwcàAxcàAycàAzcàBacàBbcàBccàBdcàBecàBfcàBgcàBhcàBicàBjcàBkcàBlcàBmcàBncàBocàBpcàBqcàBrcàBscàBtcàBucàBvcàBwcàBxcàBycàBzcàCacàCbcàCccàCdcàCecàCfcàCgcàChcàCicàCjcàCkcàClcàCmcàCncàCocàCpcàCqcàCrcàCscàCtcàCucàCvcàCwcàCxcàCycàCzcàDacàDbcàDccàDdcàDecàDfcàDgcàDhcàDicàDjcàDkcàDlcàDmcàDncàDocàDpcàDqcàDrcàDscàDtcàDucàDvcàDwcàDxcàDycàDzcàEacàEbcàEccàEdcàEecàEfcàEgcàEhcàEicàEjcàEkcàElcàEmcàEncàEocàEpcàEqcàErcàEscàEtcàEucàEvcàEwcàExcàEycàEzcàFacàFbcàFccàFdcàFecàFfcàFgcàFhcàFicàFjcàFkcàFlcàFmcàFncàFocàFpcàFqcàFrcàFscàFtcàFucàFvcàFwcàFxcàFycàFzcàGacàGbcàGccàGdcàGecàGfcàGgcàGhcàGicàGjcàGkcàGlcàGmcàGncàGocàGpcàGqcàGrcàGscàGtcàGucàGvcàGwcàGxcàGycàGzcàHacàHbcàHccàHdcàHecàHfcàHgcàHhcàHicàHjcàHkcàHlcàHmcàHncàHocàHpcàHqcàHrcàHscàHtcàHucàHvcàHwcàHxcàHycàHzcàIacàIbcàIccàIdcàIecàIfcàIgcàIhcàIicàIjcàIkcàIlcàImcàIncàIocàIpcàIqcàIrcàIscàItcàIucàIvcàIwcàIxcàIycàIzcàJacàJbcàJccàJdcàJecàJfcàJgcàJhcàJicàJjcàJkcàJlcàJmcàJncàJocàJpcàJqcàJrcàJscàJtcàJucàZZZ àZZZàZZZàaacàabcàaccàadcàaecàafcàagcàahcàaicàajcàakcàalcàamcàancàaocàapcàaqcàarcàascàatcàaucàavcàawcàaxcàaycàazcàbacàbbcàbccàbdcàbecàbfcàbgcàbhcàbicàbjcàbkcàblcàbmcàbncàbocàbpcàbqcàbrcàbscàbtcàbucàbvcàbwcàbxcàbycàbzcàcacàcbcàcccàcdcàcecàcfcàcgcàchcàcicàcjcàckcàclcàcmcàcncàcocàcpcàcqcàcrcàcscàctcàcucàcvcàcwcàcxcàcycàczcàdacàdbcàdccàddcàdecàdfcàdgcàdhcàdicàdjcàdkcàdlcàdmcàdncàdocàdpcàdqcàdrcàdscàdtcàducàdvcàdwcàdxcàdycàdzcàeacàebcàeccàedcàeecàefcàegcàehcàeicàejcàekcàelcàemcàencàeocàepcàeqcàercàescàetcàeucàevcàewcàexcàeycàezcàfacàfbcàfccàfdcàfecàffcàfgcàfhcàficàfjcàfkcàflcàfmcàfncàfocàfpcàfqcàfrcàfscàftcàfucàfvcàfwcàfxcàfycàfzcàgacàgbcàgccàgdcàgecàgfcàggcàghcàgicàgjcàgkcàglcàgmcàgncàgocàgpcàgqcàgrcàgscàgtcàgucàgvcàgwcàgxcàgycàgzcàhacàhbcàhccàhdcàhecàhfcàhgcàhhcàhicàhjcàhkcàhlcàhmcàhncàhocàhpcàhqcàhrcàhscàhtcàhucàhvcàhwcàhxcàhycàhzcàiacàibcàiccàidcàiecàifcàigcàihcàiicàijcàikcàilcàimcàincàiocàipcàiqcàircàiscàitcàiucàivcàiwcàixcàiycàizcàjacàjbcàjccàjdcàjecàjfcàjgcàjhcàjicàjjcàjkcàjlcàjmcàjncàjocàjpcàjqcàjrcàjscàjtcàjucEêq- àZZZÿÿÿÿÿÅ,nƒ&ÀqÚwfÜnžWB1BcÚ9£î^kK 2U¿ï•`¯Ø S1BcÚ9£î^kK 2U¿ï•`¯Ø B5Bc@σá5~︽ñT(PÖm€Ö ä W܃ô©!ÓléÎGÐÑ<]…ò°ÿƒÒ‡~ì/c¹1½GAz¥82zù'Ú>S5Bc@σá5~︽ñT(PÖm€Ö ä W܃ô©!ÓléÎGÐÑ<]…ò°ÿƒÒ‡~ì/c¹1½GAz¥82zù'Ú>BDBcmr¬ÖSDBcÎ86Ðq§(çŠÆÀ¼½¬½‹K4L4J2íDKL€Eôðÿ€€€€V‚# ÿ€€€€gÉ$š%…úúÿÿ¶‚Œ¶‚Œ¶‚ŒG”Œ¼YÁ|àZZZ¦VÍ»¤M&¤» !„z‡ÿÍ„!!×"("X"×#(#×$($×%(%×&(&×'('×(((×)()×*(*×+(+×,(,×-(-×.(.×/(/×0(0×1(1×2(2×3(3×4(4×5(5×6(6×7(7×8(8×9(9×:(:×;(;×<(<×=(=×>(>×?(?×@(@×A(A×B(B×C(C×D(D×E(E×F(F×G(G×H(H×I(I×J(J×K(K×L(L×M(M×N(N×O(O×P(P×Q(Q×R(R×S(S×T(T×U(U×V(V×W(W×X(X×Y(Y×Z(Z×[([×\(\×](]×^(^×_(_×`(`×a(a×b(b×c(c×d(d×e(e×f(f×g(g×h(h×i(i×j(j×k(k×l(l×m(m×n(n×o(o×p(p×q(q×r(r×s(s×t(t×u(u×v(v×w(w×x(x×y(y×z(!(zÖ¡!ÿ»¡ÿÍ»ÿøÏ7Ë@ €èE ÀcÁ|û/5P«á£äö0æKÚ¤äÔ.Bõ±FY„²;¦Í¨£­`y2 ¢ 5ÍÛÄc6ÉÙ KÒ³þìwÜZÕ•ùj!=1@Q]Bÿ²G*Ö¿qÞQA,‘NF—Ñÿ Ý‹/“Ä{7ɰß÷…ý=€š£k¯§¯")ýÅϲòc¢®„ÄÂ0/öê¼SÕê.¬£#Ƒף× {È& 2>ónÔ½³ð¦ÖNU·E£`“WHGC\{˜B™—¾,øÍ|Uož5·T1îÍŸLŠj¿½`&õ¹MÞfª89l”"#ô’ņÆë‡×¿Ì9¡¥“yGma}Ž~ñø¥>]–¾¿½NL¬ŠÒ[ya$Ý*nö¨ [¼ðÆ4Œ! hþ-'–¸5IGð&Ó'JÜðž©ëd;)š°ƒ·ZðQ2b.\'tEÅ“¸ˆ8;PŽA¿OЬQ7c0NgEnÿïý/Oʵ7•Ov÷æê'€{–Aò£?"²P/®UÇ‘0%å¼ðƒâêÛÈ0#ûC«Êâ öÕt KÃÔnäCÚðB<ÒNY·Y™±q;“,£Güæy˜Ío ¾æåÄ|¶YÙQ «³qy!]*«Z¨c’ùù!9Q˜˜,ÿ>°4ÖTŸUÞŸÚL‘û…Ñ`ì$‹¨Î{ªÂ2ß”?d=ýukÅÈ­¯‡ˆëò9'q„“/aæñS~.>é…Æ¾F£Ny{Ò<2$·¯Ôö1c¦¼zÚU!­c`þÊÛ§'{*ƒ—&½8ÍÇD<žÈb;çÁàƒÍÙQtðù\ZÍŒºuôîÞoê}6··žòÍ>¸‹O½E{¹—}f¸È[l¼dôEߨ<éœ[í¶Y'|BjÝÿézÊúédu?z¬´²Å3dŒwLDÙtf”¿÷‘×*½F)îý³IX}Ž_ÆD/´Ê-:„á~Ípu¤‹q °ó]¼›Ìû±ëQ¯æÁýÂlëÕöB·×ÉÇtàPÞâOeÄÑ7Qúçgü 릊;O—½˜•YæÞ4{qsøòó}…/Û‘0«ÒåÆ_1âj0ûÈ|™«AâPLtd>¶ÔéwÚqãÒÂáðˆ#Ò±¶ê3ŸeüÿͰÍpRæI¸ç¶²ì ¦óly«pa*rÈGcŸyù…Xƒ˜ð1°tÕaŸÓøøÚÆœÇûÉÙìg¯¨4Ð\Âyo¼?¤8ˆýÀlr·V<Õœý»©@°yˆÈô/x£ÓNäöHñ¢äš FV®ü¿Î}±_ÇC„ Dipîw³Õ;Ù$~ŒF|Ûž9|6…]€tdz˜0{=°¦øzƒå zù4{ ù}7Ú•¡ÓVZYzlÖÄv.HðÏ€q¸­²mˆî¬%bHh’Ö”k±ÔB°ua.I{÷U¢âÔ°½å¬þý‘7}s8D³á -Fj~?KÍE±¬öëwrmJ d¾¦í´‹+c‡×8I­[Us ˜¦‡Ö”\d©èŸ¯™§^ŒÒȯH”Û6øM™·"¥Œo å.?;ïGZ¨ÀŒ«;£F¼¶®‘“%â0‘’?Ñâú£°‡›–’#šlJJeöA1¢£(®Xaó³ªw"[ˆ¡œlàFà8ëÂJ–‡>íÃ9åTííÊô¼l7÷„¿§•ðÎÜFD.>Q[Nâû|›ƒP.V¨!!Á@NÁœ«—v+I¡É1ÔÄÍ,žïì+¡£Ììþštˆžü^o—Űâá¨Ns©ÝÑ÷"žÊY¬­û+,cœÇã@'«®Ë«i¼h ‚!Úô´0VOŽ çlI.ßî€SXÓ²œ§Ìâ5<}?h-=G”ýB—v».Óý÷9±Ôrý˜:ÿ¬¢Ïy‹¯8 ®EáÑÝ“F¬´<¬í•’ã²êÛ:YˆÎ—&ÀGÃSØ=£3…å|ZF­blx+ uoOÙ)õß ˆ•ú,±zOÔòF|=ÓnbKŠ×lwÓìzÄQ¦Åõ‹yÃ׎¿Ú[{X ˜ò&ÖšÔ·dò*Ò¯XQ|ŒÀ(«HZ ¸!ø—+$"-´º•mî?=™’GNŽ‘Œ¦½MSfç¶¾%³½’ã¼âƒ˜©‡´î’6×lòÝeIðç¢ösîS^À06]ÈÀ[\ÛœÙ,íþU¼ÜÈèÒ[ଙ$ƒØsÇÊH§}‘P|- +5´¸£—$ó0j9¡†.r!±¶ó„°oÿÍlUy =•EÍpO“6åK 4•þ[“êÜÉøˆÕBjWÃ1À$£]GœƒF“ˆxA# oFï9õ <¢“Œs•Éñر…‰òš/S|¯ë©b)”¤lÏÚLì¢ú‚QÂ2¿ê>†ÃÕÐÚ£\ ך0|/·&9/ÒóuÁ|³µ0«ÖEÔ¾!WŒ“$C…UºB°î,ƒÊ’UÌm‘Gõ†M’ÒçJMß¾e‹½9À¼s©Ž©&‡žäª×1ÎÝL»Šçj¸àÃ&âM8 68A#À"…‹Û’í¡1†[ïp×§ß5uM7Cy†'«}ž)ñئ]²µh“6¼L>n[¯(eÝšuX¨ k«ðŸæ¯ *s-oàÿ¸ëÎIÞ(pÓ‰°'JlnÈ©cö%)/?·]dÙ2 ð­ ¤Ñr:Àqþ[Aw¨¬‹uê0.z&nÊ'ý„=ŵq¡ÃvÔ±'»­ˆA@ØC?,6=P·PU+:[% éùðñ€ýÛ¼˜ûWŸ«¿§£öþÐK>yäèƒB ÝÜ{YÁ¬;µœ£~Oy Î “™óÄ­‹ÄÙ®ÇO³ ÚÅa:cZ›¹êù?!’¿SQèä‹ÿc^øÖ¥Þs§²‘˜o|ÑpR*‹ý8W{0ЉßåºQ=ÞTÂk>îZ¯{Púótåòê2%„Vu/ä§S¡Á.‰¸ÆhÉ£=ÆÕ{m>ô2õyEÔÖ9¦ 'ƒU‡KS`ø{‰{{¥F—‘̺ÍJÑZ<ózbñÈàØ ÙÙWÉù ®Œü%ÏîîêÈvÔ·t5–ÍŠQ#T½(û¨¹sÚQf>Ìl[r‰ôÀ)¨jù2¯Þó©¨y…àÅ›Õ_01d)2ñ&ÁÜuž '¾Ó¢v¹Ée9¾°£Œõ›F)IÆH¦_ÛN­´x¿2„Ð5pûc‹L ó”²ÌAÈw÷I¸YlÕž=BdÙÇéS²P‘i¿OE&Q7ü Ngé¸ÿmª/Ozd7•9/÷æ®<€{xPò;Ü­„þ/ÁËg‘€×›å©yKâW+00gv`R¶îâ:¤âtñ”ÇÔ†\ÚïΣÒn°/{O±ÈuÒÞtáü§®Ícyæζ)¼S ÝØyf²Ž*ÜÄc=ÐhùØ +˜ qœ°šúŸë«Úv:û޽¾ì“®:¨z .ÂàÏ?ûŽ7úá›NÐTìnÈô¥ û}œ´–Œ_µtÙ¥»ïvT¦;•Ã|#ësß”à”ÕIq†Øu‰öÞ}‡|Võ‹é£_I]…»0D9í©v¬¼Ó²ÒªòŒÔɈGI9ŃàŽÒÕ¦Î/cJÞQözRH³ñ"Fé§_*ÂK¬¢OˆKSêÔ<Û–Êö–£üÛÇ• ¦’šƒìá¹È´á&CÄ7ÔÊ¥ÅÕÛ%¦Ãñc“Ce¡p<ŽâY@Û™)¶ÊuIq¹e_,,´æk „ojžpåSU‹Yu¦ó«æÌ!-q«“’H_l¥ B9 .Ç,$P4|GOUˆ°7Lúg…ùL$È2OÎÐЕ2þTædç{uÇòò­Å“/ë…‘qmå¡ âñ¶r0ë$…½tâF¸ tÒ)Ô<ð)Ú¯9Òcx$§Ú4ݱcÍ ÛóOü'‡Î̓Yhæ8†E¶Dì[ Û‹yÁüÇ*ÍùfcðS—ùÍmÒô¸ü˜¹f°6ÃåŸòýÙÚ‹•ûO´sì{_“¨}ôøÂ[+ò?d˜;ú¤bNŽeçf¯¥1Ån}þ¶sŒjšÍµla©¥Ž«T ê†ÍÆër»}/2vÿ³éXŽ ŒH޾K¸Â V ðÖü‰QçÙ¤¡Qò°ì‰&›t?'ëü€Žæ—BQÂá´<ösÀúɈUàtӬ؜ÑÃ%çÇý÷ë«;«zK˜ ?ˆYÚ4Ô4VÂÊølÚÛ….” €šÒ²ö¹1&žÔ|hÜÅA”»¦B(“¶.=pw÷\ãÔÛð¬TÊÒß¹8eáuk°F«jR<ÝSç’ØuÛlÎñ-aÀ´GSMHy3Ô¥X| ƒ­s+à|aOšˆøÇ ‹ùÙú–Èz:Ð\Äý¼=kƒ‹K 5ñêw –5ѦÝÙ–‹ˆ×ó…‡[Éq‰˜ŸãWÖ“fZd¸ %¯9ëñŒ2¸Ha8BøX¤™"0d”[Iã?Qç{Gò4 Œvѽa¶ ™Ÿ%a’ w•âQŸ~‡Ó’YùŒlj´ÅeCl´¢_Ž•® „6¯Á\cÝv[ôÕòíä÷D2£ÐŸ06/¾7ÀM“9­¥Uœö ÎʯzZm›…«†Øº£Ò¡_®ß`xâ‹£\?À ÷úŽF×›‡­±#ªƒJª÷öŠ,Ÿ£àŦ]eó }w#•$ˆ‹y0l¡žj8ïe>Jß)í10å7.ÀÊ'-*7в§Ø½{ܵÿ>6’N>¿®|(|iPukŠ2Áæ*£T«àÑ´vëQÔÉ(9RÖ°õ n‹Ýö…¤j? ÿdzlB”Pú7ÍðZGúN[×rÑw° žu³©Yz¸Î+'ð‰œ=g¿'¡gd˱ƒÝh­¦ÌØcN06ã$ ß!$SG:œÂ…éâHÖ€}%f¼-£_WPŒ§—´ÉGAy9V¸ƒrš>Ýò£ÁñNÿœìGyÆßÑšE™Op“‹ÉëÇĺ•Ú€œê:·™ˆ¹¦î?Ñÿй£ä ^ ŒFzhx§ooY°õR\Æ8™•ŠÜ0±º©òT…%|îqbPÇÇltì2ÆoQÔ‚ò^ÃÁ× Úžá Éó{Æ3O·>~óÒyÄ>|Ïì«'Kу!Üt$¦º¥³ùîÌUD’Ñ¿‘z§ÑMçz¾WD½®¨é¼%8ê©é‘vÓ´×5ž ÝòçT}ÃûhÚM¼68¨ÀrFÛ)×[h<É{ÞéùÁ•=iy·Å–îx0%ÜŠ2x¸2ÜvN'|ÍŒ"ÁŒ ûkŒ²©÷° jTŸ§ ŸÚ¥”ûiA`ìµa¨§ªÂ½×”?7&úÞsÅN>¬‡P9¥õº“} GaŒ‡~µ…À>¥ $¾TºeNZÙÒë(%$»™öv——¼X Î3!ŽþÉm^Æ–‹"ed`ËúÙ}ƒYòd+Ž&gÙá'"ÌŽtEQ”Åß<:,ûú¼ûUÉÁŽÓŠœžCc% HE÷ÊéïÂÊKعOˆ&ÑêÔ–ÊŸ¦£LùÛÇH“ Tÿšƒ`å¹ÈìÌ&CjÔÊ-3ÅÕ¦Ã@8“CÜøp<“ÃY-ÕÛ™÷ùÊUMq¹ÿô,JækɦojJAåS½kYu|â«©·!-!Ÿ«|’HVØ¥)à9 S-,0.4|[~UˆP½L%õ…ùäY$È¥ÎÐm[2þM¢dzsu/'8­\¼Ië$zq‘O;²îñŒv!eo…"ÑFuH§µÊ<×éf¯x+¯cœvºzÚUêc7å8ÛH‰,'8áу™†8 vDjÎJo>­Á[èŠÍœä¯ðU›Íô¹tôÐÄÅ6-–Âò'ŠU‹Õ ´O³ï{êæ}µl²[^úTd<}f¡š^Oúî“€‹>(ºá¿Eîáh4Š7*I9¥tÂ%ø.c§‰ì¡ŽÈâÏè®@™ìJ¶£ƒ*Ku°àÍe3ˆE,‡‘G þš}žY­–UËMV¦„¢æúùq%È“·æë_H†ƒ ]Žë.ê|7$wÀGŒ³°UÉúA‘ÖLôú29BÐ Ú‡T"\u玸.òŒT“*Ó…|$» Va~rI%S$ ´wtÂ-ç xŽz)Ï)éŒ9Àئ$/ÀOüݭу ö]œOÎ3RÎz ˜h… üEºCÄ[_×I‹x(:Ç\;Xf÷n-—×®Uұ¨üƒu¬f÷Æ~埑ÙÙ¦DeûÆsઓ$´±ø0÷ôòj!IT>aÖÎ_þñ)üñ0¨oÀ™(ø*ÂS²»ˆ;{õ¯Ê¥F¥6 ®ââiv™¶q2¼QºT¦Ta´ªGÔkWR%=ÑŒ%gÝ•q¤×1ahig®SÕ ¢Ór¾!yúQ˜’rÿ>é ÖTè©ÞŸOΑP‰Ñ`“¿‹.d{ª Ýß”PÌ=šNkÅë$¯‡‡!ò9?„“5Â/aHS~H%.>ңƾüP£N_´{ÒPG2$kVÔöÞš¦¼ñòNU!†G`þxßš{7p—&éëÍoº<ž,œb;€™àƒîÙQVù\—¹Œº&îÞxŒê}‡h··ÌÍ>|°uƽ#™¹—µ0f¸El¼%ô=qåöÇô‹ßJåzk_Ôoø°‚?L^ Y$ 2gá*s{Žøœ÷ìðUƒ30t ¥¦ÆíÓù“V¶Dö±—¿ÿ´”ÑBRVbÔÃíDéÛ 4ê ‘Ù9=´ŠõÁ þË6"·Å^Ü«žì¼þ¸¨Ã;RÙD÷aYâ{jàXÚbÐþ_EÁŒ«KÇ>¤±o2Ÿ œ¡{°¬«GñÏj £:w‚ÔéEºÚqXŒÒÂ#<³.±¶MŽ3yšüÿL•Íp ÅæI¨Å¶²”y ¦®y«‡*rmócŸ[Íù…L+¸˜ð%°t6_ŸÓÝPÚÆøåûɪìg ¨4F3ÂyŠÇ?¤ûýÀ‰þÈw ÔˆPï'\\ã,æ(Œ ÕéÖS±/j8yÚ“€…„b· R(1¶ˆáz&ÐÒ­IÁ;Ê îa§87*b½½ÿæÇ”JÈ¢ÎÌçì»4ÔSÚt¯«ZÀ?]u$œào?‚q!X`žè€¸×«šƒ%½E÷'½ð»íÈŒM6f‡ß Œu<¨ð(¶wÀÛBcú§évÓoé(©z.' ²t1ŒœÕdDÕ>s]mò‹r6á]* £Œ‹Þ}÷Ú£\Š©??Iâuj¿äû¶ÝÓÒ{¤­+s|FŒ †‚|ãç̧*}Xʆ%fÂVd:}ëk€Üzž IÌtŠ`º)½?CpLJsnÁy}v%sÛl‰/«U¤¼_ºPájþ+þÈθ«YóWLÝjÉ>†".²ó‡áˆ°HˆšlöêšÅŸÉ=.Í%p’'¸Ç pì<[óNÉpñ¬È3W•¬ÀÑ$kVœN1“ÖÕ•#%øïôœ<$_Œ¡¯šñ¾Ð'oŽ/ê8(ë|lé”6ýñÚ÷°Júàô×2s£„>¦ö8Тü\¹aš¥®G|g}ª95Caui»µŸ<¾Ô ª;Œh=¦…Om°ønOƒÇ@FÌ=üÝõmLŠ’ …M{wVex´¾$©U|`&(íäj…\Î t¼»”š¸A°ëâa‹8§—lA×Ú…&b#ís:![¬V35¿VPCÀº«8úG)Óɦ1!Àh/~$o®e„$ÙÂT %L-] } —™KN3²lk$#4— ™_&ÎÑšËz¬çƒ…¬Õ+ºãçÙ_:üx—ðt\½Å÷Øx,×…£¼±þÁƒb÷ ‹CŸÙ.H¦Êée „Âq¹$OÔÑ0»jÓ@¦>Š,L)Ó·H0z+TÀÅ `*yñ첎{{-ò¿šþ@®ò>ÜiXè“À -2Z{÷MT—µô´-~Ô• ¦R=“AN­kݦ®â¤S ·aŸm³›|8ãØíƒ’à^´è-Ä6c.-ò~{Is½ö˜õrSpYpÀý¥q]0[xå¢qÞsG>8lU{åcI%:Ïzu¶ÏO§­ î2ª¸QDoþ Õ»s§ô,tE—-f9àt¯ƒühº‡Ìê Gø8¥L‰,ß¿{Ñ&ב†ÀJvRÄóJ ñ­-ØŠ˜mÙ¯òï q„ütÈ~žÕÈÅÈØt³CŠUy1#´…w(ï´sæQÓ>²æ*[TrŽÀhDƒ+<|:žÆÊs oùC¿‚ýhh^¿ó* #áÞ;ø{G[§Oïó̓Ï>@Œ™ì›£ƒîÆÍt¡ÛE¦*xGùô}Dºû–¿VѰ”¢MAùò÷ÈDl¸ëé’ÕƒêAdë‘ïé7´†‘ &EXüɸéÖÁm¼`zB¨ 9‡®uûÛx. ;ïág=Ó›—KìÙ0üW~`@1Sî¦wâ¸çÇÓ-z„Ï£8Õ/ó¦OímüMȃÎñÞœR¥c˜»vü?Ü)Ä4ö I`;f:›¥ÜXE&=-”UöÏ ¨ôû ¬ÑÜš~ûsÙÌ?ÊëŽÆtñ“ªZ>z±û0ô{ûIöNáÖâ&Ðþ«nüÊto(|•»AˆŸ*»¯j¦¾Ã6:^*½TqŸ§,*o—Ô`RÝY8ÄÍªŠ°¬”ºýKT£4Åî¯ ‡PÛ\ÿt9 1“Ú¿ýañh=~J*ÿ>-‡¾0ø«Nã§kÒœŸ$6ÏTö™Ú¼º£r!”¾þzͪEb‘G+&ó}òç–³žŽVv;ࢌƒgù]Q¢È$\뇺óƒ Þ‚ë }x7Þ·±>‘úÉÆ&Öæ—,î¸ÚB¼f‡í:àuaÔ&.DýÂ,¬.Ó(GùÒ¾1[63~݈SJ¢Gw}´ÊçÍÙízo{ŽÏ£ €ºy¦”ù˜œü/DƒÓ!œŒZÄR ˜Uì#ü(‰pÄ;þ ICd:K͆Xâ· -P|†Ul„?¨èÏX¬(Žˆ~‰õIÙî¡€Æã‹¹ªÜµ‚±×n)ôú+Ó^¿•èLE ¦¶ê“˜è÷ÂÏÐ&ÖUïj(º¸wš}¯5“Â(µñž¾xtÔÂjðM‚Åk3ÂF• Uüð±´Œ»÷ïr¶æ]pp²Ö--T{B p2Y¹[™£ÂdnïX/@1jËqwÝîçˆÂ©àÐ_“"GéHÔ‚ÞÑ4"~;+G_ £ËX¢¥äBôAk‰Ýcž'*ŽŽÎz‡±e;Â?{jáÂ8îÖžÈ"™¯(ûœ!HFÓ µ3º±ªQèkË>³S[P|ÛÙ._<Æ0TW—Î0PÑé·n†óIÁäižÚŠr¢ëßqì6§Žýjÿ] oÕ0¨µ2ƒù Ž|L©Ó¦,T:¼ €1ÜcKÖó O«5mΓ h´5MEn€[PÞ‹¾Ý¬Ç ò©fEwu—A»‰Ò0³ü…‚¸fáˆå€_Ù@–óaŽ´s¢\M“íÑø<9xòãæGö]Z½ØÎj²D®`µSíZÅjc/m:U¼ÚëBZS^Áž“‰6q˜¡O1¶HW›QÛeQ€—yÀCúOa€ö—(úÔÔ õœ΀U²BïõãxJÒê|nÄ04¿G”+‹¨õjLð$‘žî–­÷lf—šÿŽW![5QH©´^óBÆÊmÒŸCó”áÈq:>Ì“W·…#S8Gš¹è<ŽÐÓœ²û Ú²RtmVa–Çl`Çæk×ä4òÇCóÒ†˜8]Œ¼'µ‹\MȧÑ8ø‘åÜÂo˜ÞUT¤Ì& ãÝáB˜)§•RaÔ(Ÿû«nj$öéK€^‡Ä~§Øš}y$'+ƒûvMïáÁ­uÕ?»^…¿kaÿÿÿÿàEOF½ÙOîcKio_lib-1.14.6/tests/data/xx#large_aux_java.sam0000644000031500020650000335037512617157761016162 00000000000000a1 16 xx 1 1 10M * 0 0 AAAAAAAAAA * aa:i:1 ba:i:1 ca:i:1 da:i:1 ea:i:1 fa:i:1 ga:i:1 ha:i:1 ia:i:1 ja:i:1 ab:i:1 bb:i:1 cb:i:1 db:i:1 eb:i:1 fb:i:1 gb:i:1 hb:i:1 ib:i:1 jb:i:1 ac:i:1 bc:i:1 cc:i:1 dc:i:1 ec:i:1 fc:i:1 gc:i:1 hc:i:1 ic:i:1 jc:i:1 ad:i:1 bd:i:1 cd:i:1 dd:i:1 ed:i:1 fd:i:1 gd:i:1 hd:i:1 id:i:1 jd:i:1 ae:i:1 be:i:1 ce:i:1 de:i:1 ee:i:1 fe:i:1 ge:i:1 he:i:1 ie:i:1 je:i:1 af:i:1 bf:i:1 cf:i:1 df:i:1 ef:i:1 ff:i:1 gf:i:1 hf:i:1 if:i:1 jf:i:1 ag:i:1 bg:i:1 cg:i:1 dg:i:1 eg:i:1 fg:i:1 gg:i:1 hg:i:1 ig:i:1 jg:i:1 ah:i:1 bh:i:1 ch:i:1 dh:i:1 eh:i:1 fh:i:1 gh:i:1 hh:i:1 ih:i:1 jh:i:1 ai:i:1 bi:i:1 ci:i:1 di:i:1 ei:i:1 fi:i:1 gi:i:1 hi:i:1 ii:i:1 ji:i:1 aj:i:1 bj:i:1 cj:i:1 dj:i:1 ej:i:1 fj:i:1 gj:i:1 hj:i:1 ij:i:1 jj:i:1 ak:i:1 bk:i:1 ck:i:1 dk:i:1 ek:i:1 fk:i:1 gk:i:1 hk:i:1 ik:i:1 jk:i:1 al:i:1 bl:i:1 cl:i:1 dl:i:1 el:i:1 fl:i:1 gl:i:1 hl:i:1 il:i:1 jl:i:1 am:i:1 bm:i:1 cm:i:1 dm:i:1 em:i:1 fm:i:1 gm:i:1 hm:i:1 im:i:1 jm:i:1 an:i:1 bn:i:1 cn:i:1 dn:i:1 en:i:1 fn:i:1 gn:i:1 hn:i:1 in:i:1 jn:i:1 ao:i:1 bo:i:1 co:i:1 do:i:1 eo:i:1 fo:i:1 go:i:1 ho:i:1 io:i:1 jo:i:1 ap:i:1 bp:i:1 cp:i:1 dp:i:1 ep:i:1 fp:i:1 gp:i:1 hp:i:1 ip:i:1 jp:i:1 aq:i:1 bq:i:1 cq:i:1 dq:i:1 eq:i:1 fq:i:1 gq:i:1 hq:i:1 iq:i:1 jq:i:1 ar:i:1 br:i:1 cr:i:1 dr:i:1 er:i:1 fr:i:1 gr:i:1 hr:i:1 ir:i:1 jr:i:1 as:i:1 bs:i:1 cs:i:1 ds:i:1 es:i:1 fs:i:1 gs:i:1 hs:i:1 is:i:1 js:i:1 at:i:1 bt:i:1 ct:i:1 dt:i:1 et:i:1 ft:i:1 gt:i:1 ht:i:1 it:i:1 jt:i:1 au:i:1 bu:i:1 cu:i:1 du:i:1 eu:i:1 fu:i:1 gu:i:1 hu:i:1 iu:i:1 ju:i:1 av:i:1 bv:i:1 cv:i:1 dv:i:1 ev:i:1 fv:i:1 gv:i:1 hv:i:1 iv:i:1 aw:i:1 bw:i:1 cw:i:1 dw:i:1 ew:i:1 fw:i:1 gw:i:1 hw:i:1 iw:i:1 ax:i:1 bx:i:1 cx:i:1 dx:i:1 ex:i:1 fx:i:1 gx:i:1 hx:i:1 ix:i:1 ay:i:1 by:i:1 cy:i:1 dy:i:1 ey:i:1 fy:i:1 gy:i:1 hy:i:1 iy:i:1 az:i:1 bz:i:1 cz:i:1 dz:i:1 ez:i:1 fz:i:1 gz:i:1 hz:i:1 iz:i:1 a2 16 xx 1 1 10M * 0 0 AAAAAAAAAA * Aa:i:1 Ba:i:1 Ca:i:1 Da:i:1 Ea:i:1 Fa:i:1 Ga:i:1 Ha:i:1 Ia:i:1 Ja:i:1 aa:i:1 ba:i:1 ca:i:1 da:i:1 ea:i:1 fa:i:1 ga:i:1 ha:i:1 ia:i:1 ja:i:1 Ab:i:1 Bb:i:1 Cb:i:1 Db:i:1 Eb:i:1 Fb:i:1 Gb:i:1 Hb:i:1 Ib:i:1 Jb:i:1 ab:i:1 bb:i:1 cb:i:1 db:i:1 eb:i:1 fb:i:1 gb:i:1 hb:i:1 ib:i:1 jb:i:1 Ac:i:1 Bc:i:1 Cc:i:1 Dc:i:1 Ec:i:1 Fc:i:1 Gc:i:1 Hc:i:1 Ic:i:1 Jc:i:1 ac:i:1 bc:i:1 cc:i:1 dc:i:1 ec:i:1 fc:i:1 gc:i:1 hc:i:1 ic:i:1 jc:i:1 Ad:i:1 Bd:i:1 Cd:i:1 Dd:i:1 Ed:i:1 Fd:i:1 Gd:i:1 Hd:i:1 Id:i:1 Jd:i:1 ad:i:1 bd:i:1 cd:i:1 dd:i:1 ed:i:1 fd:i:1 gd:i:1 hd:i:1 id:i:1 jd:i:1 Ae:i:1 Be:i:1 Ce:i:1 De:i:1 Ee:i:1 Fe:i:1 Ge:i:1 He:i:1 Ie:i:1 Je:i:1 ae:i:1 be:i:1 ce:i:1 de:i:1 ee:i:1 fe:i:1 ge:i:1 he:i:1 ie:i:1 je:i:1 Af:i:1 Bf:i:1 Cf:i:1 Df:i:1 Ef:i:1 Ff:i:1 Gf:i:1 Hf:i:1 If:i:1 Jf:i:1 af:i:1 bf:i:1 cf:i:1 df:i:1 ef:i:1 ff:i:1 gf:i:1 hf:i:1 if:i:1 jf:i:1 Ag:i:1 Bg:i:1 Cg:i:1 Dg:i:1 Eg:i:1 Fg:i:1 Gg:i:1 Hg:i:1 Ig:i:1 Jg:i:1 ag:i:1 bg:i:1 cg:i:1 dg:i:1 eg:i:1 fg:i:1 gg:i:1 hg:i:1 ig:i:1 jg:i:1 Ah:i:1 Bh:i:1 Ch:i:1 Dh:i:1 Eh:i:1 Fh:i:1 Gh:i:1 Hh:i:1 Ih:i:1 Jh:i:1 ah:i:1 bh:i:1 ch:i:1 dh:i:1 eh:i:1 fh:i:1 gh:i:1 hh:i:1 ih:i:1 jh:i:1 Ai:i:1 Bi:i:1 Ci:i:1 Di:i:1 Ei:i:1 Fi:i:1 Gi:i:1 Hi:i:1 Ii:i:1 Ji:i:1 ai:i:1 bi:i:1 ci:i:1 di:i:1 ei:i:1 fi:i:1 gi:i:1 hi:i:1 ii:i:1 ji:i:1 Aj:i:1 Bj:i:1 Cj:i:1 Dj:i:1 Ej:i:1 Fj:i:1 Gj:i:1 Hj:i:1 Ij:i:1 Jj:i:1 aj:i:1 bj:i:1 cj:i:1 dj:i:1 ej:i:1 fj:i:1 gj:i:1 hj:i:1 ij:i:1 jj:i:1 Ak:i:1 Bk:i:1 Ck:i:1 Dk:i:1 Ek:i:1 Fk:i:1 Gk:i:1 Hk:i:1 Ik:i:1 Jk:i:1 ak:i:1 bk:i:1 ck:i:1 dk:i:1 ek:i:1 fk:i:1 gk:i:1 hk:i:1 ik:i:1 jk:i:1 Al:i:1 Bl:i:1 Cl:i:1 Dl:i:1 El:i:1 Fl:i:1 Gl:i:1 Hl:i:1 Il:i:1 Jl:i:1 al:i:1 bl:i:1 cl:i:1 dl:i:1 el:i:1 fl:i:1 gl:i:1 hl:i:1 il:i:1 jl:i:1 Am:i:1 Bm:i:1 Cm:i:1 Dm:i:1 Em:i:1 Fm:i:1 Gm:i:1 Hm:i:1 Im:i:1 Jm:i:1 am:i:1 bm:i:1 cm:i:1 dm:i:1 em:i:1 fm:i:1 gm:i:1 hm:i:1 im:i:1 jm:i:1 An:i:1 Bn:i:1 Cn:i:1 Dn:i:1 En:i:1 Fn:i:1 Gn:i:1 Hn:i:1 In:i:1 Jn:i:1 an:i:1 bn:i:1 cn:i:1 dn:i:1 en:i:1 fn:i:1 gn:i:1 hn:i:1 in:i:1 jn:i:1 Ao:i:1 Bo:i:1 Co:i:1 Do:i:1 Eo:i:1 Fo:i:1 Go:i:1 Ho:i:1 Io:i:1 Jo:i:1 ao:i:1 bo:i:1 co:i:1 do:i:1 eo:i:1 fo:i:1 go:i:1 ho:i:1 io:i:1 jo:i:1 Ap:i:1 Bp:i:1 Cp:i:1 Dp:i:1 Ep:i:1 Fp:i:1 Gp:i:1 Hp:i:1 Ip:i:1 Jp:i:1 ap:i:1 bp:i:1 cp:i:1 dp:i:1 ep:i:1 fp:i:1 gp:i:1 hp:i:1 ip:i:1 jp:i:1 Aq:i:1 Bq:i:1 Cq:i:1 Dq:i:1 Eq:i:1 Fq:i:1 Gq:i:1 Hq:i:1 Iq:i:1 Jq:i:1 aq:i:1 bq:i:1 cq:i:1 dq:i:1 eq:i:1 fq:i:1 gq:i:1 hq:i:1 iq:i:1 jq:i:1 Ar:i:1 Br:i:1 Cr:i:1 Dr:i:1 Er:i:1 Fr:i:1 Gr:i:1 Hr:i:1 Ir:i:1 Jr:i:1 ar:i:1 br:i:1 cr:i:1 dr:i:1 er:i:1 fr:i:1 gr:i:1 hr:i:1 ir:i:1 jr:i:1 As:i:1 Bs:i:1 Cs:i:1 Ds:i:1 Es:i:1 Fs:i:1 Gs:i:1 Hs:i:1 Is:i:1 Js:i:1 as:i:1 bs:i:1 cs:i:1 ds:i:1 es:i:1 fs:i:1 gs:i:1 hs:i:1 is:i:1 js:i:1 At:i:1 Bt:i:1 Ct:i:1 Dt:i:1 Et:i:1 Ft:i:1 Gt:i:1 Ht:i:1 It:i:1 Jt:i:1 at:i:1 bt:i:1 ct:i:1 dt:i:1 et:i:1 ft:i:1 gt:i:1 ht:i:1 it:i:1 jt:i:1 Au:i:1 Bu:i:1 Cu:i:1 Du:i:1 Eu:i:1 Fu:i:1 Gu:i:1 Hu:i:1 Iu:i:1 Ju:i:1 au:i:1 bu:i:1 cu:i:1 du:i:1 eu:i:1 fu:i:1 gu:i:1 hu:i:1 iu:i:1 ju:i:1 Av:i:1 Bv:i:1 Cv:i:1 Dv:i:1 Ev:i:1 Fv:i:1 Gv:i:1 Hv:i:1 Iv:i:1 av:i:1 bv:i:1 cv:i:1 dv:i:1 ev:i:1 fv:i:1 gv:i:1 hv:i:1 iv:i:1 Aw:i:1 Bw:i:1 Cw:i:1 Dw:i:1 Ew:i:1 Fw:i:1 Gw:i:1 Hw:i:1 Iw:i:1 aw:i:1 bw:i:1 cw:i:1 dw:i:1 ew:i:1 fw:i:1 gw:i:1 hw:i:1 iw:i:1 Ax:i:1 Bx:i:1 Cx:i:1 Dx:i:1 Ex:i:1 Fx:i:1 Gx:i:1 Hx:i:1 Ix:i:1 ax:i:1 bx:i:1 cx:i:1 dx:i:1 ex:i:1 fx:i:1 gx:i:1 hx:i:1 ix:i:1 Ay:i:1 By:i:1 Cy:i:1 Dy:i:1 Ey:i:1 Fy:i:1 Gy:i:1 Hy:i:1 Iy:i:1 ay:i:1 by:i:1 cy:i:1 dy:i:1 ey:i:1 fy:i:1 gy:i:1 hy:i:1 iy:i:1 Az:i:1 Bz:i:1 Cz:i:1 Dz:i:1 Ez:i:1 Fz:i:1 Gz:i:1 Hz:i:1 Iz:i:1 az:i:1 bz:i:1 cz:i:1 dz:i:1 ez:i:1 fz:i:1 gz:i:1 hz:i:1 iz: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 io_lib-1.14.6/tests/compare_sam.pl0000755000031500020650000000605712617157515013767 00000000000000#!/usr/bin/perl -w # 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', 'all'); 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) { 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]; # 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) unless exists $opts{all}; } $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); io_lib-1.14.6/tests/generate_data.pl0000755000031500020650000000445612354177667014275 00000000000000#!/usr/bin/perl -w use strict; exit 0 if (-e "$ENV{srcdir}/.done"); # Loads a fasta file into a hash sub load_fasta { my ($fn) = @_; my %seqs; open(my $fd, "<", $fn) || die "$fn: $!\n"; my $name = undef; my $s = ""; while (<$fd>) { chomp($_); if (/^>(\S+)/) { if (defined($name)) { $seqs{$name} = $s; } $name = $1; $s = ""; } else { $s .= $_; } } $seqs{$name} = $s; close($fd); return \%seqs; } #---- Load seq print "Loading ce.fa\n"; my $seqs = load_fasta("$ENV{srcdir}/data/ce.fa"); my @names = keys(%$seqs); my %len; my $n; my @base = qw/A C G T/; if (! -w "$ENV{srcdir}/data") { chmod(0755, "$ENV{srcdir}/data") || die "$ENV{srcdir}/data: $!"; chmod(0755, "$ENV{srcdir}") || die "$ENV{srcdir}: $!"; } #---- Generate sorted data print "Generating ce#sorted.sam\n"; srand 15551; open(my $out, ">", "$ENV{srcdir}/data/ce#sorted.sam") || die "$ENV{srcdir}/data/ce#sorted.sam: $!"; # Create @SQ headers foreach (sort @names) { my $len = length($seqs->{$_}); print $out "\@SQ\tSN:$_\tLN:$len\n"; $len{$_} = $len; } # Sequence lines $n = 1; foreach my $chr (sort @names) { my $len = $len{$chr}; my $s = $seqs->{$chr}; for (my $i=0; $i<$len-100; $i++) { if (rand() < 0.5) { #50x coverage my $dna = substr($s,$i,100); for (my $j=0; $j<5; $j++) { substr($dna, 100*rand(), 1) = $base[4*rand()]; } print $out "Seq",$n++,"\t0\t$chr\t",$i+1,"\t2\t100M\t*\t0\t0\t$dna\t*\n"; } } } close($out) || die; #---- Generate unsorted data print "Generating ce#unsorted.sam\n"; srand 15551; open($out, ">", "$ENV{srcdir}/data/ce#unsorted.sam") || die "$ENV{srcdir}/data/ce#unsorted.sam: $!"; # Create @SQ headers foreach (sort @names) { my $len = length($seqs->{$_}); print $out "\@SQ\tSN:$_\tLN:$len\n"; $len{$_} = $len; } # Sequence lines $n = 1; for (my $i = 0; $i < 500000; $i++) { my $chr = $names[$#names*rand()]; my $pos = int(rand() * ($len{$chr}-100)); my $dna = substr($seqs->{$chr},$pos,100); for (my $j=0; $j<5; $j++) { substr($dna, 100*rand(), 1) = $base[4*rand()]; } print $out "Seq",$n++,"\t0\t$chr\t",$pos+1,"\t2\t100M\t*\t0\t0\t$dna\t*\n"; } close($out) || die; #---- Generate unsorted data open(DONE, ">$ENV{srcdir}/.done")||die; close(DONE);